if settings.startup["bobmods-modules-enablegodmodules"].value == true then
  data:extend({
    {
      type = "recipe",
      name = "bob-god-module",
      enabled = false,
      ingredients = {
        { type = "item", name = "bob-speed-module-5", amount = 2 },
        { type = "item", name = "bob-efficiency-module-5", amount = 6 },
        { type = "item", name = "bob-pollution-clean-module-5", amount = 4 },
        { type = "item", name = "bob-module-case", amount = 1 },
      },
      energy_required = 30,
      results = { { type = "item", name = "bob-god-module", amount = 1 } },
    },
    {
      type = "recipe",
      name = "bob-god-module-productivity",
      enabled = false,
      ingredients = {
        { type = "item", name = "bob-speed-module-5", amount = 2 },
        { type = "item", name = "bob-productivity-module-5", amount = 2 },
        { type = "item", name = "bob-efficiency-module-5", amount = 6 },
        { type


To_DnsZonesTXTRecord(&other)
	if err != nil {
		return err.Error()
	}

	// Use AssignPropertiesFrom() to convert back to our original type
	var actual DnsZonesTXTRecord
	err = actual.AssignProperties_From_DnsZonesTXTRecord(&other)
	if err != nil {
		return err.Error()
	}

	// Check for a match
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

func Test_DnsZonesTXTRecord_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 20
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of DnsZonesTXTRecord via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForDnsZonesTXTRecord, DnsZonesTXTRecordGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForDnsZonesTXTRecord runs a test to see if a specific instance of DnsZonesTXTRecord round trips to JSON and back losslessly
func RunJSONSerializationTestForDnsZonesTXTRecord(subject DnsZonesTXTRecord) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual DnsZonesTXTRecord
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of DnsZonesTXTRecord instances for property testing - lazily instantiated by DnsZonesTXTRecordGenerator()
var dnsZonesTXTRecordGenerator gopter.Gen

// DnsZonesTXTRecordGenerator returns a generator of DnsZonesTXTRecord instances for property testing.
func DnsZonesTXTRecordGenerator() gopter.Gen {
	if dnsZonesTXTRecordGenerator != nil {
		return dnsZonesTXTRecordGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddRelatedPropertyGeneratorsForDnsZonesTXTRecord(generators)
	dnsZonesTXTRecordGenerator = gen.Struct(reflect.TypeOf(DnsZonesTXTRecord{}), generators)

	return dnsZonesTXTRecordGenerator
}

// AddRelatedPropertyGeneratorsForDnsZonesTXTRecord is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForDnsZonesTXTRecord(gens map[string]gopter.Gen) {
	gens["Spec"] = DnsZonesTXTRecord_SpecGenerator()
	gens["Status"] = DnsZonesTXTRecord_STATUSGenerator()
}

func Test_DnsZonesTXTRecordOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MaxSize = 10
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip from DnsZonesTXTRecordOperatorSpec to DnsZonesTXTRecordOperatorSpec via AssignProperties_To_DnsZonesTXTRecordOperatorSpec & AssignProperties_From_DnsZ


.y;
        var originalX      = x;
        var originalY      = y;
        var text           = opt.text;
        var text_multiline = text.split(/\r?\n/g);
        var numlines       = text_multiline.length;
        var font           = opt.font ? opt.font : 'Arial';
        var size           = opt.size ? opt.size : 10;
        var size_pixels    = size * 1.5;
        var bold           = opt.bold;
        var halign         = opt.halign ? opt.halign : 'left';
        var valign         = opt.valign ? opt.valign : 'bottom';
        var tag            = typeof opt.tag == 'string' && opt.tag.length > 0 ? opt.tag : '';
        var marker         = opt.marker;
        var angle          = opt.angle || 0;

        /**
        * Changed the name of boundingFill/boundingStroke - this allows you to still use those names
        */
        if (typeof opt.boundingFill == 'string')   opt['bounding.fill']   = opt.boundingFill;
        if (typeof opt.boundingStroke == 'string') opt['bounding.stroke'] = opt.boundingStroke;

        var bounding                = opt.bounding;
        var bounding_stroke         = opt['bounding.stroke'] ? opt['bounding.stroke'] : 'black';
        var bounding_fill           = opt['bounding.fill'] ? opt['bounding.fill'] : 'rgba(255,255,255,0.7)';
        var bounding_shadow         = opt['bounding.shadow'];
        var bounding_shadow_color   = opt['bounding.shadow.color'] || '#ccc';
        var bounding_shadow_blur    = opt['bounding.shadow.blur'] || 3;
        var bounding_shadow_offsetx = opt['bounding.shadow.offsetx'] || 3;
        var bounding_shadow_offsety = opt['bounding.shadow.offsety'] || 3;
        var bounding_linewidth      = opt['bounding.linewidth'] || 1;

        /**
        * Initialize the return value to an empty object
        */
        var ret = {};

        /**
        * The text arg must be a string or a number
        */
        if (typeof text == 'number') {
            text = String(text);
        }

        if (typeof text != 'string') {
            alert('[RGRAPH TEXT] The text given must a string or a number');
            return;
        }

        /**
        * This facilitates vertical text
        */
        if (angle != 0) {
            co.save();
            co.translate(x, y);
            co.rotate((Math.PI / 180) * angle)
            x = 0;
            y = 0;
        }

        /**
        * Set the font
        */
        co.font = (opt.bold ? 'bold ' : '') + size + 'pt ' + font;

        /**
        * Measure the width/height. This must be done AFTER the font has been set
        */
        var width=0;
        for (var i=0; i<numlines; ++i) {
            width = Math.max(width, co.measureText(text_multiline[i]).width);
        }
        var height = size_pixels * numlines;

        /**
        * Accommodate old MSIE 7/8
        */
        //if (document.all && ISOLD) {
            //y += 2;
        //}

        /**
        * If marker is specified draw a marker at the X/Y coordinates
        */
        if (opt.marker) {
            var marker_size = 10;
            var strokestyle = co.strokeStyle;
            co.beginPath();
                co.strokeStyle = 'red';
                co.moveTo(x, y - marker_size);
                co.lineTo(x, y + marker_size);
                co.moveTo(x - marker_size, y);
                co.lineTo(x + marker_size, y);
            co.stroke();
            co.strokeStyle = strokestyle;
        }

        /**
        * Set the horizontal


usModifier))
  }
}
import {Event} from '../Events/Event';
import {Environment} from '../Environment/Environment';

export abstract class Entity {

    private environment = new Environment();

    constructor(private id: string) {
    }

    public toString(): string {
        return (<any> this).constructor.name + '#' + this.id;
    }

    public fireEvent(event: Event) {
        this.environment.fireEvent(this, event);
    }

    public getEnvironment() {
        return this.environment;
    }

    public setEnvironment(environment) {
        this.environment = environment;
    }
}
import csv from "csv-parser";
import fs from "fs";
import arg from "arg";
import axios from "axios";
import pLimit from "p-limit";
import {
  forEach,
  isEmpty,
  isString,
  mapValues,
  trim,
  trimEnd,
  trimStart,
} from "lodash";

const args = arg({ "--csv-file": String });
if (!args["--csv-file"])
  throw new Error("missing required argument: --csv-file");

const API_URL =
  "https://cleversehack-api-dot-everyday-development.et.r.appspot.com";
const results: Input[] = [];

interface Input {
  name: string;
  maxCapacity: number;
  hospital: string;
  location: string;
  address: string;
  phoneNumber?: string;
  website?: string;
  G: boolean;
  Y: boolean;
  R: boolean;
}

interface Output {
  name: string;
  maxCapacity: number;
  currentCapacity: number;
  hospital: string;
  latitude: number;
  longitude: number;
  address: string;
  phoneNumber?: string;
  website?: string;
  type: "HOSPITEL" | "HOSPITAL";
  tags: string[];
}

function randomInt(inclusiveMin: number, exclusiveMax: number): number {
  const min = Math.ceil(inclusiveMin);
  const max = Math.floor(exclusiveMax);
  return Math.floor(Math.random() * (max - min) + min);
}

fs.createReadStream(args["--csv-file"]!)
  .pipe(csv())
  .on("data", (data) => !isEmpty(data.name) && results.push(data))
  .on("end", async () => {
    const _results = results.map((result) => {
      const _result = mapValues(result, (value) => {
        if (isString(value)) value = trim(value);
        return value;
      });

      return _result;
    });

    const out: Output[] = _results.map((result) => {
      const location = result.location as string;
      const [latitude, longitude] = trimEnd(trimStart(location, "("), ")")
        .split(",")
        .map((a) => Number(trim(a)));

      return {
        name: result.name as string,
        maxCapacity: Number(result.maxCapacity),
        currentCapacity: randomInt(0, Number(result.maxCapacity)),
        hospital: result.hospita


hat only a truly malicious user will be doing so.
			class.sealed = true
			setmetatable(class, classmeta)
			getmetatable(class.prototype).__newindex = protonewindex
			pool[key] = class
		end
		return pool[key]
	end
end

AceOO.Factory = Factory
AceOO.Object = Object
AceOO.Class = Class
AceOO.Mixin = Mixin
AceOO.Interface = Interface
AceOO.Classpool = Classpool
AceOO.inherits = inherits

-- Library handling bits

local function activate(self, oldLib, oldDeactivate)
	AceOO = self
	Factory = self.Factory
	Object = self.Object
	Class = self.Class
	ClassFactory.prototype = Class
	Mixin = self.Mixin
	Interface = self.Interface
	Classpool = self.Classpool

	if oldLib then
		self.classes = oldLib.classes
	end
	if not self.classes then
		self.classes = setmetatable({}, {__mode="k"})
	else
		for class in pairs(self.classes) do
			class.new = class_new
		end
	end

	if oldDeactivate then
		oldDeactivate(oldLib)
	end
end

AceLibrary:Register(AceOO, MAJOR_VERSION, MINOR_VERSION, activate)
AceOO = AceLibrary(MAJOR_VERSION)


num>18.2.6.1.2Runtime Semantics: Decode ( <var>string</var>, <var>reservedSet</var> )

The unescaping and decoding process is described by the abstract operation Decode taking two String arguments <var>string</var> and <var>reservedSet</var>.

 <emu-alg>

Let <var>strLen</var> be the number of code units in <var>string</var>.
Let <var>R</var> be the empty String.
Let <var>k</var> be 0.
Repeat,

If <var>k</var> equals <var>strLen</var>, return <var>R</var>.
Let <var>C</var> be the code unit at index <var>k</var> within <var>string</var>.
If <var>C</var> is not the code unit 0x0025 (PERCENT SIGN), then

Let <var>S</var> be the String value containing only the code unit <var>C</var>.

Else <var>C</var> is the code unit 0x0025 (PERCENT SIGN),

Let <var>start</var> be <var>k</var>.
If <var>k</var> + 2 is greater than or equal to <var>strLen</var>, throw a <emu-val>URIError</emu-val> exception.
If the code units at index (<var>k</var> + 1) and (<var>k</var> + 2) within <var>string</var> do not represent hexadecimal digits, throw a <emu-val>URIError</emu-val> exception.
Let <var>B</var> be the 8-bit value represented by the two hexadecimal digits at index (<var>k</var> + 1) and (<var>k</var> + 2).
Increment <var>k</var> by 2.
If the most significant bit in <var>B</var> is 0, then

Let <var>C</var> be the code unit whose value is <var>B</var>.
If <var>C</var> is not in <var>reservedSet</var>, then

Let <var>S</var> be the String value containing only the code unit <var>C</var>.

Else <var>C</var> is in <var>reservedSet</var>,

Let <var>S</var> be the substring of <var>string</var> from index <var>start</var> to index <var>k</var> inclusive.

Else the most significant bit in <var>B</var> is 1,

Let <var>n</var> be the smallest nonnegative integer such that (<var>B</var> << <var>n</var>) & 0x80 is equal to 0.
If <var>n</var> equals 1 or <var>n</var> is greater than 4, throw a <emu-val>URIError</emu-val> exception.
Let <var>Octets</var> be a <emu-xref href=#sec-list-and-record-specification-type id=_ref_4872>List</emu-xref> of 8-bit integers of size <var>n</var>.
Set <var>Octets</var>[0] to <var>B</var>.
If <var>k</var> + (3 × (<var>n</var> - 1)) is greater than or equal to <var>strLen</var>, throw a <emu-val>URIError</emu-val> exception.
Let <var>j</var> be 1.
Repeat, while <var>j</var> < <var>n</var>

Increment <var>k</var> by 1.
If the code unit at index <var>k</var> within <var>string</var> is not the code unit 0


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

TEST_BEGIN_64(FDIVst1, 2)
TEST_INPUTS(TEST_INPUTS_MMX_QWORD)
    push ARG1_64
    fld QWORD PTR [rsp]
    push ARG2_64
    fld QWORD PTR [rsp]
    fdiv st(1)
TEST_END_64

TEST_BEGIN_64(FDIVm64, 2)
TEST_INPUTS(TEST_INPUTS_MMX_QWORD)
    push ARG1_64
    fld QWORD PTR [rsp]
    push ARG2_64
    fdiv QWORD PTR [rsp]
TEST_END_64

TEST_BEGIN_64(FDIVm32, 2)
TEST_INPUTS(TEST_INPUTS_MMX_DWORD)
    push ARG1_64
    fld DWORD PTR [rsp]
    push ARG2_64
    fdiv DWORD PTR [rsp]
TEST_END_64

TEST_BEGIN_64(FDIVP, 2)
TEST_INPUTS(TEST_INPUTS_MMX_QWORD)
    push ARG1_64
    fld QWORD PTR [rsp]
    push ARG2_64
    fld QWORD PTR [rsp]
    fdivp
TEST_END_64

TEST_BEGIN_64(FDIVPst1, 2)
TEST_INPUTS(TEST_INPUTS_MMX_QWORD)
    push ARG1_64
    fld QWORD PTR [rsp]
    push ARG2_64
    fld QWORD PTR [rsp]
    fdivp st(1)
TEST_END_64

TEST_BEGIN_64(FDIVR


PC_ROUND_RN, inexact_nobias_s	# round to nearest
	beq	v0, MACH_FPC_ROUND_RZ, inexact_nobias_s	# round to zero
	beq	v0, MACH_FPC_ROUND_RP, 1f	# round to +infinity
	beq	t0, zero, inexact_nobias_s	# if sign is positive, truncate
	b	2f
1:
	bne	t0, zero, inexact_nobias_s	# if sign is negative, truncate
2:
	addu	t2, t2, 1			# add rounding bit
	b	inexact_nobias_s
3:
	li	v1, 32
	subu	v1, v1, t9
	sltu	v0, zero, t8			# be sure to save any one bits
	sll	t8, t2, v1			# save bits shifted out
	or	t8, t8, v0			# include sticky bits
	srl	t2, t2, t9
/*
 * Now round the denormalized result.
 */
	and	v0, a1, MACH_FPC_ROUNDING_BITS	# get rounding mode
	beq	v0, MACH_FPC_ROUND_RN, 3f	# round to nearest
	beq	v0, MACH_FPC_ROUND_RZ, 5f	# round to zero (truncate)
	beq	v0, MACH_FPC_ROUND_RP, 1f	# round to +infinity
	beq	t0, zero, 5f			# if sign is positive, truncate
	b	2f
1:
	bne	t0, zero, 5f			# if sign is negative, truncate
2:
	beq	t8, zero, 5f			# if exact, continue
	addu	t2, t2, 1			# add rounding bit
	b	5f
3:
	li	v0, GUARDBIT			# load guard bit for rounding
	addu	v0, v0, t8			# add remainder
	sltu	v1, v0, t8			# compute carry out
	beq	v1, zero, 4f			# if no carry, continue
	addu	t2, t2, 1			# add carry to result
4:
	bne	v0, zero, 5f			# if rounded remainder is zero
	and	t2, t2, ~1			#  clear LSB (round to nearest)
5:
	move	t1, zero			# denorm or zero exponent
	jal	set_fd_s			# save result
	beq	t8, zero, done			# check for exact result
	or	a1, a1, MACH_FPC_EXCEPTION_UNDERFLOW | MACH_FPC_STICKY_UNDERFLOW
	or	a1, a1, MACH_FPC_EXCEPTION_INEXACT | MACH_FPC_STICKY_INEXACT
	and	v0, a1, MACH_FPC_ENABLE_INEXACT
	bne	v0, zero, fpe_trap
	ctc1	a1, MACH_FPC_CSR		# save exceptions
	b	done

/*
 * Determine the amount to shift the fraction in order to restore the
 * normalized position. After that, round and handle exceptions.
 */
norm_d:
	move	v0, t2
	move	t9, zero			# t9 = num of leading zeros
	bne	t2, zero, 1f
	move	v0, t3
	addu	t9, 32
	bne	t3, zero, 1f
	move	v0, t8
	addu	t9, 32
1:
	srl	v1, v0, 16
	bne	v1, zero, 1f
	addu	t9, 16
	sll	v0, 16
1:
	srl	v1, v0, 24
	bne	v1, zero, 1f
	addu	t9, 8
	sll	v0, 8


[doc = r"Writes raw bits to the field"]
    #[inline(always)]
    pub fn bit(self, value: bool) -> &'a mut W {
        self.w.bits = (self.w.bits & !(0x01 << 16)) | ((value as u32 & 0x01) << 16);
        self.w
    }
}
#[doc = "Field `OVF_CNT_RESET_ST_CH0` reader - This is the status bit of LEDC_OVF_CNT_RESET_CH%s."]
pub struct OVF_CNT_RESET_ST_CH0_R(crate::FieldReader<bool, bool>);
impl OVF_CNT_RESET_ST_CH0_R {
    #[inline(always)]
    pub(crate) fn new(bits: bool) -> Self {
        OVF_CNT_RESET_ST_CH0_R(crate::FieldReader::new(bits))
    }
}
impl core::ops::Deref for OVF_CNT_RESET_ST_CH0_R {
    type Target = crate::FieldReader<bool, bool>;
    #[inline(always)]
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}
impl R {
    #[doc = "Bits 0:1 - This field is used to select one of timers for channel %s. 0: select timer 0. 1: select timer 1. 2: select timer 2. 3: select timer 3."]
    #[inline(always)]
    pub fn timer_sel_ch0(&self) -> TIMER_SEL_CH0_R {
        TIMER_SEL_CH0_R::new((self.bits & 0x03) as u8)
    }
    #[doc = "Bit 2 - Set this bit to enable signal output on channel %s."]
    #[inline(always)]
    pub fn sig_out_en_ch0(&self) -> SIG_OUT_EN_CH0_R {
        SIG_OUT_EN_CH0_R::new(((self.bits >> 2) & 0x01) != 0)
    }
    #[doc = "Bit 3 - This bit is used to control the output value when channel %s is inactive."]
    #[inline(always)]
    pub fn idle_lv_ch0(&self) -> IDLE_LV_CH0_R {
        IDLE_LV_CH0_R::new(((self.bits >> 3) & 0x01) != 0)
    }
    #[doc = "Bits 5:14 - This register is used to configure the maximum times of overflow minus 1. The LEDC_OVF_CNT_CH%s_INT interrupt will be triggered when channel %s overflows for (LEDC_OVF_NUM_CH%s + 1) times."]
    #[inline(always)]
    pub fn ovf_num_ch0(&self) -> OVF_NUM_CH0_R {
        OVF_NUM_CH0_R::new(((self.bits >> 5) & 0x03ff) as u16)
    }
    #[doc = "Bit 15 - This bit is used to enable the ovf_cnt of channel %s."]
    #[inline(always)]
    pub fn ovf_cnt_en_ch0(&self) -> OVF_CNT_EN_CH0_R {
        OVF_CNT_EN_CH0_R::new(((self.bits >> 15) & 0x01) != 0)
    }
    #[doc = "Bit 17 - This is the status bit of LEDC_OVF_CNT_RESET_CH%s."]
    #[inline(always)]
    pub fn ovf_cnt_reset_st_ch0(&self) -> OVF_CNT_RESET_ST_CH0_R {
        OVF_CNT_RESET_ST_CH0_R::new(((self.bits >> 17) & 0x01) != 0)
    }
}
impl W {
    #[doc = "Bits 0:1 - This field is used to select one of timers for channel %s. 0: select timer 0. 1: select timer 1. 2: select timer 2. 3: select timer 3."]
    #[inline(always)]
    pub fn timer_sel_ch0(&mut self) -> TIMER_SEL_CH0_W {
        T


;--text-hsl:233.793 16.022% 35.49%;--subtext1:#5c5f77;--subtext1-rgb:92,95,119;--subtext1-hsl:233.333 12.796% 41.373%;--subtext0:#6c6f85;--subtext0-rgb:108,111,133;--subtext0-hsl:232.8 10.373% 47.255%;--overlay2:#7c7f93;--overlay2-rgb:124,127,147;--overlay2-hsl:232.174 9.623% 53.137%;--overlay1:#8c8fa1;--overlay1-rgb:140,143,161;--overlay1-hsl:231.429 10.048% 59.02%;--overlay0:#9ca0b0;--overlay0-rgb:156,160,176;--overlay0-hsl:228 11.236% 65.098%;--surface2:#acb0be;--surface2-rgb:172,176,190;--surface2-hsl:226.667 12.162% 70.98%;--surface1:#bcc0cc;--surface1-rgb:188,192,204;--surface1-hsl:225 13.559% 76.863%;--surface0:#ccd0da;--surface0-rgb:204,208,218;--surface0-hsl:222.857 15.909% 82.745%;--base:#eff1f5;--base-rgb:239,241,245;--base-hsl:220 23.077% 94.902%;--mantle:#e6e9ef;--mantle-rgb:230,233,239;--mantle-hsl:220 21.951% 91.961%;--crust:#dce0e8;--crust-rgb:220,224,232;--crust-hsl:220 20.69% 88.627%}}@media (prefers-color-scheme:dark){:root{--rosewater:#f2d5cf;--rosewater-rgb:242,213,207;--rosewater-hsl:10.286 57.377% 88.039%;--flamingo:#eebebe;--flamingo-rgb:238,190,190;--flamingo-hsl:0 58.537% 83.922%;--pink:#f4b8e4;--pink-rgb:244,184,228;--pink-hsl:316 73.171% 83.922%;--mauve:#ca9ee6;--mauve-rgb:202,158,230;--mauve-hsl:276.667 59.016% 76.078%;--red:#e78284;--red-rgb:231,130,132;--red-hsl:358.812 67.785% 70.784%;--maroon:#ea999c;--maroon-rgb:234,153,156;--maroon-hsl:357.778 65.854% 75.882%;--peach:#ef9f76;--peach-rgb:239,159,118;--peach-hsl:20.331 79.085% 70.0%;--yellow:#e5c890;--yellow-rgb:229,200,144;--yellow-hsl:39.529 62.044% 73.137%;--green:#a6d189;--green-rgb:166,209,137;--green-hsl:95.833 43.902% 67.843%;--teal:#81c8be;--teal-rgb:129,200,190;--teal-hsl:171.549 39.227% 64.51%;--sky:#99d1db;--sky-rgb:153,209,219;--sky-hsl:189.091 47.826% 72.941%;--sapphire:#85c1dc;--sapphire-rgb:133,193,220;--sapphire-hsl:198.621 55.414% 69.216%;--blue:#8caaee;--blue-rgb:140,170,238;--blue-hsl:221.633 74.242% 74.118%;--lavender:#babbf1;--lavender-rgb:186,187,241;--lavender-hsl:238.909 66.265% 83.725%;--text:#c6d0f5;--text-rgb:198,208,245;--text-hsl:227.234 70.149% 86.863%;--subtext1:#b5bfe2;--subtext1-rgb:181,191,226;--subtext1-hsl:22


/**
 * @file LoadableBehavior.h
 *  @author Arne Boeckmann (arne.boeckmann@dfki.de)
 */

#ifndef LOADABLEBEHAVIOR_H_
#define LOADABLEBEHAVIOR_H_

#ifdef _PRINT_HEADER_
  #warning "LoadableBehavior.h"
#endif

#include <lib_manager/LibInterface.hpp>
#include "Behavior.h"
#include <string>

namespace bolero {

  /**
   * A Behavior that can be loaded by the the bl_loader.
   */
  class LoadableBehavior : public lib_manager::LibInterface, public Behavior {

  public:
      LoadableBehavior(lib_manager::LibManager *libManager,
          const std::string &libName, const int libVersion) :
      lib_manager::LibInterface(libManager),
      Behavior(),
      libName(libName),
      libVersion(libVersion)
    {}

    virtual ~LoadableBehavior() {}

    // LibInterface methods
    virtual int getLibVersion() const {return libVersion;}
    virtual const std::string getLibName() const {return libName;}
    virtual void createModuleInfo() {}

    /**Initializes the Behavior using the specified config file.
     * Initialization should be done only once. It is intended to set the
     * Behavior's template parameters.
     *
     * The Behavior needs to be initialized before any other method can be called.
     *
     * \return true if the initialization was successful, false otherwise.
     *
     */
    virtual bool initialize(const std::string& initialConfigPath) = 0;

    /**Configures the Behavior using the specified config file.
     * This method should be called after initialize().
     * It sets the runtime parameters of the Behavior and may be called
     * multiple times during execution.
     *
     * The config file should be in yaml format.
     * \return true if the configuration was successful, false otherwise.
     */
    virtual bool configure(const std::string& configPath) = 0;

    /** Configures the behavior using the specified \p yaml string.
     *  The string should contain valid yaml.
     *
     * \return true if the configuration was successful, false otherwise.
     */
    virtual bool configureYaml(const std::string& yaml) = 0;

  protected:
    std::string libName;
    int libVersion;

  }; // end of class definition LoadableBehavior

} // end of namespace bolero

#endif /* LOADABLEBEHAVIOR_H_ */


nstrument.IsRendererAlive
                ? instrument.Renderer!.SequencerTick - bufferTicks
                : int.MaxValue;

            // TODO: Remove LINQ brain-rot.
            var events = instrument.MidiEventBuffer
                .TakeWhile(x => x.Tick < bufferedTick)
                .Take(max)
                .ToArray();

            var eventCount = events.Length;

            if (eventCount == 0)
                continue;

            RaiseNetworkEvent(new InstrumentMidiEventEvent(GetNetEntity(uid), events));

            instrument.SentWithinASec += eventCount;

            instrument.MidiEventBuffer.RemoveRange(0, eventCount);
        }
    }
}


on {
        return f.getExp().evalWE(getEvaluator(), env.getBind(), env, p);
    }

    IDatatype eval(Expr e, Environment env, Producer p) throws EngineException {
        return e.evalWE(getEvaluator(), env.getBind(), env, p);
    }

//        if (dt == null) {
//            // Evaluation error, may be overloaded by visitor event @error function
//            DatatypeValue res = env.getVisitor().error(env.getEval(), exp, EMPTY);
//            if (res != null) {
//                return (IDatatype) res;
//            }
//        }

    // values var { unnext(exp) }
    // @todo Producer is not current producer but global producer
    Mappings eval(Filter f, Environment env, List<Node> nodes)
            throws EngineException {
        return eval(f, env, getProducer(), nodes);
    }

    Mappings eval(Filter f, Environment env, Producer p, List<Node> nodes)
            throws EngineException {

        int n = 1;
        Expr exp = f.getExp();
        switch (exp.oper()) {

            case UNNEST:
                if (hasListener) {
                    listener.listen(exp);
                }
                if (exp.arity() == 2) {
                    // unnest(exp, 2)
                    IDatatype dt = eval(exp.getExp(1), env, p);
                    if (dt == null) {
                        return new Mappings();
                    }
                    n = dt.intValue();
                }
                exp = exp.getExp(0);

            default:
                IDatatype res = eval(exp, env, p);
                if (res == null) {
                    return new Mappings();
                }
                // use std producer to map in case local p cannot map
                return getProducer().map(nodes, res, n);
        }
    }

    /**
     * Enumerate candidate edges
     * exp = query edge
     * graphNode = null for default graph triple pattern
     * graphNode = URI of named graph for named graph triple pattern
     * graph ?g { exp } evaluates exp for each value of ?g = g_i
     * in this case graphNode = g_i and from is useless here
     * from named has been used in named graph pattern evaluator
     * data is possible relevant bindings coming from preceding statement evaluation
     * data may be null
     *
     */
    private int path(Producer p, Node graphNode, Exp exp, Mappings data, Stack stack, int n) throws SparqlException {
        int backtrack = n - 1, evENUM = Event.ENUM;
        PathFinder path = getPathFinder(exp, p);
        Filter f = null;
        Memory env = getMemory();
        Query qq = getQuery();
        boolean isEvent = hasEvent;

        if (data!=null && data.getNodeList()!=null && isPushEdgeMappings()) {
            // push values(data) before edge in stack
            logger.info(String.format("Push path mappings:\nvalue %s\n%s",
                 data.getNodeList(), data.toString(false, false, DISPLAY_RESULT_MAX)));
            return eval(p, graphNode, stack.addCopy(n, exp.getValues(data)), n);
        }

        if (stack.size() > n + 1) {
            if (stack.get(n + 1).isFilter()) {
                f = stack.get(n + 1).getFilter();
            }
        }

        path.start(exp.getEdge(), qq.getPathNode(), env, f);
        boolean isSuccess = false;

        List<Node> list = qq.getFrom(graphNode);
        Node backtrackNode = graphNode;

        if (p.getMode() == Producer.EXTENSION) {
            if (p.getQuery() == env.getQuery()) {
                list = empty;
                backtrackNode = p.getGraphNode();
            } else {


),
      decoder_factory_(CreateAudioDecoderFactory<AudioDecoderOpus>()),
      acm_send_(AudioCodingModule::Create()),
      neteq_(DefaultNetEqFactory().Create(env_,
                                          NetEq::Config(),
                                          decoder_factory_)),
      channel_(std::make_unique<Channel>()),
      packetization_callback_(
          std::make_unique<MonitoringAudioPacketizationCallback>(
              channel_.get())) {
  EXPECT_EQ(
      0, acm_send_->RegisterTransportCallback(packetization_callback_.get()));
  channel_->RegisterReceiverNetEq(neteq_.get());
}

bool TestVadDtx::RegisterCodec(const SdpAudioFormat& codec_format,
                               std::optional<Vad::Aggressiveness> vad_mode) {
  constexpr int payload_type = 17, cn_payload_type = 117;
  bool added_comfort_noise = false;

  auto encoder = encoder_factory_->Create(env_, codec_format,
                                          {.payload_type = payload_type});
  if (vad_mode.has_value() &&
      !absl::EqualsIgnoreCase(codec_format.name, "opus")) {
    AudioEncoderCngConfig config;
    config.speech_encoder = std::move(encoder);
    config.num_channels = 1;
    config.payload_type = cn_payload_type;
    config.vad_mode = vad_mode.value();
    encoder = CreateComfortNoiseEncoder(std::move(config));
    added_comfort_noise = true;
  }
  channel_->SetIsStereo(encoder->NumChannels() > 1);
  acm_send_->SetEncoder(std::move(encoder));

  std::map<int, SdpAudioFormat> receive_codecs = {{payload_type, codec_format}};
  neteq_->SetCodecs(receive_codecs);

  return added_comfort_noise;
}

// Encoding a file and see if the numbers that various packets occur follow
// the expectation.
void TestVadDtx::Run(absl::string_view in_filename,
                     int frequency,
                     int channels,
                     absl::string_view out_filename,
                     bool append,
                     const int* expects) {
  packetization_callback_->ResetStatistics();

  PCMFile in_file;
  in_file.Open(in_filename, frequency, "rb");
  in_file.ReadStereo(channels > 1);
  // Set test length to 1000 ms (100 blocks of 10 ms each).
  in_file.SetNum10MsBlocksToRead(100);
  // Fast-forward both files 500 ms (50 blocks). The first second of the file is
  // silence, but we want to keep half of that to test silence periods.
  in_file.FastForward(50);

  PCMFile out_file;
  if (append) {
    out_file.Open(out_filename, kOutputFreqHz, "ab");
  } else {
    out_file.Open(out_filename, kOutputFreqHz, "wb");
  }

  uint16_t frame_size_samples = in_file.PayloadLength10Ms();
  AudioFrame audio_frame;
  while (!in_file.EndOfFile()) {
    in_file.Read10MsData(audio_frame);
    audio_frame.timestamp_ = time_stamp_;
    time_stamp_ += frame_size_samples;
    EXPECT_GE(acm_send_->Add10MsData(audio_frame), 0);
    bool muted;
    neteq_->GetAudio(&audio_frame, &muted);
    resampler_helper_.MaybeResample(kOutputFreqHz, &audio_frame);
    ASSERT_FALSE(muted);
    out_file.Write10MsData(audio_frame);
  }

  in_file.Close(


tWebResourceFactory().createPage(
                getTestcasesFilePath() + "AW21/Aw21Rule06013/AW21.Test.06.01.03-2Failed-04.html"));
        getWebResourceMap().put("AW21.Test.06.01.03-2Failed-05",
                getWebResourceFactory().createPage(
                getTestcasesFilePath() + "AW21/Aw21Rule06013/AW21.Test.06.01.03-2Failed-05.html"));
        getWebResourceMap().put("AW21.Test.06.01.03-2Failed-06",
                getWebResourceFactory().createPage(
                getTestcasesFilePath() + "AW21/Aw21Rule06013/AW21.Test.06.01.03-2Failed-06.html"));
        getWebResourceMap().put("AW21.Test.06.01.03-2Failed-07",
                getWebResourceFactory().createPage(
                getTestcasesFilePath() + "AW21/Aw21Rule06013/AW21.Test.06.01.03-2Failed-07.html"));
        getWebResourceMap().put("AW21.Test.06.01.03-2Failed-08",
                getWebResourceFactory().createPage(
                getTestcasesFilePath() + "AW21/Aw21Rule06013/AW21.Test.06.01.03-2Failed-08.html"));
        getWebResourceMap().put("AW21.Test.06.01.03-3NMI-01",
                getWebResourceFactory().createPage(
                getTestcasesFilePath() + "AW21/Aw21Rule06013/AW21.Test.06.01.03-3NMI-01.html"));
        getWebResourceMap().put("AW21.Test.06.01.03-3NMI-02",
                getWebResourceFactory().createPage(
                getTestcasesFilePath() + "AW21/Aw21Rule06013/AW21.Test.06.01.03-3NMI-02.html"));
        getWebResourceMap().put("AW21.Test.06.01.03-3NMI-03",
                getWebResourceFactory().createPage(
                getTestcasesFilePath() + "AW21/Aw21Rule06013/AW21.Test.06.01.03-3NMI-03.html"));
        getWebResourceMap().put("AW21.Test.06.01.03-3NMI-05",
                getWebResourceFactory().createPage(
                getTestcasesFilePath() + "AW21/Aw21Rule06013/AW21.Test.06.01.03-3NMI-05.html"));
        getWebResourceMap().put("AW21.Test.06.01.03-3NMI-06",
                getWebResourceFactory().createPage(
                getTestcasesFilePath() + "AW21/Aw21Rule06013/AW21.Test.06.01.03-3NMI-06.html"));
        getWebResourceMap().put("AW21.Test.06.01.03-3NMI-07",
                getWebResourceFactory().createPage(
                getTestcasesFilePath() + "AW21/Aw21Rule06013/AW21.Test.06.01.03-3NMI-07.html"));
    }

    @Override
    protected void setProcess() {
        ProcessResult processResult =
                processPageTest("AW21.Test.06.01.01-2Failed-01");
        assertEquals(TestSolution.FAILED,processResult.getValue());
        assertEquals("UnexplicitContext",
                ((ProcessRemark)processResult.getRemarkSet().toArray()[0]).getMessageCode());

        processResult = processPageTest("AW21.Test.06.01.01-2Failed-02");
        assertEquals(TestSolution.FAILED,processResult.getValue());
        assertEquals("UnexplicitContext",
                ((ProcessRemark)processResult.getRemarkSet().toArray()[0]).getMessageCode());

        processResult = processPageTest("AW21.Test.06.01.01-2Failed-03");
        assertEquals(TestSolution.FAILED,processResult.getValue());
        assertEquals("


e_head h4{margin-top:0;margin-bottom:5px}.tiles-bottom{padding:5px 10px;margin-top:10px;background:rgba(194,194,194,.3);text-align:left}a.star{color:#428bca!important}.mail_content{background:#FFF;border-radius:4px;margin-top:20px;min-height:500px;padding:10px 11px;width:100%}.list-btn-mail{margin-bottom:15px}.list-btn-mail.active{border-bottom:1px solid #39B3D7;padding:0 0 14px}.list-btn-mail>i{float:left;font-size:18px;font-style:normal;width:33px}.list-btn-mail>.cn{background:#39B3D7;border-radius:12px;color:#FFF;float:right;font-style:normal;padding:0 5px}.byline,.view p{font-style:italic}.button-mail{margin:0 0 15px!important;text-align:left;width:100%}.btn,.buttons,.modal-footer .btn+.btn,button{margin-bottom:5px;margin-right:5px}.btn-group .btn,.btn-group-vertical .btn{margin-bottom:0;margin-right:0}.mail_list_column,.mail_view{border-left:1px solid #DBDBDB}.mail_list{width:100%;border-bottom:1px solid #DBDBDB;margin-bottom:2px;display:inline-block}.mail_list .left{width:5%;float:left;margin-right:3%}.mail_list .right{width:90%;float:left}.mail_list h3{font-size:15px;font-weight:700;margin:0 0 6px}.mail_list h3 small{float:right;color:#ADABAB;font-size:11px;line-height:20px}.mail_list .badge{padding:3px 6px;font-size:8px;background:#BAB7B7}@media (max-width:767px){.mail_list{margin-bottom:5px;display:inline-block}}.mail_heading h4{font-size:18px;border-bottom:1px solid #ddd;padding-bottom:10px;margin-top:20px}.attachment{margin-top:30px}.attachment ul{width:100%;list-style:none;padding-left:0;display:inline-block;margin-bottom:30px}.attachment ul li{float:left;width:150px;margin-right:10px;margin-bottom:10px}.attachment ul li img{height:150px;border:1px solid #ddd;padding:5px;margin-bottom:10px}.attachment ul li span{float:right}.attachment .file-name{float:left}.attachment .links{width:100%;display:inline-block}.compose{padding:0;position:fixed;bottom:0;right:0;background:#fff;border:1px solid #D9DEE4;border-right:0;border-bottom:0;border-top-left-radius:5px;z-index:9999;display:none}.compose .compose-header{padding:5px;background:#169F85;color:#fff;border-top-left-radius:5px}.compose .compose-header .close{text-shadow:0 1px 0 #fff;line-height:.8}.compose .compose-body .editor.btn-toolbar{margin:0}.compose .compose-body .editor-wrapper{height:100%;min-height:50px;max-height:180px;border-radius:0;border-left:none;border-right:none;overflow:auto}.compose .compose-footer{padding:10px}.editor.btn-toolbar{zoom:1;background:#F7F7F7;margin:5px 2px;padding:3px 0;border:1px solid #EFEFEF}.input-group{margin-bottom:10px}.ln_solid{border-top:1px solid #e5e5e5;color:#fff;background-color:#fff;height:1px;margin:20px 0}span.section{display:block;width


ps. Each element contains the following attributes:
func (o GetServerGroupsResultOutput) SlbServerGroups() GetServerGroupsSlbServerGroupArrayOutput {
	return o.ApplyT(func(v GetServerGroupsResult) []GetServerGroupsSlbServerGroup { return v.SlbServerGroups }).(GetServerGroupsSlbServerGroupArrayOutput)
}

func init() {
	pulumi.RegisterOutputType(GetServerGroupsResultOutput{})
}
// Code generated by pulumi-language-go DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***

package slb

import (
	"context"
	"reflect"

	"errors"
	"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/internal"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

// Provides a Load Balancer Virtual Backend Server Group resource.
//
// For information about Load Balancer Virtual Backend Server Group and how to use it, see [What is Virtual Backend Server Group](https://www.alibabacloud.com/help/en/doc-detail/35215.html).
//
// > **NOTE:** Available since v1.6.0.
//
// > **NOTE:** One ECS instance can be added into multiple virtual server groups.
//
// > **NOTE:** One virtual server group can be attached with multiple listeners in one load balancer.
//
// > **NOTE:** One Classic and Internet load balancer, its virtual server group can add Classic and VPC ECS instances.
//
// > **NOTE:** One Classic and Intranet load balancer, its virtual server group can only add Classic ECS instances.
//
// > **NOTE:** One VPC load balancer, its virtual server group can only add the same VPC ECS instances.
//
// ## Example Usage
//
// # Basic Usage
//
// ```go
// package main
//
// import (
//
//	"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud"
//	"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/slb"
//	"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/vpc"
//	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
//	"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
//
// )
//
//	func main() {
//		pulumi.Run(func(ctx *pulumi.Context) error {
//			cfg := config.New(ctx, "")
//			name := "tf-example"
//			if param := cfg.Get("name"); param != "" {
//				name = param
//			}
//			_default, err := alicloud.GetZones(ctx, &alicloud.GetZonesArgs{
//				AvailableResourceCreation: pulumi.StringRef("VSwitch"),
//			}, nil)
//			if err != nil {
//				return err
//			}
//			defaultNetwork, err := vpc.NewNetwork(ctx, "default", &vpc.NetworkArgs{
//				VpcName:   pulumi.String(name),
//				CidrBlock: pulumi.String("172.16.0.0/16"),
//			})
//			if err != nil {
//				return err
//			}
//			defaultSwitch, err := vpc.NewSwitch(ctx, "default", &vpc.SwitchArgs{
//				VpcId:       defaultNetwork.ID(),
//				CidrBlock:   pulumi.String("172.16.0.0/16"),
//				ZoneId:      pulumi.String(_default.Zones[0].Id),
//				VswitchName: pulumi.String(name),
//			})
//			if err != nil {
//				return err
//			}
//			defaultApplicationLoadBalancer, err := slb.NewApplicationLoadBalancer(ctx, "default", &slb.ApplicationLoadBalancerArgs{
//				LoadBalancerName: pulumi.String(name),
//				VswitchId:        defaultSwitch.ID(),


eth0")
											Expect(err).NotTo(HaveOccurred())
											// Add a route to felix[1] to be able to reach the nodeport
											_, err = eth20.RunCmd("ip", "-6", "route", "add", felixIP(1)+"/"+mask, "via", eth20ExtIP)
											Expect(err).NotTo(HaveOccurred())
										} else {
											tc.Felixes[1].Exec("ip", "route", "add", eth20Route, "dev", "eth20")
											tc.Felixes[1].Exec("ip", "addr", "add", eth20ExtIP+"/"+mask, "dev", "eth20")
											_, err = eth20.RunCmd("ip", "route", "add", eth20ExtIP+"/"+mask, "dev", "eth0")
											Expect(err).NotTo(HaveOccurred())
											// Add a route to felix[1] to be able to reach the nodeport
											_, err = eth20.RunCmd("ip", "route", "add", felixIP(1)+"/"+mask, "via", eth20ExtIP)
											Expect(err).NotTo(HaveOccurred())
											// This multi-NIC scenario works only if the kernel's RPF check
											// is not strict so we need to override it for the test and must
											// be set properly when product is deployed. We reply on
											// iptables to do require check for us.
											tc.Felixes[1].Exec("sysctl", "-w", "net.ipv4.conf.eth0.rp_filter=2")
											tc.Felixes[1].Exec("sysctl", "-w", "net.ipv4.conf.eth20.rp_filter=2")
										}
									})

									By("setting up routes to .20 net on dest node to trigger RPF check", func() {
										if testOpts.ipv6 {
											// set up a dummy interface just for the routing purpose
											tc.Felixes[0].Exec("ip", "-6", "link", "add", "dummy1", "type", "dummy")
											tc.Felixes[0].Exec("ip", "-6", "link", "set", "dummy1", "up")
											// set up route to the .20 net through the dummy iface. This
											// makes the .20 a universally reachable external world from the
											// internal/private eth0 network
											tc.Felixes[0].Exec("ip", "-6", "route", "add", eth20Route, "dev", "dummy1")
										} else {
											// set up a dummy interface just for the routing purpose
											tc.Felixes[0].Exec("ip", "link", "add", "dummy1", "type", "dummy")
											tc.Felixes[0].Exec("ip", "link", "set", "dummy1", "up")
											// set up route to the .20 net through the dummy iface. This
											// makes the .20 a universally reachable external world from the
											// internal/private eth0 network
											tc.Felixes[0].Exec("ip", "route", "add", eth20Route, "dev", "dummy1")
											// This multi-NIC scenario works only if the kernel's RPF check
											// is not strict so we need to override it for the test and must
											// be set properly when product is deployed. We reply on
											// iptables to do require check for us.
											tc.Felixes[0].Exec("sysctl", "-w", "net.ipv4.conf.eth0.rp_filter=2")
											tc.Felixes[0].Exec("sysctl", "-w", "net.ipv4.conf.dummy1.rp_filter=2")
										}
									})

									By("Allowing traffic from the eth20 network", func() {
										pol.Spec.Ingress = []api.Rule{
											{
												Action: "Allow",
												Source: api.EntityRule{
													Nets: []string{
														eth20.IP + "/" + ipMask(),
													},
												},


-- chunkname: @dialogues/generated/circumstance_vo_ember_psyker_male_c.lua

local circumstance_vo_ember_psyker_male_c = {
	combat_pause_metropolitan_ember_01_b = {
		randomize_indexes_n = 0,
		sound_events_n = 2,
		sound_events = {
			[1] = "loc_psyker_male_c__combat_pause_metropolitan_ember_01_b_01",
			[2] = "loc_psyker_male_c__combat_pause_metropolitan_ember_01_b_02",
		},
		sound_events_duration = {
			[1] = 4.835042,
			[2] = 3.886302,
		},
		randomize_indexes = {},
	},
	combat_pause_metropolitan_ember_02_b = {
		randomize_indexes_n = 0,
		sound_events_n = 2,
		sound_events = {
			[1] = "loc_psyker_male_c__combat_pause_metropolitan_ember_02_b_01",
			[2] = "loc_psyker_male_c__combat_pause_metropolitan_ember_02_b_02",
		},
		sound_events_duration = {
			[1] = 1.823323,
			[2] = 3.177229,
		},
		randomize_indexes = {},
	},
	combat_pause_metropolitan_ember_03_b = {
		randomize_indexes_n = 0,
		sound_events_n = 2,
		sound_events = {
			[1] = "loc_psyker_male_c__combat_pause_metropolitan_ember_03_b_01",
			[2] = "loc_psyker_male_c__combat_pause_metropolitan_ember_03_b_02",
		},
		sound_events_duration = {
			[1] = 4.179542,
			[2] = 4.774031,
		},
		randomize_indexes = {},
	},
	combat_pause_metropolitan_ember_04_b = {
		randomize_indexes_n = 0,
		sound_events_n = 2,
		sound_events = {
			[1] = "loc_psyker_male_c__combat_pause_metropolitan_ember_04_b_01",
			[2] = "loc_psyker_male_c__combat_pause_metropolitan_ember_04_b_02",
		},
		sound_events_duration = {
			[1] = 5.635698,
			[2] = 5.112958,
		},
		randomize_indexes = {},
	},
	combat_pause_metropolitan_ember_05_b = {
		randomize_indexes_n = 0,
		sound_events_n = 2,
		sound_events = {
			[1] = "loc_psyker_male_c__combat_pause_metropolitan_ember_05_b_01",
			[2] = "loc_psyker_male_c__combat_pause_metropolitan_ember_05_b_02",
		},
		sound_events_duration = {
			[1] = 5.70649,
			[2] = 3.31426,
		},
		randomize_indexes = {},
	},
	combat_pause_metropolitan_ember_06_b = {
		randomize_indexes_n = 0,
		sound_events_n = 2,
		sound_events = {
			[1] = "loc_psyker_male_c__combat_pause_metropolitan_ember_06_b_01",
			[2] = "loc_psyker_male_c__combat_pause_metropolitan_ember_06_b_02",
		},
		sound_events_duration = {
			[1] = 4.226844,
			[2] = 5.133604,
		},
		randomize_ind


2)});for(var _En3=_hu3;_En3!=_iu3;++_En3){var _ju3=this._2s3._Gs3[_En3];var _Bd2=_ju3.index;var _ku3=this._2s3._js3.data[_Bd2];if(_gc3._yc3.x<=_ku3.x&&_ku3.x<=_gc3._zc3.x&&_gc3._yc3.y<=_ku3.y&&_ku3.y<=_gc3._zc3.y){var _Vs2=[0];var _uf2=new __93();_2X2._kc3(_ku3,_Vs2,_uf2,_ec3);if(_Vs2[0]<this._2s3._ts3){var _lu3=this._2s3._ys3.data[_Bd2]&_Nr3._Qr3?0:this._2s3._mu3();var _nu3=__93._6a3(_ku3,_jp3);
var _ou3=_Xa3(_nu3,_uf2);if(this._2s3._1r3>=this._2s3._Hs3){var _ut3=this._2s3._Hs3;var _vt3=this._2s3._1r3?2*this._2s3._1r3:_H93;this._2s3.__q3=this._2s3._st3(this._2s3.__q3,_ut3,_vt3);this._2s3._Hs3=_vt3}var _gm3=this._2s3.__q3[this._2s3._1r3]=new _ps3();_gm3.index=_Bd2;_gm3.body=_Ad2;_gm3._os3=1-_Vs2[0]*this._2s3._us3;_gm3._mc3._5M2(_uf2._3a3());_gm3._6c3=1/(_lu3+_fu3+_gu3*_ou3*_ou3);this._2s3._1r3++}}}}return !0},_0o3:function(_82){return !1}};var _he3=new _cu3(this);this._yl3._lp3(_he3,_gc3)},_oa3:function(_P83){
++this._7s3;if(this._Uc3==0){return }this._qs3=0;for(var _82=0;_82<this._Uc3;_82++){this._qs3|=this._ys3.data[_82]}if(this._qs3&_Nr3._Pr3){this._pu3()}this._rs3=0;for(var _I13=this._Ns3;_I13;_I13=_I13._an3()){this._rs3|=_I13._5s3}var _hE2=__93.Multiply(_P83._3o3*this._Jl3,this._yl3._Dp3());var _qu3=this._ru3(_P83);for(var _82=0;_82<this._Uc3;_82++){var _ee2=this._ks3.data[_82];_ee2._ho2(_hE2);var _ge2=_Wa3(_ee2,_ee2);if(_ge2>_qu3){_ee2.Multiply(_X93(_qu3/_ge2))}}this._su3(_P83);if(this._rs3&_1s3._ms3){this._tu3(_P83)}
if(this._qs3&_Nr3._Qr3){this._uu3(_P83)}for(var _82=0;_82<this._Uc3;_82++){this._js3.data[_82]._ho2(__93.Multiply(_P83._3o3,this._ks3.data[_82]))}this._bu3();this._Jt3(!1);if(this._qs3&_Nr3._Tr3){this._vu3(_P83)}if(this._qs3&_Nr3._Ur3){this._wu3(_


12)
/* 8037F1C0 0037C100  7D 89 03 A6 */	mtctr r12
/* 8037F1C4 0037C104  4E 80 04 21 */	bctrl
/* 8037F1C8 0037C108  38 00 00 01 */	li r0, 1
/* 8037F1CC 0037C10C  98 03 00 B0 */	stb r0, 0xb0(r3)
/* 8037F1D0 0037C110  48 00 00 84 */	b .L_8037F254
.L_8037F1D4:
/* 8037F1D4 0037C114  80 7A 00 BC */	lwz r3, 0xbc(r26)
/* 8037F1D8 0037C118  38 00 00 01 */	li r0, 1
/* 8037F1DC 0037C11C  98 03 00 B0 */	stb r0, 0xb0(r3)
/* 8037F1E0 0037C120  88 0D 98 A0 */	lbz r0, mIsSection__Q28Morimura9TTestBase@sda21(r13)
/* 8037F1E4 0037C124  28 00 00 00 */	cmplwi r0, 0
/* 8037F1E8 0037C128  40 82 00 24 */	bne .L_8037F20C
/* 8037F1EC 0037C12C  80 6D 9A EC */	lwz r3, sys@sda21(r13)
/* 8037F1F0 0037C130  48 0A 3D 41 */	bl getPlayCommonData__6SystemFv
/* 8037F1F4 0037C134  88 03 00 00 */	lbz r0, 0(r3)
/* 8037F1F8 0037C138  54 00 07 FF */	clrlwi. r0, r0, 0x1f
/* 8037F1FC 0037C13C  40 82 00 10 */	bne .L_8037F20C
/* 8037F200 0037C140  80 7A 00 BC */	lwz r3, 0xbc(r26)
/* 8037F204 0037C144  38 00 00 00 */	li r0, 0
/* 8037F208 0037C148  98 03 00 B0 */	stb r0, 0xb0(r3)
.L_8037F20C:
/* 8037F20C 0037C14C  80 7A 00 7C */	lwz r3, 0x7c(r26)
/* 8037F210 0037C150  3C A0 6B 61 */	lis r5, 0x6B617261@ha
/* 8037F214 0037C154  3C 80 4E 6F */	lis r4, 0x4E6F7461@ha
/* 8037F218 0037C158  80 63 00 08 */	lwz r3, 8(r3)
/* 8037F21C 0037C15C  38 C5 72 61 */	addi r6, r5, 0x6B617261@l
/* 8037F220 0037C160  38 A4 74 61 */	addi r5, r4, 0x4E6F7461@l
/* 8037F224 0037C164  81 83 00 00 */	lwz r12, 0(r3)
/* 8037F228 0037C168  81 8C 00 3C */	lwz r12, 0x3c(r12)
/* 8037F22C 0037C16C  7D 89 03 A6 */	mtctr r12
/* 8037F230 0037C170  4E 80 04 21 */	bctrl
/* 8037F234 0037C174  38 00 00 00 */	li r0, 0
/* 8037F238 0037C178  98 03 00 B0 */	stb r0, 0xb0(r3)
/* 8037F23C 0037C17C  88 0D 99 39 */	lbz r0, mForceClear2__Q28Morimura8


rcutils_ret_t Function(ffi.Pointer<rcutils_string_array_t>, ffi.Size,
              ffi.Pointer<rcutils_allocator_t>)>>('rcutils_string_array_init');
  late final _rcutils_string_array_init =
      _rcutils_string_array_initPtr.asFunction<
          int Function(ffi.Pointer<rcutils_string_array_t>, int,
              ffi.Pointer<rcutils_allocator_t>)>();

  /// Finalize a string array, reclaiming all resources.
  /// /**
  ///  * This function reclaims any memory owned by the string array, including the
  ///  * strings it references.
  ///  *
  ///  * The allocator used to initialize the string array is used to deallocate each
  ///  * string in the array and the array of strings itself.
  ///  *
  ///  * \param[inout] string_array object to be finalized
  ///  * \return #RCUTILS_RET_OK if successful, or
  ///  * \return #RCUTILS_RET_INVALID_ARGUMENT for invalid arguments, or
  ///  * \return #RCUTILS_RET_ERROR if an unknown error occurs.
  ///  */
  int rcutils_string_array_fini(
    ffi.Pointer<rcutils_string_array_t> string_array,
  ) {
    return _rcutils_string_array_fini(
      string_array,
    );
  }

  late final _rcutils_string_array_finiPtr = _lookup<
          ffi.NativeFunction<
              rcutils_ret_t Function(ffi.Pointer<rcutils_string_array_t>)>>(
      'rcutils_string_array_fini');
  late final _rcutils_string_array_fini = _rcutils_string_array_finiPtr
      .asFunction<int Function(ffi.Pointer<rcutils_string_array_t>)>();

  /// Compare two string arrays.
  /// /**
  ///  * The two string arrays are compared according to lexicographical order.
  ///  *
  ///  * \param[in] lhs The first string array.
  ///  * \param[in] rhs The second string array.
  ///  * \param[out] res Negative value if `lhs` appears before `rhs` in lexicographical order.
  ///  *   Zero if `lhs` and `rhs` are equal.
  ///  *   Positive value if `lhs` appears after `rhs` in lexographical order.
  ///  * \return #RCUTILS_RET_OK if successful, or
  ///  * \return #RCUTILS_RET_INVALID_ARGUMENT if any argument is `NULL, or
  ///  * \return #RCUTILS_RET_INVALID_ARGUMENT if `lhs->data` or `rhs->data` is `NULL, or
  ///  * \return #RCUTILS_RET_ERROR if an unknown error occurs.
  ///  */
  int rcutils_string_array_cmp(
    ffi.Pointer<rcutils_string_array_t> lhs,
    ffi.Pointer<rcutils_string_array_t> rhs,
    ffi.Pointer<ffi.Int> res,
  ) {
    return _rcutils_string_array_cmp(
      lhs,
      rhs,
      res,
    );
  }

  late final _rcutils_string_array_cmpPtr = _lookup<
      ffi.NativeFunction<
          rcutils_ret_t Function(
              ffi.Pointer<rcutils_string_array_t>,
              ffi.Pointer<rcutils_string_array_t>,
              ffi.Pointer<ffi.Int>)>>('rcutils_string_array_cmp');
  late final _rcutils_string_array_cmp =
      _rcutils_string_array_cmpPtr.asFunction<
          int Function(ffi.Pointer<rcutils_string_array_t>,
              ffi.Pointer<rcutils_string_array_t>, ffi.Pointer<ffi.Int>)>();

  /// Resize a string array,


4-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z",yOffset:"",xOffset:"",transform:""};t.InfoCircleIconConfig=a;var i=(0,o.default)(a);t.default=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.BellIconConfig=void 0;var n,o=(n=r(68))&&n.__esModule?n:{default:n},a={name:"BellIcon",height:512,width:448,svgPath:"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z",yOffset:"",xOffset:"",transform:""};t.BellIconConfig=a;var i=(0,o.default)(a);t.default=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),r(353),t.default={bullseye:"pf-l-bullseye",modifiers:{}}},function(e,t,r){var n=r(153);e.exports=function(e,t){return n(e,t)}},function(e,t,r){var n=r(160),o=r(563),a=r(570),i=r(578),l=a((function(e){var t=n(e,i);return t.length&&t[0]===e[0]?o(t):[]}));e.exports=l},function(e,t,r){var n=r(227),o=r(580),a=r(586),i=r(63);e.exports=function(e,t){return(i(e)?n:o)(e,a(t,3))}},function(e,t,r){var n=r(240),o=r(627);e.exports=function(e,t){return n(o(e,t),1)}},function(e,t){e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},function(e,t,r){var n=r(639)(r(640));e.exports=n},function(e,t,r){var n=r(646),o=r(31);e.exports=function(e,t,r){var a=!0,i=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return o(r)&&(a="leading"in r?!!r.leading:a,i="trailing"in r?!!r.trailing:i),n(e,t,{leading:a,maxWait:t,trailing:i})}},function(e,t,r){var n=r(208),o=r(70),a=r(648),i=r(10),l=r(118);e.exports=function(e,t,r){var c=i(e)?n:a;return r&&l(e,t,r)&&


= "CAPTION";
  TAG_ID2[TAG_ID2["CENTER"] = 18] = "CENTER";
  TAG_ID2[TAG_ID2["CODE"] = 19] = "CODE";
  TAG_ID2[TAG_ID2["COL"] = 20] = "COL";
  TAG_ID2[TAG_ID2["COLGROUP"] = 21] = "COLGROUP";
  TAG_ID2[TAG_ID2["DD"] = 22] = "DD";
  TAG_ID2[TAG_ID2["DESC"] = 23] = "DESC";
  TAG_ID2[TAG_ID2["DETAILS"] = 24] = "DETAILS";
  TAG_ID2[TAG_ID2["DIALOG"] = 25] = "DIALOG";
  TAG_ID2[TAG_ID2["DIR"] = 26] = "DIR";
  TAG_ID2[TAG_ID2["DIV"] = 27] = "DIV";
  TAG_ID2[TAG_ID2["DL"] = 28] = "DL";
  TAG_ID2[TAG_ID2["DT"] = 29] = "DT";
  TAG_ID2[TAG_ID2["EM"] = 30] = "EM";
  TAG_ID2[TAG_ID2["EMBED"] = 31] = "EMBED";
  TAG_ID2[TAG_ID2["FIELDSET"] = 32] = "FIELDSET";
  TAG_ID2[TAG_ID2["FIGCAPTION"] = 33] = "FIGCAPTION";
  TAG_ID2[TAG_ID2["FIGURE"] = 34] = "FIGURE";
  TAG_ID2[TAG_ID2["FONT"] = 35] = "FONT";
  TAG_ID2[TAG_ID2["FOOTER"] = 36] = "FOOTER";
  TAG_ID2[TAG_ID2["FOREIGN_OBJECT"] = 37] = "FOREIGN_OBJECT";
  TAG_ID2[TAG_ID2["FORM"] = 38] = "FORM";
  TAG_ID2[TAG_ID2["FRAME"] = 39] = "FRAME";
  TAG_ID2[TAG_ID2["FRAMESET"] = 40] = "FRAMESET";
  TAG_ID2[TAG_ID2["H1"] = 41] = "H1";
  TAG_ID2[TAG_ID2["H2"] = 42] = "H2";
  TAG_ID2[TAG_ID2["H3"] = 43] = "H3";
  TAG_ID2[TAG_ID2["H4"] = 44] = "H4";
  TAG_ID2[TAG_ID2["H5"] = 45] = "H5";
  TAG_ID2[TAG_ID2["H6"] = 46] = "H6";
  TAG_ID2[TAG_ID2["HEAD"] = 47] = "HEAD";
  TAG_ID2[TAG_ID2["HEADER"] = 48] = "HEADER";
  TAG_ID2[TAG_ID2["HGROUP"] = 49] = "HGROUP";
  TAG_ID2[TAG_ID2["HR"] = 50] = "HR";
  TAG_ID2[TAG_ID2["HTML"] = 51] = "HTML";
  TAG_ID2[TAG_ID2["I"] = 52] = "I";
  TAG_ID2[TAG_ID2["IMG"] = 53] = "IMG";
  TAG_ID2[TAG_ID2["IMAGE"] = 54] = "IMAGE";
  TAG_ID2[TAG_ID2["INPUT"] = 55] = "INPUT";
  TAG_ID2[TAG_ID2["IFRAME"] = 56] = "IFRAME";
  TAG_ID2[TAG_ID2["KEYGEN"] = 57] = "KEYGEN";
  TAG_ID2[TAG_ID2["LABEL"] = 58] = "LABEL";
  TAG_ID2[TAG_ID2["LI"] = 59] = "LI";
  TAG_ID2[TAG_ID2["LINK"] = 60] = "LINK";
  TAG_ID2[TAG_ID2["LISTING"] = 61] = "LISTING";
  TAG_ID2[TAG_ID2["MAIN"] = 62] = "MAIN";
  TAG_ID2[TAG_ID2["M


 insertionMap = insertionMaps.get(chrName);
        if(insertionMap == null ) return null;

        return insertionMap.values().stream().filter(im -> im.position + im.size >= start && im.position <= end).collect(Collectors.toList());

    }

    public void setSelected(InsertionMarker insertionMarker) {
        this.selectedInsertion = insertionMarker;
    }

    public synchronized void processAlignments(String chr, List<Alignment> alignments) {

        Genome genome = GenomeManager.getInstance().getCurrentGenome();
        chr = genome == null ? chr : genome.getCanonicalChrName(chr);

        Map<Integer, InsertionMarker> insertionMap = insertionMaps.get(chr);
        if(insertionMap == null) {
            insertionMap =  Collections.synchronizedMap(new HashMap<>());
            insertionMaps.put(chr, insertionMap);
        }

        int minLength = 0;
        final IGVPreferences preferences = PreferencesManager.getPreferences(Constants.THIRD_GEN);
        if(preferences.getAsBoolean(SAM_HIDE_SMALL_INDEL)) {
            minLength = preferences.getAsInt(SAM_SMALL_INDEL_BP_THRESHOLD);
        }

        for (Alignment a : alignments) {
            AlignmentBlock[] blocks = a.getInsertions();
            if (blocks != null) {
                for (AlignmentBlock block : blocks) {
                    if (block.getBasesLength() < minLength) continue;
                    Integer key = block.getStart();
                    InsertionMarker insertionMarker = insertionMap.get(key);
                    if (insertionMarker == null) {
                        insertionMarker = new InsertionMarker(block.getStart(), block.getLength());
                        insertionMap.put(key, insertionMarker);
                    } else {
                        insertionMarker.size = Math.max(insertionMarker.size, block.getLength());
                    }
                }
            }
        }
    }

}
/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2007-2015 Broad Institute
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

package org.broad.igv.sam;

import htsjdk.tribble.Feature;

/**
 * Genomic interval showing which areas have had reads removed (downsampled)
* @author jrobinso
*         Date: 8/16/12
*         Time: 10:03 PM
*/
public class DownsampledInterval implements Feature {
    private int start;
    private int end;
    private int count;

    public DownsampledInterval(int start, int end, int count) {
        this.start = start;
        this.end = end;
        this.count = count;
    }

    public String toString() {
        return start + "-" + end + " (" + count + ")";
    }

    public int getCount() {
        return count;
    }

    public int getEnd() {
        return end;
    }

    public int getStart() {
        return start;


},attr:"zoom",val:"out",icon:o.zoom_minus,click:v},c.resetGeo={name:"resetGeo",_cat:"reset",title:function(t){return u(t,"Reset")},attr:"reset",val:null,icon:o.autoscale,click:v},c.hoverClosestGeo={name:"hoverClosestGeo",_cat:"hoverclosest",title:function(t){return u(t,"Toggle show closest data on hover")},attr:"hovermode",val:null,toggle:!0,icon:o.tooltip_basic,gravity:"ne",click:y},c.hoverClosestGl2d={name:"hoverClosestGl2d",_cat:"hoverclosest",title:function(t){return u(t,"Toggle show closest data on hover")},attr:"hovermode",val:null,toggle:!0,icon:o.tooltip_basic,gravity:"ne",click:y},c.hoverClosestPie={name:"hoverClosestPie",_cat:"hoverclosest",title:function(t){return u(t,"Toggle show closest data on hover")},attr:"hovermode",val:"closest",icon:o.tooltip_basic,gravity:"ne",click:y},c.resetViewSankey={name:"resetSankeyGroup",title:function(t){return u(t,"Reset view")},icon:o.home,click:function(t){for(var e={"node.groups":[],"node.x":[],"node.y":[]},r=0;r<t._fullData.length;r++){var i=t._fullData[r]._viewInitial;e["node.groups"].push(i.node.groups.slice()),e["node.x"].push(i.node.x.slice()),e["node.y"].push(i.node.y.slice())}n.call("restyle",t,e)}},c.toggleHover={name:"toggleHover",title:function(t){return u(t,"Toggle show closest data on hover")},attr:"hovermode",val:null,toggle:!0,icon:o.tooltip_basic,gravity:"ne",click:function(t,e){var r=d(t,e);r.hovermode=g(t),n.call("_guiRelayout",t,r)}},c.resetViews={name:"resetViews",title:function(t){return u(t,"Reset views")},icon:o.home,click:function(t,e){var r=e.currentTarget;r.setAttribute("data-attr","zoom"),r.setAttribute("data-val","reset"),f(t,e),r.setAttribute("data-attr","resetLastSave"),p(t,e),x(t,"geo"),x(t,"mapbox")}},c.toggleSpikelines={name:"toggleSpikelines",title:function(t){return u(t,"Toggle Spike Lines")},icon:o.spikeline,attr:"_cartesianSpikesEnabled",val:"on",click:function(t){var e=t._fullLayout,r=e._cartesianSpikesEnabled;e._cartesianSpikesEnabled="on"===r?"off":"on",n.call("_guiRelayout",t,function(t){for(var e="on"===t._fullLayout._cartesianSpikesEnabled,r=a.list(t,null,!0),n={},i=0;i<r.length;i++){var o=r[i];n[o._name+".showspikes"]=!!e||o._showSpikeInitial}return n}(t))}},c.resetViewMapbox={name:"resetViewMapbox",_cat:"resetView",title:function(t){return u(t,"Reset view")},attr:"reset",icon:o.home,click:function(t){x(t,"mapbox")}},c.zoomInMapbox={name:"zoomInMapbox",_cat:"zoomin",title:function(t){return u(t,"Zoom in")},attr:"zoom",val:"in",icon:o.zoom_plus,click:m},c.zoomOu


 modified IN-PLACE.
	 * If not specified, a new one will be generated, and a reference returned.
	 */
	initialize: function(gdt) {
		this.gdt = (typeof gdt == 'undefined') ? (new GlideDateTime()) : gdt;
	},

	/**
	 * Get the GlideDateTime object (as a reference).
	 * This will return a *reference* to the GlideDateTime object. Note that because of JavaScript's
	 *  pass-by-reference jive, you should expect that if you set a variable using this method, then
	 *  call another method which modifies the GDT object referenced in this class, you will be modifying
	 *  the object to which your variable is a reference! In other words, your variable will be modified *in-place*.
	 * @returns {*|GlideDateTime}
	 */
	getGDT: function() {
		return this.gdt;
	},

	/**
	 * Get the number representing the current GDT object's offset from UTC, in hours.
	 * If the GlideDateTime object is in the Pacific time zone for example, this method will return either
	 * "8" or "7" (depending on DST).
	 * @returns {number}
	 */
	getOffsetHours: function() {
		return ((Number(this.gdt.getTZOffset() / 1000) / 60) / 60);
	},

	/**
	 * Note that you can specify time-zones in a number of formats, like "US/Pacific",
	 * "US\\Eastern", or by short name (such as "mountain").
	 *
	 * Currently, this utility only understands a few time-zones by short name. You can print out a list of
	 *  pre-defined these supported short-names by printing out the keys in the timeZones property.
	 *  Example: gs.print(Object.keys(new TimeZoneUtils().timeZones));
	 *
	 * You can reference any time-zone using the following (case-sensitive) format:
	 *  <Region>\<Zone>
	 *  Example: "Pacific\Guam", or "America\Puerto_Rico"
	 *
	 * @param {Packages.java.util.TimeZone|string} tz - The TimeZone object to use to set the time-zone of
	 *  the current GlideDateTime object.
	 * @returns {*|GlideDateTime}
	 */
	setTimeZone: function(tz) {

		/*
			FYI: http://twiki.org/cgi-bin/xtra/tzdatepick.html
			Click any of the locations there, and on the corresponding page, find the
			"Timezone" value.
			These are the valid rows for the time-zone parameter.
 		*/

		//ensure we've got a string and that it's lower-case.
		tz = (typeof tz === 'string') ? tz : tz.toString();
		//Validate the TZ string, and get a TimeZone Java object from it.
		tz = this._getTimeZoneFromString(tz);

		this.gdt.setTZ(tz);
		return this.gdt;
	},

	/**
	 * Gets the display value of the current GlideDateTime object.
	 * If a time-zone was specified by calling .setTimeZone(), this will return the time in that time-zone.
	 * If the GDT's time value was set prior to passing it into TimeZoneUtils, this will return that date/time
	 * in the specified time-zone.
	 * @returns {string} The current time, in the specified time-zone.
	 */
	getDisplayValue: function() {
		return this.gdt.getDisplayValue();
	},

	/**
	 * @returns {string} The current value, in SYSTEM time, of the GlideDateTime object.
	 */
	getValue: function() {
		return this.gdt.getValue();
	},

	/**
	 *
	 * @param {Packages.java.util.TimeZone|string} tz - The TimeZone object to use to set the time-zone of
	 * @returns {*} The TimeZone object, OR false if an invalid time-zone was passed in.
	 * @private
	 */
	_getTimeZoneFromString: function(tz) {
		//If it's a valid time-zone coming in,


 ( ps->pm_time < 1700 )
  {
    return (double)ps->pm_time * 1.5 * 0.00058823527 + 1.0;
  }
  return 2.5;
}

void __cdecl Jump_AddSurfaceEvent(playerState_s *ps, pml_t *pml)
{
  int surfType;

  if ( ps->pm_flags & PMF_LADDER )
  {
    BG_AddPredictableEventToPlayerstate(76, 0x15u, ps);
  }
  else
  {
    surfType = PM_GroundSurfaceType(pml);
    if ( surfType )
    {
      BG_AddPredictableEventToPlayerstate(76, surfType, ps);
    }
  }
}

void __cdecl Jump_PushOffLadder(playerState_s *ps, pml_t *pml)
{
  vec3_t flatForward;
  vec3_t pushOffDir;
  float dot;

  assert(ps->pm_flags & PMF_LADDER);

  ps->velocity[2] = ps->velocity[2] * 0.75;
  flatForward[0] = pml->forward[0];
  flatForward[1] = pml->forward[1];
  flatForward[2] = 0.0;
  Vec3Normalize(flatForward);
  dot = DotProduct(ps->vLadderVec, pml->forward);
  if ( dot >= 0.0 )
  {
	VectorCopy(flatForward, pushOffDir);
  }
  else
  {
	dot = DotProduct(ps->vLadderVec, flatForward);
	VectorMA(flatForward, -2.0 * dot, ps->vLadderVec, pushOffDir);
    Vec3Normalize(pushOffDir);
  }
  ps->velocity[0] = jump_ladderPushVel->value * pushOffDir[0];
  ps->velocity[1] = jump_ladderPushVel->value * pushOffDir[1];
  ps->pm_flags &= 0xFFFFFFF7;
}

void __cdecl Jump_Start(pmove_t *pm, pml_t *pml, float height)
{
  float factor;
  float velocitySqrd;
  playerState_s *ps;

  ps = pm->ps;
  assert(ps);

  velocitySqrd = (float)(height * 2.0) * (float)ps->gravity;
  if ( ps->pm_flags & PMF_JUMPING )
  {
    if ( ps->pm_time <= JUMP_LAND_SLOWDOWN_TIME )
    {
      factor = Jump_GetLandFactor(ps);
	  assert(factor != 0.0);

      velocitySqrd = velocitySqrd / factor;
    }
  }
  pml->groundPlane = 0;
  pml->almostGroundPlane = 0;
  pml->walking = 0;
  ps->groundEntityNum = 1023;
  ps->jumpTime = pm->cmd.serverTime;
  ps->jumpOriginZ = ps->origin[2];
  ps->velocity[2] = sqrtf(velocitySqrd);
  ps->pm_flags &= 0xFFFFFE7F;
  ps->pm_flags |= PMF_JUMPING;
  ps->pm_time = 0;
  ps->sprintState.sprintButtonUpRequired = 0;
  ps->aimSpreadScale = ps->aimSpreadScale + jump_spreadAdd->value;
  if ( ps->aimSpreadScale > 255.0 )
  {
    ps->aimSpreadScale = 255.0;
  }
}

extern "C"
{

void __cdecl Jump_ClearState(playerState_s *ps)
{
  ps->pm_flags &= ~PMF_JUMPING;
  ps->jumpOriginZ = 0.0;
}

double __cdecl Jump_ReduceFriction(playerState_s *ps)
{
  float control;

  assert(ps->pm_flags & PMF_JUMPING);

  if ( ps->pm_


 2px;
              // margin-left: 10px;
            }
            &.nav-dropdown-toggle {
              &::before {
                position: absolute;
                right: auto !important;
                left: $sidebar-nav-link-padding-x;
                transform: rotate(180deg);
              }
            }
          }
          &.nav-dropdown {
            &.open {
              > .nav-link.nav-dropdown-toggle::before {
                transform: rotate(270deg);
              }
            }
          }
        }
      }
    }
  }

  .sidebar-minimized .sidebar {
    .nav-link {
      padding-right: 0;
      i {
        float: right;
        padding: 0;
        margin: 0;
      }
      .badge {
        right: auto;
        left: 15px;
      }
    }
    .nav > .nav-dropdown {

      &:hover {
        > .nav-dropdown-items {
          right: $sidebar-minimized-width;
          left: 0;
        }
      }
    }
  }

  // Horizontal bars
  .horizontal-bars {

    li {

      .bars {
        padding-right: 100px;
        padding-left: 0;

        .progress:first-child {
          margin-bottom: 2px;
        }
      }
    }

    &.type-2 {

      li {

        i {
          margin-right: 5px;
          margin-left: $spacer;
        }

        .value {
          float: left;
          font-weight: 600;
        }

        .bars {
          padding: 0;
        }
      }
    }
  }

  // Icon list
  .icons-list {

    li {
      position: relative;
      height: 40px;
      vertical-align: middle;

      i {
        float: right;
      }

      .desc {
        margin-right: 50px;
        margin-left: 0;
      }

      .value {
        right: auto;
        left: 45px;
        text-align: left;

        strong {
          display: block;
          margin-top: -3px;
        }
      }

      .actions {
        right: auto;
        left: 10px;
      }
    }
  }

  // Callouts
  .callout {
    border: 0 solid $border-color;
    border-right-width: .25rem;

    @each $color, $value in $theme-colors {
      &.callout-#{$color} {
        border-right-color: $value;
      }
    }

    .chart-wrapper {
      left: 0;
      float: left;
    }
  }

  .callout-default {
    border-right-color: $text-muted;
  }
}
.breadcrumb {
  padding: $breadcrumb-padding-y $breadcrumb-padding-x;
  margin-bottom: 1rem;
  list-style: none;
  background-color: $breadcrumb-bg;
  @include border-radius($border-radius);
  @include clearfix;
}

.breadcrumb-item {
  float: left;

  // The separator between breadcrumbs (by default, a forward-slash: "/")
  + .breadcrumb-item::before {
    display: inline-block; // Suppress underlining of the separator in modern browsers
    padding-right: $breadcrumb-item-padding;
    padding-left: $breadcrumb-item-padding;
    color: $breadcrumb-divider-color;
    content: "#{$breadcrumb-divider}";
  }

  // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built
  // without `<ul>


using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Avalonia.Automation.Peers;
using Avalonia.Controls.Automation.Peers;
using Avalonia.Controls.Primitives;
using Avalonia.Reactive;
using Avalonia.Rendering;
using Avalonia.VisualTree;

namespace Avalonia.Controls
{
    /// <summary>
    /// Represents a button that allows a user to select a single option from a group of options.
    /// </summary>
    public class RadioButton : ToggleButton, IRadioButton
    {
        /// <summary>
        /// Identifies the GroupName dependency property.
        /// </summary>
        public static readonly StyledProperty<string?> GroupNameProperty =
            AvaloniaProperty.Register<RadioButton, string?>(nameof(GroupName));

        private RadioButtonGroupManager? _groupManager;

        /// <summary>
        /// Gets or sets the name that specifies which RadioButton controls are mutually exclusive.
        /// </summary>
        public string? GroupName
        {
            get => GetValue(GroupNameProperty);
            set => SetValue(GroupNameProperty, value);
        }

        bool IRadioButton.IsChecked
        {
            get => IsChecked.GetValueOrDefault();
            set => SetCurrentValue(IsCheckedProperty, value);
        }

        MenuItemToggleType IRadioButton.ToggleType => MenuItemToggleType.Radio;

        protected override void Toggle()
        {
            if (!IsChecked.GetValueOrDefault())
            {
                SetCurrentValue(IsCheckedProperty, true);
            }
        }

        protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
        {
            _groupManager?.Remove(this, GroupName);
            EnsureRadioGroupManager(e.Root);
            base.OnAttachedToVisualTree(e);


; 2usize],
    #[doc = "0xd14 - Configuration Control"]
    pub intcon1: INTCON1,
    #[doc = "0xd18 - System Handlers 4-7 Priority"]
    pub intshprio0: INTSHPRIO0,
    #[doc = "0xd1c - System Handlers 8-11 Priority"]
    pub intshprio1: INTSHPRIO1,
    #[doc = "0xd20 - System Handlers 12-15 Priority"]
    pub intshprio3: INTSHPRIO3,
    #[doc = "0xd24 - System Handler Control and State"]
    pub intshcsr: INTSHCSR,
    #[doc = "0xd28 - Configurable Fault Status"]
    pub intcfsr: INTCFSR,
    #[doc = "0xd2c - Hard Fault Status"]
    pub inthfsr: INTHFSR,
    #[doc = "0xd30 - Debug Fault Status"]
    pub intdfsr: INTDFSR,
    #[doc = "0xd34 - Mem Manage Address"]
    pub intmmar: INTMMAR,
    #[doc = "0xd38 - Bus Fault Address"]
    pub intbfar: INTBFAR,
    #[doc = "0xd3c - Auxiliary Fault Status"]
    pub intafsr: INTAFSR,
    #[doc = "0xd40 - Processor Feature Register 0"]
    pub intpfr0: INTPFR0,
    #[doc = "0xd44 - Processor Feature Register 1"]
    pub intpfr1: INTPFR1,
    #[doc = "0xd48 - Debug Feature Register 0"]
    pub intdfr0: INTDFR0,
    #[doc = "0xd4c - Auxiliary Feature Register 0"]
    pub intafr0: INTAFR0,
    #[doc = "0xd50 - Memory Model Feature Register 0"]
    pub intmmfr0: INTMMFR0,
    #[doc = "0xd54 - Memory Model Feature Register 1"]
    pub intmmfr1: INTMMFR1,
    #[doc = "0xd58 - Memory Model Feature Register 2"]
    pub intmmfr2: INTMMFR2,
    #[doc = "0xd5c - Memory Model Feature Register 3"]
    pub intmmfr3: INTMMFR3,
    #[doc = "0xd60 - ISA Feature Register 0"]
    pub intisar0: INTISAR0,
    #[doc = "0xd64 - ISA Feature Register 1"]
    pub intisar1: INTISAR1,
    #[doc = "0xd68 - ISA Feature Register 2"]
    pub intisar2: INTISAR2,
    #[doc = "0xd6c - ISA Feature Register 3"]
    pub intisar3: INTISAR3,
    #[doc = "0xd70 - ISA Feature Register 4"]
    pub intisar4: INTISAR4,
    _reserved55: [u8; 396usize],
    #[doc = "0xf00 - Software Trigger Interrupt Register"]
    pub inttrgi: INTTRGI,
    _reserved56: [u8; 204usize],
    #[doc = "0xfd0 - Peripheral Identification Register 4"]
    pub intpid4: INTPID4,
    #[doc = "0xfd4 - Peripheral Identification Register 5"]
    pub intpid5: INTPID5,
    #[doc = "0xfd8 - Peripheral Identification Register 6"]
    pub intpid6: INTPID6,
    #[doc = "0xfdc - Peripheral Identification Register 7"]
    pub intpid7: INTPID7,
    #[doc = "0xfe0 - Peripheral Identification Bits7:0"]
    pub intpid0: INTPID0,
    #[doc = "0xfe4 - Peripheral Identification Bits15:8"]
    pub intpid1: INTPID1,
    #[doc = "0xfe8 - Peripheral Identification Bits16:23"]
    pub intpid2: INTPID2,
    #[doc = "0xfec - Peripheral Identification Bits24:31"]
    pub intpid3: INTPID3,


较上次播放时间
      final serverLastWatchTime = DateTime.parse(serverProgress['LastPlayedDate'] ?? '').toUtc();
      final localLastWatchTime = localHistory.lastWatchTime.toUtc();

      debugPrint('[EmbySync] 服务器最后观看时间(UTC): $serverLastWatchTime');
      debugPrint('[EmbySync] 本地最后观看时间(UTC): $localLastWatchTime');

      if (serverLastWatchTime.isAfter(localLastWatchTime)) {
        // 服务器记录更新，使用服务器记录
        debugPrint('[EmbySync] 使用服务器记录（更新）');
        return _createHistoryFromServerProgress(itemId, serverProgress, localHistory);
      } else {
        // 本地记录更新，使用本地记录
        debugPrint('[EmbySync] 使用本地记录（更新）');
        return localHistory;
      }

    } catch (e) {
      debugPrint('[EmbySync] 同步播放记录失败: $e');
      return localHistory; // 出错时使用本地记录
    }
  }

  /// 开始播放时调用，向服务器报告播放开始
  Future<void> reportPlaybackStart(String itemId, WatchHistoryItem historyItem) async {
    try {
      if (!_embyService.isConnected) return;

      debugPrint('[EmbySync] 报告播放开始: $itemId');

      // 确保清理之前的状态
      _stopProgressSync();
      _currentItemId = null;
      _currentPlaySessionId = null;
      _isPlaying = false;

      final playSessionId = _generatePlaySessionId();
      _currentItemId = itemId;
      _currentPlaySessionId = playSessionId;
      _isPlaying = true;
      debugPrint('[EmbySync] 新播放会话已初始化: $playSessionId');

      // 构建播放开始信息 - 使用Emby的PlaybackStartInfo格式
      final startInfo = {
        'ItemId': itemId,
        'PositionTicks': (historyItem.lastPosition * 10000).round(), // 转换为ticks
        'PlaySessionId': playSessionId,
        'CanSeek': true,
        'IsPaused': false,
        'IsMuted': false,
        'PlayMethod': 'DirectPlay', // 假设直接播放
        'VolumeLevel': 100,
        'MediaSourceId': itemId, // Emby需要MediaSourceId
      };

      // 发送播放开始请求 - Emby使用/emby前缀
      final response = await _makeAuthenticatedRequest(
        '/emby/Sessions/Playing',
        method: 'POST',
        body: json.encode(startInfo),
      );

      if (response.statusCode == 204 || response.statusCode == 200) {
        debugPrint('[EmbySync] 播放开始报告成功');
        // 开始定时上传播放进度
        _startProgressSync();
      } else {
        debugPrint('[EmbySync] 播放开始报告失败: ${response.statusCode}');
      }

    } catch (e) {
      debugPrint('[EmbySync] 报告播放开始失败: $e');
    }
  }

  /// 播放结束时调用，向服务器报告播放结束
  Future<void> reportPlaybackStopped(String itemId, WatchHistoryItem historyItem, {bool isCompleted = false}) async {
    try {
      if (!_embyService.isConnected) return;

      debugPrint('[EmbySync] 报告播放结束: $item


iveAmount) < 0 {
		status = ProposalInvalid
	} else {
		if agreeVoteCount.Cmp(opposeVoteCount) > 0 {
			// 判断赞成票是否大于反对票，是则更新提案为成功，否则提案失败。
			status = ProposalSuccess
		} else {
			status = ProposalFailure
		}
	}

	result := &CheckVoteResult{
		Status:      status,
		AgreeCount:  agreeVoteCount,
		OpposeCount: opposeVoteCount,
		WaiveCount:  waiveVoteCount,
	}
	resultChan <- result // 此处不会阻塞
	value, err := json.Marshal(result)
	if err != nil {
		c.contractCtx.XLog.Error("XToken contract", "calcVoteResult json marshal failed", err)
		c.lastCheckVoteErr = err
	}
	// 写到数据库
	db := c.contractCtx.ChainCtx.State.GetLDB()
	err = db.Put([]byte(KeyOfProposalResult(token, topic, pid)), value)
	if err != nil {
		c.contractCtx.XLog.Error("XToken contract", "calcVoteResult db put CheckVoteResult error", err)
		c.lastCheckVoteErr = err
	}
}

// getAgreeVoteAmountFromXM 从状态机直接遍历赞成票
func (c *Contract) getAgreeVoteAmountFromXM(token, topic string, pid *big.Int) (*big.Int, error) {
	return c.getVoteAmountFromXM(token, topic, pid, voteAgreeOption)
}

// getOpposeVoteAmountFromXM 从状态机直接遍历反对票
func (c *Contract) getOpposeVoteAmountFromXM(token, topic string, pid *big.Int) (*big.Int, error) {
	return c.getVoteAmountFromXM(token, topic, pid, voteOpposeOption)
}

// getWaiveVoteAmountFromXM 从状态机直接遍历弃权票
func (c *Contract) getWaiveVoteAmountFromXM(token, topic string, pid *big.Int) (*big.Int, error) {
	return c.getVoteAmountFromXM(token, topic, pid, voteWaiveOption)
}

func (c *Contract) getVoteAmountFromXM(token, topic string, proposalID *big.Int, option int) (*big.Int, error) {
	// 前面判断过参数，此处不会出现错误。
	start, _ := c.getVoteKeyPrefix(token, topic, option, proposalID)
	reader := c.contractCtx.ChainCtx.State.CreateXMReader()
	it, err := reader.Select(XTokenContract, []byte(start), []byte(start+"~"))
	if err != nil {
		c.contractCtx.XLog.Error("XToken contract", "calcVoteResult reader select error", err)
		return nil, err
	}
	defer it.Close()

	voteCount := big.NewInt(0)
	for it.Next() {
		value := string(it.Value().PureData.GetValue())
		voteAmount, ok := big.NewInt(0).SetString(value, 10)
		if !ok {
			// 此处不应有错误，如果有，说明投票时检查的有问题。
			return nil, errors.New("vote value invalid")
		}
		voteCount = voteCount.Add(voteCount, voteAmount)
	}
	if err := it.Error(); err != nil {
		c.contractCtx.XLog.Error("XToken contract", "State CreateXMReader iterator error", err)
		return nil, err
	}
	return voteCount, nil
}

func proposalCheckingKey(token, topic, pid string) string {
	return token + topic + pid
}

func (c *Contract) setTopicData(ctx co


copy(state = SUCCEEDED) }
        } else if (!installedPackageInfo.isSystemApp()) {
            Log.w(TAG, "Not installing $packageName because not a system app here.")
            installResult.value.update(packageName) { it.copy(state = SUCCEEDED) }
        } else {
            null // everything is good, we can re-install this
        }
    }

    /**
     * Once [InstallResult.isFinished] is true,
     * this can be called to re-check a package in state [FAILED].
     * If it is now installed, the state will be changed to [SUCCEEDED].
     */
    fun reCheckFailedPackage(packageName: String) {
        check(installResult.value.isFinished) {
            "re-checking failed packages only allowed when finished"
        }
        if (context.packageManager.isInstalled(packageName)) mInstallResult.update { result ->
            result.update(packageName) { it.copy(state = SUCCEEDED) }
        }
    }
}

