ead int8_t
    data.writeBit(0); // Fake Bit
    data.writeBit(casterUnitGuid[4]);
    data.writeBit(casterGuid[2]);
    data.writeBits(runeCooldownPassedCount, 3); // Rune Cooldown Passed Count
    data.writeBit(casterUnitGuid[2]);
    data.writeBit(casterUnitGuid[6]);
    data.writeBits(0, 25); // MissType Count (not used currently in SMSG_SPELL_START)
    data.writeBits(0, 13); // Unknown Bits
    data.writeBit(casterGuid[4]);
    data.writeBits(0, 24); // Hit Count (not used currently in SMSG_SPELL_START)
    data.writeBit(casterUnitGuid[7]);

    //for (uint32_t i = 0; i < hitCount; ++i)
    //{
    //}

    data.writeBit(hasSourceLocation);
    data.writeBits(predictedPowerCount, 21);

    data.writeBit(itemTargetGuid[3]);
    data.writeBit(itemTargetGuid[0]);
    data.writeBit(itemTargetGuid[1]);
    data.writeBit(itemTargetGuid[7]);
    data.writeBit(itemTargetGuid[2]);
    data.writeBit(itemTargetGuid[6]);
    data.writeBit(itemTargetGuid[4]);
    data.writeBit(itemTargetGuid[5]);

    data.writeBit(!hasElevation);
    data.writeBit(!hasTargetString);
    data.writeBit(!hasAmmoInventoryType);
    data.writeBit(hasDestLocation);
    data.writeBit(1); // Unk Read32
    data.writeBit(casterGuid[3]);

    if (hasDestLocation)
    {

    }

    data.writeBit(!hasAmmoDisplayId);

    if (hasSourceLocation)
    {

    }

    data.writeBit(0); // Fake Bit
    data.writeBit(casterGuid[6]);

    data.writeBit(unkGuid[2]);
    data.writeBit(unkGuid[1]);
    data.writeBit(unkGuid[7]);
    data.writeBit(unkGuid[6]);
    data.writeBit(unkGuid[0]);
    data.writeBit(unkGuid[5]);
    data.writeBit(unkGuid[3]);
    data.writeBit(unkGuid[4]);

    data.writeBit(!hasTargetMask);

    if (hasTargetMask)
        data.writeBits(m_targets.getTargetMask(), 20);

    data.writeBit(casterGuid[1]);
    data.writeBit(!hasPredictedHeal);
    data.writeBit(1); // Unk read int8_t
    data.writeBit(!hasCastSchoolImmunities);
    data.writeBit(casterUnitGuid[5]);
    data.writeBit(0); // Fake Bit
    data.writeBits(0, 20); // Extra Target Count (not used currently in SMSG_SPELL_START)

    //for (uint32_t i = 0; i < extraTargetCount; ++i)
    //{
    //}

    data.writeBit(targetGuid[1]);
    data.writeBit(targetGuid[4]);
    data.writeBit(targetGuid[6]);
    data.writeBit(targetGuid[7]);
    data.writeBit(targetGuid[5]);
    data.writeBit(targetGuid[3]);
    data.writeBit(targetGuid[0]);
    data.writeBit(targetGuid[2]);

    data.writeBit(casterGuid[0]);
    data.writeBit(casterUnitGuid[3]);
    data.writeBit(1); // Unk uint8_t

    //for (uint32_t i = 0; i < missTypeCount; ++i)
    //{
    //}

    data.writeBit(!hasCastImmunities);
    data.writeBit(casterUnitGuid[1]);
    data.writeBit(hasVisualChain);
    data.writeBit(casterGuid[7]);
    data.writeBit(!hasPredictedType);
    data.writeBit(casterUnitGuid[0]);

    data.flushBits();

    data.WriteByteSeq(itemTargetGuid[1]);
    data.WriteByteSeq(itemTargetGuid[7]);
    data.WriteByteSeq(itemTargetGuid[6]);
    data.WriteByteSeq(itemTargetGuid[0]);
    data.WriteByteSeq(itemTargetGuid[4]);


former][][2]int64

	InfDecomposeBound    map[int64]*big.Int
	InfDecomposedWitness map[int64][]Witness

	TwoDecomposeBound    map[int64]*big.Int
	TwoDecomposeBase     map[int64]PublicWitness
	TwoDecomposeMask     map[int64]PublicWitness
	TwoDecomposedWitness map[int64]Witness
}

func newContext(params celpc.Parameters, walker *walker) *Context {
	return &Context{
		ringDegree: params.Degree(),
		reducer:    bigring.NewReducer(params.Modulus()),

		publicWitnessCount: walker.publicWitnessCount,
		witnessCount:       walker.witnessCount,

		circuitType: walker.circuitType,
		maxDegree:   params.Degree() + 1,

		linCheckConstraints: make(map[LinearCheckTransformer][][2]int64),

		InfDecomposeBound:    make(map[int64]*big.Int),
		InfDecomposedWitness: make(map[int64][]Witness),

		TwoDecomposeBound:    make(map[int64]*big.Int),
		TwoDecomposeBase:     make(map[int64]PublicWitness),
		TwoDecomposeMask:     make(map[int64]PublicWitness),
		TwoDecomposedWitness: make(map[int64]Witness),
	}
}

// NewArithmeticConstraint creates a new arithmetic constraint.
func NewArithmeticConstraint() *ArithmeticConstraint {
	return &ArithmeticConstraint{}
}

// AddArithmeticConstraint adds an arithmetic constraint to the context.
func (ctx *Context) AddArithmeticConstraint(c ArithmeticConstraint) {
	for i := range c.coeffsBig {
		c.coeffsBig[i].Mod(c.coeffsBig[i], ctx.reducer.Q)
	}

	ctx.arithConstraints = append(ctx.arithConstraints, c)

	for i := 0; i < len(c.witness); i++ {
		degree := 0
		if c.coeffsPublicWitness[i] == -1 {
			degree += ctx.ringDegree - 1
		}
		degree += len(c.witness[i]) * ctx.ringDegree
		degree += 1

		if degree > ctx.maxDegree {
			ctx.maxDegree = degree
		}
	}
}

// AddSumCheckConstraint add a sumcheck constraint to the context,
// where it checks if the sum of the witness is equal to bigint value.
func (ctx *Context) AddSumCheckConstraintBig(c ArithmeticConstraint, sum *big.Int) {
	ctx.sumCheckConstraints = append(ctx.sumCheckConstraints, c)
	ctx.sumCheckSums = append(ctx.sumCheckSums, sum)
}

// AddSumCheckConstraint add a sumcheck constraint to the context,
// where it checks if the sum of the witness is equal to uint64 value.
func (ctx *Context) AddSumCheckConstraint(c ArithmeticConstraint, sum uint64) {
	ctx.AddSumCheckConstraintBig(c, big.NewInt(0).SetUint64(sum))
}

// AddLinearConstrait adds a linear constraint to the context.
func (ctx *Context) AddLinearConstraint(transformer LinearCheckTransformer, wIn, wOut Witness) {
	linCheckDeg := 2 * ctx.ringDegree
	if ctx.maxDegree < linCheckDeg {
		ctx.maxDegree = linCheckDeg
	}

	if _, ok := ctx.linCheckConstraints[transformer]; !ok {
		ctx.linCheck = append(ctx.linCheck, transformer)
	}
	ctx.linCheckConstraints[transformer] = append(ctx.linCheckConstraints[transformer], [2]int64{wIn[0].Int64(), wOut[0].Int64()})
}

