pectable(IInspectableVtbl) [IID_IKeyDerivationAlgorithmProviderStatics] {
    fn OpenAlgorithm(&self, algorithm: HSTRING, out: *mut *mut KeyDerivationAlgorithmProvider) -> HRESULT
}}
impl IKeyDerivationAlgorithmProviderStatics {
    #[inline] pub fn open_algorithm(&self, algorithm: &HStringArg) -> Result<Option<ComPtr<KeyDerivationAlgorithmProvider>>> { unsafe {
        let mut out = null_mut();
        let hr = ((*self.lpVtbl).OpenAlgorithm)(self as *const _ as *mut _, algorithm.get(), &mut out);
        if hr == S_OK { Ok(ComPtr::wrap_optional(out)) } else { err(hr) }
    }}
}
DEFINE_IID!(IID_IKeyDerivationParameters, 2079349095, 1147, 19084, 150, 74, 70, 159, 253, 85, 34, 226);
RT_INTERFACE!{interface IKeyDerivationParameters(IKeyDerivationParametersVtbl): IInspectable(IInspectableVtbl) [IID_IKeyDerivationParameters] {
    #[cfg(not(feature="windows-storage"))] fn __Dummy0(&self) -> (),
    #[cfg(feature="windows-storage")] fn get_KdfGenericBinary(&self, out: *mut *mut crate::windows::storage::streams::IBuffer) -> HRESULT,
    #[cfg(not(feature="windows-storage"))] fn __Dummy1(&self) -> (),
    #[cfg(feature="windows-storage")] fn put_KdfGenericBinary(&self, value: *mut crate::windows::storage::streams::IBuffer) -> HRESULT,
    fn get_IterationCount(&self, out: *mut u32) -> HRESULT
}}
impl IKeyDerivationParameters {
    #[cfg(feature="windows-storage")] #[inline] pub fn get_kdf_generic_binary(&self) -> Result<Option<ComPtr<crate::windows::storage::streams::IBuffer>>> { unsafe {
        let mut out = null_mut();
        let hr = ((*self.lpVtbl).get_KdfGenericBinary)(self as *const _ as *mut _, &mut out);
        if hr == S_OK { Ok(ComPtr::wrap_optional(out)) } else { err(hr) }
    }}
    #[cfg(feature="windows-storage")] #[inline] pub fn set_kdf_generic_binary(&self, value: &crate::windows::storage::streams::IBuffer) -> Result<()> { unsafe {
        let hr = ((*self.lpVtbl).put_KdfGenericBinary)(self as *const _ as *mut _, value as *const _ as *mut _);
        if hr == S_OK { Ok(()) } else { err(hr) }
    }}
    #[inline] pub fn get_iteration_count(&self) -> Result<u32> { unsafe {
        let mut out = zeroed();
        let hr = ((*self.lpVtbl).get_IterationCount)(self as *const _ as *mut _, &mut out);
        if hr == S_OK { Ok(out) } else { err(hr) }
    }}
}
RT_CLASS!{class KeyDerivationParameters: IKeyDerivationParameters}
impl RtActivatable<IKeyDerivationParametersStatics> for KeyDerivationParameters {}
impl RtActivatable<IKeyDerivationParametersStatics2> for KeyDerivationParameters {}
impl KeyDerivationParameters {
    #[cfg(feature="windows-storage")] #[inline] pub fn build_for_pbkdf2(pbkdf2Salt: &crate::windows::storage::streams::IBuffer, iterationCount: u32) -> Result<Option<ComPtr<KeyDerivationParameters>>> {
        <Self as RtActivatable<IKeyDerivationParametersStatics>>::get_activation_factory().build_for_pbkdf2(pbkdf2Salt, iterationCount)
    }
    #[cfg(feature="windows-storage")] #[inlin


/* Part of LD relocs.  */
pcalau12i $r4,%ld_pc_hi20(TLSL1)
lu12i.w	  $r4,%ld_hi20(TLSL1)

/* Part of GD relocs.  */
pcalau12i $r4,%gd_pc_hi20(TLSL1)
lu12i.w	  $r4,%gd_hi20(TLSL1)

/* Test insn relocs.  */
.L1:
/* 32-bit PC relative.  */
.4byte	  .L2-.L1
.L2:
nop

/* R_LARCH_ALIGN.  */
.align	4

/* R_LARCH_PCREL20_S2.  */
pcaddi	  $r12,.L1

/* Part of DESC relocs.   */
pcalau12i $r4,%desc_pc_hi20(TLSL1)
addi.w	  $r5,$r5,%desc_pc_lo12(TLSL1)

lu12i.w	  $r4,%desc_hi20(TLSL1)
ori	  $r4,$r4,%desc_lo12(TLSL1)
ld.w	  $r1,$r4,%desc_ld(TLSL1)
jirl	  $r1,$r1,%desc_call(TLSL1)


!= null) yield return elem; }
        foreach (var elem in Repeat) { if (elem != null) yield return elem; }
      }
    }

    [IgnoreDataMember]
    public override IEnumerable<ElementValue> NamedChildren
    {
      get
      {
        foreach (var item in base.NamedChildren) yield return item;
        if (Class != null) yield return new ElementValue("class", Class);
        if (Geometry != null) yield return new ElementValue("geometry", Geometry);
        foreach (var elem in CopolymerConnectivity) { if (elem != null) yield return new ElementValue("copolymerConnectivity", elem); }
        foreach (var elem in ModificationElement) { if (elem != null) yield return new ElementValue("modification", elem); }
        foreach (var elem in MonomerSet) { if (elem != null) yield return new ElementValue("monomerSet", elem); }
        foreach (var elem in Repeat) { if (elem != null) yield return new ElementValue("repeat", elem); }
      }
    }

    protected override bool TryGetValue(string key, out object value)
    {
      switch (key)
      {
        case "class":
          value = Class;
          return Class is not null;
        case "geometry":
          value = Geometry;
          return Geometry is not null;
        case "copolymerConnectivity":
          value = CopolymerConnectiv


 {
  margin-left: 20px;
}
.bd-comment-4 {
  padding: 5px;
}
.separated-item-12 {
  position: relative;
  z-index: 0;
}
.separated-item-12:before,
.separated-item-12:after {
  content: "";
  position: absolute;
  z-index: 10;
}
.separated-item-12:before {
  top: 0;
  bottom: 0;
  left: 0;
}
.separated-item-12:after {
  left: 0;
  right: 0;
  bottom: 0;
}
.first-col.separated-item-12:after {
  left: 5px;
}
.last-col.separated-item-12:after {
  right: 5px;
}
.separated-item-12.first-col:before,
.separated-item-12.last-row:after {
  content: none;
}
.bd-icon-20:before {
  display: inline-block;
  vertical-align: middle;
  text-decoration: none;
}
.bd-icon-20:hover:before {
  display: inline-block;
  vertical-align: middle;
  text-decoration: none;
}
.bd-icon-20:hover.active:before,
.bd-icon-20.active:before {
  display: inline-block;
  vertical-align: middle;
  text-decoration: none;
}
.bd-icon-20:before {
  display: inline-block;
}
#marker-end-L3N0eWxlLmNzcw.L2NvbnRyb2xzL2Jsb2c1 {}
#marker-start-L3N0eWxlLmNzcw.L2NvbnRyb2xzL2Jsb2c1Q29tbWVudEF2YXRhcg {}
.bd-commentavatar-4 {
  display: inline-block;
}
.bd-commentavatar-4 {
  display: inline-block;
}
.bd-commentavatar-4 img {
  display: block;
  width: 100%;
  height: 100%;
}
#marker-end-L3N0eWxlLmNzcw.L2NvbnRyb2xzL2Jsb2c1Q29tbWVudEF2YXRhcg {}
#marker-start-L3N0eWxlLmNzcw.L2NvbnRyb2xzL2Jsb2c1Q29tbWVudENvbnRhaW5lcg {}
.bd-layoutcontainer-21:before {
  clear: both;
}
.bd-layoutcolumn-47 {
  position: relative;
}
.bd-layoutcolumn-48 {
  position: relative;
}
#marker-end-L3N0eWxlLmNzcw.L2NvbnRyb2xzL2Jsb2c1Q29tbWVudENvbnRhaW5lcg {}
#marker-start-L3N0eWxlLmNzcw.L2NvbnRyb2xzL2Jsb2c1Q29tbWVudE1ldGFkYXRh {}
#marker-end-L3N0eWxlLmNzcw.L2NvbnRyb2xzL2Jsb2c1Q29tbWVudE1ldGFkYXRh {}
#marker-start-L3N0eWxlLmNzcw.L2NvbnRyb2xzL2Jsb2c1Q29tbWVudFJlcGx5 {}
#marker-end-L3N0eWxlLmNzcw.L2NvbnRyb2xzL2Jsb2c1Q29tbWVudFJlcGx5 {}
#marker-start-L3N0eWxlLmNzcw.L2NvbnRyb2xzL2Jsb2c1Q29tbWVudFRleHQ {}
#marker-end-L3N0eWxlLmNzcw.L2NvbnRyb2xzL2Jsb2c1Q29tbWVudFRleHQ {}
#marker-start-L3N0eWxlLmNzcw.L2NvbnRyb2xzL2Jsb2c2 {}


192.8301 Q261.9238 192.3301 261.9238 191.5488 Q261.9238 191.0957 262.127 190.7207 Q262.3301 190.3301 262.6738 190.1113 Q263.0176 189.877 263.4395 189.7676 Q263.7363 189.6738 264.377 189.5957 Q265.6426 189.4551 266.252 189.2363 Q266.252 189.0176 266.252 188.9707 Q266.252 188.3145 265.9551 188.0488 Q265.5488 187.7051 264.752 187.7051 Q264.0176 187.7051 263.6582 187.9707 Q263.2988 188.2207 263.127 188.877 L262.0957 188.7363 Q262.2363 188.0801 262.5645 187.6738 Q262.8926 187.2676 263.502 187.0488 Q264.1113 186.8301 264.9082 186.8301 Q265.7051 186.8301 266.2051 187.0176 Q266.7051 187.2051 266.9395 187.4863 Q267.1738 187.7676 267.2676 188.2051 Q267.3145 188.4707 267.3145 189.1738 L267.3145 190.5801 Q267.3145 192.0488 267.377 192.4395 Q267.4551 192.8301 267.6582 193.1895 L266.5488 193.1895 Q266.3926 192.8613 266.3457 192.4238 ZM266.252 190.0645 Q265.6738 190.2988 264.5332 190.4707 Q263.877 190.5645 263.6113 190.6895 Q263.3457 190.7988 263.1895 191.0176 Q263.0488 191.2363 263.0488 191.5176 Q263.0488 191.9395 263.3613 192.2207 Q263.6895 192.502 264.2988 192.502 Q264.9082 192.502 265.377 192.2363 Q265.8613 191.9707 266.0801 191.502 Q266.252 191.1426 266.252 190.4551 L266.252 190.0645 ZM268.9258 193.1895 L268.9258 184.5957 L269.9883 184.5957 L269.9883 193.1895 L268.9258 193.1895 ZM271.9199 193.1895 L271.9199 191.9863 L273.123 191.9863 L273.123 193.1895 L271.9199 193.1895 Z" style="stroke:none; clip-path:url(#clipPath49_ed504144-a837-4b3b-b0aa-edee0492e833);"/></g><g style="font-family:sans-serif; text-rendering:optimizeLegibility;" transform="matrix(1.3333,0,0,1.3333,249.974,-245.2083) translate(-145.4805,281.7641)"><path d="M0.375 201.2676 L0.6406 200.4395 Q1.5781 200.7676 2 201.002 Q1.8906 199.9395 1.875 199.5488 L2.7344 199.5488 Q2.7188 200.127 2.5938 201.002 Q3.2031 200.6895 3.9844 200.4395 L4.25 201.2676 Q3.5 201.5176 2.7969 201.5957 Q3.1406 201.9082 3.7969 202.7051 L3.0938 203.2051 Q2.75 202.7363 2.2969 201.9395 Q1.8594 202.7676 1.5312 203.2051 L0.8438 202.7051 Q1.5156 201.8613 1.8125 201.5957 Q1.0625 201.4551 0.375 201.2676 ZM8.8945 208.2832 L8.8945 199.6895 L10.6133 199.6


/// \copyright SPDX-License-Identifier: Apache-2.0
/// \author Леонид Юрьев aka Leonid Yuriev <leo@yuriev.ru> \date 2015-2025

#if defined(_WIN32) || defined(_WIN64)

#include "internals.h"

//------------------------------------------------------------------------------
// Stub for slim read-write lock
// Portion Copyright (C) 1995-2002 Brad Wilson

static void WINAPI stub_srwlock_Init(osal_srwlock_t *srwl) { srwl->readerCount = srwl->writerCount = 0; }

static void WINAPI stub_srwlock_AcquireShared(osal_srwlock_t *srwl) {
  while (true) {
    assert(srwl->writerCount >= 0 && srwl->readerCount >= 0);

    //  If there's a writer already, spin without unnecessarily
    //  interlocking the CPUs
    if (srwl->writerCount != 0) {
      SwitchToThread();
      continue;
    }

    //  Add to the readers list
    _InterlockedIncrement(&srwl->readerCount);

    // Check for writers again (we may have been preempted). If
    // there are no writers writing or waiting, then we're done.
    if (srwl->writerCount == 0)
      break;

    // Remove from the readers list, spin, try again
    _InterlockedDecrement(&srwl->readerCount);
    SwitchToThread();
  }
}

static void WINAPI stub_srwlock_ReleaseShared(osal_srwlock_t *srwl) {
  assert(srwl->readerCount > 0);
  _InterlockedDecrement(&srwl->readerCount);
}

static void WINAPI stub_srwlock_AcquireExclusive(osal_srwlock_t *srwl) {
  while (true) {
    assert(srwl->writerCount >= 0 && srwl->readerCount >= 0);

    //  If there's a writer already, spin without unnecessarily
    //  interlocking the CPUs
    if (srwl->writerCount != 0) {
      SwitchToThread();
      continue;
    }

    // See if we can become the writer (expensive, because it inter-
    // locks the CPUs, so writing should be an infrequent process)
    if (_InterlockedExchange(&srwl->writerCount, 1) == 0)
      break;
  }

  // Now we're the writer, but there may be outstanding readers.
  // Spin until there aren't any more; new readers will wait now
  // that we're the writer.
  while (srwl->readerCount != 0) {
    assert(srwl->writerCount >= 0 && srwl->readerCount >= 0);
    SwitchToThread();
  }
}

static void WINAPI stub_srwlock_ReleaseExclusive(osal_srwlock_t *srwl) {
  assert(srwl->writerCount == 1 && srwl->readerCount >= 0);
  srwl->writerCount = 0;
}

static uint64_t WINAPI stub_GetTickCount64(void) {
  LARGE_INTEGER Counter, Frequency;
  return (QueryPerformanceFrequency(&Frequency) && QueryPerformanceCounter(&Counter))
             ? Counter.QuadPart * 1000ul / Frequency.QuadPart
             : 0;
}

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

struct libmdbx_imports imports;

#if __GNUC_PREREQ(8, 0)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wcast-function-type"
#endif /* GCC/MINGW */

#define MDBX_IMPORT(HANDLE, ENTRY) imports.ENTRY = (MDBX_##ENTRY)GetProcAddress(HANDLE, #ENTRY)

void windows_import(void) {
  const HINSTANCE hNtdll = GetModuleHandleA("ntdll.dll");
  if (hNtdll) {
    globals.running_under_Wine = !!GetProcAddress(hNtdll, "wine_get_version");
    if (!globals.running_under_Wine) {
      MDBX_IMPORT(hNtdll, NtFsControlFile);
      MDBX_IMPORT(hNtdll, NtExtendSection);
      ENSURE(nullptr, imports.NtExtendSection);
    }
  }

  const HINSTANCE hKernel32dll = GetModuleHandleA("kernel32.dll");
  if (hKernel32dll) {
    MDBX_IMPORT(hKernel32dll, GetFileInformationByHandleEx);
    MDBX_IMPORT(hKernel32dll, GetTickCount64);
    if (!imports.GetTickCount64)
      imports.GetTickCount64 = stub_GetTickCount64;
    if (!globals.running_under_Wine) {
      MDBX_IMPORT(hKernel32dll, SetFileInformationByHandle);
      MDBX_IMPORT(hKernel32dll, GetVolumeInformationByHandleW);
      MDBX_IMPORT(hKernel32dll, GetFinalPathNameByHandleW);
      MDBX_IMPORT(hKernel32dll, PrefetchVirtualMemory);
      MDBX_IMPORT(hKernel32dll, SetFileIoOverlappedRange);
    }
  }

  const osal_srwlock_t_function srwlock_init =
      (osal_srwlock_t_function)(hKernel32dll ? GetProcAddress(hKernel32dll, "InitializeSRWLock") : nullptr);
  if (srwlock_init) {
    imports.srwl_Init = srwlock_init;
    imports.srwl_AcquireShared = (osal_srwlock_t_function)GetProcAddress(hKernel32dll, "AcquireSRWLockShared");
    imports.srwl_ReleaseShared = (osal_srwlock_t_function)GetProcAddress(hKernel32dll, "ReleaseSRWLockShared");
    imports.srwl_AcquireExclusive = (osal_srwlock_t_function)GetProcAddress(hKernel32dll, "AcquireSRWLockExclusive");
    imports.srwl_ReleaseExclusive = (osa


se;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}/* Tablets */

input[type="submit"], button {
    -webkit-appearance: none;
    appearance: none;
}

@media (max-width: 1024px) {
    /* Basic */

    html {
        -webkit-text-size-adjust: 100%;
    }

    td, th {
        padding: 10px;
        font-size: 0.875rem;
    }

    .small {
        font-size: 0.75rem;
    }

    /* Layout */

    #container {
        min-width: 0;
    }

    #content {
        padding: 15px 20px 20px;
    }

    div.breadcrumbs {
        padding: 10px 30px;
    }

    /* Header */

    #header {
        flex-direction: column;
        padding: 15px 30px;
        justify-content: flex-start;
    }

    #branding h1 {
        margin: 0 0 8px;
        line-height: 1.2;
    }

    #user-tools {
        margin: 0;
        font-weight: 400;
        line-height: 1.85;
        text-align: left;
    }

    #user-tools a {
        display: inline-block;
        line-height: 1.4;
    }

    /* Dashboard */

    .dashboard #content {
        width: auto;
    }