/**
 * Copy the APK from the given [InputStream] to the given [OutputStream]
 * and calculate the SHA-256 hash while at it.
 *
 * Both streams will be closed when the method returns.
 *
 * @return the APK's SHA-256 hash in Base64 format.
 */
@Throws(IOException::class)
fun copyStreamsAndGetHash(inputStream: InputStream, outputStream: OutputStream): String {
    val messageDigest = MessageDigest.getInstance("SHA-256")
    outputStream.use { oStream ->
        inputStream.use { inputStream ->
            val buffer = ByteArray(DEFAULT_BUFFER_SIZE)
            var bytes = inputStream.read(buffer)
            while (bytes >= 0) {
                oStream.write(buffer, 0, bytes)
                messageDigest.update(buffer, 0, bytes)
                bytes = inputStream.read(buffer)
            }
        }
    }
    return messageDigest.digest().encodeBase64()
}

/**
 * Returns a list of Base64 encoded SHA-256 signature hashes.
 */
fun SigningInfo?.getSignatures(): List<String> {
    return if (this == null) {
        emptyList()
    } else if (hasMultipleSigners()) {
        apkContentsSigners.map { signature ->
            hashSignature(signature).encodeBase64()
        }
    } else {
        signingCertificateHistory.map { signature ->
            hashSignature(signature).encodeBase64()
        }
    }
}
/*
 * SPDX-FileCopyrightText: 2021 The Calyx Institute
 * SPDX-License-Identifier: Apache-2.0
 */

