._subplots.geo,s=0;s<o.length;s++){var l=o[s],h=a[l];if("zoom"===n){var f=h.projection.scale,d="in"===i?2*f:.5*f;u.relayout(t,l+".projection.scale",d)}else"reset"===n&&c(t,"geo")}}function l(t){var e,r=t._fullLayout;e=r._has("cartesian")?r._isHoriz?"y":"x":"closest";var n=!t._fullLayout.hovermode&&e;u.relayout(t,"hovermode",n)}function c(t,e){for(var r=t._fullLayout,n=r._subplots[e],i={},a=0;a<n.length;a++)for(var o=n[a],s=r[o]._subplot.viewInitial,l=Object.keys(s),c=0;c<l.length;c++){var h=l[c];i[o+"."+h]=s[h]}u.relayout(t,i)}var u=t("../../plotly"),h=t("../../plots/plots"),f=t("../../plots/cartesian/axis_ids"),d=t("../../lib"),p=t("../../snapshot/download"),m=t("../../../build/ploticon"),g=d._,v=e.exports={};v.toImage={name:"toImage",title:function(t){return g(t,"Download plot as a png")},icon:m.camera,click:function(t){var e="png";d.notifier(g(t,"Taking snapshot - this may take a few seconds"),"long"),d.isIE()&&(d.notifier(g(t,"IE only supports svg.  Changing format to svg."),"long"),e="svg"),p(t,{format:e}).then(function(e){d.notifier(g(t,"Snapshot succeeded")+" - "+e,"long")}).catch(function(){d.notifier(g(t,"Sorry, there was a problem downloading your snapshot!"),"long")})}},v.sendDataToCloud={name:"sendDataToCloud",title:function(t){return g(t,"Edit in Chart Studio")},icon:m.disk,click:function(t){h.sendDataToCloud(t)}},v.zoom2d={name:"zoom2d",title:function(t){return g(t,"Zoom")},attr:"dragmode",val:"zoom",icon:m.zoombox,click:n},v.pan2d={name:"pan2d",title:function(t){return g(t,"Pan")},attr:"dragmode",val:"pan",icon:m.pan,click:n},v.select2d={name:"select2d",title:function(t){return g(t,"Box Select")},attr:"dragmode",val:"select",icon:m.selectbox,click:n},v.lasso2d={name:"lasso2d",title:function(t){return g(t,"Lasso Select")},attr:"dragmode",val:"lasso",icon:m.lasso,click:n},v.zoomIn2d={name:"zoomIn2d",title:function(t){return g(t,"Zoom in")},attr:"zoom",val:"in",icon:m.zoom_plus,click:n},v.zoomOut2d={name:"zoomOut2d",title:function(t){return g(t,"Zoom out")},attr:"zoom",val:"out",icon:m.zoom_minus,click:n},v.autoScale2d={name:"autoScale2d",title:function(t){return g(t,"Autoscale")},attr:"zoom",val:"auto",icon:m.autoscale,click:n},v.resetScale2d={name


28px
  MARGIN_TOP: '1.67em',
  MARGIN_BOTTOM: '1.67em',
};

const Map<String, dynamic> _h6DefaultStyle = {
  DISPLAY: BLOCK,
  FONT_WEIGHT: BOLD,
  FONT_SIZE: '0.67em', // 10.72px
  MARGIN_TOP: '2.33em',
  MARGIN_BOTTOM: '2.33em',
};

class H1Element extends Element {
  H1Element([BindingContext? context]) : super(context);

  @override
  Map<String, dynamic> get defaultStyle => _h1DefaultStyle;
}

class H2Element extends Element {
  H2Element([BindingContext? context]) : super(context);

  @override
  Map<String, dynamic> get defaultStyle => _h2DefaultStyle;
}

class H3Element extends Element {
  H3Element([BindingContext? context]) : super(context);

  @override
  Map<String, dynamic> get defaultStyle => _h3DefaultStyle;
}

class H4Element extends Element {
  H4Element([BindingContext? context]) : super(context);

  @override
  Map<String, dynamic> get defaultStyle => _h4DefaultStyle;
}

class H5Element extends Element {
  H5Element([BindingContext? context]) : super(context);

  @override
  Map<String, dynamic> get defaultStyle => _h5DefaultStyle;
}

class H6Element extends Element {
  H6Element([BindingContext? context]) : super(context);

  @override
  Map<String, dynamic> get defaultStyle => _h6DefaultStyle;
}
/*
 * Copyright (C) 2019-2022 The Kraken authors. All rights reserved.
 * Copyright (C) 2022-present The WebF authors. All rights reserved.
 */
import 'dart:io';

import 'package:flutter/scheduler.dart';
import 'package:webf/css.dart';
import 'package:webf/dom.dart';
import 'package:webf/webf.dart';

// Children of the <head> element all have display:none
const Map<String, dynamic> _defaultStyle = {
  DISPLAY: NONE,
};

const String HEAD = 'HEAD';
const String LINK = 'LINK';
const String META = 'META';
const String TITLE = 'TITLE';
const String STYLE = 'STYLE';
const String NOSCRIPT = 'NOSCRIPT';
const String SCRIPT = 'SCRIPT';

class HeadElement extends Element {
  HeadElement([BindingContext? context]) : super(context);

  @override
  Map<String, dynamic> get defaultStyle => _defaultStyle;
}

const String _REL_STYLESHEET = 'stylesheet';
const String DNS_PREFETCH = 'dns-prefetch';

// https://www.w3.org/TR/2011/WD-html5-author-20110809/the-link-element.html#the-link-element
class LinkElement extends Element {
  LinkElement([BindingContext? context]) : super(context);

  @override
  Map<String, dynamic> get defaultStyle => _defaultStyle;

  CSSStyleSheet? get styleSheet => _styleSheet;
  CSSStyleSheet? _styleSheet;

  bool _loading = false;

  bool get loading => _loading;

  Uri? _resolvedHyperlink;
  final Map<String, bool> _stylesheetLoaded = {};

  @override
  void initializeAttributes(Map<String, ElementAttributeProperty> attributes) {
    super.initializeAttributes(attributes);

    attributes['disabled'] = ElementAttributeProperty(setter: (value) => disabled = attributeToProperty<bool>(value));
    attributes['rel'] = ElementAttributeProperty(setter: (value) => rel = attributeToProperty<String>(value));
    attributes['href'] = ElementAttributeProperty(setter: (value) => href = attributeToProperty<String>(value));
    attributes['type'] = ElementAttributeProperty(setter: (value) => type = attributeToProperty<String>(value));
  }