// AddInfNormConstraintBig adds an infinity-norm constraint to the context.
func (ctx *Con


}, { "id": "ref-for-dom-fullscreenoptions-navigationui\u2460" }], "title": "3. API" }], "url": "#dom-fullscreenoptions-navigationui" },
                "e6cc3311": { "dfnID": "e6cc3311", "dfnText": "tree", "external": true, "refSections": [{ "refs": [{ "id": "ref-for-concept-tree" }], "title": "3. API" }], "url": "https://dom.spec.whatwg.org/#concept-tree" },
                "e99bd18e": { "dfnID": "e99bd18e", "dfnText": "relevant global object", "external": true, "refSections": [{ "refs": [{ "id": "ref-for-concept-relevant-global" }, { "id": "ref-for-concept-relevant-global\u2460" }], "title": "3. API" }], "url": "https://html.spec.whatwg.org/multipage/webappapis.html#concept-relevant-global" },
                "enumdef-fullscreennavigationui": { "dfnID": "enumdef-fullscreennavigationui", "dfnText": "FullscreenNavigationUI", "external": false, "refSections": [{ "refs": [{ "id": "ref-for-enumdef-fullscreennavigationui" }], "title": "3. API" }], "url": "#enumdef-fullscreennavigationui" },
                "eventdef-document-fullscreenchange": { "dfnID": "eventdef-document-fullscreenchange", "dfnText": "fullscreenchange", "external": false, "refSections": [{ "refs": [{ "id": "ref-for-eventdef-document-fullscreenchange" }, { "id": "ref-for-eventdef-document-fullscreenchange\u2460" }, { "id": "ref-for-eventdef-document-fullscreenchange\u2461" }, { "id": "ref-for-eventdef-document-fullscreenchange\u2462" }], "title": "3. API" }], "url": "#eventdef-document-fullscreenchange" },
                "eventdef-document-fullscreenerror": { "dfnID": "eventdef-document-fullscreenerror", "dfnText": "fullscreenerror", "external": false, "refSections": [{ "refs": [{ "id": "ref-for-eventdef-document-fullscreenerror" }], "title": "3. API" }], "url": "#eventdef-document-fullscreenerror" },
                "exit-fullscreen": { "dfnID": "exit-fullscreen", "dfnText": "exit fullscreen", "external": false, "refSections": [{ "refs": [{ "id": "ref-for-exit-fullscreen" }, { "id": "ref-for-exit-fullscreen\u2460" }], "title": "2. Model" }, { "refs": [{ "id": "ref-for-exit-fullscreen\u2461" }], "title": "3. API" }], "url": "#exit-fullscreen" },
                "f052b1ea": { "dfnID": "f052b1ea", "dfnText": "HTML namespace", "external": true, "refSections": [{ "refs": [{ "id": "ref-for-html-namespace" }, { "id": "ref-for-html-namespace\u2460" }], "title": "3. API" }], "url": "https://infra.spec.whatwg.org/#html-namespace" },
                "f0951476": { "dfnID": "f0951476", "dfnText": "EventHandler", "external": true, "refSections": [{ "refs": [{ "id": "ref-for-eventhandler" }, { "id": "ref-for-eventhandler\u2460" }, { "id": "ref-for-eventhandler\u2461" }, { "id": "ref-for-eventhandler\u2462" }], "title": "3. API" }], "url": "https://html.spec.whatwg.org/multipage/webappapis.html#eventhandler" },
                "


 *
	 * @param opcode		u8 instruction code
	 * @param optype		u8 result type
	 * @param operand_1		u8 operand 1
	 * @param operand_2		u8 operand 2
	 * @param value_1		f64
	 */
	append_instruction_f64(opcode:u8, optype:u8, operand_1:u8, operand_2:u8, value_1:f64) {
		this._view.setUint8(this._cursor, opcode);
		this._cursor++;
		this._view.setUint8(this._cursor, optype);
		this._cursor++;
		this._view.setUint8(this._cursor, operand_1);
		this._cursor++;
		this._view.setUint8(this._cursor, operand_2);
		this._cursor++;

		this._view.setFloat64(this._cursor, value_1);
		this._cursor += 8;

		return this;
	}

	/**
	 * Append an instruction with two additional f64.
	 *
	 * @param opcode		u8 instruction code
	 * @param optype		u8 result type
	 * @param operand_1		u8 operand 1
	 * @param operand_2		u8 operand 2
	 * @param value_1		f64
	 * @param value_2		f64
	 */
	append_instruction_f64_f64(opcode:u8, optype:u8, operand_1:u8, operand_2:u8, value_1:f64, value_2:f64) {
		this._view.setUint8(this._cursor, opcode);
		this._cursor++;
		this._view.setUint8(this._cursor, optype);
		this._cursor++;
		this._view.setUint8(this._cursor, operand_1);
		this._cursor++;
		this._view.setUint8(this._cursor, operand_2);
		this._cursor++;

		this._view.setFloat64(this._cursor, value_1);
		this._cursor += 8;
		this._view.setFloat64(this._cursor, value_2);
		this._cursor += 8;

		return this;
	}

	/**
	 * Append an instruction with two additional f64 and i32.
	 *
	 * @param opcode		u8 instruction code
	 * @param optype		u8 result type
	 * @param operand_1		u8 operand 1
	 * @param operand_2		u8 operand 2
	 * @param value_1		f64
	 * @param value_2		i32
	 */
	append_instruction_f64_i32(opcode:u8, optype:u8, operand_1:u8, operand_2:u8, value_1:f64, value_2:i32) {
		this._view.setUint8(this._cursor, opcode);
		this._cursor++;
		this._view.setUint8(this._cursor, optype);
		this._cursor++;
		this._view.setUint8(this._cursor, operand_1);
		this._cursor++;
		this._view.setUint8(this._cursor, operand_2);
		this._cursor++;

		this._view.setFloat64(this._cursor, value_1);
		this._cursor += 8;
		this._view.setInt32(this._cursor, value_2);
		this._cursor += 4;

		return this;
	}

	/**
	 * Get u8 item.
	 * @param index i32
	 * @returns u8
	 */
	get_u8(index:i32):u8{
		if (index < 0 || index >= this._view.byteLength)
        {
			return 0;
		}
		return this._view.getUint8(index);
	}

	/**
	 * Get u8 item without index check.
	 * @param index i32
	 * @returns u8
	 */
	get_u8_unsafe(index:i32):u8{
		return this._view.getUint8(index);
	}

	/**
	 * Get


exitcode	equ	0<<8
intropiccode	equ	1<<8
bumppiccode	equ	2<<8
kub16code	equ	3<<8
firefxcode	equ	4<<8
strblobcode	equ	5<<8
distrotcode	equ	6<<8
wire50code	equ	7<<8
tunnelcode	equ	8<<8
kaasblok	equ	9<<8
greetcode	equ	10<<8
voxelcode	equ	11<<8

introinitcode	equ	intropiccode|1
introdeinitcode	equ	intropiccode|2

pbumpinitcode	equ	bumppiccode|1
pbumpfuncode	equ	bumppiccode|2
pbumpbeatscode	equ	bumppiccode|3
pbumprescode	equ	bumppiccode|4
pbumpkickcode	equ	bumppiccode|5

kub16resetcode	equ	kub16code|1
kub16fwdcode	equ	kub16code|2
kub16stopcode	equ	kub16code|3
kub16logocode	equ	kub16code|4
kub16bmpfwdcode	equ	kub16code|5
kub16bmpbckcode	equ	kub16code|6
kub16rescode	equ	kub16code|7

firefxinitcode	equ	firefxcode|1
firefxblastcode	equ	firefxcode|2
firefxcntcode	equ	firefxcode|3
firefxtrigcode	equ	firefxcode|4
firefxfuncode	equ	firefxcode|5
firefxglecode	equ	firefxcode|6
firefxbeatscode	equ	firefxcode|7

strblobinitcode	equ	strblobcode|1
strblobinvcode	equ	strblobcode|2
strblobrescode	equ	strblobcode|3

distrotinitcode	equ	distrotcode|1
distrotinvcode	equ	distrotcode|2
distrotfuckcode	equ	distrotcode|3

wire50initcode	equ	wire50code|1
wire50fwdcode	equ	wire50code|2
wire50morphcode	equ	wire50code|3
wire50bumpcode	equ	wire50code|4
wire50chgcode	equ	wire50code|5
wire50inccode	equ	wire50code|6
wire50deccode	equ	wire50code|7
wire50nullcode	equ	wire50code|8
wire50stopcode	equ	wire50code|9
wire50rescode	equ	wire50code|10

tunnelinitcode	equ	tunnelcode|1
tunnelrescode	equ	tunnelcode|2

greetinitcode	equ	greetcode|1
greetrescode	equ	greetcode|2

voxelinitcode	equ	voxelcode|1
voxelrescode	equ	voxelcode|2

funintroevent_tbl:
	dc.w	(.end-.start)/6		* number of events in table
	dc.w	0			* current event (for optimisation)
.start:
	DC.L	0
	DC.W	introinitcode
	DC.L	0
	DC.W	voxelinitcode
	DC.L	0
	DC.W	intropiccode
	DC.L	900
	DC.W	pbumpinitcode
	DC.L	1280				* 1: MUSIC BY COMP7
	DC.W	pbumprescode
	DC.L	1280
	DC.W	bumppiccode
	DC.L	1280
	DC.W	pbumpfuncode
	DC.


":"ζωγρέω","kjv_def":"take captive, catch","strongs_def":" to take alive (make a prisoner of war), i.e. (figuratively) to capture or ensnare"},
"G3094":{"derivation":"feminine of a derivative of G3093 (Μαγδαληνή);","lemma":"Μαγδαληνή","kjv_def":"Magdalene","strongs_def":" a female Magdalene, i.e. inhabitant of Magdala"},
"G4263":{"derivation":"probably neuter of a presumed derivative of G4260 (πρόβατον);","lemma":"πρόβατον","kjv_def":"sheep(-fold)","strongs_def":" something that walks forward (a quadruped), i.e. (specially), a sheep (literally or figuratively)"},
"G412":{"derivation":"from G1 (ἀνεκλάλητος) (as a negative particle) and a presumed derivative of G1583 (ἀνεκλάλητος);","lemma":"ἀνεκλάλητος","kjv_def":"unspeakable","strongs_def":" not spoken out, i.e. (by implication) unutterable"},
"G5297":{"derivation":"from G5259 (ὑποφέρω) and G5342 (ὑποφέρω);","lemma":"ὑποφέρω","kjv_def":"bear, endure","strongs_def":" to bear from underneath, i.e. (figuratively) to undergo hardship"},
"G405":{"derivation":"from a derivative of a compound of G435 (ἀνδραποδιστής) and G4228 (ἀνδραποδιστής);","lemma":"ἀνδραποδιστής","kjv_def":"menstealer","strongs_def":" an enslaver (as bringing men to his feet)"},
"G4047":{"derivation":"from G4046 (περιποίησις);","lemma":"περιποίησις","kjv_def":"obtain(-ing), peculiar, purchased, possession, saving","strongs_def":" acquisition (the act or the thing); by extension, preservation"},
"G5126":{"derivation":"accusative case singular masculine of G3778 (τοῦτον);","lemma":"τοῦτον","kjv_def":"him, the same, that, this","strongs_def":" this (person, as objective of verb or preposition)"},
"G1555":{"derivation":"from G1537 (ἐκδιηγέομαι) and a compound of G1223 (ἐκδιηγέομαι) and G2233 (ἐκδιηγέομαι);","lemma":"ἐκδιηγέομαι","kjv_def":"declare","strongs_def":" to narrate through wholly"},
"G702":{"derivation":"of foreign origin;","lemma":"Ἀρέτας","kjv_def":"Aretas","strongs_def":" Aretas, an Arabian"},
"G3425":{"derivation":"adverb from a primary (toil);","lemma":"μόγις","kjv_def":"hardly","strongs_def":" with difficulty"},
"G3085":{"derivation":"from G3084 (λύτρωσις);","lemma":"λύτρωσις","kjv_def":"+ redeemed, redemption","strongs_def":" a ransoming (figuratively)"},
"G1147":{"derivation":"probably from G1176 (δάκτυλος);","lemma":"δάκτυλος","kjv_def":"finger","strongs_def":" a finger"},
"G4963":{"derivation":"from G4962 (συστροφή);","lemma":"συστροφή","kjv_def":"+ band together, concourse","strongs_def":" a twisting together, i.e. (figuratively) a secret coalition, riotous crowd"},
"G5606":{"derivation":"perhaps from the alternate of G5342 (ὦμος);","lemma":"ὦμος","kjv_def":"shoulder","strongs_def":" the shoulder


0H68A68.07,68.07,0,0,0,0,68V307.5a68.07,68.07,0,0,0,68,68H307.5a68.07,68.07,0,0,0,68-68V68A68.07,68.07,0,0,0,307.5,0Zm44,307.5a44.05,44.05,0,0,1-44,44H68a44.05,44.05,0,0,1-44-44V68A44.05,44.05,0,0,1,68,24H307.5a44.05,44.05,0,0,1,44,44Z' style='fill:%23577aff'/%3E%3Cpath d='M285.42,175.75H199.75V90.08a12,12,0,1,0-24,0v85.67H90.08a12,12,0,1,0,0,24h85.67v85.67a12,12,0,0,0,24,0V199.75h85.67a12,12,0,0,0,0-24Z' style='fill:%23577aff'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
}
.dnnT_categories:hover,
.dnnT_categories.active {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 375.5 375.5'%3E%3Ctitle%3Ecategories%3C/title%3E%3Cg id='Layer_2' data-name='Layer 2'%3E%3Cg id='Layer_1-2' data-name='Layer 1'%3E%3Cpath d='M307.5,0H68A68.07,68.07,0,0,0,0,68V307.5a68.07,68.07,0,0,0,68,68H307.5a68.07,68.07,0,0,0,68-68V68A68.07,68.07,0,0,0,307.5,0Zm44,307.5a44.05,44.05,0,0,1-44,44H68a44.05,44.05,0,0,1-44-44V68A44.05,44.05,0,0,1,68,24H307.5a44.05,44.05,0,0,1,44,44Z' style='fill:%23577aff'/%3E%3Cpath d='M63.55,146.4l9.86,4.47c6.49,2.94,13,5.89,19.47,8.8q41.07,18.39,82.17,36.72c2.29,1,4.58,2,6.8,2.87,1,.4,2,.81,3,1.21a4.49,4.49,0,0,0,1.73.35,4.69,4.69,0,0,0,1.48-.25c.8-.28,1.55-.53,2.28-.76a44.48,44.48,0,0,0,4.69-1.72q17.69-8,35.34-15.93L260,168.79q18-8.13,36.12-16.19l13.78-6.16a10.63,10.63,0,0,0,6.74-10.08,10.82,10.82,0,0,0-6.85-9.93l-1-.45c-.94-.42-1.92-.86-2.94-1.27l-30.11-11.9-28.78-11


this->CTest->GetCurrentTag().empty())
    {
    cmCTestLog(this->CTest, ERROR_MESSAGE,
               "Current Tag empty, this may mean"
               " NightlyStartTime was not set correctly." << std::endl);
    cmSystemTools::SetFatalErrorOccured();
    return false;
    }
  if( !this->CTest->OpenOutputFile(this->CTest->GetCurrentTag(),
      ostr.str().c_str(), xofs, true) )
    {
    cmCTestLog(this->CTest, ERROR_MESSAGE,
      "Cannot create resulting XML file: " << ostr.str().c_str()
      << std::endl);
    return false;
    }
  this->CTest->AddSubmitFile(ostr.str().c_str());
  return true;
}

//----------------------------------------------------------------------
bool cmCTestGenericHandler::StartLogFile(const char* name,
  cmGeneratedFileStream& xofs)
{
  if ( !name )
    {
    cmCTestLog(this->CTest, ERROR_MESSAGE,
      "Cannot create log file without providing the name" << std::endl;);
    return false;
    }
  cmOStringStream ostr;
  ostr << "Last" << name;
  if ( this->SubmitIndex > 0 )
    {
    ostr << "_" << this->SubmitIndex;
    }
  if ( !this->CTest->GetCurrentTag().empty() )
    {
    ostr << "_" << this->CTest->GetCurrentTag();
    }
  ostr << ".log";
  if( !this->CTest->OpenOutputFile("Temporary", ostr.str().c_str(), xofs) )
    {
    cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot create log file: "
      << ostr.str().c_str() << std::endl);
    return false;
    }
  return true;
}

/*=========================================================================

  Program:   CMake - Cross-Platform Makefile Generator
  Module:    $RCSfile: cmCTestBuildAndTestHandler.cxx,v $
  Language:  C++
  Date:      $Date: 2012/03/29 17:21:10 $
  Version:   $Revision: 1.1.1.1 $

  Copyright (c) 2002 Kitware, Inc., Insight Consortium.  All rights reserved.
  See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.

     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notices for more information.

=========================================================================*/

#include "cmCTestBuildAndTestHandler.h"

#include "cmSystemTools.h"
#include "cmCTest.h"
#include "cmake.h"
#include "cmGlobalGenerator.h"
#include <cmsys/Process.h>
#include "cmCTestTestHandler.h"

//----------------------------------------------------------------------
cmCTestBuildAndTestHandler::cmCTestBuildAndTestHandler()
{
  this->BuildTwoConfig         = false;
  this->BuildNoClean           = false;
  this->BuildNoCMake           = false;
  this->Timeout = 0;
}

//----------------------------------------------------------------------
void cmCTestBuildAndTestHandler::Initialize()
{
  this->BuildTargets.erase(
    this->BuildTargets.begin(), this->BuildTargets.end());
  this->Superclass::Initialize();
}

//----------------------------------------------------------------------
const char* cmCTestBuildAndTestHandler::GetOutput()
{
  return this->Output.c_str();
}
//----------------------------------------------------------------------
int cmCTestBuildAndTestHandler::ProcessHandler()
{
  this->Output = "";
  std::string output;
  cmSystemTools::ResetErrorOccuredFlag();
  int retv = this->RunCMakeAndTest(&this->Output);
  cmSystemTools::ResetErr


  }
        }
      }
      .ps-scrollbar-y-rail {
        opacity: 0.6;
        &:hover {
          background-color: $light-color;
          opacity: 0.9;
          > .ps-scrollbar-y {
            background-color: $semi-dark;
          }
        }
      }
    }
  }
  &.ps-active-x > .ps-scrollbar-x-rail {
    @extend %scroll-xy;
  }
  &.ps-active-y > .ps-scrollbar-y-rail {
    @extend %scroll-xy;
  }
}
.always-visible.ps-container > {
  .ps-scrollbar-x-rail {
    opacity: 0.6;
  }
  .ps-scrollbar-y-rail {
    opacity: 0.6;
  }
}
.large-margin.ps-container > {
  .ps-scrollbar-x-rail {
    margin: 0 25%;
  }
  .ps-scrollbar-y-rail {
    margin: 100px 0;
  }
}
/*=============Scrollable css end=============*/
/* VARIABLES */
$baseAnimationDuration: 18s;
$size: 80px;
$svgSize: 70px;
@function pi() {
  @return 3.14159265359;
}
@function fact($number) {
  $value: 1;
  @if $number > 0 {
    @for $i from 1 through $number {
      $value: $value * $i;
    }
  }
  @return $value;
}
@function rad($angle) {
  $unit: unit($angle);
  $unitless: $angle / ($angle * 0 + 1);
  // If the angle has 'deg' as unit, convert to radians.
  @if $unit == deg {
    $unitless: $unitless / 180 * pi();
  }
  @return $unitless;
}
@function pow($number, $exp) {
  $value: 1;
  @if $exp > 0 {
    @for $i from 1 through $exp {
      $value: $value * $number;
    }
  }
  @else if $exp < 0 {
    @for $i from 1 through -$exp {
      $value: $value / $number;
    }
  }
  @return $value;
}
@function sin($angle) {
  $sin: 0;
  $angle: rad($angle);
  // Iterate a bunch of times.
  @for $i from 0 through 10 {
    $sin: $sin + pow(-1, $i) * pow($angle, (2 * $i + 1)) / fact(2 * $i + 1);
  }
  @return $sin;
}