package org.calyxos.backup.storage.backup

import android.content.ContentResolver
import io.mockk.Runs
import io.mockk.coEvery
import io.mockk.every
import io.mockk.just
import io.mockk.mockk
import kotlinx.coroutines.runBlocking
import org.calyxos.backup.storage.content.ContentFile
import org.calyxos.backup.storage.content.DocFile
import org.calyxos.backup.storage.db.CachedFile
import org.calyxos.backup.storage.db.ChunksCache
import org.calyxos.backup.storage.db.FilesCache
import org.calyxos.backup.storage.getRandomDocFile
import org.calyxos.backup.storage.getRandomString
import org.calyxos.backup.storage.mockLog
import org.calyxos.backup.storage.sameCachedFile
import org.junit.Assert.assertEquals
import org.junit.Assert.assertThrows
import org.junit.Test
import java.io.IOException
import java.io.InputStream
import kotlin.random.Random

internal class SmallFileBackupTest {

    private val contentResolver: ContentResolver = mockk()
    private val filesCache: FilesCache = mockk()
    private val chunksCache: ChunksCache = mockk()
    private val zipChunker: ZipChunker = mockk()

    private val smallFileBackup =
        SmallFileBackup(contentResolver, filesCache, chunksCache, zipChunker, true)

    private val fileInputStream: InputStream = mockk()

