nd('\n');
        s.append("第二次获取: ").append(accountService2.hashCode()).append('\n');
        s.append('\n');

        // Factory, Provider

        // EmptyArgsFactory
        IFactoryService service1 = Router.getService(IFactoryService.class, "/factory", EmptyArgsFactory.INSTANCE);
        // Provider
        IFactoryService service2 = Router.getService(IFactoryService.class, "/factory");
        // ContextFactory
        IFactoryService service3 = Router.getService(IFactoryService.class, "/factory", this);
        // CustomFactory
        IFactoryService service4 = Router.getService(IFactoryService.class, "/factory", new IFactory() {
            @NonNull
            @Override
            public <T> T create(@NonNull Class<T> clazz) throws Exception {
                return clazz.getConstructor(String.class).newInstance("CreateByCustomFactory");
            }
        });
        s.append("EmptyArgsFactory: ").append(service1.name()).append('\n');
        s.append("Provider: ").append(service2.name()).append('\n');
        s.append("Context: ").append(service3.name()).append('\n');
        s.append("CustomFactory: ").append(service4.name()).append('\n');
        s.append('\n');

        // 方法调用
        s.append("MethodCall:\n");
        Integer result = Router.callMethod(DemoConstant.ADD_METHOD, 1, 2);
        s.append("1 + 2 = ").append(result).append('\n');
        Integer versionCode = Router.callMethod(DemoConstant.GET_VERSION_CODE);
        s.append("version = ").append(versionCode).append('\n');
        s.append('\n');

        // Kotlin
        Object service = Router.getService(Object.class, DemoConstant.KOTLIN_SERVICE);
        s.append("GetKotlinService:\n");
        s.append(service.toString()).append('\n').append('\n');

        mTextView.setText(s.toString());
    }
}
package com.sankuai.waimai.router.components;

import android.app.Activity;

import com.sankuai.waimai.router.activity.ActivityClassNameHandler;
import com.sankuai.waimai.router.activity.ActivityHandler;
import com.sankuai.waimai.router.common.NotExportedInterceptor;
import com.sankuai.waimai.router.core.UriHandler;
import com.sankuai.waimai.router.core.UriInterceptor;

import java.lang.reflect.Modifier;

/**
 * 跳转目标，支持ActivityClass, ActivityClassName, UriHandler。
 *
 * Created by jzj on 2018/3/26.
 */

public class UriTargetTools {

    public static UriHandler parse(Object target, boolean exported,
            UriInterceptor... interceptors) {
        UriHandler handler = toHandler(target);
        if (handler != null) {
            if (!exported) {
                handler.addInterceptor(NotExportedInterceptor.INSTANCE);
            }
            handler.addInterceptors(interceptors);
        }
        return handler;
    }

    private static UriHandler toHandler(Object target) {
        if (target instanceof UriHandler) {
            return (UriHandler) target;
        } else if (target instanceof String) {
            return new ActivityClassNameHandler((String) target);
        } else if (target instanceof Class && isValidActivityClass((Class) target)) {
            //noinspection unchecked
            return new ActivityHandler((Class<? extends Activity>) target);
        } else {
            return null;
        }
    }

    private static boolean isValidActivityClass(Class clazz) {
        return cl


 0xd9
        "Lie ", // 0xda
        "Zhu ", // 0xdb
        "Yi ", // 0xdc
        "Xian ", // 0xdd
        "Kuo ", // 0xde
        "Jiao ", // 0xdf
        "Li ", // 0xe0
        "Yi ", // 0xe1
        "Ping ", // 0xe2
        "Ji ", // 0xe3
        "Ha ", // 0xe4
        "She ", // 0xe5
        "Yi ", // 0xe6
        "Wang ", // 0xe7
        "Mo ", // 0xe8
        "Qiong ", // 0xe9
        "Qie ", // 0xea
        "Gui ", // 0xeb
        "Gong ", // 0xec
        "Zhi ", // 0xed
        "Man ", // 0xee
        "Ebi ", // 0xef
        "Zhi ", // 0xf0
        "Jia ", // 0xf1
        "Rao ", // 0xf2
        "Si ", // 0xf3
        "Qi ", // 0xf4
        "Xing ", // 0xf5
        "Lie ", // 0xf6
        "Qiu ", // 0xf7
        "Shao ", // 0xf8
        "Yong ", // 0xf9
        "Jia ", // 0xfa
        "Shui ", // 0xfb
        "Che ", // 0xfc
        "Bai ", // 0xfd
        "E ", // 0xfe
        "Han " // 0xff
    };
}/*
 * Copyright (C) 2015 Giuseppe Cardone <ippatsuman@gmail.com>
 *
 * 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.
 */
package net.gcardone.junidecode;

/**
 * Character map for Unicode characters with codepoint U+4Fxx.
 * @author Giuseppe Cardone
 * @version 0.1
 */
class X4f {

    public static final String[] map = new String[]{
        "Zhong ", // 0x00
        "Qi ", // 0x01
        "Pei ", // 0x02
        "Yu ", // 0x03
        "Diao ", // 0x04
        "Dun ", // 0x05
        "Wen ", // 0x06
        "Yi ", // 0x07
        "Xin ", // 0x08
        "Kang ", // 0x09
        "Yi ", // 0x0a
        "Ji ", // 0x0b
        "Ai ", // 0x0c
        "Wu ", // 0x0d
        "Ji ", // 0x0e
        "Fu ", // 0x0f
        "Fa ", // 0x10
        "Xiu ", // 0x11
        "Jin ", // 0x12
        "Bei ", // 0x13
        "Dan ", // 0x14
        "Fu ", // 0x15
        "Tang ", // 0x16
        "Zhong ", // 0x17
        "You ", // 0x18
        "Huo ", // 0x19
        "Hui ", // 0x1a
        "Yu ", // 0x1b
        "Cui ", // 0x1c
        "Chuan ", // 0x1d
        "San ", // 0x1e
        "Wei ", // 0x1f
        "Chuan ", // 0x20
        "


) 2018 CommonsWare, LLC
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.

Covered in detail in the book _The Busy Coder's Guide to Android Development_
https://commonsware.com/Android
 */

package com.commonsware.android.slice.inspector

import android.content.Context
import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.core.content.res.ResourcesCompat
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.slice.Slice
import androidx.slice.SliceItem
import androidx.slice.widget.SliceLiveData
import de.blox.treeview.BaseTreeAdapter
import de.blox.treeview.TreeNode
import de.blox.treeview.TreeView

class InspectorFragment : Fragment() {
  private lateinit var tree: TreeView

  override fun onCreateView(inflater: LayoutInflater,
                            container: ViewGroup?,
                            savedInstanceState: Bundle?): View? {
    tree = TreeView(activity).apply {
      lineColor = ResourcesCompat.getColor(activity!!.resources, android.R.color.black, null)
      levelSeparation = 60
    }

    SliceLiveData
        .fromUri(activity!!, Uri.parse(BuildConfig.SLICE_URI))
        .observe(this, Observer<Slice> { this.onSlice(it) })

    return tree
  }

  private fun onSlice(slice: Slice) {
    val adapter = SliceTreeAdapter(activity!!)
    val root = buildTreeNode(null)

    slice.items.forEach { root.addChild(buildTreeNode(it)) }

    adapter.setRootNode(root)
    tree.adapter = adapter
  }

  private fun buildTreeNode(sliceItem: SliceItem?): TreeNode {
    val result = TreeNode(sliceItem)

    if (android.app.slice.SliceItem.FORMAT_SLICE == sliceItem?.format) {
      sliceItem.slice.items.forEach { result.addChild(buildTreeNode(it)) }
    }

    return result
  }

  internal class SliceTreeAdapter(context: Context) : BaseTreeAdapter<SliceItemViewHolder>(context, R.layout.tree_node) {
    override fun onCreateViewHolder(view: View): SliceItemViewHolder = SliceItemViewHolder(view)

    override fun onBindViewHolder(viewHolder: SliceItemViewHolder, data: Any?,
                                  position: Int) {
      viewHolder.bind(data as SliceItem?)
    }
  }

  internal class SliceItemViewHolder(card: View) {
    val title: TextView = card.findViewById(R.id.title)

    fun bind(sliceItem: SliceItem?) {
      title.text = sliceItem?.format ?: "slice"
    }
  }
}
package com.taka531.StoreManager
import expo.modules.splashscreen.SplashScreenManager

import android.os.Build
import android.os.Bundle

import com.facebook.react.ReactActivity
import com.facebook.react.ReactActivityDelegate
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
import com.facebook.react.defaults.DefaultReactActivityDelegate

import expo.modules.ReactActivityDelegateWrapper

class MainActivity : ReactActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    // Set the theme to AppTheme BEFORE onCreate to support
    // coloring the background, status bar, and navigation bar.
    // This is required for expo-splash-screen.
    // setTheme(R.style.AppTheme);
    // @


.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-5.7-6.8-4.7-16.9 2-22.5 6.8-5.7 16.9-4.7 22.5 2 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c5.7-6.8 15.7-7.7 22.5-2 6.9 5.7 7.8 15.8 2.2 22.5z"],smoking:[640,512,[],"f48d","M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z"],"smoking-ban":[512,512,[],"f54d","M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2


← All charts

            <Scrollspy
              items={[
                'introduction',
                'data',
                'heightAndWidth',
                'colorBars',
                'margin',
                'overridingBarColors',
                'axes',
                'axesLabels',
                'yaxesorientation',
                'axesType',
                'datePattern',
                'barWidth',
                'domainRange',
                'tickDisplay',
                'numberOfTicks',
                'grid',
                'bar_and_line',
                'mouseHandlers',
                'clickHandler',
                'updateData',
                'fluid'
              ]}
              currentClassName="active"
            >

Introduction

Data

Height & Width

Color Bars

Margin

Overriding bar colors

Axes

Axes labels

Y Axis orientation

Axes type

Date Pattern

Bar width

Domain range

Tick display format

Number of ticks

Grid

Bar and Line

Mouse handlers

Click handler

Updating the data

Fluid

            </Scrollspy>

The React Easy Bar Chart

            <BarChart
              axisLabels={{ x: 'My x Axis', y: 'My y Axis' }}
              axes={(this.state.componentWidth / 3) > 400}
              colorBars
              grid
              width={this.state.componentWidth}
              height={this.state.componentWidth / 2}
              xTickNumber={5}
              yTickNumber={5}
              yDomainRange={[0, 100]}
              data={this.defaultData}
            />

Introduction