//vars specific for curves
$animationStep: 2;
$increase: pi() / 100;

$backgroundColor: skyblue;
$fontColor: white;
$strokeColor: white;
$fillColor: #aedef4;

/* Applies a stroke to the icons. Can use percentage for responsive */
$strokeStrokeWidth: 0%;
$strokeStrokeColor: black;
$fillStrokeWidth: 0%;
$fillStrokeColor: black;

.climacon_component-stroke {
  fill: #dcdada;
  stroke-width: 1px;
  stroke: #717171;
}

.climacon_component-fill {
  fill: #71717140;
  stroke-width: 0;
  stroke: #ddd;
}

/* SVG GLOBAL */

svg.climacon {
  display: inline-block;
  width: $size;
  height: $size;
  shape-rendering: geometricPrecision;
}

g, path, circle, rect {
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  transform-origin: 50% 50%;
  animation-duration: $baseAnimationDuration;
  animation-direction: normal;
}

/* SUN */

.climacon_componentWrap-sun {
  animation-name: rotate;
}

.climacon_componentWrap_sunSpoke .climacon_component-stroke_sunSpoke {
  animation-name: scale;
  animation-direction:


[var9] -= var5;
						var10000 = var19.pathY; // L: 5641
						var10000[var9] -= var6;
					}

					var19.x -= var5 * 128; // L: 5643
					var19.y -= var6 * 128; // L: 5644
				}
			}

			for (var7 = 0; var7 < 2048; ++var7) { // L: 5647
				Player var22 = Client.players[var7]; // L: 5648
				if (var22 != null) { // L: 5649
					for (var9 = 0; var9 < 10; ++var9) { // L: 5650
						var10000 = var22.pathX; // L: 5651
						var10000[var9] -= var5;
						var10000 = var22.pathY; // L: 5652
						var10000[var9] -= var6;
					}

					var22.x -= var5 * 128; // L: 5654
					var22.y -= var6 * 128; // L: 5655
				}
			}

			byte var20 = 0; // L: 5658
			byte var8 = 104; // L: 5659
			byte var21 = 1; // L: 5660
			if (var5 < 0) { // L: 5661
				var20 = 103; // L: 5662
				var8 = -1; // L: 5663
				var21 = -1; // L: 5664
			}

			byte var10 = 0; // L: 5666
			byte var11 = 104; // L: 5667
			byte var12 = 1; // L: 5668
			if (var6 < 0) { // L: 5669
				var10 = 103; // L: 5670
				var11 = -1; // L: 5671
				var12 = -1; // L: 5672
			}

			int var14;
			for (int var13 = var20; var8 != var13; var13 += var21) { // L: 5674
				for (var14 = var10; var11 != var14; var14 += var12) { // L: 5675
					int var15 = var5 + var13; // L: 5676
					int var16 = var14 + var6; // L: 5677

					for (int var17 = 0; var17 < 4; ++var17) { // L: 5678
						if (var15 >= 0 && var16 >= 0 && var15 < 104 && var16 < 104) {
							Client.groundItems[var17][var13][var14] = Client.groundItems[var17][var15][var16]; // L: 5679
						} else {
							Client.groundItems[var17][var13][var14] = null; // L: 5680
						}
					}
				}
			}

			for (PendingSpawn var18 = (PendingSpawn)Client.pendingSpawns.last(); var18 != null; var18 = (PendingSpawn)Client.pendingSpawns.previous()) { // L: 5684 5685 5689
				var18.x -= var5; // L: 5686
				var18.y -= var6; // L: 5687
				if (var18.x < 0 || var18.y < 0 || var18.x >= 104 || var18.y >= 104) { // L: 5688
					var18.remove();
				}
			}

			if (Client.destinationX != 0) { // L: 5691
				Client.destinationX -= var5; // L: 5692
				Client.destinationY -= var6; // L: 5693
			}

			Client.soundEffectCount = 0; // L: 5695
			Client.isCameraLocked = false; // L: 5696
			class18.cameraX -= var5 << 7; // L: 5697
			class228.cameraZ -= var6 << 7; // L: 5698
			InterfaceParent.oculusOrbFocalPointX -= var5 << 7; // L: 5699
			class141.oculusOrbFocalPointY -= var6 << 7; // L: 5700
			Client.field725 = -1; // L: 5701
			Client.graphicsObjects.clear(); // L: 5702
			Client.projectiles.clear(); // L: 5703

			for (var14 = 0; var14 < 4; ++var14) { // L: 5704
				Client.collisionMaps[var14].clear();
			}

		}
	} // L: 5622 5705
}
import net.runelite.ma


r.Post("/{id}", func(w http.ResponseWriter, r *http.Request) {
					w.Write([]byte("POST groups"))
				})
			})
		})
	})

	tctx := NewRouteContext()

	tctx.Reset()
	if r.Find(tctx, "GET", "") == "/" {
		t.Fatal("expecting to find pattern / for route: GET")
	}

	tctx.Reset()
	if r.Find(tctx, "GET", "/nope") != "" {
		t.Fatal("not expecting to find pattern for route: GET /nope")
	}

	tctx.Reset()
	if r.Find(tctx, "GET", "/users/1") != "/users/{id}" {
		t.Fatal("expecting to find pattern /users/{id} for route: GET /users/1")
	}

	tctx.Reset()
	if r.Find(tctx, "HEAD", "/articles/10") != "" {
		t.Fatal("not expecting to find pattern for route: HEAD /articles/10")
	}

	tctx.Reset()
	if r.Find(tctx, "GET", "/yo/sup") != "/yo/sup" {
		t.Fatal("expecting to find pattern /yo/sup for route: GET /yo/sup")
	}

	tctx.Reset()
	if r.Find(tctx, "GET", "/api/groups/v2/") != "/api/groups/v2/" {
		t.Fatal("expecting to find pattern /api/groups/v2/ for route: GET /api/groups/v2/")
	}

	tctx.Reset()
	if r.Find(tctx, "POST", "/api/groups/v2/1") != "/api/groups/v2/{id}" {
		t.Fatal("expecting to find pattern /api/groups/v2/{id} for route: POST /api/groups/v2/1")
	}
}

func TestServerBaseContext(t *testing.T) {
	r := NewRouter()
	r.Get("/", func(w http.ResponseWriter, r *http.Request) {
		baseYes := r.Context().Value(ctxKey{"base"}).(string)
		if _, ok := r.Context().Value(http.ServerContextKey).(*http.Server); !ok {
			panic("missing server context")
		}
		if _, ok := r.Context().Value(http.LocalAddrContextKey).(net.Addr); !ok {
			panic("missing local addr context")
		}
		w.Write([]byte(baseYes))
	})

	// Setup http Server with a base context
	ctx := context.WithValue(context.Background(), ctxKey{"base"}, "yes")
	ts := httptest.NewUnstartedServer(r)
	ts.Config.BaseContext = func(_ net.Listener) context.Context {
		return ctx
	}
	ts.Start()

	defer ts.Close()

	if _, body := testRequest(t, ts, "GET", "/", nil); body != "yes" {
		t.Fatal(body)
	}
}

func testRequest(t *testing.T, ts *httptest.Server, method, path string, body io.Reader) (*http.Response, string) {
	req, err := http.NewRequest(method, ts.URL+path, body)
	if err != nil {
		t.Fatal(err)
		return nil, ""
	}

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		t.Fatal(err)
		return nil, ""
	}

	respBody, err := io.ReadAll(resp.Body)
	if err != nil {
		t.Fatal(err)
		return nil, ""
	}
	defer resp.Body.Close()

	return resp, string(respBody)
}

func testHandler(t *testing.T, h http.Handler, method, path string, body io.Reader) (*http.Response, string) {
	r, _ := http.New


from django.urls import path
from .views import (
    register_api, login_api, logout_api,
    admin_login_api, admin_refresh_token,
    predict_image, test_model_status
)

app_name = 'mangosense'

urlpatterns = [
    # Mobile app authentication endpoints
    path('register/', register_api, name='register_api'),
    path('login/', login_api, name='login_api'),
    path('logout/', logout_api, name='logout_api'),

    # Admin authentication endpoints for Angular
    path('auth/login/', admin_login_api, name='admin_login'),
    path('auth/refresh/', admin_refresh_token, name='admin_refresh'),

    # ML prediction endpoints
    path('predict/', predict_image, name='predict_image'),
    path('test-model/', test_model_status, name='test_model_status'),
]


oes more exotic layout, e.g. tiling.
  // If running on Wayland assume the header bar will work (may need changing
  // if future cases occur).
  gboolean use_header_bar = TRUE;
#ifdef GDK_WINDOWING_X11
  GdkScreen* screen = gtk_window_get_screen(window);
  if (GDK_IS_X11_SCREEN(screen)) {
    const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen);
    if (g_strcmp0(wm_name, "GNOME Shell") != 0) {
      use_header_bar = FALSE;
    }
  }
#endif
  if (use_header_bar) {
    GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
    gtk_widget_show(GTK_WIDGET(header_bar));
    gtk_header_bar_set_title(header_bar, "Youtube Downloader");
    gtk_header_bar_set_show_close_button(header_bar, TRUE);
    gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
  }
  else {
    gtk_window_set_title(window, "Youtube Downloader");
  }

  gtk_window_set_default_size(window, 1280, 720);
  gtk_widget_show(GTK_WIDGET(window));

  g_autoptr(FlDartProject) project = fl_dart_project_new();
  fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);

  FlView* view = fl_view_new(project);
  gtk_widget_show(GTK_WIDGET(view));
  gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));

  fl_register_plugins(FL_PLUGIN_REGISTRY(view));

  gtk_widget_grab_focus(GTK_WIDGET(view));
}

// Implements GApplication::local_command_line.
static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) {
  MyApplication* self = MY_APPLICATION(application);
  // Strip out the first argument as it is the binary name.
  self->dart_entrypoint_arguments = g_strdupv(*arguments + 1);

  g_autoptr(GError) error = nullptr;
  if (!g_application_register(application, nullptr, &error)) {
     g_warning("Failed to register: %s", error->message);
     *exit_status = 1;
     return TRUE;
  }

  g_application_activate(application);
  *exit_status = 0;

  return TRUE;
}

// Implements GObject::dispose.
static void my_application_dispose(GObject* object) {
  MyApplication* self = MY_APPLICATION(object);
  g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev);
  G_OBJECT_CLASS(my_application_parent_class)->dispose(object);
}

static void my_application_class_init(MyApplicationClass* klass) {
  G_APPLICATION_CLASS(klass)->activate = my_application_activate;
  G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line;
  G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
}

static void my_application_init(MyApplication* self) {}