    init {
        mockLog()


3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}html.dark[data-v-deea8ef1]{color-scheme:dark;--el-color-primary: #009688;--el-color-primary-light-3: rgb(6, 111, 101.2);--el-color-primary-light-5: #0a554e;--el-color-primary-light-7: rgb(14, 59, 54.8);--el-color-primary-light-8: rgb(16, 46, 43.2);--el-color-primary-light-9: rgb(18, 33, 31.6);--el-color-primary-dark-2: rgb(51, 171, 159.8);--el-color-success: #52c41a;--el-color-success-light-3: rgb(63.4, 143.2, 24.2);--el-color-success-light-5: #336c17;--el-color-success-light-7: rgb(38.6, 72.8, 21.8);--el-color-success-light-8: rgb(32.4, 55.2, 21.2);--el-color-success-light-9: rgb(26.2, 37.6, 20.6);--el-color-success-dark-2: rgb(116.6, 207.8, 71.8);--el-color-warning: #faad14;--el-color-warning-light-3: rgb(181, 127.1, 20);--el-color-warning-light-5: rgb(135, 96.5, 20);--el-color-warning-light-7: rgb(89, 65.9, 20);--el-color-warning-light-8: rgb(66, 50.6, 20);--el-color-warning-light-9: rgb(43, 35.3, 20);--el-color-warning-dark-2: rgb(251, 189.4, 67);--el-color-danger: #ff4d4f;--el-color-danger-light-3: rgb(184.5, 59.9, 61.3);--el-color-danger-light-5: rgb(137.5, 48.5, 49.5);--el-color-danger-light-7: rgb(90.5, 37.1, 37.7);--el-color-danger-light-8: rgb(67, 31.4, 31.8);--el-color-danger-light-9: rgb(43.5, 25.7, 25.9);--el-color-danger-dark-2: rgb(255, 112.6, 114.2);--el-color-error: #ff4d4f;--el-color-error-light-3: rgb(184.5, 59.9, 61.3);--el-color-error-light-5: rgb(137.5, 48.5, 49.5);--el-color-error-light-7: rgb(90.5, 37.1, 37.7);--el-color-error-light-8: rgb(67, 31.4, 31.8);--el-color


<meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <link rel="stylesheet" href="css/bootstrap.css">

    <title>Bismuto - Steven Universo Wiki</title>

          Início
          <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">

          </button>

                Locais

                Série

Crystal Gems

Autoridade Diamante

                  Personagens

Humanos

Gems

Fusões

            <form class="d-flex" role="search">
              <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
              <button class="btn btn-outline-success" type="submit">Search</button>
            </form>

Bismuto

Saiba mais sobre a poderosa Garnet, uma das Crystal Gems!

                <img src="Bismuth_S.U_The_Movie_Form_Regeneration_by_CGBomn


, Type: uint32(elf.SHT_PROGBITS), Flags: uint64(elf.SHF_ALLOC | elf.SHF_EXECINSTR), Addr: textAddr, Off: sectionsStart, Size: textSize, Link: 0, Info: 0, Addralign: 2048, Entsize: 0},
		{Name: secNames.write(".text"), Type: uint32(elf.SHT_PROGBITS), Flags: uint64(elf.SHF_ALLOC | elf.SHF_EXECINSTR), Addr: stextAddr, Off: sectionsStart + textSize, Size: textSize, Link: 0, Info: 0, Addralign: 2048, Entsize: 0},
		{Name: secNames.write(".symtab"), Type: uint32(elf.SHT_SYMTAB), Flags: 0, Addr: 0, Off: sectionsStart + 2*textSize, Size: uint64(len(syms) * elf.Sym64Size), Link: 3 /*index of .strtab*/, Info: 0, Addralign: 8, Entsize: elf.Sym64Size},
		{Name: secNames.write(".strtab"), Type: uint32(elf.SHT_STRTAB), Flags: 0, Addr: 0, Off: sectionsStart + 2*textSize + uint64(len(syms)*elf.Sym64Size), Size: uint64(len(symNames.data)), Link: 0, Info: 0, Addralign: 1, Entsize: 0},
		{Name: secNames.write(".shstrtab"), Type: uint32(elf.SHT_STRTAB), Flags: 0, Addr: 0, Off: sectionsStart + 2*textSize + uint64(len(syms)*elf.Sym64Size+len(symNames.data)), Size: uint64(len(secNames.data)), Link: 0, Info: 0, Addralign: 1, Entsize: 0},
	}

	hdr := elf.Header64{
		Ident:     ident,
		Type:      uint16(elf.ET_DYN),
		Machine:   uint16(elf.EM_AARCH64),
		Version:   uint32(elf.EV_CURRENT),
		Entry:     textAddr,
		Phoff:     uint64(sizeHeader64),
		Shoff:     uint64(sizeHeader64 + len(progs)*sizeProg64),
		Flags:     0,
		Ehsize:    uint16(sizeHeader64),
		Phentsize: uint16(sizeProg64),
		Phnum:     uint16(len(progs)),
		Shentsize: uint16(sizeSection64),
		Shnum:     uint16(len(sections)),
		Shstrndx:  4, // index of .shstrtab
	}

	// Serialize all headers and sections into a single binary stream.
	var data bytes.Buffer
	for i, b := range []interface{}{hdr, progs, sections, [textSize]byte{}, [textSize]byte{}, syms, symNames.data, secNames.data} {
		err := binary.Write(&data, binary.LittleEndian, b)
		if err != nil {
			t.Fatalf("Write(%v) got err %v, want nil", i, err)
		}
	}

	// ... and parse it as and ELF file.
	ef, err := elf.NewFile(bytes.NewReader(data.Bytes()))
	if err != nil {
		t.Fatalf("elf.NewFile got err %v, want nil", err)
	}
	return ef
}