              A bar chart or bar graph is a chart that presents Grouped data with rectangular bars
              with lengths proportional to the values that they
              represent.(<a href="https://en.wikipedia.org


24 0032F964  4C C6 31 82 */	crclr 6
/* 80332A28 0032F968  4B CF 7C 19 */	bl panic_f__12JUTExceptionFPCciPCce
.L_80332A2C:
/* 80332A2C 0032F96C  80 1E 00 70 */	lwz r0, 0x70(r30)
/* 80332A30 0032F970  28 00 00 00 */	cmplwi r0, 0
/* 80332A34 0032F974  40 82 00 20 */	bne .L_80332A54
/* 80332A38 0032F978  3C 60 80 49 */	lis r3, lbl_8048F848@ha
/* 80332A3C 0032F97C  3C A0 80 49 */	lis r5, lbl_8048F854@ha
/* 80332A40 0032F980  38 63 F8 48 */	addi r3, r3, lbl_8048F848@l
/* 80332A44 0032F984  38 80 03 25 */	li r4, 0x325
/* 80332A48 0032F988  38 A5 F8 54 */	addi r5, r5, lbl_8048F854@l
/* 80332A4C 0032F98C  4C C6 31 82 */	crclr 6
/* 80332A50 0032F990  4B CF 7B F1 */	bl panic_f__12JUTExceptionFPCciPCce
.L_80332A54:
/* 80332A54 0032F994  80 9E 00 70 */	lwz r4, 0x70(r30)
/* 80332A58 0032F998  7F E3 FB 78 */	mr r3, r31
/* 80332A5C 0032F99C  38 A0 00 12 */	li r5, 0x12
/* 80332A60 0032F9A0  48 00 59 5D */	bl setObject__8PSSystemFP8JASTrackPvUc
/* 80332A64 0032F9A4  80 7E 00 70 */	lwz r3, 0x70(r30)
/* 80332A68 0032F9A8  7F E4 FB 78 */	mr r4, r31
/* 80332A6C 0032F9AC  81 83 00 00 */	lwz r12, 0(r3)
/* 80332A70 0032F9B0  81 8C 00 0C */	lwz r12, 0xc(r12)
/* 80332A74 0032F9B4  7D 89 03 A6 */	mtctr r12
/* 80332A78 0032F9B8  4E 80 04 21 */	bctrl
/* 80332A7C 0032F9BC  80 7E 00 6C */	lwz r3, 0x6c(r30)
/* 80332A80 0032F9C0  28 03 00 00 */	cmplwi r3, 0
/* 80332A84 0032F9C4  41 82 00 0C */	beq .L_80332A90
/* 80332A88 0032F9C8  7F E4 FB 78 */	mr r4, r31
/* 80332A8C 0032F9CC  48 01 0F 71 */	bl playInit__Q28PSSystem15DirectorMgrBaseFP8JASTrack
.L_80332A90:
/* 80332A90 0032F9D0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80332A94 0032F9D4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80332A98 0032F9D8  83 C1 00 08 */	lwz r30, 8(r1)
/* 80332A9C 0032F9DC  7C 08 03 A6 */	mtlr r0
/* 80332AA0 0032F9E0  38 21 00 10 */	addi r1, r1


2] = "환자들은 다시 진료실에 돌아가서 처방을 받기 전에 이곳에 와서 진단을 받습니다.//",
    [3] = "심전도실에는 의사가 필요합니다. 그리고 정비도 필요합니다.",
  },
  ward = {
    [1] = "병동//",
    [2] = "환자들의 진단 도중 이곳에 와서 간호사가 살펴볼 수 있습니다. 환자들은 수술을 받기 전까지 이곳에 머무릅니다.//",
    [3] = "병동에는 간호사가 필요합니다.",
  },
  psych = {
    [1] = "정신과//",
    [2] = "정진 질환으로 판명된 환자들은 정신과에 방문해서 상담을 받아야 합니다. 정신과 의사들은 또한 환자들이 어떤 병이 있는지 진단도 가능하고, 그것이 정신 질환인 경우에는 침상을 사용해 치료할 수 있습니다.//",
    [3] = "정신과에는 정신과 교육을 받은 의사가 필요합니다.",
  },
  staff_room = {
    [1] = "직원 휴게실//",
    [2] = "직원들도 일을 하다보면 지치게 됩니다. 그들은 긴장을 풀고 생기를 찾기 위해서 이 방을 필요로 합니다. 피로한 직원은 일하는 속도가 느려지고, 급여를 더 요구하며, 결국에는 병원을 나가게 됩니다. 또한 피로한 직원들은 실수를 더 자주 합니다. 다양한 할 것들이 있는 직원 휴게실은 지을 만한 가치가 있습니다. 여러 명의 직원이 동시에 쉴 수 있는 공간이 나오도록 해주세요.",
  },
  operating_theatre = {
    [1] = "수술실//",
    [2] = "이 중요한 시설에서 다양한 증상들이 치료됩니다. 수술실의 크기는 적절해야 하며, 올바른 장비들로 채워져야 합니다. 이 시설은 병원에 필수 불가결한 존재입니다.//",


SION__ <= 20
#    define BOOST_NO_STDC_NAMESPACE
#  endif

#  if __LIBCOMO_VERSION__ <= 21
#    define BOOST_NO_SWPRINTF
#  endif

#endif

//
// If glibc is past version 2 then we definitely have
// gettimeofday, earlier versions may or may not have it:
//
#if defined(__GLIBC__) && (__GLIBC__ >= 2)
#  define BOOST_HAS_GETTIMEOFDAY
#endif

#ifdef __USE_POSIX199309
#  define BOOST_HAS_NANOSLEEP
#endif

#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
// __GLIBC_PREREQ is available since 2.1.2

   // swprintf is available since glibc 2.2.0
#  if !__GLIBC_PREREQ(2,2) || (!defined(__USE_ISOC99) && !defined(__USE_UNIX98))
#    define BOOST_NO_SWPRINTF
#  endif
#else
#  define BOOST_NO_SWPRINTF
#endif

// boilerplate code:
#define BOOST_HAS_UNISTD_H
#include <boost/config/detail/posix_features.hpp>
#if defined(__USE_GNU) && !defined(__ANDROID__) && !defined(ANDROID)
#define BOOST_HAS_PTHREAD_YIELD
#endif

#ifndef __GNUC__
//
// if the compiler is not gcc we still need to be able to parse
// the GNU system headers, some of which (mainly <stdint.h>)
// use GNU specific extensions:
//
#  ifndef __extension__
#     define __extension__
#  endif
#  ifndef __const__
#     define __const__ const
#  endif
#  ifndef __volatile__
#     define __volatile__ volatile
#  endif
#  ifndef __signed__
#     define __signed__ signed
#  endif
#  ifndef __typeof__
#     define __typeof__ typeof
#  endif
#  ifndef __inline__
#     define __inline__ inline
#  endif
#endif

//  (C) Copyright John Maddock 2001 - 2003.
//  (C) Copyright Bill Kempf 2001.
//  (C) Copyright Aleksey Gurtovoy 2003.
//  (C) Copyright Rene Rivera 2005.
//  Use, modification and distribution are subject to the
//  Boost Software License, Version 1.0. (See accompanying file
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

//  See http://www.boost.org for most recent version.

//  Win32 specific config options:

#define BOOST_PLATFORM "Win32"

//  Get the information about the MinGW runtime, i.e. __MINGW32_*VERSION.
#if defined(__MINGW32__)
#  include <_mingw.h>
#endif

#if defined(__GNUC__) && !defined(BOOST_NO_SWPRINTF)
#  define BOOST_NO_SWPRINTF
#endif

//  Default defines for BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT
//  If a compiler doesn't support __declspec(dllexport)/__declspec(dllimport),
//  its boost/config/compiler/ file must define BOOST_SYMBOL_EXPORT and
//  BOOST_SYMBOL_IMPORT
#ifndef BOOST_SYMBOL_EXPORT
#  define BOOST_HAS_DECLSPEC
#  define BOOST_SYMBOL_EXPORT __declspec(dllexport)
#  define BOOST_SYMBOL_IMPORT __declspec(dllimport)
#endif

#if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0)))
#  define BOOST_HAS_STDINT_H
#  ifndef __STDC_LIMIT_MACROS
#     define __STDC_LIMIT_MACROS


-3.197.328-4.619.921l-1.585 13.36L13.693.124A12.168 12.168 0 0011.975 0m11.918 10.459-14.07 7.874 13.201-1.566a11.976 11.976 0 00.869-6.308m-5.188 11.527a12.084 12.084 0 003.8-4.16l-12.374 2.457 8.574 1.703zM14.417.249 7.53 15.177 20.306 3.36A11.978 11.978 0 0014.417.249M12.98 24a11.938 11.938 0 003.774-.945l-6.931-.822L12.98 24zM1.016 7.08a11.944 11.944 0 00-1.013 3.864l1.867 3.337-.854-7.201zm5.298-5.665a12.076 12.076 0 00-4.236 3.784l1.743 8.773L6.314 1.415z"/></svg>';
  static const String apachespark =
      '<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="currentColor" d="M10.812 0c-.425.013-.845.215-1.196.605a3.593 3.593 0 00-.493.722c-.355.667-.425 1.415-.556 2.143a551.9 551.9 0 00-.726 4.087c-.027.16-.096.227-.244.273C5.83 8.386 4.06 8.94 2.3 9.514a4.874 4.874 0 00-1.114.506c-1.042.665-1.196 1.753-.415 2.71.346.422.79.715 1.284.936 1.1.49 2.202.976 3.3 1.47.019.01.036.013.053.019h-.004l1.306.535c0 .023.002.045 0 .073-.2 2.03-.39 4.063-.58 6.095-.04.419-.012.831.134 1.23.317.87 1.065 1.148 1.881.701.372-.204.666-.497.937-.818 1.372-1.623 2.746-3.244 4.113-4.872.111-.133.205-.15.363-.098.349.117.697.231 1.045.347h.001c.02.012.045.02.073.03l.142.042c1.248.416 2.68.775 3.929 1.19.4.132.622.164 1.045.098.311-.048.592-.062.828-.236.602-.33.995-.957.988-1.682-.005-.427-.154-.813-.35-1.186-.82-1.556-1.637-3.113-2.461-4.666-.078-.148-.076-.243.037-.375 1.381-1.615 2.756-3.236 4.133-4.855.272-.32.513-.658.653-1.058.308-.878-.09-1.57-1-1.741a2.783 2.783 0 00-1.235.069c-1.974.521-3.947 1.041-5.918 1.57-.175.047-.26.015-.355-.144a353.08 353.08 0 00-2.421-4.018 4.61 4.61 0 00-.652-.849c-.371-.37-.802-.549-1.227-.536zm.172 3.703a.592.592 0 01.189.211c.87 1.446 1.742 2.89 2.609 4.338.07.118.135.16.277.121 1.525-.41 3.052-.813 4.579-1.217.367-.098.73


return pABNPBHBCGHBuilder_.getMessageOrBuilder();
        } else {
          return pABNPBHBCGH_ == null ?
              emu.grasscutter.net.proto.LPIFKAIBNHJOuterClass.LPIFKAIBNHJ.getDefaultInstance() : pABNPBHBCGH_;
        }
      }
      /**
       * .LPIFKAIBNHJ PABNPBHBCGH = 6;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          emu.grasscutter.net.proto.LPIFKAIBNHJOuterClass.LPIFKAIBNHJ, emu.grasscutter.net.proto.LPIFKAIBNHJOuterClass.LPIFKAIBNHJ.Builder, emu.grasscutter.net.proto.LPIFKAIBNHJOuterClass.LPIFKAIBNHJOrBuilder>
          getPABNPBHBCGHFieldBuilder() {
        if (pABNPBHBCGHBuilder_ == null) {
          pABNPBHBCGHBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              emu.grasscutter.net.proto.LPIFKAIBNHJOuterClass.LPIFKAIBNHJ, emu.grasscutter.net.proto.LPIFKAIBNHJOuterClass.LPIFKAIBNHJ.Builder, emu.grasscutter.net.proto.LPIFKAIBNHJOuterClass.LPIFKAIBNHJOrBuilder>(
                  getPABNPBHBCGH(),
                  getParentForChildren(),
                  isClean());
          pABNPBHBCGH_ = null;
        }
        return pABNPBHBCGHBuilder_;
      }

      private boolean isUpdateSetting_ ;
      /**
       * bool is_update_setting = 3;
       * @return The isUpdateSetting.
       */
      @java.lang.Override
      public boolean getIsUpdateSetting() {
        return isUpdateSetting_;
      }
      /**
       * bool is_update_setting = 3;
       * @param value The isUpdateSetting to set.
       * @return This builder for chaining.
       */
      public Builder setIsUpdateSetting(boolean value) {

        isUpdateSetting_ = value;
        onChanged();
        return this;
      }
      /**
       * bool is_update_setting = 3;
       * @return This builder for chaining.
       */
      public Builder clearIsUpdateSetting() {

        isUpdateSetting_ = false;
        onChanged();
        return this;
      }

      private java.util.List<emu.grasscutter.net.proto.JOGGPMEEOELOuterClass.JOGGPMEEOEL> roomList_ =
        java.util.Collections.emptyList();
      private void ensureRoomListIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          roomList_ = new java.util.ArrayList<emu.grasscutter.net.proto.JOGGPMEEOELOuterClass.JOGGPMEEOEL>(roomList_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          emu.grasscutter.net.proto.JOGGPMEEOELOuterClass.JOGGPMEEOEL, emu.grasscutter.net.proto.JOGGPMEEOELOuterClass.JOGGPMEEOEL.Builder, emu.grasscutter.net.proto.JOGGPMEEOELOuterClass.JOGGPMEEOELOrBuilder> roomListBuilder_;

      /**
       * repeated .JOGGPMEEOEL room_list = 9;
       */
      public java.util.List<emu.grasscutter.net.proto.JOGGPMEEOELOuterClass.JOGGPMEEOEL> getRoomListList() {
        if (roomListBuilder_ == null) {


F.W0 42 /r`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Kandn_kr_kr = 4574,
	---`KANDNR k1, k2`
	---
	---`VEX.128.0F.W0 43 /r`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Kandnr_kr_kr = 4575,
	---`KNOT k1, k2`
	---
	---`VEX.128.0F.W0 44 /r`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Knot_kr_kr = 4576,
	---`KOR k1, k2`
	---
	---`VEX.128.0F.W0 45 /r`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Kor_kr_kr = 4577,
	---`KXNOR k1, k2`
	---
	---`VEX.128.0F.W0 46 /r`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Kxnor_kr_kr = 4578,
	---`KXOR k1, k2`
	---
	---`VEX.128.0F.W0 47 /r`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Kxor_kr_kr = 4579,
	---`KMERGE2L1H k1, k2`
	---
	---`VEX.128.0F.W0 48 /r`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Kmerge2l1h_kr_kr = 4580,
	---`KMERGE2L1L k1, k2`
	---
	---`VEX.128.0F.W0 49 /r`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Kmerge2l1l_kr_kr = 4581,
	---`JKZD k1, rel32`
	---
	---`VEX.128.0F.W0 84 cd`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Jkzd_kr_rel32_64 = 4582,
	---`JKNZD k1, rel32`
	---
	---`VEX.128.0F.W0 85 cd`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Jknzd_kr_rel32_64 = 4583,
	---`KMOV k1, k2`
	---
	---`VEX.128.0F.W0 90 /r`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Kmov_kr_kr = 4584,
	---`KMOV k1, r32`
	---
	---`VEX.128.0F.W0 92 /r`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Kmov_kr_r32 = 4585,
	---`KMOV r32, k1`
	---
	---`VEX.128.0F.W0 93 /r`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Kmov_r32_kr = 4586,
	---`KCONCATH r64, k1, k2`
	---
	---`VEX.128.0F.W0 95 /r`
	---
	---`KNC`
	---
	---`64-bit`
	VEX_KNC_Kconcath_r


    EasySWT.makePushButton(g, OK, 1) {
      val searchText = searchTextBox!!.text
      //Clear before setting new results
      settings.currentAscii = ""
      settings.lastSearch = ""
      settings.currentCategory!!.array.clear()
      search(searchText)
      searchTextBox!!.text = ""
    }

    val searchBox = " ".repeat(SEARCH_BOX_LENGTH * 2)
    searchTextBox!!.text = searchBox.trimIndent()

    searchTextBox!!.addKeyListener(object : KeyListener {
      override fun keyPressed(e: KeyEvent) {
        if (e.keyCode == SWT.CR.code) {
          val searchText = searchTextBox!!.text
          //Clear before setting new results
          settings.currentAscii = ""
          settings.lastSearch = ""
          settings.currentCategory!!.array.clear()
          search(searchText)
          searchTextBox!!.text = ""
        }
      }

      override fun keyReleased(e: KeyEvent) {}
    })
  }

  private fun determineDialogProportions() {
    val width = shell!!.bounds.width
    val height = shell!!.bounds.height
    panelWidth = width / 4
    panelHeight = height / 4
  }

  private fun makeButtons(leftPanel: Group) {
    if (settings.currentName == CATEGORIES.SEARCH) {
      makeSearchBox(leftPanel)
    }
    val outerContainer = Composite(leftPanel, SWT.BORDER)
    outerContainer.layout = GridLayout(1, false)
    outerContainer.layoutData = GridData(SWT.FILL, SWT.FILL, true, true)
    val sc = ScrolledComposite(outerContainer, SWT.V_SCROLL or SWT.H_SCROLL or SWT.BORDER)
    sc.layoutData = GridData(SWT.FILL, SWT.FILL, true, true)
    sc.expandVertical = true
    sc.expandHorizontal = true
    sc.alwaysShowScrollBars = true
    val innerContainer = Composite(sc, SWT.BORDER)
    innerContainer.layout = GridLayout(6, false)
    innerContainer.layoutData = GridData(SWT.FILL, SWT.FILL, true, true)
    val entrySize = settings.currentCategory!!.array.size
    if (entrySize == 0) {
      val t = EasySWT.makeText(innerContainer, 1)
      t.text = NO_SEARCH_RESULTS
      t.editable = false
    } else {
      // make buttons with Unicode chars
      val imagesMap = settings.currentCategory!!.array.associateWith { MathUtils.getImageFromMMLDoc(it.name) }
      for ((entry, image) in imagesMap) {
        if (image == null) continue
        val im = Image(Display.getCurrent(), buttonImageWidth, buttonImageHeight)
        val g = GC(im)
        val xSpace = (buttonImageWidth - image.bounds.width) / 2
        val ySpace = (buttonImageHeight - image.bounds.height) / 2
        g.drawImage(
          image, 0, 0, image.bounds.width, image.bounds.height, xSpace, ySpace,
          image.bounds.width, image.bounds.height
        )
        g.dispose()
        val button = Button(innerContainer, SWT.NONE)
        val data = GridData()
        data.horizontalSpan = 2
        button.layoutData = data
        FormUIUtils.addSelectionListener(button) {
          settings.currentAscii = entry.entry
          updateTextAndBrowser()
        }
        button.image = im
        addAltText(entry, button)
        addHoverText(entry, button)
      }
      for ((entry, image) in imagesMap) {
        if (image != null) continue
        val button = Button(innerContainer, SWT.NONE or SWT.CENTER)
        val data = GridData()
        data.horizontalAlignment = GridData.FILL
        button.layoutData = data
        FormUIUtils.addSelectionListen


client.zRangeStore("dstzset", "srczset", "2", "-1") shouldBe 2L
    }

    @Test
    suspend fun `test ZRANK command`() {
        client.zAdd("testSet32", ZMember("testValue32", 1.0))
        client.zRank("testSet32", "testValue32") shouldBe 0L
    }

    @Test
    suspend fun `test ZREM command`() {
        client.zAdd("testSet33", ZMember("testValue33", 1.0))
        client.zRem("testSet33", "testValue33") shouldBe 1L
    }

    @Test
    suspend fun `test ZREMRANGEBYLEX command`() {
        client.zAdd("testSet34", ZMember("testValue34", 1.0))

        client.zRemRangeByLex("testSet34", "-", "+") shouldBe 1L
    }

    @Test
    suspend fun `test ZREMRANGEBYRANK command`() {
        client.zAdd("testSet35", ZMember("testValue35", 1.0))
        client.zRemRangeByRank("testSet35", 0, -1) shouldBe 1L
    }

    @Test
    suspend fun `test ZREMRANGEBYSCORE command`() {
        client.zAdd("testSet36", ZMember("testValue36", 1.0))
        client.zRemRangeByScore("testSet36", 0.0, 2.0) shouldBe 1L
    }

    @Test
    suspend fun `test ZSCAN command`() {
        client.zAdd("testSet38", ZMember("testValue38", 1.0))
        client.zScan("testSet38", 0) shouldBe ScanResult("0", listOf("testValue38" to "1"))
    }

    @Test
    suspend fun `test ZSCORE command`() {
        client.zAdd("testSet39", ZMember("testValue39", 1.0))
        client.zScore("testSet39", "testValue39") shouldBe 1.0
    }

    @Test
    suspend fun `test ZUNION command`() {
        client.zAdd("testSet40", ZMember("testValue40", 1.0))
        client.zAdd("testSet41", ZMember("testValue41", 2.0))
        client.zUnion("testSet40", "testSet41") shouldBe listOf("testValue40", "testValue41")
    }

    @Test
    suspend fun `test ZUNIONSTORE command`() {
        client.zAdd("testSet42", ZMember("testValue42", 1.0))
        client.zAdd("testSet43", ZMember("testValue43", 2.0))
        client.zUnionStore(
            destination = "testSet44",
            key = arrayOf("testSet42", "testSet43"),
        ) shouldBe 2L
    }
}
package eu.vendeli.rethis.commands

import eu.vendeli.rethis.ReThisTestCtx
import eu.vendeli.rethis.command.sortedset.*
import eu.vendeli.rethis.shared.response.stream.ZMember
import eu.vendeli.rethis.shared.response.stream.ZPopResult
import io.kotest.matchers.shouldBe

class SortedSetCommandTest2 : ReThisTestCtx() {
    @Test
    suspend fun `test BZPOPMIN command`() {
        client.zAdd("testSet5", ZMember("testValue5", 1.0))

        client.bzPopMin(1.0, "testSet5", "testSet6") shouldBe ZPopResult("testSet5", "testValue5", 1.0)
    }

    @Test
    suspend fun `test ZADD command`() {
        client.zAdd("testSet7", ZMember("testValue7", 1.0)) shouldBe 1L
    }

    @Test
    suspend fun `test ZREVRANK command`() {
        client.zAdd("testSet37", ZMember("testValue37", 1.0))

        client.zRevRank("testSet37", "testValue37") shouldBe 0L
    }

    @Test
    suspend fun `test


er

</Jumbo>

  <Rental::Image
    src={{@rental.image}}
    alt="A picture of {{@rental.title}}"
  />

About {{@rental.title}}

      Owner: {{@rental.owner}}

      Type: {{@rental.type}} – {{@rental.category}}

      Location: {{@rental.city}}

      Number of bedrooms: {{@rental.bedrooms}}

{{@rental.description}}

  <Map
    @lat={{@rental.location.lat}}
    @lng={{@rental.location.lng}}
    @zoom="12"
    @width="894"
    @height="600"
    alt="A map of {{@rental.title}}"
    class="large"
  />

```

This component is similar to our `<Rental>` component, except for the following differences.

- It shows a banner with a share button at the top (Implementation to come later).
- It shows a bigger image by default, with some additional detailed information.
- It shows a bigger map.
- It shows a description.

## Sharing Common Setup Code Between Tests

Now that we have this template in place, we can add some tests for this new component of ours.

```handlebars { data-filename="tests/integration/components/rental/detailed-test.js" data-diff="-9,-10,-11,+12,+13,+14,+15,+16,+17,+18,+19,+20,+21,+22,+23,+24,+25,+26,+27,+28,+29,+30,+31,+32,-34,+35,+36,-38,+39,+40,+41,+42,+43,+44,+45,-47,-48,-49,-50,-51,-52,+53,+54,-56,+57,+58,+59,+60,+61,+62,+63,+64" }
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';

module('Integration | Component | rental/detailed', function (hooks) {
  setupRenderingTest(hooks);

  test('it renders', async function (assert) {
    // Set any properties with this.set('myProperty', 'value');
    // Handle any actions with this.set('myAction', function(val) { ... });
  hooks.beforeEach(function () {
    this.setProperties({
      rental: {
        id: 'grand-old-mansion',
        title: 'Grand Old Mansion',
        owner: 'Veruca Salt',
        city: 'San Francisco',
        location: {
          lat: 37.7749,
          lng: -122.4194,
        },
        category: 'Estate',
        type: 'Standalone',
        bedrooms: 15,
        image:
          'https://upload.wikimedia.org/wikipedia/commons/c/cb/Crane_estate_(5).jpg',
        description:
          'This grand old mansion sits on over 100 acres of rolling hills and dense redwood forests.',
      },
    });
  });

    await render(hbs`<Rental::Detailed />`);
  test('it renders a header with a share button', async function (assert) {
    await render(hbs`<Rental::Detailed @rental={{this.rental}} />`);

    assert.dom(this.element).hasText('');
    assert.dom('.jumbo').exists();
    assert.dom('.jumbo h2').containsText('Grand Old Mansion');
    assert
      .dom('.jumbo p')
      .containsText('a nice place to stay near San Francisco');
    assert.dom('.jumbo a.button').containsText('Share on Twitter');
  });


ub const TIOCM_RNG: ::c_int = 0o0200;
pub const TIOCM_DSR: ::c_int = 0o0400;
pub const TIOCM_CD: ::c_int = TIOCM_CAR;
pub const TIOCM_RI: ::c_int = TIOCM_RNG;

// Flags for chflags(2)
pub const UF_SETTABLE: ::c_ulong = 0x0000ffff;
pub const UF_NODUMP: ::c_ulong = 0x00000001;
pub const UF_IMMUTABLE: ::c_ulong = 0x00000002;
pub const UF_APPEND: ::c_ulong = 0x00000004;
pub const UF_OPAQUE: ::c_ulong = 0x00000008;
pub const SF_SETTABLE: ::c_ulong = 0xffff0000;
pub const SF_ARCHIVED: ::c_ulong = 0x00010000;
pub const SF_IMMUTABLE: ::c_ulong = 0x00020000;
pub const SF_APPEND: ::c_ulong = 0x00040000;

pub const TIMER_ABSTIME: ::c_int = 1;

#[link(name = "util")]
extern "C" {
    pub fn setgrent();
    pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;
    pub fn sem_init(
        sem: *mut sem_t,
        pshared: ::c_int,
        value: ::c_uint,
    ) -> ::c_int;

    pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int;
    pub fn accept4(
        s: ::c_int,
        addr: *mut ::sockaddr,
        addrlen: *mut ::socklen_t,
        flags: ::c_int,
    ) -> ::c_int;
    pub fn mincore(
        addr: *mut ::c_void,
        len: ::size_t,
        vec: *mut ::c_char,
    ) -> ::c_int;
    #[cfg_attr(target_os = "netbsd", link_name = "__clock_getres50")]
    pub fn clock_getres(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;
    #[cfg_attr(target_os = "netbsd", link_name = "__clock_gettime50")]
    pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;
    #[cfg_attr(target_os = "netbsd", link_name = "__clock_settime50")]
    pub fn clock_settime(
        clk_id: ::clockid_t,
        tp: *const ::timespec,
    ) -> ::c_int;
    pub fn __errno() -> *mut ::c_int;
    pub fn shm_open(
        name: *const ::c_char,
        oflag: ::c_int,
        mode: ::mode_t,
    ) -> ::c_int;
    pub fn memrchr(
        cx: *const ::c_void,
        c: ::c_int,
        n: ::size_t,
    ) -> *mut ::c_void;
    pub fn mkostemp(template: *mut ::c_char, flags: ::c_int) -> ::c_int;
    pub fn mkostemps(
        template: *mut ::c_char,
        suffixlen: ::c_int,
        flags: ::c_int,
    ) -> ::c_int;
    pub fn pwritev(
        fd: ::c_int,
        iov: *const ::iovec,
        iovcnt: ::c_int,
        offset: ::off_t,
    ) -> ::ssize_t;
    pub fn preadv(
        fd: ::c_int,


display: flex;
  background-color: #0000ff20;
  max-width: 400px;
  height: 200px;
  align-content: space-evenly;
}

input[type=range] {
  -webkit-appearance: none;
  /* background-color: green; */
  height:6px;
  margin-top: 12px;
  z-index: 0;
  overflow: visible;
}

/*
input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  background-color: var(--sdpi-color);
  width: 12px;
  height: 12px;
  border-radius: 20px;
  margin-top: -6px;
  border: none;
} */

:-webkit-slider-thumb {
  -webkit-appearance: none;
  background-color: var(--sdpi-color);
  width: 16px;
  height: 16px;
  border-radius: 20px;
  margin-top: -6px;
  border: 1px solid #999999;
}

.sdpi-item[type="range"] .sdpi-item-group {
  display: flex;
  flex-direction: column;
}

.xxsdpi-item[type="range"] .sdpi-item-group input {
  max-width: 204px;
}

.sdpi-item[type="range"] .sdpi-item-group span {
  margin-left: 0px !important;
}

.sdpi-item[type="range"] .sdpi-item-group > .sdpi-item-child {
  display: flex;
  flex-direction: row;
}

:disabled {
  color: #993333;
}

select,
select option {
  color: var(--sdpi-color);
}

select.disabled,
select option:disabled {
  color: #fd9494;
  font-style: italic;
}

.runningAppsContainer {
  display: none;
}

/* debug
div {
  background-color: rgba(64,128,255,0.2);
}
*/

.min80 > .sdpi-item-child {
  min-width: 80px;
}

.min100 > .sdpi-item-child {
  min-width: 100px;
}

.min120 > .sdpi-item-child {
  min-width: 120px;
}

.min140 > .sdpi-item-child {
  min-width: 140px;
}

.min160 > .sdpi-item-child {
  min-width: 160px;
}

.min200 > .sdpi-item-child {
  min-width: 200px;
}

.max40 {
  flex-basis: 40%;
  flex-grow: 0;
}

.max30 {
  flex-basis: 30%;
  flex-grow: 0;
}

.max20 {
  flex-basis: 20%;
  flex-grow: 0;
}

.up20 {
  margin-top: -20px;
}

.alignCenter {
  align-items: center;
}

.alignTop {
  align-items: flex-start;
}

.alignBaseline {
  align-items: baseline;
}

.noMargins,
.noMargins *,
.noInnerMargins * {
  margin: 0;
  padding: 0;
}

/**
input[type=range].vVertical {
    -webkit-appearance: none;
    background-color: green;
    margin-left: -60px;
    width: 100px;
    height:6px;
    margin-top: 0px;
    transform:rotate(90deg);
    z-index: 0;
    overflow: visible;
}

input[type=range].vHorizon {
    -webkit-appearan


DBRev", func(t *ftt.Test) {
			changes, _, err := GetAllAuthDBChange(ctx, "", 1136, 10, "")
			assert.Loosely(t, err, should.BeNil)
			assert.Loosely(t, changes, should.Match([]*AuthDBChange{
				testAuthDBGroupChange(ctx, t, "AuthGroup$groupB", ChangeGroupMembersAdded, 1136),
			}))
		})
		t.Run("Return error when target is invalid", func(t *ftt.Test) {
			_, _, err := GetAllAuthDBChange(ctx, "groupname", 0, 10, "")
			assert.Loosely(t, err, should.ErrLike("Invalid change log target \"groupname\""))
		})
	})
}

func TestGenerateChanges(t *testing.T) {
	t.Parallel()

	ftt.Run("GenerateChanges", t, func(t *ftt.Test) {
		ctx := auth.WithState(memory.Use(context.Background()), &authtest.FakeState{
			Identity:       "user:someone@example.com",
			IdentityGroups: []string{AdminGroup},
		})
		ctx = testsupport.SetTestContextSigner(ctx, "test-app-id", "test-app-id@example.com")
		ctx = info.SetImageVersion(ctx, "test-version")
		ctx = clock.Set(ctx, testclock.New(testCreatedTS))
		ctx, taskScheduler := tq.TestingContext(txndefer.FilterRDS(ctx), nil)

		assert.Loosely(t, datastore.Put(ctx, testAuthGroup(ctx, AdminGroup)), should.BeNil)

		//////////////////////////////////////////////////////////
		// Helper functions
		getChanges := func(ctx context.Context, authDBRev int64) []*AuthDBChange {
			ancestor := constructLogRevisionKey(ctx, authDBRev)
			query := datastore.NewQuery("AuthDBChange").Ancestor(ancestor)
			changes := []*AuthDBChange{}
			err := datastore.Run(ctx, query, func(change *AuthDBChange) {
				changes = append(changes, change)
			})
			assert.Loosely(t, err, should.BeNil)
			return changes
		}

		// The fields in AuthDBChange to ignore when comparing results;
		// these fields are not signficant to the test cases below.
		ignoredAuthDBChangeFields := cmpopts.IgnoreFields(AuthDBChange{},
			"Kind", "ID", "Parent", "Class", "Target", "Who", "When", "Comment", "AppVersion")

		validateChanges := func(ctx context.Context, msg string, authDBRev int64, actualChanges []*AuthDBChange, expectedChanges []*AuthDBChange) {
			changeCount := len(expectedChanges)
			if !check.Loosely(t, actualChanges, should.HaveLength(changeCount)) {
				t.Fatal(msg)
			}

			// Check each actual and exxpected changes are similar.
			for i := range changeCount {
				// Set the expected AuthDB revision to the given value.
				expectedChanges[i].AuthDBRev = authDBRev

				diff := cmp.Diff(actualChanges[i], expectedChanges[i], ignoredAuthDBChangeFields)
				if diff != "" {
					t.Errorf("%s - difference at index %d: %s", msg, i, diff)
				}
			}

			// Check AuthDBChange records are in datastore.
			sort.Slice(actualChanges, func(i, j int) bool {
				return actualChanges[i].ChangeType < actualChanges[j].ChangeType
			})
			if !check.Loosely(t, getChanges(ctx, authDBRev), should.Match(actualChanges)) {
				t.Fatal(msg)
			}
		}
		//////////////////////////////////////////////////////////

		t.Run("AuthGroup changes", func(t *ftt.Test) {
			t.Run("AuthGroup Created/Deleted", func(t *ftt.Test) {
				ag1 := makeAuthGroup(ctx, "group-1")
				_, err := CreateAuthGroup(ctx, ag1, "


  */
  run(argv:any):void;
}import { IFilter, Operator, Subject } from "./Types";
import { Entity } from "../main";

export interface IFlatFilter {
    test?: string;
    domain?: string;
    value?: number | boolean;
    operator?: Operator;
    entity: Entity;
}

export default class Filter {
    constructor(private filter?: IFilter) {}

    eval(entity: Entity) {
        if(this.filter === undefined) return true;

        if(this.filter.any_of !== undefined) {
            for(let f of this.filter.any_of) {
                if(new Filter(f).eval(entity)) return true;
            }
            return false;
        } else if(this.filter.all_of !== undefined) {
            for(let f of this.filter.all_of) {
                if(!new Filter(f).eval(entity)) return false;
            }
            return true;
        } else {
            let subj = this.resolveEntity(entity, this.filter.subject);
            if(subj === undefined)
                return false;
            return this.testFilter({ entity: subj, ...this.filter })
        }
    }

    resolveEntity(entity: Entity, subj?: Subject) {
        if(subj === undefined) return;
        return entity.getSubj(subj);
    }

    testFilter({ test, domain, value, operator, entity }: IFlatFilter & { entity: Entity }) {
        if(test === undefined) return false;

        let curr_value: boolean | number;
        let filter = entity.FILTERS.get(test.toUpperCase());
        if(typeof filter === "function") {
            curr_value = filter({ test, domain, value, operator, entity });
        } else {
            curr_value = entity.FLAGS.get(test.toUpperCase()) || false;
        }

        return this.test(value || true, curr_value, operator || "==");
    }
    test(val1: number | boolean, val2: number | boolean, op: string) {
        switch(op) {
            case "!=": case "<>": case "not": return val1 !== val2;
            case "==": case "=": case "equals": return val1 === val2;
            case "<": return val1 < val2;
            case "<=": return val1 <= val2;
            case ">": return val1 > val2;
            case ">=": return val1 >= val2;
        }
    }
}import {serviceNormalize} from "../Utils/AngularHelpers";

/**
 * Says to angular how and where inject a service or angular 1 component.
 */
export function Inject(token: Function | string) {
    return (target: any, key: string, index: number) => {

        // Create $inject array if not exists
        let $inject = target.$inject = target.$inject || [];
        // Obtain the name of service to put on $inject
        var name = typeof token === "string" ? token : serviceNormalize((token as any).name);
        // Ensure  array position exists
        while ($inject.length < index) {
            $inject.push("");
        }
        // Set the injection in the correct position.
        $inject[index] = name;
    }
}
import { Inject, Injectable } from '@angular/core';
import { BehaviorSubject, Observable } from "rxjs";
import { DOCUMENT } from "@angular/common";

export type Theme = 'dark' | 'light';

@Injectable({ providedIn: 'root' })
export class LayoutService {

  private theme = new BehaviorSubject<Theme>('dark');
  public theme$: Observable<Theme> = this.theme


Fill32Fast
	ldr r0, [r7, #8]
	add r8, r8, #1
	cmp r8, r0
	add sb, sb, r5
	blt _0232AC3C
	ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
	arm_func_end ov02_0232ABE4

	arm_func_start ov02_0232AC64
ov02_0232AC64: ; 0x0232AC64
	stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
	sub sp, sp, #0x30
	ldr r4, [sp, #0x58]
	mov sb, r2
	ldrb fp, [r0, #0xc]
	mov sl, r1
	add r1, sb, r4
	str r1, [sp, #0x28]
	ldr r2, [sp, #0x5c]
	mov r1, r3
	add r1, r1, r2
	cmp fp, #4
	str r1, [sp, #0x24]
	orreq r1, sl, sl, lsl #4
	orreq r1, r1, r1, lsl #8
	orrne r1, sl, sl, lsl #8
	str r3, [sp, #0xc]
	orr sl, r1, r1, lsl #16
	ldr r1, [sp, #0xc]
	mov r6, fp, lsl #6
	bic r1, r1, #7
	mov r4, r6, asr #2
	mov r2, r1, asr #2
	str r1, [sp, #0x2c]
	add r1, r1, r2, lsr #29
	ldr r2, [r0, #0x10]
	mov r3, r1, asr #3
	mul r1, r3, r2
	bic r3, sb, #7
	mov r5, r3, asr #2
	add r4, r6, r4, lsr #29
	str r3, [sp, #0x18]
	add r5, r3, r5, lsr #29
	mov r3, r4, asr #3
	str r3, [sp, #0x14]
	add r4, r1, r5, asr #3
	ldr r3, [sp, #0x24]
	ldr r5, [r0]
	ldr r1, [sp, #0x14]
	ldr r0, [sp, #0x28]
	mla r4, r1, r4, r5
	add r3, r3, #7
	bic r1, r3, #7
	str r1, [sp, #0x20]
	ldr r1, [sp, #0x14]
	add r0, r0, #7
	mul r1, r2, r1
	str r1, [sp, #0x10]
	ldr r2, [sp, #0x2c]
	ldr r1, [sp, #0x20]
	str r4, [sp, #0x1c]
	cmp r2, r1
	bic r6, r0, #7
	addge sp, sp, #0x30
	ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0232AD40:
	ldr r1, [sp, #0x2c]
	ldr r0, [sp, #0xc]
	cmp r1, r0
	movge r8, #0
	bge _0232AD60
	mov r1, r0
	ldr r0, [sp, #0x2c]
	sub r8, r1, r0
_0232AD60:
	ld


    @JvmField
    val AUDIO_L20 = "audio/L20"

    @JvmField
    val AUDIO_L24 = "audio/L24"

    @JvmField
    val AUDIO_L8 = "audio/L8"

    @JvmField
    val AUDIO_LPC = "audio/LPC"

    @JvmField
    val AUDIO_MATROSKA = "audio/matroska"

    @JvmField
    val AUDIO_MELP = "audio/MELP"

    @JvmField
    val AUDIO_MELP1200 = "audio/MELP1200"

    @JvmField
    val AUDIO_MELP2400 = "audio/MELP2400"

    @JvmField
    val AUDIO_MELP600 = "audio/MELP600"

    @JvmField
    val AUDIO_MHAS = "audio/mhas"

    @JvmField
    val AUDIO_MIDI_CLIP = "audio/midi-clip"

    @JvmField
    val AUDIO_MOBILE_XMF = "audio/mobile-xmf"

    @JvmField
    val AUDIO_MP4A_LATM = "audio/MP4A-LATM"

    @JvmField
    val AUDIO_MPA = "audio/MPA"

    @JvmField
    val AUDIO_MPA_ROBUST = "audio/mpa-robust"

    @JvmField
    val AUDIO_MPEG4_GENERIC = "audio/mpeg4-generic"

    @JvmField
    val AUDIO_OPUS = "audio/opus"

    @JvmField
    val AUDIO_PARITYFEC = "audio/parityfec"

    @JvmField
    val AUDIO_PCMA = "audio/PCMA"

    @JvmField
    val AUDIO_PCMA_WB = "audio/PCMA-WB"

    @JvmField
    val AUDIO_PCMU = "audio/PCMU"

    @JvmField
    val AUDIO_PCMU_WB = "audio/PCMU-WB"

    @JvmField
    val AUDIO_PRS_SID = "audio/prs.sid"

    @JvmField
    val AUDIO_QCELP = "audio/QCELP"

    @JvmField
    val AUDIO_RAPTORFEC = "audio/raptorfec"

    @JvmField
    val AUDIO_RED = "audio/RED"

    @JvmField
    val AUDIO_RTPLOOPBACK = "audio/rtploopback"

    @JvmField
    val AUDIO_RTP_ENC_AESCM128 = "audio/rtp-enc-aescm128"

    @JvmField
    val AUDIO_RTP_MIDI = "audio/rtp-midi"

    @JvmField
    val AUDIO_RTX = "audio/rtx"

    @JvmField
    val AUDIO_SCIP = "audio/scip"

    @JvmField
    val AUDIO_SMV = "audio/SMV"

    @JvmField
    val AUDIO_SMV0 = "audio/SMV0"

    @JvmField
    val AUDIO_SMV_QCP = "audio/SMV-QCP"

    @JvmField
    val AUDIO_SOFA = "audio/sofa"

    @JvmField
    val AUDIO_SPEEX = "audio/speex"

    @JvmField
    val AUDIO_SP_MIDI = "audio/sp-midi"

    @JvmField
    val AUDIO_T140C = "audio/t140c"

    @JvmField
    val AUDIO_T38 = "audio/t38"


sprintf, 'decimals',      '1.23',   '%.2f',   1.2345 ],
  [ fmt.sprintf, 'sign negative', '-1.23',  '%+.2f',  -1.234 ],
  [ fmt.sprintf, 'sign positive', '+1.23',  '%+.2f',  1.2345 ],
  [ fmt.sprintf, 'padding left',  '  1.23', '%6.2f',  1.2345 ],
  [ fmt.sprintf, 'padding right', '1.23  ', '%-6.2f', 1.2345 ]
])

segment('sprintf - literal', [
  [ fmt.sprintf, '100%', '100%', '%d%%', 100 ],
  [ fmt.sprintf, '60% + 40%', '60% + 40%', '%d%% + %d%%', 60, 40 ],
])

segment('sprintf - mixed', [
  [ fmt.sprintf, '%s %d %t',   'foo 1 true',       '%s %d %t',   'foo', 1.2, true   ],
  [ fmt.sprintf, '%S %.2f %T', 'FOO 1.24 boolean', '%S %.2f %T', 'foo', 1.235, true ]
])

// Tables
const labels:object = {
  'name': { label: 'Movie Name' },
  'release': { label: 'Release' },
  'director': { label: 'Director' }
}
const rows:Array<object> = [
  { name: 'Toy Story', release: 1995, director: 'John Lasseter' },
  { name: 'Monsters, Inc', release: 2001, director: 'Pete Docter' },
  { name: 'Finding Nemo', release: 2003, director: 'Andrew Stanton' }
]

const expectedDefault:string = [
  '┏━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━┓',
  '┃ Movie Name    ┃ Release ┃ Director       ┃',
  '┡━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━┩',
  '│ Toy Story     │ 1995    │ John Lasseter  │',
  '│ Monsters, Inc │ 2001    │ Pete Docter    │',
  '│ Finding Nemo  │ 2003    │ Andrew Stanton │',
  '└───────────────┴─────────┴────────────────┘'
].join('\n')

const expectedHeavy:string = [
  '┏━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━┓',
  '┃ Movie Name    ┃ Release ┃ Director       ┃',
  '┣━━━━━━━━━━━━━━━╋━━━━━━━━━╋━━━━━━━━━━━━━━━━┫',
  '┃ Toy Story     ┃ 1995    ┃ John Lasseter  ┃',
  '┃ Monsters, Inc ┃ 2001    ┃ Pete Docter    ┃',
  '┃ Finding Nemo  ┃ 2003    ┃ Andrew Stanton ┃',
  '┗━━━━━━━━━


 './iindex-service';

export class HttpServerService implements IHttpServerService{

  private _ports: Array<number>;
  private _app: any;
  private _application_name: string;
  private _certificate_obj: any;

  //public
  //TODO seperate the websocket server from web server
  constructor(
    app: any,
    port: any = 3000,
    certificate_location: string = "",
    key_location: string = ""
  ) {
    this._ports = [port];
    if (port.includes(",")) {
      this._ports = port.split(",");
    }
    this._app = app;
    this._application_name = "default";

    if (certificate_location && key_location) {
      this._certificate_obj = {
        "key": key_location,
        "cert": certificate_location
      };
    }
  }

  public get application_name(): string {
    return this._application_name;
  }

  public set application_name(value: string) {
    this._application_name = value;
  }

  private get_certificate_data() {
    return Promise.all([
      this.get_certificate_file_content(),
      this.get_key_file_content()
    ]);
  }

  private get_certificate_file_content() {
    console.debug(`Reading Certificate`);
    return new Promise((resolve, reject) => {
      fs.readFile(this._certificate_obj.cert, "utf-8", (err: any, data: any) => {
        if (err) {
          reject(err);
        }
        resolve(data);
      });
    });
  }

  private get_key_file_content() {
    console.debug(`Reading Key`);
    return new Promise((resolve, reject) => {
      fs.readFile(this._certificate_obj.key, "utf-8", (err: any, data: any) => {
        if (err) {
          reject(err);
        }
        resolve(data);
      });
    });
  }

  public start(): Promise<void> {
    return new Promise((resolve, reject) => {
      let server = null;
      console.debug('Starting Express HTTP Servers');
      this._ports.forEach((port: number, index: number) => {
        if (
          port === 443 ||
          port === 3443 ||
          port === 4443 ||
          port === 5443 ||
          port === 6443 ||
          port === 7443 ||
          port === 8443 ||
          port === 9443
        ) {
          console.debug('Setting Up Express HTTPS Server');
          this.get_certificate_data()
            .then((data: Array<any>) => {
              let cert_object = {
                "key": data[1],
                "cert": data[0]
              };

              server = https.createServer(cert_object, this._app);
              this._finalize_setup(server, port);
            })


/ CHECK-UNKNOWN: ff 1f 8c 04 <unknown>

sabd  z31.d, p7/m, z31.d, z31.d
// CHECK-INST: sabd	z31.d, p7/m, z31.d, z31.d
// CHECK-ENCODING: [0xff,0x1f,0xcc,0x04]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: ff 1f cc 04 <unknown>

// --------------------------------------------------------------------------//
// Test compatibility with MOVPRFX instruction.

movprfx z4.d, p7/z, z6.d
// CHECK-INST: movprfx	z4.d, p7/z, z6.d
// CHECK-ENCODING: [0xc4,0x3c,0xd0,0x04]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: c4 3c d0 04 <unknown>

sabd  z4.d, p7/m, z4.d, z31.d
// CHECK-INST: sabd	z4.d, p7/m, z4.d, z31.d
// CHECK-ENCODING: [0xe4,0x1f,0xcc,0x04]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: e4 1f cc 04 <unknown>

movprfx z4, z6
// CHECK-INST: movprfx	z4, z6
// CHECK-ENCODING: [0xc4,0xbc,0x20,0x04]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: c4 bc 20 04 <unknown>

sabd  z4.d, p7/m, z4.d, z31.d
// CHECK-INST: sabd	z4.d, p7/m, z4.d, z31.d
// CHECK-ENCODING: [0xe4,0x1f,0xcc,0x04]
// CHECK-ERROR: instruction requires: sve
// CHECK-UNKNOWN: e4 1f cc 04 <unknown>


;
            }

            // Setup parameters
            Parameters.Set(ToneMapShaderKeys.LuminanceTexture, luminanceResult.LocalTexture);
            Parameters.Set(ToneMapShaderKeys.LuminanceAverageGlobal, MathF.Log(adaptedLum, 2));
            Parameters.Set(ToneMapShaderKeys.Exposure, (float)Math.Pow(2.0, Exposure));
            Parameters.Set(ToneMapShaderKeys.KeyValue, keyValue);

            // Update operator parameters
            Operator.UpdateParameters(context);

            // Copy parameters to parent
            base.UpdateParameters(context);
        }
    }
}


     /// </summary>
        /// <param name="order"></param>
        /// <param name="orderDetails"></param>
        /// <param name="oldOrder"></param>
        public void PrintOrderAfterBuy(Order order, List<OrderDetail> orderDetails, Order oldOrder)
        {
            // 如果是本地打印账单才继续
            if (Resources.GetRes().PrintInfo.IsPrintBillAfterBuy && Resources.GetRes().IsLocalPrintCustomOrder)
            {
                Task.Factory.StartNew(() =>
                {
                    try
                    {

                        // 存储打印-属于该打印机打印的客户订单详情
                        Dictionary<Printer, List<OrderDetail>> printDetails = new Dictionary<Printer, List<OrderDetail>>();

                        // 循环获取所有订单详情
                        if (null != orderDetails)
                        {
                            // 循环获取所有订单详情
                            foreach (var item in orderDetails)
                            {
                                // 查询在该详情的产品名中有无跟打印和产品关联的
                                List<Ppr> pprs = Resources.GetRes().Pprs.Where(x => x.ProductId == item.ProductId).ToList();
                                if (null != pprs && pprs.Count > 0)
                                {
                                    foreach (var ppr in pprs)
                                    {
                                        // 获取有该详情有关联的打印机, 并确保是账单类型的, 并开启的
                                        List<Printer> printers = Resources.GetRes().Printers.Where(x => x.PrinterId == ppr.PrinterId && x.IsEnable == 1).Distinct().ToList();

                                        if (null != printers)
                                        {
                                            foreach (var printer in printers)
                                            {
                                                if (printDetails.ContainsKey(printer))
                                                {
                                                    printDetails[printer].Add(item);
                                                }
                                                else
                                                {
                                                    printDetails.Add(printer, new List<OrderDetail>() { item });
                                                }
                                            }
                                        }
                                    }
                                }

                                // 获取所有打印机中的开启的并打印所有的打印机
                                List<Printer> mainPrinters = Resources.GetRes().Printers.Where(x => x.IsEnable == 1 && x.IsMain == 1).Distinct().ToList();
                                if (null != mainPrinters)
                                {
                                    foreach (var printer in mainPrinters)
                                    {
                                        if (printDetails.ContainsKey(printer))
                                        {
                                            if (!printDetails[printer].Contains(item))
                                                printDetails[printer].Add(item);
                                        }
                                        else
                                        {
                                            printDetails.Add(printer, new List<OrderDetail>() { item });
                                        }

                                    }
                                }
                            }
                        }

                        // 打印客户账单
                        // 开始循环打印客户账单部分
                        Dictionary<Printer, List<OrderDetail>> printOrderDetails = printDetails.Where(x => x.Key.PrintType == 0 || x.Key.PrintType == 2).ToDictionary(x => x.Key, x => x.Value);
                        PrintCustomerOrderAfterBuy(printOrderDetails, order, oldOrder);


            = SDLK_u;
  key_wait_or_collect.sym = SDLK_PERIOD;
  key_zoom_in.sym         = SDLK_z;
  key_zoom_out.sym        = SDLK_x;
  music_volume            = {MIX_MAX_VOLUME / 3};
  sdl_delay               = 1;
  snapshot_freq           = ENABLE_SAVE_SNAPSHOT_FREQ;
  sound_volume            = {MIX_MAX_VOLUME / 2};

  // key_unused1.sym  = SDLK_TAB;
  // key_unused1.mod  = KMOD_NUM;
  // key_unused2.sym  = SDLK_TAB;
  // key_unused2.mod  = KMOD_NUM;
  // key_unused3.sym  = SDLK_TAB;
  // key_unused3.mod  = KMOD_NUM;
  // key_unused4.sym  = SDLK_TAB;
  // key_unused4.mod  = KMOD_NUM;
  // key_unused5.sym  = SDLK_TAB;
  // key_unused5.mod  = KMOD_NUM;
  // key_unused6.sym  = SDLK_TAB;
  // key_unused6.mod  = KMOD_NUM;
  // key_unused7.sym  = SDLK_TAB;
  // key_unused7.mod  = KMOD_NUM;
  // key_unused8.sym  = SDLK_TAB;
  // key_unused8.mod  = KMOD_NUM;
  // key_unused9.sym  = SDLK_TAB;
  // key_unused9.mod  = KMOD_NUM;
  // key_unused10.sym  = SDLK_TAB;
  // key_unused10.mod  = KMOD_NUM;
  // key_unused11.sym  = SDLK_TAB;
  // key_unused11.mod  = KMOD_NUM;
  // key_unused12.sym  = SDLK_TAB;
  // key_unused12.mod  = KMOD_NUM;
  // key_unused13.sym  = SDLK_TAB;
  // key_unused13.mod  = KMOD_NUM;
  // key_unused14.sym  = SDLK_TAB;
  // key_unused14.mod  = KMOD_NUM;
  // key_unused15.sym  = SDLK_TAB;
  // key_unused15.mod  = KMOD_NUM;
  // key_unused16.sym  = SDLK_TAB;
  // key_unused16.mod  = KMOD_NUM;
  // key_unused17.sym  = SDLK_TAB;
  // key_unused17.mod  = KMOD_NUM;
  // key_unused18.sym  = SDLK_TAB;
  // key_unused18.mod  = KMOD_NUM;
  // key_unused19.sym  = SDLK_TAB;
  // key_unused19.mod  = KMOD_NUM;
  // key_unused20.sym  = SDLK_TAB;
  // key_unused20.mod  = KMOD_NUM;
  //
  player_bodyparts[ BODYPART_EYES ]  = "bodypart_eyes1";
  player_bodyparts[ BODYPART_FACE ]  = "bodypart_face1";
  player_bodyparts[ BODYPART_TORSO ] = "bodypart_torso1";
  player_bodyparts[ BODYPART_LEGS ]  = "bodypart_legs1";
  player_bodyparts[ BODYPART_HAT ]   = "bodypart_hat1";
}

//
// Now all templates are loaded, make sure we have some default config.
// for example, for bodyparts.
//
void Config::final_init(void)
{
  TRACE_AND_INDENT();

  //
  // Initialize with random bodyparts if not set
  //
  FOR_ALL_BODYPART(iter)
  {
    TRACE_NO_INDENT();
    auto curr_bodypart = get(player


 line
    }

    public void method_B() {
        method_C();
    }

    public void method_C() {
        System.err.println("method_C:: line 1");
        System.err.println("method_C:: line 2");
        System.err.println("method_C:: line 3");
        System.err.println("method_C:: line 4");
    }
}
/*
 * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/*
 * @test
 *
 * @summary converted from VM Testbase nsk/jdi/ClassType/newInstance/newinstance005.
 * VM Testbase keywords: [jpda, jdi]
 * VM Testbase readme:
 * DESCRIPTION:
 *     The test checks up the method com.sun.jdi.ClassType.newInstance()
 *     Test checks up the following assertion:
 *          Primitive arguments must be either assignment compatible with
 *          the argument type or must be convertible to the argument type
 *          without loss of information.
 *     for every primitive type.
 * COMMENTS:
 *     Test was fixed according to test bug:
 *     4778296 TEST_BUG: debuggee VM intemittently hangs after resuming
 *     - handling VMStartEvent was removed from the debugger part of the test
 *     Test fixed according to test bug:
 *     4798088 TEST_BUG: setBreakpoint() method depends of the locations implementation
 *     - using standard Debugee.setBreakpoint() method
 *     - adjusting source line numbers used for setting breakpoint
 *
 * @library /vmTestbase
 *          /test/lib
 * @run driver jdk.test.lib.FileInstaller . .
 * @build nsk.jdi.ClassType.newInstance.newinstance005
 *        nsk.jdi.ClassType.newInstance.newinstance005a
 * @run main/othervm PropertyResolvingWrapper
 *      nsk.jdi.ClassType.newInstance.newinstance005
 *      -verbose
 *      -arch=${os.family}-${os.simpleArch}
 *      -waittime=5
 *      -debugee.vmkind=java
 *      -transport.address=dynamic
 *      "-debugee.vmkeys=${test.vm.opts} ${test.java.opts}"
 */

/*
 * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston


// in general/textedit_struct.h:
// textedit_t, enum te_mode

extern void textedit_init(textedit_t *te, const int alloc);
extern void textedit_free(textedit_t *te);
extern textedit_t string_to_textedit(char *string);
extern void textedit_erase_selection(textedit_t *te, int *len);
extern void textedit_copy_selection_clipboard(textedit_t *te);
extern int textedit_find_prev_linebreak(textedit_t *te);
extern int textedit_find_next_linebreak(textedit_t *te);
extern int textedit_find_prev_wordstart(textedit_t *te);
extern int textedit_find_next_wordstart(textedit_t *te);
extern int textedit_find_next_wordend(textedit_t *te);
extern void textedit_set_new_text(textedit_t *te, const char *str);
extern void textedit_clear_then_set_new_text(textedit_t *te, const char *str);
extern void textedit_add(textedit_t *te, const char *str);
extern void textedit_prev_next_logic(textedit_t *te);
extern int ctrl_textedit_invis(textedit_t *te, rect_t box);
extern void ctrl_textedit_draw(textedit_t *te, rect_t box, col_t colour);
extern int ctrl_textedit(textedit_t *te, rect_t box, col_t colour);
extern void draw_textedit_cursor(xy_t offset, double scale, int bidi, int bidi_change, double drawing_thickness);

extern textedit_t *cur_textedit, *prev_textedit, *next_textedit;


== pygame.MOUSEBUTTONDOWN and not exit_confirmation:
                x, y = event.pos
                col = x // 100
                row = y // 100
                if BOARD[row][col] == '':
                    BOARD[row][col] = CURRENT_PLAYER
                    if check_winner(BOARD, CURRENT_PLAYER):
                        draw_grid()
                        draw_marks()
                        pygame.display.update()
                        print(f"{CURRENT_PLAYER} wins!")
                        pygame.time.delay(2000)
                        running = False
                    elif is_board_full(BOARD):
                        draw_grid()
                        draw_marks()
                        pygame.display.update()
                        print("It's a tie!")
                        pygame.time.delay(2000)
                        running = False
                    else:
                        CURRENT_PLAYER = 'O' if CURRENT_PLAYER == 'X' else 'X'

        pygame.time.delay(100)
    pygame.quit()

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--mode', choices=['pva', 'pvp'], default='pva', help='Game mode: pva (Player vs AI) or pvp (Player vs Player)')
    args = parser.parse_args()

    # Update starting player to alternate between games
    # This requires storing the last starting player
    # For simplicity, we'll store it in a file
    last_player_file = 'last_player.txt'
    if os.path.exists(last_player_file):
        with open(last_player_file, 'r') as f:
            last_player = f.read().strip()
        starting_player = 'O' if last_player == 'X' else 'X'
    else:
        starting_player = 'X'  # Default starting player

    # Save the current starting player for the next game
    with open(last_player_file, 'w') as f:
        f.write(starting_player)

    # Reset the game board
    BOARD = [['' for _ in range(3)] for _ in range(3)]

    game_loop(game_mode=args.mode, starting_player=starting_player)


vice=gpu [--run_mode trt_fp16]

# 行人跟踪，指定配置文件路径，模型路径和测试视频，在配置文件```deploy/pipeline/config/infer_cfg_pphuman.yml```中的MOT部分enable设置为```True```
# 命令行中指定的模型路径优先级高于配置文件
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml --video_file=test_video.mp4 --device=gpu --model_dir det=ppyoloe/ [--run_mode trt_fp16]

# 行人属性识别，指定配置文件路径和测试视频，在配置文件```deploy/pipeline/config/infer_cfg_pphuman.yml```中的ATTR部分enable设置为```True```
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml --video_file=test_video.mp4 --device=gpu [--run_mode trt_fp16]

# 行为识别，以摔倒识别为例，指定配置文件路径和测试视频，在配置文件```deploy/pipeline/config/infer_cfg_pphuman.yml```中的SKELETON_ACTION部分enable设置为```True```
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml --video_file=test_video.mp4 --device=gpu [--run_mode trt_fp16]

# 行人跨境跟踪，指定配置文件路径和测试视频列表文件夹，在配置文件```deploy/pipeline/config/infer_cfg_pphuman.yml```中的REID部分enable设置为```True```
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml --video_dir=mtmct_dir/ --device=gpu [--run_mode trt_fp16]
```

### 参数说明

| 参数 | 是否必须|含义 |
|-------|-------|----------|
| --config | Yes | 配置文件路径 |
| --model_dir | Option | PP-Human中各任务模型路径，优先级高于配置文件, 例如`--model_dir det=better_det/ attr=better_attr/`|
| --image_file | Option | 需要预测的图片 |
| --image_dir  | Option |  要预测的图片文件夹路径   |
| --video_file | Option | 需要预测的视频 |
| --camera_id | Option | 用来预测的摄像头ID，默认为-1(表示不使用摄像头预测，可设置为：0 - (摄像头数目-1) )，预测过程中在可视化界面按`q`退出输出预测结果到：output/output.mp4|
| --device | Option | 运行时的设备，可选择`CPU/GPU/XPU`，默认为`CPU`|
| --output_dir | Option|可视化结果保存的根


Name = table.getTableName();
                GenUtils.initTable(table);
                table.setDataName(dataName);
                int row = baseMapper.insert(table);
                if (row > 0) {
                    // 保存列信息
                    List<GenTableColumn> genTableColumns = SpringUtils.getAopProxy(this).selectDbTableColumnsByName(tableName, dataName);
                    List<GenTableColumn> saveColumns = new ArrayList<>();
                    for (GenTableColumn column : genTableColumns) {
                        GenUtils.initColumnField(column, table);
                        saveColumns.add(column);
                    }
                    if (CollUtil.isNotEmpty(saveColumns)) {
                        genTableColumnMapper.insertBatch(saveColumns);
                    }
                }
            }
        } catch (Exception e) {
            throw new ServiceException("导入失败：" + e.getMessage());
        }
    }

    /**
     * 根据表名称查询列信息
     *
     * @param tableName 表名称
     * @param dataName  数据源名称
     * @return 列信息
     */
    @DS("#dataName")
    @Override
    public List<GenTableColumn> selectDbTableColumnsByName(String tableName, String dataName) {
        Table<?> table = ServiceProxy.metadata().table(tableName);
        if (ObjectUtil.isNull(table)) {
            return new ArrayList<>();
        }
        LinkedHashMap<String, Column> columns = table.getColumns();
        List<GenTableColumn> tableColumns = new ArrayList<>();
        columns.forEach((columnName, column) -> {
            GenTableColumn tableColumn = new GenTableColumn();
            tableColumn.setIsPk(column.isPrimaryKey() ? "1" : "0");
            tableColumn.setColumnName(column.getName());
            tableColumn.setColumnComment(column.getComment());
            tableColumn.setColumnType(column.getOriginType().toLowerCase());
            tableColumn.setSort(column.getPosition());
            tableColumn.setIsRequired(column.isNullable() ? "0" : "1");
            tableColumn.setIsIncrement(column.isAutoIncrement() ? "1" : "0");
            tableColumns.add(tableColumn);
        });
        return tableColumns;
    }

    /**
     * 预览代码
     *
     * @param tableId 表编号
     * @return 预览数据列表
     */
    @Override
    public Map<String, String> previewCode(Long tableId) {
        Map<String, String> dataMap = new LinkedHashMap<>();
        // 查询表信息
        GenTable table = baseMapper.selectGenTableById(tableId);
        List<Long> menuIds = new ArrayList<>();
        for (int i = 0; i < 6; i++) {
            menuIds.add(identifierGenerator.nextId(null).longValue());
        }
        table.setMenuIds(menuIds);
        // 设置主键列信息
        setPkColumn(table);
        VelocityInitializer.initVelocity();

        VelocityContext context = VelocityUtils.prepareContext(table);

        // 获取模板列表
        List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
        for (String template : templates) {
            // 渲染模板
            StringWriter sw = new StringWriter();
            Template tpl = Velocity.getTemplate(template, Constants.UTF8);
            tpl.merge(context, sw);
            dataMap.put(template, sw.toString());
        }
        return dataMap;
    }

    /**
     * 生成代码（下载方式）
     *
     * @param tableId 表名称
     * @return 数据
     */
    @Override
    public byte[] downloadCode(Long tableId) {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();


count;

  // Act: Find nodes based on parent-child relationships
  auto hierarchy_analysis = query_->ExecuteBatch([&](const auto& q) {
    // Find all root nodes (nodes without parents)
    q.BatchCollect(roots, [](const ConstVisitedNode& visited) {
      return visited.node_impl
        && visited.node_impl->AsGraphNode().GetParent().IsValid() == false;
    });

    // Find all leaf nodes (nodes without children)
    q.BatchCollect(leaves, [](const ConstVisitedNode& visited) {
      return visited.node_impl
        && visited.node_impl->AsGraphNode().GetFirstChild().IsValid() == false;
    });

    // Find intermediate nodes (have both parent and children)
    q.BatchCount(intermediate_count, [](const ConstVisitedNode& visited) {
      if (!visited.node_impl)
        return false;
      auto& graph = visited.node_impl->AsGraphNode();
      return graph.GetParent().IsValid() && graph.GetFirstChild().IsValid();
    });
  });

  // Assert: Hierarchical analysis should complete successfully
  EXPECT_TRUE(hierarchy_analysis);
  EXPECT_GE(roots.size(), 2); // Should have Level1 and UI as roots
  EXPECT_GT(leaves.size(), 5); // Many leaf nodes in the hierarchy
  EXPECT_GT(intermediate_count.value_or(0), 0U);
  EXPECT_GT(hierarchy_analysis.total_matches, 10); // Should find many nodes
}

NOLINT_TEST_F(SceneQueryIntegrationTest,
  Query_ComplexGameplayScenario_MultipleSystemsIntegration)
{
  // Arrange: Use default game scene
  CreateGameSceneHierarchy();

  // Act: Simulate game systems working together
  struct GameSystemQueries {
    std::optional<SceneNode> player;
    std::vector<SceneNode> visible_enemies;
    std::vector<SceneNode> nearby_items;
    std::vector<SceneNode> ui_elements;
    QueryResult performance_metrics;
    bool has_interactive_objects;
  };

  GameSystemQueries game_data;
  std::optional<size_t> performance_count;
  std::optional<bool> interactive_check;

  auto gameplay_batch = query_->ExecuteBatch([&](const auto& q) {
    // Player system: Find player
    q.BatchFindFirst(game_data.player, NodeNameEquals("Player"));

    // AI system: Find visible enemies for pathfinding
    q.BatchCollect(
      game_data.visible_enemies, [](const ConstVisitedNode& visited) {
        return visited.node_impl
          && visited.node_impl->GetName().starts_with("Enemy")
          && visited.node_impl->GetFlags().GetEffectiveValue(
            SceneNodeFlags::kVisible);
      });

    // Item system: Find collectible items
    q.BatchCollect(game_data.nearby_items, NodeNameStartsWith("Potion"));

    // UI system: Find UI elements
    q.BatchCollect(game_data.ui_elements, [](const ConstVisitedNode& visited) {
      if (!visited.node_impl)
        return false;
      auto parent = visited.node_impl->AsGraphNode().GetParent();
      // Simplified check for UI children
      return visited.node_impl->GetName() == "MainMenu"
        || visited.node_impl->GetName() == "HealthBar"
        || visited.node_impl->GetName() == "Inventory";
    });

    // Performance system: Count total active objects
    q.BatchCount(performance_count, [](const ConstVisitedNode& visited) {
      return visited.node_impl
        && visited.node_impl->GetFlags().GetEffectiveValue(
          SceneNodeFlags::kVisible);
    });

    // Interaction system: Check for interactive objects
    q.BatchAny(interactive_check, [](const Const


.is_discardable = true;

		raster_depth_buffer = rd->texture_create(tf, RD::TextureView());
	}

	rd->submit();
	rd->sync();

	/* STEP 3: Raster the geometry to UV2 coords in the atlas textures GPU*/

	_raster_geometry(rd, atlas_size, atlas_slices, grid_size, bounds, p_bias, slice_triangle_count, position_tex, unocclude_tex, normal_tex, raster_depth_buffer, rasterize_shader, raster_base_uniform);

#ifdef DEBUG_TEXTURES

	for (int i = 0; i < atlas_slices; i++) {
		Vector<uint8_t> s = rd->texture_get_data(position_tex, i);
		Ref<Image> img = Image::create_from_data(atlas_size.width, atlas_size.height, false, Image::FORMAT_RGBAF, s);
		img->save_exr("res://1_position_" + itos(i) + ".exr", false);

		s = rd->texture_get_data(normal_tex, i);
		img->set_data(atlas_size.width, atlas_size.height, false, Image::FORMAT_RGBAH, s);
		img->save_exr("res://1_normal_" + itos(i) + ".exr", false);
	}
#endif

#define FREE_RASTER_RESOURCES       \
	rd->free_rid(rasterize_shader); \
	rd->free_rid(sampler);          \
	rd->free_rid(raster_depth_buffer);

	/* Plot direct light */

	Ref<RDShaderFile> compute_shader;
	String defines = "";
	defines += "\n#define CLUSTER_SIZE " + uitos(cluster_size) + "\n";

	if (p_bake_sh) {
		defines += "\n#define USE_SH_LIGHTMAPS\n";
	}

	if (p_texture_for_bounces) {
		defines += "\n#define USE_LIGHT_TEXTURE_FOR_BOUNCES\n";
	}

	if (p_bake_shadowmask) {
		defines += "\n#define USE_SHADOWMASK\n";
	}

	compute_shader.instantiate();
	err = compute_shader->parse_versions_from_text(lm_compute_shader_glsl, defines);
	if (err != OK) {
		FREE_TEXTURES
		FREE_BUFFERS
		FREE_RASTER_RESOURCES
		memdelete(rd);

		if (rcd != nullptr) {
			memdelete(rcd);
		}

		compute_shader->print_errors("compute_shader");
	}
	ERR_FAIL_COND_V(err != OK, BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES);

	// Unoccluder
	RID compute_shader_unocclude = rd->shader_create_from_spirv(compute_shader->get_spirv_stages("unocclude"));
	ERR_FAIL_COND_V(compute_shader_unocclude.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES); // internal check, should not happen
	RID compute_shader_unocclude_pipeline = rd->compute_pipeline_create(compute_shader_unocclude);

	// Direct light
	RID compute_shader_primary = rd->shader_create_from_spirv(compute_shader->get_spirv_stages("primary"));
	ERR_FAIL_COND_V(compute_shader_primary.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES); // internal check, should not happen
	RID compute_shader_primary_pipeline = rd->compute_pipeline_create(compute_shader_primary);

	// Indirect light
	RID compute_shader_secondary = rd->shader_create_from_spirv(compute_sh


ab/mmdetection/blob/master/configs/yolact/yolact_r101_1x8_coco.py) | [model](https://openmmlab.oss-cn-hangzhou.aliyuncs.com/mmdetection/v2.0/yolact/yolact_r101_1x8_coco_20200908-4cbe9101.pth) |

*Note: The FPS is evaluated by the [original implementation](https://github.com/dbolya/yolact). When calculating FPS, only the model inference time is taken into account. Data loading and post-processing operations such as converting masks to RLE code, generating COCO JSON results, image rendering are not included.

## Training

All the aforementioned models are trained with a single GPU. It typically takes ~12GB VRAM when using resnet-101 as the backbone. If you want to try multiple GPUs training, you may have to modify the configuration files accordingly, such as adjusting the training schedule and freezing batch norm.

```Shell
# Trains using the resnet-101 backbone with a batch size of 8 on a single GPU.
./tools/dist_train.sh configs/yolact/yolact_r101.py 1
```

## Testing

Please refer to [mmdetection/docs/getting_started.md](https://github.com/open-mmlab/mmdetection/blob/master/docs/getting_started.md#inference-with-pretrained-models).

## Citation

If you use YOLACT or this code base in your work, please cite

```latex
@inproceedings{yolact-iccv2019,
  author    = {Daniel Bolya and Chong Zhou and Fanyi Xiao and Yong Jae Lee},
  title     = {YOLACT: {Real-time} Instance Segmentation},
  booktitle = {ICCV},
  year      = {2019},
}
```

<!-- For YOLACT++, please cite

```latex
@misc{yolact-plus-arxiv2019,
  title         = {YOLACT++: Better Real-time Instance Segmentation},
  author        = {Daniel Bolya and Chong Zhou and Fanyi Xiao and Yong Jae Lee},
  year          = {2019},
  eprint        = {1912.06218},
  archivePrefix = {arXiv},
  primaryClass  = {cs.CV}
}
``` -->
# InstaBoost for MMDetection

<!-- [ALGORITHM] -->

Configs in this directory is the implementation for ICCV2019 paper "InstaBoost: Boosting Instance Segmentation Via Probability Map Guided Copy-Pasting" and provided by the authors of the paper. InstaBoost is a data augmentation method for object detection and instance segmentation. The paper has been released on [`arXiv`](https://arxiv.org/abs/1908.07801).

```latex
@inproceedings{fang2019instaboost,
  title={Instaboost: Boosting instance segmentation via probability map guided copy-pasting},
  author={Fang, Hao-Shu and Sun, Jianhua and Wang, Runzhong and Gou, Minghao and Li, Yong-Lu and Lu, Cewu},
  booktitle={Proceedings of the IEEE International Conference on Computer Vision},
  pages={682--691},
  year={2019}
}
```

## Usage

### Requirements

You need to install `instaboostfast` before using it.

```shell
pip install instaboostfast
```

The code and more details can be found [here](https://github.com/GothicAi/Instaboost).

### Integration with MMDetection

Insta


border-bottom: 1px solid;
}

p{
    text-align: justify;
    color: black;
    font-weight: 600;
    font-size: 24px;
    line-height: 36px;
    padding: 0;
    margin: 0;
    margin-top: 2%;
  }

.isi{
    margin-bottom: 5%;
    border-bottom: 1px solid;
}

.column{
    padding-left: 30px;
}

.variabel{
    width:35%;
    font-weight: 600;
}

.size{
  height: 90%;
  width:100%;
  border: 1px solid ;
}

.btn-flat {
    background-color: rgb(0, 0, 0);
    color: white;
  }

.btn-xxl {
    padding: 1rem 1.5rem;
    font-size: 1.5rem;
}@import './base.css';

#app {
  max-width: 1280px;
  margin: 0 auto;
  padding: 2rem;
  font-weight: normal;
}

a,
.green {
  text-decoration: none;
  color: hsla(160, 100%, 37%, 1);
  transition: 0.4s;
  padding: 3px;
}

@media (hover: hover) {
  a:hover {
    background-color: hsla(160, 100%, 37%, 0.2);
  }
}

@media (min-width: 1024px) {
  body {
    display: flex;
    place-items: center;
  }

  #app {
    display: grid;
    grid-template-columns: 1fr 1fr;
    padding: 0 2rem;
  }
}
/* color palette from <https://github.com/vuejs/theme> */
:root {
  --vt-c-white: #ffffff;
  --vt-c-white-soft: #f8f8f8;
  --vt-c-white-mute: #f2f2f2;

  --vt-c-black: #181818;
  --vt-c-black-soft: #222222;
  --vt-c-black-mute: #282828;

  --vt-c-indigo: #2c3e50;

  --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
  --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
  --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
  --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);

  --vt-c-text-light-1: var(--vt-c-indigo);
  --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
  --vt-c-text-dark-1: var(--vt-c-white);
  --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
}

/* semantic color variables for this project */
:root {
  --color-background: var(--vt-c-white);
  --color-background-soft: var(--vt-c-white-soft);
  --color-background-mute: var(--vt-c-white-mute);

  --color-border: var(--vt-c-divider-light-2);
  --color-border-hover: var(--vt-c-divider-light-1);

  --color-heading: var(--vt-c-text-light-1);
  --color-text: var(--vt-c-text-light-1);

  --section-gap: 160px;
}

@media (prefers-color-scheme: dark) {
  :root {
    --color-background: var(--vt-c-black);
    --color-background-soft: var(--vt-c-black-s


# Set random number generator
np.random.seed(2020)

# Initialize step_end, t_range, n, v_n and i
t_range = np.arange(0, t_max, dt)
step_end = len(t_range)
n = 500
v_n = el * np.ones([n, step_end])
i = i_mean * (1 + 0.1 * (t_max / dt)**(0.5) * (2 * np.random.random([n, step_end]) - 1))

# Initialize spikes and spikes_n
spikes = {j: [] for j in range(n)}
spikes_n = np.zeros([step_end])

# Loop over time steps
for step, t in enumerate(t_range):

  # Skip first iteration
  if step == 0:
    continue

  # Compute v_n
  v_n[:, step] = v_n[:, step - 1] + (dt / tau) * (el - v_n[:, step - 1] + r*i[:, step])

  # Initialize boolean numpy array `spiked` with v_n > v_thr
  spiked = (v_n[:,step] >= vth)

  # Set relevant values of v_n to resting potential using spiked
  v_n[spiked,step] = vr

  # Collect spike times
  for j in np.where(spiked)[0]:
    spikes[j] += [t]
    spikes_n[step] += 1

# Collect mean spiking rate
spikes_mean = spikes_n / n

# Plot multiple realizations of Vm, spikes and mean spike rate
with plt.xkcd():
  plot_all(t_range, v_n, spikes=spikes, spikes_mean=spikes_mean)


và thu nhập từ thành tích của Academia Sinica phải được mua dựa trên các Biện pháp giám sát và quản lý hoạt động mua sắm phát triển và nghiên cứu khoa học và công nghệ, Các điểm chính của hoạt động mua sắm phát triển và nghiên cứu khoa học và công nghệ của Academia Sinica, hoặc các quy định có liên quan của Luật Mua sắm Chính phủ.

[Những điểm chính trong quản lý thu nhập và chi phí phát sinh từ quyền sở hữu trí tuệ và thành tích của Academia Sinica] Theo những điểm chính của Academia Sinica, cần tuân thủ những quy định nào khi đơn đăng ký chi tiêu liên quan đến mua sắm?

Khi việc sử dụng chi tiêu liên quan đến mua sắm, việc này phải được thực hiện theo các Biện pháp giám sát và quản lý đối với hoạt động mua sắm nghiên cứu và phát triển khoa học và công nghệ, những điểm chính trong hoạt động mua sắm nghiên cứu và phát triển khoa học và công nghệ của Academia Sinica và các quy định liên quan của Luật Mua sắm Chính phủ.

[Những điểm chính trong quản lý thu nhập và chi phí phát sinh từ quyền sở hữu trí tuệ và thành tích của Academia Sinica] Chúng ta nên tuân thủ những điểm quản lý nào khi mua hoạt động nghiên cứu và phát triển khoa học và công nghệ?

Khi tiến hành mua sắm cho nghiên cứu và phát triển khoa học và công nghệ


r[coordinates, Kind.DEPENDENCY] = Reason.Imported(imports)
      true
    } else {
      false
    }
  }

  private fun containsAndroidTestInstrumentationRunner(
    coordinates: Coordinates,
    capability: BinaryClassCapability,
    context: GraphViewVisitor.Context,
  ): Boolean {
    val testInstrumentationRunner = context.project.testInstrumentationRunner ?: return false

    return if (capability.classes.contains(testInstrumentationRunner)) {
      reportBuilder[coordinates, Kind.DEPENDENCY] = Reason.TestInstrumentationRunner(testInstrumentationRunner)
      true
    } else {
      false
    }
  }

  private fun usesConstantByBytecode(
    coordinates: Coordinates,
    capability: ConstantCapability,
    context: GraphViewVisitor.Context,
  ): Boolean {
    // This test is slightly wrong:
    // 1. Inferred constants are missing the name of the constant, meaning we can only match by value and descriptor,
    //    leading to false positives.
    // 2. Not only that, but there is certainly a 1-to-many relationship between value/descriptor on the consumer side
    //    and constants on the producer side.
    val inferredUsages = context.project.inferredConstants
    val usedConstants = capability.constants.asSequence()
      .flatMap { it.value }
      .filter { candidate ->
        val descriptor = candidate.descriptor
        val value = candidate.value

        inferredUsages.any { usage ->
          descriptor == usage.descriptor && value == usage.value
        }
      }
      .toSortedSet()

    val candidateImports = capability.constants.asSequence()
      .map { (fqcn, _) -> fqcn.replace('$', '.') }
      .toSet()

    // This test is slightly wrong in a couple of ways:
    // 1. Something might be imported but not used.
    // 2. The thing being imported might be an annotation, and those are generally compileOnly
    // 3. The way this test is used in Reason would result in misleading output about _how_ the dep is being used
    val usedImports = context.project.imports.asSequence()
      .filter { import -> candidateImports.contains(import) }
      .toSet()

    // Because both of the above tests are "slightly wrong," we combine them and hope their deficiencies cancel each
    // other out. The import test should ensure we don't have a false positive and declare an unused dependency as used.
    // The ldc test will restrict the import heuristic, allowing us to report more meaningful (inferred) usage
    // information.
    return if (usedImports.isNotEmpty() && usedConstants.isNotEmpty()) {
      reportBuilder[coordinates, Kind.DEPENDENCY] = Reason.ConstantBytecode(usedConstants)
      true
    } else {
      false
    }
  }

  private fun usesConstantByImport(
    coordinates: Coordinates,
    capability: ConstantCapability,
    context: GraphViewVisitor.Context,
  ): Boolean {
    fun optionalStarImport(fqcn: String): List<String> {
      return if (fqcn.contains(".")) {
        listOf("${fqcn.substringBeforeLast('.')}.*")
      } else {
        // "fqcn" is not in a package, and so contains no dots
        // a star import makes no sense in this context
        emptyList()
      }
    }

    // "Companion" is highly suggestive of a Kotlin dependency, in which case constant imports look like
    // ```
    // import com.foo.Companion.CONSTANT
    // ```
    fun optionalCompanionImport(names: Set<String>, fqcn: String): List<String> {
      return if ("Companion" in names) {
        names.map { name -> "$fqcn.Companion.$name" }
      } else {
        emptyList()
      }
    }

    val ktFiles = capability


is", "\u6234\u7ef4\u65af" },
            { "America/Santo_Domingo", Atlantic },
            { "timezone.excity.America/Aruba", "\u963f\u9c81\u5df4" },
            { "timezone.excity.Asia/Qyzylorda", "\u514b\u5b5c\u6d1b\u5c14\u8fbe" },
            { "America/Glace_Bay", Atlantic },
            { "Asia/Magadan", Magadan },
            { "SystemV/PST8", Pitcairn },
            { "timezone.excity.Indian/Mauritius", "\u6bdb\u91cc\u6c42\u65af" },
            { "America/St_Barthelemy", Atlantic },
            { "timezone.excity.America/Argentina/La_Rioja", "\u62c9\u91cc\u5965\u54c8" },
            { "Africa/Luanda", Africa_Western },
            { "timezone.excity.Europe/Mariehamn", "\u739b\u4e3d\u6e2f" },
            { "timezone.excity.America/St_Johns", "\u5723\u7ea6\u7ff0\u65af" },
            { "timezone.excity.America/St_Barthelemy", "\u5723\u5df4\u6cf0\u52d2\u7c73\u5c9b" },
            { "timezone.excity.America/Santiago", "\u5723\u5730\u4e9a\u54e5" },
            { "Asia/Muscat", Gulf },
            { "Asia/Bahrain", Arabian },
            { "Europe/Vilnius", Europe_Eastern },
            { "timezone.excity.Asia/Oral", "\u4e4c\u62c9\u5c14" },
            { "America/Cancun", America_Eastern },
            { "timezone.excity.Asia/Manila", "\u9a6c\u5c3c\u62c9" },
            { "Pacific/Kosrae", Kosrae },
            { "Australia/Sydney", Australia_Eastern },
            { "timezone.excity.America/Indianapolis", "\u5370\u7b2c\u5b89\u7eb3\u6ce2\u5229\u65af" },
            { "America/St_Lucia", Atlantic },
            { "Europe/Madrid", Europe_Central },
            { "America/Bahia_Banderas", America_Central },
            { "America/Montserrat", Atlantic },
            { "timezone.excity.Asia/Seoul", "\u9996\u5c14" },
            { "Australia/Brisbane", Australia_Eastern },
            { "Indian/Mayotte", Africa_Eastern },
            { "timezone.excity.America/St_Thomas", "\u5723\u6258\u9a6c\u65af" },
            { "timezone.excity.Europe/Busingen", "\u5e03\u8f9b\u6839" },
            { "Europe/Volgograd", Moscow },
            { "America/Lower_Princes", Atlantic },
            { "timezone.excity.Europe/Istanbul", "\u4f0a\u65af\u5766\u5e03\u5c14" },
            { "America/Rio_Branco", Acre },
            { "timezone.excity.Europe/Sarajevo", "\u8428\u62c9\u70ed\u7a9d" },
            { "America/Danmarkshavn", GMT },
            { "timezone.excity.Africa/Ndjamena", "\u6069\u8d3e\u6885\u7eb3" },
            { "timezone.excity.America/Punta_Arenas", "\u84ec\u5854\u963f\u96f7\u7eb3\u65af" },
            { "timezone.excity.Africa/Kigali", "\u57fa\u52a


vel(
            [In] [MarshalAs(UnmanagedType.SysUInt)] UIntPtr channelNumber,
            [Out] [MarshalAs(UnmanagedType.R4)] out float level);

        [PreserveSig]
        int GetChannelVolumeLevelScalar(
            [In] [MarshalAs(UnmanagedType.SysUInt)] UIntPtr channelNumber,
            [Out] [MarshalAs(UnmanagedType.R4)] out float level);

        [PreserveSig]
        int SetMute(
            [In] [MarshalAs(UnmanagedType.Bool)] Boolean isMuted,
            [In] ref Guid eventContext);

        [PreserveSig]
        int GetMute(
            [Out] [MarshalAs(UnmanagedType.Bool)] out Boolean isMuted);

        [PreserveSig]
        int GetVolumeStepInfo(
            [Out] [MarshalAs(UnmanagedType.SysUInt)] out UIntPtr step,
            [Out] [MarshalAs(UnmanagedType.SysUInt)] out UIntPtr stepCount);

        [PreserveSig]
        int VolumeStepUp(
            [In] ref Guid eventContext);

        [PreserveSig]
        int VolumeStepDown(
            [In] ref Guid eventContext);

        [PreserveSig]
        int QueryHardwareSupport(
            [Out] [MarshalAs(UnmanagedType.U4)] out UInt32 hardwareSupportMask);

        [PreserveSig]
        int GetVolumeRange(
            [Out] [MarshalAs(UnmanagedType.R4)] out float volumeMin,
            [Out] [MarshalAs(UnmanagedType.R4)] out float volumeMax,
            [Out] [MarshalAs(UnmanagedType.R4)] out float volumeStep);

        [PreserveSig]
        int GetVolumeRangeChannel(
            [In] [MarshalAs(UnmanagedType.U4)] UInt32 channelNumber,
            [Out] [MarshalAs(UnmanagedType.R4)] out float volumeMin,
            [Out] [MarshalAs(UnmanagedType.R4)] out float volumeMax,
            [Out] [MarshalAs(UnmanagedType.R4)] out float volumeStep);
    }
}


 Environment.NewLine +
                "  <Parameter name=\"name\" value=\"value\"></Parameter>" + Environment.NewLine +
                "</Application>",
                elem.ToString()
            );
        }

        [Test]
        public void TestElementWithTextNode()
        {
            var elem = new Application();

            elem.AddText("Here is the content");

            Assert.AreEqual(
                "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + Environment.NewLine +
                "<Application>Here is the content</Application>",
                elem.ToString()
            );
        }

        [Test]
        public void TestAllowGenericChildNodes()
        {
            var elem = new Application();
            elem.AddChild("generic-tag").AddText("Content").SetOption("tag", true);

            Assert.AreEqual(
                "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + Environment.NewLine +
                "<Application>" + Environment.NewLine +
                "  <generic-tag tag=\"True\">Content</generic-tag>" + Environment.NewLine +
                "</Application>",
                elem.ToString()
            );
        }

        [Test]
        public void TestAllowGenericChildrenOfChildNodes()
        {
            var elem = new Application();
            var child = new ApplicationSid();
            elem.Nest(child).AddChild("generic-tag").SetOption("tag", true).AddText("Content");

            Assert.AreEqual(
                "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + Environment.NewLine +
                "<Application>" + Environment.NewLine +
                "  <ApplicationSid>" + Environment.NewLine +
                "    <generic-tag tag=\"True\">Content</generic-tag>" + Environment.NewLine +
                "  </ApplicationSid>" + Environment.NewLine +
                "</Application>",
                elem.ToString()
            );
        }

        [Test]
        public void TestMixedContent()
        {
            var elem = new Application();
            elem.AddText("before")
                .AddChild("Child").AddText("content");
            elem.AddText("after");

            Assert.AreEqual(
                "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + Environment.NewLine +
                "<Application>before<Child>content</Child>after</Application>",
                elem.ToString()
            );
        }
    }

}


    /// <summary>
    /// 时间戳转时间
    /// </summary>
    /// <param name="tick"></param>
    /// <returns></returns>
    public static DateTime GetDateTime(this long tick)
    {
        if (tick < DateTimeOffset.MinValue.Ticks || tick > DateTimeOffset.MaxValue.Ticks)
        {
            tick = 0;
        }

        var offset = DateTimeOffset.FromUnixTimeSeconds(tick);
        return offset.LocalDateTime;
    }

    /// <summary>
    /// 毫秒时间戳转时间
    /// </summary>
    /// <param name="tick"></param>
    /// <returns></returns>
    public static DateTime GetDateTimeMs(this long tick)
    {
        if (tick < DateTimeOffset.MinValue.Ticks || tick > DateTimeOffset.MaxValue.Ticks)
        {
            tick = 0;
        }

        var offset = DateTimeOffset.FromUnixTimeMilliseconds(tick);
        return offset.LocalDateTime;
    }
}


AGE_N01_1_0009" , "CR00PAGE_N01_1_0010" , "CR00PAGE_N01_1_0011" , "CR00PAGE_N01_1_0010" , "" , "" , "" , "" ,4);
		CreateAnimationUW("76_idle_front", "CR00PAGE_N01_1_0012" , "CR00PAGE_N01_1_0013" , "CR00PAGE_N01_1_0014" , "CR00PAGE_N01_1_0015" , "" , "" , "" , "" ,4);
		CreateAnimationUW("76_idle_front_left", "CR00PAGE_N01_1_0016" , "CR00PAGE_N01_1_0017" , "CR00PAGE_N01_1_0018" , "CR00PAGE_N01_1_0017" , "" , "" , "" , "" ,4);
		CreateAnimationUW("76_idle_left", "CR00PAGE_N01_1_0019" , "CR00PAGE_N01_1_0020" , "CR00PAGE_N01_1_0021" , "CR00PAGE_N01_1_0020" , "" , "" , "" , "" ,4);
		CreateAnimationUW("76_idle_rear_left", "CR00PAGE_N01_1_0022" , "CR00PAGE_N01_1_0023" , "CR00PAGE_N01_1_0024" , "CR00PAGE_N01_1_0023" , "" , "" , "" , "" ,4);
		CreateAnimationUW("76_walking_rear", "CR00PAGE_N01_1_0025" , "CR00PAGE_N01_1_0026" , "CR00PAGE_N01_1_0027" , "CR00PAGE_N01_1_0028" , "" , "" , "" , "" ,4);
		CreateAnimationUW("76_walking_rear_right", "CR00PAGE_N01_1_0029" , "CR00PAGE_N01_1_0030" , "CR00PAGE_N01_1_0031" , "CR00PAGE_N01_1_0032" , "" , "" , "" , "" ,4);
		CreateAnimationUW("76_walking_right", "CR00PAGE_N01_1_0033" , "CR00PAGE_N01_1_0034" , "CR00PAGE_N01_1_0035" , "CR00PAGE_N01_1_0036" , "" , "" , "" , "" ,4);
		CreateAnimationUW("76_walking_front_right", "CR00PAGE_N01_1_0037" , "CR00PAGE_N01_1_0038" , "CR00PAGE_N01_1_0039" , "CR00PAGE_N01_1_0040" , "" , "" , "" , "" ,4);
		CreateAnimationUW("76_walking_front", "CR00PAGE_N01_1_0041" , "CR00PAGE_N01_1_0042" , "CR00PAGE_N01_1_0043" , "CR00PAGE_N01_1_0044" , "" , "" , "" , "" ,4);
		CreateAnimationUW("76_walking_front_left", "CR00PAGE_N01_1_0045" , "CR00PAGE_N01_1_0046" , "CR00PAGE_N01_1_0047" , "CR00PAGE_N01_1_0048" , "" , "" , "" , "" ,4);
		CreateAnimationUW("76_walking_left", "CR00PAGE_N01_1_0049" , "CR00PAGE_N01_1_0050" , "CR00PAGE_N01_1_0051" , "CR00PAGE_N01_1_0052" , "" , "" , "" , "" ,4);
		CreateAnimationUW("76_walking_rear_left", "CR00PAGE_N01_1_0053" , "CR00PAGE_N01_1_0053" , "CR00PAGE_N01_1_0054" , "CR00PAGE_N01_1_0054" , "" , "" , "" , "" ,4);
		//Anim ID: 13 - which is a_goblin
		//	File