MyApplication* my_application_new() {
  return MY_APPLICATION(g_object_new(my_application_get_type(),
                                     "application-id", APPLICATION_ID,
                                     "flags", G_APPLICATION_NON_UNIQUE,
                                     nullptr));
}
/**
 * @file main.cpp
 * @author Piotr Zapart (www.hexefx.com)
 * @brief 	demo project for the CYD 2.8" board


 new Color(+cols[1], +cols[2], +cols[3]);
    }
  }
  let currentCol = "";
  for (let i = 0; i < objArr.length; i++) {
    const ln = objArr[i].split(" ");
    if (ln[0] === "usemtl") currentCol = ln[1];
    if (ln[0] === "v")
      vertices.push(new Vertex(+ln[1] * scale, +ln[2] * scale, +ln[3] * scale));
    if (ln[0] === "f") {
      const A = +ln[1].split("/")[0] - 1;
      const B = +ln[2].split("/")[0] - 1;
      const C = +ln[3].split("/")[0] - 1;
      faces.push(new Face(A, B, C, Colors[currentCol]));
    }
  }
  console.log(serialize({ vertices, faces }, 2, { x, y, z }));
};

const serialize = (
  mesh: MeshInfo,
  precision: number,
  { x, y, z } = { x: 0, y: 0, z: 0 }
): string => {
  const v = [];
  const f = [];
  const c = [];
  const colorsArray: string[] = [];
  for (let i = 0; i < mesh.vertices.length; i++) {
    const m = new DOMMatrix();
    m.rotateSelf(x, y, z);
    const ver = mesh.vertices[i];
    let vert = new DOMPoint(ver.x, ver.y, ver.z);
    vert = vert.matrixTransform(m);
    v.push(
      +vert.x.toFixed(precision),
      +vert.y.toFixed(precision),
      +vert.z.toFixed(precision)
    );
  }
  for (let i = 0; i < mesh.faces.length; i++) {
    const face = mesh.faces[i];
    const faceColor =
      "r" + face.color.r + "g" + face.color.g + "b" + face.color.b;
    if (!colorsArray.includes(faceColor)) {
      colorsArray.push(faceColor);
      c.push(face.color.r, face.color.g, face.color.b);
    }
    const colorIndex = colorsArray.indexOf(faceColor);
    f.push(face.vAi, face.vBi, face.vCi, colorIndex);
  }
  return JSON.stringify({ v, f, c });
};
import { IReactPluginsAction } from "./actions";
import * as actionTypes from "./actions-types";
import { Plugins, IReactPluginsContext, Plugin } from ".";

export type IReactPluginsState = Pick<IReactPluginsContext, "plugins">;

export const initialState: IReactPluginsState = {
  plugins: {}
};

const reactPluginsReducer = (state: IReactPluginsState = initialState, action: IReactPluginsAction): IReactPluginsState => {
  switch (action.type) {
    case actionTypes.SUBSCRIBE_PLUGIN: {
      const newPlugin: Record<string, Plugin> = { [action.plugin.id]: action.plugin };
      return {
        ...state,
        plugins: { ...state.plugins, ...newPlugin }
      };
    }
    case actionTypes.UNSUBSCRIBE_PLUGIN: {
      const plugins: Plugins = { ...state.plugins };
      delete plugins[action.id];
      return {
        ...state,
        plugins
      };
    }
    case actionTypes.SET_PLUGINS: {
      const plugins: Plugins = { ...action.plugins };
      return {
        ...state,
        plugins
      };
    }
    default:
      return state;
  }
};

export default reactPluginsReducer;
//! Be Care full to use this
let whatever: any = 'aafnrgnar noooooooooooooooo!!';
whatever = true;

//! void ====> use: that function not return anything
let sing = (): void => {
  console.log('lalalala');

}

//! never ==> use:  not return anything : throw error
let error = (): never => {
  throw Error('oopes');
}
/*
 * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>
 *
 * 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 cop


n cancellationToken)
        {
            var serverCommandType = serverCommand.GetType();
            if (!_serverCommandHandlerInfo.TryGetValue(serverCommandType, out var commandHandlerInfo))
            {
                var handlerType = typeof(IServerCommandHandler<>).MakeGenericType(serverCommandType);
                var executeAsyncMethod = handlerType.GetRuntimeMethod("ExecuteAsync", new[] { serverCommandType, typeof(CancellationToken) });
                var handler = _ftpConnectionAccessor.FtpConnection.ConnectionServices.GetRequiredService(handlerType);

                commandHandlerInfo = new CommandHandlerInfo(handler, executeAsyncMethod!);
                _serverCommandHandlerInfo.Add(serverCommandType, commandHandlerInfo);
            }

            return (Task)commandHandlerInfo.ExecuteMethodInfo.Invoke(
                commandHandlerInfo.CommandHandler,
                new object[] { serverCommand, cancellationToken })!;
        }

        private class CommandHandlerInfo
        {
            public CommandHandlerInfo(object commandHandler, MethodInfo executeMethodInfo)
            {
                CommandHandler = commandHandler;
                ExecuteMethodInfo = executeMethodInfo;
            }
            public object CommandHandler { get; }
            public MethodInfo ExecuteMethodInfo { get; }
        }
    }
}


cal coordinate space.
void nvgTextBoxBounds(NVGcontext* ctx, float x, float y, float breakRowWidth, const char* string, const char* end, float* bounds);

// Calculates the glyph x positions of the specified text. If end is specified only the sub-string will be used.
// Measured values are returned in local coordinate space.
int nvgTextGlyphPositions(NVGcontext* ctx, float x, float y, const char* string, const char* end, NVGglyphPosition* positions, int maxPositions);

// Returns the vertical metrics based on the current text style.
// Measured values are returned in local coordinate space.
void nvgTextMetrics(NVGcontext* ctx, float* ascender, float* descender, float* lineh);

// Breaks the specified text into lines. If end is specified only the sub-string will be used.
// White space is stripped at the beginning of the rows, the text is split at word boundaries or when new-line characters are encountered.
// Words longer than the max width are slit at nearest character (i.e. no hyphenation).
int nvgTextBreakLines(NVGcontext* ctx, const char* string, const char* end, float breakRowWidth, NVGtextRow* rows, int maxRows);

//
// Internal Render API
//
enum NVGtexture {
	NVG_TEXTURE_ALPHA = 0x01,
	NVG_TEXTURE_RGBA = 0x02,
};

struct NVGscissor {
	float xform[6];
	float extent[2];
};
typedef struct NVGscissor NVGscissor;

struct NVGvertex {
	float x,y,u,v;
};
typedef struct NVGvertex NVGvertex;

struct NVGpath {
	int first;
	int count;
	unsigned char closed;
	int nbevel;
	NVGvertex* fill;
	int nfill;
	NVGvertex* stroke;
	int nstroke;
	int winding;
	int convex;
};
typedef struct NVGpath NVGpath;

struct NVGparams {
	void* userPtr;
	int edgeAntiAlias;
	int (*renderCreate)(void* uptr);
	int (*renderCreateTexture)(void* uptr, int type, int w, int h, int imageFlags, const unsigned char* data);
	int (*renderDeleteTexture)(void* uptr, int image);
	int (*renderUpdateTexture)(void* uptr, int image, int x, int y, int w, int h, const unsigned char* data);
	int (*renderGetTextureSize)(void* uptr, int image, int* w, int* h);
	void (*renderViewport)(void* uptr, int width, int height);
	void (*renderCancel)(void* uptr);
	void (*renderFlush)(void* uptr);
	void (*renderFill)(void* uptr, NVGpaint* paint, NVGscissor* scissor, float fringe, const float* bounds, const NVGpath* paths, int npaths);
	void (*renderStroke)(void* uptr, NVGpaint* paint, NVGscissor* scissor, float fringe, float strokeWidth, const NVGpath* paths, int npaths);
	void (*renderTriangles)(void* uptr, NVGpaint* paint, NVGscissor* scissor, const NVGvertex* verts, int nverts);
	void (*renderDelete)(void* uptr);
};
typedef struct NVGparams NVGparams;

// Constructor and destructor, called by the render back-end.
NVGcontext* nvgCreateInternal(NVGparams* params);
void nvgDeleteInternal(NVGcontext* ctx);

NVGparams* nvgInternalParams(NVGcontext* ctx);

// Debug function to dump cached path data.
void nvgDebugDumpPathCache(NVGcontext* ctx);

#ifdef _MSC_VER
#pragma warning(pop)
#endif

#define NVG_NOTUSED(v) for (;;) { (void)(1 ? (void)0 : ( (void)(v) ) ); break; }

#ifdef __cplusplus
}
#endif

#endif // NANOVG_H


Isa"] = "Gfni.V512", ["LoadIsa"] = "Avx512F", ["Method"] = "GaloisFieldAffineTransformInverse", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Byte", ["Op2VectorType"] = "Vector512", ["Op2BaseType"] = "Byte", ["Imm"] = "0",   ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["NextValueOp2"] = "NextMatrixByte(i)",               ["ValidateFirstResult"] = "result[0] != Invert(left[0]) >>> 1",                                                      ["ValidateRemainingResults"] = "result[i] != Invert(left[i]) >>> 1"}),
    ("GfniAffineTest.template",   new Dictionary<string, string> { ["Isa"] = "Gfni.V512", ["LoadIsa"] = "Avx512F", ["Method"] = "GaloisFieldAffineTransformInverse", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Byte", ["Op2VectorType"] = "Vector512", ["Op2BaseType"] = "Byte", ["Imm"] = "1",   ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["NextValueOp2"] = "NextMatrixByte(i)",               ["ValidateFirstResult"] = "result[0] != (Invert(left[0]) >>> 1 ^ 1)",                                                ["ValidateRemainingResults"] = "result[i] != (Invert(left[i]) >>> 1 ^ 1)"}),
    ("GfniAffineTest.template",   new Dictionary<string, string> { ["Isa"] = "Gfni.V512", ["LoadIsa"] = "Avx512F", ["Method"] = "GaloisFieldAffineTransformInverse", ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Byte", ["Op2VectorType"] = "Vector512", ["Op2BaseType"] = "Byte", ["Imm"] = "170", ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != AffineTransform(Invert(left[0]), new ReadOnlySpan<byte>(right, 0, 8), 170)", ["ValidateRemainingResults"] = "result[i] != AffineTransform(Invert(left[i]), new ReadOnlySpan<byte>(right, i & ~7, 8), 170)"}),
    ("GfniMultiplyTest.template", new Dictionary<string, string> { ["Isa"] = "Gfni.V512", ["LoadIsa"] = "Avx512F", ["Method"] = "GaloisFieldMultiply",               ["RetVectorType"] = "Vector512", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector512", ["Op1BaseType"] = "Byte", ["Op2VectorType"] = "Vector512", ["Op2BaseType"] = "Byte",                  ["LargestVectorSize"] = "64", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["NextValueOp2"] = "TestLibrary.Generator.GetByte()", ["ValidateFirstResult"] = "result[0] != GaloisFieldMultiply(left[0], right[0])",                                     ["ValidateRemainingResults"] = "result[i] != GaloisFieldMultiply(left[i], right[i])"}),
};

Dictionary<string,string> extraHelperFiles = new Dictionary<string, string>
{
    ["SseVerify"] = @"..\..\X86\Shared\SseVerify.cs",
    ["Avx512Verify"] = @"..\..\


",\n    \"SENSING_USERID\": \"id pengguna\",\n    \"SOUND_PLAY\": \"mulai suara %1\",\n    \"SOUND_PLAYUNTILDONE\": \"mainkan suara %1 sampai selesai\",\n    \"SOUND_STOPALLSOUNDS\": \"hentikan semua suara\",\n    \"SOUND_SETEFFECTO\": \"atur efek %1 ke %2\",\n    \"SOUND_CHANGEEFFECTBY\": \"ubah efek %1 sebesar %2\",\n    \"SOUND_CLEAREFFECTS\": \"hapus semua efek suara\",\n    \"SOUND_EFFECTS_PITCH\": \"nada\",\n    \"SOUND_EFFECTS_PAN\": \"pan kiri/kanan\",\n    \"SOUND_CHANGEVOLUMEBY\": \"ubah volume sebesar %1\",\n    \"SOUND_SETVOLUMETO\": \"atur volume ke %1%\",\n    \"SOUND_VOLUME\": \"volume\",\n    \"SOUND_RECORD\": \"rekam...\",\n    \"CATEGORY_MOTION\": \"Gerakan\",\n    \"CATEGORY_LOOKS\": \"Tampilan\",\n    \"CATEGORY_SOUND\": \"Suara\",\n    \"CATEGORY_EVENTS\": \"Kejadian\",\n    \"CATEGORY_CONTROL\": \"Kontrol\",\n    \"CATEGORY_SENSING\": \"Sensor\",\n    \"CATEGORY_OPERATORS\": \"Operator\",\n    \"CATEGORY_VARIABLES\": \"Variabel\",\n    \"CATEGORY_MYBLOCKS\": \"Balok Saya\",\n    \"DUPLICATE\": \"Gandakan\",\n    \"DELETE\": \"Hapus\",\n    \"ADD_COMMENT\": \"Tambahkan Komentar\",\n    \"REMOVE_COMMENT\": \"Hapus Komentar\",\n    \"DELETE_BLOCK\": \"Hapus Balok\",\n    \"DELETE_X_BLOCKS\": \"Hapus %1 Balok\",\n    \"DELETE_ALL_BLOCKS\": \"Hapus semua %1 balok?\",\n    \"CLEAN_UP\": \"Bersihkan Balok-Balok\",\n    \"HELP\": \"Bantuan\",\n    \"UNDO\": \"Batalkan\",\n    \"REDO\": \"Ulangi\",\n    \"EDIT_PROCEDURE\": \"Sunting\",\n    \"SHOW_PROCEDURE_DEFINITION\": \"Pergi ke pengartian\",\n    \"WORKSPACE_COMMENT_DEFAULT_TEXT\": \"Katakan sesuatu...\",\n    \"COLOUR_HUE_LABEL\": \"Warna\",\n    \"COLOUR_SATURATION_LABEL\": \"Saturasi\",\n    \"COLOUR_BRIGHTNESS_LABEL\": \"Keterangan\",\n    \"CHANGE_VALUE_TITLE\": \"Ubah nilai:\",\n    \"RENAME_VARIABLE\": \"Namakan ulang variabel\",\n    \"RENAME_VARIABLE_TITLE\": \"Namakan ulang semua variabel \\\"%1\\\" ke:\",\n    \"RENAME_VARIABLE_MODAL_TITLE\": \"Namakan Ulang Variabel\",\n    \"NEW_VARIABLE\": \"Buat sebuah Variabel\",\n    \"NEW_VARIABLE_TITLE\": \"Nama variabel baru:\",\n    \"VARIABLE_MODAL_TITLE\": \"Variabel Baru\",\n    \"VARIABLE_ALREADY_EXISTS\": \"Sebuah variabel bernama \\\"%1\\\" sudah ada.\",\n    \"VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE\": \"Sebuah variabel bernama \\\"%1\\\" sudah ada untuk variabel lain berjenis \\\"%2\\\".\",\n    \"DELETE_VARI


erties will be considered optional if <paramref name = "isRequired" /> is<c>false</c>, that is component will resolve successfully if they can not be satisfied.
		///   If the argument is <c>true</c> and the dependencies can not be resolved the component will fail to resolve.
		/// </remarks>
		public ComponentRegistration<TService> Properties(Func<ComponentModel, PropertyInfo, bool> filter, bool isRequired)
		{
			return AddDescriptor(new DelegatingModelDescriptor(builder: (k, c) =>
			{
				var filters = StandardPropertyFilters.GetPropertyFilters(c, createIfMissing: true);
				filters.Add(StandardPropertyFilters.FromFunction(filter, isRequired: isRequired));
			}));
		}

		/// <summary>
		///   Filters properties on the implementation that will be considered 'settable' by the container and specifies if matched properties are reqired.
		/// </summary>
		/// <param name = "filter">Rules for deciding whether a property is settable or not and if container will ignore the property.</param>
		/// <returns></returns>
		public ComponentRegistration<TService> Properties(PropertyFilter filter)
		{
			return AddDescriptor(new DelegatingModelDescriptor(builder: (k, c) =>
			{
				var filters = StandardPropertyFilters.GetPropertyFilters(c, createIfMissing: true);
				filters.Add(StandardPropertyFilters.Create(filter));
			}));
		}
	}
}


t_id=quota_project_id),
    )

    for checker in checkers:
        credentials, project_id = checker()
        if credentials is not None:
            credentials = with_scopes_if_required(
                credentials, scopes, default_scopes=default_scopes
            )

            effective_project_id = explicit_project_id or project_id

            # For external account credentials, scopes are required to determine
            # the project ID. Try to get the project ID again if not yet
            # determined.
            if not effective_project_id and callable(
                getattr(credentials, "get_project_id", None)
            ):
                if request is None:
                    import google.auth.transport.requests

                    request = google.auth.transport.requests.Request()
                effective_project_id = credentials.get_project_id(request=request)

            if quota_project_id and isinstance(
                credentials, CredentialsWithQuotaProject
            ):
                credentials = credentials.with_quota_project(quota_project_id)

            if not effective_project_id:
                _LOGGER.warning(
                    "No project ID could be determined. Consider running "
                    "`gcloud config set project` or setting the %s "
                    "environment variable",
                    environment_vars.PROJECT,
                )
            return credentials, effective_project_id

    raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS)


)
    {
        switch (nCmdID)
        {
        case OLECMDID_REFRESH:
            if (_pns && (GetFocus() == _hwnd))
                _pns->Refresh();
            return S_OK;
        }

    }
    else if (pguidCmdGroup && IsEqualGUID(CGID_Explorer, *pguidCmdGroup))
    {
        HRESULT hr = S_OK;

        switch (nCmdID)
        {
        case SBCMDID_SELECTHISTPIDL:
            if (IsEqualCLSID(*_poi->pclsid, CLSID_HistBand) && _hwnd && _fVisible)
            {
                // If you're not visible do nothing.  On becoming visible
                // use Exec to proxy to get last pidlSelect that you would
                // have shown, had you been visible
                LPCITEMIDLIST pidlSelect = VariantToConstIDList(pvarargIn);
                if (pidlSelect)
                {
                    _pns->SetSelectedItem(pidlSelect, TRUE, FALSE, 0);
                }
            }
            break;

        case SBCMDID_INITFILECTXMENU:
            if (_hwnd && _fVisible)
            {
                if (pvarargOut)
                {
                    VariantClearLazy(pvarargOut);

                    HRESULT hres = _QueryContextMenuSelection((IContextMenu **)&(pvarargOut->punkVal));
                    if (SUCCEEDED(hres))
                    {
                        pvarargOut->vt = VT_UNKNOWN;
                    }
                }
            }
            break;

        case SBCMDID_FILERENAME:
        {
            IShellFavoritesNameSpace *psfns;

            hr = _pns->QueryInterface(IID_IShellFavoritesNameSpace, (void **)&psfns);
            if (SUCCEEDED(hr))
            {
                hr = psfns->InvokeContextMenuCommand(L"rename");
                psfns->Release();
            }
            break;
        }

        case SBCMDID_FILEDELETE:
            hr = _InvokeCommandOnItem(TEXT("delete"));
            break;

        case SBCMDID_FILEPROPERTIES:
            hr = _InvokeCommandOnItem(TEXT("properties"));
            break;

        default:
            hr = E_FAIL;
            break;
        }
        if (SUCCEEDED(hr))
            return hr;
    }

    return CToolBand::Exec(pguidCmdGroup, nCmdID, nCmdexecopt, pvarargIn, pvarargOut);
}

HRESULT CNSCBand::_QueryContextMenuSelection(IContextMenu ** ppcm)
{
    HRESULT hr = E_FAIL;
    LPITEMIDLIST pidlSelected;

    *ppcm = NULL;
    hr = _pns->GetSelectedItem(&pidlSelected, 0);
    if (SUCCEEDED(hr))
    {
        LPCITEMIDLIST pidlRelative;
        IShellFolder * psf;

        hr = IEBindToParentFolder(pidlSelected, &psf, &pidlRelative);
        if (SUCCEEDED(hr))
        {
            hr = psf->GetUIObjectOf(NULL, 1, &pidlRelative, IID_IContextMenu, NULL, (void **)ppcm);
        }
        ILFree(pidlSelected);
    }

    return hr;
}

HRESULT CNSCBand::Select(LPCITEMIDLIST pidl)
{
    _pns->SetSelectedItem(pidl, TRUE, FALSE, 0);
    return S_OK;
}

// *** IInputObject Methods ***
HRESULT CNSCBand::TranslateAcceleratorIO(LPMSG lpMsg)
{
    HWND hwndFocus = GetFocus();
    if (_pns->InLabelEdit())
        return EditBox_TranslateAcceleratorST(lpMsg);
    else if ( lpMsg && lpMsg->


										_split_log("New shards:", _shards);
										_split_log("New indexes:", _parts);
									} else {
										// add new shards config and save
										tree = new Q.Tree(tree);
										tree.merge({Q: {configFiles: [newShardsFile]}});
										Q.Config.setOnServer(
											'Q/config/bootstrap.json',
											tree.getAll(),
											function(err) {
												if (err) {
													_split_log("Config file write error (Q/config/bootstrap.json).", err.message);
													_split_log("NOTE: platform is not writing to shard '"+_shard+"'!!!");
													_split_log("Update the config file manually and then delete file '%s'", Q.Config.get(["Q", "internal", "sharding", "upcoming"], 'Db/config/upcoming.json'));
													_split_log("New content for 'Q/config/bootstrap.json':", tree.getAll());
												} else {
													// config was written. Now let's update platform
													_split_log("Finished split process for shard '%s' (%s) in %s", _shard, _part, Q.timeEnd("Db/Shards/split"));
													_reset_split();
												}
											}, true); // setConfig 'Q/config/bootstrap.json'
									}
								}, true); // clearConfig 'Q/config/bootstrap.json'
						}
					}, true); // setConfig newShardsFile
				} // _writeShardsConfig
				break;
			case 'log':
				res.send({data: true}); // in case logging use queryInternal
				if (_logging) {
					_log[_logging].write(
						JSON.stringify({
							shards: parsed.shards,
							sql: parsed.sql,
							timestamp: (new Date()).getTime()
						})+'\n',
						'utf-8');
				}
				break;
			case 'reset':
				if (!splitting) {
					res.send({data: false});
					break;
				}
			case 'writeLog':
				res.send({data: true});
				function _block_error(err, config) {
						_split_log("Error updating config.", err.message);
						_split_log("Failed block shard '"+_shard+"'. Log file is been written.");
						_split_log("Check and fix error, verify if file '"+config+"' exists and contains split information");
						_split_log("then run 'split.php --log-process' to continue the process");
				}
				if (_logging >= Q.Config.get(['Q', 'internal', 'sharding', 'iterations'], 1)) {
					// lock table, write last log and switch to new config
					// set up Db_Exception_Blocked response while writing log
					Q.Config.setOnServer(
						Q.Config.get('Q', 'internal', 'sharding', 'upcoming', 'Db/config/upcoming.json'),
						(new Q.Tree()).set(['Db', 'upcoming', _connection, 'block'], true),
						function (err) {
							if (err) _block_error(err, config);
							else {
								// now we are ready to write last log
								// need to wait for php timeout
								_setTimeout("block writing to shard '"+_shard+"'", function(phase) {
									phase = _logging;
									_dump_log(phase, function () {
										Utils.queryInternal('Db/Shards', {'Q/method': 'switch'}, function(err) {
											if (err) {
												_split_log("Failed to change config files.", err.message);
												_split_log("Check and fix error, then run 'split.php --reconfigure' to continue the process");
											}
										}, _logServer);
									});


.30,36.10|N|To Korven the Prime.|

T Sap Tapping|QID|31233|M|54.30,36.10|N|To Korven the Prime.|

T The Fight Against Fear|QID|31270|M|54.30,36.10|N|To Korven the Prime.|

T The Scale-Lord|QID|31269|M|54.30,36.10|N|To Korven the Prime.|

N End of Guide|N|You've reached the end of the guide! This guide will automatically reset when the dailies reset, or you can reset it manually by right-clicking this window's titlebar or frame.|

]]

end)


 features)
        {
            Features = features;
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="SimpleFeatureDependency"/> class.
        /// </summary>
        /// <param name="requiresAll">
        /// If this is set to true, all of the <see cref="Features"/> must be enabled.
        /// If it's false, at least one of the <see cref="Features"/> must be enabled.
        /// </param>
        /// <param name="features">The features.</param>
        public SimpleFeatureDependency(bool requiresAll, params string[] features)
            : this(features)
        {
            RequiresAll = requiresAll;
        }

        /// <inheritdoc/>
        public Task<bool> IsSatisfiedAsync(IFeatureDependencyContext context)
        {
            return context.TenantId.HasValue
                ? context.FeatureChecker.IsEnabledAsync(context.TenantId.Value, RequiresAll, Features)
                : context.FeatureChecker.IsEnabledAsync(RequiresAll, Features);
        }
    }
}


]
	.word 0xf02c61b9  ! 5927: STB_I	stb	%r24, [%r17 + 0x01b9]
	.word 0xbf7da401  ! 5928: MOVR_I	movre	%r22, 0x1, %r31
	setx	0x128, %g1, %o0
	ta	T_SEND_THRD_INTR
	.word 0x91952139  ! 5933: WRPR_PIL_I	wrpr	%r20, 0x0139, %pil
	.word 0xb83ce073  ! 5936: XNOR_I	xnor 	%r19, 0x0073, %r28
	.word 0xf82c8000  ! 5937: STB_R	stb	%r28, [%r18 + %r0]
	.word 0xb09de165  ! 5939: XORcc_I	xorcc 	%r23, 0x0165, %r24
	.word 0xfe24e050  ! 5944: STW_I	stw	%r31, [%r19 + 0x0050]
	.word 0xbb50c000  ! 5950: RDPR_TT	rdpr	%tt, %r29
	.word 0x8d9561e1  ! 5951: WRPR_PSTATE_I	wrpr	%r21, 0x01e1, %pstate
	.word 0xf8340000  ! 5954: STH_R	sth	%r28, [%r16 + %r0]
	setx	0x326, %g1, %o0
	ta	T_SEND_THRD_INTR
	.word 0x8794a0f9  ! 5956: WRPR_TT_I	wrpr	%r18, 0x00f9, %tt
	.word 0xf42de157  ! 5957: STB_I	stb	%r26, [%r23 + 0x0157]
	.word 0xbb354000  ! 5959: SRL_R	srl 	%r21, %r0, %r29
	.word 0xf93c4000  ! 5961: STDF_R	std	%f28, [%r0, %r17]
	.word 0x8394211b  ! 5962: WRPR_TNPC_I	wrpr	%r16, 0x011b, %tnpc
	.word 0xf02d4000  ! 5964: STB_R	stb	%r24, [%r21 + %r0]
	.word 0x899421b6  ! 5967: WRPR_TICK_I	wrpr	%r16, 0x01b6, %tick
	.word 0x8594e09f  ! 5972: WRPR_TSTATE_I	wrpr	%r19, 0x009f, %tstate
	.word 0xfc25604f  ! 5973: STW_I	stw	%r30, [%r21 + 0x004f]
	.word 0xf6342066  ! 5974: STH_I	sth	%r27, [%r16 + 0x0066]
	.word 0xf424e008  ! 5975: STW_I	stw	%r26, [%r19 + 0x0008]
	.word 0xb5508000  ! 5978: RDPR_TSTATE	rdpr	%tstate, %r26
	.word 0xf73d4000  ! 5979: STDF_R	std	%f27, [%r0, %r21]
	.word 0xfe3c61c8  ! 5981: STD_I	std	%r31, [%r17 + 0x01c8]
	.word 0xb8b48000  ! 5982: ORNcc_R	orncc 	%r18, %r0, %r28
	.word 0xb435c000  ! 5983: SUBC_R	orn 	%r23, %r0, %r26
	.word 0xfc3dc000  ! 5984:


and Context are required fields.");
          return;
        }
        const data = { id, robot_name, context };
        await fetch(`${baseUrl}/robots/${id}`, {
          method: "PUT",
          headers: { "Content-Type": "application/json" },
          body: JSON.stringify(data),
        });
        loadRobots();
        this.reset();
      };
      // Create robot if not exists
      document
        .getElementById("robot-select")
        .addEventListener("change", async function () {
          const id = this.value;
          if (!id) return;
          const res = await fetch(`${baseUrl}/robots/${id}`);
          if (res.status === 404) {
            // Create new
            const robot_name = document.getElementById("robot-name").value;
            const context = document.getElementById("robot-context").value;
            if (!robot_name.trim() || !context.trim()) {
              // Don't create if required fields are missing
              return;
            }
            await fetch(`${baseUrl}/robots`, {
              method: "POST",
              headers: { "Content-Type": "application/json" },
              body: JSON.stringify({ id, robot_name, context }),
            });
            loadRobots();
          }
        });
      loadRobots();
    </script>

Welcome to the 2025 Hugo Voter Packet!

The material in the Packet is provided only for the use of members of Seattle Worldcon 2025. Please don’t distribute Packet materials to others.

You can download Packet materials in the following ways:

Download the entire Packet at once.

Download the entire Packet except for the Best Series category, which is 21GB on its own.

Download the materials for a specific Hugo Award category.

The download for each category includes a table of contents PDF with more information about the materials in that category. Almost every category includes material from all the finalists in the category, except for the following: Best Dramatic Presentation, Long Form (3 finalists); Best Dramatic Presentation, Short Form (5 finalists); Best Game (5 finalists); and Lodestar Award (5 finalists).

If you have questions about the Packet or need assistance, please contact us at hugo-help@seattlein2025.org.

<!DOCTYPE html>

    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Chat with AI Agent</title>


R4CutsceneTrigger"": {
    ""HoruR4"": {
      ""casual"": [ [ ""Free"" ] ]
    },
    ""HoruR4DrainedExp"": {
      ""casual"": [
        [ ""DoubleJump"", ""Glide"" ],
        [ ""ChargeJump"", ""Climb"" ]
      ],
      ""standard"": [
        [ ""Bash"", ""Grenade"", ""Climb"" ],
        [ ""Glide"", ""AirDash"" ],
        [ ""DoubleJump"", ""AirDash"" ]
      ],
      ""expert"": [
        [ ""Bash"", ""Grenade"" ],
        [ ""Glide"", ""HealthCell:6"" ],
        [ ""DoubleJump"", ""HealthCell:6"" ],
        [ ""AirDash"", ""HealthCell:6"" ],
        [ ""ChargeDash"", ""EnergyCell:1"" ],
        [ ""DoubleBash"" ]
      ],
      ""master"": [
        [ ""HealthCell:11"" ],
        [ ""HealthCell:9"", ""UltraDefense"" ],
        [ ""TripleJump"" ]
      ]
    },
    ""HoruR4LaserExp"": {
      ""casual"": [
        [ ""Bash"", ""Grenade"" ],
        [ ""ChargeJump"" ],
        [ ""WallJump"", ""DoubleJump"" ],
        [ ""Climb"", ""DoubleJump"" ]
      ],
      ""expert"": [
        [ ""DoubleJump"" ],
        [ ""DoubleBash"" ]
      ]
    }
  },
  ""HoruEscapeOuterDoor"": {
  },
  ""HoruEscapeInnerDoor"": {
  },
  ""ValleyEntry"": {
    ""ValleyEntryAbilityCell"": {
      ""casual"": [ [ ""Free"" ] ]
    }
  },
  ""ValleyEntryTree"": {
    ""ValleyEntryTreeExp"": {
      ""casual"": [ [ ""Free"" ] ]
    },
    ""ValleyEntryGrenadeLongSwim"": {
      ""casual"": [ [ ""Grenade"", ""CleanWater"" ] ],
      ""master"": [
        [ ""Grenade"", ""HealthCell:14"" ],
        [ ""Grenade"", ""Bash"", ""HealthCell:13"" ],
        [ ""Grenade"", ""HealthCell:7"", ""UltraDefense"" ]
      ]
    }
  },
  ""ValleyEntryTreePlantAccess"": {
    ""ValleyEntryTreePlant"": {
      ""casual"": [
        [ ""ChargeFlame"" ],
        [ ""Grenade"" ]
      ],
      ""expert"": [ [ ""ChargeDash"" ] ]
    }
  },
  ""ValleyPostStompDoor"": {
    ""ValleyRightSwimExp"": {
      ""casual"": [ [ ""CleanWater"" ] ],
      ""expert"": [ [ ""HealthCell:4"" ] ]
    }
  },
  ""ValleyTeleporter"": {
  },
  ""ValleyRight"": {
  },
  ""ValleyStomplessApproach"": {
    ""ValleyRightBirdStompCell"": {
      ""casual"": [ [ ""ChargeJump"", ""Climb"" ] ],
      ""standard"": [
        [ ""Stomp"", ""WallJump"" ],
        [ ""Stomp"", ""Climb"" ],
        [ ""Stomp"", ""DoubleJump"" ]
      ],
      ""insane"": [ [ ""Bash"" ] ]
    },
    ""ValleyRightFastStomplessCell"": {
      ""casual"": [ [ ""Glide"", ""Wind"" ] ],
      ""standard"": [ [ ""Lure"", ""Bash"" ] ],
      ""expert"": [
        [ ""Climb"", ""ChargeJump"", ""HealthC


_BAR_LOOP -> {
                setShowBars(true)
                metronome?.setSilentMeasuresEnabled(false)
            }
            MODE_SILENT_BARS -> {
                setShowBars(false)
                metronome?.setNumSilentMeasures(_numSilentMeasures.value)
                metronome?.setSilentMeasuresEnabled(true)
            }
            MODE_BASIC -> {
                setShowBars(false)
                metronome?.setSilentMeasuresEnabled(false)
            }
        }
    }

    open fun setBeatsPerMinute(value: Int) {
        _beatsPerMinute.value = value
    }

    open fun setShowBars(value: Boolean) {
        _showBars.value = value
        viewModelScope.launch {
            userPreferencesRepository!!.setShowBars(_showBars.value)
        }
    }

    open fun setNumBars(value: Int) {
        _numBars.value = value
    }

    open fun storeBeatsPerMinute() {
        viewModelScope.launch {
            userPreferencesRepository!!.setBeatsPerMinute(_beatsPerMinute.value)
        }
    }

    open fun storeNumBars(){
        viewModelScope.launch {
            userPreferencesRepository!!.setNumBars(_numBars.value)
        }
    }
    open fun storeNumSilentMeasures() {
        viewModelScope.launch {
            userPreferencesRepository!!.setNumSilentBars(_numSilentMeasures.value)
        }
    }

    open fun incrementNumRuns() {
        viewModelScope.launch {
            userPreferencesRepository!!.incrementNumRuns()
        }
        _numRuns.value++
    }

    open fun incrementReviewPromptCounter() {
        viewModelScope.launch {
            userPreferencesRepository!!.incrementReviewPromptCounter()
            userPreferencesRepository.reviewPromptCounterFlow.collect { value ->
                _reviewPromptCounter.value = value
            }
        }
    }

    open fun resetNumRuns() {
        viewModelScope.launch {
            userPreferencesRepository!!.resetNumRuns()
        }
        _numRuns.value = 0
    }

    open fun setNumSilentMeasures(value: Int) {
        _numSilentMeasures.value = value
        metronome!!.setNumSilentMeasures(_numSilentMeasures.value)
        viewModelScope.launch {
            userPreferencesRepository!!.setNumSilentBars(_numSilentMeasures.value)
        }
    }
}

class MetronomeViewModelFactory(
    private val userPreferencesRepository: UserPreferencesRepository,
    private val metronome: Metronome
) : ViewModelProvider.Factory {
    @Suppress("UNCHECKED_CAST")
    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        if (modelClass.isAssignableFrom(MetronomeViewModel::class.java)) {
            return MetronomeViewModel(userPreferencesRepository, metronome) as T
        }
        throw IllegalArgumentException("Unknown ViewModel class")
    }
}/*
 * Copyright (C) 2025 deprec8
 *
 * This file is part of EnigmaDroid.
 *
 * EnigmaDroid is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * EnigmaDroid is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with EnigmaDroid.  If not, see <http://www.gnu.org/licenses/>.
 */

