by Documenter.\n   114\t    """\n   115\t    option_spec = DummyOptionSpec()\n   116\t    has_content = True\n   117\t    required_arguments = 1\n   118\t    optional_arguments = 0\n   119\t    final_argument_whitespace = True\n   120\t\n   121\t    def run(self) -> List[Node]:\n   122\t        reporter = self.state.document.reporter\n   123\t\n   124\t        try:\n   125\t            source, lineno = reporter.get_source_and_line(self.lineno)  # type: ignore\n   126\t        except AttributeError:\n   127\t            source, lineno = (None, None)\n   128\t        logger.debug(\'[autodoc] %s:%s: input:\\n%s\', source, lineno, self.block_text)\n   129\t\n   130\t        # look up target Documenter\n   131\t        objtype = self.name[4:]  # strip prefix (auto-).\n   132\t        doccls = self.env.app.registry.documenters[objtype]\n   133\t\n   134\t        # process the options with the selected documenter\'s option_spec\n   135\t        try:\n   136\t            documenter_options = process_documenter_options(doccls, self.config, self.options)\n   137\t        except (KeyError, ValueError, TypeError) as exc:\n   138\t            # an option is either unknown or has a wrong type\n   139\t            logger.error(\'An option to %s is either unknown or has an invalid value: %s\' %\n   140\t                         (self.name, exc), location=(self.env.docname, lineno))\n   141\t            return []\n   142\t\n   143\t        # generate the output\n   144\t        params = DocumenterBridge(self.env, reporter, documenter_options, lineno, self.state)\n   145\t        documenter = doccls(params, self.arguments[0])\n   146\t        documenter.generate(more_content=self.content)\n   147\t        if not params.result:\n   148\t            return []\n   149\t\n   150\t        logger.debug(\'[autodoc] output:\\n%s\', \'\\n\'.join(params.result))\n   151\t\n   152\t        # record all filenames as dependencies -- this will at least\n   153\t        # partially make automatic invalidation possible\n   154\t        for fn in params.filename_set:\n   155\t            self.state.document.settings.record_dependencies.add(fn)\n   156\t\n   157\t        result = parse_generated_content(self.state, params.result, documenter)\n   158\t        return result\n   159\t\n'}]}, {'role': 'assistant', 'content': [{'type': 'text', 'text': "Let me modify the autodoc functionality to handle multiple signatures in docstrings. I'll focus on the key changes needed:\n\n1. First, I'll check how signatures are currently being extracted from docstrings."}, {'type': 'text', 'text': "<tool_use>\n{'tool_name': editor, 'tool_input': {'command': 'view', 'path': '/testbed/sphinx/ext/autodoc/importer.py'}}\n</tool_use>"}]}, {'role': 'user', 'content': [{'type': 'text', 'text': 'Tool Result: Here\'s the result of running `cat -n` on /testbed/sphinx/ext/autodoc/importer.py:\n     1\t"""\n     2\t    sphinx.ext.autodoc.importer\n     3\t    ~~~~~~~~~~~~~~~~~~~~~~~~~~~\n     4\t\n     5\t    Importer utilities for autodoc\n     6\t\n     7\t    :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.\n     8\t    :license: BSD, see


identity: 'Android'
    },

    /**
     * @property Mac True when the browser is running on a Mac
     * @type {Boolean}
     */
    {
        property: 'platform',
        regex: /Mac/i,
        identity: 'Mac'
    },

    /**
     * @property Windows True when the browser is running on Windows
     * @type {Boolean}
     */
    {
        property: 'platform',
        regex: /Win/i,
        identity: 'Windows'
    },

    /**
     * @property Linux True when the browser is running on Linux
     * @type {Boolean}
     */
    {
        property: 'platform',
        regex: /Linux/i,
        identity: 'Linux'
    }]
};

Ext.is.init();

/**
 * @class Ext.supports
 *
 * Determines information about features are supported in the current environment
 *
 * @singleton
 */
Ext.supports = {
    init : function() {
        var doc = document,
            div = doc.createElement('div'),
            tests = this.tests,
            ln = tests.length,
            i, test;

        div.innerHTML = [
            '<div style="height:30px;width:50px;">',
                '<div style="height:20px;width:20px;"></div>',
            '</div>',
            '<div style="width: 200px; height: 200px; position: relative; padding: 5px;">',
                '<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></div>',
            '</div>',
            '<div style="float:left; background-color:transparent;"></div>'
        ].join('');

        doc.body.appendChild(div);

        for (i = 0; i < ln; i++) {
            test = tests[i];
            this[test.identity] = test.fn.call(this, doc, div);
        }

        doc.body.removeChild(div);
    },

    /**
     * @property CSS3BoxShadow True if document environment supports the CSS3 box-shadow style.
     * @type {Boolean}
     */
    CSS3BoxShadow: Ext.isDefined(document.documentElement.style.boxShadow),

    /**
     * @property ClassList True if document environment supports the HTML5 classList API.
     * @type {Boolean}
     */
    ClassList: !!document.documentElement.classList,

    /**
     * @property OrientationChange True if the device supports orientation change
     * @type {Boolean}
     */
    OrientationChange: ((typeof window.orientation != 'undefined') && ('onorientationchange' in window)),

    /**
     * @property DeviceMotion True if the device supports device motion (acceleration and rotation rate)
     * @type {Boolean}
     */
    DeviceMotion: ('ondevicemotion' in window),

    /**
     * @property Touch True if the device supports touch
     * @type {Boolean}
     */
    // is.Desktop is needed due to the bug in Chrome 5.0.375, Safari 3.1.2
    // and Safari 4.0 (they all have 'ontouchstart' in the window object).
    Touch: ('ontouchstart' in window) &amp


latile long a1)
{
	int ptyno = 0;
	if (ioctl(a0, TIOCGPTN, &ptyno))
		return -1;
	char buf[128];
	sprintf(buf, "/dev/pts/%d", ptyno);
	return open(buf, a1, 0);
}
#endif

#if SYZ_EXECUTOR || __NR_syz_init_net_socket
#if SYZ_EXECUTOR || SYZ_SANDBOX_NONE || SYZ_SANDBOX_SETUID || SYZ_SANDBOX_NAMESPACE || SYZ_SANDBOX_ANDROID
#include <fcntl.h>
#include <sched.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
static long syz_init_net_socket(volatile long domain, volatile long type, volatile long proto)
{
	int netns = open("/proc/self/ns/net", O_RDONLY);
	if (netns == -1)
		return netns;
	if (setns(kInitNetNsFd, 0))
		return -1;
	int sock = syscall(__NR_socket, domain, type, proto);
	int err = errno;
	if (setns(netns, 0))
		fail("setns(netns) failed");
	close(netns);
	errno = err;
	return sock;
}
#else
static long syz_init_net_socket(volatile long domain, volatile long type, volatile long proto)
{
	return syscall(__NR_socket, domain, type, proto);
}
#endif
#endif

#if SYZ_EXECUTOR || SYZ_VHCI_INJECTION
#include <errno.h>
#include <fcntl.h>
#include <linux/rfkill.h>
#include <pthread.h>
#include <sys/epoll.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/uio.h>

#define BTPROTO_HCI 1
#define ACL_LINK 1
#define SCAN_PAGE 2

typedef struct {
	uint8 b[6];
} __attribute__((packed)) bdaddr_t;

#define HCI_COMMAND_PKT 1
#define HCI_EVENT_PKT 4
#define HCI_VENDOR_PKT 0xff

struct hci_command_hdr {
	uint16 opcode;
	uint8 plen;
} __attribute__((packed));

struct hci_event_hdr {
	uint8 evt;
	uint8 plen;
} __attribute__((packed));

#define HCI_EV_CONN_COMPLETE 0x03
struct hci_ev_conn_complete {
	uint8 status;
	uint16 handle;
	bdaddr_t bdaddr;
	uint8 link_type;
	uint8 encr_mode;
} __attribute__((packed));

#define HCI_EV_CONN_REQUEST 0x04
struct hci_ev_conn_request {
	bdaddr_t bdaddr;
	uint8 dev_class[3];
	uint8 link_type;
} __attribute__((packed));

#define HCI_EV_REMOTE_FEATURES 0x0b
struct hci_ev_remote_features {
	uint8 status;
	uint16 handle;
	uint8 features[8];
} __attribute__((packed));

#define HCI_EV_CMD_COMPLETE 0x0e
struct hci_ev_cmd_complete {
	uint8 ncmd;
	uint16 opcode;
} __attribute__((packed));

#define HCI_OP_WRITE_SCAN_ENABLE 0x0c1a