func TestELFKernelOffset(t *testing.T) {
	realELFOpen := elfOpen
	defer func() {
		elfOpen = realELFOpen
	}()

	wantAddr := uint64(0xffff000010082000)
	elfOpen = func(_ string) (*elf.File, error) {
		return fakeELFFile(t), nil
	}

	for _, tc := range []struct {
		name             string
		relocationSymbol string
		start            uint64
	}{
		{"text", "_text", 0xffff000020080000},
		{"stext", "_stext", 0xffff000020081000},
	} {

		b :=


x12_SRGB_BLOCK:
    case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK:
    case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK:
    case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK:
    case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK:
    case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK:
    case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK:
    case VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK:
    case VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK:
    case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK:
    case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK:
    case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK:
    case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK:
    case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK:
    case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK: ret.compCount = 4; break;
    case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:
    case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:
    case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:
    case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:
    case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:
    case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:
    case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:
    case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG: ret.compCount = 4; break;
    case VK_FORMAT_UNDEFINED:
    case VK_FORMAT_MAX_ENUM: ret.compCount = 1; break;
  }

  switch(fmt)
  {
    case VK_FORMAT_R4G4_UNORM_PACK8:
    case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
    case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
    case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
    case VK_FORMAT_R5G6B5_UNORM_PACK16:
    case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
    case VK_FORMAT_R8_UNORM:
    case VK_FORMAT_R8G8_UNORM:
    case VK_FORMAT_R8G8B8_UNORM:
    case VK_FORMAT_R8G8B8A8_UNORM:
    case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
    case VK_FORMAT_R16_UNORM:
    case VK_FORMAT_R16G16_UNORM:
    case VK_FORMAT_R16G16B16_UNORM:
    case VK_FORMAT_R16G16B16A16_UNORM:
    case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
    case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
    case VK_FORMAT_BC2_UNORM_BLOCK:
    case VK_FORMAT_BC3_UNORM_BLOCK:
    case VK_FORMAT_BC4_UNORM_BLOCK:
    case VK_FORMAT_BC5_UNORM_BLOCK:
    case VK_FORMAT_BC7_UNORM_BLOCK:
    case VK_FORMAT_BC6H_UFLOAT_BLOCK:
    case VK_F


on: HttpURLConnection? = null
        try {
            val url = URL(url)
            httpConnection = HttpRequest.getHttpURLConnection(url, 5000)
            HttpRequest.setConHead(httpConnection!!)
            httpConnection!!.connect()
            val responseCode = httpConnection!!.responseCode
            if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_PARTIAL) {
                val instream = httpConnection!!.inputStream
                if (instream != null) {
                    val inputreader = InputStreamReader(instream)
                    val buffreader = BufferedReader(inputreader)
                    var line: String?
                    // 分行读取
                    while (buffreader.readLine().also { line = it } != null) {
                        result.append(line)
                    }
                    inputreader.close()
                    instream.close()
                    buffreader.close()
                }
            }
        } catch (e: Exception) {
            e.printStackTrace()
        } finally {
            httpConnection?.disconnect() // 关闭连接
        }
        return result.toString()
    }
}package com.wgllss.core.activity