using SuperUnityBuild.BuildTool;
using System;
using System.IO;
using UnityEditor;
using Operation = SuperUnityBuild.BuildActions.FileUtility.Operation;

namespace SuperUnityBuild.BuildActions
{
    public class FolderOperation : BuildAction, IPreBuildAction, IPreBuildPerPlatformAction, IPostBuildAction, IPostBuildPerPlatformAction, IPreBuildPerPlatformActionCanConfigureEditor
    {
        [BuildTool.FilePath(true)]
        public string inputPath;
        [BuildTool.FilePath(true)]
        public string outputPath;
        public Operation operation;

        public override void Execute()
        {
            string resolvedInputPath = ResolveExecuteTokens(inputPath);
            string resolvedOutputPath = ResolveExecuteTokens(outputPath);

            PerformOperation(resolvedInputPath, resolvedOutputPath);
        }

        public override void PerBuildExecute(BuildReleaseType releaseType, BuildPlatform platform, BuildTool.BuildTarget target, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, ref BuildOptions options, string configKey, string buildPath)
        {
            string resolvedInputPath = ResolvePerBuildExecuteTokens(inputPath, releaseType, platform, target, scriptingBackend, distribution, buildTime, buildPath);
            string resolvedOutputPath = ResolvePerBuildExecuteTokens(outputPath, releaseType, platform, target, scriptingBackend, distribution, buildTime, buildPath);

            PerformOperation(resolvedInputPath, resolvedOutputPath);
        }

        protected override void DrawProperties(SerializedObject obj)
        {
            _ = EditorGUILayout.PropertyField(obj.FindProperty("operation"));
            _ = EditorGUILayout.PropertyField(obj.FindProperty("inputPath"));

            if (operation != Operation.Delete)
                _ = EditorGUILayout.PropertyField(obj.FindProperty("outputPath"));
        }

        private void PerformOperation(string inputPath, string outputPath)
        {
            switch (operation)
            {
                case Operation.Copy:
                    Copy(inputPath, outputPath);
                    break;
                case Operation.Move:
                    Move(inputPath, outputPath);
                    break;
                case Operation.Delete:


//A title for the grid,optional
	//	|								["cssfile1.css","cssfile2.css"],//An array of css files to decorate the printed gird,optional
	//	|								{table:"border='border'"}		//tagName:"attrbuteList" pairs, optional,
	//	|																//control the html tags in the generated html
	//	|	);

	/*=====
	__printArgs: {
		// title: String
		//		A title of the printed page can be specified. Optional.
		//		If given, it's shown in an <h1> tag at the top of the page.
		// cssFiles: Array|String
		//		CSS file paths. Optional.
		//		Every row and column is given CSS classes, including:
		//
		//		- grid_row_{row-number}, grid_odd_row, grid_even_row, grid_header,
		//				grid_col_{col-number}, grid_odd_col, grid_even_col
		//		- {row_number} and {col-number} are both integers starting from 1.
		//		- Row classes are for <thead> and <tbody> tags.
		//		- Column classes are for <th> and <td> tags.
		//		- Users can use these classes in the CSS files, but cannot define their own.
		// writerArgs: Object
		//		 Associative Array, arguments for TableWriter.
		// fetchArgs: object?
		//		Any arguments for store.fetch
	},
	=====*/

	// name: String
	//		Plugin name
	name: "printer",

	constructor: function(grid){
		// summary:
		//		only newed by _Plugin
		// inGrid: EnhancedGrid
		//		The grid to plug in to.
		this.grid = grid;
		this._mixinGrid(grid);

		//For print, we usually need the HTML instead of raw data.
		grid.setExportFormatter(function(data, cell, rowIndex, rowItem){
			return cell.format(rowIndex, rowItem);
		});
	},
	_mixinGrid: function(){
		var g = this.grid;
		g.printGrid = lang.hitch(this, this.printGrid);
		g.printSelected = lang.hitch(this, this.printSelected);
		g.exportToHTML = lang.hitch(this, this.exportToHTML);
		g.exportSelectedToHTML = lang.hitch(this, this.exportSelectedToHTML);
		g.normalizePrintedGrid = lang.hitch(this, this.normalizeRowHeight);
	},
	printGrid: function(args){
		// summary:
		//		Print all the data in the grid, using title as a title,
		//		decorating generated html by cssFiles,
		//		using tagName:"attrbuteList" pairs(writerArgs) to control html tags
		//		in the generated html string.
		// tags:
		//		public
		// args: __printArgs?
		//		Arguments for print.
		this.exportToHTML(args, lang.hitch(this, this._print));
	},
	printSelected: function(args){
		// summary:
		//		Print selected data. All other features are the same as printGrid.
		//		For meaning of arguments see function *printGrid*
		// tags:
		//		public
		// args: __printArgs?
		//		Arguments for print.
		this.exportSelectedToHTML(args, lang.hitch(this, this._print));
	},
	exportToHTML: function(args, onExported){
		// summary:
		//		Export to HTML string, but do NOT print.
		//		Users can use this to implement print preview.
		//		For meaning of the 1st-3rd arguments see function *printGrid*.
		// tags:
		//		public
		// args: __printArgs?
		//		Arguments for print.
		// onExported: function(string)
		//		call back function


 = true
    await page.nestedSwitch().click();

    await dnd.drag(element);
    await dnd.dragOver(page.page3Cont1());
    expect(await page.getActiveContainer()).toBe('bf-drop-container-0');

    await dnd.dragOver(page.page3Cont2());
    expect(await page.getActiveContainer()).toBe('bf-drop-container-1');

    await dnd.dragOver(page.page3Cont3());
    expect(await page.getActiveContainer()).toBe('bf-drop-container-2');
  });

});

describe('Test BfDnD 4: Drop Placeholders', () => {
  let page: BfDndPo;

  beforeEach(async () => {
    page = new BfDndPo(4);
    await page.navigateTo();
  });

  it('Should drag over closest placeholder in a vertical list', async () => {
    const dnd = new BfDnDMock();
    const element = page.getDraggable(0);
    const cont1 = page.getContainer(0);
    dnd.showPointer = true;

    await dnd.drag(element);
    await dnd.dragOver(cont1, { x: 120, y: 80 });
    expect(await page.getActiveContainer()).toBe('cont-1');
    expect(await page.getActivePlaceholder()).toBe('bf-drop-placeholder-0');

    await dnd.dragOver(cont1, { x: 120, y: 160 });
    expect(await page.getActivePlaceholder()).toBe('bf-drop-placeholder-1');
    await dnd.dragOver(cont1, { x: 120, y: 250 });
    expect(await page.getActivePlaceholder()).toBe('bf-drop-placeholder-2');
    await dnd.drop();
  });

  it('Should drag over closest placeholder in a 2d area', async () => {
    const dnd = new BfDnDMock();
    const element = page.getDraggable(1);
    const cont1 = page.getContainer(1);
    dnd.showPointer = true;

    await dnd.drag(element);
    await dnd.dragOver(cont1, { x: 450, y: 125 });
    expect(await page.getActiveContainer()).toBe('cont-2');
    expect(await page.getActivePlaceholder()).toBe('bf-drop-placeholder-4'); // (name = Placeholder 2)

    await dnd.dragOver(cont1, { x: 550, y: 125 });
    expect(await page.getActivePlaceholder()).toBe('bf-drop-placeholder-5'); // (name = Placeholder 3)

    await dnd.drop();
  });

  it('Should drag over closest placeholder in accurate mode', async () => {
    const dnd = new BfDnDMock();
    const element = page.getDraggable(1);
    const cont1 = page.getContainer(1);
    dnd.showPointer = true;

    await dnd.drag(element);
    await dnd.dragOver(cont1, { x: 360, y: 190 });
    expect(await page.getActivePlaceholder()).toBe('bf-drop-placeholder-4'); // (name = Placeholder 2)
    await dnd.dragOver();
    await dnd.drop();

    // Turn isAccurateMode = true
    await page.accurateSwitch().click();

    await dnd.drag(element);
    await dnd.dragOver(cont1, { x: 360, y: 190 });
    expect(await page.getActivePlaceholder()).toBe('bf-drop-placeholder-3'); // (name = Placeholder 1)

    await dnd.dragOver();
    await dnd.drop();
  });
});

describe('Test BfDnD 5: Reorderable List', () => {
  let page: BfDndPo;

  beforeEach(async () => {
    page


})
}

type QPointingDeviceUniqueId struct {
	h *C.QPointingDeviceUniqueId
}

func (this *QPointingDeviceUniqueId) cPointer() *C.QPointingDeviceUniqueId {
	if this == nil {
		return nil
	}
	return this.h
}

func (this *QPointingDeviceUniqueId) UnsafePointer() unsafe.Pointer {
	if this == nil {
		return nil
	}
	return unsafe.Pointer(this.h)
}

// newQPointingDeviceUniqueId constructs the type using only CGO pointers.
func newQPointingDeviceUniqueId(h *C.QPointingDeviceUniqueId) *QPointingDeviceUniqueId {
	if h == nil {
		return nil
	}

	return &QPointingDeviceUniqueId{h: h}
}

// UnsafeNewQPointingDeviceUniqueId constructs the type using only unsafe pointers.
func UnsafeNewQPointingDeviceUniqueId(h unsafe.Pointer) *QPointingDeviceUniqueId {
	return newQPointingDeviceUniqueId((*C.QPointingDeviceUniqueId)(h))
}

// NewQPointingDeviceUniqueId constructs a new QPointingDeviceUniqueId object.
func NewQPointingDeviceUniqueId() *QPointingDeviceUniqueId {

	return newQPointingDeviceUniqueId(C.QPointingDeviceUniqueId_new())
}

// NewQPointingDeviceUniqueId2 constructs a new QPointingDeviceUniqueId object.
func NewQPointingDeviceUniqueId2(param1 *QPointingDeviceUniqueId) *QPointingDeviceUniqueId {

	return newQPointingDeviceUniqueId(C.QPointingDeviceUniqueId_new2(param1.cPointer()))
}

func QPointingDeviceUniqueId_FromNumericId(id int64) *QPointingDeviceUniqueId {
	_goptr := newQPointingDeviceUniqueId(C.QPointingDeviceUniqueId_fromNumericId((C.longlong)(id)))
	_goptr.GoGC() // Qt uses pass-by-value semantics for this type. Mimic with finalizer
	return _goptr
}

func (this *QPointingDeviceUniqueId) IsValid() bool {
	return (bool)(C.QPointingDeviceUniqueId_isValid(this.h))
}

func (this *QPointingDeviceUniqueId) NumericId() int64 {
	return (int64)(C.QPointingDeviceUniqueId_numericId(this.h))
}

// Delete this object from C++ memory.
func (this *QPointingDeviceUniqueId) Delete() {
	C.QPointingDeviceUniqueId_delete(this.h)
}

// GoGC adds a Go Finalizer to this pointer, so that it will be deleted
// from C++ memory once it is unreachable from Go memory.
func (this *QPointingDeviceUniqueId) GoGC() {
	runtime.SetFinalizer(this, func(this *QPointingDeviceUniqueId) {
		this.Delete()
		runtime.KeepAlive(this.h)
	})
}

type QTouchEvent struct {
	h *C.QTouchEvent
	*QInputEvent
}

func (this *QTouchEvent) cPointer() *C.QTouchEvent {
	if this == nil {
		return nil
	}
	return this.h
}

func (this *QTouchEvent) UnsafePointer() unsafe.Pointer {
	if this == nil {
		return nil
	}
	return unsafe.Pointer(this.h)
}

// newQTouchEvent constructs the type using only CGO pointers.
func newQTouchEvent(h *C.QTouchEvent) *QTouchEvent {
	if h == nil {
		return nil
	}
	var outptr_QInputEvent *C.QInputEvent = nil
	C.QTouchEvent_virtbase(h, &outptr_QInputEvent)

	return &QTouchEvent{h: h,
		QInputEvent: newQInputEvent(outptr_QInputEvent)}
}

// UnsafeNewQTouchEvent constructs the type using only unsafe pointers.
func UnsafeNewQTouchEvent(h unsafe.Pointer) *QTouchEvent {
	return newQTouchEvent((*C.QTouchEvent)(h))
}


 = staffService.find(extCorpId, userId);

        isImgSuf(file);

        //文件夹没有就创文件夹
        File folder = new File(ScrmConfig.getUploadPath());
        if (!folder.exists()) {
            folder.mkdirs();
        }

        //传到本地
        String newFileName = file.getOriginalFilename().replaceAll("[^.]+\\.([a-zA-Z]+)", UUID.get32UUID() + ".$1");
        File newFile = new File(ScrmConfig.getUploadPath() + newFileName);
        try {
            file.transferTo(newFile);
        } catch (IOException e) {
            log.error("文件转换失败，", e);
            throw new BaseException("文件解析失败");
        }
        //传到微信
        WxCpMediaService wxCpMediaService = new WxCpMediaServiceImpl(WxCpConfiguration.getWxCpService());
        WxMediaUploadResult uploadRes;
        try {
            uploadRes = wxCpMediaService.upload(Constants.TEMP_FILE_IMG, newFile);
        } catch (WxErrorException e) {
            log.error("文件上传到微信失败，", e);
            throw new BaseException("文件上传失败！");
        }

        //数据入库
        WxTempFile wxTempFile = new WxTempFile();
        wxTempFile.setId(UUID.get32UUID())
                .setExtCorpId(staff.getExtCorpId())
                .setFileName(file.getOriginalFilename())
                .setFilePath(newFile.getPath())
                .setType(uploadRes.getType())
                .setMediaId(uploadRes.getMediaId())
                .setWxCreatedAt(new Date(uploadRes.getCreatedAt() * 1000))
                .setCreatorExtId(userId)
                .setCreatedAt(new Date());
        save(wxTempFile);
        wxTempFile.setFilePath(wxTempFile.getFilePath().replace(ScrmConfig.getUploadPath(), Constants.UPLOAD_PREFIX));
        return wxTempFile;
    }