import com.android.build.gradle.internal.tasks.CompileArtProfileTask
impo


ber;
export type HCG = [number, number, number];
export type APPLE = [number, number, number];
export type GRAY = [number];

export namespace rgb {
    const channels: 3;
    const labels: 'rgb';
    function hsl(rgb: RGB): HSL;
    function hsl(...rgb: RGB): HSL;
    function hsv(rgb: RGB): HSV;
    function hsv(...rgb: RGB): HSV;
    function hwb(rgb: RGB): HWB;
    function hwb(...rgb: RGB): HWB;
    function cmyk(rgb: RGB): CMYK;
    function cmyk(...rgb: RGB): CMYK;
    function keyword(rgb: RGB): KEYWORD;
    function keyword(...rgb: RGB): KEYWORD;
    function xyz(rgb: RGB): XYZ;
    function xyz(...rgb: RGB): XYZ;
    function lab(rgb: RGB): LAB;
    function lab(...rgb: RGB): LAB;
    function ansi16(rgb: RGB): ANSI16;
    function ansi16(...rgb: RGB): ANSI16;
    function ansi256(rgb: RGB): ANSI256;
    function ansi256(...rgb: RGB): ANSI256;
    function hex(rgb: RGB): HEX;
    function hex(...rgb: RGB): HEX;
    function hcg(rgb: RGB): HCG;
    function hcg(...rgb: RGB): HCG;
    function apple(rgb: RGB): APPLE;
    function apple(...rgb: RGB): APPLE;
    function gray(rgb: RGB): GRAY;
    function gray(...rgb: RGB): GRAY;
}