  @override
  void initializeProperties(Map<String, BindingObjectProperty> properties) {
    super.initializeProperties(properties);

    properties['disabled'] =
        BindingObjectProperty(getter: () => disabled, setter: (value) => disabled = castToTy


/brain.js):  Neural networks in JavaScript
* [messutied/colors.sh](https://github.com/messutied/colors.sh):  Colors.sh helps you put colors and format to your bash scripts
* [i5ting/How-to-learn-node-correctly](https://github.com/i5ting/How-to-learn-node-correctly): []Node.js
* [kamranahmedse/driver.js](https://github.com/kamranahmedse/driver.js): A light-weight, no-dependency, vanilla JavaScript engine to drive the user's focus across the page
* [axios/axios](https://github.com/axios/axios): Promise based HTTP client for the browser and node.js
* [d3/d3](https://github.com/d3/d3): Bring data to life with SVG, Canvas and HTML.
* [justjavac/awesome-wechat-weapp](https://github.com/justjavac/awesome-wechat-weapp):
* [reactjs/redux](https://github.com/reactjs/redux): Predictable state container for JavaScript apps
* [onivim/oni](https://github.com/onivim/oni): Oni: Modern Modal Editing - powered by Neovim

#### javascript
* [tensorflow/tfjs](https://github.com/tensorflow/tfjs): A WebGL accelerated, browser based JavaScript library for training and deploying ML models.
* [yogaboll/react-kanban](https://github.com/yogaboll/react-kanban): A Trello-like application built with React and Redux. Take a look at the live website:
* [slmgc/Nothing](https://github.com/slmgc/Nothing): A chainable, callable mock object which always returns itself
* [tensorflow/tfjs-examples](https://github.com/tensorflow/tfjs-examples): Examples built with TensorFlow.js
* [vuejs/vue](https://github.com/vuejs/vue):  A progressive, incrementally-adoptable JavaScript framework for building UI on the web.
* [Popmotion/popmotion](https://github.com/Popmotion/popmotion): A functional, reactive animation library.
* [dawnlabs/carbon](https://github.com/dawnlabs/carbon):  Create and share beautiful images of your source code
* [facebook/react](https://github.com/facebook/react): A declarative, efficient, and flexible JavaScript library for building user interfaces.
* [facebook/create-react-app](https://github.com/facebook/create-react-app): Create React apps with no build configuration.
* [styled-components/styled-components](https://github.com/styled-components/styled-components): Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress
* [sw-yx/async-react-toolbox](https://github.com/sw-yx/async-react-toolbox): BECAUSE PERFORMANCE SHOULD BE SEXY
* [tobloef/text2mindmap](https://github.com/tobloef/text2mindmap): Online tool for making mindmaps by writing indented lists
* [justjavac/free-programming-books-zh_CN](https://github.com/justjavac/free-programming-books-zh_CN):
* [airbnb/javascript](https://github.com/airbnb/javascript): JavaScript Style Guide
* [jaywcjlove/hotkeys](https://github.com/jaywcjlove/hotkeys):  A robust Javascript library for capturing keyboard input. It has no dependencies.
* [nuxt/consola](https://github.com/nuxt/consola):  Elegant Console Logger
* [BrainJS/brain.js](https://github.com/BrainJS/brain.js):  Neural networks in JavaScript
* [messutied/colors.sh](https://github.com/messutied/colors.sh):  Colors.sh helps you put colors and format to your bash scripts
* [i5ting/How-to-learn-node-correctly](https://github.com/i5ting/How-to-learn-node-correctly): []Node.js
* [kamranahmedse/driver.js](https://github.com/


/*
 * dgx_arch_esp32.h
 *
 *  Created on: 16.12.2022
 *      Author: KYMJ
 */

#ifndef _DGX_INCLUDE_DGX_ARCH_ESP32_H_
#define _DGX_INCLUDE_DGX_ARCH_ESP32_H_
#ifdef __cplusplus
// @formatter:off
extern "C"
{
// @formatter:on
#endif

#include "driver/gpio.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "esp_heap_caps.h"

static const char *ARCH_ESP32_TAG = "ARCH ESP32";
#define RC_CHECK(gpio_call, err_str)                 \
    do                                               \
    {                                                \
        esp_err_t rc = gpio_call;                    \
        if (rc != ESP_OK)                            \
        {                                            \
            ESP_LOGE(ARCH_ESP32_TAG, "%s", err_str); \
            return rc;                               \
        }                                            \
    } while (0)

static inline esp_err_t dgx_gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode)
{
    esp_rom_gpio_pad_select_gpio(gpio_num);
    RC_CHECK(gpio_set_direction(gpio_num, mode), "gpio_set_direction failed");
    return ESP_OK;
}

static inline esp_err_t dgx_gpio_set_level(gpio_num_t gpio_num, uint32_t level)
{
    return gpio_set_level(gpio_num, level);
}

static inline void dgx_delay(uint32_t msDelay)
{
    vTaskDelay(msDelay / portTICK_PERIOD_MS);
}

static inline void *dgx_allocate_dma_memory(size_t size)
{
    uint8_t *ptr = heap_caps_malloc(size, MALLOC_CAP_DMA);
    return ptr;
}

#ifdef __cplusplus
    // @formatter:off
}
// @formatter:on
#endif
#endif /* _DGX_INCLUDE_DGX_ARCH_ESP32_H_ */


ce": "http://i2.hdslb.com/bfs/face/7c9715f1768191137eb7ebf91918ca0f99532012.jpg"
    },
    "stat": {
      "aid": 37896701,
      "view": 1058241,
      "danmaku": 16821,
      "reply": 3725,
      "favorite": 76888,
      "coin": 100694,
      "share": 17091,
      "now_rank": 0,
      "his_rank": 0,
      "like": 90521,
      "dislike": 0
    },
    "dynamic": "#编曲##FL##纯音乐#",
    "cid": 66621209,
    "dimension": {
      "width": 1920,
      "height": 1080,
      "rotate": 0
    },
    "bvid": "BV18t411q7zz",
    "reason": "",
    "inter_video": false
  }, {
    "aid": 39596658,
    "videos": 1,
    "tid": 21,
    "tname": "日常",
    "copyright": 1,
    "pic": "http://i2.hdslb.com/bfs/archive/431e51d0e40e3461e1c1b0f59c755ae8843b1adb.jpg",
    "title": "MY2018 - 纪念我的2018年",
    "pubdate": 1546328392,
    "ctime": 1546328392,
    "desc": "",
    "state": 0,
    "attribute": 16768,
    "duration": 239,
    "mission_id": 10996,
    "rights": {
      "bp": 0,
      "elec": 0,
      "download": 0,
      "movie": 0,
      "pay": 0,
      "hd5": 1,
      "no_reprint": 1,
      "autoplay": 1,
      "ugc_pay": 0,
      "is_cooperation": 0,
      "ugc_pay_preview": 0,
      "no_background": 0
    },
    "owner": {
      "mid": 23215368,
      "name": "Wayjon冰冰酱",
      "face": "http://i2.hdslb.com/bfs/face/7c9715f1768191137eb7ebf91918ca0f99532012.jpg"
    },
    "stat": {
      "aid": 39596658,
      "view": 1518,
      "danmaku": 16,
      "reply": 40,
      "favorite": 22,
      "coin": 60,
      "share": 9,
      "now_rank": 0,
      "his_rank": 0,
      "like": 112,
      "dislike": 0
    },
    "dynamic": "#vlog##记录##生活记录#",
    "cid": 69561078,
    "dimension": {
      "width": 1920,
      "height": 1080,
      "rotate": 0
    },
    "bvid": "BV1Jt411B7La",
    "reason": "",
    "inter_video": false
  }, {
    "aid": 44721369,
    "videos": 1,
    "tid": 28,
    "tname": "原创音乐",
    "copyright": 1,
    "pic": "http://i0.hdslb.com/bfs/archive/9887797402599c42f74a7624f3db4a92a0ebf465.jpg",
    "title": "【铃声串烧系列】华米两开花；中华有为，国之荣耀！把主流手机铃声编成一


	arg.CallbackURL,
		pq.Array(arg.RedirectUris),
		arg.ClientType,
		arg.DynamicallyRegistered,
		arg.ClientIDIssuedAt,
		arg.ClientSecretExpiresAt,
		pq.Array(arg.GrantTypes),
		pq.Array(arg.ResponseTypes),
		arg.TokenEndpointAuthMethod,
		arg.Scope,
		pq.Array(arg.Contacts),
		arg.ClientUri,
		arg.LogoUri,
		arg.TosUri,
		arg.PolicyUri,
		arg.JwksUri,
		arg.Jwks,
		arg.SoftwareID,
		arg.SoftwareVersion,
		arg.RegistrationAccessToken,
		arg.RegistrationClientUri,
	)
	var i OAuth2ProviderApp
	err := row.Scan(
		&i.ID,
		&i.CreatedAt,
		&i.UpdatedAt,
		&i.Name,
		&i.Icon,
		&i.CallbackURL,
		pq.Array(&i.RedirectUris),
		&i.ClientType,
		&i.DynamicallyRegistered,
		&i.ClientIDIssuedAt,
		&i.ClientSecretExpiresAt,
		pq.Array(&i.GrantTypes),
		pq.Array(&i.ResponseTypes),
		&i.TokenEndpointAuthMethod,
		&i.Scope,
		pq.Array(&i.Contacts),
		&i.ClientUri,
		&i.LogoUri,
		&i.TosUri,
		&i.PolicyUri,
		&i.JwksUri,
		&i.Jwks,
		&i.SoftwareID,
		&i.SoftwareVersion,
		&i.RegistrationAccessToken,
		&i.RegistrationClientUri,
	)
	return i, err
}

const insertOAuth2ProviderAppCode = `-- name: InsertOAuth2ProviderAppCode :one
INSERT INTO oauth2_provider_app_codes (
    id,
    created_at,
    expires_at,
    secret_prefix,
    hashed_secret,
    app_id,
    user_id,
    resource_uri,
    code_challenge,
    code_challenge_method
) VALUES(
    $1,
    $2,
    $3,
    $4,
    $5,
    $6,
    $7,
    $8,
    $9,
    $10
) RETURNING id, created_at, expires_at, secret_prefix, hashed_secret, user_id, app_id, resource_uri, code_challenge, code_challenge_method
`

type InsertOAuth2ProviderAppCodeParams struct {
	ID                  uuid.UUID      `db:"id" json:"id"`
	CreatedAt           time.Time      `db:"created_at" json:"created_at"`
	ExpiresAt           time.Time      `db:"expires_at" json:"expires_at"`
	SecretPrefix        []byte         `db:"secret_prefix" json:"secret_prefix"`
	HashedSecret        []byte         `db:"hashed_secret" json:"hashed_secret"`
	AppID               uuid.UUID      `db:"app_id" json:"app_id"`
	UserID              uuid.UUID      `db:"user_id" json:"user_id"`
	ResourceUri         sql.NullString `db:"resource_uri" json:"resource_uri"`
	CodeChallenge       sql.NullString `db:"code_challenge" json:"code_challenge"`
	CodeChallengeMethod sql.NullString `db:"code_challenge_method" json:"code_challenge_method"`
}

func (q *sqlQuerier) InsertOAuth2ProviderAppCode(ctx context.Context, arg InsertOAuth2ProviderAppCodeParams) (OAuth2ProviderAppCode, error) {
	row := q.db.QueryRowContext(ctx, insertOAuth2ProviderAppCode,
		arg.ID,
		arg.CreatedAt,
		arg.ExpiresAt,
		arg.SecretPrefix,
		arg.HashedS


Color" fill-rule="evenodd" d="M13.618 2.397C10.513-.708 5.482-.713 2.383 2.386c-3.101 3.102-3.098 8.131.009 11.236 3.105 3.105 8.137 3.109 11.235.01 3.1-3.099 3.097-8.13-.009-11.235zm-4.003 8.954L7.927 9.663l-1.688 1.688c-.689.689-1.207 1.289-2.029.468-.82-.821-.223-1.339.469-2.029l1.688-1.687-1.688-1.688c-.69-.689-1.289-1.207-.469-2.029.822-.82 1.34-.221 2.029.469l1.688 1.686 1.688-1.686c.69-.689 1.205-1.29 2.027-.469.822.822.223 1.34-.467 2.029L9.487 8.102l1.688 1.687c.689.691 1.289 1.209.467 2.03-.82.821-1.337.221-2.027-.468z"/></svg>';
  static const String circle_forward =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="17" height="16" preserveAspectRatio="xMidYMid meet" viewBox="0 0 17 16"><path fill="currentColor" fill-rule="evenodd" d="M.076 7.989c0 4.401 3.562 7.969 7.955 7.969 4.394 0 7.955-3.567 7.955-7.969S12.424.02 8.031.02C3.639.021.076 3.588.076 7.989zm3.914 2.105c0-2.528 1.169-4.264 3.785-4.264l.256.001V4.198c.213-.214.463-.179.678.036l3.229 2.422a.552.552 0 010 .775L8.709 9.853a.488.488 0 01-.678-.035V8.22l-.236-.001c-1.816 0-2.439.677-3.232 2.126-.167.308-.573.63-.573-.251z"/></svg>';
  static const String circle_help =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="17" height="16" preserveAspectRatio="xMidYMid meet" viewBox="0 0 17 16"><path fill="currentColor" fill-rule="evenodd" d="M9 0a8 8 0 00-8 8 8 8 0 008 8 8 8 0 008-8 8 8 0 00-8-8zm0 14a1 1 0 110-2 1 1 0 010 2zm1.647-5.757c-.473.365-.734.566-.734 1.147v.814c0 .459-.406.834-.907.834-.502 0-.909-.375-.909-.834V9.39c0-1.357.831-1.998 1.38-2.422.474-.366.734-.566.734-1.146 0-.654-.541-1.188-1.205-1.188-.665 0-1.205.533-1.205 1.188 0 .461-.408.833-.909.833-.5 0-.909-.372-.909-.833 0-1.574 1.357-2.854 3.023-2.854 1.665 0 3.021 1.279 3.021 2.854 0 1.356-.83 1.996-1.38 2.421z"/></svg>';
  static const String circle_info =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="17" height="16" preserveAspe


t .table td {
  border-top: none;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.card-chart .card-progress {
  margin-top: 30px;
  padding: 0 10px;
}

.card-chart .chart-area {
  height: 220px;
  width: 100%;
}

.card-chart .card-footer {
  margin-top: 15px;
}

.card-chart .card-footer .stats {
  color: #9A9A9A;
}

.card-chart .dropdown {
  position: absolute;
  right: 20px;
  top: 20px;
}

.card-chart .dropdown .btn {
  margin: 0;
}

.card-chart.card-chart-pie .chart-area {
  padding: 10px 0 25px;
  height: auto;
}

.card-chart.card-chart-pie .card-title {
  margin-bottom: 10px;
}

.card-chart.card-chart-pie .card-title i {
  font-size: 1rem;
}

.map {
  height: 500px;
}

.card-user {
  overflow: hidden;
}

.card-user .image {
  height: 120px;
}

.card-user .author {
  text-align: center;
  text-transform: none;
  margin-top: 25px;
}

.card-user .author a+p.description {
  margin-top: -7px;
}

.card-user .author .block {
  position: absolute;
  height: 100px;
  width: 250px;
}

.card-user .author .block.block-one {
  background: rgba(225, 78, 202, 0.6);
  background: -webkit-linear-gradient(to right, rgba(225, 78, 202, 0.6) 0%, rgba(225, 78, 202, 0) 100%);
  background: -o-linear-gradient(to right, rgba(225, 78, 202, 0.6) 0%, rgba(225, 78, 202, 0) 100%);
  background: -moz-linear-gradient(to right, rgba(225, 78, 202, 0.6) 0%, rgba(225, 78, 202, 0) 100%);
  background: linear-gradient(to right, rgba(225, 78, 202, 0.6) 0%, rgba(225, 78, 202, 0) 100%);
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=10);
  -webkit-transform: rotate(150deg);
  -moz-transform: rotate(150deg);
  -ms-transform: rotate(150deg);
  -o-transform: rotate(150deg);
  transform: rotate(150deg);
  margin-top: -90px;
  margin-left: -50px;
}

.card-user .author .block.block-two {
  background: rgba(225, 78, 202, 0.6);
  background: -webkit-linear-gradient(to right, rgba(225, 78, 202, 0.6) 0%, rgba(225, 78, 202, 0) 100%);
  background: -o-linear-gradient(to right, rgba(225, 78, 202, 0.6) 0%, rgba(225, 78, 202, 0) 100%);
  background: -moz-linear-gradient(to right, rgba(225, 78, 202, 0.6) 0%, rgba(225, 78, 202, 0) 100%);
  background: linear-gradient(to right, rgba(225, 78, 202, 0.6) 0%, rgba(225, 78, 202, 0) 100%);
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=10);
  -webkit-transform: rotate(30deg);
  -moz-transform: rotate(30deg);
  -ms-transform: rotate(30deg);
  -o-transform: rotate(30deg);
  transform: rotate(30deg);
  margin-top: -40px;
  margin-left: -100px;
}

.card-user .author .


input:focus,
textarea:focus{
  outline: none;
  box-shadow: none;
  transition: all 500ms ease;
}

p{
  position: relative;
  font-size: 16px;
  line-height: 26px;
  font-family: 'Rubik', sans-serif;
  color: #898c8f;
  margin: 0px;
  transition: all 500ms ease;
}

h1,h2,h3,h4,h5,h6{
  position:relative;
  font-family: 'Poppins', sans-serif;
  font-weight: 400;
  color: #1d2534;
  margin: 0px;
  transition: all 500ms ease;
}

/* Preloader */

.handle-preloader {
  align-items: center;
  -webkit-align-items: center;
  display: flex;
  display: -ms-flexbox;
  height: 100%;
  justify-content: center;
  -webkit-justify-content: center;
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  z-index: 99999;
  background: #fff;
}

.handle-preloader .animation-preloader {
  position: absolute;
  z-index: 100;
}

.handle-preloader .animation-preloader .spinner{
  animation: spinner 1s infinite linear;
  border-radius: 50%;
  height: 150px;
  margin: 0 auto 45px auto;
  width: 150px;
}

.handle-preloader .animation-preloader .txt-loading {
  text-align: center;
  user-select: none;
}

.handle-preloader .animation-preloader .txt-loading .letters-loading:before{
  animation: letters-loading 4s infinite;
  content: attr(data-text-preloader);
  left: 0;
  opacity: 0;
  top:0;
  line-height: 50px;
  position: absolute;
}

.handle-preloader .animation-preloader .txt-loading .letters-loading{
  font-family: 'Poppins', sans-serif;
  font-weight: 700;
  letter-spacing: 15px;
  display: inline-block;
  position: relative;
  font-size: 50px;
  line-height: 50px;
}

.handle-preloader .animation-preloader .txt-loading .letters-loading:nth-child(2):before {animation-delay: 0.2s;}
.handle-preloader .animation-preloader .txt-loading .letters-loading:nth-child(3):before {animation-delay: 0.4s;}
.handle-preloader .animation-preloader .txt-loading .letters-loading:nth-child(4):before {animation-delay: 0.6s;}
.handle-preloader .animation-preloader .txt-loading .letters-loading:nth-child(5):before {animation-delay: 0.8s;}
.handle-preloader .animation-preloader .txt-loading .letters-loading:nth-child(6):before { animation-delay: 1s;}
.handle-preloader .animation-preloader .txt-loading .letters-loading:nth-child(7):before { animation-delay: 1.2s;}
.handle-preloader .animation-preloader .txt-loading .letters-loading:nth-child(8):before { animation-delay: 1.4s;}
.handle-preloader .loader-section {
  background-color: #ffffff;
  height: 100%;
  position: fixed;
  top: 0;
  width: calc(50% + 1px);
}

.preloader .loaded .animation-preloader {
  opacity: 0;
  tr


bo. Uwezo huu wa kufanya kazi kama pesa taslimu dijitali unawezesha kipekee uchumi wa duara leo na kuzisaidia kukua na kustawi kadri muda unavyopita kwa njia ambazo fedha nyinginezo kama Bitcoin haziwezi.
';

  @override
  String get knowledge250Sbeconomy250Sb4250Sbtitle => 'Hitimisho';

  @override
  String get knowledge250Sbeconomy250Sb5250Sbtext => '
Ikiwa una hamu ya kujua na ungependa kuelewa vyema uchumi wa duara au uanze kushiriki katika uchumi mmoja leo, angalia viungo vilivyo hapa chini ili kupata maeneo bora za kuanza:
\n
\n
“KYC- uchumi wa duara wa Bitcoin: wacha soko ziwe huru, wacha dunia iwe huru” - Anarkio
\n
“Ni Wakati wa Kujiunga na Uchumi wa Bitcoin Circular Economy” - Ragnar Lifthrasir
\n
“Monerica.com - Saraka ya uchumi wa duara la Monero”
\n
Monero Merchants - Cryptwerk
';

  @override
  String get knowledge250Sbeconomy250Sb5250Sbtitle => 'Ninawezaje kujifunza zaidi?';

  @override
  String get knowledge250Sbeconomy250Sbdescription => 'Leo, tunazingatia jinsi uwezo wa Monero kufanya kazi kama pesa taslimu dijitali unavyowezesha kwa namna ya kipekee maendeleo ya uchumi wa mduara.';

  @override
  String get knowledge250Sbeconomy250Sbtitle => 'Jinsi Monero huwezesha kwa njia ya kipekee uchumi wa mduara';

  @override
  String get knowledge250Sbemission250Sb0250Sbtext => '
Watu wengi wanapofikiria kile kinachotofautisha Monero, wanafikiria teknolojia ya faragha la Monero. Hakika, wengi wangezingatia ufaragha, na uwezekano wa kugunduliwa, kama sifa za Monero, na silaha kuu ambayo inaleta kwenye pete ikilinganishwa na sarafu zingine. Kile ambacho watu wengi huenda wasijue ni kwamba Monero ina tofauti nyingine za itifaki kutoka kwa Bitcoin na viambajengo vyake ambavyo wengine wanaweza kubishana ni muhimu kama vile teknolojia za faragha za Monero. Katika makala haya, tutaangalia mmojawapo ya haya: utoaji wa mkia.
\n\n
Kwanza, hebu tufafanue neno hili linamaanisha nini. Utoaji wa mkia ni ruzuku isiyokoma ya zawadi za kuz


-time-header .k-time-now,.k-time-selector-header .k-time-now{color:var(--kendo-color-primary, #f4af03)}.k-time-header .k-time-now:hover,.k-time-selector-header .k-time-now:hover{color:var(--kendo-color-primary-hover, #f6bc2b)}.k-time-list-wrapper .k-title{color:var(--kendo-color-subtle, #e0e0e0)}.k-time-list-wrapper.k-focus .k-title{color:var(--kendo-color-on-app-surface, #ffffff)}.k-time-list-wrapper.k-focus::before,.k-time-list-wrapper.k-focus::after{background-color:rgba(0,0,0,.04)}.k-time-list::before,.k-time-list::after{box-shadow:0 0 3em 1.5em var(--kendo-color-surface-alt, #303742)}.k-time-list .k-item:hover{color:var(--kendo-color-primary, #f4af03)}.k-time-container{background:rgba(0,0,0,0)}.k-time-highlight{border-color:var(--kendo-color-border, #394958);background-color:var(--kendo-color-surface-alt, #303742)}.k-captcha{width:280px;box-sizing:border-box;font-size:var(--kendo-font-size, inherit);font-family:var(--kendo-font-family, inherit);line-height:var(--kendo-line-height, normal);display:flex;flex-flow:column nowrap;gap:var(--kendo-spacing-2, 0.5rem)}.k-captcha *,.k-captcha *::before,.k-captcha *::after{box-sizing:border-box}.k-captcha-image-wrap{position:relative;gap:var(--kendo-spacing-2, 0.5rem)}.k-captcha-image-controls{position:relative;gap:var(--kendo-spacing-2, 0.5rem)}.k-captcha-image{width:100%;height:100%;overflow:hidden}.k-captcha-image>img{width:100%;height:100%;display:block;object-fit:cover}.k-captcha-loading .k-captcha-image{height:auto}.k-captcha-volume-control{height:100%}.k-captcha-validation-message{margin-block-start:calc(var(--kendo-spacing-2, 0.5rem)/2);font-size:var(--kendo-font-size-sm, inherit);font-style:italic}.k-captcha{border-color:var(--kendo-color-surface-alt, #303742);color:var(--kendo-color-surface-alt, #303742);background-color:var(--kendo-color-surface-alt, #303742)}.k-pos-static,.k-static{position:static}.\!k-pos-static,.\!k-static{position:static !important}.k-pos-relative,.k-relative{position:relative}.\!k-pos-relative,.\!k-relative{position:relative !important}.k-pos-absolute,.k-absolute{position:absolute}.\!k-pos-absolute,.\!k-absolute{position:absolute !important}.k-pos-fixed,.k-fixed{position:fixed}.\!k-pos-fixed,.\!k-fixed{position:fixed !important}.k-pos-sticky,.k-sticky{position:sticky}.\!k-pos-sticky,.\!k-sticky{position:sticky !important}.k-colorpalette{border-width:0;box-sizing:border-box;outline:0;font-size:var(--kendo-font-size, inherit);font-family:var(--kendo-font-family, inherit);line-height:0;display:inline-flex;position:rel


rectangle for reference
            strokeReferenceRectangle(rectangle)

            -- Draw the oval, using the regular text color
            gc.color = RegularColor
            gc.strokeWidth = 2
            gc:beginPath()
            gc:oval(rectangle)
            gc:stroke()
        end
    end
}
:combobox{
    id = "shape",
    label = "Shape:",
    option = Shape.None,
    options = {
        Shape.None, Shape.Line, Shape.Curve, Shape.Triangle, Shape.Rect,
        Shape.RoundedRect, Shape.Oval
    },
    onchange = function()
        local shape = dialog.data.shape

        local usesP1 = shape == Shape.Line or shape == Shape.Curve or shape ==
                           Shape.Triangle or shape == Shape.Rect or shape ==
                           Shape.RoundedRect or shape == Shape.Oval
        local usesP2 = shape == Shape.Line or shape == Shape.Curve or shape ==
                           Shape.Triangle
        local usesP3 = shape == Shape.Triangle
        local usesControlPoints = shape == Shape.Curve
        local usesWidth = shape == Shape.Rect or shape == Shape.RoundedRect or
                              shape == Shape.Oval
        local usesHeight = shape == Shape.Rect or shape == Shape.RoundedRect or
                               shape == Shape.Oval
        local usesRadius = shape == Shape.RoundedRect
        local showParallel = shape == Shape.Line and dialog.data["parallel-line"]

        dialog
        :modify{id = "p1-x", visible = usesP1}
        :modify{id = "p1-y", visible = usesP1}
        :modify{id = "p2-x", visible = usesP2}
        :modify{id = "p2-y", visible = usesP2}
        :modify{id = "p3-x", visible = usesP3}
        :modify{id = "p3-y", visible = usesP3}
        :modify{id = "cp1-x", visible = usesControlPoints}
        :modify{id = "cp1-y", visible = usesControlPoints}
        :modify{id = "cp2-x", visible = usesControlPoints}
        :modify{id = "cp2-y", visible = usesControlPoints}
        :modify{id = "parallel-line", visible = shape == Shape.Line}
        :modify{id = "parallel-line-x", visible = shape == showParallel}
        :modify{id = "parallel-line-y", visible = shape == showParallel}
        :modify{id = "perpendicular-line", visible = shape == Shape.Line}
        :modify{id = "width", visible = usesWidth}
        :modify{id = "height", visible = usesHeight}
        :modify{id = "radius-x", visible = usesRadius}
        :modify{id = "radius-y", visible = usesRadius}

        if shape ~= Shape.None then dialog:repaint() end
    end
}
:slider{
    id = "p1-x",
    label = "P1 (X/Y):",
    min = 0,
    max = 160,
    value = 80,
    visible = false,
    onchange = function() dialog:repaint() end
}
:slider{
    id = "p1-y",
    min = 0,
    max = 160,
    value = 20,
    visible = false,
    onchange


ig["method"] == "sequential_gta_3":

                quality_requirement = execution_config.get("quality_requirement", None)
                if quality_requirement is None:
                    raise Exception("Quality requirement is not set.")
                if not 0 <= quality_requirement <= 1:
                    raise Exception("Invalid quality requirement.")
                if not self._check_same_question_template(asked_questions):
                    raise Exception(
                        "All asked questions must have the same question template."
                    )
                significance_level = execution_config.get(
                    "significance_level",
                    self._default_significance_level,
                )
                if not 0 <= significance_level <= 1:
                    raise Exception("Invalid significance level.")
                iteration = execution_config.get(
                    "iteration", self._default_gta_iteration
                )
                if not 0 < iteration:
                    raise Exception("Invalid iteration.")

                question_template = asked_questions[0]["question_template"]
                if question_template["answer"]["type"] != "select":
                    raise Exception("The answer type must be select.")

                return await self._sequential_gta_3_method(
                    asked_questions=asked_questions,
                    quality_requirement=quality_requirement,
                    significance_level=significance_level,
                    iteration=iteration,
                )
            else:
                raise Exception("Invalid method.")


 dismiss(reason); };

    async.Future<String> contentFuture = _getContent(template:options.template, templateUrl:options.templateUrl);

    contentFuture
      ..then((String content){
        // Check is content valid from modal-window perspective
        if (content.contains('modal-window')) {
          throw new Exception("It is not allowing to have modal-window inside othermodal-window" );
        }
        // Add ModalWindow wrapper
        String html = "<modal-window";
        if (options.preventAnimation != null) html += " preventAnimation=\"${options.preventAnimation}\"";
        if (options.backdrop != null) html += " backdrop=\"${options.backdrop}\"";
        if (options.keyboard != null) html += " keyboard=\"${options.keyboard}\"";
        if (options.windowClass != null) html += " windowClass=\"${options.windowClass}\"";
        if (options.size != null) html += " size=\"${options.size}\"";
        html += ">$content</modal-window>";
        //
        List<dom.Element> rootElements = toNodeList(html);

        instance._element = rootElements.firstWhere((el) {
            return el is dom.Element && el.tagName.toLowerCase() == "modal-window";
        });
        //
        _compiler(rootElements, _directiveMap)(scope, _injector, rootElements);
        //
        _show(instance, options);
        //
        dom.document.body.append(instance._element);
        //
        openCompleter.complete(true);
      })
      ..catchError((error) {
        openCompleter.completeError(error);
        resultCompleter.completeError(error);
      });

    // Cath exception in safe manner
    resultCompleter.future.catchError((error){});
    openCompleter.future.catchError((error){});

    return instance;
  }

  /**
   * Prepare [ModalInstance] to show with [options].
   */
  void _show(ModalInstance modalInstance, ModalOptions options) {
    modalInstance._backDropElement = _createBackdrop(modalInstance._element.ownerDocument, options.backdrop);

    modalInstance._element.attributes["index"] = "${openedWindows.length}";

    dom.document.onKeyDown.listen((dom.KeyboardEvent event) {
      if(!event.defaultPrevented) {
        if (event.keyCode == 27 && modalInstance != null && options.keyboard) {
          event.preventDefault();
          event.stopPropagation();
          dismiss("by escape");
        }
      }
    });

    if(modalInstance._backDropElement != null) {
      // Go backdrop to opaque
      modalInstance._backDropElement.classes
        ..remove("in")
          ..add("fade");

      _timeout.call((){
        // Add transparancy to backdrop
        // Start animation
        modalInstance._backDropElement.classes
          ..add("in");
        _timeout.call((){
          // Animation is done
          modalInstance._backDropElement.classes
            ..remove("fade");
        }, delay:250);
      }, delay:1);

      modalInstance._backDropElement.onClick.listen((dom.MouseEvent e) {
        // Call only backdrop on top element
        String backdrop = _top._element.attributes['backdrop'];
        if (backdrop != null && backdrop == 'true') {
          hide();
        }
      });
    }
    //
    openedWindows.add(modalInstance);
  }

  /**
   * Hide modal window. Developers must use [close] or [dismiss] methods to
   * manage process of closing modal window.
   */
  void hide() {
    ModalInstance modalInstance = _top;

    if (modalInstance != null) {
      // I commented out the statement below because somtimes modalInstance doesn't contain 'in' class.
//      if (modalInstance._visible) {


e(prev_node_id, curr_node_id);
                prev_node_id = curr_node_id;
            }

            // Add final edge
            aligner.add_edge(curr_node_id, ABPOA_SINK_NODE_ID as i32);

            //abpoa_generate_gfa(aligner.ab, aligner.abpt, stdout);

            let mut query_bseq: Vec<u8> = query
                .chars()
                .map(|c| *(AbpoaAligner::NT4_TABLE).get(c as usize).unwrap())
                .collect();

            let mut res = abpoa_res_t {
                n_cigar: 0,
                m_cigar: 0,
                graph_cigar: vec![].as_mut_ptr(),
                node_s: 0,
                node_e: 0,
                query_s: 0,
                query_e: 0,
                n_aln_bases: 0,
                n_matched_bases: 0,
                best_score: 0,
            };
            abpoa_align_sequence_to_graph(
                aligner.ab,
                aligner.abpt,
                query_bseq.as_mut_ptr(),
                query.len() as i32,
                &mut res,
            );

            // Create variables to store aln result
            let mut abpoa_ids: Vec<i32> = Vec::new();
            let mut graph_ids: Vec<usize> = Vec::new();
            let mut cigar_vec: Vec<char> = Vec::new();

            // Navigate the cigar
            let mut op: u32 = 0;
            let mut op_char = ' ';
            let mut node_id: i32 = 0;
            for i in 0..res.n_cigar {
                let curr_cigar = res.graph_cigar.add(i as usize);
                op = (*curr_cigar & 0xf) as u32;

                op_char = match op {
                    ABPOA_CMATCH => 'M',
                    ABPOA_CINS => 'I',
                    ABPOA_CDEL => 'D',
                    ABPOA_CDIFF => 'X',
                    ABPOA_CSOFT_CLIP => 'S',
                    ABPOA_CHARD_CLIP => 'H',
                    _ => ' ',
                };

                node_id = ((*curr_cigar >> 34) & 0x3fffffff) as i32;

                //println!("Node id {} type {}", node_id, op_char);

                abpoa_ids.push(node_id);
                cigar_vec.push(op_char);
            }

            // Compact cigar
            let mut cigar_string = String::new();
            if !cigar_vec.is_empty() {
                let mut last_char = ' ';
                let mut count = 0;

                for char in &cigar_vec {
                    if *char != last_char {
                        if last_char != ' ' {
                            // This is the initial delimiter
                            cigar_string.push_str(&mut format!("{}{}", count, last_char));
                        }
                        last_char = *char;
                        count = 1;
                    } else {
                        count += 1;
                    }
                }

                cigar_string.push_str(&mut format!("{}{}", count, last_char));
            }

            AbpoaAlignmentResult::new_with_params(
                cigar_string.as_str(),
                abpoa_ids,
                graph_ids,
                &res,
                cigar_vec,
                String::new().as_str(),
            )
        }
    }

    #[test]
    fn add_complex_graph_1() {
        unsafe {
            let mut aligner = AbpoaAligner::new_with_example_params();
            aligner.add_nodes_edges(&vec!["ACG", "AAA"], &vec![(0, 1)]);
            abpoa_generate_gfa(aligner


ium,
table.legend span.coverage-high
{
    padding-left: 3px;
    padding-right: 3px;
}

table.legend span.coverage-unknown,
table.coverage td.coverage-unknown,
table.file-list td.coverage-unknown
{
    background-color: var(--unknown_color) !important;
}

table.legend span.coverage-none,
table.legend span.coverage-low,
table.coverage td.coverage-none,
table.coverage td.coverage-low,
table.file-list td.coverage-none,
table.file-list td.coverage-low
{
    background-color: var(--low_color) !important;
}

table.legend span.coverage-medium,
table.coverage td.coverage-medium,
table.file-list td.coverage-medium
{
    background-color: var(--medium_color) !important;
}

table.legend span.coverage-high,
table.coverage td.coverage-high,
table.file-list td.coverage-high
{
    background-color: var(--high_color) !important;
}
/*** End of Summary formats ***/
/*** Meter formats ***/

/* Common */
meter {
    -moz-appearance: none;

    width: 30vw;
    min-width: 4em;
    max-width: 15em;
    height: 0.75em;
    padding: 0;
    vertical-align: baseline;
    margin-top: 3px;
    /* Outer background for Mozilla */
    background: none;
    background-color: whitesmoke;
}

/* Webkit */

meter::-webkit-meter-bar {
    /* Outer background for Webkit */
    background: none;
    background-color: whitesmoke;
    height: 0.75em;
    border-radius: 0px;
}

meter::-webkit-meter-optimum-value,
meter::-webkit-meter-suboptimum-value,
meter::-webkit-meter-even-less-good-value
{
    /* Inner shadow for Webkit */
    border: solid 1px black;
}

meter.coverage-none::-webkit-meter-optimum-value,
meter.coverage-low::-webkit-meter-optimum-value
{
    background: var(--low_color);
}

meter.coverage-medium::-webkit-meter-optimum-value
{
    background: var(--medium_color);
}

meter.coverage-high::-webkit-meter-optimum-value
{
    background: var(--high_color);
}

/* Mozilla */

meter::-moz-meter-bar
{
    box-sizing: border-box;
}

meter:-moz-meter-optimum::-moz-meter-bar,
meter:-moz-meter-sub-optimum::-moz-meter-bar,
meter:-moz-meter-sub-sub-optimum::-moz-meter-bar
{
    /* Inner shadow for Mozilla */
    border: solid 1px black;
}

meter.coverage-none:-moz-meter-optimum::-moz-meter-bar,
meter.coverage-low:-moz-meter-optimum::-moz-meter-bar
{
    background: var(--low_color);
}

meter.coverage-medium:-moz-meter-optimum::-moz-meter-bar
{
    background: var(--medium_color);
}

meter.coverage-high:-moz-meter-optimum::-moz-meter-bar
{
    background: var(--high_color);
}

/*** End of Meter formats ***/
.file-list td, .file-list th {
    padding: 0 10px;
    font-weight: bold;
}

.file-list th[scope^=col]
{
    text-align: center;
    color: white;
    background-color: SteelBlue


& len(instance.Pods) > 0 {
			pod = instance.Pods[0]
			break
		}
	}
	if pod == nil {
		return nil
	}

	// PostgreSQL is available for writes. Prepare to either add or remove
	// PgBouncer objects.

	// K8SPG-345
	var exposeSuperusers bool
	if cluster.Spec.Proxy != nil && cluster.Spec.Proxy.PGBouncer != nil {
		exposeSuperusers = cluster.Spec.Proxy.PGBouncer.ExposeSuperusers
		if exposeSuperusers {
			log.Info("Superusers are exposed through PGBouncer")
		}
	}

	action := func(ctx context.Context, exec postgres.Executor) error {
		return errors.WithStack(pgbouncer.EnableInPostgreSQL(ctx, exec, clusterSecret, exposeSuperusers))
	}
	if cluster.Spec.Proxy == nil || cluster.Spec.Proxy.PGBouncer == nil {
		// PgBouncer is disabled.
		action = func(ctx context.Context, exec postgres.Executor) error {
			return errors.WithStack(pgbouncer.DisableInPostgreSQL(ctx, exec))
		}
	}

	// First, calculate a hash of the SQL that should be executed in PostgreSQL.

	revision, err := safeHash32(func(hasher io.Writer) error {
		// Discard log messages from the pgbouncer package about executing SQL.
		// Nothing is being "executed" yet.
		return action(logging.NewContext(ctx, logging.Discard()), func(
			_ context.Context, stdin io.Reader, _, _ io.Writer, command ...string,
		) error {
			_, err := io.Copy(hasher, stdin)
			if err == nil {
				_, err = fmt.Fprint(hasher, command)
			}
			return err
		})
	})
	if err != nil {
		return err
	}

	if revision == cluster.Status.Proxy.PGBouncer.PostgreSQLRevision {
		// The necessary SQL has already been applied; there's nothing more to do.

		// TODO(cbandy): Give the user a way to trigger execution regardless.
		// The value of an annotation could influence the hash, for example.
		return nil
	}

	// Apply the necessary SQL and record its hash in cluster.Status. Include
	// the hash in any log messages.

	if err == nil {
		ctx := logging.NewContext(ctx, logging.FromContext(ctx).WithValues("revision", revision))
		err = action(ctx, func(ctx context.Context, stdin io.Reader, stdout, stderr io.Writer, command ...string) error {
			return r.PodExec(ctx, pod.Namespace, pod.Name, naming.ContainerDatabase, stdin, stdout, stderr, command...)
		})
	}
	if err == nil {
		cluster.Status.Proxy.PGBouncer.PostgreSQLRevision = revision
	}

	return err
}

// +kubebuilder:rbac:groups="",resources="secrets",verbs={get}
// +kubebuilder:rbac:groups="",resources="secrets",verbs={create,delete,patch}

// reconcilePGBouncerSecret writes the Secret for a PgBouncer Pod.
func (r *Reconciler) reconcilePGBouncerSecret(
	ctx context.Context, cluster *v1beta1.PostgresCluster,
	root *pki.RootCertificateAuthority, service *corev1.Service,
) (*corev1.Secret, error) {
	existing := &corev1.Secret{ObjectMeta: naming.ClusterPGBouncer(cluster)}
	err := errors.WithStack(
		r.Client.Get(ctx, client.ObjectKeyFromObject(existing), existing))
	if client.IgnoreNotFound(err) != nil {
		return nil, err
	}

	if cluster.Spec.Proxy == nil || cluster.Spec.Proxy.PGBouncer == nil {
		// P


i = 0; i < 3; i++)
                        {
                            CritSpark spark = new CritSpark(proj.Center, proj.velocity.RotatedByRandom(0.4) * Main.rand.NextFloat(0.8f, 1.5f), Main.rand.NextBool() ? Color.Orange : Color.OrangeRed, Color.Yellow, Main.rand.NextFloat(0.4f, 0.6f), 15, Main.rand.NextFloat(-2f, 2f), 1.5f);
                            GeneralParticleHandler.SpawnParticle(spark);
                        }
                        SoundEngine.PlaySound(SoundID.DD2_BetsyFireballImpact with { Volume = 0.3f, Pitch = 1f }, proj.Center);
                    }
                }

                if (cgp.iceBullet)
                {
                    target.AddBuff(BuffID.Frostburn2, 60);
                    if (proj.numHits == 0)
                    {
                        for (int i = 0; i < 3; i++)
                        {
                            CritSpark spark = new CritSpark(proj.Center, proj.velocity.RotatedByRandom(0.4) * Main.rand.NextFloat(0.8f, 1.5f), Main.rand.NextBool() ? Color.DeepSkyBlue : Color.LightSkyBlue, Color.White, Main.rand.NextFloat(0.4f, 0.6f), 15, Main.rand.NextFloat(-2f, 2f), 1.5f);
                            GeneralParticleHandler.SpawnParticle(spark);
                        }
                        SoundEngine.PlaySound(SoundID.Item27 with { Volume = 0.3f, Pitch = 0.8f }, proj.Center);
                    }
                }

                if (cgp.shockBullet)
                {
                    target.AddBuff(BuffID.Electrified, 180);

                    if (proj.numHits == 0)
                    {
                        CustomPulse spark = new CustomPulse(proj.Center, Vector2.Zero, Color.Turquoise, "CalamityMod/Particles/PlasmaExplosion", new Vector2(1, 1), Main.rand.NextFloat(-2f, 2f), 0.005f, Main.rand.NextFloat(0.048f, 0.055f), 14);
                        GeneralParticleHandler.SpawnParticle(spark);
                        int points = 6;
                        float radians = MathHelper.TwoPi / points;
                        Vector2 spinningPoint = Vector2.Normalize(new Vector2(-1f, -1f));
                        float rotRando = Main.rand.NextFloat(0.1f, 2.5f);
                        for (int k = 0; k < points; k++)
                        {
                            Vector2 velocity = spinningPoint.RotatedBy(radians * k).RotatedBy(-0.45f * rotRando);
                            SparkParticle subTrail = new SparkParticle(proj.Center + velocity * 4.5f, velocity * 8, false, 13, 0.85f, Color.Turquoise);
                            GeneralParticleHandler.SpawnParticle(subTrail);
                        }
                        for (int i = 0; i <= 12; i++)
                        {
                            Dust dust2 = Dust.NewDustPerfect(proj.Center, 278, new Vector2(4, 4).RotatedByRandom(100f) * Main.rand.NextFloat(0.1f, 2.9f));
                            dust2.noGravity = false;
                            dust2.scale = Main.rand.NextFloat(0.3f, 0.9f);
                            dust2.color = Color.Turquoise;
                        }

                        int onHitDamage = Player.CalcIntDamage<RangedDamageClass>(0.2f * proj.damage);
                        Player.ApplyDamageToNPC(target, onHitDamage, 0f, 0, false);

                        SoundStyle hitSound = new("CalamityMod/Sounds/Item/ElectricHit");
                        SoundEngin


true,
		},
		{
			name: "scaling with max < min count",
			spec: GCPManagedMachinePoolSpec{
				GCPManagedMachinePoolClassSpec: GCPManagedMachinePoolClassSpec{
					NodePoolName: "nodepool1",
					Scaling: &NodePoolAutoScaling{
						MinCount: &maxCount,
						MaxCount: &minCount,
					},
				},
			},
			expectError: true,
		},
		{
			name: "autoscaling disabled and min/max provided",
			spec: GCPManagedMachinePoolSpec{
				GCPManagedMachinePoolClassSpec: GCPManagedMachinePoolClassSpec{
					NodePoolName: "nodepool1",
					Scaling: &NodePoolAutoScaling{
						EnableAutoscaling: &enableAutoscaling,
						MinCount:          &minCount,
						MaxCount:          &maxCount,
					},
				},
			},
			expectError: true,
		},
		{
			name: "valid non-negative values",
			spec: GCPManagedMachinePoolSpec{
				GCPManagedMachinePoolClassSpec: GCPManagedMachinePoolClassSpec{
					NodePoolName:   "nodepool1",
					DiskSizeGb:     &diskSizeGb,
					MaxPodsPerNode: &maxPods,
					LocalSsdCount:  &localSsds,
				},
			},
			expectError: false,
		},
		{
			name: "invalid negative values",
			spec: GCPManagedMachinePoolSpec{
				GCPManagedMachinePoolClassSpec: GCPManagedMachinePoolClassSpec{
					NodePoolName:   "nodepool1",
					DiskSizeGb:     &invalidDiskSizeGb,
					MaxPodsPerNode: &invalidMaxPods,
					LocalSsdCount:  &invalidLocalSsds,
				},
			},
			expectError: true,
		},
	}

	for _, tc := range tests {
		t.Run(tc.name, func(t *testing.T) {
			g := NewWithT(t)

			mmp := &GCPManagedMachinePool{
				Spec: tc.spec,
			}
			warn, err := (&gcpManagedMachinePoolWebhook{}).ValidateCreate(t.Context(), mmp)

			if tc.expectError {
				g.Expect(err).To(HaveOccurred())
			} else {
				g.Expect(err).ToNot(HaveOccurred())
			}
			// Nothing emits warnings yet
			g.Expect(warn).To(BeEmpty())
		})
	}
}

func TestGCPManagedMachinePoolValidatingWebhookUpdate(t *testing.T) {
	tests := []struct {
		name        string
		spec        GCPManagedMachinePoolSpec
		expectError bool
	}{
		{
			name: "node pool is not mutated",
			spec: GCPManagedMachinePoolSpec{
				GCPManagedMachinePoolClassSpec: GCPManagedMachinePoolClassSpec{
					NodePoolName: "nodepool1",
				},
			},
			expectError: false,
		},
		{
			name: "mutable fields are mutated",
			spec: GCPManagedMachinePoolSpec{
				GCPManagedMachinePoolClassSpec: GCPManagedMachinePoolClassSpec{
					NodePoolName: "nodepool1",
					AdditionalLabels: infrav1.Labels{
						"testKey": "testVal",
					},
				},
			},
			expectError: false,
		},
		{
			name: "immutable field disk size is mutated",
			spec: GCPManagedMachinePoolSpec{
				GCPManagedMachinePoolClassSpec: GCPManagedMachinePoolClassSpec{
					NodePoolName: "nodepool1",
					DiskSizeGb:   &diskSizeGb,
				},
			},
			expectError: true,
		},
	}

	for _, tc := range tests {
		t.Run(tc.name, func(t *testing.T) {
			g := NewWithT(t)

			newMMP := &GCPManagedMachinePool{
				Spec: tc.spec,
			}
			oldMMP := &GCPManagedMachinePool{
				Spec: GCPManagedMachinePoolSpec{
					GCPManagedMachinePoolClassSpec: GCPManagedMachinePoolClassSpec{
						NodePoolName: "


pg = pg or {}
pg.aircraft_template_218 = {
	[81261] = {
		id = 81261,
		base = 81260,
		max_hp = 51,
		hp_growth = 1947,
		weapon_ID = {
			50461
		}
	},
	[81262] = {
		id = 81262,
		base = 81260,
		max_hp = 57,
		hp_growth = 2201,
		weapon_ID = {
			50462
		}
	},
	[81263] = {
		id = 81263,
		base = 81260,
		max_hp = 64,
		hp_growth = 2455,
		weapon_ID = {
			50463
		}
	},
	[81264] = {
		id = 81264,
		base = 81260,
		max_hp = 70,
		hp_growth = 2710,
		weapon_ID = {
			50464
		}
	},
	[81265] = {
		id = 81265,
		base = 81260,
		max_hp = 77,
		hp_growth = 2964,
		weapon_ID


s Postmen {
    private status: number = Status.Wait;
    private readonly authKey: string;
    private eventCenter: EventCenter;
    private origin: string = '*';
    private timeout: number;
    private debug: boolean;
    private source?: Window;
    private targetWindow?: Window;
    private readonly role: Role;

    constructor(config: Config) {
        const {authKey, timeout, debug, role, origin} = config
        this.authKey = authKey;
        this.role = role;
        this.timeout = timeout || 5000;
        this.debug = debug || false;
        this.eventCenter = new EventCenter();
        origin && (this.origin = origin);
        let self = this;

        // 开始挂载监听message的事件
        window.addEventListener('message', (e) => {
            const {data, source, origin} = e;

            // 需要reply的 会有sessionID，这个取名感觉不太恰当
            const {msg, authKey, args, sessionID} = data;
            if (!this.auth(authKey)) return; // 过滤无关的message

            if (this.status === Status.Wait && msg === 'startConnect') { // 当未连接的时候
                args.unshift(source);
            }

            // 如果有sessionID这个参数则为要返回值的
            sessionID ?
                this.eventCenter.on(msg, args) :
                this.eventCenter.on(msg, args, sessionID, this.source, this.authKey)
        });

        if (this.role === Role.Parent) {
            // do nothing

        } else if (this.role === Role.Son) {
            // 注册，等待连接的事件
            this.eventCenter.addEventListener('startConnect', function f(args) {
                self.source = args[0];
                self.status = Status.Connected;
                // self.reply();
                self.source.postMessage({msg: 'waitForResponse', authKey: self.authKey}, '*')
                // self.eventCenter.removeEventListener('startConnect', f)
            }, true);
            // 禁止主动发起连接
        }
    }

    // 申请建立链接
    startConnect(son: HTMLIFrameElement) {
        if (this.role === Role.Son || this.status === Status.Connected) return;
        let self = this;
        let targetWindow = son.contentWindow;
        // add 等待响应的事件
        this.eventCenter.addEventListener('waitForResponse', function f() {
            self.status = Status.Connected;
            // 储存子的信息
            self.targetWindow = targetWindow;
            // self.eventCenter.removeEventListener('waitForResponse', f);
        }, true);
        targetWindow.postMessage({msg: 'startConnect', authKey: this.authKey}, '*');
    }

    // 收到建立链接的请求并返回,被event中心调用
    // reply() {
    // if (this.role === Role.Parent || this.status === Status.Connected) return;
    // const {source, data, origin} = e;
    // this.source = source;
    // this.source.postMessage({msg: 'waitForResponse', authKey: this.authKey}, '*');
    // }

    // 移除connect
    disconnect() {
        let targetWindow = this.targetWindow || this.source;
        targetWindow.postMessage({msg: 'disconnect'}, '*');
        this.disconnect2();
    }

    // 被动disconnect
    disconnect2() {
        this.status = Status.Wait;
        this.targetWindow = undefined;
        this.source = undefined;
    }

    // auth,可以还有origin等的认证
    auth(authKey): boolean {
        if (this.status === Status.Wait) {
            return false;


Player({
      name: 'IveBeenWaitingHereSinceLaunchWtf',
      searchIterations: 5000,
    })

    expect(
      DEFAULT_MATCH_CHOOSER(1, player, [
        waitingABitOpponent,
        justJoinedOpponent,
        dyingOfOldAgeOpponent,
      ]),
    ).toEqual([[player], [dyingOfOldAgeOpponent]])
  })

  test('1v1 - should pick the opponent with the closest rating', () => {
    const player = createPlayer({ rating: 1700 })
    const kindaFar = createPlayer({ name: 'ThirteenHundred', rating: 1300 })
    const gettingWarmer = createPlayer({ name: 'WarmPerson', rating: 1600 })
    const pickThis = createPlayer({ name: 'PickMePickMe', rating: 1730 })

    expect(DEFAULT_MATCH_CHOOSER(1, player, [kindaFar, gettingWarmer, pickThis])).toEqual([
      [player],
      [pickThis],
    ])
  })

  test('1v1 - should pick randomly among the remaining opponents', () => {
    const player = createPlayer({ rating: 1700 })
    const kindaFar = createPlayer({ name: 'ThirteenHundred', rating: 1300 })
    const pickThis = createPlayer({ name: 'PickMe', rating: 1670 })
    const orThis = createPlayer({ name: 'OrMe', rating: 1730 })

    expect(DEFAULT_MATCH_CHOOSER(1, player, [kindaFar, pickThis, orThis])).toMatchInlineSnapshot(`
      [
        [
          "PLAYER 1 'tec27' @ 1700 mmr",
        ],
        [
          "PLAYER 3 'PickMe' @ 1670 mmr",
        ],
      ]
    `)
  })

  test('2v2 - should return the only opponents option if there are just enough', () => {
    const player = createPlayer()
    const p1 = createPlayer({ name: 'ReallyBadDude' })
    const p2 = createPlayer({ name: 'ReallyBadDude2' })
    const p3 = createPlayer({ name: 'ReallyBadDude3' })

    expect(DEFAULT_MATCH_CHOOSER(2, player, [p1, p2, p3])).toMatchInlineSnapshot(`
      [
        [
          "PLAYER 1 'tec27' @ 1500 mmr",
          "PLAYER 3 'ReallyBadDude2' @ 1500 mmr",
        ],
        [
          "PLAYER 4 'ReallyBadDude3' @ 1500 mmr",
          "PLAYER 2 'ReallyBadDude' @ 1500 mmr",
        ],
      ]
    `)
  })

  test('2v2 - should return a random set of players if there are a lot that match', () => {
    const player = createPlayer()
    const p1 = createPlayer({ name: 'ReallyBadDude' })
    const p2 = createPlayer({ name: 'ReallyBadDude2' })
    const p3 = createPlayer({ name: 'ReallyBadDude3' })
    const p4 = createPlayer({ name: 'ReallyBadDude4' })
    const p5 = createPlayer({ name: 'ReallyBadDude5' })
    const p6 = createPlayer({ name: 'ReallyBadDude6' })
    const p7 = createPlayer({ name: 'ReallyBadDude7' })
    const p8 = createPlayer({ name: 'ReallyBadDude8' })

    expect(DEFAULT_MATCH_CHOOSER(2, player, [p1, p2, p3, p4, p5, p6, p7, p8]))
      .toMatchInlineSnapshot(`
      [
        [
          "PLAYER 1 'tec27' @ 1500 mmr",
          "PLAYER 5 'ReallyBadDude4' @ 1500 mmr",
        ],
        [
          "PLAYER 4 'ReallyBadDude3' @ 1500 mmr",
          "PLAYER 2 'ReallyBadDude' @ 1500 mmr",
        ],
      ]
    `)
  })

  test('2v2 - should find the optimal team arrangement for a set of players', () => {
    const player = createPlayer({ rating: 2000, interval: { low: 1000, high: 3000 } })
    const lowSkill =


></g></svg>';
  static const String clipboard_list_twotone =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path fill="none" d="M6 4H10V6H14V4H18V20H6V4Z"><animate fill="freeze" attributeName="fill-opacity" begin="1.6s" dur="0.15s" values="0;0.3"/></path><g fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><g stroke-width="2"><path stroke-dasharray="66" stroke-dashoffset="66" d="M12 3H19V21H5V3H12Z"><animate fill="freeze" attributeName="stroke-dashoffset" dur="0.6s" values="66;0"/></path><path stroke-dasharray="5" stroke-dashoffset="5" d="M9 10H12"><animate fill="freeze" attributeName="stroke-dashoffset" begin="1s" dur="0.2s" values="5;0"/></path><path stroke-dasharray="6" stroke-dashoffset="6" d="M9 13H14"><animate fill="freeze" attributeName="stroke-dashoffset" begin="1.2s" dur="0.2s" values="6;0"/></path><path stroke-dasharray="7" stroke-dashoffset="7" d="M9 16H15"><animate fill="freeze" attributeName="stroke-dashoffset" begin="1.4s" dur="0.2s" values="7;0"/></path></g><path stroke-dasharray="12" stroke-dashoffset="12" d="M14.5 3.5V6.5H9.5V3.5"><animate fill="freeze" attributeName="stroke-dashoffset" begin="0.7s" dur="0.2s" values="12;0"/></path></g></svg>';
  static const String clipboard_minus =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><g fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><g stroke-width="2"><path stroke-dasharray="66" stroke-dashoffset="66" d="M12 3H19V21H5V3H12Z"><animate fill="freeze" attributeName="stroke-dashoffset" dur="0.6s" values="66;0"/></path><path stroke-dasharray="8" stroke-dashoffset="8" d="M9 13H15"><animate fill="freeze" attributeName="stroke-dashoffset" begin="1s" dur="0.2s" values="8;0"/></path></g><path stroke-dasharray="12" stroke-dashoffset="12" d="M14.5 3.5V6.5H9.5V3.5"><animate fill="freeze" attributeName="stroke-dashoffset" begin="0.7s" dur="0.2s" values="12;0"/></path></g></svg>';
  static const String clipboard_minus_twotone =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path fill="none" d="M6 4H10V6H14V4H18V20H6V4Z"><animate fill="freeze" attributeName="fill-opacity" begin="1.2s" dur="0.15s" values="0;0.3"/></path><g fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><g stroke-width="2"><path stroke-dasharray="66"


v01=%ymm7,<v01=%ymm7
vpsrlq $4, % ymm7, % ymm7

# qhasm: x1 = v00 | v10
# asm 1: vpor  <v00=reg256#11,<v10=reg256#16,>x1=reg256#11
# asm 2: vpor  <v00=%ymm10,<v10=%ymm15,>x1=%ymm10
vpor  % ymm10, % ymm15, % ymm10

# qhasm: x5 = v01 | v11
# asm 1: vpor  <v01=reg256#8,<v11=reg256#12,>x5=reg256#8
# asm 2: vpor  <v01=%ymm7,<v11=%ymm11,>x5=%ymm7
vpor  % ymm7, % ymm11, % ymm7

# qhasm: v00 = x2 & mask0
# asm 1: vpand <x2=reg256#9,<mask0=reg256#1,>v00=reg256#12
# asm 2: vpand <x2=%ymm8,<mask0=%ymm0,>v00=%ymm11
vpand % ymm8, % ymm0, % ymm11

# qhasm: v10 = x6 & mask0
# asm 1: vpand <x6=reg256#13,<mask0=reg256#1,>v10=reg256#16
# asm 2: vpand <x6=%ymm12,<mask0=%ymm0,>v10=%ymm15
vpand % ymm12, % ymm0, % ymm15

# qhasm: 4x v10 <<= 4
# asm 1: vpsllq $4,<v10=reg256#16,<v10=reg256#16
# asm 2: vpsllq $4,<v10=%ymm15,<v10=%ymm15
vpsllq $4, % ymm15, % ymm15

# qhasm: v01 = x2 & mask1
# asm 1: vpand <x2=reg256#9,<mask1=reg256#2,>v01=reg256#9
# asm 2: vpand <x2=%ymm8,<mask1=%ymm1,>v01=%ymm8
vpand % ymm8, % ymm1, % ymm8

# qhasm: v11 = x6 & mask1
# asm 1: vpand <x6=reg256#13,<mask1=reg256#2,>v11=reg256#13
# asm 2: vpand <x6=%ymm12,<mask1=%ymm1,>v11=%ymm12
vpand % ymm12, % ymm1, % ymm12

# qhasm: 4x v01 unsigned>>= 4
# asm 1: vpsrlq $4,<v01=reg256#9,<v01=reg256#9
# asm 2: vpsrlq $4,<v01=%ymm8,<v01=%ymm8
vpsrlq $4, % ymm8, % ymm8

# qhasm: x2 = v00 | v10
# asm 1: vpor  <v00=reg256#12,<v10=reg256#16,>x2=reg256#12
# asm 2: vpor  <v00=%ymm11,<v10=%ymm15,>x2=%ymm11
vpor  % ymm11, % ymm15, % ymm11

# qhasm: x6 = v01 | v11
# asm 1: vpor  <v01=reg256#9,<v11=reg256#13,>x6=reg256#9
# asm 2: vpor  <v01=%ymm8,<v11=%ymm12,>x6=%ymm8
vpor  % ymm8, % ymm12, % ymm8

#


ader)
  {
    mutex = g_conn_table->arr[KeepAliveConnTable::ip_hash(xip)].mutex;

    ats_ip_copy(&ip, &xip);
    buf = xbuf;
    reader = xreader;

    SET_HANDLER(&KeepAliveLockHandler::handleEvent);
    this_ethread()->schedule_in(this, HRTIME_MSECONDS(10));
  }

  ~KeepAliveLockHandler() {
    mutex = NULL;
  }

  int handleEvent(int event, void *data);

  IpEndpoint ip;
  MIOBuffer *buf;
  IOBufferReader *reader;
};

#define TS_ReadConfigInteger            REC_ReadConfigInteger
#define TS_ReadConfigString             REC_ReadConfigString
#define TS_EstablishStaticConfigInteger REC_EstablishStaticConfigInteger
#define TS_RegisterConfigUpdateFunc     REC_RegisterConfigUpdateFunc
#define TS_ReadConfigStringAlloc        REC_ReadConfigStringAlloc
#define TS_ConfigReadInteger            REC_ConfigReadInteger
#define TS_ConfigReadString             REC_ConfigReadString

#endif // PREFETCH

#endif // _PREFETCH_H_


requireNonNull(input9));
  }

  /**
   * Returns a copy of this instance that will accept the provided {@link Producer} as its tenth
   * input.
   *
   * @param input10 the input to use
   * @return a copy of this instance that will accept the specified input
   */
  protected S withInput10(Producer<? extends J> input10) {
    return clone(c -> c._input10 = Objects.requireNonNull(input10));
  }

  protected abstract class InternalAPI extends AbstractTransformer<R, IF, S>.InternalAPI implements
      Transformer10InternalAPI<A, B, C, D, E, F, G, H, I, J, R, S> {
    @Override
    public Producer<? extends A> getInput1() {
      return AbstractTransformer10.this.getInput1();
    }

    @Override
    public Producer<? extends B> getInput2() {
      return AbstractTransformer10.this.getInput2();
    }

    @Override
    public Producer<? extends C> getInput3() {
      return AbstractTransformer10.this.getInput3();
    }

    @Override
    public Producer<? extends D> getInput4() {
      return AbstractTransformer10.this.getInput4();
    }

    @Override
    public Producer<? extends E> getInput5() {
      return AbstractTransformer10.this.getInput5();
    }

    @Override
    public Producer<? extends F> getInput6() {
      return AbstractTransformer10.this.getInput6();
    }

    @Override
    public Producer<? extends G> getInput7() {
      return AbstractTransformer10.this.getInput7();
    }

    @Override
    public Producer<? extends H> getInput8() {
      return AbstractTransformer10.this.getInput8();
    }

    @Override
    public Producer<? extends I> getInput9() {
      return AbstractTransformer10.this.getInput9();
    }

    @Override
    public Producer<? extends J> getInput10() {
      return AbstractTransformer10.this.getInput10();
    }

    @Override
    public S withInputs(Producer<? extends A> input1, Producer<? extends B> input2, Producer<? extends C> input3,
        Producer<? extends D> input4, Producer<? extends E> input5, Producer<? extends F> input6,
        Producer<? extends G> input7, Producer<? extends H> input8, Producer<? extends I> input9,
        Producer<? extends J> input10) {
      return AbstractTransformer10.this.withAllInputs(input1, input2, input3, input4, input5, input6, input7, input8,
          input9, input10);
    }

    @Override
    public List<Producer<?>> getInputList() {
      return AbstractTransformer10.this.getInputList();
    }
  }
}
// AUTOGENERATED CODE.  DO NOT MODIFY DIRECTLY!  Instead, please modify the transformer/AbstractPreparedTransformerX.ftl file.
// See the README in the module's src/template directory for details.
package com.linkedin.dagli.transformer;

import com.linkedin.dagli.producer.Producer;
import com.linkedin.dagli.transformer.internal.PreparedTransformer5InternalAPI;

/**
 * Base class for prepared transformers of arity 5 that do not cache temporary data during execution and do not
 * minibatch their inputs (transformers that do so should instead derive from
 * {@link AbstractPreparedStatefulTransformer5}.)
 *
 * @param <A> the type of the first input to the transformer
 * @param <B> the type of the second input to the transformer
 * @param <C> the type of the third input to the transformer
 * @param <D> the type of the fourth input to the transformer
 * @param <E> the type of the fifth input


ordvar:
//										(lilv+numinit)->ofs=-1;
										break;
									default:
										if(PossiblePush()){
											(lilv+numinit)->size=loop;
											(lilv+numinit)->rec=lrec;
										}
										break;
								}
							}
							(lilv+numinit)->ofs=SizeBackBuf;
							AddBackBuf(binptr,bcha);
//							if(bufrm)puts(bufrm);
						}
						numinit++;
						if(numinit==maxlocvar){
							maxlocvar+=MAXLOCVAR;
							lilv=(LILV *)REALLOC(lilv,maxlocvar*sizeof(LILV));
						}
						lrec->rec.recnumber=-lrec->rec.recnumber-Align(loop,(am32==FALSE?2:4));
					}
				}
				if(localsize)localsize=Align(localsize,(am32==FALSE?2:4));
			}while(tok==tk_camma);
			seminext();
		}
		else{
			numinit++;
			if(numinit==maxlocvar){
				maxlocvar+=MAXLOCVAR;
				lilv=(LILV *)REALLOC(lilv,maxlocvar*sizeof(LILV));
			}
		}
		flag=0;
//		printf("tok=%d %s\n",tok,BackTextBlock);
	}while(tok!=tk_openbrace&&tok!=tk_eof);
}

int CheckDeclareProc()
{
unsigned int i=inptr2-1;
	while(input[i]!='('){
		i++;
		if(i>=endinptr){
			unexpectedeof();
			break;
		}
	}
lab1:
	i++;
	for(int j=1;j!=0;i++){
		char c=input[i];
		if(c=='(')j++;
		else if(c==')')j--;
		if(i>=endinptr){
			unexpectedeof();
			break;
		}
	}
	for(;;i++){
		if(input[i]=='(')goto lab1;
		if(input[i]>' ')break;
		if(i>=endinptr){
			unexpectedeof();
			break;
		}
	}

	for(;;i++){
		if(input[i]==';'||input[i]==',')return TRUE;	// 楤
		if(input[i]>' ')break;
		if(i>=endinptr){
			unexpectedeof();
			break;
		}
	}
	return FALSE;
}

void IsUses(idrec *rec)
{
int i;
	if(tok==tk_openbracket&&stricmp(itok2.name,"uses")==0){
		nexttok();
		i=0;
		nexttok();
		while(tok==tk_reg32||tok==tk_reg||tok==tk_beg){
			if(tok==tk_beg&&itok.number>3)itok.number-=4;
			i=i|(1<<itok.number);
			nexttok();
			if(tok==tk_camma)nexttok();
		}
		if(strcmp(itok.name,"allregs")==0){
			i=256;
			nexttok();
		}
		rec->recpost=0xFF^i;
		expecting(tk_closebracket);
	}
}

void declare_procedure(int oflag,int orm,int npointr)
{
int i,next=TRUE,j;
char pname[IDLENGTH];
idrec *rec;
	strcpy(pname,itok.name);
	param[0]=0;
	nexttok();
	if(npointr)expecting(tk_closebracket);
	expecting(tk_openbracket);
	if((oflag&f_typeproc)==tp_fastcall)declareparamreg();
	else declareparamstack();
	if(tok2==tk_assign)nexttok();
	itok.post=1;
	if(npointr){
		itok.segm=DS;
		itok.type=tk_proc;
		itok.sib=am32==FALSE?rm_d16:rm_d32;
		i=2;


ln(
        """aww yeah, about to render...
        | seed = $seed
        | scaleOne = $scaleOne
        | scaleTwo = $scaleTwo
        | scaleThree = $scaleThree
        | influenceOne = ${influenceOne.first}, ${influenceOne.second}
        | influenceTwo = ${influenceTwo.first}, ${influenceTwo.second}
        | influenceThree = ${influenceThree.first}, ${influenceThree.second}
        | noiseMapScaleOne = $noiseMapScaleOne
        | noiseMapScaleTwo = $noiseMapScaleTwo
        | noiseMapScaleThree = $noiseMapScaleThree
      """.trimMargin()
      )

      /******************************
       *
       * Drawing
       *
       *******************************/
      drawer.clear(bg)
      drawer.fill = null
      drawer.stroke = null
      drawer.lineCap = LineCap.ROUND

      // interior contours
      colorContours.chunked(50).forEach { ccs ->
        drawer.strokeWeight = random(strokeWeightRange.first, strokeWeightRange.second, rand)
        ccs.forEach { cc ->
          drawer.stroke = cc.color
          drawer.contour(cc.contour)
        }
      }

      // set seed for next iteration
      seed = random(1.0, Int.MAX_VALUE.toDouble()).toLong()
      screenshots.append = "seed-$seed"
    }
  }
}
/**
 * Flow field template
 * ===================
 * It turns out I like flow fields a lot.
 * Some people call these particle flows or particle fields or other things.
 * Those all make sense, because essentially it is the result of tracing a point
 * in space over time as it moves through some vector field.
 * I still call it flow field because I learned the technique from the inimitable Tyler Hobbes
 * and he uses the term "flow field", so I shall do the same.
 *
 * This is a dead simple implementation which is meant to be extended,
 * but shows the basic mechanics of drawing a flow field.
 */
package sketch.flow

import extensions.CustomScreenshots
import noise.curl
import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.LineCap
import org.openrndr.extra.noise.random
import org.openrndr.extra.noise.simplex
import org.openrndr.math.Vector2
import org.openrndr.shape.ShapeContour
import org.openrndr.shape.contour
import util.grid
import util.timestamp
import kotlin.random.Random

fun main() = application {
  configure {
    width = 800
    height = 800
  }

  program {
    // Seed is the basis for all our randomization, because it is used to create a seeded RNG (Random(seed))
    var seed = random(0.0, Int.MAX_VALUE.toDouble()).toInt()
    println("seed = $seed")
    val progName = this.name.ifBlank { this.window.title.ifBlank { "my-amazing-drawing" } }
    val screenshots = extend(CustomScreenshots()) {
      quitAfterScreenshot = false
      scale = 3.0
      captureEveryFrame = false
      name = "screenshots/$progName/${timestamp()}-seed-$seed.png"
    }

    backgroundColor = ColorRGBa.WHITE

    val rand = Random(seed)

    // a few properties for the sketch;
    // These don't need to be declared separately but it's nice to have them in one place for tweakability
    val stepSize = 5
    val jitter = stepSize * 0.7
    val lineLength = 100
    val opacity = 0.05
    val bounds = width / 2
    val noiseScale = 650.0

    // This can be any function that returns a vector2, to determine where the line goes next
    fun nextPosition(cursor: Vector2): Vector2 {
      // This is the most classic flow field implementation, but not terribly exciting
      //


   }
        return false
    }

    /**
     * 繪製選中背景
     */
    override fun drawSelectedBg(canvas: Canvas?) {
        if (selectedDateItem?.date?.type == DateInfo.DateType.CURRENT) {
            // 本月份的日子才繪製高亮
            if (startDateItem != null && endDateItem != null) {
                selectedPaint.color = viewAttrs.selectedBgColor
                canvas?.drawRoundRect(startDateItem!!.clickBounds.left, startDateItem!!.clickBounds.top,
                    endDateItem!!.clickBounds.right, endDateItem!!.clickBounds.bottom, roundCorners, roundCorners, selectedPaint)
            }
        }
    }

    /**
     * 選取日期，WeekCalendarView.onDateSelected()，再呼叫本類別的 updateByDateSelected
     */
    override fun onDateSelected(selectedDateItem: DateItem, changeMonth: Boolean, monthPosition: Int) {
        calcStartAndEndDate(selectedDateItem)
        super.onDateSelected(selectedDateItem, changeMonth, monthPosition)
    }

    /**
     * 選取的日期是所在的星期，取得該星期的起始和結束日期
     */
    private fun calcStartAndEndDate(selectedDateItem: DateItem) {
        weekMap.values.filter {
            it.contains(selectedDateItem)
        }.let {
            this.weekDateItemList = it[0]
            this.weekDateItemList?.let { dateItemList ->
                if (dateItemList.isNotEmpty()) {
                    this.startDateItem = dateItemList[0]
                    this.endDateItem = dateItemList[dateItemList.size - 1]
                }
            }
        }
    }

    /**
     * 根據選中的日期，更新介面
     */
    override fun updateByDateSelected(isCurrentMonth: Boolean, dateInfo: DateInfo) {
        super.updateByDateSelected(isCurrentMonth, dateInfo)
        if (isCurrentMonth) {
            selectedDateItem?.let {
                calcStartAndEndDate(it)
            }
        } else {
            selectedDate = null
            selectedDateItem = null
            startDateItem = null
            endDateItem = null
            weekDateItemList = null
        }
    }
}package com.yogi.stagenativeapp

import android.os.Bundle
import android.view.Gravity
import android.widget.FrameLayout
import com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import com.google.android.material.snackbar.BaseTransientBottomBar
import com.google.android.material.snackbar.Snackbar
import com.yogi.stagenativeapp.databinding.ActivityMainBinding
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        installSplashScreen()
        super.onCreate(savedInstanceState)

        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val navView: BottomNavigationView = binding.navView

        val navController = findNavController(R.id.nav_host_fragment_activity_main)
        navView.setupWithNavController(nav


if page_so_far[2] != Scaled::ZERO {
        t_print!(" plus {}", page_so_far[2]);
    }
    if page_so_far[3] != Scaled::ZERO {
        t_print!(" plus {}fil", page_so_far[3]);
    }
    if page_so_far[4] != Scaled::ZERO {
        t_print!(" plus {}fill", page_so_far[4]);
    }
    if page_so_far[5] != Scaled::ZERO {
        t_print!(" plus {}filll", page_so_far[5]);
    }
    if page_so_far[6] != Scaled::ZERO {
        t_print!(" minus {}", page_so_far[6]);
    };
}
pub(crate) unsafe fn box_error(n: u8) {
    error();
    diagnostic(true, || {
        t_print_nl!("The following box has been deleted:");
        show_box(get_box_reg(n as usize));
    });
    flush_node_list(get_box_reg(n as usize));
    set_box_reg(n as usize, None);
}
pub(crate) unsafe fn app_space() {
    let q;
    if cur_list.aux.b32.s0 >= 2000 && get_glue_par(GluePar::xspace_skip).ptr() != 0 {
        q = new_param_glue(GluePar::xspace_skip)
    } else {
        let main_p = if get_glue_par(GluePar::space_skip).ptr() != 0 {
            get_glue_par(GluePar::space_skip)
        } else {
            /*1077: */
            FONT_GLUE[EQTB[CUR_FONT_LOC].val as usize]
                .opt()
                .map(GlueSpec)
                .unwrap_or_else(|| {
                    /*:1079 */
                    let mut main_p = new_spec(&ZERO_GLUE);
                    main_k = PARAM_BASE[EQTB[CUR_FONT_LOC].val as usize] + 2;
                    main_p
                        .set_size(Scaled(FONT_INFO[main_k as usize].b32.s1))
                        .set_stretch(Scaled(FONT_INFO[(main_k + 1) as usize].b32.s1))
                        .set_shrink(Scaled(FONT_INFO[(main_k + 2) as usize].b32.s1));
                    FONT_GLUE[EQTB[CUR_FONT_LOC].val as usize] = Some(main_p.ptr()).tex_int();
                    main_p
                })
        };
        let mut main_p = new_spec(&main_p);
        if cur_list.aux.b32.s0 >= 2000 {
            main_p.set_size(
                main_p.size()
                    + Scaled(
                        FONT_INFO[(EXTRA_SPACE_CODE + PARAM_BASE[EQTB[CUR_FONT_LOC].val as usize])
                            as usize]
                            .b32
                            .s1,
                    ),
            );
        }
        main_p.set_stretch(xn_over_d(main_p.stretch(), Scaled(cur_list.aux.b32.s0), 1000).0);
        main_p.set_shrink(xn_over_d(main_p.shrink(), Scaled(1000), cur_list.aux.b32.s0).0);
        q = new_glue(&main_p);
        main_p.rc_set_none();
    }
    *LLIST_link(cur_list.tail) = Some(q.ptr()).tex_int();
    cur_list.tail = q.ptr();
}
pub(crate) unsafe fn insert_dollar_sign(input: &mut input_state_t, tok: i32) {
    back_input(input, to


	}
	return r, nil
}

// GroupInfo holds information about the group.
type GroupInfo struct {
	MinIndex  int   // index of the first file in the group, including head
	MaxIndex  int   // index of the last file in the group, including head
	TotalSize int64 // total size of the group
	HeadSize  int64 // size of the head
}

// Returns info after scanning all files in g.Head's dir.
func (g *Group) ReadGroupInfo() GroupInfo {
	g.mtx.Lock()
	defer g.mtx.Unlock()
	return g.readGroupInfo()
}

// Index includes the head.
// CONTRACT: caller should have called g.mtx.Lock
func (g *Group) readGroupInfo() GroupInfo {
	groupDir := filepath.Dir(g.Head.Path)
	headBase := filepath.Base(g.Head.Path)
	minIndex, maxIndex := -1, -1
	var totalSize, headSize int64 = 0, 0

	dir, err := os.Open(groupDir)
	if err != nil {
		panic(err)
	}
	defer dir.Close()
	fiz, err := dir.Readdir(0)
	if err != nil {
		panic(err)
	}

	// For each file in the directory, filter by pattern
	for _, fileInfo := range fiz {
		fileName := fileInfo.Name()
		fileSize := fileInfo.Size()
		totalSize += fileSize

		if fileName == headBase {
			headSize = fileSize
			continue
		}

		if !strings.HasPrefix(fileName, headBase) {
			continue
		}

		submatch := indexedFilePattern.FindStringSubmatch(fileName)
		if len(submatch) == 2 {
			fileIndex, err := strconv.Atoi(submatch[1])
			if err != nil {
				panic(err)
			}
			if fileIndex > maxIndex {
				maxIndex = fileIndex
			}
			if minIndex == -1 || fileIndex < minIndex {
				minIndex = fileIndex
			}
		}
	}
	// Now account for the head.
	if minIndex == -1 {
		// If there were no numbered files,
		// then the head is index 0.
		minIndex, maxIndex = 0, 0
	} else {
		// Otherwise, the head file is 1 greater
		maxIndex++
	}
	return GroupInfo{minIndex, maxIndex, totalSize, headSize}
}

func filePathForIndex(headPath string, index int, maxIndex int) string {
	if index == maxIndex {
		return headPath
	}
	return fmt.Sprintf("%v.%03d", headPath, index)
}

//--------------------------------------------------------------------------------

// GroupReader provides an interface for reading from a Group.
type GroupReader struct {
	*Group
	mtx       sync.Mutex
	curIndex  int
	curFile   *os.File
	curReader *bufio.Reader
	curLine   []byte
}

func newGroupReader(g *Group) *GroupReader {
	return &GroupReader{
		Group:     g,
		curIndex:  0,
		curFile:   nil,
		curReader: nil,
		curLine:   nil,
	}
}

// Close closes the GroupReader by closing the cursor file.
func (gr *GroupReader) Close() error {
	gr.mtx.Lock()
	defer gr.mtx.Unlock()

	if gr.curReader != nil {
		err := gr.curFile.Close()
		gr.curIndex = 0
		gr.curReader = nil
		gr.curFile = nil
		gr.curLine = nil
		return err
	}
	return nil
}

// Read implements io.Reader, reading bytes from the current Reader
// incrementing index until enough bytes are read.
func (gr *GroupReader) Read(p []byte) (n int, err error) {


 poor job of generating nested
// control-flow expressions.
/*member: range2:function(i) {
  var t1;
  if (!(64 <= i && i <= 90))
    t1 = 97 <= i && i <= 122;
  else
    t1 = true;
  if (t1)
    A.print("letter");
}*/
void range2(int i) {
  if ((64 <= i && i <= 90) || (97 <= i && i <= 122)) print('letter');
}

// This could be a lot better. codegen does a poor job of generating nested
// control-flow expressions.
/*member: range3:function(i, j) {
  var t1;
  if (i === 1 || i === 11)
    t1 = j === 1 || j === 11;
  else
    t1 = false;
  if (t1)
    A.print("yes");
}*/
void range3(int i, int j) {
  if ((i == 1 || i == 11) && (j == 1 || j == 11)) print('yes');
}

/*member: constantFoldedControlFlow1:function(a, b) {
  var t1;
  if (a)
    t1 = b;
  else
    t1 = false;
  return t1;
}*/
bool constantFoldedControlFlow1(bool a, bool b) {
  return a && 1 == 1 && b;
}

/*member: constantFoldedControlFlow2:function(a, b) {
  var t1 = false;
  if (a)
    t1 = b;
  return t1;
}*/
bool constantFoldedControlFlow2(bool a, bool b) {
  return 1 == 1 && a && 2 == 2 && b && 3 == 3;
}

@pragma('dart2js:disable-inlining')
/*member: main:ignore*/
main() {
  for (final v1 in [false, true]) {
    constantFoldedControlFlow3(v1);
    constantFoldedControlFlow4(v1);
    for (final v2 in [false, true]) {
      print(and2v1(v1, v2));
      print(and2v2(v1, v2));
      print(and2v3(v1, v2));
      print(or2v1(v1, v2));
      print(or2v2(v1, v2));
      print(or2v3(v1, v2));

      constantFoldedControlFlow1(v1, v2);
      constantFoldedControlFlow2(v1, v2);

      for (final v3 in [false, true]) {
        print(and3(v1, v2, v3));
        print(or3(v1, v2, v3));
        orGvn(v1, v2, v3);
      }
    }
  }

  for (int i = -100; i < 100; i++) {
    range1(i);
    range2(i);
    range3(i, i);
    noopAnd(i, 0 - i, i & 15);
    noopOr(i);
  }
}
// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/*member: main:ignore*/
void main() {
  final x1 = XX();
  x1.foo = 100;
  x1.bar = 200;
  x1.useFoo();
  x1.useBar();
}

class XX {
  late int foo;
  late final int bar;

  @pragma('dart2js:noInline')
  /*member: XX.useFoo:function() {
  var t2, t3, t4, t5, _this = this,
    t1 = _this.__XX_foo_A;
  t1 === $ && A.throwLateFieldNI("foo");
  t2 = _this.effect$0();
  t3 = _th


#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "Core/Inquirer.h"
#include <QFrame>
#include <QLabel>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void on_LaunchButton_clicked();
    void on_actionAbout_triggered();
    void on_actionOptions_triggered();
    void on_actionStatistics_triggered();
    void on_actionReport_Bugs_triggered();
    void fetchdata();
    void onChooseImageBoxTriggered(Item *item);
    void on_comboBox_language_activated(int index);

private:
    Ui::MainWindow *ui;
    QTimer *timer;
    Inquirer *inquirer;
    QFrame *ItemPane;
    void updateStatPane();
    void updateItemPane();
    void refreshItemPane(ImageList *roomImgs, ImageList *playerImgs, bool roomListChanged);
    ItemList *lastRoomItems;
    ItemList *lastPlayerItems;
    void updateStatusBar(QString text);
    void report_error(QString text);
    QTranslator *translators[2];
    int language;
    QSettings *settings;
    void resetChoosingItem();
    void saveSettings();
    void loadSettings();
    bool launchFromSteam;
    QString launchPath;
};

#endif // MAINWINDOW_H


] = "Guerrera de Bailavientos",
[60302] = "Bufas de Bailavientos",
[60303] = "Protegecabezas cargado de relámpago",
[60304] = "Guerrera cargada de relámpago",
[60305] = "Musleras cargadas de relámpago",
[60306] = "Bufas cargadas de relámpago",
[60307] = "Guantes cargados de relámpago",
[60308] = "Visera de los elementos enfurecidos",
[60309] = "Guerrera de los elementos enfurecidos",
[60310] = "Ataduras de los elementos enfurecidos",
[60311] = "Manto de los elementos enfurecidos",
[60312] = "Manijas de los elementos enfurecidos",
[60313] = "Camisote de los elementos enfurecidos",
[60314] = "Guantes de los elementos enfurecidos",
[60315] = "Celada de los elementos enfurecidos",
[60316] = "Falda de los elementos enfurecidos",
[60317] = "Jinetas de los elementos enfurecidos",
[60318] = "Loriga de los elementos enfurecidos",
[60319] = "Mandiletes de los elementos enfurecidos",
[60320] = "Casco de los elementos enfurecidos",
[60321] = "Musleras de los elementos enfurecidos",
[60322] = "Bufas de los elementos enfurecidos",
[60323] = "Placa de batalla terránea",
[60324] = "Quijotes terráneos",
[60325] = "Casco terráneo",
[60326] = "Guanteletes terráneos",
[60327] = "Espaldares terráneos",
[60328] = "Visera terránea",
[60329] = "Coselete terráneo",
[60330] = "Musleras terráneas",
[60331] = "Guardahombros terráneos",
[60332] = "Manoplas terráneas",
[60333] = "Núcleo de tolvanera",
[60334] = "Cerebro de oso negro",
[60335] = "Paquete de pellejo grueso",
[60336] = "Calavera de oso estropeada",
[60337] = "Mugre del Río Verrall",
[60338] = "Espada reconstruida",
[60339] = "Placa de batalla de placas de magma",
[60340] = "Guanteletes de placas de magma",
[60341] = "Yelmo de placas de magma",
[60342] = "Quijotes de placas de magma",
[60343] = "Espaldares de placas de magma",
[60344] = "Placa de batalla de zafirium reforzado",
[60345] = "Guanteletes de zafirium reforzado",
[60346] = "Casco de zafirium reforzado",
[60347] = "Quijotes de zafirium reforzado",
[60348] = "Espaldares de zafirium reforzado",
[60349] = "Coselete de placas de magma",
[60350] = "Manoplas de placas de magma",
[60351] = "Visera de placas de magma",
[60352] = "Musleras de placas de magma",
[60353] = "Guardahombros de placas de magma",
[60354] = "Coselete de zafirium reforzado",
[60355] = "Manoplas de zafirium reforzado",
[60356] = "Visera


_last_hw_keepalive);

/**
 * watchdog_dev_init - init dev part of watchdog core
 *
 * Allocate a range of chardev nodes to use for watchdog devices.
 *
 * Return: 0 if successful, error otherwise.
 */
int __init watchdog_dev_init(void)
{
	int err;

	watchdog_kworker = kthread_create_worker(0, "watchdogd");
	if (IS_ERR(watchdog_kworker)) {
		pr_err("Failed to create watchdog kworker\n");
		return PTR_ERR(watchdog_kworker);
	}
	sched_set_fifo(watchdog_kworker->task);

	err = class_register(&watchdog_class);
	if (err < 0) {
		pr_err("couldn't register class\n");
		goto err_register;
	}

	err = alloc_chrdev_region(&watchdog_devt, 0, MAX_DOGS, "watchdog");
	if (err < 0) {
		pr_err("watchdog: unable to allocate char dev region\n");
		goto err_alloc;
	}

	return 0;

err_alloc:
	class_unregister(&watchdog_class);
err_register:
	kthread_destroy_worker(watchdog_kworker);
	return err;
}

/**
 * watchdog_dev_exit - exit dev part of watchdog core
 *
 * Release the range of chardev nodes used for watchdog devices.
 */
void __exit watchdog_dev_exit(void)
{
	unregister_chrdev_region(watchdog_devt, MAX_DOGS);
	class_unregister(&watchdog_class);
	kthread_destroy_worker(watchdog_kworker);
}

int watchdog_dev_suspend(struct watchdog_device *wdd)
{
	struct watchdog_core_data *wd_data = wdd->wd_data;
	int ret = 0;

	if (!wdd->wd_data)
		return -ENODEV;

	/* ping for the last time before suspend */
	mutex_lock(&wd_data->lock);
	if (watchdog_worker_should_ping(wd_data))
		ret = __watchdog_ping(wd_data->wdd);
	mutex_unlock(&wd_data->lock);

	if (ret)
		return ret;

	/*
	 * make sure that watchdog worker will not kick in when the wdog is
	 * suspended
	 */
	hrtimer_cancel(&wd_data->timer);
	kthread_cancel_work_sync(&wd_data->work);

	return 0;
}

int watchdog_dev_resume(struct watchdog_device *wdd)
{
	struct watchdog_core_data *wd_data = wdd->wd_data;
	int ret = 0;

	if (!wdd->wd_data)
		return -ENODEV;

	/*
	 * __watchdog_ping will also retrigger hrtimer and therefore restore the
	 * ping worker if needed.
	 */
	mutex_lock(&wd_data->lock);
	if (watchdog_worker_should_ping(wd_data))
		ret = __watchdog_ping(wd_data->wdd);
	mutex_unlock(&wd_data->lock);

	return ret;
}

module_param(handle_boot_enabled, bool, 0444);
MODULE_PARM_DESC(handle_boot_enabled,
	"Watchdog core auto-updates boot enabled watchdogs before userspace takes over (default="
	__MODULE_STRING(IS_ENABLED(CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED)) ")");

module_param(open_timeout, uint, 0644);
MODULE_PARM_DESC(open_timeout,
	"Maximum time (in seconds, 0 means infinity) for userspace to take over a running watchdog (default="
	__MODULE_STRING(CONFIG_WATCHDOG_OPEN_TIMEOUT) ")");


/*
  Copyright 2014 Google Inc.

  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.
*/

#ifndef GOOPY_IMM_DEBUG_H__
#define GOOPY_IMM_DEBUG_H__

#include <string>
#include "base/basictypes.h"

namespace ime_goopy {
namespace imm {
class Debug {
 public:
  static wstring GCS_String(DWORD value);
  static wstring IMN_String(DWORD value);
  static wstring ISC_String(DWORD value);
  static wstring IMC_String(DWORD value);
  static wstring IME_SYSINFO_String(DWORD value);
  static wstring IME_CONFIG_String(DWORD value);
  static wstring NI_String(DWORD value);
  static wstring CPS_String(DWORD value);
  static wstring IME_ESC_String(DWORD value);
};
}  // namespace imm
}  // namespace ime_goopy
#endif  // GOOPY_IMM_DEBUG_H__


t);
  });
});

test("BattleResult以外はパースできない", () => {
  const data = {
    type: "NormalHit",
    damaged: 2300,
  };
  expect(() => BattleResultSchema.parse(data)).toThrow();
});
import { expect } from 'chai';
import * as _ from 'lodash';
import { ErrorStatusCode } from '../config/enum.http';
import Utils from './Utils';

describe('Utils', () => {
    let expectDone = true;
    const expected = (target?: any, message?: string) => {
        expectDone = true;
        return expect(target, message);
    };
    beforeEach(() => {
        expectDone = false;
    });
    afterEach('這個方法有寫驗證但是沒有驗證到', () => {
        // tslint:disable-next-line:no-unused-expression
        expect(expectDone).to.equal(true);
    });
    describe('modifyHistoryLog()', () => {
        it('1.吐出Add格式', () => {
            const get = Utils.modifyHistoryLog(1, 'TEST', {
                a: 'aa', b: 1
            });
            expected(get).to.deep.equal('TEST:Add, a:aa, b:1');
        });
        it('1.吐出Modify格式', () => {
            const get = Utils.modifyHistoryLog(2, 'TEST', {
                a: 'aa', b: 1
            });
            expected(get).to.deep.equal('TEST:Modify, a:aa, b:1');
        });
    });
    describe('resultWarns()', () => {
        it('1.回傳未定義', () => {
            try {
                const get = Utils.resultWarns(
                    -1,
                    Utils.Warn(0, ''));
            } catch (error) {
                expected(() => { throw error; }).to.throw(Error);
            }
        });
        it('2.回傳已經定義好的結果', () => {
            try {
                const get = Utils.resultWarns(
                    2,
                    Utils.Warn(0, '0'),
                    Utils.Warn(1, '1'),
                    Utils.Warn(2, '2'),
                    Utils.Warn(3, '3'));
            } catch (error) {
                expected(error.status).to.deep.equal(ErrorStatusCode.PORCEDURE_WARN);
            }
        });
    });
    describe('resultMessage()', () => {
        it('1.回傳格式', () => {
            const get = Utils.resultMessage('123');
            expected(get).to.eql({ message: '123' });
        });
    });
    describe('resultWarn()', () => {
        it('1.自定義StatusCode', () => {
            try {
                Utils.resultWarn('123', 1000);
            } catch (error) {
                expected(error.status).to.deep.equal(1000);
            }
        });
    });
    describe('resultSuccess()', () => {
        it('1.自定義StatusCode', () => {
            const get = Utils.resultSuccess('123', 1000);
            expected(get).to.eql({ message: { message: '123' }, status: 1000 });
        });
        it('2.預設StatusCode', () => {
            const get = Utils.resultSuccess('123');
            expected(get).to.eql({ message: { message: '123' }, status: ErrorStatusCode.STATUS_OK });
        });
    });
    describe('test()', () => {
        it('1.


0,$8000,0
                DC.W $8000,0,$8000,0
                DC.W 0,$8000,$8000,0
                DC.W $8000,$8000,$8000,0
                DC.W 0,0,0,$8000
                DC.W $8000,0,0,$8000
                DC.W 0,$8000,0,$8000
                DC.W $8000,$8000,0,$8000
                DC.W 0,0,$8000,$8000
                DC.W $800


);
  uint8_t const dir   = tu_edpt_dir(ep_addr);

  (void)rhport;

  xfer_ctl_t * xfer = XFER_CTL_BASE(epnum, dir);

  // Clear stall is called in response to Clear Feature ENDPOINT_HALT, reset toggle
  xfer->data1 = 0;
  xfer->stall = 0;

  if (dir == TUSB_DIR_OUT)
  {
    xfer->regs->epc_out &= ~USB_USB_EPC1_REG_USB_STALL_Msk;
  }
  else
  {
    xfer->regs->epc_in &= ~USB_USB_EPC1_REG_USB_STALL_Msk;
  }
  if (epnum == 0)
  {
    REG_CLR_BIT(USB_MAMSK_REG, USB_M_EP0_NAK);
  }
}

/*------------------------------------------------------------------*/
/* Interrupt Handler
 *------------------------------------------------------------------*/

void dcd_int_handler(uint8_t rhport)
{
  uint32_t int_status = USB->USB_MAEV_REG;

  (void)rhport;

  if (GET_BIT(int_status, USB_USB_MAEV_REG_USB_WARN))
  {
    handle_fifo_warning();
  }

  if (GET_BIT(int_status, USB_USB_MAEV_REG_USB_CH_EV))
  {
    // TODO: for now just clear interrupt
    (void)USB->USB_CHARGER_STAT_REG;
  }

  if (GET_BIT(int_status, USB_USB_MAEV_REG_USB_EP0_NAK))
  {
    handle_ep0_nak();
  }

  if (GET_BIT(int_status, USB_USB_MAEV_REG_USB_EP0_RX))
  {
    handle_ep0_rx();
  }

  if (GET_BIT(int_status, USB_USB_MAEV_REG_USB_EP0_TX))
  {
    handle_ep0_tx();
  }

  if (GET_BIT(int_status, USB_USB_MAEV_REG_USB_RX_EV))
  {
    handle_rx_ev();
  }

  if (GET_BIT(int_status, USB_USB_MAEV_REG_USB_NAK))
  {
    (void)USB->USB_NAKEV_REG;
  }

  if (GET_BIT(int_status, USB_USB_MAEV_REG_USB_FRAME))
  {
    if (_dcd.in_reset)
    {
      // Enable reset detection
      _dcd.in_reset = false;
      (void)USB->USB_ALTEV_REG;
    }
#if USE_SOF
    dcd_event_bus_signal(0, DCD_EVENT_SOF, true);
#else
    // SOF was used to re-enable reset detection
    // No need to keep it enabled
    USB->USB_MAMSK_REG &= ~USB_USB_MAMSK_REG_USB_M_FRAME_Msk;
#endif
  }

  if (GET_BIT(int_status, USB_USB_MAEV_REG_USB_TX_EV))
  {
    handle_tx_ev();
  }

  if (GET_BIT(int_status, USB_USB_MAEV_REG_USB_ALT))
  {
    handle_alt_ev();
  }
}

#endif


box.y - ( 32/2 ),  --top limit
			box.x + ( 32/2 ),  --right limit
			box.y + ( 32/2 ),  --bottom limit
			{ velocityX=velocityX, velocityY=velocityY } )

		--if hits then debugOutput( hits ) end
	end
end
Runtime:addE


am  {User}                   me              The currently loggedin user
 * @param  {Activity}               activity        Standard activity object as specified by the activitystrea.ms specification, representing the folder visibility update activity, for which to generate the activity summary
 * @param  {Object}                 properties      A set of properties that can be used to determine the correct summary
 * @return {ActivityItem}                    A summary object
 * @api private
 */
const generateFolderUpdateVisibilitySummary = function (
  me,
  activity,
  properties
) {
  let i18nKey = null;
  if (activity.object["oae:visibility"] === "public") {
    i18nKey = "__MSG__ACTIVITY_FOLDER_VISIBILITY_PUBLIC__";
  } else if (activity.object["oae:visibility"] === "loggedin") {
    i18nKey = "__MSG__ACTIVITY_FOLDER_VISIBILITY_LOGGEDIN__";
  } else {
    i18nKey = "__MSG__ACTIVITY_FOLDER_VISIBILITY_PRIVATE__";
  }

  return new ActivityItem(i18nKey, properties);
};

/**
 * Render the end-user friendly, internationalized summary of an update for a user following another user
 *
 * @param  {User}                   me              The currently loggedin user
 * @param  {Activity}               activity        Standard activity object as specified by the activitystrea.ms specification, representing the following activity, for which to generate the activity summary
 * @param  {Object}                 properties      A set of properties that can be used to determine the correct summary
 * @return {ActivityItem}                    A summary object
 * @api private
 */
const generateFollowingSummary = function (me, activity, properties) {
  let i18nKey = null;
  if (properties.actorCount > 1) {
    if (properties.actorCount === 2) {
      if (activity.object["oae:id"] === me.id) {
        i18nKey = "__MSG__ACTIVITY_FOLLOWING_2_YOU__";
      } else {
        i18nKey = "__MSG__ACTIVITY_FOLLOWING_2_1__";
      }
    } else if (activity.object["oae:id"] === me.id) {
      i18nKey = "__MSG__ACTIVITY_FOLLOWING_2+_YOU__";
    } else {
      i18nKey = "__MSG__ACTIVITY_FOLLOWING_2+_1__";
    }
  } else if (properties.objectCount > 1) {
    if (properties.objectCount === 2) {
      i18nKey = "__MSG__ACTIVITY_FOLLOWING_1_2__";
    } else {
      i18nKey = "__MSG__ACTIVITY_FOLLOWING_1_2+__";
    }
  } else if (activity.object["oae:id"] === me.id) {
    i18nKey = "__MSG__ACTIVITY_FOLLOWING_1_YOU__";
  } else {
    i18nKey = "__MSG__ACTIVITY_FOLLOWING_1_1__";
  }

  return new ActivityItem(i18nKey, properties);
};

/**
 * Render the end-user friendly, internationalized summary of a group member add activity.
 *
 * @param  {User}                   me              The currently loggedin user
 * @param  {Activity}               activity        Standard activity object as specified by the activitystrea.ms specification, representing the add group member activity, for which to generate the activity summary
 * @param  {Object}                 properties      A set of properties that can be used to determine the correct summary
 * @return {ActivityItem}                    A summary object
 * @api private
 */
const generateGroupAddMemberSummary = function (me, activity, properties) {
  let i18nKey = null;
  if (properties.objectCount === 1) {
    if (activity.object["o