    @Override
    public WxTempFile uploadImgToCosAndWx(MultipartFile file, String extCorpId, String userId) {

        //获取用户信息
        Staff staff = staffService.find(extCorpId, userId);

        String fileId = UUID.get32UUID();

        //传到微信
        WxCpMediaService wxCpMediaService = new WxCpMediaServiceImpl(WxCpConfiguration.getWxCpService());
        WxMediaUploadResult uploadRes;

//        sysSubscribeClient.checkCapacity(staff.getExtCorpId(), file.getSize() + "", true);

        //cos
        String key = String.format("%s/%s/%s", userId, fileId, file.getOriginalFilename());
        //新建文件
        File localFile = new File(ScrmConfig.getUploadPath() + File.separator + file.getOriginalFilename());

        Integer fileSize = null;
        try {

            if (!localFile.exists()) {
                localFile.createNewFile();
            }
            file.transferTo(localFile);

            uploadRes = wxCpMediaService.upload(getFileTypeBySuf(file.getOriginalFilename()), localFile);

            cosUtils.upload(localFile, key);

            fileSize = Math.toIntExact(org.apache.commons.io.FileUtils.sizeOf(localFile));
        } catch (WxErrorException e) {
            log.error("文件上传到企业微信失败，", e);
            throw BaseException.buildBaseException(e.getError(), "文件上传到企业微信失败");
        } catch (RuntimeException | IOException e) {
            log.


ner) return null
  const isCollapsed = !endId || (endId === startId && endOffset === startOffset)
  if (isCollapsed) {
    return {
      selectionBoxes: [],
      caretCoords: getCollapsedCaret(endContainer, endOffset as number)
    }
  } else {
    const selectionBoxes: Array<BoundingBox> = []
    const topBBox = getStartContainerBBox(
      startContainer,
      startOffset,
      endContainer,
      endOffset as number
    )
    selectionBoxes.push(topBBox)
    if (startContainer !== endContainer) {
      getMiddleBBoxes(startContainer, endContainer, selectionBoxes)
      const endContainerBBox = getEndContainerBBox(endContainer, endOffset as number)
      if (endContainerBBox) {
        selectionBoxes.push(endContainerBBox)
      }
    }
    const referenceBBox = isBackward ? topBBox : selectionBoxes[selectionBoxes.length - 1]
    const caretCoords = {
      top: referenceBBox.top,
      left: isBackward ? referenceBBox.left : referenceBBox.left + referenceBBox.width,
      height: referenceBBox.height
    }
    return { selectionBoxes, caretCoords }
  }
}

export default getRemoteRangeBBox
import { Component, Output, Input, EventEmitter } from '@angular/core';

const template = require('./date-range-picker.html');
const styles = require('./date-range-picker.css');

@Component({
  selector: 'date-range-picker',
  template: template,
  styles: [styles]
})

export class DateRangePicker {

  _datePickerType: String;

  @Input()
  set datePickerType(datePickerType: string) {
    this._datePickerType = datePickerType;
  }
  @Output() onPickDate = new EventEmitter<Date>();
  @Output() onPickDateRangeType = new EventEmitter<string>();

  public dateRangeTypesArray: Array<string> = [
    'today', 'last_3_days', 'last_7_days', 'last_14_days', 'last_30_days', 'last_90_days', 'this_quarter','lifetime'
  ];
  public dt: Date = new Date();
  public minDate: Date = void 0;
  public maxDate: Date = void 0;
  public events: Array<any>;
  public tomorrow: Date;
  public afterTomorrow: Date;
  public formats: Array<string> = ['DD-MM-YYYY', 'YYYY/MM/DD', 'DD.MM.YYYY', 'shortDate'];
  public format: string = this.formats[0];
  public dateOptions: any = {
    formatYear: 'YY',
    startingDay: 1
  };
  private opened: boolean = false;

  public constructor() {
    (this.tomorrow = new Date()).setDate(this.tomorrow.getDate() + 1);
    (this.afterTomorrow = new Date()).setDate(this.tomorrow.getDate() + 2);
    (this.minDate = new Date()).setDate(this.minDate.getDate() - 1000);
    this.maxDate = new Date();
    this.events = [
      { date: this.tomorrow, status: 'full' },
      { date: this.afterTomorrow, status: 'partially' }
    ];
  }

  public getDate(): number {
    return this.dt && this.dt.getTime() || new Date().getTime();
  }

  public submitDate(dateRangeType?: string) {
    if (dateRangeType) {
      this.onPickDateRangeType.emit(dateRangeType);
    }
    else {
      let toEmit = this.dt;
      this.onPickDate.emit(toEmit);
    }
  }

  public today(): void {
    this.dt = new Date();
  }