export namespace hsl {
    const channels: 3;
    const labels: 'hsl';
    function rgb(hsl: HSL): RGB;
    function hsv(hsl: HSL): HSV;
    function hcg(hsl: HSL): HCG;
}

export namespace hsv {
    const channels: 3;
    const labels: 'hsv';
    function rgb(hsv: HSV): RGB;
    function hsl(hsv: HSV): HSL;
    function ansi16(hsv: HSV): ANSI16;
    function hcg(hsv: HSV): HCG;
}

export namespace hwb {
    const channels: 3;
    const labels: 'hwb';
    function rgb(hwb: HWB): RGB;
    function hcg(hwb: HWB): HCG;
}

export namespace cmyk {
    const channels: 4;
    const labels: 'cmyk';
    function rgb(cmyk: CMYK): RGB;
}

export namespace xyz {
    const channels: 3;
    const labels: 'xyz';
    function rgb(xyz: XYZ): RGB;
    function lab(xyz: XYZ): LAB;
}

export namespace lab {
    const channels: 3;
    const labels: 'lab';
    function xyz(lab: LAB): XYZ;
    function lch(lab: LAB): LCH;
}

export namespace lch {
    const channels: 3;
    const labels: 'lch';
    function lab(lch: LCH): LAB;
}

export namespace hex {
    const channels: 1;
    const labels: ['hex'];
    function rgb(hex: HEX): RGB;
}

export namespace keyword {
    const channels: 1;
    const labels: ['keyword'];
    function rgb(keyword: KEYWORD): RGB;
}

export namespace ansi16 {
    const channels: 1;
    const labels: ['ansi16'];
    function rgb(ansi16: ANSI16): RGB;
}

export namespace ansi256 {
    const channels: 1;
    const labels: ['ansi256'];
    function rgb(ansi256: ANSI256): RGB;
}

export namespace hcg {
    const channels: 3;
    const labels: ['h', 'c', 'g'];
    function rgb(hcg: HCG): RGB;
    function hsv(hcg: HCG): HSV;
    function hsl(hcg: HCG): HSL;
    function hwb(hcg: HCG): HWB;
}

export namespace apple {
    const channels: 3;
    const labels: ['r16', 'g16', 'b16'];
    function rgb(apple: APPLE): RGB;
}

export namespace gray {
    const channels: 1;
    const labels: ['gray'];
    function rgb(gray: GRAY): RGB


ManagerName"] = "conversationManager";
    param = Utils.cleanMap(param);
    log('param: $param');

    return param;
  }
}
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:window_manager/src/resize_edge.dart';
import 'package:window_manager/src/window_manager.dart';

/// A widgets for drag to resize window.
///
/// Use the widgets to simulate dragging the edges to resize the window.
///
/// {@tool snippet}
///
/// The sample creates a grey box, drag the box to resize the window.
///
/// ```dart
/// DragToResizeArea(
///   child: Container(
///     width: double.infinity,
///     height: double.infinity,
///     color: Colors.grey,
///   ),
///   resizeEdgeSize: 6,
///   resizeEdgeColor: Colors.red.withOpacity(0.2),
/// )
/// ```
/// {@end-tool}
class DragToResizeArea extends StatelessWidget {
  const DragToResizeArea({
    Key? key,
    required this.child,
    this.resizeEdgeColor = Colors.transparent,
    this.resizeEdgeSize = 8,
    this.resizeEdgeMargin = EdgeInsets.zero,
    this.enableResizeEdges,
  }) : super(key: key);

  final Widget child;
  final double resizeEdgeSize;
  final Color resizeEdgeColor;
  final EdgeInsets resizeEdgeMargin;
  final List<ResizeEdge>? enableResizeEdges;