import android.app.Activity
import android.os.Process
import com.wgllss.core.ex.finishActivity
import java.lang.reflect.Field
import java.lang.reflect.Method

object WActivityManager {

    fun getActivitys(block: (it: Activity) -> Any) {
        try {
            val activityThread = Class.forName("android.app.ActivityThread")
            val currentActivityThread: Method = activityThread.getDeclaredMethod("currentActivityThread")
            currentActivityThread.isAccessible = true
            //获取主线程对象
            val activityThreadObject: Any = currentActivityThread.invoke(null)
            val mActivitiesField: Field = activityThread.getDeclaredField("mActivities")
            mActivitiesField.isAccessible = true
            val mActivities = mActivitiesField[activityThreadObject] as Map<Any, Any>
            mActivities.forEach {
                val activityClientRecordClass: Class<*> = it.value.javaClass
                val activityField = activityClientRecordClass.getDeclaredField("activity")
                activityField.isAccessible = true
                activityField[it.value]?.let {
                    block.invoke(it as Activity)
                }
            }
        } catch (e: java.lang.Exception) {
            e.printStackTrace()
        }
    }

    fun popAllActivity() {
        getActivitys() {
            it.finishActivity()
        }
    }

    fun exitApplication() {
        object : Thread() {
            override fun run() {
                super.run()
                popAllActivity()
                Process.killProcess(Process.myPid())
                System.exit(0) // 常规java、c#的标准退出法，返回值为0代表正常退出
            }
        }.start()
    }
}package com.wgllss.core.ex