  // todo: implement custom class cases
  public getDayClass(date: any, mode: string): string {
    if (mode === 'day') {
      let dayToCheck = new Date(date).setHours(0, 0, 0, 0);

      for (let i = 0;


14 + t15
                    - t16 + t17 - t18 + t19 - t20 + t21 - t22 + t23 - t24 + t25 - t26 + t27 - t28
                    + t29 - t30; // 0
        }
        fv[31] += t0 + t2 - t11 + t16 - t29;
    }

    public void testCompress() {
        for (int i = 0; i < ITER; i++) {
            checkCompress(i);
        }
    }

    public void checkInflate(int iter) {
        float t0 = 0;
        float t1 = fv[1] * fv[0];
        float t2 = fv[2] * fv[0];
        float t3 = fv[3] * fv[0];
        float t4 = fv[4] * fv[0];
        float t5 = fv[5] * fv[0];
        float t6 = fv[6] * fv[0];
        float t7 = fv[7] * fv[0];
        float t8 = fv[8] * fv[0];
        float t9 = fv[9] * fv[0];
        float t10 = fv[10] * fv[0];
        float t11 = fv[11] * fv[0];
        float t12 = fv[12] * fv[0];
        float t13 = fv[13] * fv[0];
        float t14 = fv[14] * fv[0];
        float t15 = fv[15] * fv[0];
        float t16 = fv[16] * fv[0];
        float t17 = fv[17] * fv[0];
        float t18 = fv[18] * fv[0];
        float t19 = fv[19] * fv[0];
        float t20 = fv[20] * fv[0];
        float t21 = fv[21] * fv[0];
        float t22 = fv[22] * fv[0];
        float t23 = fv[23] * fv[0];
        float t24 = fv[24] * fv[0];
        float t25 = fv[25] * fv[0];
        float t26 = fv[26] * fv[0];
        float t27 = fv[27] * fv[0];
        float t28 = fv[28] * fv[0];
        float t29 = fv[29] * fv[0];
        float t30 = fv[30] * fv[0];

        str.getChars(0, LENGTH, ca, 0);

        if (ca[iter % LENGTH] > (byte) ('a' + NUM / 2)) {
            // Use fp registers as many as possible and try to make them
            // live across above intrinsic function.
            t0 += t1 - t2 + t3 - t4 + t5 - t6 + t7 - t8 + t9 - t10 + t11 - t12 + t13 - t14 + t15
                    - t16 + t17 - t18 + t19 - t20 + t21 - t22 + t23 - t24 + t25 - t26 + t27 - t28
                    + t29 - t30; // 0
        }
        fv[31] += t0 + t2 - t11 + t16 - t29;
    }

    public void testInflate() {
        for (int i = 0; i < ITER; i++) {
            checkInflate(i);
        }
    }

    public void verifyAndReset() {
        if (fv[31] != 1.0) {
            throw new RuntimeException("Failed with " + Float.toString(fv[31]));
        } else {
            System.out.println("Success!");
        }
        fv[31] = 1.0f;
    }

    public static void main(String[] args) {
        TestIntrinsicsRegStress t = new TestIntrinsicsRegStress();
        t.init();

        t.testIndexOf();
        t.verifyAndReset();

        t.testArraysEquals();
        t.verifyAndReset();

        t.testCompress();
        t.verifyAndReset();

        t.testInflate();
        t.verifyAndReset();


/ Read whitelists and do template substitution.
	replace := strings.NewReplacer("GOOS", goos, "GOARCH", goarch, "ARCHSUFF", archsuff)

	for _, filename := range filenames {
		path := filepath.Join("whitelist", filename)
		f, err := os.Open(path)
		if err != nil {
			// Allow not-exist errors; not all combinations have whitelists.
			if os.IsNotExist(err) {
				continue
			}
			log.Fatal(err)
		}
		scan := bufio.NewScanner(f)
		for scan.Scan() {
			line := scan.Text()
			if len(line) == 0 || strings.HasPrefix(line, "//") {
				continue
			}
			w[replace.Replace(line)]++
		}
		if err := scan.Err(); err != nil {
			log.Fatal(err)
		}
	}
}

type platform struct {
	os   string
	arch string
}

func (p platform) String() string {
	return p.os + "/" + p.arch
}

// ignorePathPrefixes are file path prefixes that should be ignored wholesale.
var ignorePathPrefixes = [...]string{
	// These testdata dirs have lots of intentionally broken/bad code for tests.
	"cmd/go/testdata/",
	"cmd/vet/testdata/",
	"go/printer/testdata/",
}

func vetPlatforms(pp []platform) {
	for _, p := range pp {
		p.vet()
	}
}

func (p platform) vet() {
	var buf bytes.Buffer
	fmt.Fprintf(&buf, "go run main.go -p %s\n", p)

	// Load whitelist(s).
	w := make(whitelist)
	w.load(p.os, p.arch)

	// 'go tool vet .' is considerably faster than 'go vet ./...'
	// TODO: The unsafeptr checks are disabled for now,
	// because there are so many false positives,
	// and no clear way to improve vet to eliminate large chunks of them.
	// And having them in the whitelists will just cause annoyance
	// and churn when working on the runtime.
	cmd := exec.Command(cmdGoPath, "tool", "vet", "-unsafeptr=false", "-source", ".")
	cmd.Dir = filepath.Join(runtime.GOROOT(), "src")
	cmd.Env = append(os.Environ(), "GOOS="+p.os, "GOARCH="+p.arch, "CGO_ENABLED=0")
	stderr, err := cmd.StderrPipe()
	if err != nil {
		log.Fatal(err)
	}
	if err := cmd.Start(); err != nil {
		log.Fatal(err)
	}

	// Process vet output.
	scan := bufio.NewScanner(stderr)
	var parseFailed bool
NextLine:
	for scan.Scan() {
		line := scan.Text()
		if strings.HasPrefix(line, "vet: ") {
			// Typecheck failure: Malformed syntax or multiple packages or the like.
			// This will yield nicer error messages elsewhere, so ignore them here.
			continue
		}

		if strings.HasPrefix(line, "panic: ") {
			// Panic in vet. Don't filter anything, we want the complete output.
			parseFailed = true
			fmt.Fprintf(os.Stderr, "panic in vet (to reproduce: go run main.go -p %s):\n", p)
			fmt.Fprintln(os.Stderr, line)
			io.Copy(os.Stderr, stderr)
			break
		}

		fields := strings.SplitN(line, ":", 3)
		var file, lineno, msg string
		switch len(fields) {
		case 2:
			// vet message with no line number
			file, msg = fields[0], fields[1]
		case 3:


یز) از او آفرید، و از آن دو، مردان و زنان بسیاری پراکنده کرد، و از پروردگاری که به (نام) او از همدیگر درخواست می‌کنید، و (همچنین) از (گسستن) پیوند خویشاوندی بپرهیزید. بی‌گمان الله همواره بر شما مراقب (و نگهبان) است."
  },
  {
    "surah_number": 4,
    "verse_number": 2,
    "content":
        "و به یتیمان اموال‌شان را بدهید، و (اموال) ناپاک (خود) را با (اموال) پاک (یتیمان) عوض نکنید، و اموال آنان را همراه اموال خودتان (با مخلوط کردن) نخورید، به راستی که این گناه بزرگی است."
  },
  {
    "surah_number": 4,
    "verse_number": 3,
    "content":
        "و اگر ترسیدید که در حق دختران یتیم نتوانید عدالت را رعایت کنید، (از ازدواج با آن‌ها صرف نظر کنید و) با زنانی (دیگر) که مورد پسند شماست دو دو، و سه سه، چهار چهار، ازدواج کنید. پس اگر بیم دارید که نتوانید عدالت کنید، به یک (زن) یا به آنچه (از کنیزان) که مالک آن‌هایید (اکتفا نمایید) این (کار) نزدیک‌تر است به اینکه ستم نکنید."
  },
  {
    "surah_number": 4,
    "verse_number": 4,
    "content":
        "و مهریه زنان را به عنوان هدیه (و فریضه‌ای الهی) با طیب خاطر به آنان بدهید، پس اگر آنان چیزی از آن را با رضایت خاطر به شما بخشیدند، آن را حلال و گوارا بخورید."
  },
  {
    "surah_number": 4,
    "verse_number": 5,
    "content":
        "و اموال خود را که الله آن را وسیله قوام (زندگی) شما قرار داده‌است، به سفیهان (و کم خردان) ندهید، و از آن، به آن‌ها روزی دهید، و آنان را لباس بپوشانید، و با آنان سخن شایسته بگویید."
  },
  {
    "surah_number": 4,
    "verse_number": 6,
    "content":
        "و یتیمان را بیازمایید تا وقتی که به (سن) ازدواج (و بلوغت) رسند،


EW POINT SHIN DOT, HEBREW POINT RAFE, HEBREW POINT SHIN DOT, LATIN SMALL LETTER B
0061 05C1 05C2 05C1 05BF 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062; # (a◌ׁ◌ׂ◌ׁ◌ֿb; a◌ֿ◌ׁ◌ׁ◌ׂb; a◌ֿ◌ׁ◌ׁ◌ׂb; a◌ֿ◌ׁ◌ׁ◌ׂb; a◌ֿ◌ׁ◌ׁ◌ׂb; ) LATIN SMALL LETTER A, HEBREW POINT SHIN DOT, HEBREW POINT SIN DOT, HEBREW POINT SHIN DOT, HEBREW POINT RAFE, LATIN SMALL LETTER B
0061 FB1E 05C2 05C1 05C2 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062; # (a◌ﬞ◌ׂ◌ׁ◌ׂb; a◌ׁ◌ׂ◌ׂ◌ﬞb; a◌ׁ◌ׂ◌ׂ◌ﬞb; a◌ׁ◌ׂ◌ׂ◌ﬞb; a◌ׁ◌ׂ◌ׂ◌ﬞb; ) LATIN SMALL LETTER A, HEBREW POINT JUDEO-SPANISH VARIKA, HEBREW POINT SIN DOT, HEBREW POINT SHIN DOT, HEBREW POINT SIN DOT, LATIN SMALL LETTER B
0061 05C2 FB1E 05C2 05C1 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062; # (a◌ׂ◌ﬞ◌ׂ◌ׁb; a◌ׁ◌ׂ◌ׂ◌ﬞb; a◌ׁ◌ׂ◌ׂ◌ﬞb; a◌ׁ◌ׂ◌ׂ◌ﬞb; a◌ׁ◌ׂ◌ׂ◌ﬞb; ) LATIN SMALL LETTER A, HEBREW POINT SIN DOT, HEBREW POINT JUDEO-SPANISH VARIKA, HEBREW POINT SIN DOT, HEBREW POINT SHIN DOT, LATIN SMALL LETTER B
0061 0315 0300 05AE 05C4 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062; # (a◌̕◌̀◌֮◌ׄb; à◌֮◌ׄ◌̕b; a◌֮◌̀◌ׄ◌̕b; à◌֮◌ׄ◌̕b; a◌֮◌̀◌ׄ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW MARK UPPER DOT, LATIN SMALL LETTER B
0061 05C4 0315 0300 05AE 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062


/*
 * (C) Copyright 2014
 * Dirk Eibach,  Guntermann & Drunck GmbH, dirk.eibach@gdsys.cc
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

/* Chrontel CH7301C DVI Transmitter */

#include <common.h>
#include <asm/io.h>
#include <errno.h>
#include <i2c.h>

#define CH7301_I2C_ADDR 0x75

enum {
	CH7301_CM = 0x1c,		/* Clock Mode Register */
	CH7301_IC = 0x1d,		/* Input Clock Register */
	CH7301_GPIO = 0x1e,		/* GPIO Control Register */
	CH7301_IDF = 0x1f,		/* Input Data Format Register */
	CH7301_CD = 0x20,		/* Connection Detect Register */
	CH7301_DC = 0x21,		/* DAC Control Register */
	CH7301_HPD = 0x23,		/* Hot Plug Detection Register */
	CH7301_TCTL = 0x31,		/* DVI Control Input Register */
	CH7301_TPCP = 0x33,		/* DVI PLL Charge Pump Ctrl Register */
	CH7301_TPD = 0x34,		/* DVI PLL Divide Register */
	CH7301_TPVT = 0x35,		/* DVI PLL Supply Control Register */
	CH7301_TPF = 0x36,		/* DVI PLL Filter Register */
	CH7301_TCT = 0x37,		/* DVI Clock Test Register */
	CH7301_TSTP = 0x48,		/* Test Pattern Register */
	CH7301_PM = 0x49,		/* Power Management register */
	CH7301_VID = 0x4a,		/* Version ID Register */
	CH7301_DID = 0x4b,		/* Device ID Register */
	CH7301_DSP = 0x56,		/* DVI Sync polarity Register */
};

int ch7301_i2c[] = CONFIG_SYS_CH7301_I2C;

int ch7301_probe(unsigned screen, bool power)
{
	u8 value;

	i2c_set_bus_num(ch7301_i2c[screen]);
	if (i2c_probe(CH7301_I2C_ADDR))
		return -1;

	value = i2c_reg_read(CH7301_I2C_ADDR, CH7301_DID);
	if (value != 0x17)
		return -1;

	if (power) {
		i2c_reg_write(CH7301_I2C_ADDR, CH7301_TPCP, 0x08);
		i2c_reg_write(CH7301_I2C_ADDR, CH7301_TPD, 0x16);
		i2c_reg_write(CH7301_I2C_ADDR, CH7301_TPF, 0x60);
		i2c_reg_write(CH7301_I2C_ADDR, CH7301_DC, 0x09);
		i2c_reg_write(CH7301_I2C_ADDR, CH7301_PM, 0xc0);
	} else {
		i2c_reg_write(CH7301_I2C_ADDR, CH7301_DC, 0x00);
		i2c_reg_write(CH7301_I2C_ADDR, CH7301_PM, 0x01);
	}

	return 0;
}


/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.
 */
using System.Collections.Generic;
using Newtonsoft.Json;
using Aliyun.Acs.Core;

namespace Aliyun.Acs.Mts.Model.V20140618
{
	public class ListCustomGroupsResponse : AcsResponse
	{

		private string requestId;

		private int? pageNumber;

		private int? pageSize;

		private long? totalCount;

		private List<ListCustomGroups_CustomGroup> customGroups;

		public string RequestId
		{


olve()
      })
    })
  }
}

Object.freeze(localStorage)
/**
 * 把html转换为PC端的vue组件
 * @param html
 */
export function toMobileComponent(html: string): string {
  return `<template>
  <div class="top-wrapper">
    ${toCardSection(html)}
  </div>
</template>`
}

/**
 * 把html中的片段按照H标签自动分拆为独立的每块（主要用于浏览是排版好看）
 * @param html
 */
export function toCardSection(html: string): string {
  const group = html.replace(/<h3/g, ':::<h3').replace(/<h2/g, ':::<h2').split(':::')

  return group
    .map((fragment) => {
      if (fragment.indexOf('<h3') !== -1) {
        return `<div class="card">${fragment}</div>`
      }

      return fragment
    })
    .join('')
}
import { Observable } from 'rxjs/Observable';

export class BaseApiService {

    constructor() { }

    public invoke<T>(obj: any): Observable<T> {
        return obj.map((resp: any) => this.handleApiResponse<T>(resp));
    }