  Widget _buildDragToResizeEdge(
    ResizeEdge resizeEdge, {
    MouseCursor cursor = SystemMouseCursors.basic,
    double? width,
    double? height,
  }) {
    if (enableResizeEdges != null && !enableResizeEdges!.contains(resizeEdge)) {
      return Container();
    }
    return Container(
      width: width,
      height: height,
      color: resizeEdgeColor,
      child: Listener(
        onPointerDown: (_) => windowManager.startResizing(resizeEdge),
        child: MouseRegion(
          cursor: cursor,
          child: GestureDetector(
            onDoubleTap: () => (Platform.isWindows &&
                    (resizeEdge == ResizeEdge.top ||
                        resizeEdge == ResizeEdge.bottom))
                ? windowManager.maximize(vertically: true)
                : null,
          ),
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Stack(
      children: <Widget>[
        child,
        Positioned(
          child: Container(
            margin: resizeEdgeMargin,
            child: Column(
              children: [
                Row(
                  children: [
                    _buildDragToResizeEdge(
                      ResizeEdge.topLeft,
                      cursor: SystemMouseCursors.resizeUpLeft,
                      width: resizeEdgeSize,
                      height: resizeEdgeSize,
                    ),
                    Expanded(
                      flex: 1,
                      child: _buildDragToResizeEdge(
                        ResizeEdge.top,
                        cursor: SystemMouseCursors.resizeUp,
                        height: resizeEdgeSize,
                      ),
                    ),
                    _buildDragToResizeEdge(
                      ResizeEdge.topRight,
                      cursor: SystemMouseCursors.resizeUpRight,
                      width: resizeEdgeSize,
                      height: resizeEdgeSize,
                    ),
                  ],
                ),
                Expanded(
                  flex: 1,
                  child: Row(
                    children: [
                      _buildDragToResizeEdge(
                        ResizeEdge.left,
                        cursor: SystemMouseCursors.resizeLeft,
                        width: resizeEdgeSize,
                        height: double.infinity,
                      ),
                      Expanded


_icache_invalidate_range
		.word	cpu_arm720_icache_invalidate_page

		/* tlb */
		.word	cpu_arm720_tlb_invalidate_all
		.word	cpu_arm720_tlb_invalidate_range
		.word	cpu_arm720_tlb_invalidate_page

		/* pgtable */
		.word	cpu_arm720_set_pgd
		.word	cpu_arm720_set_pmd
		.word	cpu_arm720_set_pte
		.size	arm720_processor_functions, . - arm720_processor_functions

		.type	cpu_arm720_info, #object
cpu_arm720_info:
		.long	0
		.long	cpu_arm720_name
		.size	cpu_arm720_info, . - cpu_arm720_info

		.type	cpu_arch_name, #object
cpu_arch_name:	.asciz	"armv4"
		.size	cpu_arch_name, . - cpu_arch_name

		.type	cpu_elf_name, #object
cpu_elf_name:	.asciz	"v4"
		.size	cpu_elf_name, . - cpu_elf_name
		.align

/*
 * See linux/include/asm-arm/procinfo.h for a definition of this structure.
 */

		.section ".proc.info", #alloc, #execinstr

		.type	__arm720_proc_info, #object
__arm720_proc_info:
		.long	0x41807200				@ cpu_val
		.long	0xffffff00				@ cpu_mask
		.long	0x00000c1e				@ section_mmu_flags
		b	__arm720_setup				@ cpu_flush
		.long	cpu_arch_name				@ arch_name
		.long	cpu_elf_name				@ elf_name
		.long	HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB	@ elf_hwcap
		.long	cpu_arm720_info				@ info
		.long	arm720_processor_functions
		.size	__arm720_proc_info, . - __arm720_proc_info


ackgrounds {
        background-color: var(--r-background-color);
    }
}
@font-face {
  font-family: 'Magnetic Pro';
  src: url('magnetic-pro-light.eot');
  src: url('magnetic-pro-light.eot?#iefix') format('embedded-opentype'),
     url('magnetic-pro-light.woff2') format('woff2'),
     url('magnetic-pro-light.woff') format('woff');
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: 'Magnetic Pro';
  src: url('magnetic-pro-medium.eot');
  src: url('magnetic-pro-medium.eot?#iefix') format('embedded-opentype'),
     url('magnetic-pro-medium.woff2') format('woff2'),
     url('magnetic-pro-medium.woff') format('woff');
  font-weight: bold;
  font-style: normal;
}

@font-face {
  font-family: 'Magnetic Pro';
  src: url('magnetic-pro-light-italic.eot');
  src: url('magnetic-pro-light-italic.eot?#iefix') format('embedded-opentype'),
     url('magnetic-pro-light-italic.woff2') format('woff2'),
     url('magnetic-pro-light-italic.woff') format('woff');
  font-weight: normal;
  font-style: italic;
}

@font-face {
  font-family: 'Magnetic Pro';
  src: url('carmelitregular.eot');
  src: url('carmelitregular.eot?#iefix') format('embedded-opentype'),
     url('carmelitregular.woff2') format('woff2'),
     url('carmelitregular.woff') format('woff');
  font-weight: normal;
  font-style: normal;
  unicode-range: U+05D5, U+05DB, U+05E9, U+05D1, U+05D6, U+05E8, U+05D5, U+05E2, U+05D5, U+05EA, U+05D9, U+05D4, U+05DD, U+05D0;
}
/* Default Print Stylesheet Template
   by Rob Glazebrook of CSSnewbie.com
   Last Updated: June 4, 2008

   Feel free (nay, compelled) to edit, append, and
   manipulate this file as you see fit. */

@media print {

	/* SECTION 1: Set default width, margin, float, and
	   background. This prevents elements from extending
	   beyond the edge of the printed page, and prevents
	   unnecessary background images from printing */
	html {
		background: #fff;
		width: auto;
		height: auto;
		overflow: visible;
	}
	body {
		background: #fff;
		font-size: 20pt;
		width: auto;
		height: auto;
		border: 0;
		margin: 0 5%;
		padding: 0;
		overflow: visible;
		float: none !important;
	}

	/* SECTION 2: Remove any elements not needed in print.
	   This would include navigation, ads, sidebars, etc. */
	.nestedarrow,
	.controls,
	.fork-reveal,
	.share-reveal,
	.state-background,
	.reveal .progress,
	.reveal .backgrounds,
	.reveal .slide-number {
		display: none !important;
	}

	/* SECTION 3: Set body font face, size, and color.
	   Consider using a serif font for readability. */
	body, p, td, li, div {
		font-size: 20pt!important;
		font-family: Georgia, "Times New Roman", Times, serif !important;
		color: #000;
	}

	/* SECTION 4: Set heading font face,


,
                            title = { Text("删除角色卡") },
                            text = { Text("确定删除当前角色卡吗？此操作不可撤销。") },
                            confirmButton = {
                                TextButton(onClick = {
                                    showDeleteConfirm = false
                                    scope.launch {
                                        activeCard?.let { card ->
                                            withContext(Dispatchers.IO) {
                                                characterCardManager.deleteCharacterCard(card.id)
                                                // 删除后，activeCharacterCardIdFlow 会自动更新为列表中的第一项
                                                // 或者如果没有角色卡，会是空字符串
                                            }
                                            refreshData()
                                        }
                                    }
                                }) { Text("删除") }
                            },
                            dismissButton = {
                                TextButton(onClick = { showDeleteConfirm = false }) { Text("取消") }
                            }
                        )
                    }

                    Spacer(Modifier.height(16.dp))
                    Text("当前角色卡内容", style = MaterialTheme.typography.titleSmall)
                    Spacer(Modifier.height(8.dp))

                    // 角色名称
                    OutlinedTextField(
                        value = editName,
                        onValueChange = { newValue ->
                            editName = newValue
                            scope.launch {
                                activeCard?.let { card ->
                                    withContext(Dispatchers.IO) {
                                        characterCardManager.updateCharacterCard(card.copy(name = newValue))
                                    }
                                }
                            }
                        },
                        label = { Text("角色名称") },
                        modifier = Modifier.fillMaxWidth(),
                        maxLines = 1
                    )

                    Spacer(Modifier.height(8.dp))

                    // 角色描述
                    OutlinedTextField(
                        value = editDescription,
                        onValueChange = { newValue ->
                            editDescription = newValue
                            scope.launch {
                                activeCard?.let { card ->
                                    withContext(Dispatchers.IO) {
                                        characterCardManager.updateCharacterCard(card.copy(description = newValue))
                                    }
                                }
                            }
                        },
                        label = { Text("角色描述") },
                        modifier = Modifier.fillMaxWidth(),
                        maxLines = 3
                    )

                    Spacer(Modifier.height(8.dp))

                    // 角色设定
                    OutlinedTextField(
                        value = editCharacterSetting,
                        onValueChange = { newValue ->
                            editCharacterSetting = newValue
                            scope.launch {
                                activeCard?.let { card ->
                                    withContext(Dispatchers.IO) {
                                        characterCardManager.updateCharacterCard(card.copy(characterSetting = newValue))
                                    }
                                }
                            }
                        },
                        label = { Text("角色设定") },
                        modifier = Modifier.fillMaxWidth(),
                        maxLines = 6
                    )

                    Spacer(Modifier.height(8.dp))

                    // 其他内容
                            OutlinedTextField(
                        value = editOtherContent,
                                onValueChange = { newValue ->
                            editOtherContent = newValue
                            scope.launch {
                                activeCard?.let { card ->
                                    withContext(Dispatchers.IO) {
                                        characterCardManager.updateCharacterCard(card.copy(otherContent = newValue))
                                    }
                                }
                            }
                                },
                        label = { Text("其他内容") },
                                modifier = Modifier.fillMaxWidth(),
                        maxLines = 6
                    )

                    Spacer(Modifier.height(8.dp))

                    // 高级自定义提示词
                    OutlinedTextField(
                        value = editAdvancedCustomPrompt,
                        onValueChange = { newValue ->
                            editAdvancedCustomPrompt = newValue
                            scope.launch {


], false)) + hex.i2s(data.msg[3], false) + hex.i2s(data.msg[4], false) + hex.i2s(data.msg[5], false)[0],
				odometer : ((data.msg[6] << 8) | (data.msg[7])) * 100,

				since_service : {
					days   : ((data.msg[10] << 8) | (data.msg[11])),
					liters : (((data.msg[8] << 8) | data.msg[9]) & 0x7FF) * 10,
				},
			};

			update.status('vehicle.vin', parse.vin, false);

			update.status('vehicle.coding.since_service.days',   parse.since_service.days,   false);
			update.status('vehicle.coding.since_service.liters', parse.since_service.liters, false);
			break;
		}

		case 0x5B: { // Decode a light status message from the LCM and act upon the results
			// Remove command byte
			data.msg = data.msg.slice(1);

			// Send data to comfort turn function
			comfort_turn({ before : status.lights.turn, after : data.msg[0] });

			// Decode bitmasks
			const masks = {
				m0 : bitmask.check(data.msg[0]).mask,
				m1 : bitmask.check(data.msg[1]).mask,
				m2 : bitmask.check(data.msg[2]).mask,
				m3 : bitmask.check(data.msg[3]).mask,
			};

			// On
			update.status('lights.all_off', masks.m0.b8, false);

			update.status('lights.standing.front',    masks.m0.b0, false);
			update.status('lights.lowbeam',           masks.m0.b1, false);
			update.status('lights.highbeam',          masks.m0.b2, false);
			update.status('lights.fog.front',         masks.m0.b3, false);
			update.status('lights.fog.rear',          masks.m0.b4, false);
			update.status('lights.turn.left.active',  masks.m0.b5, false);
			update.status('lights.turn.right.active', masks.m0.b6, false);
			update.status('lights.turn.fast',         masks.m0.b7, false);

			update.status('lights.brake',            masks.m2.b1, false);
			update.status('lights.turn.sync',        masks.m2.b2, false);
			update.status('lights.standing.rear',    masks.m2.b3, false);
			update.status('lights.trailer.standing', masks.m2.b4, false);
			update.status('lights.reverse',          masks.m2.b5, false);
			update.status('lights.trailer.reverse',  masks.m2.b6, false);
			update.status('lights.hazard',           masks.m2.b7, false);

			// Faulty
			update.status('lights.faulty.all_ok', masks.m1.b8, false);

			update.status('lights.faulty.standing.front', masks.m1.b0, false);
			update.status('lights.faulty.lowbeam.both',   masks.m1.b1, false);
			update.status('lights.faulty.highbeam',       masks.m1.b2, false);
			update.status('lights.faulty.fog.front',      masks.m1.b3, false);
			update.status('lights.faulty.fog.rear',       masks.m1.b4, false);
			update.status('lights.faulty.turn.left',      masks.m1.b5, false);
			update.status('lights.faulty.turn.right',     masks.m1.b6, false);
			update.status('lights.faulty.license_plate',  masks.m1.b7, false);

			update.status('lights.faulty.brake.right',         masks.m3.b0, false);
			update.status('lights.faulty.brake.left',          masks.m3.b1, false);
			update.status('lights.faulty.standing.rear.right


(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0,0) scale(1)}.plyr__preview-thumb::before{border-left:4px solid transparent;border-left:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-right:4px solid transparent;border-right:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-top:4px solid rgba(255,255,255,.9);border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,rgba(255,255,255,.9));bottom:calc(4px * -1);bottom:calc(var(--plyr-tooltip-arrow-size,4px) * -1);content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c8d1;border-radius:calc(3px - 1px);border-radius:calc(var(--plyr-tooltip-radius,3px) - 1px);overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img{height:100%;left:0;max-height:none;max-width:none;position:absolute;top:0;width:100%}.plyr__preview-thumb__time-container{bottom:6px;left:0;position:absolute;right:0;white-space:nowrap;z-index:3}.plyr__preview-thumb__time-container span{background-color:rgba(0,0,0,.55);border-radius:calc(3px - 1px);border-radius:calc(var(--plyr-tooltip-radius,3px) - 1px);color:#fff;font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px));padding:3px 6px}.plyr__preview-scrubbing{bottom:0;filter:blur(1px);height:100%;left:0;margin:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);overflow:hidden;border:0!important;height:1px!important;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}/**
 *
 * Copyright (c) 2006-2019, Speedment, Inc. All Rights Reserved.
 *
 * 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
 * th


#ifndef __GC0329_CMOS_EX_H_
#define __GC0329_CMOS_EX_H_

#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif

#ifdef ARCH_CV182X
#include <linux/cvi_vip_cif.h>
#include <linux/cvi_vip_snsr.h>
#include "cvi_type.h"
#else
#include <linux/cif_uapi.h>
#include <linux/vi_snsr.h>
#include <linux/cvi_type.h>
#endif
#include "cvi_sns_ctrl.h"

typedef enum _GC0329_MODE_E {
	GC0329_MODE_640X480P10 = 0,
	GC0329_MODE_NUM
} GC0329_SLAVE_MODE_E;

typedef struct _GC0329_MODE_S {
	ISP_WDR_SIZE_S stImg;
	CVI_FLOAT f32MaxFps;
	CVI_FLOAT f32MinFps;
	CVI_U32 u32HtsDef;
	CVI_U32 u32VtsDef;
	SNS_ATTR_S stExp;
	SNS_ATTR_LARGE_S stAgain;
	SNS_ATTR_LARGE_S stDgain;
	char name[64];
} GC0329_MODE_S;

/****************************************************************************
 * external variables and functions                                         *
 ****************************************************************************/

extern ISP_SNS_STATE_S *g_pastGc0329[VI_MAX_PIPE_NUM];
extern ISP_SNS_COMMBUS_U g_aunGc0329_BusInfo[];
extern CVI_U8 gc0329_i2c_addr;
extern const CVI_U32 gc0329_addr_byte;
extern const CVI_U32 gc0329_data_byte;
extern void gc0329_init(VI_PIPE ViPipe);
extern void gc0329_exit(VI_PIPE ViPipe);
extern void gc0329_standby(VI_PIPE ViPipe);
extern void gc0329_restart(VI_PIPE ViPipe);
extern int  gc0329_write_register(VI_PIPE ViPipe, int addr, int data);
extern int  gc0329_read_register(VI_PIPE ViPipe, int addr);
extern void gc0329_mirror_flip(VI_PIPE ViPipe, ISP_SNS_MIRRORFLIP_TYPE_E eSnsMirrorFlip);
extern int  gc0329_probe(VI_PIPE ViPipe);

#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* End of #ifdef __cplusplus */

#endif /* __GC0329_CMOS_EX_H_ */


5.5h10a.5.5 0 00.5-.5V6H2Zm5 1.5a.5.5 0 111 0 .5.5 0 01-1 0ZM9.5 7a.5.5 0 100 1 .5.5 0 000-1Zm1.5.5a.5.5 0 111 0 .5.5 0 01-1 0Zm.5 1.5a.5.5 0 100 1 .5.5 0 000-1ZM9 9.5a.5.5 0 111 0 .5.5 0 01-1 0ZM7.5 9a.5.5 0 100 1 .5.5 0 000-1ZM5 9.5a.5.5 0 111 0 .5.5 0 01-1 0ZM3.5 9a.5.5 0 100 1 .5.5 0 000-1ZM3 11.5a.5.5 0 111 0 .5.5 0 01-1 0Zm2.5-.5a.5.5 0 100 1 .5.5 0 000-1Zm1.5.5a.5.5 0 111 0 .5.5 0 01-1 0Zm2.5-.5a.5.5 0 100 1 .5.5 0 000-1Z" clip-rule="evenodd"/></svg>';
  static const String camera =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="15" height="15" preserveAspectRatio="xMidYMid meet" viewBox="0 0 15 15"><path fill="currentColor" fill-rule="evenodd" d="M2 3a1 1 0 00-1 1v7a1 1 0 001 1h11a1 1 0 001-1V4a1 1 0 00-1-1H2ZM0 4a2 2 0 012-2h11a2 2 0 012 2v7a2 2 0 01-2 2H2a2 2 0 01-2-2V4Zm2 .25A.25.25 0 012.25 4h2.5a.25.25 0 01.25.25v1.505a.25.25 0 01-.25.25h-2.5a.25.25 0 01-.25-.25V4.25Zm10.101 3.334a2.601 2.601 0 11-5.202 0 2.601 2.601 0 015.202 0Zm1 0a3.601 3.601 0 11-7.202 0 3.601 3.601 0 017.202 0Z" clip-rule="evenodd"/></svg>';
  static const String card_stack =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="15" height="15" preserveAspectRatio="xMidYMid meet" viewBox="0 0 15 15"><path fill="currentColor" fill-rule="evenodd" d="M2 3.5a.5.5 0 01.5-.5h10a.5.5 0 01.5.5v6a.5.5 0 01-.5.5h-10a.5.5 0 01-.5-.5v-6Zm0 7.415A1.5 1.5 0 011 9.5v-6A1.5 1.5 0 012.5 2h10A1.5 1.5 0 0114 3.5v6a1.5 1.5 0 01-1 1.415v.585a1.5 1.5 0 01-1.5 1.5h-8A1.5 1.5 0 012 11.5v-.585ZM12 11v.5a.5.5 0 01-.5.5h-8a.5.5 0 01-.5-.5V11h9Z" clip-rule="evenodd"/></svg>';
  static const String card_stack_minus =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="15" height="15" preserveAspectRatio="xMidYMid meet" viewBox="0 0 15 15"><path fill="currentColor" fi


 {
         ConditionList details = cassembly.getDetailConditionList(cols);
         details = removeAggregateCondition(details, ainfo);
         details = replaceGroupValues(details, cassembly, true);
         ConditionListWrapper wrapper = table.getPreRuntimeConditionList();
         ConditionList conds = wrapper == null ? null : wrapper.getConditionList();
         List<ConditionList> list = new ArrayList<>();
         list.add(conds);
         list.add(details);
         conds = ConditionUtil.mergeConditionList(list, JunctionOperator.AND);
         table.setPreRuntimeConditionList(conds);
         table.setProperty("showDetail", "true");

         for(int i = 0; i < cols.getAttributeCount(); i++) {
            ColumnRef column = (ColumnRef) cols.getAttribute(i);

            if(column.getDataRef() instanceof AliasDataRef) {
               continue;
            }

            if(!cols2.containsAttribute(column)) {
               cols2.addAttribute(column);
            }
         }

         // show all columns except date range ref, which may be used in
         // condition list
         table.setColumnSelection(cols2);
         // sort all group/aggregate columns
         table.setSortInfo(dsorts);
         // clear aggregate for it's a detail table
         ainfo.clear();
      }
      else {
         if(isApplyMaxRows(cinfo)) {
            if(box.isRuntime()) {
               table.setMaxRows(DOTPLOT_MAXROWS);
            }
            else {
               table.setMaxDisplayRows(DOTPLOT_MAXROWS);
            }
         }
         else {
            table.setSortInfo(sorts);
         }
      }

      // reset column selection to generate proper public column selection
      // for aggregated table or non-aggegated table
      table.resetColumnSelection();

      // runtime and aggregated? apply ranking
      if(!analysis && !isDetail() && !rconds.isEmpty() &&
         // boxplot doesn't support ranking
         !GraphTypes.isBoxplot(cinfo.getChartType()))
      {
         table.setRankingConditionList(rconds);
      }

      boolean rempty = rconds.isEmpty(); // ranking condition is empty?
      boolean percent = ainfo.containsPercentage(); // percentage defined?
      boolean aoa = ainfo.supportsAOA(); // aggregate on aggregate is supported?
      Map<Set,Set> groupaggrs = cinfo.getRTDiscreteAggregates();
      Map<Set,Set> multigroups = cinfo.getRTFieldGroups();

      boolean hasDiscrete = groupaggrs.size() > 0;
      // both multi-style binding with different group/aggr, and discrete aggregate
      boolean mixedMultiDiscrete = hasDiscrete && multigroups.size() > 0;
      // has any aggregate calc field
      boolean aggrCalc = Arrays.stream(ainfo.getAggregates())
         .anyMatch(a -> VSUtil.isAggregateCalc(a.getDataRef()));
      List<DataRef> ignoreRefs = cinfo.getGeoColumns().stream().collect(Collectors.toList());
      boolean realAggregated = isRealAggregated(ainfo, ignoreRefs.toArray(new DataRef[0]));

      // if binding has lat/lon with none formula, and an aggregate (e.g. sum(total)),
      // generating sql like: select lat, long, sum(total) from ...
      // would cause an exception since lat/long is not aggregated and is not grouped.
      // force them to be aggregated to avoid this error. (47888).
      if(realAggregated) {
         AggregateInfo ninfo = (AggregateInfo) ainfo.clone();
         boolean changed = false;

         for(int i = ninfo.getAggregateCount() - 1; i >= 0; i--) {
            AggregateRef aref = ninfo.getAggregate(i);

            if((aref.getRefType() & DataRef.CUBE_MEASURE) != DataRef.CUBE_MEASURE&&
               aref.getFormula() == AggregateFormula.NONE &&
               !VSUtil.isAggregateCalc(aref.ge


i
	cmp.b	#"D",d1
	beq	AnDirect
	cmp.b	#"X",d1
	beq	AnExit
	cmp.b 	#")",d1
	beq	AnAutOf
	bra	AniLoop
******* Trop long! Marque et boucle!
AniTrop:sub.l	d7,a2
	add.l	a2,a6
	move.l	d7,a2
	bra	AniLoop

******* AUto test
AnAutOn:addq.l	#1,a0
	bsr	AniChr
	tst.w	d5
	bne	AniE5
	cmp.b	#"(",d0
	bne	AniE1
	bsr	AniChr
	cmp.b	#")",d0
	beq.s	AnAu1
	subq.l	#1,a0
	move.w	$60/2(a4),(a2)+
	move.l	a2,d5
	sub.l	d7,d5
	swap	d5
	move.w	#1,d5
	clr.w	(a2)+
	bra	AniLoop
AnAu1:	move.w	$64/2(a4),(a2)+
	bra	AniLoop
******* FIN AUTOTEST / EXIT
AnExit:	tst.w	d5
	beq	AniE6
	move.w	$68/2(a4),(a2)+
	clr.w	(a2)+
	bra	AniLoop
AnAutOf	tst.w	d5
	beq	AniE6
	move.w	$68/2(a4),(a2)+
	move.l	a2,d0
	sub.l	d7,d0
	swap	d5
	sub.w	d5,d0
	move.l	a0,-(sp)
	move.l	d7,a0
	move.w	d0,0(a0,d5.w)
	move.l	(sp)+,a0
	moveq	#0,d5
	bra	AniLoop
******* DIRECT label EXTERNE!
AnDirect:
	tst.w	d5
	beq	AniE6
	move.w	$6C/2(a4),(a2)+
	bsr	AniChr
	sub.b	#"A",d0
	bcs	AniE1
	cmp.b	#26,d0
	bhi	AniE1
	lsl.w	#1,d0
	move.l	a2,d1
	sub.l	d7,d1
	move.w	d1,26*2(a1,d6.w)
	move.w	d0,26*2+2(a1,d6.w)
	addq.w	#4,d6
	move.w	#-1,26*2(a1,d6.w)
	clr.w	(a2)+
	bra	AniLoop

******* Un LABEL!
AnLab:	sub.b	#"A",d1
	bcs	AniE1
	cmp.b	#26,d1
	bhi	AniE1
	lsl.w 	#1,d1
	tst.w	0(a1,d1.w)
	bpl	AniE8
	move.l	a2,d0
	sub.l	d7,d0
	or.w	d5,d0
	move.w	d0,0(a1,d1.w)
	bra	AniLoop
******* Un BRANCHEMENT
AnJmp:	move.w	$1C/2(a4),(a2)+
	bsr	AniChr
	sub.b	#"A",d0
	bcs	AniE1
	cmp.b	#26,d0
	bhi	AniE


Retrigger note

        E2
        Fine pitch slide down
        EA
        Fine volume slide up

        E3
        Glissando control
        EB
        Fine volume slide down

        E4
        Vibrato control
        EC
        Cut note

        E5
        Set instrument fine tune
        ED
        Note delay

        E6
        Pattern loop
        EE
        Pattern delay

        E7
        Tremolo control
        EF
        Invert loop

XM Extended Commands

        G
        Set Global Volume
        Gxx

        H
        Global Volume Slide
        Hxx

        K
        Key-Off
        Kxx: xx is the delay in ticks

        L
        Set Envelope Position
        * Not implemented

        P
        Panning Slide
        Pxy

        R
        Re-trigger note with volume slide
        * Not implemented

        T
        Tremor
        * Not implemented

        X
        Extra fine portamentos
        Xxy: x=1: y speed up, x=2: y speed down

XM Volume Commands

        xx
        Set Note Volume
        From 00 to 40 (hex)

        +x
        Volume Slide Up
        + + speed

        -x
        Volume Slide Down
        - + speed

        Dx
        Fine Volume Slide Down
        D + speed

        Lx
        Panning Slide Left
        L + speed

        Mx
        Portamento to note
        M + speed

        Px
        Set Note panning pos