import android.content.Context
import android.view.View
import android.view.inputmethod.InputMethodManager
import androidx.annotation.IdRes
import androidx.fragment.app.Fragment

fun Fragment.switchFragment(fragment: Fragment, mCurrentFragmentTAG: StringBuilder?, @IdRes idRes: Int) {
    if (mCurrentFragmentTAG == null || fragment.javaClass.simpleName !== mCurrentFragmentTAG.toString()) {
        childFragmentManager.apply {
            val f = findFragmentByTag(mCurrentFragmentTAG.toString())
            beginTransaction()?.let {
                f?.let { f -> it.hide(f) }
                fragment?.apply {
                    if (!isAdded) {
                        userVisibleHint = true;
                        it.add(idRes, this, javaClass.simpleName).show(this)
                    } else {
                        it.show(this)
                    }
                }
                it.commitAllowingStateLoss()
            }
        }
    }
}

fun Fragment.set


W),%eax
	movl	$(NKL2_KIMG_ENTRIES+1),%ecx
	fillkpt

	/*
	 * Build L3. Linked to L2.
	 */
	leal	(PROC0_PTP3_OFF)(%esi),%ebx
	leal	(PROC0_PTP2_OFF)(%esi),%eax
	orl	$(PTE_P|PTE_W),%eax
	movl	$NKL3_KIMG_ENTRIES,%ecx
	fillkpt

	/*
	 * Build L4. Linked to L3.
	 */
	leal	(PROC0_PML4_OFF)(%esi),%ebx
	leal	(PROC0_PTP3_OFF)(%esi),%eax
	orl	$(PTE_P|PTE_W),%eax
	movl	$NKL4_KIMG_ENTRIES,%ecx
	fillkpt

	/* Install recursive top level PDE (one entry) */
	leal	(PROC0_PML4_OFF + PDIR_SLOT_PTE * PDE_SIZE)(%esi),%ebx
	leal	(PROC0_PML4_OFF)(%esi),%eax
	orl	$(PTE_P|PTE_W),%eax
	movl	$1,%ecx
	fillkpt_nox

	/*
	 * Startup checklist:
	 * 1. Enable PAE (and SSE while here).
	 */
	movl	%cr4,%eax
	orl	$(CR4_PAE|CR4_OSFXSR|CR4_OSXMMEXCPT),%eax
	movl	%eax,%cr4

	/*
	 * 2. Set Long Mode Enable in EFER. Also enable the syscall extensions,
	 *    and NOX if available.
	 */
	movl	$MSR_EFER,%ecx
	rdmsr
	xorl	%eax,%eax
	orl	$(EFER_LME|EFER_SCE),%eax
	movl	_C_LABEL(nox_flag),%ebx
	cmpl	$0,%ebx
	je 	.Lskip_NOX
	orl	$(EFER_NXE),%eax