    private handleApiResponse<T>(body: any): Observable<T> {
        if (body['status']) {
            return body['payload'];
        } else {
          //  console.log(body['message']);
            throw body['message'];
        }
    }
}

import { assertEquals } from 'https://deno.land/std@0.138.0/testing/asserts.ts'
import { toCamel, generateTypes, print, createSourceFile } from './generate.ts'

Deno.test('toCamel() supports expected specification names', () => {
  assertEquals(toCamel('dim_info'), 'DimInfo')
  assertEquals(toCamel('dataset'), 'Dataset')
  assertEquals(toCamel('Dataset_nifti_PixDim'), 'DatasetNiftiPixDim')
})

Deno.test('generateTypes() supports primitive string', () => {
  const file = createSourceFile('test.ts')
  file.statements = generateTypes({
    suffix: { description: 'Suffix of current file', type: 'string' },
  })

  assertEquals(print(file), 'suffix: string;\n')
})

Deno.test('generateTypes() supports enumerated string', () => {
  const file = createSourceFile('test.ts')
  file.statements = generateTypes({
    t: {
      name: 'Time Unit',
      description: 'String representing the unit of inter-volume intervals.',
      type: 'string',
      enum: ['unknown', 'sec', 'msec', 'usec'],
    },
  })

  assertEquals(print(file), 't: "unknown" | "sec" | "msec" | "usec";\n')
})

Deno.test('generateTypes() supports primitive integer', () => {
  const file = createSourceFile('test.ts')
  file.statements = generateTypes({
    n_cols: { description: 'Number of columns in bvec file', type: 'integer' },
  })

  assertEquals(print(file), 'n_cols: number;\n')
})

// This is an array with no schema defined type
Deno.test('generateTypes() supports generic array type', () => {
  const file = createSourceFile('test.ts')
  file.statements = generateTypes({
    ignored: { description: 'Set of ignored files', type: 'array' },
  })

  assertEquals(print(file), 'ignored: any[];\n')
})

// This is an array with a schema defined type
Deno.test('generateTypes() supports typed array type', () => {
  const file = createSourceFile('test.ts')
  file.statements = generateTypes({


div>

 Hidden until hover or focus

 Hidden until hover or focus

*/
.hide-child .child { opacity: 0; transition: opacity .15s ease-in; }
.hide-child:hover  .child, .hide-child:focus  .child, .hide-child:active .child { opacity: 1; transition: opacity .15s ease-in; }
.underline-hover:hover, .underline-hover:focus { text-decoration: underline; }
/* Can combine this with overflow-hidden to make background images grow on hover
 * even if you are using background-size: cover */
.grow { -moz-osx-font-smoothing: grayscale; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform: translateZ( 0 ); transform: translateZ( 0 ); transition: -webkit-transform .25s ease-out; transition: transform .25s ease-out; transition: transform .25s ease-out, -webkit-transform .25s ease-out; }
.grow:hover, .grow:focus { -webkit-transform: scale( 1.05 ); transform: scale( 1.05 ); }
.grow:active { -webkit-transform: scale( .90 ); transform: scale( .90 ); }
.grow-large { -moz-osx-font-smoothing: grayscale; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform: translateZ( 0 ); transform: translateZ( 0 ); transition: -webkit-transform .25s ease-in-out; transition: transform .25s ease-in-out; transition: transform .25s ease-in-out, -webkit-transform .25s ease-in-out; }
.grow-large:hover, .grow-large:focus { -webkit-transform: scale( 1.2 ); transform: scale( 1.2 ); }
.grow-large:active { -webkit-transform: scale( .95 ); transform: scale( .95 ); }
/* Add pointer on hover */
.pointer:hover { cursor: pointer; }
/*
   Add shadow on hover.

   Performant box-shadow animation pattern from
   http://tobiasahlin.com/blog/how-to-animate-box-shadow/
*/
.shadow-hover { cursor: pointer; position: relative; transition: all .5s cubic-bezier( .165, .84, .44, 1 ); }
.shadow-hover::after { content: ''; box-shadow: 0 0 16px 2px rgba( 0, 0, 0, .2 ); border-radius: inherit; opacity: 0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; transition: opacity .5s cubic-bezier( .165, .84, .44, 1 ); }
.shadow-hover:hover::after, .shadow-hover:focus::after { opacity: 1; }
/* Combine with classes in skins and skins-pseudo for
 * many different transition possibilities. */
.bg-animate, .bg-animate:hover, .bg-animate:focus { transition: background-color .15s ease-in-out; }
/*

  Z-INDEX

  Base
    z = z-index

  Modifiers
    -0 = literal value 0
    -1 = literal value 1
    -2 = literal value 2
    -3 = literal value 3
    -4 = literal value 4
    -5 = literal value 5
    -999 = literal value 999
    -9999 = literal value 9999

    -max = largest accepted z-index value as integer

    -inherit = string value inherit
    -initial = string value initial
    -unset = string value unset

  MDN: https://developer.mozilla.org/en/docs/Web/CSS/z-index
  Spec: http://www.w3.org/TR/CSS2/zindex.html
  Articles:
    https://philipwalton.com/articles/what-no-one-told-you-about-z-ind


ttp://www.html5plus.org/doc/zh_cn/maps.html](http://www.html5plus.org/doc/zh_cn/maps.html)
     */
    bringToTop(): void;
    /**
     * 设置标点对象的坐标
     * 标点在设置新坐标后将在地图上立即更新标点位置。
     *
     * 参考: [http://www.html5plus.org/doc/zh_cn/maps.html](http://www.html5plus.org/doc/zh_cn/maps.html)
     */
    setPoint(point?: PlusMapsPoint): void;
    /**
     * 获取标点的坐标
     *
     * 参考: [http://www.html5plus.org/doc/zh_cn/maps.html](http://www.html5plus.org/doc/zh_cn/maps.html)
     */
    getPoint(): PlusMapsPoint;
    /**
     * 设置标点上显示的图标
     * 若未设置则显示默认标点图标，已添加的标点在设置新值后将在地图上立即更新标点内容。
     *
     * 参考: [http://www.html5plus.org/doc/zh_cn/maps.html](http://www.html5plus.org/doc/zh_cn/maps.html)
     */
    setIcon(icon?: string): void;
    /**
     * 设置标点上显示的图标数组
     * 设置图标数组后则按照指定的间隔时间轮播数组中图标。
     *     设置图标数组后将忽略setIcon方法设置的图标，未设置则显示setIcon设置的图标。
     *
     * 参考: [http://www.html5plus.org/doc/zh_cn/maps.html](http://www.html5plus.org/doc/zh_cn/maps.html)
     */
    setIcons(icons?: any []): void;
    /**
     * 设置标点上显示的文本标注
     * 若未设置则不显示标注（默认为空字符串），已添加的标点在设置新值后将在地图上立即更新标点内容。
     *
     * 参考: [http://www.html5plus.org/doc/zh_cn/maps.html](http://www.html5plus.org/doc/zh_cn/maps.html)
     */
    setLabel(label?: string): void;
    /**
     * 获取标点上显示的文本标注
     *
     * 参考: [http://www.html5plus.org/doc/zh_cn/maps.html](http://www.html5plus.org/doc/zh_cn/maps.html)
     */
    getLabel(): string;
    /**
     * 设置标点的气泡内容
     * 设置气泡内容后，用户点击标点时弹出则弹出气泡。
     *     注意：用户点击标点时先弹出标点关联的气泡，再响应标点的onclick事件。
     *
     * 参考: [http://www.html5plus.org/doc/zh_cn/maps.html](http://www.html5plus.org/doc/zh_cn/maps.html)
     */
    setBubble(buuble?: PlusMapsBubble, pop?: boolean): void;
    /**
     * �


IOption<T> {
    match<TResult>(args: {
        some: (value: T) => TResult;
        none: () => TResult;
    }): TResult;
    flatMap<TResult>(fn: (value: T) => IOption<TResult>): IOption<TResult>;
    map<TResult>(fn: (value: T) => TResult): IOption<TResult>;
    isSome(): this is ISome<T>;
}

export interface ISome<T> extends IOption<T> {
    getValue(): T;
}

abstract class Option<T> implements IOption<T> {
    match<TResult>(args: {
        some: (value: T) => TResult;
        none: () => TResult;
    }) {
        return this.isSome()
            ? args.some(this.getValue())
            : args.none();
    }

    flatMap<TResult>(fn: (value: T) => IOption<TResult>): IOption<TResult> {
        return this.match<IOption<TResult>>({
            some: fn,
            none: none
        });
    }

    map<TResult>(fn: (value: T) => TResult): IOption<TResult> {
        return this.match<IOption<TResult>>({
            some: val => {
                const result = fn(val);
                return isNullOrUndefined(result) ? none<TResult>() : some(result);
            },
            none: none
        });
    }

    isSome(): this is ISome<T> {
        return this instanceof Some;
    }
}

class None extends Option<any> {
    protected _isNone = true;
}
const _none: IOption<any> = new None();
export function none<T>(): IOption<T> {
    return _none;
}

class Some<T> extends Option<T> implements ISome<T> {
    constructor(private _value: T) {
        super();
        if (isNullOrUndefined(_value))
            throw new Error("Value for Some cannot be null or undefined");
    }
    public getValue() {
        return this._value;
    }
}
export function some<T>(value: T): ISome<T> {
    return new Some(value);
}

export function or<T>(left: IOption<T>, right: IOption<T>) {
    return left.isSome() ? left : right;
}

//state initalization

// class Employee {

//     id:number =1;
//     name:string="subramanian"
//     isWorking:boolean = true;
// }

class Employee {

    id:number;
    name:string;
    isWorking:boolean;
    constructor(id:number=1,name?:string,isWorking:boolean=false){
        this.id = id;
        this.name =name;
        this.isWorking=isWorking
    }

}

let emp = null;
emp = new Employee()
console.log(emp.id, emp.name, emp.isWorking)
//state afer object creation
emp.id =9000
emp.name = "ram"
emp.isWorking = false
console.log(emp.id, emp.name, emp.isWorking)

//during object creation ; constructor parameters
emp = new Employee(23,'Sam',true)
console.log(emp.id, emp.name, emp.isWorking)
var trueConditional: boolean = true;
var falseConditional: boolean = false;

var num1: number = 15;
var num2: number = 10;
var num3: number = 30;

// Logica aritmetica
var greaterCase: boolean = (num1+num2 >= num3);
console.log(`${num1}+${num2} >= ${num3}`, greaterCase)
var lessCase: boolean = (num1+num2 <= num3);
console.log(`${num1}+${num2} <= ${num3}`, lessCase)

// Logica de comparación
var newString: string = 'ejemplo';
var otherString: string = 'otro ejemplo';

console.log(`'${


const char *lang, const char *s)
{
  tvh_mutex_lock(&tvh_gettext_mutex);
  if (lang == NULL) {
    s = msg_find(lng_default, s);
  } else {
    if (!strcmp(lng_last->locale_lang, lang)) {
      s = msg_find(lng_last, s);
    } else {
      if ((lng_last = lng_get(lang)) == NULL)
        s = msg_find(lng_default, s);
      else
        s = msg_find(lng_last, s);
    }
  }
  tvh_mutex_unlock(&tvh_gettext_mutex);
  return s;
}

/*
 *
 */

void tvh_gettext_init(void)
{
  static const char *tbl[] = {
    "ach",    "ach",
    "ady",    "ady",
    "ara",    "ar",
    "bul",    "bg",
    "cze",    "cs",
    "dan",    "da",
    "ger",    "de",
    "eng",    "en_US",
    "eng_GB", "en_GB",
    "eng_US", "en_US",
    "spa",    "es",
    "est",    "et",
    "per",    "fa",
    "fin",    "fi",
    "fre",    "fr",
    "heb",    "he",
    "hrv",    "hr",
    "hun",    "hu",
    "ita",    "it",
    "kor",    "ko",
    "lav",    "lv",
    "lit",    "lt",
    "dut",    "nl",
    "nor",    "no",
    "pol",    "pl",
    "por",    "pt",
    "rum",    "ro",
    "rus",    "ru",
    "slv",    "sl",
    "slo",    "sk",
    "srp",    "sr",
    "alb",    "sq",
    "swe",    "sv",
    "tur",    "tr",
    "ukr",    "uk",
    "chi",    "zh",
    "chi_CN", "zh-Hans",
    NULL, NULL
  };
  const char **p;
  for (p = tbl; *p; p += 2)
    lng_add(p[0], p[1]);
  tvh_gettext_default_init();
  lng_last = lng_default;
}

void tvh_gettext_done(void)
{
  struct lng *l;
  struct msg *m;

  while ((l = RB_FIRST(&lngs)) != NULL) {
    while ((m = RB_FIRST(&l->msgs)) != NULL) {
      RB_REMOVE(&l->msgs, m, link);
      free(m);
    }
    RB_REMOVE(&lngs, l, link);
    free(l);
  }
}


    @include transition(all $nav-title-slide-ios7-delay);
      @include transition-timing-function($ios7-timing-function);
      opacity: 1;
    }
    > .ng-enter, &.ng-enter {
      @include translate3d(-30%, 0, 0);
      opacity: 0;
    }
    > .ng-enter.ng-enter-active, &.ng-enter.ng-enter-active {
      @include translate3d(0, 0, 0);
      opacity: 1;
    }
    > .ng-leave.ng-leave-active, &.ng-leave.ng-leave-active {
      @include translate3d(100%, 0, 0);
      opacity: 0;
    }
  }
}

$nav-title-android-delay: 200ms;
$nav-title-android-timing-function: linear;

.nav-title-android {
  &:not(.no-animation) .button.back-button {
    @include transition(all $nav-title-android-delay);
    @include transition-timing-function($nav-title-android-timing-function);
    opacity: 1;
    &.ng-hide {
      opacity: 0;
    }
    &.ng-hide-add,
    &.ng-hide-remove {
      display: block !important;
    }
    &.ng-hide-add {
      position: absolute;
    }
    &.ng-hide-remove {
    }
  }
  > .ng-enter, &.ng-enter,
  > .ng-leave, &.ng-leave {
    @include transition(all $nav-title-android-delay);
    @include transition-timing-function($nav-title-android-timing-function);
  }
  > .ng-enter, &.ng-enter {
    opacity: 0;
  }
  > .ng-enter.ng-enter-active, &.ng-enter.ng-enter-active {
    opacity: 1;
  }
  > .ng-leave.ng-leave-active, &.ng-leave.ng-leave-active {
    opacity: 0;
  }
}

/**
 * Typography
 * --------------------------------------------------
 */

// Body text
// -------------------------

p {
  margin: 0 0 ($line-height-computed / 2);
}

// Emphasis & misc
// -------------------------

small   { font-size: 85%; }
cite    { font-style: normal; }

// Alignment
// -------------------------

.text-left           { text-align: left; }
.text-right          { text-align: right; }
.text-center         { text-align: center; }

// Headings
// -------------------------

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
  color: $base-color;
  font-weight: $headings-font-weight;
  font-family: $headings-font-family;
  line-height: $headings-line-height;

  small {
    font-weight: normal;
    line-height: 1;
  }
}

h1, .h1,
h2, .h2,
h3, .h3 {
  margin-top: $line-height-computed;
  margin-bottom: ($line-height-computed / 2);

  &:first-child {
    margin-top: 0;
  }

  + h1, + .h1,
  + h2, + .h2,
  + h3, + .h3 {
    margin-top: ($line-height-computed / 2);
  }
}

h4, .h4,
h5, .h5,
h6, .h6 {
  margin-top: ($line-height-computed / 2);
  margin-bottom: ($line-height-computed / 2);
}

h1, .h1 { font-size: floor($font-size-base * 2.60); } // ~36px
h2, .h2 { font


,
  [2905] = "Ziegenfellumhang",
  [2918] = "_",
  [2919] = "Relic of the Ancients",
  [2920] = "Sacred Relic",
  [2921] = "Blessed Relic",
  [2922] = "Spirit Relic",
  [2923] = "Relic of Righteousness",
  [2927] = "Creeping Torment",
  [2929] = "Tomb Rot",
  [2931] = "Jungfernleid",
  [2932] = "Torment Vine",
  [2939] = "Frenzyblut",
  [2945] = "_",
  [2946] = "Zerbrochener ausbalancierter Wurfdolch",
  [2947] = "Zerbrochenes kleines Wurfmesser",
  [2948] = "_",
  [2949] = "Matrosenstiefel",
  [2952] = "_",
  [2954] = "Nachtwachenpantalons",
  [2969] = "Zauberbinderweste",
  [2970] = "Zauberbinderhose",
  [2971] = "Zauberbinderstiefel",
  [2972] = "Zauberbinderhandschuhe",
  [2977] = "Veteranenrüstung",
  [2978] = "Veteranengamaschen",
  [2979] = "Veteranenstiefel",
  [2980] = "Veteranenhandschuhe",
  [2993] = "_",
  [2994] = "_",
  [2995] = "_",
  [2999] = "Stahlrosts Werkzeuge",
  [3000] = "Brutmutterknochenpanzer",
  [3001] = "_",
  [3002] = "Relic Horn of Justice",
  [3003] = "Relic of the Eye",
  [3004] = "Relic of the Dead",
  [3005] = "Relic of Truth",
  [3006] = "Holy Relic Shard",
  [3007] = "_",
  [3015] = "_",
  [3028] = "Longbow",
  [3029] = "_",
  [3031] = "_",
  [3032] = "_",
  [3034] = "Glyphed Breastplate",
  [3038] = "_",
  [3039] = "Kurzer Eschenbogen",
  [3043] = "_",
  [3046] = "_",
  [3050] = "_",
  [3051] = "_",
  [3052] = "_",
  [3054] = "_",
  [3059] = "_",
  [3060] = "_",
  [3061] = "_",
  [3062] = "_",
  [3063] = "_",
  [3064] = "_",
  [3068] = "_",
  [3070] = "Fähnrichumhang",
  [3072] = "Schwelende Robe",
  [3073] = "Schwelende Hose",
  [3074] = "Schwelende Handschuhe",
  [3076] = "Schwelende Stiefel",
  [3077] = "_",
  [3088] = "Book of Rejuvenation IV",
  [3089] = "Tome of Flamestrike",
  [3090] = "Tome of Frostbolt",
  [3091] = "Tome of Arcane Intellect II",
  [3092] = "Tome of Flamestrike III",
  [3093] = "Tome of Flamestrike II",
  [3094] = "Tome of Fire Blast II",
  [3095] = "Tome of Fire Blast III",
  [3096] = "Tome of Feather Fall",
  [3097] = "Tome of Conjure Water II",
  [3098] = "Tome of Slow",
  [3099] = "Tome of Ice Armor II",
  [3100] = "Tome of Blizzard II",


TEXT_REG_VAL,%g0,%i0
	ldxa    [%i0]ASI_PRIMARY_CONTEXT_REG,%i1    ! value of primary context

	add	ASI_SECONDARY_CONTEXT_REG_VAL,%g0,%i2
	ldxa    [%i2]ASI_SECONDARY_CONTEXT_REG,%i3    ! secondary context

	rd	%asi,%g2

	! and now back to our regularly scheduled testing
	add	%g0,STORE_LOOP,%g3
	setx	target0_primary,%l0,%g2
    	add	%g2,0x000,%l1
	add	%g2,0x040,%l2
	add	%g2,0x080,%l3
	add	%g2,0x0c0,%l4
	add	%g2,0x100,%l5
	add	%g2,0x140,%l6
	add	%g2,0x180,%l7
	add	%g2,0x1c0,%i0
	add	%g2,0x200,%i1
	add	%g2,0x240,%i2
	add	%g2,0x280,%i3
	add	%g2,0x2c0,%i4

primary_loop:
	stda	%f0, [%l1]ASI_BLOCK_AS_IF_USER_PRIMARY
	stda	%f16,[%l2]ASI_BLOCK_AS_IF_USER_PRIMARY
	stda	%f0, [%l3]ASI_BLOCK_AS_IF_USER_PRIMARY
	stda	%f16,[%l4]ASI_BLOCK_AS_IF_USER_PRIMARY
	stda	%f0, [%l5]ASI_BLOCK_AS_IF_USER_PRIMARY
	stda	%f16,[%l6]ASI_BLOCK_AS_IF_USER_PRIMARY
	stda	%f0, [%l7]ASI_BLOCK_AS_IF_USER_PRIMARY
	stda	%f16,[%i0]ASI_BLOCK_AS_IF_USER_PRIMARY
    	stda	%f0, [%i1]ASI_BLOCK_AS_IF_USER_PRIMARY
	stda	%f16,[%i2]ASI_BLOCK_AS_IF_USER_PRIMARY
	stda	%f0, [%i3]ASI_BLOCK_AS_IF_USER_PRIMARY
	stda	%f16,[%i4]ASI_BLOCK_AS_IF_USER_PRIMARY

	sub	%g3,1,%g3
	brgz	%g3,primary_loop
	nop

	! do it again with secondary space. FFU does not care, but what the heck...
	add	%g0,STORE_LOOP,%g3
	setx	target0_secondary,%l0,%g2
        add	%g2,0x000,%l1
	add	%g2,0x040,%l2
	add	%g2,0x080,%l3
	add	%g2,0x0c0,%l4
	add	%g2,0x100,%l5
	add	%g2,0x140,%l6
	add	%g2,0x180,%l7
	add	%g2,0x1c0,%i0
	add	%g2,0x200,%i1
	add	%g2,0x240,%i2
	add	%g2,0x280,%i3
	add	%g2,0x2c0,%i4

secondary_loop:
	stda	%f0, [%l1]ASI_BLOCK_AS_IF_USER_SECONDARY
	stda	%f16,[%l2]ASI_BLOCK_AS_IF_USER_SECONDARY
	stda	%f0, [%l3]ASI_BLOCK_AS_IF_USER_SECONDARY
	stda	%f16,[%l4]ASI_BLOCK_AS_IF_USER_SECONDARY
	stda	%f0, [%l5]ASI_BLOCK_AS_IF_USER_SECONDARY
	stda	%f16,[%l6]ASI_BLOCK_AS_IF_USER_SECONDARY
	stda	%f0, [%l7]ASI_BLOCK_AS_IF_USER_SECONDARY
	stda	%f16,[%i0]ASI_BLOCK_AS_IF_USER_SECONDARY
    	stda	%f0, [%i1]ASI_BLOCK_AS_IF_USER_SECONDARY
	stda	%f16,[%i2]ASI_BLOCK_AS_IF_USER_SECONDARY
	stda	%f0, [%i3]ASI_BLOCK_AS_IF_USER_SECONDARY
	stda	%f16,[%i4]ASI_BLOCK_AS_IF_USER_SECONDARY

	sub	%g3,1,%g3
	brgz	%g3,secondary


   la t0, s_mode_handle
    csrw stvec, t0

    la t0, u_mode_entry
    csrw sepc, t0

    sret

.align 2
s_mode_handle:
    mv s1, a0
    la a0, str2
    call puts
    mv a0, s1

    li t1, 0x123
    bne a0, t1, .fail
    la a0, str4
    call puts

    csrr t0, sepc
    addi t0, t0, 4
    csrw sepc, t0
    sret

.fail:
    la a0, str0
    call puts

    li a0, 2
    ebreak

.align 2
u_mode_entry:
    la a0, str3
    call puts

    li a0, 0x123
    ecall
    li a0, 0
    ebreak

.section .data
str0:
    .string "Should not reach here!"
str1:
    .string "Enter to S-mode"
str2:
    .string "Enter to U-mode"
str3:
    .string "Call from U-mode"
str4:
    .string "U-mode ECALL"


/* Copyright (c) 2009 Dmitry Xmelkov
   All rights reserved.

   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:

   * Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in
     the documentation and/or other materials provided with the
     distribution.
   * Neither the name of the copyright holders nor the names of
     contributors may be used to endorse or promote products derived
     from this software without specific prior written permission.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  POSSIBILITY OF SUCH DAMAGE. */

#if !defined(__AVR_TINY__)

#include "fp32def.h"
#include "asmdef.h"

/* float cbrtf (float)
   Cube root function.
 */

#define RCNT	r25

#define RA0	r22
#define RA1	r23
#define RA2	r24

#define RM0	r26
#define RM1	r27
#define RM2	r28
#define RM3	r29
#define RM4	RA0
#define RM5	RA1
#define RM6	RA2

#define RY0	r30
#define RY1	r31
#define RY2	r15

#define RQ0	r16
#define RQ1	r17
#define RQ2	r18
#define RQ3	r19
#define RQ4	r8
#define RQ5	r9

#define RD0	r20
#define RD1	r21
#define RD2	r10
#define RD3	r11
#define RD4	r12
#define RD5	r13
#define RD6	r14

#define	REM	RD0

FUNCTION cbrtf

/* Division by 3.
   Input:
	rA3	- arg
   Output:
	rA3	- quotient
	REM	- remainder
	RY0	- zero (was counter)
   Scratch:
	r0
 */
#if  defined(__AVR_ENHANCED__) && __AVR_ENHANCED__
.Ldi


2->as_register(),
                              RKeepIns::a, Rindex, disp, scale, src->as_register(), info);
      oopmap_valid_after = oopmap_valid_after && !UseSBA;
      break;
    default      : ShouldNotReachHere();
    }
  }
  // Check temp usage
  assert0( !tmp1->is_valid() || (temps_needed > 0) );
  assert0( !tmp2->is_valid() || (temps_needed > 1) );
  assert0( !tmp3->is_valid() || (temps_needed > 2) );
  // Oop map double check
  if (info != NULL && oopmap_valid_after)
    __ verify_oopmap(info->oop_map(), MacroAssembler::OopVerify_OopMap_Exception);
}