#define HCI_OP_READ_BUFFER_SIZE 0x1005
struct hci_rp_read_buffer_size {
	uint8 status;
	uint16 a


,"v":"澳大利亚"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"英语","v":"英语"},{"n":"法语","v":"法语"},{"n":"国语","v":"国语"},{"n":"粤语","v":"粤语"},{"n":"日语","v":"日语"},{"n":"韩语","v":"韩语"},{"n":"泰语","v":"泰语"},{"n":"德语","v":"德语"},{"n":"俄语","v":"俄语"},{"n":"闽南语","v":"闽南语"},{"n":"丹麦语","v":"丹麦语"},{"n":"波兰语","v":"波兰语"},{"n":"瑞典语","v":"瑞典语"},{"n":"印地语","v":"印地语"},{"n":"挪威语","v":"挪威语"},{"n":"意大利语","v":"意大利语"},{"n":"西班牙语","v":"西班牙语"},{"n":"无对白","v":"无对白"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
	},
	filter_def:{
		movie:{by:'time'},
		tv:{by:'time'},
		variety:{by:'time'},
		cartoon:{by:'time'}
	},
	searchUrl: '/s/page/fypage/wd/**.html',
	headers: {
		'User-Agent': 'PC_UA',
	},
	class_parse: '.nav ul li:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
	lazy:'js:var html=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var url=html.url;if(html.encrypt=="1"){url=unescape(url)}else if(html.encrypt=="2"){url=unescape(base64Decode(url))}if(/m3u8|mp4/.test(url)){input=url}else{input}',
	推荐: '.indexShowBox;ul&&li;*;*;*;*',
	一级: '.content-list&&li;a&&title;img&&data-src;.bottom2&&Text;a&&href',
	搜索: '.sr_lists&&dl;strong&&Text;*;.ss1&&Text;*',
}var rule={
    title:'if101',
    host:'https://www.oulevod.tv',
    // homeUrl:'/',
    url:'/index.php/vod/show/id/fyclass/page/fypage.html',
    searchUrl:'/index.php/vod/search.html?wd=**',
    searchable:2,//是否启用全局搜索,
    quickSearch:1,//是否启用快速搜索,
    filterable:0,//是否启用分类筛选,
    headers:{//网站的请求头,完整支持所有的,常带ua和cookies
        'User-Agent':'MOBILE_UA',
        // "Cookie": "searchneed=ok"
    },
    class_parse:'.conch-nav&&ul&&li;a&&Text;a&&href;./(\\d+).html',
    cate_exclude


 ILockJobOptions {
  /**
   * How long can jobs wait in queue before timing out. Null to disable timeout.
   */
  wait_timeout?: number | null;

  /**
   * How long can a job be executing before timing out. Null to disable timeout.
   * If you do that, though, and you have a swallowed callback, the lock can remain locked permanently.
   */
  execution_timeout?: number | null;

  /**
   * Max queue size for waiting jobs.
   */
  queue_size?: number | null;

  /**
   * Lock name. This will be written in all logs and error messages, to help you distinguish between different locks
   */
  name?: string;

  /**
   * Whether to log the internal actions. Set to true to use console.log. Alternatively, provide your own function
   */
  log?: boolean | ((msg: string) => void);

  /**
   * In any error produced by BetterLock, extend the stack trace to include incoming trace.
   * Defaults to true.
   */
  extend_stack_traces?: boolean;

  /**
   * Function that detects whether value returned by executor is a promise.
   * This will ducktype-sniff the returned value. Depending on your Promise library of choice,
   * you might want to tighten or loosen this bit.
   */
  promise_tester?: (maybePromise: any) => boolean;
}
/**
 * Base class for all custom errors to derive from.
 */
export abstract class AbstractError extends Error {
    /**
     * The wrapped error contained within this one.
     */
    public innerError?: AbstractError;

    /**
     * Create a new abstract error.
     * @param message The error message.
     * @param innerError The inner error.
     */
    constructor(message?: string, innerError?: Error) {
        super(message);
        this.innerError = innerError;

        //For transpiling to es5 support.
        Object.setPrototypeOf(this, AbstractError.prototype);
    }
}const c = require('../constants/constants');

const { DECK } = c;

const SCHOOLS = ['attack', 'freeze', 'heal'];

// module.exports = class {
//     _level: number;
//     _deck: Array<object>;
//
//     constructor () {
//       this._level = 0;
//       this._deck = [];
//     }
//
//     createDeck (level: number, count: number = 30) {
//         this._deck = [];
//         for (let i = 0; i < count; i++) {
//             this._deck.push({
//                 'school': SCHOOLS[Math.floor(Math.random() * SCHOOLS.length)],
//                 'strength': level,
//             })
//         }
//     }
//
// };
module.exports.getCargds = (count: number): Array<object> => {
    const arr = [];
    for (let i = 0; i < count; ++i) {
        const r = Math.floor(Math.random() * DECK.length);
        arr.push(Object.assign({}, DECK[r]))
    }
    return arr;
};import { Range } from 'ngx-mat-daterange-picker';

export class DateTime {

    //Today = 0, Tomorrow = 1, Weekend = 2//
    dates: any = [{name: 'Today', date: 0},{name: 'Tomorrow', date: 1},{name: 'Weekend', date: 2}];;

    //Morning = 1, Noon = 2, Afternoon = 3, Night = 4//
    times: any = [
        {name: 'Morning', time: 1, range: {fromTime:"00:00", toTime:"11:59"}},
        {name: 'Noon', time: 2, range: {fromTime:"12:00", toTime:"13:00"}},
        {name: 'Afternoon', time: 3,


1AEDE3BB5DD86047905B716148A27FF3C8A5B0F5282DD5430DA7E2A421D5274281EAC6C0EAE94EB17996EE81953FB700DD6D1DC4B7"

INTRODUCE1, 34, "3AA272C26715FC3EEFE93C1CEE9ED90ACF702221338BE4032FF7CC8D7B8CF0EFB08FF51C3BCE0A289047ADF9BE51129E5FA81D40307B69577DCC3A899827D4287B00BDD661CA90BE2045D0A86FFEBF4EB9D3135B971B40D587D82F04E00EB3ED0CE3BBD70B2FF32D3BF08AD1A56EFC7C16461D7487506BC58319BFEFE936AAB18B0ACD308EF7F830370CC52A6115819EFE2BED3FC1234EDDF21321AE9D495AD7923BB0B6F275F19B636010D4E46468C366E20C5581730896BB6E2E684C75412E25A27924ED5F682122C0A7F26099E97531212558CD5E289C9CB72D1E09304037EC6A856B50B65642C20E307C4F201392C70764F3DB8AB4F6BC02C546D5FBAD4C3A4426347EECA864A990201E4AA8538104A9ABCA33716E900A7FE6A480FD40735E36C473B943E1BAA7A201397608E0C2C6B96D453B22B1C2A337463FD6BA89E9636FF6AFF0DD19FD121AB4F6605D8102E814FF1C7A31F3A07B1C49FEEC3A89299E60138349C3555D61884F35F3947A49D0E8359D72F7B6D0FCD1D8A489E668AE8A6DB3461A24109323E9BC19FF72413E"

INTRODUCE_ACK, 40, ""
INTRODUCE_ACK, 40, "000000"

INTRO_ESTABLISHED, 38, "00"

RENDEZVOUS1, 36, "1757F14E8378746756B5F91D7898084F646DCF5E537657DE71774B44A3A9840BB3D881F24792B74758D67B7B95468537CF9C706992F76AA87E0AC278C3B75B4D747251F7C92CC2FB900249A316771D82B95F669A85C38AC0AD511D00661DA38B060BD297FCC6719EAD00C0301619E20B48B1F150FA42311511E5E683C34C8CD81273683190B018239554956BDB1B8AAE0951D2B5C32CF0EB2B4CC498FABE347DF1B6F273D0E976FE"

RENDEZVOUS2, 37, "2CBF819E67317EE501880FBE18515C440FB2F6AEA5D7B4349EFC478A714C237309C0FB63B35DC820513A0DEBED469B3607C06A2B7875B6394019C1081954AA1F77C141C7F4B9772D4026D3F2567CE4BAAC589E4DEACE285A33F12BEFF16FEF6120DBB2E0B1BCF78B2E765DB23464EABA3FC6C5126D551BAA32F7A179AB1BD888E0CB8F1E9CA0D8CE6583C144A551D564652829BA"

RENDEZVOUS_ESTABLISHED, 39, ""

 */

#[test]
fn test_resolve() {
    // these values are hand-generated.

    let cmd = RelayCmd::RESOL


L</mi><mo stretchy='false'>]</mo><mo>∘</mo><mo>Γ</mo><mo stretchy='false'>[</mo><mi>q</mi><mo stretchy='false'>]</mo><mo stretchy='false'>)</mo><mi>η</mi><mo>=</mo><mn>0</mn><mo>,</mo></mrow></mtd><mtd columnalign='left'><mrow><mo stretchy='false'>(</mo><mn>1.232</mn><mo stretchy='false'>)</mo></mrow></mtd></mtr></mtable></mrow></math></epub:case></epub:switch>

and

<epub:switch id="mathmlSwitch399"><epub:case required-namespace="http://www.w3.org/1998/Math/MathML"><math display='block' xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mo stretchy='false'>(</mo><mtable columnalign='left'><mtr columnalign='left'><mtd columnalign='left'><mrow><msub><mo>∂</mo><mn>1</mn></msub><mi>φ</mi><mo>∘</mo><mo>Γ</mo><mo stretchy='false'>[</mo><mi>q</mi><mo stretchy='false'>]</mo><mo stretchy='false'>)</mo><mi>η</mi><mo>=</mo><mn>0.</mn></mrow></mtd><mtd columnalign='left'><mrow><mo stretchy='false'>(</mo><mn>1.233</mn><mo stretchy='false'>)</mo></mrow></mtd></mtr></mtable></mrow></math></epub:case></epub:switch>

Because <epub:switch id="mathmlSwitch400"><epub:case required-namespace="http://www.w3.org/1998/Math/MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi mathvariant='script'>E</mi><mo stretchy='false'>[</mo><mi>L</mi><mo stretchy='false'>]</mo><mo>∘</mo><mo>Γ</mo><mo stretchy='false'>[</mo><mi>q</mi><mo stretchy='false'>]</mo></mrow></math></epub:case></epub:switch> is orthogonal to η and η is constrained to be orthogonal to ∂1φ ∘ Γ[q], the two must be parallel at each moment:

<epub:switch id="mathmlSwitch401"><epub:case required-namespace="http://www.w3.org/1998/Math/MathML"><math display='block' xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mtable columnalign='left'><mtr columnalign='left'><mtd columnalign='left'><mrow><mi mathvariant='script'>E</mi><mo stretchy='false'>[</mo><mi>L</mi><mo stretchy='false'>]</mo><mo>∘</mo><mo>Γ</mo><mo stretchy='false'>[</mo><mi>q</mi><mo stretchy='false'>]</mo><mo>=</mo><mi>λ</mi><mo stretchy='false'>(</mo><msub><mo>∂</mo><mn>1</mn></msub><mi>φ</mi><mo>∘</mo><mo>Γ</mo><mo stretchy='false'>[</mo><mi>q</mi><mo stretchy='false'>]</mo><mo stretchy='false'>)</mo><mo>.</mo></mrow></mt


](https://pbs.twimg.com/media/Cj8IF7CW0AAxqhh.jpg)

Ким Крейтон [@KimCrayton1](https://twitter.com/KimCrayton1 "Kim Crayton") с докладом «Overcoming the Challenges of Mentoring» на ScotlandJS.

[pic.twitter.com/0qCGeLtFYG](https://t.co/0qCGeLtFYG)

![](https://pbs.twimg.com/media/Cj8PiLrW0AAYRzT.jpg)

Хватит врать новичкам: через 30, 45, 60 дней курса вы станете разработчиком, научитесь решать задачи и найдёте работу. Нет, не выйдет.

Если вы ищете старшего специалиста — вы же понимаете, что у всех старших уже есть работа, которая их устраивает?

Нужно построить конвейер превращения из младших в старших.

Если вы пришли из образования: как это, можно взять чей-то опенсорсный проект и никто тебя на назовёт плагиатором?

Можно сделать ошибку и погуглить, если не знаешь! Представьте доктора: упс, ошибочка, сейчас погуглю.

Наставничество. Для молодых: помогает им повзрослеть; для взрослых: помогает в карьере, лучше практики работы, поведение в коллективе.

Личное наставничество: важно проводить с учётом личных качеств, более тесное с преподавателем, строится на характерах того и другого.

Наставничество: постоянное, запланированное, построение отношений, обоюдное уважение, личный контакт.

Успешное наставничество, для наставника: выяснить свои мотивы, честно прикинуть свои ресурсы, таланты, характер. Реалистичные цели.

Для ученика: уважение к наставнику; чёткие, видимые цели.

Ола Гасидло [@misprintedtype](https://twitter.com/misprintedtype "/me npm i dance") с докладом «I’m offline, cool! What now?» на ScotlandJS.

«Сначала офлайн» — это показывать что-то на экране без сетевого запроса. И чем больше показываете, тем лучше.

[pic.twitter.com/nbU4UAjF7F](https://t.co/nbU4UAjF7F)

![](https://pbs.twimg.com/media/Cj8WCOVXAAAiJxc.jpg)

Зачем нужны приложения:
— коммуникация
— информация
— возможность
— любовь

Но чем занимаются разрабочики вместо решения задач пользователя? [pic.twitter.com/C3ttZmWY4Q](https://t.co/C3ttZmWY4Q)

![](https://pbs.twimg.com/media/Cj8WieRXIAEChQb.


///////////////////// */
/* /////////////////////////////////////////////////////////////////////////////
 * File:        lnunique.cpp
 *
 * Purpose:     Implementation file for the lnunique project.
 *
 * Created:     2nd July 2003
 * Updated:     30th May 2004
 *
 * Status:      Wizard-generated
 *
 * License:     (Licensed under the Synesis Software Open License)
 *
 *              Copyright (C) 1999-2003, Synesis Software Pty Ltd.
 *              All rights reserved.
 *
 *              www:        http://www.synesis.com.au/software
 *
 *              email:      software@synesis.com.au
 *
 *              This source code is placed into the public domain 2003
 *              by Synesis Software Pty Ltd. There are no restrictions
 *              whatsoever to your use of the software.
 *
 *              This source code is provided by Synesis Software Pty Ltd "as is"
 *              and any warranties, whether expressed or implied, including, but
 *              not limited to, the implied warranties of merchantability and
 *              fitness for a particular purpose are disclaimed. In no event
 *              shall the Synesis Software Pty Ltd be liable for any direct,
 *              indirect, incidental, special, exemplary, or consequential
 *              damages (including, but not limited to, procurement of
 *              substitute goods or services; loss of use, data, or profits; or
 *              business interruption) however caused and on any theory of
 *              liability, whether in contract, strict liability, or tort
 *              (including negligence or otherwise) arising in any way out of
 *              the use of this software, even if advised of the possibility of
 *              such damage.
 *
 *              Neither the name of Synesis Software Pty Ltd nor the names of
 *              any subdivisions, employees or agents of Synesis Software Pty
 *              Ltd, nor the names of any other contributors to this software
 *              may be used to endorse or promote products derived from this
 *              software without specific prior written permission.
 *
 * ////////////////////////////////////////////////////////////////////////// */

#include <stdio.h>

#include <stlsoft.h>
#include <stlsoft_simple_string.h>

#ifndef __STLSOFT_CF_KOENIG_LOOKUP_SUPPORT
stlsoft_ns_using(c_str_ptr)
#endif /* __STLSOFT_CF_KOENIG_LOOKUP_SUPPORT */

#ifdef _SYNSOFT_INTERNAL_BUILD
# include "showver.h"

# include <MLCompId.h>
# include "MBldHdr.h"
#endif /* _SYNSOFT_INTERNAL_BUILD */

#include <map>

/* ////////////////////////////////////////////////////////////////////////// */

#ifdef _SYNSOFT_INTERNAL_BUILD
# include <MLCompId.h>					// The _xxxSynesisSoftware constants
#else /* ? _SYNSOFT_INTERNAL_BUILD */
# define _nameSynesisSoftware				"Synesis Software (Pty) Ltd"
# define _wwwSynesisSoftware_SystemTools	"http://synesis.com.au/systools.html"
# define _emailSynesisSoftware_SystemTools	"software@synesis.com.au"
#endif /* _SYNSOFT_INTERNAL_BUILD */

/* ////////////////////////////////////////////////////////////////////////// */

#ifdef _SYNSOFT_INTERNAL_BUILD
# include "MBldHdr.h"
# include "showver.h"
#else /* ? _SYNSOFT_INTER


z0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkNyb3NzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDYxMiA3OTIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYxMiA3OTIiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGZpbGw9IiNEOTUzNEYiIGQ9Ik00NDcsNTQ0LjRjLTE0LjQsMTQuNC0zNy42LDE0LjQtNTEuOSwwTDMwNiw0NTEuN2wtODkuMSw5Mi43Yy0xNC40LDE0LjQtMzcuNiwxNC40LTUxLjksMGMtMTQuNC0xNC40LTE0LjQtMzcuNiwwLTUxLjlsOTIuNC05Ni40TDE2NSwyOTkuNmMtMTQuNC0xNC40LTE0LjQtMzcuNiwwLTUxLjlzMzcuNi0xNC40LDUxLjksMGw4OS4yLDkyLjdsODkuMS05Mi43YzE0LjQtMTQuNCwzNy42LTE0LjQsNTEuOSwwYzE0LjQsMTQuNCwxNC40LDM3LjYsMCw1MS45TDM1NC43LDM5Nmw5Mi40LDk2LjRDNDYxLjQsNTA2LjgsNDYxLjQsNTMwLDQ0Nyw1NDQuNHoiLz48L3N2Zz4=)
}

.btn-danger-outline, .btn-info-outline, .btn-info.active, .btn-info:active, .btn-primary-outline, .btn-primary.active, .btn-primary:active, .btn-secondary-outline, .btn-secondary.active, .btn-secondary:active, .btn-success-outline, .btn-success.active, .btn-success:active, .btn-warning-outline, .btn-warning.active, .btn-warning:active, .btn.active, .btn:active, .open > .btn-info.dropdown-toggle, .open > .btn-primary.dropdown-toggle, .open > .btn-secondary.dropdown-toggle, .open > .btn-success.dropdown-toggle, .open > .btn-warning.dropdown-toggle {
    background-image: none
}

@media (min-width: 34em) {
    .form-inline .form-control-static, .form-inline .form-group {
        display: inline-block
    }

    .form-inline .control-label, .form-inline .form-group {
        margin-bottom: 0;
        vertical-align: middle
    }

    .form-inline .form-control {
        display: inline-block;
        width: auto;
        vertical-align: middle
    }

    .form-inline .input-group {
        display: inline-table;
        vertical-align: middle
    }

    .form-inline .input-group .form-control, .form-inline .input-group .input-group-addon, .form-inline .input-group .input-group


    encodeCompressedGtin(buf, headerSize);

    int lastAIdigit =
        this.generalDecoder.extractNumericValueFromBitArray(headerSize + gtinSize, lastDigitSize);

    buf.append("(393");
    buf.append(lastAIdigit);
    buf.append(')');

    int firstThreeDigits =
        this.generalDecoder.extractNumericValueFromBitArray(headerSize + gtinSize + lastDigitSize, firstThreeDigitsSize);
    if(firstThreeDigits / 100 == 0) {
      buf.append('0');
    }
    if(firstThreeDigits / 10 == 0) {
      buf.append('0');
    }
    buf.append(firstThreeDigits);

    DecodedInformation generalInformation =
        this.generalDecoder.decodeGeneralPurposeField(headerSize + gtinSize + lastDigitSize + firstThreeDigitsSize, null);
    buf.append(generalInformation.getNewString());

    return buf.toString();
  }
}
/*
 * Copyright (C) 2010 ZXing authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/*
 * These authors would like to acknowledge the Spanish Ministry of Industry,
 * Tourism and Trade, for the support in the project TSI020301-2008-2
 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled
 * Mobile Dynamic Environments", led by Treelogic
 * ( http://www.treelogic.com/ ):
 *
 *   http://www.piramidepse.com/
 */

package com.google.zxing.oned.rss.expanded.decoders;

import com.google.zxing.common.BitArray;

/**
 * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es)
 * @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es)
 */
abstract class AI01decoder extends AbstractExpandedDecoder {

  protected static final int gtinSize   = 40;

  AI01decoder(BitArray information) {
    super(information);
  }

  protected void encodeCompressedGtin(StringBuffer buf, int currentPos) {
    buf.append("(01)");
    int initialPosition = buf.length();
    buf.append('9');

    encodeCompressedGtinWithoutAI(buf, currentPos, initialPosition);
  }

  protected void encodeCompressedGtinWithoutAI(StringBuffer buf, int currentPos, int initialBufferPosition) {
    for(int i = 0; i < 4; ++i){
      int currentBlock = this.generalDecoder.extractNumericValueFromBitArray(currentPos + 10 * i, 10);
      if (currentBlock / 100 == 0) {
        buf.append('0');
      }
      if (currentBlock / 10 == 0) {
        buf.append('0');
      }
      buf.append(currentBlock);
    }

      appendCheckDigit(buf, initialBufferPosition);
  }

  private static void appendCheckDigit(StringBuffer buf, int currentPos){
    int checkDigit = 0;
    for (int i = 0; i < 13; i++) {
      int digit = buf.charAt(i + currentPos) - '0';
      checkDigit += (((i & 0x01) == 0) ? 3 * digit : digit);
    }

    checkDigit = 10 - (checkDigit % 10);
    if (checkDigit == 10) {
      checkDigit = 0;
    }

    buf.append(checkDigit);
  }

}
/*
 * Copyright (C) 2010 ZXing authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *


{
				usage = append(usage, "CertSign")
			}
			if mathRand.Int()%2 == 1 {
				usage = append(usage, "CRLSign")
			}
			if mathRand.Int()%2 == 1 {
				usage = append(usage, "EncipherOnly")
			}
			if mathRand.Int()%2 == 1 {
				usage = append(usage, "DecipherOnly")
			}

			roleVals.KeyUsage = usage
			parsedKeyUsage := parseKeyUsages(roleVals.KeyUsage)
			if parsedKeyUsage == 0 && len(usage) != 0 {
				panic("parsed key usages was zero")
			}

			var extUsage x509.ExtKeyUsage
			i := mathRand.Int() % 4
			switch {
			case i == 0:
				// Punt on this for now since I'm not clear the actual proper
				// way to format these
				if name != "daɪˈɛrɨsɨs" {
					extUsage = x509.ExtKeyUsageEmailProtection
					roleVals.EmailProtectionFlag = true
					break
				}
				fallthrough
			case i == 1:
				extUsage = x509.ExtKeyUsageServerAuth
				roleVals.ServerFlag = true
			case i == 2:
				extUsage = x509.ExtKeyUsageClientAuth
				roleVals.ClientFlag = true
			default:
				extUsage = x509.ExtKeyUsageCodeSigning
				roleVals.CodeSigningFlag = true
			}

			allowed := allowedInt.(bool)
			issueVals.CommonName = name
			if roleVals.EmailProtectionFlag {
				if !strings.HasPrefix(name, "*") {
					issueVals.CommonName = "user@" + issueVals.CommonName
				}
			}

			issueTestStep.ErrorOk = !allowed

			validity := roleVals.MaxTTL

			if useCSRs {
				templ := &x509.CertificateRequest{
					Subject: pkix.Name{
						CommonName: issueVals.CommonName,
					},
				}
				plan := getRandCsr(roleVals.KeyType, issueTestStep.ErrorOk, templ)
				issueVals.CSR = plan.cert
				roleVals.KeyBits = plan.roleKeyBits
				issueTestStep.ErrorOk = plan.errorOk

				addTests(getCnCheck(issueVals.CommonName, roleVals, plan.privKey, x509.KeyUsage(parsedKeyUsage), extUsage, validity))
			} else {
				addTests(getCnCheck(issueVals.CommonName, roleVals, nil, x509.KeyUsage(parsedKeyUsage), extUsage, validity))
			}
		}
	}

	funcs := []interface{}{
		addCnTests, getCnCheck, getCountryCheck, getLocalityCheck, getNotBeforeCheck,
		getOrganizationCheck, getOuCheck, getPostalCodeCheck, getRandCsr, getStreetAddressCheck,
		getProvinceCheck,
	}
	if len(api.ReadBaoVariable("BAO_VERBOSE_PKITESTS")) > 0 {
		t.Logf("funcs=%d", len(funcs))
	}

	// Common Name tests
	{
		// common_name not provided
		issueVals.CommonName = ""
		issueTestStep.ErrorOk = true
		addTests(nil)

		// Nothing is allowed
		addCnTests()

		roleVals.AllowLocalhost = true
		commonNames.Localhost = true
		addCnTests()

		roleVals.AllowedDomains = []string{"foobar.com"}
		addCnTests()

		roleVals.AllowedDomains = []string{"example.com"}
		roleVals.AllowSubdomains = true
		commonNames.SubDomain = true
		commonNames.Wildcard = true
		commonNames.SubSubdomain = true
		commonNames.SubSubdomainWildcard = true
		addCnTests()

		roleVals.AllowedDomains = []string{"foobar.com", "example.com"}
		commonNames.SecondDomain = true
		roleVals.AllowBareDomains = true


>ECONNABORTED
<svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg>ERR_<wbr/>BAD_<wbr/>OPTION
<svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg>ERR_<wbr/>BAD_<wbr/>OPTION_<wbr/>VALUE
<svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg>ERR_<wbr/>BAD_<wbr/>REQUEST
<svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg>ERR_<wbr/>BAD_<wbr/>RESPONSE
<svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg>ERR_<wbr/>CANCELED
<svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg>ERR_<wbr/>DEPRECATED
<svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg>ERR_<wbr/>FR_<wbr/>TOO_<wbr/>MANY_<wbr/>REDIRECTS
<svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg>ERR_<wbr/>INVALID_<wbr/>URL
<svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg>ERR_<wbr/>NETWORK
<svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg>ERR_<wbr/>NOT_<wbr/>SUPPORT
<svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg>ETIMEDOUT</sp


GED = 1<<3;

    /**
     * Value for {@link #privateFlags}: {@code true} if the application has any IntentFiler
     * with some data URI using HTTP or HTTPS with an associated VIEW action.
     *
     * {@hide}
     */
    public static final int PRIVATE_FLAG_HAS_DOMAIN_URLS = 1<<4;

    /**
     * When set, the default data storage directory for this app is pointed at
     * the device-protected location.
     *
     * @hide
     */
    public static final int PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE = 1 << 5;

    /**
     * When set, assume that all components under the given app are direct boot
     * aware, unless otherwise specified.
     *
     * @hide
     */
    public static final int PRIVATE_FLAG_DIRECT_BOOT_AWARE = 1 << 6;

    /**
     * Value for {@link #privateFlags}: {@code true} if the application is installed
     * as instant app.
     *
     * @hide
     */
    public static final int PRIVATE_FLAG_INSTANT = 1 << 7;

    /**
     * When set, at least one component inside this application is direct boot
     * aware.
     *
     * @hide
     */
    public static final int PRIVATE_FLAG_PARTIALLY_DIRECT_BOOT_AWARE = 1 << 8;

    /**
     * When set, signals that the application is required for the system user and should not be
     * uninstalled.
     *
     * @hide
     */
    public static final int PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER = 1 << 9;

    /**
     * When set, the application explicitly requested that its activities be resizeable by default.
     * @see android.R.styleable#AndroidManifestActivity_resizeableActivity
     *
     * @hide
     */
    public static final int PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE = 1 << 10;

    /**
     * When set, the application explicitly requested that its activities *not* be resizeable by
     * default.
     * @see android.R.styleable#AndroidManifestActivity_resizeableActivity
     *
     * @hide
     */
    public static final int PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE = 1 << 11;

    /**
     * The application isn't requesting explicitly requesting for its activities to be resizeable or
     * non-resizeable by default. So, we are making it activities resizeable by default based on the
     * target SDK version of the app.
     * @see android.R.styleable#AndroidManifestActivity_resizeableActivity
     *
     * NOTE: This only affects apps with target SDK >= N where the resizeableActivity attribute was
     * introduced. It shouldn't be confused with {@link ActivityInfo#RESIZE_MODE_FORCE_RESIZEABLE}
     * where certain pre-N apps are forced to the resizeable.
     *
     * @hide
     */
    public static final int PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION =
            1 << 12;

    /**
     * Value for {@link #privateFlags}: {@code true} means the OS should go ahead and
     * run full-data backup operations for the app even when it is in a
     * foreground-equivalent run state.  Defaults to {@code false} if unspecified.
     * @hide
     */
    public static final int PRIVATE_FLAG_BACKUP_IN_FOREGROUND = 1 << 13;

    /**
     * Value for {@link #privateFlags}: {@code true} means this application
     * contains a static shared library. Defaults to {@code false} if unspecified.
     * @hide
     */
    public static final int PRIVATE_FLAG_STATIC_SHARED_LIBRARY = 1 << 14;

    /**
     * Value for {@link #privateFlags}: When set, the application will only have its splits loaded
     * if they are required to load a component. Splits can be loaded on demand using the
     * {@link Context#createContextForSpli


.Drawing.Size(1, 1);
            this.uiSymbolLabel3.Name = "uiSymbolLabel3";
            this.uiSymbolLabel3.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
            this.uiSymbolLabel3.Size = new System.Drawing.Size(89, 35);
            this.uiSymbolLabel3.Style = Sunny.UI.UIStyle.Custom;
            this.uiSymbolLabel3.Symbol = 62004;
            this.uiSymbolLabel3.SymbolOffset = new System.Drawing.Point(4, 0);
            this.uiSymbolLabel3.SymbolSize = 26;
            this.uiSymbolLabel3.TabIndex = 33;
            this.uiSymbolLabel3.Text = "网络合奏";
            //
            // uiPanel3
            //
            this.uiPanel3.Controls.Add(this.uiSymbolLabel4);
            this.uiPanel3.Controls.Add(this.uiRadioButtonGroup1);
            this.uiPanel3.Controls.Add(this.uiSymbolLabel5);
            this.uiPanel3.Controls.Add(this.uiSymbolLabel3);
            this.uiPanel3.Controls.Add(this.swNetworkAnalyze);
            this.uiPanel3.Controls.Add(this.uiLabel1);
            this.uiPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
            this.uiPanel3.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(251)))), ((int)(((byte)(250)))));
            this.uiPanel3.FillColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(251)))), ((int)(((byte)(250)))));
            this.uiPanel3.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.uiPanel3.Location = new System.Drawing.Point(0, 200);
            this.uiPanel3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
            this.uiPanel3.MinimumSize = new System.Drawing.Size(1, 1);
            this.uiPanel3.Name = "uiPanel3";
            this.uiPanel3.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(190)))), ((int)(((byte)(172)))));
            this.uiPanel3.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None;
            this.uiPanel3.Size = new System.Drawing.Size(510, 150);
            this.uiPanel3.Style = Sunny.UI.UIStyle.Custom;
            this.uiPanel3.TabIndex = 39;
            this.uiPanel3.Text = null;
            this.uiPanel3.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
            //
            // uiSymbolLabel4
            //
            this.uiSymbolLabel4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.uiSymbolLabel4.Location = new System.Drawing.Point(226, 3);
            this.uiSymbolLabel4.MinimumSize = new System.Drawing.Size(1, 1);
            this.uiSymbolLabel4.Name = "uiSymbolLabel4";
            this.uiSymbolLabel4.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
            this.uiSymbolLabel4.Size = new System.Drawing.Size(258, 35);
            this.uiSymbolLabel4.Style = Sunny.UI.UIStyle.Custom;
            this.uiSymbolLabel4.Symbol = 61546;
            this.uiSymbolLabel4.SymbolColor = System.Drawing.Color.Red;
            this.uiSymbolLabel4.SymbolOffset = new System.Drawing.Point(4, 0);
            this.uiSymbolLabel4.SymbolSize = 26;
            thi


# Close an issue
gh issue close ISSUE_NUMBER
```

### Releases

```bash
# Create a release
gh release create v1.0.0 --title "v1.0.0" --notes "Release notes"

# List releases
gh release list
```

## Git Best Practices

### Preserving Git History

When renaming or modifying files, follow these practices to preserve Git history:

1. **Always use `git mv` for renaming files** instead of deleting and creating new ones
   ```bash
   git mv old_filename.txt new_filename.txt
   ```

2. **Don't change more than 50% of a file's content in the same commit as a rename**
   - Git's rename detection algorithm struggles to track history when content changes exceed ~50%
   - Instead, use multiple commits:
     ```bash
     # First commit - just rename
     git mv old_file.txt new_file.txt
     git commit -m "chore: rename old_file to new_file"

     # Second commit - modify content
     # Edit new_file.txt
     git add new_file.txt
     git commit -m "feat: update content in new_file"
     ```

3. **For viewing history across renames**, use:
   ```bash
   git log --follow filename
   ```

4. **For complex refactoring**, consider using smaller, incremental commits to help Git track changes more effectively

Remember: Git's history tracking is based on content similarity. Keeping changes smaller and more focused helps maintain a clear history trail.
---
title: "Installation Guide"
description: "Step-by-step instructions to install Siphon CLI on different platforms."
---

# Installation Guide

Siphon CLI is available for installation on **Linux, macOS, and Windows** using various package managers.

---

## **🔹 Prerequisites**
- **Linux/macOS:** Python 3.6+ installed
- **Windows:** Administrator access for Chocolatey

---

## **📦 Install Siphon CLI**

### **🐧 Debian/Ubuntu (APT PPA)**
Recommended for **system-wide installation** on Debian-based systems.
```bash
sudo add-apt-repository ppa:atxtechbro/siphon-cli
sudo apt update
sudo apt install siphon-cli
```
✅ **Auto-updates with** `apt upgrade`

---

### **🖥 Windows (Chocolatey)**
Recommended for **global CLI access** on Windows.
```powershell
choco install siphon
```
✅ **Upgrades with** `choco upgrade siphon`

---

### **🍎 macOS/Linux (Homebrew)**
(Planned for future versions. For now, use `pip` or APT.)

---

### **🐍 Python (pip, User-Level)**
For **Python environments** or virtual environments.
```bash
pip install siphon-cli
```
✅ **Works cross-platform but requires Python**

---

## **📌 Verifying the Installation**
After installation, check if `siphon` is available globally:
```bash
siphon --version
```

✅ **Now you can use Siphon CLI from anywhere!** 🚀

---

## **🛠 Upgrading**
- **APT:** `sudo apt update && sudo apt upgrade siphon-cli`
- **Chocolatey:** `choco upgrade siphon`
- **pip:** `pip install --upgrade siphon-cli`

---

### **🔍 Need Help?**
Check out the **[Docs](https://docs.siphon-c


tage: 0,
			},
			wordFrequency: {},
		}
		this._document = document
	}

	public scan(): IMoxyTAResult {
		const doc: string = this._document.toLowerCase()
		const words: string[] = doc
			.replace(/\.|\n|\!|\:|\?|\'|\"|\,|\;/g, ' ')
			.split(' ')
			.filter((word: string) => word.length !== 0)

		words.forEach((word: string) => {
			if (this._analysis.wordFrequency[word]) {
				this._analysis.wordFrequency[word].frequency++
			} else {
				this._analysis.wordFrequency[word] = { frequency: 1 }
			}
		})
		this._analysis.punctuationFrequency = {
			comma: this._document.split(',').length - 1,
			exclamation: this._document.split('!').length - 1,
			period: this._document.split('.').length - 1,
			colon: this._document.split(':').length - 1,
			semicolon: this._document.split(';').length - 1,
			questionMark: this._document.split('?').length - 1,
			singleQuote: this._document.split("'").length - 1,
			doubleQuote: this._document.split('"').length - 1,
		}
		for (let i = 97; i < 123; i++) {
			this._analysis.alphabetFrequency[String.fromCharCode(i)] =
				doc.split(String.fromCharCode(i)).length - 1
		}

		Object.keys(this._analysis.wordFrequency).forEach((k: string) => {
			this._analysis.totals.totalWords += this._analysis.wordFrequency[
				k
			].frequency
		})

		Object.keys(this._analysis.wordFrequency).forEach((k: string) => {
			this._analysis.topWords.push({
				word: k,
				frequency:
					this._analysis.wordFrequency[k].frequency /
					this._analysis.totals.totalWords,
			})
		})

		Object.keys(this._analysis.alphabetFrequency).forEach((k: string) => {
			this._analysis.totals.totalLetters += this._analysis.alphabetFrequency[
				k
			]
		})

		Object.keys(this._analysis.punctuationFrequency).forEach(
			(k: string) =>
				(this._analysis.totals.totalPunctuation += this._analysis.punctuationFrequency[
					k
				]),
		)

		Object.keys(this._analysis.alphabetFrequency).forEach((k: string) => {
			this._analysis.alphabetFrequencyPercent.push({
				letter: k,
				frequency:
					this._analysis.alphabetFrequency[k] /
					this._analysis.totals.totalLetters,
			})
		})

		this._analysis.topWords = this._analysis.topWords
			.sort((a: any, b: any) => (a.frequency > b.frequency ? -1 : 1))
			.slice(0, 20)

		this._analysis.totals.letterPercentage =
			this._analysis.totals.totalLetters /
			(this._analysis.totals.totalLetters +
				this._analysis.totals.totalPunctuation +
				this._analysis.totals.totalWords)

		this._analysis.totals.punctuationPercentage =
			this._analysis.totals.totalPunctuation /
			(this._analysis.totals.totalPunctuation +
				this._analysis.totals.totalLetters +
				this._analysis.totals.totalWords)

		this._analysis.totals.wordPercentage =
			this._analysis.totals.totalWords /
			(this._analysis.totals.totalWords +
				this._analysis.totals.totalLetters +
				this._analysis.totals.totalPunctuation)
		return this._analysis
	}
}

module.exports = MoxyTA
import Map2D from '../map-2d'
import Line from '../line'
import Point from '../point'

export default (shared: { map: Map2D; expectedArea: number }): void => {
  describe('horizontal merging outside an existing line', () => {
    // EAST

    // "xA-"" means the x coordinate of the left point of the line (point A) is negative.
    // An "East" line means that the point A of the line is on the left and the point B is on the right


ame != null) 'DICOMPatientName': dICOMPatientName,
      if (dICOMPatientSex != null) 'DICOMPatientSex': dICOMPatientSex,
      if (dICOMSeriesBodyPart != null)
        'DICOMSeriesBodyPart': dICOMSeriesBodyPart,
      if (dICOMSeriesInstanceUID != null)
        'DICOMSeriesInstanceUID': dICOMSeriesInstanceUID,
      if (dICOMSeriesModality != null)
        'DICOMSeriesModality': dICOMSeriesModality,
      if (dICOMSeriesNumber != null) 'DICOMSeriesNumber': dICOMSeriesNumber,
      if (dICOMStudyDate != null) 'DICOMStudyDate': dICOMStudyDate,
      if (dICOMStudyDescription != null)
        'DICOMStudyDescription': dICOMStudyDescription,
      if (dICOMStudyId != null) 'DICOMStudyId': dICOMStudyId,
      if (dICOMStudyInstanceUID != null)
        'DICOMStudyInstanceUID': dICOMStudyInstanceUID,
      if (dICOMStudyTime != null) 'DICOMStudyTime': dICOMStudyTime,
    };
  }
}

/// The object containing removableAttributes and
/// updatableAttributes.
class DICOMUpdates {
  /// The DICOM tags to be removed from ImageSetMetadata.
  final Uint8List? removableAttributes;

  /// The DICOM tags that need to be updated in ImageSetMetadata.
  final Uint8List? updatableAttributes;

  DICOMUpdates({
    this.removableAttributes,
    this.updatableAttributes,
  });

  Map<String, dynamic> toJson() {
    final removableAttributes = this.removableAttributes;
    final updatableAttributes = this.updatableAttributes;
    return {
      if (removableAttributes != null)
        'removableAttributes': base64Encode(removableAttributes),
      if (updatableAttributes != null)
        'updatableAttributes': base64Encode(updatableAttributes),
    };
  }
}

/// The properties associated with the data store.
class DatastoreProperties {
  /// The data store identifier.
  final String datastoreId;

  /// The data store name.
  final String datastoreName;

  /// The data store status.
  final DatastoreStatus datastoreStatus;

  /// The timestamp when the data store was created.
  final DateTime? createdAt;

  /// The Amazon Resource Name (ARN) for the data store.
  final String? datastoreArn;

  /// The Amazon Resource Name (ARN) assigned to the Key Management Service (KMS)
  /// key for accessing encrypted data.
  final String? kmsKeyArn;

  /// The timestamp when the data store was last updated.
  final DateTime? updatedAt;

  DatastoreProperties({
    required this.datastoreId,
    required this.datastoreName,
    required this.datastoreStatus,
    this.createdAt,
    this.datastoreArn,
    this.kmsKeyArn,
    this.updatedAt,
  });

  factory DatastoreProperties.fromJson(Map<String, dynamic> json) {
    return DatastoreProperties(
      datastoreId: json['datastoreId'] as String,
      datastoreName: json['datastoreName'] as String,
      datastoreStatus:
          DatastoreStatus.fromString((json['datastoreStatus'] as String)),
      createdAt: timeStampFromJson(json['createdAt']),
      datastoreArn: json['datastoreArn'] as String?,
      kmsKeyArn: json['kmsKeyArn'] as String?,
      updatedAt: timeStampFromJson(json['updatedAt']),
    );
  }

  Map<String, dynamic> toJson() {
    final datastoreId = this.datastoreId


t\t\tcase 'warning':\n\t\t\t\t\t\t\t\ttitle = '⚠ WARNING ALERT';\n\t\t\t\t\t\t\t\ticon = 'data:image/svg+xml;base64,' + btoa('<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"#d97706\" width=\"24\" height=\"24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z\" /></svg>');\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'info':\n\t\t\t\t\t\t\t\ttitle = 'ℹ INFO ALERT';\n\t\t\t\t\t\t\t\ticon = 'data:image/svg+xml;base64,' + btoa('<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"#2563eb\" width=\"24\" height=\"24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z\" /></svg>');\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\ttitle = '❓ ALERT';\n\t\t\t\t\t\t\t\ticon = 'data:image/svg+xml;base64,' + btoa('<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"#6b7280\" width=\"24\" height=\"24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0\" /></svg>');\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Build rich notification content with context\n\t\t\t\t\t\tlet body = `🎯 Alert: ${alert.alertName}`;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (alert.instance && alert.instance !== alert.alertName) {\


:checked .show-apps-icon {
    @extend %reset_style;

    color: darken($selected_bg_color, 10%);
    transition-duration: 100ms;
  }
}

//
// App Vault/Grid
//
.icon-grid {
  spacing: 30px;
  -shell-grid-horizontal-item-size: 136px;
  -shell-grid-vertical-item-size: 136px;

  .overview-icon { icon-size: 96px; }
}

//.app-display { spacing: 20px; }

//favorties | all toggle container
.app-view-controls { padding-bottom: 32px; }

//favorties | all toggle button
.app-view-control {
  padding: 4px 32px;

  &:checked { @include button(active); }
  &:first-child:ltr, &:last-child:rtl {
    border: 1px solid transparent;
    border-radius: 2px 0 0 2px;
    border-image: url('button/app-control-left.svg') 4;

    &:hover { border-image: url('button/app-control-left-hover.svg') 4; }
    &:checked { border-image: url('button/app-control-left-active.svg') 4; }
  }
  &:last-child:ltr, &:first-child:rtl {
    border: 1px solid transparent;
    border-radius: 0 2px 2px 0;
    border-image: url('button/app-control-right.svg') 4;

    &:hover { border-image: url('button/app-control-right-hover.svg') 4; }
    &:checked { border-image: url('button/app-control-right-active.svg') 4; }
  }
}

//
// Icon Tile
//
.search-provider-icon,
.list-search-result {
  @extend %icon_tile;

  &:active, &:checked { background-color: transparentize(darken($osd_bg_color,10%),.1); }

  &:focus, &:selected, &:hover {
    background-color: transparentize($osd_fg_color,.9);
    transition-duration: 200ms;
  }
}
.app-well-app,
.app-well-app.app-folder,
//.show-apps,
.grid-search-result {

  .overview-icon {
    @extend %icon_tile;
  }

  &:active .overview-icon,
  &:checked .overview-icon {
    background-color: transparentize(darken($osd_bg_color,10%),.1);
    box-shadow: inset 0 1px 2px $osd_borders_color;
  }

  &:hover .overview-icon,
  &:focus .overview-icon,
  &:selected .overview-icon {
    background-color: transparentize($osd_fg_color,.9);
    transition-duration: 0ms;
    border-image: none;
    background-image: none;
  }
}

.app-well-app-running-dot { //running apps indicator
  width: 10px; height: 3px;
  background-color: transparent;
  background-image: url('misc/running-dot.svg');
  margin-bottom: 2px;
}

%icon_tile {
  color: $osd_fg_color;
  border-radius: 2px;
  padding: 6px;
  border: 1px solid transparent;
  transition-duration: 100ms;
  text-align: center;
}

//
// Collections
//
.app-well-app.app-folder {

  @extend %reset_style;

  > .overview-icon {
    @extend %reset_style;
    border-image: url("app-folder/app-folder.svg") 6 6 5 7;
  }

  &:hover > .overview-icon {
    @extend %reset_style;
    border-image: url("app-folder/app-folder-hover.svg") 6 6 5 7;
  }

  &:active > .


易时间 type = Qot_GetFutureInfo.TradeTime
            trade_time = ''
            for time_range in item.tradeTime:
                if (len(trade_time) > 0):
                    trade_time += ', '
                begin_neg = time_range.begin < 0
                if begin_neg:
                    begin = time.strftime("%M:%S", time.localtime(24 * 60 + time_range.begin))
                else:
                    begin = time.strftime("%M:%S", time.localtime(time_range.begin))
                end = time.strftime("%M:%S", time.localtime(abs(time_range.end)))
                trade_time += '(%s%s - %s)' % (begin, '(T-1)' if begin_neg else '', end)

            data['trade_time'] = trade_time
            #  所在时区 type = string
            data['time_zone'] = item.timeZone
            #  交易所规格 type = string
            data['exchange_format_url'] = item.exchangeFormatUrl
            data['origin_code'] = merge_qot_mkt_stock_str(item.origin.market,item.origin.code)
            ret_list.append(data)
        return RET_OK, "", ret_list

class TestCmd:
    @classmethod
    def pack_req(cls, cmd, params):

        from ..common.pb.TestCmd_pb2 import Request
        req = Request()
        req.c2s.cmd = cmd
        req.c2s.params = params

        return pack_pb_req(req, ProtoId.TestCmd, 0)

    @classmethod
    def unpack_rsp(cls, rsp_pb):
        """Unpack the init connect response"""
        ret_type = rsp_pb.retType
        ret_msg = rsp_pb.retMsg

        if ret_type != RET_OK:
            return RET_ERROR, ret_msg, None

        res = {}
        if rsp_pb.HasField('s2c'):
            res['cmd'] = rsp_pb.s2c.cmd
            res['result'] = rsp_pb.s2c.result
        else:
            return RET_ERROR, "rsp_pb error", None

        return RET_OK, "", res

class UpdatePriceReminder:
    @classmethod
    def unpack_rsp(cls, rsp_pb):
        """Unpack the init connect response"""
        ret_type = rsp_pb.retType
        ret_msg = rsp_pb.retMsg

        if ret_type != RET_OK:
            return RET_ERROR, ret_msg, None

        res = {}
        if rsp_pb.HasField('s2c'):
            res['code'] = merge_qot_mkt_stock_str(rsp_pb.s2c.security.market,
                                                  rsp_pb.s2c.security.code)
            res['name'] = rsp_pb.s2c.name if rsp_pb.s2c.HasField('name') else 'N/A'
            res['price'] = rsp_pb.s2c.price
            res['change_rate'] = rsp_pb.s2c.changeRate
            res['market_status'] = PriceReminderMarketStatus.to_string2(rsp_pb.s2c.marketStatus) if rsp_pb.s2c.HasField('marketStatus') else 'N/A' # 初始化枚举类型
            res['content'] = rsp_pb.s2c.content
            res['note'] = rsp_pb.s2c.note
            if rsp_pb.s2c.key is not None:
                res['key'] = rsp_pb.s2c.key
            if rsp_pb.s2c.type is not None:
                res['reminder_type'] = PriceReminderType.to_string2(rsp_pb.s2c.type) if rsp_pb.s2c.HasField('type') else 'N/A' # 初始化枚举类型
            if rsp_pb.s2c.setValue is not None:
                res['set_value'] = rsp_pb.s2c.setValue
            if rsp_pb.s2c.curValue is not None:
                res['cur_value'] = rsp_pb.s2c.curValue
        else:
            return RET_ERROR, "rsp_pb error", None

        return RET_OK, "", res

class SetPriceReminderQuery:
    """
    Query SetPriceReminder.
    """

    def __init__(self):
        pass

    @classmethod
    def pack_req(cls, code, op, key, reminder_type, reminder_freq, value, note, conn_id, reminder_session_list):
        """check stock_code 股票"""
        ret, content = split_stock_str(code)
        if ret == RET_ERROR:
            error_str = content
            return RET_ERROR, error_str, None
        market_code, stock_code = content

        # 开始组包
        from ..common.pb.Qot_SetPriceReminder_pb2 import Request
        req = Request()
        req.c2s.security.market = market_code
        req.c2s.security.code = stock_code
        _, req.c2s.op = SetPriceReminderOp.to_number(op)

        if key is not None:
            req.c2s.key = key
        if reminder_type is not None:
            _, req.c2s.type = PriceReminderType.to_number(reminder_type)
        if reminder_freq is not None:
            _, req.c2s.freq = PriceReminderFreq.to_number(reminder_freq)
        if value is not None:
            req.c2s.value = value
        if note is not None:
            req.c2s.note = note
        for _remind_session in reminder_session_list:
            _, _rs_enum = PriceReminderMarketStatus.to_number(_remind_ses


from fastapi import FastAPI
from contextlib import asynccontextmanager
from app.middreware.exception_handler import register_exception_handlers
from app.controller import chat
from app.controller import manus
from app.core.setting import get_settings
from app.core.logger import setup_logging, logger

# 获取设置
settings = get_settings()

# 定义生命周期上下文管理器
@asynccontextmanager
async def lifespan(app: FastAPI):
    # 启动事件
    await setup_logging()
    logger.info("日志系统已初始化")
    logger.info("应用程序已启动")

    yield

    # 关闭事件（如果有需要）
    logger.info("应用程序已关闭")

# 创建应用
app = FastAPI(
    title=settings.app.NAME,
    description=settings.app.DESCRIPTION,
    version=settings.app.VERSION,
    openapi_tags=[{"name": "系统", "description": "系统相关接口"}],
    docs_url=settings.api.DOCS_URL,
    redoc_url=settings.api.REDOC_URL,
    lifespan=lifespan,
)

register_exception_handlers(app)

app.include_router(chat.router)
app.include_router(manus.router)


	void AbstractIff::ReadArray(uint8_t* thearray, std::size_t n)
	{
		ReadRaw(thearray,n);
	}
	void AbstractIff::ReadArray(int8_t* thearray, std::size_t n)
	{
		ReadRaw(thearray,n);
	}
	void AbstractIff::ReadArray(char* thearray, std::size_t n)
	{
		ReadRaw(thearray,n);
	}
	void AbstractIff::ReadArray(Long64BE* thearray, std::size_t n)
	{
		ReadRaw(thearray,n*8);
	}
	void AbstractIff::ReadArray(Long64LE* thearray, std::size_t n)
	{
		ReadRaw(thearray,n*8);
	}
	void AbstractIff::ReadArray(LongBE* thearray, std::size_t n)
	{
		ReadRaw(thearray,n*4);
	}
	void AbstractIff::ReadArray(LongLE* thearray, std::size_t n)
	{
		ReadRaw(thearray,n*4);
	}
	void AbstractIff::ReadArray(Long24BE* thearray, std::size_t n)
	{
		ReadRaw(thearray,n*3);
	}
	void AbstractIff::ReadArray(Long24LE* thearray, std::size_t n)
	{
		ReadRaw(thearray,n*3);
	}
	void AbstractIff::ReadArray(ShortBE* thearray, std::size_t n)
	{
		ReadRaw(thearray,n*2);
	}
	void AbstractIff::ReadArray(ShortLE* thearray, std::size_t n)
	{
		ReadRaw(thearray,n*2);
	}
	void AbstractIff::ReadArray(FloatBE* thearray, std::size_t n)
	{
		ReadRaw(thearray,n*4);
	}
	void AbstractIff::ReadArray(FloatLE* thearray, std::size_t n)
	{
		ReadRaw(thearray,n*4);
	}
	void AbstractIff::ReadArray(DoubleBE* thearray, std::size_t n)
	{
		ReadRaw(thearray,n*8);
	}
	void AbstractIff::ReadArray(DoubleLE* thearray, std::size_t n)
	{
		ReadRaw(thearray,n*8);
	}
	template<typename T>
	void AbstractIff::ReadArray(T* thearray, std::size_t n) {
		for(std::size_t i=0;i<n;i++) Read(thearray[i]);
	}

	void AbstractIff::WriteArray(uint8_t const* thearray, std::size_t n)
	{
		WriteRaw(thearray,n);
	}
	void AbstractIff::WriteArray(int8_t const* thearray, std::size_t n)
	{
		WriteRaw(thearray,n);
	}
	void AbstractIff::WriteArray(char const* thearray, std::size_t n)
	{
		WriteRaw(thearray,n);
	}

	void AbstractIff::WriteArray(Long64BE const* thearray, std::size_t n)
	{
		WriteRaw(thearray,n*8);
	}
	void AbstractIff::WriteArray(Long64LE const* thearray, std::size_t n)
	{
		WriteRaw(thearray,n*8);
	}
	void AbstractIff::WriteArray(LongBE const* thearray, std::size_t n)
	{
		WriteRaw(thearray,n*4);
	}
	void AbstractIff::WriteArray(LongLE const* thearray, std::size_t n)
	{
		WriteRaw(thearray,n*4);
	}
	void AbstractIff::WriteArray(Long24BE const* thearray, std::size_t n)
	{
		WriteRaw(thearray,n*3);
	}
	void AbstractIff::WriteArray(Long24LE const* thearray, std::size_t n)
	{
		WriteRaw(thearray,n*3);
	}
	void AbstractIff::WriteArray(ShortBE co


using UnityEngine;

namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityCapsuleCollider
{
    [TaskCategory("Basic/CapsuleCollider")]
    [TaskDescription("Stores the center of the CapsuleCollider. Returns Success.")]
    public class GetCenter : Action
    {
        [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
        public SharedGameObject targetGameObject;
        [Tooltip("The center of the CapsuleCollider")]
        [RequiredField]
        public SharedVector3 storeValue;

        private CapsuleCollider capsuleCollider;
        private GameObject prevGameObject;

        public override void OnStart()
        {
            var currentGameObject = GetDefault


et = 0x20,
	Sh4Ex_TlbMissRead = 0x40,
	Sh4Ex_TlbMissWrite = 0x60,
	Sh4Ex_TlbInitPageWrite = 0x80,
	Sh4Ex_TlbProtViolRead = 0xa0,
	Sh4Ex_TlbProtViolWrite = 0xc0,
	Sh4Ex_AddressErrorRead = 0xe0,
	Sh4Ex_AddressErrorWrite = 0x100,
	Sh4Ex_FpuError = 0x120,
	Sh4Ex_FpuDisabled = 0x800,
	Sh4Ex_SlotFpuDisabled = 0x820,
	Sh4Ex_TlbMultiHit = 0x140,
	Sh4Ex_Trap = 0x160,
	Sh4Ex_IllegalInstr = 0x180,
	Sh4Ex_SlotIllegalInstr = 0x1a0,
	Sh4Ex_NmiInterrupt = 0x1c0,
	Sh4Ex_UserBreak = 0x1e0,
	Sh4Ex_ExtInterrupt0 = 0x200,
	Sh4Ex_ExtInterrupt1 = 0x220,
	Sh4Ex_ExtInterrupt2 = 0x240,
	Sh4Ex_ExtInterrupt3 = 0x260,
	Sh4Ex_ExtInterrupt4 = 0x280,
	Sh4Ex_ExtInterrupt5 = 0x2a0,
	Sh4Ex_ExtInterrupt6 = 0x2c0,
	Sh4Ex_ExtInterrupt7 = 0x2e0,
	Sh4Ex_ExtInterrupt8 = 0x300,
	Sh4Ex_ExtInterrupt9 = 0x320,
	Sh4Ex_ExtInterruptA = 0x340,
	Sh4Ex_ExtInterruptB = 0x360,
	Sh4Ex_ExtInterruptC = 0x380,
	Sh4Ex_ExtInterruptD = 0x3a0,
	Sh4Ex_ExtInterruptE = 0x3c0,
	Sh4Ex_TMU0 = 0x400,
	Sh4Ex_TMU1 = 0x420,
	Sh4Ex_TMU2 = 0x440,
	Sh4Ex_TMU2_TICPI2 = 0x460,
	Sh4Ex_RTC_ATI = 0x480,
	Sh4Ex_RTC_PRI = 0x4a0,
	Sh4Ex_RTC_CUI = 0x4c0,
	Sh4Ex_SCI_ERI = 0x4e0,
	Sh4Ex_SCI_RXI = 0x500,
	Sh4Ex_SCI_TXI = 0x520,
	Sh4Ex_SCI_TEI = 0x540,
	Sh4Ex_WDT = 0x560,
	Sh4Ex_REF_RCMI = 0x580,
	Sh4Ex_REF_ROVI = 0x5a0,
	Sh4Ex_HUDI = 0x600,
	Sh4Ex_GPIO = 0x620,
	Sh4Ex_DMAC_DTME0 = 0x640,
	Sh4Ex_DMAC_DTME1 = 0x680,
	Sh4Ex_DMAC_DTME2 = 0x680,
	Sh4Ex_DMAC_DTME3 = 0x6a0,
	Sh4Ex_DMAC_DMAE = 0x6c0,
	Sh4Ex_SCIF_ERI = 0x700,
	Sh4Ex_SCIF_RXI = 0x720,
	Sh4Ex_SCIF_BRI = 0x740,
	Sh4Ex_SCIF_TXI = 0x760,
};


hi.
**Niha:** Oh! Nice…
**Niha:** **M.S, M.Tech** plan chesstunnara?
**Hero (smooth smile):** Alantidhe…
**Gayatri:** Annaya… monna results…
**Hero:** Chelli, Amma pilustundhi ninnu…
**Gayatri (softly):** Sare.
**Hero:** Actual ga *script writing, direction* ante interest.
**Niha:** Oh! Nice.
_Both smile._

---

### SCENE 06 – Writer’s Block on the Terrace

_Time: **20:00**. Hero tries to write a new script — no ideas. Walks to terrace and hears Kavya singing; can’t see her._

*— Holi sequence TBD (dialogues needed) —*

_Heroine suddenly smears Holi colour on Hero’s face. Next day Hero returns to that spot._

_Heroine needs a bag, T-shirt, and jeans in this scene._

---

### SCENE 07 – Coffee-Shop Confrontation

_Hero follows Swarna; she suddenly turns._

**Swarna:** Ninna colour raaasinananduku follow avutunnav kada…
**Arjun:** …!
**Swarna:** Proposal aa..?
**Arjun:** Mee gurinchi purtiga teliyakunda propose ela chesta…
**Swarna:** Mari follow enduku avutunnav?
**Arjun:** Mmmm… Coffee taguthu matladudhama…

<!-- lang: en+te | profanity: mild | end scene 07 -->

### SCENE 08 – Coffee-Shop Banter

_Swarna and Arjun sit opposite each other._

**Swarna:** Cheppu.
**Arjun:** Cappuccino with almond milk…
**Swarna:** Order cheppamanaledhu—*enduku follow chestunnav adhi?*
**Arjun:** Adha…! Konthamandhi chudagane nacchutaru; andulo chala-kontha mandhi manaki friends avutaru. Friends circle undatam manchidhe kada, aa circle lo mimmalni kuda add cheddamani.
**Swarna:** So friendship kosam antav…
**Arjun:** Exactly.
**Swarna:** Friendship taruvatha love ante?
**Arjun:** *Nakanna mundhu meere propose chesthe?*
**Swarna:** Anduke… ee talanoppi antha enduku, cheppu.
**Arjun:** Life plain ga velte em baavuntadhi? Cheppandi. Aina nene edo force ga convince chestunnattu undi… k, then it was meeting you. B-ye.
**Swarna:** _extends hand_ **Swarna.** Shake-hand icchinappudu teesukovadam manners telusa?
**Arjun:** Teesukunte vadalanu mari… **Arjun.**

_Shake hands.  Arjun hesitates between milk-coffee and black coffee._

**Arjun:** Boyfriend unara?
**Swarna:** *Nope*… (sips). **Neeku?**
**Arjun:** Cha-cha—naku **boyfriends** evaru leru.
_Swarna bursts a laugh, almost spills her drink._

**Swarna:** Em chestu untaru meeru?
_Scene cuts._

---

### SCENE 09 – Dream Confession (later, same café)

**Arjun:** *Director avvadam dream…*
<!-- placeholder: further dialogue needed -->

---

### SCENE 10 – Niha Visits Hero’s Room

_Hero walks out; Niha enters, looks around. Hero re-enters._

**Niha:** Ou…! Hello.
**Arjun:** Hi…!
**Niha:** Shwetha rammannadhi…
**Arjun:** Hmm—tanadhi pakka room.
**Niha:** Oh… _st


in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

<?xml version="1.0" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<title>SSL_CTX_flush_sessions</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />

NAME

SYNOPSIS

DESCRIPTION

NOTES

RETURN VALUES

SEE ALSO

HISTORY

COPYRIGHT

NAME

SSL_CTX_flush_sessions_ex, SSL_CTX_flush_sessions - remove expired sessions

SYNOPSIS

#include <openssl/ssl.h>

void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm);

The following functions have been deprecated since OpenSSL 3.4, and can be hidden entirely by defining OPENSSL_API_COMPAT with a suitable version value, see openssl_user_macros(7):

void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm);

DESCRIPTION

SSL_CTX_flush_sessions_ex() causes a run through the session cache of ctx to remove sessions expired at time tm.

SSL_CTX_flush_sessions() is an older variant of the function that is not Y2038 safe due to usage of long datatype instead of time_t.

NOTES

If enabled, the internal session cache will collect all sessions established up to the specified maximum number (see SSL_CTX_sess_set_cache_size()). As sessions will not be reused ones they are expired, they should be removed from the cache to save resources. This can either be done automatically whenever 255 new sessions were established (see SSL_CTX_set_session_cache_mode(3)) or manually by calling SSL_CTX_flush_sessions_ex().

The parameter tm specifies the time which should be used for the expiration test, in most cases the actual time given by time(0) will be used.

SSL_CTX_flush_sessions_ex() will only check sessions stored in the internal cache. When a session is found and removed, the remove_session_cb is however called to synchronize with the external cache (see SSL_CTX_sess_set_get_cb(3)).

RETU


HuggingFace Transformers和自定义评估框架。数据集包含人工标注的1,200个对话样本，覆盖不同社会人口组合。

4. 实验结果
实验设置：对比用户画像直接输入与从对话历史推断两种条件，在5个任务（建议生成、内容推荐等）上测试。结果：（1）用户画像组在所有任务中平均准确率比对话历史组高18.7%；（2）教育水平和年龄因素对模型表现影响最大；（3）模型对性别刻板印象表现出较强鲁棒性。结论：显式社会人口信息能显著提升LLM的适应性，但模型对某些隐含特征的推理能力有限。

5. 对领域的潜在影响
该研究对个性化AI系统开发具有重要指导意义：（1）为LLM的社会人口适应性提供了基准方法；（2）建议实际应用中优先采用结构化用户画像；（3）揭示了需要改进的偏见问题；（4）推动了人机交互中社会因素量化研究的发展。可能影响教育、医疗等需要文化敏感的AI应用领域。

6. 局限性及未来方向
局限性包括：（1）实验仅覆盖有限的社会人口维度；（2）数据集文化多样性不足；（3）未考虑动态特征变化。未来方向：（1）扩展更多社会人口变量；（2）开发自适应信息融合方法；（3）研究隐私保护下的个性化实现；（4）探索跨文化泛化能力。

---

### Prostate Cancer Screening with Artificial Intelligence-Enhanced Micro-Ultrasound: A Comparative Study with Traditional Methods
**作者**: Muhammad Imran, Wayne G. Brisbane, Li-Ming Su, Jason P. Joseph, Wei Shao
**类别**: eess.IV, cs.AI, cs.CV
**发布日期**: 2025-05-27
**链接**: http://arxiv.org/abs/2505.21355v1

1. 简明摘要
该研究探讨了人工智能增强的微超声（AI-enhanced micro-ultrasound）在前列腺癌筛查中的应用，并与传统筛查方法进行了对比。研究结果表明，AI增强的微超声在检测准确性和效率上显著优于传统方


Unit().Scaled(s)
}

func (b *boid) updateColor() {
	if len(b.friends) > 0 {
		ac := b.getAverageColor()

		nr, ng, nb := float64(b.color.R), float64(b.color.G), float64(b.color.B)

		nr += float64(ac.R) * 0.3
		ng += float64(ac.G) * 0.3
		nb += float64(ac.B) * 0.3

		b.color = color.RGBA{uint8(int(nr) % 255), uint8(int(ng) % 255), uint8(int(nb) % 255), 255}
	}
}

func (b *boid) flock() {
	var (
		align        = b.getAverageDir().Scaled(1)
		cohesion     = b.getCohesion().Scaled(1)
		avoidDir     = b.getAvoidDir().Scaled(1)
		avoidObjects = b.getAvoidObjects().Scaled(1)

		noise = pixel.V(rand.Float64()*2-1, rand.Float64()*2-1).Scaled(0.05)
	)

	b.move(align)
	b.move(avoidDir)
	b.move(avoidObjects)
	b.move(noise)
	b.move(cohesion)

	b.limitSpeed(maxSpeed)

	b.updateColor()
}

func (b *boid) draw(m *image.RGBA) {
	x, y := int(b.position.X), int(b.position.Y)

	r := image.Rect(x-b.size, y-b.size, x+b.size, y+b.size)

	draw.Draw(m, r, &image.Uniform{b.color}, image.ZP, draw.Src)
}

type Avoids []*avoid

func newAvoid(p pixel.Vec, s float64, c color.RGBA) *avoid {
	return &avoid{position: p, size: s, color: c}
}

type avoid struct {
	position pixel.Vec
	size     float64
	color    color.RGBA
}

func (a *avoid) draw(m *image.RGBA) {
	x, y := int(a.position.X), int(a.position.Y)

	r := image.Rect(x-3, y-5, x+3, y+1)

	draw.Draw(m, r, &image.Uniform{a.color}, image.ZP, draw.Src)
}

func randomColor() color.RGBA {
	if true {
		return color.RGBA{uint8(rand.Intn(255)), uint8(rand.Intn(255)), uint8(rand.Intn(255)), 255}
	}

	var r, g, b uint8

	i := rand.Intn(3)

	switch i {
	case 0:
		r = 255
		g = uint8(rand.Intn(100) + 50)
		b = uint8(rand.Intn(100) + 50)
	case 1:
		r = uint8(rand.Intn(100) + 50)
		g = 255
		b = uint8(rand.Intn(100) + 50)
	default:
		r = uint8(rand.Intn(200) + 50)
		g = uint8(rand.Intn(100) + 50)
		b = 255
	}

	return color.RGBA{r, g, b, 255}
}

func flip() float64 {
	if rand.Float64() > 0.5 {
		return 1.0
	}

	return -1.0
}

func dist(a, b pixel.Vec) float64 {
	return math.Abs(a.X-b.X) + math.Abs(a.Y-b.Y)
}

func div(v pixel.Vec, d float64) pixel.Vec {
	v.X /= d
	v.Y /= d

	return v
}

func main() {
	pixelgl.Run(run)
}
package main

import (
	"fmt"
	"image"
	"image/color"
	"image/draw"
	"math"
	"math/rand"
	"


天和秋天就是这两者（为代表）也说不定。

除了相同的出处以外，我觉得各个素材之间没有什么特别的联系。

### Stage1

#### 符卡背景

[](./文件-天空璋分析考据-11.jpg.md)

[爱塔妮缇拉尔瓦](./爱塔妮缇拉尔瓦.md) 的符卡背景

- 来自 「japanese style」

- [](./文件-天空璋分析考据-12.jpg.md)Section04 生物「蝶」cyo_001

这是一种蝴蝶花纹，这种蝴蝶一般称为柑橘凤蝶（日语：揚羽蝶、アゲハチョウ）。

「揚羽蝶」是夏的季语[^cite_note-5]，而爱塔妮缇拉尔瓦出场的天空璋一面对应夏天。

柑橘凤蝶与常世神传说有关：常世神是《日本书纪》中记载新兴宗教的神明。本体被认为就是柑橘凤蝶的幼虫，貌似蚕。一个叫大生部多鼓吹常世神、并鼓动人倾家荡产、载歌载舞加以祭祀，最后被秦河胜（[摩多罗隐岐奈](./摩多罗隐岐奈.md)原型）打了一顿。另外该故事中出现的两个元素：养蚕（养育常世神）和跳舞（为了祭祀），也都与摩多罗神相关。参见[爱塔妮缇拉尔瓦/分析考据](./爱塔妮缇拉尔瓦-分析考据.md)和[摩多罗隐岐奈/分析考据](./摩多罗隐岐奈-分析考据.md)。

实际上这个素材集还包括了其他的蝴蝶素材。但仍然选择了柑橘凤蝶，我想是因为ZUN先生对素材相关的知识有足够的了解。

### Stage2

#### 符卡背景

[](./文件-天空璋分析考据-13.jpg.md)

[坂田合欢](./坂田合欢.md)的符卡背景

- 来自「花鳥風月」

- [](./文件-天空璋分析考据-14.jpg.md)桔梗、藤袴連続文

调整了色调，删除并重新排列了诸如秋草之类的部分。

原素材是紫色桔梗和橙色藤袴[^cite_note-6]的花纹。

在万叶集，桔梗和藤袴作为秋之七草[^cite_note-7]被传唱。

两者都是濒临灭绝的植物。

桔梗的花本身是星型的。

### Stage3

#### 道


"0x7A1ADEEF01740A24"
	jhash (0x4FCA6436)
	arguments {
		int "netId",

		HashPtr "weaponHash",
	}
	returns	"int"

native "_NETWORK_GET_DESROYER_OF_ENTITY"
	hash "0x4CACA84440FA26F6"
	jhash (0x28A45454)
	arguments {
		Any "p0",

		Any "p1",

		HashPtr "p2",
	}
	returns	"BOOL"

native "NETWORK_GET_ENTITY_KILLER_OF_PLAYER"
	hash "0x42B2DAA6B596F5F8"
	jhash (0xA7E7E04F)
	arguments {
		Player "player",

		HashPtr "weaponHash",
	}
	returns	"Entity"

native "NETWORK_RESURRECT_LOCAL_PLAYER"
	hash "0xEA23C49EAA83ACFB"
	jhash (0xF1F9D4B4)
	arguments {
		float "x",

		float "y",

		float "z",

		float "heading",

		BOOL "unk",

		BOOL "changetime",
	}
	returns	"void"

native "NETWORK_SET_LOCAL_PLAYER_INVINCIBLE_TIME"
	hash "0x2D95C7E2D7E07307"
	jhash (0xFEA9B85C)
	arguments {
		int "time",
	}
	returns	"void"

native "NETWORK_IS_LOCAL_PLAYER_INVINCIBLE"
	hash "0x8A8694B48715B000"
	jhash (0x8DE13B36)
	returns	"BOOL"

--[[!
<summary>
	hash collision???
</summary>
]]--
native "NETWORK_DISABLE_INVINCIBLE_FLASHING"
	hash "0x9DD368BF06983221"
	jhash (0x8D27280E)
	arguments {
		int "player",

		BOOL "p1",
	}
	returns	"void"

native "0x524FF0AEFF9C3973"
	hash "0x524FF0AEFF9C3973"
	jhash (0xB72F086D)
	arguments {
		Any "p0",
	}
	returns	"void"

native "0xB07D3185E11657A5"
	hash "0xB07D3185E11657A5"
	jhash (0xEDA68956)
	arguments {
		Entity "p0",
	}
	returns	"BOOL"

native "NETWORK_GET_NETWORK_ID_FROM_ENTITY"
	hash "0xA11700682F3AD45C"
	jhash (0x9E35DAB6)
	arguments {
		Entity "entity",
	}
	returns	"int"

native "NETWORK_GET_ENTITY_FROM_NETWORK_ID"
	hash "0xCE4E5D9B0A4FF560"
	jhash (0x5B912C3F)
	arguments {
		int "netId",
	}
	returns	"Entity"

native "NETWORK_GET_ENTITY_IS_NETWORKED"
	hash "0xC7827959479DCC78"
	jhash (0xD7F934F4)
	arguments {
		Entity "entity",
	}
	returns	"BOOL"

native "NETWORK_GET_ENTITY_IS_LOCAL"
	hash "0x0991549DE4D64762"
	jhash (0x813353ED)
	arguments {
		Entity "entity",
	}
	returns	"BOOL"

native "NETWORK_REGISTER_ENTITY_AS_NETWORKED"
	hash "0x06FAACD625D80CAA"
	jhash (0x31A630A4)
	arguments {
		Entity "entity",
	}
	returns	"void"

native


# -*- coding: utf-8 -*-
from flask import url_for

def test_phenotypes(app, institute_obj):
    # GIVEN an initialized app
    # GIVEN a valid user and institute

    with app.test_client() as client:
        # GIVEN that the user could be logged in
        resp = client.get(url_for("auto_login"))
        assert resp.status_code == 200

        # WHEN accessing the phenotypes page
        resp = client.get(url_for("phenotypes.hpo_terms"))

        # THEN it should return a page
        assert resp.status_code == 200

def test_phenotypes_api(app, real_adapter, hpo_term):
    adapter = real_adapter
    # GIVEN a database with an HPO term
    adapter.load_hpo_term(hpo_term)

    with app.test_client() as client:
        # WHEN retrieving json for all HPO terms
        resp = client.get(url_for("phenotypes.api_hpo_terms"))

        # THEN the response should be JSON
        assert resp.content_type == "application/json"

def test_phenotypes_api(app, real_adapter, hpo_term):
    adapter = real_adapter
    # GIVEN a database with an HPO term
    adapter.load_hpo_term(hpo_term)

    with app.test_client() as client:
        # WHEN retrieving json for all HPO terms
        resp = client.get(url_for("phenotypes.api_hpo_term_search", search_string="Leukemia"))

        # THEN the response should be JSON
        assert resp.content_type == "application/json"

# Needs a populated hpo db..
# def test_search_phenotypes(app, real_variant_database):
# GIVEN an initialized app
# GIVEN a valid user and institute
#    adapter = real_variant_database

#    with app.test_client() as client:
# GIVEN that the user could be logged in
#        resp = client.get(url_for('auto_login'))
#        assert resp.status_code == 200

# GIVEN an HPO-term in the database
#        hpo_term = adapter.hpo_term_collection.find_one()
#        assert hpo_term

#        hpo_query = hpo_term['hpo_id']
#        assert hpo_query

# WHEN searching the phenotypes page
#        resp = client.post(url_for('phenotypes.hpo_terms', hpo_term=hpo_query))

# THEN it should return a page
#        assert resp.status_code == 200
# that contains the search term
#        assert hpo_term.encode() in resp.data


ry(
                lambda: self.get_client().delete_subnet(SubnetId=self.subnet_id)
            )
        except botocore.exceptions.ClientError as error:
            if error.response["Error"]["Code"] == "InvalidSubnetID.NotFound":
                self.warn("subnet {} was already deleted".format(self.subnet_id))
            else:
                raise error

        with self.depl._db:
            self.state = self.MISSING
            self._state["subnetID"] = None
            self._state["region"] = None
            self._state["vpcId"] = None
            self._state["cidrBlock"] = None
            self._state["zone"] = None
            self._state["mapPublicIpOnLaunch"] = None

    def destroy(self, wipe=False):
        self._destroy()
        return True


d`) ^ (1 | `c`))", r => r.Column<bool>("b") && (r.Column<bool>("a") || (2 > ((3 & r.Column<int>("d")) ^ (1 | r.Column<int>("c"))))));
        }

        // Test compare operators
        [Test]
        public void TestDeleteGreater() => Test("`a` > 2", r => r.Column<int>("a") > 2);

        [Test]
        public void TestDeleteGreaterThan() => Test("`a` >= 2", r => r.Column<int>("a") >= 2);

        [Test]
        public void TestDeleteLess() => Test("`a` < 2", r => r.Column<int>("a") < 2);

        [Test]
        public void TestDeleteLessThan() => Test("`a` <= 2", r => r.Column<int>("a") <= 2);

        [Test]
        public void TestDeleteEquals() => Test("`a` = 2", r => r.Column<int>("a") == 2);

        [Test]
        public void TestDeleteNotEquals() => Test("`a` != 2", r => r.Column<int>("a") != 2);

        [Test]
        public void TestDeleteNot() => Test("NOT (`a` > 2)", r => !(r.Column<int>("a") > 2));

        // variables
        [Test]
        public void TestDeleteVariable() => Test("`a` != @ENTRY", r => r.Column<int>("a") != r.Variable<int>("ENTRY"));

        // outer variable
        private int variable = 10;

        [Test]
        public void TestDeleteClassField() => Test("`a` = 10", r => r.Column<int>("a") == variable);

        private int Variable { get; } = 10;

        [Test]
        public void TestDeleteClassProperty() => Test("`a` = 10", r => r.Column<int>("a") == Variable);

        private InnerClass inner = new();

        [Test]
        public void TestCompoundClassProperty() => Test("`a` = 10", r => r.Column<int>("a") == inner.Inner.Int);

        private class InnerClass
        {
            public EvenMoreInnerClass Inner = new();
        }

        private class EvenMoreInnerClass
        {
            public int Int = 10;
        }

        [Test]
        public void TestDeleteMemberAccess()
        {
            string str = "abc";
            Te


/*
 * COPYRIGHT:       See COPYING in the top level directory
 * PROJECT:         ReactOS Base API Server DLL
 * FILE:            subsystems/win/basesrv/api.h
 * PURPOSE:         Public server APIs definitions
 * PROGRAMMERS:     Hermes Belusca-Maito (hermes.belusca@sfr.fr)
 */

#pragma once

/* appcompat.c */
CSR_API(BaseSrvCheckApplicationCompatibility);

/* dosdev.c */
VOID BaseInitDefineDosDevice(VOID);
VOID BaseCleanupDefineDosDevice(VOID);

CSR_API(BaseSrvDefineDosDevice);

/* proc.c */
CSR_API(BaseSrvGetTempFile);
CSR_API(BaseSrvCreateProcess);
CSR_API(BaseSrvCreateThread);
CSR_API(BaseSrvExitProcess);
CSR_API(BaseSrvGetProcessShutdownParam);
CSR_API(BaseSrvSetProcessShutdownParam);
CSR_API(BaseSrvDebugProcess);
CSR_API(BaseSrvRegisterThread);
CSR_API(BaseSrvSxsCreateActivationContext);
CSR_API(BaseSrvSetTermsrvAppInstallMode);
CSR_API(BaseSrvSetTermsrvClientTimeZone);

/* sndsntry.c */
CSR_API(BaseSrvSoundSentryNotification);

/* vdm.c */
CSR_API(BaseSrvCheckVDM);
CSR_API(BaseSrvUpdateVDMEntry);
CSR_API(BaseSrvGetNextVDMCommand);
CSR_API(BaseSrvExitVDM);
CSR_API(BaseSrvIsFirstVDM);
CSR_API(BaseSrvGetVDMExitCode);
CSR_API(BaseSrvSetReenterCount);
CSR_API(BaseSrvSetVDMCurDirs);
CSR_API(BaseSrvGetVDMCurDirs);
CSR_API(BaseSrvBatNotification);
CSR_API(BaseSrvRegisterWowExec);
CSR_API(BaseSrvRefreshIniFileMapping);

/* nls.c */
VOID
NTAPI
BaseSrvNLSInit(IN PBASE_STATIC_SERVER_DATA StaticData);

NTSTATUS
NTAPI
BaseSrvNlsConnect(IN PCSR_PROCESS CsrProcess,
                  IN OUT PVOID  ConnectionInfo,
                  IN OUT PULONG ConnectionInfoLength);

CSR_API(BaseSrvNlsSetUserInfo);
CSR_API(BaseSrvNlsSetMultipleUserInfo);
CSR_API(BaseSrvNlsCreateSection);
CSR_API(BaseSrvNlsUpdateCacheCount);
CSR_API(BaseSrvNlsGetUserInfo);

/* EOF */


orm_Error{float:none;display:none;padding:0;margin-bottom:.5em}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close{position:absolute;top:-11px;right:-11px;width:22px;height:22px;border:1px solid black;background-color:#ccc;text-align:center;border-radius:11px;cursor:pointer;z-index:12;box-shadow:2px 2px 6px #111}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:after{content:"×";color:black;font-weight:bold;font-size:18px;line-height:22px;font-family:"Courier New",Courier,monospace}div.DTE_Bubble div.DTE_Bubble_Liner div.DTE_Bubble_Close:hover{background-color:#999}div.DTE_Bubble div.DTE_Bubble_Triangle{position:absolute;height:10px;width:10px;top:-6px;background-color:white;border:1px solid #666;border-top:none;border-right:none;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}div.DTE_Bubble.below div.DTE_Bubble_Liner{top:10px;bottom:auto}div.DTE_Bubble.below div.DTE_Bubble_Triangle{top:4px;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}div.DTE_Bubble_Background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:10}div.DTE_Bubble_Background>div{position:absolute;top:0;right:0;left:0;bottom:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"}div.DTE_Bubble_Background>div:not([dummy]){filter:progid:DXImageTransform.Microsoft.gradient(enabled="false")}div.DTE_Bubble div.DTE_Bubble_Liner{box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);border-radius:6px;padding:1em;border


"""This module provides a class for managing background coroutines."""

import asyncio
import logging
from typing import Coroutine, List, Optional

from neuracore.core.streaming.event_loop_utils import get_running_loop

logger = logging.getLogger(__name__)

class BackgroundCoroutineTracker:
    """This class schedules and keeps track of background coroutines.

    This is helpful to avoid fire and forget tasks from becoming garbage
    collected before they complete. and is more lightweight than scheduling
    with `run_coroutine_threadsafe`
    """

    def __init__(self, loop: Optional[asyncio.AbstractEventLoop]) -> None:
        """Initialise the background coroutine manager.

        Args:
            loop: the event loop to run on. Defaults to the running loop if not
                    provided.
        """
        self.background_tasks: List[asyncio.Task] = []
        self.loop = loop or get_running_loop()

    def _task_done(self, task: asyncio.Task) -> None:
        """Cleanup after task completion.

        Args:
            task: The task that has been completed.
        """
        if task in self.background_tasks:
            self.background_tasks.remove(task)
        try:
            task.result()
        except asyncio.CancelledError:
            logger.info("Background task cancelled")
        except Exception as e:
            logger.exception("Background task raised exception: %s", e)

    def submit_background_coroutine(self, coroutine: Coroutine) -> None:
        """Submit coroutine to run later.

        This method keeps tracks of the running tasks to ensure they aren't
        garbage collected until complete.

        Args:
            coroutine: the coroutine to be run at another time.
        """
        if self.loop.is_closed():
            logger.warning("Cannot submit coroutine; event loop is closed.")
            return

        def _submit_coroutine(coroutine: Coroutine) -> None:
            task = self.loop.create_task(coroutine)
            self.background_tasks.append(task)
            task.add_done_callback(self._task_done)

        self.loop.call_soon_threadsafe(_submit_coroutine, coroutine)

    def stop_background_coroutines(self) -> None:
        """Stop all background coroutines.

        cancels all running background coroutines
        """
        for task in self.background_tasks:
            task.cancel()
        self.background_tasks.clear()


STRUCTFIELD"
>len</TT
> should be set to the length of the audio data in bytes. Remember, the length of the buffer pointed to by <TT
CLASS="STRUCTFIELD"
>buf</TT
> show be <TT
CLASS="STRUCTFIELD"
>len</TT
>*<TT
CLASS="STRUCTFIELD"
>len_mult</TT
> bytes in length.

Once the SDL_AudioCVTstructure is initilized then we can pass it to <TT
CLASS="FUNCTION"
>SDL_ConvertAudio</TT
>, which will convert the audio data pointer to by cvt-><TT
CLASS="STRUCTFIELD"
>buf</TT
>. If <TT
CLASS="FUNCTION"
>SDL_ConvertAudio</TT
> returned 0 then the conversion was completed successfully, otherwise -1 is returned.

If the conversion completed successfully then the converted audio data can be read from cvt-><TT
CLASS="STRUCTFIELD"
>buf</TT
>. The amount of valid, converted, audio data in the buffer is equal to cvt-><TT
CLASS="STRUCTFIELD"
>len</TT
>*<TT
CLASS="STRUCTFIELD"
>cvt</TT
>->len_ratio.

Examples

/* Converting some WAV data to hardware format */
void my_audio_callback(void *userdata, Uint8 *stream, int len);

SDL_AudioSpec *desired, *obtained;
SDL_AudioSpec wav_spec;
SDL_AudioCVT  wav_cvt;
Uint32 wav_len;
Uint8 *wav_buf;
int ret;

/* Allocated audio specs */
desired = malloc(sizeof(SDL_AudioSpec));
obtained = malloc(sizeof(SDL_AudioSpec));

/* Set desired format */
desired->freq=22050;
desired->format=AUDIO_S16LSB;
desired->samples=8192;
desired->callback=my_audio_callback;
desired->userdata=NULL;

/* Open the audio device */
if ( SDL_OpenAudio(desired, obtained) < 0 ){
  fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
  exit(-1);
}

free(desired);

/* Load the test.wav */
if( SDL_LoadWAV("test.wav", &wav_spec, &wav_buf, &wav_len) == NULL ){
  fprintf(stderr, "Could not open test.wav: %s\n", SDL_GetError());
  SDL_CloseAudio();
  free(obtained);
  exit(-1);
}

/* Build AudioCVT */
ret = SDL_BuildAudioCVT(&wav_cvt,
                        wav_spec.format, wav_spec.channels, wav_spec.freq,
                        obtaine


ate() {
            if i == 0 {
                m = v;
            } else if v < m {
                m = v;
            }
        }
        m
    }

    pub fn sum(&self) -> T {
        let mut s = T::zero();
        for v in self.iter() {
            s = s + v;
        }
        s
    }

    pub fn mean(&self) -> T {
        let mut s = T::zero();
        let mut t = T::zero();
        for v in self.iter() {
            s = s + v;
            t = t + T::one();
        }
        s / t
    }
}

macro_rules! add_impl {
    ($trait_name:ident, $func_name:ident, $new_func_name:ident) => (
        impl<T: TensorTrait + $trait_name<Output=T>> Tensor<T> {
            pub fn $new_func_name(&self, axis: usize) -> Tensor<T> {
                assert!(axis < self.ndim(), "Reduced axis must exist");
                let mut sel = vec![Full; axis];
                sel.push(Index(0));

                let mut t = self.index(&sel[..]);
                let d = self.dim(axis);
                for i in 1..d {
                    sel[axis] = Index(i as isize);
                    t = (&t).$func_name(&self.index(&sel[..]));
                }

                t
            }
        }
    )
}

add_impl!(Add, add, sum_axis);
add_impl!(Mul, mul, prod_axis);

add_impl!(BitAnd, bitand, bitand_axis);
add_impl!(BitOr, bitor, bitor_axis);
add_impl!(BitXor, bitxor, bitxor_axis);
use crate::bulk::Bulk;
use crate::notification::Notification;
use crate::settings::DinoParkSettings;
use crate::state::AppState;
use crate::update::update;
use crate::update::update_batch;
use actix_web::error;
use actix_web::http;
use actix_web::middleware::cors::Cors;
use actix_web::App;
use actix_web::HttpResponse;
use actix_web::Json;
use actix_web::Result;
use actix_web::State;
use cis_client::client::CisClientTrait;
use dino_park_gate::check::TokenChecker;
use dino_park_gate::middleware::AuthMiddleware;
use std::sync::Arc;

fn update_event<T: CisClientTrait + Clone + 'static>(
    state: State<AppState<T>>,
    n: Json<Notification>,
) -> Result<HttpResponse> {
    match update(&state.cis_client, &state.dino_park_settings, &n) {
        Ok(res) => {
            info!("updated profile for {}", &n.id);
            let res_text = serde_json::to_string(&res)?;
            Ok(HttpResponse::Ok().json(res_text))
        }
        Err(e) => {
            error!("failed to update profile for {}: {}", &n.id, e);
            Err(error::ErrorInternalServerError(e))
        }
    }
}

fn bulk_update<T: CisClientTrait + Clone + 'static>(
    state: State<AppState<T>>,
    bulk: Json<Bulk>,
) -> Result<HttpResponse> {
    match update_batch(&state.cis_client, &state.dino_park_settings, &bulk) {
        Ok(res) => {
            info!("bulk updated profiles");
            let res_text = serde_json::to_string(&res)?;
            Ok(HttpResponse::Ok().json(res_text))
        }
        Err(e) => {
            error!("failed to bulk update profiles: {}", e);
            Err(error::ErrorInternalServerError(e))
        }
    }
}

pub fn app<T: CisClientTrait + Clone + Send + Sync + 'static>(
    cis_client: T,
    d


 181868
IFNlcmJpYW4= 181869
IHN5bWJvbGl6ZXM= 181870
IHTDvHJsw7w= 181871
LlN1cHBsaWVy 181872
IEJpZGg= 181873
w6R0aWd1bmc= 181874
c2NodWxk 181875
IHJlc2E= 181876
4K+B4K6a4K+N 181877
RGVubg== 181878
4LGG4LC44LGN4LCf 181879
zpfOow== 181880
PD8+KQ== 181881
IGxpbHk= 181882
KHBkZg== 181883
IGthcmF0ZQ== 181884
CQkJCQkgICAgICAg 181885
ZmFyYmU= 181886
cHJ0 181887
IOGDnOGDnQ== 181888
LOWcqOe6vw== 181889
IGRlc3N1dG9t 181890
INiq2KfYsduM2K7bjA== 181891
44CC6YKj5LmI 181892
dWxlZXJk 181893
15XXmden15g= 181894
IGNvb3Jkb25uw6llcw== 181895
IHBlcnRlcw== 181896
cmlhaw== 181897
4LGI4LCf4LGN 181898
b256YQ== 181899
IOCkm+CkpeCkvw== 181900
IOCksOCkvuCknOCkuOCljeCkpeCkvuCkqA== 181901
IGNoYXR0ZQ== 181902
IGJvcGhlbG8= 181903
b3JlZW4= 181904
7KCE7J6Q 181905
IHpuw6Ft 181906
IHNhd2lqaW5pbmc= 181907
IEV2ZW50bw== 181908
IEthdHpl 181909
KHNp 181910
QWNoZQ== 181911
UHJlc2NyaXB0aW9u 181912
5aWz5LyY 181913
CWRlc2NyaWJl 181914
2YHZitix2YjYsw== 181915
IEhhbXA= 181916
IERpbm9zYXVy 181917
YXppZW5kYQ== 181918
0LDTodCw0YDQsA== 181919
YW5ndWFyZGlh 181920
IG9ibGlnYXRvcg== 181921
IOCyuOCyguCyreCytQ== 181922
IFNTVA== 181923
IGNvbW1lbmNpbmc= 181924
IOCmleCnh+Cmhw== 181925
IE1hbnVmYWN0dXJlZA== 181926
2YjYudmK 181927
IGF0dmlubg== 181928
IGV4cGFuZGFibGU= 181929
IGRlc2NyaXB0 181930
IERlcHJlY2F0ZWQ= 181931
IGVuZGVtaWM= 181932
IHZvb3Jsb3BpZw== 181933
Qm9sdA== 181934
IHRoZXJtb3N0 181935
c2hpdg== 181936
IOWOuw== 181937
IGJvdXF1ZXRz 181938
IOGDl+GDkOGDnOGDkOGDm+GDlOGDk+GDoOGDneGDleGDlA== 181939
IHNwcmlua2xlcg== 181940
IG1hbmljdXJl 181941
IGV0aXF1ZXRhcw== 181942
ZmVscw== 181943
IG1pbmNlZA== 181944
cGVkaWRv 181945
IENhbmE= 181946
LWV4Y2x1c2l2ZQ== 181947
XFZhbGlkYXRpb24= 181948
IFBhZ2luZw== 181949
IHB


-- suspect spider stones only drop after a minimum of 50 kills in zone (lowest seen 53)
-- the Large Spider Stone always appears to drop before Small Spider Stone
-- npcs near zone-in can drop spider stones so area doesn't matter
-- a single npc can double drop both spider stones (Large Spider Stone listed first)

local kill_count = 0
local dropped_large = false
local dropped_small = false

local function zone_death(e)
  if e.killed:IsPet() then
    return
  end

  kill_count = kill_count + 1
  eq.debug("kill count: " .. kill_count)

  -- drop stones at 33% chance after 50 kills (unconfirmed, but both drop fast after 50 kills)
  if kill_count > 50 then
    if not dropped_large and math.random(3) == 1 then
      eq


",
    "shortName": "pe1",
    "includeInBorrowerCycle": false,
    "useBorrowerCycle": false,
    "startDate": [
      2013,
      9,
      2
    ],
    "closeDate": [
      2014,
      2,
      7
    ],
    "status": "loanProduct.active",
    "currency": {
      "code": "USD",
      "name": "US Dollar",
      "decimalPlaces": 2,
      "inMultiplesOf": 0,
      "displaySymbol": "$",
      "nameCode": "currency.USD",
      "displayLabel": "US Dollar ($)"
    },
    "principal": 10000.000000,
    "minPrincipal": 5000.000000,
    "maxPrincipal": 15000.000000,
    "numberOfRepayments": 10,
    "minNumberOfRepayments": 5,
    "maxNumberOfRepayments": 15,
    "repaymentEvery": 7,
    "repaymentFrequencyType": {
      "id": 0,
      "code": "repaymentFrequency.periodFrequencyType.days",
      "value": "Days"
    },
    "interestRatePerPeriod": 15.000000,
    "interestRateFrequencyType": {
      "id": 3,
      "code": "interestRateFrequency.periodFrequencyType.years",
      "value": "Per year"
    },
    "annualInterestRate": 15.000000,
    "amortizationType": {
      "id": 1,
      "code": "amortizationType.equal.installments",
      "value": "Equal installments"
    },
    "interestType": {
      "id": 1,
      "code": "interestType.flat",
      "value": "Flat"
    },
    "interestCalculationPeriodType": {
      "id": 1,
      "code": "interestCalculationPeriodType.same.as.repayment.period",
      "value": "Same as repayment period"
    },
    "transactionProcessingStrategyId": 1,
    "transactionProcessingStrategyName": "Mifos style",
    "principalVariationsForBorrowerCycle": [],
    "interestRateVariationsForBorrowerCycle": [],
    "numberOfRepaymentVariationsForBorrowerCycle": [],
    "daysInMonthType": {
        "id": 30,
        "code": "DaysInMonthType.days360",
        "value": "30 Days"
    },
    "daysInYearType": {
        "id": 360,
        "code": "DaysInYearType.days360",
        "value": "360 Days"
    },
    "isInterestRecalculationEnabled": true,
    "interestRecalculationData": {
        "id": 3,
        "productId": 1,
        "interestRecalculationCompoundingType": {
            "id": 2,
            "code": "interestRecalculationCompoundingMethod.fee",
            "value": "Fee"
        },
		"recalculationCompoundingFrequencyType": {
		    "id":1,
			"code":"interestRecalculationFrequencyType.same.as.repayment.period",
			"value":"Same as repayment period"
		},
        "rescheduleStrategyType": {
            "id": 2,
            "code": "loanRescheduleStrategyMethod.reduce.number.of.installments",
            "value": "Reduce number of installments"
        },
		"recalculationRestFrequencyType": {
		    "id":1,
			"code":"interestRecalculationFrequencyType.same.as.repayment.period",
			"value":"Same as repayment period"
		},
		"preClosureInterestCalculationStrategy": {
		    "id":1,
			"code":"loanPreClosureInterestCalculationStrategy.tillPreClosureDate",
			"value":"Till preclose Date"
		},
		"isArrearsBasedOnOriginalSchedule" : true
    },
    "accountingRule": {
      "id": 2,
      "code": "accountingRuleType.cash",
      "value": "CASH BASED"
    },
	"principalThresholdForLastInstalment":0
  }
]
					</code>
				</div>
			</div>


| abc | defghi |
| :-: | -----: |
| bar |    baz |

**Bold**, `Monospace`, _Italics_, ~~Strikethrough~~, [URL](https://github.com)

- A
- A1
- A2
- B

![Panty](https://shz.al/~panty.jpg)

1. first
2. second

> Quotation

$$
\int_{-\infty}^{\infty} e^{-x^2} = \sqrt{\pi}
$$
```

```shell
$ curl -Fc=@test.md -Fn=test-md https://shz.al

$ firefox https://shz.al/a/~test-md
```

## **HEAD** `/*`

Request a paste without returning the body. It accepts same parameters as all `GET` requests, and returns the same `Content-Type`, `Content-Disposition`, `Content-Length` and cache control headers with the corresponding `GET` request. Note that the `Content-Length` with `/a/<name>`, `?lang=<lang>` is the length of the paste instead of the length the actuala HTML page.

## **POST** `/`

Upload your paste. It accept parameters in form-data:

- `c`: mandatory. The **content** of your paste, text of binary. It should be no larger than 10 MB. The `filename` in its `Content-Disposition` will be present when fetching the paste.

- `e`: optional. The **expiration** time of the paste. After this period of time, the paste is permanently deleted. It should be an integer or a float point number suffixed with an optional unit (seconds by default). Supported units: `s` (seconds), `m` (minutes), `h` (hours), `d` (days). For example, `360.24` means 360.25 seconds; `25d` is interpreted as 25 days. The actual expiration might be shorter than specified expiration due to limitations imposed by the administrator. If unspecified, a default expiration time setting is used.

- `s`: optional. The **password** which allows you to modify and delete the paste. If not specified, the worker will generate a random string as password.

- `n`: optional. The customized **name** of your paste. If not specified, the worker will generate a random string (4 characters by default) as the name. You need to prefix the name with `~` when fetching the paste of customized name. The name is at least 3 characters long, consisting of alphabet, digits and characters in `+_-[]*$=@,;/`.

- `p`: optional. The flag of **private mode**. If specified to any value, the name of the paste is as long as 24 characters. No effect if `n` is used.
-
- `encryption-scheme`: optional. The encryption scheme used in the uploaded paste. It will be returned as `X-PB-Encryption-Scheme` header on fetching paste. Note that this is not the encryption scheme that the backend will perform.

- `lang`: optional. The language of the uploaded paste for syntax highlighting. Should be a lower-case name of language listed in [highlight.js documentation](https://github.com/highlightjs/highlight.js/blob/main/SUPPORTED_LANGUAGES.md). This will be returned as `X-PB-Highlight-Language` header on fetching paste.

`POST` method returns a JSON string by default, if no error occurs, for example:

```json
{
  "url": "https://shz.al/abcd",
  "manageUrl": "https://shz.al/abcd:w2eHqyZGc@CQzWLN=BiJiQxZ",
  "expirationSeconds": 1209600,
  "expireAt": "2025-05-05T10:33:06.114Z"
}
```

Explanation of the fields:

- `url`: String. The URL to fetch the paste. When using a customized name, it looks like `https//shz.al/~myname`.
- `manageUrl`: String. The URL to update and delete the paste, which is `url` suffixed by `~` and the password.
-