.Lskip_NOX:
	wrmsr

	/*
	 * 3. Load %cr3 with pointer to PML4.
	 */
	movl	%esi,%eax
	movl	%eax,%cr3

	/*
	 * 4. Enable paging and the rest of it.
	 */
	movl	%cr0,%eax
	orl	$(CR0_PE|CR0_PG|CR0_NE|CR0_TS|CR0_MP|CR0_WP|CR0_AM),%eax
	movl	%eax,%cr0
	jmp	compat
compat:

	/*
	 * 5. Not quite done yet, we're now in a compatibility segment, in
	 *    legacy mode. We must jump to a long mode segment. Need to set up


import requests

from django.forms import ValidationError
from django.urls import reverse
from django.utils.translation import gettext_lazy as _

from temba.contacts.models import URN

from ...models import Channel, ChannelType
from .views import ClaimView

class JustCallType(ChannelType):
    """
    A JustCall channel (https://justcall.io/)
    """

    code = "JCL"
    name = "JustCall"

    courier_url = r"^jcl/(?P<uuid>[a-z0-9\-]+)/(?P<action>receive|status)$"

    category = ChannelType.Category.PHONE
    schemes = [URN.TEL_SCHEME]
    max_length = 160

    claim_view = ClaimView

    claim_blurb = _("If you have a %(link)s number, you can quickly connect it using their APIs.") % {
        "link": 'JustCall'
    }

    show_config_page = False

    def activate(self, channel):
        api_key = channel.config[Channel.CONFIG_API_KEY]
        api_secret = channel.config[Channel.CONFIG_SECRET]

        domain = channel.org.get_brand_domain()

        receive_url = "https://" + domain + reverse("courier.jcl", args=[channel.uuid, "receive"])
        status_url = "https://" + domain + reverse("courier.jcl", args=[channel.uuid, "status"])

        resp = requests.post(
            "https://api.justcall.io/v1/webhooks/add",
            json={"topic_id": 2, "url": receive_url},
            headers={"Authorization": f"{api_key}:{api_secret}", "Accept": "application/json"},
        )

        if resp.status_code != 200:
            raise ValidationError(
                _("Unable to add webhook to JustCall: %(resp)s"), params={"resp": resp.json().get("message")}
            )

        resp = requests.post(
            "https://api.justcall.io/v1/webhooks/add",
            json={"topic_id": 9, "url": status_url},
            headers={"Authorization": f"{api_key}:{api_secret}", "Accept": "application/json"},
        )

        if resp.status_code != 200:
            raise ValidationError(
                _("Unable to add webhook to JustCall: %(resp)s"), params={"resp": resp.json().get("message")}
            )