void LIR_Assembler::stack2reg(LIR_Opr src, LIR_Opr dest, BasicType type) {
  assert(src->is_stack(), "should not call otherwise");
  assert(dest->is_register(), "should not call otherwise");

Address saddr;
if(src->is_double_stack()){
saddr=frame_map()->address_for_slot(src->double_stack_ix());
  } else {
saddr=frame_map()->address_for_slot(src->single_stack_ix());
  }
  if (dest->is_single_cpu()) {
    if (type == T_ARRAY || type == T_OBJECT) {
      __ ld8(dest->as_register(), saddr._base, saddr._disp);
      __ verify_oop(dest->as_register(), MacroAssembler::OopVerify_Fill);
    } else {
      __ ldz4(dest->as_register(), saddr._base, saddr._disp);
    }
  } else if (dest->is_double_cpu()) {
    __ ld8(dest->as_register(), saddr._base, saddr._disp);
  } else if (dest->is_single_xmm()) {
    __ ld4(dest->as_xmm_float_reg(), saddr._base, saddr._disp);
  } else if (dest->is_double_xmm()) {
    __ ld8(dest->as_xmm_double_reg(), saddr._base, saddr._disp);
  } else {
    ShouldNotReachHere();
  }
}

void LIR_Assembler::stack2stack(LIR_Opr src, LIR_Opr dst, LIR_Opr tmp, BasicType type) {
assert(src->is_stack(),"should not call otherwise");
assert(dst->is_stack(),"should not call otherwise");
  if (src == dst) {
    return;
  }

Address saddr;
Address daddr;
if(src->is_single_stack()){
saddr=frame_map()->address_for_slot(src->single_stack_ix());
daddr=frame_map()->address_for_slot(dst->single_stack_ix());
  } else {
    assert0 (src->is_double_stack());
saddr=frame_map()->address_for_slot(src->double_stack_ix());
daddr=frame_map()->address_for_slot(dst->double_stack_ix());
  }
if(!tmp->is_valid()){
    assert0( saddr._base == RSP && daddr._base == RSP );
    __ push(saddr._base, saddr._disp); // temp = RSP[_dis]; RSP--; RSP[0] = temp
    __ pop (daddr._base, daddr._disp); // RSP++; temp = RSP[0]; RSP[_dis] = temp
  } else {
    __ ld8 (tmp->as_register(), saddr._base, saddr._disp);
    __ st8 (daddr._base, daddr._disp, tmp->as_register());
  }
}

void LIR_Assembler::prefetchr(LIR_Opr src) {
  Untested();
  int ReadPrefetchInstr = 0; // JavaSoft default (we don't support the command line flag)
  LIR_Address* addr = src->as_address_ptr();
  Address from_addr = as_Address(addr);


l := filepath.Split(dir)
	parentDir = strings.TrimSuffix(parentDir, string(os.PathSeparator))
	if parentDir != pdi.procDir {
		pdi.ir.LogError(fmt.Errorf("Invalid ProcessInput path: %s.", path))
		return nil
	}

	// Extract and validate ticker interval from file path.
	var tickInterval int
	if tickInterval, err = strconv.Atoi(timeInterval); err != nil {
		pdi.ir.LogError(fmt.Errorf("Ticker interval could not be parsed for '%s'.",
			path))
		return nil
	}
	if tickInterval < 0 {
		pdi.ir.LogError(fmt.Errorf("A negative ticker interval was parsed for '%s'.",
			path))
		return nil
	}

	// Things look good so far. Try to load the data into a config struct.
	entry := new(ProcessEntry)
	if entry.config, err = pdi.loadProcessFile(path); err != nil {
		pdi.ir.LogError(fmt.Errorf("Error loading process file '%s': %s", path, err))
		return nil
	}
	// Override the ticker interval and store the entry.
	entry.config.TickerInterval = uint(tickInterval)
	pdi.specified[path] = entry
	return nil
}

func (pdi *ProcessDirectoryInput) loadProcessFile(path string) (config *ProcessInputConfig,
	err error) {

	unparsedConfig := make(map[string]toml.Primitive)
	if _, err = toml.DecodeFile(path, &unparsedConfig); err != nil {
		return
	}
	section, ok := unparsedConfig["ProcessInput"]
	if !ok {
		err = errors.New("No `ProcessInput` section.")
		return
	}
	config = &ProcessInputConfig{
		ParserType:  "token",
		ParseStdout: true,
		Trim:        true,
	}
	if err = toml.PrimitiveDecodeStrict(section, config, nil); err != nil {
		return nil, err
	}
	return
}

func (pdi *ProcessDirectoryInput) startInput(name string, config *ProcessInputConfig) (
	ir InputRunner, err error) {

	input := new(ProcessInput)
	input.SetName(name)
	if err = input.Init(config); err != nil {
		return
	}

	var pluginGlobals PluginGlobals
	pluginGlobals.Retries = RetryOptions{
		MaxDelay:   "30s",
		Delay:      "250ms",
		MaxRetries: -1,
	}
	pluginGlobals.Ticker = uint(config.TickerInterval)
	tickLength := time.Duration(pluginGlobals.Ticker) * time.Second
	ir = NewInputRunner(name, input, &pluginGlobals, true)
	ir.SetTickLength(tickLength)
	if err = pdi.h.PipelineConfig().AddInputRunner(ir, nil); err != nil {
		return nil, err
	}
	return
}

func init() {
	RegisterPlugin("ProcessDirectoryInput", func() interface{} {
		return new(ProcessDirectoryInput)
	})
}
/***** BEGIN LICENSE BLOCK *****
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
#
# The Initial Developer of the Original Code is the Mozilla Foundation.
# Portions created by the Initial Developer are Copyright (C) 2012
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#   Rob Miller (rmiller@mozilla.com)
#
# ***** END LICENSE BLOCK *****/

package nagios

import (
	"bufio"
	"code.google.com/p/gomock/gomock"
	"fmt"
	"github.com/mozilla-services/heka/pipeline"
	pipeline_ts "github.com/mozilla-


16	Q12,Q12,#4	; Q12 = y[4]+8>>4
	VST1.64		{D4, D5, D6, D7}, [r1@128]!
	VRSHR.S16	Q13,Q13,#4	; Q13 = y[5]+8>>4
	VRSHR.S16	Q14,Q14,#4	; Q14 = y[6]+8>>4
	VST1.64		{D4, D5, D6, D7}, [r1@128]
	VRSHR.S16	Q15,Q15,#4	; Q15 = y[7]+8>>4
	VSTMIA		r0, {D16-D31}
	MOV	PC, r14
	ENDP

oc_idct8x8_stage123_neon PROC
; Stages 1 & 2
	VMULL.S16	Q4, D18,D1[3]
	VMULL.S16	Q5, D19,D1[3]
	VMULL.S16	Q7, D30,D1[3]
	VMULL.S16	Q6, D31,D1[3]
	VMULL.S16	Q2, D30,D0[1]
	VMULL.S16	Q3, D31,D0[1]
	VSHRN.S32	D8, Q4, #16
	VSHRN.S32	D9, Q5, #16	; Q4 = (OC_C7S1*x[1]>>16)
	VSHRN.S32	D14,Q7, #16
	VSHRN.S32	D15,Q6, #16	; Q7 = (OC_C7S1*x[7]>>16)
	VSHRN.S32	D4, Q2, #16
	VSHRN.S32	D5, Q3, #16	; Q2 = (OC_C1S7*x[7]>>16)-x[7]
	VSUB.S16	Q4, Q4, Q15
	VADD.S16	Q7, Q7, Q9
	VSUB.S16	Q4, Q4, Q2	; Q4 = t[4]
	VMULL.S16	Q2, D18,D0[1]
	VMULL.S16	Q9, D19,D0[1]
	VMULL.S16	Q5, D26,D0[3]
	VMULL.S16	Q3, D27,D0[3]
	VMULL.S16	Q6, D22,D0[3]
	VMULL.S16	Q12,D23,D0[3]
	VSHRN.S32	D4, Q2, #16
	VSHRN.S32	D5, Q9, #16	; Q2 = (OC_C1S7*x[1]>>16)-x[1]
	VSHRN.S32	D10,Q5, #16
	VSHRN.S32	D11,Q3, #16	; Q5 = (OC_C3S5*x[5]>>16)-x[5]
	VSHRN.S32	D12,Q6, #16
	VSHRN.S32	D13,Q12,#16	; Q6 = (OC_C3S5*x[3]>>16)-x[3]
	VADD.S16	Q7, Q7, Q2	; Q7 = t[7]
	VSUB.S16	Q5, Q5, Q11
	VADD.S16	Q6, Q6, Q11
	VADD.S16	Q5, Q5, Q13
	VADD.S16	Q6, Q6, Q13
	VMULL.S16	Q9, D22,D1[1]
	VMULL.S16	Q11,D23,D1[1]
	VMULL.S16	Q15,D26,D1[1]
	VMULL.S16	Q13,D27,D1[1]
	VMULL.S16	Q2, D20,D1[2]
	VMULL.S16	Q12,D21,D1[


: space-between;
        flex-wrap: wrap;
        width: 100%;
    }
    .shopping-cart.table tr {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: calc(33.3333% - 5px);
        margin: 0 0 10px 0;
    }
    .shopping-cart.table td {
        width: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-direction: column;
        text-align: center;
        border: 1px solid #ddd;
        border-left: 2px solid #000;
        border-right: 2px solid #000;
        border-top: 0;
    }
    .shopping-cart.table td:first-child {
        border-top: 2px solid #000;
    }
    .shopping-cart.table td:last-child {
        border-bottom: 2px solid #000;
    }
}
@media (max-width: 767px) {
    .shopping-cart.table tr {
        width: calc(50% - 5px);
    }
}
@media (max-width: 575px) {
    .shopping-cart.table tr {
        width: 100%;
    }
    .order-completed-page .jumbotron .display-3 {
        font-size: 56px;
    }
}

/* dark cart */

[dark-theme="true"] .shopping-cart.table thead th {
    border-color: #fff;
}
[dark-theme="true"] .shopping-cart.table td img {
    background-color: #2d3133;
    border: 1px solid #555;
}
@media (max-width: 991px) {
    [dark-theme="true"] .shopping-cart.table td, [dark-theme="true"] .shopping-cart.table td:first-child, [dark-theme="true"] .shopping-cart.table td:last-child {
        border-color: #fff;
    }
}
/*!
 * Bootstrap v4.3.1 (https://getbootstrap.com/)
 * Copyright 2011-2019 The Bootstrap Authors
 * Copyright 2011-2019 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"N


#ifndef __TIMER_H__
#define __TIMER_H__
#include "GlobalOptions.h"

/*! qp timers and their defintions */

/*! For Windows */
#if (defined _WIN32 || defined _WIN64 || defined _WINDLL )

/* Use Windows QueryPerformanceCounter for timing */
#include <windows.h>
/*! \struct */
/*! Timer structure to store time information */
typedef struct qp_timer{
	LARGE_INTEGER tic; /*!< tic time */
	LARGE_INTEGER toc; /*!< tic time */
	LARGE_INTEGER freq; /*!< cpu frequency */
} qp_timer;

/*! For macOS */
#elif (defined __APPLE__)
/*! \struct */
/*! Timer structure to store time information */
#include <mach/mach_time.h>
typedef struct qp_timer{
	uint64_t tic; /*!< tic time */
	uint64_t toc; /*!< toc time */
	mach_timebase_info_data_t tinfo; /*!< time base info */
} qp_timer;

#else

/*! For POSIX machines */
/*! \struct */
/*! Timer structure to store time information */
#include <time.h>
#include <sys/time.h>

typedef struct qp_timer{
	struct timespec tic; /*!< tic time */
	struct timespec toc; /*!< toc time */
} qp_timer;

#endif

/*!
 * @brief  timer tic functions, similar to matlab tic, starts recording time from the instant the function is invoked
 *
 *
 * @param[in]  t     	    qp_timer structure
 *
 */
void tic(qp_timer* t);

/*!
 * @brief  timer toc functions, similar to matlab toc, returns the recorded time
 *
 *
 * @param[in]  t     	    qp_timer structure
 * @param[out] diff         recorded time
 *
 */
qp_real toc(qp_timer* t);
#endif
/* END IFDEF __TIMER_H__ */

/*! @file */


mber|string|Decimal} A value in radians.
   *
   */
  function atanh(x) {
    return new this(x).atanh();
  }

  /*
   * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi
   * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.
   *
   * Domain: [-Infinity, Infinity]
   * Range: [-pi, pi]
   *
   * y {number|string|Decimal} The y-coordinate.
   * x {number|string|Decimal} The x-coordinate.
   *
   * atan2(±0, -0)               = ±pi
   * atan2(±0, +0)               = ±0
   * atan2(±0, -x)               = ±pi for x > 0
   * atan2(±0, x)                = ±0 for x > 0
   * atan2(-y, ±0)               = -pi/2 for y > 0
   * atan2(y, ±0)                = pi/2 for y > 0
   * atan2(±y, -Infinity)        = ±pi for finite y > 0
   * atan2(±y, +Infinity)        = ±0 for finite y > 0
   * atan2(±Infinity, x)         = ±pi/2 for finite x
   * atan2(±Infinity, -Infinity) = ±3*pi/4
   * atan2(±Infinity, +Infinity) = ±pi/4
   * atan2(NaN, x) = NaN
   * atan2(y, NaN) = NaN
   *
   */
  function atan2(y, x) {
    y = new this(y);
    x = new this(x);
    var r,
      pr = this.precision,
      rm = this.rounding,
      wpr = pr + 4;

    // Either NaN
    if (!y.s || !x.s) {
      r = new this(NaN);

    // Both ±Infinity
    } else if (!y.d && !x.d) {
      r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);
      r.s = y.s;

    // x is ±Infinity or y is ±0
    } else if (!x.d || y.isZero()) {
      r = x.s < 0 ? getPi(this, pr, rm) : new this(0);
      r.s = y.s;

    // y is ±Infinity or x is ±0
    } else if (!y.d || x.isZero()) {
      r = getPi(this, wpr, 1).times(0.5);
      r.s = y.s;

    // Both non-zero and finite
    } else if (x.s < 0) {
      this.precision = wpr;
      this.rounding = 1;
      r = this.atan(divide(y, x, wpr, 1));
      x = getPi(this, wpr, 1);
      this.precision = pr;
      this.rounding = rm;
      r = y.s < 0 ? r.minus(x) : r.plus(x);
    } else {
      r = this.atan(divide(y, x, wpr, 1));
    }

    return r;
  }

  /*
   * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant
   * digits using rounding mode `rounding`.
   *
   * x {number|string|Decimal}
   *
   */
  function cbrt(x) {
    return new this(x).cbrt();
  }

  /*
   * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.
   *
   * x {number|string|Decimal}
   *
   */
  function ceil(x) {
    return finalise(x = new this(x), x.e + 1, 2);
  }

  /*
   * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.
   *
   * x {number|string|Decimal}


dule.Category
import org.kamiblue.client.module.Module
import org.kamiblue.client.util.TickTimer
import org.kamiblue.client.util.graphics.GlStateUtils
import org.kamiblue.event.listener.listener
import org.lwjgl.opengl.GL11.*
import kotlin.math.abs
import kotlin.math.roundToInt

internal object BossStack : Module(
    name = "BossStack",
    description = "Modify the boss health GUI to take up less space",
    category = Category.RENDER
) {
    private val mode = setting("Mode", BossStackMode.STACK)
    private val scale = setting("Scale", 1.0f, 0.1f..5.0f, 0.25f)
    private val censor = setting("Censor", false)

    @Suppress("unused")
    private enum class BossStackMode {
        REMOVE, MINIMIZE, STACK
    }

    private val texture = ResourceLocation("textures/gui/bars.png")
    private val bossInfoMap = LinkedHashMap<BossInfoClient, Int>()
    private val timer = TickTimer()

    init {
        listener<RenderGameOverlayEvent.Pre> {
            if (it.type != RenderGameOverlayEvent.ElementType.BOSSHEALTH) return@listener
            if (timer.tick(73L)) updateBossInfoMap()

            it.isCanceled = true
            drawHealthBar()
        }
    }

    private fun updateBossInfoMap() {
        bossInfoMap.clear()
        val bossInfoList = mc.ingameGUI.bossOverlay.mapBossInfos?.values ?: return

        when (mode.value) {
            BossStackMode.MINIMIZE -> {
                val closest = getMatchBoss(bossInfoList) ?: return
                bossInfoMap[closest] = -1
            }

            BossStackMode.STACK -> {
                val cacheMap = HashMap<String, ArrayList<BossInfoClient>>()

                for (bossInfo in bossInfoList) {
                    val list = cacheMap.getOrPut(if (censor.value) "Boss" else bossInfo.name.formattedText) { ArrayList() }
                    list.add(bossInfo)
                }

                for ((name, list) in cacheMap) {
                    val closest = getMatchBoss(list, if (censor.value) null else name) ?: continue
                    bossInfoMap[closest] = list.size
                }
            }

            else -> {
                // Do nothing
            }
        }
    }

    private fun getMatchBoss(list: Collection<BossInfoClient>, name: String? = null): BossInfoClient? {
        val closestBossHealth = getClosestBoss(name)?.let {
            it.health / it.maxHealth
        } ?: return null

        return list.minByOrNull {
            abs(it.percent - closestBossHealth)
        }
    }

    private fun getClosestBoss(name: String?) =
        mc.world?.loadedEntityList?.let {
            var closest = Float.MAX_VALUE
            var closestBoss: EntityLivingBase? = null

            for (entity in it) {
                if (entity !is EntityLivingBase) continue
                if (entity.isNonBoss) continue
                if (name != null && entity.displayName.formattedText != name) continue

                val dist = entity.getDistance(mc.player)
                if (dist >= closest) continue

                closest = dist
                closestBoss = entity
            }
            closestBoss
        }

    private fun drawHealthBar() {
        mc.profiler.startSection("bossHealth")

        val width = ScaledResolution(mc).scaledWidth
        var posY = 12

        GlStateUtils.blend(true)
        GlStateManager.tryBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ZERO)
        glColor4


final map = <String, List<AssetFaceResponseDto>>{};
    if (json is Map && json.isNotEmpty) {
      // ignore: parameter_assignments
      json = json.cast<String, dynamic>();
      for (final entry in json.entries) {
        map[entry.key] = AssetFaceResponseDto.listFromJson(entry.value, growable: growable,);
      }
    }
    return map;
  }

  /// The list of required keys that must be present in a JSON.
  static const requiredKeys = <String>{
    'boundingBoxX1',
    'boundingBoxX2',
    'boundingBoxY1',
    'boundingBoxY2',
    'id',
    'imageHeight',
    'imageWidth',
    'person',
  };
}

//
// AUTO-GENERATED FILE, DO NOT MODIFY!
//
// @dart=2.18

// ignore_for_file: unused_element, unused_import
// ignore_for_file: always_put_required_named_parameters_first
// ignore_for_file: constant_identifier_names
// ignore_for_file: lines_longer_than_80_chars

part of openapi.api;

class TagUpsertDto {
  /// Returns a new [TagUpsertDto] instance.
  TagUpsertDto({
    this.tags = const [],
  });

  List<String> tags;

  @override
  bool operator ==(Object other) => identical(this, other) || other is TagUpsertDto &&
    _deepEquality.equals(other.tags, tags);

  @override
  int get hashCode =>
    // ignore: unnecessary_parenthesis
    (tags.hashCode);

  @override
  String toString() => 'TagUpsertDto[tags=$tags]';

  Map<String, dynamic> toJson() {
    final json = <String, dynamic>{};
      json[r'tags'] = this.tags;
    return json;
  }

  /// Returns a new [TagUpsertDto] instance and imports its values from
  /// [value] if it's a [Map], null otherwise.
  // ignore: prefer_constructors_over_static_methods
  static TagUpsertDto? fromJson(dynamic value) {
    upgradeDto(value, "TagUpsertDto");
    if (value is Map) {
      final json = value.cast<String, dynamic>();

      return TagUpsertDto(
        tags: json[r'tags'] is Iterable
            ? (json[r'tags'] as Iterable).cast<String>().toList(growable: false)
            : const [],
      );
    }
    return null;
  }

  static List<TagUpsertDto> listFromJson(dynamic json, {bool growable = false,}) {
    final result = <TagUpsertDto>[];
    if (json is List && json.isNotEmpty) {
      for (final row in json) {
        final value = TagUpsertDto.fromJson(row);
        if (value != null) {
          result.add(value);
        }
      }
    }
    return result.toList(growable: growable);
  }

  static Map<String, TagUpsertDto> mapFromJson(dynamic json) {
    final map = <String, TagUpsertDto>{};
    if (json is Map && json.isNotEmpty) {
      json = json.cast<String, dynamic>(); // ignore: parameter_assignments
      for (final entry in json.entries) {
        final value = TagUpsertDto.fromJson(entry.value);
        if (value != null) {
          map[entry.key] = value;
        }
      }
    }
    return map;
  }

  // maps a json object with a list of TagUpsertDto-objects as value to a dart map
  static Map<String, List<TagUpsertDto>> mapListFromJson(dynamic json, {bool growable = false,}) {
    final map = <String, List<TagUpsertD


/O channel.

exception Undefined_recursive_module of (string * int * int)

Exception raised when an ill-founded recursive module definition
is evaluated. (See section 10.2.)
The arguments are the location of the definition in the source code
(file name, line number, column number).

2 Module Stdlib: the initially opened module

Module Stdlib: the initially opened module

Module Pervasives: deprecated alias for Stdlib

« The “Tail Modulo Constructor” program transformationThe standard library »

Copyright © 2022 Institut National de
Recherche en Informatique et en Automatique

<!DOCTYPE html>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="hevea 2.35">

  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<link rel="stylesheet" type="text/css" href="manual.css">
<title>OCaml - Interfacing C with OCaml</title>
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">

☰
☰The OCaml tools

Batch compilation (ocamlc)

The toplevel system or REPL (ocaml)

The runtime system (ocamlrun)

Native-code compilation (ocamlopt)

Lexer and parser generators (ocamllex, ocamlyacc)

Dependency generator (ocamldep)

The documentation generator (ocamldoc)

The debugger (ocamldebug)

Profiling (ocamlprof)

Interfacing C with OCaml

Optimisation with Flambda

Fuzzing with afl-fuzz

Runtime tracing with the instrumented runtime

The “Tail Modulo Constructor” program transformation

Chapter 20


ুল করা হবে না। তাদের জন্যে যন্ত্রনাদায়ক শাস্তি রয়েছে।"
  },
  {
    "surah_number": 5,
    "verse_number": 37,
    "content":
        "তারা দোযখের আগুন থেকে বের হয়ে আসতে চাইবে কিন্তু তা থেকে বের হতে পারবে না। তারা চিরস্থায়ী শাস্তি ভোগ করবে।"
  },
  {
    "surah_number": 5,
    "verse_number": 38,
    "content":
        "যে পুরুষ চুরি করে এবং যে নারী চুরি করে তাদের হাত কেটে দাও তাদের কৃতকর্মের সাজা হিসেবে। আল্লাহর পক্ষ থেকে হুশিয়ারী। আল্লাহ পরাক্রান্ত, জ্ঞানময়।"
  },
  {
    "surah_number": 5,
    "verse_number": 39,
    "content":
        "অতঃপর যে তওবা করে স্বীয় অত্যাচারের পর এবং সংশোধিত হয়, নিশ্চয় আল্লাহ তার তওবা কবুল করেন। নিশ্চয় আল্লাহ ক্ষমাশীল, দয়ালু।"
  },
  {
    "surah_number": 5,
    "verse_number": 40,
    "content":
        "তুমি কি জান না যে আল্লাহর নিমিত্তেই নভোমন্ডল ও ভূমন্ডলের আধিপত্য। তিনি যাকে ইচ্ছা শাস্তি দেন এবং যাকে ইচ্ছা ক্ষমা করেন। আল্লাহ সবকিছুর উপর ক্ষমতাবান।"
  },
  {


 four bytes following the Interface Type field is the
/// IANA-assigned vendor ID.
pub struct SMBiosManagementControllerHostInterface<'a> {
    parts: &'a UndefinedStruct,
}

impl<'a> SMBiosStruct<'a> for SMBiosManagementControllerHostInterface<'a> {
    const STRUCT_TYPE: u8 = 42u8;

    fn new(parts: &'a UndefinedStruct) -> Self {
        Self { parts }
    }

    fn parts(&self) -> &'a UndefinedStruct {
        self.parts
    }
}

impl<'a> SMBiosManagementControllerHostInterface<'a> {
    const INTERFACE_TYPE_OFFSET: usize = 4usize;
    const SPECIFIC_DATA_LENGTH_OFFSET: usize = 5usize;
    const SPECIFIC_DATA_OFFSET: usize = 6usize;
    const PROTOCOL_RECORDS_RELATIVE_OFFSET: usize = 7usize;

    /// Management Controller Interface Type
    pub fn interface_type(&self) -> Option<HostInterfaceTypeData> {
        self.parts
            .get_field_byte(Self::INTERFACE_TYPE_OFFSET)
            .map(|raw| HostInterfaceTypeData::from(raw))
    }

    /// Interface Type Specific Data Length
    pub fn interface_type_specific_data_length(&self) -> Option<u8> {
        self.parts.get_field_byte(Self::SPECIFIC_DATA_LENGTH_OFFSET)
    }

    /// Management Controller Host Interface Data as specified by the Interface Type
    ///
    /// This field has a minimum of four bytes.
    ///
    /// If interface type = OEM, the first four bytes are the vendor ID (MSB first), as assigned by the Internet Assigned Numbers Authority (IANA).
    ///
    /// This format uses the "Enterprise Number" that is assigned and maintained by IANA (www.iana.org) as the means of identifying a particular vendor, company, or organization.
    fn interface_type_specific_data(&self) -> Option<&[u8]> {
        self.interface_type_specific_data_length()
            .and_then(|length| {
                self.parts().get_field_data(
                    Self::SPECIFIC_DATA_OFFSET,
                    Self::SPECIFIC_DATA_OFFSET + length as usize,
                )
            })
    }

    /// X number of Protocol Records for this Host Interface Type
    pub fn number_of_protocol_records(&self) -> Option<u8> {
        self.interface_type_specific_data_length()
            .and_then(|length| {
                self.parts()
                    .get_field_byte(Self::SPECIFIC_DATA_OFFSET + length as usize)
            })
    }

    /// private function for calculating the protocol records offset
    fn protocol_records_offset(&self) -> Option<usize> {
        self.interface_type_specific_data_length()
            .and_then(|length| Some(Self::PROTOCOL_RECORDS_RELATIVE_OFFSET + length as usize))
    }

    /// Protocol Records
    pub fn protocol_record_iterator(&self) -> ProtocolRecordIterator<'_> {
        ProtocolRecordIterator::new(self)
    }
}

impl fmt::Debug for SMBiosManagementControllerHostInterface<'_> {
    fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
        fmt.debug_struct(std::any::type_name::<
            SMBiosManagementControllerHostInterface<'_>,
        >())
        .field("header", &self.parts.header)
        .field("interface_type", &self.interface_type())
        .field(
            "interface_type_specific_data_length",
            &self.interface_type_specific_data_length(),
        )
        .field(
            "interface_type_specific_data",
            &self.interface_type_specific_data(),
        )
        .field(
            "number_of_protocol_records",
            &self.number_of_protocol_records(),


and.
        """.trimIndent()
        )
    }
}package dev.storozhenko.familybot.feature.story

import dev.storozhenko.familybot.BotConfig

import dev.storozhenko.familybot.core.executors.ContinuousConversationExecutor
import dev.storozhenko.familybot.core.keyvalue.EasyKeyValueService
import dev.storozhenko.familybot.core.models.telegram.Command
import dev.storozhenko.familybot.core.routers.models.ExecutorContext
import dev.storozhenko.familybot.feature.settings.models.StoryGameActive
import org.springframework.stereotype.Component

@Component
class StoryContinuousExecutor(
    private val botConfig: BotConfig,
    private val easyKeyValueService: EasyKeyValueService,
    private val storyTellingService: StoryTellingService
) : ContinuousConversationExecutor(botConfig) {
    override fun getDialogMessages(context: ExecutorContext) =
        setOf("Расскажи затравку истории в двух-трех предложениях (ответом на это сообщение). История продлится около 5 шагов")

    override fun command() = Command.STORY

    override fun canExecute(context: ExecutorContext): Boolean {
        val message = context.message
        return message.isReply &&
                message.replyToMessage.from.userName == botConfig.botName &&
                (message.replyToMessage.text ?: "") in getDialogMessages(context)
    }

    override suspend fun execute(context: ExecutorContext) {
        val isGameActive = easyKeyValueService.get(StoryGameActive, context.chatKey, false)
        if (isGameActive) {
            context.send("Игра уже начата, дурачок, просто вызови /story")
            return
        }
        storyTellingService.initStory(context)
    }
}package dev.storozhenko.familybot.feature.gambling

import dev.storozhenko.familybot.BotConfig

import dev.storozhenko.familybot.common.extensions.untilNextMonth
import dev.storozhenko.familybot.core.executors.ContinuousConversationExecutor
import dev.storozhenko.familybot.core.keyvalue.EasyKeyValueService
import dev.storozhenko.familybot.core.keyvalue.models.UserAndChatEasyKey
import dev.storozhenko.familybot.core.models.dictionary.Phrase
import dev.storozhenko.familybot.core.models.dictionary.Pluralization
import dev.storozhenko.familybot.core.models.telegram.Command
import dev.storozhenko.familybot.core.models.telegram.User
import dev.storozhenko.familybot.core.routers.models.ExecutorContext
import dev.storozhenko.familybot.feature.pidor.models.Pidor
import dev.storozhenko.familybot.feature.pidor.repos.PidorRepository
import dev.storozhenko.familybot.feature.pidor.services.PidorCompetitionService
import dev.storozhenko.familybot.feature.settings.models.BetTolerance
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.springframework.stereotype.Component
import org.telegram.telegrambots.meta.api.methods.send.SendDice
import java.time.LocalDateTime
import java.time.ZoneOffset
import kotlin.time.Duration.Companion.seconds

@Component
class BetContinuousExecutor(
    private val pidorRepository: PidorRepository,
    private val pidorCompetitionService: PidorCompetitionService,
    private val easyKeyValueService: EasyKeyValueService,
    private val botConfig: BotConfig,
) : ContinuousConversationExecutor(botConfig) {
    private val diceNumbers = listOf(1, 2, 3, 4, 5, 6)

    override fun getDialogMessages(context: ExecutorContext): Set<String> {
        return context.allPhrases(Phrase.BET_INITIAL_MESSAGE)
    }

    override fun command() = Command.BET

    override fun canExecute(context: ExecutorContext): Boolean {
        val message = context.