@famibee/skynovel 1.64.7 → 1.64.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/LayerMng.js +1 -1
- package/dist/LayerMng.js.map +1 -1
- package/dist_app/LayerMng.js +1 -1
- package/dist_app/LayerMng.js.map +1 -1
- package/package.json +1 -1
package/dist/LayerMng.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayerMng.js","sources":["../src/sn/Pages.ts","../src/sn/DesignCast.ts","../src/sn/SpritesMng.ts","../src/sn/GrpLayer.ts","../src/sn/Hyphenation.ts","../src/sn/htm2tx.ts","../src/sn/TxtStage.ts","../src/sn/Button.ts","../src/sn/TxtLayer.ts","../src/sn/FrameMng.ts","../src/sn/Log.ts","../src/sn/LayerMng.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {HArg} from './Grammar';\nimport type {IVariable} from './CmnInterface';\nimport type {Layer} from './Layer';\nimport type {SysBase} from './SysBase';\nimport {argChk_Boolean} from './CmnLib';\n\nimport type {Container} from 'pixi.js';\n\nexport class Pages {\n\t#pg: {fore: Layer, back: Layer};\n\n\tconstructor(layname: string, readonly cls: string, fore: Container, back: Container, readonly hArg: HArg, readonly sys: SysBase, readonly val: IVariable, readonly ret: {isWait: boolean}) {\n\t\tconst fncF = sys.hFactoryCls[cls];\n\t\tif (! fncF) throw `属性 class【${cls}】が不正です`;\n\n\t\tconst f = fncF();\n\t\tconst b = fncF();\n\t\tf.layname =\n\t\tb.layname = layname;\n\t\tconst nm = hArg[':id_tag'] = `layer:${layname} cls:${cls} page:`;\n\t\tf.ctn.name = f.name = nm +'A';\n\t\tb.ctn.name = b.name = nm +'B';\n\t\tfore.addChild(f.ctn);\n\t\tback.addChild(b.ctn);\n\t\targChk_Boolean(hArg, 'visible', true);\n\t\targChk_Boolean(hArg, 'visible', true);// SKYNovelではデフォルトはtrueとする\n\t\tret.isWait = f.lay(hArg) || b.lay(hArg);\n\t\tthis.#pg = {fore: f, back: b};\n\t\tback.visible = false;\n\n\t\t// 組み込み変数\n\t\tconst valnm = `const.sn.lay.${layname}`;\n\t\tval.setVal_Nochk('tmp', valnm, true);\n\t\tval.defTmp(valnm +'.fore.alpha', ()=> this.#pg.fore.alpha);\n\t\tval.defTmp(valnm +'.back.alpha', ()=> this.#pg.back.alpha);\n\t\tval.defTmp(valnm +'.fore.height', ()=> this.#pg.fore.height);\n\t\tval.defTmp(valnm +'.back.height', ()=> this.#pg.back.height);\n\t\tval.defTmp(valnm +'.fore.visible', ()=> this.#pg.fore.ctn.visible);\n\t\tval.defTmp(valnm +'.back.visible', ()=> this.#pg.back.ctn.visible);\n\t\tval.defTmp(valnm +'.fore.width', ()=> this.#pg.fore.width);\n\t\tval.defTmp(valnm +'.back.width', ()=> this.#pg.back.width);\n\t\tval.defTmp(valnm +'.fore.x', ()=> this.#pg.fore.x);\n\t\tval.defTmp(valnm +'.back.x', ()=> this.#pg.back.x);\n\t\tval.defTmp(valnm +'.fore.y', ()=> this.#pg.fore.y);\n\t\tval.defTmp(valnm +'.back.y', ()=> this.#pg.back.y);\n\t}\n\tdestroy() {\n\t\tthis.#pg.fore.destroy();\n\t\tthis.#pg.back.destroy();\n\t}\n\n\treadonly lay = (hArg: HArg)=> this.getPage(hArg).lay(hArg);\n\treadonly getPage = (hArg: HArg)=>\n\t\tPages.argChk_page(hArg, 'fore') !== 'back'\n\t\t\t? this.#pg.fore\n\t\t\t: this.#pg.back;\n\tstatic\targChk_page(hash: HArg, def: string): string {\n\t\tconst v = hash.page ?? def;\n\t\tif (v === 'fore' || v === 'back') {hash.page = v; return v}\n\n\t\tthrow Error('属性 page【'+ v +'】が不正です');\n\t}\n\tget fore(): Layer {return this.#pg.fore}\n\tget back(): Layer {return this.#pg.back}\n\n\ttransPage(aPrm: Promise<void>[]): void {\n\t\t[this.#pg.back, this.#pg.fore] = [this.#pg.fore, this.#pg.back];\n\t\tthis.#pg.back.copy(this.#pg.fore, aPrm);\n\t}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2021-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {HArg} from './Grammar';\nimport type {IPropParser} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {HPage} from './LayerMng';\nimport type {HPRM} from './AnalyzeTagArg';\nimport type {TxtStage} from './TxtStage';\nimport type {Button} from './Button';\nimport type {GrpLayer} from './GrpLayer';\nimport type {Config} from './Config';\n\nimport type {Application, Text, Sprite} from 'pixi.js';\n\n\nexport class DesignCast {\n\tstatic\tinit(_appPixi: Application, _sys: SysBase, _scrItr: ScriptIterator, _prpPrs: IPropParser, _cfg: Config, _hPages: HPage) { /* empty */ }\n\tstatic\tcvsResizeDesign() { /* empty */ }\n//\tstatic\treadonly\t#alzTagArg\t= new AnalyzeTagArg;\n\n\n\tconstructor(readonly bg_col: string, readonly isLay = false) {}\n\tdestroy() { /* empty */ }\n\n\tgethArg(): HArg {return this.hArg}\n\tprotected\thArg\t: HArg\t= {};\n\tsethArg(hArg: HArg): void {\n\t\tthis.hArg = hArg;\n\t}\n\n\tsetOther(_hPrm: HPRM) { /* empty */ }\n\n\tadopt(_idcCh: DesignCast) {\t// 養子縁組\n\t}\n\n\tstatic\tenterMode() { /* empty */ }\n\tstatic\tallHide() { /* empty */ }\n\tset visible(_v: boolean) { /* empty */ }\n\tstatic\tleaveMode() { /* empty */ }\n\n\n\tcvsResize() { /* empty */ }\n\tmake() { /* empty */ }\n\tstatic replaceToken(_o: unknown) { /* empty */ }\n\n}\n\n\n// 画像レイヤ\nexport class GrpLayDesignCast extends DesignCast {\n\tconstructor(_ctn: Sprite, _gl: GrpLayer) {super('#29e', true)}\n\tsetSp(_sp: Sprite) { /* empty */ }\n}\n\n// 文字レイヤ\nexport class TxtLayDesignCast extends DesignCast {\n\tconstructor(_ctn: Sprite, _ts: TxtStage) {\n\t\tsuper('#29e', true);\n\t}\n}\n// 文字レイヤ・パディング\nexport class TxtLayPadDesignCast extends DesignCast {\n\tconstructor(_ts: TxtStage) {super('#9e2')}\n}\n\n// 文字レイヤ・ボタン基本\nexport class BtnDesignCast extends DesignCast {\n\tconstructor(protected readonly btn: Button, override readonly hArg: HArg) {\n\t\tsuper('#e92');\n\t}\n}\n// 文字レイヤ・文字ボタン\nexport class TxtBtnDesignCast extends BtnDesignCast {\n\tconstructor(btn: Button, hArg: HArg, _txt: Text) {\n\t\tsuper(btn, hArg);\n\t}\n}\n\n// 文字レイヤ・画像ボタン\nexport class PicBtnDesignCast extends BtnDesignCast {\n\tsetSp(_sp: Sprite) { /* empty */ }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2023-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {Config} from './Config';\nimport {type IEvtMng, argChk_Boolean, argChk_Num, getFn, int} from './CmnLib';\nimport type {IMain, IVariable, SYS_DEC_RET} from './CmnInterface';\nimport {DebugMng} from './DebugMng';\nimport {SEARCH_PATH_ARG_EXT} from './ConfigBase';\nimport type {SysBase} from './SysBase';\nimport type {SoundMng} from './SoundMng';\nimport type {HArg} from './Grammar';\nimport {Layer} from './Layer';\nimport {Reading} from './Reading';\n\nimport {Sprite, type Container, Texture, AnimatedSprite, LoaderResource, utils, Loader, Rectangle, BLEND_MODES} from 'pixi.js';\n\ntype IFncCompSpr = (sp: Sprite)=> void;\n\ntype Iface = {\n\tfn\t\t\t: string;\n\tdx\t\t\t: number;\n\tdy\t\t\t: number;\n\tblendmode\t: number;\n}\ntype Ihface = { [name: string]: Iface; }\n\ntype IResAniSpr = {\n\taTex\t: Texture[];\n\tmeta\t: {\n\t\tanimationSpeed? :number;\n\t};\n}\n\n\nexport class SpritesMng {\n\tstatic\t#cfg\t: Config;\n\tstatic\t#val\t: IVariable;\n\tstatic\t#sys\t: SysBase;\n\tstatic\t#main\t: IMain;\n\tstatic\tinit(cfg: Config, val: IVariable, sys: SysBase, main: IMain, sndMng: SoundMng) {\n\t\tSpritesMng.#cfg = cfg;\n\t\tSpritesMng.#val = val;\n\t\tSpritesMng.#sys = sys;\n\t\tSpritesMng.#main = main;\n\t\tif (sys.arg.crypto) {\n\t\t\tSpritesMng.#cachePicMov = (r, res, next)=> SpritesMng.#dec2cachePicMov(r, res, next);\n\t\t\tSpritesMng.#cacheAniSpr = (r, res, next)=> SpritesMng.#dec2cacheAniSpr(r, res, next);\n\t\t}\n\n\t\tconst fnc = ()=> {\n\t\t\tconst vol = SpritesMng.#glbVol * SpritesMng.#movVol;\n\t\t\tfor (const v of Object.values(SpritesMng.#hFn2hve)) v.volume = vol;\n\t\t};\n\t\tsndMng.setNoticeChgVolume(\n\t\t\tvol=> {SpritesMng.#glbVol = vol; fnc()},\n\t\t\tvol=> {SpritesMng.#movVol = vol; fnc()}\n\t\t);\n\t}\n\tstatic\t#movVol\t= 1;\n\tstatic\t#glbVol\t= 1;\n\n\tstatic\t#evtMng\t: IEvtMng;\n\tstatic\tsetEvtMng(evtMng: IEvtMng) {SpritesMng.#evtMng = evtMng}\n\n\n\tconstructor(readonly csvFn = '', readonly ctn?: Container, private fncFirstComp: IFncCompSpr = ()=> { /* empty */ }, private fncAllComp: (isStop: boolean)=> void = ()=> { /* empty */ }) {\n\t\tif (! csvFn) return;\n\n\t\tthis.#addChild = ctn ? sp=> {ctn.addChild(sp); this.#aSp.push(sp)} : ()=> { /* empty */ };\n\t\tthis.ret = SpritesMng.#csv2Sprites(\n\t\t\tcsvFn,\n\t\t\tsp=> this.fncFirstComp(sp),\t\t\t// 差し替え考慮\n\t\t\tisStop=> this.fncAllComp(isStop),\t// 差し替え考慮\n\t\t\tsp=> this.#addChild(sp)\t\t\t\t// 差し替え考慮\n\t\t);\n\t}\n\treadonly ret: boolean\t\t= false;\n\t#addChild\t: (sp: Sprite)=> void;\n\t#aSp\t\t: Container[]\t= [];\n\n\tdestroy() {\t\t// これをやるためのクラス、とすら云える\n\t\tthis.fncFirstComp\t= ()=> { /* empty */ };\n\t\tthis.fncAllComp\t\t= ()=> { /* empty */ };\n\t\tthis.#addChild\t\t= sp=> sp.destroy();\n\n\t\tfor (const sp of this.#aSp) {\n\t\t\tSpritesMng.stopVideo(sp.name);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\tsp.parent?.removeChild(sp);\n\t\t\tsp.destroy();\n\t\t}\n\t\tthis.#aSp = [];\n\t}\n\n\tstatic\tdestroy() {\n\t\tSpritesMng.#hFace\t= {};\n\t\tSpritesMng.#hFn2ResAniSpr\t= {};\n\t\t//SpritesMng.#ldrHFn\t= {};\n\t\tSpritesMng.#hFn2hve\t= {};\n\t}\n\n\n\t//static #ldrHFn: {[fn: string]: 1} = {};\n\tstatic\t#csv2Sprites(csv: string, fncFirstComp: IFncCompSpr, fncAllComp: (isStop: boolean)=> void, addChild: (sp: Sprite)=> void): boolean {\n\t\tif (! csv) return false;\n\n\t\tlet needLoad = false;\n\t\tif (csv.startsWith('data:')) {\t// Data URI\n\t\t\tconst fnc = ()=> {\n\t\t\t\tconst sp = Sprite.from(csv);\n\t\t\t\taddChild(sp);\n\t\t\t\tfncFirstComp(sp);\n\t\t\t\tfncAllComp(needLoad);\n\t\t\t};\n\t\t\tif (csv in utils.TextureCache) fnc();\n\t\t\telse {needLoad = true; (new Loader).add(csv, csv).load(fnc)}\n\n\t\t\treturn needLoad;\n\t\t}\n\n\t\tconst aComp: {fn: string, fnc: IFncCompSpr}[] = [];\n\t\tconst ldr = new Loader;\n\t\tconst a = csv.split(',');\n\t\tconst len = a.length;\n\t\tfor (let i=0; i<len; ++i) {\n\t\t\tconst fn0 = a[i];\n\t\t\tif (! fn0) throw 'face属性に空要素が含まれます';\n\n\t\t\t// 差分絵を重ねる\n\t\t\tconst {dx, dy, blendmode, fn} = SpritesMng.#hFace[fn0] ?? {\n\t\t\t\tfn\t: fn0,\n\t\t\t\tdx\t: 0,\n\t\t\t\tdy\t: 0,\n\t\t\t\tblendmode\t: BLEND_MODES.NORMAL\n\t\t\t};\n\t\t\tconst fnc = i === 0 ?fncFirstComp :(sp: Sprite)=> {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\t\tif (! sp.transform) return;\t// エラー予防\n\t\t\t\tsp.x = dx;\n\t\t\t\tsp.y = dy;\n\t\t\t\tsp.blendMode = blendmode;\n\t\t\t};\n\t\t\taComp.push({fn, fnc});\n\n\t\t\tif (fn in SpritesMng.#hFn2ResAniSpr) continue;\n\t\t\tif (fn in utils.TextureCache) continue;\n\t\t\t//if (fn in utils.BaseTextureCache) continue;\t\t// 警告に変化なし\n\t\t\tif (fn in Loader.shared.resources) continue;\n\t\t\t//if (fn in SpritesMng.#ldrHFn) {\n\t\t\t\t// ここに来るという中途半端な状態がある。お陰で警告が出てしまう\n\t\t\t\t// (警告を消そうとする)以下の試みは効かない。直前の if でそもそもここに来ない\n\t\t\t\t//\tTexture.removeFromCache(fn);\n\t\t\t\t//\tdelete utils.TextureCache[fn];\n\t\t\t\t//\tdelete Loader.shared.resources[fn];\n\t\t\t\t// continue;\t// これは厳禁、御法度。\n\t\t\t\t\t// 画像ボタンや文字ボタン背景で同じ画像を、間を置かずロードした場合に最初一つしか表示されなくなる。以下は確認用ギャラリー\n\t\t\t\t\t// http://localhost:8082/index.html?cur=ch_button\n\t\t\t//}\n\t\t\t//SpritesMng.#ldrHFn[fn] = 1;\n\n\t\t\tneedLoad = true;\n\t\t\tconst url = SpritesMng.#cfg.searchPath(fn, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\t\tconst xt = this.#sys.arg.crypto\n\t\t\t? {xhrType: url.endsWith('.json')\n\t\t\t\t? LoaderResource.XHR_RESPONSE_TYPE.TEXT\n\t\t\t\t: LoaderResource.XHR_RESPONSE_TYPE.BUFFER}\n\t\t\t: {};\n\t\t\tldr.add({...xt, name: fn, url});\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst fncLoaded = (_: any, hRes: {[fn: string]: LoaderResource})=> {\n\t\t\tfor (const {fn, fnc} of aComp) {\n\t\t\t\tconst sp = SpritesMng.#mkSprite(fn, hRes);\n\t\t\t\tsp.name = fn;\t// 4 Debug?\n\t\t\t\taddChild(sp);\n\t\t\t\tfnc(sp);\n\t\t\t}\n\t\t\tfncAllComp(needLoad);\n\t\t}\n\t\tif (needLoad) {\n\t\t\tldr.use((res, next)=> {\n\t\t\t\ttry {\n\t\t\t\t\tif (res.extension === 'json') {\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\t\t\tvoid this.#sys.dec('json', res.data)\n\t\t\t\t\t\t.then(str=> SpritesMng.#cacheAniSpr(str, res, next));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\t\tvoid this.#sys.decAB(res.data).then(aiv=> SpritesMng.#cachePicMov(aiv, res, next));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconst mes = `画像/動画ロード失敗です fn:${res.name} ${String(e)}`;\n\t\t\t\t\tif (SpritesMng.#evtMng.isSkipping) console.warn(mes); else console.error('%c'+ mes, 'color:#FF3300;');\n\t\t\t\t}\n\t\t\t})\n\t\t\t.load(fncLoaded);\n\t\t}\n\t\telse queueMicrotask(()=> fncLoaded(0, {}));\n\n\t\treturn needLoad;\n\t}\n\tstatic\t#hFace\t\t\t: Ihface\t= {};\n\tstatic\t#hFn2ResAniSpr\t: {[fn: string]: IResAniSpr} = {};\n\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #cachePicMov = (_r: SYS_DEC_RET, {type, name, data}: any, next: ()=> void)=> {\n\t\tswitch (type) {\n\t\t\tcase LoaderResource.TYPE.VIDEO:{\n\t\t\t\tconst hve = <HTMLVideoElement>data;\n\t\t\t\thve.volume = SpritesMng.#glbVol;\n\t\t\t\tSpritesMng.#hFn2hve[name] = SpritesMng.#charmVideoElm(hve);\n\t\t\t}\n\t\t}\n\t\tnext();\n\t}\n\tstatic #sortAFrameName(aFn: string[]): string[] {\n\t\tconst a_base_name = /([^\\d]+)\\d+\\.(\\w+)/.exec(aFn[0] ?? '');\n\t\tif (! a_base_name) return [];\n\n\t\tconst [, d1='', d2=''] = a_base_name;\n\t\tconst is = d1.length;\n\t\tconst ie = -d2.length -1;\n\t\treturn aFn.sort((a, b)=> int(a.slice(is, ie)) > int(b.slice(is, ie)) ?1 :-1);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #dec2cachePicMov(r: SYS_DEC_RET, res: any, next: ()=> void) {\n\t\tres.data = r;\n\t\tif (res.extension !== 'bin') next();\n\n\t\tif (r instanceof HTMLImageElement) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tvoid Texture.fromLoader(r, res.url, res.name).then(r=> {\n\t\t\t\tres.texture = r;\n\t\t\t\t//Texture.addToCache(Texture.from(r), res.name);\n\t\t\t\t// res.texture = Texture.from(r);\n\t\t\t\t\t// でも良いが、キャッシュ追加と、それでcsv2Sprites()内で使用するので\n\t\t\t\tres.type = LoaderResource.TYPE.IMAGE;\n\t//\t\t\tURL.revokeObjectURL(r.src);\t// TODO: キャッシュ破棄\n\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (r instanceof HTMLVideoElement) {\n\t\t\tr.volume = SpritesMng.#glbVol;\n\t\t\tSpritesMng.#hFn2hve[res.name] = SpritesMng.#charmVideoElm(r);\n\n\t\t\tres.type = LoaderResource.TYPE.VIDEO;\n//\t\t\tURL.revokeObjectURL(r.src);\n\t\t}\n\t\tnext();\n\t}\n\tstatic #charmVideoElm(hve: HTMLVideoElement): HTMLVideoElement {\n\t\t// 【PixiJS】iOSとChromeでAutoPlay可能なビデオSpriteの設定 - Qiita https://qiita.com/masato_makino/items/8316e7743acac514e361\n\t\tif (SpritesMng.#val.getVal('const.sn.needClick2Play')) {\n\t\t\t// ブラウザ実行で、クリックされるまで音声再生が差し止められている状態か。なにかクリックされれば falseになる\n\t\t\tDebugMng.trace_beforeNew(`[lay系] ${DebugMng.strPos()}未クリック状態で動画を自動再生します。音声はミュートされます`, 'W');\n\t\t\thve.muted = true;\t// Chrome対応:自動再生を許可させるため。ないと再開時に DOMException\n\t\t}\n\t\thve.setAttribute('playsinline', '');\t// iOS対応\n\t\treturn hve;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #cacheAniSpr = (_r: string, {type, spritesheet, name, data}: any, next: ()=> void)=> {\n\t\tswitch (type) {\n\t\t\tcase LoaderResource.TYPE.JSON:{\t// switchは必須\n\t\t\t\tconst aFn = <string[]>spritesheet._frameKeys;\n\t\t\t\tSpritesMng.#sortAFrameName(aFn);\n\t\t\t\tSpritesMng.#hFn2ResAniSpr[name] = {\n\t\t\t\t\taTex: aFn.map(fn=> Texture.from(fn)),\n\t\t\t\t\tmeta: <IResAniSpr['meta']>data.meta,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tnext();\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #dec2cacheAniSpr(r: string, res: any, next: ()=> void) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst {meta, frames} = res.data = JSON.parse(r);\n\t\tres.type = LoaderResource.TYPE.JSON;\n\t\tif (! meta?.image) {next(); return}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\tconst fn = getFn(meta.image);\n\t\tconst url = SpritesMng.#cfg.searchPath(fn, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\t(new Loader)\n\t\t.use((res2, next2)=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tthis.#sys.decAB(res2.data)\n\t\t\t.then(r2=> {\n\t\t\t\tres2.data = r2;\n\t\t\t\tif (r2 instanceof HTMLImageElement) {\n\t\t\t\t\tres2.type = LoaderResource.TYPE.IMAGE;\n\t\t\t\t\tURL.revokeObjectURL(r2.src);\n\t\t\t\t}\n\t\t\t\tnext2();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> this.#main.errScript(`画像/動画ロード失敗です dec2res4Cripto fn:${res2.name} ${String(e)}`, false));\n\t\t})\n\t\t.add({name: fn, url, xhrType: LoaderResource.XHR_RESPONSE_TYPE.BUFFER})\n\t\t.load((ldr, _hRes)=> {\n\t\t\tfor (const {data} of Object.values(ldr.resources)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\tconst {baseTexture} = Texture.from(data);\n\t\t\t\tconst aFr = Object.values(<{[nm: string]: {\n\t\t\t\t\tframe: {x: number; y: number; w: number; h: number;}\n\t\t\t\t}}>frames);\n\t\t\t\tSpritesMng.#hFn2ResAniSpr[res.name] = {\n\t\t\t\t\taTex: aFr.map(({frame: {x, y, w, h}})=> new Texture(\n\t\t\t\t\t\tbaseTexture,\n\t\t\t\t\t\tnew Rectangle(x, y, w, h),\n\t\t\t\t\t)),\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\tmeta,\n\t\t\t\t};\n\t\t\t}\n\t\t\tnext();\n\t\t});\n\t}\n\n\t\tstatic\t#mkSprite(fn: string, hRes: {[fn: string]: LoaderResource}): Sprite {\n\t\t\tconst ras = SpritesMng.#hFn2ResAniSpr[fn];\n\t\t\tif (ras) {\n\t\t\t\tconst asp = new AnimatedSprite(ras.aTex);\n\t\t\t\tasp.animationSpeed = ras.meta.animationSpeed ?? 1.0;\n\t\t\t\tasp.play();\n\t\t\t\treturn asp;\n\t\t\t}\n\t\t\tif (fn in utils.TextureCache) return Sprite.from(fn);\n\t\t\tconst hve = SpritesMng.#hFn2hve[fn];\n\t\t\tif (hve) return Sprite.from(hve);\n\n\t\t\tconst r = hRes[fn];\n\t\t\treturn r ?new Sprite(r.texture) :new Sprite;\n\t\t}\n\tstatic\t#hFn2hve\t: {[fn: string]: HTMLVideoElement} = {};\n\tstatic\tgetHFn2VElm(fn: string) {return SpritesMng.#hFn2hve[fn]}\n\n\tstatic\twv(hArg: HArg): boolean {\n\t\t// 動画ファイル名指定でいいかなと。なぜなら「ループで再生しつつ」\n\t\t// 同ファイル名の別の動画の再生は待ちたい、なんて状況は普通は無いだろうと\n\t\tconst {fn} = hArg;\n\t\tif (! fn) throw 'fnは必須です';\n\t\tconst hve = SpritesMng.#hFn2hve[fn];\n\t\tif (! hve || hve.loop) return false;\n\n\t\tif (SpritesMng.#evtMng.isSkipping || hve.ended) {SpritesMng.stopVideo(fn); return false}\n\n\t\tconst RPN_WV = 'wv fn:'+ fn;\n\t\tconst stop = argChk_Boolean(hArg, 'stop', true);\n\t\tconst fnc = ()=> {if (stop) SpritesMng.stopVideo(fn)};\n\t\tReading.beginProc(RPN_WV, fnc, true, fnc);\n\t\thve.addEventListener('ended', ()=> Reading.notifyEndProc(RPN_WV), {once: true, passive: true});\n\n\t\treturn true;\n\t}\n\n\tstatic\tstopVideo(fn: string) {\n\t\tconst hve = SpritesMng.#hFn2hve[fn];\n\t\tif (! hve) return;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete SpritesMng.#hFn2hve[fn];\n\t\thve.pause();\n\t\thve.currentTime = hve.duration;\n\t}\n\n\n\tstatic\tadd_face(hArg: HArg): boolean {\n\t\tconst {name} = hArg;\n\t\tif (! name) throw 'nameは必須です';\n\t\tif (name in SpritesMng.#hFace) throw '一つのname('+ name +')に対して同じ画像を複数割り当てられません';\n\n\t\tconst {fn = name} = hArg;\n\t\tSpritesMng.#hFace[name] = {\n\t\t\tfn,\n\t\t\tdx: argChk_Num(hArg, 'dx', 0),\n\t\t\tdy: argChk_Num(hArg, 'dy', 0),\n\t\t\tblendmode: Layer.getBlendmodeNum(hArg.blendmode ?? '')\n\t\t};\n\n\t\treturn false;\n\t}\n//\tstatic\tclearFace2Name(): void {SpritesMng.hFace = {}}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {Layer, type T_RecordPlayBack_lay} from './Layer';\n\nimport {CmnLib, argChk_Boolean, argChk_Num} from './CmnLib';\nimport type {HArg} from './Grammar';\nimport type {IMain, IVariable} from './CmnInterface';\nimport type {Config} from './Config';\nimport type {SysBase} from './SysBase';\nimport {EventListenerCtn} from './EventListenerCtn';\nimport type {SoundMng} from './SoundMng';\nimport type {IMakeDesignCast} from './LayerMng';\nimport {GrpLayDesignCast} from './DesignCast';\nimport {SpritesMng} from './SpritesMng';\nimport {Reading} from './Reading';\n\nimport {Sprite, AnimatedSprite, RenderTexture, type Application} from 'pixi.js';\n\n\nexport type T_RP_layGrp = T_RecordPlayBack_lay & {\n\tsBkFn\t: string;\n\tsBkFace\t: string;\n}\n\n\nexport class GrpLayer extends Layer {\n\tstatic\treadonly\t#elc\t= new EventListenerCtn;\n\n\tstatic\t#appPixi: Application;\n\tstatic\tinit(main: IMain, cfg: Config, appPixi: Application, sys: SysBase, sndMng: SoundMng, val: IVariable): void {\n\t\tGrpLayer.#appPixi = appPixi;\n\t\tSpritesMng.init(cfg, val, sys, main, sndMng);\n\t}\n\tstatic\tdestroy() {GrpLayer.#elc.clear(); SpritesMng.destroy()}\n\n\treadonly\t#idc\t= new GrpLayDesignCast(this.ctn, this);\n\tconstructor() {\n\t\tsuper();\n\t\tif (CmnLib.isDbg) {\n\t\t\tthis.#setIdcSp = sp=> this.#idc.setSp(sp);\n\t\t\tthis.cvsResize = ()=> {super.cvsResize(); this.#idc.cvsResize()}\n\t\t}\n\t}\n\t#setIdcSp\t: (sp: Sprite)=> void\t= ()=> { /* empty */ };\n\n\t#csvFn\t\t= '';\n\t#sBkFn\t\t= '';\n\t#sBkFace\t= '';\n\toverride readonly\tlay = (hArg: HArg)=> {\n\t\tconst RPN_GRP_LAY = Reading.procID +`GrpLayer lay name:${this.name_}`;\n\t\tconst ret = this.#laySub(hArg, isStop=> {\n\t\t\tif (isStop) Reading.endProc(RPN_GRP_LAY);\n\t\t});\n\t\tif (ret) Reading.beginProc(RPN_GRP_LAY);\n\t\treturn ret;\n\t}\n\t#laySub(hArg: HArg, resolve: (isStop: boolean)=> void): boolean {\n\t\tconst {fn, face = ''} = hArg;\n\t\tthis.#idc.sethArg(hArg);\n\t\tif (! fn) {\n\t\t\tsuper.lay(hArg);\n\n\t\t\tif (this.ctn.children.length > 0) this.setPos(hArg);\n\t\t\tthis.#sBkFn = '';\n\t\t\tthis.#csvFn = this.#sBkFace = face;\n\t\t\tresolve(false);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst inFn = 'fn' in hArg;\n\t\tconst inFace = 'face' in hArg;\n\n\t\tthis.clearLay({clear_filter: argChk_Boolean(hArg, 'clear_filter', true)});\n\t\tif (inFn) this.#sBkFn = fn;\t// clearLay()後に置く事\n\t\tif (inFace) this.#sBkFace = face;\n\t\tsuper.lay(hArg);\t// filter設定してる場合も\n\n\t\thArg.dx = 0;\n\t\thArg.dy = 0;\n\n\t\tthis.#sps.destroy();\n\t\tthis.#sps = new SpritesMng(\n\t\t\tthis.#csvFn = fn + (face ?','+ face :''),\n\t\t\tthis.ctn,\n\t\t\tsp=> {\n\t\t\t\tif ('width' in hArg || 'height' in hArg) {\n\t\t\t\t\tsp.width = argChk_Num(hArg, 'width', 0);\n\t\t\t\t\tsp.height = argChk_Num(hArg, 'height', 0);\n\t\t\t\t}\n\t\t\t\tthis.#width = sp.width;\n\t\t\t\tthis.#height = sp.height;\n\t\t\t\tLayer.setXY(sp, hArg, this.ctn, true);\n\t\t\t\tLayer.setBlendmode(this.ctn, hArg);\n\t\t\t//\tif (hArg.page === 'fore') this.rsvEvent(sp);\t// ======\n\t\t\t\t\t// [lay page=fore]のみswfアニメ終了イベント発生\n\t\t\t\tthis.#setIdcSp(sp);\n\t\t\t},\n\t\t\tisStop=> resolve(isStop),\n\t\t);\n\t\treturn this.#sps.ret;\n\t}\n\t#sps\t= new SpritesMng;\n\t#width\t= 0;\n\t#height\t= 0;\n\toverride\tget\twidth() {return this.#width}\n\toverride\tget\theight() {return this.#height}\n\n\n\toverride\trenderStart() {\n\t\tthis.#spTsy = new Sprite(this.#rtTsy);\n\t\tthis.#spTsy.visible = false;\n\t\tthis.ctn.addChildAt(this.#spTsy, 0);\n\t\tthis.#spTsy.position.set(-this.ctn.x, -this.ctn.y);\n\n\t\tlet fncRenderFore = ()=> {\n\t\t\tconst a = this.ctn.alpha;\n\t\t\tthis.ctn.alpha = 1;\n\t\t\tfor (const s of this.ctn.children) s.visible = true;\n\t\t\tthis.#spTsy.visible = false;\n\t\t\tGrpLayer.#appPixi.renderer.render(this.ctn, {renderTexture: this.#rtTsy});\t// clear: true\n\t\t\tthis.ctn.alpha = a;\n\t\t\tfor (const s of this.ctn.children) s.visible = false;\n\t\t}\n\t\tif (! this.containMovement) {\n\t\t\tconst oldFnc = fncRenderFore;\t// 動きがないなら最初に一度\n\t\t\tfncRenderFore = ()=> {fncRenderFore = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\t\tthis.#fncRender = ()=> {\n\t\t\tfncRenderFore();\n\t\t\tthis.#spTsy.visible = true;\n\t\t};\n\t\tGrpLayer.#appPixi.ticker.add(this.#fncRender);\n\t}\n\t#rtTsy\t= RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTsy\t= new Sprite;\n\t#fncRender = ()=> { /* empty */ };\n\toverride\trenderEnd() {\n\t\tGrpLayer.#appPixi.ticker.remove(this.#fncRender);\n\t\tthis.ctn.removeChild(this.#spTsy);\n\t\tfor (const s of this.ctn.children) s.visible = true;\n\t\tthis.#spTsy.destroy(true);\n\n\t\tthis.#rtTsy = RenderTexture.create({\n\t\t\twidth\t: CmnLib.stageW,\n\t\t\theight\t: CmnLib.stageH,\n\t\t});\n\t}\n\n\n\tsetPos(hArg: HArg): void {\n\t\tLayer.setXY(\n\t\t\tthis.ctn.children[0] ?? this.ctn,\n\t\t\thArg,\n\t\t\tthis.ctn,\n\t\t\ttrue\n\t\t);\n\t}\n\n\t// アニメ・動画を含むか\n\toverride get containMovement() {\n\t\tif (this.#csvFn === '') return false;\n\n\t\tconst c = this.ctn.children;\n\t\treturn this.#csvFn.split(',').some(\n\t\t\t(fn, i)=> c[i] instanceof AnimatedSprite || SpritesMng.getHFn2VElm(fn)\n\t\t);\n\t}\n\n\toverride clearLay(hArg: HArg): void {\n\t\tsuper.clearLay(hArg);\n\t\tthis.#sps.destroy();\n\t\tthis.#sBkFn\t\t= '';\n\t\tthis.#sBkFace\t= '';\n\t\tthis.#csvFn\t\t= '';\n\t}\n\toverride readonly record = ()=> ({...super.record(),\n\t\tsBkFn\t\t: this.#sBkFn,\n\t\tsBkFace\t\t: this.#sBkFace,\n//\t\tidc_hArg\t: this.#idc.gethArg(),\n\t});\n\toverride playback(hLay: T_RP_layGrp, aPrm: Promise<void>[]): void {\n\t\tsuper.playback(hLay, aPrm);\n\t\tif (hLay.sBkFn === '' && hLay.sBkFace === '') {\n\t\t\tthis.#sBkFn\t\t= '';\n\t\t\tthis.#sBkFace\t= '';\n//\t\t\tthis.#idc.sethArg(hLay.idc_hArg);\n\t\t\treturn;\n\t\t}\n\n\t\taPrm.push(new Promise(re=> this.#laySub(\n\t\t\t{fn: hLay.sBkFn, face: hLay.sBkFace, left: hLay.x, top: hLay.y, alpha: hLay.alpha, blendmode: Layer.getNum2Blendmode(hLay.blendMode), rotation: hLay.rotation, scale_x: hLay.scale_x, scale_y: hLay.scale_y},\n\t\t\t_isStop=> {this.ctn.position.set(hLay.x, hLay.y); re()},\n\t\t\t\t// Layer.setXY()の後に再度移動\n\t\t)));\n\t}\n\n\toverride makeDesignCast(gdc: IMakeDesignCast) {\n\t\tif (! this.ctn.visible) return;\n\t\tgdc(this.#idc);\n\t}\n\t//makeDesignCastChildren(_gdc: IMakeDesignCast) {}\n\n\toverride cvsResize() {super.cvsResize()}\n\n\toverride showDesignCast() {this.#idc.visible = true}\n\t//showDesignCastChildren() {}\n\n\toverride readonly dump = ()=> super.dump() +`, \"pic\":\"${this.#csvFn}\"`;\n\n}\n","/* eslint-disable no-irregular-whitespace */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/restrict-template-expressions */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2024-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {argChk_Boolean, argChk_Num} from './CmnLib';\nimport type {HArg} from './Grammar';\n\nimport type {Rectangle} from 'pixi.js';\n\n\nexport type IChRect = {\n\tch\t\t: string;\n\trect\t: Rectangle;\n\telm\t\t: HTMLElement;\n}\n\nexport type T_RP_Hyphenation = {\n\t行頭禁則?\t\t: string;\n\t行末禁則?\t\t: string;\n\t分割禁止?\t\t: string;\n\tぶら下げ?\t\t: string;\n\tbreak_fixed\t\t: boolean;\n\tbreak_fixed_left: number;\n\tbreak_fixed_top\t: number;\n\tbura\t\t\t: boolean;\n}\n\n\nconst def行頭禁則\t= '、。,.)]}〉」』】〕”〟ぁぃぅぇぉっゃゅょゎァィゥェォッャュョヮヵヶ!?!?‼⁉・ーゝゞヽヾ々';\nconst def行末禁則\t= '[({〈「『【〔“〝';\nconst def分割禁止\t= '─‥…';\nconst defぶら下げ\t= def行頭禁則;\n\nconst defReg行頭禁則\t= new RegExp(`[${def行頭禁則}]`);\nconst defReg行末禁則\t= new RegExp(`[${def行末禁則}]`);\nconst defReg分割禁止\t= new RegExp(`[${def分割禁止}]`);\nconst defRegぶら下げ\t= defReg行頭禁則;\n\n\nexport class Hyphenation {\n\t#s行頭禁則\t\t= def行頭禁則;\n\t#s行末禁則\t\t= def行末禁則;\n\t#s分割禁止\t\t= def分割禁止;\n\t#sぶら下げ\t\t= defぶら下げ;\n\tget 行頭禁則() {return this.#s行頭禁則}\n\tget 行末禁則() {return this.#s行末禁則}\n\tget 分割禁止() {return this.#s分割禁止}\n\tget ぶら下げ() {return this.#sぶら下げ}\n\n\t#reg行頭禁則\t= defReg行頭禁則;\n\t#reg行末禁則\t= defReg行末禁則;\n\t#reg分割禁止\t= defReg分割禁止;\n\t#regぶら下げ\t= defRegぶら下げ;\n\n\tbreak_fixed\t\t= false;\n\tbreak_fixed_left= 0;\n\tbreak_fixed_top\t= 0;\n\tbura\t\t\t= false;\n\tlay(hArg: HArg) {\n\t\tif (hArg.kinsoku_sol) {\n\t\t\tthis.#s行頭禁則 = hArg.kinsoku_sol;\n\t\t\tthis.#reg行頭禁則 = new RegExp(`[${this.#s行頭禁則}]`);\n\t\t}\n\t\tif (hArg.kinsoku_eol) {\n\t\t\tthis.#s行末禁則 = hArg.kinsoku_eol;\n\t\t\tthis.#chk禁則の競合_ぶら行末();\n\t\t\tthis.#reg行末禁則 = new RegExp(`[${this.#s行末禁則}]`);\n\t\t}\n\t\tif (hArg.kinsoku_dns) {\n\t\t\tthis.#s分割禁止 = hArg.kinsoku_dns;\n\t\t\tthis.#chk禁則の競合_ぶら分禁();\n\t\t\tthis.#reg分割禁止 = new RegExp(`[${this.#s分割禁止}]`);\n\t\t}\n\t\tif (hArg.kinsoku_bura) {\n\t\t\tthis.#sぶら下げ = hArg.kinsoku_bura;\n\t\t\tthis.#chk禁則の競合_ぶら行末();\n\t\t\tthis.#chk禁則の競合_ぶら分禁();\n\t\t\tthis.#regぶら下げ = new RegExp(`[${this.#sぶら下げ}]`);\n\t\t}\n\t\tif ('bura' in hArg) this.bura = argChk_Boolean(hArg, 'bura', false);\n\n\t\tthis.break_fixed\t\t= argChk_Boolean(hArg, 'break_fixed', this.break_fixed);\n\t\tthis.break_fixed_left\t= argChk_Num(hArg, 'break_fixed_left', this.break_fixed_left);\n\t\tthis.break_fixed_top\t= argChk_Num(hArg, 'break_fixed_top', this.break_fixed_top);\n\t}\n\t\t// 禁則の競合(ぶら下げ と 行末禁則 の両方に含まれる文字があってはならない)\n\t\t#chk禁則の競合_ぶら行末() {\n\t\t\t// 処理速度最適化で主従を変える。長い方をネイティブにやらせる\n\t\t\tconst len行末禁則 = this.#s行末禁則.length;\n\t\t\tconst lenぶら下げ = this.#sぶら下げ.length;\n\t\t\tif (len行末禁則 < lenぶら下げ) {\n\t\t\t\tfor (let i=0; i<len行末禁則; ++i) {\n\t\t\t\t\tconst c = this.#s行末禁則[i];\n\t\t\t\t\tif (this.#sぶら下げ.includes(c!)) throw `禁則の競合があります。文字 ${c} がぶら下げ と 行末禁則 の両方に含まれます`;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tfor (let i=0; i<lenぶら下げ; ++i) {\n\t\t\t\t\tconst c = this.#sぶら下げ[i];\n\t\t\t\t\tif (this.#s行末禁則.includes(c!)) throw `禁則の競合があります。文字 ${c} がぶら下げ と 行末禁則 の両方に含まれます`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// 禁則の競合(ぶら下げ と 分割禁止 の両方に含まれる文字があってはならない)\n\t\t#chk禁則の競合_ぶら分禁() {\n\t\t\t// 処理速度最適化で主従を変える。長い方をネイティブにやらせる\n\t\t\tconst len分割禁止 = this.#s分割禁止.length;\n\t\t\tconst lenぶら下げ = this.#sぶら下げ.length;\n\t\t\tif (len分割禁止 < lenぶら下げ) {\n\t\t\t\tfor (let i=0; i<len分割禁止; ++i) {\n\t\t\t\t\tconst c = this.#s分割禁止[i];\n\t\t\t\t\tif (this.#sぶら下げ.includes(c!)) throw `禁則の競合があります。文字 ${c} がぶら下げ と 分割禁止 の両方に含まれます`;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tfor (let i=0; i<lenぶら下げ; ++i) {\n\t\t\t\t\tconst c = this.#sぶら下げ[i];\n\t\t\t\t\tif (this.#s分割禁止.includes(c!)) throw `禁則の競合があります。文字 ${c} がぶら下げ と 分割禁止 の両方に含まれます`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\treNew(to: Hyphenation) {\n\t\tto.#genKinsoku(this.#s行頭禁則, this.#s行末禁則, this.#s分割禁止, this.#sぶら下げ);\n\n\t\tto.break_fixed\t\t= this.break_fixed;\n\t\tto.break_fixed_left\t= this.break_fixed_left;\n\t\tto.break_fixed_top\t= this.break_fixed_top;\n\t\tto.bura\t\t\t\t= this.bura;\n\t}\n\t\t#genKinsoku(s行頭禁則: string, s行末禁則: string, s分割禁止: string, sぶら下げ: string) {\n\t\t\tif (this.#s行頭禁則\t!== s行頭禁則) {\n\t\t\t\tthis.#s行頭禁則\t= s行頭禁則;\n\t\t\t\tthis.#reg行頭禁則 = new RegExp(`[${s行頭禁則}]`);\n\t\t\t}\n\t\t\tif (this.#s行末禁則\t!== s行末禁則) {\n\t\t\t\tthis.#s行末禁則\t= s行末禁則;\n\t\t\t\tthis.#reg行末禁則 = new RegExp(`[${s行末禁則}]`);\n\t\t\t}\n\t\t\tif (this.#s分割禁止\t!== s分割禁止) {\n\t\t\t\tthis.#s分割禁止\t= s分割禁止;\n\t\t\t\tthis.#reg分割禁止 = new RegExp(`[${s分割禁止}]`);\n\t\t\t}\n\t\t\tif (this.#sぶら下げ\t!== sぶら下げ) {\n\t\t\t\tthis.#sぶら下げ\t= sぶら下げ;\n\t\t\t\tthis.#regぶら下げ = new RegExp(`[${sぶら下げ}]`);\n\t\t\t}\n\t\t}\n\trecord() {\n\t\tconst o: T_RP_Hyphenation = {\n\t\t\tbreak_fixed\t\t\t: this.break_fixed,\n\t\t\tbreak_fixed_left\t: this.break_fixed_left,\n\t\t\tbreak_fixed_top\t\t: this.break_fixed_top,\n\t\t\tbura\t\t\t\t: this.bura,\n\t\t};\n\t\tif (this.#s行頭禁則 === def行頭禁則) o.行頭禁則 = this.#s行頭禁則;\n\t\tif (this.#s行末禁則 === def行末禁則) o.行末禁則 = this.#s行末禁則;\n\t\tif (this.#s分割禁止 === def分割禁止) o.分割禁止 = this.#s分割禁止;\n\t\tif (this.#sぶら下げ === defぶら下げ) o.ぶら下げ = this.#sぶら下げ;\n\t\t\t// デフォルト値と同じならJSONで省略\n\t\treturn o;\n\t}\n\tplayback(hLay?: T_RP_Hyphenation) {\n\t\tif (! hLay) return;\t\t// 途中追加なので\n\n\t\tthis.#genKinsoku(\n\t\t\thLay.行頭禁則 ?? def行頭禁則,\n\t\t\thLay.行末禁則 ?? def行末禁則,\n\t\t\thLay.分割禁止 ?? def分割禁止,\n\t\t\thLay.ぶら下げ ?? defぶら下げ,\n\t\t);\n\n\t\tthis.break_fixed\t\t= hLay.break_fixed;\n\t\tthis.break_fixed_left\t= hLay.break_fixed_left;\n\t\tthis.break_fixed_top\t= hLay.break_fixed_top;\n\t\tthis.bura\t\t\t\t= hLay.bura;\n\t}\n\n\thyph(htmTxt: HTMLSpanElement, cnvRect :(rng: Range, ch: string)=> Rectangle, tategaki: boolean, begin: number, bkHtm: string): [IChRect[], number] {\n\t\tlet a: IChRect[];\n\t\tlet len = 0;\n\t\tlet i = 2;\t\t// 本来 1 だがひと文字目の行頭禁則文字を無視したいので\n\t\tlet fncFirstChk = (len: number)=> {\n\t\t\tfncFirstChk = ()=> false;\n\n\t\t\tif (begin === len) {\t// 右クリック戻りなどで文字表示が崩れる件の対応\n\t\t\t\tif (begin > 0) htmTxt.innerHTML = bkHtm.replaceAll('class=\"sn_ch\"', 'class=\"sn_ch sn_ch_in_default\"');\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn len < 2;\n\t\t};\n//console.log(`🎴禁則処理判定ループ begin:${begin}`);\n\t\tdo {\n\t\t\ta = this.#getChRects(htmTxt, cnvRect);\n\t\t\tlen = a.length;\n\t\t\tif (fncFirstChk(len)) break;\n\n\t\t\t// 禁則処理判定ループ\n\t\t\tlet sl_xy = -Infinity;\t// 前回のxy\n//console.log(`- len:${len} a_ch:${a.map((v, i)=> v.elm.tagName === 'RT' ?[] :[i, v.ch])}:`);\n\t\t\tfor (; i<len; ++i) {\n\t\t\t\tconst {elm, rect, ch} = a[i]!;\n\t\t\t\tif (elm.tagName === 'RT') continue;\t// ルビはスキップ\n\n\t\t\t\tconst xy = tategaki ?rect.y :rect.x;\n//if (sl_xy > 790)\n//console.log(`🎴 sl_xy:${sl_xy.toFixed(2)} xy:${xy.toFixed(2)} i:${i} ch:${ch}: rect:(${rect.left.toFixed(2)}, ${rect.top.toFixed(2)}, ${rect.width.toFixed(2)}, ${rect.height.toFixed(2)})`);\n\t\t\t\tif (sl_xy <= xy\t// 【 < 】では[tcy]二文字目を誤判定する\n\t\t\t\t// [r]による改行後は追い出し処理をしないように\n\t\t\t\t|| elm.previousElementSibling?.tagName === 'SPAN'\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\t\t&&\telm.previousElementSibling?.innerHTML.includes('<br>')\n\t\t\t\t// <span class=\"offrec\"> 〜 </span> 外し\n\t\t\t\t|| elm.parentElement?.previousElementSibling?.tagName === 'SPAN'\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\t\t&&\telm.parentElement?.previousElementSibling?.innerHTML.includes('<br>')) {\n\t\t\t\t\tsl_xy = xy;\n\t\t\t\t\tif (! this.break_fixed) {\n\t\t\t\t\t\tthis.break_fixed_left = rect.x;\n\t\t\t\t\t\tthis.break_fixed_top = rect.y;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n/*\n\t// [r]などの改行はこう。TxtLayer.#tagCh_sub()により <span> に入れられる\n\t<span class=\"sn_ch\" style=\"display: inline;animation-delay: 10ms;\">\n\t\t<br>\n\t</span>\n\n\t// 上記が下記に囲まれている場合もある。previousElementSibling 使用時は注意\n\t<span class=\"offrec\"> 〜 </span>\n\n\n\t// 禁則処理による自動改行はこう\n\t<br>\n*/\n\n\t\t\t\tconst p_i = this.#i2pi(a, i);\n\t\t\t\tconst {elm: p_elm, rect: p_rect, ch: p_ch} = a[p_i]!;\n//console.log(`🎴 === 自動改行発生! 前文字:${p_i}:${p_ch}:%o 今文字:${i}:${ch}:(${ch.charCodeAt(0).toString(16)})%o`, a[p_i].elm, a[i].elm);\n\t\t\t\tif (! this.break_fixed) {\n\t\t\t\t\tthis.break_fixed_left = p_rect.x;\n\t\t\t\t\tthis.break_fixed_top = p_rect.y;\n\t\t\t\t\tconst sty = globalThis.getComputedStyle(p_elm);\n\t\t\t\t\tconst rs = parseFloat(sty.fontSize);\n\t\t\t\t\tif (tategaki)\tthis.break_fixed_top += rs;\n\t\t\t\t\telse\t\t\tthis.break_fixed_left += rs;\n\t\t\t\t}\n\n\t\t\t\tsl_xy = -Infinity;\t// 自動改行発生!\n\t\t\t\tconst oldI = i;\n\t\t\t\tconst {cont, ins} = this.bura\n\t\t\t\t\t? this.hyph_alg_bura(a, p_i, p_ch, i)\n\t\t\t\t\t: this.hyph_alg(a, p_i, p_ch, i, ch);\n\t\t\t\ti = ins;\n//console.log(`🎴 === cont:${cont} ins:${i} :${a[i].ch}:%o の前に改行を挿入`, a[i].elm);\n\t\t\t\tif (cont) continue;\n\n\t\t\t\t// 改行挿入\n\t\t\t\tconst elm2 = a[i]!.elm;\n\t\t\t\tconst pal = elm2.parentElement!;\n\t\t\t\tconst br = document.createElement('br');\n\t\t\t\tif (pal.classList.contains('sn_tx')) pal.insertBefore(br, elm2); else {\n\t\t\t\t\tconst ppal = pal.parentElement!;\n\t\t\t\t\tif (ppal.classList.contains('sn_ch')) {\n\t\t\t\t\t\tppal.parentElement!.insertBefore(br, ppal);\n\t\t\t\t\t}\n\t\t\t\t\telse ppal.insertBefore(br, pal);\n\t\t\t\t}\n\n\t\t\t\ti += 2;\t// いま追加した<br>のぶんと、次へ行く +1\n\t\t\t\tif (i < oldI) i = oldI;\t// 永久ループ防御\n\t\t\t\tlen = -1;\t// doループ先頭に戻る\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (len < 0);\n\n\t\treturn [a, len];\n\t}\n\t\t// 一つ前の要素を探す(ルビ対応)\n\t\t#i2pi(a: IChRect[], i: number): number {\n\t\t\tconst p_i = i -1;\n\t\t\tconst {elm} = a[p_i]!;\n\t\t\tif (elm.tagName !== 'RT') return p_i -(\n\t\t\t\telm.style.textCombineUpright === 'all'\n\t\t\t\t? Array.from(elm.textContent).length -1\n\t\t\t\t: 0\n\t\t\t);\n\n\t\t\treturn p_i -Array.from(elm.textContent).length;\n\t\t\t\t// サロゲートペア対策\n\t\t}\n\n\t#getChRects(elm: Node, cnvRect :(range: Range, ch: string)=> Rectangle): IChRect[] {\t// 注意)再帰関数\n\t\tconst ret: IChRect[] = [];\n\t\tif (elm.nodeType !== elm.TEXT_NODE) return Array.from(elm.childNodes).map(v=> this.#getChRects(v, cnvRect)).flat();\n\n\t\tconst rng = elm.ownerDocument!.createRange();\n\t\trng.selectNodeContents(elm);\n\t\tlet pos = 0;\n\t\tconst end = rng.endOffset;\n\t\t// できれば一文字ずつ「after-edge - baseline」を調べたいが、暫定手段を取る\n\t\t//const styles = globalThis.getComputedStyle(this.htmTxt);\n\t\t//console.log('lh:'+ styles.lineHeight +' fs:'+ styles.fontSize);\n\t\twhile (pos < end) {\n\t\t\trng.setStart(elm, pos);\n\t\t\trng.setEnd(elm, ++pos);\n\t\t\tconst ch = rng.toString();\n\t\t\tret.push({\n\t\t\t\tch,\n\t\t\t\trect: cnvRect(rng, ch),\n\t\t\t\telm\t: rng.startContainer.parentElement!,\n\t\t\t});\n\t\t}\n\t\trng.detach();\n\n\t\treturn ret;\n\t}\n\n\t/**\n\t * 抽象化した禁則処理アルゴリズム\n\t * @method hyph_alg\n\t * @param {IChRect[]} a - 文章の抽象化配列\n\t * @param {number} p_i - 処理要素の一つ前の添字\n\t * @param {string} p_ch - 処理要素の一つ前の文字\n\t * @param {number} i - 処理要素の添字\n\t * @param {string} ch - 処理要素の文字\n\t * @return {Object} result 戻り値\n\t * @return {boolean} result.cont - true: 呼び元で改行挿入せず continue\n\t * @return {number} result.ins - 手前に改行を挿入すべき要素の添字\n\t */\n\thyph_alg(\t// テスト用にpublic\n\t\ta\t: IChRect[],\n\t\tp_i\t: number,\n\t\tp_ch: string,\n\t\tii\t: number,\t// i >= 2\n\t\tch\t: string,\n\t): {cont: boolean, ins: number} {\n\t\t// 追い出し走査\n\t\tlet i = ii;\n\t\tif (this.#reg行末禁則.test(p_ch)) { /* empty */ }\t// 一つ前\n\t\telse if (this.#reg行頭禁則.test(ch)) {\t//(現在地 -> 前方走査)\n\t\t\twhile ((i = this.#i2pi(a, i)) >= 0) {\n\t\t\t\tif (! this.#reg行頭禁則.test(a[i]!.ch)) break;// 行頭禁則はスキップ\n\t\t\t}\n\t\t}\n\t\telse if (p_ch === ch && this.#reg分割禁止.test(p_ch)) { /* empty */ }// 一つ前&現在地\n\t\telse return {cont: true, ins: i +1};\t// 追い出しなし\n\n\t\t// 追い出しによる新行末二次判定(一つ前 -> 前方走査)\n\t\ti = p_i;\n\t\twhile ((i = this.#i2pi(a, i)) >= 0) {\n\t\t\tif (! this.#reg行末禁則.test(a[i]!.ch)) break;\t// 行末禁則はスキップ\n\t\t}\n\t\treturn {cont: false, ins: i +1};\n\t}\n\n\t/**\n\t * 抽象化した禁則処理アルゴリズム\n\t * @method hyph_alg\n\t * @param {IChRect[]} a - 文章の抽象化配列\n\t * @param {number} p_i - 処理要素の一つ前の添字\n\t * @param {string} p_ch - 処理要素の一つ前の文字\n\t * @param {number} i - 処理要素の添字\n\t * @return {Object} result 戻り値\n\t * @return {boolean} result.cont - true: 呼び元で改行挿入せず continue\n\t * @return {number} result.ins - 手前に改行を挿入すべき要素の添字\n\t */\n\thyph_alg_bura(\t// テスト用にpublic\n\t\ta\t: IChRect[],\n\t\tp_i\t: number,\n\t\tp_ch: string,\n\t\ti\t: number,\t// i >= 2\n\t): {cont: boolean, ins: number} {\n\t\tconst pp_i = this.#i2pi(a, p_i);\t// 改行後のルビで追い出し発生\n\t\tconst {ch: pp_ch} = a[pp_i]!;\n//console.log(`🎴 hyph_alg_bura pp:${pp_i}:${pp_ch}: p:${p_i}:${p_ch}: i:${i}:${a[i].ch}:`);\n\t\t// 改行前二個目に「ぶら下げ」がある\n\t\tif (this.#regぶら下げ.test(pp_ch) || this.#reg行頭禁則.test(pp_ch)) {\n\t\t\tlet j = p_i;\n\t\t\t// 改行前にも「ぶら下げ」がある\n\t\t\tif (this.#regぶら下げ.test(p_ch) || this.#reg行頭禁則.test(p_ch)) ++j;\n\n\t\t\t// ぶら下げ後……追い出し走査\n\t\t\tconst p_j = this.#i2pi(a, j);\t// pp_i ではない\n\t\t\tconst {ch: last_ch} = a[p_j]!;\t// 行末\n\t\t\tconst {ch: head_ch} = a[j]!;\t\t// 行頭\n\t\t\t// 分割禁止\n\t\t\tif (last_ch === head_ch && this.#reg分割禁止.test(head_ch)) return {cont: false, ins: p_j};\n\n\t\t\tif (! this.#reg行末禁則.test(last_ch)) return {cont: false, ins: j};\n\t\t\t// 行末禁則\n\t\t\tj = p_j;\n\t\t\tdo {\n\t\t\t\tif (! this.#reg行末禁則.test(a[j]!.ch)) break;\t// 行禁はスキップ\n\t\t\t} while ((j = this.#i2pi(a, j)) >= 0);\n\t\t\treturn {cont: false, ins: j +1};\t// 行末禁則\n\t\t}\n\n\t\t// 改行前二個目に「ぶら下げ」がない\n\t\tconst ppp_i = this.#i2pi(a, pp_i);\n\t\tif (i >= 3) {\n\t\t\tconst {ch: ppp_ch} = a[ppp_i]!;\n//console.log(`-- 改行前二個目に「ぶら下げ」がない ppp:${ppp_i}:${ppp_ch}: pp:${pp_i}:${pp_ch}: i:${i}`);\n\t\t\t// 改行前二個目に「分割禁止」\n\t\t\tif (this.#reg分割禁止.test(pp_ch)) {\t// 分割禁止\n//console.log(` == 改行前二個目に「分割禁止」:${ppp_ch === pp_ch}`);\n\t\t\t\tif (ppp_ch === pp_ch) return {cont: false, ins: ppp_i};\n\t\t\t}\n\t\t\t// 改行前三個目に「行末禁則」\n\t\t\tif (this.#reg行末禁則.test(ppp_ch)) {\t// 行末禁則\n\t\t\t\tlet j = ppp_i;\n//console.log(` == 改行前三個目に「行末禁則」 j:${j}:${a[j].ch}:`);\n\t\t\t\twhile ((j = this.#i2pi(a, j)) >= 0) {\n//console.log(` -- ch:${a[j].ch}`);\n\t\t\t\t\tif (! this.#reg行末禁則.test(a[j]!.ch)) break;// 行禁はスキップ\n\t\t\t\t}\n//console.log(` === j:${j +1}:${a[j +1].ch}: tn:${a[j +1].elm.parentElement?.tagName}`);\n\t\t\t\treturn {cont: false, ins: j +1};\t// 行末禁則\n\t\t\t}\n\t\t}\n\n\t\treturn {cont: false, ins: pp_i};\n\t}\n\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n/* eslint-disable @typescript-eslint/restrict-plus-operands */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/restrict-template-expressions */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2025-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {T_InfTxLay} from './TxtStage';\nimport {DebugMng} from './DebugMng';\n\nimport {Texture} from 'pixi.js';\n\n\nexport function htm2tx(fnc: (tx2: any)=> void, htmTxt: HTMLSpanElement, infTL :T_InfTxLay, padTx4x: number, padTx4y: number, hidden = true) {\n\t\t// tsayen/dom-to-image: Generates an image from a DOM node using HTML5 canvas https://github.com/tsayen/dom-to-image\n\n/*---*/\n\t\tconst util = {\n\t\t\tescape: (str: string)=> str.replaceAll(/([.*+?^${}()|[\\]/\\\\])/g, '\\\\$1'),\n\t\t\tmimeType: (url: any)=> {\n\t\t\t\tconst extension = parseExtension(url).toLowerCase();\n\t\t\t\treturn mimes()[extension] || '';\n\t\t\t},\n\t\t\tdataAsUrl,\n\t\t\tisDataUrl,\n\t\t\tresolveUrl,\n\t\t\tgetAndEncode,\n\t\t\tasArray: (arrayLike: StyleSheetList)=> {\n\t\t\t\tconst a: StyleSheet[] = [];\n\t\t\t\tconst len = arrayLike.length;\n\t\t\t\tfor (let i=0; i<len; ++i) a.push(arrayLike[i]!);\n\t\t\t\treturn a;\n\t\t\t},\n\t\t};\n\t\t\tfunction mimes(): any {\n\t\t\t\t// Only WOFF and EOT mime types for fonts are 'real'\n\t\t\t\t// * see http://www.iana.org/assignments/media-types/media-types.xhtml\n\t\t\t\tconst WOFF = 'application/font-woff';\n\t\t\t\tconst JPEG = 'image/jpeg';\n\n\t\t\t\treturn {\n\t\t\t\t\t'woff': WOFF,\n\t\t\t\t\t'woff2': WOFF,\n\t\t\t\t\t'ttf': 'application/font-truetype',\n\t\t\t\t\t'eot': 'application/vnd.ms-fontobject',\n\t\t\t\t\t'png': 'image/png',\n\t\t\t\t\t'jpg': JPEG,\n\t\t\t\t\t'jpeg': JPEG,\n\t\t\t\t\t'gif': 'image/gif',\n\t\t\t\t\t'tiff': 'image/tiff',\n\t\t\t\t\t'svg': 'image/svg+xml'\n\t\t\t\t};\n\t\t\t}\n\n\n\t\tconst inliner = newInliner();\n\n\n\t\tconst fontFaces = newFontFaces();\n\n\n\t\tfunction embedFonts(node: any) {\n\t\t\treturn fontFaces.resolveAll()\n\t\t\t.then(cssText=> {\n\t\t\t\tconst styleNode = document.createElement('style');\n\t\t\t\tnode.appendChild(styleNode);\n\t\t\t\tstyleNode.appendChild(document.createTextNode(cssText));\n\t\t\t//console.log('cssText:%s:', cssText);\t//------------\n\t\t\t\treturn node;\n\t\t\t});\n\t\t}\n\n\n\t\t\tfunction parseExtension(url: any) {\n\t\t\t\tconst match = /\\.([^./]*?)$/g.exec(url);\n\t\t\t\treturn match?.[1] ?? '';\n\t\t\t}\n\n\t\t\tfunction isDataUrl(url: any) {\n\t\t\t\treturn url.search(/^(data:)/) !== -1;\n\t\t\t}\n\n\t\t\tfunction resolveUrl(url: any, baseUrl: any) {\n\t\t\t\tconst doc = document.implementation.createHTMLDocument();\n\t\t\t\tconst base = doc.createElement('base');\n\t\t\t\tdoc.head.appendChild(base);\n\t\t\t\tconst a = doc.createElement('a');\n\t\t\t\tdoc.body.appendChild(a);\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tbase.href = baseUrl;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\ta.href = url;\n\t\t\t\treturn a.href;\n\t\t\t}\n\n\t\t\tfunction getAndEncode(url: any) {\n\t\t\t\tconst TIMEOUT = 30000;\n\t\t\t\t//if(domtoimage.impl.options.cacheBust) {\n\t\t\t\t\t// Cache bypass so we dont have CORS issues with cached images\n\t\t\t\t\t// Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n\t\t\t\t//\turl += ((/\\?/).test(url) ? \"&\" : \"?\") + (new Date).getTime();\n\t\t\t\t//}\n\n\t\t\t\treturn new Promise(function(resolve) {\n\t\t\t\t\tconst request = new XMLHttpRequest;\n\n\t\t\t\t\trequest.onreadystatechange = done;\n\t\t\t\t\trequest.ontimeout = timeout;\n\t\t\t\t\trequest.responseType = 'blob';\n\t\t\t\t\trequest.timeout = TIMEOUT;\n\t\t\t\t\trequest.open('GET', url, true);\n\t\t\t\t\trequest.send();\n\n\t\t\t\t\t//let placeholder;\n\t\t\t\t\t//if(domtoimage.impl.options.imagePlaceholder) {\n\t\t\t\t\t//\tlet split = domtoimage.impl.options.imagePlaceholder.split(/,/);\n\t\t\t\t\t//\tif(split && split[1]) {\n\t\t\t\t\t//\t\tplaceholder = split[1];\n\t\t\t\t\t//\t}\n\t\t\t\t\t//}\n\n\t\t\t\t\tfunction done() {\n\t\t\t\t\t\tif (request.readyState !== 4) return;\n\n\t\t\t\t\t\tif (request.status !== 200) {\n\t\t\t\t\t\t//\tif(placeholder) {\n\t\t\t\t\t\t//\t\tresolve(placeholder);\n\t\t\t\t\t\t//\t} else {\n\t\t\t\t\t\t\t\tfail('cannot fetch resource: ' + url + ', status: ' + request.status);\n\t\t\t\t\t\t//\t}\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst encoder = new FileReader;\n\t\t\t\t\t\tencoder.onloadend = function() {\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-base-to-string\n\t\t\t\t\t\t\tconst content = encoder.result!.toString().split(/,/)[1];\n\t\t\t\t\t\t\tresolve(content);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tencoder.readAsDataURL(request.response);\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction timeout() {\n\t\t\t\t\t//\tif(placeholder) {\n\t\t\t\t\t//\t\tresolve(placeholder);\n\t\t\t\t\t//\t} else {\n\t\t\t\t\t\t\tfail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\n\t\t\t\t\t//\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction fail(message: any) {\n\t\t\t\t\t\tconsole.error(message);\n\t\t\t\t\t\tresolve('');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction dataAsUrl(content: any, type: any) {\n\t\t\t\treturn 'data:' + type + ';base64,' + content;\n\t\t\t}\n\n\n\t\tfunction newInliner() {\n\t\t\tconst URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n\t\t\treturn {\n\t\t\t\tinlineAll,\n\t\t\t\tshouldProcess,\n\t\t\t};\n\n\t\t\tfunction shouldProcess(str: any) {\n\t\t\t\treturn str.search(URL_REGEX) !== -1;\n\t\t\t}\n\n\t\t\tfunction readUrls(str: any) {\n\t\t\t\tconst result: string[] = [];\n\t\t\t\tlet match: RegExpExecArray | null;\n\t\t\t\t// eslint-disable-next-line no-cond-assign\n\t\t\t\twhile (match = URL_REGEX.exec(str)) {\n\t\t\t\t\tresult.push(match[1]!);\n\t\t\t\t}\n\t\t\t\treturn result.filter(function(url) {\n\t\t\t\t\treturn ! util.isDataUrl(url);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction inline(str: any, url: any, baseUrl: any, get: any) {\n\t\t\t\treturn Promise.resolve(url)\n\t\t\t\t\t.then(url=> baseUrl ? util.resolveUrl(url, baseUrl) : url)\n\t\t\t\t\t.then(get || util.getAndEncode)\n\t\t\t\t\t.then(data=> util.dataAsUrl(data, util.mimeType(url)))\n\t\t\t\t\t.then(dataUrl=> str.replace(urlAsRegex(url), '$1' + dataUrl + '$3'));\n\n\t\t\t\tfunction urlAsRegex(url: any) {\n\t\t\t\t\treturn new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction inlineAll(str: any, baseUrl: any, get?: any) {\n\t\t\t\tif (nothingToInline()) return Promise.resolve(str);\n\n\t\t\t\treturn Promise.resolve(str)\n\t\t\t\t\t.then(readUrls)\n\t\t\t\t\t.then(urls=> {\n\t\t\t\t\t\tlet done = Promise.resolve(str);\n\t\t\t\t\t\tfor (const url of urls) done = done.then(string=> inline(string, url, baseUrl, get));\n\t\t\t\t\t\treturn done;\n\t\t\t\t\t});\n\n\t\t\t\tfunction nothingToInline() {\n\t\t\t\t\treturn ! shouldProcess(str);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction newFontFaces() {\n\t\t\treturn {\n\t\t\t\tresolveAll,\n\t\t\t\timpl: {readAll}\n\t\t\t};\n\n\t\t\tfunction resolveAll() {\n\t\t\t\treturn readAll()\n\t\t\t\t.then(webFonts=> Promise.allSettled(\n\t\t\t\t\twebFonts.map((webFont: any)=> webFont.resolve())\n\t\t\t\t))\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-base-to-string\n\t\t\t\t.then(cssStrings=> cssStrings.join('\\n'));\n\t\t\t}\n\n\t\t\tfunction readAll() {\n\t\t\t\treturn Promise.resolve(util.asArray(document.styleSheets))\n\t\t\t\t\t.then(getCssRules)\n\t\t\t\t\t.then(selectWebFontRules)\n\t\t\t\t\t.then(rules=> rules.map(newWebFont));\n\t\t\t\t\t\t// console.log('map:%o:', rules) ||\n\n\t\t\t\tfunction selectWebFontRules(cssRules: any) {\n\t\t\t\t\treturn cssRules\n\t\t\t\t\t.filter((rule: any)=> rule.type === CSSRule.FONT_FACE_RULE)\n\t\t\t\t\t.filter((rule: any)=> inliner.shouldProcess(rule.style.getPropertyValue('src')));\n\t\t\t\t}\n\n\t\t\t\tfunction getCssRules(styleSheets: any) {\n\t\t\t\t\tconst cssRules: any = [];\n\t\t\t\t\tfor (const sheet of styleSheets) {\n\t\t\t\t\t//console.log('1:%o', sheet);\t//-------\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (sheet.href) continue;\n\t\t\t\t\t\t//console.log(sheet.cssRules);\n\t\t\t\t\t\t\tutil.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tconsole.error('Error while reading CSS rules from ' + sheet.href, String(e));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn cssRules;\n\t\t\t\t}\n\n\t\t\t\tfunction newWebFont(webFontRule: any) {\n\t\t\t\t\t//console.log('newWebFont:%o:', webFontRule);\t//-------\n\t\t\t\t\treturn {\n\t\t\t\t\t\tresolve: function resolve() {\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/prefer-optional-chain\n\t\t\t\t\t\t\tconst baseUrl = (webFontRule.parentStyleSheet || {}).href;\n\t\t\t\t\t\t\treturn inliner.inlineAll(webFontRule.cssText, baseUrl);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsrc() {\n\t\t\t\t\t\t\treturn webFontRule.style.getPropertyValue('src');\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n/*\n\t\tfetch('http://localhost:8080/prj/mat/my_himajihoso.woff2')\n\t\t.then(response=> {\n\t\t\tif (response.ok) return response.blob();\n\t\t\tthrow new Error('Network response was not ok.');\n\t\t})\n\t\t.then(blob=> new Promise((resolve, reject)=> {\n\t\t\tconst reader = new FileReader;\n\t\t\treader.onloadend = ()=> resolve(reader.result);\n\t\t\treader.onerror = reject;\n\t\t\treader.readAsDataURL(blob);\n\t\t}))\n\t\t.then(dataUrl => {\n\t\t\t// data:application/font-woff2;base64,d09GMk9U\n\t\t\tconst css =\n\t\t\t'body { margin: 0px; padding: 0px; overflow: hidden; }\\n'+\n\t\t\t'body { line-height: 36px; }\\n'+\n\n\t\t\t`@font-face { font-family: my_himajihoso; src: url(\"${\n\t\t\t\t'data:application/font-woff;base64,'+\n\t\t\t\tString(dataUrl)\n\t\t\t\t.split(/,/)[1]\n\t\t//\t\t.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1')\n\t\t\t}\"); }`;\n\n\t\tconsole.log('css:'+ css);\n\t\tconsole.log('@font-face { font-family: my_himajihoso; src: url(\"data:application/font-woff;base64,d09GMk9UVE8AAA...bhUAAA==\"); }\\n');\n\t\t\tthis.styleHtmTxt.appendChild(document.createTextNode(css));\n*/\n\n\t\tPromise.resolve(htmTxt)\n\t\t.then(node=> {\t//console.log(`🍇 toSvg`);\n\t\t\tconst cln = <HTMLSpanElement>node.cloneNode(true);\n\t\t\tcln.style.padding = '0px';\t\t// ややこしいのでシンプルに\n\t\t\tcln.style.paddingRight = padTx4x +'px';\n\t\t\tcln.style.paddingTop = padTx4y +'px';\n\t\t\tcln.style.left = '0px';\n\t\t\tcln.style.top = '0px';\n\t\t\tcln.style.width = infTL.$width -infTL.pad_left -infTL.pad_right +'px';\n\t\t\tcln.style.height = infTL.$height -infTL.pad_top -infTL.pad_bottom +'px';\n\t\t\t//console.log(cln.style.cssText);\n\t\t\thtmTxt.hidden = hidden;\n\t\t\treturn cln;\n\t\t})\n\t\t.then(embedFonts)\n\t\t.then(node=> {\t//console.log(`🍈 makeSvgDataUri`);\n\t\t\tnode.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n\t\t\tconst img = new Image;\n\t\t\t//img.crossOrigin = 'Anonymous';\t//--いまのとこ不要\n\t\t\timg.src = `data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${infTL.$width\n\t\t\t}px\" height=\"${infTL.$height\n\t\t\t}px\"><foreignObject x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">${\n\t\t\t\t(new XMLSerializer).serializeToString(node)\n\t\t\t\t.replaceAll('#', '%23').replaceAll('\\n', '%0A')\n\t\t\t}</foreignObject></svg>` // ? + (new Date).getTime();\n\t\t\treturn new Promise(re=> {img.onload = ()=> re(img)});\n\t\t})\n\t\t.then(img=> new Promise(re=> setTimeout(()=> re(img) , 100)))\n\t\t\t// 無くすとSafariでテクスチャ取れない場合があった\n\t\t\t// clearTimeout()不要と判断\n\t\t.then((img: any)=> {\t//console.log(`🍉 toPng`);\n\t\t\tconst canvas = document.createElement('canvas');\n\t\t\tcanvas.width = infTL.$width;\n\t\t\tcanvas.height = infTL.$height;\n\t\t\tcanvas.getContext('2d')!.drawImage(img, 0, 0);\n\t\t\tfnc(Texture.from(canvas));\n\t\t})\n\t\t.catch((e: unknown)=> DebugMng.myTrace(`goTxt() = ${e}`));\n\t}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/restrict-plus-operands */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2019-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, type IEvtMng, argChk_Boolean, argChk_Num} from './CmnLib';\nimport type {HArg} from './Grammar';\nimport type {Config} from './Config';\nimport {CmnTween} from './CmnTween';\nimport {SpritesMng} from './SpritesMng';\nimport {DebugMng} from './DebugMng';\nimport type {IMakeDesignCast} from './LayerMng';\n//import {TxtLayDesignCast, TxtLayPadDesignCast} from './DesignCast';\nimport type {SysBase} from './SysBase';\nimport type {T_RP_Hyphenation, IChRect} from './Hyphenation';\nimport {Hyphenation} from './Hyphenation';\nimport {type ScriptIterator, RPN_COMP_CHIN} from './ScriptIterator';\nimport {Reading} from './Reading';\nimport {htm2tx} from './htm2tx';\n\nimport {Container, Sprite, Graphics, Rectangle, Renderer, Application} from 'pixi.js';\nimport {Tween} from '@tweenjs/tween.js'\n\n\nexport type T_InfTxLay = {\n\tfontsize\t: number;\n\t$width\t\t: number;\t// レイヤサイズであり、背景色(画像)サイズ\n\t$height\t\t: number;\n\tpad_left\t: number;\t// paddingLeft(レイヤサイズの内側のスペーサー)\n\tpad_right\t: number;\t// paddingRight\n\tpad_top\t\t: number;\t// paddingTop\n\tpad_bottom\t: number;\t// paddingBottom\n}\n\ntype T_SpTw = {\n\tsp\t: Container;\n\ttw\t: Tween<Container> | undefined;\n}\n\n\nexport type T_RP_layTxtStage = {\n\tinfTL\t\t: T_InfTxLay;\n\tcssText\t\t: string;\n\tleft\t\t: number;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tch_filter\t: any[];\n\tfi_easing\t: string;\n\tfo_easing\t: string;\n\thyph\t\t: T_RP_Hyphenation;\n}\n\ntype T_ChInOutStyle = {\n\twait\t: number;\n\talpha\t: number;\n\tx\t\t: string;\n\ty\t\t: string;\n\twidth?\t: string;\n\theight?\t: string;\n\tnx\t\t: number;\n\tny\t\t: number;\n\tscale_x\t: number;\n\tscale_y\t: number;\n\trotate\t: number;\n\tjoin\t: boolean;\n\tease\t: string;\n\tdelay?\t: number;\n};\n\nexport class TxtStage extends Container {\n\tstatic\t#cfg\t: Config;\n\tstatic\t#appPixi: Application;\n\tstatic\tinit(cfg: Config, appPixi: Application): void {\n\t\tTxtStage.#cfg = cfg;\n\t\tTxtStage.#appPixi = appPixi;\n\t}\n\tstatic\t#evtMng\t: IEvtMng;\n\tstatic\t#scrItr\t: ScriptIterator;\n\tstatic\tsetEvtMng(evtMng: IEvtMng, scrItr: ScriptIterator) {\n\t\tTxtStage.#evtMng = evtMng;\n\t\tTxtStage.#scrItr = scrItr;\n\t}\n\n\tstatic\tdestroy() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tTxtStage.#hChInStyle\t= Object.create(null);\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tTxtStage.#hChOutStyle\t= Object.create(null);\n\n\t\tTxtStage.delBreak();\n\t}\n\n\n\t\t\t\t#htmTxt\t= document.createElement('span');\t// サンプリング元\n\treadonly\t#cntTxt\t\t\t= new Container;\t\t\t// サンプリング先\n\treadonly\t#grpDbgMasume\t= new Graphics;\n\tstatic\treadonly\t#hWarnStyle = {\n\t\t'background-color'\t\t: 0,\n\t\t'border-bottom-width'\t: 0,\n\t\t'border-left-width'\t\t: 0,\n\t\t'border-right-width'\t: 0,\n\t\t'border-top-width'\t\t: 0,\n\t\t'margin-bottom'\t: 0,\n\t\t'margin-left'\t: 0,\n\t\t'margin-right'\t: 0,\n\t\t'margin-top'\t: 0,\n\t};\n\n\n\t#hyph\t= new Hyphenation;\n\tnoticeCompTxt\t= ()=> { /* empty */ };\n\n\t#fncMasume;\n\n\n\tconstructor(private readonly ctn: Sprite, private readonly canFocus: ()=> boolean, private readonly sys: SysBase) {\n\t\tsuper();\n\n\t\tthis.#htmTxt.classList.add('sn_tx');\n\t\tthis.#htmTxt.style.position = 'absolute';\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tTxtStage.#appPixi.view.parentElement!.appendChild(this.#htmTxt);\n\n\t\tthis.addChild(this.#cntTxt);\n\n\t\tthis.addChild(this.#grpDbgMasume);\n\t\tthis.#grpDbgMasume.name = 'grpDbgMasume';\n\t\tconst fncMasumeLog = CmnLib.debugLog\n\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\t? ({ch, rect: {x, y, width, height}}: IChRect)=> console.log(`🍌 masume ch:${ch} x:${x} y:${y} w:${width} h:${height}`)\n\t\t\t: ()=> { /* empty */ };\n\t\tthis.#fncMasume = TxtStage.#cfg.oCfg.debug.masume\n\t\t\t? (cr: IChRect)=> {\n\t\t\t\tfncMasumeLog(cr);\n\n\t\t\t\tconst {x, y, width, height} = cr.rect;\n\t\t\t\tthis.#grpDbgMasume\n\t\t\t\t.beginFill(0x66CCFF, 0.5)\n\t\t\t\t.lineStyle(2, 0xFF3300, 1)\n\t\t\t\t.drawRect(x, y, width, height)\n\t\t\t\t.endFill();\n\t\t\t}\n\t\t\t: ()=> { /* empty */ };\n\n//\t\tthis.#idc = new TxtLayDesignCast(ctn, this);\n//\t\tthis.#idc.adopt(this.#idcCh);\n\n\t\tthis.noticeCompTxt = sys.isApp && TxtStage.#cfg.oCfg.debug.dumpHtm\n\t\t? ()=> {\n\t\t\tReading.notifyEndProc(RPN_COMP_CHIN);\n\n\t\t\tconst htm = this.#htmTxt.innerHTML;\n\t\t\tif (htm === '') return;\n\t\t\tconst {fn, ln} = TxtStage.#scrItr.nowScrFnLn();\n\t\t\tconst id = `dumpHtm ${\n\t\t\t\tctn.name.slice(0, -7)\t// 末尾「 page=B」削り\n\t\t\t\t.replaceAll(':', '=')\t\t\t// ファイル名で困る文字\n\t\t\t}(fn=${fn} line=${String(ln)})`;\n\t\t\tvoid sys.outputFile(\n\t\t\t\tsys.path_downloads + id +'.htm',\n`<!doctype html><html><head><meta charset=utf-8><title>${id}</title>\n<h1>${id}</h1>${\n\thtm\t// outerHTML からのレイヤ再現などしたいとこだがオーバースペック\n\t.replaceAll(/ class=\"sn_ch\"|animation-delay: \\d+ms; ?| data-add=\"{"ch_in_style":"default", "ch_out_style":"default"}\"/g, '')\n\t.replaceAll(' style=\"\"', '')\t// chromeで警告が出るので\n\t.replaceAll(/(<\\/?ruby>)/g, '\\n$1\\n')\n\t.replaceAll(/<(br|\\/span)>/g, '<$1>\\n')\n}`,\n\t\t\t);\n\t\t}\n\t\t: ()=> Reading.notifyEndProc(RPN_COMP_CHIN);\n\t}\n\n//\treadonly\t#idc\t:TxtLayDesignCast;\n//\treadonly\t#idcCh\t= new TxtLayPadDesignCast(this);\n\t#infTL :T_InfTxLay = {\n\t\tfontsize\t: 24,\n\t\t$width\t\t: 0,\t// レイヤサイズであり、背景色(画像)サイズ\n\t\t$height\t\t: 0,\n\t\tpad_left\t: 0,\t// paddingLeft(レイヤサイズの内側のスペーサー)\n\t\tpad_right\t: 0,\t// paddingRight\n\t\tpad_top\t\t: 0,\t// paddingTop\n\t\tpad_bottom\t: 0,\t// paddingBottom\n\t}\n\n\tlay(hArg: HArg) {\n\t\tconst s = this.#htmTxt.style;\n\t\tif ('style' in hArg) {\n\t\t\tif (hArg.style) {\n\t\t\t\tconst cln = document.createElement('span');\n\t\t\t\tcln.style.cssText = hArg.style;\n\t\t\t\tconst len = cln.style.length;\n\t\t\t\tfor (let i=0; i<len; ++i) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\t\tconst key: any = cln.style[i];\n\t\t\t\t\tif (key in TxtStage.#hWarnStyle) {\n\t\t\t\t\t\tDebugMng.myTrace(`${String(key)}は指定できません`, 'W');\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\ts[key] = cln.style[key]!;\n\t\t\t\t}\n\t\t\t\tif (! cln.style.opacity && 'alpha' in hArg) s.opacity = String(this.ctn.alpha);\n\t\t\t}\n\t\t\telse this.#htmTxt.style.cssText = '';\n\t\t}\n\t\telse if ('alpha' in hArg) s.opacity = String(this.ctn.alpha);\n\n\t\tif ('width' in hArg) s.width = String(hArg.width ?? '0') +'px';\n\t\tif ('height' in hArg) s.height = String(hArg.height ?? '0') +'px';\n\t\tif ('pl' in hArg) s.paddingLeft = String(hArg.pl ?? '0') +'px';\n\t\tif ('pr' in hArg) s.paddingRight = String(hArg.pr ?? '0') +'px';\n\t\tif ('pt' in hArg) s.paddingTop = String(hArg.pt ?? '0') +'px';\n\t\tif ('pb' in hArg) s.paddingBottom = String(hArg.pb ?? '0') +'px';\n\t\tthis.#hyph.lay(hArg);\n\t\tthis.#lay_sub();\n//\t\tthis.#idc.sethArg(hArg);\n\n\t\t// CSS・インラインレイアウトで右や上にはみ出る分の余裕\n\t\tthis.#left = this.ctn.position.x;\n\t\t\t//-(CmnLib.isSafari && !CmnLib.isMobile && this.#isTategaki\n\t\t\t//\t? this.#infTL.pad_left +this.#infTL.pad_right\n\t\t\t//\t: 0);\t// 無効化 2022/02/09\n\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\ts.transformOrigin = `${this.ctn.pivot.x}px ${this.ctn.pivot.y}px`;\n\t\tthis.cvsResize();\n\t\ts.display = this.ctn.visible ?'inline' :'none';\n\n\t\t// パディングキャスト変更時・クリック待ち表示を追従させる(高速再描写)\n\t\tif (':redraw' in hArg && this.#lenHtmTxt > 0) {\n\t\t\tconst aSpan = [\n\t\t\t\tthis.#htmTxt.innerHTML.replaceAll(/(animation-delay: )\\d+ms/g, '$10ms'),\n\t\t\t\t'<span class=\\'sn_ch\\' data-add=\\'{\"ch_in_style\":\"default\"}\\'> </span>',\n\t\t\t];\n\t\t\tthis.#clearText();\t// 消去\n\t\t\tthis.goTxt(aSpan, true);\t// 高速 goTxt()\n\t\t}\n\t}\n\t// oxlint-disable-next-line no-unused-private-class-members\n\t#lh_half\t= 0;\t// 「g」などで下が欠ける問題対策\n\t#lay_sub() {\n\t\tconst s = this.#htmTxt.style;\n\t\tconst fs = parseFloat(s.fontSize || '0');\n\t\tthis.#infTL.fontsize = fs;\n\n\t\tthis.#infTL.pad_left = parseFloat(s.paddingLeft || '0');\n\t\tthis.#infTL.pad_right = parseFloat(s.paddingRight || '0');\n\t\tthis.#infTL.pad_top = parseFloat(s.paddingTop || '0');\n\t\tthis.#infTL.pad_bottom = parseFloat(s.paddingBottom || '0');\n\t\tthis.#infTL.$width = parseFloat(s.width || '0');\n\t\tthis.#infTL.$height = parseFloat(s.height || '0');\n\t\tthis.position.set(this.#infTL.pad_left, this.#infTL.pad_top);\n\n\t\tthis.#isTategaki = s.writingMode === 'vertical-rl';\n\n\t\tthis.#padTx4x = 0;\n\t\tthis.#padTx4y = 0;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\tconst lh = s.lineHeight ?? '0';\n\t\tthis.#lh_half = this.#isTategaki\n\t\t\t? 0\n\t\t\t: (\tlh.endsWith('px')\n\t\t\t\t? parseFloat(lh)\n\t\t\t\t: fs *parseFloat(lh) -fs) /2;\n\t\t\t// globalThis.getComputedStyle(this.htmTxt)がチョイチョイ値を返さないので\n\t}\n\tcvsResize() {\n\t\tconst s = this.#htmTxt.style;\n\t\tconst cvsScale = this.sys.cvsScale;\n\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\ts.left = `${this.sys.ofsLeft4elm +this.#left *cvsScale}px`;\n\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\ts.top = `${this.sys.ofsTop4elm +this.ctn.position.y *cvsScale}px`;\n\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\ts.transform = `rotate(${this.ctn.angle}deg) scale(${this.ctn.scale.x *cvsScale}, ${this.ctn.scale.y *cvsScale})`;\n\n//\t\tthis.#idc.cvsResize();\n//\t\tthis.#idcCh.cvsResize();\n\t}\n\t#left = 0;\n\t#isTategaki = false;\n\tget tategaki() {return this.#isTategaki}\n\t#padTx4x = 0;\n\t#padTx4y = 0;\n\n\tget\tinfTL(): T_InfTxLay {return this.#infTL}\n\tget\tgetWidth() {return this.#infTL.$width}\n\tget\tgetHeight() {return this.#infTL.$height}\n\n\tsetMySize(width: number, height: number) {\n\t\tthis.#infTL.$width = width;\n\t\tthis.#infTL.$height = height;\n\t\tthis.#htmTxt.style.width = String(this.#infTL.$width) +'px';\n\t\tthis.#htmTxt.style.height = String(this.#infTL.$height) +'px';\n\t}\n\n\n\t#aGoTxt\t: (()=> void)[] = [];\t// FIFO実行バッファ\n\tgoTxt(aSpan: string[], instant: boolean) {\n\t\tconst f = ()=> this.#goTxt_Proc(aSpan, instant);\n\t\tif (this.#aGoTxt.push(f) === 1) f();\t// len=1 で実行中を示す\n\t}\n\n\t#aRect\t: IChRect[]\t= [];\n\t#lenHtmTxt = 0;\n\tstatic\treadonly\t#SPAN_LAST = '<span class=\\'sn_ch sn_ch_last\\'> </span>';\n\t#goTxt_Proc(aSpan: string[], instant: boolean) {\n\t\tTxtStage.#cntBreak.visible = false;\n\n\t\tlet begin = this.#aRect.length;\n\t\tlet bkHtm = '';\n\t\tif (begin === 0) {\t// 初回\n\t\t\tif (TxtStage.#cfg.oCfg.debug.masume) {\n\t\t\t\tif (CmnLib.debugLog) console.log(`🍌 masume ${\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\t\t\tthis.name} v:${this.visible} l:${this.x} t:${this.y\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\t\t\t} a:${this.alpha} pl:${this.#infTL.pad_left\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\t\t\t} pr:${this.#infTL.pad_right\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\t\t\t} pt:${this.#infTL.pad_top} pb:${this.#infTL.pad_bottom\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\t\t\t} w:${this.#infTL.$width} h:${this.#infTL.$height}`);\n\n\t\t\t\tthis.#grpDbgMasume.clear()\n\t\t\t\t.beginFill(0x33FF00, 0.2)\t// 文字レイヤ\n\t\t\t\t.lineStyle(1, 0x33FF00, 1)\n\t\t\t\t.drawRect(-this.#infTL.pad_left, -this.#infTL.pad_top, this.#infTL.$width, this.#infTL.$height)\n\t\t\t\t\t// 親の親の cntInsidePadding が padding ぶん水平移動してるので引く。\n\t\t\t\t.endFill()\n\n\t\t\t\t.beginFill(0x0033FF, 0.2)\t// cntInsidePadding\n\t\t\t\t.lineStyle(2, 0x0033FF, 1)\n\t\t\t\t.drawRect(0, 0,\n\t\t\t\tthis.#infTL.$width -this.#infTL.pad_left -this.#infTL.pad_right,\n\t\t\t\tthis.#infTL.$height -this.#infTL.pad_top -this.#infTL.pad_bottom)\n\t\t\t\t.endFill();\n\t\t\t}\n\n\t\t\tthis.#htmTxt.innerHTML = [...aSpan].join('').replaceAll(/[\\n\\t]/g, '') +TxtStage.#SPAN_LAST;\t// 末尾改行削除挙動対策\n\n\t\t\tif (! this.#hyph.break_fixed) {\n\t\t\t\tconst sty = globalThis.getComputedStyle(this.#htmTxt);\n\t\t\t\tconst rs = parseFloat(sty.fontSize);\n\t\t\t\tif (this.#isTategaki) {\n\t\t\t\t\tthis.#hyph.break_fixed_left = (this.#infTL.$width -this.#infTL.pad_left -this.#infTL.pad_right -rs *1.5) *this.sys.cvsScale;\n\t\t\t\t\tthis.#hyph.break_fixed_top = 0;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.#hyph.break_fixed_left = 0;\n\t\t\t\t\tthis.#hyph.break_fixed_top = rs /2 *this.sys.cvsScale;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tbkHtm = this.#htmTxt.innerHTML;\n\t\t\t// 末尾改行削除挙動対策\n\t\t\t--begin;\n//console.log(`fn:TxtStage.ts nm=${this.name} begin:${begin} bkHtm=${bkHtm}=`);\n\t\t\tthis.#htmTxt.getElementsByClassName('sn_ch_last').item(0)?.remove();\n\t\t\t\t// 前回の末尾を削除\n\n\t\t\tthis.#htmTxt.querySelectorAll(':scope > br').forEach(e=> e.remove());\t// 前回の禁則処理を一度削除\n\t\t\t\t// :scope - CSS: カスケーディングスタイルシート | MDN https://developer.mozilla.org/ja/docs/Web/CSS/:scope\n\t\t\tthis.#htmTxt.insertAdjacentHTML(\n\t\t\t\t'beforeend',\n\t\t\t\taSpan.slice(this.#lenHtmTxt).join('').replaceAll(/[\\n\\t]/g, '')\n\t\t\t\t+TxtStage.#SPAN_LAST\t// 末尾改行削除挙動対策\n\t\t\t);\n\t\t}\n\t\t\t// 後の禁則処理判定で誤判定するので、innerHTML 時にムダな改行やタブは削除\n\t\t\t// [r]は後述コメントのHTMLタグになってるので問題なし\n\n\t\t// ルビ付き文字に背景指定(style='background:')がある場合、「文字」と「ルビ」と「その二つを含んだ領域」の三つが個別に塗られるが、三つめは背景指定を削除する\n\t\tthis.#htmTxt.querySelectorAll('.sn_ch:has(> ruby)').forEach(v=> {(<HTMLElement>v).style.background = ''});\t// :has直前に空白厳禁\n\n\t\tthis.#lenHtmTxt = aSpan.length;\n//console.log(`fn:TxtStage.ts nm=${this.name} === ==${this.#htmTxt.innerHTML.slice(360)}==`);\n\n\t\t// this.#getChRects()使用準備\n\t\tconst cvsScale = this.sys.cvsScale;\n\t\tconst bcr = this.#htmTxt.getBoundingClientRect();\n\t\tconst sx = bcr.left +this.#infTL.pad_left;\n\t\tconst sy = bcr.top +this.#infTL.pad_top;\n\t\tlet cnvRect :(rng: Range, ch: string)=> Rectangle;\n\t\tif (cvsScale === 1) cnvRect = (rng, ch)=> {\n\t\t\tconst r = rng.getBoundingClientRect();\n\t\t\treturn new Rectangle(\n\t\t\t\tr.left -sx,\n\t\t\t\tr.top -sy,\n\t\t\t\tr.width,\n\t\t\t\tr.height +('gjqy'.includes(ch) ?this.#lh_half :0)\n\t\t\t);\n\t\t};\n\t\telse {\n\t\t\t// Resizeを意識してDOM位置をPIXIに変換\n\t\t\t// transform scale を一時的に変更する手もあるが、ややずれるしDOM影響大\n\t\t\tconst ox = this.sys.ofsPadLeft_Dom2PIXI +bcr.left *(1- cvsScale);\n\t\t\tconst oy = this.sys.ofsPadTop_Dom2PIXI +bcr.top *(1- cvsScale);\n\t\t\tcnvRect = (rng, ch)=> {\n\t\t\t\tconst r = rng.getBoundingClientRect();\n\t\t\t\treturn new Rectangle(\n\t\t\t\t\t(r.left -ox) /cvsScale -sx,\n\t\t\t\t\t(r.top -oy) /cvsScale -sy,\n\t\t\t\t\tr.width /cvsScale,\n\t\t\t\t\t(r.height +('gjqy'.includes(ch) ?this.#lh_half :0)) /cvsScale,\n\t\t\t\t);\n\t\t\t};\n\t\t}\n\n\t\tconst [a, len] = this.#hyph.hyph(this.#htmTxt, cnvRect, this.#isTategaki, begin, bkHtm);\n\t\tthis.#aRect = a;\n\n\t\tconst ease = CmnTween.ease(this.#fi_easing);\n\n\t\tfor (let i=begin; i<len; ++i) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst cr = this.#aRect[i]!;\n\t\t\tconst {elm: {dataset, parentElement}, rect} = cr;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tconst arg = JSON.parse(dataset.arg ?? '{\"delay\": 0}');\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tconst add = JSON.parse(dataset.add ?? '{}');\n\t\t\tconst cis = TxtStage.#hChInStyle[add.ch_in_style];\n\t\t\tthis.#fncMasume(cr);\n\n\t\t\tif (dataset.cmd === 'grp') {\n\t\t\t\tconst cnt = new Container;\t// 親コンテナかまし、即spWork()\n\t\t\t\tthis.#cntTxt.addChild(cnt);\n\t\t\t\t\t// 次のcsv2Spritesが即終わる場合もあるので先に行なう\n\t\t\t\tnew SpritesMng(arg.pic, cnt, sp=> {\n\t\t\t\t\tthis.#spWork(cnt, arg, add, rect, ease, cis ?? {});\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\t\t\tif (! cnt.parent) cnt.removeChild(sp);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (dataset.lnk) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion, @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst eCh = <HTMLElement>parentElement!.closest('[data-arg]')!;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst aLnk = JSON.parse(eCh.dataset.arg ?? '{}');\n\t\t\t\taLnk.key = `lnk=[${String(i)}] `+ this.name;\n\t\t\t\tconst sp = new Sprite;\n\t\t\t\tthis.#spWork(sp, aLnk, add, rect, ease, cis ?? {});\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst st_normal = aLnk.style ?? '';\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst st_hover = st_normal +(aLnk.style_hover ?? '');\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst st_clicked = st_normal +(aLnk.style_clicked ?? '');\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst st_r_normal = aLnk.r_style ?? '';\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst st_r_hover = st_r_normal +(aLnk.r_style_hover ?? '');\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst st_r_clicked = st_r_normal +(aLnk.r_style_clicked ?? '');\n\n\t\t\t\tconst nlRt = Array.from(eCh.getElementsByTagName('rt'));\n\t\t\t\tfor (const e of nlRt) e.dataset.st_r_bk = e.style.cssText;\n\t\t\t\tconst st_bk = eCh.style.cssText;\n\t\t\t\tconst fncStyle = (st: string, st_r: string)=> {\n\t\t\t\t\teCh.style.cssText = st_bk + st;\n\t\t\t\t\tfor (const e of nlRt) e.style.cssText = e.dataset.st_r_bk + st_r;\n\t\t\t\t};\n\n\t\t\t\tconst enabled = argChk_Boolean(aLnk, 'enabled', true);\n\t\t\t\tif (enabled) TxtStage.#evtMng.button(aLnk, sp,\n\t\t\t\t\t()=> fncStyle(st_normal, st_r_normal),\n\t\t\t\t\t()=> {\n\t\t\t\t\t\tif (! this.canFocus()) return false;\n\n\t\t\t\t\t\tfncStyle(st_hover, st_r_hover);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t},\n\t\t\t\t\t()=> fncStyle(st_clicked, st_r_clicked)\n\t\t\t\t);\n\t\t\t\telse fncStyle(\n\t\t\t\t\tst_normal +(aLnk.style_disable ?? 'color: gray;'),\n\t\t\t\t\tst_r_normal +(aLnk.r_style_disable ?? 'color: gray;')\n\t\t\t\t);\n\t\t\t\tthis.#cntTxt.addChild(sp);\n\t\t\t}\n\t\t}\n\n\t\t// 文字出現演出・開始〜終了\n\t\tconst chs = Array.from(<HTMLCollectionOf<HTMLElement>>this.#htmTxt.getElementsByClassName('sn_ch_yet'));\n// console.log(`fn:TxtStage.ts nm=${this.name} StartChIn <==`);\n\t\tthis.#fncEndChIn = ()=> {\n// console.log(`fn:TxtStage.ts nm=${this.name} fncEndChIn ==> '${lastElm?.textContent}' cls:${lastElm?.className}:`);\n\n\t\t\tthis.#fncEndChIn = ()=> false;\n\t\t\tfor (const v of chs) v.className = 'sn_ch';\n\t\t\tTxtStage.#cntBreak.position.set(\n\t\t\t\tthis.#hyph.break_fixed_left,\n\t\t\t\tthis.#hyph.break_fixed_top,\n\t\t\t);\n\t\t\tTxtStage.#cntBreak.visible = true;\n\t\t\t/*\n\t\t\t\tこれらはセットで確認すること。兼ね合いにより、いずれかが破綻する場合がある\n\t\t\t\t\t- 末尾文字表示でカーソルが次行先頭に来てしまうことのないよう\n\t\t\t\t\t- 改行→クリック待ち、の後で改行が消えないよう\n\t\t\t\t\t- 冒頭クリック待ち+改行での表示確認\n\t\t\t*/\n\t\t\tthis.noticeCompTxt();\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst f = this.#aGoTxt.shift()!;\t// 実行中の一個必ず入ってる(clearText注意)\n\t\t\tif (this.#aGoTxt.length > 0) f();\t// まだあれば実行待ちなので実行\n\n\t\t\treturn true;\n\t\t};\n\n\t\t// アニメ開始(sn_ch を置換しないよう注意)\n\t\tfor (const v of chs) v.className = v.className.replace('sn_ch_yet sn', 'go');\n\t\tif (begin > 0) ++begin;\t// 末尾改行削除挙動対策\n\n\t\t// 文字表示に時間をかける最後の文字を探す。末尾はダミー(#SPAN_LAST)\n\t\tlet lastElm: HTMLElement | undefined = undefined;\n\t\tfor (let i=len -2; i>=0; --i) {\t\t// 末尾の手前から\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst {elm} = this.#aRect[i]!;\n\t\t\tif (elm.tagName !== 'SPAN') continue;\t// ルビ以外\n\n//console.log(`fn:TxtStage.ts nm=${this.name} txt:${elm.textContent}: i:${i} begin:${begin} len:${len} elm:%o`, elm);\n\t\t\tlastElm = elm.parentElement?.tagName === 'RUBY'\n\t\t\t\t? elm.parentElement.parentElement ?? elm // [tcy]も[graph]も\n\t\t\t\t: elm;\n\t\t\tbreak;\n\t\t}\n\t\tif (! lastElm || instant || begin === len) {this.#fncEndChIn(); return}\n\t\t\t// 「animation-duration: 0ms;」だと animationend が発生しないので。\n\t\t\t// if 三項目の === は右クリック戻りで起こる\n\n\t\tlastElm.addEventListener('animationend', ()=> this.#fncEndChIn(), {once: true});\t// クリックキャンセル時は発生しない\n\t\t\t// 差し替えるので「()=> 」形式のままにすること\n\t}\n\t#fncEndChIn: ()=> boolean\t= ()=> false;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t#spWork(sp: Container, arg: T_ChInOutStyle, add: any, rct: Rectangle, ease: (k: number)=> number, cis: any) {\n\t\tsp.alpha = 0;\n\t\tif (arg.x) rct.x = arg.x.startsWith('=')\n\t\t\t? rct.x +parseInt(arg.x.slice(1))\n\t\t\t: parseInt(arg.x);\n\t\tif (arg.y) rct.y = arg.y.startsWith('=')\n\t\t\t? rct.y +parseInt(arg.y.slice(1))\n\t\t\t: parseInt(arg.y);\n\t\tif (arg.width) rct.width = parseInt(arg.width);\n\t\tif (arg.height) rct.height = parseInt(arg.height);\n\t\tif (arg.wait) cis.wait = arg.wait;\n\t\tsp.width = rct.width;\n\t\tsp.height = rct.height;\n\t\tif (cis.x) sp.position.set(\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call\n\t\t\tcis.x.startsWith('=') ?rct.x +sp.width *cis.nx :cis.nx,\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call\n\t\t\tcis.y.startsWith('=') ?rct.y +sp.height *cis.ny :cis.ny\n\t\t);\n\t\telse sp.position.set(rct.x, rct.y,);\n\t\tconst st: T_SpTw = {\n\t\t\tsp,\n\t\t\ttw: new Tween(sp)\n\t\t\t.to({ alpha: 1, x: rct.x, y: rct.y, width: rct.width, height: rct.height, angle: 0 }, cis.wait ?? 0)\n\t\t\t.easing(ease)\n\t\t\t.delay((add.wait ?? 0) +(arg.delay ?? 0))\n\t\t\t.onComplete(()=> {\n\t\t\t\tst.tw = undefined;\n\t\t\t\t//(略)\tif (rct.width === 0 || rct.height === 0) return;\n\t\t\t\t//if (sp instanceof Sprite) sp.cacheAsBitmap = true;\n\t\t\t\t// これを有効にすると[snapshot]で文字が出ない\n\t\t\t})\n\t\t\t.start(),\n\t\t};\n\t\tthis.#aSpTw.push(st);\n\t}\n\t#aSpTw\t\t: T_SpTw[]\t= [];\n\n\tskipChIn(): boolean {\t// true: 文字出現中だったので、停止する\n\t\tlet wasChInIng = this.#fncEndChIn();\n\t\tfor (const st of this.#aSpTw) {\t// Text Skip。stop() と end() は別!\n\t\t\tif (st.tw) {st.tw.stop().end(); wasChInIng = true}\n\t\t}\n\t\tthis.#aSpTw = [];\n\t\treturn wasChInIng;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\tstatic\t#hChInStyle: {[nm: string]: T_ChInOutStyle}\t= Object.create(null);\n\tstatic\treadonly\t#REG_NG_CHSTYLE_NAME_CHR\t= /[{\\s.,*{]/;\n\t\t// https://regex101.com/r/APC91I/1\n\tstatic\tinitChStyle() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tTxtStage.#hChInStyle = Object.create(null);\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tTxtStage.#hChOutStyle = Object.create(null);\n\t}\n\tstatic\tgetChInStyle(name: string) {return TxtStage.#hChInStyle[name]}\n\tstatic\tch_in_style(hArg: HArg): T_ChInOutStyle {\n\t\tconst {name} = hArg;\n\t\tif (! name) throw 'nameは必須です';\n\t\tif (TxtStage.#REG_NG_CHSTYLE_NAME_CHR.test(name)) throw `name【${name}】に使えない文字が含まれます`;\n\t\tif (name in TxtStage.#hChInStyle) throw `name【${name}】はすでにあります`;\n\n\t\tconst x = String(hArg.x ?? '=0');\n\t\tconst y = String(hArg.y ?? '=0');\n\t\tconst ret = TxtStage.#hChInStyle[name] = {\n\t\t\twait\t: argChk_Num(hArg, 'wait', 500),\t// アニメ・FI時間\n\t\t\talpha\t: argChk_Num(hArg, 'alpha', 0),\n\t\t\tx,\t// 初期x値\n\t\t\ty,\t// [tsy]と同様に絶対・相対指定可能\n\t\t\t// {x:500}\t\t\tX位置を500に\n\t\t\t// {x:'=500'}\t\t現在のX位置に+500加算した位置\n\t\t\t// {x:'=-500'}\t\t現在のX位置に-500加算した位置\n\t\t\t// {x:'250,500'}\t+250から+500までの間でランダムな値をX位置に\n\t\t\t// {x:'=250,500'}\t+250から+500までの間でランダムな値を現在のX位置に加算\n\t\t\tnx\t\t: parseFloat(x.at(0) === '=' ? x.slice(1) : x),\n\t\t\tny\t\t: parseFloat(y.at(0) === '=' ? y.slice(1) : y),\n\t\t\tscale_x\t: argChk_Num(hArg, 'scale_x', 1),\n\t\t\tscale_y\t: argChk_Num(hArg, 'scale_y', 1),\n\t\t\trotate\t: argChk_Num(hArg, 'rotate', 0),\n\t\t\tjoin\t: argChk_Boolean(hArg, 'join', true),\n\t\t\t\t\t\t// 文字を順番に出すか(true)同時か(false)\n\t\t\tease\t: hArg.ease ?? 'ease-out',\n\t\t};\n\t\treturn ret;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\tstatic\t#hChOutStyle: {[nm: string]: T_ChInOutStyle}= Object.create(null);\n\tstatic\tgetChOutStyle(name: string) {return TxtStage.#hChOutStyle[name]}\n\tstatic\tch_out_style(hArg: HArg): T_ChInOutStyle {\n\t\tconst {name} = hArg;\n\t\tif (! name) throw 'nameは必須です';\n\t\tif (TxtStage.#REG_NG_CHSTYLE_NAME_CHR.test(name)) throw `name【${name}】に使えない文字が含まれます`;\n\t\tif (name in TxtStage.#hChOutStyle) throw `name【${name}】はすでにあります`;\n\n\t\tconst x = String(hArg.x ?? '=0');\n\t\tconst y = String(hArg.y ?? '=0');\n\t\tconst ret = TxtStage.#hChOutStyle[name] = {\n\t\t\twait\t: argChk_Num(hArg, 'wait', 500),\t// アニメ・FI時間\n\t\t\talpha\t: argChk_Num(hArg, 'alpha', 0),\n\t\t\tx,\t// 初期x値\n\t\t\ty,\t// [tsy]と同様に絶対・相対指定可能\n\t\t\t// {x:500}\t\t\tX位置を500に\n\t\t\t// {x:'=500'}\t\t現在のX位置に+500加算した位置\n\t\t\t// {x:'=-500'}\t\t現在のX位置に-500加算した位置\n\t\t\t// {x:'250,500'}\t+250から+500までの間でランダムな値をX位置に\n\t\t\t// {x:'=250,500'}\t+250から+500までの間でランダムな値を現在のX位置に加算\n\t\t\tnx\t\t: parseFloat(x.at(0) === '=' ? x.slice(1) : x),\n\t\t\tny\t\t: parseFloat(y.at(0) === '=' ? y.slice(1) : y),\n\t\t\tscale_x\t: argChk_Num(hArg, 'scale_x', 1),\n\t\t\tscale_y\t: argChk_Num(hArg, 'scale_y', 1),\n\t\t\trotate\t: argChk_Num(hArg, 'rotate', 0),\n\t\t\tjoin\t: argChk_Boolean(hArg, 'join', false),\n\t\t\t\t\t\t// 文字を順番に出すか(true)同時か(false)\n\t\t\tease\t: hArg.ease ?? 'ease-out',\n\t\t};\n\t\treturn ret;\n\t}\n\n\tstatic\treadonly\t#cntBreak\t= new Container;\n\tstatic\t\t\t\t#spsBreak\t= new SpritesMng;\n\tdispBreak(o: HArg) {\n\t\tTxtStage.delBreak();\n\n\t\tconst cnt = TxtStage.#cntBreak;\n\t\tcnt.visible = false;\n\t\tthis.addChild(cnt);\t// 次のcsv2Spritesが即終わる場合もあるので先に行なう\n\t\tTxtStage.#spsBreak.destroy();\n\t\tTxtStage.#spsBreak = new SpritesMng(o.pic, cnt, sp=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\tif (cnt.parent) {\n\t\t\t\tsp.x = argChk_Num(o, 'x', 0);\n\t\t\t\tsp.y = argChk_Num(o, 'y', 0);\n\t\t\t\tsp.width = argChk_Num(o, 'width', this.#infTL.fontsize);\n\t\t\t\tsp.height = argChk_Num(o, 'height', this.#infTL.fontsize);\n\t\t\t}\n\t\t\telse cnt.removeChild(sp);\n\t\t});\n\t}\n\tstatic\tdelBreak() {\n\t\tconst cnt = TxtStage.#cntBreak;\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\tcnt.parent?.removeChild(cnt);\t// 複数メッセージウインドウを想定\n\t\tTxtStage.#spsBreak.destroy();\n\t}\n\n\t#fi_easing\t= 'Quadratic.Out';\n\t#fo_easing\t= 'Quadratic.Out';\n\t#clearText() {\n\t\tthis.#grpDbgMasume.clear();\n\t\tthis.#aRect = [];\n\t\tthis.#lenHtmTxt = 0;\n\t\tthis.#aGoTxt = [];\n\n\t\t//utils.clearTextureCache();\t// 改ページと思われるこのタイミングで\n\t\tthis.skipChIn();\n\t\tconst n = <HTMLSpanElement>this.#htmTxt.cloneNode(true);\n\t\t//this.htmTxt.innerHTML = '';\t\t以下の方が早いらしい\n\t\tn.textContent = '';\n\t\tconst old = this.#htmTxt;\n\t\tconst a = Array.from(<HTMLCollectionOf<HTMLElement>>old.getElementsByClassName('sn_ch'));\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\told.parentElement!.insertBefore(n, old);\n\n\t\tlet sum_wait = 0;\n\t\ta.forEach(elm=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tconst add = JSON.parse(\n\t\t\t\telm.dataset.add ??\t\t\t\t// 通常文字\n\t\t\t\telm.children[0]?.getAttribute('data-add') ??\t// ルビ\n\t\t\t\telm.children[0]?.children[0]\n\t\t\t\t\t?.getAttribute('data-add') ?? '{}'\t\t// 縦中横\n\t\t\t);\n\t\t\tif (! add.ch_out_style) return;\n\n\t\t\tconst cos = TxtStage.#hChOutStyle[add.ch_out_style];\n\t\t\tif (! cos) return;\n\t\t\tif (cos.wait === 0) {elm.style.display = 'none'; return}\n\n\t\t\tsum_wait += cos.wait;\n\t\t\tif (! cos.join) elm.style.animationDelay = '0ms';\n\t\t\telm.classList.add(`go_ch_out_${String(add.ch_out_style)}`);\n\t\t});\n\n\t\tconst end = ()=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\told.parentElement!.removeChild(old);\n\t\t\tfor (const c of this.#cntTxt.removeChildren()) {\n\t\t\t\tif (c instanceof Container) TxtStage.#evtMng.unButton(c);\n\t\t\t\tc.destroy();\n\t\t\t}\n\t\t};\n\t\tif (sum_wait === 0) {this.#htmTxt.textContent = ''; end()}\n\t\telse old.lastElementChild?.addEventListener('animationend', end, {once: true});\n\n\t\tthis.#htmTxt = n;\n\n\t\t//this.#hyph.clear();\t// クリアはしない\n\t}\n\treNew(): TxtStage {\n\t\tthis.#clearText();\n\n\t\tconst to = new TxtStage(this.ctn, ()=> this.canFocus(), this.sys);\n\t\tto.#infTL = this.#infTL;\n\t\tto.#htmTxt.style.cssText = this.#htmTxt.style.cssText;\n\t\tto.#left = this.#left;\n\t\tto.name = this.name;\n\t\tto.#lay_sub();\n//\t\tto.#idc.sethArg(this.#idc.gethArg());\n\n\t\tto.#ch_filter = this.#ch_filter;\n\t\tto.#fi_easing = this.#fi_easing;\n\t\tto.#fo_easing = this.#fo_easing;\n\n\t\tthis.#hyph.reNew(to.#hyph);\n\n\t\tthis.destroy();\n\n\t\treturn to;\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t#ch_filter\t: any[] | undefined = undefined;\t// 文字にかけるフィルター\n\n\n\trecord() {return {\n\t\tinfTL\t\t: this.#infTL,\n\n\t\tcssText\t\t: this.#htmTxt.style.cssText,\n\t\tleft\t\t: this.#left,\n//\t\tidc_hArg\t: this.#idc.gethArg(),\n\n\t\tch_filter\t: this.#ch_filter,\n\t\tfi_easing\t: this.#fi_easing,\n\t\tfo_easing\t: this.#fo_easing,\n\n\t\thyph\t\t: this.#hyph.record(),\n\t}}\n\tplayback(hLay: T_RP_layTxtStage) {\n\t\tthis.#infTL = hLay.infTL;\n\t\tthis.position.set(this.#infTL.pad_left, this.#infTL.pad_top);\n\n\t\tthis.#htmTxt.style.cssText = hLay.cssText;\n\t\tthis.#left = hLay.left;\n\t\tthis.#lay_sub();\n//\t\tthis.#idc.sethArg(hLay.idc_hArg);\n\n\t\tthis.#ch_filter\t= hLay.ch_filter;\n\t\tthis.#fi_easing\t= hLay.fi_easing;\n\t\tthis.#fo_easing\t= hLay.fo_easing;\n\n\t\tthis.#hyph.playback(hLay.hyph);\n\t}\n\n\tget cssText() {return this.#htmTxt.style.cssText}\n\tset cssText(ct: string) {this.#htmTxt.style.cssText = ct}\n\n\t#sss :Sprite | undefined = undefined;\n\tsnapshot(rnd: Renderer, re: ()=> void) {\n\t\thtm2tx(tx=> {\n\t\t\tthis.#sss = Sprite.from(tx);\t// Safariだけ文字影が映らない\n\t\t\tif (this.#isTategaki) {\n\t\t\t\tthis.#sss.x += CmnLib.stageW -(this.#left +this.#infTL.$width)\n\t\t\t\t//- ((CmnLib.isSafari && !CmnLib.isMobile)\t// 無効化 2022/02/09\n\t\t\t\t//\t? 0\n\t\t\t\t//\t: this.#infTL.pad_left +this.#infTL.pad_right);\n\t\t\t}\n\t\t\tthis.#sss.y -= this.#padTx4y;\n\t\t\tthis.#sss.texture.frame = new Rectangle(\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\tMath.min(this.#sss.width, this.#infTL.$width -this.#left),\n\t\t\t\tMath.min(this.#sss.height, this.#infTL.$height),\n\t\t\t);\t// これがないと画面サイズを超える\n\t\t\tthis.#cntTxt.addChild(this.#sss);\n\t\t\trnd.render(this.#sss, {clear: false});\n\t\t\tre();\n\t\t}, this.#htmTxt, this.#infTL, this.#padTx4x, this.#padTx4y, false);\n\t}\n\tsnapshot_end() {\n\t\tif (! this.#sss) return;\n\t\tthis.#cntTxt.removeChild(this.#sss);\n\t\tthis.#sss = undefined;\n\t}\n\n\tmakeDesignCast(_gdc: IMakeDesignCast) {\n//\tmakeDesignCast(gdc: IMakeDesignCast) {\n//\t\tgdc(this.#idc);\n\n//\t\tconst o = this.#idc.gethArg();\n//\t\tthis.#idcCh.sethArg({...o, ':id_dc': o[':id_tag'] +'_pad'});\n//\t\tgdc(this.#idcCh);\n\t}\n\tshowDesignCast() { /* empty */ }\n//\tshowDesignCast() {this.#idc.visible = true; this.#idcCh.visible = true}\n\n\tdump(): string {\n\t\tconst aStyle: string[] = [];\n\t\tconst s = this.#htmTxt.style;\n\t\tconst len = s.length;\n\t\tfor (let i=0; i<len; ++i) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tconst key: any = s[i];\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\taStyle.push(`\"${String(key)}\":\"${s[key]!.replaceAll(/([\"\\\\])/g, '\\\\$1')}\"`);\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion, @typescript-eslint/no-non-null-assertion\n\t\treturn `\"txt\":\"${this.#htmTxt.textContent!.replaceAll(/([\"\\\\])/g, '\\\\$1')\n\t\t}\", \"style\":{${aStyle.join(',')}}`;\n\t\t\t// 4Debug。++カウンターし、dump表示させても良さげ\n\t}\n\n\toverride destroy() {\n\t\tTxtStage.delBreak();\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tthis.#htmTxt.parentElement!.removeChild(this.#htmTxt);\n\t\tthis.removeChild(this.#cntTxt);\n\t\tthis.removeChild(this.#grpDbgMasume);\n\t\tsuper.destroy();\n\t}\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {uint, type IEvtMng, argChk_Boolean, argChk_Num, mesErrJSON} from './CmnLib';\nimport type {HArg} from './Grammar';\nimport {SpritesMng} from './SpritesMng';\nimport {Layer} from './Layer';\nimport type {Config} from './Config';\nimport type {IMakeDesignCast} from './LayerMng';\n//import {DesignCast, TxtBtnDesignCast, PicBtnDesignCast} from './DesignCast';\n\nimport {Container, Text, Rectangle, Texture, TextStyle, type Sprite, Graphics} from 'pixi.js';\n\n\nexport class Button extends Container {\n\tstatic\tfontFamily\t= '\\'Hiragino Sans\\', \\'Hiragino Kaku Gothic ProN\\', \\'游ゴシック Medium\\', meiryo, sans-serif';\n\tstatic\t#procMasume4txt = (_me: Button, _txt: Text)=> { /* empty */ };\n\tstatic\t#procMasume4pic = (_me: Button, _sp: Sprite, _w3: number, _h: number)=> { /* empty */ };\n\tstatic\tinit(cfg: Config) {\n\t\tif (! cfg.oCfg.debug.masume) return;\n\n\t\tButton.#procMasume4txt = (me, txt)=> me.addChild(\n\t\t\t(new Graphics)\n\t\t\t.beginFill(0x883388, 0.2)\n\t\t\t.lineStyle(1, 0x883388, 1)\n\t\t\t.drawRect(txt.x, txt.y, txt.width, txt.height)\n\t\t\t.endFill()\n\t\t);\n\t\tButton.#procMasume4pic = (me, sp, w3, h)=> me.addChild(\n\t\t\t(new Graphics)\n\t\t\t.beginFill(0x883388, 0.2)\n\t\t\t.lineStyle(1, 0x883388, 1)\n\t\t\t.drawRect(sp.x, sp.y, w3, h)\n\t\t\t.endFill()\n\t\t);\n\t}\n\n\tsetText(_text: string) { /* empty */ }\n\tgetBtnBounds = ()=> this.#rctBtnTxt;\n\t\t// 文字ボタンは背景画像を含まない位置指定なので、その当たり判定用\n\t#rctBtnTxt\t= new Rectangle;\n\n\t#sps\t\t= new SpritesMng;\n\n//\t#idc\t\t: DesignCast;\n\treadonly\t#o\t: {\n\t\ttype\t: 'pic'|'text';\n\t\tenabled\t: boolean;\n\t\tx\t\t: number;\n\t\ty\t\t: number;\n\t\trotation: number;\n\t\t\t// flash : rotation is in degrees.\n\t\t\t// pixijs: rotation is in radians, angle is in degrees.\n\t\tpivot_x\t: number;\n\t\tpivot_y\t: number;\n\t\tscale_x\t: number;\n\t\tscale_y\t: number;\n\t\talpha\t: number;\n\t\ttext\t: string;\n\t\tb_pic\t: string;\n\t\twidth\t: number;\n\t\theight\t: number;\n\t};\n\n\tconstructor(private readonly hArg: HArg, readonly evtMng: IEvtMng, readonly resolve: ()=> void, private readonly canFocus: ()=> boolean) {\n\t\tsuper();\n/*\n\t\tif (CmnLib.isDbg) {\n\t\t\tthis.makeDesignCast = gdc=> gdc(this.#idc);\n\t\t\tthis.cvsResize = ()=> this.#idc.cvsResize();\n\t\t}\n*/\n\t\tthis.#o = {\n\t\t\ttype\t: 'pic',\n\t\t\tenabled\t: argChk_Boolean(hArg, 'enabled', true),\n\t\t\tx\t\t: this.x = uint(hArg.left ?? 0),\n\t\t\ty\t\t: this.y = uint(hArg.top ?? 0),\n\t\t\trotation: this.angle = argChk_Num(hArg, 'rotation', this.angle),\n\t\t\t\t// flash : rotation is in degrees.\n\t\t\t\t// pixijs: rotation is in radians, angle is in degrees.\n\t\t\tpivot_x\t: this.pivot.x = argChk_Num(hArg, 'pivot_x', this.pivot.x),\n\t\t\tpivot_y\t: this.pivot.y = argChk_Num(hArg, 'pivot_y', this.pivot.y),\n\t\t\tscale_x\t: this.scale.x = argChk_Num(hArg, 'scale_x', this.scale.x),\n\t\t\tscale_y\t: this.scale.y = argChk_Num(hArg, 'scale_y', this.scale.y),\n\t\t\talpha\t: 1,\n\t\t\ttext\t: '',\n\t\t\tb_pic\t: '',\n\t\t\twidth\t: 0,\n\t\t\theight\t: 0,\n\t\t};\n\t\tthis.getBtnBounds = ()=> {\n\t\t\tthis.#rctBtnTxt.x = this.#o.x;\n\t\t\tthis.#rctBtnTxt.y = this.#o.y;\n\t\t\treturn this.#rctBtnTxt;\n\t\t};\n\n\t\tif (this.#o.enabled) evtMng.button(hArg, this, ()=> this.normal(), ()=> this.#hover(), ()=> this.#clicked());\t// あとで差し替えるのでアロー必須\n\n\t\t// == 画像から生成\n\t\tif (hArg.pic) {\n\t\t\tthis.#o.type = 'pic';\t// dump用\n//\t\t\tthis.#idc = new PicBtnDesignCast(this, hArg);\n\n\t\t\tthis.#sps = new SpritesMng(\n\t\t\t\thArg.pic,\n\t\t\t\tthis,\n\t\t\t\tsp=> {\n\t\t\t\t\tthis.#loaded_pic(sp);\n\t\t\t\t\tthis.#rctBtnTxt.width = sp.width * this.#o.scale_x;\n\t\t\t\t\tthis.#rctBtnTxt.height = sp.height * this.#o.scale_y;\n\t\t\t\t},\n\t\t\t\t_isStop=> resolve,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tif (! hArg.text) throw 'textまたはpic属性は必須です';\n\n\t\t// == 文字列から生成\n\t\tconst height = argChk_Num(hArg, 'height', 30);\n\t\tconst style = new TextStyle({\n\t\t\talign\t\t: 'center',\n\t\t\tdropShadow\t: true,\n\t\t\tdropShadowAlpha\t: 0.7,\n\t\t\tdropShadowColor\t: 'white',\n\t\t\tdropShadowBlur\t: 7,\n\t\t\tdropShadowDistance\t: 0,\n\t\t\tfill\t\t: this.#o.enabled ?'black' :'gray',\n\t\t\tfontFamily\t: Button.fontFamily,\n\t\t\tfontSize\t: height,\n\t\t\tpadding\t\t: 5,\n\t\t});\n\t\tif (hArg.style) try {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tconst o = JSON.parse(hArg.style);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t\tfor (const [nm, v] of Object.entries(o)) (<any>style)[nm] = v;\n\t\t//\tstyle = {...style, ...JSON.parse(hArg.style)};\t// 上手くいかない\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tthis.#o = {...this.#o, ...o};\n\t\t} catch (e) {\n\t\t\tif (e instanceof SyntaxError) throw new Error(mesErrJSON(hArg, 'style', e.message));\n\t\t\telse throw 'fn:Button.ts style';\n\t\t}\n\n\t\tconst txt = new Text(hArg.text ?? '', style);\n\t\ttxt.alpha = argChk_Num(hArg, 'alpha', txt.alpha);\t// 上にまとめない\n\t\ttxt.width = argChk_Num(hArg, 'width', 100);\n\t\ttxt.height = hArg.height = height;\n\t\tthis.setText = text=> {txt.text = text};\n\n\t\tthis.#o = {...this.#o,\n\t\t\ttype\t: 'text',\t// dump用\n\t\t\talpha\t: txt.alpha,\n\t\t\ttext\t: txt.text,\n\t\t\twidth\t: txt.width,\n\t\t\theight\t: txt.height,\n\t\t};\n//\t\tthis.#idc = new TxtBtnDesignCast(this, hArg, txt);\n\n\t\tlet isStop = false;\n\t\tthis.#o.width = this.width;\n\t\tthis.#o.height = this.height;\n\t\tif (hArg.b_pic) {\n\t\t\tthis.#o.b_pic = hArg.b_pic;\n\t\t\tthis.#sps = new SpritesMng(\n\t\t\t\thArg.b_pic,\n\t\t\t\tthis,\n\t\t\t\tsp=> {\n\t\t\t\t\tthis.#loaded_b_pic(sp, txt);\n\t\t\t\t\tthis.#o.width = this.width;\n\t\t\t\t\tthis.#o.height = this.height;\n\t\t\t\t\ttxt.name = JSON.stringify(this.#o);\n\t\t\t\t},\n\t\t\t\tisStop=> {\n\t\t\t\t\tLayer.setBlendmode(this, hArg);\n\t\t\t\t\tif (isStop) resolve();\n\t\t\t\t},\n\t\t\t);\n\t\t\tisStop = this.#sps.ret;\n\t\t}\n\t\ttxt.name = JSON.stringify(this.#o);\n\n\t\tthis.addChild(txt);\n\t\tthis.#rctBtnTxt.width = txt.width;\t// addChild()後に取得すること\n\t\tthis.#rctBtnTxt.height = txt.height;\n\t//x\tthis.#rctBtnTxt = txt.getBounds();\t// 上手くいかない\n\n\t\tif (! hArg.b_pic) Layer.setBlendmode(this, hArg);\t// 重なり順でここ\n\t\tButton.#procMasume4txt(this, txt);\n\t\tif (! this.#o.enabled) {if (! isStop) resolve(); return}\n\n\t\tconst style_hover = style.clone();\n\t\tif (hArg.style_hover) try {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tconst o = JSON.parse(hArg.style_hover);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\t\tfor (const [nm, v] of Object.entries(o)) (<any>style_hover)[nm] = v;\n\t\t} catch (e) {\n\t\t\tif (e instanceof SyntaxError) throw new Error(mesErrJSON(hArg, 'style_hover', e.message));\n\t\t\telse throw 'fn:Button.ts style_hover';\n\t\t}\n\t\telse style_hover.fill = 'white';\n\n\t\tconst style_clicked = style_hover.clone();\n\t\tif (hArg.style_clicked) try {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tconst o = JSON.parse(hArg.style_clicked);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\t\tfor (const [nm, v] of Object.entries(o)) (<any>style_clicked)[nm] = v;\n\t\t} catch (e) {\n\t\t\tif (e instanceof SyntaxError) throw new Error(mesErrJSON(hArg, 'style_clicked', e.message));\n\t\t\telse throw 'fn:Button.ts style_clicked';\n\t\t}\n\t\telse style_clicked.dropShadow = false;\n\n\t\tthis.normal = ()=> {txt.style = style};\n\t\tthis.#hover = ()=> {\n\t\t\tif (! canFocus()) return false;\n\t\t\ttxt.style = style_hover;\n\t\t\treturn true;\n\t\t};\n\t\tthis.#clicked = ()=> {txt.style = style_clicked};\n\n\t\tif (! isStop) resolve();\n\t}\n\n\toverride\tdestroy(): void {\n\t\tthis.evtMng.unButton(this);\n\t\tthis.#sps.destroy();\n\t\tsuper.destroy();\n\t}\n\n\tmakeDesignCast(_gdc: IMakeDesignCast) { /* empty */ }\n\tshowDesignCast() { /* empty */ }\n//\tshowDesignCast() {this.#idc.visible = true}\n\tcvsResize() { /* empty */ }\n\n\t#loaded_b_pic(sp: Sprite, txt: Text) {\n\t\tthis.setChildIndex(sp, 0);\n\t\tsp.alpha = txt.alpha;\n\t\tsp.setTransform(\n\t\t\ttxt.x, txt.y,\n\t\t\t1, 1, txt.rotation, 0, 0,\n\t\t\t(sp.width -txt.width) /2,\n\t\t\t(sp.height -txt.height) /2,\n\t\t);\n\n\t\tsp.name = txt.name;\n\t}\n\n\tnormal\t\t: ()=> void\t\t= ()=> { /* empty */ };\n\t#hover\t\t: ()=> boolean\t= ()=> false;\n\t#clicked\t: ()=> void\t\t= ()=> { /* empty */ };\n\t#loaded_pic(sp: Sprite) {\n\t\tthis.#o.alpha = sp.alpha = argChk_Num(this.hArg, 'alpha', sp.alpha);\n//\t\t(this.#idc as PicBtnDesignCast).setSp(sp);\n\n\t\tconst w_3 = sp.width /3;\n\t\tconst w = this.#o.enabled ?w_3 :sp.width;\n\t\tconst h = sp.height;\n\t\tconst tx = sp.texture.baseTexture;\n\t\tconst txNormal = new Texture(tx, new Rectangle(0, 0, w_3, h));\n\t\tconst txClicked = new Texture(tx, new Rectangle(w_3, 0, w_3, h));\n\t\tconst txHover = new Texture(tx, new Rectangle(w_3 *2, 0, w_3, h));\n\t\tconst normal = ()=> {sp.texture = txNormal};\n\t\tif (this.#o.enabled) normal();\n\n\t\tthis.normal\t= normal;\n\t\tthis.#hover\t\t= ()=> {\n\t\t\tif (! this.canFocus()) return false;\n\t\t\tsp.texture = txHover;\n\t\t\treturn true;\n\t\t};\n\t\tthis.#clicked\t= ()=> {sp.texture = txClicked};\n\n\t\tif ('width' in this.hArg) {\n\t\t\tthis.#o.width = uint(this.hArg.width);\n\t\t\tthis.scale.x *= this.#o.width /w;\n\t\t}\n\t\telse this.#o.width = w;\n\t\tif ('height' in this.hArg) {\n\t\t\tthis.#o.height = uint(this.hArg.height);\n\t\t\tthis.scale.y *= this.#o.height /h;\n\t\t}\n\t\telse this.#o.height = h;\n\t\tsp.name = JSON.stringify(this.#o);\t// dump用\n\n\t\tButton.#procMasume4pic(this, sp, w, h);\n\t}\n\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/restrict-template-expressions */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {Layer, type T_RecordPlayBack_lay} from './Layer';\nimport {uint, CmnLib, type IEvtMng, argChk_Boolean, argChk_Num, initStyle, addStyle, argChk_Color} from './CmnLib';\nimport type {IHTag, HArg} from './Grammar';\nimport type {IVariable, IPutCh} from './CmnInterface';\nimport {type T_RP_layTxtStage, TxtStage} from './TxtStage';\nimport type {Config} from './Config';\nimport {RubySpliter} from './RubySpliter';\nimport {SpritesMng} from './SpritesMng';\nimport {Button} from './Button';\nimport {LayerMng, type IMakeDesignCast} from './LayerMng';\nimport type {SysBase} from './SysBase';\nimport {DebugMng} from './DebugMng';\nimport {SEARCH_PATH_ARG_EXT} from './ConfigBase';\nimport {Reading} from './Reading';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {T_LOG} from './Log';\n\nimport {Sprite, DisplayObject, Graphics, Container, Renderer, Application} from 'pixi.js';\n\n\nexport type T_RP_layTxt = T_RecordPlayBack_lay & {\n\tenabled\t\t: boolean;\n\tr_cssText\t: string;\n\tr_align\t\t: string;\n\ttxs\t\t\t: T_RP_layTxtStage;\n\tb_alpha\t\t: number;\n\tb_alpha_isfixed\t: boolean;\n\tb_do\t\t: string;\n\tb_pic\t\t: string;\n\tb_color\t\t: string;\n\tbtns\t\t: string[];\n}\n\nexport type T_cmdTxt_JSON = {\n\tid?\t\t\t: string;\n\n\t':link'?\t: string;\n\ttext?\t\t: string;\t// 4 ch\n\twait?\t\t: string;\t// 4 ch\n\t\t// JSON.stringify は数字でも文字にする(HArg と相違)\n\trecord?\t\t: boolean;\t// 4 ch\n\n\tpic?\t\t: string;\t// 4 graph\n\n\tfn?\t\t\t: string;\t// 4 link\n\tlabel?\t\t: string;\t// 4 link\n\turl?\t\t: string;\t// 4 link\n\n\tstyle?\t\t: string;\t// 4 tcy, link\n\tr_style?\t: string;\n\tstyle_hover\t\t: string;\t// 4 link\n\tstyle_clicked\t: string;\t// 4 link\n\tr_align?\t: string;\t// 4 pushSpan(), mergePushSpan()\n\n\tt?\t: string;\t// 4 tcy\n\tr?\t: string;\t// 4 tcy\n\n\tin_style?\t: string;\t// 4 set_ch_in\n\tout_style?\t: string;\t// 4 set_ch_out\n\n\n\tdelay?\t: number;\t// JSON 受け渡し後なので number でもいい\n}\n\n\nexport class TxtLayer extends Layer {\n\tstatic\t#cfg\t\t: Config;\n\tstatic\t#val\t\t: IVariable;\n\tstatic\t#isPageFore\t: (me: TxtLayer)=> boolean;\n\tstatic\t#log\t\t: T_LOG;\n\tstatic\tinit(cfg: Config, hTag: IHTag, val: IVariable, log: T_LOG, isPageFore: (me: TxtLayer)=> boolean, appPixi: Application): void {\n\t\tthis.#cfg = cfg;\n\t\tTxtStage.init(cfg, appPixi);\n\t\tthis.#val = val;\n\t\tthis.#log = log;\n\t\tthis.#isPageFore = isPageFore;\n\n\t\tval.setDoRecProc(doRec=> this.chgDoRec(doRec));\n\n\t\thTag.autowc\t\t\t= o=> this.#autowc(o);\t// 文字を追加する\n\t\thTag.autowc({enabled: false, text: '', time: 0});\n\t\thTag.ch_in_style\t= o=> this.#ch_in_style(o);\t// 文字出現演出\n\t\thTag.ch_out_style\t= o=> this.#ch_out_style(o);\t// 文字消去演出\n\n\t\t// ギャラリーリロード用初期化\n\t\tTxtStage.initChStyle();\n\t\tinitStyle();\n\n\t\taddStyle(\n\t\t\tcfg.matchPath('.+', SEARCH_PATH_ARG_EXT.FONT)\n\t\t\t.flatMap(o=> Object.values(o).map(v=> `\n@font-face {\n\tfont-family: '${v}';\n\tsrc: url('${this.#cfg.searchPath(String(v), SEARCH_PATH_ARG_EXT.FONT)}');\n}\n`)).join('')\n\n\t\t\t// 文字出現演出関係\n\t\t\t+`\n.sn_tx {\n\tpointer-events: none;\n\tuser-select: none;\n\t-webkit-touch-callout: none;\n\tbox-sizing: border-box;\n}\n.sn_ch {\n\tposition: relative;\n\tdisplay: inline-block;\n}\n`\t// 「sn_ch」と「sn_ch_in_〜」の中身が重複しているが、これは必須\n\t\t);\n\n\t\tthis.#ch_in_style({\n\t\t\tname\t: 'default',\n\t\t\twait\t: 500,\n\t\t\talpha\t: 0,\n\t\t\tx\t\t: '=0.3',\n\t\t\ty\t\t: '=0',\n\t\t\tscale_x\t: 1,\n\t\t\tscale_y\t: 1,\n\t\t\trotate\t: 0,\n\t\t\tjoin\t: true,\n\t\t\tease\t: 'ease-out',\n\t\t});\n\t\tthis.#ch_out_style({\n\t\t\tname\t: 'default',\n\t\t\twait\t: 0,\n\t\t\talpha\t: 0,\n\t\t\tx\t\t: '=0',\n\t\t\ty\t\t: '=0',\n\t\t\tscale_x\t: 1,\n\t\t\tscale_y\t: 1,\n\t\t\trotate\t: 0,\n\t\t\tjoin\t: false,\n\t\t\tease\t: 'ease-out',\n\t\t});\n\t}\n\n\t// 文字出現演出\n\tstatic\t#ch_in_style(hArg: HArg) {\n\t\tconst o = TxtStage.ch_in_style(hArg);\n\t\tconst x = o.x.startsWith('=') ?`${o.nx *100}%` :`${o.nx}px`;\n\t\tconst y = o.y.startsWith('=') ?`${o.ny *100}%` :`${o.ny}px`;\n\t\tconst {name} = hArg;\n\t\taddStyle(`\n.sn_ch_in_${name} {\n\tposition: relative;\n\tdisplay: inline-block;\n}\n.go_ch_in_${name} {\n\topacity: ${o.alpha};\n\tposition: relative;\n\tdisplay: inline-block;\n\tanimation: sn_ch_in_${name} ${o.wait}ms ${o.ease} 0s both;\n}\n@keyframes sn_ch_in_${name} {\n\tfrom {transform: rotate(${o.rotate}deg) scale(${o.scale_x}, ${o.scale_y}) translate(${x}, ${y})}\n\tto {opacity: 1; transform: none;}\n}\n`);\n\n\t\treturn false;\n\t}\n\t// 文字消去演出\n\tstatic\t#ch_out_style(hArg: HArg) {\n\t\tconst o = TxtStage.ch_out_style(hArg);\n\t\tconst x = o.x.startsWith('=') ?`${o.nx *100}%` :`${o.nx}px`;\n\t\tconst y = o.y.startsWith('=') ?`${o.ny *100}%` :`${o.ny}px`;\n\t\tconst {name} = hArg;\n\t\taddStyle(`\n.go_ch_out_${name} {\n\tposition: relative;\n\tdisplay: inline-block;\n\tanimation: go_ch_out_${name} ${o.wait}ms ${o.ease} 0s both;\n}\n@keyframes go_ch_out_${name} {\n\tto {\n\t\topacity: ${o.alpha};\n\t\ttransform: rotate(${o.rotate}deg) scale(${o.scale_x}, ${o.scale_y}) translate(${x}, ${y});\n\t}\n`);\n\n\t\treturn false;\n\t}\n\n\n\tstatic\t#evtMng\t: IEvtMng;\n\tstatic\t#sys\t: SysBase;\n\tstatic setEvtMng(evtMng: IEvtMng, sys: SysBase, scrItr: ScriptIterator) {\n\t\tthis.#evtMng = evtMng;\n\t\tthis.#sys = sys;\n\t\tTxtStage.setEvtMng(evtMng, scrItr);\n\t}\n\n\t// 文字ごとのウェイト\n\tstatic #doAutoWc\t= false;\n\tstatic #hAutoWc\t: {[ch: string]: number}\t= {};\n\tstatic #autowc(hArg: HArg) {\n\t\tthis.#doAutoWc = argChk_Boolean(hArg, 'enabled', this.#doAutoWc);\n\t\tthis.#val.setVal_Nochk('save', 'const.sn.autowc.enabled', this.#doAutoWc);\n\n\t\tconst {text} = hArg;\n\t\tif ('text' in hArg !== 'time' in hArg) throw '[autowc] textとtimeは同時指定必須です';\n\t\tthis.#val.setVal_Nochk('save', 'const.sn.autowc.text', text);\n\t\tif (! text) {\n\t\t\tthis.#val.setVal_Nochk('save', 'const.sn.autowc.time', '');\n\t\t\treturn false;\n\t\t}\n\n\t\tconst len = text.length;\n\t\tif (this.#doAutoWc && len === 0) throw '[autowc] enabled === false かつ text === \"\" は許されません';\n\n\t\tconst a = String(hArg.time).split(',');\n\t\tif (a.length !== len) throw '[autowc] text文字数とtimeに記述された待ち時間(コンマ区切り)は同数にして下さい';\n\t\tthis.#hAutoWc = {};\t// 毎回クリアを仕様とする\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tfor (let i=0; i<len; ++i) this.#hAutoWc[text[i]!] = uint(a[i]);\n\t\tthis.#val.setVal_Nochk('save', 'const.sn.autowc.time', hArg.time);\n\n\t\treturn false;\n\t}\n\n\n\t// バック\n\t#b_color\t\t\t= 0x000000;\n\t#b_alpha\t\t\t= 0;\n\t#b_alpha_isfixed\t= false;\n\t#b_do\t\t\t: DisplayObject | undefined\t= undefined;\n\t#b_pic\t\t\t= '';\t// 背景画像無し(=単色塗り)\n\n\t// 文字表示\n\t#txs\t= new TxtStage(this.ctn, ()=> this.canFocus(), TxtLayer.#sys);\n\n\treadonly\t#rbSpl\t= new RubySpliter;\n\treadonly\t#htmRb\t= document.createElement('span');// cssチェック・保存用\n\tstatic\treadonly\t#hWarnR_Style = {\n\t\t'text-align'\t\t: 0,\n\t\t'text-align-last'\t: 0,\n\t\t'height'\t: 0,\n\t\t'width'\t\t: 0,\n\t\t'padding-left'\t\t: 0,\n\t\t'padding-right'\t\t: 0,\n\t\t'padding-top'\t\t: 0,\n\t\t'padding-bottom'\t: 0,\n\t};\n\n\treadonly\t#cntBtn\t= new Container<Button>;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.ctn.addChild(this.#txs);\n\n\t\tthis.#rbSpl.init(this.#putCh);\n\n\t\tthis.ctn.addChild(this.#cntBtn);\t// ボタンはpaddingの影響を受けない\n\t\tthis.#cntBtn.name = 'cntBtn';\n\n\t\tconst padding = 16;\t// 初期padding\n\t\tthis.lay({style: `width: ${CmnLib.stageW}px; height: ${CmnLib.stageH}px; font-family: 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', '游ゴシック Medium', meiryo, sans-serif; color: white; font-size: 24px; line-height: 1.5; padding: ${padding}px;`, in_style: 'default', out_style: 'default', back_clear: 'true'});\n\t}\n\toverride destroy() {\n\t\tif (this.#b_do) {this.ctn.removeChild(this.#b_do).destroy(); this.#b_do = undefined}\n\n\t\tTxtLayer.#log.pagebreak();\n\t\tthis.#txs.destroy();\n\t}\n\tstatic\tdestroy() {\n\t\tthis.#doAutoWc = false;\n\t\tthis.#hAutoWc = {};\n\n\t\tthis.#rec = tx=> tx;\n\t}\n\toverride set name(nm: string) {this.name_ = nm; this.#txs.name = nm}\n\toverride get name() {return this.name_}\t// getは継承しないらしい\n\n\n\toverride cvsResize() {this.#txs.cvsResize()}\n\toverride cvsResizeChildren() {\n\t\tfor (const b of this.#cntBtn.children) b.cvsResize();\n\t}\n\n\tprotected\toverride\tprocSetX(x: number) {this.#txs.lay({x})}\n\tprotected\toverride\tprocSetY(y: number) {this.#txs.lay({y})}\n\n\toverride lay(hArg: HArg) {\n\t\tsuper.lay(hArg);\n\t\tLayer.setXY(this.ctn, hArg, this.ctn);\n\n\t\thArg[':id_tag'] = this.name_.slice(0, -7);\t// Design用\n\t\tRubySpliter.setting(hArg);\n\t\tthis.#setFfs(hArg);\n\t\tthis.#txs.lay(hArg);\n\n\t\tif ('r_align' in hArg) this.#r_align = hArg.r_align ?? '';\n\t\tthis.#ruby_pd = CmnLib.isSafari\n\t\t? this.#txs.tategaki\t\t// Safariでは親文字幅 l は疑似値\n\t\t\t? (v, l)=> `text-align: start; height: ${l}em; padding-top: ${v}; padding-bottom: ${v};`\n\t\t\t: (v, l)=> `text-align: start; width: ${l}em; padding-left: ${v}; padding-right: ${v};`\n\t\t: this.#txs.tategaki\n\t\t\t? v=> `text-align: justify; text-align-last: justify; padding-top: ${v}; padding-bottom: ${v};`\n\t\t\t: v=> `text-align: justify; text-align-last: justify; padding-left: ${v}; padding-right: ${v};`;\n\t\t// eslint-disable-next-line @typescript-eslint/unbound-method\n\t\tif (CmnLib.isFirefox) this.#mkStyle_r_align = this.#mkStyle_r_align4ff;\n\n\t\tif ('r_style' in hArg) {\n\t\t\tif (hArg.r_style) {\n\t\t\t\tconst cln = document.createElement('span');\n\t\t\t\tcln.style.cssText = hArg.r_style;\n\t\t\t\tconst len = cln.style.length;\n\t\t\t\tconst s = this.#htmRb.style;\n\t\t\t\tfor (let i=0; i<len; ++i) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\tconst key = <any>cln.style[i];\n\t\t\t\t\tif (key in TxtLayer.#hWarnR_Style) {\n\t\t\t\t\t\tDebugMng.myTrace(`${key}は指定できません`, 'W');\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst v = cln.style[key];\n\t\t\t\t\tif (v) s[key] = v;\n\t\t\t\t}\n\t//\t\t\tif ((! cln.style.opacity) && ('alpha' in hArg)) s.opacity = String(this.spLay.alpha);\n\t\t\t}\n\t\t\telse this.#htmRb.style.cssText = '';\n\t\t}\n\n\t\tif ('alpha' in hArg) for (const b of this.#cntBtn.children) b.alpha = this.ctn.alpha;\n\n\t\tthis.#set_ch_in(hArg);\n\t\tthis.#set_ch_out(hArg);\n\n\t\tconst RPN_TXT_LAY = Reading.procID +`TxtLayer lay name:${this.name_}`;\n\t\tconst ret = this.#drawBack(hArg, isStop=> {\n\t\t\tif (isStop) Reading.endProc(RPN_TXT_LAY);\n\t\t});\n\t\tif (ret) Reading.beginProc(RPN_TXT_LAY);\n\t\treturn ret;\n\t}\n\t#set_ch_in(hArg: T_cmdTxt_JSON | HArg) {\n\t\tconst {in_style} = hArg;\n\t\tif (! in_style) return;\n\t\tconst cis = TxtStage.getChInStyle(in_style);\n\t\tif (! cis) throw `存在しないin_style【${in_style}】です`;\n\t\tthis.#$ch_in_style = in_style;\n\t\tthis.#ch_in_join = cis.join;\n\t}\n\t#$ch_in_style\t= '';\n\t#ch_in_join\t\t= true;\n\n\toverride get\twidth() {return this.#txs.getWidth}\n\toverride get\theight() {return this.#txs.getHeight}\n\n\t#set_ch_out(hArg: T_cmdTxt_JSON | HArg) {\n\t\tconst {out_style} = hArg;\n\t\tif (! out_style) return;\n\t\tconst cos = TxtStage.getChOutStyle(out_style);\n\t\tif (! cos) throw `存在しないout_style【${out_style}】です`;\n\t\tthis.#$ch_out_style = out_style;\n\t}\n\t#$ch_out_style\t= '';\n\n\t#sps\t= new SpritesMng;\n\t#drawBack(hArg: HArg, fncComp: (isStop: boolean)=> void): boolean {\n\t\tif ('back_clear' in hArg) {\n\t\t\tif (argChk_Boolean(hArg, 'back_clear', false)) {\n\t\t\t\tthis.#b_color = 0x000000;\n\t\t\t\tthis.#b_alpha = 0;\n\t\t\t\tthis.#b_alpha_isfixed = false;\n\t\t\t\tthis.#b_pic = '';\n\t\t\t}\n\t\t\tfncComp(false);\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.#b_alpha = argChk_Num(hArg, 'b_alpha', this.#b_alpha);\n\t\tthis.#b_alpha_isfixed = argChk_Boolean(hArg, 'b_alpha_isfixed', this.#b_alpha_isfixed);\n\t\tconst alpha = (this.#b_alpha_isfixed\n\t\t\t? 1\n\t\t\t: Number(TxtLayer.#val.getVal('sys:TextLayer.Back.Alpha'))\n\t\t) *this.#b_alpha;\n\t\tif (hArg.b_pic) {\n\t\t\tif (this.#b_pic !== hArg.b_pic) {\n\t\t\t\tthis.#b_pic = hArg.b_pic;\n\t\t\t\tif (this.#b_do) {\n\t\t\t\t\tthis.ctn.removeChild(this.#b_do);\t// Graphics かも\n\t\t\t\t\tthis.#b_do.destroy();\t// Graphics かも\n\t\t\t\t}\n\t\t\t\t//this.#sps.destroy();\t// Graphics かもなので使用不可\n\t\t\t\tthis.#sps = new SpritesMng(this.#b_pic, this.ctn, sp=> {\n\t\t\t\t\tthis.#b_do = sp;\n\t\t\t\t\tsp.name = 'back(pic)';\n\t\t\t\t\tsp.visible = alpha > 0;\n\t\t\t\t\tsp.alpha = alpha;\n\t\t\t\t\t//CmnLib.adjustRetinaSize(this.b_pic, sp);\n\t\t\t\t\tthis.#txs.setMySize(sp.width, sp.height);\n\t\t\t\t\t\t// ちなみに左上表示位置は本レイヤと同じ\n\t\t\t\t\tthis.ctn.setChildIndex(sp, 0);\n\t\t\t\t\tfncComp(true);\n\t\t\t\t});\n\t\t\t\treturn this.#sps.ret;\n\t\t\t}\n\t\t}\n\t\telse if ('b_color' in hArg) {\n\t\t\tthis.#b_color = argChk_Color(hArg, 'b_color', 0x000000);\n\t\t\tif (this.#b_do) {\n\t\t\t\tthis.ctn.removeChild(this.#b_do);\t// Graphics かも\n\t\t\t\tthis.#b_do.destroy();\t// Graphics かも\n\t\t\t\t//this.#sps.destroy();\t// Graphics かもなので使用不可\n\t\t\t}\n\t\t\tthis.#b_pic = '';\t// 忘れずクリア\n\t\t\tthis.ctn.addChildAt(\n\t\t\t\t(this.#b_do = new Graphics)\n\t\t\t\t.beginFill(this.#b_color, alpha)\n\t\t\t\t.lineStyle(undefined)\n\t\t\t\t.drawRect(0, 0, this.#txs.getWidth, this.#txs.getHeight)\n\t\t\t\t.endFill(), 0);\n\t\t\tthis.#b_do.name = 'back(color)';\n\t\t\t//cacheAsBitmap = true;\t// これを有効にするとスナップショットが撮れない??\n\t\t}\n\n\t\tif (this.#b_do) {\n\t\t\tthis.#b_do.visible = alpha > 0;\n\t\t\t\t// 透明の時は表示しない。こうしないと透明テキストレイヤ下のボタンが\n\t\t\t\t// 押せなくなる(透明だが塗りがあるという扱いなので)\n\t\t\tthis.#b_do.alpha = alpha;\n\t\t}\n\t\tfncComp(false);\n\n\t\treturn false;\n\t}\n\tchgBackAlpha(g_alpha: number): void {\n\t\tconst alpha = this.#b_alpha_isfixed\n\t\t\t? this.#b_alpha\n\t\t\t: g_alpha * this.#b_alpha;\n\t\tif (this.#b_do instanceof Graphics) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\tif (this.#b_do) {\n\t\t\t\tthis.ctn.removeChild(this.#b_do);\n\t\t\t\tthis.#b_do.destroy();\n\t\t\t}\n\t\t\tthis.ctn.addChildAt(\n\t\t\t\t(this.#b_do = new Graphics)\n\t\t\t\t.beginFill(this.#b_color, alpha)\n\t\t\t\t.lineStyle(undefined)\n\t\t\t\t.drawRect(0, 0, this.#txs.getWidth, this.#txs.getHeight)\n\t\t\t\t.endFill(), 0);\n\t\t\tthis.#b_do.name = 'back(color)';\n\t\t\t//cacheAsBitmap = true;\t// これを有効にするとスナップショットが撮れない??\n\t\t}\n\t\tif (this.#b_do) {\n\t\t\tthis.#b_do.visible = alpha > 0;\n\t\t\t\t// 透明の時は表示しない。こうしないと透明テキストレイヤ下のボタンが\n\t\t\t\t// 押せなくなる(透明だが塗りがあるという扱いなので)\n\t\t\tthis.#b_do.alpha = alpha;\n\t\t}\n\t}\n\n\t#setFfs(hArg: HArg) {\n\t\tif ('noffs' in hArg) {\n\t\t\tthis.#strNoFFS = hArg.noffs ?? '';\n\t\t\t// eslint-disable-next-line no-irregular-whitespace\n\t\t\tthis.#regNoFFS = new RegExp(`[ ${this.#strNoFFS}]`);\n\t\t}\n\t\tif (! ('ffs' in hArg)) return;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\tthis.#ffs ??= '';\n\t\tthis.#fncFFSStyle = this.#ffs === ''\n\t\t\t? ()=> ''\n\t\t\t: ch=> this.#regNoFFS.test(ch)\n\t\t\t\t? ''\n\t\t\t\t: ` font-feature-settings: ${this.#ffs};`;\n\t}\n\t#ffs\t= '';\n\t#fncFFSStyle\t= (_ch: string)=> '';\n\t#strNoFFS\t= '';\n\t// eslint-disable-next-line no-irregular-whitespace\n\t#regNoFFS\t= /[ ]/;\n\t// Safariが全体に「font-feature-settings」した後、特定文字の「font-feature-settings: initial;」を受け付けてくれないのでわざわざ一つずつ指定\n\n\n\tstatic\tchgDoRec(doRec: boolean) {\n\t\tthis.#rec = doRec\n\t\t\t? tx=> tx\n\t\t\t: tx=> `<span class='offrec'>${tx}</span>`;\n\t\t\t\t// 囲んだ領域は履歴で非表示\n\t}\n\tstatic\t#rec = (tx: string)=> tx;\n\n\tisCur\t= false;\n\t#ruby_pd: (v: string, l: number)=> string = ()=> '';\n\t#mkStyle_r_align: (ch: string, rb: string, r_align: string, add_sty?: string)=> string = (ch, rb, r_align, add_sty='')=> {\n\t\tif (! r_align) return ` style='${add_sty}'`;\n\n\t\tconst len = ch.length *2;\n\t\tif (len -rb.length < 0) return ` style='text-align: ${r_align}; ${add_sty}'`;\n\n\t\tlet st = '';\n\t\tswitch (r_align) {\n\t\tcase 'justify':\n\t\t\tst = this.#ruby_pd('0', len);\tbreak;\n\t\tcase '121':\n\t\t\tst = this.#ruby_pd(`calc(${(len -rb.length) /(rb.length *2)}em)`, len);\tbreak;\n\t\tcase 'even':\n\t\t\tst = this.#ruby_pd(`calc(${(len -rb.length) /(rb.length +1)}em)`, len);\tbreak;\n\t\tcase '1ruby':\n\t\t\tst = this.#ruby_pd('1em', len);\tbreak;\n\t\tdefault:\n\t\t\tst = `text-align: ${r_align};`;\n\t\t}\n\t\treturn ` style='${st} ${add_sty}'`;\n\t};\n\t#r_align\t= '';\n\t#mkStyle_r_align4ff(ch: string, rb: string, r_align: string, add_sty=''): string {\n\t\tif (! r_align) return ` style='${add_sty}'`;\n\n\t\tconst len = ch.length *2;\n\t\tif (len -rb.length < 0) return ` style='text-align: ${r_align}; ${add_sty}'`;\n\n\t\tlet st = '';\n\t\tswitch (r_align) {\n\t\t\tcase 'left':\tst = 'ruby-align: start;';\tbreak;\n\t\t\tcase 'center':\tst = 'ruby-align: center;';\tbreak;\n\t\t\tcase 'right':\t// エレガントにサポートできていない\n\t\t\t\tst = 'ruby-align: start;';\tbreak;\n\t\t\tcase 'justify':\tst = 'ruby-align: space-between;';\tbreak;\n\t\t\tcase '121':\t\tst = 'ruby-align: space-around;';\tbreak;\n\t\t\tcase 'even':{\n\t\t\t\tconst ev = (len -rb.length) /(rb.length +1);\n\t\t\t\tst = 'ruby-align: space-between; '+\n\t\t\t\t(this.#txs.tategaki\n\t\t\t\t\t? `padding-top: ${ev}em; padding-bottom: ${ev}em;`\n\t\t\t\t\t: `padding-left: ${ev}em; padding-right: ${ev}em;`);\n\t\t\t}\tbreak;\n\t\t\tcase '1ruby':\tst = 'ruby-align: space-between; '+\n\t\t\t\t(this.#txs.tategaki\n\t\t\t\t\t? 'padding-top: 1em; padding-bottom: 1em;'\n\t\t\t\t\t: 'padding-left: 1em; padding-right: 1em;');\n\t\t\t\tbreak;\n\t\t\tdefault:\t\tst = `text-align: ${r_align};`;\n\t\t}\n\t\treturn ` style='${st} ${add_sty}'`;\n\t}\n\n\ttagCh(text: string): void {this.#rbSpl.putTxt(text)}\n\t#needGoTxt = false;\n\tget needGoTxt() {return this.#needGoTxt}\n\treadonly\t#putCh\t: IPutCh = (ch, iruby)=> {\n\t\tlet ruby = iruby;\n\t\tif (TxtLayer.#cfg.oCfg.debug.putCh) console.log(`🖊 文字表示 text:\\`${ch}\\`(${ch.charCodeAt(0).toString(16)}) ruby:\\`${ruby}\\` name:\\`${this.name_}\\``);\n\n\t\tconst a_ruby = ruby.split('|');\n\t\tlet add_htm = '';\n\t\tconst [a0, ...a1_] = a_ruby;\n\t\tconst a1 = a1_.join('|');\n\t\tswitch (a_ruby.length) {\n\t\tcase 1:\t\t// 字or春《はる》\n\t\t\tthis.#needGoTxt = true;\n\t\t\tif (ch === '\\n') {\n\t\t\t\tif (this.#firstCh) {// 1文字目にルビが無い場合、不可視ルビで行揃え\n\t\t\t\t\tthis.#firstCh = false;\n\t\t\t\t\tadd_htm = '<ruby> <rt> </rt></ruby><br/>';\n\t\t\t\t}\n\t\t\t\telse add_htm = '<br/>';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (this.#firstCh) {\t// 1文字目にルビが無い場合、不可視ルビで行揃え\n\t\t\t\tthis.#firstCh = false;\n\t\t\t\tif (ruby === '') ruby = ' ';\n\t\t\t}\n\t\t\tadd_htm = this.#tagCh_sub(ch, ruby, this.#r_align);\n\t\t\tbreak;\n\n\t\tdefault:\t// 《grp|{\"id\":\"break\",\"pic\":\"breakline\"}》\n\t\t\tswitch (a0) {\t// ルビ揃え指定と同時シリーズ\n\t\t\tcase 'start':\t// 初期値\n\t\t\tcase 'left':\t//(肩付き)先頭親文字から、ルビ間は密着\n\t\t\tcase 'center':\t//(中付き)センター合わせ、〃\n\t\t\tcase 'right':\t//(右/下揃え)末尾親文字から、〃\n\t\t\tcase 'justify':\t//(両端揃え)先頭から末尾親文字間に、ルビ間は均等にあける\n\t\t\tcase '121':\t\t//(1-2-1(JIS))ルビの前後を比率1、ルビ間を比率2であける\n\t\t\tcase 'even':\t//(均等アキ)ルビの前後、ルビ間も均等にあける\n\t\t\tcase '1ruby':\t//(1ルビ文字アキ)ルビの前後をルビ一文字空け、ルビ間は均等にあける\n\t\t\t\tthis.#firstCh = false;\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t\tadd_htm = this.#tagCh_sub(ch, a1, a0);\n\t\t\t\tbreak;\n\n\t\t\tcase 'gotxt':\n\t\t\t\tthis.#popSpan();\n\t\t\t\tif (this.#needGoTxt) {\n\t\t\t\t\tif (this.isCur) TxtLayer.#log.recText(\n\t\t\t\t\t\tthis.#aSpan.join('')\n\t\t\t\t\t\t.replace(/^<ruby> <rt> <\\/rt><\\/ruby>(<br\\/>)+/, '')\n\t\t\t\t\t\t\t// 前方の空行をtrim\n\t\t\t\t\t\t.replaceAll(/style='(anim\\S+ [^;]+;\\s*)+/g, 'style=\\'')\n\t\t\t\t\t\t\t// 2 matches (40 step, 205µs) https://regex101.com/r/u1H6v2/1\n\t\t\t\t\t\t.replaceAll(/( style=''| data-(add|arg|cmd)='[^']+'|\\n+|\\t+)/g, '')\n\t\t\t\t\t\t\t// 2 matches (94 step, 175µs) https://regex101.com/r/5DFUmv/1\n\t\t\t\t\t\t.replaceAll(/class='sn_ch[^']+/g, 'class=\\'sn_ch')\n\t\t\t\t\t\t\t// 不要情報削除\n\t\t\t\t\t\t\t// 2 matches (28 step, 280µs) https://regex101.com/r/XhBbYo/1\n\t\t\t\t\t\t.replaceAll('display: none;', '')\t// 履歴情報可視化\n\t\t\t\t\t\t.replaceAll('class=\\'offrec\\'', 'style=\\'display: none;\\'')\n\t\t\t\t\t);\t\t// 囲んだ領域は履歴で非表示\n\n\t\t\t\t\tthis.#txs.goTxt(this.#aSpan, this.#cumDelay === 0);\n\t\t\t\t\tthis.#needGoTxt = false;\n\t\t\t\t\tthis.#cumDelay = 0;\n\t\t\t\t}\n\t\t\t\telse if (this.isCur) this.#txs.noticeCompTxt();\n\t\t\t\treturn;\t// breakではない\n\n\t\t\tcase 'add':{\t// 文字幅を持たない汎用的な命令(必ずadd_closeすること)\n\t\t\t\tconst o = <T_cmdTxt_JSON>JSON.parse(a1);\n\n\t\t\t\tconst {style='', wait=null} = o;// wait=0にすると背景が最初から出る\n\t\t\t\tconst {cl, sty} = this.#o2domArg(true, wait ?uint(wait): null);\n\t\t\t\tthis.#aSpan.push(`<span${cl} style='${sty} display: inline; ${style}'>`);\t// display: inline; がないと前の改行が改行しなくなる\n\t\t\t\tdelete o.style;\t// 背景styleなどを[ch]で一塊とする\n\t\t\t\tthis.#pushSpan(o);\n\t\t\t}\treturn;\t// breakではない\n\t\t\tcase 'add_close':\n\t\t\t\tthis.#aSpan.push('</span>');\n\t\t\t\tthis.#popSpan();\n\t\t\t\treturn;\t// breakではない\n\n\t\t\tcase 'grp':\t//\t画像など 《grp|{\"id\":\"break\",\"pic\":\"breakline\"}》\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t{\n\t\t\t\tconst o = <T_cmdTxt_JSON>JSON.parse(a1);\n\t\t\t\t// 直後の dispBreak() のため oを更新\n\t\t\t\to.id ??= String(this.#aSpan.length);\n\t\t\t\tif (o.id === 'break') {\n\t\t\t\t\tthis.#txs.dispBreak(<HArg>o);\n\t\t\t\t\treturn;\t// breakではない\n\t\t\t\t}\n\n\t\t\t\tthis.#firstCh = false;\n\t\t\t\t// 直後の JSON.stringify() のため oを更新\n\t\t\t\to.delay = this.#cumDelay;\t// 画像のスライドインで使う\n\t\t\t\to.r ??= '';\n\t\t\t\to.style ??= '';\n\t\t\t\to.r_style ??= '';\n\t\t\t\tconst {r, wait=null, r_style} = o;\n\t\t\t\tconst {cl, sty, lnk} = this.#o2domArg(true, wait ?uint(wait): null);\n\t\t\t\tadd_htm = `<span${cl} style='${sty} ${o.style\n\t\t\t\t}'><ruby><span data-cmd='grp' data-arg='${JSON.stringify(o)\n\t\t\t\t}'${lnk} style='${sty} display: inline;'> </span><rt${lnk}${\n\t\t\t\t\tthis.#mkStyle_r_align(' ', r, this.#r_align,\n\t\t\t\t\tthis.#htmRb.style.cssText\t// この並びで上書きされていく\n\t\t\t\t\t+ (this.#stkASpan.at(-1)?.o.r_style ?? '')\n\t\t\t\t\t+ r_style)\n\t\t\t\t}>${o.r}</rt></ruby></span>`;\n\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'tcy':\t// ルビ付き縦中横\n\t\t\t\tthis.#firstCh = false;\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t{\n\t\t\t\tconst {t='', r='', wait=null, style='', r_style=''} = <T_cmdTxt_JSON>JSON.parse(a1);\n\t\t\t\tif (TxtLayer.#val.doRecLog()) {\n\t\t\t\t\tthis.#page_text += ch +(ruby ?`《${ruby}》` :'');\n\t\t\t\t\tthis.#page_plain_text += t;\n\t\t\t\t}\n\n\t\t\t\tconst rb = CmnLib.isSafari\n\t\t\t\t\t? r.replaceAll(/[A-Za-z0-9]/g, s=> String.fromCharCode(s.charCodeAt(0) + 65248))\n\t\t\t\t\t\t// 英数字を全角に(Safariで縦中横ルビが半角文字だと、\n\t\t\t\t\t\t// 選択矩形が横倒しになる不具合対策)\n\t\t\t\t\t: r;\n\t\t\t\tconst {cl, sty, lnk} = this.#o2domArg(true, wait ?uint(wait): null);\n\t\t\t\tadd_htm = `<span${cl} style='${sty}${this.#fncFFSStyle(t)} ${style}'><ruby><span${lnk} style='${sty} display: inline; text-combine-upright: all;'>${t}</span><rt${lnk}${\n\t\t\t\t\tthis.#mkStyle_r_align(t, rb, this.#r_align,\n\t\t\t\t\tthis.#htmRb.style.cssText\t// この並びで上書きされていく\n\t\t\t\t\t+ (this.#stkASpan.at(-1)?.o.r_style ?? '')\n\t\t\t\t\t+ r_style)\n\t\t\t\t}>${rb}</rt></ruby></span>`;\n\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'del':\t//if (a1 !== 'break') throw '文字レイヤdelコマンドは、現在id=breakのみサポートします';\n\t\t\t\tTxtStage.delBreak();\n\t\t\t\treturn;\t// breakではない\n\n\t\t\tcase 'span':\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t\tthis.#mergePushSpan(<T_cmdTxt_JSON>JSON.parse(a1));\n\t\t\t\treturn;\t// breakではない\n\n\t\t\tcase 'link':\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t{\n\t\t\t\tconst o = <T_cmdTxt_JSON>JSON.parse(a1);\n\t\t\t\to[':link'] = ' data-lnk=\\'@\\'';\n\t\t\t\tconst {cl, sty, curpos} = this.#o2domArg(false, o.wait ?uint(o.wait): null);\n\t\t\t\tthis.#aSpan.push(`<span${cl} style='${sty} display: inline; ${o.style ?? ''}' ${curpos} data-arg='${a1}'>`);\n\t\t\t\t\t// display: inline; を削除するとルビもリンク背景に含まれる\n\t\t\t\t\t// ただし当たり判定は文字・ルビ上のみ\n\t\t\t\tdelete o.style;\n\t\t\t\tthis.#mergePushSpan(o);\n\t\t\t}\treturn;\t// breakではない\n\n\t\t\tcase 'endlink':\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t\tthis.#aSpan.push('</span>');\n\t\t\t\tthis.#popSpan();\n\t\t\t\treturn;\t// breakではない\n\n\t\t\tdefault:\t// ルビあり文字列\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t\tadd_htm = this.#tagCh_sub(ch, ruby, this.#r_align);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tthis.#aSpan.push(TxtLayer.#rec(add_htm));\n\t}\n\t#tagCh_sub(ch: string, rb: string, r_align: string): string {\n\t\tconst ht = ch===' ' ?' ' :ch===' ' ?' ' :ch;\n\t\tif (TxtLayer.#val.doRecLog()) {\n\t\t\tthis.#page_text += ht +(rb ?`《${rb}》` :'');\n\t\t\tif (ch !== ' ') this.#page_plain_text += ch;\n\t\t}\n\t\tconst {cl, sty, lnk} = this.#o2domArg(true, null, ch);\n\n\t\tif (rb) return `<span${cl} style='${sty} ${this.#fncFFSStyle(ch)\n\t\t//<ruby style='ruby-position:under;'>\t// 下付ルビ\n\t\t}'><ruby>${\t// 文字個別に出現させるため以下にも ${cl} が必要\n\t\t\tArray.from(ch).map((c, i)=> `<span${cl}${lnk} style='${\n\t\t\t\ti > 0 ?this.#o2domArg(true, null, ch).sty :sty\n\t\t\t} display: inline;'>${\n\t\t\t\tc===' ' ?' ' :c===' ' ?' ' :c\n\t\t\t}</span>`).join('')\n\t\t\t\t// display: inline; がないと[span]区間外のルビが浮く\n\t\t}<rt${lnk}${this.#mkStyle_r_align(ch, rb, r_align,\n\t\t\tthis.#htmRb.style.cssText\t// この並びで上書きされていく\n\t\t\t+ (this.#stkASpan.at(-1)?.o.r_style ?? ''))\n\t\t}>${rb}</rt></ruby></span>`;\t// <span>に入れないと崩れ一文字ずつ出ない\n\n\t\treturn `<span${cl} style='${sty} ${this.#fncFFSStyle(ch)}'${lnk}>${ht}</span>`;\n\t}\n\t#o2domArg(isAddWait: boolean, argWait: number | null, ch = '\\n') {\n\t\tconst wait = this.#ch_in_join ?argWait\n\t\t\t?? this.#stkASpan.at(0)?.o.wait\t// 親要素\n\t\t\t?? (TxtLayer.#doAutoWc\t// ()は必要\n\t\t\t\t? TxtLayer.#hAutoWc[ch.at(0) ?? ''] ?? 0\n\t\t\t\t: LayerMng.msecChWait) :0;\n\t\tif (TxtLayer.#evtMng.isSkipping) this.#cumDelay = 0;\n\t\telse if (isAddWait && this.#ch_in_join) this.#cumDelay += uint(wait);\n\t\t\t// ... += uint(wait)*5\t// こうすると出現視認テストができる\n\t\tconst curpos = `data-add='{\"ch_in_style\":\"${this.#$ch_in_style}\", \"ch_out_style\":\"${this.#$ch_out_style}\"}'`;\n\n\t\treturn {\n\t\t\tcl\t: ` class='sn_ch sn_ch_yet sn_ch_in_${this.#$ch_in_style}'`,\t// TxtStage.goTxt()はこれ単位で文字出現させる\n\t\t\tsty\t: `animation-delay: ${this.#cumDelay}ms;${\n\t\t\t\tthis.#stkASpan.at(-1)?.o.style ?? ''\n\t\t\t}`,\t\t// TxtStage.goTxt()はこれ単位で文字出現させる\n\t\t\tlnk\t: (this.#stkASpan.at(0)?.o[':link'] ?? '')+' '+ curpos,\n\t\t\tcurpos,\n\t\t};\n\t}\n\t#cumDelay\t= 0;\n\t#firstCh\t= true;\n\t#aSpan\t\t: string[]\t= [];\n\t#stkASpan\t: {\n\t\to\t\t: T_cmdTxt_JSON;\n\t\tr_align\t\t\t: string;\n\t\tch_in_style\t\t: string;\n\t\tch_out_style\t: string;\n\t}[] = [];\n\n\t#pushSpan(o :T_cmdTxt_JSON) {\n\t\tthis.#stkASpan.push({\n\t\t\to,\n\t\t\tr_align\t\t\t: this.#r_align,\n\t\t\tch_in_style\t\t: this.#$ch_in_style,\n\t\t\tch_out_style\t: this.#$ch_out_style,\n\t\t});\n\t\tif (o.r_align) this.#r_align = o.r_align;\n\t\tthis.#set_ch_in(o);\n\t\tthis.#set_ch_out(o);\n\t}\n\t#popSpan() {\n\t\tconst stk = this.#stkASpan.pop();\n\t\tif (! stk) return;\n\n\t\tthis.#r_align = stk.r_align;\n\t\tthis.#set_ch_in({in_style: stk.ch_in_style});\n\t\tthis.#set_ch_out({out_style: stk.ch_out_style});\n\t}\n\t#mergePushSpan(o :T_cmdTxt_JSON) {\n\t\tconst stk = this.#stkASpan.at(-1);\n\t\tif (! stk) {this.#pushSpan(o); return}\n\n\t\tstk.o = {...stk.o, ...o};\n\t\tif (! o.style && ! o.r_style) {stk.o.style = ''; stk.o.r_style = ''}\n\t\t\t// どちらも指定されてなければクリア\n\t\tif (o.r_align) this.#r_align = o.r_align;\n\t\tthis.#set_ch_in(o);\n\t\tthis.#set_ch_out(o);\n\t}\n\n\treadonly click = ()=> {\t// true: 文字出現中だったので、停止する\n\t\tif (! this.ctn.interactiveChildren || ! this.ctn.visible) return false;\n\t\treturn this.#txs.skipChIn();\n\t}\n\n\tclearText(): void {\n\t\tthis.ctn.addChild(this.#txs = this.#txs.reNew());\n\n\t\tthis.#cumDelay = 0;\n\t\tthis.#firstCh = true;\n\t\tthis.#aSpan = [];\n\t\tthis.#page_text = '';\n\t\tthis.#page_plain_text = '';\n\t\tTxtLayer.#log.pagebreak();\n\t}\n\t#page_text\t\t\t= '';\n\t#page_plain_text\t= '';\n\tget pageText() {return this.#page_text.replace('《 》', '')}\n\tget pagePlainText() {return this.#page_plain_text}\n\n\tget enabled() {return this.ctn.interactiveChildren}\n\tset enabled(e) {this.ctn.interactiveChildren = e}\n\n\treadonly\taddButton = (hArg: HArg)=> new Promise<void>(re=> {\n\t\t// 直後の JSON.stringify() のため hArg を更新\n\t\thArg.key = `btn=[${this.#cntBtn.children.length}] `+ this.name_;\n\t\thArg[':id_tag'] = hArg.key.slice(0, -7);\t// Design用\n\t\targChk_Boolean(hArg, 'hint_tate', this.#txs.tategaki);\t// hint用\n\t\tconst btn = new Button(hArg, TxtLayer.#evtMng, ()=> re(), ()=> this.canFocus());\n\t\tbtn.name = JSON.stringify(hArg).replaceAll('\"', '\\'');// playback時に使用\n\t\tthis.#cntBtn.addChild(btn);\n\t});\n\tcanFocus(): boolean {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\treturn (this.ctn.interactiveChildren ?? false)\n\t\t&& this.ctn.visible\n\t\t&& TxtLayer.#isPageFore(this);\n\t}\n\n\n\toverride clearLay(hArg: HArg): void {\n\t\tsuper.clearLay(hArg);\n\n\t\tthis.clearText();\n\t\t// 上で呼ばれる this.#evtMng.escapeHint();\t// Hintごとdestroyされるのを回避\n\t\tfor (const b of this.#cntBtn.removeChildren()) b.destroy();\n\t}\n\toverride readonly record = ()=> {return {...super.record(),\n\t\tenabled\t: this.enabled,\n\n\t\tr_cssText\t: this.#htmRb.style.cssText,\n\t\tr_align\t\t: this.#r_align,\n\n\t\t// バック\n\t\tb_do\t: this.#b_do === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: this.#b_do instanceof Sprite ?'Sprite' :'Graphics',\n\t\tb_pic\t: this.#b_pic,\n\t\tb_color\t: this.#b_color,\n\t\tb_alpha\t: this.#b_alpha,\n\t\tb_alpha_isfixed\t: this.#b_alpha_isfixed,\n\n\t\tffs\t\t: this.#ffs,\n\t\ttxs\t\t: this.#txs.record(),\n\t\tstrNoFFS: this.#strNoFFS,\n\n\t\tbtns\t: this.#cntBtn.children.map(b=> b.name),\n\t}};\n\toverride playback(hLay: T_RP_layTxt, aPrm: Promise<void>[]): void {\n\t\tsuper.playback(hLay, aPrm);\n\n\t\tthis.enabled\t= hLay.enabled;\n\n\t\tthis.#htmRb.style.cssText = hLay.r_cssText;\n\t\tthis.#r_align\t= hLay.r_align;\n\t\tthis.cvsResize();\n\n\t\tthis.#setFfs(hLay);\n\t\tthis.#txs.playback(hLay.txs);\n\t\t// 文字背景サイズは TxtStage を参照するのでこの順で\n\t\tthis.#b_alpha\t\t\t= hLay.b_alpha;\n\t\tthis.#b_alpha_isfixed\t= hLay.b_alpha_isfixed;\n\n\t\taPrm.push(\n\t\t\tnew Promise<void>(re=> {\n\t\t\t\tconst h: HArg = hLay.b_do\n\t\t\t\t\t? hLay.b_do === 'Sprite'\n\t\t\t\t\t\t? {b_pic: hLay.b_pic}\n\t\t\t\t\t\t: {b_color: hLay.b_color}\n\t\t\t\t\t: {b_pic: ''};\n\t\t\t\th.b_alpha = hLay.b_alpha;\n\t\t\t\th.b_alpha_isfixed = hLay.b_alpha_isfixed;\n\t\t\t\tif (! this.#drawBack(h, isStop=> {if (isStop) re()})) re();\n\t\t\t}),\n\t\t\t...hLay.btns.map(b=> this.addButton(<HArg>JSON.parse(b.replaceAll('\\'', '\"')))).flat(),\n\t\t);\n\t}\n\n\tget cssText() {return this.#txs.cssText}\n\tset cssText(ct: string) {this.#txs.cssText = ct}\n\n\toverride snapshot(rnd: Renderer, re: ()=> void) {\n\t\trnd.render(this.ctn, {clear: false});\n\t\tthis.#txs.snapshot(rnd, re);\n\t}\n\toverride snapshot_end() {this.#txs.snapshot_end()}\n\n\toverride makeDesignCast(gdc: IMakeDesignCast) {\n\t\tif (! this.ctn.visible) return;\n\t\tthis.#txs.makeDesignCast(gdc);\n\t}\n\toverride makeDesignCastChildren(gdc: IMakeDesignCast) {\n\t\tif (! this.ctn.visible) return;\n\t\tfor (const b of this.#cntBtn.children) b.makeDesignCast(gdc);\n\t}\n\n\toverride showDesignCast() {this.#txs.showDesignCast()}\n\toverride showDesignCastChildren() {\n\t\tfor (const b of this.#cntBtn.children) b.showDesignCast();\n\t}\n\n\toverride dump(): string {\n\t\tthis.#putCh('', 'gotxt|');\t// バッファの文字を印字してしまう\n\n\t\treturn super.dump() +`, \"enabled\":\"${this.enabled}\", ${this.#txs.dump()\n\t\t}, \"b_pic\":\"${this.#b_pic}\", \"b_color\":\"${this.#b_color\n\t\t}\", \"b_alpha\":${this.#b_alpha}, \"b_alpha_isfixed\":\"${this.#b_alpha_isfixed\n\t\t}\", \"width\":${this.#txs.getWidth}, \"height\":${this.#txs.getHeight\n\t\t}, \"pixi_obj\":[${\n\t\t\tthis.ctn.children.map(e=> `{\"class\":\"${\n\t\t\t\te instanceof Sprite ?'Sprite' :\n\t\t\t\t\te instanceof Graphics ?'Graphics' :\n\t\t\t\t\t\te instanceof Container ?'Container' :'?'\n\t\t\t}\", \"name\":\"${e.name}\", \"alpha\":${e.alpha}, \"x\":${e.x}, \"y\":${e.y}, \"visible\":\"${e.visible}\"}`).join(',')\n\t\t}], \"button\":[${\n\t\t\tthis.#cntBtn.children.map(b=> b.children[0]?.name ?? '{}').join(',')\n\t\t}]`;\n\t}\n\n}\n","/* eslint-disable @typescript-eslint/restrict-template-expressions */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, type IEvtMng, argChk_Boolean, argChk_Num} from './CmnLib';\nimport {CmnTween} from './CmnTween';\nimport type {IHTag, HArg} from './Grammar';\nimport type {IVariable, IMain, IGetFrm} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport type {Config} from './Config';\nimport {SEARCH_PATH_ARG_EXT} from './ConfigBase';\nimport {Reading} from './Reading';\n\nimport {type Application, Loader, LoaderResource} from 'pixi.js';\n\n\nexport class FrameMng implements IGetFrm {\n\tstatic\t#cfg\t: Config;\n\tstatic\t#sys\t: SysBase;\n\tstatic\t#main\t: IMain;\n\tstatic\tinit(cfg: Config, sys: SysBase, main: IMain): void {\n\t\tFrameMng.#cfg = cfg;\n\t\tFrameMng.#sys = sys;\n\t\tFrameMng.#main = main;\n\t}\n\n\tconstructor(hTag: IHTag, private readonly appPixi: Application, private readonly val: IVariable) {\n\t\t//\tHTMLフレーム\n\t\thTag.add_frame\t\t= o=> this.#add_frame(o);\t// フレーム追加\n\t\thTag.let_frame\t\t= o=> this.#let_frame(o);\t// フレーム変数を取得\n\t\thTag.set_frame\t\t= o=> this.#set_frame(o);\t// フレーム変数に設定\n\t\thTag.frame\t\t\t= o=> this.#frame(o);\t\t// フレームに設定\n\t\thTag.tsy_frame\t\t= o=> this.#tsy_frame(o);\t// フレームをトゥイーン開始\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {this.#evtMng = evtMng}\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hIfrm\t: {[id: string]: HTMLIFrameElement} = Object.create(null);\n\tdestroy() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tfor (const f of Object.values(this.#hIfrm)) f.parentElement!.removeChild(f);\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tthis.#hIfrm = Object.create(null);\n\t}\n\n\thideAllFrame() {\t// (表示・非表示を保存しつつ)すべて非表示に\n\t\tfor (const [id, {style}] of Object.entries(this.#hIfrm)) {\n\t\t\tthis.#hIfrmVisibleBk[id] = style.display !== 'none';\n\t\t\tstyle.display = 'none';\n\t\t}\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hIfrmVisibleBk: {[id: string]: boolean} = Object.create(null);\n\trestoreAllFrame() {\t// 保存していた表示・非表示を回復\n\t\tfor (const [id, v] of Object.entries(this.#hIfrmVisibleBk)) {\n\t\t\tconst f = this.#hIfrm[id];\n\t\t\tif (f) f.style.display = v ?'inline' :'none';\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tthis.#hIfrmVisibleBk = Object.create(null);\n\t}\n\n\t//\tHTMLフレーム\n\t// フレーム追加\n\t#add_frame(hArg: HArg) {\n\t\tconst {id, src, alpha: a=1, scale_x: sx=1, scale_y: sy=1, rotate: r=0,} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tif (! src) throw 'srcは必須です';\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】はすでにあります`;\n\n\t\tconst v = argChk_Boolean(hArg, 'visible', true);\n\t\tconst b_color = hArg.b_color ?` background-color: ${hArg.b_color};` :'';\n\t\tconst rct = this.#rect(hArg);\n\t\t// 【sandbox=\"allow-scripts allow-same-origin\"】は必要なのに警告が出るので削除\n\t\tFrameMng.#main.cvs.insertAdjacentHTML('beforebegin', `<iframe id=\"${id}\" style=\"opacity: ${a}; ${b_color} position: absolute; left:${\n\t\t\tFrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale\n\t\t}px; top: ${\n\t\t\tFrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale\n\t\t}px; z-index: 1; border: 0px; overflow: hidden; display: ${\n\t\t\tv ?'inline' :'none'\n\t\t}; transform: scale(${sx}, ${sy}) rotate(${r}deg);\" width=\"${\n\t\t\trct.width *FrameMng.#sys.cvsScale\n\t\t}\" height=\"${\n\t\t\trct.height *FrameMng.#sys.cvsScale\n\t\t}\"></iframe>`);\n\n\t\tconst RPN_ADD_FRAME = Reading.procID +`add_frame id:${id}`;\n\t\tReading.beginProc(RPN_ADD_FRAME);\n\t\tconst url = FrameMng.#cfg.searchPath(src, SEARCH_PATH_ARG_EXT.HTML);\n\t\tconst ld = (new Loader)\n\t\t.add({name: src, url, xhrType: LoaderResource.XHR_RESPONSE_TYPE.TEXT});\n\t\tif (FrameMng.#sys.arg.crypto) ld.use(\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t(res, next)=> void FrameMng.#sys.dec(res.extension, res.data)\n\t\t\t.then(r=> {\n\t\t\t\tres.data = r;\n\t\t\t\tnext();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> {\n\t\t\t\tFrameMng.#main.errScript(`[add_frame]Html ロード失敗です src:${res.name} ${e}`, false);\n\t\t\t\tnext();\n\t\t\t})\n\t\t);\n\t\tld.load((_ldr, hRes)=> {\n\t\t\tconst f = <HTMLIFrameElement>document.getElementById(id);\n\t\t\tthis.#hIfrm[id] = f;\n\t\t\tthis.#hDisabled[id] = false;\n\n\t\t\tconst iLastSep = url.lastIndexOf('/') +1;\n\t\t\tconst path_parent = url.slice(0, iLastSep);\n\t\t\tconst path_pa_pa = path_parent.slice(0, iLastSep);\n\t\t\tf.srcdoc = String(hRes[src]?.data)\t// .src はふりーむで問題発生\n\t\t\t.replace('sn_repRes();', '')\t// これはいずれやめる\n\t\t\t.replaceAll(\n\t\t\t\t/\\s(?:src|href)=([\"'])(\\S+?)\\1/g,\t// 【\\s】が大事、data-src弾く\n\t\t\t\t(m, br: string, v: string)=> v.startsWith('../')\n\t\t\t\t? path_pa_pa + m.slice(3)\n\t\t\t\t: m.replace('./', '')\t// 「./」は無視\n\t\t\t\t\t.replace(br, br + path_parent)\n\t\t\t);\n\n\t\t\tif (f.srcdoc.includes('true/*WEBP*/;')) f.srcdoc = f.srcdoc.replaceAll(\n\t\t\t\t/data-src=\"(.+?\\.)(?:jpe?g|png)/g,\n\t\t\t\t(_, p1: string)=> `data-src=\"${p1}webp`\n\t\t\t);\n\n\t\t\tf.onload = ()=> {\t// 一度変数に入れてここで設定するのはFirefox対応。ifrm.onloadが二度呼ばれる!\n\t\t\t\tReading.endProc(RPN_ADD_FRAME);\n\n\t\t\t\t// 組み込み変数\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn, true);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.alpha', a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', rct.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', rct.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', r);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', rct.width);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', rct.height);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.visible', v);\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst win = f.contentWindow!;\n\t\t\t\tthis.#evtMng.resvFlameEvent(<HTMLBodyElement>win.document.body);\n\t\t\t\t// sn_repRes()をコール。引数は画像ロード処理差し替えメソッド\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\t\t(<any>win).sn_repRes?.((i: HTMLImageElement)=> FrameMng.#loadPic2Img(i.dataset.src ?? '', i));\n\t\t\t};\n\t\t});\n\t\treturn true;\n\t}\n\t#hDisabled\t: {[id: string]: boolean}\t= {};\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tgetFrmDisabled(id: string): boolean {return this.#hDisabled[id]!}\n\t#rect(hArg: HArg): DOMRect {\n\t\tconst a = {...hArg};\n\t\tconst re = FrameMng.#sys.resolution;\n\t\treturn new DOMRect(\n\t\t\targChk_Num(a, 'x', 0) *re,\n\t\t\targChk_Num(a, 'y', 0) *re,\n\t\t\targChk_Num(a, 'width', CmnLib.stageW) *re,\n\t\t\targChk_Num(a, 'height', CmnLib.stageH) *re,\n\t\t);\n\t}\n\n\tstatic\t#loadPic2Img(src: string, img: HTMLImageElement, onload?: (img2: HTMLImageElement)=> void) {\n\t\tconst oUrl = this.#hEncImgOUrl[src];\n\t\tif (oUrl) {\n\t\t\timg.src = oUrl;\n\t\t\tif (onload) img.onload = ()=> onload(img);\n\t\t\treturn;\n\t\t}\n\n\t\tconst aImg = this.#hARetImg[src];\n\t\tif (aImg) {aImg.push(img); return}\t// load 終了前の駆け込み対応\n\t\tthis.#hARetImg[src] = [img];\n\n\t\tconst [srcNoPrm='', Prm=''] = src.split('?');\n\t\tconst path = FrameMng.#cfg.searchPath(srcNoPrm, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\tconst ld2 = (new Loader)\n\t\t.add({name: src, url: path, xhrType: LoaderResource.XHR_RESPONSE_TYPE.BUFFER,});\n\n\t\t// === vite-electron 用コード ===\n\t\tif (FrameMng.#sys.use4ViteElectron(src, path, ld2, FrameMng.#main)) { /* empty */ }\n\t\telse\n\t\tif (FrameMng.#sys.arg.crypto && path.endsWith('.bin')) ld2.use((res, next)=> {\n\t\t\tif (res.extension !== 'bin') {next(); return}\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tvoid FrameMng.#sys.decAB(res.data)\n\t\t\t.then(r=> {\n\t\t\t\tres.data = r;\n\t\t\t\tif (r instanceof HTMLImageElement) res.type = LoaderResource.TYPE.IMAGE;\n\t\t\t\tnext();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> {\n\t\t\t\tFrameMng.#main.errScript(`FrameMng loadPic ロード失敗です fn:${res.name} ${e}`, false)\n\t\t\t\tnext();\n\t\t\t});\n\t\t});\n\t\tld2.load((_ldr, hRes)=> {\n\t\t\tfor (const [s2, {data: {src}}] of Object.entries(hRes)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n\t\t\t\tconst u2 = this.#hEncImgOUrl[s2] = src + (\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\tsrc.startsWith('blob:') || src.startsWith('data:')\n\t\t\t\t\t?'' :Prm ? '?'+ Prm: ''\n\t\t\t\t);\n\t\t\t\tconst ri = this.#hARetImg[s2];\n\t\t\t\tif (ri) for (const i of ri) {\n\t\t\t\t\ti.src = u2;\n\t\t\t\t\tif (onload) i.onload = ()=> onload(i);\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete this.#hARetImg[s2];\n\t\t\t//\tURL.revokeObjectURL(u2);// 画面遷移で毎回再生成するので\n\t\t\t}\n\t\t});\n\t}\n\tstatic\t#hARetImg\t\t: {[src: string]: HTMLImageElement[]}\t= {};\n\tstatic\t#hEncImgOUrl\t: {[src: string]: string}\t\t\t\t= {};\n\n\n\tcvsResize() {\t// NOTE: フォントサイズはどう変更すべきか\n\t\tfor (const [id, f] of Object.entries(this.#hIfrm)) {\n\t\t\tconst vn = 'const.sn.frm.'+ id;\n\t\t\tconst x = Number(this.val.getVal(vn +'.x'));\n\t\t\tconst y = Number(this.val.getVal(vn +'.y'));\n\t\t\tconst w = Number(this.val.getVal(vn +'.width'));\n\t\t\tconst h = Number(this.val.getVal(vn +'.height'));\n\t\t\tf.style.left = `${FrameMng.#sys.ofsLeft4elm +x *FrameMng.#sys.cvsScale}px`;\n\t\t\tf.style.top = `${FrameMng.#sys.ofsTop4elm +y *FrameMng.#sys.cvsScale}px`;\n\t\t\tf.width = String(w *FrameMng.#sys.cvsScale);\n\t\t\tf.height = String(h *FrameMng.#sys.cvsScale);\n\t\t}\n\t}\n\n\t// フレーム変数を取得\n\t#let_frame(hArg: HArg) {\n\t\tconst {id, var_name} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】が読み込まれていません`;\n\t\tif (! var_name) throw 'var_nameは必須です';\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tconst win = f.contentWindow!;\n\t\tif (! Object.hasOwn(win, var_name)) throw `frame【${id}】に変数/関数【${var_name}】がありません。変数は var付きにして下さい`;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\tconst v = (<any>win)[var_name];\n\t\t// var変数 / 関数実行の戻り値 -> 組み込み変数\n\t\tthis.val.setVal_Nochk(\n\t\t\t'tmp',\n\t\t\tvn +'.'+ var_name,\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call\n\t\t\targChk_Boolean(hArg, 'function', false) ?v() :v\n\t\t);\n\n\t\treturn false;\n\t}\n\n\t// フレーム変数に設定\n\t#set_frame(hArg: HArg) {\n\t\tconst {id, var_name, text} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】が読み込まれていません`;\n\t\tif (! var_name) throw 'var_nameは必須です';\n\t\tif (! text) throw 'textは必須です';\n\n\t\t// -> 組み込み変数\n\t\tthis.val.setVal_Nochk('tmp', vn +'.'+ var_name, text);\n\n\t\t// -> var変数に設定\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion\n\t\tconst win: any = f.contentWindow!;\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\twin[var_name] = text;\n\n\t\treturn false;\n\t}\n\n\t// フレームに設定\n\t#zIdx = 1;\n\t#frame(hArg: HArg) {\n\t\tconst {id} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal('tmp:'+ vn)) throw `frame【${id}】が読み込まれていません`;\n\n\t\tconst s = f.style;\n\t\tif (argChk_Boolean(hArg, 'float', false)) s.zIndex = `${++this.#zIdx}`;\n\t\telse if ('index' in hArg) s.zIndex = `${argChk_Num(hArg, 'index', 0)}`;\n\t\telse if (hArg.dive) s.zIndex = `-${++this.#zIdx}`;\n\n\t\tif ('alpha' in hArg) {\n\t\t\tconst a = s.opacity = String(hArg.alpha);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.alpha', a);\n\t\t}\n\t\tconst rct = this.#rect(hArg);\n\t\tif ('x' in hArg || 'y' in hArg) {\n\t\t\ts.left = `${FrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale}px`;\n\t\t\ts.top = `${FrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale}px`;\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', rct.x);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', rct.y);\n\t\t}\n\t\tif ('scale_x' in hArg || 'scale_y' in hArg || 'rotate' in hArg) {\n\t\t\tconst sx = argChk_Num(hArg, 'scale_x', 1);\n\t\t\tconst sy = argChk_Num(hArg, 'scale_y', 1);\n\t\t\tconst r = argChk_Num(hArg, 'rotate', 0);\n\t\t\ts.transform = `scale(${sx}, ${sy}) rotate(${r}deg)`;\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', sx);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', sy);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', r);\n\t\t}\n\t\tif ('width' in hArg) {\n\t\t\tf.width = String(rct.width *FrameMng.#sys.cvsScale);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', rct.width);\n\t\t}\n\t\tif ('height' in hArg) {\n\t\t\tf.height = String(rct.height *FrameMng.#sys.cvsScale);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', rct.height);\n\t\t}\n\t\tif ('visible' in hArg) {\n\t\t\tconst v = argChk_Boolean(hArg, 'visible', true);\n\t\t\ts.display = v ?'inline' :'none';\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.visible', v);\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tif ('b_color' in hArg) s.backgroundColor = hArg.b_color!;\n\t\tif ('disabled' in hArg) {\n\t\t\tconst d = this.#hDisabled[id] = argChk_Boolean(hArg, 'disabled', true);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst b = f.contentDocument!.body;\n\t\t\tfor (const e of [\n\t\t\t\t...Array.from(b.getElementsByTagName('input')),\n\t\t\t\t...Array.from(b.getElementsByTagName('select')),\n\t\t\t]) e.disabled = d;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t// フレームをトゥイーン開始\n\t#tsy_frame(hArg: HArg) {\n\t\tconst {id, alpha, x, y, scale_x, scale_y, rotate, width, height} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`, 0)) throw `frame【${id}】が読み込まれていません`;\n\n\t\tconst hNow: {[val_name: string]: number} = {};\n\t\tif (alpha) hNow.a = Number(f.style.opacity);\n\t\tif (x || y || scale_x || scale_y || rotate) {\n\t\t\thNow.x = Number(this.val.getVal(`tmp:${vn}.x`));\n\t\t\thNow.y = Number(this.val.getVal(`tmp:${vn}.y`));\n\t\t\thNow.sx = Number(this.val.getVal(`tmp:${vn}.scale_x`));\n\t\t\thNow.sy = Number(this.val.getVal(`tmp:${vn}.scale_y`));\n\t\t\thNow.r = Number(this.val.getVal(`tmp:${vn}.rotate`));\n\t\t}\n\t\tif (width) hNow.w = Number(this.val.getVal(`tmp:${vn}.width`));\n\t\tif (height) hNow.h = Number(this.val.getVal(`tmp:${vn}.height`));\n\t\tconst hArg2 = CmnTween.cnvTweenArg(hArg, hNow);\n\n\t\tconst hTo: {[val_name: string]: number} = {};\n\t\tlet fncA = ()=> { /* empty */ };\n\t\tif (alpha) {\n\t\t\thTo.a = argChk_Num(hArg2, 'alpha', 0);\n\t\t\tfncA = ()=> {\n\t\t\t\tf.style.opacity = String(hNow.a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', 'alpha', hNow.a);\n\t\t\t};\n\t\t}\n\t\tlet fncXYSR = ()=> { /* empty */ };\n\t\tconst rct = this.#rect(hArg2);\n\t\tif (x || y || scale_x || scale_y || rotate) {\n\t\t\thTo.x = rct.x;\n\t\t\thTo.y = rct.y;\n\t\t\thTo.sx = argChk_Num(hArg2, 'scale_x', 1);\n\t\t\thTo.sy = argChk_Num(hArg2, 'scale_y', 1);\n\t\t\thTo.r = argChk_Num(hArg2, 'rotate', 0);\n\t\t\tfncXYSR = ()=> {\n\t\t\t\tf.style.left = `${\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tFrameMng.#sys.ofsLeft4elm +hNow.x! *FrameMng.#sys.cvsScale\n\t\t\t\t} px`;\n\t\t\t\tf.style.top = `${\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tFrameMng.#sys.ofsTop4elm +hNow.y! *FrameMng.#sys.cvsScale\n\t\t\t\t} px`;\n\t\t\t\tf.style.transform = `scale(${hNow.sx}, ${hNow.sy}) rotate(${hNow.r}deg)`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', hNow.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', hNow.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', hNow.sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', hNow.sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', hNow.r);\n\t\t\t};\n\t\t}\n\t\tlet fncW = ()=> { /* empty */ };\n\t\tif (width) {\n\t\t\thTo.w = rct.width;\n\t\t\tfncW = ()=> {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tf.width = `${hNow.w! *FrameMng.#sys.cvsScale} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', hNow.w);\n\t\t\t};\n\t\t}\n\t\tlet fncH = ()=> { /* empty */ };\n\t\tif (height) {\n\t\t\thTo.h = rct.height;\n\t\t\tfncH = ()=> {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tf.height = `${hNow.h! *FrameMng.#sys.cvsScale} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', hNow.h);\n\t\t\t};\n\t\t}\n\n\t\tthis.appPixi.stage.interactive = false;\n\t\tCmnTween.tween(`frm\\n${id}`, hArg, hNow, CmnTween.cnvTweenArg(hArg, hNow), ()=> {\n\t\t\tfncA(); fncXYSR(); fncW(); fncH();\n\t\t}, ()=> {this.appPixi.stage.interactive = true}, ()=> { /* empty */ });\n\n\t\treturn false;\n\t}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2025-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {HArg, IHTag} from './Grammar';\nimport type {IVariable} from './CmnInterface';\nimport type {T_CFG} from './ConfigBase';\n\n\nexport type T_LOG = {\n\trecText\t\t: (txt: string)=> void;\n\tpagebreak: ()=> void;\n};\n\ntype T_LOG_DATA = HArg & {\n\ttext\t: string;\t// 履歴文字列\n}\n\n\n// ログ管理\n//\t・要求仕様\n//\t\t[ch][rec_ch][rec_r][reset_rec] で履歴を記録・操作し、\n//\t\t変数 🦀const.sn.log.json を取得したときにいい感じの値を返す。\nexport class Log implements T_LOG {\n\t#LastLog\t: T_LOG_DATA\t= {text: ''};\t// 🌾\n\t#aLog\t\t: T_LOG_DATA[]\t= [];\t\t\t// 🍚\n\n\n\tconstructor(private readonly oCfg: T_CFG, private readonly hTag: IHTag, private readonly val: IVariable) {\n\t\thTag.rec_ch\t\t\t= o=> this.#rec_ch(o);\t\t// 履歴書き込み\n\t\thTag.rec_r\t\t\t= o=> this.#rec_r(o);\t\t// 履歴改行\n\t\thTag.reset_rec\t\t= o=> this.#reset_rec(o);\t// 履歴リセット\n\n\t\t// 履歴 JSON テキスト\n\t\t// 【内部変数】(ざっくりと)🦀 = 🍚this.#aLog + 🌾this.#LastLog\n\t\tval.defTmp('const.sn.log.json', ()=> {\n\t\t\t// HTML連結を一つにまとめる(始端終端のタグのみにする)\n\t\t\t//\ttext追加時ではなく、値を参照されるこのときまで遅らせて処理\n\t\t\tthis.#LastLog.text =\t// 🌾\n\t\t\tthis.#LastLog.text\n\t\t\t.replaceAll('</span><span class=\\'sn_ch\\'>', '');\n\n\t\t\tconst o = [...this.#aLog, this.#LastLog];\t// 🍚 + 🌾\n\t\t\treturn JSON.stringify(o);\t// 🦀\n\t\t});\n\t\tthis.recText('');\n\t}\n\n\t// [ch] からコールされる\n\t//\t[ch]\t\t// 文字を追加する\n\t\t// recText(text: string) コール\n\t\t// \t🌾this.#LastLog\t\t= {text};\t// 置換でよい\n\t\t// \t🍊save:const.sn.sLog = 🦀const.sn.log.json\t// これを起動したい\n\trecText(text: string) {\n\t\tthis.#LastLog.text = text;\t\t// 🌾 text は置換でよい\n\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog',\t// 🍊 リプレイ時の回復用\n\t\t\tString(this.val.getVal('const.sn.log.json'))\t// これを起動したい\n\t\t);\n\t}\n\n\t//MARK: 履歴書き込み\n\t//\t🌾this.#LastLog = {...hArg, text: 🌾this.#LastLog.text};\n\t#rec_ch(hArg: HArg) {\n\t\tthis.#LastLog = {...hArg, text: this.#LastLog.text};\n\t\tif (! hArg.text) {\n\t\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog',// 🍊 リプレイ時の回復用\n\t\t\t\tString(this.val.getVal('const.sn.log.json'))// これを起動したい\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\thArg.record = true;\n\t\thArg.style ??= '';\n\t\thArg.style += 'display: none;';\t// gotxt内で削除し履歴に表示\n\t\thArg.wait = 0;\n\t\treturn this.hTag.ch(hArg);\t// この先は text, style, r_style 以外破棄されてしまうので注意\n\t}\n\n\t//MARK: 履歴改行\n\t#rec_r(hArg: HArg) {return this.#rec_ch({...hArg, text: '[r]'})}\n\n\t//MARK: 履歴リセット\n\t//\t以下をクリア。text で置き換え値を設定できる\n\t//\t🌾this.#LastLog\t\t= {text: hArg.text ?? ''};\n\t//\t🍚this.#aLog\t\t= []\n\t//\t🍊save:const.sn.sLog= hArg.text ?[{text:\"${hArg.text}\"}] : []\n\t#reset_rec(hArg: HArg) {\n\t\tthis.#aLog = [];\n\t\thArg.text ??= '';\n\t\tthis.#LastLog = {text: hArg.text};\t\t// 🌾\n\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog', JSON.stringify([this.#LastLog]));\t// 🍊 リプレイ時の回復用\n\n\t\treturn false;\n\t}\n\n\t//MARK: 履歴改ページ\n\tpagebreak() {\n\t\tthis.#LastLog.text =\t// 🌾\n\t\tthis.#LastLog.text\n\t\t.replaceAll('</span><span class=\\'sn_ch\\'>', '');\n\n\t\tif (! this.#LastLog.text) return;\t//\t🌾this.#LastLog\n\n\t\tif (this.#aLog.push(this.#LastLog) > this.oCfg.log.max_len) this.#aLog = this.#aLog.slice(-this.oCfg.log.max_len);\n\t\tthis.#LastLog = {text: ''};\t\t// 🌾\n\t}\n\n\t//MARK: 履歴回復\n\t// save:const.sn.sLog からの復帰\n\tplayback() {\n\t\tthis.#aLog = <T_LOG_DATA[]>JSON.parse(String(this.val.getVal('save:const.sn.sLog')));\t\t// 🍚this.#aLog\t= 🍊 リプレイ時の回復用\n\t\tthis.#LastLog = {text: ''};\t\t// 🌾\n\t}\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, getDateStr, uint, type IEvtMng, argChk_Boolean, argChk_Num, addStyle, argChk_Color, parseColor} from './CmnLib';\nimport {CmnTween, TMP_TSY_NM, TW_INT_TRANS} from './CmnTween';\nimport type {IHTag, HArg} from './Grammar';\nimport type {IVariable, IMain, HIPage, IGetFrm, IPropParser} from './CmnInterface';\nimport {Pages} from './Pages';\nimport {Layer} from './Layer';\nimport {GrpLayer} from './GrpLayer';\nimport {SpritesMng} from './SpritesMng';\nimport {type T_cmdTxt_JSON, TxtLayer} from './TxtLayer';\nimport {RubySpliter} from './RubySpliter';\nimport {TxtStage} from './TxtStage';\nimport {PROTOCOL_DL, PROTOCOL_USERDATA, type Config} from './Config';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {SysBase} from './SysBase';\nimport {FrameMng} from './FrameMng';\nimport {Button} from './Button';\nimport type {SoundMng} from './SoundMng';\nimport {DesignCast} from './DesignCast';\nimport {EventListenerCtn} from './EventListenerCtn';\nimport {Reading} from './Reading';\nimport {Log} from './Log';\n\nimport {Container, type Application, Graphics, Filter, RenderTexture, Sprite, autoDetectRenderer, Texture} from 'pixi.js';\n\n\nexport type IMakeDesignCast = (idc: DesignCast)=> void;\n\nexport type HPage = {[ln: string]: Pages};\n\nfunction cnvSArg(o: T_cmdTxt_JSON) {\n\t\t// わざと使う側で <T_cmdTxt_JSON> させる。そっちで不具合を見つけてもらう\n\treturn encodeURIComponent(JSON.stringify(o));\n}\n\n\nexport class LayerMng implements IGetFrm {\n\treadonly\t#stage\t: Container;\n\t\t\t\t#fore\t= new Container;\n\t\t\t\t#back\t= new Container;\n\n\treadonly\t#frmMng\t\t: FrameMng;\n\treadonly\t#bg_color\t: number;\n\n\treadonly\t#log;\n\n\treadonly\t#elc\t\t= new EventListenerCtn;\n\n\t//MARK: コンストラクタ\n\tconstructor(private readonly cfg: Config, private readonly hTag: IHTag, private readonly appPixi: Application, private readonly val: IVariable, private readonly main: IMain, private readonly scrItr: ScriptIterator, private readonly sys: SysBase, sndMng: SoundMng, prpPrs: IPropParser) {\n\t\t// レスポンシブや回転・全画面切り替え・DevTools 表示切り替えの対応\n\t\tconst fncResizeLay = ()=> {\n\t\t\tsys.cvsResize();\n\t\t\tthis.cvsResizeDesign();\n\t\t\tif (this.#modeLnSub) for (const ln of this.#aLayName) {\n\t\t\t\tthis.#hPages[ln]!.fore.cvsResizeChildren();\n\t\t\t}\n\t\t\telse for (const ln of this.#aLayName) {\n\t\t\t\tthis.#hPages[ln]!.fore.cvsResize();\n\t\t\t}\n\n\t\t\tthis.#frmMng.cvsResize();\n\t\t\tthis.#evtMng.cvsResize();\n\t\t};\n\t\tif (CmnLib.isMobile) {\n\t\t\tthis.#elc.add(globalThis, 'orientationchange', fncResizeLay, {passive: true});\n\t\t}\n\t\telse {\n\t\t\tlet tid: NodeJS.Timeout | undefined = undefined;\n\t\t\tthis.#elc.add(globalThis, 'resize', ()=> {\n\t\t\t\tif (tid) return;\n\t\t\t\ttid = setTimeout(()=> {tid = undefined; fncResizeLay()}, 1000 /60 *10);\t// clearTimeout()不要と判断\n\t\t\t}, {passive: true});\n\t\t}\n\t\tsys.cvsResize();\n\n\t\tthis.#log = new Log(this.cfg.oCfg, hTag, val);\n\t\tTxtLayer.init(cfg, hTag, val, this.#log, me=> this.#hPages[me.layname]!.fore === me, appPixi);\n\t\tGrpLayer.init(main, cfg, appPixi, sys, sndMng, val);\n\t\tFrameMng.init(cfg, sys, main);\n\t\tButton.init(cfg);\n\n\t\tthis.#frmMng = new FrameMng(hTag, appPixi, val);\n\t\tsys.hFactoryCls.grp = ()=> new GrpLayer;\n\t\tsys.hFactoryCls.txt = ()=> new TxtLayer;\n\n\t\t//\tシステム\n\t\thTag.loadplugin\t\t= o=> this.#loadplugin(o);\t// プラグインの読み込み\n\t\t//hTag.set_focus\t// EventMng.tsで定義\t \t// フォーカス移動\n\t\thTag.snapshot\t\t= o=> this.#snapshot(o);\t// スナップショット\n\t\tthis.#snapshot4proc = this.sys.isApp\n\t\t\t? (hArg, url, width, height, RPN_SNAPSHOT)=> this.#snapshot4app(hArg, url, width, height, RPN_SNAPSHOT)\n\t\t\t: (hArg, url, width, height, RPN_SNAPSHOT)=> this.#snapshot4web(hArg, url, width, height, RPN_SNAPSHOT);\n\n\t\t//\tレイヤ共通\n\t\thTag.add_lay\t\t= o=> this.#add_lay(o);\t\t// レイヤを追加する\n\t\thTag.clear_lay\t\t= o=> this.#clear_lay(o);\t// レイヤ設定の消去\n\t\thTag.finish_trans\t= ()=> false;\t\t\t\t// トランス強制終了\n\t\thTag.lay\t\t\t= o=> this.#lay(o);\t\t\t// レイヤ設定\n\t\thTag.trans\t\t\t= o=> this.#trans(o);\t\t// ページ裏表を交換\n\t\thTag.wt\t\t\t\t= o=> CmnTween.wt(o);\t\t// トランス終了待ち\n\n\t\thTag.quake\t\t\t= o=> this.#quake(o);\t\t// 画面を揺らす\n\t\thTag.stop_quake\t\t= hTag.finish_trans;\t\t// 画面揺らし中断\n\t\thTag.wq\t\t\t\t= hTag.wt;\t\t\t\t\t// 画面揺らし終了待ち\n\n\t\thTag.pause_tsy\t\t= o=> CmnTween.pause_tsy(o);\t// 一時停止\n\t\thTag.resume_tsy\t\t= o=> CmnTween.resume_tsy(o);\t// 一時停止再開\n\t\thTag.stop_tsy\t\t= o=> CmnTween.stop_tsy(o);\t// トゥイーン中断\n\t\thTag.tsy\t\t\t= o=> this.#tsy(o);\t\t\t// トゥイーン開始\n\t\thTag.wait_tsy\t\t= o=> CmnTween.wait_tsy(o);\t// トゥイーン終了待ち\n\n\t\thTag.add_filter\t\t= o=> this.#add_filter(o);\t// フィルター追加\n\t\thTag.clear_filter\t= o=> this.#clear_filter(o);// フィルター全削除\n\t\thTag.enable_filter\t= o=> this.#enable_filter(o);// フィルター個別切替\n\n\t\t//\t文字・文字レイヤ\n\t//\thTag.auto_pager\t\t= o=> this.auto_pager(o);\t// 自動改ページの設定\n\t\t//hTag.autowc\t\t// TxtLayer.ts で定義\t\t// 文字ごとのウェイト\n\t\thTag.ch\t\t\t\t= o=> this.#ch(o);\t\t\t// 文字を追加する\n\t\t//hTag.ch_in_style\t// TxtLayer.ts で定義\t\t// 文字出現文字出現演出\n\t\t//hTag.ch_out_style\t// TxtLayer.ts で定義\t\t// 文字消去文字出現演出\n\t\thTag.clear_text\t\t= o=> this.#clear_text(o);\t// 文字消去\n\t\thTag.current\t\t= o=> this.#current(o);\t\t// デフォルト文字レイヤ設定\n\t\thTag.endlink\t\t= o=> this.#endlink(o);\t\t// ハイパーリンクの終了\n\t\thTag.er\t\t\t\t= o=> this.#er(o);\t\t\t// ページ両面の文字消去\n\t\thTag.graph\t\t\t= o=> this.#graph(o);\t\t// インライン画像表示\n\t\thTag.link\t\t\t= o=> this.#link(o);\t\t// ハイパーリンク\n\t\thTag.r\t\t\t\t= o=> this.#r(o);\t\t\t// 改行\n\t\t// hTag.rec_ch\t\t// Log.ts で定義\t\t\t// 履歴書き込み\n\t\t// hTag.rec_r\t\t// Log.ts で定義\t\t\t// 履歴改行\n\t\t// hTag.reset_rec\t// Log.ts で定義\t\t\t// 履歴リセット\n\t\t//hTag.ruby\t\t\t= o=> this.ruby(o);\t\t\t// 直前一文字のルビ(廃止\n\t\t\t// タグでは無く、「|@《》」というスクリプト書き換えで良い\n\t\thTag.ruby2\t\t\t= o=> this.#ruby2(o);\t\t// 文字列と複数ルビの追加\n\t\thTag.span\t\t\t= o=> this.#span(o);\t\t// インラインスタイル設定\n\t\thTag.tcy\t\t\t= o=> this.#tcy(o);\t\t\t// 縦中横を表示する\n\n\t\t//\t画像・画像レイヤ\n\t\thTag.add_face\t\t= o=> SpritesMng.add_face(o);\t// 差分名称の定義\n\n\t\t//\tムービーレイヤ\n\t\thTag.wv\t\t\t\t= o=> SpritesMng.wv(o);\t\t// ムービー再生終了待ち\n\n\t\t//\tデバッグ・その他\n\t\thTag.dump_lay\t\t= o=> this.#dump_lay(o);\t// レイヤのダンプ\n\n\t\t//\tイベント\n\t\thTag.enable_event\t= o=> this.#enable_event(o);// イベント有無の切替\n\n\t\t//\tラベル・ジャンプ\n\t\thTag.button\t\t\t= o=> this.#button(o);\t\t// ボタンを表示\n\n\n\t\tif (cfg.existsBreakline) this.breakLine = (hArg: HArg)=> {\n\t\t\tdelete hArg.visible;\n\t\t\thArg.id = 'break';\n\t\t\thArg.pic= 'breakline';\n\t\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON>hArg));\n\t\t};\n\t\tif (cfg.existsBreakpage) this.breakPage = (hArg: HArg)=> {\n\t\t\tdelete hArg.visible;\n\t\t\thArg.id = 'break';\n\t\t\thArg.pic= 'breakpage';\n\t\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON>hArg));\n\t\t};\n\n\t\tthis.#bg_color = parseColor(String(cfg.oCfg.init.bg_color));\n\t\tconst grp = new Graphics;\n\t\tgrp\n\t\t.beginFill(this.#bg_color)\t// イベントを受け取るためにも塗る\n\t\t.lineStyle(0, this.#bg_color)\n\t\t.drawRect(0, 0, CmnLib.stageW, CmnLib.stageH)\n\t\t.endFill();\n\t\tthis.#fore.addChild(grp.clone());\n\t\tthis.#back.addChild(grp);\n\t\tthis.#back.visible = false;\n\t\tthis.#fore.name = 'page:A';\t// 4tst\n\t\tthis.#back.name = 'page:B';\t// 4tst\n\n\t\tthis.#stage = appPixi.stage;\n\t\tthis.#stage.addChild(this.#back);\n\t\tthis.#stage.addChild(this.#fore);\n\t\tthis.#stage.addChild(this.#spTransBack);\n\t\tthis.#stage.addChild(this.#spTransFore);\n\t\tthis.#stage.name = 'stage';\t// 4tst\n/*\n\t\tconsole.group('new DispMng info');\n\t\tconsole.info(appPixi.renderer);\n\t\tconsole.info('utils.isMobile():'+ utils.isMobile.any);\n\t\t\t\t// https://github.com/kaimallea/isMobile\n\t\tconsole.info('utils.isWebGLSupported():'+ utils.isWebGLSupported());\n\t\tconsole.info('w:%O: h:%O:', CmnLib.stageW, CmnLib.stageH);\n\t\tconsole.groupEnd();\n*/\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst fncTxt_b_alpha = (_name: string, val: any)=> {\n\t\t\tthis.#foreachRedrawTxtLayBack(Number(val))\n\t\t};\n\t\tfncTxt_b_alpha('', val.getVal('sys:TextLayer.Back.Alpha', 1));\n\t\tval.defValTrg('sys:TextLayer.Back.Alpha', fncTxt_b_alpha);\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n\t\tconst fncBtnFont = (_name: string, val: any)=> {Button.fontFamily = val};\n\t\tfncBtnFont('', val.getVal('tmp:sn.button.fontFamily', Button.fontFamily));\n\t\tval.defValTrg('tmp:sn.button.fontFamily', fncBtnFont);\n\n\t\tval.defTmp('const.sn.last_page_text', ()=> this.currentTxtlayFore?.pageText ?? '');\n\t\tval.defTmp('const.sn.last_page_plain_text', ()=> this.currentTxtlayFore?.pagePlainText ?? '');\n\t\tif (CmnLib.isDbg) {\n\t\t\tDesignCast.init(appPixi, sys, scrItr, prpPrs, cfg, this.#hPages);\n\t\t\tthis.cvsResizeDesign = ()=> DesignCast.cvsResizeDesign();\n\t\t\tsys.addHook((type, o)=> {\n\t\t\t\tif (! this.#hProcDbgRes[type]?.(type, o)) return;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete this.#hProcDbgRes[type];\n\t\t\t});\n\t\t}\n\t}\n\tprivate\tcvsResizeDesign() { /* empty */ }\n\n\n\treadonly\t#hProcDbgRes\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t: {[type: string]: (type: string, o: any)=> boolean}\t= {\n\t\tattach\t\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\tcontinue\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\tdisconnect\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\t_enterDesign: _=> {\n\t\t\tDesignCast.enterMode();\n\t\t\tfor (const ln of this.#aLayName) {\n\t\t\t\tconst lay = this.#hPages[ln]!.fore;\n\t\t\t\tlay.makeDesignCastChildren(gdc=> gdc.make());\n\t\t\t\tlay.makeDesignCast(gdc=> gdc.make());\n\t\t\t}\n\n\t\t\tthis.#selectNode(this.#curTxtlay);\treturn false;\n\t\t//\tthis.selectNode('mes/ボタン');\treturn false;\t// Test用\n\t\t//\tthis.selectNode(this.firstGrplay);\treturn false;\n\t\t\t\t// 制作中は普通画像レイヤをいじるのが主なので、これがいい\n\t\t},\n\t\t_replaceToken: (_, o)=> {DesignCast.replaceToken(o); return false},\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t_selectNode\t: (_, o)=> {this.#selectNode(o.node); return false},\n\t}\n\t#modeLn\t\t= '';\n\t#modeLnSub\t= '';\n\t#selectNode(node: string) {\n\t\t[this.#modeLn='', this.#modeLnSub=''] = node.split('/');\n\t\tconst pages = this.#hPages[this.#modeLn];\n\t\tif (! pages) return;\n\n\t\tDesignCast.allHide();\n\t\tif (this.#modeLnSub) pages.fore.showDesignCastChildren();\n\t\telse pages.fore.showDesignCast();\n\t}\n\n\tgetFrmDisabled = (id: string)=> this.#frmMng.getFrmDisabled(id);\n\n\t#grpCover : Graphics | undefined = undefined;\n\tcover(visible: boolean, bg_color = 0x0) {\n\t\tif (this.#grpCover) {\n\t\t\tthis.#stage.removeChild(this.#grpCover);\n\t\t\tthis.#grpCover.destroy();\n\t\t\tthis.#grpCover = undefined;\n\t\t}\n\t\tif (visible) this.#stage.addChild(\n\t\t\t(this.#grpCover = new Graphics)\n\t\t\t.beginFill(bg_color)\n\t\t\t.lineStyle(0, bg_color)\n\t\t\t.drawRect(0, 0, CmnLib.stageW, CmnLib.stageH)\n\t\t\t.endFill()\n\t\t);\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {\n\t\tthis.#evtMng = evtMng;\n\t\tthis.#frmMng.setEvtMng(evtMng);\n\t\tSpritesMng.setEvtMng(evtMng);\n\t\tCmnTween.init(evtMng, this.appPixi);\n\t}\n\n\tdestroy() {\n\t\tfor (const p of Object.values(this.#hPages)) p.destroy();\n\n\t\tthis.#elc.clear();\n\t\tGrpLayer.destroy();\n\t\tRubySpliter.destroy();\n\t\tTxtStage.destroy();\n\t\tTxtLayer.destroy();\n\n\t\tthis.#frmMng.destroy();\n\n\t\tCmnTween.destroy();\n\t\tLayerMng.#msecChWait = 10;\n\t}\n\n\n\t// 既存の全文字レイヤの実際のバック不透明度、を再計算\n\t#foreachRedrawTxtLayBack(g_alpha: number) {\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tif (! (fore instanceof TxtLayer)) continue;\n\t\t\tfore.chgBackAlpha(g_alpha);\n\t\t\t(<TxtLayer>back).chgBackAlpha(g_alpha);\n\t\t}\n\t}\n\n\n\t#cmdTxt = (cmd: string, tl = this.currentTxtlayForeNeedErr, _record = true)=> tl.tagCh('| 《'+ cmd +'》');\n\tgoTxt = ()=> { /* empty */ };\n\tget needGoTxt() {return this.currentTxtlayFore?.needGoTxt ?? false;}\n\tbreakLine = (_hArg: HArg)=> { /* empty */ };\n\tbreakPage = (_hArg: HArg)=> { /* empty */ };\n\tclearBreak() {\n\t\tif (! this.currentTxtlayFore) return;\n\n\t\tthis.clearBreak = ()=> this.#cmdTxt('del|break');\n\t\tthis.clearBreak();\n\t}\n\n\tclickTxtLay(): boolean {\t// true: 文字出現中だったので、停止する\n\t\tif (! this.currentTxtlayFore) return false;\n\n\t\treturn this.#aLayName\n\t\t.map(ln=> this.#hPages[ln]!.fore)\n\t\t.some(f=> f instanceof TxtLayer && f.click());\n\t}\n\n\n//\t//\tシステム\n\t//MARK: スナップショット\n\t#snapshot(hArg: HArg) {\n\t\tconst dt = getDateStr('-', '_', '', '_');\n\t\tconst fn0 = hArg.fn\n\t\t? hArg.fn.startsWith(PROTOCOL_USERDATA)\n\t\t\t? hArg.fn\n\t\t\t: `${PROTOCOL_DL + hArg.fn + dt}.png`\n\t\t: `${PROTOCOL_DL}snapshot${dt}.png`;\n\t\tconst url = this.cfg.searchPath(fn0);\n\t\tconst width = argChk_Num(hArg, 'width', CmnLib.stageW);\n\t\tconst height= argChk_Num(hArg, 'height', CmnLib.stageH);\n\t\treturn this.#snapshot4proc(hArg, url, width, height, `snapshot dt:${dt}`);\n\t}\n\t#snapshot4proc :(hArg: HArg, url: string, width: number, height: number, RPN_SNAPSHOT: string)=> boolean = ()=> false;\n\t#snapshot4app({layer}: HArg, url: string, width: number, height: number, RPN_SNAPSHOT: string): boolean {\n\t\tthis.#frmMng.hideAllFrame();\n\t\tReading.beginProc(RPN_SNAPSHOT);\n\t\tif (! layer) {\n\t\t\tthis.sys.capturePage(url, width, height, ()=> {\n\t\t\t\tthis.#frmMng.restoreAllFrame();\n\t\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\t// 一時的に非表示にしてスナップショット\n\t\tconst aBk = this.#aLayName\n\t\t.map(ln=> {\n\t\t\tconst {ctn} = this.#hPages[ln]!.fore;\n\t\t\tconst ret: [Sprite, boolean] = [ctn, ctn.visible];\n\t\t\tctn.visible = false;\n\t\t\treturn ret;\n\t\t});\n\t\tfor (const ln of this.#getLayers(layer)) this.#hPages[ln]!.fore.ctn.visible = true;\n\n\t\tthis.sys.capturePage(url, width, height, ()=> {\n\t\t\tfor (const [sp, v] of aBk) sp.visible = v;\n\t\t\tthis.#frmMng.restoreAllFrame();\n\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t});\n\t\treturn true;\n\t}\n\t#snapshot4web(hArg: HArg, url: string, width: number, height: number, RPN_SNAPSHOT: string): boolean {\n\t\tReading.beginProc(RPN_SNAPSHOT);\n\t\tconst b_color = argChk_Color(hArg, 'b_color', this.#bg_color);\n\t\tconst rnd = autoDetectRenderer({\n\t\t\twidth,\n\t\t\theight,\n\t\t\tbackgroundAlpha: b_color > 0x1000000 && url.endsWith('.png') ?0 :1,\n\t\t\tantialias: argChk_Boolean(hArg, 'smoothing', false),\n\t\t\tpreserveDrawingBuffer: true,\n\t\t\tbackgroundColor: b_color & 0xFFFFFF,\n\t\t\tautoDensity: true,\n\t\t});\n\t\tconst pg = hArg.page !== 'back' ?'fore' :'back';\n\t\tconst {layer} = hArg;\n\t\tvoid Promise.allSettled(\n\t\t\tthis.#getLayers(layer).map(ln=> new Promise<void>(\n\t\t\t\tre=> this.#hPages[ln]![pg].snapshot(rnd, re)\n\t\t\t))\n\t\t).then(async ()=> {\n\t\t\tconst renTx = RenderTexture.create({width: rnd.width, height: rnd.height});\t// はみ出し対策\n\t\t\trnd.render(this.#stage, {renderTexture: renTx});\n\t\t\tawait this.sys.savePic(\n\t\t\t\turl,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n\t\t\t\trnd.plugins.extract.base64(renTx),\n\t\t\t);\n\t\t\trenTx.destroy();\n\n\t\t\tfor (const ln of this.#getLayers(layer)) this.#hPages[ln]![pg].snapshot_end();\n\t\t\trnd.destroy(true);\n\n\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t});\n\t\treturn true;\n\t}\n\n\t//MARK: プラグインの読み込み\n\t#loadplugin(hArg: HArg) {\n\t\tconst {fn} = hArg;\n\t\tif (! fn) throw 'fnは必須です';\n\t\tif (! fn.endsWith('.css')) throw 'サポートされない拡張子です';\n\n\t\tconst join = argChk_Boolean(hArg, 'join', true);\n\t\tconst RPN_LOADPLUGIN = Reading.procID +`loadplugin fn:${fn}`;\n\t\tif (join) Reading.beginProc(RPN_LOADPLUGIN);\n\t\t(async ()=> {\n\t\t\tconst res = await fetch(fn);\n\t\t\tif (! res.ok) throw new Error('Network response was not ok.');\n\n\t\t\taddStyle(await res.text());\n\t\t\tif (join) Reading.endProc(RPN_LOADPLUGIN);\n\t\t})();\n\n\t\treturn join;\n\t}\n\n\n//\t//\tレイヤ共通\n\t//MARK: レイヤを追加する\n\t#add_lay(hArg: HArg) {\n\t\tconst {layer, class: cls} = hArg;\n\t\tif (! layer) throw 'layerは必須です';\n\t\tif (layer.includes(',')) throw 'layer名に「,」は使えません';\n\t\tif (layer in this.#hPages) throw `layer【${layer}】はすでにあります`;\n\t\tif (! cls) throw 'clsは必須です';\n\n\t\tconst ret = {isWait: false}\n\t\tthis.#hPages[layer] = new Pages(layer, cls, this.#fore, this.#back, hArg, this.sys, this.val, ret);\n\t\tthis.#aLayName.push(layer);\n\t\tswitch (cls) {\n\t\tcase 'txt':\n\t\t\tif (! this.#curTxtlay) {\n\t\t\t\tthis.#chkTxtLay = ()=> { /* empty */ };\n\t\t\t\tthis.#getTxtLayer = o=> this.#$getTxtLayer(o);\n\t\t\t\tthis.#current = o=> this.#$current(o);\n\t\t\t\tthis.hTag.current({layer});\t// hPages更新後でないと呼べない\n\t\t\t\tthis.goTxt = ()=> {\n\t\t\t\t\tif (this.#evtMng.isSkipping) LayerMng.#msecChWait = 0;\n\t\t\t\t\telse this.setNormalChWait();\n\t\t\t\t\tfor (const ln of this.#aLayName) {\n\t\t\t\t\t\tconst f = this.#hPages[ln]!.fore;\n\t\t\t\t\t\tif (f instanceof TxtLayer) this.#cmdTxt('gotxt|', f, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.val.setVal_Nochk('save', 'const.sn.layer.'+ layer +'.enabled', true);\n\t\t\tbreak;\n\n\t\tcase 'grp':\n\t\t\tif (this.#firstGrplay) break;\n\t\t\tthis.#firstGrplay = layer;\n\t\t\tbreak;\n\t\t}\n\n\t\tthis.scrItr.recodeDesign(hArg);\t// hArg[':id_tag'] は new Pages 内で設定\n\n\t\treturn ret.isWait;\n\t}\n\t#hPages\t\t: HPage\t\t= { /* empty */ };\t// しおりLoad時再読込\n\t#aLayName\t: string[]\t= [];\t// 最適化用・重なり順つき全レイヤ名\n\t#curTxtlay\t\t= '';\n\t#firstGrplay\t= '';\n\n\t#lay(hArg: HArg): boolean {\n\t\t// Trans\n\t\tconst ln = this.#argChk_layer(hArg);\n\t\tconst pg = this.#hPages[ln]!;\n\t\tconst back = pg.back.ctn;\n\t\tconst fore = pg.fore.ctn;\n\t\tif (argChk_Boolean(hArg, 'float', false)) {\n\t\t\tthis.#back.setChildIndex(back, this.#back.children.length -1);\n\t\t\tthis.#fore.setChildIndex(fore, this.#fore.children.length -1);\n\t\t\tthis.#rebuildLayerRankInfo();\n\t\t}\n\t\telse if (hArg.index) {\n\t\t\tif (argChk_Num(hArg, 'index', 0)) {\n\t\t\t\tthis.#back.setChildIndex(back, hArg.index);\n\t\t\t\tthis.#fore.setChildIndex(fore, hArg.index);\n\t\t\t\tthis.#rebuildLayerRankInfo();\n\t\t\t}\n\t\t}\n\t\telse if (hArg.dive) {\n\t\t\tconst {dive} = hArg;\n\t\t\tlet idx_dive = 0;\n\t\t\tif (ln === dive) throw '[lay] 属性 layerとdiveが同じ【'+ dive +'】です';\n\n\t\t\tconst pg_dive = this.#hPages[dive];\n\t\t\tif (! pg_dive) throw '[lay] 属性 dive【'+ dive +'】が不正です。レイヤーがありません';\n\t\t\tconst back_dive = pg_dive.back;\n\t\t\tconst fore_dive = pg_dive.fore;\n\t\t\tconst idx_back_dive = this.#back.getChildIndex(back_dive.ctn);\n\t\t\tconst idx_fore_dive = this.#fore.getChildIndex(fore_dive.ctn);\n\t\t\tidx_dive = idx_back_dive < idx_fore_dive ?idx_back_dive :idx_fore_dive;\n\t\t\tif (idx_dive > this.#back.getChildIndex(back)) --idx_dive;\t//自分が無くなって下がる分下げる\n\n\t\t\tthis.#fore.setChildIndex(fore, idx_dive);\n\t\t\tthis.#back.setChildIndex(back, idx_dive);\n\t\t\tthis.#rebuildLayerRankInfo();\n\t\t}\n\n\t\thArg[':id_tag'] = pg.fore.name.slice(0, -7);\n\t\tthis.scrItr.recodeDesign(hArg);\t// 必ず[':id_tag'] を設定すること\n\n\t\treturn pg.lay(hArg);\n\t}\n\t#rebuildLayerRankInfo() {this.#aLayName = this.#sortLayers()}\n\n\t//MARK: レイヤ設定の消去\n\t#clear_lay(hArg: HArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\t//if (name === this.strTxtlay && hArg.page !== 'back') this.recText('', true);\n\t\t\t\t// 改ページ\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面削除\n\t\t\t\tpg.fore.clearLay(hArg);\n\t\t\t\tpg.back.clearLay(hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpg.getPage(hArg).clearLay(hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t//===================================================\n\t//MARK: WebGL フラグメントシェーダー GLSL\n\tstatic\treadonly\t#srcRuleTransFragment = /* glsl */`\nprecision mediump float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform sampler2D rule;\nuniform float vague;\nuniform float tick;\n\nuniform vec4 inputPixel;\nuniform highp vec4 outputFrame;\nvec2 getUV(vec2 coord) {\n\treturn coord * inputPixel.xy / outputFrame.zw;\n}\n\nvoid main() {\n\tvec4 fg = texture2D(uSampler, vTextureCoord);\n\tvec4 ru = texture2D(rule, getUV(vTextureCoord));\n\n\tfloat v = ru.r - tick;\n\tgl_FragColor = abs(v) < vague\n\t\t? vec4(fg.rgb, 1) *fg.a *(0.5 +v /vague *0.5)\n\t\t: 0.0 <= v ? fg : vec4(0);\n}`;\n/*\n\t末尾が読みづらいが、以下のif文を消して三項演算子にしている。\n\n\tif (abs(v) < vague) {\n\t\tfloat f_a = fg.a *(0.5 +v /vague *0.5);\n\t\tgl_FragColor.rgb = fg.rgb *f_a;\n\t\tgl_FragColor.a = f_a;\n\t\treturn;\n\t}\n\tgl_FragColor = v >= 0.0 ? fg : vec4(0);\n\n\t\t★GLSL : don't use \"if\"|Nobu note.com/nobuhirosaijo/n/n606a3f5d8e89\n\t\t\t> if文はあまり使わない方がいいらしい (処理負荷が高い)\n*/\n\n\n\t#rtTransBack = RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTransBack = new Sprite(this.#rtTransBack);\n\n\t#rtTransFore = RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTransFore = new Sprite(this.#rtTransFore);\n\n\n\t//MARK: ページ裏表を交換\n\t#trans(hArg: HArg) {\n\t\tconst {layer} = hArg;\n\t\tconst sDoTrans = new Set<string>;\n\t\tconst aLayFore = this.#getLayers(layer).map(ln=> {\n\t\t\tsDoTrans.add(ln);\n\t\t\treturn this.#hPages[ln]!.fore;\n\t\t});\n\n\t\tconst comp = ()=> {\n\t\t\t[this.#fore, this.#back] = [this.#back, this.#fore];\n\t\t\tconst aPrm: Promise<void>[] = [];\n\t\t\tfor (const [ln, pg] of Object.entries(this.#hPages)) {\n\t\t\t\tif (sDoTrans.has(ln)) {pg.transPage(aPrm); continue}\n\n\t\t\t\t// transしないために交換する\n\t\t\t\tconst {fore: {ctn: f}, back: {ctn: b}} = pg;\n\t\t\t\tconst idx = this.#fore.getChildIndex(b);\n\t\t\t\tthis.#fore.removeChild(b);\n\t\t\t\tthis.#back.removeChild(f);\n\t\t\t\tthis.#fore.addChildAt(f, idx);\n\t\t\t\tthis.#back.addChildAt(b, idx);\n\t\t\t}\n\t\t\tvoid Promise.allSettled(aPrm).then(()=> {\n\t\t\t\tthis.#fore.visible = true;\n\t\t\t\tthis.#back.visible = false;\t// 再び非表示の裏方に(直前までforeだった)\n\t\t\t\tthis.#spTransBack.visible = false;\n\t\t\t\tthis.#spTransFore.visible = false;\n\n\t\t\t\tReading.notifyEndProc(TMP_TSY_NM + TW_INT_TRANS);\n\t\t\t});\n\t\t};\n//\t\thArg[':id'] = pg.fore.name.slice(0, -7);\n//\t\tthis.scrItr.getDesignInfo(hArg);\t// 必ず[':id'] を設定すること\n\t\tthis.#spTransFore.filters = [];\n\t\tthis.#spTransFore.alpha = 1;\n\n\t\t// 一瞬切り替え\n\t\tconst time = argChk_Num(hArg, 'time', 0);\n\t\tif (time === 0 || this.#evtMng.isSkipping) {\n\t\t\tReading.beginProc(TMP_TSY_NM + TW_INT_TRANS, ()=> { /* empty */ });\n\t\t\tqueueMicrotask(()=> comp());\t// 下で止めてからにしたい\n\t\t\treturn true;\n\t\t}\n\n\n\t\tconst aBackTransAfter: Sprite[] = [];\n\t\tconst aBack = this.#aLayName.map(ln=> {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tconst lay = sDoTrans.has(ln) ?back :fore;\n\t\t\tif (lay.ctn.visible) aBackTransAfter.push(lay.ctn);\n\t\t\treturn lay;\n\t\t});\n\t\tconst {ticker, renderer} = this.appPixi;\n\t\trenderer.render(this.#back, {renderTexture: this.#rtTransBack});\t// clear: true\n\n\t\tlet fncRenderBack = ()=> {\n\t\t\tfor (const ctn of aBackTransAfter) renderer.render(\n\t\t\t\tctn,\n\t\t\t\t{renderTexture: this.#rtTransBack, clear: false}\n\t\t\t);\n\t\t};\n\t\tif (! aBack.some(lay=> lay.containMovement)) {\n\t\t\tconst oldFnc = fncRenderBack;\t// 動きがないなら最初に一度\n\t\t\tfncRenderBack = ()=> {fncRenderBack = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\n\t\tconst render = ()=> renderer.render(this.#fore, {renderTexture: this.#rtTransFore});\t// clear: true\n\t\trender();\n\t\tlet fncRenderFore = ()=> {\n\t\t\tthis.#fore.visible = true;\n\t\t\trender();\n\t\t\tthis.#fore.visible = false;\n\t\t};\n\t\tif (! aLayFore.some(lay=> lay.containMovement)) {\n\t\t\tconst oldFnc = fncRenderFore;\t// 動きがないなら最初に一度\n\t\t\tfncRenderFore = ()=> {fncRenderFore = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\t\tconst fncRender = ()=> {\n\t\t\tfncRenderBack();\n\t\t\tthis.#spTransBack.visible = true;\n\n\t\t\tfncRenderFore();\n\t\t\tthis.#spTransFore.visible = true;\n\t\t};\n\n\n\t\t// クロスフェード\n\t\tconst {glsl, rule} = hArg;\n\t\tconst comp2 = ()=> {ticker.remove(fncRender); comp()};\n\t\tif (! glsl && ! rule) {\n\t\t\tCmnTween.tween(TW_INT_TRANS, hArg, this.#spTransFore, {alpha: 0}, ()=> { /* empty */ }, comp2, ()=> { /* empty */ });\n\t\t\tticker.add(fncRender);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Filter使用系(デフォルト値を glsl 属性で上書き可能)\n\t\tconst uniforms = {\n\t\t\trule\t: Texture.EMPTY,\n\t\t\tvague\t: argChk_Num(hArg, 'vague', 0.04),\n\t\t\ttick\t: 0.0,\n\t\t};\n\t\tthis.#spTransFore.filters = [new Filter(\n\t\t\tundefined,\n\t\t\tglsl ?? LayerMng.#srcRuleTransFragment,\n\t\t\tuniforms,\n\t\t)];\n\t\tconst tw = CmnTween.tween(TW_INT_TRANS, hArg, uniforms, {tick: 1}, ()=> { /* empty */ }, comp2, ()=> { /* empty */ }, ! rule);\n\t\tif (! rule) {\n\t\t\tticker.add(fncRender);\n\t\t\treturn false;\n\t\t}\n\n\t\t// ルール画像あり\n\t\tconst sm = new SpritesMng(rule, undefined, sp=> {\n\t\t\tuniforms.rule = sp.texture;\n\t\t\tsp.destroy();\n\n\t\t\ttw.start();\n\t\t\tticker.add(fncRender);\n\t\t}, isStop=> {if (isStop) this.main.resume()});\n\t\treturn sm.ret;\n\t}\n\n\t#getLayers(layer = ''): string[] {return layer ?layer.split(',') :this.#aLayName}\n\t#foreachLayers(hArg: HArg, fnc: (ln: string, $pg: Pages)=> void): readonly string[] {\n\t\tconst aLn = this.#getLayers(hArg.layer);\n\t\tfor (const ln of aLn) {\n\t\t\tconst pg = this.#hPages[ln];\n\t\t\tif (! pg) throw `存在しないlayer【${ln}】です`;\n\n\t\t\tfnc(ln, pg);\n\t\t}\n\n\t\treturn aLn;\n\t}\n\t#sortLayers(layers = ''): string[] {\n\t\treturn this.#getLayers(layers)\n\t\t.sort((a, b)=> {\n\t\t\tconst ai = this.#fore.getChildIndex(this.#hPages[a]!.fore.ctn);\n\t\t\tconst bi = this.#fore.getChildIndex(this.#hPages[b]!.fore.ctn);\n\t\t\tif (ai < bi) return -1;\n\t\t\tif (ai > bi) return 1;\n\t\t\treturn 0;\n\t\t});\n\t}\n\n\tsetAllStyle2TxtLay(style: string) {\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst l = this.#hPages[ln]!.fore;\n\t\t\tif (l instanceof TxtLayer) l.lay({style});\t// 必要最小限設定なので\n\t\t\t//\t... l.cssText = style;\n\t\t}\n\t}\n\n\t//MARK: 画面を揺らす\n\t#quake(hArg: HArg) {\n\t\tif (argChk_Num(hArg, 'time', NaN) === 0) return false;\n\n\t\tconst aLayCtn = this.#getLayers(hArg.layer)\n\t\t.map(ln=> this.#hPages[ln]!.fore.ctn);\n\t\tconst {renderer, ticker} = this.appPixi;\n\t\tthis.#rtTransFore.resize(CmnLib.stageW, CmnLib.stageH);\n\t\tconst fncRender = ()=> {\n\t\t\tthis.#fore.visible = true;\n\t\t\tfor (const c of aLayCtn) renderer.render(\n\t\t\t\tc, {renderTexture: this.#rtTransFore, clear: false}\n\t\t\t);\n\t\t\tthis.#fore.visible = false;\n\t\t};\n\t\tthis.#spTransFore.visible = true;\n\t\tthis.#spTransFore.alpha = 1;\n\n\t\tconst h = uint(argChk_Num(hArg, 'hmax', 10));\n\t\tconst v = uint(argChk_Num(hArg, 'vmax', 10));\n\t\tconst fncH = h === 0\n\t\t\t? ()=> { /* empty */ }\n\t\t\t: ()=> {this.#spTransFore.x = Math.round(Math.random()* h*2) -h};\n\t\tconst fncV = v === 0\n\t\t\t? ()=> { /* empty */ }\n\t\t\t: ()=> {this.#spTransFore.y = Math.round(Math.random()* v*2) -v};\n\t\tthis.#spTransFore.filters = [];\n\n\t\tCmnTween.tween(TW_INT_TRANS, hArg, this.#spTransFore, {x: 0, y: 0}, ()=> {fncH(); fncV()}, ()=> {\n\t\t\tticker.remove(fncRender);\n\t\t\t\t// transなしでもadd()してなくても走るが、構わないっぽい。\n\t\t\tthis.#fore.visible = true;\n\t\t\tthis.#spTransFore.visible = false;\n\t\t\tthis.#spTransFore.x = 0;\t// 必須、onUpdate は toの値にしてくれない\n\t\t\tthis.#spTransFore.y = 0;\n\t\t}, ()=> { /* empty */ });\n\t\tticker.add(fncRender);\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: トゥイーン開始\n\t#tsy(hArg: HArg) {\n\t\tconst {layer, render, name} = hArg;\n\t\tif (! layer) throw 'layerは必須です';\n\n\t\tconst pg = this.#hPages[this.#argChk_layer(hArg)]!;\n\t\tconst lay = pg.fore;\n\n\t\tlet finishBlendLayer = ()=> { /* empty */ };\n\t\tif (render && ! this.#evtMng.isSkipping) {\n\t\t\tlay.renderStart();\n\t\t\tfinishBlendLayer = ()=> lay.renderEnd();\n\t\t}\n\n\t\tconst hTo = CmnTween.cnvTweenArg(hArg, lay);\n\t\tconst arrive = argChk_Boolean(hArg, 'arrive', false);\n\t\tconst backlay = argChk_Boolean(hArg, 'backlay', false);\n\t\tconst spBack = pg.back.ctn;\t// fore, back が変わる恐れで外へ\n\t\tCmnTween.tween(name ?? layer, hArg, lay, CmnTween.cnvTweenArg(hArg, lay), ()=> { /* empty */ }, finishBlendLayer, ()=> {\n\t\t\tif (arrive) Object.assign(lay, hTo);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\tif (backlay) for (const nm of Object.keys(CmnTween.hMemberCnt)) (<any>spBack)[nm] = (<any>lay)[nm];\n\t\t});\n//\t\thArg[':id'] = pg.fore.name.slice(0, -7);\n//\t\tthis.scrItr.getDesignInfo(hArg);\t// 必ず[':id'] を設定すること\n\n\t\tif ('filter' in hArg) {\n\t\t\tlay.ctn.filters = [Layer.bldFilters(hArg)];\n\t\t\tlay.aFltHArg = [hArg];\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: フィルター追加\n\t#add_filter(hArg: HArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tthis.#add_filter2(pg.fore, hArg);\n\t\t\t\tthis.#add_filter2(pg.back, hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tthis.#add_filter2(l, hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\t#add_filter2(l: Layer, hArg: HArg) {\n\t\tconst s = l.ctn;\n\t\ts.filters ??= [];\n\t\ts.filters = [...s.filters, Layer.bldFilters(hArg)];\n\t\tl.aFltHArg.push(hArg);\n\t}\n\n\t//MARK: フィルター全削除\n\t#clear_filter(hArg: HArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tconst f = pg.fore;\n\t\t\t\tconst b = pg.back;\n\t\t\t\tf.ctn.filters = null;\n\t\t\t\tb.ctn.filters = null;\n\t\t\t\tf.aFltHArg = [];\n\t\t\t\tb.aFltHArg = [];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tl.ctn.filters = null;\n\t\t\tl.aFltHArg = [];\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t//MARK: フィルター個別切替\n\t#enable_filter(hArg: HArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tthis.#enable_filter2(pg.fore, hArg);\n\t\t\t\tthis.#enable_filter2(pg.back, hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tthis.#enable_filter2(l, hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\t#enable_filter2(l: Layer, hArg: HArg) {\n\t\tconst s = l.ctn;\n\t\tif (! s.filters) throw 'フィルターがありません';\n\n\t\tconst i = uint(argChk_Num(hArg, 'index', 0));\n\t\tconst len = s.filters.length;\n\t\tif (len <= i) throw `フィルターの個数(${String(len)})を越えています`;\n\n\t\tl.aFltHArg[i]!.enabled =\n\t\ts.filters[i]!.enabled = argChk_Boolean(hArg, 'enabled', true);\n\t}\n\n\n//\t// 文字・文字レイヤ\n\tstatic\t\t#msecChWait\t\t= 10;\n\tstatic get\tmsecChWait() {return LayerMng.#msecChWait}\n\t//MARK: 文字を追加する\n\t#ch(hArg: HArg) {\n\t\tconst {text} = hArg;\n\t\tif (! text) throw 'textは必須です';\n\n\t\tconst tl = this.#getTxtLayer(hArg);\n\t\tdelete hArg.text;\t// [graph]時、次行がルビ文法でトラブったので\n\t\tthis.setNormalChWait();\n\t\tif (this.#evtMng.isSkipping) hArg.wait = 0;\n\t\telse if ('wait' in hArg) argChk_Num(hArg, 'wait', NaN);\n\n\t\tthis.#cmdTxt('add|'+ cnvSArg(<T_cmdTxt_JSON>hArg), tl);\n\t\t\t// [ch style]用\n\n\t\tconst record = argChk_Boolean(hArg, 'record', true);\n\t\tconst doRecLog = this.val.doRecLog();\n\t\tif (! record) this.val.setVal_Nochk('save', 'sn.doRecLog', record);\n\t\ttl.tagCh(text.replaceAll('[r]', '\\n'));\n\t\tthis.val.setVal_Nochk('save', 'sn.doRecLog', doRecLog);\n\n\t\tthis.#cmdTxt('add_close|', tl);\t// [ch style]用\n\n\t\treturn false;\n\t}\n\n\t#getTxtLayer = (_hArg: HArg): TxtLayer=> {this.#chkTxtLay(); throw 0};\n\t#$getTxtLayer(hArg: HArg): TxtLayer {\n\t\tconst ln = this.#argChk_layer(hArg, this.#curTxtlay);\n\t\tconst pg = this.#hPages[ln]!;\n\t\tconst lay = pg.getPage(hArg);\n\t\tif (! (lay instanceof TxtLayer)) throw ln +'はTxtLayerではありません';\n\n\t\treturn lay;\n\t}\n\tsetNormalChWait(): void {LayerMng.#msecChWait = this.scrItr.normalWait}\n\n\n\t//MARK: 操作対象のメッセージレイヤの指定\n\t#current = (_hArg: HArg): boolean=> {this.#chkTxtLay(); throw 0};\n\t#$current(hArg: HArg) {\n\t\tconst {layer} = hArg;\n\t\tif (! layer) throw '[current] layerは必須です';\n\n\t\tconst lay = this.#hPages[layer];\n\t\tif (! lay || ! (lay.getPage(hArg) instanceof TxtLayer)) throw `${layer}はTxtLayerではありません`;\n\t\tthis.#pgTxtlay = lay;\n\n\t\tthis.#log.pagebreak();\t// カレント変更前に現在の履歴を保存\n\t\tthis.#curTxtlay = layer;\n\t\tthis.val.setVal_Nochk('save', 'const.sn.mesLayer', layer);\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tif (! (fore instanceof TxtLayer)) continue;\n\t\t\tfore.isCur = (<TxtLayer>back).isCur = ln === layer;\n\t\t}\n\n\t\treturn false;\n\t}\n\tget currentTxtlayForeNeedErr(): TxtLayer {\n\t\tthis.#chkTxtLay();\n\t\treturn this.currentTxtlayFore!;\n\t}\n\tget currentTxtlayFore(): TxtLayer | null {\n\t\tif (! this.#pgTxtlay) return null;\n\n\t\treturn <TxtLayer>this.#pgTxtlay.fore;\n\t}\n\t#pgTxtlay\t: Pages | undefined\t= undefined;\t// カレントテキストレイヤ\n\t#chkTxtLay\t: ()=> void\t= ()=> {throw '文字レイヤーがありません。文字表示や操作する前に、[add_lay layer=(レイヤ名) class=txt]で文字レイヤを追加して下さい'};\n\n\t#argChk_layer(hArg: HArg, def = ''): string {\n\t\tconst ln = hArg.layer ?? def;\n\t\tif (ln.includes(',')) throw 'layer名に「,」は使えません';\n\t\tif (! (ln in this.#hPages)) throw '属性 layer【'+ ln +'】が不正です。レイヤーがありません';\n\n\t\thArg.layer = ln;\n\t\treturn ln;\n\t}\n\n\n\trecPagebreak() {this.#log.pagebreak()}\n\n\n\t//MARK: 文字消去\n\t#clear_text(hArg: HArg) {\n\t\tconst tf = this.#getTxtLayer(hArg);\n\t\tif (hArg.layer === this.#curTxtlay && hArg.page === 'fore') this.#log.pagebreak();\t// 改ページ、クリア前に\n\t\ttf.clearText();\n\t\treturn false;\n\t}\n\n\n\t//MARK: ハイパーリンクの終了\n\t#endlink(hArg: HArg) {this.#cmdTxt('endlink|', this.#getTxtLayer(hArg)); return false}\n\n\t//MARK: ページ両面の文字消去\n\t#er(hArg: HArg) {\n\t\tif (argChk_Boolean(hArg, 'rec_page_break', true)) this.#log.pagebreak();\t// 改ページ、クリア前に\n\n\t\tif (this.#pgTxtlay) {\n\t\t\tthis.#pgTxtlay.fore.clearLay(hArg);\n\t\t\tthis.#pgTxtlay.back.clearLay(hArg);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t//MARK: インライン画像表示\n\t#graph(hArg: HArg) {\n\t\tif (! hArg.pic) throw '[graph] picは必須です';\n\n\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: ハイパーリンク\n\t#link(hArg: HArg) {\n\t\tif (! hArg.fn && ! hArg.label && ! hArg.url) throw 'fn,label,url いずれかは必須です';\n\t\thArg.fn ??= this.scrItr.scriptFn;\t// ここで指定する必要がある\n\n\t\thArg.style ??= 'background-color: rgba(255,0,0,0.5);';\n\t\thArg.style_hover ??= 'background-color: rgba(255,0,0,0.9);';\n\t\thArg.style_clicked ??= hArg.style;\n\t\tthis.#cmdTxt('link|'+ cnvSArg(<T_cmdTxt_JSON>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: 改行\n\t#r(hArg: HArg) {return this.#ch({...hArg, text: '\\n'})}\n\n\t//MARK: 文字列と複数ルビの追加\n\t#ruby2(hArg: HArg) {\n\t\tconst {t, r} = hArg;\n\t\tif (! t) throw '[ruby2] tは必須です';\n\t\tif (! r) throw '[ruby2] rは必須です';\n\n\t\thArg.text = '|'+ encodeURIComponent(t) +'《'+ encodeURIComponent(r) +'》';\n\t\tdelete hArg.t;\n\t\tdelete hArg.r;\n\t\treturn this.#ch(hArg);\n\t}\n\n\n\t//MARK: インラインスタイル設定\n\t#span(hArg: HArg) {\n\t\tthis.#cmdTxt('span|'+ cnvSArg(<T_cmdTxt_JSON>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: tcy縦中横を表示する\n\t#tcy(hArg: HArg) {\n\t\tif (! hArg.t) throw '[tcy] tは必須です';\n\n\t\tthis.#cmdTxt('tcy|'+ cnvSArg(<T_cmdTxt_JSON>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\n\t//MARK: レイヤのダンプ\n\t#dump_lay({layer}: HArg) {\n\t\tconsole.group('🥟 [dump_lay]');\n\t\tfor (const ln of this.#getLayers(layer)) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\ttry {\n\t\t\t\tconsole.info(`%c${fore.name.slice(0, -7)} %o`, `color:#${CmnLib.isDarkMode ?'49F' :'05A'};`,\n\t\t\t\tJSON.parse(`{\"back\":{${back.dump()}}, \"fore\":{${fore.dump()}}}`));\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('dump_lay err:%o', e);\n\t\t\t\tconsole.error(` back:${back.dump()}`);\n\t\t\t\tconsole.error(` fore:${fore.dump()}`);\n\t\t\t}\n\t\t}\n\t\tconsole.groupEnd();\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: イベント有無の切替\n\t#enable_event(hArg: HArg) {\n\t\tconst ln = this.#argChk_layer(hArg, this.#curTxtlay);\n\t\tconst v = argChk_Boolean(hArg, 'enabled', true);\n\t\tthis.#getTxtLayer(hArg).enabled = v;\n\t\tthis.val.setVal_Nochk('save', 'const.sn.layer.'+ ln +'.enabled', v);\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: ボタンを表示\n\t#button(hArg: HArg) {\n\t\tPages.argChk_page(hArg, 'back');\t// チェックしたいというよりデフォルトをbackに\n\t\thArg.fn ??= this.scrItr.scriptFn;\t// ここで指定する必要がある\n\t\t\t// fn省略時、画像ボタンはロード後という後のタイミングで scrItr.scriptFn を\n\t\t\t// 参照してしまうので\n\t\tvoid this.#getTxtLayer(hArg).addButton(hArg);\t// hArg[':id_tag'] も設定\n\n\t\tthis.scrItr.recodeDesign(hArg);\t// 必ず[':id_tag'] を設定すること\n\n\t\treturn false;\n\t}\n\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\trecord(): any {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst o: any = {};\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst pg = this.#hPages[ln]!;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\to[ln] = {\n\t\t\t\tcls: pg.cls,\n\t\t\t\tfore: pg.fore.record(),\n\t\t\t\tback: pg.back.record(),\n\t\t\t};\n\t\t}\n\t\treturn o;\n\t}\n\tplayback($hPages: HIPage): Promise<void>[] {\n\t\t// これを先に。save:const.sn.sLog がクリアされてしまう\n\t\tthis.#log.playback();\n\n\t\tconst aPrm: Promise<void>[] = [];\n\t\tconst aSort: {ln: string, idx: number}[] = [];\n\t\tfor (const [ln, {fore, fore: {idx}, back, cls}] of Object.entries($hPages)) {\t// 引数で言及の無いレイヤはそのまま。特に削除しない\n\t\t\taSort.push({ln, idx});\n\t\t\tconst ps = this.#hPages[ln] ??= new Pages(ln, cls, this.#fore, this.#back, {}, this.sys, this.val, {isWait: false});\n\t\t\tps.fore.playback(fore, aPrm);\n\t\t\tps.back.playback(back, aPrm);\n\t\t}\n\n\t\tconst len = this.#fore.children.length;\n\t\taPrm.push(new Promise(re=> {\t// 若い順にsetChildIndex()\n\t\t\tfor (const {ln, idx} of aSort.sort(({idx: a}, {idx: b})=> a === b ?0 :a < b ?-1 :1)) {\n\t\t\t\tconst pg = this.#hPages[ln];\n\t\t\t\tif (! pg) continue;\n\n\t\t\t\tconst i = len > idx ?idx :len -1;\n\t\t\t\tconst {fore, back} = pg;\n\t\t\t\tthis.#fore.setChildIndex(fore.ctn, i);\n\t\t\t\tthis.#back.setChildIndex(back.ctn, i);\n\t\t\t}\n\t\t\tre();\n\t\t}));\n\t\treturn aPrm;\n\t}\n\n}\n"],"names":["Pages","layname","cls","fore","back","hArg","sys","val","ret","fncF","b","nm","argChk_Boolean","#pg","valnm","hash","def","v","aPrm","DesignCast","bg_col","isLay","_appPixi","_sys","_scrItr","_prpPrs","_cfg","_hPages","_hPrm","_idcCh","_v","_o","GrpLayDesignCast","_ctn","_gl","_sp","SpritesMng","csvFn","ctn","fncFirstComp","fncAllComp","#addChild","sp","#aSp","#csv2Sprites","isStop","#cfg","#val","#sys","#main","cfg","main","sndMng","#cachePicMov","r","res","next","#dec2cachePicMov","#cacheAniSpr","#dec2cacheAniSpr","fnc","vol","#glbVol","#movVol","#hFn2hve","#evtMng","evtMng","#hFace","#hFn2ResAniSpr","csv","addChild","needLoad","Sprite","utils.TextureCache","Loader","aComp","ldr","a","len","i","fn0","dx","dy","blendmode","fn","BLEND_MODES","url","SEARCH_PATH_ARG_EXT","xt","LoaderResource","fncLoaded","_","hRes","#mkSprite","str","aiv","e","mes","_r","type","name","data","hve","#charmVideoElm","#sortAFrameName","aFn","a_base_name","d1","d2","is","ie","int","Texture","DebugMng","spritesheet","meta","frames","getFn","res2","next2","r2","_hRes","baseTexture","aFr","x","y","w","h","Rectangle","ras","asp","AnimatedSprite","RPN_WV","stop","Reading","argChk_Num","Layer","GrpLayer","#elc","EventListenerCtn","#appPixi","appPixi","#idc","CmnLib","#setIdcSp","#csvFn","#sBkFn","#sBkFace","RPN_GRP_LAY","#laySub","resolve","face","inFn","inFace","#sps","#width","#height","#spTsy","#rtTsy","fncRenderFore","oldFnc","#fncRender","RenderTexture","s","c","hLay","re","_isStop","gdc","def行頭禁則","def行末禁則","def分割禁止","defぶら下げ","defReg行頭禁則","defReg行末禁則","defReg分割禁止","defRegぶら下げ","Hyphenation","#s行頭禁則","#s行末禁則","#s分割禁止","#sぶら下げ","#reg行頭禁則","#reg行末禁則","#reg分割禁止","#regぶら下げ","#chk禁則の競合_ぶら行末","#chk禁則の競合_ぶら分禁","len行末禁則","lenぶら下げ","len分割禁止","to","#genKinsoku","s行頭禁則","s行末禁則","s分割禁止","sぶら下げ","o","htmTxt","cnvRect","tategaki","begin","bkHtm","fncFirstChk","#getChRects","sl_xy","elm","rect","ch","xy","p_i","#i2pi","p_elm","p_rect","p_ch","sty","rs","oldI","cont","ins","elm2","pal","br","ppal","rng","pos","end","ii","pp_i","pp_ch","j","p_j","last_ch","head_ch","ppp_i","ppp_ch","htm2tx","infTL","padTx4x","padTx4y","hidden","util","extension","parseExtension","mimes","dataAsUrl","isDataUrl","resolveUrl","getAndEncode","arrayLike","WOFF","JPEG","inliner","newInliner","fontFaces","newFontFaces","embedFonts","node","cssText","styleNode","baseUrl","doc","base","request","done","timeout","fail","encoder","content","message","URL_REGEX","inlineAll","shouldProcess","readUrls","result","match","inline","get","dataUrl","urlAsRegex","nothingToInline","urls","string","resolveAll","readAll","webFonts","webFont","cssStrings","getCssRules","selectWebFontRules","rules","newWebFont","cssRules","rule","styleSheets","sheet","webFontRule","cln","img","canvas","TxtStage","Container","canFocus","#htmTxt","#cntTxt","#grpDbgMasume","fncMasumeLog","width","height","#fncMasume","cr","RPN_COMP_CHIN","htm","ln","#scrItr","id","scrItr","#hChInStyle","#hChOutStyle","Graphics","#hWarnStyle","#hyph","#infTL","key","#lay_sub","#left","#lenHtmTxt","aSpan","#clearText","#lh_half","fs","#isTategaki","#padTx4x","#padTx4y","lh","cvsScale","#aGoTxt","instant","f","#goTxt_Proc","#aRect","#SPAN_LAST","#cntBreak","bcr","sx","sy","ox","oy","ease","CmnTween","#fi_easing","dataset","parentElement","arg","add","cis","cnt","#spWork","eCh","aLnk","st_normal","st_hover","st_clicked","st_r_normal","st_r_hover","st_r_clicked","nlRt","st_bk","fncStyle","st","st_r","chs","#fncEndChIn","lastElm","rct","Tween","#aSpTw","wasChInIng","#REG_NG_CHSTYLE_NAME_CHR","#spsBreak","#fo_easing","n","old","sum_wait","cos","#ch_filter","ct","#sss","rnd","tx","_gdc","aStyle","Button","#o","uint","#rctBtnTxt","#hover","#clicked","#loaded_pic","style","TextStyle","mesErrJSON","txt","Text","text","#loaded_b_pic","#procMasume4txt","style_hover","style_clicked","_me","_txt","#procMasume4pic","_w3","_h","me","w3","_text","w_3","txNormal","txClicked","txHover","normal","TxtLayer","#isPageFore","#log","hTag","log","isPageFore","doRec","#autowc","#ch_in_style","#ch_out_style","initStyle","addStyle","#doAutoWc","#hAutoWc","#b_color","#b_alpha","#b_alpha_isfixed","#b_do","#b_pic","#txs","#rbSpl","RubySpliter","#htmRb","#hWarnR_Style","#cntBtn","#putCh","#rec","#setFfs","#r_align","#ruby_pd","l","#mkStyle_r_align","#mkStyle_r_align4ff","#set_ch_in","#set_ch_out","RPN_TXT_LAY","#drawBack","in_style","#$ch_in_style","#ch_in_join","out_style","#$ch_out_style","fncComp","alpha","argChk_Color","g_alpha","#strNoFFS","#regNoFFS","#ffs","#fncFFSStyle","_ch","rb","r_align","add_sty","ev","#needGoTxt","iruby","ruby","a_ruby","add_htm","a0","a1_","a1","#firstCh","#tagCh_sub","#popSpan","#aSpan","#cumDelay","wait","cl","#o2domArg","#pushSpan","r_style","lnk","#stkASpan","t","#page_text","#page_plain_text","#mergePushSpan","curpos","ht","isAddWait","argWait","LayerMng","stk","btn","FrameMng","#add_frame","#let_frame","#set_frame","#frame","#tsy_frame","#hIfrm","#hIfrmVisibleBk","src","vn","b_color","#rect","RPN_ADD_FRAME","ld","_ldr","#hDisabled","iLastSep","path_parent","path_pa_pa","m","p1","win","#loadPic2Img","onload","oUrl","#hEncImgOUrl","aImg","#hARetImg","srcNoPrm","Prm","path","ld2","s2","u2","ri","var_name","#zIdx","d","scale_x","scale_y","rotate","hNow","hArg2","fncA","fncXYSR","fncW","fncH","Log","oCfg","#rec_ch","#rec_r","#reset_rec","#LastLog","#aLog","cnvSArg","prpPrs","fncResizeLay","#modeLnSub","#aLayName","#hPages","#frmMng","tid","#loadplugin","#snapshot","#snapshot4proc","RPN_SNAPSHOT","#snapshot4app","#snapshot4web","#add_lay","#clear_lay","#lay","#trans","#quake","#tsy","#add_filter","#clear_filter","#enable_filter","#ch","#clear_text","#current","#endlink","#er","#graph","#link","#r","#ruby2","#span","#tcy","#dump_lay","#enable_event","#button","#cmdTxt","#bg_color","parseColor","grp","#fore","#back","#stage","#spTransBack","#spTransFore","fncTxt_b_alpha","_name","#foreachRedrawTxtLayBack","fncBtnFont","#hProcDbgRes","lay","#selectNode","#curTxtlay","#modeLn","pages","#grpCover","visible","bg_color","p","#msecChWait","cmd","tl","_record","_hArg","dt","getDateStr","PROTOCOL_USERDATA","PROTOCOL_DL","layer","aBk","#getLayers","autoDetectRenderer","pg","renTx","join","RPN_LOADPLUGIN","#chkTxtLay","#getTxtLayer","#$getTxtLayer","#$current","#firstGrplay","#argChk_layer","#rebuildLayerRankInfo","dive","idx_dive","pg_dive","back_dive","fore_dive","idx_back_dive","idx_fore_dive","#sortLayers","#foreachLayers","#srcRuleTransFragment","#rtTransBack","#rtTransFore","sDoTrans","aLayFore","comp","idx","TMP_TSY_NM","TW_INT_TRANS","aBackTransAfter","aBack","ticker","renderer","fncRenderBack","render","fncRender","glsl","comp2","uniforms","Filter","tw","aLn","layers","ai","bi","aLayCtn","fncV","finishBlendLayer","hTo","arrive","backlay","spBack","#add_filter2","#enable_filter2","record","doRecLog","#pgTxtlay","tf","$hPages","aSort","ps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LayerMng.js","sources":["../src/sn/Pages.ts","../src/sn/DesignCast.ts","../src/sn/SpritesMng.ts","../src/sn/GrpLayer.ts","../src/sn/Hyphenation.ts","../src/sn/htm2tx.ts","../src/sn/TxtStage.ts","../src/sn/Button.ts","../src/sn/TxtLayer.ts","../src/sn/FrameMng.ts","../src/sn/Log.ts","../src/sn/LayerMng.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {HArg} from './Grammar';\nimport type {IVariable} from './CmnInterface';\nimport type {Layer} from './Layer';\nimport type {SysBase} from './SysBase';\nimport {argChk_Boolean} from './CmnLib';\n\nimport type {Container} from 'pixi.js';\n\nexport class Pages {\n\t#pg: {fore: Layer, back: Layer};\n\n\tconstructor(layname: string, readonly cls: string, fore: Container, back: Container, readonly hArg: HArg, readonly sys: SysBase, readonly val: IVariable, readonly ret: {isWait: boolean}) {\n\t\tconst fncF = sys.hFactoryCls[cls];\n\t\tif (! fncF) throw `属性 class【${cls}】が不正です`;\n\n\t\tconst f = fncF();\n\t\tconst b = fncF();\n\t\tf.layname =\n\t\tb.layname = layname;\n\t\tconst nm = hArg[':id_tag'] = `layer:${layname} cls:${cls} page:`;\n\t\tf.ctn.name = f.name = nm +'A';\n\t\tb.ctn.name = b.name = nm +'B';\n\t\tfore.addChild(f.ctn);\n\t\tback.addChild(b.ctn);\n\t\targChk_Boolean(hArg, 'visible', true);\n\t\targChk_Boolean(hArg, 'visible', true);// SKYNovelではデフォルトはtrueとする\n\t\tret.isWait = f.lay(hArg) || b.lay(hArg);\n\t\tthis.#pg = {fore: f, back: b};\n\t\tback.visible = false;\n\n\t\t// 組み込み変数\n\t\tconst valnm = `const.sn.lay.${layname}`;\n\t\tval.setVal_Nochk('tmp', valnm, true);\n\t\tval.defTmp(valnm +'.fore.alpha', ()=> this.#pg.fore.alpha);\n\t\tval.defTmp(valnm +'.back.alpha', ()=> this.#pg.back.alpha);\n\t\tval.defTmp(valnm +'.fore.height', ()=> this.#pg.fore.height);\n\t\tval.defTmp(valnm +'.back.height', ()=> this.#pg.back.height);\n\t\tval.defTmp(valnm +'.fore.visible', ()=> this.#pg.fore.ctn.visible);\n\t\tval.defTmp(valnm +'.back.visible', ()=> this.#pg.back.ctn.visible);\n\t\tval.defTmp(valnm +'.fore.width', ()=> this.#pg.fore.width);\n\t\tval.defTmp(valnm +'.back.width', ()=> this.#pg.back.width);\n\t\tval.defTmp(valnm +'.fore.x', ()=> this.#pg.fore.x);\n\t\tval.defTmp(valnm +'.back.x', ()=> this.#pg.back.x);\n\t\tval.defTmp(valnm +'.fore.y', ()=> this.#pg.fore.y);\n\t\tval.defTmp(valnm +'.back.y', ()=> this.#pg.back.y);\n\t}\n\tdestroy() {\n\t\tthis.#pg.fore.destroy();\n\t\tthis.#pg.back.destroy();\n\t}\n\n\treadonly lay = (hArg: HArg)=> this.getPage(hArg).lay(hArg);\n\treadonly getPage = (hArg: HArg)=>\n\t\tPages.argChk_page(hArg, 'fore') !== 'back'\n\t\t\t? this.#pg.fore\n\t\t\t: this.#pg.back;\n\tstatic\targChk_page(hash: HArg, def: string): string {\n\t\tconst v = hash.page ?? def;\n\t\tif (v === 'fore' || v === 'back') {hash.page = v; return v}\n\n\t\tthrow Error('属性 page【'+ v +'】が不正です');\n\t}\n\tget fore(): Layer {return this.#pg.fore}\n\tget back(): Layer {return this.#pg.back}\n\n\ttransPage(aPrm: Promise<void>[]): void {\n\t\t[this.#pg.back, this.#pg.fore] = [this.#pg.fore, this.#pg.back];\n\t\tthis.#pg.back.copy(this.#pg.fore, aPrm);\n\t}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2021-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {HArg} from './Grammar';\nimport type {IPropParser} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {HPage} from './LayerMng';\nimport type {HPRM} from './AnalyzeTagArg';\nimport type {TxtStage} from './TxtStage';\nimport type {Button} from './Button';\nimport type {GrpLayer} from './GrpLayer';\nimport type {Config} from './Config';\n\nimport type {Application, Text, Sprite} from 'pixi.js';\n\n\nexport class DesignCast {\n\tstatic\tinit(_appPixi: Application, _sys: SysBase, _scrItr: ScriptIterator, _prpPrs: IPropParser, _cfg: Config, _hPages: HPage) { /* empty */ }\n\tstatic\tcvsResizeDesign() { /* empty */ }\n//\tstatic\treadonly\t#alzTagArg\t= new AnalyzeTagArg;\n\n\n\tconstructor(readonly bg_col: string, readonly isLay = false) {}\n\tdestroy() { /* empty */ }\n\n\tgethArg(): HArg {return this.hArg}\n\tprotected\thArg\t: HArg\t= {};\n\tsethArg(hArg: HArg): void {\n\t\tthis.hArg = hArg;\n\t}\n\n\tsetOther(_hPrm: HPRM) { /* empty */ }\n\n\tadopt(_idcCh: DesignCast) {\t// 養子縁組\n\t}\n\n\tstatic\tenterMode() { /* empty */ }\n\tstatic\tallHide() { /* empty */ }\n\tset visible(_v: boolean) { /* empty */ }\n\tstatic\tleaveMode() { /* empty */ }\n\n\n\tcvsResize() { /* empty */ }\n\tmake() { /* empty */ }\n\tstatic replaceToken(_o: unknown) { /* empty */ }\n\n}\n\n\n// 画像レイヤ\nexport class GrpLayDesignCast extends DesignCast {\n\tconstructor(_ctn: Sprite, _gl: GrpLayer) {super('#29e', true)}\n\tsetSp(_sp: Sprite) { /* empty */ }\n}\n\n// 文字レイヤ\nexport class TxtLayDesignCast extends DesignCast {\n\tconstructor(_ctn: Sprite, _ts: TxtStage) {\n\t\tsuper('#29e', true);\n\t}\n}\n// 文字レイヤ・パディング\nexport class TxtLayPadDesignCast extends DesignCast {\n\tconstructor(_ts: TxtStage) {super('#9e2')}\n}\n\n// 文字レイヤ・ボタン基本\nexport class BtnDesignCast extends DesignCast {\n\tconstructor(protected readonly btn: Button, override readonly hArg: HArg) {\n\t\tsuper('#e92');\n\t}\n}\n// 文字レイヤ・文字ボタン\nexport class TxtBtnDesignCast extends BtnDesignCast {\n\tconstructor(btn: Button, hArg: HArg, _txt: Text) {\n\t\tsuper(btn, hArg);\n\t}\n}\n\n// 文字レイヤ・画像ボタン\nexport class PicBtnDesignCast extends BtnDesignCast {\n\tsetSp(_sp: Sprite) { /* empty */ }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2023-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {Config} from './Config';\nimport {type IEvtMng, argChk_Boolean, argChk_Num, getFn, int} from './CmnLib';\nimport type {IMain, IVariable, SYS_DEC_RET} from './CmnInterface';\nimport {DebugMng} from './DebugMng';\nimport {SEARCH_PATH_ARG_EXT} from './ConfigBase';\nimport type {SysBase} from './SysBase';\nimport type {SoundMng} from './SoundMng';\nimport type {HArg} from './Grammar';\nimport {Layer} from './Layer';\nimport {Reading} from './Reading';\n\nimport {Sprite, type Container, Texture, AnimatedSprite, LoaderResource, utils, Loader, Rectangle, BLEND_MODES} from 'pixi.js';\n\ntype IFncCompSpr = (sp: Sprite)=> void;\n\ntype Iface = {\n\tfn\t\t\t: string;\n\tdx\t\t\t: number;\n\tdy\t\t\t: number;\n\tblendmode\t: number;\n}\ntype Ihface = { [name: string]: Iface; }\n\ntype IResAniSpr = {\n\taTex\t: Texture[];\n\tmeta\t: {\n\t\tanimationSpeed? :number;\n\t};\n}\n\n\nexport class SpritesMng {\n\tstatic\t#cfg\t: Config;\n\tstatic\t#val\t: IVariable;\n\tstatic\t#sys\t: SysBase;\n\tstatic\t#main\t: IMain;\n\tstatic\tinit(cfg: Config, val: IVariable, sys: SysBase, main: IMain, sndMng: SoundMng) {\n\t\tSpritesMng.#cfg = cfg;\n\t\tSpritesMng.#val = val;\n\t\tSpritesMng.#sys = sys;\n\t\tSpritesMng.#main = main;\n\t\tif (sys.arg.crypto) {\n\t\t\tSpritesMng.#cachePicMov = (r, res, next)=> SpritesMng.#dec2cachePicMov(r, res, next);\n\t\t\tSpritesMng.#cacheAniSpr = (r, res, next)=> SpritesMng.#dec2cacheAniSpr(r, res, next);\n\t\t}\n\n\t\tconst fnc = ()=> {\n\t\t\tconst vol = SpritesMng.#glbVol * SpritesMng.#movVol;\n\t\t\tfor (const v of Object.values(SpritesMng.#hFn2hve)) v.volume = vol;\n\t\t};\n\t\tsndMng.setNoticeChgVolume(\n\t\t\tvol=> {SpritesMng.#glbVol = vol; fnc()},\n\t\t\tvol=> {SpritesMng.#movVol = vol; fnc()}\n\t\t);\n\t}\n\tstatic\t#movVol\t= 1;\n\tstatic\t#glbVol\t= 1;\n\n\tstatic\t#evtMng\t: IEvtMng;\n\tstatic\tsetEvtMng(evtMng: IEvtMng) {SpritesMng.#evtMng = evtMng}\n\n\n\tconstructor(readonly csvFn = '', readonly ctn?: Container, private fncFirstComp: IFncCompSpr = ()=> { /* empty */ }, private fncAllComp: (isStop: boolean)=> void = ()=> { /* empty */ }) {\n\t\tif (! csvFn) return;\n\n\t\tthis.#addChild = ctn ? sp=> {ctn.addChild(sp); this.#aSp.push(sp)} : ()=> { /* empty */ };\n\t\tthis.ret = SpritesMng.#csv2Sprites(\n\t\t\tcsvFn,\n\t\t\tsp=> this.fncFirstComp(sp),\t\t\t// 差し替え考慮\n\t\t\tisStop=> this.fncAllComp(isStop),\t// 差し替え考慮\n\t\t\tsp=> this.#addChild(sp)\t\t\t\t// 差し替え考慮\n\t\t);\n\t}\n\treadonly ret: boolean\t\t= false;\n\t#addChild\t: (sp: Sprite)=> void;\n\t#aSp\t\t: Container[]\t= [];\n\n\tdestroy() {\t\t// これをやるためのクラス、とすら云える\n\t\tthis.fncFirstComp\t= ()=> { /* empty */ };\n\t\tthis.fncAllComp\t\t= ()=> { /* empty */ };\n\t\tthis.#addChild\t\t= sp=> sp.destroy();\n\n\t\tfor (const sp of this.#aSp) {\n\t\t\tSpritesMng.stopVideo(sp.name);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\tsp.parent?.removeChild(sp);\n\t\t\tsp.destroy();\n\t\t}\n\t\tthis.#aSp = [];\n\t}\n\n\tstatic\tdestroy() {\n\t\tSpritesMng.#hFace\t= {};\n\t\tSpritesMng.#hFn2ResAniSpr\t= {};\n\t\t//SpritesMng.#ldrHFn\t= {};\n\t\tSpritesMng.#hFn2hve\t= {};\n\t}\n\n\n\t//static #ldrHFn: {[fn: string]: 1} = {};\n\tstatic\t#csv2Sprites(csv: string, fncFirstComp: IFncCompSpr, fncAllComp: (isStop: boolean)=> void, addChild: (sp: Sprite)=> void): boolean {\n\t\tif (! csv) return false;\n\n\t\tlet needLoad = false;\n\t\tif (csv.startsWith('data:')) {\t// Data URI\n\t\t\tconst fnc = ()=> {\n\t\t\t\tconst sp = Sprite.from(csv);\n\t\t\t\taddChild(sp);\n\t\t\t\tfncFirstComp(sp);\n\t\t\t\tfncAllComp(needLoad);\n\t\t\t};\n\t\t\tif (csv in utils.TextureCache) fnc();\n\t\t\telse {needLoad = true; (new Loader).add(csv, csv).load(fnc)}\n\n\t\t\treturn needLoad;\n\t\t}\n\n\t\tconst aComp: {fn: string, fnc: IFncCompSpr}[] = [];\n\t\tconst ldr = new Loader;\n\t\tconst a = csv.split(',');\n\t\tconst len = a.length;\n\t\tfor (let i=0; i<len; ++i) {\n\t\t\tconst fn0 = a[i];\n\t\t\tif (! fn0) throw 'face属性に空要素が含まれます';\n\n\t\t\t// 差分絵を重ねる\n\t\t\tconst {dx, dy, blendmode, fn} = SpritesMng.#hFace[fn0] ?? {\n\t\t\t\tfn\t: fn0,\n\t\t\t\tdx\t: 0,\n\t\t\t\tdy\t: 0,\n\t\t\t\tblendmode\t: BLEND_MODES.NORMAL\n\t\t\t};\n\t\t\tconst fnc = i === 0 ?fncFirstComp :(sp: Sprite)=> {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\t\tif (! sp.transform) return;\t// エラー予防\n\t\t\t\tsp.x = dx;\n\t\t\t\tsp.y = dy;\n\t\t\t\tsp.blendMode = blendmode;\n\t\t\t};\n\t\t\taComp.push({fn, fnc});\n\n\t\t\tif (fn in SpritesMng.#hFn2ResAniSpr) continue;\n\t\t\tif (fn in utils.TextureCache) continue;\n\t\t\t//if (fn in utils.BaseTextureCache) continue;\t\t// 警告に変化なし\n\t\t\tif (fn in Loader.shared.resources) continue;\n\t\t\t//if (fn in SpritesMng.#ldrHFn) {\n\t\t\t\t// ここに来るという中途半端な状態がある。お陰で警告が出てしまう\n\t\t\t\t// (警告を消そうとする)以下の試みは効かない。直前の if でそもそもここに来ない\n\t\t\t\t//\tTexture.removeFromCache(fn);\n\t\t\t\t//\tdelete utils.TextureCache[fn];\n\t\t\t\t//\tdelete Loader.shared.resources[fn];\n\t\t\t\t// continue;\t// これは厳禁、御法度。\n\t\t\t\t\t// 画像ボタンや文字ボタン背景で同じ画像を、間を置かずロードした場合に最初一つしか表示されなくなる。以下は確認用ギャラリー\n\t\t\t\t\t// http://localhost:8082/index.html?cur=ch_button\n\t\t\t//}\n\t\t\t//SpritesMng.#ldrHFn[fn] = 1;\n\n\t\t\tneedLoad = true;\n\t\t\tconst url = SpritesMng.#cfg.searchPath(fn, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\t\tconst xt = this.#sys.arg.crypto\n\t\t\t? {xhrType: url.endsWith('.json')\n\t\t\t\t? LoaderResource.XHR_RESPONSE_TYPE.TEXT\n\t\t\t\t: LoaderResource.XHR_RESPONSE_TYPE.BUFFER}\n\t\t\t: {};\n\t\t\tldr.add({...xt, name: fn, url});\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst fncLoaded = (_: any, hRes: {[fn: string]: LoaderResource})=> {\n\t\t\tfor (const {fn, fnc} of aComp) {\n\t\t\t\tconst sp = SpritesMng.#mkSprite(fn, hRes);\n\t\t\t\tsp.name = fn;\t// 4 Debug?\n\t\t\t\taddChild(sp);\n\t\t\t\tfnc(sp);\n\t\t\t}\n\t\t\tfncAllComp(needLoad);\n\t\t}\n\t\tif (needLoad) {\n\t\t\tldr.use((res, next)=> {\n\t\t\t\ttry {\n\t\t\t\t\tif (res.extension === 'json') {\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\t\t\tvoid this.#sys.dec('json', res.data)\n\t\t\t\t\t\t.then(str=> SpritesMng.#cacheAniSpr(str, res, next));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\t\tvoid this.#sys.decAB(res.data).then(aiv=> SpritesMng.#cachePicMov(aiv, res, next));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconst mes = `画像/動画ロード失敗です fn:${res.name} ${String(e)}`;\n\t\t\t\t\tif (SpritesMng.#evtMng.isSkipping) console.warn(mes); else console.error('%c'+ mes, 'color:#FF3300;');\n\t\t\t\t}\n\t\t\t})\n\t\t\t.load(fncLoaded);\n\t\t}\n\t\telse queueMicrotask(()=> fncLoaded(0, {}));\n\n\t\treturn needLoad;\n\t}\n\tstatic\t#hFace\t\t\t: Ihface\t= {};\n\tstatic\t#hFn2ResAniSpr\t: {[fn: string]: IResAniSpr} = {};\n\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #cachePicMov = (_r: SYS_DEC_RET, {type, name, data}: any, next: ()=> void)=> {\n\t\tswitch (type) {\n\t\t\tcase LoaderResource.TYPE.VIDEO:{\n\t\t\t\tconst hve = <HTMLVideoElement>data;\n\t\t\t\thve.volume = SpritesMng.#glbVol;\n\t\t\t\tSpritesMng.#hFn2hve[name] = SpritesMng.#charmVideoElm(hve);\n\t\t\t}\n\t\t}\n\t\tnext();\n\t}\n\tstatic #sortAFrameName(aFn: string[]): string[] {\n\t\tconst a_base_name = /([^\\d]+)\\d+\\.(\\w+)/.exec(aFn[0] ?? '');\n\t\tif (! a_base_name) return [];\n\n\t\tconst [, d1='', d2=''] = a_base_name;\n\t\tconst is = d1.length;\n\t\tconst ie = -d2.length -1;\n\t\treturn aFn.sort((a, b)=> int(a.slice(is, ie)) > int(b.slice(is, ie)) ?1 :-1);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #dec2cachePicMov(r: SYS_DEC_RET, res: any, next: ()=> void) {\n\t\tres.data = r;\n\t\tif (res.extension !== 'bin') next();\n\n\t\tif (r instanceof HTMLImageElement) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tvoid Texture.fromLoader(r, res.url, res.name).then(r=> {\n\t\t\t\tres.texture = r;\n\t\t\t\t//Texture.addToCache(Texture.from(r), res.name);\n\t\t\t\t// res.texture = Texture.from(r);\n\t\t\t\t\t// でも良いが、キャッシュ追加と、それでcsv2Sprites()内で使用するので\n\t\t\t\tres.type = LoaderResource.TYPE.IMAGE;\n\t//\t\t\tURL.revokeObjectURL(r.src);\t// TODO: キャッシュ破棄\n\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tif (r instanceof HTMLVideoElement) {\n\t\t\tr.volume = SpritesMng.#glbVol;\n\t\t\tSpritesMng.#hFn2hve[res.name] = SpritesMng.#charmVideoElm(r);\n\n\t\t\tres.type = LoaderResource.TYPE.VIDEO;\n//\t\t\tURL.revokeObjectURL(r.src);\n\t\t}\n\t\tnext();\n\t}\n\tstatic #charmVideoElm(hve: HTMLVideoElement): HTMLVideoElement {\n\t\t// 【PixiJS】iOSとChromeでAutoPlay可能なビデオSpriteの設定 - Qiita https://qiita.com/masato_makino/items/8316e7743acac514e361\n\t\tif (SpritesMng.#val.getVal('const.sn.needClick2Play')) {\n\t\t\t// ブラウザ実行で、クリックされるまで音声再生が差し止められている状態か。なにかクリックされれば falseになる\n\t\t\tDebugMng.trace_beforeNew(`[lay系] ${DebugMng.strPos()}未クリック状態で動画を自動再生します。音声はミュートされます`, 'W');\n\t\t\thve.muted = true;\t// Chrome対応:自動再生を許可させるため。ないと再開時に DOMException\n\t\t}\n\t\thve.setAttribute('playsinline', '');\t// iOS対応\n\t\treturn hve;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #cacheAniSpr = (_r: string, {type, spritesheet, name, data}: any, next: ()=> void)=> {\n\t\tswitch (type) {\n\t\t\tcase LoaderResource.TYPE.JSON:{\t// switchは必須\n\t\t\t\tconst aFn = <string[]>spritesheet._frameKeys;\n\t\t\t\tSpritesMng.#sortAFrameName(aFn);\n\t\t\t\tSpritesMng.#hFn2ResAniSpr[name] = {\n\t\t\t\t\taTex: aFn.map(fn=> Texture.from(fn)),\n\t\t\t\t\tmeta: <IResAniSpr['meta']>data.meta,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tnext();\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tstatic #dec2cacheAniSpr(r: string, res: any, next: ()=> void) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst {meta, frames} = res.data = JSON.parse(r);\n\t\tres.type = LoaderResource.TYPE.JSON;\n\t\tif (! meta?.image) {next(); return}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\tconst fn = getFn(meta.image);\n\t\tconst url = SpritesMng.#cfg.searchPath(fn, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\t(new Loader)\n\t\t.use((res2, next2)=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tthis.#sys.decAB(res2.data)\n\t\t\t.then(r2=> {\n\t\t\t\tres2.data = r2;\n\t\t\t\tif (r2 instanceof HTMLImageElement) {\n\t\t\t\t\tres2.type = LoaderResource.TYPE.IMAGE;\n\t\t\t\t\tURL.revokeObjectURL(r2.src);\n\t\t\t\t}\n\t\t\t\tnext2();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> this.#main.errScript(`画像/動画ロード失敗です dec2res4Cripto fn:${res2.name} ${String(e)}`, false));\n\t\t})\n\t\t.add({name: fn, url, xhrType: LoaderResource.XHR_RESPONSE_TYPE.BUFFER})\n\t\t.load((ldr, _hRes)=> {\n\t\t\tfor (const {data} of Object.values(ldr.resources)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\tconst {baseTexture} = Texture.from(data);\n\t\t\t\tconst aFr = Object.values(<{[nm: string]: {\n\t\t\t\t\tframe: {x: number; y: number; w: number; h: number;}\n\t\t\t\t}}>frames);\n\t\t\t\tSpritesMng.#hFn2ResAniSpr[res.name] = {\n\t\t\t\t\taTex: aFr.map(({frame: {x, y, w, h}})=> new Texture(\n\t\t\t\t\t\tbaseTexture,\n\t\t\t\t\t\tnew Rectangle(x, y, w, h),\n\t\t\t\t\t)),\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\tmeta,\n\t\t\t\t};\n\t\t\t}\n\t\t\tnext();\n\t\t});\n\t}\n\n\t\tstatic\t#mkSprite(fn: string, hRes: {[fn: string]: LoaderResource}): Sprite {\n\t\t\tconst ras = SpritesMng.#hFn2ResAniSpr[fn];\n\t\t\tif (ras) {\n\t\t\t\tconst asp = new AnimatedSprite(ras.aTex);\n\t\t\t\tasp.animationSpeed = ras.meta.animationSpeed ?? 1.0;\n\t\t\t\tasp.play();\n\t\t\t\treturn asp;\n\t\t\t}\n\t\t\tif (fn in utils.TextureCache) return Sprite.from(fn);\n\t\t\tconst hve = SpritesMng.#hFn2hve[fn];\n\t\t\tif (hve) return Sprite.from(hve);\n\n\t\t\tconst r = hRes[fn];\n\t\t\treturn r ?new Sprite(r.texture) :new Sprite;\n\t\t}\n\tstatic\t#hFn2hve\t: {[fn: string]: HTMLVideoElement} = {};\n\tstatic\tgetHFn2VElm(fn: string) {return SpritesMng.#hFn2hve[fn]}\n\n\tstatic\twv(hArg: HArg): boolean {\n\t\t// 動画ファイル名指定でいいかなと。なぜなら「ループで再生しつつ」\n\t\t// 同ファイル名の別の動画の再生は待ちたい、なんて状況は普通は無いだろうと\n\t\tconst {fn} = hArg;\n\t\tif (! fn) throw 'fnは必須です';\n\t\tconst hve = SpritesMng.#hFn2hve[fn];\n\t\tif (! hve || hve.loop) return false;\n\n\t\tif (SpritesMng.#evtMng.isSkipping || hve.ended) {SpritesMng.stopVideo(fn); return false}\n\n\t\tconst RPN_WV = 'wv fn:'+ fn;\n\t\tconst stop = argChk_Boolean(hArg, 'stop', true);\n\t\tconst fnc = ()=> {if (stop) SpritesMng.stopVideo(fn)};\n\t\tReading.beginProc(RPN_WV, fnc, true, fnc);\n\t\thve.addEventListener('ended', ()=> Reading.notifyEndProc(RPN_WV), {once: true, passive: true});\n\n\t\treturn true;\n\t}\n\n\tstatic\tstopVideo(fn: string) {\n\t\tconst hve = SpritesMng.#hFn2hve[fn];\n\t\tif (! hve) return;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete SpritesMng.#hFn2hve[fn];\n\t\thve.pause();\n\t\thve.currentTime = hve.duration;\n\t}\n\n\n\tstatic\tadd_face(hArg: HArg): boolean {\n\t\tconst {name} = hArg;\n\t\tif (! name) throw 'nameは必須です';\n\t\tif (name in SpritesMng.#hFace) throw '一つのname('+ name +')に対して同じ画像を複数割り当てられません';\n\n\t\tconst {fn = name} = hArg;\n\t\tSpritesMng.#hFace[name] = {\n\t\t\tfn,\n\t\t\tdx: argChk_Num(hArg, 'dx', 0),\n\t\t\tdy: argChk_Num(hArg, 'dy', 0),\n\t\t\tblendmode: Layer.getBlendmodeNum(hArg.blendmode ?? '')\n\t\t};\n\n\t\treturn false;\n\t}\n//\tstatic\tclearFace2Name(): void {SpritesMng.hFace = {}}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {Layer, type T_RecordPlayBack_lay} from './Layer';\n\nimport {CmnLib, argChk_Boolean, argChk_Num} from './CmnLib';\nimport type {HArg} from './Grammar';\nimport type {IMain, IVariable} from './CmnInterface';\nimport type {Config} from './Config';\nimport type {SysBase} from './SysBase';\nimport {EventListenerCtn} from './EventListenerCtn';\nimport type {SoundMng} from './SoundMng';\nimport type {IMakeDesignCast} from './LayerMng';\nimport {GrpLayDesignCast} from './DesignCast';\nimport {SpritesMng} from './SpritesMng';\nimport {Reading} from './Reading';\n\nimport {Sprite, AnimatedSprite, RenderTexture, type Application} from 'pixi.js';\n\n\nexport type T_RP_layGrp = T_RecordPlayBack_lay & {\n\tsBkFn\t: string;\n\tsBkFace\t: string;\n}\n\n\nexport class GrpLayer extends Layer {\n\tstatic\treadonly\t#elc\t= new EventListenerCtn;\n\n\tstatic\t#appPixi: Application;\n\tstatic\tinit(main: IMain, cfg: Config, appPixi: Application, sys: SysBase, sndMng: SoundMng, val: IVariable): void {\n\t\tGrpLayer.#appPixi = appPixi;\n\t\tSpritesMng.init(cfg, val, sys, main, sndMng);\n\t}\n\tstatic\tdestroy() {GrpLayer.#elc.clear(); SpritesMng.destroy()}\n\n\treadonly\t#idc\t= new GrpLayDesignCast(this.ctn, this);\n\tconstructor() {\n\t\tsuper();\n\t\tif (CmnLib.isDbg) {\n\t\t\tthis.#setIdcSp = sp=> this.#idc.setSp(sp);\n\t\t\tthis.cvsResize = ()=> {super.cvsResize(); this.#idc.cvsResize()}\n\t\t}\n\t}\n\t#setIdcSp\t: (sp: Sprite)=> void\t= ()=> { /* empty */ };\n\n\t#csvFn\t\t= '';\n\t#sBkFn\t\t= '';\n\t#sBkFace\t= '';\n\toverride readonly\tlay = (hArg: HArg)=> {\n\t\tconst RPN_GRP_LAY = Reading.procID +`GrpLayer lay name:${this.name_}`;\n\t\tconst ret = this.#laySub(hArg, isStop=> {\n\t\t\tif (isStop) Reading.endProc(RPN_GRP_LAY);\n\t\t});\n\t\tif (ret) Reading.beginProc(RPN_GRP_LAY);\n\t\treturn ret;\n\t}\n\t#laySub(hArg: HArg, resolve: (isStop: boolean)=> void): boolean {\n\t\tconst {fn, face = ''} = hArg;\n\t\tthis.#idc.sethArg(hArg);\n\t\tif (! fn) {\n\t\t\tsuper.lay(hArg);\n\n\t\t\tif (this.ctn.children.length > 0) this.setPos(hArg);\n\t\t\tthis.#sBkFn = '';\n\t\t\tthis.#csvFn = this.#sBkFace = face;\n\t\t\tresolve(false);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst inFn = 'fn' in hArg;\n\t\tconst inFace = 'face' in hArg;\n\n\t\tthis.clearLay({clear_filter: argChk_Boolean(hArg, 'clear_filter', true)});\n\t\tif (inFn) this.#sBkFn = fn;\t// clearLay()後に置く事\n\t\tif (inFace) this.#sBkFace = face;\n\t\tsuper.lay(hArg);\t// filter設定してる場合も\n\n\t\thArg.dx = 0;\n\t\thArg.dy = 0;\n\n\t\tthis.#sps.destroy();\n\t\tthis.#sps = new SpritesMng(\n\t\t\tthis.#csvFn = fn + (face ?','+ face :''),\n\t\t\tthis.ctn,\n\t\t\tsp=> {\n\t\t\t\tif ('width' in hArg || 'height' in hArg) {\n\t\t\t\t\tsp.width = argChk_Num(hArg, 'width', 0);\n\t\t\t\t\tsp.height = argChk_Num(hArg, 'height', 0);\n\t\t\t\t}\n\t\t\t\tthis.#width = sp.width;\n\t\t\t\tthis.#height = sp.height;\n\t\t\t\tLayer.setXY(sp, hArg, this.ctn, true);\n\t\t\t\tLayer.setBlendmode(this.ctn, hArg);\n\t\t\t//\tif (hArg.page === 'fore') this.rsvEvent(sp);\t// ======\n\t\t\t\t\t// [lay page=fore]のみswfアニメ終了イベント発生\n\t\t\t\tthis.#setIdcSp(sp);\n\t\t\t},\n\t\t\tisStop=> resolve(isStop),\n\t\t);\n\t\treturn this.#sps.ret;\n\t}\n\t#sps\t= new SpritesMng;\n\t#width\t= 0;\n\t#height\t= 0;\n\toverride\tget\twidth() {return this.#width}\n\toverride\tget\theight() {return this.#height}\n\n\n\toverride\trenderStart() {\n\t\tthis.#spTsy = new Sprite(this.#rtTsy);\n\t\tthis.#spTsy.visible = false;\n\t\tthis.ctn.addChildAt(this.#spTsy, 0);\n\t\tthis.#spTsy.position.set(-this.ctn.x, -this.ctn.y);\n\n\t\tlet fncRenderFore = ()=> {\n\t\t\tconst a = this.ctn.alpha;\n\t\t\tthis.ctn.alpha = 1;\n\t\t\tfor (const s of this.ctn.children) s.visible = true;\n\t\t\tthis.#spTsy.visible = false;\n\t\t\tGrpLayer.#appPixi.renderer.render(this.ctn, {renderTexture: this.#rtTsy});\t// clear: true\n\t\t\tthis.ctn.alpha = a;\n\t\t\tfor (const s of this.ctn.children) s.visible = false;\n\t\t}\n\t\tif (! this.containMovement) {\n\t\t\tconst oldFnc = fncRenderFore;\t// 動きがないなら最初に一度\n\t\t\tfncRenderFore = ()=> {fncRenderFore = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\t\tthis.#fncRender = ()=> {\n\t\t\tfncRenderFore();\n\t\t\tthis.#spTsy.visible = true;\n\t\t};\n\t\tGrpLayer.#appPixi.ticker.add(this.#fncRender);\n\t}\n\t#rtTsy\t= RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTsy\t= new Sprite;\n\t#fncRender = ()=> { /* empty */ };\n\toverride\trenderEnd() {\n\t\tGrpLayer.#appPixi.ticker.remove(this.#fncRender);\n\t\tthis.ctn.removeChild(this.#spTsy);\n\t\tfor (const s of this.ctn.children) s.visible = true;\n\t\tthis.#spTsy.destroy(true);\n\n\t\tthis.#rtTsy = RenderTexture.create({\n\t\t\twidth\t: CmnLib.stageW,\n\t\t\theight\t: CmnLib.stageH,\n\t\t});\n\t}\n\n\n\tsetPos(hArg: HArg): void {\n\t\tLayer.setXY(\n\t\t\tthis.ctn.children[0] ?? this.ctn,\n\t\t\thArg,\n\t\t\tthis.ctn,\n\t\t\ttrue\n\t\t);\n\t}\n\n\t// アニメ・動画を含むか\n\toverride get containMovement() {\n\t\tif (this.#csvFn === '') return false;\n\n\t\tconst c = this.ctn.children;\n\t\treturn this.#csvFn.split(',').some(\n\t\t\t(fn, i)=> c[i] instanceof AnimatedSprite || SpritesMng.getHFn2VElm(fn)\n\t\t);\n\t}\n\n\toverride clearLay(hArg: HArg): void {\n\t\tsuper.clearLay(hArg);\n\t\tthis.#sps.destroy();\n\t\tthis.#sBkFn\t\t= '';\n\t\tthis.#sBkFace\t= '';\n\t\tthis.#csvFn\t\t= '';\n\t}\n\toverride readonly record = ()=> ({...super.record(),\n\t\tsBkFn\t\t: this.#sBkFn,\n\t\tsBkFace\t\t: this.#sBkFace,\n//\t\tidc_hArg\t: this.#idc.gethArg(),\n\t});\n\toverride playback(hLay: T_RP_layGrp, aPrm: Promise<void>[]): void {\n\t\tsuper.playback(hLay, aPrm);\n\t\tif (hLay.sBkFn === '' && hLay.sBkFace === '') {\n\t\t\tthis.#sBkFn\t\t= '';\n\t\t\tthis.#sBkFace\t= '';\n//\t\t\tthis.#idc.sethArg(hLay.idc_hArg);\n\t\t\treturn;\n\t\t}\n\n\t\taPrm.push(new Promise(re=> this.#laySub(\n\t\t\t{fn: hLay.sBkFn, face: hLay.sBkFace, left: hLay.x, top: hLay.y, alpha: hLay.alpha, blendmode: Layer.getNum2Blendmode(hLay.blendMode), rotation: hLay.rotation, scale_x: hLay.scale_x, scale_y: hLay.scale_y},\n\t\t\t_isStop=> {this.ctn.position.set(hLay.x, hLay.y); re()},\n\t\t\t\t// Layer.setXY()の後に再度移動\n\t\t)));\n\t}\n\n\toverride makeDesignCast(gdc: IMakeDesignCast) {\n\t\tif (! this.ctn.visible) return;\n\t\tgdc(this.#idc);\n\t}\n\t//makeDesignCastChildren(_gdc: IMakeDesignCast) {}\n\n\toverride cvsResize() {super.cvsResize()}\n\n\toverride showDesignCast() {this.#idc.visible = true}\n\t//showDesignCastChildren() {}\n\n\toverride readonly dump = ()=> super.dump() +`, \"pic\":\"${this.#csvFn}\"`;\n\n}\n","/* eslint-disable no-irregular-whitespace */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/restrict-template-expressions */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2024-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {argChk_Boolean, argChk_Num} from './CmnLib';\nimport type {HArg} from './Grammar';\n\nimport type {Rectangle} from 'pixi.js';\n\n\nexport type IChRect = {\n\tch\t\t: string;\n\trect\t: Rectangle;\n\telm\t\t: HTMLElement;\n}\n\nexport type T_RP_Hyphenation = {\n\t行頭禁則?\t\t: string;\n\t行末禁則?\t\t: string;\n\t分割禁止?\t\t: string;\n\tぶら下げ?\t\t: string;\n\tbreak_fixed\t\t: boolean;\n\tbreak_fixed_left: number;\n\tbreak_fixed_top\t: number;\n\tbura\t\t\t: boolean;\n}\n\n\nconst def行頭禁則\t= '、。,.)]}〉」』】〕”〟ぁぃぅぇぉっゃゅょゎァィゥェォッャュョヮヵヶ!?!?‼⁉・ーゝゞヽヾ々';\nconst def行末禁則\t= '[({〈「『【〔“〝';\nconst def分割禁止\t= '─‥…';\nconst defぶら下げ\t= def行頭禁則;\n\nconst defReg行頭禁則\t= new RegExp(`[${def行頭禁則}]`);\nconst defReg行末禁則\t= new RegExp(`[${def行末禁則}]`);\nconst defReg分割禁止\t= new RegExp(`[${def分割禁止}]`);\nconst defRegぶら下げ\t= defReg行頭禁則;\n\n\nexport class Hyphenation {\n\t#s行頭禁則\t\t= def行頭禁則;\n\t#s行末禁則\t\t= def行末禁則;\n\t#s分割禁止\t\t= def分割禁止;\n\t#sぶら下げ\t\t= defぶら下げ;\n\tget 行頭禁則() {return this.#s行頭禁則}\n\tget 行末禁則() {return this.#s行末禁則}\n\tget 分割禁止() {return this.#s分割禁止}\n\tget ぶら下げ() {return this.#sぶら下げ}\n\n\t#reg行頭禁則\t= defReg行頭禁則;\n\t#reg行末禁則\t= defReg行末禁則;\n\t#reg分割禁止\t= defReg分割禁止;\n\t#regぶら下げ\t= defRegぶら下げ;\n\n\tbreak_fixed\t\t= false;\n\tbreak_fixed_left= 0;\n\tbreak_fixed_top\t= 0;\n\tbura\t\t\t= false;\n\tlay(hArg: HArg) {\n\t\tif (hArg.kinsoku_sol) {\n\t\t\tthis.#s行頭禁則 = hArg.kinsoku_sol;\n\t\t\tthis.#reg行頭禁則 = new RegExp(`[${this.#s行頭禁則}]`);\n\t\t}\n\t\tif (hArg.kinsoku_eol) {\n\t\t\tthis.#s行末禁則 = hArg.kinsoku_eol;\n\t\t\tthis.#chk禁則の競合_ぶら行末();\n\t\t\tthis.#reg行末禁則 = new RegExp(`[${this.#s行末禁則}]`);\n\t\t}\n\t\tif (hArg.kinsoku_dns) {\n\t\t\tthis.#s分割禁止 = hArg.kinsoku_dns;\n\t\t\tthis.#chk禁則の競合_ぶら分禁();\n\t\t\tthis.#reg分割禁止 = new RegExp(`[${this.#s分割禁止}]`);\n\t\t}\n\t\tif (hArg.kinsoku_bura) {\n\t\t\tthis.#sぶら下げ = hArg.kinsoku_bura;\n\t\t\tthis.#chk禁則の競合_ぶら行末();\n\t\t\tthis.#chk禁則の競合_ぶら分禁();\n\t\t\tthis.#regぶら下げ = new RegExp(`[${this.#sぶら下げ}]`);\n\t\t}\n\t\tif ('bura' in hArg) this.bura = argChk_Boolean(hArg, 'bura', false);\n\n\t\tthis.break_fixed\t\t= argChk_Boolean(hArg, 'break_fixed', this.break_fixed);\n\t\tthis.break_fixed_left\t= argChk_Num(hArg, 'break_fixed_left', this.break_fixed_left);\n\t\tthis.break_fixed_top\t= argChk_Num(hArg, 'break_fixed_top', this.break_fixed_top);\n\t}\n\t\t// 禁則の競合(ぶら下げ と 行末禁則 の両方に含まれる文字があってはならない)\n\t\t#chk禁則の競合_ぶら行末() {\n\t\t\t// 処理速度最適化で主従を変える。長い方をネイティブにやらせる\n\t\t\tconst len行末禁則 = this.#s行末禁則.length;\n\t\t\tconst lenぶら下げ = this.#sぶら下げ.length;\n\t\t\tif (len行末禁則 < lenぶら下げ) {\n\t\t\t\tfor (let i=0; i<len行末禁則; ++i) {\n\t\t\t\t\tconst c = this.#s行末禁則[i];\n\t\t\t\t\tif (this.#sぶら下げ.includes(c!)) throw `禁則の競合があります。文字 ${c} がぶら下げ と 行末禁則 の両方に含まれます`;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tfor (let i=0; i<lenぶら下げ; ++i) {\n\t\t\t\t\tconst c = this.#sぶら下げ[i];\n\t\t\t\t\tif (this.#s行末禁則.includes(c!)) throw `禁則の競合があります。文字 ${c} がぶら下げ と 行末禁則 の両方に含まれます`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// 禁則の競合(ぶら下げ と 分割禁止 の両方に含まれる文字があってはならない)\n\t\t#chk禁則の競合_ぶら分禁() {\n\t\t\t// 処理速度最適化で主従を変える。長い方をネイティブにやらせる\n\t\t\tconst len分割禁止 = this.#s分割禁止.length;\n\t\t\tconst lenぶら下げ = this.#sぶら下げ.length;\n\t\t\tif (len分割禁止 < lenぶら下げ) {\n\t\t\t\tfor (let i=0; i<len分割禁止; ++i) {\n\t\t\t\t\tconst c = this.#s分割禁止[i];\n\t\t\t\t\tif (this.#sぶら下げ.includes(c!)) throw `禁則の競合があります。文字 ${c} がぶら下げ と 分割禁止 の両方に含まれます`;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tfor (let i=0; i<lenぶら下げ; ++i) {\n\t\t\t\t\tconst c = this.#sぶら下げ[i];\n\t\t\t\t\tif (this.#s分割禁止.includes(c!)) throw `禁則の競合があります。文字 ${c} がぶら下げ と 分割禁止 の両方に含まれます`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\treNew(to: Hyphenation) {\n\t\tto.#genKinsoku(this.#s行頭禁則, this.#s行末禁則, this.#s分割禁止, this.#sぶら下げ);\n\n\t\tto.break_fixed\t\t= this.break_fixed;\n\t\tto.break_fixed_left\t= this.break_fixed_left;\n\t\tto.break_fixed_top\t= this.break_fixed_top;\n\t\tto.bura\t\t\t\t= this.bura;\n\t}\n\t\t#genKinsoku(s行頭禁則: string, s行末禁則: string, s分割禁止: string, sぶら下げ: string) {\n\t\t\tif (this.#s行頭禁則\t!== s行頭禁則) {\n\t\t\t\tthis.#s行頭禁則\t= s行頭禁則;\n\t\t\t\tthis.#reg行頭禁則 = new RegExp(`[${s行頭禁則}]`);\n\t\t\t}\n\t\t\tif (this.#s行末禁則\t!== s行末禁則) {\n\t\t\t\tthis.#s行末禁則\t= s行末禁則;\n\t\t\t\tthis.#reg行末禁則 = new RegExp(`[${s行末禁則}]`);\n\t\t\t}\n\t\t\tif (this.#s分割禁止\t!== s分割禁止) {\n\t\t\t\tthis.#s分割禁止\t= s分割禁止;\n\t\t\t\tthis.#reg分割禁止 = new RegExp(`[${s分割禁止}]`);\n\t\t\t}\n\t\t\tif (this.#sぶら下げ\t!== sぶら下げ) {\n\t\t\t\tthis.#sぶら下げ\t= sぶら下げ;\n\t\t\t\tthis.#regぶら下げ = new RegExp(`[${sぶら下げ}]`);\n\t\t\t}\n\t\t}\n\trecord() {\n\t\tconst o: T_RP_Hyphenation = {\n\t\t\tbreak_fixed\t\t\t: this.break_fixed,\n\t\t\tbreak_fixed_left\t: this.break_fixed_left,\n\t\t\tbreak_fixed_top\t\t: this.break_fixed_top,\n\t\t\tbura\t\t\t\t: this.bura,\n\t\t};\n\t\tif (this.#s行頭禁則 === def行頭禁則) o.行頭禁則 = this.#s行頭禁則;\n\t\tif (this.#s行末禁則 === def行末禁則) o.行末禁則 = this.#s行末禁則;\n\t\tif (this.#s分割禁止 === def分割禁止) o.分割禁止 = this.#s分割禁止;\n\t\tif (this.#sぶら下げ === defぶら下げ) o.ぶら下げ = this.#sぶら下げ;\n\t\t\t// デフォルト値と同じならJSONで省略\n\t\treturn o;\n\t}\n\tplayback(hLay?: T_RP_Hyphenation) {\n\t\tif (! hLay) return;\t\t// 途中追加なので\n\n\t\tthis.#genKinsoku(\n\t\t\thLay.行頭禁則 ?? def行頭禁則,\n\t\t\thLay.行末禁則 ?? def行末禁則,\n\t\t\thLay.分割禁止 ?? def分割禁止,\n\t\t\thLay.ぶら下げ ?? defぶら下げ,\n\t\t);\n\n\t\tthis.break_fixed\t\t= hLay.break_fixed;\n\t\tthis.break_fixed_left\t= hLay.break_fixed_left;\n\t\tthis.break_fixed_top\t= hLay.break_fixed_top;\n\t\tthis.bura\t\t\t\t= hLay.bura;\n\t}\n\n\thyph(htmTxt: HTMLSpanElement, cnvRect :(rng: Range, ch: string)=> Rectangle, tategaki: boolean, begin: number, bkHtm: string): [IChRect[], number] {\n\t\tlet a: IChRect[];\n\t\tlet len = 0;\n\t\tlet i = 2;\t\t// 本来 1 だがひと文字目の行頭禁則文字を無視したいので\n\t\tlet fncFirstChk = (len: number)=> {\n\t\t\tfncFirstChk = ()=> false;\n\n\t\t\tif (begin === len) {\t// 右クリック戻りなどで文字表示が崩れる件の対応\n\t\t\t\tif (begin > 0) htmTxt.innerHTML = bkHtm.replaceAll('class=\"sn_ch\"', 'class=\"sn_ch sn_ch_in_default\"');\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn len < 2;\n\t\t};\n//console.log(`🎴禁則処理判定ループ begin:${begin}`);\n\t\tdo {\n\t\t\ta = this.#getChRects(htmTxt, cnvRect);\n\t\t\tlen = a.length;\n\t\t\tif (fncFirstChk(len)) break;\n\n\t\t\t// 禁則処理判定ループ\n\t\t\tlet sl_xy = -Infinity;\t// 前回のxy\n//console.log(`- len:${len} a_ch:${a.map((v, i)=> v.elm.tagName === 'RT' ?[] :[i, v.ch])}:`);\n\t\t\tfor (; i<len; ++i) {\n\t\t\t\tconst {elm, rect, ch} = a[i]!;\n\t\t\t\tif (elm.tagName === 'RT') continue;\t// ルビはスキップ\n\n\t\t\t\tconst xy = tategaki ?rect.y :rect.x;\n//if (sl_xy > 790)\n//console.log(`🎴 sl_xy:${sl_xy.toFixed(2)} xy:${xy.toFixed(2)} i:${i} ch:${ch}: rect:(${rect.left.toFixed(2)}, ${rect.top.toFixed(2)}, ${rect.width.toFixed(2)}, ${rect.height.toFixed(2)})`);\n\t\t\t\tif (sl_xy <= xy\t// 【 < 】では[tcy]二文字目を誤判定する\n\t\t\t\t// [r]による改行後は追い出し処理をしないように\n\t\t\t\t|| elm.previousElementSibling?.tagName === 'SPAN'\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\t\t&&\telm.previousElementSibling?.innerHTML.includes('<br>')\n\t\t\t\t// <span class=\"offrec\"> 〜 </span> 外し\n\t\t\t\t|| elm.parentElement?.previousElementSibling?.tagName === 'SPAN'\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\t\t&&\telm.parentElement?.previousElementSibling?.innerHTML.includes('<br>')) {\n\t\t\t\t\tsl_xy = xy;\n\t\t\t\t\tif (! this.break_fixed) {\n\t\t\t\t\t\tthis.break_fixed_left = rect.x;\n\t\t\t\t\t\tthis.break_fixed_top = rect.y;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n/*\n\t// [r]などの改行はこう。TxtLayer.#tagCh_sub()により <span> に入れられる\n\t<span class=\"sn_ch\" style=\"display: inline;animation-delay: 10ms;\">\n\t\t<br>\n\t</span>\n\n\t// 上記が下記に囲まれている場合もある。previousElementSibling 使用時は注意\n\t<span class=\"offrec\"> 〜 </span>\n\n\n\t// 禁則処理による自動改行はこう\n\t<br>\n*/\n\n\t\t\t\tconst p_i = this.#i2pi(a, i);\n\t\t\t\tconst {elm: p_elm, rect: p_rect, ch: p_ch} = a[p_i]!;\n//console.log(`🎴 === 自動改行発生! 前文字:${p_i}:${p_ch}:%o 今文字:${i}:${ch}:(${ch.charCodeAt(0).toString(16)})%o`, a[p_i].elm, a[i].elm);\n\t\t\t\tif (! this.break_fixed) {\n\t\t\t\t\tthis.break_fixed_left = p_rect.x;\n\t\t\t\t\tthis.break_fixed_top = p_rect.y;\n\t\t\t\t\tconst sty = globalThis.getComputedStyle(p_elm);\n\t\t\t\t\tconst rs = parseFloat(sty.fontSize);\n\t\t\t\t\tif (tategaki)\tthis.break_fixed_top += rs;\n\t\t\t\t\telse\t\t\tthis.break_fixed_left += rs;\n\t\t\t\t}\n\n\t\t\t\tsl_xy = -Infinity;\t// 自動改行発生!\n\t\t\t\tconst oldI = i;\n\t\t\t\tconst {cont, ins} = this.bura\n\t\t\t\t\t? this.hyph_alg_bura(a, p_i, p_ch, i)\n\t\t\t\t\t: this.hyph_alg(a, p_i, p_ch, i, ch);\n\t\t\t\ti = ins;\n//console.log(`🎴 === cont:${cont} ins:${i} :${a[i].ch}:%o の前に改行を挿入`, a[i].elm);\n\t\t\t\tif (cont) continue;\n\n\t\t\t\t// 改行挿入\n\t\t\t\tconst elm2 = a[i]!.elm;\n\t\t\t\tconst pal = elm2.parentElement!;\n\t\t\t\tconst br = document.createElement('br');\n\t\t\t\tif (pal.classList.contains('sn_tx')) pal.insertBefore(br, elm2); else {\n\t\t\t\t\tconst ppal = pal.parentElement!;\n\t\t\t\t\tif (ppal.classList.contains('sn_ch')) {\n\t\t\t\t\t\tppal.parentElement!.insertBefore(br, ppal);\n\t\t\t\t\t}\n\t\t\t\t\telse ppal.insertBefore(br, pal);\n\t\t\t\t}\n\n\t\t\t\ti += 2;\t// いま追加した<br>のぶんと、次へ行く +1\n\t\t\t\tif (i < oldI) i = oldI;\t// 永久ループ防御\n\t\t\t\tlen = -1;\t// doループ先頭に戻る\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (len < 0);\n\n\t\treturn [a, len];\n\t}\n\t\t// 一つ前の要素を探す(ルビ対応)\n\t\t#i2pi(a: IChRect[], i: number): number {\n\t\t\tconst p_i = i -1;\n\t\t\tconst {elm} = a[p_i]!;\n\t\t\tif (elm.tagName !== 'RT') return p_i -(\n\t\t\t\telm.style.textCombineUpright === 'all'\n\t\t\t\t? Array.from(elm.textContent).length -1\n\t\t\t\t: 0\n\t\t\t);\n\n\t\t\treturn p_i -Array.from(elm.textContent).length;\n\t\t\t\t// サロゲートペア対策\n\t\t}\n\n\t#getChRects(elm: Node, cnvRect :(range: Range, ch: string)=> Rectangle): IChRect[] {\t// 注意)再帰関数\n\t\tconst ret: IChRect[] = [];\n\t\tif (elm.nodeType !== elm.TEXT_NODE) return Array.from(elm.childNodes).map(v=> this.#getChRects(v, cnvRect)).flat();\n\n\t\tconst rng = elm.ownerDocument!.createRange();\n\t\trng.selectNodeContents(elm);\n\t\tlet pos = 0;\n\t\tconst end = rng.endOffset;\n\t\t// できれば一文字ずつ「after-edge - baseline」を調べたいが、暫定手段を取る\n\t\t//const styles = globalThis.getComputedStyle(this.htmTxt);\n\t\t//console.log('lh:'+ styles.lineHeight +' fs:'+ styles.fontSize);\n\t\twhile (pos < end) {\n\t\t\trng.setStart(elm, pos);\n\t\t\trng.setEnd(elm, ++pos);\n\t\t\tconst ch = rng.toString();\n\t\t\tret.push({\n\t\t\t\tch,\n\t\t\t\trect: cnvRect(rng, ch),\n\t\t\t\telm\t: rng.startContainer.parentElement!,\n\t\t\t});\n\t\t}\n\t\trng.detach();\n\n\t\treturn ret;\n\t}\n\n\t/**\n\t * 抽象化した禁則処理アルゴリズム\n\t * @method hyph_alg\n\t * @param {IChRect[]} a - 文章の抽象化配列\n\t * @param {number} p_i - 処理要素の一つ前の添字\n\t * @param {string} p_ch - 処理要素の一つ前の文字\n\t * @param {number} i - 処理要素の添字\n\t * @param {string} ch - 処理要素の文字\n\t * @return {Object} result 戻り値\n\t * @return {boolean} result.cont - true: 呼び元で改行挿入せず continue\n\t * @return {number} result.ins - 手前に改行を挿入すべき要素の添字\n\t */\n\thyph_alg(\t// テスト用にpublic\n\t\ta\t: IChRect[],\n\t\tp_i\t: number,\n\t\tp_ch: string,\n\t\tii\t: number,\t// i >= 2\n\t\tch\t: string,\n\t): {cont: boolean, ins: number} {\n\t\t// 追い出し走査\n\t\tlet i = ii;\n\t\tif (this.#reg行末禁則.test(p_ch)) { /* empty */ }\t// 一つ前\n\t\telse if (this.#reg行頭禁則.test(ch)) {\t//(現在地 -> 前方走査)\n\t\t\twhile ((i = this.#i2pi(a, i)) >= 0) {\n\t\t\t\tif (! this.#reg行頭禁則.test(a[i]!.ch)) break;// 行頭禁則はスキップ\n\t\t\t}\n\t\t}\n\t\telse if (p_ch === ch && this.#reg分割禁止.test(p_ch)) { /* empty */ }// 一つ前&現在地\n\t\telse return {cont: true, ins: i +1};\t// 追い出しなし\n\n\t\t// 追い出しによる新行末二次判定(一つ前 -> 前方走査)\n\t\ti = p_i;\n\t\twhile ((i = this.#i2pi(a, i)) >= 0) {\n\t\t\tif (! this.#reg行末禁則.test(a[i]!.ch)) break;\t// 行末禁則はスキップ\n\t\t}\n\t\treturn {cont: false, ins: i +1};\n\t}\n\n\t/**\n\t * 抽象化した禁則処理アルゴリズム\n\t * @method hyph_alg\n\t * @param {IChRect[]} a - 文章の抽象化配列\n\t * @param {number} p_i - 処理要素の一つ前の添字\n\t * @param {string} p_ch - 処理要素の一つ前の文字\n\t * @param {number} i - 処理要素の添字\n\t * @return {Object} result 戻り値\n\t * @return {boolean} result.cont - true: 呼び元で改行挿入せず continue\n\t * @return {number} result.ins - 手前に改行を挿入すべき要素の添字\n\t */\n\thyph_alg_bura(\t// テスト用にpublic\n\t\ta\t: IChRect[],\n\t\tp_i\t: number,\n\t\tp_ch: string,\n\t\ti\t: number,\t// i >= 2\n\t): {cont: boolean, ins: number} {\n\t\tconst pp_i = this.#i2pi(a, p_i);\t// 改行後のルビで追い出し発生\n\t\tconst {ch: pp_ch} = a[pp_i]!;\n//console.log(`🎴 hyph_alg_bura pp:${pp_i}:${pp_ch}: p:${p_i}:${p_ch}: i:${i}:${a[i].ch}:`);\n\t\t// 改行前二個目に「ぶら下げ」がある\n\t\tif (this.#regぶら下げ.test(pp_ch) || this.#reg行頭禁則.test(pp_ch)) {\n\t\t\tlet j = p_i;\n\t\t\t// 改行前にも「ぶら下げ」がある\n\t\t\tif (this.#regぶら下げ.test(p_ch) || this.#reg行頭禁則.test(p_ch)) ++j;\n\n\t\t\t// ぶら下げ後……追い出し走査\n\t\t\tconst p_j = this.#i2pi(a, j);\t// pp_i ではない\n\t\t\tconst {ch: last_ch} = a[p_j]!;\t// 行末\n\t\t\tconst {ch: head_ch} = a[j]!;\t\t// 行頭\n\t\t\t// 分割禁止\n\t\t\tif (last_ch === head_ch && this.#reg分割禁止.test(head_ch)) return {cont: false, ins: p_j};\n\n\t\t\tif (! this.#reg行末禁則.test(last_ch)) return {cont: false, ins: j};\n\t\t\t// 行末禁則\n\t\t\tj = p_j;\n\t\t\tdo {\n\t\t\t\tif (! this.#reg行末禁則.test(a[j]!.ch)) break;\t// 行禁はスキップ\n\t\t\t} while ((j = this.#i2pi(a, j)) >= 0);\n\t\t\treturn {cont: false, ins: j +1};\t// 行末禁則\n\t\t}\n\n\t\t// 改行前二個目に「ぶら下げ」がない\n\t\tconst ppp_i = this.#i2pi(a, pp_i);\n\t\tif (i >= 3) {\n\t\t\tconst {ch: ppp_ch} = a[ppp_i]!;\n//console.log(`-- 改行前二個目に「ぶら下げ」がない ppp:${ppp_i}:${ppp_ch}: pp:${pp_i}:${pp_ch}: i:${i}`);\n\t\t\t// 改行前二個目に「分割禁止」\n\t\t\tif (this.#reg分割禁止.test(pp_ch)) {\t// 分割禁止\n//console.log(` == 改行前二個目に「分割禁止」:${ppp_ch === pp_ch}`);\n\t\t\t\tif (ppp_ch === pp_ch) return {cont: false, ins: ppp_i};\n\t\t\t}\n\t\t\t// 改行前三個目に「行末禁則」\n\t\t\tif (this.#reg行末禁則.test(ppp_ch)) {\t// 行末禁則\n\t\t\t\tlet j = ppp_i;\n//console.log(` == 改行前三個目に「行末禁則」 j:${j}:${a[j].ch}:`);\n\t\t\t\twhile ((j = this.#i2pi(a, j)) >= 0) {\n//console.log(` -- ch:${a[j].ch}`);\n\t\t\t\t\tif (! this.#reg行末禁則.test(a[j]!.ch)) break;// 行禁はスキップ\n\t\t\t\t}\n//console.log(` === j:${j +1}:${a[j +1].ch}: tn:${a[j +1].elm.parentElement?.tagName}`);\n\t\t\t\treturn {cont: false, ins: j +1};\t// 行末禁則\n\t\t\t}\n\t\t}\n\n\t\treturn {cont: false, ins: pp_i};\n\t}\n\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n/* eslint-disable @typescript-eslint/restrict-plus-operands */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/restrict-template-expressions */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2025-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {T_InfTxLay} from './TxtStage';\nimport {DebugMng} from './DebugMng';\n\nimport {Texture} from 'pixi.js';\n\n\nexport function htm2tx(fnc: (tx2: any)=> void, htmTxt: HTMLSpanElement, infTL :T_InfTxLay, padTx4x: number, padTx4y: number, hidden = true) {\n\t\t// tsayen/dom-to-image: Generates an image from a DOM node using HTML5 canvas https://github.com/tsayen/dom-to-image\n\n/*---*/\n\t\tconst util = {\n\t\t\tescape: (str: string)=> str.replaceAll(/([.*+?^${}()|[\\]/\\\\])/g, '\\\\$1'),\n\t\t\tmimeType: (url: any)=> {\n\t\t\t\tconst extension = parseExtension(url).toLowerCase();\n\t\t\t\treturn mimes()[extension] || '';\n\t\t\t},\n\t\t\tdataAsUrl,\n\t\t\tisDataUrl,\n\t\t\tresolveUrl,\n\t\t\tgetAndEncode,\n\t\t\tasArray: (arrayLike: StyleSheetList)=> {\n\t\t\t\tconst a: StyleSheet[] = [];\n\t\t\t\tconst len = arrayLike.length;\n\t\t\t\tfor (let i=0; i<len; ++i) a.push(arrayLike[i]!);\n\t\t\t\treturn a;\n\t\t\t},\n\t\t};\n\t\t\tfunction mimes(): any {\n\t\t\t\t// Only WOFF and EOT mime types for fonts are 'real'\n\t\t\t\t// * see http://www.iana.org/assignments/media-types/media-types.xhtml\n\t\t\t\tconst WOFF = 'application/font-woff';\n\t\t\t\tconst JPEG = 'image/jpeg';\n\n\t\t\t\treturn {\n\t\t\t\t\t'woff': WOFF,\n\t\t\t\t\t'woff2': WOFF,\n\t\t\t\t\t'ttf': 'application/font-truetype',\n\t\t\t\t\t'eot': 'application/vnd.ms-fontobject',\n\t\t\t\t\t'png': 'image/png',\n\t\t\t\t\t'jpg': JPEG,\n\t\t\t\t\t'jpeg': JPEG,\n\t\t\t\t\t'gif': 'image/gif',\n\t\t\t\t\t'tiff': 'image/tiff',\n\t\t\t\t\t'svg': 'image/svg+xml'\n\t\t\t\t};\n\t\t\t}\n\n\n\t\tconst inliner = newInliner();\n\n\n\t\tconst fontFaces = newFontFaces();\n\n\n\t\tfunction embedFonts(node: any) {\n\t\t\treturn fontFaces.resolveAll()\n\t\t\t.then(cssText=> {\n\t\t\t\tconst styleNode = document.createElement('style');\n\t\t\t\tnode.appendChild(styleNode);\n\t\t\t\tstyleNode.appendChild(document.createTextNode(cssText));\n\t\t\t//console.log('cssText:%s:', cssText);\t//------------\n\t\t\t\treturn node;\n\t\t\t});\n\t\t}\n\n\n\t\t\tfunction parseExtension(url: any) {\n\t\t\t\tconst match = /\\.([^./]*?)$/g.exec(url);\n\t\t\t\treturn match?.[1] ?? '';\n\t\t\t}\n\n\t\t\tfunction isDataUrl(url: any) {\n\t\t\t\treturn url.search(/^(data:)/) !== -1;\n\t\t\t}\n\n\t\t\tfunction resolveUrl(url: any, baseUrl: any) {\n\t\t\t\tconst doc = document.implementation.createHTMLDocument();\n\t\t\t\tconst base = doc.createElement('base');\n\t\t\t\tdoc.head.appendChild(base);\n\t\t\t\tconst a = doc.createElement('a');\n\t\t\t\tdoc.body.appendChild(a);\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tbase.href = baseUrl;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\ta.href = url;\n\t\t\t\treturn a.href;\n\t\t\t}\n\n\t\t\tfunction getAndEncode(url: any) {\n\t\t\t\tconst TIMEOUT = 30000;\n\t\t\t\t//if(domtoimage.impl.options.cacheBust) {\n\t\t\t\t\t// Cache bypass so we dont have CORS issues with cached images\n\t\t\t\t\t// Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n\t\t\t\t//\turl += ((/\\?/).test(url) ? \"&\" : \"?\") + (new Date).getTime();\n\t\t\t\t//}\n\n\t\t\t\treturn new Promise(function(resolve) {\n\t\t\t\t\tconst request = new XMLHttpRequest;\n\n\t\t\t\t\trequest.onreadystatechange = done;\n\t\t\t\t\trequest.ontimeout = timeout;\n\t\t\t\t\trequest.responseType = 'blob';\n\t\t\t\t\trequest.timeout = TIMEOUT;\n\t\t\t\t\trequest.open('GET', url, true);\n\t\t\t\t\trequest.send();\n\n\t\t\t\t\t//let placeholder;\n\t\t\t\t\t//if(domtoimage.impl.options.imagePlaceholder) {\n\t\t\t\t\t//\tlet split = domtoimage.impl.options.imagePlaceholder.split(/,/);\n\t\t\t\t\t//\tif(split && split[1]) {\n\t\t\t\t\t//\t\tplaceholder = split[1];\n\t\t\t\t\t//\t}\n\t\t\t\t\t//}\n\n\t\t\t\t\tfunction done() {\n\t\t\t\t\t\tif (request.readyState !== 4) return;\n\n\t\t\t\t\t\tif (request.status !== 200) {\n\t\t\t\t\t\t//\tif(placeholder) {\n\t\t\t\t\t\t//\t\tresolve(placeholder);\n\t\t\t\t\t\t//\t} else {\n\t\t\t\t\t\t\t\tfail('cannot fetch resource: ' + url + ', status: ' + request.status);\n\t\t\t\t\t\t//\t}\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst encoder = new FileReader;\n\t\t\t\t\t\tencoder.onloadend = function() {\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-base-to-string\n\t\t\t\t\t\t\tconst content = encoder.result!.toString().split(/,/)[1];\n\t\t\t\t\t\t\tresolve(content);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tencoder.readAsDataURL(request.response);\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction timeout() {\n\t\t\t\t\t//\tif(placeholder) {\n\t\t\t\t\t//\t\tresolve(placeholder);\n\t\t\t\t\t//\t} else {\n\t\t\t\t\t\t\tfail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\n\t\t\t\t\t//\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction fail(message: any) {\n\t\t\t\t\t\tconsole.error(message);\n\t\t\t\t\t\tresolve('');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction dataAsUrl(content: any, type: any) {\n\t\t\t\treturn 'data:' + type + ';base64,' + content;\n\t\t\t}\n\n\n\t\tfunction newInliner() {\n\t\t\tconst URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n\t\t\treturn {\n\t\t\t\tinlineAll,\n\t\t\t\tshouldProcess,\n\t\t\t};\n\n\t\t\tfunction shouldProcess(str: any) {\n\t\t\t\treturn str.search(URL_REGEX) !== -1;\n\t\t\t}\n\n\t\t\tfunction readUrls(str: any) {\n\t\t\t\tconst result: string[] = [];\n\t\t\t\tlet match: RegExpExecArray | null;\n\t\t\t\t// eslint-disable-next-line no-cond-assign\n\t\t\t\twhile (match = URL_REGEX.exec(str)) {\n\t\t\t\t\tresult.push(match[1]!);\n\t\t\t\t}\n\t\t\t\treturn result.filter(function(url) {\n\t\t\t\t\treturn ! util.isDataUrl(url);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction inline(str: any, url: any, baseUrl: any, get: any) {\n\t\t\t\treturn Promise.resolve(url)\n\t\t\t\t\t.then(url=> baseUrl ? util.resolveUrl(url, baseUrl) : url)\n\t\t\t\t\t.then(get || util.getAndEncode)\n\t\t\t\t\t.then(data=> util.dataAsUrl(data, util.mimeType(url)))\n\t\t\t\t\t.then(dataUrl=> str.replace(urlAsRegex(url), '$1' + dataUrl + '$3'));\n\n\t\t\t\tfunction urlAsRegex(url: any) {\n\t\t\t\t\treturn new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction inlineAll(str: any, baseUrl: any, get?: any) {\n\t\t\t\tif (nothingToInline()) return Promise.resolve(str);\n\n\t\t\t\treturn Promise.resolve(str)\n\t\t\t\t\t.then(readUrls)\n\t\t\t\t\t.then(urls=> {\n\t\t\t\t\t\tlet done = Promise.resolve(str);\n\t\t\t\t\t\tfor (const url of urls) done = done.then(string=> inline(string, url, baseUrl, get));\n\t\t\t\t\t\treturn done;\n\t\t\t\t\t});\n\n\t\t\t\tfunction nothingToInline() {\n\t\t\t\t\treturn ! shouldProcess(str);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction newFontFaces() {\n\t\t\treturn {\n\t\t\t\tresolveAll,\n\t\t\t\timpl: {readAll}\n\t\t\t};\n\n\t\t\tfunction resolveAll() {\n\t\t\t\treturn readAll()\n\t\t\t\t.then(webFonts=> Promise.allSettled(\n\t\t\t\t\twebFonts.map((webFont: any)=> webFont.resolve())\n\t\t\t\t))\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-base-to-string\n\t\t\t\t.then(cssStrings=> cssStrings.join('\\n'));\n\t\t\t}\n\n\t\t\tfunction readAll() {\n\t\t\t\treturn Promise.resolve(util.asArray(document.styleSheets))\n\t\t\t\t\t.then(getCssRules)\n\t\t\t\t\t.then(selectWebFontRules)\n\t\t\t\t\t.then(rules=> rules.map(newWebFont));\n\t\t\t\t\t\t// console.log('map:%o:', rules) ||\n\n\t\t\t\tfunction selectWebFontRules(cssRules: any) {\n\t\t\t\t\treturn cssRules\n\t\t\t\t\t.filter((rule: any)=> rule.type === CSSRule.FONT_FACE_RULE)\n\t\t\t\t\t.filter((rule: any)=> inliner.shouldProcess(rule.style.getPropertyValue('src')));\n\t\t\t\t}\n\n\t\t\t\tfunction getCssRules(styleSheets: any) {\n\t\t\t\t\tconst cssRules: any = [];\n\t\t\t\t\tfor (const sheet of styleSheets) {\n\t\t\t\t\t//console.log('1:%o', sheet);\t//-------\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (sheet.href) continue;\n\t\t\t\t\t\t//console.log(sheet.cssRules);\n\t\t\t\t\t\t\tutil.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tconsole.error('Error while reading CSS rules from ' + sheet.href, String(e));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn cssRules;\n\t\t\t\t}\n\n\t\t\t\tfunction newWebFont(webFontRule: any) {\n\t\t\t\t\t//console.log('newWebFont:%o:', webFontRule);\t//-------\n\t\t\t\t\treturn {\n\t\t\t\t\t\tresolve: function resolve() {\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/prefer-optional-chain\n\t\t\t\t\t\t\tconst baseUrl = (webFontRule.parentStyleSheet || {}).href;\n\t\t\t\t\t\t\treturn inliner.inlineAll(webFontRule.cssText, baseUrl);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsrc() {\n\t\t\t\t\t\t\treturn webFontRule.style.getPropertyValue('src');\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n/*\n\t\tfetch('http://localhost:8080/prj/mat/my_himajihoso.woff2')\n\t\t.then(response=> {\n\t\t\tif (response.ok) return response.blob();\n\t\t\tthrow new Error('Network response was not ok.');\n\t\t})\n\t\t.then(blob=> new Promise((resolve, reject)=> {\n\t\t\tconst reader = new FileReader;\n\t\t\treader.onloadend = ()=> resolve(reader.result);\n\t\t\treader.onerror = reject;\n\t\t\treader.readAsDataURL(blob);\n\t\t}))\n\t\t.then(dataUrl => {\n\t\t\t// data:application/font-woff2;base64,d09GMk9U\n\t\t\tconst css =\n\t\t\t'body { margin: 0px; padding: 0px; overflow: hidden; }\\n'+\n\t\t\t'body { line-height: 36px; }\\n'+\n\n\t\t\t`@font-face { font-family: my_himajihoso; src: url(\"${\n\t\t\t\t'data:application/font-woff;base64,'+\n\t\t\t\tString(dataUrl)\n\t\t\t\t.split(/,/)[1]\n\t\t//\t\t.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1')\n\t\t\t}\"); }`;\n\n\t\tconsole.log('css:'+ css);\n\t\tconsole.log('@font-face { font-family: my_himajihoso; src: url(\"data:application/font-woff;base64,d09GMk9UVE8AAA...bhUAAA==\"); }\\n');\n\t\t\tthis.styleHtmTxt.appendChild(document.createTextNode(css));\n*/\n\n\t\tPromise.resolve(htmTxt)\n\t\t.then(node=> {\t//console.log(`🍇 toSvg`);\n\t\t\tconst cln = <HTMLSpanElement>node.cloneNode(true);\n\t\t\tcln.style.padding = '0px';\t\t// ややこしいのでシンプルに\n\t\t\tcln.style.paddingRight = padTx4x +'px';\n\t\t\tcln.style.paddingTop = padTx4y +'px';\n\t\t\tcln.style.left = '0px';\n\t\t\tcln.style.top = '0px';\n\t\t\tcln.style.width = infTL.$width -infTL.pad_left -infTL.pad_right +'px';\n\t\t\tcln.style.height = infTL.$height -infTL.pad_top -infTL.pad_bottom +'px';\n\t\t\t//console.log(cln.style.cssText);\n\t\t\thtmTxt.hidden = hidden;\n\t\t\treturn cln;\n\t\t})\n\t\t.then(embedFonts)\n\t\t.then(node=> {\t//console.log(`🍈 makeSvgDataUri`);\n\t\t\tnode.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n\t\t\tconst img = new Image;\n\t\t\t//img.crossOrigin = 'Anonymous';\t//--いまのとこ不要\n\t\t\timg.src = `data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${infTL.$width\n\t\t\t}px\" height=\"${infTL.$height\n\t\t\t}px\"><foreignObject x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">${\n\t\t\t\t(new XMLSerializer).serializeToString(node)\n\t\t\t\t.replaceAll('#', '%23').replaceAll('\\n', '%0A')\n\t\t\t}</foreignObject></svg>` // ? + (new Date).getTime();\n\t\t\treturn new Promise(re=> {img.onload = ()=> re(img)});\n\t\t})\n\t\t.then(img=> new Promise(re=> setTimeout(()=> re(img) , 100)))\n\t\t\t// 無くすとSafariでテクスチャ取れない場合があった\n\t\t\t// clearTimeout()不要と判断\n\t\t.then((img: any)=> {\t//console.log(`🍉 toPng`);\n\t\t\tconst canvas = document.createElement('canvas');\n\t\t\tcanvas.width = infTL.$width;\n\t\t\tcanvas.height = infTL.$height;\n\t\t\tcanvas.getContext('2d')!.drawImage(img, 0, 0);\n\t\t\tfnc(Texture.from(canvas));\n\t\t})\n\t\t.catch((e: unknown)=> DebugMng.myTrace(`goTxt() = ${e}`));\n\t}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/restrict-plus-operands */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2019-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, type IEvtMng, argChk_Boolean, argChk_Num} from './CmnLib';\nimport type {HArg} from './Grammar';\nimport type {Config} from './Config';\nimport {CmnTween} from './CmnTween';\nimport {SpritesMng} from './SpritesMng';\nimport {DebugMng} from './DebugMng';\nimport type {IMakeDesignCast} from './LayerMng';\n//import {TxtLayDesignCast, TxtLayPadDesignCast} from './DesignCast';\nimport type {SysBase} from './SysBase';\nimport type {T_RP_Hyphenation, IChRect} from './Hyphenation';\nimport {Hyphenation} from './Hyphenation';\nimport {type ScriptIterator, RPN_COMP_CHIN} from './ScriptIterator';\nimport {Reading} from './Reading';\nimport {htm2tx} from './htm2tx';\n\nimport {Container, Sprite, Graphics, Rectangle, Renderer, Application} from 'pixi.js';\nimport {Tween} from '@tweenjs/tween.js'\n\n\nexport type T_InfTxLay = {\n\tfontsize\t: number;\n\t$width\t\t: number;\t// レイヤサイズであり、背景色(画像)サイズ\n\t$height\t\t: number;\n\tpad_left\t: number;\t// paddingLeft(レイヤサイズの内側のスペーサー)\n\tpad_right\t: number;\t// paddingRight\n\tpad_top\t\t: number;\t// paddingTop\n\tpad_bottom\t: number;\t// paddingBottom\n}\n\ntype T_SpTw = {\n\tsp\t: Container;\n\ttw\t: Tween<Container> | undefined;\n}\n\n\nexport type T_RP_layTxtStage = {\n\tinfTL\t\t: T_InfTxLay;\n\tcssText\t\t: string;\n\tleft\t\t: number;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tch_filter\t: any[];\n\tfi_easing\t: string;\n\tfo_easing\t: string;\n\thyph\t\t: T_RP_Hyphenation;\n}\n\ntype T_ChInOutStyle = {\n\twait\t: number;\n\talpha\t: number;\n\tx\t\t: string;\n\ty\t\t: string;\n\twidth?\t: string;\n\theight?\t: string;\n\tnx\t\t: number;\n\tny\t\t: number;\n\tscale_x\t: number;\n\tscale_y\t: number;\n\trotate\t: number;\n\tjoin\t: boolean;\n\tease\t: string;\n\tdelay?\t: number;\n};\n\nexport class TxtStage extends Container {\n\tstatic\t#cfg\t: Config;\n\tstatic\t#appPixi: Application;\n\tstatic\tinit(cfg: Config, appPixi: Application): void {\n\t\tTxtStage.#cfg = cfg;\n\t\tTxtStage.#appPixi = appPixi;\n\t}\n\tstatic\t#evtMng\t: IEvtMng;\n\tstatic\t#scrItr\t: ScriptIterator;\n\tstatic\tsetEvtMng(evtMng: IEvtMng, scrItr: ScriptIterator) {\n\t\tTxtStage.#evtMng = evtMng;\n\t\tTxtStage.#scrItr = scrItr;\n\t}\n\n\tstatic\tdestroy() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tTxtStage.#hChInStyle\t= Object.create(null);\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tTxtStage.#hChOutStyle\t= Object.create(null);\n\n\t\tTxtStage.delBreak();\n\t}\n\n\n\t\t\t\t#htmTxt\t= document.createElement('span');\t// サンプリング元\n\treadonly\t#cntTxt\t\t\t= new Container;\t\t\t// サンプリング先\n\treadonly\t#grpDbgMasume\t= new Graphics;\n\tstatic\treadonly\t#hWarnStyle = {\n\t\t'background-color'\t\t: 0,\n\t\t'border-bottom-width'\t: 0,\n\t\t'border-left-width'\t\t: 0,\n\t\t'border-right-width'\t: 0,\n\t\t'border-top-width'\t\t: 0,\n\t\t'margin-bottom'\t: 0,\n\t\t'margin-left'\t: 0,\n\t\t'margin-right'\t: 0,\n\t\t'margin-top'\t: 0,\n\t};\n\n\n\t#hyph\t= new Hyphenation;\n\tnoticeCompTxt\t= ()=> { /* empty */ };\n\n\t#fncMasume;\n\n\n\tconstructor(private readonly ctn: Sprite, private readonly canFocus: ()=> boolean, private readonly sys: SysBase) {\n\t\tsuper();\n\n\t\tthis.#htmTxt.classList.add('sn_tx');\n\t\tthis.#htmTxt.style.position = 'absolute';\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tTxtStage.#appPixi.view.parentElement!.appendChild(this.#htmTxt);\n\n\t\tthis.addChild(this.#cntTxt);\n\n\t\tthis.addChild(this.#grpDbgMasume);\n\t\tthis.#grpDbgMasume.name = 'grpDbgMasume';\n\t\tconst fncMasumeLog = CmnLib.debugLog\n\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\t? ({ch, rect: {x, y, width, height}}: IChRect)=> console.log(`🍌 masume ch:${ch} x:${x} y:${y} w:${width} h:${height}`)\n\t\t\t: ()=> { /* empty */ };\n\t\tthis.#fncMasume = TxtStage.#cfg.oCfg.debug.masume\n\t\t\t? (cr: IChRect)=> {\n\t\t\t\tfncMasumeLog(cr);\n\n\t\t\t\tconst {x, y, width, height} = cr.rect;\n\t\t\t\tthis.#grpDbgMasume\n\t\t\t\t.beginFill(0x66CCFF, 0.5)\n\t\t\t\t.lineStyle(2, 0xFF3300, 1)\n\t\t\t\t.drawRect(x, y, width, height)\n\t\t\t\t.endFill();\n\t\t\t}\n\t\t\t: ()=> { /* empty */ };\n\n//\t\tthis.#idc = new TxtLayDesignCast(ctn, this);\n//\t\tthis.#idc.adopt(this.#idcCh);\n\n\t\tthis.noticeCompTxt = sys.isApp && TxtStage.#cfg.oCfg.debug.dumpHtm\n\t\t? ()=> {\n\t\t\tReading.notifyEndProc(RPN_COMP_CHIN);\n\n\t\t\tconst htm = this.#htmTxt.innerHTML;\n\t\t\tif (htm === '') return;\n\t\t\tconst {fn, ln} = TxtStage.#scrItr.nowScrFnLn();\n\t\t\tconst id = `dumpHtm ${\n\t\t\t\tctn.name.slice(0, -7)\t// 末尾「 page=B」削り\n\t\t\t\t.replaceAll(':', '=')\t\t\t// ファイル名で困る文字\n\t\t\t}(fn=${fn} line=${String(ln)})`;\n\t\t\tvoid sys.outputFile(\n\t\t\t\tsys.path_downloads + id +'.htm',\n`<!doctype html><html><head><meta charset=utf-8><title>${id}</title>\n<h1>${id}</h1>${\n\thtm\t// outerHTML からのレイヤ再現などしたいとこだがオーバースペック\n\t.replaceAll(/ class=\"sn_ch\"|animation-delay: \\d+ms; ?| data-add=\"{"ch_in_style":"default", "ch_out_style":"default"}\"/g, '')\n\t.replaceAll(' style=\"\"', '')\t// chromeで警告が出るので\n\t.replaceAll(/(<\\/?ruby>)/g, '\\n$1\\n')\n\t.replaceAll(/<(br|\\/span)>/g, '<$1>\\n')\n}`,\n\t\t\t);\n\t\t}\n\t\t: ()=> Reading.notifyEndProc(RPN_COMP_CHIN);\n\t}\n\n//\treadonly\t#idc\t:TxtLayDesignCast;\n//\treadonly\t#idcCh\t= new TxtLayPadDesignCast(this);\n\t#infTL :T_InfTxLay = {\n\t\tfontsize\t: 24,\n\t\t$width\t\t: 0,\t// レイヤサイズであり、背景色(画像)サイズ\n\t\t$height\t\t: 0,\n\t\tpad_left\t: 0,\t// paddingLeft(レイヤサイズの内側のスペーサー)\n\t\tpad_right\t: 0,\t// paddingRight\n\t\tpad_top\t\t: 0,\t// paddingTop\n\t\tpad_bottom\t: 0,\t// paddingBottom\n\t}\n\n\tlay(hArg: HArg) {\n\t\tconst s = this.#htmTxt.style;\n\t\tif ('style' in hArg) {\n\t\t\tif (hArg.style) {\n\t\t\t\tconst cln = document.createElement('span');\n\t\t\t\tcln.style.cssText = hArg.style;\n\t\t\t\tconst len = cln.style.length;\n\t\t\t\tfor (let i=0; i<len; ++i) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\t\tconst key: any = cln.style[i];\n\t\t\t\t\tif (key in TxtStage.#hWarnStyle) {\n\t\t\t\t\t\tDebugMng.myTrace(`${String(key)}は指定できません`, 'W');\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\ts[key] = cln.style[key]!;\n\t\t\t\t}\n\t\t\t\tif (! cln.style.opacity && 'alpha' in hArg) s.opacity = String(this.ctn.alpha);\n\t\t\t}\n\t\t\telse this.#htmTxt.style.cssText = '';\n\t\t}\n\t\telse if ('alpha' in hArg) s.opacity = String(this.ctn.alpha);\n\n\t\tif ('width' in hArg) s.width = String(hArg.width ?? '0') +'px';\n\t\tif ('height' in hArg) s.height = String(hArg.height ?? '0') +'px';\n\t\tif ('pl' in hArg) s.paddingLeft = String(hArg.pl ?? '0') +'px';\n\t\tif ('pr' in hArg) s.paddingRight = String(hArg.pr ?? '0') +'px';\n\t\tif ('pt' in hArg) s.paddingTop = String(hArg.pt ?? '0') +'px';\n\t\tif ('pb' in hArg) s.paddingBottom = String(hArg.pb ?? '0') +'px';\n\t\tthis.#hyph.lay(hArg);\n\t\tthis.#lay_sub();\n//\t\tthis.#idc.sethArg(hArg);\n\n\t\t// CSS・インラインレイアウトで右や上にはみ出る分の余裕\n\t\tthis.#left = this.ctn.position.x;\n\t\t\t//-(CmnLib.isSafari && !CmnLib.isMobile && this.#isTategaki\n\t\t\t//\t? this.#infTL.pad_left +this.#infTL.pad_right\n\t\t\t//\t: 0);\t// 無効化 2022/02/09\n\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\ts.transformOrigin = `${this.ctn.pivot.x}px ${this.ctn.pivot.y}px`;\n\t\tthis.cvsResize();\n\t\ts.display = this.ctn.visible ?'inline' :'none';\n\n\t\t// パディングキャスト変更時・クリック待ち表示を追従させる(高速再描写)\n\t\tif (':redraw' in hArg && this.#lenHtmTxt > 0) {\n\t\t\tconst aSpan = [\n\t\t\t\tthis.#htmTxt.innerHTML.replaceAll(/(animation-delay: )\\d+ms/g, '$10ms'),\n\t\t\t\t'<span class=\\'sn_ch\\' data-add=\\'{\"ch_in_style\":\"default\"}\\'> </span>',\n\t\t\t];\n\t\t\tthis.#clearText();\t// 消去\n\t\t\tthis.goTxt(aSpan, true);\t// 高速 goTxt()\n\t\t}\n\t}\n\t// oxlint-disable-next-line no-unused-private-class-members\n\t#lh_half\t= 0;\t// 「g」などで下が欠ける問題対策\n\t#lay_sub() {\n\t\tconst s = this.#htmTxt.style;\n\t\tconst fs = parseFloat(s.fontSize || '0');\n\t\tthis.#infTL.fontsize = fs;\n\n\t\tthis.#infTL.pad_left = parseFloat(s.paddingLeft || '0');\n\t\tthis.#infTL.pad_right = parseFloat(s.paddingRight || '0');\n\t\tthis.#infTL.pad_top = parseFloat(s.paddingTop || '0');\n\t\tthis.#infTL.pad_bottom = parseFloat(s.paddingBottom || '0');\n\t\tthis.#infTL.$width = parseFloat(s.width || '0');\n\t\tthis.#infTL.$height = parseFloat(s.height || '0');\n\t\tthis.position.set(this.#infTL.pad_left, this.#infTL.pad_top);\n\n\t\tthis.#isTategaki = s.writingMode === 'vertical-rl';\n\n\t\tthis.#padTx4x = 0;\n\t\tthis.#padTx4y = 0;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\tconst lh = s.lineHeight ?? '0';\n\t\tthis.#lh_half = this.#isTategaki\n\t\t\t? 0\n\t\t\t: (\tlh.endsWith('px')\n\t\t\t\t? parseFloat(lh)\n\t\t\t\t: fs *parseFloat(lh) -fs) /2;\n\t\t\t// globalThis.getComputedStyle(this.htmTxt)がチョイチョイ値を返さないので\n\t}\n\tcvsResize() {\n\t\tconst s = this.#htmTxt.style;\n\t\tconst cvsScale = this.sys.cvsScale;\n\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\ts.left = `${this.sys.ofsLeft4elm +this.#left *cvsScale}px`;\n\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\ts.top = `${this.sys.ofsTop4elm +this.ctn.position.y *cvsScale}px`;\n\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\ts.transform = `rotate(${this.ctn.angle}deg) scale(${this.ctn.scale.x *cvsScale}, ${this.ctn.scale.y *cvsScale})`;\n\n//\t\tthis.#idc.cvsResize();\n//\t\tthis.#idcCh.cvsResize();\n\t}\n\t#left = 0;\n\t#isTategaki = false;\n\tget tategaki() {return this.#isTategaki}\n\t#padTx4x = 0;\n\t#padTx4y = 0;\n\n\tget\tinfTL(): T_InfTxLay {return this.#infTL}\n\tget\tgetWidth() {return this.#infTL.$width}\n\tget\tgetHeight() {return this.#infTL.$height}\n\n\tsetMySize(width: number, height: number) {\n\t\tthis.#infTL.$width = width;\n\t\tthis.#infTL.$height = height;\n\t\tthis.#htmTxt.style.width = String(this.#infTL.$width) +'px';\n\t\tthis.#htmTxt.style.height = String(this.#infTL.$height) +'px';\n\t}\n\n\n\t#aGoTxt\t: (()=> void)[] = [];\t// FIFO実行バッファ\n\tgoTxt(aSpan: string[], instant: boolean) {\n\t\tconst f = ()=> this.#goTxt_Proc(aSpan, instant);\n\t\tif (this.#aGoTxt.push(f) === 1) f();\t// len=1 で実行中を示す\n\t}\n\n\t#aRect\t: IChRect[]\t= [];\n\t#lenHtmTxt = 0;\n\tstatic\treadonly\t#SPAN_LAST = '<span class=\\'sn_ch sn_ch_last\\'> </span>';\n\t#goTxt_Proc(aSpan: string[], instant: boolean) {\n\t\tTxtStage.#cntBreak.visible = false;\n\n\t\tlet begin = this.#aRect.length;\n\t\tlet bkHtm = '';\n\t\tif (begin === 0) {\t// 初回\n\t\t\tif (TxtStage.#cfg.oCfg.debug.masume) {\n\t\t\t\tif (CmnLib.debugLog) console.log(`🍌 masume ${\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\t\t\tthis.name} v:${this.visible} l:${this.x} t:${this.y\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\t\t\t} a:${this.alpha} pl:${this.#infTL.pad_left\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\t\t\t} pr:${this.#infTL.pad_right\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\t\t\t} pt:${this.#infTL.pad_top} pb:${this.#infTL.pad_bottom\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n\t\t\t\t\t} w:${this.#infTL.$width} h:${this.#infTL.$height}`);\n\n\t\t\t\tthis.#grpDbgMasume.clear()\n\t\t\t\t.beginFill(0x33FF00, 0.2)\t// 文字レイヤ\n\t\t\t\t.lineStyle(1, 0x33FF00, 1)\n\t\t\t\t.drawRect(-this.#infTL.pad_left, -this.#infTL.pad_top, this.#infTL.$width, this.#infTL.$height)\n\t\t\t\t\t// 親の親の cntInsidePadding が padding ぶん水平移動してるので引く。\n\t\t\t\t.endFill()\n\n\t\t\t\t.beginFill(0x0033FF, 0.2)\t// cntInsidePadding\n\t\t\t\t.lineStyle(2, 0x0033FF, 1)\n\t\t\t\t.drawRect(0, 0,\n\t\t\t\tthis.#infTL.$width -this.#infTL.pad_left -this.#infTL.pad_right,\n\t\t\t\tthis.#infTL.$height -this.#infTL.pad_top -this.#infTL.pad_bottom)\n\t\t\t\t.endFill();\n\t\t\t}\n\n\t\t\tthis.#htmTxt.innerHTML = [...aSpan].join('').replaceAll(/[\\n\\t]/g, '') +TxtStage.#SPAN_LAST;\t// 末尾改行削除挙動対策\n\n\t\t\tif (! this.#hyph.break_fixed) {\n\t\t\t\tconst sty = globalThis.getComputedStyle(this.#htmTxt);\n\t\t\t\tconst rs = parseFloat(sty.fontSize);\n\t\t\t\tif (this.#isTategaki) {\n\t\t\t\t\tthis.#hyph.break_fixed_left = (this.#infTL.$width -this.#infTL.pad_left -this.#infTL.pad_right -rs *1.5) *this.sys.cvsScale;\n\t\t\t\t\tthis.#hyph.break_fixed_top = 0;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.#hyph.break_fixed_left = 0;\n\t\t\t\t\tthis.#hyph.break_fixed_top = rs /2 *this.sys.cvsScale;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tbkHtm = this.#htmTxt.innerHTML;\n\t\t\t// 末尾改行削除挙動対策\n\t\t\t--begin;\n//console.log(`fn:TxtStage.ts nm=${this.name} begin:${begin} bkHtm=${bkHtm}=`);\n\t\t\tthis.#htmTxt.getElementsByClassName('sn_ch_last').item(0)?.remove();\n\t\t\t\t// 前回の末尾を削除\n\n\t\t\tthis.#htmTxt.querySelectorAll(':scope > br').forEach(e=> e.remove());\t// 前回の禁則処理を一度削除\n\t\t\t\t// :scope - CSS: カスケーディングスタイルシート | MDN https://developer.mozilla.org/ja/docs/Web/CSS/:scope\n\t\t\tthis.#htmTxt.insertAdjacentHTML(\n\t\t\t\t'beforeend',\n\t\t\t\taSpan.slice(this.#lenHtmTxt).join('').replaceAll(/[\\n\\t]/g, '')\n\t\t\t\t+TxtStage.#SPAN_LAST\t// 末尾改行削除挙動対策\n\t\t\t);\n\t\t}\n\t\t\t// 後の禁則処理判定で誤判定するので、innerHTML 時にムダな改行やタブは削除\n\t\t\t// [r]は後述コメントのHTMLタグになってるので問題なし\n\n\t\t// ルビ付き文字に背景指定(style='background:')がある場合、「文字」と「ルビ」と「その二つを含んだ領域」の三つが個別に塗られるが、三つめは背景指定を削除する\n\t\tthis.#htmTxt.querySelectorAll('.sn_ch:has(> ruby)').forEach(v=> {(<HTMLElement>v).style.background = ''});\t// :has直前に空白厳禁\n\n\t\tthis.#lenHtmTxt = aSpan.length;\n//console.log(`fn:TxtStage.ts nm=${this.name} === ==${this.#htmTxt.innerHTML.slice(360)}==`);\n\n\t\t// this.#getChRects()使用準備\n\t\tconst cvsScale = this.sys.cvsScale;\n\t\tconst bcr = this.#htmTxt.getBoundingClientRect();\n\t\tconst sx = bcr.left +this.#infTL.pad_left;\n\t\tconst sy = bcr.top +this.#infTL.pad_top;\n\t\tlet cnvRect :(rng: Range, ch: string)=> Rectangle;\n\t\tif (cvsScale === 1) cnvRect = (rng, ch)=> {\n\t\t\tconst r = rng.getBoundingClientRect();\n\t\t\treturn new Rectangle(\n\t\t\t\tr.left -sx,\n\t\t\t\tr.top -sy,\n\t\t\t\tr.width,\n\t\t\t\tr.height +('gjqy'.includes(ch) ?this.#lh_half :0)\n\t\t\t);\n\t\t};\n\t\telse {\n\t\t\t// Resizeを意識してDOM位置をPIXIに変換\n\t\t\t// transform scale を一時的に変更する手もあるが、ややずれるしDOM影響大\n\t\t\tconst ox = this.sys.ofsPadLeft_Dom2PIXI +bcr.left *(1- cvsScale);\n\t\t\tconst oy = this.sys.ofsPadTop_Dom2PIXI +bcr.top *(1- cvsScale);\n\t\t\tcnvRect = (rng, ch)=> {\n\t\t\t\tconst r = rng.getBoundingClientRect();\n\t\t\t\treturn new Rectangle(\n\t\t\t\t\t(r.left -ox) /cvsScale -sx,\n\t\t\t\t\t(r.top -oy) /cvsScale -sy,\n\t\t\t\t\tr.width /cvsScale,\n\t\t\t\t\t(r.height +('gjqy'.includes(ch) ?this.#lh_half :0)) /cvsScale,\n\t\t\t\t);\n\t\t\t};\n\t\t}\n\n\t\tconst [a, len] = this.#hyph.hyph(this.#htmTxt, cnvRect, this.#isTategaki, begin, bkHtm);\n\t\tthis.#aRect = a;\n\n\t\tconst ease = CmnTween.ease(this.#fi_easing);\n\n\t\tfor (let i=begin; i<len; ++i) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst cr = this.#aRect[i]!;\n\t\t\tconst {elm: {dataset, parentElement}, rect} = cr;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tconst arg = JSON.parse(dataset.arg ?? '{\"delay\": 0}');\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tconst add = JSON.parse(dataset.add ?? '{}');\n\t\t\tconst cis = TxtStage.#hChInStyle[add.ch_in_style];\n\t\t\tthis.#fncMasume(cr);\n\n\t\t\tif (dataset.cmd === 'grp') {\n\t\t\t\tconst cnt = new Container;\t// 親コンテナかまし、即spWork()\n\t\t\t\tthis.#cntTxt.addChild(cnt);\n\t\t\t\t\t// 次のcsv2Spritesが即終わる場合もあるので先に行なう\n\t\t\t\tnew SpritesMng(arg.pic, cnt, sp=> {\n\t\t\t\t\tthis.#spWork(cnt, arg, add, rect, ease, cis ?? {});\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\t\t\tif (! cnt.parent) cnt.removeChild(sp);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (dataset.lnk) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion, @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst eCh = <HTMLElement>parentElement!.closest('[data-arg]')!;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst aLnk = JSON.parse(eCh.dataset.arg ?? '{}');\n\t\t\t\taLnk.key = `lnk=[${String(i)}] `+ this.name;\n\t\t\t\tconst sp = new Sprite;\n\t\t\t\tthis.#spWork(sp, aLnk, add, rect, ease, cis ?? {});\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst st_normal = aLnk.style ?? '';\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst st_hover = st_normal +(aLnk.style_hover ?? '');\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst st_clicked = st_normal +(aLnk.style_clicked ?? '');\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst st_r_normal = aLnk.r_style ?? '';\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst st_r_hover = st_r_normal +(aLnk.r_style_hover ?? '');\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\tconst st_r_clicked = st_r_normal +(aLnk.r_style_clicked ?? '');\n\n\t\t\t\tconst nlRt = Array.from(eCh.getElementsByTagName('rt'));\n\t\t\t\tfor (const e of nlRt) e.dataset.st_r_bk = e.style.cssText;\n\t\t\t\tconst st_bk = eCh.style.cssText;\n\t\t\t\tconst fncStyle = (st: string, st_r: string)=> {\n\t\t\t\t\teCh.style.cssText = st_bk + st;\n\t\t\t\t\tfor (const e of nlRt) e.style.cssText = e.dataset.st_r_bk + st_r;\n\t\t\t\t};\n\n\t\t\t\tconst enabled = argChk_Boolean(aLnk, 'enabled', true);\n\t\t\t\tif (enabled) TxtStage.#evtMng.button(aLnk, sp,\n\t\t\t\t\t()=> fncStyle(st_normal, st_r_normal),\n\t\t\t\t\t()=> {\n\t\t\t\t\t\tif (! this.canFocus()) return false;\n\n\t\t\t\t\t\tfncStyle(st_hover, st_r_hover);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t},\n\t\t\t\t\t()=> fncStyle(st_clicked, st_r_clicked)\n\t\t\t\t);\n\t\t\t\telse fncStyle(\n\t\t\t\t\tst_normal +(aLnk.style_disable ?? 'color: gray;'),\n\t\t\t\t\tst_r_normal +(aLnk.r_style_disable ?? 'color: gray;')\n\t\t\t\t);\n\t\t\t\tthis.#cntTxt.addChild(sp);\n\t\t\t}\n\t\t}\n\n\t\t// 文字出現演出・開始〜終了\n\t\tconst chs = Array.from(<HTMLCollectionOf<HTMLElement>>this.#htmTxt.getElementsByClassName('sn_ch_yet'));\n// console.log(`fn:TxtStage.ts nm=${this.name} StartChIn <==`);\n\t\tthis.#fncEndChIn = ()=> {\n// console.log(`fn:TxtStage.ts nm=${this.name} fncEndChIn ==> '${lastElm?.textContent}' cls:${lastElm?.className}:`);\n\n\t\t\tthis.#fncEndChIn = ()=> false;\n\t\t\tfor (const v of chs) v.className = 'sn_ch';\n\t\t\tTxtStage.#cntBreak.position.set(\n\t\t\t\tthis.#hyph.break_fixed_left,\n\t\t\t\tthis.#hyph.break_fixed_top,\n\t\t\t);\n\t\t\tTxtStage.#cntBreak.visible = true;\n\t\t\t/*\n\t\t\t\tこれらはセットで確認すること。兼ね合いにより、いずれかが破綻する場合がある\n\t\t\t\t\t- 末尾文字表示でカーソルが次行先頭に来てしまうことのないよう\n\t\t\t\t\t- 改行→クリック待ち、の後で改行が消えないよう\n\t\t\t\t\t- 冒頭クリック待ち+改行での表示確認\n\t\t\t*/\n\t\t\tthis.noticeCompTxt();\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst f = this.#aGoTxt.shift()!;\t// 実行中の一個必ず入ってる(clearText注意)\n\t\t\tif (this.#aGoTxt.length > 0) f();\t// まだあれば実行待ちなので実行\n\n\t\t\treturn true;\n\t\t};\n\n\t\t// アニメ開始(sn_ch を置換しないよう注意)\n\t\tfor (const v of chs) v.className = v.className.replace('sn_ch_yet sn', 'go');\n\t\tif (begin > 0) ++begin;\t// 末尾改行削除挙動対策\n\n\t\t// 文字表示に時間をかける最後の文字を探す。末尾はダミー(#SPAN_LAST)\n\t\tlet lastElm: HTMLElement | undefined = undefined;\n\t\tfor (let i=len -2; i>=0; --i) {\t\t// 末尾の手前から\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst {elm} = this.#aRect[i]!;\n\t\t\tif (elm.tagName !== 'SPAN') continue;\t// ルビ以外\n\n//console.log(`fn:TxtStage.ts nm=${this.name} txt:${elm.textContent}: i:${i} begin:${begin} len:${len} elm:%o`, elm);\n\t\t\tlastElm = elm.parentElement?.tagName === 'RUBY'\n\t\t\t\t? elm.parentElement.parentElement ?? elm // [tcy]も[graph]も\n\t\t\t\t: elm;\n\t\t\tbreak;\n\t\t}\n\t\tif (! lastElm || instant || begin === len) {this.#fncEndChIn(); return}\n\t\t\t// 「animation-duration: 0ms;」だと animationend が発生しないので。\n\t\t\t// if 三項目の === は右クリック戻りで起こる\n\n\t\tlastElm.addEventListener('animationend', ()=> this.#fncEndChIn(), {once: true});\t// クリックキャンセル時は発生しない\n\t\t\t// 差し替えるので「()=> 」形式のままにすること\n\t}\n\t#fncEndChIn: ()=> boolean\t= ()=> false;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t#spWork(sp: Container, arg: T_ChInOutStyle, add: any, rct: Rectangle, ease: (k: number)=> number, cis: any) {\n\t\tsp.alpha = 0;\n\t\tif (arg.x) rct.x = arg.x.startsWith('=')\n\t\t\t? rct.x +parseInt(arg.x.slice(1))\n\t\t\t: parseInt(arg.x);\n\t\tif (arg.y) rct.y = arg.y.startsWith('=')\n\t\t\t? rct.y +parseInt(arg.y.slice(1))\n\t\t\t: parseInt(arg.y);\n\t\tif (arg.width) rct.width = parseInt(arg.width);\n\t\tif (arg.height) rct.height = parseInt(arg.height);\n\t\tif (arg.wait) cis.wait = arg.wait;\n\t\tsp.width = rct.width;\n\t\tsp.height = rct.height;\n\t\tif (cis.x) sp.position.set(\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call\n\t\t\tcis.x.startsWith('=') ?rct.x +sp.width *cis.nx :cis.nx,\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call\n\t\t\tcis.y.startsWith('=') ?rct.y +sp.height *cis.ny :cis.ny\n\t\t);\n\t\telse sp.position.set(rct.x, rct.y,);\n\t\tconst st: T_SpTw = {\n\t\t\tsp,\n\t\t\ttw: new Tween(sp)\n\t\t\t.to({ alpha: 1, x: rct.x, y: rct.y, width: rct.width, height: rct.height, angle: 0 }, cis.wait ?? 0)\n\t\t\t.easing(ease)\n\t\t\t.delay((add.wait ?? 0) +(arg.delay ?? 0))\n\t\t\t.onComplete(()=> {\n\t\t\t\tst.tw = undefined;\n\t\t\t\t//(略)\tif (rct.width === 0 || rct.height === 0) return;\n\t\t\t\t//if (sp instanceof Sprite) sp.cacheAsBitmap = true;\n\t\t\t\t// これを有効にすると[snapshot]で文字が出ない\n\t\t\t})\n\t\t\t.start(),\n\t\t};\n\t\tthis.#aSpTw.push(st);\n\t}\n\t#aSpTw\t\t: T_SpTw[]\t= [];\n\n\tskipChIn(): boolean {\t// true: 文字出現中だったので、停止する\n\t\tlet wasChInIng = this.#fncEndChIn();\n\t\tfor (const st of this.#aSpTw) {\t// Text Skip。stop() と end() は別!\n\t\t\tif (st.tw) {st.tw.stop().end(); wasChInIng = true}\n\t\t}\n\t\tthis.#aSpTw = [];\n\t\treturn wasChInIng;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\tstatic\t#hChInStyle: {[nm: string]: T_ChInOutStyle}\t= Object.create(null);\n\tstatic\treadonly\t#REG_NG_CHSTYLE_NAME_CHR\t= /[{\\s.,*{]/;\n\t\t// https://regex101.com/r/APC91I/1\n\tstatic\tinitChStyle() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tTxtStage.#hChInStyle = Object.create(null);\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tTxtStage.#hChOutStyle = Object.create(null);\n\t}\n\tstatic\tgetChInStyle(name: string) {return TxtStage.#hChInStyle[name]}\n\tstatic\tch_in_style(hArg: HArg): T_ChInOutStyle {\n\t\tconst {name} = hArg;\n\t\tif (! name) throw 'nameは必須です';\n\t\tif (TxtStage.#REG_NG_CHSTYLE_NAME_CHR.test(name)) throw `name【${name}】に使えない文字が含まれます`;\n\t\tif (name in TxtStage.#hChInStyle) throw `name【${name}】はすでにあります`;\n\n\t\tconst x = String(hArg.x ?? '=0');\n\t\tconst y = String(hArg.y ?? '=0');\n\t\tconst ret = TxtStage.#hChInStyle[name] = {\n\t\t\twait\t: argChk_Num(hArg, 'wait', 500),\t// アニメ・FI時間\n\t\t\talpha\t: argChk_Num(hArg, 'alpha', 0),\n\t\t\tx,\t// 初期x値\n\t\t\ty,\t// [tsy]と同様に絶対・相対指定可能\n\t\t\t// {x:500}\t\t\tX位置を500に\n\t\t\t// {x:'=500'}\t\t現在のX位置に+500加算した位置\n\t\t\t// {x:'=-500'}\t\t現在のX位置に-500加算した位置\n\t\t\t// {x:'250,500'}\t+250から+500までの間でランダムな値をX位置に\n\t\t\t// {x:'=250,500'}\t+250から+500までの間でランダムな値を現在のX位置に加算\n\t\t\tnx\t\t: parseFloat(x.at(0) === '=' ? x.slice(1) : x),\n\t\t\tny\t\t: parseFloat(y.at(0) === '=' ? y.slice(1) : y),\n\t\t\tscale_x\t: argChk_Num(hArg, 'scale_x', 1),\n\t\t\tscale_y\t: argChk_Num(hArg, 'scale_y', 1),\n\t\t\trotate\t: argChk_Num(hArg, 'rotate', 0),\n\t\t\tjoin\t: argChk_Boolean(hArg, 'join', true),\n\t\t\t\t\t\t// 文字を順番に出すか(true)同時か(false)\n\t\t\tease\t: hArg.ease ?? 'ease-out',\n\t\t};\n\t\treturn ret;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\tstatic\t#hChOutStyle: {[nm: string]: T_ChInOutStyle}= Object.create(null);\n\tstatic\tgetChOutStyle(name: string) {return TxtStage.#hChOutStyle[name]}\n\tstatic\tch_out_style(hArg: HArg): T_ChInOutStyle {\n\t\tconst {name} = hArg;\n\t\tif (! name) throw 'nameは必須です';\n\t\tif (TxtStage.#REG_NG_CHSTYLE_NAME_CHR.test(name)) throw `name【${name}】に使えない文字が含まれます`;\n\t\tif (name in TxtStage.#hChOutStyle) throw `name【${name}】はすでにあります`;\n\n\t\tconst x = String(hArg.x ?? '=0');\n\t\tconst y = String(hArg.y ?? '=0');\n\t\tconst ret = TxtStage.#hChOutStyle[name] = {\n\t\t\twait\t: argChk_Num(hArg, 'wait', 500),\t// アニメ・FI時間\n\t\t\talpha\t: argChk_Num(hArg, 'alpha', 0),\n\t\t\tx,\t// 初期x値\n\t\t\ty,\t// [tsy]と同様に絶対・相対指定可能\n\t\t\t// {x:500}\t\t\tX位置を500に\n\t\t\t// {x:'=500'}\t\t現在のX位置に+500加算した位置\n\t\t\t// {x:'=-500'}\t\t現在のX位置に-500加算した位置\n\t\t\t// {x:'250,500'}\t+250から+500までの間でランダムな値をX位置に\n\t\t\t// {x:'=250,500'}\t+250から+500までの間でランダムな値を現在のX位置に加算\n\t\t\tnx\t\t: parseFloat(x.at(0) === '=' ? x.slice(1) : x),\n\t\t\tny\t\t: parseFloat(y.at(0) === '=' ? y.slice(1) : y),\n\t\t\tscale_x\t: argChk_Num(hArg, 'scale_x', 1),\n\t\t\tscale_y\t: argChk_Num(hArg, 'scale_y', 1),\n\t\t\trotate\t: argChk_Num(hArg, 'rotate', 0),\n\t\t\tjoin\t: argChk_Boolean(hArg, 'join', false),\n\t\t\t\t\t\t// 文字を順番に出すか(true)同時か(false)\n\t\t\tease\t: hArg.ease ?? 'ease-out',\n\t\t};\n\t\treturn ret;\n\t}\n\n\tstatic\treadonly\t#cntBreak\t= new Container;\n\tstatic\t\t\t\t#spsBreak\t= new SpritesMng;\n\tdispBreak(o: HArg) {\n\t\tTxtStage.delBreak();\n\n\t\tconst cnt = TxtStage.#cntBreak;\n\t\tcnt.visible = false;\n\t\tthis.addChild(cnt);\t// 次のcsv2Spritesが即終わる場合もあるので先に行なう\n\t\tTxtStage.#spsBreak.destroy();\n\t\tTxtStage.#spsBreak = new SpritesMng(o.pic, cnt, sp=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\tif (cnt.parent) {\n\t\t\t\tsp.x = argChk_Num(o, 'x', 0);\n\t\t\t\tsp.y = argChk_Num(o, 'y', 0);\n\t\t\t\tsp.width = argChk_Num(o, 'width', this.#infTL.fontsize);\n\t\t\t\tsp.height = argChk_Num(o, 'height', this.#infTL.fontsize);\n\t\t\t}\n\t\t\telse cnt.removeChild(sp);\n\t\t});\n\t}\n\tstatic\tdelBreak() {\n\t\tconst cnt = TxtStage.#cntBreak;\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\tcnt.parent?.removeChild(cnt);\t// 複数メッセージウインドウを想定\n\t\tTxtStage.#spsBreak.destroy();\n\t}\n\n\t#fi_easing\t= 'Quadratic.Out';\n\t#fo_easing\t= 'Quadratic.Out';\n\t#clearText() {\n\t\tthis.#grpDbgMasume.clear();\n\t\tthis.#aRect = [];\n\t\tthis.#lenHtmTxt = 0;\n\t\tthis.#aGoTxt = [];\n\n\t\t//utils.clearTextureCache();\t// 改ページと思われるこのタイミングで\n\t\tthis.skipChIn();\n\t\tconst n = <HTMLSpanElement>this.#htmTxt.cloneNode(true);\n\t\t//this.htmTxt.innerHTML = '';\t\t以下の方が早いらしい\n\t\tn.textContent = '';\n\t\tconst old = this.#htmTxt;\n\t\tconst a = Array.from(<HTMLCollectionOf<HTMLElement>>old.getElementsByClassName('sn_ch'));\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\told.parentElement!.insertBefore(n, old);\n\n\t\tlet sum_wait = 0;\n\t\ta.forEach(elm=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tconst add = JSON.parse(\n\t\t\t\telm.dataset.add ??\t\t\t\t// 通常文字\n\t\t\t\telm.children[0]?.getAttribute('data-add') ??\t// ルビ\n\t\t\t\telm.children[0]?.children[0]\n\t\t\t\t\t?.getAttribute('data-add') ?? '{}'\t\t// 縦中横\n\t\t\t);\n\t\t\tif (! add.ch_out_style) return;\n\n\t\t\tconst cos = TxtStage.#hChOutStyle[add.ch_out_style];\n\t\t\tif (! cos) return;\n\t\t\tif (cos.wait === 0) {elm.style.display = 'none'; return}\n\n\t\t\tsum_wait += cos.wait;\n\t\t\tif (! cos.join) elm.style.animationDelay = '0ms';\n\t\t\telm.classList.add(`go_ch_out_${String(add.ch_out_style)}`);\n\t\t});\n\n\t\tconst end = ()=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\told.parentElement!.removeChild(old);\n\t\t\tfor (const c of this.#cntTxt.removeChildren()) {\n\t\t\t\tif (c instanceof Container) TxtStage.#evtMng.unButton(c);\n\t\t\t\tc.destroy();\n\t\t\t}\n\t\t};\n\t\tif (sum_wait === 0) {this.#htmTxt.textContent = ''; end()}\n\t\telse old.lastElementChild?.addEventListener('animationend', end, {once: true});\n\n\t\tthis.#htmTxt = n;\n\n\t\t//this.#hyph.clear();\t// クリアはしない\n\t}\n\treNew(): TxtStage {\n\t\tthis.#clearText();\n\n\t\tconst to = new TxtStage(this.ctn, ()=> this.canFocus(), this.sys);\n\t\tto.#infTL = this.#infTL;\n\t\tto.#htmTxt.style.cssText = this.#htmTxt.style.cssText;\n\t\tto.#left = this.#left;\n\t\tto.name = this.name;\n\t\tto.#lay_sub();\n//\t\tto.#idc.sethArg(this.#idc.gethArg());\n\n\t\tto.#ch_filter = this.#ch_filter;\n\t\tto.#fi_easing = this.#fi_easing;\n\t\tto.#fo_easing = this.#fo_easing;\n\n\t\tthis.#hyph.reNew(to.#hyph);\n\n\t\tthis.destroy();\n\n\t\treturn to;\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t#ch_filter\t: any[] | undefined = undefined;\t// 文字にかけるフィルター\n\n\n\trecord() {return {\n\t\tinfTL\t\t: this.#infTL,\n\n\t\tcssText\t\t: this.#htmTxt.style.cssText,\n\t\tleft\t\t: this.#left,\n//\t\tidc_hArg\t: this.#idc.gethArg(),\n\n\t\tch_filter\t: this.#ch_filter,\n\t\tfi_easing\t: this.#fi_easing,\n\t\tfo_easing\t: this.#fo_easing,\n\n\t\thyph\t\t: this.#hyph.record(),\n\t}}\n\tplayback(hLay: T_RP_layTxtStage) {\n\t\tthis.#infTL = hLay.infTL;\n\t\tthis.position.set(this.#infTL.pad_left, this.#infTL.pad_top);\n\n\t\tthis.#htmTxt.style.cssText = hLay.cssText;\n\t\tthis.#left = hLay.left;\n\t\tthis.#lay_sub();\n//\t\tthis.#idc.sethArg(hLay.idc_hArg);\n\n\t\tthis.#ch_filter\t= hLay.ch_filter;\n\t\tthis.#fi_easing\t= hLay.fi_easing;\n\t\tthis.#fo_easing\t= hLay.fo_easing;\n\n\t\tthis.#hyph.playback(hLay.hyph);\n\t}\n\n\tget cssText() {return this.#htmTxt.style.cssText}\n\tset cssText(ct: string) {this.#htmTxt.style.cssText = ct}\n\n\t#sss :Sprite | undefined = undefined;\n\tsnapshot(rnd: Renderer, re: ()=> void) {\n\t\thtm2tx(tx=> {\n\t\t\tthis.#sss = Sprite.from(tx);\t// Safariだけ文字影が映らない\n\t\t\tif (this.#isTategaki) {\n\t\t\t\tthis.#sss.x += CmnLib.stageW -(this.#left +this.#infTL.$width)\n\t\t\t\t//- ((CmnLib.isSafari && !CmnLib.isMobile)\t// 無効化 2022/02/09\n\t\t\t\t//\t? 0\n\t\t\t\t//\t: this.#infTL.pad_left +this.#infTL.pad_right);\n\t\t\t}\n\t\t\tthis.#sss.y -= this.#padTx4y;\n\t\t\tthis.#sss.texture.frame = new Rectangle(\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\tMath.min(this.#sss.width, this.#infTL.$width -this.#left),\n\t\t\t\tMath.min(this.#sss.height, this.#infTL.$height),\n\t\t\t);\t// これがないと画面サイズを超える\n\t\t\tthis.#cntTxt.addChild(this.#sss);\n\t\t\trnd.render(this.#sss, {clear: false});\n\t\t\tre();\n\t\t}, this.#htmTxt, this.#infTL, this.#padTx4x, this.#padTx4y, false);\n\t}\n\tsnapshot_end() {\n\t\tif (! this.#sss) return;\n\t\tthis.#cntTxt.removeChild(this.#sss);\n\t\tthis.#sss = undefined;\n\t}\n\n\tmakeDesignCast(_gdc: IMakeDesignCast) {\n//\tmakeDesignCast(gdc: IMakeDesignCast) {\n//\t\tgdc(this.#idc);\n\n//\t\tconst o = this.#idc.gethArg();\n//\t\tthis.#idcCh.sethArg({...o, ':id_dc': o[':id_tag'] +'_pad'});\n//\t\tgdc(this.#idcCh);\n\t}\n\tshowDesignCast() { /* empty */ }\n//\tshowDesignCast() {this.#idc.visible = true; this.#idcCh.visible = true}\n\n\tdump(): string {\n\t\tconst aStyle: string[] = [];\n\t\tconst s = this.#htmTxt.style;\n\t\tconst len = s.length;\n\t\tfor (let i=0; i<len; ++i) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tconst key: any = s[i];\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\taStyle.push(`\"${String(key)}\":\"${s[key]!.replaceAll(/([\"\\\\])/g, '\\\\$1')}\"`);\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion, @typescript-eslint/no-non-null-assertion\n\t\treturn `\"txt\":\"${this.#htmTxt.textContent!.replaceAll(/([\"\\\\])/g, '\\\\$1')\n\t\t}\", \"style\":{${aStyle.join(',')}}`;\n\t\t\t// 4Debug。++カウンターし、dump表示させても良さげ\n\t}\n\n\toverride destroy() {\n\t\tTxtStage.delBreak();\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tthis.#htmTxt.parentElement!.removeChild(this.#htmTxt);\n\t\tthis.removeChild(this.#cntTxt);\n\t\tthis.removeChild(this.#grpDbgMasume);\n\t\tsuper.destroy();\n\t}\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {uint, type IEvtMng, argChk_Boolean, argChk_Num, mesErrJSON} from './CmnLib';\nimport type {HArg} from './Grammar';\nimport {SpritesMng} from './SpritesMng';\nimport {Layer} from './Layer';\nimport type {Config} from './Config';\nimport type {IMakeDesignCast} from './LayerMng';\n//import {DesignCast, TxtBtnDesignCast, PicBtnDesignCast} from './DesignCast';\n\nimport {Container, Text, Rectangle, Texture, TextStyle, type Sprite, Graphics} from 'pixi.js';\n\n\nexport class Button extends Container {\n\tstatic\tfontFamily\t= '\\'Hiragino Sans\\', \\'Hiragino Kaku Gothic ProN\\', \\'游ゴシック Medium\\', meiryo, sans-serif';\n\tstatic\t#procMasume4txt = (_me: Button, _txt: Text)=> { /* empty */ };\n\tstatic\t#procMasume4pic = (_me: Button, _sp: Sprite, _w3: number, _h: number)=> { /* empty */ };\n\tstatic\tinit(cfg: Config) {\n\t\tif (! cfg.oCfg.debug.masume) return;\n\n\t\tButton.#procMasume4txt = (me, txt)=> me.addChild(\n\t\t\t(new Graphics)\n\t\t\t.beginFill(0x883388, 0.2)\n\t\t\t.lineStyle(1, 0x883388, 1)\n\t\t\t.drawRect(txt.x, txt.y, txt.width, txt.height)\n\t\t\t.endFill()\n\t\t);\n\t\tButton.#procMasume4pic = (me, sp, w3, h)=> me.addChild(\n\t\t\t(new Graphics)\n\t\t\t.beginFill(0x883388, 0.2)\n\t\t\t.lineStyle(1, 0x883388, 1)\n\t\t\t.drawRect(sp.x, sp.y, w3, h)\n\t\t\t.endFill()\n\t\t);\n\t}\n\n\tsetText(_text: string) { /* empty */ }\n\tgetBtnBounds = ()=> this.#rctBtnTxt;\n\t\t// 文字ボタンは背景画像を含まない位置指定なので、その当たり判定用\n\t#rctBtnTxt\t= new Rectangle;\n\n\t#sps\t\t= new SpritesMng;\n\n//\t#idc\t\t: DesignCast;\n\treadonly\t#o\t: {\n\t\ttype\t: 'pic'|'text';\n\t\tenabled\t: boolean;\n\t\tx\t\t: number;\n\t\ty\t\t: number;\n\t\trotation: number;\n\t\t\t// flash : rotation is in degrees.\n\t\t\t// pixijs: rotation is in radians, angle is in degrees.\n\t\tpivot_x\t: number;\n\t\tpivot_y\t: number;\n\t\tscale_x\t: number;\n\t\tscale_y\t: number;\n\t\talpha\t: number;\n\t\ttext\t: string;\n\t\tb_pic\t: string;\n\t\twidth\t: number;\n\t\theight\t: number;\n\t};\n\n\tconstructor(private readonly hArg: HArg, readonly evtMng: IEvtMng, readonly resolve: ()=> void, private readonly canFocus: ()=> boolean) {\n\t\tsuper();\n/*\n\t\tif (CmnLib.isDbg) {\n\t\t\tthis.makeDesignCast = gdc=> gdc(this.#idc);\n\t\t\tthis.cvsResize = ()=> this.#idc.cvsResize();\n\t\t}\n*/\n\t\tthis.#o = {\n\t\t\ttype\t: 'pic',\n\t\t\tenabled\t: argChk_Boolean(hArg, 'enabled', true),\n\t\t\tx\t\t: this.x = uint(hArg.left ?? 0),\n\t\t\ty\t\t: this.y = uint(hArg.top ?? 0),\n\t\t\trotation: this.angle = argChk_Num(hArg, 'rotation', this.angle),\n\t\t\t\t// flash : rotation is in degrees.\n\t\t\t\t// pixijs: rotation is in radians, angle is in degrees.\n\t\t\tpivot_x\t: this.pivot.x = argChk_Num(hArg, 'pivot_x', this.pivot.x),\n\t\t\tpivot_y\t: this.pivot.y = argChk_Num(hArg, 'pivot_y', this.pivot.y),\n\t\t\tscale_x\t: this.scale.x = argChk_Num(hArg, 'scale_x', this.scale.x),\n\t\t\tscale_y\t: this.scale.y = argChk_Num(hArg, 'scale_y', this.scale.y),\n\t\t\talpha\t: 1,\n\t\t\ttext\t: '',\n\t\t\tb_pic\t: '',\n\t\t\twidth\t: 0,\n\t\t\theight\t: 0,\n\t\t};\n\t\tthis.getBtnBounds = ()=> {\n\t\t\tthis.#rctBtnTxt.x = this.#o.x;\n\t\t\tthis.#rctBtnTxt.y = this.#o.y;\n\t\t\treturn this.#rctBtnTxt;\n\t\t};\n\n\t\tif (this.#o.enabled) evtMng.button(hArg, this, ()=> this.normal(), ()=> this.#hover(), ()=> this.#clicked());\t// あとで差し替えるのでアロー必須\n\n\t\t// == 画像から生成\n\t\tif (hArg.pic) {\n\t\t\tthis.#o.type = 'pic';\t// dump用\n\t\t\t// this.#idc = new PicBtnDesignCast(this, hArg);\n\n\t\t\tthis.#sps = new SpritesMng(\n\t\t\t\thArg.pic,\n\t\t\t\tthis,\n\t\t\t\tsp=> {\n\t\t\t\t\tthis.#loaded_pic(sp);\n\t\t\t\t\tthis.#rctBtnTxt.width = sp.width * this.#o.scale_x;\n\t\t\t\t\tthis.#rctBtnTxt.height = sp.height * this.#o.scale_y;\n\t\t\t\t},\n\t\t\t\t_isStop=> resolve(),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tif (! hArg.text) throw 'textまたはpic属性は必須です';\n\n\t\t// == 文字列から生成\n\t\tconst height = argChk_Num(hArg, 'height', 30);\n\t\tconst style = new TextStyle({\n\t\t\talign\t\t: 'center',\n\t\t\tdropShadow\t: true,\n\t\t\tdropShadowAlpha\t: 0.7,\n\t\t\tdropShadowColor\t: 'white',\n\t\t\tdropShadowBlur\t: 7,\n\t\t\tdropShadowDistance\t: 0,\n\t\t\tfill\t\t: this.#o.enabled ?'black' :'gray',\n\t\t\tfontFamily\t: Button.fontFamily,\n\t\t\tfontSize\t: height,\n\t\t\tpadding\t\t: 5,\n\t\t});\n\t\tif (hArg.style) try {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tconst o = JSON.parse(hArg.style);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t\tfor (const [nm, v] of Object.entries(o)) (<any>style)[nm] = v;\n\t\t//\tstyle = {...style, ...JSON.parse(hArg.style)};\t// 上手くいかない\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tthis.#o = {...this.#o, ...o};\n\t\t} catch (e) {\n\t\t\tif (e instanceof SyntaxError) throw new Error(mesErrJSON(hArg, 'style', e.message));\n\t\t\telse throw 'fn:Button.ts style';\n\t\t}\n\n\t\tconst txt = new Text(hArg.text ?? '', style);\n\t\ttxt.alpha = argChk_Num(hArg, 'alpha', txt.alpha);\t// 上にまとめない\n\t\ttxt.width = argChk_Num(hArg, 'width', 100);\n\t\ttxt.height = hArg.height = height;\n\t\tthis.setText = text=> {txt.text = text};\n\n\t\tthis.#o = {...this.#o,\n\t\t\ttype\t: 'text',\t// dump用\n\t\t\talpha\t: txt.alpha,\n\t\t\ttext\t: txt.text,\n\t\t\twidth\t: txt.width,\n\t\t\theight\t: txt.height,\n\t\t};\n//\t\tthis.#idc = new TxtBtnDesignCast(this, hArg, txt);\n\n\t\tlet isStop = false;\n\t\tthis.#o.width = this.width;\n\t\tthis.#o.height = this.height;\n\t\tif (hArg.b_pic) {\n\t\t\tthis.#o.b_pic = hArg.b_pic;\n\t\t\tthis.#sps = new SpritesMng(\n\t\t\t\thArg.b_pic,\n\t\t\t\tthis,\n\t\t\t\tsp=> {\n\t\t\t\t\tthis.#loaded_b_pic(sp, txt);\n\t\t\t\t\tthis.#o.width = this.width;\n\t\t\t\t\tthis.#o.height = this.height;\n\t\t\t\t\ttxt.name = JSON.stringify(this.#o);\n\t\t\t\t},\n\t\t\t\tisStop=> {\n\t\t\t\t\tLayer.setBlendmode(this, hArg);\n\t\t\t\t\tif (isStop) resolve();\n\t\t\t\t},\n\t\t\t);\n\t\t\tisStop = this.#sps.ret;\n\t\t}\n\t\ttxt.name = JSON.stringify(this.#o);\n\n\t\tthis.addChild(txt);\n\t\tthis.#rctBtnTxt.width = txt.width;\t// addChild()後に取得すること\n\t\tthis.#rctBtnTxt.height = txt.height;\n\t//x\tthis.#rctBtnTxt = txt.getBounds();\t// 上手くいかない\n\n\t\tif (! hArg.b_pic) Layer.setBlendmode(this, hArg);\t// 重なり順でここ\n\t\tButton.#procMasume4txt(this, txt);\n\t\tif (! this.#o.enabled) {if (! isStop) resolve(); return}\n\n\t\tconst style_hover = style.clone();\n\t\tif (hArg.style_hover) try {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tconst o = JSON.parse(hArg.style_hover);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\t\tfor (const [nm, v] of Object.entries(o)) (<any>style_hover)[nm] = v;\n\t\t} catch (e) {\n\t\t\tif (e instanceof SyntaxError) throw new Error(mesErrJSON(hArg, 'style_hover', e.message));\n\t\t\telse throw 'fn:Button.ts style_hover';\n\t\t}\n\t\telse style_hover.fill = 'white';\n\n\t\tconst style_clicked = style_hover.clone();\n\t\tif (hArg.style_clicked) try {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\tconst o = JSON.parse(hArg.style_clicked);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\t\tfor (const [nm, v] of Object.entries(o)) (<any>style_clicked)[nm] = v;\n\t\t} catch (e) {\n\t\t\tif (e instanceof SyntaxError) throw new Error(mesErrJSON(hArg, 'style_clicked', e.message));\n\t\t\telse throw 'fn:Button.ts style_clicked';\n\t\t}\n\t\telse style_clicked.dropShadow = false;\n\n\t\tthis.normal = ()=> {txt.style = style};\n\t\tthis.#hover = ()=> {\n\t\t\tif (! canFocus()) return false;\n\t\t\ttxt.style = style_hover;\n\t\t\treturn true;\n\t\t};\n\t\tthis.#clicked = ()=> {txt.style = style_clicked};\n\n\t\tif (! isStop) resolve();\n\t}\n\n\toverride\tdestroy(): void {\n\t\tthis.evtMng.unButton(this);\n\t\tthis.#sps.destroy();\n\t\tsuper.destroy();\n\t}\n\n\tmakeDesignCast(_gdc: IMakeDesignCast) { /* empty */ }\n\tshowDesignCast() { /* empty */ }\n//\tshowDesignCast() {this.#idc.visible = true}\n\tcvsResize() { /* empty */ }\n\n\t#loaded_b_pic(sp: Sprite, txt: Text) {\n\t\tthis.setChildIndex(sp, 0);\n\t\tsp.alpha = txt.alpha;\n\t\tsp.setTransform(\n\t\t\ttxt.x, txt.y,\n\t\t\t1, 1, txt.rotation, 0, 0,\n\t\t\t(sp.width -txt.width) /2,\n\t\t\t(sp.height -txt.height) /2,\n\t\t);\n\n\t\tsp.name = txt.name;\n\t}\n\n\tnormal\t\t: ()=> void\t\t= ()=> { /* empty */ };\n\t#hover\t\t: ()=> boolean\t= ()=> false;\n\t#clicked\t: ()=> void\t\t= ()=> { /* empty */ };\n\t#loaded_pic(sp: Sprite) {\n\t\tthis.#o.alpha = sp.alpha = argChk_Num(this.hArg, 'alpha', sp.alpha);\n//\t\t(this.#idc as PicBtnDesignCast).setSp(sp);\n\n\t\tconst w_3 = sp.width /3;\n\t\tconst w = this.#o.enabled ?w_3 :sp.width;\n\t\tconst h = sp.height;\n\t\tconst tx = sp.texture.baseTexture;\n\t\tconst txNormal = new Texture(tx, new Rectangle(0, 0, w_3, h));\n\t\tconst txClicked = new Texture(tx, new Rectangle(w_3, 0, w_3, h));\n\t\tconst txHover = new Texture(tx, new Rectangle(w_3 *2, 0, w_3, h));\n\t\tconst normal = ()=> {sp.texture = txNormal};\n\t\tif (this.#o.enabled) normal();\n\n\t\tthis.normal\t= normal;\n\t\tthis.#hover\t\t= ()=> {\n\t\t\tif (! this.canFocus()) return false;\n\t\t\tsp.texture = txHover;\n\t\t\treturn true;\n\t\t};\n\t\tthis.#clicked\t= ()=> {sp.texture = txClicked};\n\n\t\tif ('width' in this.hArg) {\n\t\t\tthis.#o.width = uint(this.hArg.width);\n\t\t\tthis.scale.x *= this.#o.width /w;\n\t\t}\n\t\telse this.#o.width = w;\n\t\tif ('height' in this.hArg) {\n\t\t\tthis.#o.height = uint(this.hArg.height);\n\t\t\tthis.scale.y *= this.#o.height /h;\n\t\t}\n\t\telse this.#o.height = h;\n\t\tsp.name = JSON.stringify(this.#o);\t// dump用\n\n\t\tButton.#procMasume4pic(this, sp, w, h);\n\t}\n\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/restrict-template-expressions */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {Layer, type T_RecordPlayBack_lay} from './Layer';\nimport {uint, CmnLib, type IEvtMng, argChk_Boolean, argChk_Num, initStyle, addStyle, argChk_Color} from './CmnLib';\nimport type {IHTag, HArg} from './Grammar';\nimport type {IVariable, IPutCh} from './CmnInterface';\nimport {type T_RP_layTxtStage, TxtStage} from './TxtStage';\nimport type {Config} from './Config';\nimport {RubySpliter} from './RubySpliter';\nimport {SpritesMng} from './SpritesMng';\nimport {Button} from './Button';\nimport {LayerMng, type IMakeDesignCast} from './LayerMng';\nimport type {SysBase} from './SysBase';\nimport {DebugMng} from './DebugMng';\nimport {SEARCH_PATH_ARG_EXT} from './ConfigBase';\nimport {Reading} from './Reading';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {T_LOG} from './Log';\n\nimport {Sprite, DisplayObject, Graphics, Container, Renderer, Application} from 'pixi.js';\n\n\nexport type T_RP_layTxt = T_RecordPlayBack_lay & {\n\tenabled\t\t: boolean;\n\tr_cssText\t: string;\n\tr_align\t\t: string;\n\ttxs\t\t\t: T_RP_layTxtStage;\n\tb_alpha\t\t: number;\n\tb_alpha_isfixed\t: boolean;\n\tb_do\t\t: string;\n\tb_pic\t\t: string;\n\tb_color\t\t: string;\n\tbtns\t\t: string[];\n}\n\nexport type T_cmdTxt_JSON = {\n\tid?\t\t\t: string;\n\n\t':link'?\t: string;\n\ttext?\t\t: string;\t// 4 ch\n\twait?\t\t: string;\t// 4 ch\n\t\t// JSON.stringify は数字でも文字にする(HArg と相違)\n\trecord?\t\t: boolean;\t// 4 ch\n\n\tpic?\t\t: string;\t// 4 graph\n\n\tfn?\t\t\t: string;\t// 4 link\n\tlabel?\t\t: string;\t// 4 link\n\turl?\t\t: string;\t// 4 link\n\n\tstyle?\t\t: string;\t// 4 tcy, link\n\tr_style?\t: string;\n\tstyle_hover\t\t: string;\t// 4 link\n\tstyle_clicked\t: string;\t// 4 link\n\tr_align?\t: string;\t// 4 pushSpan(), mergePushSpan()\n\n\tt?\t: string;\t// 4 tcy\n\tr?\t: string;\t// 4 tcy\n\n\tin_style?\t: string;\t// 4 set_ch_in\n\tout_style?\t: string;\t// 4 set_ch_out\n\n\n\tdelay?\t: number;\t// JSON 受け渡し後なので number でもいい\n}\n\n\nexport class TxtLayer extends Layer {\n\tstatic\t#cfg\t\t: Config;\n\tstatic\t#val\t\t: IVariable;\n\tstatic\t#isPageFore\t: (me: TxtLayer)=> boolean;\n\tstatic\t#log\t\t: T_LOG;\n\tstatic\tinit(cfg: Config, hTag: IHTag, val: IVariable, log: T_LOG, isPageFore: (me: TxtLayer)=> boolean, appPixi: Application): void {\n\t\tthis.#cfg = cfg;\n\t\tTxtStage.init(cfg, appPixi);\n\t\tthis.#val = val;\n\t\tthis.#log = log;\n\t\tthis.#isPageFore = isPageFore;\n\n\t\tval.setDoRecProc(doRec=> this.chgDoRec(doRec));\n\n\t\thTag.autowc\t\t\t= o=> this.#autowc(o);\t// 文字を追加する\n\t\thTag.autowc({enabled: false, text: '', time: 0});\n\t\thTag.ch_in_style\t= o=> this.#ch_in_style(o);\t// 文字出現演出\n\t\thTag.ch_out_style\t= o=> this.#ch_out_style(o);\t// 文字消去演出\n\n\t\t// ギャラリーリロード用初期化\n\t\tTxtStage.initChStyle();\n\t\tinitStyle();\n\n\t\taddStyle(\n\t\t\tcfg.matchPath('.+', SEARCH_PATH_ARG_EXT.FONT)\n\t\t\t.flatMap(o=> Object.values(o).map(v=> `\n@font-face {\n\tfont-family: '${v}';\n\tsrc: url('${this.#cfg.searchPath(String(v), SEARCH_PATH_ARG_EXT.FONT)}');\n}\n`)).join('')\n\n\t\t\t// 文字出現演出関係\n\t\t\t+`\n.sn_tx {\n\tpointer-events: none;\n\tuser-select: none;\n\t-webkit-touch-callout: none;\n\tbox-sizing: border-box;\n}\n.sn_ch {\n\tposition: relative;\n\tdisplay: inline-block;\n}\n`\t// 「sn_ch」と「sn_ch_in_〜」の中身が重複しているが、これは必須\n\t\t);\n\n\t\tthis.#ch_in_style({\n\t\t\tname\t: 'default',\n\t\t\twait\t: 500,\n\t\t\talpha\t: 0,\n\t\t\tx\t\t: '=0.3',\n\t\t\ty\t\t: '=0',\n\t\t\tscale_x\t: 1,\n\t\t\tscale_y\t: 1,\n\t\t\trotate\t: 0,\n\t\t\tjoin\t: true,\n\t\t\tease\t: 'ease-out',\n\t\t});\n\t\tthis.#ch_out_style({\n\t\t\tname\t: 'default',\n\t\t\twait\t: 0,\n\t\t\talpha\t: 0,\n\t\t\tx\t\t: '=0',\n\t\t\ty\t\t: '=0',\n\t\t\tscale_x\t: 1,\n\t\t\tscale_y\t: 1,\n\t\t\trotate\t: 0,\n\t\t\tjoin\t: false,\n\t\t\tease\t: 'ease-out',\n\t\t});\n\t}\n\n\t// 文字出現演出\n\tstatic\t#ch_in_style(hArg: HArg) {\n\t\tconst o = TxtStage.ch_in_style(hArg);\n\t\tconst x = o.x.startsWith('=') ?`${o.nx *100}%` :`${o.nx}px`;\n\t\tconst y = o.y.startsWith('=') ?`${o.ny *100}%` :`${o.ny}px`;\n\t\tconst {name} = hArg;\n\t\taddStyle(`\n.sn_ch_in_${name} {\n\tposition: relative;\n\tdisplay: inline-block;\n}\n.go_ch_in_${name} {\n\topacity: ${o.alpha};\n\tposition: relative;\n\tdisplay: inline-block;\n\tanimation: sn_ch_in_${name} ${o.wait}ms ${o.ease} 0s both;\n}\n@keyframes sn_ch_in_${name} {\n\tfrom {transform: rotate(${o.rotate}deg) scale(${o.scale_x}, ${o.scale_y}) translate(${x}, ${y})}\n\tto {opacity: 1; transform: none;}\n}\n`);\n\n\t\treturn false;\n\t}\n\t// 文字消去演出\n\tstatic\t#ch_out_style(hArg: HArg) {\n\t\tconst o = TxtStage.ch_out_style(hArg);\n\t\tconst x = o.x.startsWith('=') ?`${o.nx *100}%` :`${o.nx}px`;\n\t\tconst y = o.y.startsWith('=') ?`${o.ny *100}%` :`${o.ny}px`;\n\t\tconst {name} = hArg;\n\t\taddStyle(`\n.go_ch_out_${name} {\n\tposition: relative;\n\tdisplay: inline-block;\n\tanimation: go_ch_out_${name} ${o.wait}ms ${o.ease} 0s both;\n}\n@keyframes go_ch_out_${name} {\n\tto {\n\t\topacity: ${o.alpha};\n\t\ttransform: rotate(${o.rotate}deg) scale(${o.scale_x}, ${o.scale_y}) translate(${x}, ${y});\n\t}\n`);\n\n\t\treturn false;\n\t}\n\n\n\tstatic\t#evtMng\t: IEvtMng;\n\tstatic\t#sys\t: SysBase;\n\tstatic setEvtMng(evtMng: IEvtMng, sys: SysBase, scrItr: ScriptIterator) {\n\t\tthis.#evtMng = evtMng;\n\t\tthis.#sys = sys;\n\t\tTxtStage.setEvtMng(evtMng, scrItr);\n\t}\n\n\t// 文字ごとのウェイト\n\tstatic #doAutoWc\t= false;\n\tstatic #hAutoWc\t: {[ch: string]: number}\t= {};\n\tstatic #autowc(hArg: HArg) {\n\t\tthis.#doAutoWc = argChk_Boolean(hArg, 'enabled', this.#doAutoWc);\n\t\tthis.#val.setVal_Nochk('save', 'const.sn.autowc.enabled', this.#doAutoWc);\n\n\t\tconst {text} = hArg;\n\t\tif ('text' in hArg !== 'time' in hArg) throw '[autowc] textとtimeは同時指定必須です';\n\t\tthis.#val.setVal_Nochk('save', 'const.sn.autowc.text', text);\n\t\tif (! text) {\n\t\t\tthis.#val.setVal_Nochk('save', 'const.sn.autowc.time', '');\n\t\t\treturn false;\n\t\t}\n\n\t\tconst len = text.length;\n\t\tif (this.#doAutoWc && len === 0) throw '[autowc] enabled === false かつ text === \"\" は許されません';\n\n\t\tconst a = String(hArg.time).split(',');\n\t\tif (a.length !== len) throw '[autowc] text文字数とtimeに記述された待ち時間(コンマ区切り)は同数にして下さい';\n\t\tthis.#hAutoWc = {};\t// 毎回クリアを仕様とする\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tfor (let i=0; i<len; ++i) this.#hAutoWc[text[i]!] = uint(a[i]);\n\t\tthis.#val.setVal_Nochk('save', 'const.sn.autowc.time', hArg.time);\n\n\t\treturn false;\n\t}\n\n\n\t// バック\n\t#b_color\t\t\t= 0x000000;\n\t#b_alpha\t\t\t= 0;\n\t#b_alpha_isfixed\t= false;\n\t#b_do\t\t\t: DisplayObject | undefined\t= undefined;\n\t#b_pic\t\t\t= '';\t// 背景画像無し(=単色塗り)\n\n\t// 文字表示\n\t#txs\t= new TxtStage(this.ctn, ()=> this.canFocus(), TxtLayer.#sys);\n\n\treadonly\t#rbSpl\t= new RubySpliter;\n\treadonly\t#htmRb\t= document.createElement('span');// cssチェック・保存用\n\tstatic\treadonly\t#hWarnR_Style = {\n\t\t'text-align'\t\t: 0,\n\t\t'text-align-last'\t: 0,\n\t\t'height'\t: 0,\n\t\t'width'\t\t: 0,\n\t\t'padding-left'\t\t: 0,\n\t\t'padding-right'\t\t: 0,\n\t\t'padding-top'\t\t: 0,\n\t\t'padding-bottom'\t: 0,\n\t};\n\n\treadonly\t#cntBtn\t= new Container<Button>;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.ctn.addChild(this.#txs);\n\n\t\tthis.#rbSpl.init(this.#putCh);\n\n\t\tthis.ctn.addChild(this.#cntBtn);\t// ボタンはpaddingの影響を受けない\n\t\tthis.#cntBtn.name = 'cntBtn';\n\n\t\tconst padding = 16;\t// 初期padding\n\t\tthis.lay({style: `width: ${CmnLib.stageW}px; height: ${CmnLib.stageH}px; font-family: 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', '游ゴシック Medium', meiryo, sans-serif; color: white; font-size: 24px; line-height: 1.5; padding: ${padding}px;`, in_style: 'default', out_style: 'default', back_clear: 'true'});\n\t}\n\toverride destroy() {\n\t\tif (this.#b_do) {this.ctn.removeChild(this.#b_do).destroy(); this.#b_do = undefined}\n\n\t\tTxtLayer.#log.pagebreak();\n\t\tthis.#txs.destroy();\n\t}\n\tstatic\tdestroy() {\n\t\tthis.#doAutoWc = false;\n\t\tthis.#hAutoWc = {};\n\n\t\tthis.#rec = tx=> tx;\n\t}\n\toverride set name(nm: string) {this.name_ = nm; this.#txs.name = nm}\n\toverride get name() {return this.name_}\t// getは継承しないらしい\n\n\n\toverride cvsResize() {this.#txs.cvsResize()}\n\toverride cvsResizeChildren() {\n\t\tfor (const b of this.#cntBtn.children) b.cvsResize();\n\t}\n\n\tprotected\toverride\tprocSetX(x: number) {this.#txs.lay({x})}\n\tprotected\toverride\tprocSetY(y: number) {this.#txs.lay({y})}\n\n\toverride lay(hArg: HArg) {\n\t\tsuper.lay(hArg);\n\t\tLayer.setXY(this.ctn, hArg, this.ctn);\n\n\t\thArg[':id_tag'] = this.name_.slice(0, -7);\t// Design用\n\t\tRubySpliter.setting(hArg);\n\t\tthis.#setFfs(hArg);\n\t\tthis.#txs.lay(hArg);\n\n\t\tif ('r_align' in hArg) this.#r_align = hArg.r_align ?? '';\n\t\tthis.#ruby_pd = CmnLib.isSafari\n\t\t? this.#txs.tategaki\t\t// Safariでは親文字幅 l は疑似値\n\t\t\t? (v, l)=> `text-align: start; height: ${l}em; padding-top: ${v}; padding-bottom: ${v};`\n\t\t\t: (v, l)=> `text-align: start; width: ${l}em; padding-left: ${v}; padding-right: ${v};`\n\t\t: this.#txs.tategaki\n\t\t\t? v=> `text-align: justify; text-align-last: justify; padding-top: ${v}; padding-bottom: ${v};`\n\t\t\t: v=> `text-align: justify; text-align-last: justify; padding-left: ${v}; padding-right: ${v};`;\n\t\t// eslint-disable-next-line @typescript-eslint/unbound-method\n\t\tif (CmnLib.isFirefox) this.#mkStyle_r_align = this.#mkStyle_r_align4ff;\n\n\t\tif ('r_style' in hArg) {\n\t\t\tif (hArg.r_style) {\n\t\t\t\tconst cln = document.createElement('span');\n\t\t\t\tcln.style.cssText = hArg.r_style;\n\t\t\t\tconst len = cln.style.length;\n\t\t\t\tconst s = this.#htmRb.style;\n\t\t\t\tfor (let i=0; i<len; ++i) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\tconst key = <any>cln.style[i];\n\t\t\t\t\tif (key in TxtLayer.#hWarnR_Style) {\n\t\t\t\t\t\tDebugMng.myTrace(`${key}は指定できません`, 'W');\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst v = cln.style[key];\n\t\t\t\t\tif (v) s[key] = v;\n\t\t\t\t}\n\t//\t\t\tif ((! cln.style.opacity) && ('alpha' in hArg)) s.opacity = String(this.spLay.alpha);\n\t\t\t}\n\t\t\telse this.#htmRb.style.cssText = '';\n\t\t}\n\n\t\tif ('alpha' in hArg) for (const b of this.#cntBtn.children) b.alpha = this.ctn.alpha;\n\n\t\tthis.#set_ch_in(hArg);\n\t\tthis.#set_ch_out(hArg);\n\n\t\tconst RPN_TXT_LAY = Reading.procID +`TxtLayer lay name:${this.name_}`;\n\t\tconst ret = this.#drawBack(hArg, isStop=> {\n\t\t\tif (isStop) Reading.endProc(RPN_TXT_LAY);\n\t\t});\n\t\tif (ret) Reading.beginProc(RPN_TXT_LAY);\n\t\treturn ret;\n\t}\n\t#set_ch_in(hArg: T_cmdTxt_JSON | HArg) {\n\t\tconst {in_style} = hArg;\n\t\tif (! in_style) return;\n\t\tconst cis = TxtStage.getChInStyle(in_style);\n\t\tif (! cis) throw `存在しないin_style【${in_style}】です`;\n\t\tthis.#$ch_in_style = in_style;\n\t\tthis.#ch_in_join = cis.join;\n\t}\n\t#$ch_in_style\t= '';\n\t#ch_in_join\t\t= true;\n\n\toverride get\twidth() {return this.#txs.getWidth}\n\toverride get\theight() {return this.#txs.getHeight}\n\n\t#set_ch_out(hArg: T_cmdTxt_JSON | HArg) {\n\t\tconst {out_style} = hArg;\n\t\tif (! out_style) return;\n\t\tconst cos = TxtStage.getChOutStyle(out_style);\n\t\tif (! cos) throw `存在しないout_style【${out_style}】です`;\n\t\tthis.#$ch_out_style = out_style;\n\t}\n\t#$ch_out_style\t= '';\n\n\t#sps\t= new SpritesMng;\n\t#drawBack(hArg: HArg, fncComp: (isStop: boolean)=> void): boolean {\n\t\tif ('back_clear' in hArg) {\n\t\t\tif (argChk_Boolean(hArg, 'back_clear', false)) {\n\t\t\t\tthis.#b_color = 0x000000;\n\t\t\t\tthis.#b_alpha = 0;\n\t\t\t\tthis.#b_alpha_isfixed = false;\n\t\t\t\tthis.#b_pic = '';\n\t\t\t}\n\t\t\tfncComp(false);\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.#b_alpha = argChk_Num(hArg, 'b_alpha', this.#b_alpha);\n\t\tthis.#b_alpha_isfixed = argChk_Boolean(hArg, 'b_alpha_isfixed', this.#b_alpha_isfixed);\n\t\tconst alpha = (this.#b_alpha_isfixed\n\t\t\t? 1\n\t\t\t: Number(TxtLayer.#val.getVal('sys:TextLayer.Back.Alpha'))\n\t\t) *this.#b_alpha;\n\t\tif (hArg.b_pic) {\n\t\t\tif (this.#b_pic !== hArg.b_pic) {\n\t\t\t\tthis.#b_pic = hArg.b_pic;\n\t\t\t\tif (this.#b_do) {\n\t\t\t\t\tthis.ctn.removeChild(this.#b_do);\t// Graphics かも\n\t\t\t\t\tthis.#b_do.destroy();\t// Graphics かも\n\t\t\t\t}\n\t\t\t\t//this.#sps.destroy();\t// Graphics かもなので使用不可\n\t\t\t\tthis.#sps = new SpritesMng(this.#b_pic, this.ctn, sp=> {\n\t\t\t\t\tthis.#b_do = sp;\n\t\t\t\t\tsp.name = 'back(pic)';\n\t\t\t\t\tsp.visible = alpha > 0;\n\t\t\t\t\tsp.alpha = alpha;\n\t\t\t\t\t//CmnLib.adjustRetinaSize(this.b_pic, sp);\n\t\t\t\t\tthis.#txs.setMySize(sp.width, sp.height);\n\t\t\t\t\t\t// ちなみに左上表示位置は本レイヤと同じ\n\t\t\t\t\tthis.ctn.setChildIndex(sp, 0);\n\t\t\t\t\tfncComp(true);\n\t\t\t\t});\n\t\t\t\treturn this.#sps.ret;\n\t\t\t}\n\t\t}\n\t\telse if ('b_color' in hArg) {\n\t\t\tthis.#b_color = argChk_Color(hArg, 'b_color', 0x000000);\n\t\t\tif (this.#b_do) {\n\t\t\t\tthis.ctn.removeChild(this.#b_do);\t// Graphics かも\n\t\t\t\tthis.#b_do.destroy();\t// Graphics かも\n\t\t\t\t//this.#sps.destroy();\t// Graphics かもなので使用不可\n\t\t\t}\n\t\t\tthis.#b_pic = '';\t// 忘れずクリア\n\t\t\tthis.ctn.addChildAt(\n\t\t\t\t(this.#b_do = new Graphics)\n\t\t\t\t.beginFill(this.#b_color, alpha)\n\t\t\t\t.lineStyle(undefined)\n\t\t\t\t.drawRect(0, 0, this.#txs.getWidth, this.#txs.getHeight)\n\t\t\t\t.endFill(), 0);\n\t\t\tthis.#b_do.name = 'back(color)';\n\t\t\t//cacheAsBitmap = true;\t// これを有効にするとスナップショットが撮れない??\n\t\t}\n\n\t\tif (this.#b_do) {\n\t\t\tthis.#b_do.visible = alpha > 0;\n\t\t\t\t// 透明の時は表示しない。こうしないと透明テキストレイヤ下のボタンが\n\t\t\t\t// 押せなくなる(透明だが塗りがあるという扱いなので)\n\t\t\tthis.#b_do.alpha = alpha;\n\t\t}\n\t\tfncComp(false);\n\n\t\treturn false;\n\t}\n\tchgBackAlpha(g_alpha: number): void {\n\t\tconst alpha = this.#b_alpha_isfixed\n\t\t\t? this.#b_alpha\n\t\t\t: g_alpha * this.#b_alpha;\n\t\tif (this.#b_do instanceof Graphics) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\t\tif (this.#b_do) {\n\t\t\t\tthis.ctn.removeChild(this.#b_do);\n\t\t\t\tthis.#b_do.destroy();\n\t\t\t}\n\t\t\tthis.ctn.addChildAt(\n\t\t\t\t(this.#b_do = new Graphics)\n\t\t\t\t.beginFill(this.#b_color, alpha)\n\t\t\t\t.lineStyle(undefined)\n\t\t\t\t.drawRect(0, 0, this.#txs.getWidth, this.#txs.getHeight)\n\t\t\t\t.endFill(), 0);\n\t\t\tthis.#b_do.name = 'back(color)';\n\t\t\t//cacheAsBitmap = true;\t// これを有効にするとスナップショットが撮れない??\n\t\t}\n\t\tif (this.#b_do) {\n\t\t\tthis.#b_do.visible = alpha > 0;\n\t\t\t\t// 透明の時は表示しない。こうしないと透明テキストレイヤ下のボタンが\n\t\t\t\t// 押せなくなる(透明だが塗りがあるという扱いなので)\n\t\t\tthis.#b_do.alpha = alpha;\n\t\t}\n\t}\n\n\t#setFfs(hArg: HArg) {\n\t\tif ('noffs' in hArg) {\n\t\t\tthis.#strNoFFS = hArg.noffs ?? '';\n\t\t\t// eslint-disable-next-line no-irregular-whitespace\n\t\t\tthis.#regNoFFS = new RegExp(`[ ${this.#strNoFFS}]`);\n\t\t}\n\t\tif (! ('ffs' in hArg)) return;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\tthis.#ffs ??= '';\n\t\tthis.#fncFFSStyle = this.#ffs === ''\n\t\t\t? ()=> ''\n\t\t\t: ch=> this.#regNoFFS.test(ch)\n\t\t\t\t? ''\n\t\t\t\t: ` font-feature-settings: ${this.#ffs};`;\n\t}\n\t#ffs\t= '';\n\t#fncFFSStyle\t= (_ch: string)=> '';\n\t#strNoFFS\t= '';\n\t// eslint-disable-next-line no-irregular-whitespace\n\t#regNoFFS\t= /[ ]/;\n\t// Safariが全体に「font-feature-settings」した後、特定文字の「font-feature-settings: initial;」を受け付けてくれないのでわざわざ一つずつ指定\n\n\n\tstatic\tchgDoRec(doRec: boolean) {\n\t\tthis.#rec = doRec\n\t\t\t? tx=> tx\n\t\t\t: tx=> `<span class='offrec'>${tx}</span>`;\n\t\t\t\t// 囲んだ領域は履歴で非表示\n\t}\n\tstatic\t#rec = (tx: string)=> tx;\n\n\tisCur\t= false;\n\t#ruby_pd: (v: string, l: number)=> string = ()=> '';\n\t#mkStyle_r_align: (ch: string, rb: string, r_align: string, add_sty?: string)=> string = (ch, rb, r_align, add_sty='')=> {\n\t\tif (! r_align) return ` style='${add_sty}'`;\n\n\t\tconst len = ch.length *2;\n\t\tif (len -rb.length < 0) return ` style='text-align: ${r_align}; ${add_sty}'`;\n\n\t\tlet st = '';\n\t\tswitch (r_align) {\n\t\tcase 'justify':\n\t\t\tst = this.#ruby_pd('0', len);\tbreak;\n\t\tcase '121':\n\t\t\tst = this.#ruby_pd(`calc(${(len -rb.length) /(rb.length *2)}em)`, len);\tbreak;\n\t\tcase 'even':\n\t\t\tst = this.#ruby_pd(`calc(${(len -rb.length) /(rb.length +1)}em)`, len);\tbreak;\n\t\tcase '1ruby':\n\t\t\tst = this.#ruby_pd('1em', len);\tbreak;\n\t\tdefault:\n\t\t\tst = `text-align: ${r_align};`;\n\t\t}\n\t\treturn ` style='${st} ${add_sty}'`;\n\t};\n\t#r_align\t= '';\n\t#mkStyle_r_align4ff(ch: string, rb: string, r_align: string, add_sty=''): string {\n\t\tif (! r_align) return ` style='${add_sty}'`;\n\n\t\tconst len = ch.length *2;\n\t\tif (len -rb.length < 0) return ` style='text-align: ${r_align}; ${add_sty}'`;\n\n\t\tlet st = '';\n\t\tswitch (r_align) {\n\t\t\tcase 'left':\tst = 'ruby-align: start;';\tbreak;\n\t\t\tcase 'center':\tst = 'ruby-align: center;';\tbreak;\n\t\t\tcase 'right':\t// エレガントにサポートできていない\n\t\t\t\tst = 'ruby-align: start;';\tbreak;\n\t\t\tcase 'justify':\tst = 'ruby-align: space-between;';\tbreak;\n\t\t\tcase '121':\t\tst = 'ruby-align: space-around;';\tbreak;\n\t\t\tcase 'even':{\n\t\t\t\tconst ev = (len -rb.length) /(rb.length +1);\n\t\t\t\tst = 'ruby-align: space-between; '+\n\t\t\t\t(this.#txs.tategaki\n\t\t\t\t\t? `padding-top: ${ev}em; padding-bottom: ${ev}em;`\n\t\t\t\t\t: `padding-left: ${ev}em; padding-right: ${ev}em;`);\n\t\t\t}\tbreak;\n\t\t\tcase '1ruby':\tst = 'ruby-align: space-between; '+\n\t\t\t\t(this.#txs.tategaki\n\t\t\t\t\t? 'padding-top: 1em; padding-bottom: 1em;'\n\t\t\t\t\t: 'padding-left: 1em; padding-right: 1em;');\n\t\t\t\tbreak;\n\t\t\tdefault:\t\tst = `text-align: ${r_align};`;\n\t\t}\n\t\treturn ` style='${st} ${add_sty}'`;\n\t}\n\n\ttagCh(text: string): void {this.#rbSpl.putTxt(text)}\n\t#needGoTxt = false;\n\tget needGoTxt() {return this.#needGoTxt}\n\treadonly\t#putCh\t: IPutCh = (ch, iruby)=> {\n\t\tlet ruby = iruby;\n\t\tif (TxtLayer.#cfg.oCfg.debug.putCh) console.log(`🖊 文字表示 text:\\`${ch}\\`(${ch.charCodeAt(0).toString(16)}) ruby:\\`${ruby}\\` name:\\`${this.name_}\\``);\n\n\t\tconst a_ruby = ruby.split('|');\n\t\tlet add_htm = '';\n\t\tconst [a0, ...a1_] = a_ruby;\n\t\tconst a1 = a1_.join('|');\n\t\tswitch (a_ruby.length) {\n\t\tcase 1:\t\t// 字or春《はる》\n\t\t\tthis.#needGoTxt = true;\n\t\t\tif (ch === '\\n') {\n\t\t\t\tif (this.#firstCh) {// 1文字目にルビが無い場合、不可視ルビで行揃え\n\t\t\t\t\tthis.#firstCh = false;\n\t\t\t\t\tadd_htm = '<ruby> <rt> </rt></ruby><br/>';\n\t\t\t\t}\n\t\t\t\telse add_htm = '<br/>';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (this.#firstCh) {\t// 1文字目にルビが無い場合、不可視ルビで行揃え\n\t\t\t\tthis.#firstCh = false;\n\t\t\t\tif (ruby === '') ruby = ' ';\n\t\t\t}\n\t\t\tadd_htm = this.#tagCh_sub(ch, ruby, this.#r_align);\n\t\t\tbreak;\n\n\t\tdefault:\t// 《grp|{\"id\":\"break\",\"pic\":\"breakline\"}》\n\t\t\tswitch (a0) {\t// ルビ揃え指定と同時シリーズ\n\t\t\tcase 'start':\t// 初期値\n\t\t\tcase 'left':\t//(肩付き)先頭親文字から、ルビ間は密着\n\t\t\tcase 'center':\t//(中付き)センター合わせ、〃\n\t\t\tcase 'right':\t//(右/下揃え)末尾親文字から、〃\n\t\t\tcase 'justify':\t//(両端揃え)先頭から末尾親文字間に、ルビ間は均等にあける\n\t\t\tcase '121':\t\t//(1-2-1(JIS))ルビの前後を比率1、ルビ間を比率2であける\n\t\t\tcase 'even':\t//(均等アキ)ルビの前後、ルビ間も均等にあける\n\t\t\tcase '1ruby':\t//(1ルビ文字アキ)ルビの前後をルビ一文字空け、ルビ間は均等にあける\n\t\t\t\tthis.#firstCh = false;\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t\tadd_htm = this.#tagCh_sub(ch, a1, a0);\n\t\t\t\tbreak;\n\n\t\t\tcase 'gotxt':\n\t\t\t\tthis.#popSpan();\n\t\t\t\tif (this.#needGoTxt) {\n\t\t\t\t\tif (this.isCur) TxtLayer.#log.recText(\n\t\t\t\t\t\tthis.#aSpan.join('')\n\t\t\t\t\t\t.replace(/^<ruby> <rt> <\\/rt><\\/ruby>(<br\\/>)+/, '')\n\t\t\t\t\t\t\t// 前方の空行をtrim\n\t\t\t\t\t\t.replaceAll(/style='(anim\\S+ [^;]+;\\s*)+/g, 'style=\\'')\n\t\t\t\t\t\t\t// 2 matches (40 step, 205µs) https://regex101.com/r/u1H6v2/1\n\t\t\t\t\t\t.replaceAll(/( style=''| data-(add|arg|cmd)='[^']+'|\\n+|\\t+)/g, '')\n\t\t\t\t\t\t\t// 2 matches (94 step, 175µs) https://regex101.com/r/5DFUmv/1\n\t\t\t\t\t\t.replaceAll(/class='sn_ch[^']+/g, 'class=\\'sn_ch')\n\t\t\t\t\t\t\t// 不要情報削除\n\t\t\t\t\t\t\t// 2 matches (28 step, 280µs) https://regex101.com/r/XhBbYo/1\n\t\t\t\t\t\t.replaceAll('display: none;', '')\t// 履歴情報可視化\n\t\t\t\t\t\t.replaceAll('class=\\'offrec\\'', 'style=\\'display: none;\\'')\n\t\t\t\t\t);\t\t// 囲んだ領域は履歴で非表示\n\n\t\t\t\t\tthis.#txs.goTxt(this.#aSpan, this.#cumDelay === 0);\n\t\t\t\t\tthis.#needGoTxt = false;\n\t\t\t\t\tthis.#cumDelay = 0;\n\t\t\t\t}\n\t\t\t\telse if (this.isCur) this.#txs.noticeCompTxt();\n\t\t\t\treturn;\t// breakではない\n\n\t\t\tcase 'add':{\t// 文字幅を持たない汎用的な命令(必ずadd_closeすること)\n\t\t\t\tconst o = <T_cmdTxt_JSON>JSON.parse(a1);\n\n\t\t\t\tconst {style='', wait=null} = o;// wait=0にすると背景が最初から出る\n\t\t\t\tconst {cl, sty} = this.#o2domArg(true, wait ?uint(wait): null);\n\t\t\t\tthis.#aSpan.push(`<span${cl} style='${sty} display: inline; ${style}'>`);\t// display: inline; がないと前の改行が改行しなくなる\n\t\t\t\tdelete o.style;\t// 背景styleなどを[ch]で一塊とする\n\t\t\t\tthis.#pushSpan(o);\n\t\t\t}\treturn;\t// breakではない\n\t\t\tcase 'add_close':\n\t\t\t\tthis.#aSpan.push('</span>');\n\t\t\t\tthis.#popSpan();\n\t\t\t\treturn;\t// breakではない\n\n\t\t\tcase 'grp':\t//\t画像など 《grp|{\"id\":\"break\",\"pic\":\"breakline\"}》\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t{\n\t\t\t\tconst o = <T_cmdTxt_JSON>JSON.parse(a1);\n\t\t\t\t// 直後の dispBreak() のため oを更新\n\t\t\t\to.id ??= String(this.#aSpan.length);\n\t\t\t\tif (o.id === 'break') {\n\t\t\t\t\tthis.#txs.dispBreak(<HArg>o);\n\t\t\t\t\treturn;\t// breakではない\n\t\t\t\t}\n\n\t\t\t\tthis.#firstCh = false;\n\t\t\t\t// 直後の JSON.stringify() のため oを更新\n\t\t\t\to.delay = this.#cumDelay;\t// 画像のスライドインで使う\n\t\t\t\to.r ??= '';\n\t\t\t\to.style ??= '';\n\t\t\t\to.r_style ??= '';\n\t\t\t\tconst {r, wait=null, r_style} = o;\n\t\t\t\tconst {cl, sty, lnk} = this.#o2domArg(true, wait ?uint(wait): null);\n\t\t\t\tadd_htm = `<span${cl} style='${sty} ${o.style\n\t\t\t\t}'><ruby><span data-cmd='grp' data-arg='${JSON.stringify(o)\n\t\t\t\t}'${lnk} style='${sty} display: inline;'> </span><rt${lnk}${\n\t\t\t\t\tthis.#mkStyle_r_align(' ', r, this.#r_align,\n\t\t\t\t\tthis.#htmRb.style.cssText\t// この並びで上書きされていく\n\t\t\t\t\t+ (this.#stkASpan.at(-1)?.o.r_style ?? '')\n\t\t\t\t\t+ r_style)\n\t\t\t\t}>${o.r}</rt></ruby></span>`;\n\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'tcy':\t// ルビ付き縦中横\n\t\t\t\tthis.#firstCh = false;\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t{\n\t\t\t\tconst {t='', r='', wait=null, style='', r_style=''} = <T_cmdTxt_JSON>JSON.parse(a1);\n\t\t\t\tif (TxtLayer.#val.doRecLog()) {\n\t\t\t\t\tthis.#page_text += ch +(ruby ?`《${ruby}》` :'');\n\t\t\t\t\tthis.#page_plain_text += t;\n\t\t\t\t}\n\n\t\t\t\tconst rb = CmnLib.isSafari\n\t\t\t\t\t? r.replaceAll(/[A-Za-z0-9]/g, s=> String.fromCharCode(s.charCodeAt(0) + 65248))\n\t\t\t\t\t\t// 英数字を全角に(Safariで縦中横ルビが半角文字だと、\n\t\t\t\t\t\t// 選択矩形が横倒しになる不具合対策)\n\t\t\t\t\t: r;\n\t\t\t\tconst {cl, sty, lnk} = this.#o2domArg(true, wait ?uint(wait): null);\n\t\t\t\tadd_htm = `<span${cl} style='${sty}${this.#fncFFSStyle(t)} ${style}'><ruby><span${lnk} style='${sty} display: inline; text-combine-upright: all;'>${t}</span><rt${lnk}${\n\t\t\t\t\tthis.#mkStyle_r_align(t, rb, this.#r_align,\n\t\t\t\t\tthis.#htmRb.style.cssText\t// この並びで上書きされていく\n\t\t\t\t\t+ (this.#stkASpan.at(-1)?.o.r_style ?? '')\n\t\t\t\t\t+ r_style)\n\t\t\t\t}>${rb}</rt></ruby></span>`;\n\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'del':\t//if (a1 !== 'break') throw '文字レイヤdelコマンドは、現在id=breakのみサポートします';\n\t\t\t\tTxtStage.delBreak();\n\t\t\t\treturn;\t// breakではない\n\n\t\t\tcase 'span':\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t\tthis.#mergePushSpan(<T_cmdTxt_JSON>JSON.parse(a1));\n\t\t\t\treturn;\t// breakではない\n\n\t\t\tcase 'link':\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t{\n\t\t\t\tconst o = <T_cmdTxt_JSON>JSON.parse(a1);\n\t\t\t\to[':link'] = ' data-lnk=\\'@\\'';\n\t\t\t\tconst {cl, sty, curpos} = this.#o2domArg(false, o.wait ?uint(o.wait): null);\n\t\t\t\tthis.#aSpan.push(`<span${cl} style='${sty} display: inline; ${o.style ?? ''}' ${curpos} data-arg='${a1}'>`);\n\t\t\t\t\t// display: inline; を削除するとルビもリンク背景に含まれる\n\t\t\t\t\t// ただし当たり判定は文字・ルビ上のみ\n\t\t\t\tdelete o.style;\n\t\t\t\tthis.#mergePushSpan(o);\n\t\t\t}\treturn;\t// breakではない\n\n\t\t\tcase 'endlink':\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t\tthis.#aSpan.push('</span>');\n\t\t\t\tthis.#popSpan();\n\t\t\t\treturn;\t// breakではない\n\n\t\t\tdefault:\t// ルビあり文字列\n\t\t\t\tthis.#needGoTxt = true;\n\t\t\t\tadd_htm = this.#tagCh_sub(ch, ruby, this.#r_align);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tthis.#aSpan.push(TxtLayer.#rec(add_htm));\n\t}\n\t#tagCh_sub(ch: string, rb: string, r_align: string): string {\n\t\tconst ht = ch===' ' ?' ' :ch===' ' ?' ' :ch;\n\t\tif (TxtLayer.#val.doRecLog()) {\n\t\t\tthis.#page_text += ht +(rb ?`《${rb}》` :'');\n\t\t\tif (ch !== ' ') this.#page_plain_text += ch;\n\t\t}\n\t\tconst {cl, sty, lnk} = this.#o2domArg(true, null, ch);\n\n\t\tif (rb) return `<span${cl} style='${sty} ${this.#fncFFSStyle(ch)\n\t\t//<ruby style='ruby-position:under;'>\t// 下付ルビ\n\t\t}'><ruby>${\t// 文字個別に出現させるため以下にも ${cl} が必要\n\t\t\tArray.from(ch).map((c, i)=> `<span${cl}${lnk} style='${\n\t\t\t\ti > 0 ?this.#o2domArg(true, null, ch).sty :sty\n\t\t\t} display: inline;'>${\n\t\t\t\tc===' ' ?' ' :c===' ' ?' ' :c\n\t\t\t}</span>`).join('')\n\t\t\t\t// display: inline; がないと[span]区間外のルビが浮く\n\t\t}<rt${lnk}${this.#mkStyle_r_align(ch, rb, r_align,\n\t\t\tthis.#htmRb.style.cssText\t// この並びで上書きされていく\n\t\t\t+ (this.#stkASpan.at(-1)?.o.r_style ?? ''))\n\t\t}>${rb}</rt></ruby></span>`;\t// <span>に入れないと崩れ一文字ずつ出ない\n\n\t\treturn `<span${cl} style='${sty} ${this.#fncFFSStyle(ch)}'${lnk}>${ht}</span>`;\n\t}\n\t#o2domArg(isAddWait: boolean, argWait: number | null, ch = '\\n') {\n\t\tconst wait = this.#ch_in_join ?argWait\n\t\t\t?? this.#stkASpan.at(0)?.o.wait\t// 親要素\n\t\t\t?? (TxtLayer.#doAutoWc\t// ()は必要\n\t\t\t\t? TxtLayer.#hAutoWc[ch.at(0) ?? ''] ?? 0\n\t\t\t\t: LayerMng.msecChWait) :0;\n\t\tif (TxtLayer.#evtMng.isSkipping) this.#cumDelay = 0;\n\t\telse if (isAddWait && this.#ch_in_join) this.#cumDelay += uint(wait);\n\t\t\t// ... += uint(wait)*5\t// こうすると出現視認テストができる\n\t\tconst curpos = `data-add='{\"ch_in_style\":\"${this.#$ch_in_style}\", \"ch_out_style\":\"${this.#$ch_out_style}\"}'`;\n\n\t\treturn {\n\t\t\tcl\t: ` class='sn_ch sn_ch_yet sn_ch_in_${this.#$ch_in_style}'`,\t// TxtStage.goTxt()はこれ単位で文字出現させる\n\t\t\tsty\t: `animation-delay: ${this.#cumDelay}ms;${\n\t\t\t\tthis.#stkASpan.at(-1)?.o.style ?? ''\n\t\t\t}`,\t\t// TxtStage.goTxt()はこれ単位で文字出現させる\n\t\t\tlnk\t: (this.#stkASpan.at(0)?.o[':link'] ?? '')+' '+ curpos,\n\t\t\tcurpos,\n\t\t};\n\t}\n\t#cumDelay\t= 0;\n\t#firstCh\t= true;\n\t#aSpan\t\t: string[]\t= [];\n\t#stkASpan\t: {\n\t\to\t\t: T_cmdTxt_JSON;\n\t\tr_align\t\t\t: string;\n\t\tch_in_style\t\t: string;\n\t\tch_out_style\t: string;\n\t}[] = [];\n\n\t#pushSpan(o :T_cmdTxt_JSON) {\n\t\tthis.#stkASpan.push({\n\t\t\to,\n\t\t\tr_align\t\t\t: this.#r_align,\n\t\t\tch_in_style\t\t: this.#$ch_in_style,\n\t\t\tch_out_style\t: this.#$ch_out_style,\n\t\t});\n\t\tif (o.r_align) this.#r_align = o.r_align;\n\t\tthis.#set_ch_in(o);\n\t\tthis.#set_ch_out(o);\n\t}\n\t#popSpan() {\n\t\tconst stk = this.#stkASpan.pop();\n\t\tif (! stk) return;\n\n\t\tthis.#r_align = stk.r_align;\n\t\tthis.#set_ch_in({in_style: stk.ch_in_style});\n\t\tthis.#set_ch_out({out_style: stk.ch_out_style});\n\t}\n\t#mergePushSpan(o :T_cmdTxt_JSON) {\n\t\tconst stk = this.#stkASpan.at(-1);\n\t\tif (! stk) {this.#pushSpan(o); return}\n\n\t\tstk.o = {...stk.o, ...o};\n\t\tif (! o.style && ! o.r_style) {stk.o.style = ''; stk.o.r_style = ''}\n\t\t\t// どちらも指定されてなければクリア\n\t\tif (o.r_align) this.#r_align = o.r_align;\n\t\tthis.#set_ch_in(o);\n\t\tthis.#set_ch_out(o);\n\t}\n\n\treadonly click = ()=> {\t// true: 文字出現中だったので、停止する\n\t\tif (! this.ctn.interactiveChildren || ! this.ctn.visible) return false;\n\t\treturn this.#txs.skipChIn();\n\t}\n\n\tclearText(): void {\n\t\tthis.ctn.addChild(this.#txs = this.#txs.reNew());\n\n\t\tthis.#cumDelay = 0;\n\t\tthis.#firstCh = true;\n\t\tthis.#aSpan = [];\n\t\tthis.#page_text = '';\n\t\tthis.#page_plain_text = '';\n\t\tTxtLayer.#log.pagebreak();\n\t}\n\t#page_text\t\t\t= '';\n\t#page_plain_text\t= '';\n\tget pageText() {return this.#page_text.replace('《 》', '')}\n\tget pagePlainText() {return this.#page_plain_text}\n\n\tget enabled() {return this.ctn.interactiveChildren}\n\tset enabled(e) {this.ctn.interactiveChildren = e}\n\n\treadonly\taddButton = (hArg: HArg)=> new Promise<void>(re=> {\n\t\t// 直後の JSON.stringify() のため hArg を更新\n\t\thArg.key = `btn=[${this.#cntBtn.children.length}] `+ this.name_;\n\t\thArg[':id_tag'] = hArg.key.slice(0, -7);\t// Design用\n\t\targChk_Boolean(hArg, 'hint_tate', this.#txs.tategaki);\t// hint用\n\t\tconst btn = new Button(hArg, TxtLayer.#evtMng, ()=> re(), ()=> this.canFocus());\n\t\tbtn.name = JSON.stringify(hArg).replaceAll('\"', '\\'');// playback時に使用\n\t\tthis.#cntBtn.addChild(btn);\n\t});\n\tcanFocus(): boolean {\n\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\t\treturn (this.ctn.interactiveChildren ?? false)\n\t\t&& this.ctn.visible\n\t\t&& TxtLayer.#isPageFore(this);\n\t}\n\n\n\toverride clearLay(hArg: HArg): void {\n\t\tsuper.clearLay(hArg);\n\n\t\tthis.clearText();\n\t\t// 上で呼ばれる this.#evtMng.escapeHint();\t// Hintごとdestroyされるのを回避\n\t\tfor (const b of this.#cntBtn.removeChildren()) b.destroy();\n\t}\n\toverride readonly record = ()=> {return {...super.record(),\n\t\tenabled\t: this.enabled,\n\n\t\tr_cssText\t: this.#htmRb.style.cssText,\n\t\tr_align\t\t: this.#r_align,\n\n\t\t// バック\n\t\tb_do\t: this.#b_do === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: this.#b_do instanceof Sprite ?'Sprite' :'Graphics',\n\t\tb_pic\t: this.#b_pic,\n\t\tb_color\t: this.#b_color,\n\t\tb_alpha\t: this.#b_alpha,\n\t\tb_alpha_isfixed\t: this.#b_alpha_isfixed,\n\n\t\tffs\t\t: this.#ffs,\n\t\ttxs\t\t: this.#txs.record(),\n\t\tstrNoFFS: this.#strNoFFS,\n\n\t\tbtns\t: this.#cntBtn.children.map(b=> b.name),\n\t}};\n\toverride playback(hLay: T_RP_layTxt, aPrm: Promise<void>[]): void {\n\t\tsuper.playback(hLay, aPrm);\n\n\t\tthis.enabled\t= hLay.enabled;\n\n\t\tthis.#htmRb.style.cssText = hLay.r_cssText;\n\t\tthis.#r_align\t= hLay.r_align;\n\t\tthis.cvsResize();\n\n\t\tthis.#setFfs(hLay);\n\t\tthis.#txs.playback(hLay.txs);\n\t\t// 文字背景サイズは TxtStage を参照するのでこの順で\n\t\tthis.#b_alpha\t\t\t= hLay.b_alpha;\n\t\tthis.#b_alpha_isfixed\t= hLay.b_alpha_isfixed;\n\n\t\taPrm.push(\n\t\t\tnew Promise<void>(re=> {\n\t\t\t\tconst h: HArg = hLay.b_do\n\t\t\t\t\t? hLay.b_do === 'Sprite'\n\t\t\t\t\t\t? {b_pic: hLay.b_pic}\n\t\t\t\t\t\t: {b_color: hLay.b_color}\n\t\t\t\t\t: {b_pic: ''};\n\t\t\t\th.b_alpha = hLay.b_alpha;\n\t\t\t\th.b_alpha_isfixed = hLay.b_alpha_isfixed;\n\t\t\t\tif (! this.#drawBack(h, isStop=> {if (isStop) re()})) re();\n\t\t\t}),\n\t\t\t...hLay.btns.map(b=> this.addButton(<HArg>JSON.parse(b.replaceAll('\\'', '\"')))).flat(),\n\t\t);\n\t}\n\n\tget cssText() {return this.#txs.cssText}\n\tset cssText(ct: string) {this.#txs.cssText = ct}\n\n\toverride snapshot(rnd: Renderer, re: ()=> void) {\n\t\trnd.render(this.ctn, {clear: false});\n\t\tthis.#txs.snapshot(rnd, re);\n\t}\n\toverride snapshot_end() {this.#txs.snapshot_end()}\n\n\toverride makeDesignCast(gdc: IMakeDesignCast) {\n\t\tif (! this.ctn.visible) return;\n\t\tthis.#txs.makeDesignCast(gdc);\n\t}\n\toverride makeDesignCastChildren(gdc: IMakeDesignCast) {\n\t\tif (! this.ctn.visible) return;\n\t\tfor (const b of this.#cntBtn.children) b.makeDesignCast(gdc);\n\t}\n\n\toverride showDesignCast() {this.#txs.showDesignCast()}\n\toverride showDesignCastChildren() {\n\t\tfor (const b of this.#cntBtn.children) b.showDesignCast();\n\t}\n\n\toverride dump(): string {\n\t\tthis.#putCh('', 'gotxt|');\t// バッファの文字を印字してしまう\n\n\t\treturn super.dump() +`, \"enabled\":\"${this.enabled}\", ${this.#txs.dump()\n\t\t}, \"b_pic\":\"${this.#b_pic}\", \"b_color\":\"${this.#b_color\n\t\t}\", \"b_alpha\":${this.#b_alpha}, \"b_alpha_isfixed\":\"${this.#b_alpha_isfixed\n\t\t}\", \"width\":${this.#txs.getWidth}, \"height\":${this.#txs.getHeight\n\t\t}, \"pixi_obj\":[${\n\t\t\tthis.ctn.children.map(e=> `{\"class\":\"${\n\t\t\t\te instanceof Sprite ?'Sprite' :\n\t\t\t\t\te instanceof Graphics ?'Graphics' :\n\t\t\t\t\t\te instanceof Container ?'Container' :'?'\n\t\t\t}\", \"name\":\"${e.name}\", \"alpha\":${e.alpha}, \"x\":${e.x}, \"y\":${e.y}, \"visible\":\"${e.visible}\"}`).join(',')\n\t\t}], \"button\":[${\n\t\t\tthis.#cntBtn.children.map(b=> b.children[0]?.name ?? '{}').join(',')\n\t\t}]`;\n\t}\n\n}\n","/* eslint-disable @typescript-eslint/restrict-template-expressions */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, type IEvtMng, argChk_Boolean, argChk_Num} from './CmnLib';\nimport {CmnTween} from './CmnTween';\nimport type {IHTag, HArg} from './Grammar';\nimport type {IVariable, IMain, IGetFrm} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport type {Config} from './Config';\nimport {SEARCH_PATH_ARG_EXT} from './ConfigBase';\nimport {Reading} from './Reading';\n\nimport {type Application, Loader, LoaderResource} from 'pixi.js';\n\n\nexport class FrameMng implements IGetFrm {\n\tstatic\t#cfg\t: Config;\n\tstatic\t#sys\t: SysBase;\n\tstatic\t#main\t: IMain;\n\tstatic\tinit(cfg: Config, sys: SysBase, main: IMain): void {\n\t\tFrameMng.#cfg = cfg;\n\t\tFrameMng.#sys = sys;\n\t\tFrameMng.#main = main;\n\t}\n\n\tconstructor(hTag: IHTag, private readonly appPixi: Application, private readonly val: IVariable) {\n\t\t//\tHTMLフレーム\n\t\thTag.add_frame\t\t= o=> this.#add_frame(o);\t// フレーム追加\n\t\thTag.let_frame\t\t= o=> this.#let_frame(o);\t// フレーム変数を取得\n\t\thTag.set_frame\t\t= o=> this.#set_frame(o);\t// フレーム変数に設定\n\t\thTag.frame\t\t\t= o=> this.#frame(o);\t\t// フレームに設定\n\t\thTag.tsy_frame\t\t= o=> this.#tsy_frame(o);\t// フレームをトゥイーン開始\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {this.#evtMng = evtMng}\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hIfrm\t: {[id: string]: HTMLIFrameElement} = Object.create(null);\n\tdestroy() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tfor (const f of Object.values(this.#hIfrm)) f.parentElement!.removeChild(f);\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tthis.#hIfrm = Object.create(null);\n\t}\n\n\thideAllFrame() {\t// (表示・非表示を保存しつつ)すべて非表示に\n\t\tfor (const [id, {style}] of Object.entries(this.#hIfrm)) {\n\t\t\tthis.#hIfrmVisibleBk[id] = style.display !== 'none';\n\t\t\tstyle.display = 'none';\n\t\t}\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hIfrmVisibleBk: {[id: string]: boolean} = Object.create(null);\n\trestoreAllFrame() {\t// 保存していた表示・非表示を回復\n\t\tfor (const [id, v] of Object.entries(this.#hIfrmVisibleBk)) {\n\t\t\tconst f = this.#hIfrm[id];\n\t\t\tif (f) f.style.display = v ?'inline' :'none';\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tthis.#hIfrmVisibleBk = Object.create(null);\n\t}\n\n\t//\tHTMLフレーム\n\t// フレーム追加\n\t#add_frame(hArg: HArg) {\n\t\tconst {id, src, alpha: a=1, scale_x: sx=1, scale_y: sy=1, rotate: r=0,} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tif (! src) throw 'srcは必須です';\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】はすでにあります`;\n\n\t\tconst v = argChk_Boolean(hArg, 'visible', true);\n\t\tconst b_color = hArg.b_color ?` background-color: ${hArg.b_color};` :'';\n\t\tconst rct = this.#rect(hArg);\n\t\t// 【sandbox=\"allow-scripts allow-same-origin\"】は必要なのに警告が出るので削除\n\t\tFrameMng.#main.cvs.insertAdjacentHTML('beforebegin', `<iframe id=\"${id}\" style=\"opacity: ${a}; ${b_color} position: absolute; left:${\n\t\t\tFrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale\n\t\t}px; top: ${\n\t\t\tFrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale\n\t\t}px; z-index: 1; border: 0px; overflow: hidden; display: ${\n\t\t\tv ?'inline' :'none'\n\t\t}; transform: scale(${sx}, ${sy}) rotate(${r}deg);\" width=\"${\n\t\t\trct.width *FrameMng.#sys.cvsScale\n\t\t}\" height=\"${\n\t\t\trct.height *FrameMng.#sys.cvsScale\n\t\t}\"></iframe>`);\n\n\t\tconst RPN_ADD_FRAME = Reading.procID +`add_frame id:${id}`;\n\t\tReading.beginProc(RPN_ADD_FRAME);\n\t\tconst url = FrameMng.#cfg.searchPath(src, SEARCH_PATH_ARG_EXT.HTML);\n\t\tconst ld = (new Loader)\n\t\t.add({name: src, url, xhrType: LoaderResource.XHR_RESPONSE_TYPE.TEXT});\n\t\tif (FrameMng.#sys.arg.crypto) ld.use(\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t(res, next)=> void FrameMng.#sys.dec(res.extension, res.data)\n\t\t\t.then(r=> {\n\t\t\t\tres.data = r;\n\t\t\t\tnext();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> {\n\t\t\t\tFrameMng.#main.errScript(`[add_frame]Html ロード失敗です src:${res.name} ${e}`, false);\n\t\t\t\tnext();\n\t\t\t})\n\t\t);\n\t\tld.load((_ldr, hRes)=> {\n\t\t\tconst f = <HTMLIFrameElement>document.getElementById(id);\n\t\t\tthis.#hIfrm[id] = f;\n\t\t\tthis.#hDisabled[id] = false;\n\n\t\t\tconst iLastSep = url.lastIndexOf('/') +1;\n\t\t\tconst path_parent = url.slice(0, iLastSep);\n\t\t\tconst path_pa_pa = path_parent.slice(0, iLastSep);\n\t\t\tf.srcdoc = String(hRes[src]?.data)\t// .src はふりーむで問題発生\n\t\t\t.replace('sn_repRes();', '')\t// これはいずれやめる\n\t\t\t.replaceAll(\n\t\t\t\t/\\s(?:src|href)=([\"'])(\\S+?)\\1/g,\t// 【\\s】が大事、data-src弾く\n\t\t\t\t(m, br: string, v: string)=> v.startsWith('../')\n\t\t\t\t? path_pa_pa + m.slice(3)\n\t\t\t\t: m.replace('./', '')\t// 「./」は無視\n\t\t\t\t\t.replace(br, br + path_parent)\n\t\t\t);\n\n\t\t\tif (f.srcdoc.includes('true/*WEBP*/;')) f.srcdoc = f.srcdoc.replaceAll(\n\t\t\t\t/data-src=\"(.+?\\.)(?:jpe?g|png)/g,\n\t\t\t\t(_, p1: string)=> `data-src=\"${p1}webp`\n\t\t\t);\n\n\t\t\tf.onload = ()=> {\t// 一度変数に入れてここで設定するのはFirefox対応。ifrm.onloadが二度呼ばれる!\n\t\t\t\tReading.endProc(RPN_ADD_FRAME);\n\n\t\t\t\t// 組み込み変数\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn, true);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.alpha', a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', rct.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', rct.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', r);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', rct.width);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', rct.height);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.visible', v);\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst win = f.contentWindow!;\n\t\t\t\tthis.#evtMng.resvFlameEvent(<HTMLBodyElement>win.document.body);\n\t\t\t\t// sn_repRes()をコール。引数は画像ロード処理差し替えメソッド\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\t\t(<any>win).sn_repRes?.((i: HTMLImageElement)=> FrameMng.#loadPic2Img(i.dataset.src ?? '', i));\n\t\t\t};\n\t\t});\n\t\treturn true;\n\t}\n\t#hDisabled\t: {[id: string]: boolean}\t= {};\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tgetFrmDisabled(id: string): boolean {return this.#hDisabled[id]!}\n\t#rect(hArg: HArg): DOMRect {\n\t\tconst a = {...hArg};\n\t\tconst re = FrameMng.#sys.resolution;\n\t\treturn new DOMRect(\n\t\t\targChk_Num(a, 'x', 0) *re,\n\t\t\targChk_Num(a, 'y', 0) *re,\n\t\t\targChk_Num(a, 'width', CmnLib.stageW) *re,\n\t\t\targChk_Num(a, 'height', CmnLib.stageH) *re,\n\t\t);\n\t}\n\n\tstatic\t#loadPic2Img(src: string, img: HTMLImageElement, onload?: (img2: HTMLImageElement)=> void) {\n\t\tconst oUrl = this.#hEncImgOUrl[src];\n\t\tif (oUrl) {\n\t\t\timg.src = oUrl;\n\t\t\tif (onload) img.onload = ()=> onload(img);\n\t\t\treturn;\n\t\t}\n\n\t\tconst aImg = this.#hARetImg[src];\n\t\tif (aImg) {aImg.push(img); return}\t// load 終了前の駆け込み対応\n\t\tthis.#hARetImg[src] = [img];\n\n\t\tconst [srcNoPrm='', Prm=''] = src.split('?');\n\t\tconst path = FrameMng.#cfg.searchPath(srcNoPrm, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\tconst ld2 = (new Loader)\n\t\t.add({name: src, url: path, xhrType: LoaderResource.XHR_RESPONSE_TYPE.BUFFER,});\n\n\t\t// === vite-electron 用コード ===\n\t\tif (FrameMng.#sys.use4ViteElectron(src, path, ld2, FrameMng.#main)) { /* empty */ }\n\t\telse\n\t\tif (FrameMng.#sys.arg.crypto && path.endsWith('.bin')) ld2.use((res, next)=> {\n\t\t\tif (res.extension !== 'bin') {next(); return}\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tvoid FrameMng.#sys.decAB(res.data)\n\t\t\t.then(r=> {\n\t\t\t\tres.data = r;\n\t\t\t\tif (r instanceof HTMLImageElement) res.type = LoaderResource.TYPE.IMAGE;\n\t\t\t\tnext();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> {\n\t\t\t\tFrameMng.#main.errScript(`FrameMng loadPic ロード失敗です fn:${res.name} ${e}`, false)\n\t\t\t\tnext();\n\t\t\t});\n\t\t});\n\t\tld2.load((_ldr, hRes)=> {\n\t\t\tfor (const [s2, {data: {src}}] of Object.entries(hRes)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n\t\t\t\tconst u2 = this.#hEncImgOUrl[s2] = src + (\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\tsrc.startsWith('blob:') || src.startsWith('data:')\n\t\t\t\t\t?'' :Prm ? '?'+ Prm: ''\n\t\t\t\t);\n\t\t\t\tconst ri = this.#hARetImg[s2];\n\t\t\t\tif (ri) for (const i of ri) {\n\t\t\t\t\ti.src = u2;\n\t\t\t\t\tif (onload) i.onload = ()=> onload(i);\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete this.#hARetImg[s2];\n\t\t\t//\tURL.revokeObjectURL(u2);// 画面遷移で毎回再生成するので\n\t\t\t}\n\t\t});\n\t}\n\tstatic\t#hARetImg\t\t: {[src: string]: HTMLImageElement[]}\t= {};\n\tstatic\t#hEncImgOUrl\t: {[src: string]: string}\t\t\t\t= {};\n\n\n\tcvsResize() {\t// NOTE: フォントサイズはどう変更すべきか\n\t\tfor (const [id, f] of Object.entries(this.#hIfrm)) {\n\t\t\tconst vn = 'const.sn.frm.'+ id;\n\t\t\tconst x = Number(this.val.getVal(vn +'.x'));\n\t\t\tconst y = Number(this.val.getVal(vn +'.y'));\n\t\t\tconst w = Number(this.val.getVal(vn +'.width'));\n\t\t\tconst h = Number(this.val.getVal(vn +'.height'));\n\t\t\tf.style.left = `${FrameMng.#sys.ofsLeft4elm +x *FrameMng.#sys.cvsScale}px`;\n\t\t\tf.style.top = `${FrameMng.#sys.ofsTop4elm +y *FrameMng.#sys.cvsScale}px`;\n\t\t\tf.width = String(w *FrameMng.#sys.cvsScale);\n\t\t\tf.height = String(h *FrameMng.#sys.cvsScale);\n\t\t}\n\t}\n\n\t// フレーム変数を取得\n\t#let_frame(hArg: HArg) {\n\t\tconst {id, var_name} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】が読み込まれていません`;\n\t\tif (! var_name) throw 'var_nameは必須です';\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tconst win = f.contentWindow!;\n\t\tif (! Object.hasOwn(win, var_name)) throw `frame【${id}】に変数/関数【${var_name}】がありません。変数は var付きにして下さい`;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n\t\tconst v = (<any>win)[var_name];\n\t\t// var変数 / 関数実行の戻り値 -> 組み込み変数\n\t\tthis.val.setVal_Nochk(\n\t\t\t'tmp',\n\t\t\tvn +'.'+ var_name,\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call\n\t\t\targChk_Boolean(hArg, 'function', false) ?v() :v\n\t\t);\n\n\t\treturn false;\n\t}\n\n\t// フレーム変数に設定\n\t#set_frame(hArg: HArg) {\n\t\tconst {id, var_name, text} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】が読み込まれていません`;\n\t\tif (! var_name) throw 'var_nameは必須です';\n\t\tif (! text) throw 'textは必須です';\n\n\t\t// -> 組み込み変数\n\t\tthis.val.setVal_Nochk('tmp', vn +'.'+ var_name, text);\n\n\t\t// -> var変数に設定\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion\n\t\tconst win: any = f.contentWindow!;\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\twin[var_name] = text;\n\n\t\treturn false;\n\t}\n\n\t// フレームに設定\n\t#zIdx = 1;\n\t#frame(hArg: HArg) {\n\t\tconst {id} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal('tmp:'+ vn)) throw `frame【${id}】が読み込まれていません`;\n\n\t\tconst s = f.style;\n\t\tif (argChk_Boolean(hArg, 'float', false)) s.zIndex = `${++this.#zIdx}`;\n\t\telse if ('index' in hArg) s.zIndex = `${argChk_Num(hArg, 'index', 0)}`;\n\t\telse if (hArg.dive) s.zIndex = `-${++this.#zIdx}`;\n\n\t\tif ('alpha' in hArg) {\n\t\t\tconst a = s.opacity = String(hArg.alpha);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.alpha', a);\n\t\t}\n\t\tconst rct = this.#rect(hArg);\n\t\tif ('x' in hArg || 'y' in hArg) {\n\t\t\ts.left = `${FrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale}px`;\n\t\t\ts.top = `${FrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale}px`;\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', rct.x);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', rct.y);\n\t\t}\n\t\tif ('scale_x' in hArg || 'scale_y' in hArg || 'rotate' in hArg) {\n\t\t\tconst sx = argChk_Num(hArg, 'scale_x', 1);\n\t\t\tconst sy = argChk_Num(hArg, 'scale_y', 1);\n\t\t\tconst r = argChk_Num(hArg, 'rotate', 0);\n\t\t\ts.transform = `scale(${sx}, ${sy}) rotate(${r}deg)`;\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', sx);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', sy);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', r);\n\t\t}\n\t\tif ('width' in hArg) {\n\t\t\tf.width = String(rct.width *FrameMng.#sys.cvsScale);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', rct.width);\n\t\t}\n\t\tif ('height' in hArg) {\n\t\t\tf.height = String(rct.height *FrameMng.#sys.cvsScale);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', rct.height);\n\t\t}\n\t\tif ('visible' in hArg) {\n\t\t\tconst v = argChk_Boolean(hArg, 'visible', true);\n\t\t\ts.display = v ?'inline' :'none';\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.visible', v);\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tif ('b_color' in hArg) s.backgroundColor = hArg.b_color!;\n\t\tif ('disabled' in hArg) {\n\t\t\tconst d = this.#hDisabled[id] = argChk_Boolean(hArg, 'disabled', true);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst b = f.contentDocument!.body;\n\t\t\tfor (const e of [\n\t\t\t\t...Array.from(b.getElementsByTagName('input')),\n\t\t\t\t...Array.from(b.getElementsByTagName('select')),\n\t\t\t]) e.disabled = d;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t// フレームをトゥイーン開始\n\t#tsy_frame(hArg: HArg) {\n\t\tconst {id, alpha, x, y, scale_x, scale_y, rotate, width, height} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`, 0)) throw `frame【${id}】が読み込まれていません`;\n\n\t\tconst hNow: {[val_name: string]: number} = {};\n\t\tif (alpha) hNow.a = Number(f.style.opacity);\n\t\tif (x || y || scale_x || scale_y || rotate) {\n\t\t\thNow.x = Number(this.val.getVal(`tmp:${vn}.x`));\n\t\t\thNow.y = Number(this.val.getVal(`tmp:${vn}.y`));\n\t\t\thNow.sx = Number(this.val.getVal(`tmp:${vn}.scale_x`));\n\t\t\thNow.sy = Number(this.val.getVal(`tmp:${vn}.scale_y`));\n\t\t\thNow.r = Number(this.val.getVal(`tmp:${vn}.rotate`));\n\t\t}\n\t\tif (width) hNow.w = Number(this.val.getVal(`tmp:${vn}.width`));\n\t\tif (height) hNow.h = Number(this.val.getVal(`tmp:${vn}.height`));\n\t\tconst hArg2 = CmnTween.cnvTweenArg(hArg, hNow);\n\n\t\tconst hTo: {[val_name: string]: number} = {};\n\t\tlet fncA = ()=> { /* empty */ };\n\t\tif (alpha) {\n\t\t\thTo.a = argChk_Num(hArg2, 'alpha', 0);\n\t\t\tfncA = ()=> {\n\t\t\t\tf.style.opacity = String(hNow.a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', 'alpha', hNow.a);\n\t\t\t};\n\t\t}\n\t\tlet fncXYSR = ()=> { /* empty */ };\n\t\tconst rct = this.#rect(hArg2);\n\t\tif (x || y || scale_x || scale_y || rotate) {\n\t\t\thTo.x = rct.x;\n\t\t\thTo.y = rct.y;\n\t\t\thTo.sx = argChk_Num(hArg2, 'scale_x', 1);\n\t\t\thTo.sy = argChk_Num(hArg2, 'scale_y', 1);\n\t\t\thTo.r = argChk_Num(hArg2, 'rotate', 0);\n\t\t\tfncXYSR = ()=> {\n\t\t\t\tf.style.left = `${\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tFrameMng.#sys.ofsLeft4elm +hNow.x! *FrameMng.#sys.cvsScale\n\t\t\t\t} px`;\n\t\t\t\tf.style.top = `${\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tFrameMng.#sys.ofsTop4elm +hNow.y! *FrameMng.#sys.cvsScale\n\t\t\t\t} px`;\n\t\t\t\tf.style.transform = `scale(${hNow.sx}, ${hNow.sy}) rotate(${hNow.r}deg)`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', hNow.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', hNow.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', hNow.sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', hNow.sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', hNow.r);\n\t\t\t};\n\t\t}\n\t\tlet fncW = ()=> { /* empty */ };\n\t\tif (width) {\n\t\t\thTo.w = rct.width;\n\t\t\tfncW = ()=> {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tf.width = `${hNow.w! *FrameMng.#sys.cvsScale} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', hNow.w);\n\t\t\t};\n\t\t}\n\t\tlet fncH = ()=> { /* empty */ };\n\t\tif (height) {\n\t\t\thTo.h = rct.height;\n\t\t\tfncH = ()=> {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tf.height = `${hNow.h! *FrameMng.#sys.cvsScale} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', hNow.h);\n\t\t\t};\n\t\t}\n\n\t\tthis.appPixi.stage.interactive = false;\n\t\tCmnTween.tween(`frm\\n${id}`, hArg, hNow, CmnTween.cnvTweenArg(hArg, hNow), ()=> {\n\t\t\tfncA(); fncXYSR(); fncW(); fncH();\n\t\t}, ()=> {this.appPixi.stage.interactive = true}, ()=> { /* empty */ });\n\n\t\treturn false;\n\t}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2025-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport type {HArg, IHTag} from './Grammar';\nimport type {IVariable} from './CmnInterface';\nimport type {T_CFG} from './ConfigBase';\n\n\nexport type T_LOG = {\n\trecText\t\t: (txt: string)=> void;\n\tpagebreak: ()=> void;\n};\n\ntype T_LOG_DATA = HArg & {\n\ttext\t: string;\t// 履歴文字列\n}\n\n\n// ログ管理\n//\t・要求仕様\n//\t\t[ch][rec_ch][rec_r][reset_rec] で履歴を記録・操作し、\n//\t\t変数 🦀const.sn.log.json を取得したときにいい感じの値を返す。\nexport class Log implements T_LOG {\n\t#LastLog\t: T_LOG_DATA\t= {text: ''};\t// 🌾\n\t#aLog\t\t: T_LOG_DATA[]\t= [];\t\t\t// 🍚\n\n\n\tconstructor(private readonly oCfg: T_CFG, private readonly hTag: IHTag, private readonly val: IVariable) {\n\t\thTag.rec_ch\t\t\t= o=> this.#rec_ch(o);\t\t// 履歴書き込み\n\t\thTag.rec_r\t\t\t= o=> this.#rec_r(o);\t\t// 履歴改行\n\t\thTag.reset_rec\t\t= o=> this.#reset_rec(o);\t// 履歴リセット\n\n\t\t// 履歴 JSON テキスト\n\t\t// 【内部変数】(ざっくりと)🦀 = 🍚this.#aLog + 🌾this.#LastLog\n\t\tval.defTmp('const.sn.log.json', ()=> {\n\t\t\t// HTML連結を一つにまとめる(始端終端のタグのみにする)\n\t\t\t//\ttext追加時ではなく、値を参照されるこのときまで遅らせて処理\n\t\t\tthis.#LastLog.text =\t// 🌾\n\t\t\tthis.#LastLog.text\n\t\t\t.replaceAll('</span><span class=\\'sn_ch\\'>', '');\n\n\t\t\tconst o = [...this.#aLog, this.#LastLog];\t// 🍚 + 🌾\n\t\t\treturn JSON.stringify(o);\t// 🦀\n\t\t});\n\t\tthis.recText('');\n\t}\n\n\t// [ch] からコールされる\n\t//\t[ch]\t\t// 文字を追加する\n\t\t// recText(text: string) コール\n\t\t// \t🌾this.#LastLog\t\t= {text};\t// 置換でよい\n\t\t// \t🍊save:const.sn.sLog = 🦀const.sn.log.json\t// これを起動したい\n\trecText(text: string) {\n\t\tthis.#LastLog.text = text;\t\t// 🌾 text は置換でよい\n\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog',\t// 🍊 リプレイ時の回復用\n\t\t\tString(this.val.getVal('const.sn.log.json'))\t// これを起動したい\n\t\t);\n\t}\n\n\t//MARK: 履歴書き込み\n\t//\t🌾this.#LastLog = {...hArg, text: 🌾this.#LastLog.text};\n\t#rec_ch(hArg: HArg) {\n\t\tthis.#LastLog = {...hArg, text: this.#LastLog.text};\n\t\tif (! hArg.text) {\n\t\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog',// 🍊 リプレイ時の回復用\n\t\t\t\tString(this.val.getVal('const.sn.log.json'))// これを起動したい\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\thArg.record = true;\n\t\thArg.style ??= '';\n\t\thArg.style += 'display: none;';\t// gotxt内で削除し履歴に表示\n\t\thArg.wait = 0;\n\t\treturn this.hTag.ch(hArg);\t// この先は text, style, r_style 以外破棄されてしまうので注意\n\t}\n\n\t//MARK: 履歴改行\n\t#rec_r(hArg: HArg) {return this.#rec_ch({...hArg, text: '[r]'})}\n\n\t//MARK: 履歴リセット\n\t//\t以下をクリア。text で置き換え値を設定できる\n\t//\t🌾this.#LastLog\t\t= {text: hArg.text ?? ''};\n\t//\t🍚this.#aLog\t\t= []\n\t//\t🍊save:const.sn.sLog= hArg.text ?[{text:\"${hArg.text}\"}] : []\n\t#reset_rec(hArg: HArg) {\n\t\tthis.#aLog = [];\n\t\thArg.text ??= '';\n\t\tthis.#LastLog = {text: hArg.text};\t\t// 🌾\n\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog', JSON.stringify([this.#LastLog]));\t// 🍊 リプレイ時の回復用\n\n\t\treturn false;\n\t}\n\n\t//MARK: 履歴改ページ\n\tpagebreak() {\n\t\tthis.#LastLog.text =\t// 🌾\n\t\tthis.#LastLog.text\n\t\t.replaceAll('</span><span class=\\'sn_ch\\'>', '');\n\n\t\tif (! this.#LastLog.text) return;\t//\t🌾this.#LastLog\n\n\t\tif (this.#aLog.push(this.#LastLog) > this.oCfg.log.max_len) this.#aLog = this.#aLog.slice(-this.oCfg.log.max_len);\n\t\tthis.#LastLog = {text: ''};\t\t// 🌾\n\t}\n\n\t//MARK: 履歴回復\n\t// save:const.sn.sLog からの復帰\n\tplayback() {\n\t\tthis.#aLog = <T_LOG_DATA[]>JSON.parse(String(this.val.getVal('save:const.sn.sLog')));\t\t// 🍚this.#aLog\t= 🍊 リプレイ時の回復用\n\t\tthis.#LastLog = {text: ''};\t\t// 🌾\n\t}\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, getDateStr, uint, type IEvtMng, argChk_Boolean, argChk_Num, addStyle, argChk_Color, parseColor} from './CmnLib';\nimport {CmnTween, TMP_TSY_NM, TW_INT_TRANS} from './CmnTween';\nimport type {IHTag, HArg} from './Grammar';\nimport type {IVariable, IMain, HIPage, IGetFrm, IPropParser} from './CmnInterface';\nimport {Pages} from './Pages';\nimport {Layer} from './Layer';\nimport {GrpLayer} from './GrpLayer';\nimport {SpritesMng} from './SpritesMng';\nimport {type T_cmdTxt_JSON, TxtLayer} from './TxtLayer';\nimport {RubySpliter} from './RubySpliter';\nimport {TxtStage} from './TxtStage';\nimport {PROTOCOL_DL, PROTOCOL_USERDATA, type Config} from './Config';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {SysBase} from './SysBase';\nimport {FrameMng} from './FrameMng';\nimport {Button} from './Button';\nimport type {SoundMng} from './SoundMng';\nimport {DesignCast} from './DesignCast';\nimport {EventListenerCtn} from './EventListenerCtn';\nimport {Reading} from './Reading';\nimport {Log} from './Log';\n\nimport {Container, type Application, Graphics, Filter, RenderTexture, Sprite, autoDetectRenderer, Texture} from 'pixi.js';\n\n\nexport type IMakeDesignCast = (idc: DesignCast)=> void;\n\nexport type HPage = {[ln: string]: Pages};\n\nfunction cnvSArg(o: T_cmdTxt_JSON) {\n\t\t// わざと使う側で <T_cmdTxt_JSON> させる。そっちで不具合を見つけてもらう\n\treturn encodeURIComponent(JSON.stringify(o));\n}\n\n\nexport class LayerMng implements IGetFrm {\n\treadonly\t#stage\t: Container;\n\t\t\t\t#fore\t= new Container;\n\t\t\t\t#back\t= new Container;\n\n\treadonly\t#frmMng\t\t: FrameMng;\n\treadonly\t#bg_color\t: number;\n\n\treadonly\t#log;\n\n\treadonly\t#elc\t\t= new EventListenerCtn;\n\n\t//MARK: コンストラクタ\n\tconstructor(private readonly cfg: Config, private readonly hTag: IHTag, private readonly appPixi: Application, private readonly val: IVariable, private readonly main: IMain, private readonly scrItr: ScriptIterator, private readonly sys: SysBase, sndMng: SoundMng, prpPrs: IPropParser) {\n\t\t// レスポンシブや回転・全画面切り替え・DevTools 表示切り替えの対応\n\t\tconst fncResizeLay = ()=> {\n\t\t\tsys.cvsResize();\n\t\t\tthis.cvsResizeDesign();\n\t\t\tif (this.#modeLnSub) for (const ln of this.#aLayName) {\n\t\t\t\tthis.#hPages[ln]!.fore.cvsResizeChildren();\n\t\t\t}\n\t\t\telse for (const ln of this.#aLayName) {\n\t\t\t\tthis.#hPages[ln]!.fore.cvsResize();\n\t\t\t}\n\n\t\t\tthis.#frmMng.cvsResize();\n\t\t\tthis.#evtMng.cvsResize();\n\t\t};\n\t\tif (CmnLib.isMobile) {\n\t\t\tthis.#elc.add(globalThis, 'orientationchange', fncResizeLay, {passive: true});\n\t\t}\n\t\telse {\n\t\t\tlet tid: NodeJS.Timeout | undefined = undefined;\n\t\t\tthis.#elc.add(globalThis, 'resize', ()=> {\n\t\t\t\tif (tid) return;\n\t\t\t\ttid = setTimeout(()=> {tid = undefined; fncResizeLay()}, 1000 /60 *10);\t// clearTimeout()不要と判断\n\t\t\t}, {passive: true});\n\t\t}\n\t\tsys.cvsResize();\n\n\t\tthis.#log = new Log(this.cfg.oCfg, hTag, val);\n\t\tTxtLayer.init(cfg, hTag, val, this.#log, me=> this.#hPages[me.layname]!.fore === me, appPixi);\n\t\tGrpLayer.init(main, cfg, appPixi, sys, sndMng, val);\n\t\tFrameMng.init(cfg, sys, main);\n\t\tButton.init(cfg);\n\n\t\tthis.#frmMng = new FrameMng(hTag, appPixi, val);\n\t\tsys.hFactoryCls.grp = ()=> new GrpLayer;\n\t\tsys.hFactoryCls.txt = ()=> new TxtLayer;\n\n\t\t//\tシステム\n\t\thTag.loadplugin\t\t= o=> this.#loadplugin(o);\t// プラグインの読み込み\n\t\t//hTag.set_focus\t// EventMng.tsで定義\t \t// フォーカス移動\n\t\thTag.snapshot\t\t= o=> this.#snapshot(o);\t// スナップショット\n\t\tthis.#snapshot4proc = this.sys.isApp\n\t\t\t? (hArg, url, width, height, RPN_SNAPSHOT)=> this.#snapshot4app(hArg, url, width, height, RPN_SNAPSHOT)\n\t\t\t: (hArg, url, width, height, RPN_SNAPSHOT)=> this.#snapshot4web(hArg, url, width, height, RPN_SNAPSHOT);\n\n\t\t//\tレイヤ共通\n\t\thTag.add_lay\t\t= o=> this.#add_lay(o);\t\t// レイヤを追加する\n\t\thTag.clear_lay\t\t= o=> this.#clear_lay(o);\t// レイヤ設定の消去\n\t\thTag.finish_trans\t= ()=> false;\t\t\t\t// トランス強制終了\n\t\thTag.lay\t\t\t= o=> this.#lay(o);\t\t\t// レイヤ設定\n\t\thTag.trans\t\t\t= o=> this.#trans(o);\t\t// ページ裏表を交換\n\t\thTag.wt\t\t\t\t= o=> CmnTween.wt(o);\t\t// トランス終了待ち\n\n\t\thTag.quake\t\t\t= o=> this.#quake(o);\t\t// 画面を揺らす\n\t\thTag.stop_quake\t\t= hTag.finish_trans;\t\t// 画面揺らし中断\n\t\thTag.wq\t\t\t\t= hTag.wt;\t\t\t\t\t// 画面揺らし終了待ち\n\n\t\thTag.pause_tsy\t\t= o=> CmnTween.pause_tsy(o);\t// 一時停止\n\t\thTag.resume_tsy\t\t= o=> CmnTween.resume_tsy(o);\t// 一時停止再開\n\t\thTag.stop_tsy\t\t= o=> CmnTween.stop_tsy(o);\t// トゥイーン中断\n\t\thTag.tsy\t\t\t= o=> this.#tsy(o);\t\t\t// トゥイーン開始\n\t\thTag.wait_tsy\t\t= o=> CmnTween.wait_tsy(o);\t// トゥイーン終了待ち\n\n\t\thTag.add_filter\t\t= o=> this.#add_filter(o);\t// フィルター追加\n\t\thTag.clear_filter\t= o=> this.#clear_filter(o);// フィルター全削除\n\t\thTag.enable_filter\t= o=> this.#enable_filter(o);// フィルター個別切替\n\n\t\t//\t文字・文字レイヤ\n\t//\thTag.auto_pager\t\t= o=> this.auto_pager(o);\t// 自動改ページの設定\n\t\t//hTag.autowc\t\t// TxtLayer.ts で定義\t\t// 文字ごとのウェイト\n\t\thTag.ch\t\t\t\t= o=> this.#ch(o);\t\t\t// 文字を追加する\n\t\t//hTag.ch_in_style\t// TxtLayer.ts で定義\t\t// 文字出現文字出現演出\n\t\t//hTag.ch_out_style\t// TxtLayer.ts で定義\t\t// 文字消去文字出現演出\n\t\thTag.clear_text\t\t= o=> this.#clear_text(o);\t// 文字消去\n\t\thTag.current\t\t= o=> this.#current(o);\t\t// デフォルト文字レイヤ設定\n\t\thTag.endlink\t\t= o=> this.#endlink(o);\t\t// ハイパーリンクの終了\n\t\thTag.er\t\t\t\t= o=> this.#er(o);\t\t\t// ページ両面の文字消去\n\t\thTag.graph\t\t\t= o=> this.#graph(o);\t\t// インライン画像表示\n\t\thTag.link\t\t\t= o=> this.#link(o);\t\t// ハイパーリンク\n\t\thTag.r\t\t\t\t= o=> this.#r(o);\t\t\t// 改行\n\t\t// hTag.rec_ch\t\t// Log.ts で定義\t\t\t// 履歴書き込み\n\t\t// hTag.rec_r\t\t// Log.ts で定義\t\t\t// 履歴改行\n\t\t// hTag.reset_rec\t// Log.ts で定義\t\t\t// 履歴リセット\n\t\t//hTag.ruby\t\t\t= o=> this.ruby(o);\t\t\t// 直前一文字のルビ(廃止\n\t\t\t// タグでは無く、「|@《》」というスクリプト書き換えで良い\n\t\thTag.ruby2\t\t\t= o=> this.#ruby2(o);\t\t// 文字列と複数ルビの追加\n\t\thTag.span\t\t\t= o=> this.#span(o);\t\t// インラインスタイル設定\n\t\thTag.tcy\t\t\t= o=> this.#tcy(o);\t\t\t// 縦中横を表示する\n\n\t\t//\t画像・画像レイヤ\n\t\thTag.add_face\t\t= o=> SpritesMng.add_face(o);\t// 差分名称の定義\n\n\t\t//\tムービーレイヤ\n\t\thTag.wv\t\t\t\t= o=> SpritesMng.wv(o);\t\t// ムービー再生終了待ち\n\n\t\t//\tデバッグ・その他\n\t\thTag.dump_lay\t\t= o=> this.#dump_lay(o);\t// レイヤのダンプ\n\n\t\t//\tイベント\n\t\thTag.enable_event\t= o=> this.#enable_event(o);// イベント有無の切替\n\n\t\t//\tラベル・ジャンプ\n\t\thTag.button\t\t\t= o=> this.#button(o);\t\t// ボタンを表示\n\n\n\t\tif (cfg.existsBreakline) this.breakLine = (hArg: HArg)=> {\n\t\t\tdelete hArg.visible;\n\t\t\thArg.id = 'break';\n\t\t\thArg.pic= 'breakline';\n\t\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON>hArg));\n\t\t};\n\t\tif (cfg.existsBreakpage) this.breakPage = (hArg: HArg)=> {\n\t\t\tdelete hArg.visible;\n\t\t\thArg.id = 'break';\n\t\t\thArg.pic= 'breakpage';\n\t\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON>hArg));\n\t\t};\n\n\t\tthis.#bg_color = parseColor(String(cfg.oCfg.init.bg_color));\n\t\tconst grp = new Graphics;\n\t\tgrp\n\t\t.beginFill(this.#bg_color)\t// イベントを受け取るためにも塗る\n\t\t.lineStyle(0, this.#bg_color)\n\t\t.drawRect(0, 0, CmnLib.stageW, CmnLib.stageH)\n\t\t.endFill();\n\t\tthis.#fore.addChild(grp.clone());\n\t\tthis.#back.addChild(grp);\n\t\tthis.#back.visible = false;\n\t\tthis.#fore.name = 'page:A';\t// 4tst\n\t\tthis.#back.name = 'page:B';\t// 4tst\n\n\t\tthis.#stage = appPixi.stage;\n\t\tthis.#stage.addChild(this.#back);\n\t\tthis.#stage.addChild(this.#fore);\n\t\tthis.#stage.addChild(this.#spTransBack);\n\t\tthis.#stage.addChild(this.#spTransFore);\n\t\tthis.#stage.name = 'stage';\t// 4tst\n/*\n\t\tconsole.group('new DispMng info');\n\t\tconsole.info(appPixi.renderer);\n\t\tconsole.info('utils.isMobile():'+ utils.isMobile.any);\n\t\t\t\t// https://github.com/kaimallea/isMobile\n\t\tconsole.info('utils.isWebGLSupported():'+ utils.isWebGLSupported());\n\t\tconsole.info('w:%O: h:%O:', CmnLib.stageW, CmnLib.stageH);\n\t\tconsole.groupEnd();\n*/\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst fncTxt_b_alpha = (_name: string, val: any)=> {\n\t\t\tthis.#foreachRedrawTxtLayBack(Number(val))\n\t\t};\n\t\tfncTxt_b_alpha('', val.getVal('sys:TextLayer.Back.Alpha', 1));\n\t\tval.defValTrg('sys:TextLayer.Back.Alpha', fncTxt_b_alpha);\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n\t\tconst fncBtnFont = (_name: string, val: any)=> {Button.fontFamily = val};\n\t\tfncBtnFont('', val.getVal('tmp:sn.button.fontFamily', Button.fontFamily));\n\t\tval.defValTrg('tmp:sn.button.fontFamily', fncBtnFont);\n\n\t\tval.defTmp('const.sn.last_page_text', ()=> this.currentTxtlayFore?.pageText ?? '');\n\t\tval.defTmp('const.sn.last_page_plain_text', ()=> this.currentTxtlayFore?.pagePlainText ?? '');\n\t\tif (CmnLib.isDbg) {\n\t\t\tDesignCast.init(appPixi, sys, scrItr, prpPrs, cfg, this.#hPages);\n\t\t\tthis.cvsResizeDesign = ()=> DesignCast.cvsResizeDesign();\n\t\t\tsys.addHook((type, o)=> {\n\t\t\t\tif (! this.#hProcDbgRes[type]?.(type, o)) return;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete this.#hProcDbgRes[type];\n\t\t\t});\n\t\t}\n\t}\n\tprivate\tcvsResizeDesign() { /* empty */ }\n\n\n\treadonly\t#hProcDbgRes\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t: {[type: string]: (type: string, o: any)=> boolean}\t= {\n\t\tattach\t\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\tcontinue\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\tdisconnect\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\t_enterDesign: _=> {\n\t\t\tDesignCast.enterMode();\n\t\t\tfor (const ln of this.#aLayName) {\n\t\t\t\tconst lay = this.#hPages[ln]!.fore;\n\t\t\t\tlay.makeDesignCastChildren(gdc=> gdc.make());\n\t\t\t\tlay.makeDesignCast(gdc=> gdc.make());\n\t\t\t}\n\n\t\t\tthis.#selectNode(this.#curTxtlay);\treturn false;\n\t\t//\tthis.selectNode('mes/ボタン');\treturn false;\t// Test用\n\t\t//\tthis.selectNode(this.firstGrplay);\treturn false;\n\t\t\t\t// 制作中は普通画像レイヤをいじるのが主なので、これがいい\n\t\t},\n\t\t_replaceToken: (_, o)=> {DesignCast.replaceToken(o); return false},\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t_selectNode\t: (_, o)=> {this.#selectNode(o.node); return false},\n\t}\n\t#modeLn\t\t= '';\n\t#modeLnSub\t= '';\n\t#selectNode(node: string) {\n\t\t[this.#modeLn='', this.#modeLnSub=''] = node.split('/');\n\t\tconst pages = this.#hPages[this.#modeLn];\n\t\tif (! pages) return;\n\n\t\tDesignCast.allHide();\n\t\tif (this.#modeLnSub) pages.fore.showDesignCastChildren();\n\t\telse pages.fore.showDesignCast();\n\t}\n\n\tgetFrmDisabled = (id: string)=> this.#frmMng.getFrmDisabled(id);\n\n\t#grpCover : Graphics | undefined = undefined;\n\tcover(visible: boolean, bg_color = 0x0) {\n\t\tif (this.#grpCover) {\n\t\t\tthis.#stage.removeChild(this.#grpCover);\n\t\t\tthis.#grpCover.destroy();\n\t\t\tthis.#grpCover = undefined;\n\t\t}\n\t\tif (visible) this.#stage.addChild(\n\t\t\t(this.#grpCover = new Graphics)\n\t\t\t.beginFill(bg_color)\n\t\t\t.lineStyle(0, bg_color)\n\t\t\t.drawRect(0, 0, CmnLib.stageW, CmnLib.stageH)\n\t\t\t.endFill()\n\t\t);\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {\n\t\tthis.#evtMng = evtMng;\n\t\tthis.#frmMng.setEvtMng(evtMng);\n\t\tSpritesMng.setEvtMng(evtMng);\n\t\tCmnTween.init(evtMng, this.appPixi);\n\t}\n\n\tdestroy() {\n\t\tfor (const p of Object.values(this.#hPages)) p.destroy();\n\n\t\tthis.#elc.clear();\n\t\tGrpLayer.destroy();\n\t\tRubySpliter.destroy();\n\t\tTxtStage.destroy();\n\t\tTxtLayer.destroy();\n\n\t\tthis.#frmMng.destroy();\n\n\t\tCmnTween.destroy();\n\t\tLayerMng.#msecChWait = 10;\n\t}\n\n\n\t// 既存の全文字レイヤの実際のバック不透明度、を再計算\n\t#foreachRedrawTxtLayBack(g_alpha: number) {\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tif (! (fore instanceof TxtLayer)) continue;\n\t\t\tfore.chgBackAlpha(g_alpha);\n\t\t\t(<TxtLayer>back).chgBackAlpha(g_alpha);\n\t\t}\n\t}\n\n\n\t#cmdTxt = (cmd: string, tl = this.currentTxtlayForeNeedErr, _record = true)=> tl.tagCh('| 《'+ cmd +'》');\n\tgoTxt = ()=> { /* empty */ };\n\tget needGoTxt() {return this.currentTxtlayFore?.needGoTxt ?? false;}\n\tbreakLine = (_hArg: HArg)=> { /* empty */ };\n\tbreakPage = (_hArg: HArg)=> { /* empty */ };\n\tclearBreak() {\n\t\tif (! this.currentTxtlayFore) return;\n\n\t\tthis.clearBreak = ()=> this.#cmdTxt('del|break');\n\t\tthis.clearBreak();\n\t}\n\n\tclickTxtLay(): boolean {\t// true: 文字出現中だったので、停止する\n\t\tif (! this.currentTxtlayFore) return false;\n\n\t\treturn this.#aLayName\n\t\t.map(ln=> this.#hPages[ln]!.fore)\n\t\t.some(f=> f instanceof TxtLayer && f.click());\n\t}\n\n\n//\t//\tシステム\n\t//MARK: スナップショット\n\t#snapshot(hArg: HArg) {\n\t\tconst dt = getDateStr('-', '_', '', '_');\n\t\tconst fn0 = hArg.fn\n\t\t? hArg.fn.startsWith(PROTOCOL_USERDATA)\n\t\t\t? hArg.fn\n\t\t\t: `${PROTOCOL_DL + hArg.fn + dt}.png`\n\t\t: `${PROTOCOL_DL}snapshot${dt}.png`;\n\t\tconst url = this.cfg.searchPath(fn0);\n\t\tconst width = argChk_Num(hArg, 'width', CmnLib.stageW);\n\t\tconst height= argChk_Num(hArg, 'height', CmnLib.stageH);\n\t\treturn this.#snapshot4proc(hArg, url, width, height, `snapshot dt:${dt}`);\n\t}\n\t#snapshot4proc :(hArg: HArg, url: string, width: number, height: number, RPN_SNAPSHOT: string)=> boolean = ()=> false;\n\t#snapshot4app({layer}: HArg, url: string, width: number, height: number, RPN_SNAPSHOT: string): boolean {\n\t\tthis.#frmMng.hideAllFrame();\n\t\tReading.beginProc(RPN_SNAPSHOT);\n\t\tif (! layer) {\n\t\t\tthis.sys.capturePage(url, width, height, ()=> {\n\t\t\t\tthis.#frmMng.restoreAllFrame();\n\t\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\t// 一時的に非表示にしてスナップショット\n\t\tconst aBk = this.#aLayName\n\t\t.map(ln=> {\n\t\t\tconst {ctn} = this.#hPages[ln]!.fore;\n\t\t\tconst ret: [Sprite, boolean] = [ctn, ctn.visible];\n\t\t\tctn.visible = false;\n\t\t\treturn ret;\n\t\t});\n\t\tfor (const ln of this.#getLayers(layer)) this.#hPages[ln]!.fore.ctn.visible = true;\n\n\t\tthis.sys.capturePage(url, width, height, ()=> {\n\t\t\tfor (const [sp, v] of aBk) sp.visible = v;\n\t\t\tthis.#frmMng.restoreAllFrame();\n\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t});\n\t\treturn true;\n\t}\n\t#snapshot4web(hArg: HArg, url: string, width: number, height: number, RPN_SNAPSHOT: string): boolean {\n\t\tReading.beginProc(RPN_SNAPSHOT);\n\t\tconst b_color = argChk_Color(hArg, 'b_color', this.#bg_color);\n\t\tconst rnd = autoDetectRenderer({\n\t\t\twidth,\n\t\t\theight,\n\t\t\tbackgroundAlpha: b_color > 0x1000000 && url.endsWith('.png') ?0 :1,\n\t\t\tantialias: argChk_Boolean(hArg, 'smoothing', false),\n\t\t\tpreserveDrawingBuffer: true,\n\t\t\tbackgroundColor: b_color & 0xFFFFFF,\n\t\t\tautoDensity: true,\n\t\t});\n\t\tconst pg = hArg.page !== 'back' ?'fore' :'back';\n\t\tconst {layer} = hArg;\n\t\tvoid Promise.allSettled(\n\t\t\tthis.#getLayers(layer).map(ln=> new Promise<void>(\n\t\t\t\tre=> this.#hPages[ln]![pg].snapshot(rnd, re)\n\t\t\t))\n\t\t).then(async ()=> {\n\t\t\tconst renTx = RenderTexture.create({width: rnd.width, height: rnd.height});\t// はみ出し対策\n\t\t\trnd.render(this.#stage, {renderTexture: renTx});\n\t\t\tawait this.sys.savePic(\n\t\t\t\turl,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n\t\t\t\trnd.plugins.extract.base64(renTx),\n\t\t\t);\n\t\t\trenTx.destroy();\n\n\t\t\tfor (const ln of this.#getLayers(layer)) this.#hPages[ln]![pg].snapshot_end();\n\t\t\trnd.destroy(true);\n\n\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t});\n\t\treturn true;\n\t}\n\n\t//MARK: プラグインの読み込み\n\t#loadplugin(hArg: HArg) {\n\t\tconst {fn} = hArg;\n\t\tif (! fn) throw 'fnは必須です';\n\t\tif (! fn.endsWith('.css')) throw 'サポートされない拡張子です';\n\n\t\tconst join = argChk_Boolean(hArg, 'join', true);\n\t\tconst RPN_LOADPLUGIN = Reading.procID +`loadplugin fn:${fn}`;\n\t\tif (join) Reading.beginProc(RPN_LOADPLUGIN);\n\t\t(async ()=> {\n\t\t\tconst res = await fetch(fn);\n\t\t\tif (! res.ok) throw new Error('Network response was not ok.');\n\n\t\t\taddStyle(await res.text());\n\t\t\tif (join) Reading.endProc(RPN_LOADPLUGIN);\n\t\t})();\n\n\t\treturn join;\n\t}\n\n\n//\t//\tレイヤ共通\n\t//MARK: レイヤを追加する\n\t#add_lay(hArg: HArg) {\n\t\tconst {layer, class: cls} = hArg;\n\t\tif (! layer) throw 'layerは必須です';\n\t\tif (layer.includes(',')) throw 'layer名に「,」は使えません';\n\t\tif (layer in this.#hPages) throw `layer【${layer}】はすでにあります`;\n\t\tif (! cls) throw 'clsは必須です';\n\n\t\tconst ret = {isWait: false}\n\t\tthis.#hPages[layer] = new Pages(layer, cls, this.#fore, this.#back, hArg, this.sys, this.val, ret);\n\t\tthis.#aLayName.push(layer);\n\t\tswitch (cls) {\n\t\tcase 'txt':\n\t\t\tif (! this.#curTxtlay) {\n\t\t\t\tthis.#chkTxtLay = ()=> { /* empty */ };\n\t\t\t\tthis.#getTxtLayer = o=> this.#$getTxtLayer(o);\n\t\t\t\tthis.#current = o=> this.#$current(o);\n\t\t\t\tthis.hTag.current({layer});\t// hPages更新後でないと呼べない\n\t\t\t\tthis.goTxt = ()=> {\n\t\t\t\t\tif (this.#evtMng.isSkipping) LayerMng.#msecChWait = 0;\n\t\t\t\t\telse this.setNormalChWait();\n\t\t\t\t\tfor (const ln of this.#aLayName) {\n\t\t\t\t\t\tconst f = this.#hPages[ln]!.fore;\n\t\t\t\t\t\tif (f instanceof TxtLayer) this.#cmdTxt('gotxt|', f, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.val.setVal_Nochk('save', 'const.sn.layer.'+ layer +'.enabled', true);\n\t\t\tbreak;\n\n\t\tcase 'grp':\n\t\t\tif (this.#firstGrplay) break;\n\t\t\tthis.#firstGrplay = layer;\n\t\t\tbreak;\n\t\t}\n\n\t\tthis.scrItr.recodeDesign(hArg);\t// hArg[':id_tag'] は new Pages 内で設定\n\n\t\treturn ret.isWait;\n\t}\n\t#hPages\t\t: HPage\t\t= { /* empty */ };\t// しおりLoad時再読込\n\t#aLayName\t: string[]\t= [];\t// 最適化用・重なり順つき全レイヤ名\n\t#curTxtlay\t\t= '';\n\t#firstGrplay\t= '';\n\n\t#lay(hArg: HArg): boolean {\n\t\t// Trans\n\t\tconst ln = this.#argChk_layer(hArg);\n\t\tconst pg = this.#hPages[ln]!;\n\t\tconst back = pg.back.ctn;\n\t\tconst fore = pg.fore.ctn;\n\t\tif (argChk_Boolean(hArg, 'float', false)) {\n\t\t\tthis.#back.setChildIndex(back, this.#back.children.length -1);\n\t\t\tthis.#fore.setChildIndex(fore, this.#fore.children.length -1);\n\t\t\tthis.#rebuildLayerRankInfo();\n\t\t}\n\t\telse if (hArg.index) {\n\t\t\tif (argChk_Num(hArg, 'index', 0)) {\n\t\t\t\tthis.#back.setChildIndex(back, hArg.index);\n\t\t\t\tthis.#fore.setChildIndex(fore, hArg.index);\n\t\t\t\tthis.#rebuildLayerRankInfo();\n\t\t\t}\n\t\t}\n\t\telse if (hArg.dive) {\n\t\t\tconst {dive} = hArg;\n\t\t\tlet idx_dive = 0;\n\t\t\tif (ln === dive) throw '[lay] 属性 layerとdiveが同じ【'+ dive +'】です';\n\n\t\t\tconst pg_dive = this.#hPages[dive];\n\t\t\tif (! pg_dive) throw '[lay] 属性 dive【'+ dive +'】が不正です。レイヤーがありません';\n\t\t\tconst back_dive = pg_dive.back;\n\t\t\tconst fore_dive = pg_dive.fore;\n\t\t\tconst idx_back_dive = this.#back.getChildIndex(back_dive.ctn);\n\t\t\tconst idx_fore_dive = this.#fore.getChildIndex(fore_dive.ctn);\n\t\t\tidx_dive = idx_back_dive < idx_fore_dive ?idx_back_dive :idx_fore_dive;\n\t\t\tif (idx_dive > this.#back.getChildIndex(back)) --idx_dive;\t//自分が無くなって下がる分下げる\n\n\t\t\tthis.#fore.setChildIndex(fore, idx_dive);\n\t\t\tthis.#back.setChildIndex(back, idx_dive);\n\t\t\tthis.#rebuildLayerRankInfo();\n\t\t}\n\n\t\thArg[':id_tag'] = pg.fore.name.slice(0, -7);\n\t\tthis.scrItr.recodeDesign(hArg);\t// 必ず[':id_tag'] を設定すること\n\n\t\treturn pg.lay(hArg);\n\t}\n\t#rebuildLayerRankInfo() {this.#aLayName = this.#sortLayers()}\n\n\t//MARK: レイヤ設定の消去\n\t#clear_lay(hArg: HArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\t//if (name === this.strTxtlay && hArg.page !== 'back') this.recText('', true);\n\t\t\t\t// 改ページ\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面削除\n\t\t\t\tpg.fore.clearLay(hArg);\n\t\t\t\tpg.back.clearLay(hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpg.getPage(hArg).clearLay(hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t//===================================================\n\t//MARK: WebGL フラグメントシェーダー GLSL\n\tstatic\treadonly\t#srcRuleTransFragment = /* glsl */`\nprecision mediump float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform sampler2D rule;\nuniform float vague;\nuniform float tick;\n\nuniform vec4 inputPixel;\nuniform highp vec4 outputFrame;\nvec2 getUV(vec2 coord) {\n\treturn coord * inputPixel.xy / outputFrame.zw;\n}\n\nvoid main() {\n\tvec4 fg = texture2D(uSampler, vTextureCoord);\n\tvec4 ru = texture2D(rule, getUV(vTextureCoord));\n\n\tfloat v = ru.r - tick;\n\tgl_FragColor = abs(v) < vague\n\t\t? vec4(fg.rgb, 1) *fg.a *(0.5 +v /vague *0.5)\n\t\t: 0.0 <= v ? fg : vec4(0);\n}`;\n/*\n\t末尾が読みづらいが、以下のif文を消して三項演算子にしている。\n\n\tif (abs(v) < vague) {\n\t\tfloat f_a = fg.a *(0.5 +v /vague *0.5);\n\t\tgl_FragColor.rgb = fg.rgb *f_a;\n\t\tgl_FragColor.a = f_a;\n\t\treturn;\n\t}\n\tgl_FragColor = v >= 0.0 ? fg : vec4(0);\n\n\t\t★GLSL : don't use \"if\"|Nobu note.com/nobuhirosaijo/n/n606a3f5d8e89\n\t\t\t> if文はあまり使わない方がいいらしい (処理負荷が高い)\n*/\n\n\n\t#rtTransBack = RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTransBack = new Sprite(this.#rtTransBack);\n\n\t#rtTransFore = RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTransFore = new Sprite(this.#rtTransFore);\n\n\n\t//MARK: ページ裏表を交換\n\t#trans(hArg: HArg) {\n\t\tconst {layer} = hArg;\n\t\tconst sDoTrans = new Set<string>;\n\t\tconst aLayFore = this.#getLayers(layer).map(ln=> {\n\t\t\tsDoTrans.add(ln);\n\t\t\treturn this.#hPages[ln]!.fore;\n\t\t});\n\n\t\tconst comp = ()=> {\n\t\t\t[this.#fore, this.#back] = [this.#back, this.#fore];\n\t\t\tconst aPrm: Promise<void>[] = [];\n\t\t\tfor (const [ln, pg] of Object.entries(this.#hPages)) {\n\t\t\t\tif (sDoTrans.has(ln)) {pg.transPage(aPrm); continue}\n\n\t\t\t\t// transしないために交換する\n\t\t\t\tconst {fore: {ctn: f}, back: {ctn: b}} = pg;\n\t\t\t\tconst idx = this.#fore.getChildIndex(b);\n\t\t\t\tthis.#fore.removeChild(b);\n\t\t\t\tthis.#back.removeChild(f);\n\t\t\t\tthis.#fore.addChildAt(f, idx);\n\t\t\t\tthis.#back.addChildAt(b, idx);\n\t\t\t}\n\t\t\tvoid Promise.allSettled(aPrm).then(()=> {\n\t\t\t\tthis.#fore.visible = true;\n\t\t\t\tthis.#back.visible = false;\t// 再び非表示の裏方に(直前までforeだった)\n\t\t\t\tthis.#spTransBack.visible = false;\n\t\t\t\tthis.#spTransFore.visible = false;\n\n\t\t\t\tReading.notifyEndProc(TMP_TSY_NM + TW_INT_TRANS);\n\t\t\t});\n\t\t};\n\t\t// hArg[':id'] = pg.fore.name.slice(0, -7);\n\t\t// this.scrItr.getDesignInfo(hArg);\t// 必ず[':id'] を設定すること\n\t\tthis.#spTransFore.filters = [];\n\t\tthis.#spTransFore.alpha = 1;\n\n\t\t// 一瞬切り替え\n\t\tconst time = argChk_Num(hArg, 'time', 0);\n\t\tif (time === 0 || this.#evtMng.isSkipping) {\n\t\t\tReading.beginProc(TMP_TSY_NM + TW_INT_TRANS, ()=> { /* empty */ });\n\t\t\tqueueMicrotask(()=> comp());\t// 下で止めてからにしたい\n\t\t\treturn true;\n\t\t}\n\n\n\t\tconst aBackTransAfter: Sprite[] = [];\n\t\tconst aBack = this.#aLayName.map(ln=> {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tconst lay = sDoTrans.has(ln) ?back :fore;\n\t\t\tif (lay.ctn.visible) aBackTransAfter.push(lay.ctn);\n\t\t\treturn lay;\n\t\t});\n\t\tconst {ticker, renderer} = this.appPixi;\n\t\trenderer.render(this.#back, {renderTexture: this.#rtTransBack});\t// clear: true\n\n\t\tlet fncRenderBack = ()=> {\n\t\t\tfor (const ctn of aBackTransAfter) renderer.render(\n\t\t\t\tctn,\n\t\t\t\t{renderTexture: this.#rtTransBack, clear: false}\n\t\t\t);\n\t\t};\n\t\tif (! aBack.some(lay=> lay.containMovement)) {\n\t\t\tconst oldFnc = fncRenderBack;\t// 動きがないなら最初に一度\n\t\t\tfncRenderBack = ()=> {fncRenderBack = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\n\t\tconst render = ()=> renderer.render(this.#fore, {renderTexture: this.#rtTransFore});\t// clear: true\n\t\trender();\n\t\tlet fncRenderFore = ()=> {\n\t\t\tthis.#fore.visible = true;\n\t\t\trender();\n\t\t\tthis.#fore.visible = false;\n\t\t};\n\t\tif (! aLayFore.some(lay=> lay.containMovement)) {\n\t\t\tconst oldFnc = fncRenderFore;\t// 動きがないなら最初に一度\n\t\t\tfncRenderFore = ()=> {fncRenderFore = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\t\tconst fncRender = ()=> {\n\t\t\tfncRenderBack();\n\t\t\tthis.#spTransBack.visible = true;\n\n\t\t\tfncRenderFore();\n\t\t\tthis.#spTransFore.visible = true;\n\t\t};\n\n\n\t\t// クロスフェード\n\t\tconst {glsl, rule} = hArg;\n\t\tconst comp2 = ()=> {ticker.remove(fncRender); comp()};\n\t\tif (! glsl && ! rule) {\n\t\t\tCmnTween.tween(TW_INT_TRANS, hArg, this.#spTransFore, {alpha: 0}, ()=> { /* empty */ }, comp2, ()=> { /* empty */ });\n\t\t\tticker.add(fncRender);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Filter使用系(デフォルト値を glsl 属性で上書き可能)\n\t\tconst uniforms = {\n\t\t\trule\t: Texture.EMPTY,\n\t\t\tvague\t: argChk_Num(hArg, 'vague', 0.04),\n\t\t\ttick\t: 0.0,\n\t\t};\n\t\tthis.#spTransFore.filters = [new Filter(\n\t\t\tundefined,\n\t\t\tglsl ?? LayerMng.#srcRuleTransFragment,\n\t\t\tuniforms,\n\t\t)];\n\t\tconst tw = CmnTween.tween(TW_INT_TRANS, hArg, uniforms, {tick: 1}, ()=> { /* empty */ }, comp2, ()=> { /* empty */ }, ! rule);\n\t\tif (! rule) {\n\t\t\tticker.add(fncRender);\n\t\t\treturn false;\n\t\t}\n\n\t\t// ルール画像あり\n\t\tconst sm = new SpritesMng(rule, undefined, sp=> {\n\t\t\tuniforms.rule = sp.texture;\n\t\t\tsp.destroy();\n\n\t\t\ttw.start();\n\t\t\tticker.add(fncRender);\n\t\t}, isStop=> {if (isStop) this.main.resume()});\n\t\treturn sm.ret;\n\t}\n\n\t#getLayers(layer = ''): string[] {return layer ?layer.split(',') :this.#aLayName}\n\t#foreachLayers(hArg: HArg, fnc: (ln: string, $pg: Pages)=> void): readonly string[] {\n\t\tconst aLn = this.#getLayers(hArg.layer);\n\t\tfor (const ln of aLn) {\n\t\t\tconst pg = this.#hPages[ln];\n\t\t\tif (! pg) throw `存在しないlayer【${ln}】です`;\n\n\t\t\tfnc(ln, pg);\n\t\t}\n\n\t\treturn aLn;\n\t}\n\t#sortLayers(layers = ''): string[] {\n\t\treturn this.#getLayers(layers)\n\t\t.sort((a, b)=> {\n\t\t\tconst ai = this.#fore.getChildIndex(this.#hPages[a]!.fore.ctn);\n\t\t\tconst bi = this.#fore.getChildIndex(this.#hPages[b]!.fore.ctn);\n\t\t\tif (ai < bi) return -1;\n\t\t\tif (ai > bi) return 1;\n\t\t\treturn 0;\n\t\t});\n\t}\n\n\tsetAllStyle2TxtLay(style: string) {\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst l = this.#hPages[ln]!.fore;\n\t\t\tif (l instanceof TxtLayer) l.lay({style});\t// 必要最小限設定なので\n\t\t\t//\t... l.cssText = style;\n\t\t}\n\t}\n\n\t//MARK: 画面を揺らす\n\t#quake(hArg: HArg) {\n\t\tif (argChk_Num(hArg, 'time', NaN) === 0) return false;\n\n\t\tconst aLayCtn = this.#getLayers(hArg.layer)\n\t\t.map(ln=> this.#hPages[ln]!.fore.ctn);\n\t\tconst {renderer, ticker} = this.appPixi;\n\t\tthis.#rtTransFore.resize(CmnLib.stageW, CmnLib.stageH);\n\t\tconst fncRender = ()=> {\n\t\t\tthis.#fore.visible = true;\n\t\t\tfor (const c of aLayCtn) renderer.render(\n\t\t\t\tc, {renderTexture: this.#rtTransFore, clear: false}\n\t\t\t);\n\t\t\tthis.#fore.visible = false;\n\t\t};\n\t\tthis.#spTransFore.visible = true;\n\t\tthis.#spTransFore.alpha = 1;\n\n\t\tconst h = uint(argChk_Num(hArg, 'hmax', 10));\n\t\tconst v = uint(argChk_Num(hArg, 'vmax', 10));\n\t\tconst fncH = h === 0\n\t\t\t? ()=> { /* empty */ }\n\t\t\t: ()=> {this.#spTransFore.x = Math.round(Math.random()* h*2) -h};\n\t\tconst fncV = v === 0\n\t\t\t? ()=> { /* empty */ }\n\t\t\t: ()=> {this.#spTransFore.y = Math.round(Math.random()* v*2) -v};\n\t\tthis.#spTransFore.filters = [];\n\n\t\tCmnTween.tween(TW_INT_TRANS, hArg, this.#spTransFore, {x: 0, y: 0}, ()=> {fncH(); fncV()}, ()=> {\n\t\t\tticker.remove(fncRender);\n\t\t\t\t// transなしでもadd()してなくても走るが、構わないっぽい。\n\t\t\tthis.#fore.visible = true;\n\t\t\tthis.#spTransFore.visible = false;\n\t\t\tthis.#spTransFore.x = 0;\t// 必須、onUpdate は toの値にしてくれない\n\t\t\tthis.#spTransFore.y = 0;\n\t\t}, ()=> { /* empty */ });\n\t\tticker.add(fncRender);\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: トゥイーン開始\n\t#tsy(hArg: HArg) {\n\t\tconst {layer, render, name} = hArg;\n\t\tif (! layer) throw 'layerは必須です';\n\n\t\tconst pg = this.#hPages[this.#argChk_layer(hArg)]!;\n\t\tconst lay = pg.fore;\n\n\t\tlet finishBlendLayer = ()=> { /* empty */ };\n\t\tif (render && ! this.#evtMng.isSkipping) {\n\t\t\tlay.renderStart();\n\t\t\tfinishBlendLayer = ()=> lay.renderEnd();\n\t\t}\n\n\t\tconst hTo = CmnTween.cnvTweenArg(hArg, lay);\n\t\tconst arrive = argChk_Boolean(hArg, 'arrive', false);\n\t\tconst backlay = argChk_Boolean(hArg, 'backlay', false);\n\t\tconst spBack = pg.back.ctn;\t// fore, back が変わる恐れで外へ\n\t\tCmnTween.tween(name ?? layer, hArg, lay, CmnTween.cnvTweenArg(hArg, lay), ()=> { /* empty */ }, finishBlendLayer, ()=> {\n\t\t\tif (arrive) Object.assign(lay, hTo);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\tif (backlay) for (const nm of Object.keys(CmnTween.hMemberCnt)) (<any>spBack)[nm] = (<any>lay)[nm];\n\t\t});\n//\t\thArg[':id'] = pg.fore.name.slice(0, -7);\n//\t\tthis.scrItr.getDesignInfo(hArg);\t// 必ず[':id'] を設定すること\n\n\t\tif ('filter' in hArg) {\n\t\t\tlay.ctn.filters = [Layer.bldFilters(hArg)];\n\t\t\tlay.aFltHArg = [hArg];\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: フィルター追加\n\t#add_filter(hArg: HArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tthis.#add_filter2(pg.fore, hArg);\n\t\t\t\tthis.#add_filter2(pg.back, hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tthis.#add_filter2(l, hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\t#add_filter2(l: Layer, hArg: HArg) {\n\t\tconst s = l.ctn;\n\t\ts.filters ??= [];\n\t\ts.filters = [...s.filters, Layer.bldFilters(hArg)];\n\t\tl.aFltHArg.push(hArg);\n\t}\n\n\t//MARK: フィルター全削除\n\t#clear_filter(hArg: HArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tconst f = pg.fore;\n\t\t\t\tconst b = pg.back;\n\t\t\t\tf.ctn.filters = null;\n\t\t\t\tb.ctn.filters = null;\n\t\t\t\tf.aFltHArg = [];\n\t\t\t\tb.aFltHArg = [];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tl.ctn.filters = null;\n\t\t\tl.aFltHArg = [];\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t//MARK: フィルター個別切替\n\t#enable_filter(hArg: HArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tthis.#enable_filter2(pg.fore, hArg);\n\t\t\t\tthis.#enable_filter2(pg.back, hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tthis.#enable_filter2(l, hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\t#enable_filter2(l: Layer, hArg: HArg) {\n\t\tconst s = l.ctn;\n\t\tif (! s.filters) throw 'フィルターがありません';\n\n\t\tconst i = uint(argChk_Num(hArg, 'index', 0));\n\t\tconst len = s.filters.length;\n\t\tif (len <= i) throw `フィルターの個数(${String(len)})を越えています`;\n\n\t\tl.aFltHArg[i]!.enabled =\n\t\ts.filters[i]!.enabled = argChk_Boolean(hArg, 'enabled', true);\n\t}\n\n\n//\t// 文字・文字レイヤ\n\tstatic\t\t#msecChWait\t\t= 10;\n\tstatic get\tmsecChWait() {return LayerMng.#msecChWait}\n\t//MARK: 文字を追加する\n\t#ch(hArg: HArg) {\n\t\tconst {text} = hArg;\n\t\tif (! text) throw 'textは必須です';\n\n\t\tconst tl = this.#getTxtLayer(hArg);\n\t\tdelete hArg.text;\t// [graph]時、次行がルビ文法でトラブったので\n\t\tthis.setNormalChWait();\n\t\tif (this.#evtMng.isSkipping) hArg.wait = 0;\n\t\telse if ('wait' in hArg) argChk_Num(hArg, 'wait', NaN);\n\n\t\tthis.#cmdTxt('add|'+ cnvSArg(<T_cmdTxt_JSON>hArg), tl);\n\t\t\t// [ch style]用\n\n\t\tconst record = argChk_Boolean(hArg, 'record', true);\n\t\tconst doRecLog = this.val.doRecLog();\n\t\tif (! record) this.val.setVal_Nochk('save', 'sn.doRecLog', record);\n\t\ttl.tagCh(text.replaceAll('[r]', '\\n'));\n\t\tthis.val.setVal_Nochk('save', 'sn.doRecLog', doRecLog);\n\n\t\tthis.#cmdTxt('add_close|', tl);\t// [ch style]用\n\n\t\treturn false;\n\t}\n\n\t#getTxtLayer = (_hArg: HArg): TxtLayer=> {this.#chkTxtLay(); throw 0};\n\t#$getTxtLayer(hArg: HArg): TxtLayer {\n\t\tconst ln = this.#argChk_layer(hArg, this.#curTxtlay);\n\t\tconst pg = this.#hPages[ln]!;\n\t\tconst lay = pg.getPage(hArg);\n\t\tif (! (lay instanceof TxtLayer)) throw ln +'はTxtLayerではありません';\n\n\t\treturn lay;\n\t}\n\tsetNormalChWait(): void {LayerMng.#msecChWait = this.scrItr.normalWait}\n\n\n\t//MARK: 操作対象のメッセージレイヤの指定\n\t#current = (_hArg: HArg): boolean=> {this.#chkTxtLay(); throw 0};\n\t#$current(hArg: HArg) {\n\t\tconst {layer} = hArg;\n\t\tif (! layer) throw '[current] layerは必須です';\n\n\t\tconst lay = this.#hPages[layer];\n\t\tif (! lay || ! (lay.getPage(hArg) instanceof TxtLayer)) throw `${layer}はTxtLayerではありません`;\n\t\tthis.#pgTxtlay = lay;\n\n\t\tthis.#log.pagebreak();\t// カレント変更前に現在の履歴を保存\n\t\tthis.#curTxtlay = layer;\n\t\tthis.val.setVal_Nochk('save', 'const.sn.mesLayer', layer);\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tif (! (fore instanceof TxtLayer)) continue;\n\t\t\tfore.isCur = (<TxtLayer>back).isCur = ln === layer;\n\t\t}\n\n\t\treturn false;\n\t}\n\tget currentTxtlayForeNeedErr(): TxtLayer {\n\t\tthis.#chkTxtLay();\n\t\treturn this.currentTxtlayFore!;\n\t}\n\tget currentTxtlayFore(): TxtLayer | null {\n\t\tif (! this.#pgTxtlay) return null;\n\n\t\treturn <TxtLayer>this.#pgTxtlay.fore;\n\t}\n\t#pgTxtlay\t: Pages | undefined\t= undefined;\t// カレントテキストレイヤ\n\t#chkTxtLay\t: ()=> void\t= ()=> {throw '文字レイヤーがありません。文字表示や操作する前に、[add_lay layer=(レイヤ名) class=txt]で文字レイヤを追加して下さい'};\n\n\t#argChk_layer(hArg: HArg, def = ''): string {\n\t\tconst ln = hArg.layer ?? def;\n\t\tif (ln.includes(',')) throw 'layer名に「,」は使えません';\n\t\tif (! (ln in this.#hPages)) throw '属性 layer【'+ ln +'】が不正です。レイヤーがありません';\n\n\t\thArg.layer = ln;\n\t\treturn ln;\n\t}\n\n\n\trecPagebreak() {this.#log.pagebreak()}\n\n\n\t//MARK: 文字消去\n\t#clear_text(hArg: HArg) {\n\t\tconst tf = this.#getTxtLayer(hArg);\n\t\tif (hArg.layer === this.#curTxtlay && hArg.page === 'fore') this.#log.pagebreak();\t// 改ページ、クリア前に\n\t\ttf.clearText();\n\t\treturn false;\n\t}\n\n\n\t//MARK: ハイパーリンクの終了\n\t#endlink(hArg: HArg) {this.#cmdTxt('endlink|', this.#getTxtLayer(hArg)); return false}\n\n\t//MARK: ページ両面の文字消去\n\t#er(hArg: HArg) {\n\t\tif (argChk_Boolean(hArg, 'rec_page_break', true)) this.#log.pagebreak();\t// 改ページ、クリア前に\n\n\t\tif (this.#pgTxtlay) {\n\t\t\tthis.#pgTxtlay.fore.clearLay(hArg);\n\t\t\tthis.#pgTxtlay.back.clearLay(hArg);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t//MARK: インライン画像表示\n\t#graph(hArg: HArg) {\n\t\tif (! hArg.pic) throw '[graph] picは必須です';\n\n\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: ハイパーリンク\n\t#link(hArg: HArg) {\n\t\tif (! hArg.fn && ! hArg.label && ! hArg.url) throw 'fn,label,url いずれかは必須です';\n\t\thArg.fn ??= this.scrItr.scriptFn;\t// ここで指定する必要がある\n\n\t\thArg.style ??= 'background-color: rgba(255,0,0,0.5);';\n\t\thArg.style_hover ??= 'background-color: rgba(255,0,0,0.9);';\n\t\thArg.style_clicked ??= hArg.style;\n\t\tthis.#cmdTxt('link|'+ cnvSArg(<T_cmdTxt_JSON>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: 改行\n\t#r(hArg: HArg) {return this.#ch({...hArg, text: '\\n'})}\n\n\t//MARK: 文字列と複数ルビの追加\n\t#ruby2(hArg: HArg) {\n\t\tconst {t, r} = hArg;\n\t\tif (! t) throw '[ruby2] tは必須です';\n\t\tif (! r) throw '[ruby2] rは必須です';\n\n\t\thArg.text = '|'+ encodeURIComponent(t) +'《'+ encodeURIComponent(r) +'》';\n\t\tdelete hArg.t;\n\t\tdelete hArg.r;\n\t\treturn this.#ch(hArg);\n\t}\n\n\n\t//MARK: インラインスタイル設定\n\t#span(hArg: HArg) {\n\t\tthis.#cmdTxt('span|'+ cnvSArg(<T_cmdTxt_JSON>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: tcy縦中横を表示する\n\t#tcy(hArg: HArg) {\n\t\tif (! hArg.t) throw '[tcy] tは必須です';\n\n\t\tthis.#cmdTxt('tcy|'+ cnvSArg(<T_cmdTxt_JSON>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\n\t//MARK: レイヤのダンプ\n\t#dump_lay({layer}: HArg) {\n\t\tconsole.group('🥟 [dump_lay]');\n\t\tfor (const ln of this.#getLayers(layer)) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\ttry {\n\t\t\t\tconsole.info(`%c${fore.name.slice(0, -7)} %o`, `color:#${CmnLib.isDarkMode ?'49F' :'05A'};`,\n\t\t\t\tJSON.parse(`{\"back\":{${back.dump()}}, \"fore\":{${fore.dump()}}}`));\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('dump_lay err:%o', e);\n\t\t\t\tconsole.error(` back:${back.dump()}`);\n\t\t\t\tconsole.error(` fore:${fore.dump()}`);\n\t\t\t}\n\t\t}\n\t\tconsole.groupEnd();\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: イベント有無の切替\n\t#enable_event(hArg: HArg) {\n\t\tconst ln = this.#argChk_layer(hArg, this.#curTxtlay);\n\t\tconst v = argChk_Boolean(hArg, 'enabled', true);\n\t\tthis.#getTxtLayer(hArg).enabled = v;\n\t\tthis.val.setVal_Nochk('save', 'const.sn.layer.'+ ln +'.enabled', v);\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: ボタンを表示\n\t#button(hArg: HArg) {\n\t\tPages.argChk_page(hArg, 'back');\t// チェックしたいというよりデフォルトをbackに\n\t\thArg.fn ??= this.scrItr.scriptFn;\t// ここで指定する必要がある\n\t\t\t// fn省略時、画像ボタンはロード後という後のタイミングで scrItr.scriptFn を\n\t\t\t// 参照してしまうので\n\t\tvoid this.#getTxtLayer(hArg).addButton(hArg);\t// hArg[':id_tag'] も設定\n\n\t\tthis.scrItr.recodeDesign(hArg);\t// 必ず[':id_tag'] を設定すること\n\n\t\treturn false;\n\t}\n\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\trecord(): any {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst o: any = {};\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst pg = this.#hPages[ln]!;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\to[ln] = {\n\t\t\t\tcls: pg.cls,\n\t\t\t\tfore: pg.fore.record(),\n\t\t\t\tback: pg.back.record(),\n\t\t\t};\n\t\t}\n\t\treturn o;\n\t}\n\tplayback($hPages: HIPage): Promise<void>[] {\n\t\t// これを先に。save:const.sn.sLog がクリアされてしまう\n\t\tthis.#log.playback();\n\n\t\tconst aPrm: Promise<void>[] = [];\n\t\tconst aSort: {ln: string, idx: number}[] = [];\n\t\tfor (const [ln, {fore, fore: {idx}, back, cls}] of Object.entries($hPages)) {\t// 引数で言及の無いレイヤはそのまま。特に削除しない\n\t\t\taSort.push({ln, idx});\n\t\t\tconst ps = this.#hPages[ln] ??= new Pages(ln, cls, this.#fore, this.#back, {}, this.sys, this.val, {isWait: false});\n\t\t\tps.fore.playback(fore, aPrm);\n\t\t\tps.back.playback(back, aPrm);\n\t\t}\n\n\t\tconst len = this.#fore.children.length;\n\t\taPrm.push(new Promise(re=> {\t// 若い順にsetChildIndex()\n\t\t\tfor (const {ln, idx} of aSort.sort(({idx: a}, {idx: b})=> a === b ?0 :a < b ?-1 :1)) {\n\t\t\t\tconst pg = this.#hPages[ln];\n\t\t\t\tif (! pg) continue;\n\n\t\t\t\tconst i = len > idx ?idx :len -1;\n\t\t\t\tconst {fore, back} = pg;\n\t\t\t\tthis.#fore.setChildIndex(fore.ctn, i);\n\t\t\t\tthis.#back.setChildIndex(back.ctn, i);\n\t\t\t}\n\t\t\tre();\n\t\t}));\n\t\treturn aPrm;\n\t}\n\n}\n"],"names":["Pages","layname","cls","fore","back","hArg","sys","val","ret","fncF","b","nm","argChk_Boolean","#pg","valnm","hash","def","v","aPrm","DesignCast","bg_col","isLay","_appPixi","_sys","_scrItr","_prpPrs","_cfg","_hPages","_hPrm","_idcCh","_v","_o","GrpLayDesignCast","_ctn","_gl","_sp","SpritesMng","csvFn","ctn","fncFirstComp","fncAllComp","#addChild","sp","#aSp","#csv2Sprites","isStop","#cfg","#val","#sys","#main","cfg","main","sndMng","#cachePicMov","r","res","next","#dec2cachePicMov","#cacheAniSpr","#dec2cacheAniSpr","fnc","vol","#glbVol","#movVol","#hFn2hve","#evtMng","evtMng","#hFace","#hFn2ResAniSpr","csv","addChild","needLoad","Sprite","utils.TextureCache","Loader","aComp","ldr","a","len","i","fn0","dx","dy","blendmode","fn","BLEND_MODES","url","SEARCH_PATH_ARG_EXT","xt","LoaderResource","fncLoaded","_","hRes","#mkSprite","str","aiv","e","mes","_r","type","name","data","hve","#charmVideoElm","#sortAFrameName","aFn","a_base_name","d1","d2","is","ie","int","Texture","DebugMng","spritesheet","meta","frames","getFn","res2","next2","r2","_hRes","baseTexture","aFr","x","y","w","h","Rectangle","ras","asp","AnimatedSprite","RPN_WV","stop","Reading","argChk_Num","Layer","GrpLayer","#elc","EventListenerCtn","#appPixi","appPixi","#idc","CmnLib","#setIdcSp","#csvFn","#sBkFn","#sBkFace","RPN_GRP_LAY","#laySub","resolve","face","inFn","inFace","#sps","#width","#height","#spTsy","#rtTsy","fncRenderFore","oldFnc","#fncRender","RenderTexture","s","c","hLay","re","_isStop","gdc","def行頭禁則","def行末禁則","def分割禁止","defぶら下げ","defReg行頭禁則","defReg行末禁則","defReg分割禁止","defRegぶら下げ","Hyphenation","#s行頭禁則","#s行末禁則","#s分割禁止","#sぶら下げ","#reg行頭禁則","#reg行末禁則","#reg分割禁止","#regぶら下げ","#chk禁則の競合_ぶら行末","#chk禁則の競合_ぶら分禁","len行末禁則","lenぶら下げ","len分割禁止","to","#genKinsoku","s行頭禁則","s行末禁則","s分割禁止","sぶら下げ","o","htmTxt","cnvRect","tategaki","begin","bkHtm","fncFirstChk","#getChRects","sl_xy","elm","rect","ch","xy","p_i","#i2pi","p_elm","p_rect","p_ch","sty","rs","oldI","cont","ins","elm2","pal","br","ppal","rng","pos","end","ii","pp_i","pp_ch","j","p_j","last_ch","head_ch","ppp_i","ppp_ch","htm2tx","infTL","padTx4x","padTx4y","hidden","util","extension","parseExtension","mimes","dataAsUrl","isDataUrl","resolveUrl","getAndEncode","arrayLike","WOFF","JPEG","inliner","newInliner","fontFaces","newFontFaces","embedFonts","node","cssText","styleNode","baseUrl","doc","base","request","done","timeout","fail","encoder","content","message","URL_REGEX","inlineAll","shouldProcess","readUrls","result","match","inline","get","dataUrl","urlAsRegex","nothingToInline","urls","string","resolveAll","readAll","webFonts","webFont","cssStrings","getCssRules","selectWebFontRules","rules","newWebFont","cssRules","rule","styleSheets","sheet","webFontRule","cln","img","canvas","TxtStage","Container","canFocus","#htmTxt","#cntTxt","#grpDbgMasume","fncMasumeLog","width","height","#fncMasume","cr","RPN_COMP_CHIN","htm","ln","#scrItr","id","scrItr","#hChInStyle","#hChOutStyle","Graphics","#hWarnStyle","#hyph","#infTL","key","#lay_sub","#left","#lenHtmTxt","aSpan","#clearText","#lh_half","fs","#isTategaki","#padTx4x","#padTx4y","lh","cvsScale","#aGoTxt","instant","f","#goTxt_Proc","#aRect","#SPAN_LAST","#cntBreak","bcr","sx","sy","ox","oy","ease","CmnTween","#fi_easing","dataset","parentElement","arg","add","cis","cnt","#spWork","eCh","aLnk","st_normal","st_hover","st_clicked","st_r_normal","st_r_hover","st_r_clicked","nlRt","st_bk","fncStyle","st","st_r","chs","#fncEndChIn","lastElm","rct","Tween","#aSpTw","wasChInIng","#REG_NG_CHSTYLE_NAME_CHR","#spsBreak","#fo_easing","n","old","sum_wait","cos","#ch_filter","ct","#sss","rnd","tx","_gdc","aStyle","Button","#o","uint","#rctBtnTxt","#hover","#clicked","#loaded_pic","style","TextStyle","mesErrJSON","txt","Text","text","#loaded_b_pic","#procMasume4txt","style_hover","style_clicked","_me","_txt","#procMasume4pic","_w3","_h","me","w3","_text","w_3","txNormal","txClicked","txHover","normal","TxtLayer","#isPageFore","#log","hTag","log","isPageFore","doRec","#autowc","#ch_in_style","#ch_out_style","initStyle","addStyle","#doAutoWc","#hAutoWc","#b_color","#b_alpha","#b_alpha_isfixed","#b_do","#b_pic","#txs","#rbSpl","RubySpliter","#htmRb","#hWarnR_Style","#cntBtn","#putCh","#rec","#setFfs","#r_align","#ruby_pd","l","#mkStyle_r_align","#mkStyle_r_align4ff","#set_ch_in","#set_ch_out","RPN_TXT_LAY","#drawBack","in_style","#$ch_in_style","#ch_in_join","out_style","#$ch_out_style","fncComp","alpha","argChk_Color","g_alpha","#strNoFFS","#regNoFFS","#ffs","#fncFFSStyle","_ch","rb","r_align","add_sty","ev","#needGoTxt","iruby","ruby","a_ruby","add_htm","a0","a1_","a1","#firstCh","#tagCh_sub","#popSpan","#aSpan","#cumDelay","wait","cl","#o2domArg","#pushSpan","r_style","lnk","#stkASpan","t","#page_text","#page_plain_text","#mergePushSpan","curpos","ht","isAddWait","argWait","LayerMng","stk","btn","FrameMng","#add_frame","#let_frame","#set_frame","#frame","#tsy_frame","#hIfrm","#hIfrmVisibleBk","src","vn","b_color","#rect","RPN_ADD_FRAME","ld","_ldr","#hDisabled","iLastSep","path_parent","path_pa_pa","m","p1","win","#loadPic2Img","onload","oUrl","#hEncImgOUrl","aImg","#hARetImg","srcNoPrm","Prm","path","ld2","s2","u2","ri","var_name","#zIdx","d","scale_x","scale_y","rotate","hNow","hArg2","fncA","fncXYSR","fncW","fncH","Log","oCfg","#rec_ch","#rec_r","#reset_rec","#LastLog","#aLog","cnvSArg","prpPrs","fncResizeLay","#modeLnSub","#aLayName","#hPages","#frmMng","tid","#loadplugin","#snapshot","#snapshot4proc","RPN_SNAPSHOT","#snapshot4app","#snapshot4web","#add_lay","#clear_lay","#lay","#trans","#quake","#tsy","#add_filter","#clear_filter","#enable_filter","#ch","#clear_text","#current","#endlink","#er","#graph","#link","#r","#ruby2","#span","#tcy","#dump_lay","#enable_event","#button","#cmdTxt","#bg_color","parseColor","grp","#fore","#back","#stage","#spTransBack","#spTransFore","fncTxt_b_alpha","_name","#foreachRedrawTxtLayBack","fncBtnFont","#hProcDbgRes","lay","#selectNode","#curTxtlay","#modeLn","pages","#grpCover","visible","bg_color","p","#msecChWait","cmd","tl","_record","_hArg","dt","getDateStr","PROTOCOL_USERDATA","PROTOCOL_DL","layer","aBk","#getLayers","autoDetectRenderer","pg","renTx","join","RPN_LOADPLUGIN","#chkTxtLay","#getTxtLayer","#$getTxtLayer","#$current","#firstGrplay","#argChk_layer","#rebuildLayerRankInfo","dive","idx_dive","pg_dive","back_dive","fore_dive","idx_back_dive","idx_fore_dive","#sortLayers","#foreachLayers","#srcRuleTransFragment","#rtTransBack","#rtTransFore","sDoTrans","aLayFore","comp","idx","TMP_TSY_NM","TW_INT_TRANS","aBackTransAfter","aBack","ticker","renderer","fncRenderBack","render","fncRender","glsl","comp2","uniforms","Filter","tw","aLn","layers","ai","bi","aLayCtn","fncV","finishBlendLayer","hTo","arrive","backlay","spBack","#add_filter2","#enable_filter2","record","doRecLog","#pgTxtlay","tf","$hPages","aSort","ps"],"mappings":";;;;AAeO,MAAMA,GAAM;AAAA,EAGlB,YAAYC,GAA0BC,GAAaC,GAAiBC,GAA0BC,GAAqBC,GAAuBC,GAAyBC,GAAwB;AAArJ,SAAA,MAAAN,GAAwD,KAAA,OAAAG,GAAqB,KAAA,MAAAC,GAAuB,KAAA,MAAAC,GAAyB,KAAA,MAAAC;AAClK,UAAMC,IAAOH,EAAI,YAAYJ,CAAG;AAChC,QAAI,CAAEO,EAAM,OAAM,YAAYP,CAAG;AAEjC,UAAM,IAAIO,EAAA,GACJC,IAAID,EAAA;AACV,MAAE,UACFC,EAAE,UAAUT;AACZ,UAAMU,IAAKN,EAAK,SAAS,IAAI,SAASJ,CAAO,QAAQC,CAAG;AACxD,MAAE,IAAI,OAAO,EAAE,OAAOS,IAAI,KAC1BD,EAAE,IAAI,OAAOA,EAAE,OAAOC,IAAI,KAC1BR,EAAK,SAAS,EAAE,GAAG,GACnBC,EAAK,SAASM,EAAE,GAAG,GACnBE,EAAeP,GAAM,WAAW,EAAI,GACpCO,EAAeP,GAAM,WAAW,EAAI,GACpCG,EAAI,SAAS,EAAE,IAAIH,CAAI,KAAKK,EAAE,IAAIL,CAAI,GACtC,KAAKQ,KAAM,EAAC,MAAM,GAAG,MAAMH,EAAA,GAC3BN,EAAK,UAAU;AAGf,UAAMU,IAAQ,gBAAgBb,CAAO;AACrC,IAAAM,EAAI,aAAa,OAAOO,GAAO,EAAI,GACnCP,EAAI,OAAOO,IAAO,eAAe,MAAK,KAAKD,GAAI,KAAK,KAAK,GACzDN,EAAI,OAAOO,IAAO,eAAe,MAAK,KAAKD,GAAI,KAAK,KAAK,GACzDN,EAAI,OAAOO,IAAO,gBAAgB,MAAK,KAAKD,GAAI,KAAK,MAAM,GAC3DN,EAAI,OAAOO,IAAO,gBAAgB,MAAK,KAAKD,GAAI,KAAK,MAAM,GAC3DN,EAAI,OAAOO,IAAO,iBAAiB,MAAK,KAAKD,GAAI,KAAK,IAAI,OAAO,GACjEN,EAAI,OAAOO,IAAO,iBAAiB,MAAK,KAAKD,GAAI,KAAK,IAAI,OAAO,GACjEN,EAAI,OAAOO,IAAO,eAAe,MAAK,KAAKD,GAAI,KAAK,KAAK,GACzDN,EAAI,OAAOO,IAAO,eAAe,MAAK,KAAKD,GAAI,KAAK,KAAK,GACzDN,EAAI,OAAOO,IAAO,WAAW,MAAK,KAAKD,GAAI,KAAK,CAAC,GACjDN,EAAI,OAAOO,IAAO,WAAW,MAAK,KAAKD,GAAI,KAAK,CAAC,GACjDN,EAAI,OAAOO,IAAO,WAAW,MAAK,KAAKD,GAAI,KAAK,CAAC,GACjDN,EAAI,OAAOO,IAAO,WAAW,MAAK,KAAKD,GAAI,KAAK,CAAC;AAAA,EAClD;AAAA,EApCAA;AAAA,EAqCA,UAAU;AACT,SAAKA,GAAI,KAAK,QAAA,GACd,KAAKA,GAAI,KAAK,QAAA;AAAA,EACf;AAAA,EAES,MAAM,CAACR,MAAc,KAAK,QAAQA,CAAI,EAAE,IAAIA,CAAI;AAAA,EAChD,UAAU,CAACA,MACnBL,GAAM,YAAYK,GAAM,MAAM,MAAM,SACjC,KAAKQ,GAAI,OACT,KAAKA,GAAI;AAAA,EACb,OAAO,YAAYE,GAAYC,GAAqB;AACnD,UAAMC,IAAIF,EAAK,QAAQC;AACvB,QAAIC,MAAM,UAAUA,MAAM;AAAS,aAAAF,EAAK,OAAOE,GAAUA;AAEzD,UAAM,MAAM,aAAYA,IAAG,QAAQ;AAAA,EACpC;AAAA,EACA,IAAI,OAAc;AAAC,WAAO,KAAKJ,GAAI;AAAA,EAAI;AAAA,EACvC,IAAI,OAAc;AAAC,WAAO,KAAKA,GAAI;AAAA,EAAI;AAAA,EAEvC,UAAUK,GAA6B;AACtC,KAAC,KAAKL,GAAI,MAAM,KAAKA,GAAI,IAAI,IAAI,CAAC,KAAKA,GAAI,MAAM,KAAKA,GAAI,IAAI,GAC9D,KAAKA,GAAI,KAAK,KAAK,KAAKA,GAAI,MAAMK,CAAI;AAAA,EACvC;AAED;ACxDO,MAAMC,GAAW;AAAA;AAAA,EAMvB,YAAqBC,GAAyBC,IAAQ,IAAO;AAAxC,SAAA,SAAAD,GAAyB,KAAA,QAAAC;AAAA,EAAgB;AAAA,EAL9D,OAAO,KAAKC,GAAuBC,GAAeC,GAAyBC,GAAsBC,GAAcC,GAAgB;AAAA,EAAc;AAAA,EAC7I,OAAO,kBAAkB;AAAA,EAAc;AAAA,EAKvC,UAAU;AAAA,EAAc;AAAA,EAExB,UAAgB;AAAC,WAAO,KAAK;AAAA,EAAI;AAAA,EACvB,OAAc,CAAA;AAAA,EACxB,QAAQtB,GAAkB;AACzB,SAAK,OAAOA;AAAA,EACb;AAAA,EAEA,SAASuB,GAAa;AAAA,EAAc;AAAA,EAEpC,MAAMC,GAAoB;AAAA,EAC1B;AAAA,EAEA,OAAO,YAAY;AAAA,EAAc;AAAA,EACjC,OAAO,UAAU;AAAA,EAAc;AAAA,EAC/B,IAAI,QAAQC,GAAa;AAAA,EAAc;AAAA,EACvC,OAAO,YAAY;AAAA,EAAc;AAAA,EAGjC,YAAY;AAAA,EAAc;AAAA,EAC1B,OAAO;AAAA,EAAc;AAAA,EACrB,OAAO,aAAaC,GAAa;AAAA,EAAc;AAEhD;AAIO,MAAMC,WAAyBb,GAAW;AAAA,EAChD,YAAYc,GAAcC,GAAe;AAAC,UAAM,QAAQ,EAAI;AAAA,EAAC;AAAA,EAC7D,MAAMC,GAAa;AAAA,EAAc;AAClC;ACnBO,MAAMC,EAAW;AAAA,EA+BvB,YAAqBC,IAAQ,IAAaC,GAAyBC,IAA4B,MAAK;AAAA,EAAc,GAAWC,IAAuC,MAAK;AAAA,EAAc,GAAG;AACzL,IADoB,KAAA,QAAAH,GAAqB,KAAA,MAAAC,GAAyB,KAAA,eAAAC,GAA0D,KAAA,aAAAC,GACtHH,MAEN,KAAKI,KAAYH,IAAM,CAAAI,MAAK;AAAC,MAAAJ,EAAI,SAASI,CAAE,GAAG,KAAKC,GAAK,KAAKD,CAAE;AAAA,IAAC,IAAI,MAAK;AAAA,IAAc,GACxF,KAAK,MAAMN,EAAWQ;AAAA,MACrBP;AAAA,MACA,CAAAK,MAAK,KAAK,aAAaA,CAAE;AAAA;AAAA,MACzB,CAAAG,MAAS,KAAK,WAAWA,CAAM;AAAA;AAAA,MAC/B,CAAAH,MAAK,KAAKD,GAAUC,CAAE;AAAA;AAAA,IAAA;AAAA,EAExB;AAAA,EAxCA,OAAOI;AAAA,EACP,OAAOC;AAAA,EACP,OAAOC;AAAA,EACP,OAAOC;AAAA,EACP,OAAO,KAAKC,GAAa3C,GAAgBD,GAAc6C,GAAaC,GAAkB;AACrF,IAAAhB,EAAWU,KAAOI,GAClBd,EAAWW,KAAOxC,GAClB6B,EAAWY,KAAO1C,GAClB8B,EAAWa,KAAQE,GACf7C,EAAI,IAAI,WACX8B,EAAWiB,KAAe,CAACC,GAAGC,GAAKC,MAAQpB,EAAWqB,GAAiBH,GAAGC,GAAKC,CAAI,GACnFpB,EAAWsB,KAAe,CAACJ,GAAGC,GAAKC,MAAQpB,EAAWuB,GAAiBL,GAAGC,GAAKC,CAAI;AAGpF,UAAMI,IAAM,MAAK;AAChB,YAAMC,IAAMzB,EAAW0B,KAAU1B,EAAW2B;AAC5C,iBAAW9C,KAAK,OAAO,OAAOmB,EAAW4B,EAAQ,KAAK,SAASH;AAAA,IAChE;AACA,IAAAT,EAAO;AAAA,MACN,CAAAS,MAAM;AAAC,QAAAzB,EAAW0B,KAAUD,GAAKD,EAAA;AAAA,MAAK;AAAA,MACtC,CAAAC,MAAM;AAAC,QAAAzB,EAAW2B,KAAUF,GAAKD,EAAA;AAAA,MAAK;AAAA,IAAA;AAAA,EAExC;AAAA,EACA,OAAOG,KAAU;AAAA,EACjB,OAAOD,KAAU;AAAA,EAEjB,OAAOG;AAAA,EACP,OAAO,UAAUC,GAAiB;AAAC,IAAA9B,EAAW6B,KAAUC;AAAA,EAAM;AAAA,EAcrD,MAAgB;AAAA,EACzBzB;AAAA,EACAE,KAAsB,CAAA;AAAA,EAEtB,UAAU;AACT,SAAK,eAAe,MAAK;AAAA,IAAc,GACvC,KAAK,aAAc,MAAK;AAAA,IAAc,GACtC,KAAKF,KAAa,CAAAC,MAAKA,EAAG,QAAA;AAE1B,eAAWA,KAAM,KAAKC;AACrB,MAAAP,EAAW,UAAUM,EAAG,IAAI,GAE5BA,EAAG,QAAQ,YAAYA,CAAE,GACzBA,EAAG,QAAA;AAEJ,SAAKC,KAAO,CAAA;AAAA,EACb;AAAA,EAEA,OAAO,UAAU;AAChB,IAAAP,EAAW+B,KAAS,CAAA,GACpB/B,EAAWgC,KAAiB,CAAA,GAE5BhC,EAAW4B,KAAW,CAAA;AAAA,EACvB;AAAA;AAAA,EAIA,OAAOpB,GAAayB,GAAa9B,GAA2BC,GAAsC8B,GAAwC;AACzI,QAAI,CAAED,EAAK,QAAO;AAElB,QAAIE,IAAW;AACf,QAAIF,EAAI,WAAW,OAAO,GAAG;AAC5B,YAAMT,IAAM,MAAK;AAChB,cAAMlB,IAAK8B,EAAO,KAAKH,CAAG;AAC1B,QAAAC,EAAS5B,CAAE,GACXH,EAAaG,CAAE,GACfF,EAAW+B,CAAQ;AAAA,MACpB;AACA,aAAIF,KAAOI,KAAoBb,EAAA,KACzBW,IAAW,IAAO,IAAIG,EAAA,EAAQ,IAAIL,GAAKA,CAAG,EAAE,KAAKT,CAAG,IAEnDW;AAAA,IACR;AAEA,UAAMI,IAA0C,CAAA,GAC1CC,IAAM,IAAIF,EAAA,GACVG,IAAIR,EAAI,MAAM,GAAG,GACjBS,IAAMD,EAAE;AACd,aAASE,IAAE,GAAGA,IAAED,GAAK,EAAEC,GAAG;AACzB,YAAMC,IAAMH,EAAEE,CAAC;AACf,UAAI,CAAEC,EAAK,OAAM;AAGjB,YAAM,EAAC,IAAAC,GAAI,IAAAC,GAAI,WAAAC,GAAW,IAAAC,MAAMhD,EAAW+B,GAAOa,CAAG,KAAK;AAAA,QACzD,IAAKA;AAAA,QACL,IAAK;AAAA,QACL,IAAK;AAAA,QACL,WAAYK,GAAY;AAAA,MAAA,GAEnBzB,IAAMmB,MAAM,IAAGxC,IAAc,CAACG,MAAc;AAEjD,QAAMA,EAAG,cACTA,EAAG,IAAIuC,GACPvC,EAAG,IAAIwC,GACPxC,EAAG,YAAYyC;AAAA,MAChB;AAMA,UALAR,EAAM,KAAK,EAAC,IAAAS,GAAI,KAAAxB,EAAA,CAAI,GAEhBwB,KAAMhD,EAAWgC,MACjBgB,KAAMX,MAENW,KAAMV,EAAO,OAAO,UAAW;AAanC,MAAAH,IAAW;AACX,YAAMe,IAAMlD,EAAWU,GAAK,WAAWsC,GAAIG,EAAoB,MAAM,GAC/DC,IAAK,KAAKxC,GAAK,IAAI,SACvB,EAAC,SAASsC,EAAI,SAAS,OAAO,IAC7BG,EAAe,kBAAkB,OACjCA,EAAe,kBAAkB,OAAA,IAClC,CAAA;AACF,MAAAb,EAAI,IAAI,EAAC,GAAGY,GAAI,MAAMJ,GAAI,KAAAE,GAAI;AAAA,IAC/B;AAGA,UAAMI,IAAY,CAACC,GAAQC,MAAwC;AAClE,iBAAW,EAAC,IAAAR,GAAI,KAAAxB,EAAA,KAAQe,GAAO;AAC9B,cAAMjC,IAAKN,EAAWyD,GAAUT,GAAIQ,CAAI;AACxC,QAAAlD,EAAG,OAAO0C,GACVd,EAAS5B,CAAE,GACXkB,EAAIlB,CAAE;AAAA,MACP;AACA,MAAAF,EAAW+B,CAAQ;AAAA,IACpB;AACA,WAAIA,IACHK,EAAI,IAAI,CAACrB,GAAKC,MAAQ;AACrB,UAAI;AACH,YAAID,EAAI,cAAc,QAAQ;AAE7B,UAAK,KAAKP,GAAK,IAAI,QAAQO,EAAI,IAAI,EAClC,KAAK,CAAAuC,MAAM1D,EAAWsB,GAAaoC,GAAKvC,GAAKC,CAAI,CAAC;AACnD;AAAA,QACD;AAGA,QAAK,KAAKR,GAAK,MAAMO,EAAI,IAAI,EAAE,KAAK,CAAAwC,MAAM3D,EAAWiB,GAAa0C,GAAKxC,GAAKC,CAAI,CAAC;AAAA,MAClF,SAASwC,GAAG;AACX,cAAMC,IAAM,mBAAmB1C,EAAI,IAAI,IAAI,OAAOyC,CAAC,CAAC;AACpD,QAAI5D,EAAW6B,GAAQ,aAAY,QAAQ,KAAKgC,CAAG,IAAQ,QAAQ,MAAM,OAAMA,GAAK,gBAAgB;AAAA,MACrG;AAAA,IACD,CAAC,EACA,KAAKP,CAAS,IAEX,eAAe,MAAKA,EAAU,GAAG,CAAA,CAAE,CAAC,GAElCnB;AAAA,EACR;AAAA,EACA,OAAOJ,KAAoB,CAAA;AAAA,EAC3B,OAAOC,KAA8C,CAAA;AAAA;AAAA,EAIrD,OAAOf,KAAe,CAAC6C,GAAiB,EAAC,MAAAC,GAAM,MAAAC,GAAM,MAAAC,EAAA,GAAY7C,MAAmB;AACnF,YAAQ2C,GAAA;AAAA,MACP,KAAKV,EAAe,KAAK,OAAM;AAC9B,cAAMa,IAAwBD;AAC9B,QAAAC,EAAI,SAASlE,EAAW0B,IACxB1B,EAAW4B,GAASoC,CAAI,IAAIhE,EAAWmE,GAAeD,CAAG;AAAA,MAC1D;AAAA,IAAA;AAED,IAAA9C,EAAA;AAAA,EACD;AAAA,EACA,OAAOgD,GAAgBC,GAAyB;AAC/C,UAAMC,IAAc,qBAAqB,KAAKD,EAAI,CAAC,KAAK,EAAE;AAC1D,QAAI,CAAEC,EAAa,QAAO,CAAA;AAE1B,UAAM,CAAA,EAAGC,IAAG,IAAIC,IAAG,EAAE,IAAIF,GACnBG,IAAKF,EAAG,QACRG,IAAK,CAACF,EAAG,SAAQ;AACvB,WAAOH,EAAI,KAAK,CAAC5B,GAAGnE,MAAKqG,GAAIlC,EAAE,MAAMgC,GAAIC,CAAE,CAAC,IAAIC,GAAIrG,EAAE,MAAMmG,GAAIC,CAAE,CAAC,IAAG,IAAG,EAAE;AAAA,EAC5E;AAAA;AAAA,EAGA,OAAOrD,GAAiBH,GAAgBC,GAAUC,GAAiB;AAIlE,QAHAD,EAAI,OAAOD,GACPC,EAAI,cAAc,SAAOC,EAAA,GAEzBF,aAAa,kBAAkB;AAElC,MAAK0D,EAAQ,WAAW1D,GAAGC,EAAI,KAAKA,EAAI,IAAI,EAAE,KAAK,CAAAD,MAAI;AACtD,QAAAC,EAAI,UAAUD,GAIdC,EAAI,OAAOkC,EAAe,KAAK;AAAA,MAGhC,CAAC;AACD;AAAA,IACD;AAEA,IAAInC,aAAa,qBAChBA,EAAE,SAASlB,EAAW0B,IACtB1B,EAAW4B,GAAST,EAAI,IAAI,IAAInB,EAAWmE,GAAejD,CAAC,GAE3DC,EAAI,OAAOkC,EAAe,KAAK,QAGhCjC,EAAA;AAAA,EACD;AAAA,EACA,OAAO+C,GAAeD,GAAyC;AAE9D,WAAIlE,EAAWW,GAAK,OAAO,yBAAyB,MAEnDkE,GAAS,gBAAgB,UAAUA,GAAS,QAAQ,kCAAkC,GAAG,GACzFX,EAAI,QAAQ,KAEbA,EAAI,aAAa,eAAe,EAAE,GAC3BA;AAAA,EACR;AAAA;AAAA,EAGA,OAAO5C,KAAe,CAACwC,GAAY,EAAC,MAAAC,GAAM,aAAAe,GAAa,MAAAd,GAAM,MAAAC,EAAA,GAAY7C,MAAmB;AAC3F,YAAQ2C,GAAA;AAAA,MACP,KAAKV,EAAe,KAAK,MAAK;AAC7B,cAAMgB,IAAgBS,EAAY;AAClC,QAAA9E,EAAWoE,GAAgBC,CAAG,GAC9BrE,EAAWgC,GAAegC,CAAI,IAAI;AAAA,UACjC,MAAMK,EAAI,IAAI,OAAKO,EAAQ,KAAK5B,CAAE,CAAC;AAAA,UACnC,MAA0BiB,EAAK;AAAA,QAAA;AAAA,MAEjC;AAAA,IAAA;AAED,IAAA7C,EAAA;AAAA,EACD;AAAA;AAAA,EAGA,OAAOG,GAAiBL,GAAWC,GAAUC,GAAiB;AAE7D,UAAM,EAAC,MAAA2D,GAAM,QAAAC,MAAU7D,EAAI,OAAO,KAAK,MAAMD,CAAC;AAE9C,QADAC,EAAI,OAAOkC,EAAe,KAAK,MAC3B,CAAE0B,GAAM,OAAO;AAAC,MAAA3D,EAAA;AAAQ;AAAA,IAAM;AAGlC,UAAM4B,IAAKiC,GAAMF,EAAK,KAAK,GACrB7B,IAAMlD,EAAWU,GAAK,WAAWsC,GAAIG,EAAoB,MAAM;AACpE,QAAIb,EAAA,EACJ,IAAI,CAAC4C,GAAMC,MAAS;AAEpB,WAAKvE,GAAK,MAAMsE,EAAK,IAAI,EACxB,KAAK,CAAAE,MAAK;AACV,QAAAF,EAAK,OAAOE,GACRA,aAAc,qBACjBF,EAAK,OAAO7B,EAAe,KAAK,OAChC,IAAI,gBAAgB+B,EAAG,GAAG,IAE3BD,EAAA;AAAA,MACD,CAAC,EACA,MAAM,CAACvB,MAAc,KAAK/C,GAAM,UAAU,kCAAkCqE,EAAK,IAAI,IAAI,OAAOtB,CAAC,CAAC,IAAI,EAAK,CAAC;AAAA,IAC9G,CAAC,EACA,IAAI,EAAC,MAAMZ,GAAI,KAAAE,GAAK,SAASG,EAAe,kBAAkB,QAAO,EACrE,KAAK,CAACb,GAAK6C,MAAS;AACpB,iBAAW,EAAC,MAAApB,OAAS,OAAO,OAAOzB,EAAI,SAAS,GAAG;AAElD,cAAM,EAAC,aAAA8C,EAAA,IAAeV,EAAQ,KAAKX,CAAI,GACjCsB,IAAM,OAAO,OAEhBP,CAAM;AACT,QAAAhF,EAAWgC,GAAeb,EAAI,IAAI,IAAI;AAAA,UACrC,MAAMoE,EAAI,IAAI,CAAC,EAAC,OAAO,EAAC,GAAAC,GAAG,GAAAC,GAAG,GAAAC,GAAG,GAAAC,EAAA,EAAC,MAAM,IAAIf;AAAA,YAC3CU;AAAA,YACA,IAAIM,EAAUJ,GAAGC,GAAGC,GAAGC,CAAC;AAAA,UAAA,CACxB;AAAA;AAAA,UAED,MAAAZ;AAAA,QAAA;AAAA,MAEF;AACA,MAAA3D,EAAA;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEC,OAAOqC,GAAUT,GAAYQ,GAA8C;AAC1E,UAAMqC,IAAM7F,EAAWgC,GAAegB,CAAE;AACxC,QAAI6C,GAAK;AACR,YAAMC,IAAM,IAAIC,GAAeF,EAAI,IAAI;AACvC,aAAAC,EAAI,iBAAiBD,EAAI,KAAK,kBAAkB,GAChDC,EAAI,KAAA,GACGA;AAAA,IACR;AACA,QAAI9C,KAAMX,GAAoB,QAAOD,EAAO,KAAKY,CAAE;AACnD,UAAMkB,IAAMlE,EAAW4B,GAASoB,CAAE;AAClC,QAAIkB,EAAK,QAAO9B,EAAO,KAAK8B,CAAG;AAE/B,UAAMhD,IAAIsC,EAAKR,CAAE;AACjB,WAAO9B,IAAG,IAAIkB,EAAOlB,EAAE,OAAO,IAAG,IAAIkB,EAAA;AAAA,EACtC;AAAA,EACD,OAAOR,KAA8C,CAAA;AAAA,EACrD,OAAO,YAAYoB,GAAY;AAAC,WAAOhD,EAAW4B,GAASoB,CAAE;AAAA,EAAC;AAAA,EAE9D,OAAO,GAAG/E,GAAqB;AAG9B,UAAM,EAAC,IAAA+E,MAAM/E;AACb,QAAI,CAAE+E,EAAI,OAAM;AAChB,UAAMkB,IAAMlE,EAAW4B,GAASoB,CAAE;AAClC,QAAI,CAAEkB,KAAOA,EAAI,KAAM,QAAO;AAE9B,QAAIlE,EAAW6B,GAAQ,cAAcqC,EAAI;AAAQ,aAAAlE,EAAW,UAAUgD,CAAE,GAAU;AAElF,UAAMgD,IAAS,WAAUhD,GACnBiD,IAAOzH,EAAeP,GAAM,QAAQ,EAAI,GACxCuD,IAAM,MAAK;AAAC,MAAIyE,KAAMjG,EAAW,UAAUgD,CAAE;AAAA,IAAC;AACpD,WAAAkD,EAAQ,UAAUF,GAAQxE,GAAK,IAAMA,CAAG,GACxC0C,EAAI,iBAAiB,SAAS,MAAKgC,EAAQ,cAAcF,CAAM,GAAG,EAAC,MAAM,IAAM,SAAS,GAAA,CAAK,GAEtF;AAAA,EACR;AAAA,EAEA,OAAO,UAAUhD,GAAY;AAC5B,UAAMkB,IAAMlE,EAAW4B,GAASoB,CAAE;AAClC,IAAMkB,MAGN,OAAOlE,EAAW4B,GAASoB,CAAE,GAC7BkB,EAAI,MAAA,GACJA,EAAI,cAAcA,EAAI;AAAA,EACvB;AAAA,EAGA,OAAO,SAASjG,GAAqB;AACpC,UAAM,EAAC,MAAA+F,MAAQ/F;AACf,QAAI,CAAE+F,EAAM,OAAM;AAClB,QAAIA,KAAQhE,EAAW+B,GAAQ,OAAM,aAAYiC,IAAM;AAEvD,UAAM,EAAC,IAAAhB,IAAKgB,EAAA,IAAQ/F;AACpB,WAAA+B,EAAW+B,GAAOiC,CAAI,IAAI;AAAA,MACzB,IAAAhB;AAAA,MACA,IAAImD,EAAWlI,GAAM,MAAM,CAAC;AAAA,MAC5B,IAAIkI,EAAWlI,GAAM,MAAM,CAAC;AAAA,MAC5B,WAAWmI,EAAM,gBAAgBnI,EAAK,aAAa,EAAE;AAAA,IAAA,GAG/C;AAAA,EACR;AAAA;AAGD;AC/WO,MAAMoI,UAAiBD,EAAM;AAAA,EACnC,OAAgBE,KAAO,IAAIC,GAAA;AAAA,EAE3B,OAAOC;AAAA,EACP,OAAO,KAAKzF,GAAaD,GAAa2F,GAAsBvI,GAAc8C,GAAkB7C,GAAsB;AACjH,IAAAkI,EAASG,KAAWC,GACpBzG,EAAW,KAAKc,GAAK3C,GAAKD,GAAK6C,GAAMC,CAAM;AAAA,EAC5C;AAAA,EACA,OAAO,UAAU;AAAC,IAAAqF,EAASC,GAAK,MAAA,GAAStG,EAAW,QAAA;AAAA,EAAS;AAAA,EAEpD0G,KAAO,IAAI9G,GAAiB,KAAK,KAAK,IAAI;AAAA,EACnD,cAAc;AACb,UAAA,GACI+G,EAAO,UACV,KAAKC,KAAY,CAAAtG,MAAK,KAAKoG,GAAK,MAAMpG,CAAE,GACxC,KAAK,YAAY,MAAK;AAAC,YAAM,UAAA,GAAa,KAAKoG,GAAK,UAAA;AAAA,IAAW;AAAA,EAEjE;AAAA,EACAE,KAAkC,MAAK;AAAA,EAAc;AAAA,EAErDC,KAAU;AAAA,EACVC,KAAU;AAAA,EACVC,KAAW;AAAA,EACO,MAAM,CAAC9I,MAAc;AACtC,UAAM+I,IAAcd,EAAQ,SAAQ,qBAAqB,KAAK,KAAK,IAC7D9H,IAAM,KAAK6I,GAAQhJ,GAAM,CAAAwC,MAAS;AACvC,MAAIA,KAAQyF,EAAQ,QAAQc,CAAW;AAAA,IACxC,CAAC;AACD,WAAI5I,KAAK8H,EAAQ,UAAUc,CAAW,GAC/B5I;AAAA,EACR;AAAA,EACA6I,GAAQhJ,GAAYiJ,GAA4C;AAC/D,UAAM,EAAC,IAAAlE,GAAI,MAAAmE,IAAO,GAAA,IAAMlJ;AAExB,QADA,KAAKyI,GAAK,QAAQzI,CAAI,GAClB,CAAE+E;AACL,mBAAM,IAAI/E,CAAI,GAEV,KAAK,IAAI,SAAS,SAAS,KAAG,KAAK,OAAOA,CAAI,GAClD,KAAK6I,KAAS,IACd,KAAKD,KAAS,KAAKE,KAAWI,GAC9BD,EAAQ,EAAK,GACN;AAGR,UAAME,IAAO,QAAQnJ,GACfoJ,IAAS,UAAUpJ;AAEzB,gBAAK,SAAS,EAAC,cAAcO,EAAeP,GAAM,gBAAgB,EAAI,GAAE,GACpEmJ,WAAWN,KAAS9D,IACpBqE,WAAaN,KAAWI,IAC5B,MAAM,IAAIlJ,CAAI,GAEdA,EAAK,KAAK,GACVA,EAAK,KAAK,GAEV,KAAKqJ,GAAK,QAAA,GACV,KAAKA,KAAO,IAAItH;AAAA,MACf,KAAK6G,KAAS7D,KAAMmE,IAAM,MAAKA,IAAM;AAAA,MACrC,KAAK;AAAA,MACL,CAAA7G,MAAK;AACJ,SAAI,WAAWrC,KAAQ,YAAYA,OAClCqC,EAAG,QAAQ6F,EAAWlI,GAAM,SAAS,CAAC,GACtCqC,EAAG,SAAS6F,EAAWlI,GAAM,UAAU,CAAC,IAEzC,KAAKsJ,KAASjH,EAAG,OACjB,KAAKkH,KAAUlH,EAAG,QAClB8F,EAAM,MAAM9F,GAAIrC,GAAM,KAAK,KAAK,EAAI,GACpCmI,EAAM,aAAa,KAAK,KAAKnI,CAAI,GAGjC,KAAK2I,GAAUtG,CAAE;AAAA,MAClB;AAAA,MACA,CAAAG,MAASyG,EAAQzG,CAAM;AAAA,IAAA,GAEjB,KAAK6G,GAAK;AAAA,EAClB;AAAA,EACAA,KAAO,IAAItH,EAAA;AAAA,EACXuH,KAAS;AAAA,EACTC,KAAU;AAAA,EACV,IAAa,QAAQ;AAAC,WAAO,KAAKD;AAAA,EAAM;AAAA,EACxC,IAAa,SAAS;AAAC,WAAO,KAAKC;AAAA,EAAO;AAAA,EAGjC,cAAc;AACtB,SAAKC,KAAS,IAAIrF,EAAO,KAAKsF,EAAM,GACpC,KAAKD,GAAO,UAAU,IACtB,KAAK,IAAI,WAAW,KAAKA,IAAQ,CAAC,GAClC,KAAKA,GAAO,SAAS,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC;AAEjD,QAAIE,IAAgB,MAAK;AACxB,YAAMlF,IAAI,KAAK,IAAI;AACnB,WAAK,IAAI,QAAQ;AACjB,iBAAW,KAAK,KAAK,IAAI,YAAY,UAAU;AAC/C,WAAKgF,GAAO,UAAU,IACtBpB,EAASG,GAAS,SAAS,OAAO,KAAK,KAAK,EAAC,eAAe,KAAKkB,IAAO,GACxE,KAAK,IAAI,QAAQjF;AACjB,iBAAW,KAAK,KAAK,IAAI,YAAY,UAAU;AAAA,IAChD;AACA,QAAI,CAAE,KAAK,iBAAiB;AAC3B,YAAMmF,IAASD;AACf,MAAAA,IAAgB,MAAK;AAAC,QAAAA,IAAgB,MAAK;AAAA,QAAc,GAAGC,EAAA;AAAA,MAAQ;AAAA,IACrE;AACA,SAAKC,KAAa,MAAK;AACtB,MAAAF,EAAA,GACA,KAAKF,GAAO,UAAU;AAAA,IACvB,GACApB,EAASG,GAAS,OAAO,IAAI,KAAKqB,EAAU;AAAA,EAC7C;AAAA,EACAH,KAASI,GAAc,OAAO;AAAA,IAC7B,OAAQnB,EAAO;AAAA,IACf,QAASA,EAAO;AAAA,EAAA,CAChB;AAAA,EACDc,KAAS,IAAIrF,EAAA;AAAA,EACbyF,KAAa,MAAK;AAAA,EAAc;AAAA,EACvB,YAAY;AACpB,IAAAxB,EAASG,GAAS,OAAO,OAAO,KAAKqB,EAAU,GAC/C,KAAK,IAAI,YAAY,KAAKJ,EAAM;AAChC,eAAWM,KAAK,KAAK,IAAI,YAAY,UAAU;AAC/C,SAAKN,GAAO,QAAQ,EAAI,GAExB,KAAKC,KAASI,GAAc,OAAO;AAAA,MAClC,OAAQnB,EAAO;AAAA,MACf,QAASA,EAAO;AAAA,IAAA,CAChB;AAAA,EACF;AAAA,EAGA,OAAO1I,GAAkB;AACxB,IAAAmI,EAAM;AAAA,MACL,KAAK,IAAI,SAAS,CAAC,KAAK,KAAK;AAAA,MAC7BnI;AAAA,MACA,KAAK;AAAA,MACL;AAAA,IAAA;AAAA,EAEF;AAAA;AAAA,EAGA,IAAa,kBAAkB;AAC9B,QAAI,KAAK4I,OAAW,GAAI,QAAO;AAE/B,UAAMmB,IAAI,KAAK,IAAI;AACnB,WAAO,KAAKnB,GAAO,MAAM,GAAG,EAAE;AAAA,MAC7B,CAAC7D,GAAIL,MAAKqF,EAAErF,CAAC,aAAaoD,MAAkB/F,EAAW,YAAYgD,CAAE;AAAA,IAAA;AAAA,EAEvE;AAAA,EAES,SAAS/E,GAAkB;AACnC,UAAM,SAASA,CAAI,GACnB,KAAKqJ,GAAK,QAAA,GACV,KAAKR,KAAU,IACf,KAAKC,KAAW,IAChB,KAAKF,KAAU;AAAA,EAChB;AAAA,EACkB,SAAS,OAAM;AAAA,IAAC,GAAG,MAAM,OAAA;AAAA,IAC1C,OAAS,KAAKC;AAAA,IACd,SAAW,KAAKC;AAAA;AAAA,EAAA;AAAA,EAGR,SAASkB,GAAmBnJ,GAA6B;AAEjE,QADA,MAAM,SAASmJ,GAAMnJ,CAAI,GACrBmJ,EAAK,UAAU,MAAMA,EAAK,YAAY,IAAI;AAC7C,WAAKnB,KAAU,IACf,KAAKC,KAAW;AAEhB;AAAA,IACD;AAEA,IAAAjI,EAAK,KAAK,IAAI,QAAQ,CAAAoJ,MAAK,KAAKjB;AAAA,MAC/B,EAAC,IAAIgB,EAAK,OAAO,MAAMA,EAAK,SAAS,MAAMA,EAAK,GAAG,KAAKA,EAAK,GAAG,OAAOA,EAAK,OAAO,WAAW7B,EAAM,iBAAiB6B,EAAK,SAAS,GAAG,UAAUA,EAAK,UAAU,SAASA,EAAK,SAAS,SAASA,EAAK,QAAA;AAAA,MACpM,CAAAE,MAAU;AAAC,aAAK,IAAI,SAAS,IAAIF,EAAK,GAAGA,EAAK,CAAC,GAAGC,EAAA;AAAA,MAAI;AAAA;AAAA,IAAA,CAEtD,CAAC;AAAA,EACH;AAAA,EAES,eAAeE,GAAsB;AAC7C,IAAM,KAAK,IAAI,WACfA,EAAI,KAAK1B,EAAI;AAAA,EACd;AAAA;AAAA,EAGS,YAAY;AAAC,UAAM,UAAA;AAAA,EAAW;AAAA,EAE9B,iBAAiB;AAAC,SAAKA,GAAK,UAAU;AAAA,EAAI;AAAA;AAAA,EAGjC,OAAO,MAAK,MAAM,SAAQ,YAAY,KAAKG,EAAM;AAEpE;ACvLA,MAAMwB,KAAU,qDACVC,KAAU,cACVC,KAAU,OACVC,KAAUH,IAEVI,KAAa,IAAI,OAAO,IAAIJ,EAAO,GAAG,GACtCK,KAAa,IAAI,OAAO,IAAIJ,EAAO,GAAG,GACtCK,KAAa,IAAI,OAAO,IAAIJ,EAAO,GAAG,GACtCK,KAAaH;AAGZ,MAAMI,GAAY;AAAA,EACxBC,KAAUT;AAAA,EACVU,KAAUT;AAAA,EACVU,KAAUT;AAAA,EACVU,KAAUT;AAAA,EACV,IAAI,OAAO;AAAC,WAAO,KAAKM;AAAA,EAAM;AAAA,EAC9B,IAAI,OAAO;AAAC,WAAO,KAAKC;AAAA,EAAM;AAAA,EAC9B,IAAI,OAAO;AAAC,WAAO,KAAKC;AAAA,EAAM;AAAA,EAC9B,IAAI,OAAO;AAAC,WAAO,KAAKC;AAAA,EAAM;AAAA,EAE9BC,KAAWT;AAAA,EACXU,KAAWT;AAAA,EACXU,KAAWT;AAAA,EACXU,KAAWT;AAAA,EAEX,cAAe;AAAA,EACf,mBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,OAAS;AAAA,EACT,IAAI3K,GAAY;AACf,IAAIA,EAAK,gBACR,KAAK6K,KAAS7K,EAAK,aACnB,KAAKiL,KAAW,IAAI,OAAO,IAAI,KAAKJ,EAAM,GAAG,IAE1C7K,EAAK,gBACR,KAAK8K,KAAS9K,EAAK,aACnB,KAAKqL,GAAA,GACL,KAAKH,KAAW,IAAI,OAAO,IAAI,KAAKJ,EAAM,GAAG,IAE1C9K,EAAK,gBACR,KAAK+K,KAAS/K,EAAK,aACnB,KAAKsL,GAAA,GACL,KAAKH,KAAW,IAAI,OAAO,IAAI,KAAKJ,EAAM,GAAG,IAE1C/K,EAAK,iBACR,KAAKgL,KAAShL,EAAK,cACnB,KAAKqL,GAAA,GACL,KAAKC,GAAA,GACL,KAAKF,KAAW,IAAI,OAAO,IAAI,KAAKJ,EAAM,GAAG,IAE1C,UAAUhL,MAAM,KAAK,OAAOO,EAAeP,GAAM,QAAQ,EAAK,IAElE,KAAK,cAAeO,EAAeP,GAAM,eAAe,KAAK,WAAW,GACxE,KAAK,mBAAmBkI,EAAWlI,GAAM,oBAAoB,KAAK,gBAAgB,GAClF,KAAK,kBAAkBkI,EAAWlI,GAAM,mBAAmB,KAAK,eAAe;AAAA,EAChF;AAAA;AAAA,EAECqL,KAAiB;AAEhB,UAAME,IAAU,KAAKT,GAAO,QACtBU,IAAU,KAAKR,GAAO;AAC5B,QAAIO,IAAUC;AACb,eAAS9G,IAAE,GAAGA,IAAE6G,GAAS,EAAE7G,GAAG;AAC7B,cAAMqF,IAAI,KAAKe,GAAOpG,CAAC;AACvB,YAAI,KAAKsG,GAAO,SAASjB,CAAE,EAAG,OAAM,iBAAiBA,CAAC;AAAA,MACvD;AAAA;AAGA,eAASrF,IAAE,GAAGA,IAAE8G,GAAS,EAAE9G,GAAG;AAC7B,cAAMqF,IAAI,KAAKiB,GAAOtG,CAAC;AACvB,YAAI,KAAKoG,GAAO,SAASf,CAAE,EAAG,OAAM,iBAAiBA,CAAC;AAAA,MACvD;AAAA,EAEF;AAAA;AAAA,EAEAuB,KAAiB;AAEhB,UAAMG,IAAU,KAAKV,GAAO,QACtBS,IAAU,KAAKR,GAAO;AAC5B,QAAIS,IAAUD;AACb,eAAS9G,IAAE,GAAGA,IAAE+G,GAAS,EAAE/G,GAAG;AAC7B,cAAMqF,IAAI,KAAKgB,GAAOrG,CAAC;AACvB,YAAI,KAAKsG,GAAO,SAASjB,CAAE,EAAG,OAAM,iBAAiBA,CAAC;AAAA,MACvD;AAAA;AAGA,eAASrF,IAAE,GAAGA,IAAE8G,GAAS,EAAE9G,GAAG;AAC7B,cAAMqF,IAAI,KAAKiB,GAAOtG,CAAC;AACvB,YAAI,KAAKqG,GAAO,SAAShB,CAAE,EAAG,OAAM,iBAAiBA,CAAC;AAAA,MACvD;AAAA,EAEF;AAAA,EAED,MAAM2B,GAAiB;AACtB,IAAAA,EAAGC,GAAY,KAAKd,IAAQ,KAAKC,IAAQ,KAAKC,IAAQ,KAAKC,EAAM,GAEjEU,EAAG,cAAe,KAAK,aACvBA,EAAG,mBAAmB,KAAK,kBAC3BA,EAAG,kBAAkB,KAAK,iBAC1BA,EAAG,OAAU,KAAK;AAAA,EACnB;AAAA,EACCC,GAAYC,GAAeC,GAAeC,GAAeC,GAAe;AACvE,IAAI,KAAKlB,OAAWe,MACnB,KAAKf,KAASe,GACd,KAAKX,KAAW,IAAI,OAAO,IAAIW,CAAK,GAAG,IAEpC,KAAKd,OAAWe,MACnB,KAAKf,KAASe,GACd,KAAKX,KAAW,IAAI,OAAO,IAAIW,CAAK,GAAG,IAEpC,KAAKd,OAAWe,MACnB,KAAKf,KAASe,GACd,KAAKX,KAAW,IAAI,OAAO,IAAIW,CAAK,GAAG,IAEpC,KAAKd,OAAWe,MACnB,KAAKf,KAASe,GACd,KAAKX,KAAW,IAAI,OAAO,IAAIW,CAAK,GAAG;AAAA,EAEzC;AAAA,EACD,SAAS;AACR,UAAMC,IAAsB;AAAA,MAC3B,aAAgB,KAAK;AAAA,MACrB,kBAAmB,KAAK;AAAA,MACxB,iBAAmB,KAAK;AAAA,MACxB,MAAU,KAAK;AAAA,IAAA;AAEhB,WAAI,KAAKnB,OAAWT,OAAS4B,EAAE,OAAO,KAAKnB,KACvC,KAAKC,OAAWT,OAAS2B,EAAE,OAAO,KAAKlB,KACvC,KAAKC,OAAWT,OAAS0B,EAAE,OAAO,KAAKjB,KACvC,KAAKC,OAAWT,OAASyB,EAAE,OAAO,KAAKhB,KAEpCgB;AAAA,EACR;AAAA,EACA,SAAShC,GAAyB;AACjC,IAAMA,MAEN,KAAK2B;AAAA,MACJ3B,EAAK,QAAQI;AAAA,MACbJ,EAAK,QAAQK;AAAA,MACbL,EAAK,QAAQM;AAAA,MACbN,EAAK,QAAQO;AAAA,IAAA,GAGd,KAAK,cAAeP,EAAK,aACzB,KAAK,mBAAmBA,EAAK,kBAC7B,KAAK,kBAAkBA,EAAK,iBAC5B,KAAK,OAAUA,EAAK;AAAA,EACrB;AAAA,EAEA,KAAKiC,GAAyBC,GAA+CC,GAAmBC,GAAeC,GAAoC;AAClJ,QAAI,GACA5H,IAAM,GACNC,IAAI,GACJ4H,IAAc,CAAC7H,OAClB6H,IAAc,MAAK,IAEfF,MAAU3H,KACT2H,IAAQ,MAAGH,EAAO,YAAYI,EAAM,WAAW,iBAAiB,gCAAgC,IAC7F,MAED5H,IAAM;AAGd,OAAG;AAGF,UAFA,IAAI,KAAK8H,GAAYN,GAAQC,CAAO,GACpCzH,IAAM,EAAE,QACJ6H,EAAY7H,CAAG,EAAG;AAGtB,UAAI+H,IAAQ;AAEZ,aAAO9H,IAAED,GAAK,EAAEC,GAAG;AAClB,cAAM,EAAC,KAAA+H,GAAK,MAAAC,GAAM,IAAAC,EAAA,IAAM,EAAEjI,CAAC;AAC3B,YAAI+H,EAAI,YAAY,KAAM;AAE1B,cAAMG,IAAKT,IAAUO,EAAK,IAAGA,EAAK;AAGlC,YAAIF,KAASI,KAEVH,EAAI,wBAAwB,YAAY,UAExCA,EAAI,wBAAwB,UAAU,SAAS,MAAM,KAErDA,EAAI,eAAe,wBAAwB,YAAY,UAEvDA,EAAI,eAAe,wBAAwB,UAAU,SAAS,MAAM,GAAG;AACzE,UAAAD,IAAQI,GACF,KAAK,gBACV,KAAK,mBAAmBF,EAAK,GAC7B,KAAK,kBAAkBA,EAAK;AAE7B;AAAA,QACD;AAeA,cAAMG,IAAM,KAAKC,GAAM,GAAGpI,CAAC,GACrB,EAAC,KAAKqI,GAAO,MAAMC,GAAQ,IAAIC,EAAA,IAAQ,EAAEJ,CAAG;AAElD,YAAI,CAAE,KAAK,aAAa;AACvB,eAAK,mBAAmBG,EAAO,GAC/B,KAAK,kBAAkBA,EAAO;AAC9B,gBAAME,IAAM,WAAW,iBAAiBH,CAAK,GACvCI,IAAK,WAAWD,EAAI,QAAQ;AAClC,UAAIf,SAAe,mBAAmBgB,SAC1B,oBAAoBA;AAAA,QACjC;AAEA,QAAAX,IAAQ;AACR,cAAMY,IAAO1I,GACP,EAAC,MAAA2I,GAAM,KAAAC,MAAO,KAAK,OACtB,KAAK,cAAc,GAAGT,GAAKI,GAAMvI,CAAC,IAClC,KAAK,SAAS,GAAGmI,GAAKI,GAAMvI,GAAGiI,CAAE;AAGpC,YAFAjI,IAAI4I,GAEAD,EAAM;AAGV,cAAME,IAAO,EAAE7I,CAAC,EAAG,KACb8I,IAAMD,EAAK,eACXE,IAAK,SAAS,cAAc,IAAI;AACtC,YAAID,EAAI,UAAU,SAAS,OAAO,EAAG,CAAAA,EAAI,aAAaC,GAAIF,CAAI;AAAA,aAAQ;AACrE,gBAAMG,IAAOF,EAAI;AACjB,UAAIE,EAAK,UAAU,SAAS,OAAO,IAClCA,EAAK,cAAe,aAAaD,GAAIC,CAAI,IAErCA,EAAK,aAAaD,GAAID,CAAG;AAAA,QAC/B;AAEA,QAAA9I,KAAK,GACDA,IAAI0I,MAAM1I,IAAI0I,IAClB3I,IAAM;AACN;AAAA,MACD;AAAA,IACD,SAASA,IAAM;AAEf,WAAO,CAAC,GAAGA,CAAG;AAAA,EACf;AAAA;AAAA,EAECqI,GAAMtI,GAAcE,GAAmB;AACtC,UAAMmI,IAAMnI,IAAG,GACT,EAAC,KAAA+H,EAAA,IAAOjI,EAAEqI,CAAG;AACnB,WAAIJ,EAAI,YAAY,OAAaI,KAChCJ,EAAI,MAAM,uBAAuB,QAC/B,MAAM,KAAKA,EAAI,WAAW,EAAE,SAAQ,IACpC,KAGII,IAAK,MAAM,KAAKJ,EAAI,WAAW,EAAE;AAAA,EAEzC;AAAA,EAEDF,GAAYE,GAAWP,GAA4D;AAClF,UAAM/L,IAAiB,CAAA;AACvB,QAAIsM,EAAI,aAAaA,EAAI,UAAW,QAAO,MAAM,KAAKA,EAAI,UAAU,EAAE,IAAI,OAAI,KAAKF,GAAY3L,GAAGsL,CAAO,CAAC,EAAE,KAAA;AAE5G,UAAMyB,IAAMlB,EAAI,cAAe,YAAA;AAC/B,IAAAkB,EAAI,mBAAmBlB,CAAG;AAC1B,QAAImB,IAAM;AACV,UAAMC,IAAMF,EAAI;AAIhB,WAAOC,IAAMC,KAAK;AACjB,MAAAF,EAAI,SAASlB,GAAKmB,CAAG,GACrBD,EAAI,OAAOlB,GAAK,EAAEmB,CAAG;AACrB,YAAMjB,IAAKgB,EAAI,SAAA;AACf,MAAAxN,EAAI,KAAK;AAAA,QACR,IAAAwM;AAAA,QACA,MAAMT,EAAQyB,GAAKhB,CAAE;AAAA,QACrB,KAAMgB,EAAI,eAAe;AAAA,MAAA,CACzB;AAAA,IACF;AACA,WAAAA,EAAI,OAAA,GAEGxN;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,SACCqE,GACAqI,GACAI,GACAa,GACAnB,GAC+B;AAE/B,QAAIjI,IAAIoJ;AACR,QAAI,MAAK5C,GAAS,KAAK+B,CAAI;AAAiB,UACnC,KAAKhC,GAAS,KAAK0B,CAAE;AAC7B,gBAAQjI,IAAI,KAAKoI,GAAMtI,GAAGE,CAAC,MAAM,KAC1B,KAAKuG,GAAS,KAAKzG,EAAEE,CAAC,EAAG,EAAE;AAAjC;AAAA,eAGO,EAAAuI,MAASN,KAAM,KAAKxB,GAAS,KAAK8B,CAAI,GAC1C,QAAO,EAAC,MAAM,IAAM,KAAKvI,IAAG,EAAA;AAAA;AAIjC,SADAA,IAAImI,IACInI,IAAI,KAAKoI,GAAMtI,GAAGE,CAAC,MAAM,KAC1B,KAAKwG,GAAS,KAAK1G,EAAEE,CAAC,EAAG,EAAE;AAAjC;AAED,WAAO,EAAC,MAAM,IAAO,KAAKA,IAAG,EAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,cACCF,GACAqI,GACAI,GACA,GAC+B;AAC/B,UAAMc,IAAO,KAAKjB,GAAMtI,GAAGqI,CAAG,GACxB,EAAC,IAAImB,MAASxJ,EAAEuJ,CAAI;AAG1B,QAAI,KAAK3C,GAAS,KAAK4C,CAAK,KAAK,KAAK/C,GAAS,KAAK+C,CAAK,GAAG;AAC3D,UAAIC,IAAIpB;AAER,OAAI,KAAKzB,GAAS,KAAK6B,CAAI,KAAK,KAAKhC,GAAS,KAAKgC,CAAI,MAAG,EAAEgB;AAG5D,YAAMC,IAAM,KAAKpB,GAAMtI,GAAGyJ,CAAC,GACrB,EAAC,IAAIE,MAAW3J,EAAE0J,CAAG,GACrB,EAAC,IAAIE,MAAW5J,EAAEyJ,CAAC;AAEzB,UAAIE,MAAYC,KAAW,KAAKjD,GAAS,KAAKiD,CAAO,EAAG,QAAO,EAAC,MAAM,IAAO,KAAKF,EAAA;AAElF,UAAI,CAAE,KAAKhD,GAAS,KAAKiD,CAAO,EAAG,QAAO,EAAC,MAAM,IAAO,KAAKF,EAAA;AAE7D,MAAAA,IAAIC;AACJ;AACC,YAAI,CAAE,KAAKhD,GAAS,KAAK1G,EAAEyJ,CAAC,EAAG,EAAE,EAAG;AAAA,cAC3BA,IAAI,KAAKnB,GAAMtI,GAAGyJ,CAAC,MAAM;AACnC,aAAO,EAAC,MAAM,IAAO,KAAKA,IAAG,EAAA;AAAA,IAC9B;AAGA,UAAMI,IAAQ,KAAKvB,GAAMtI,GAAGuJ,CAAI;AAChC,QAAI,KAAK,GAAG;AACX,YAAM,EAAC,IAAIO,MAAU9J,EAAE6J,CAAK;AAG5B,UAAI,KAAKlD,GAAS,KAAK6C,CAAK,KAEvBM,MAAWN;AAAO,eAAO,EAAC,MAAM,IAAO,KAAKK,EAAA;AAGjD,UAAI,KAAKnD,GAAS,KAAKoD,CAAM,GAAG;AAC/B,YAAIL,IAAII;AAER,gBAAQJ,IAAI,KAAKnB,GAAMtI,GAAGyJ,CAAC,MAAM,KAE1B,KAAK/C,GAAS,KAAK1G,EAAEyJ,CAAC,EAAG,EAAE;AAAjC;AAGD,eAAO,EAAC,MAAM,IAAO,KAAKA,IAAG,EAAA;AAAA,MAC9B;AAAA,IACD;AAEA,WAAO,EAAC,MAAM,IAAO,KAAKF,EAAA;AAAA,EAC3B;AAED;ACzZO,SAASQ,GAAOhL,GAAwB0I,GAAyBuC,GAAmBC,GAAiBC,GAAiBC,IAAS,IAAM;AAI1I,QAAMC,IAAO;AAAA,IACZ,QAAQ,CAACnJ,MAAeA,EAAI,WAAW,0BAA0B,MAAM;AAAA,IACvE,UAAU,CAACR,MAAY;AACtB,YAAM4J,IAAYC,EAAe7J,CAAG,EAAE,YAAA;AACtC,aAAO8J,EAAA,EAAQF,CAAS,KAAK;AAAA,IAC9B;AAAA,IACA,WAAAG;AAAA,IACA,WAAAC;AAAA,IACA,YAAAC;AAAA,IACA,cAAAC;AAAA,IACA,SAAS,CAACC,MAA6B;AACtC,YAAM5K,IAAkB,CAAA,GAClBC,IAAM2K,EAAU;AACtB,eAAS1K,IAAE,GAAGA,IAAED,GAAK,EAAEC,EAAG,CAAAF,EAAE,KAAK4K,EAAU1K,CAAC,CAAE;AAC9C,aAAOF;AAAA,IACR;AAAA,EAAA;AAEA,WAASuK,IAAa;AAGrB,UAAMM,IAAO,yBACPC,IAAO;AAEb,WAAO;AAAA,MACN,MAAQD;AAAA,MACR,OAASA;AAAA,MACT,KAAO;AAAA,MACP,KAAO;AAAA,MACP,KAAO;AAAA,MACP,KAAOC;AAAA,MACP,MAAQA;AAAA,MACR,KAAO;AAAA,MACP,MAAQ;AAAA,MACR,KAAO;AAAA,IAAA;AAAA,EAET;AAGD,QAAMC,IAAUC,EAAA,GAGVC,IAAYC,EAAA;AAGlB,WAASC,EAAWC,GAAW;AAC9B,WAAOH,EAAU,WAAA,EAChB,KAAK,CAAAI,MAAU;AACf,YAAMC,IAAY,SAAS,cAAc,OAAO;AAChD,aAAAF,EAAK,YAAYE,CAAS,GAC1BA,EAAU,YAAY,SAAS,eAAeD,CAAO,CAAC,GAE/CD;AAAA,IACR,CAAC;AAAA,EACF;AAGC,WAASd,EAAe7J,GAAU;AAEjC,WADc,gBAAgB,KAAKA,CAAG,IACvB,CAAC,KAAK;AAAA,EACtB;AAEA,WAASgK,EAAUhK,GAAU;AAC5B,WAAOA,EAAI,OAAO,UAAU,MAAM;AAAA,EACnC;AAEA,WAASiK,EAAWjK,GAAU8K,GAAc;AAC3C,UAAMC,IAAM,SAAS,eAAe,mBAAA,GAC9BC,IAAOD,EAAI,cAAc,MAAM;AACrC,IAAAA,EAAI,KAAK,YAAYC,CAAI;AACzB,UAAMzL,IAAIwL,EAAI,cAAc,GAAG;AAC/B,WAAAA,EAAI,KAAK,YAAYxL,CAAC,GAEtByL,EAAK,OAAOF,GAEZvL,EAAE,OAAOS,GACFT,EAAE;AAAA,EACV;AAEA,WAAS2K,EAAalK,GAAU;AAQ/B,WAAO,IAAI,QAAQ,SAASgE,GAAS;AACpC,YAAMiH,IAAU,IAAI,eAAA;AAEpB,MAAAA,EAAQ,qBAAqBC,GAC7BD,EAAQ,YAAYE,GACpBF,EAAQ,eAAe,QACvBA,EAAQ,UAAU,KAClBA,EAAQ,KAAK,OAAOjL,GAAK,EAAI,GAC7BiL,EAAQ,KAAA;AAUR,eAASC,IAAO;AACf,YAAID,EAAQ,eAAe,EAAG;AAE9B,YAAIA,EAAQ,WAAW,KAAK;AAI1B,UAAAG,EAAK,4BAA4BpL,IAAM,eAAeiL,EAAQ,MAAM;AAGrE;AAAA,QACD;AAEA,cAAMI,IAAU,IAAI,WAAA;AACpB,QAAAA,EAAQ,YAAY,WAAW;AAE9B,gBAAMC,IAAUD,EAAQ,OAAQ,SAAA,EAAW,MAAM,GAAG,EAAE,CAAC;AACvD,UAAArH,EAAQsH,CAAO;AAAA,QAChB,GACAD,EAAQ,cAAcJ,EAAQ,QAAQ;AAAA,MACvC;AAEA,eAASE,IAAU;AAIjB,QAAAC,EAAK,yDAAmEpL,CAAG;AAAA,MAE7E;AAEA,eAASoL,EAAKG,GAAc;AAC3B,gBAAQ,MAAMA,CAAO,GACrBvH,EAAQ,EAAE;AAAA,MACX;AAAA,IACD,CAAC;AAAA,EACF;AAEA,WAAS+F,EAAUuB,GAAczK,GAAW;AAC3C,WAAO,UAAUA,IAAO,aAAayK;AAAA,EACtC;AAGD,WAASf,IAAa;AACrB,UAAMiB,IAAY;AAElB,WAAO;AAAA,MACN,WAAAC;AAAA,MACA,eAAAC;AAAA,IAAA;AAGD,aAASA,EAAclL,GAAU;AAChC,aAAOA,EAAI,OAAOgL,CAAS,MAAM;AAAA,IAClC;AAEA,aAASG,EAASnL,GAAU;AAC3B,YAAMoL,IAAmB,CAAA;AACzB,UAAIC;AAEJ,aAAOA,IAAQL,EAAU,KAAKhL,CAAG;AAChC,QAAAoL,EAAO,KAAKC,EAAM,CAAC,CAAE;AAEtB,aAAOD,EAAO,OAAO,SAAS5L,GAAK;AAClC,eAAO,CAAE2J,EAAK,UAAU3J,CAAG;AAAA,MAC5B,CAAC;AAAA,IACF;AAEA,aAAS8L,EAAOtL,GAAUR,GAAU8K,GAAciB,GAAU;AAC3D,aAAO,QAAQ,QAAQ/L,CAAG,EACxB,KAAK,CAAAA,MAAM8K,IAAUnB,EAAK,WAAW3J,GAAK8K,CAAO,IAAI9K,CAAG,EACxD,KAAK+L,KAAOpC,EAAK,YAAY,EAC7B,KAAK,CAAA5I,MAAO4I,EAAK,UAAU5I,GAAM4I,EAAK,SAAS3J,CAAG,CAAC,CAAC,EACpD,KAAK,CAAAgM,MAAUxL,EAAI,QAAQyL,EAAWjM,CAAG,GAAG,OAAOgM,IAAU,IAAI,CAAC;AAEpE,eAASC,EAAWjM,GAAU;AAC7B,eAAO,IAAI,OAAO,mBAAoB2J,EAAK,OAAO3J,CAAG,IAAI,eAAgB,GAAG;AAAA,MAC7E;AAAA,IACD;AAEA,aAASyL,EAAUjL,GAAUsK,GAAciB,GAAW;AACrD,UAAIG,EAAA,EAAmB,QAAO,QAAQ,QAAQ1L,CAAG;AAEjD,aAAO,QAAQ,QAAQA,CAAG,EACxB,KAAKmL,CAAQ,EACb,KAAK,CAAAQ,MAAO;AACZ,YAAIjB,IAAO,QAAQ,QAAQ1K,CAAG;AAC9B,mBAAWR,KAAOmM,EAAM,CAAAjB,IAAOA,EAAK,KAAK,CAAAkB,OAASN,EAAOM,IAAQpM,GAAK8K,GAASiB,CAAG,CAAC;AACnF,eAAOb;AAAA,MACR,CAAC;AAEF,eAASgB,IAAkB;AAC1B,eAAO,CAAER,EAAclL,CAAG;AAAA,MAC3B;AAAA,IACD;AAAA,EACD;AAEA,WAASiK,IAAe;AACvB,WAAO;AAAA,MACN,YAAA4B;AAAA,MACA,MAAM,EAAC,SAAAC,EAAA;AAAA,IAAO;AAGf,aAASD,IAAa;AACrB,aAAOC,EAAA,EACN,KAAK,CAAAC,MAAW,QAAQ;AAAA,QACxBA,EAAS,IAAI,CAACC,MAAgBA,EAAQ,SAAS;AAAA,MAAA,CAC/C,EAEA,KAAK,OAAaC,EAAW,KAAK;AAAA,CAAI,CAAC;AAAA,IACzC;AAEA,aAASH,IAAU;AAClB,aAAO,QAAQ,QAAQ3C,EAAK,QAAQ,SAAS,WAAW,CAAC,EACvD,KAAK+C,CAAW,EAChB,KAAKC,CAAkB,EACvB,KAAK,OAAQC,EAAM,IAAIC,CAAU,CAAC;AAGpC,eAASF,EAAmBG,GAAe;AAC1C,eAAOA,EACN,OAAO,CAACC,MAAaA,EAAK,SAAS,QAAQ,cAAc,EACzD,OAAO,CAACA,MAAazC,EAAQ,cAAcyC,EAAK,MAAM,iBAAiB,KAAK,CAAC,CAAC;AAAA,MAChF;AAEA,eAASL,EAAYM,GAAkB;AACtC,cAAMF,IAAgB,CAAA;AACtB,mBAAWG,KAASD;AAEnB,cAAI;AACH,gBAAIC,EAAM,KAAM;AAEhB,YAAAtD,EAAK,QAAQsD,EAAM,YAAY,CAAA,CAAE,EAAE,QAAQH,EAAS,KAAK,KAAKA,CAAQ,CAAC;AAAA,UACxE,SACOpM,GAAG;AACT,oBAAQ,MAAM,wCAAwCuM,EAAM,MAAM,OAAOvM,CAAC,CAAC;AAAA,UAC5E;AAGD,eAAOoM;AAAA,MACR;AAEA,eAASD,EAAWK,GAAkB;AAErC,eAAO;AAAA,UACN,SAAS,WAAmB;AAE3B,kBAAMpC,KAAWoC,EAAY,oBAAoB,CAAA,GAAI;AACrD,mBAAO5C,EAAQ,UAAU4C,EAAY,SAASpC,CAAO;AAAA,UACtD;AAAA,UACA,MAAM;AACL,mBAAOoC,EAAY,MAAM,iBAAiB,KAAK;AAAA,UAChD;AAAA,QAAA;AAAA,MAEF;AAAA,IACD;AAAA,EACD;AAgCA,UAAQ,QAAQlG,CAAM,EACrB,KAAK,CAAA2D,MAAO;AACZ,UAAMwC,IAAuBxC,EAAK,UAAU,EAAI;AAChD,WAAAwC,EAAI,MAAM,UAAU,OACpBA,EAAI,MAAM,eAAe3D,IAAS,MAClC2D,EAAI,MAAM,aAAa1D,IAAS,MAChC0D,EAAI,MAAM,OAAO,OACjBA,EAAI,MAAM,MAAM,OAChBA,EAAI,MAAM,QAAQ5D,EAAM,SAAQA,EAAM,WAAUA,EAAM,YAAW,MACjE4D,EAAI,MAAM,SAAS5D,EAAM,UAASA,EAAM,UAASA,EAAM,aAAY,MAEnEvC,EAAO,SAAS0C,GACTyD;AAAA,EACR,CAAC,EACA,KAAKzC,CAAU,EACf,KAAK,CAAAC,MAAO;AACZ,IAAAA,EAAK,aAAa,SAAS,8BAA8B;AACzD,UAAMyC,IAAM,IAAI,MAAA;AAEhB,WAAAA,EAAI,MAAM,mFAAmF7D,EAAM,MACnG,eAAeA,EAAM,OACrB,6DACE,IAAI,gBAAe,kBAAkBoB,CAAI,EACzC,WAAW,KAAK,KAAK,EAAE,WAAW;AAAA,GAAM,KAAK,CAC/C,0BACO,IAAI,QAAQ,CAAA3F,MAAK;AAAC,MAAAoI,EAAI,SAAS,MAAKpI,EAAGoI,CAAG;AAAA,IAAC,CAAC;AAAA,EACpD,CAAC,EACA,KAAK,OAAM,IAAI,QAAQ,OAAK,WAAW,MAAKpI,EAAGoI,CAAG,GAAI,GAAG,CAAC,CAAC,EAG3D,KAAK,CAACA,MAAY;AAClB,UAAMC,IAAS,SAAS,cAAc,QAAQ;AAC9C,IAAAA,EAAO,QAAQ9D,EAAM,QACrB8D,EAAO,SAAS9D,EAAM,SACtB8D,EAAO,WAAW,IAAI,EAAG,UAAUD,GAAK,GAAG,CAAC,GAC5C9O,EAAIoD,EAAQ,KAAK2L,CAAM,CAAC;AAAA,EACzB,CAAC,EACA,MAAM,CAAC3M,MAAciB,GAAS,QAAQ,aAAajB,CAAC,EAAE,CAAC;AACzD;ACzRM,MAAM4M,UAAiBC,EAAU;AAAA,EA8CvC,YAA6BvQ,GAA8BwQ,GAAyCxS,GAAc;AACjH,UAAA,GAD4B,KAAA,MAAAgC,GAA8B,KAAA,WAAAwQ,GAAyC,KAAA,MAAAxS,GAGnG,KAAKyS,GAAQ,UAAU,IAAI,OAAO,GAClC,KAAKA,GAAQ,MAAM,WAAW,YAE9BH,EAAShK,GAAS,KAAK,cAAe,YAAY,KAAKmK,EAAO,GAE9D,KAAK,SAAS,KAAKC,EAAO,GAE1B,KAAK,SAAS,KAAKC,EAAa,GAChC,KAAKA,GAAc,OAAO;AAC1B,UAAMC,IAAenK,EAAO,WAEzB,CAAC,EAAC,IAAAiE,GAAI,MAAM,EAAC,GAAApF,GAAG,GAAAC,GAAG,OAAAsL,GAAO,QAAAC,EAAA,EAAM,MAAe,QAAQ,IAAI,gBAAgBpG,CAAE,MAAMpF,CAAC,MAAMC,CAAC,MAAMsL,CAAK,MAAMC,CAAM,EAAE,IACpH,MAAK;AAAA,IAAc;AACtB,SAAKC,KAAaT,EAAS9P,GAAK,KAAK,MAAM,SACxC,CAACwQ,MAAe;AACjB,MAAAJ,EAAaI,CAAE;AAEf,YAAM,EAAC,GAAA1L,GAAG,GAAAC,GAAG,OAAAsL,GAAO,QAAAC,EAAA,IAAUE,EAAG;AACjC,WAAKL,GACJ,UAAU,SAAU,GAAG,EACvB,UAAU,GAAG,UAAU,CAAC,EACxB,SAASrL,GAAGC,GAAGsL,GAAOC,CAAM,EAC5B,QAAA;AAAA,IACF,IACE,MAAK;AAAA,IAAc,GAKtB,KAAK,gBAAgB9S,EAAI,SAASsS,EAAS9P,GAAK,KAAK,MAAM,UACzD,MAAK;AACN,MAAAwF,EAAQ,cAAciL,EAAa;AAEnC,YAAMC,IAAM,KAAKT,GAAQ;AACzB,UAAIS,MAAQ,GAAI;AAChB,YAAM,EAAC,IAAApO,GAAI,IAAAqO,EAAA,IAAMb,EAASc,GAAQ,WAAA,GAC5BC,IAAK,WACVrR,EAAI,KAAK,MAAM,GAAG,EAAE,EACnB,WAAW,KAAK,GAAG,CACrB,OAAO8C,CAAE,SAAS,OAAOqO,CAAE,CAAC;AAC5B,MAAKnT,EAAI;AAAA,QACRA,EAAI,iBAAiBqT,IAAI;AAAA,QAC7B,yDAAyDA,CAAE;AAAA,MACrDA,CAAE,QACPH,EACC,WAAW,qJAAqJ,EAAE,EAClK,WAAW,aAAa,EAAE,EAC1B,WAAW,gBAAgB;AAAA;AAAA,CAAQ,EACnC,WAAW,kBAAkB;AAAA,CAAQ,CACvC;AAAA,MAAA;AAAA,IAEE,IACE,MAAKlL,EAAQ,cAAciL,EAAa;AAAA,EAC3C;AAAA,EArGA,OAAOzQ;AAAA,EACP,OAAO8F;AAAA,EACP,OAAO,KAAK1F,GAAa2F,GAA4B;AACpD,IAAA+J,EAAS9P,KAAOI,GAChB0P,EAAShK,KAAWC;AAAA,EACrB;AAAA,EACA,OAAO5E;AAAA,EACP,OAAOyP;AAAA,EACP,OAAO,UAAUxP,GAAiB0P,GAAwB;AACzD,IAAAhB,EAAS3O,KAAUC,GACnB0O,EAASc,KAAUE;AAAA,EACpB;AAAA,EAEA,OAAO,UAAU;AAEhB,IAAAhB,EAASiB,KAAc,uBAAO,OAAO,IAAI,GAEzCjB,EAASkB,KAAe,uBAAO,OAAO,IAAI,GAE1ClB,EAAS,SAAA;AAAA,EACV;AAAA,EAGGG,KAAU,SAAS,cAAc,MAAM;AAAA;AAAA,EACjCC,KAAY,IAAIH,EAAA;AAAA;AAAA,EAChBI,KAAgB,IAAIc,EAAA;AAAA,EAC7B,OAAgBC,KAAc;AAAA,IAC7B,oBAAsB;AAAA,IACtB,uBAAwB;AAAA,IACxB,qBAAuB;AAAA,IACvB,sBAAuB;AAAA,IACvB,oBAAsB;AAAA,IACtB,iBAAkB;AAAA,IAClB,eAAgB;AAAA,IAChB,gBAAiB;AAAA,IACjB,cAAe;AAAA,EAAA;AAAA,EAIhBC,KAAQ,IAAIhJ,GAAA;AAAA,EACZ,gBAAgB,MAAK;AAAA,EAAc;AAAA,EAEnCoI;AAAA;AAAA;AAAA,EA+DAa,KAAqB;AAAA,IACpB,UAAW;AAAA,IACX,QAAU;AAAA;AAAA,IACV,SAAW;AAAA,IACX,UAAW;AAAA;AAAA,IACX,WAAY;AAAA;AAAA,IACZ,SAAW;AAAA;AAAA,IACX,YAAa;AAAA;AAAA,EAAA;AAAA,EAGd,IAAI7T,GAAY;AACf,UAAM8J,IAAI,KAAK4I,GAAQ;AACvB,QAAI,WAAW1S;AACd,UAAIA,EAAK,OAAO;AACf,cAAMoS,IAAM,SAAS,cAAc,MAAM;AACzC,QAAAA,EAAI,MAAM,UAAUpS,EAAK;AACzB,cAAMyE,IAAM2N,EAAI,MAAM;AACtB,iBAAS1N,IAAE,GAAGA,IAAED,GAAK,EAAEC,GAAG;AAEzB,gBAAMoP,IAAW1B,EAAI,MAAM1N,CAAC;AAC5B,cAAIoP,KAAOvB,EAASoB,IAAa;AAChC,YAAA/M,GAAS,QAAQ,GAAG,OAAOkN,CAAG,CAAC,YAAY,GAAG;AAC9C;AAAA,UACD;AAEA,UAAAhK,EAAEgK,CAAG,IAAI1B,EAAI,MAAM0B,CAAG;AAAA,QACvB;AACA,QAAI,CAAE1B,EAAI,MAAM,WAAW,WAAWpS,MAAM8J,EAAE,UAAU,OAAO,KAAK,IAAI,KAAK;AAAA,MAC9E,MACK,MAAK4I,GAAQ,MAAM,UAAU;AAAA,QACnC,CACS,WAAW1S,MAAM8J,EAAE,UAAU,OAAO,KAAK,IAAI,KAAK;AAuB3D,QArBI,WAAW9J,MAAM8J,EAAE,QAAQ,OAAO9J,EAAK,SAAS,GAAG,IAAG,OACtD,YAAYA,MAAM8J,EAAE,SAAS,OAAO9J,EAAK,UAAU,GAAG,IAAG,OACzD,QAAQA,MAAM8J,EAAE,cAAc,OAAO9J,EAAK,MAAM,GAAG,IAAG,OACtD,QAAQA,MAAM8J,EAAE,eAAe,OAAO9J,EAAK,MAAM,GAAG,IAAG,OACvD,QAAQA,MAAM8J,EAAE,aAAa,OAAO9J,EAAK,MAAM,GAAG,IAAG,OACrD,QAAQA,MAAM8J,EAAE,gBAAgB,OAAO9J,EAAK,MAAM,GAAG,IAAG,OAC5D,KAAK4T,GAAM,IAAI5T,CAAI,GACnB,KAAK+T,GAAA,GAIL,KAAKC,KAAQ,KAAK,IAAI,SAAS,GAK/BlK,EAAE,kBAAkB,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,MAAM,CAAC,MAC7D,KAAK,UAAA,GACLA,EAAE,UAAU,KAAK,IAAI,UAAS,WAAU,QAGpC,aAAa9J,KAAQ,KAAKiU,KAAa,GAAG;AAC7C,YAAMC,IAAQ;AAAA,QACb,KAAKxB,GAAQ,UAAU,WAAW,6BAA6B,OAAO;AAAA,QACtE;AAAA,MAAA;AAED,WAAKyB,GAAA,GACL,KAAK,MAAMD,GAAO,EAAI;AAAA,IACvB;AAAA,EACD;AAAA;AAAA,EAEAE,KAAW;AAAA;AAAA,EACXL,KAAW;AACV,UAAMjK,IAAI,KAAK4I,GAAQ,OACjB2B,IAAK,WAAWvK,EAAE,YAAY,GAAG;AACvC,SAAK+J,GAAO,WAAWQ,GAEvB,KAAKR,GAAO,WAAW,WAAW/J,EAAE,eAAe,GAAG,GACtD,KAAK+J,GAAO,YAAY,WAAW/J,EAAE,gBAAgB,GAAG,GACxD,KAAK+J,GAAO,UAAU,WAAW/J,EAAE,cAAc,GAAG,GACpD,KAAK+J,GAAO,aAAa,WAAW/J,EAAE,iBAAiB,GAAG,GAC1D,KAAK+J,GAAO,SAAS,WAAW/J,EAAE,SAAS,GAAG,GAC9C,KAAK+J,GAAO,UAAU,WAAW/J,EAAE,UAAU,GAAG,GAChD,KAAK,SAAS,IAAI,KAAK+J,GAAO,UAAU,KAAKA,GAAO,OAAO,GAE3D,KAAKS,KAAcxK,EAAE,gBAAgB,eAErC,KAAKyK,KAAW,GAChB,KAAKC,KAAW;AAGhB,UAAMC,IAAK3K,EAAE,cAAc;AAC3B,SAAKsK,KAAW,KAAKE,KAClB,KACEG,EAAG,SAAS,IAAI,IACjB,WAAWA,CAAE,IACbJ,IAAI,WAAWI,CAAE,IAAGJ,KAAK;AAAA,EAE9B;AAAA,EACA,YAAY;AACX,UAAMvK,IAAI,KAAK4I,GAAQ,OACjBgC,IAAW,KAAK,IAAI;AAE1B,IAAA5K,EAAE,OAAO,GAAG,KAAK,IAAI,cAAa,KAAKkK,KAAOU,CAAQ,MAEtD5K,EAAE,MAAM,GAAG,KAAK,IAAI,aAAY,KAAK,IAAI,SAAS,IAAG4K,CAAQ,MAE7D5K,EAAE,YAAY,UAAU,KAAK,IAAI,KAAK,cAAc,KAAK,IAAI,MAAM,IAAG4K,CAAQ,KAAK,KAAK,IAAI,MAAM,IAAGA,CAAQ;AAAA,EAI9G;AAAA,EACAV,KAAQ;AAAA,EACRM,KAAc;AAAA,EACd,IAAI,WAAW;AAAC,WAAO,KAAKA;AAAA,EAAW;AAAA,EACvCC,KAAW;AAAA,EACXC,KAAW;AAAA,EAEX,IAAI,QAAoB;AAAC,WAAO,KAAKX;AAAA,EAAM;AAAA,EAC3C,IAAI,WAAW;AAAC,WAAO,KAAKA,GAAO;AAAA,EAAM;AAAA,EACzC,IAAI,YAAY;AAAC,WAAO,KAAKA,GAAO;AAAA,EAAO;AAAA,EAE3C,UAAUf,GAAeC,GAAgB;AACxC,SAAKc,GAAO,SAASf,GACrB,KAAKe,GAAO,UAAUd,GACtB,KAAKL,GAAQ,MAAM,QAAQ,OAAO,KAAKmB,GAAO,MAAM,IAAG,MACvD,KAAKnB,GAAQ,MAAM,SAAS,OAAO,KAAKmB,GAAO,OAAO,IAAG;AAAA,EAC1D;AAAA,EAGAc,KAA0B,CAAA;AAAA;AAAA,EAC1B,MAAMT,GAAiBU,GAAkB;AACxC,UAAMC,IAAI,MAAK,KAAKC,GAAYZ,GAAOU,CAAO;AAC9C,IAAI,KAAKD,GAAQ,KAAKE,CAAC,MAAM,KAAGA,EAAA;AAAA,EACjC;AAAA,EAEAE,KAAqB,CAAA;AAAA,EACrBd,KAAa;AAAA,EACb,OAAgBe,KAAa;AAAA,EAC7BF,GAAYZ,GAAiBU,GAAkB;AAC9C,IAAArC,EAAS0C,GAAU,UAAU;AAE7B,QAAI7I,IAAQ,KAAK2I,GAAO,QACpB1I,IAAQ;AACZ,QAAID,MAAU;AA+Bb,UA9BImG,EAAS9P,GAAK,KAAK,MAAM,WACxBiG,EAAO,YAAU,QAAQ,IAAI;AAAA,MAEhC,KAAK,IAAI,MAAM,KAAK,OAAO,MAAM,KAAK,CAAC,MAAM,KAAK,CAElD,MAAM,KAAK,KAAK,OAAO,KAAKmL,GAAO,QAEnC,OAAO,KAAKA,GAAO,SAEnB,OAAO,KAAKA,GAAO,OAAO,OAAO,KAAKA,GAAO,UAE7C,MAAM,KAAKA,GAAO,MAAM,MAAM,KAAKA,GAAO,OAAO,EAAE,GAEpD,KAAKjB,GAAc,MAAA,EAClB,UAAU,SAAU,GAAG,EACvB,UAAU,GAAG,SAAU,CAAC,EACxB,SAAS,CAAC,KAAKiB,GAAO,UAAU,CAAC,KAAKA,GAAO,SAAS,KAAKA,GAAO,QAAQ,KAAKA,GAAO,OAAO,EAE7F,QAAA,EAEA,UAAU,OAAU,GAAG,EACvB,UAAU,GAAG,OAAU,CAAC,EACxB;AAAA,QAAS;AAAA,QAAG;AAAA,QACb,KAAKA,GAAO,SAAQ,KAAKA,GAAO,WAAU,KAAKA,GAAO;AAAA,QACtD,KAAKA,GAAO,UAAS,KAAKA,GAAO,UAAS,KAAKA,GAAO;AAAA,MAAA,EACrD,QAAA,IAGF,KAAKnB,GAAQ,YAAY,CAAC,GAAGwB,CAAK,EAAE,KAAK,EAAE,EAAE,WAAW,WAAW,EAAE,IAAG3B,EAASyC,IAE7E,CAAE,KAAKpB,GAAM,aAAa;AAC7B,cAAM1G,IAAM,WAAW,iBAAiB,KAAKwF,EAAO,GAC9CvF,IAAK,WAAWD,EAAI,QAAQ;AAClC,QAAI,KAAKoH,MACR,KAAKV,GAAM,oBAAoB,KAAKC,GAAO,SAAQ,KAAKA,GAAO,WAAU,KAAKA,GAAO,YAAW1G,IAAI,OAAM,KAAK,IAAI,UACnH,KAAKyG,GAAM,kBAAkB,MAG7B,KAAKA,GAAM,mBAAmB,GAC9B,KAAKA,GAAM,kBAAkBzG,IAAI,IAAG,KAAK,IAAI;AAAA,MAE/C;AAAA;AAGA,MAAAd,IAAQ,KAAKqG,GAAQ,WAErB,EAAEtG,GAEF,KAAKsG,GAAQ,uBAAuB,YAAY,EAAE,KAAK,CAAC,GAAG,OAAA,GAG3D,KAAKA,GAAQ,iBAAiB,aAAa,EAAE,QAAQ,CAAA/M,MAAIA,EAAE,QAAQ,GAEnE,KAAK+M,GAAQ;AAAA,QACZ;AAAA,QACAwB,EAAM,MAAM,KAAKD,EAAU,EAAE,KAAK,EAAE,EAAE,WAAW,WAAW,EAAE,IAC7D1B,EAASyC;AAAA;AAAA,MAAA;AAOZ,SAAKtC,GAAQ,iBAAiB,oBAAoB,EAAE,QAAQ,CAAA9R,MAAI;AAAe,MAAAA,EAAG,MAAM,aAAa;AAAA,IAAE,CAAC,GAExG,KAAKqT,KAAaC,EAAM;AAIxB,UAAMQ,IAAW,KAAK,IAAI,UACpBQ,IAAM,KAAKxC,GAAQ,sBAAA,GACnByC,IAAKD,EAAI,OAAM,KAAKrB,GAAO,UAC3BuB,IAAKF,EAAI,MAAK,KAAKrB,GAAO;AAChC,QAAI3H;AACJ,QAAIwI,MAAa,EAAG,CAAAxI,IAAU,CAACyB,GAAKhB,MAAM;AACzC,YAAM1J,IAAI0K,EAAI,sBAAA;AACd,aAAO,IAAIhG;AAAA,QACV1E,EAAE,OAAMkS;AAAA,QACRlS,EAAE,MAAMmS;AAAA,QACRnS,EAAE;AAAA,QACFA,EAAE,UAAS,OAAO,SAAS0J,CAAE,IAAG,KAAKyH,KAAU;AAAA,MAAA;AAAA,IAEjD;AAAA,SACK;AAGJ,YAAMiB,IAAK,KAAK,IAAI,sBAAqBH,EAAI,QAAO,IAAGR,IACjDY,IAAK,KAAK,IAAI,qBAAoBJ,EAAI,OAAM,IAAGR;AACrD,MAAAxI,IAAU,CAACyB,GAAKhB,MAAM;AACrB,cAAM1J,IAAI0K,EAAI,sBAAA;AACd,eAAO,IAAIhG;AAAA,WACT1E,EAAE,OAAMoS,KAAKX,IAAUS;AAAA,WACvBlS,EAAE,MAAMqS,KAAKZ,IAAUU;AAAA,UACxBnS,EAAE,QAAOyR;AAAA,WACRzR,EAAE,UAAS,OAAO,SAAS0J,CAAE,IAAG,KAAKyH,KAAU,MAAKM;AAAA,QAAA;AAAA,MAEvD;AAAA,IACD;AAEA,UAAM,CAAClQ,GAAGC,CAAG,IAAI,KAAKmP,GAAM,KAAK,KAAKlB,IAASxG,GAAS,KAAKoI,IAAalI,GAAOC,CAAK;AACtF,SAAK0I,KAASvQ;AAEd,UAAM+Q,IAAOC,EAAS,KAAK,KAAKC,EAAU;AAE1C,aAAS/Q,IAAE0H,GAAO1H,IAAED,GAAK,EAAEC,GAAG;AAE7B,YAAMuO,IAAK,KAAK8B,GAAOrQ,CAAC,GAClB,EAAC,KAAK,EAAC,SAAAgR,GAAS,eAAAC,EAAA,GAAgB,MAAAjJ,MAAQuG,GAExC2C,IAAM,KAAK,MAAMF,EAAQ,OAAO,cAAc,GAE9CG,IAAM,KAAK,MAAMH,EAAQ,OAAO,IAAI,GACpCI,IAAMvD,EAASiB,GAAYqC,EAAI,WAAW;AAGhD,UAFA,KAAK7C,GAAWC,CAAE,GAEdyC,EAAQ,QAAQ,OAAO;AAC1B,cAAMK,IAAM,IAAIvD,EAAA;AAChB,aAAKG,GAAQ,SAASoD,CAAG,GAEzB,IAAIhU,EAAW6T,EAAI,KAAKG,GAAK,CAAA1T,MAAK;AACjC,eAAK2T,GAAQD,GAAKH,GAAKC,GAAKnJ,GAAM6I,GAAMO,KAAO,EAAE,GAE3CC,EAAI,UAAQA,EAAI,YAAY1T,CAAE;AAAA,QACrC,CAAC;AAAA,MACF;AACA,UAAIqT,EAAQ,KAAK;AAEhB,cAAMO,IAAmBN,EAAe,QAAQ,YAAY,GAEtDO,IAAO,KAAK,MAAMD,EAAI,QAAQ,OAAO,IAAI;AAC/C,QAAAC,EAAK,MAAM,QAAQ,OAAOxR,CAAC,CAAC,OAAM,KAAK;AACvC,cAAMrC,IAAK,IAAI8B,EAAA;AACf,aAAK6R,GAAQ3T,GAAI6T,GAAML,GAAKnJ,GAAM6I,GAAMO,KAAO,EAAE;AAGjD,cAAMK,IAAYD,EAAK,SAAS,IAE1BE,IAAWD,KAAYD,EAAK,eAAe,KAE3CG,IAAaF,KAAYD,EAAK,iBAAiB,KAE/CI,IAAcJ,EAAK,WAAW,IAE9BK,KAAaD,KAAcJ,EAAK,iBAAiB,KAEjDM,KAAeF,KAAcJ,EAAK,mBAAmB,KAErDO,KAAO,MAAM,KAAKR,EAAI,qBAAqB,IAAI,CAAC;AACtD,mBAAWtQ,MAAK8Q,GAAM,CAAA9Q,GAAE,QAAQ,UAAUA,GAAE,MAAM;AAClD,cAAM+Q,KAAQT,EAAI,MAAM,SAClBU,KAAW,CAACC,IAAYC,OAAgB;AAC7C,UAAAZ,EAAI,MAAM,UAAUS,KAAQE;AAC5B,qBAAWjR,MAAK8Q,GAAM,CAAA9Q,GAAE,MAAM,UAAUA,GAAE,QAAQ,UAAUkR;AAAA,QAC7D;AAGA,QADgBtW,EAAe2V,GAAM,WAAW,EAAI,MAC9BtS,GAAQ;AAAA,UAAOsS;AAAA,UAAM7T;AAAA,UAC1C,MAAKsU,GAASR,GAAWG,CAAW;AAAA,UACpC,MACO,KAAK,SAAA,KAEXK,GAASP,GAAUG,EAAU,GACtB,MAHuB;AAAA,UAK/B,MAAKI,GAASN,GAAYG,EAAY;AAAA,QAAA,IAElCG;AAAA,UACJR,KAAYD,EAAK,iBAAiB;AAAA,UAClCI,KAAcJ,EAAK,mBAAmB;AAAA,QAAA,GAEvC,KAAKvD,GAAQ,SAAStQ,CAAE;AAAA,MACzB;AAAA,IACD;AAGA,UAAMyU,IAAM,MAAM,KAAoC,KAAKpE,GAAQ,uBAAuB,WAAW,CAAC;AAEtG,SAAKqE,KAAc,MAAK;AAGvB,WAAKA,KAAc,MAAK;AACxB,iBAAWnW,KAAKkW,EAAK,CAAAlW,EAAE,YAAY;AACnC,MAAA2R,EAAS0C,GAAU,SAAS;AAAA,QAC3B,KAAKrB,GAAM;AAAA,QACX,KAAKA,GAAM;AAAA,MAAA,GAEZrB,EAAS0C,GAAU,UAAU,IAO7B,KAAK,cAAA;AAGL,YAAMJ,IAAI,KAAKF,GAAQ,MAAA;AACvB,aAAI,KAAKA,GAAQ,SAAS,KAAGE,EAAA,GAEtB;AAAA,IACR;AAGA,eAAWjU,KAAKkW,EAAK,CAAAlW,EAAE,YAAYA,EAAE,UAAU,QAAQ,gBAAgB,IAAI;AAC3E,IAAIwL,IAAQ,KAAG,EAAEA;AAGjB,QAAI4K;AACJ,aAAStS,IAAED,IAAK,GAAGC,KAAG,GAAG,EAAEA,GAAG;AAE7B,YAAM,EAAC,KAAA+H,EAAA,IAAO,KAAKsI,GAAOrQ,CAAC;AAC3B,UAAI+H,EAAI,YAAY,QAGpB;AAAA,QAAAuK,IAAUvK,EAAI,eAAe,YAAY,SACtCA,EAAI,cAAc,iBAAiBA,IACnCA;AACH;AAAA;AAAA,IACD;AACA,QAAI,CAAEuK,KAAWpC,KAAWxI,MAAU3H,GAAK;AAAC,WAAKsS,GAAA;AAAe;AAAA,IAAM;AAItE,IAAAC,EAAQ,iBAAiB,gBAAgB,MAAK,KAAKD,MAAe,EAAC,MAAM,IAAK;AAAA,EAE/E;AAAA,EACAA,KAA4B,MAAK;AAAA;AAAA,EAEjCf,GAAQ3T,GAAeuT,GAAqBC,GAAUoB,GAAgB1B,GAA4BO,GAAU;AAC3G,IAAAzT,EAAG,QAAQ,GACPuT,EAAI,MAAGqB,EAAI,IAAIrB,EAAI,EAAE,WAAW,GAAG,IACpCqB,EAAI,IAAG,SAASrB,EAAI,EAAE,MAAM,CAAC,CAAC,IAC9B,SAASA,EAAI,CAAC,IACbA,EAAI,MAAGqB,EAAI,IAAIrB,EAAI,EAAE,WAAW,GAAG,IACpCqB,EAAI,IAAG,SAASrB,EAAI,EAAE,MAAM,CAAC,CAAC,IAC9B,SAASA,EAAI,CAAC,IACbA,EAAI,UAAOqB,EAAI,QAAQ,SAASrB,EAAI,KAAK,IACzCA,EAAI,WAAQqB,EAAI,SAAS,SAASrB,EAAI,MAAM,IAC5CA,EAAI,SAAME,EAAI,OAAOF,EAAI,OAC7BvT,EAAG,QAAQ4U,EAAI,OACf5U,EAAG,SAAS4U,EAAI,QACZnB,EAAI,IAAGzT,EAAG,SAAS;AAAA;AAAA,MAEtByT,EAAI,EAAE,WAAW,GAAG,IAAGmB,EAAI,IAAG5U,EAAG,QAAQyT,EAAI,KAAIA,EAAI;AAAA;AAAA,MAErDA,EAAI,EAAE,WAAW,GAAG,IAAGmB,EAAI,IAAG5U,EAAG,SAAQyT,EAAI,KAAIA,EAAI;AAAA,IAAA,MAE9C,SAAS,IAAImB,EAAI,GAAGA,EAAI,CAAE;AAClC,UAAML,IAAa;AAAA,MAClB,IAAAvU;AAAA,MACA,IAAI,IAAI6U,GAAM7U,CAAE,EACf,GAAG,EAAE,OAAO,GAAG,GAAG4U,EAAI,GAAG,GAAGA,EAAI,GAAG,OAAOA,EAAI,OAAO,QAAQA,EAAI,QAAQ,OAAO,KAAKnB,EAAI,QAAQ,CAAC,EAClG,OAAOP,CAAI,EACX,OAAOM,EAAI,QAAQ,MAAKD,EAAI,SAAS,EAAE,EACvC,WAAW,MAAK;AAChB,QAAAgB,EAAG,KAAK;AAAA,MAIT,CAAC,EACA,MAAA;AAAA,IAAM;AAER,SAAKO,GAAO,KAAKP,CAAE;AAAA,EACpB;AAAA,EACAO,KAAqB,CAAA;AAAA,EAErB,WAAoB;AACnB,QAAIC,IAAa,KAAKL,GAAA;AACtB,eAAWH,KAAM,KAAKO;AACrB,MAAIP,EAAG,OAAKA,EAAG,GAAG,KAAA,EAAO,IAAA,GAAOQ,IAAa;AAE9C,gBAAKD,KAAS,CAAA,GACPC;AAAA,EACR;AAAA;AAAA,EAGA,OAAO5D,KAA8C,uBAAO,OAAO,IAAI;AAAA,EACvE,OAAgB6D,KAA2B;AAAA;AAAA,EAE3C,OAAO,cAAc;AAEpB,IAAA9E,EAASiB,KAAc,uBAAO,OAAO,IAAI,GAEzCjB,EAASkB,KAAe,uBAAO,OAAO,IAAI;AAAA,EAC3C;AAAA,EACA,OAAO,aAAa1N,GAAc;AAAC,WAAOwM,EAASiB,GAAYzN,CAAI;AAAA,EAAC;AAAA,EACpE,OAAO,YAAY/F,GAA4B;AAC9C,UAAM,EAAC,MAAA+F,MAAQ/F;AACf,QAAI,CAAE+F,EAAM,OAAM;AAClB,QAAIwM,EAAS8E,GAAyB,KAAKtR,CAAI,EAAG,OAAM,QAAQA,CAAI;AACpE,QAAIA,KAAQwM,EAASiB,GAAa,OAAM,QAAQzN,CAAI;AAEpD,UAAMwB,IAAI,OAAOvH,EAAK,KAAK,IAAI,GACzBwH,IAAI,OAAOxH,EAAK,KAAK,IAAI;AAoB/B,WAnBYuS,EAASiB,GAAYzN,CAAI,IAAI;AAAA,MACxC,MAAOmC,EAAWlI,GAAM,QAAQ,GAAG;AAAA;AAAA,MACnC,OAAQkI,EAAWlI,GAAM,SAAS,CAAC;AAAA,MACnC,GAAAuH;AAAA;AAAA,MACA,GAAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAM,WAAWD,EAAE,GAAG,CAAC,MAAM,MAAMA,EAAE,MAAM,CAAC,IAAIA,CAAC;AAAA,MACjD,IAAM,WAAWC,EAAE,GAAG,CAAC,MAAM,MAAMA,EAAE,MAAM,CAAC,IAAIA,CAAC;AAAA,MACjD,SAAUU,EAAWlI,GAAM,WAAW,CAAC;AAAA,MACvC,SAAUkI,EAAWlI,GAAM,WAAW,CAAC;AAAA,MACvC,QAASkI,EAAWlI,GAAM,UAAU,CAAC;AAAA,MACrC,MAAOO,EAAeP,GAAM,QAAQ,EAAI;AAAA;AAAA,MAExC,MAAOA,EAAK,QAAQ;AAAA,IAAA;AAAA,EAGtB;AAAA;AAAA,EAGA,OAAOyT,KAA8C,uBAAO,OAAO,IAAI;AAAA,EACvE,OAAO,cAAc1N,GAAc;AAAC,WAAOwM,EAASkB,GAAa1N,CAAI;AAAA,EAAC;AAAA,EACtE,OAAO,aAAa/F,GAA4B;AAC/C,UAAM,EAAC,MAAA+F,MAAQ/F;AACf,QAAI,CAAE+F,EAAM,OAAM;AAClB,QAAIwM,EAAS8E,GAAyB,KAAKtR,CAAI,EAAG,OAAM,QAAQA,CAAI;AACpE,QAAIA,KAAQwM,EAASkB,GAAc,OAAM,QAAQ1N,CAAI;AAErD,UAAMwB,IAAI,OAAOvH,EAAK,KAAK,IAAI,GACzBwH,IAAI,OAAOxH,EAAK,KAAK,IAAI;AAoB/B,WAnBYuS,EAASkB,GAAa1N,CAAI,IAAI;AAAA,MACzC,MAAOmC,EAAWlI,GAAM,QAAQ,GAAG;AAAA;AAAA,MACnC,OAAQkI,EAAWlI,GAAM,SAAS,CAAC;AAAA,MACnC,GAAAuH;AAAA;AAAA,MACA,GAAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAM,WAAWD,EAAE,GAAG,CAAC,MAAM,MAAMA,EAAE,MAAM,CAAC,IAAIA,CAAC;AAAA,MACjD,IAAM,WAAWC,EAAE,GAAG,CAAC,MAAM,MAAMA,EAAE,MAAM,CAAC,IAAIA,CAAC;AAAA,MACjD,SAAUU,EAAWlI,GAAM,WAAW,CAAC;AAAA,MACvC,SAAUkI,EAAWlI,GAAM,WAAW,CAAC;AAAA,MACvC,QAASkI,EAAWlI,GAAM,UAAU,CAAC;AAAA,MACrC,MAAOO,EAAeP,GAAM,QAAQ,EAAK;AAAA;AAAA,MAEzC,MAAOA,EAAK,QAAQ;AAAA,IAAA;AAAA,EAGtB;AAAA,EAEA,OAAgBiV,KAAY,IAAIzC,EAAA;AAAA,EAChC,OAAU8E,KAAY,IAAIvV,EAAA;AAAA,EAC1B,UAAUiK,GAAS;AAClB,IAAAuG,EAAS,SAAA;AAET,UAAMwD,IAAMxD,EAAS0C;AACrB,IAAAc,EAAI,UAAU,IACd,KAAK,SAASA,CAAG,GACjBxD,EAAS+E,GAAU,QAAA,GACnB/E,EAAS+E,KAAY,IAAIvV,EAAWiK,EAAE,KAAK+J,GAAK,CAAA1T,MAAK;AAEpD,MAAI0T,EAAI,UACP1T,EAAG,IAAI6F,EAAW8D,GAAG,KAAK,CAAC,GAC3B3J,EAAG,IAAI6F,EAAW8D,GAAG,KAAK,CAAC,GAC3B3J,EAAG,QAAQ6F,EAAW8D,GAAG,SAAS,KAAK6H,GAAO,QAAQ,GACtDxR,EAAG,SAAS6F,EAAW8D,GAAG,UAAU,KAAK6H,GAAO,QAAQ,KAEpDkC,EAAI,YAAY1T,CAAE;AAAA,IACxB,CAAC;AAAA,EACF;AAAA,EACA,OAAO,WAAW;AACjB,UAAM0T,IAAMxD,EAAS0C;AAErB,IAAAc,EAAI,QAAQ,YAAYA,CAAG,GAC3BxD,EAAS+E,GAAU,QAAA;AAAA,EACpB;AAAA,EAEA7B,KAAa;AAAA,EACb8B,KAAa;AAAA,EACbpD,KAAa;AACZ,SAAKvB,GAAc,MAAA,GACnB,KAAKmC,KAAS,CAAA,GACd,KAAKd,KAAa,GAClB,KAAKU,KAAU,CAAA,GAGf,KAAK,SAAA;AACL,UAAM6C,IAAqB,KAAK9E,GAAQ,UAAU,EAAI;AAEtD,IAAA8E,EAAE,cAAc;AAChB,UAAMC,IAAM,KAAK/E,IACXlO,IAAI,MAAM,KAAoCiT,EAAI,uBAAuB,OAAO,CAAC;AAEvF,IAAAA,EAAI,cAAe,aAAaD,GAAGC,CAAG;AAEtC,QAAIC,IAAW;AACf,IAAAlT,EAAE,QAAQ,CAAAiI,MAAM;AAEf,YAAMoJ,IAAM,KAAK;AAAA,QAChBpJ,EAAI,QAAQ;AAAA,QACZA,EAAI,SAAS,CAAC,GAAG,aAAa,UAAU;AAAA,QACxCA,EAAI,SAAS,CAAC,GAAG,SAAS,CAAC,GACxB,aAAa,UAAU,KAAK;AAAA;AAAA,MAAA;AAEhC,UAAI,CAAEoJ,EAAI,aAAc;AAExB,YAAM8B,IAAMpF,EAASkB,GAAaoC,EAAI,YAAY;AAClD,UAAM8B,GACN;AAAA,YAAIA,EAAI,SAAS,GAAG;AAAC,UAAAlL,EAAI,MAAM,UAAU;AAAQ;AAAA,QAAM;AAEvD,QAAAiL,KAAYC,EAAI,MACVA,EAAI,SAAMlL,EAAI,MAAM,iBAAiB,QAC3CA,EAAI,UAAU,IAAI,aAAa,OAAOoJ,EAAI,YAAY,CAAC,EAAE;AAAA;AAAA,IAC1D,CAAC;AAED,UAAMhI,IAAM,MAAK;AAEhB,MAAA4J,EAAI,cAAe,YAAYA,CAAG;AAClC,iBAAW1N,KAAK,KAAK4I,GAAQ,eAAA;AAC5B,QAAI5I,aAAayI,KAAWD,EAAS3O,GAAQ,SAASmG,CAAC,GACvDA,EAAE,QAAA;AAAA,IAEJ;AACA,IAAI2N,MAAa,KAAI,KAAKhF,GAAQ,cAAc,IAAI7E,EAAA,OAC3C,kBAAkB,iBAAiB,gBAAgBA,GAAK,EAAC,MAAM,IAAK,GAE7E,KAAK6E,KAAU8E;AAAA,EAGhB;AAAA,EACA,QAAkB;AACjB,SAAKrD,GAAA;AAEL,UAAMzI,IAAK,IAAI6G,EAAS,KAAK,KAAK,MAAK,KAAK,SAAA,GAAY,KAAK,GAAG;AAChE,WAAA7G,EAAGmI,KAAS,KAAKA,IACjBnI,EAAGgH,GAAQ,MAAM,UAAU,KAAKA,GAAQ,MAAM,SAC9ChH,EAAGsI,KAAQ,KAAKA,IAChBtI,EAAG,OAAO,KAAK,MACfA,EAAGqI,GAAA,GAGHrI,EAAGkM,KAAa,KAAKA,IACrBlM,EAAG+J,KAAa,KAAKA,IACrB/J,EAAG6L,KAAa,KAAKA,IAErB,KAAK3D,GAAM,MAAMlI,EAAGkI,EAAK,GAEzB,KAAK,QAAA,GAEElI;AAAA,EACR;AAAA;AAAA,EAEAkM,KAAiC;AAAA;AAAA,EAGjC,SAAS;AAAC,WAAO;AAAA,MAChB,OAAS,KAAK/D;AAAA,MAEd,SAAW,KAAKnB,GAAQ,MAAM;AAAA,MAC9B,MAAQ,KAAKsB;AAAA;AAAA,MAGb,WAAY,KAAK4D;AAAA,MACjB,WAAY,KAAKnC;AAAA,MACjB,WAAY,KAAK8B;AAAA,MAEjB,MAAQ,KAAK3D,GAAM,OAAA;AAAA,IAAO;AAAA,EAC1B;AAAA,EACD,SAAS5J,GAAwB;AAChC,SAAK6J,KAAS7J,EAAK,OACnB,KAAK,SAAS,IAAI,KAAK6J,GAAO,UAAU,KAAKA,GAAO,OAAO,GAE3D,KAAKnB,GAAQ,MAAM,UAAU1I,EAAK,SAClC,KAAKgK,KAAQhK,EAAK,MAClB,KAAK+J,GAAA,GAGL,KAAK6D,KAAa5N,EAAK,WACvB,KAAKyL,KAAazL,EAAK,WACvB,KAAKuN,KAAavN,EAAK,WAEvB,KAAK4J,GAAM,SAAS5J,EAAK,IAAI;AAAA,EAC9B;AAAA,EAEA,IAAI,UAAU;AAAC,WAAO,KAAK0I,GAAQ,MAAM;AAAA,EAAO;AAAA,EAChD,IAAI,QAAQmF,GAAY;AAAC,SAAKnF,GAAQ,MAAM,UAAUmF;AAAA,EAAE;AAAA,EAExDC,KAA2B;AAAA,EAC3B,SAASC,GAAe9N,GAAe;AACtC,IAAAsE,GAAO,CAAAyJ,MAAK;AACX,WAAKF,KAAO3T,EAAO,KAAK6T,CAAE,GACtB,KAAK1D,OACR,KAAKwD,GAAK,KAAKpP,EAAO,UAAS,KAAKsL,KAAO,KAAKH,GAAO,UAKxD,KAAKiE,GAAK,KAAK,KAAKtD,IACpB,KAAKsD,GAAK,QAAQ,QAAQ,IAAInQ;AAAA,QAC7B;AAAA,QACA;AAAA,QACA,KAAK,IAAI,KAAKmQ,GAAK,OAAO,KAAKjE,GAAO,SAAQ,KAAKG,EAAK;AAAA,QACxD,KAAK,IAAI,KAAK8D,GAAK,QAAQ,KAAKjE,GAAO,OAAO;AAAA,MAAA,GAE/C,KAAKlB,GAAQ,SAAS,KAAKmF,EAAI,GAC/BC,EAAI,OAAO,KAAKD,IAAM,EAAC,OAAO,IAAM,GACpC7N,EAAA;AAAA,IACD,GAAG,KAAKyI,IAAS,KAAKmB,IAAQ,KAAKU,IAAU,KAAKC,IAAU,EAAK;AAAA,EAClE;AAAA,EACA,eAAe;AACd,IAAM,KAAKsD,OACX,KAAKnF,GAAQ,YAAY,KAAKmF,EAAI,GAClC,KAAKA,KAAO;AAAA,EACb;AAAA,EAEA,eAAeG,GAAuB;AAAA,EAOtC;AAAA,EACA,iBAAiB;AAAA,EAAc;AAAA;AAAA,EAG/B,OAAe;AACd,UAAMC,IAAmB,CAAA,GACnBpO,IAAI,KAAK4I,GAAQ,OACjBjO,IAAMqF,EAAE;AACd,aAAS,IAAE,GAAG,IAAErF,GAAK,EAAE,GAAG;AAEzB,YAAMqP,IAAWhK,EAAE,CAAC;AAEpB,MAAAoO,EAAO,KAAK,IAAI,OAAOpE,CAAG,CAAC,MAAMhK,EAAEgK,CAAG,EAAG,WAAW,YAAY,MAAM,CAAC,GAAG;AAAA,IAC3E;AAEA,WAAO,UAAU,KAAKpB,GAAQ,YAAa,WAAW,YAAY,MAAM,CACxE,eAAewF,EAAO,KAAK,GAAG,CAAC;AAAA,EAEhC;AAAA,EAES,UAAU;AAClB,IAAA3F,EAAS,SAAA,GAGT,KAAKG,GAAQ,cAAe,YAAY,KAAKA,EAAO,GACpD,KAAK,YAAY,KAAKC,EAAO,GAC7B,KAAK,YAAY,KAAKC,EAAa,GACnC,MAAM,QAAA;AAAA,EACP;AACD;ACj1BO,MAAMuF,UAAe3F,EAAU;AAAA,EAkDrC,YAA6BxS,GAAqB6D,GAA0BoF,GAAqCwJ,GAAwB;AAmCxI,QAlCA,MAAA,GAD4B,KAAA,OAAAzS,GAAqB,KAAA,SAAA6D,GAA0B,KAAA,UAAAoF,GAAqC,KAAA,WAAAwJ,GAQhH,KAAK2F,KAAK;AAAA,MACT,MAAO;AAAA,MACP,SAAU7X,EAAeP,GAAM,WAAW,EAAI;AAAA,MAC9C,GAAK,KAAK,IAAIqY,EAAKrY,EAAK,QAAQ,CAAC;AAAA,MACjC,GAAK,KAAK,IAAIqY,EAAKrY,EAAK,OAAO,CAAC;AAAA,MAChC,UAAU,KAAK,QAAQkI,EAAWlI,GAAM,YAAY,KAAK,KAAK;AAAA;AAAA;AAAA,MAG9D,SAAU,KAAK,MAAM,IAAIkI,EAAWlI,GAAM,WAAW,KAAK,MAAM,CAAC;AAAA,MACjE,SAAU,KAAK,MAAM,IAAIkI,EAAWlI,GAAM,WAAW,KAAK,MAAM,CAAC;AAAA,MACjE,SAAU,KAAK,MAAM,IAAIkI,EAAWlI,GAAM,WAAW,KAAK,MAAM,CAAC;AAAA,MACjE,SAAU,KAAK,MAAM,IAAIkI,EAAWlI,GAAM,WAAW,KAAK,MAAM,CAAC;AAAA,MACjE,OAAQ;AAAA,MACR,MAAO;AAAA,MACP,OAAQ;AAAA,MACR,OAAQ;AAAA,MACR,QAAS;AAAA,IAAA,GAEV,KAAK,eAAe,OACnB,KAAKsY,GAAW,IAAI,KAAKF,GAAG,GAC5B,KAAKE,GAAW,IAAI,KAAKF,GAAG,GACrB,KAAKE,KAGT,KAAKF,GAAG,aAAgB,OAAOpY,GAAM,MAAM,MAAK,KAAK,OAAA,GAAU,MAAK,KAAKuY,GAAA,GAAU,MAAK,KAAKC,IAAU,GAGvGxY,EAAK,KAAK;AACb,WAAKoY,GAAG,OAAO,OAGf,KAAK/O,KAAO,IAAItH;AAAA,QACf/B,EAAK;AAAA,QACL;AAAA,QACA,CAAAqC,MAAK;AACJ,eAAKoW,GAAYpW,CAAE,GACnB,KAAKiW,GAAW,QAASjW,EAAG,QAAS,KAAK+V,GAAG,SAC7C,KAAKE,GAAW,SAASjW,EAAG,SAAS,KAAK+V,GAAG;AAAA,QAC9C;AAAA,QACA,OAAUnP,EAAA;AAAA,MAAQ;AAEnB;AAAA,IACD;AACA,QAAI,CAAEjJ,EAAK,KAAM,OAAM;AAGvB,UAAM+S,IAAS7K,EAAWlI,GAAM,UAAU,EAAE,GACtC0Y,IAAQ,IAAIC,GAAU;AAAA,MAC3B,OAAS;AAAA,MACT,YAAa;AAAA,MACb,iBAAkB;AAAA,MAClB,iBAAkB;AAAA,MAClB,gBAAiB;AAAA,MACjB,oBAAqB;AAAA,MACrB,MAAQ,KAAKP,GAAG,UAAS,UAAS;AAAA,MAClC,YAAaD,EAAO;AAAA,MACpB,UAAWpF;AAAA,MACX,SAAW;AAAA,IAAA,CACX;AACD,QAAI/S,EAAK,MAAO,KAAI;AAEnB,YAAMgM,IAAI,KAAK,MAAMhM,EAAK,KAAK;AAE/B,iBAAW,CAACM,GAAIM,CAAC,KAAK,OAAO,QAAQoL,CAAC,EAAS,CAAA0M,EAAOpY,CAAE,IAAIM;AAI5D,WAAKwX,KAAK,EAAC,GAAG,KAAKA,IAAI,GAAGpM,EAAA;AAAA,IAC3B,SAASrG,GAAG;AACX,YAAIA,aAAa,cAAmB,IAAI,MAAMiT,GAAW5Y,GAAM,SAAS2F,EAAE,OAAO,CAAC,IACvE;AAAA,IACZ;AAEA,UAAMkT,IAAM,IAAIC,GAAK9Y,EAAK,QAAQ,IAAI0Y,CAAK;AAC3C,IAAAG,EAAI,QAAQ3Q,EAAWlI,GAAM,SAAS6Y,EAAI,KAAK,GAC/CA,EAAI,QAAQ3Q,EAAWlI,GAAM,SAAS,GAAG,GACzC6Y,EAAI,SAAS7Y,EAAK,SAAS+S,GAC3B,KAAK,UAAU,CAAAgG,MAAO;AAAC,MAAAF,EAAI,OAAOE;AAAA,IAAI,GAEtC,KAAKX,KAAK;AAAA,MAAC,GAAG,KAAKA;AAAA,MAClB,MAAO;AAAA;AAAA,MACP,OAAQS,EAAI;AAAA,MACZ,MAAOA,EAAI;AAAA,MACX,OAAQA,EAAI;AAAA,MACZ,QAASA,EAAI;AAAA,IAAA;AAId,QAAIrW,IAAS;AA8Bb,QA7BA,KAAK4V,GAAG,QAAQ,KAAK,OACrB,KAAKA,GAAG,SAAS,KAAK,QAClBpY,EAAK,UACR,KAAKoY,GAAG,QAAQpY,EAAK,OACrB,KAAKqJ,KAAO,IAAItH;AAAA,MACf/B,EAAK;AAAA,MACL;AAAA,MACA,CAAAqC,MAAK;AACJ,aAAK2W,GAAc3W,GAAIwW,CAAG,GAC1B,KAAKT,GAAG,QAAQ,KAAK,OACrB,KAAKA,GAAG,SAAS,KAAK,QACtBS,EAAI,OAAO,KAAK,UAAU,KAAKT,EAAE;AAAA,MAClC;AAAA,MACA,CAAA5V,MAAS;AACR,QAAA2F,EAAM,aAAa,MAAMnI,CAAI,GACzBwC,KAAQyG,EAAA;AAAA,MACb;AAAA,IAAA,GAEDzG,IAAS,KAAK6G,GAAK,MAEpBwP,EAAI,OAAO,KAAK,UAAU,KAAKT,EAAE,GAEjC,KAAK,SAASS,CAAG,GACjB,KAAKP,GAAW,QAAQO,EAAI,OAC5B,KAAKP,GAAW,SAASO,EAAI,QAGvB7Y,EAAK,SAAOmI,EAAM,aAAa,MAAMnI,CAAI,GAC/CmY,EAAOc,GAAgB,MAAMJ,CAAG,GAC5B,CAAE,KAAKT,GAAG,SAAS;AAAC,MAAM5V,KAAQyG,EAAA;AAAW;AAAA,IAAM;AAEvD,UAAMiQ,IAAcR,EAAM,MAAA;AAC1B,QAAI1Y,EAAK,YAAa,KAAI;AAEzB,YAAMgM,IAAI,KAAK,MAAMhM,EAAK,WAAW;AAErC,iBAAW,CAACM,GAAIM,CAAC,KAAK,OAAO,QAAQoL,CAAC,EAAS,CAAAkN,EAAa5Y,CAAE,IAAIM;AAAA,IACnE,SAAS+E,GAAG;AACX,YAAIA,aAAa,cAAmB,IAAI,MAAMiT,GAAW5Y,GAAM,eAAe2F,EAAE,OAAO,CAAC,IAC7E;AAAA,IACZ;AAAA,WACiB,OAAO;AAExB,UAAMwT,IAAgBD,EAAY,MAAA;AAClC,QAAIlZ,EAAK,cAAe,KAAI;AAE3B,YAAMgM,IAAI,KAAK,MAAMhM,EAAK,aAAa;AAEvC,iBAAW,CAACM,GAAIM,CAAC,KAAK,OAAO,QAAQoL,CAAC,EAAS,CAAAmN,EAAe7Y,CAAE,IAAIM;AAAA,IACrE,SAAS+E,GAAG;AACX,YAAIA,aAAa,cAAmB,IAAI,MAAMiT,GAAW5Y,GAAM,iBAAiB2F,EAAE,OAAO,CAAC,IAC/E;AAAA,IACZ;AAAA,WACmB,aAAa;AAEhC,SAAK,SAAS,MAAK;AAAC,MAAAkT,EAAI,QAAQH;AAAA,IAAK,GACrC,KAAKH,KAAS,MACP9F,EAAA,KACNoG,EAAI,QAAQK,GACL,MAFkB,IAI1B,KAAKV,KAAW,MAAK;AAAC,MAAAK,EAAI,QAAQM;AAAA,IAAa,GAEzC3W,KAAQyG,EAAA;AAAA,EACf;AAAA,EAlNA,OAAO,aAAa;AAAA,EACpB,OAAOgQ,KAAkB,CAACG,GAAaC,MAAc;AAAA,EAAc;AAAA,EACnE,OAAOC,KAAkB,CAACF,GAAatX,GAAayX,GAAaC,MAAc;AAAA,EAAc;AAAA,EAC7F,OAAO,KAAK3W,GAAa;AACxB,IAAMA,EAAI,KAAK,MAAM,WAErBsV,EAAOc,KAAkB,CAACQ,GAAIZ,MAAOY,EAAG;AAAA,MACtC,IAAI/F,IACJ,UAAU,SAAU,GAAG,EACvB,UAAU,GAAG,SAAU,CAAC,EACxB,SAASmF,EAAI,GAAGA,EAAI,GAAGA,EAAI,OAAOA,EAAI,MAAM,EAC5C,QAAA;AAAA,IAAQ,GAEVV,EAAOmB,KAAkB,CAACG,GAAIpX,GAAIqX,GAAIhS,MAAK+R,EAAG;AAAA,MAC5C,IAAI/F,EAAA,EACJ,UAAU,SAAU,GAAG,EACvB,UAAU,GAAG,SAAU,CAAC,EACxB,SAASrR,EAAG,GAAGA,EAAG,GAAGqX,GAAIhS,CAAC,EAC1B,QAAA;AAAA,IAAQ;AAAA,EAEX;AAAA,EAEA,QAAQiS,GAAe;AAAA,EAAc;AAAA,EACrC,eAAe,MAAK,KAAKrB;AAAA;AAAA,EAEzBA,KAAa,IAAI3Q,EAAA;AAAA,EAEjB0B,KAAQ,IAAItH,EAAA;AAAA;AAAA,EAGHqW;AAAA,EAsLA,UAAgB;AACxB,SAAK,OAAO,SAAS,IAAI,GACzB,KAAK/O,GAAK,QAAA,GACV,MAAM,QAAA;AAAA,EACP;AAAA,EAEA,eAAe4O,GAAuB;AAAA,EAAc;AAAA,EACpD,iBAAiB;AAAA,EAAc;AAAA;AAAA,EAE/B,YAAY;AAAA,EAAc;AAAA,EAE1Be,GAAc3W,GAAYwW,GAAW;AACpC,SAAK,cAAcxW,GAAI,CAAC,GACxBA,EAAG,QAAQwW,EAAI,OACfxW,EAAG;AAAA,MACFwW,EAAI;AAAA,MAAGA,EAAI;AAAA,MACX;AAAA,MAAG;AAAA,MAAGA,EAAI;AAAA,MAAU;AAAA,MAAG;AAAA,OACtBxW,EAAG,QAAOwW,EAAI,SAAQ;AAAA,OACtBxW,EAAG,SAAQwW,EAAI,UAAS;AAAA,IAAA,GAG1BxW,EAAG,OAAOwW,EAAI;AAAA,EACf;AAAA,EAEA,SAAuB,MAAK;AAAA,EAAc;AAAA,EAC1CN,KAAyB,MAAK;AAAA,EAC9BC,KAAwB,MAAK;AAAA,EAAc;AAAA,EAC3CC,GAAYpW,GAAY;AACvB,SAAK+V,GAAG,QAAQ/V,EAAG,QAAQ6F,EAAW,KAAK,MAAM,SAAS7F,EAAG,KAAK;AAGlE,UAAMuX,IAAMvX,EAAG,QAAO,GAChBoF,IAAI,KAAK2Q,GAAG,UAASwB,IAAKvX,EAAG,OAC7BqF,IAAIrF,EAAG,QACP2V,IAAK3V,EAAG,QAAQ,aAChBwX,IAAW,IAAIlT,EAAQqR,GAAI,IAAIrQ,EAAU,GAAG,GAAGiS,GAAKlS,CAAC,CAAC,GACtDoS,IAAY,IAAInT,EAAQqR,GAAI,IAAIrQ,EAAUiS,GAAK,GAAGA,GAAKlS,CAAC,CAAC,GACzDqS,IAAU,IAAIpT,EAAQqR,GAAI,IAAIrQ,EAAUiS,IAAK,GAAG,GAAGA,GAAKlS,CAAC,CAAC,GAC1DsS,IAAS,MAAK;AAAC,MAAA3X,EAAG,UAAUwX;AAAA,IAAQ;AAC1C,IAAI,KAAKzB,GAAG,WAAS4B,EAAA,GAErB,KAAK,SAASA,GACd,KAAKzB,KAAU,MACR,KAAK,SAAA,KACXlW,EAAG,UAAU0X,GACN,MAFuB,IAI/B,KAAKvB,KAAW,MAAK;AAAC,MAAAnW,EAAG,UAAUyX;AAAA,IAAS,GAExC,WAAW,KAAK,QACnB,KAAK1B,GAAG,QAAQC,EAAK,KAAK,KAAK,KAAK,GACpC,KAAK,MAAM,KAAK,KAAKD,GAAG,QAAO3Q,KAE3B,KAAK2Q,GAAG,QAAQ3Q,GACjB,YAAY,KAAK,QACpB,KAAK2Q,GAAG,SAASC,EAAK,KAAK,KAAK,MAAM,GACtC,KAAK,MAAM,KAAK,KAAKD,GAAG,SAAQ1Q,KAE5B,KAAK0Q,GAAG,SAAS1Q,GACtBrF,EAAG,OAAO,KAAK,UAAU,KAAK+V,EAAE,GAEhCD,EAAOmB,GAAgB,MAAMjX,GAAIoF,GAAGC,CAAC;AAAA,EACtC;AAED;AC7NO,MAAMuS,UAAiB9R,EAAM;AAAA,EACnC,OAAO1F;AAAA,EACP,OAAOC;AAAA,EACP,OAAOwX;AAAA,EACP,OAAOC;AAAA,EACP,OAAO,KAAKtX,GAAauX,GAAala,GAAgBma,GAAYC,GAAsC9R,GAA4B;AACnI,SAAK/F,KAAOI,GACZ0P,EAAS,KAAK1P,GAAK2F,CAAO,GAC1B,KAAK9F,KAAOxC,GACZ,KAAKia,KAAOE,GACZ,KAAKH,KAAcI,GAEnBpa,EAAI,aAAa,CAAAqa,MAAQ,KAAK,SAASA,CAAK,CAAC,GAE7CH,EAAK,SAAW,CAAA,MAAI,KAAKI,GAAQ,CAAC,GAClCJ,EAAK,OAAO,EAAC,SAAS,IAAO,MAAM,IAAI,MAAM,GAAE,GAC/CA,EAAK,cAAc,CAAA,MAAI,KAAKK,GAAa,CAAC,GAC1CL,EAAK,eAAe,CAAA,MAAI,KAAKM,GAAc,CAAC,GAG5CnI,EAAS,YAAA,GACToI,GAAA,GAEAC;AAAA,MACC/X,EAAI,UAAU,MAAMqC,EAAoB,IAAI,EAC3C,QAAQ,CAAA,MAAI,OAAO,OAAO,CAAC,EAAE,IAAI,CAAAtE,MAAI;AAAA;AAAA,iBAExBA,CAAC;AAAA,aACL,KAAK6B,GAAK,WAAW,OAAO7B,CAAC,GAAGsE,EAAoB,IAAI,CAAC;AAAA;AAAA,CAErE,CAAC,EAAE,KAAK,EAAE,IAGP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,GAcF,KAAKuV,GAAa;AAAA,MACjB,MAAO;AAAA,MACP,MAAO;AAAA,MACP,OAAQ;AAAA,MACR,GAAK;AAAA,MACL,GAAK;AAAA,MACL,SAAU;AAAA,MACV,SAAU;AAAA,MACV,QAAS;AAAA,MACT,MAAO;AAAA,MACP,MAAO;AAAA,IAAA,CACP,GACD,KAAKC,GAAc;AAAA,MAClB,MAAO;AAAA,MACP,MAAO;AAAA,MACP,OAAQ;AAAA,MACR,GAAK;AAAA,MACL,GAAK;AAAA,MACL,SAAU;AAAA,MACV,SAAU;AAAA,MACV,QAAS;AAAA,MACT,MAAO;AAAA,MACP,MAAO;AAAA,IAAA,CACP;AAAA,EACF;AAAA;AAAA,EAGA,OAAOD,GAAaza,GAAY;AAC/B,UAAMgM,IAAIuG,EAAS,YAAYvS,CAAI,GAC7BuH,IAAIyE,EAAE,EAAE,WAAW,GAAG,IAAG,GAAGA,EAAE,KAAI,GAAG,MAAK,GAAGA,EAAE,EAAE,MACjDxE,IAAIwE,EAAE,EAAE,WAAW,GAAG,IAAG,GAAGA,EAAE,KAAI,GAAG,MAAK,GAAGA,EAAE,EAAE,MACjD,EAAC,MAAAjG,MAAQ/F;AACf,WAAA4a,GAAS;AAAA,YACC7U,CAAI;AAAA;AAAA;AAAA;AAAA,YAIJA,CAAI;AAAA,YACJiG,EAAE,KAAK;AAAA;AAAA;AAAA,uBAGIjG,CAAI,IAAIiG,EAAE,IAAI,MAAMA,EAAE,IAAI;AAAA;AAAA,sBAE3BjG,CAAI;AAAA,2BACCiG,EAAE,MAAM,cAAcA,EAAE,OAAO,KAAKA,EAAE,OAAO,eAAezE,CAAC,KAAKC,CAAC;AAAA;AAAA;AAAA,CAG7F,GAEQ;AAAA,EACR;AAAA;AAAA,EAEA,OAAOkT,GAAc1a,GAAY;AAChC,UAAMgM,IAAIuG,EAAS,aAAavS,CAAI,GAC9BuH,IAAIyE,EAAE,EAAE,WAAW,GAAG,IAAG,GAAGA,EAAE,KAAI,GAAG,MAAK,GAAGA,EAAE,EAAE,MACjDxE,IAAIwE,EAAE,EAAE,WAAW,GAAG,IAAG,GAAGA,EAAE,KAAI,GAAG,MAAK,GAAGA,EAAE,EAAE,MACjD,EAAC,MAAAjG,MAAQ/F;AACf,WAAA4a,GAAS;AAAA,aACE7U,CAAI;AAAA;AAAA;AAAA,wBAGOA,CAAI,IAAIiG,EAAE,IAAI,MAAMA,EAAE,IAAI;AAAA;AAAA,uBAE3BjG,CAAI;AAAA;AAAA,aAEdiG,EAAE,KAAK;AAAA,sBACEA,EAAE,MAAM,cAAcA,EAAE,OAAO,KAAKA,EAAE,OAAO,eAAezE,CAAC,KAAKC,CAAC;AAAA;AAAA,CAExF,GAEQ;AAAA,EACR;AAAA,EAGA,OAAO5D;AAAA,EACP,OAAOjB;AAAA,EACP,OAAO,UAAUkB,GAAiB5D,GAAcsT,GAAwB;AACvE,SAAK3P,KAAUC,GACf,KAAKlB,KAAO1C,GACZsS,EAAS,UAAU1O,GAAQ0P,CAAM;AAAA,EAClC;AAAA;AAAA,EAGA,OAAOsH,KAAY;AAAA,EACnB,OAAOC,KAAoC,CAAA;AAAA,EAC3C,OAAON,GAAQxa,GAAY;AAC1B,SAAK6a,KAAYta,EAAeP,GAAM,WAAW,KAAK6a,EAAS,GAC/D,KAAKnY,GAAK,aAAa,QAAQ,2BAA2B,KAAKmY,EAAS;AAExE,UAAM,EAAC,MAAA9B,MAAQ/Y;AACf,QAAI,UAAUA,KAAS,UAAUA,EAAM,OAAM;AAE7C,QADA,KAAK0C,GAAK,aAAa,QAAQ,wBAAwBqW,CAAI,GACvD,CAAEA;AACL,kBAAKrW,GAAK,aAAa,QAAQ,wBAAwB,EAAE,GAClD;AAGR,UAAM+B,IAAMsU,EAAK;AACjB,QAAI,KAAK8B,MAAapW,MAAQ,EAAG,OAAM;AAEvC,UAAMD,IAAI,OAAOxE,EAAK,IAAI,EAAE,MAAM,GAAG;AACrC,QAAIwE,EAAE,WAAWC,EAAK,OAAM;AAC5B,SAAKqW,KAAW,CAAA;AAEhB,aAASpW,IAAE,GAAGA,IAAED,GAAK,EAAEC,EAAG,MAAKoW,GAAS/B,EAAKrU,CAAC,CAAE,IAAI2T,EAAK7T,EAAEE,CAAC,CAAC;AAC7D,gBAAKhC,GAAK,aAAa,QAAQ,wBAAwB1C,EAAK,IAAI,GAEzD;AAAA,EACR;AAAA;AAAA,EAIA+a,KAAa;AAAA,EACbC,KAAa;AAAA,EACbC,KAAmB;AAAA,EACnBC,KAAsC;AAAA,EACtCC,KAAW;AAAA;AAAA;AAAA,EAGXC,KAAO,IAAI7I,EAAS,KAAK,KAAK,MAAK,KAAK,SAAA,GAAY0H,EAAStX,EAAI;AAAA,EAExD0Y,KAAS,IAAIC,GAAA;AAAA,EACbC,KAAS,SAAS,cAAc,MAAM;AAAA;AAAA,EAC/C,OAAgBC,KAAgB;AAAA,IAC/B,cAAgB;AAAA,IAChB,mBAAoB;AAAA,IACpB,QAAW;AAAA,IACX,OAAW;AAAA,IACX,gBAAkB;AAAA,IAClB,iBAAmB;AAAA,IACnB,eAAiB;AAAA,IACjB,kBAAmB;AAAA,EAAA;AAAA,EAGXC,KAAU,IAAIjJ,EAAA;AAAA,EAEvB,cAAc;AACb,UAAA,GAEA,KAAK,IAAI,SAAS,KAAK4I,EAAI,GAE3B,KAAKC,GAAO,KAAK,KAAKK,EAAM,GAE5B,KAAK,IAAI,SAAS,KAAKD,EAAO,GAC9B,KAAKA,GAAQ,OAAO,UAGpB,KAAK,IAAI,EAAC,OAAO,UAAU/S,EAAO,MAAM,eAAeA,EAAO,MAAM,sKAA8K,UAAU,WAAW,WAAW,WAAW,YAAY,QAAO;AAAA,EACjT;AAAA,EACS,UAAU;AAClB,IAAI,KAAKwS,OAAQ,KAAK,IAAI,YAAY,KAAKA,EAAK,EAAE,QAAA,GAAW,KAAKA,KAAQ,SAE1EjB,EAASE,GAAK,UAAA,GACd,KAAKiB,GAAK,QAAA;AAAA,EACX;AAAA,EACA,OAAO,UAAU;AAChB,SAAKP,KAAY,IACjB,KAAKC,KAAW,CAAA,GAEhB,KAAKa,KAAO,CAAA3D,MAAKA;AAAA,EAClB;AAAA,EACA,IAAa,KAAK1X,GAAY;AAAC,SAAK,QAAQA,GAAI,KAAK8a,GAAK,OAAO9a;AAAA,EAAE;AAAA,EACnE,IAAa,OAAO;AAAC,WAAO,KAAK;AAAA,EAAK;AAAA;AAAA,EAG7B,YAAY;AAAC,SAAK8a,GAAK,UAAA;AAAA,EAAW;AAAA,EAClC,oBAAoB;AAC5B,eAAW/a,KAAK,KAAKob,GAAQ,YAAY,UAAA;AAAA,EAC1C;AAAA,EAEmB,SAASlU,GAAW;AAAC,SAAK6T,GAAK,IAAI,EAAC,GAAA7T,EAAA,CAAE;AAAA,EAAC;AAAA,EACvC,SAASC,GAAW;AAAC,SAAK4T,GAAK,IAAI,EAAC,GAAA5T,EAAA,CAAE;AAAA,EAAC;AAAA,EAEjD,IAAIxH,GAAY;AAoBxB,QAnBA,MAAM,IAAIA,CAAI,GACdmI,EAAM,MAAM,KAAK,KAAKnI,GAAM,KAAK,GAAG,GAEpCA,EAAK,SAAS,IAAI,KAAK,MAAM,MAAM,GAAG,EAAE,GACxCsb,GAAY,QAAQtb,CAAI,GACxB,KAAK4b,GAAQ5b,CAAI,GACjB,KAAKob,GAAK,IAAIpb,CAAI,GAEd,aAAaA,MAAM,KAAK6b,KAAW7b,EAAK,WAAW,KACvD,KAAK8b,KAAWpT,EAAO,WACrB,KAAK0S,GAAK,WACT,CAACxa,GAAGmb,MAAK,8BAA8BA,CAAC,oBAAoBnb,CAAC,qBAAqBA,CAAC,MACnF,CAACA,GAAGmb,MAAK,6BAA6BA,CAAC,qBAAqBnb,CAAC,oBAAoBA,CAAC,MACnF,KAAKwa,GAAK,WACT,CAAAxa,MAAI,+DAA+DA,CAAC,qBAAqBA,CAAC,MAC1F,OAAI,gEAAgEA,CAAC,oBAAoBA,CAAC,KAEzF8H,EAAO,cAAW,KAAKsT,KAAmB,KAAKC,KAE/C,aAAajc;AAChB,UAAIA,EAAK,SAAS;AACjB,cAAMoS,IAAM,SAAS,cAAc,MAAM;AACzC,QAAAA,EAAI,MAAM,UAAUpS,EAAK;AACzB,cAAMyE,IAAM2N,EAAI,MAAM,QAChBtI,IAAI,KAAKyR,GAAO;AACtB,iBAAS7W,IAAE,GAAGA,IAAED,GAAK,EAAEC,GAAG;AAEzB,gBAAMoP,IAAW1B,EAAI,MAAM1N,CAAC;AAC5B,cAAIoP,KAAOmG,EAASuB,IAAe;AAClC,YAAA5U,GAAS,QAAQ,GAAGkN,CAAG,YAAY,GAAG;AACtC;AAAA,UACD;AACA,gBAAMlT,IAAIwR,EAAI,MAAM0B,CAAG;AACvB,UAAIlT,MAAGkJ,EAAEgK,CAAG,IAAIlT;AAAA,QACjB;AAAA,MAED,MACK,MAAK2a,GAAO,MAAM,UAAU;AAGlC,QAAI,WAAWvb,EAAM,YAAWK,KAAK,KAAKob,GAAQ,SAAU,CAAApb,EAAE,QAAQ,KAAK,IAAI;AAE/E,SAAK6b,GAAWlc,CAAI,GACpB,KAAKmc,GAAYnc,CAAI;AAErB,UAAMoc,IAAcnU,EAAQ,SAAQ,qBAAqB,KAAK,KAAK,IAC7D9H,IAAM,KAAKkc,GAAUrc,GAAM,CAAAwC,MAAS;AACzC,MAAIA,KAAQyF,EAAQ,QAAQmU,CAAW;AAAA,IACxC,CAAC;AACD,WAAIjc,KAAK8H,EAAQ,UAAUmU,CAAW,GAC/Bjc;AAAA,EACR;AAAA,EACA+b,GAAWlc,GAA4B;AACtC,UAAM,EAAC,UAAAsc,MAAYtc;AACnB,QAAI,CAAEsc,EAAU;AAChB,UAAMxG,IAAMvD,EAAS,aAAa+J,CAAQ;AAC1C,QAAI,CAAExG,EAAK,OAAM,iBAAiBwG,CAAQ;AAC1C,SAAKC,KAAgBD,GACrB,KAAKE,KAAc1G,EAAI;AAAA,EACxB;AAAA,EACAyG,KAAgB;AAAA,EAChBC,KAAe;AAAA,EAEf,IAAa,QAAQ;AAAC,WAAO,KAAKpB,GAAK;AAAA,EAAQ;AAAA,EAC/C,IAAa,SAAS;AAAC,WAAO,KAAKA,GAAK;AAAA,EAAS;AAAA,EAEjDe,GAAYnc,GAA4B;AACvC,UAAM,EAAC,WAAAyc,MAAazc;AACpB,QAAI,CAAEyc,EAAW;AAEjB,QAAI,CADQlK,EAAS,cAAckK,CAAS,EACjC,OAAM,kBAAkBA,CAAS;AAC5C,SAAKC,KAAiBD;AAAA,EACvB;AAAA,EACAC,KAAiB;AAAA,EAEjBrT,KAAO,IAAItH,EAAA;AAAA,EACXsa,GAAUrc,GAAY2c,GAA4C;AACjE,QAAI,gBAAgB3c;AACnB,aAAIO,EAAeP,GAAM,cAAc,EAAK,MAC3C,KAAK+a,KAAW,GAChB,KAAKC,KAAW,GAChB,KAAKC,KAAmB,IACxB,KAAKE,KAAS,KAEfwB,EAAQ,EAAK,GACN;AAGR,SAAK3B,KAAW9S,EAAWlI,GAAM,WAAW,KAAKgb,EAAQ,GACzD,KAAKC,KAAmB1a,EAAeP,GAAM,mBAAmB,KAAKib,EAAgB;AACrF,UAAM2B,KAAS,KAAK3B,KACjB,IACA,OAAOhB,EAASvX,GAAK,OAAO,0BAA0B,CAAC,KACvD,KAAKsY;AACR,QAAIhb,EAAK;AACR,UAAI,KAAKmb,OAAWnb,EAAK;AACxB,oBAAKmb,KAASnb,EAAK,OACf,KAAKkb,OACR,KAAK,IAAI,YAAY,KAAKA,EAAK,GAC/B,KAAKA,GAAM,QAAA,IAGZ,KAAK7R,KAAO,IAAItH,EAAW,KAAKoZ,IAAQ,KAAK,KAAK,CAAA9Y,MAAK;AACtD,eAAK6Y,KAAQ7Y,GACbA,EAAG,OAAO,aACVA,EAAG,UAAUua,IAAQ,GACrBva,EAAG,QAAQua,GAEX,KAAKxB,GAAK,UAAU/Y,EAAG,OAAOA,EAAG,MAAM,GAEvC,KAAK,IAAI,cAAcA,GAAI,CAAC,GAC5Bsa,EAAQ,EAAI;AAAA,QACb,CAAC,GACM,KAAKtT,GAAK;AAAA,UAEnB,CACS,aAAarJ,MACrB,KAAK+a,KAAW8B,GAAa7c,GAAM,WAAW,CAAQ,GAClD,KAAKkb,OACR,KAAK,IAAI,YAAY,KAAKA,EAAK,GAC/B,KAAKA,GAAM,QAAA,IAGZ,KAAKC,KAAS,IACd,KAAK,IAAI;AAAA,OACP,KAAKD,KAAQ,IAAIxH,EAAA,GACjB,UAAU,KAAKqH,IAAU6B,CAAK,EAC9B,UAAU,MAAS,EACnB,SAAS,GAAG,GAAG,KAAKxB,GAAK,UAAU,KAAKA,GAAK,SAAS,EACtD,QAAA;AAAA,MAAW;AAAA,IAAA,GACb,KAAKF,GAAM,OAAO;AAInB,WAAI,KAAKA,OACR,KAAKA,GAAM,UAAU0B,IAAQ,GAG7B,KAAK1B,GAAM,QAAQ0B,IAEpBD,EAAQ,EAAK,GAEN;AAAA,EACR;AAAA,EACA,aAAaG,GAAuB;AACnC,UAAMF,IAAQ,KAAK3B,KAChB,KAAKD,KACL8B,IAAU,KAAK9B;AAClB,IAAI,KAAKE,cAAiBxH,MAErB,KAAKwH,OACR,KAAK,IAAI,YAAY,KAAKA,EAAK,GAC/B,KAAKA,GAAM,QAAA,IAEZ,KAAK,IAAI;AAAA,OACP,KAAKA,KAAQ,IAAIxH,EAAA,GACjB,UAAU,KAAKqH,IAAU6B,CAAK,EAC9B,UAAU,MAAS,EACnB,SAAS,GAAG,GAAG,KAAKxB,GAAK,UAAU,KAAKA,GAAK,SAAS,EACtD,QAAA;AAAA,MAAW;AAAA,IAAA,GACb,KAAKF,GAAM,OAAO,gBAGf,KAAKA,OACR,KAAKA,GAAM,UAAU0B,IAAQ,GAG7B,KAAK1B,GAAM,QAAQ0B;AAAA,EAErB;AAAA,EAEAhB,GAAQ5b,GAAY;AAMnB,IALI,WAAWA,MACd,KAAK+c,KAAY/c,EAAK,SAAS,IAE/B,KAAKgd,KAAY,IAAI,OAAO,KAAK,KAAKD,EAAS,GAAG,IAE5C,SAAS/c,MAGhB,KAAKid,OAAS,IACd,KAAKC,KAAe,KAAKD,OAAS,KAC/B,MAAK,KACL,CAAAtQ,MAAK,KAAKqQ,GAAU,KAAKrQ,CAAE,IAC1B,KACA,2BAA2B,KAAKsQ,EAAI;AAAA,EACzC;AAAA,EACAA,KAAO;AAAA,EACPC,KAAe,CAACC,MAAe;AAAA,EAC/BJ,KAAY;AAAA;AAAA,EAEZC,KAAY;AAAA;AAAA,EAIZ,OAAO,SAASzC,GAAgB;AAC/B,SAAKoB,KAAOpB,IACT,CAAAvC,MAAKA,IACL,CAAAA,MAAK,wBAAwBA,CAAE;AAAA,EAEnC;AAAA,EACA,OAAO2D,KAAO,CAAC3D,MAAcA;AAAA,EAE7B,QAAQ;AAAA,EACR8D,KAA4C,MAAK;AAAA,EACjDE,KAAyF,CAACrP,GAAIyQ,GAAIC,GAASC,IAAQ,OAAM;AACxH,QAAI,CAAED,EAAS,QAAO,WAAWC,CAAO;AAExC,UAAM7Y,IAAMkI,EAAG,SAAQ;AACvB,QAAIlI,IAAK2Y,EAAG,SAAS,UAAU,uBAAuBC,CAAO,KAAKC,CAAO;AAEzE,QAAI1G,IAAK;AACT,YAAQyG,GAAA;AAAA,MACR,KAAK;AACJ,QAAAzG,IAAK,KAAKkF,GAAS,KAAKrX,CAAG;AAAG;AAAA,MAC/B,KAAK;AACJ,QAAAmS,IAAK,KAAKkF,GAAS,SAASrX,IAAK2Y,EAAG,WAAUA,EAAG,SAAQ,EAAE,OAAO3Y,CAAG;AAAG;AAAA,MACzE,KAAK;AACJ,QAAAmS,IAAK,KAAKkF,GAAS,SAASrX,IAAK2Y,EAAG,WAAUA,EAAG,SAAQ,EAAE,OAAO3Y,CAAG;AAAG;AAAA,MACzE,KAAK;AACJ,QAAAmS,IAAK,KAAKkF,GAAS,OAAOrX,CAAG;AAAG;AAAA,MACjC;AACC,QAAAmS,IAAK,eAAeyG,CAAO;AAAA,IAAA;AAE5B,WAAO,WAAWzG,CAAE,IAAI0G,CAAO;AAAA,EAChC;AAAA,EACAzB,KAAW;AAAA,EACXI,GAAoBtP,GAAYyQ,GAAYC,GAAiBC,IAAQ,IAAY;AAChF,QAAI,CAAED,EAAS,QAAO,WAAWC,CAAO;AAExC,UAAM7Y,IAAMkI,EAAG,SAAQ;AACvB,QAAIlI,IAAK2Y,EAAG,SAAS,UAAU,uBAAuBC,CAAO,KAAKC,CAAO;AAEzE,QAAI1G,IAAK;AACT,YAAQyG,GAAA;AAAA,MACP,KAAK;AAAQ,QAAAzG,IAAK;AAAsB;AAAA,MACxC,KAAK;AAAU,QAAAA,IAAK;AAAuB;AAAA,MAC3C,KAAK;AACJ,QAAAA,IAAK;AAAsB;AAAA,MAC5B,KAAK;AAAW,QAAAA,IAAK;AAA8B;AAAA,MACnD,KAAK;AAAQ,QAAAA,IAAK;AAA6B;AAAA,MAC/C,KAAK;AAAO;AACX,gBAAM2G,KAAM9Y,IAAK2Y,EAAG,WAAUA,EAAG,SAAQ;AACzC,UAAAxG,IAAK,iCACJ,KAAKwE,GAAK,WACR,gBAAgBmC,CAAE,uBAAuBA,CAAE,QAC3C,iBAAiBA,CAAE,sBAAsBA,CAAE;AAAA,QAC/C;AAAE;AAAA,MACF,KAAK;AAAS,QAAA3G,IAAK,iCACjB,KAAKwE,GAAK,WACR,2CACA;AACH;AAAA,MACD;AAAU,QAAAxE,IAAK,eAAeyG,CAAO;AAAA,IAAA;AAEtC,WAAO,WAAWzG,CAAE,IAAI0G,CAAO;AAAA,EAChC;AAAA,EAEA,MAAMvE,GAAoB;AAAC,SAAKsC,GAAO,OAAOtC,CAAI;AAAA,EAAC;AAAA,EACnDyE,KAAa;AAAA,EACb,IAAI,YAAY;AAAC,WAAO,KAAKA;AAAA,EAAU;AAAA,EAC9B9B,KAAkB,CAAC/O,GAAI8Q,MAAS;AACxC,QAAIC,IAAOD;AACX,IAAIxD,EAASxX,GAAK,KAAK,MAAM,SAAO,QAAQ,IAAI,kBAAkBkK,CAAE,MAAMA,EAAG,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,YAAY+Q,CAAI,aAAa,KAAK,KAAK,IAAI;AAElJ,UAAMC,IAASD,EAAK,MAAM,GAAG;AAC7B,QAAIE,IAAU;AACd,UAAM,CAACC,GAAI,GAAGC,CAAG,IAAIH,GACfI,IAAKD,EAAI,KAAK,GAAG;AACvB,YAAQH,EAAO,QAAA;AAAA,MACf,KAAK;AAEJ,YADA,KAAKH,KAAa,IACd7Q,MAAO;AAAA,GAAM;AAChB,UAAI,KAAKqR,MACR,KAAKA,KAAW,IAChBJ,IAAU,6CAENA,IAAU;AACf;AAAA,QACD;AACA,QAAI,KAAKI,OACR,KAAKA,KAAW,IACZN,MAAS,OAAIA,IAAO,YAEzBE,IAAU,KAAKK,GAAWtR,GAAI+Q,GAAM,KAAK7B,EAAQ;AACjD;AAAA,MAED;AACC,gBAAQgC,GAAA;AAAA;AAAA,UACR,KAAK;AAAA;AAAA,UACL,KAAK;AAAA;AAAA,UACL,KAAK;AAAA;AAAA,UACL,KAAK;AAAA;AAAA,UACL,KAAK;AAAA;AAAA,UACL,KAAK;AAAA;AAAA,UACL,KAAK;AAAA;AAAA,UACL,KAAK;AACJ,iBAAKG,KAAW,IAChB,KAAKR,KAAa,IAClBI,IAAU,KAAKK,GAAWtR,GAAIoR,GAAIF,CAAE;AACpC;AAAA,UAED,KAAK;AACJ,iBAAKK,GAAA,GACD,KAAKV,MACJ,KAAK,SAAOvD,EAASE,GAAK;AAAA,cAC7B,KAAKgE,GAAO,KAAK,EAAE,EAClB,QAAQ,kDAAkD,EAAE,EAE5D,WAAW,gCAAgC,SAAU,EAErD,WAAW,oDAAoD,EAAE,EAEjE,WAAW,sBAAsB,cAAe,EAGhD,WAAW,kBAAkB,EAAE,EAC/B,WAAW,kBAAoB,wBAA0B;AAAA,YAAA,GAG3D,KAAK/C,GAAK,MAAM,KAAK+C,IAAQ,KAAKC,OAAc,CAAC,GACjD,KAAKZ,KAAa,IAClB,KAAKY,KAAY,KAET,KAAK,SAAO,KAAKhD,GAAK,cAAA;AAC/B;AAAA;AAAA,UAED,KAAK;AAAM;AACV,oBAAMpP,IAAmB,KAAK,MAAM+R,CAAE,GAEhC,EAAC,OAAArF,IAAM,IAAI,MAAA2F,IAAK,SAAQrS,GACxB,EAAC,IAAAsS,GAAI,KAAApR,EAAA,IAAO,KAAKqR,GAAU,IAAMF,IAAMhG,EAAKgG,CAAI,IAAG,IAAI;AAC7D,mBAAKF,GAAO,KAAK,QAAQG,CAAE,WAAWpR,CAAG,qBAAqBwL,CAAK,IAAI,GACvE,OAAO1M,EAAE,OACT,KAAKwS,GAAUxS,CAAC;AAAA,YACjB;AAAE;AAAA;AAAA,UACF,KAAK;AACJ,iBAAKmS,GAAO,KAAK,SAAS,GAC1B,KAAKD,GAAA;AACL;AAAA;AAAA,UAED,KAAK;AACJ,iBAAKV,KAAa;AACnB;AACC,oBAAMxR,IAAmB,KAAK,MAAM+R,CAAE;AAGtC,kBADA/R,EAAE,OAAO,OAAO,KAAKmS,GAAO,MAAM,GAC9BnS,EAAE,OAAO,SAAS;AACrB,qBAAKoP,GAAK,UAAgBpP,CAAC;AAC3B;AAAA,cACD;AAEA,mBAAKgS,KAAW,IAEhBhS,EAAE,QAAQ,KAAKoS,IACfpS,EAAE,MAAM,IACRA,EAAE,UAAU,IACZA,EAAE,YAAY;AACd,oBAAM,EAAC,GAAA/I,GAAG,MAAAob,IAAK,MAAM,SAAAI,MAAWzS,GAC1B,EAAC,IAAAsS,GAAI,KAAApR,GAAK,KAAAwR,EAAA,IAAO,KAAKH,GAAU,IAAMF,IAAMhG,EAAKgG,CAAI,IAAG,IAAI;AAClE,cAAAT,IAAU,QAAQU,CAAE,WAAWpR,CAAG,IAAIlB,EAAE,KACxC,0CAA0C,KAAK,UAAUA,CAAC,CAC1D,IAAI0S,CAAG,WAAWxR,CAAG,sCAAsCwR,CAAG,GAC7D,KAAK1C;AAAA,gBAAiB;AAAA,gBAAK/Y;AAAA,gBAAG,KAAK4Y;AAAA,gBACnC,KAAKN,GAAO,MAAM,WACf,KAAKoD,GAAU,GAAG,EAAE,GAAG,EAAE,WAAW,MACrCF;AAAA,cAAA,CACH,IAAIzS,EAAE,CAAC;AAAA,YACR;AACC;AAAA,UAED,KAAK;AACJ,iBAAKgS,KAAW,IAChB,KAAKR,KAAa;AACnB;AACC,oBAAM,EAAC,GAAAoB,IAAE,IAAI,GAAA3b,IAAE,IAAI,MAAAob,IAAK,MAAM,OAAA3F,IAAM,IAAI,SAAA+F,IAAQ,GAAA,IAAqB,KAAK,MAAMV,CAAE;AAClF,cAAI9D,EAASvX,GAAK,eACjB,KAAKmc,MAAclS,KAAK+Q,IAAM,IAAIA,CAAI,MAAK,KAC3C,KAAKoB,MAAoBF;AAG1B,oBAAMxB,IAAK1U,EAAO,WACfzF,EAAE,WAAW,gBAAgB,CAAA6G,MAAI,OAAO,aAAaA,EAAE,WAAW,CAAC,IAAI,KAAK,CAAC,IAG7E7G,GACG,EAAC,IAAAqb,GAAI,KAAApR,GAAK,KAAAwR,EAAA,IAAO,KAAKH,GAAU,IAAMF,IAAMhG,EAAKgG,CAAI,IAAG,IAAI;AAClE,cAAAT,IAAU,QAAQU,CAAE,WAAWpR,CAAG,GAAG,KAAKgQ,GAAa0B,CAAC,CAAC,IAAIlG,CAAK,gBAAgBgG,CAAG,WAAWxR,CAAG,iDAAiD0R,CAAC,aAAaF,CAAG,GACpK,KAAK1C;AAAA,gBAAiB4C;AAAA,gBAAGxB;AAAA,gBAAI,KAAKvB;AAAA,gBAClC,KAAKN,GAAO,MAAM,WACf,KAAKoD,GAAU,GAAG,EAAE,GAAG,EAAE,WAAW,MACrCF;AAAA,cAAA,CACH,IAAIrB,CAAE;AAAA,YACP;AACC;AAAA,UAED,KAAK;AACJ,YAAA7K,EAAS,SAAA;AACT;AAAA;AAAA,UAED,KAAK;AACJ,iBAAKiL,KAAa,IAClB,KAAKuB,GAA8B,KAAK,MAAMhB,CAAE,CAAC;AACjD;AAAA;AAAA,UAED,KAAK;AACJ,iBAAKP,KAAa;AACnB;AACC,oBAAMxR,IAAmB,KAAK,MAAM+R,CAAE;AACtC,cAAA/R,EAAE,OAAO,IAAI;AACb,oBAAM,EAAC,IAAAsS,GAAI,KAAApR,GAAK,QAAA8R,EAAA,IAAU,KAAKT,GAAU,IAAOvS,EAAE,OAAMqM,EAAKrM,EAAE,IAAI,IAAG,IAAI;AAC1E,mBAAKmS,GAAO,KAAK,QAAQG,CAAE,WAAWpR,CAAG,qBAAqBlB,EAAE,SAAS,EAAE,KAAKgT,CAAM,cAAcjB,CAAE,IAAI,GAG1G,OAAO/R,EAAE,OACT,KAAK+S,GAAe/S,CAAC;AAAA,YACtB;AAAE;AAAA;AAAA,UAEF,KAAK;AACJ,iBAAKwR,KAAa,IAClB,KAAKW,GAAO,KAAK,SAAS,GAC1B,KAAKD,GAAA;AACL;AAAA;AAAA,UAED;AACC,iBAAKV,KAAa,IAClBI,IAAU,KAAKK,GAAWtR,GAAI+Q,GAAM,KAAK7B,EAAQ;AAAA,QAAA;AAElD;AAAA,IAAA;AAED,SAAKsC,GAAO,KAAKlE,EAAS0B,GAAKiC,CAAO,CAAC;AAAA,EACxC;AAAA,EACAK,GAAWtR,GAAYyQ,GAAYC,GAAyB;AAC3D,UAAM4B,IAAKtS,MAAK,MAAK,WAAUA,MAAK,MAAK,WAAUA;AACnD,IAAIsN,EAASvX,GAAK,eACjB,KAAKmc,MAAcI,KAAK7B,IAAI,IAAIA,CAAE,MAAK,KACnCzQ,MAAO,QAAK,KAAKmS,MAAoBnS;AAE1C,UAAM,EAAC,IAAA2R,GAAI,KAAApR,GAAK,KAAAwR,EAAA,IAAO,KAAKH,GAAU,IAAM,MAAM5R,CAAE;AAEpD,WAAIyQ,IAAW,QAAQkB,CAAE,WAAWpR,CAAG,IAAI,KAAKgQ,GAAavQ,CAAE,CAE/D;AAAA,IACC,MAAM,KAAKA,CAAE,EAAE,IAAI,CAAC5C,GAAGrF,MAAK,QAAQ4Z,CAAE,GAAGI,CAAG,WAC3Cha,IAAI,IAAG,KAAK6Z,GAAU,IAAM,MAAM5R,CAAE,EAAE,MAAKO,CAC5C,sBACCnD,MAAI,MAAK,WAAUA,MAAI,MAAK,WAAUA,CACvC,SAAS,EAAE,KAAK,EAAE,CAEnB,MAAM2U,CAAG,GAAG,KAAK1C;AAAA,MAAiBrP;AAAA,MAAIyQ;AAAA,MAAIC;AAAA,MACzC,KAAK9B,GAAO,MAAM,WACf,KAAKoD,GAAU,GAAG,EAAE,GAAG,EAAE,WAAW;AAAA,IAAA,CACxC,IAAIvB,CAAE,wBAEC,QAAQkB,CAAE,WAAWpR,CAAG,IAAI,KAAKgQ,GAAavQ,CAAE,CAAC,IAAI+R,CAAG,IAAIO,CAAE;AAAA,EACtE;AAAA,EACAV,GAAUW,GAAoBC,GAAwBxS,IAAK;AAAA,GAAM;AAChE,UAAM0R,IAAO,KAAK7B,KAAa2C,KAC3B,KAAKR,GAAU,GAAG,CAAC,GAAG,EAAE,SACvB1E,EAASY,KACVZ,EAASa,GAASnO,EAAG,GAAG,CAAC,KAAK,EAAE,KAAK,IACrCyS,EAAS,cAAa;AAC1B,IAAInF,EAASrW,GAAQ,aAAY,KAAKwa,KAAY,IACzCc,KAAa,KAAK1C,OAAa,KAAK4B,MAAa/F,EAAKgG,CAAI;AAEnE,UAAMW,IAAS,6BAA6B,KAAKzC,EAAa,sBAAsB,KAAKG,EAAc;AAEvG,WAAO;AAAA,MACN,IAAK,oCAAoC,KAAKH,EAAa;AAAA;AAAA,MAC3D,KAAM,oBAAoB,KAAK6B,EAAS,MACvC,KAAKO,GAAU,GAAG,EAAE,GAAG,EAAE,SAAS,EACnC;AAAA;AAAA,MACA,MAAO,KAAKA,GAAU,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,MAAI,MAAKK;AAAA,MACpD,QAAAA;AAAA,IAAA;AAAA,EAEF;AAAA,EACAZ,KAAY;AAAA,EACZJ,KAAW;AAAA,EACXG,KAAqB,CAAA;AAAA,EACrBQ,KAKM,CAAA;AAAA,EAENH,GAAUxS,GAAkB;AAC3B,SAAK2S,GAAU,KAAK;AAAA,MACnB,GAAA3S;AAAA,MACA,SAAY,KAAK6P;AAAA,MACjB,aAAe,KAAKU;AAAA,MACpB,cAAe,KAAKG;AAAA,IAAA,CACpB,GACG1Q,EAAE,YAAS,KAAK6P,KAAW7P,EAAE,UACjC,KAAKkQ,GAAWlQ,CAAC,GACjB,KAAKmQ,GAAYnQ,CAAC;AAAA,EACnB;AAAA,EACAkS,KAAW;AACV,UAAMmB,IAAM,KAAKV,GAAU,IAAA;AAC3B,IAAMU,MAEN,KAAKxD,KAAWwD,EAAI,SACpB,KAAKnD,GAAW,EAAC,UAAUmD,EAAI,aAAY,GAC3C,KAAKlD,GAAY,EAAC,WAAWkD,EAAI,cAAa;AAAA,EAC/C;AAAA,EACAN,GAAe/S,GAAkB;AAChC,UAAMqT,IAAM,KAAKV,GAAU,GAAG,EAAE;AAChC,QAAI,CAAEU,GAAK;AAAC,WAAKb,GAAUxS,CAAC;AAAG;AAAA,IAAM;AAErC,IAAAqT,EAAI,IAAI,EAAC,GAAGA,EAAI,GAAG,GAAGrT,EAAA,GAClB,CAAEA,EAAE,SAAS,CAAEA,EAAE,YAAUqT,EAAI,EAAE,QAAQ,IAAIA,EAAI,EAAE,UAAU,KAE7DrT,EAAE,YAAS,KAAK6P,KAAW7P,EAAE,UACjC,KAAKkQ,GAAWlQ,CAAC,GACjB,KAAKmQ,GAAYnQ,CAAC;AAAA,EACnB;AAAA,EAES,QAAQ,MACZ,CAAE,KAAK,IAAI,uBAAuB,CAAE,KAAK,IAAI,UAAgB,KAC1D,KAAKoP,GAAK,SAAA;AAAA,EAGlB,YAAkB;AACjB,SAAK,IAAI,SAAS,KAAKA,KAAO,KAAKA,GAAK,OAAO,GAE/C,KAAKgD,KAAY,GACjB,KAAKJ,KAAW,IAChB,KAAKG,KAAS,CAAA,GACd,KAAKU,KAAa,IAClB,KAAKC,KAAmB,IACxB7E,EAASE,GAAK,UAAA;AAAA,EACf;AAAA,EACA0E,KAAe;AAAA,EACfC,KAAmB;AAAA,EACnB,IAAI,WAAW;AAAC,WAAO,KAAKD,GAAW,QAAQ,YAAY,EAAE;AAAA,EAAC;AAAA,EAC9D,IAAI,gBAAgB;AAAC,WAAO,KAAKC;AAAA,EAAgB;AAAA,EAEjD,IAAI,UAAU;AAAC,WAAO,KAAK,IAAI;AAAA,EAAmB;AAAA,EAClD,IAAI,QAAQnZ,GAAG;AAAC,SAAK,IAAI,sBAAsBA;AAAA,EAAC;AAAA,EAEvC,YAAY,CAAC3F,MAAc,IAAI,QAAc,CAAAiK,MAAK;AAE1D,IAAAjK,EAAK,MAAM,QAAQ,KAAKyb,GAAQ,SAAS,MAAM,OAAM,KAAK,OAC1Dzb,EAAK,SAAS,IAAIA,EAAK,IAAI,MAAM,GAAG,EAAE,GACtCO,EAAeP,GAAM,aAAa,KAAKob,GAAK,QAAQ;AACpD,UAAMkE,IAAM,IAAInH,EAAOnY,GAAMia,EAASrW,IAAS,MAAKqG,EAAA,GAAM,MAAK,KAAK,SAAA,CAAU;AAC9E,IAAAqV,EAAI,OAAO,KAAK,UAAUtf,CAAI,EAAE,WAAW,KAAK,GAAI,GACpD,KAAKyb,GAAQ,SAAS6D,CAAG;AAAA,EAC1B,CAAC;AAAA,EACD,WAAoB;AAEnB,YAAQ,KAAK,IAAI,uBAAuB,OACrC,KAAK,IAAI,WACTrF,EAASC,GAAY,IAAI;AAAA,EAC7B;AAAA,EAGS,SAASla,GAAkB;AACnC,UAAM,SAASA,CAAI,GAEnB,KAAK,UAAA;AAEL,eAAWK,KAAK,KAAKob,GAAQ,eAAA,KAAoB,QAAA;AAAA,EAClD;AAAA,EACkB,SAAS,OAAa;AAAA,IAAC,GAAG,MAAM,OAAA;AAAA,IACjD,SAAU,KAAK;AAAA,IAEf,WAAY,KAAKF,GAAO,MAAM;AAAA,IAC9B,SAAW,KAAKM;AAAA;AAAA,IAGhB,MAAO,KAAKX,OAAU,SACjB,SACA,KAAKA,cAAiB/W,IAAQ,WAAU;AAAA,IAC7C,OAAQ,KAAKgX;AAAA,IACb,SAAU,KAAKJ;AAAA,IACf,SAAU,KAAKC;AAAA,IACf,iBAAkB,KAAKC;AAAA,IAEvB,KAAO,KAAKgC;AAAA,IACZ,KAAO,KAAK7B,GAAK,OAAA;AAAA,IACjB,UAAU,KAAK2B;AAAA,IAEf,MAAO,KAAKtB,GAAQ,SAAS,IAAI,CAAApb,MAAIA,EAAE,IAAI;AAAA,EAAA;AAAA,EAEnC,SAAS2J,GAAmBnJ,GAA6B;AACjE,UAAM,SAASmJ,GAAMnJ,CAAI,GAEzB,KAAK,UAAUmJ,EAAK,SAEpB,KAAKuR,GAAO,MAAM,UAAUvR,EAAK,WACjC,KAAK6R,KAAW7R,EAAK,SACrB,KAAK,UAAA,GAEL,KAAK4R,GAAQ5R,CAAI,GACjB,KAAKoR,GAAK,SAASpR,EAAK,GAAG,GAE3B,KAAKgR,KAAahR,EAAK,SACvB,KAAKiR,KAAmBjR,EAAK,iBAE7BnJ,EAAK;AAAA,MACJ,IAAI,QAAc,CAAAoJ,MAAK;AACtB,cAAMvC,IAAUsC,EAAK,OAClBA,EAAK,SAAS,WACb,EAAC,OAAOA,EAAK,MAAA,IACb,EAAC,SAASA,EAAK,YAChB,EAAC,OAAO,GAAA;AACX,QAAAtC,EAAE,UAAUsC,EAAK,SACjBtC,EAAE,kBAAkBsC,EAAK,iBACnB,KAAKqS,GAAU3U,GAAG,CAAAlF,MAAS;AAAC,UAAIA,KAAQyH,EAAA;AAAA,QAAI,CAAC,KAAGA,EAAA;AAAA,MACvD,CAAC;AAAA,MACD,GAAGD,EAAK,KAAK,IAAI,CAAA3J,MAAI,KAAK,UAAgB,KAAK,MAAMA,EAAE,WAAW,KAAM,GAAG,CAAC,CAAC,CAAC,EAAE,KAAA;AAAA,IAAK;AAAA,EAEvF;AAAA,EAEA,IAAI,UAAU;AAAC,WAAO,KAAK+a,GAAK;AAAA,EAAO;AAAA,EACvC,IAAI,QAAQvD,GAAY;AAAC,SAAKuD,GAAK,UAAUvD;AAAA,EAAE;AAAA,EAEtC,SAASE,GAAe9N,GAAe;AAC/C,IAAA8N,EAAI,OAAO,KAAK,KAAK,EAAC,OAAO,IAAM,GACnC,KAAKqD,GAAK,SAASrD,GAAK9N,CAAE;AAAA,EAC3B;AAAA,EACS,eAAe;AAAC,SAAKmR,GAAK,aAAA;AAAA,EAAc;AAAA,EAExC,eAAejR,GAAsB;AAC7C,IAAM,KAAK,IAAI,WACf,KAAKiR,GAAK,eAAejR,CAAG;AAAA,EAC7B;AAAA,EACS,uBAAuBA,GAAsB;AACrD,QAAM,KAAK,IAAI;AACf,iBAAW9J,KAAK,KAAKob,GAAQ,SAAU,CAAApb,EAAE,eAAe8J,CAAG;AAAA,EAC5D;AAAA,EAES,iBAAiB;AAAC,SAAKiR,GAAK,eAAA;AAAA,EAAgB;AAAA,EAC5C,yBAAyB;AACjC,eAAW/a,KAAK,KAAKob,GAAQ,YAAY,eAAA;AAAA,EAC1C;AAAA,EAES,OAAe;AACvB,gBAAKC,GAAO,IAAI,QAAQ,GAEjB,MAAM,KAAA,IAAQ,gBAAgB,KAAK,OAAO,MAAM,KAAKN,GAAK,KAAA,CACjE,cAAc,KAAKD,EAAM,iBAAiB,KAAKJ,EAC/C,gBAAgB,KAAKC,EAAQ,wBAAwB,KAAKC,EAC1D,cAAc,KAAKG,GAAK,QAAQ,cAAc,KAAKA,GAAK,SACxD,iBACC,KAAK,IAAI,SAAS,IAAI,CAAAzV,MAAI,aACzBA,aAAaxB,IAAQ,WACpBwB,aAAa+N,IAAU,aACtB/N,aAAa6M,IAAW,cAAa,GACxC,cAAc7M,EAAE,IAAI,cAAcA,EAAE,KAAK,SAASA,EAAE,CAAC,SAASA,EAAE,CAAC,gBAAgBA,EAAE,OAAO,IAAI,EAAE,KAAK,GAAG,CACzG,gBACC,KAAK8V,GAAQ,SAAS,IAAI,CAAApb,MAAIA,EAAE,SAAS,CAAC,GAAG,QAAQ,IAAI,EAAE,KAAK,GAAG,CACpE;AAAA,EACD;AAED;ACn6BO,MAAMkf,EAA4B;AAAA,EAUxC,YAAYnF,GAA8B5R,GAAuCtI,GAAgB;AAAvD,SAAA,UAAAsI,GAAuC,KAAA,MAAAtI,GAEhFka,EAAK,YAAa,CAAApO,MAAI,KAAKwT,GAAWxT,CAAC,GACvCoO,EAAK,YAAa,CAAApO,MAAI,KAAKyT,GAAWzT,CAAC,GACvCoO,EAAK,YAAa,CAAApO,MAAI,KAAK0T,GAAW1T,CAAC,GACvCoO,EAAK,QAAU,CAAApO,MAAI,KAAK2T,GAAO3T,CAAC,GAChCoO,EAAK,YAAa,CAAApO,MAAI,KAAK4T,GAAW5T,CAAC;AAAA,EACxC;AAAA,EAhBA,OAAOvJ;AAAA,EACP,OAAOE;AAAA,EACP,OAAOC;AAAA,EACP,OAAO,KAAKC,GAAa5C,GAAc6C,GAAmB;AACzD,IAAAyc,EAAS9c,KAAOI,GAChB0c,EAAS5c,KAAO1C,GAChBsf,EAAS3c,KAAQE;AAAA,EAClB;AAAA,EAWAc;AAAA,EACA,UAAUC,GAAiB;AAAC,SAAKD,KAAUC;AAAA,EAAM;AAAA;AAAA,EAGjDgc,KAA6C,uBAAO,OAAO,IAAI;AAAA,EAC/D,UAAU;AAET,eAAWhL,KAAK,OAAO,OAAO,KAAKgL,EAAM,EAAG,CAAAhL,EAAE,cAAe,YAAYA,CAAC;AAE1E,SAAKgL,KAAS,uBAAO,OAAO,IAAI;AAAA,EACjC;AAAA,EAEA,eAAe;AACd,eAAW,CAACvM,GAAI,EAAC,OAAAoF,EAAA,CAAM,KAAK,OAAO,QAAQ,KAAKmH,EAAM;AACrD,WAAKC,GAAgBxM,CAAE,IAAIoF,EAAM,YAAY,QAC7CA,EAAM,UAAU;AAAA,EAElB;AAAA;AAAA,EAEAoH,KAA2C,uBAAO,OAAO,IAAI;AAAA,EAC7D,kBAAkB;AACjB,eAAW,CAACxM,GAAI1S,CAAC,KAAK,OAAO,QAAQ,KAAKkf,EAAe,GAAG;AAC3D,YAAMjL,IAAI,KAAKgL,GAAOvM,CAAE;AACxB,MAAIuB,MAAGA,EAAE,MAAM,UAAUjU,IAAG,WAAU;AAAA,IACvC;AAEA,SAAKkf,KAAkB,uBAAO,OAAO,IAAI;AAAA,EAC1C;AAAA;AAAA;AAAA,EAIAN,GAAWxf,GAAY;AACtB,UAAM,EAAC,IAAAsT,GAAI,KAAAyM,GAAK,OAAOvb,IAAE,GAAG,SAAS2Q,IAAG,GAAG,SAASC,IAAG,GAAG,QAAQnS,IAAE,MAAMjD;AAC1E,QAAI,CAAEsT,EAAI,OAAM;AAChB,QAAI,CAAEyM,EAAK,OAAM;AACjB,UAAMC,IAAK,kBAAiB1M;AAC5B,QAAI,KAAK,IAAI,OAAO,OAAO0M,CAAE,EAAE,EAAG,OAAM,SAAS1M,CAAE;AAEnD,UAAM1S,IAAIL,EAAeP,GAAM,WAAW,EAAI,GACxCigB,IAAUjgB,EAAK,UAAS,sBAAsBA,EAAK,OAAO,MAAK,IAC/DiX,IAAM,KAAKiJ,GAAMlgB,CAAI;AAE3B,IAAAuf,EAAS3c,GAAM,IAAI,mBAAmB,eAAe,eAAe0Q,CAAE,qBAAqB9O,CAAC,KAAKyb,CAAO,6BACvGV,EAAS5c,GAAK,cAAasU,EAAI,IAAGsI,EAAS5c,GAAK,QACjD,YACC4c,EAAS5c,GAAK,aAAYsU,EAAI,IAAGsI,EAAS5c,GAAK,QAChD,2DACC/B,IAAG,WAAU,MACd,sBAAsBuU,CAAE,KAAKC,CAAE,YAAYnS,CAAC,iBAC3CgU,EAAI,QAAOsI,EAAS5c,GAAK,QAC1B,aACCsU,EAAI,SAAQsI,EAAS5c,GAAK,QAC3B,aAAa;AAEb,UAAMwd,IAAgBlY,EAAQ,SAAQ,gBAAgBqL,CAAE;AACxD,IAAArL,EAAQ,UAAUkY,CAAa;AAC/B,UAAMlb,IAAMsa,EAAS9c,GAAK,WAAWsd,GAAK7a,EAAoB,IAAI,GAC5Dkb,IAAM,IAAI/b,IACf,IAAI,EAAC,MAAM0b,GAAK,KAAA9a,GAAK,SAASG,EAAe,kBAAkB,KAAA,CAAK;AACrE,WAAIma,EAAS5c,GAAK,IAAI,UAAQyd,EAAG;AAAA;AAAA,MAEhC,CAACld,GAAKC,MAAQ,KAAKoc,EAAS5c,GAAK,IAAIO,EAAI,WAAWA,EAAI,IAAI,EAC3D,KAAK,CAAAD,MAAI;AACT,QAAAC,EAAI,OAAOD,GACXE,EAAA;AAAA,MACD,CAAC,EACA,MAAM,CAACwC,MAAc;AACrB,QAAA4Z,EAAS3c,GAAM,UAAU,+BAA+BM,EAAI,IAAI,IAAIyC,CAAC,IAAI,EAAK,GAC9ExC,EAAA;AAAA,MACD,CAAC;AAAA,IAAA,GAEFid,EAAG,KAAK,CAACC,GAAM9a,MAAQ;AACtB,YAAMsP,IAAuB,SAAS,eAAevB,CAAE;AACvD,WAAKuM,GAAOvM,CAAE,IAAIuB,GAClB,KAAKyL,GAAWhN,CAAE,IAAI;AAEtB,YAAMiN,IAAWtb,EAAI,YAAY,GAAG,IAAG,GACjCub,IAAcvb,EAAI,MAAM,GAAGsb,CAAQ,GACnCE,IAAaD,EAAY,MAAM,GAAGD,CAAQ;AAChD,MAAA1L,EAAE,SAAS,OAAOtP,EAAKwa,CAAG,GAAG,IAAI,EAChC,QAAQ,gBAAgB,EAAE,EAC1B;AAAA,QACA;AAAA;AAAA,QACA,CAACW,GAAGjT,GAAY7M,MAAaA,EAAE,WAAW,KAAK,IAC7C6f,IAAaC,EAAE,MAAM,CAAC,IACtBA,EAAE,QAAQ,MAAM,EAAE,EAClB,QAAQjT,GAAIA,IAAK+S,CAAW;AAAA,MAAA,GAG3B3L,EAAE,OAAO,SAAS,eAAe,MAAGA,EAAE,SAASA,EAAE,OAAO;AAAA,QAC3D;AAAA,QACA,CAAC,GAAG8L,MAAc,aAAaA,CAAE;AAAA,MAAA,IAGlC9L,EAAE,SAAS,MAAK;AACf,QAAA5M,EAAQ,QAAQkY,CAAa,GAG7B,KAAK,IAAI,aAAa,OAAOH,GAAI,EAAI,GACrC,KAAK,IAAI,aAAa,OAAOA,IAAI,UAAUxb,CAAC,GAC5C,KAAK,IAAI,aAAa,OAAOwb,IAAI,MAAM/I,EAAI,CAAC,GAC5C,KAAK,IAAI,aAAa,OAAO+I,IAAI,MAAM/I,EAAI,CAAC,GAC5C,KAAK,IAAI,aAAa,OAAO+I,IAAI,YAAY7K,CAAE,GAC/C,KAAK,IAAI,aAAa,OAAO6K,IAAI,YAAY5K,CAAE,GAC/C,KAAK,IAAI,aAAa,OAAO4K,IAAI,WAAW/c,CAAC,GAC7C,KAAK,IAAI,aAAa,OAAO+c,IAAI,UAAU/I,EAAI,KAAK,GACpD,KAAK,IAAI,aAAa,OAAO+I,IAAI,WAAW/I,EAAI,MAAM,GACtD,KAAK,IAAI,aAAa,OAAO+I,IAAI,YAAYpf,CAAC;AAG9C,cAAMggB,IAAM/L,EAAE;AACd,aAAKjR,GAAQ,eAAgCgd,EAAI,SAAS,IAAI,GAGxDA,EAAK,YAAY,CAAClc,MAAuB6a,EAASsB,GAAanc,EAAE,QAAQ,OAAO,IAAIA,CAAC,CAAC;AAAA,MAC7F;AAAA,IACD,CAAC,GACM;AAAA,EACR;AAAA,EACA4b,KAAuC,CAAA;AAAA;AAAA,EAEvC,eAAehN,GAAqB;AAAC,WAAO,KAAKgN,GAAWhN,CAAE;AAAA,EAAE;AAAA,EAChE4M,GAAMlgB,GAAqB;AAC1B,UAAMwE,IAAI,EAAC,GAAGxE,EAAA,GACRiK,IAAKsV,EAAS5c,GAAK;AACzB,WAAO,IAAI;AAAA,MACVuF,EAAW1D,GAAG,KAAK,CAAC,IAAGyF;AAAA,MACvB/B,EAAW1D,GAAG,KAAK,CAAC,IAAGyF;AAAA,MACvB/B,EAAW1D,GAAG,SAASkE,EAAO,MAAM,IAAGuB;AAAA,MACvC/B,EAAW1D,GAAG,UAAUkE,EAAO,MAAM,IAAGuB;AAAA,IAAA;AAAA,EAE1C;AAAA,EAEA,OAAO4W,GAAad,GAAa1N,GAAuByO,GAA0C;AACjG,UAAMC,IAAO,KAAKC,GAAajB,CAAG;AAClC,QAAIgB,GAAM;AACT,MAAA1O,EAAI,MAAM0O,GACND,MAAQzO,EAAI,SAAS,MAAKyO,EAAOzO,CAAG;AACxC;AAAA,IACD;AAEA,UAAM4O,IAAO,KAAKC,GAAUnB,CAAG;AAC/B,QAAIkB,GAAM;AAAC,MAAAA,EAAK,KAAK5O,CAAG;AAAG;AAAA,IAAM;AACjC,SAAK6O,GAAUnB,CAAG,IAAI,CAAC1N,CAAG;AAE1B,UAAM,CAAC8O,IAAS,IAAIC,IAAI,EAAE,IAAIrB,EAAI,MAAM,GAAG,GACrCsB,IAAO9B,EAAS9c,GAAK,WAAW0e,GAAUjc,EAAoB,MAAM,GACpEoc,IAAO,IAAIjd,EAAA,EAChB,IAAI,EAAC,MAAM0b,GAAK,KAAKsB,GAAM,SAASjc,EAAe,kBAAkB,QAAQ;AAG9E,IAAIma,EAAS5c,GAAK,iBAAiBod,GAAKsB,GAAMC,GAAK/B,EAAS3c,EAAK,KAE7D2c,EAAS5c,GAAK,IAAI,UAAU0e,EAAK,SAAS,MAAM,KAAGC,EAAI,IAAI,CAACpe,GAAKC,MAAQ;AAC5E,UAAID,EAAI,cAAc,OAAO;AAAC,QAAAC,EAAA;AAAQ;AAAA,MAAM;AAG5C,MAAKoc,EAAS5c,GAAK,MAAMO,EAAI,IAAI,EAChC,KAAK,CAAAD,MAAI;AACT,QAAAC,EAAI,OAAOD,GACPA,aAAa,qBAAkBC,EAAI,OAAOkC,EAAe,KAAK,QAClEjC,EAAA;AAAA,MACD,CAAC,EACA,MAAM,CAACwC,MAAc;AACrB,QAAA4Z,EAAS3c,GAAM,UAAU,+BAA+BM,EAAI,IAAI,IAAIyC,CAAC,IAAI,EAAK,GAC9ExC,EAAA;AAAA,MACD,CAAC;AAAA,IACF,CAAC,GACDme,EAAI,KAAK,CAACjB,GAAM9a,MAAQ;AACvB,iBAAW,CAACgc,GAAI,EAAC,MAAM,EAAC,KAAAxB,EAAAA,EAAG,CAAE,KAAK,OAAO,QAAQxa,CAAI,GAAG;AAEvD,cAAMic,IAAK,KAAKR,GAAaO,CAAE,IAAIxB;AAAAA,SAElCA,EAAI,WAAW,OAAO,KAAKA,EAAI,WAAW,OAAO,IAChD,KAAIqB,IAAM,MAAKA,IAAK,KAEhBK,IAAK,KAAKP,GAAUK,CAAE;AAC5B,YAAIE,EAAI,YAAW/c,KAAK+c;AACvB,UAAA/c,EAAE,MAAM8c,GACJV,MAAQpc,EAAE,SAAS,MAAKoc,EAAOpc,CAAC;AAGrC,eAAO,KAAKwc,GAAUK,CAAE;AAAA,MAEzB;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EACA,OAAOL,KAAmD,CAAA;AAAA,EAC1D,OAAOF,KAA4C,CAAA;AAAA,EAGnD,YAAY;AACX,eAAW,CAAC1N,GAAIuB,CAAC,KAAK,OAAO,QAAQ,KAAKgL,EAAM,GAAG;AAClD,YAAMG,IAAK,kBAAiB1M,GACtB/L,IAAI,OAAO,KAAK,IAAI,OAAOyY,IAAI,IAAI,CAAC,GACpCxY,IAAI,OAAO,KAAK,IAAI,OAAOwY,IAAI,IAAI,CAAC,GACpCvY,IAAI,OAAO,KAAK,IAAI,OAAOuY,IAAI,QAAQ,CAAC,GACxCtY,IAAI,OAAO,KAAK,IAAI,OAAOsY,IAAI,SAAS,CAAC;AAC/C,MAAAnL,EAAE,MAAM,OAAO,GAAG0K,EAAS5c,GAAK,cAAa4E,IAAGgY,EAAS5c,GAAK,QAAQ,MACtEkS,EAAE,MAAM,MAAO,GAAG0K,EAAS5c,GAAK,aAAa6E,IAAG+X,EAAS5c,GAAK,QAAQ,MACtEkS,EAAE,QAAQ,OAAOpN,IAAG8X,EAAS5c,GAAK,QAAQ,GAC1CkS,EAAE,SAAS,OAAOnN,IAAG6X,EAAS5c,GAAK,QAAQ;AAAA,IAC5C;AAAA,EACD;AAAA;AAAA,EAGA8c,GAAWzf,GAAY;AACtB,UAAM,EAAC,IAAAsT,GAAI,UAAAoO,EAAA,IAAY1hB;AACvB,QAAI,CAAEsT,EAAI,OAAM;AAChB,UAAMuB,IAA8B,SAAS,eAAevB,CAAE;AAC9D,QAAI,CAAEuB,EAAG,OAAM,MAAMvB,CAAE;AACvB,UAAM0M,IAAK,kBAAiB1M;AAC5B,QAAI,CAAE,KAAK,IAAI,OAAO,OAAO0M,CAAE,EAAE,EAAG,OAAM,SAAS1M,CAAE;AACrD,QAAI,CAAEoO,EAAU,OAAM;AAGtB,UAAMd,IAAM/L,EAAE;AACd,QAAI,CAAE,OAAO,OAAO+L,GAAKc,CAAQ,EAAG,OAAM,SAASpO,CAAE,WAAWoO,CAAQ;AAGxE,UAAM9gB,IAAUggB,EAAKc,CAAQ;AAE7B,gBAAK,IAAI;AAAA,MACR;AAAA,MACA1B,IAAI,MAAK0B;AAAA;AAAA,MAETnhB,EAAeP,GAAM,YAAY,EAAK,IAAGY,MAAKA;AAAA,IAAA,GAGxC;AAAA,EACR;AAAA;AAAA,EAGA8e,GAAW1f,GAAY;AACtB,UAAM,EAAC,IAAAsT,GAAI,UAAAoO,GAAU,MAAA3I,EAAA,IAAQ/Y;AAC7B,QAAI,CAAEsT,EAAI,OAAM;AAChB,UAAMuB,IAA8B,SAAS,eAAevB,CAAE;AAC9D,QAAI,CAAEuB,EAAG,OAAM,MAAMvB,CAAE;AACvB,UAAM0M,IAAK,kBAAiB1M;AAC5B,QAAI,CAAE,KAAK,IAAI,OAAO,OAAO0M,CAAE,EAAE,EAAG,OAAM,SAAS1M,CAAE;AACrD,QAAI,CAAEoO,EAAU,OAAM;AACtB,QAAI,CAAE3I,EAAM,OAAM;AAGlB,SAAK,IAAI,aAAa,OAAOiH,IAAI,MAAK0B,GAAU3I,CAAI;AAIpD,UAAM6H,IAAW/L,EAAE;AAEnB,WAAA+L,EAAIc,CAAQ,IAAI3I,GAET;AAAA,EACR;AAAA;AAAA,EAGA4I,KAAQ;AAAA,EACRhC,GAAO3f,GAAY;AAClB,UAAM,EAAC,IAAAsT,MAAMtT;AACb,QAAI,CAAEsT,EAAI,OAAM;AAChB,UAAMuB,IAA8B,SAAS,eAAevB,CAAE;AAC9D,QAAI,CAAEuB,EAAG,OAAM,MAAMvB,CAAE;AACvB,UAAM0M,IAAK,kBAAiB1M;AAC5B,QAAI,CAAE,KAAK,IAAI,OAAO,SAAQ0M,CAAE,EAAG,OAAM,SAAS1M,CAAE;AAEpD,UAAMxJ,IAAI+K,EAAE;AAKZ,QAJItU,EAAeP,GAAM,SAAS,EAAK,MAAK,SAAS,GAAG,EAAE,KAAK2hB,EAAK,KAC3D,WAAW3hB,IAAM8J,EAAE,SAAS,GAAG5B,EAAWlI,GAAM,SAAS,CAAC,CAAC,KAC3DA,EAAK,SAAM8J,EAAE,SAAS,IAAI,EAAE,KAAK6X,EAAK,KAE3C,WAAW3hB,GAAM;AACpB,YAAMwE,IAAIsF,EAAE,UAAU,OAAO9J,EAAK,KAAK;AACvC,WAAK,IAAI,aAAa,OAAOggB,IAAI,UAAUxb,CAAC;AAAA,IAC7C;AACA,UAAMyS,IAAM,KAAKiJ,GAAMlgB,CAAI;AAO3B,SANI,OAAOA,KAAQ,OAAOA,OACzB8J,EAAE,OAAO,GAAGyV,EAAS5c,GAAK,cAAasU,EAAI,IAAGsI,EAAS5c,GAAK,QAAQ,MACpEmH,EAAE,MAAO,GAAGyV,EAAS5c,GAAK,aAAasU,EAAI,IAAGsI,EAAS5c,GAAK,QAAQ,MACpE,KAAK,IAAI,aAAa,OAAOqd,IAAI,MAAM/I,EAAI,CAAC,GAC5C,KAAK,IAAI,aAAa,OAAO+I,IAAI,MAAM/I,EAAI,CAAC,IAEzC,aAAajX,KAAQ,aAAaA,KAAQ,YAAYA,GAAM;AAC/D,YAAMmV,IAAKjN,EAAWlI,GAAM,WAAW,CAAC,GAClCoV,IAAKlN,EAAWlI,GAAM,WAAW,CAAC,GAClCiD,IAAIiF,EAAWlI,GAAM,UAAU,CAAC;AACtC,MAAA8J,EAAE,YAAY,SAASqL,CAAE,KAAKC,CAAE,YAAYnS,CAAC,QAC7C,KAAK,IAAI,aAAa,OAAO+c,IAAI,YAAY7K,CAAE,GAC/C,KAAK,IAAI,aAAa,OAAO6K,IAAI,YAAY5K,CAAE,GAC/C,KAAK,IAAI,aAAa,OAAO4K,IAAI,WAAW/c,CAAC;AAAA,IAC9C;AASA,QARI,WAAWjD,MACd6U,EAAE,QAAQ,OAAOoC,EAAI,QAAOsI,EAAS5c,GAAK,QAAQ,GAClD,KAAK,IAAI,aAAa,OAAOqd,IAAI,UAAU/I,EAAI,KAAK,IAEjD,YAAYjX,MACf6U,EAAE,SAAS,OAAOoC,EAAI,SAAQsI,EAAS5c,GAAK,QAAQ,GACpD,KAAK,IAAI,aAAa,OAAOqd,IAAI,WAAW/I,EAAI,MAAM,IAEnD,aAAajX,GAAM;AACtB,YAAMY,IAAIL,EAAeP,GAAM,WAAW,EAAI;AAC9C,MAAA8J,EAAE,UAAUlJ,IAAG,WAAU,QACzB,KAAK,IAAI,aAAa,OAAOof,IAAI,YAAYpf,CAAC;AAAA,IAC/C;AAGA,QADI,aAAaZ,MAAM8J,EAAE,kBAAkB9J,EAAK,UAC5C,cAAcA,GAAM;AACvB,YAAM4hB,IAAI,KAAKtB,GAAWhN,CAAE,IAAI/S,EAAeP,GAAM,YAAY,EAAI,GAE/DK,IAAIwU,EAAE,gBAAiB;AAC7B,iBAAWlP,KAAK;AAAA,QACf,GAAG,MAAM,KAAKtF,EAAE,qBAAqB,OAAO,CAAC;AAAA,QAC7C,GAAG,MAAM,KAAKA,EAAE,qBAAqB,QAAQ,CAAC;AAAA,MAAA,KAC1C,WAAWuhB;AAAA,IACjB;AAEA,WAAO;AAAA,EACR;AAAA;AAAA,EAGAhC,GAAW5f,GAAY;AACtB,UAAM,EAAC,IAAAsT,GAAI,OAAAsJ,GAAO,GAAArV,GAAG,GAAAC,GAAG,SAAAqa,GAAS,SAAAC,GAAS,QAAAC,GAAQ,OAAAjP,GAAO,QAAAC,EAAA,IAAU/S;AACnE,QAAI,CAAEsT,EAAI,OAAM;AAChB,UAAMuB,IAA8B,SAAS,eAAevB,CAAE;AAC9D,QAAI,CAAEuB,EAAG,OAAM,MAAMvB,CAAE;AACvB,UAAM0M,IAAK,kBAAiB1M;AAC5B,QAAI,CAAE,KAAK,IAAI,OAAO,OAAO0M,CAAE,IAAI,CAAC,EAAG,OAAM,SAAS1M,CAAE;AAExD,UAAM0O,IAAqC,CAAA;AAC3C,IAAIpF,MAAOoF,EAAK,IAAI,OAAOnN,EAAE,MAAM,OAAO,KACtCtN,KAAKC,KAAKqa,KAAWC,KAAWC,OACnCC,EAAK,IAAI,OAAO,KAAK,IAAI,OAAO,OAAOhC,CAAE,IAAI,CAAC,GAC9CgC,EAAK,IAAI,OAAO,KAAK,IAAI,OAAO,OAAOhC,CAAE,IAAI,CAAC,GAC9CgC,EAAK,KAAK,OAAO,KAAK,IAAI,OAAO,OAAOhC,CAAE,UAAU,CAAC,GACrDgC,EAAK,KAAK,OAAO,KAAK,IAAI,OAAO,OAAOhC,CAAE,UAAU,CAAC,GACrDgC,EAAK,IAAI,OAAO,KAAK,IAAI,OAAO,OAAOhC,CAAE,SAAS,CAAC,IAEhDlN,MAAOkP,EAAK,IAAI,OAAO,KAAK,IAAI,OAAO,OAAOhC,CAAE,QAAQ,CAAC,IACzDjN,MAAQiP,EAAK,IAAI,OAAO,KAAK,IAAI,OAAO,OAAOhC,CAAE,SAAS,CAAC;AAC/D,UAAMiC,IAAQzM,EAAS,YAAYxV,GAAMgiB,CAAI;AAG7C,QAAIE,IAAO,MAAK;AAAA,IAAc;AAC9B,IAAItF,MACK1U,EAAW+Z,GAAO,SAAS,CAAC,GACpCC,IAAO,MAAK;AACX,MAAArN,EAAE,MAAM,UAAU,OAAOmN,EAAK,CAAC,GAC/B,KAAK,IAAI,aAAa,OAAO,SAASA,EAAK,CAAC;AAAA,IAC7C;AAED,QAAIG,IAAU,MAAK;AAAA,IAAc;AACjC,UAAMlL,IAAM,KAAKiJ,GAAM+B,CAAK;AAC5B,KAAI1a,KAAKC,KAAKqa,KAAWC,KAAWC,OAC3B9K,EAAI,GACJA,EAAI,GACH/O,EAAW+Z,GAAO,WAAW,CAAC,GAC9B/Z,EAAW+Z,GAAO,WAAW,CAAC,GAC/B/Z,EAAW+Z,GAAO,UAAU,CAAC,GACrCE,IAAU,MAAK;AACd,MAAAtN,EAAE,MAAM,OAAO;AAAA,MAEd0K,EAAS5c,GAAK,cAAaqf,EAAK,IAAIzC,EAAS5c,GAAK,QACnD,OACAkS,EAAE,MAAM,MAAO;AAAA,MAEd0K,EAAS5c,GAAK,aAAaqf,EAAK,IAAIzC,EAAS5c,GAAK,QACnD,OACAkS,EAAE,MAAM,YAAY,SAASmN,EAAK,EAAE,KAAKA,EAAK,EAAE,YAAYA,EAAK,CAAC,QAClE,KAAK,IAAI,aAAa,OAAOhC,IAAI,MAAMgC,EAAK,CAAC,GAC7C,KAAK,IAAI,aAAa,OAAOhC,IAAI,MAAMgC,EAAK,CAAC,GAC7C,KAAK,IAAI,aAAa,OAAOhC,IAAI,YAAYgC,EAAK,EAAE,GACpD,KAAK,IAAI,aAAa,OAAOhC,IAAI,YAAYgC,EAAK,EAAE,GACpD,KAAK,IAAI,aAAa,OAAOhC,IAAI,WAAWgC,EAAK,CAAC;AAAA,IACnD;AAED,QAAII,IAAO,MAAK;AAAA,IAAc;AAC9B,IAAItP,MACKmE,EAAI,OACZmL,IAAO,MAAK;AAEX,MAAAvN,EAAE,QAAQ,GAAGmN,EAAK,IAAIzC,EAAS5c,GAAK,QAAQ,OAC5C,KAAK,IAAI,aAAa,OAAOqd,IAAI,UAAUgC,EAAK,CAAC;AAAA,IAClD;AAED,QAAIK,IAAO,MAAK;AAAA,IAAc;AAC9B,WAAItP,MACKkE,EAAI,QACZoL,IAAO,MAAK;AAEX,MAAAxN,EAAE,SAAS,GAAGmN,EAAK,IAAIzC,EAAS5c,GAAK,QAAQ,OAC7C,KAAK,IAAI,aAAa,OAAOqd,IAAI,WAAWgC,EAAK,CAAC;AAAA,IACnD,IAGD,KAAK,QAAQ,MAAM,cAAc,IACjCxM,EAAS,MAAM;AAAA,EAAQlC,CAAE,IAAItT,GAAMgiB,GAAMxM,EAAS,YAAYxV,GAAMgiB,CAAI,GAAG,MAAK;AAC/E,MAAAE,EAAA,GAAQC,EAAA,GAAWC,EAAA,GAAQC,EAAA;AAAA,IAC5B,GAAG,MAAK;AAAC,WAAK,QAAQ,MAAM,cAAc;AAAA,IAAI,GAAG,MAAK;AAAA,IAAc,CAAC,GAE9D;AAAA,EACR;AAED;AC9ZO,MAAMC,GAAqB;AAAA;AAAA,EAKjC,YAA6BC,GAA8BnI,GAA8Bla,GAAgB;AAA5E,SAAA,OAAAqiB,GAA8B,KAAA,OAAAnI,GAA8B,KAAA,MAAAla,GACxFka,EAAK,SAAW,CAAApO,MAAI,KAAKwW,GAAQxW,CAAC,GAClCoO,EAAK,QAAU,CAAApO,MAAI,KAAKyW,GAAOzW,CAAC,GAChCoO,EAAK,YAAa,CAAApO,MAAI,KAAK0W,GAAW1W,CAAC,GAIvC9L,EAAI,OAAO,qBAAqB,MAAK;AAGpC,WAAKyiB,GAAS;AAAA,MACd,KAAKA,GAAS,KACb,WAAW,+BAAiC,EAAE;AAE/C,YAAM3W,IAAI,CAAC,GAAG,KAAK4W,IAAO,KAAKD,EAAQ;AACvC,aAAO,KAAK,UAAU3W,CAAC;AAAA,IACxB,CAAC,GACD,KAAK,QAAQ,EAAE;AAAA,EAChB;AAAA,EAtBA2W,KAAwB,EAAC,MAAM,GAAA;AAAA;AAAA,EAC/BC,KAAwB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA4BxB,QAAQ7J,GAAc;AACrB,SAAK4J,GAAS,OAAO5J,GACrB,KAAK,IAAI;AAAA,MAAa;AAAA,MAAQ;AAAA;AAAA,MAC7B,OAAO,KAAK,IAAI,OAAO,mBAAmB,CAAC;AAAA;AAAA,IAAA;AAAA,EAE7C;AAAA;AAAA;AAAA,EAIAyJ,GAAQxiB,GAAY;AAEnB,WADA,KAAK2iB,KAAW,EAAC,GAAG3iB,GAAM,MAAM,KAAK2iB,GAAS,KAAA,GACxC3iB,EAAK,QAOXA,EAAK,SAAS,IACdA,EAAK,UAAU,IACfA,EAAK,SAAS,kBACdA,EAAK,OAAO,GACL,KAAK,KAAK,GAAGA,CAAI,MAVvB,KAAK,IAAI;AAAA,MAAa;AAAA,MAAQ;AAAA;AAAA,MAC7B,OAAO,KAAK,IAAI,OAAO,mBAAmB,CAAC;AAAA;AAAA,IAAA,GAErC;AAAA,EAQT;AAAA;AAAA,EAGAyiB,GAAOziB,GAAY;AAAC,WAAO,KAAKwiB,GAAQ,EAAC,GAAGxiB,GAAM,MAAM,OAAM;AAAA,EAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO/D0iB,GAAW1iB,GAAY;AACtB,gBAAK4iB,KAAQ,CAAA,GACb5iB,EAAK,SAAS,IACd,KAAK2iB,KAAW,EAAC,MAAM3iB,EAAK,KAAA,GAC5B,KAAK,IAAI,aAAa,QAAQ,iBAAiB,KAAK,UAAU,CAAC,KAAK2iB,EAAQ,CAAC,CAAC,GAEvE;AAAA,EACR;AAAA;AAAA,EAGA,YAAY;AAKX,IAJA,KAAKA,GAAS;AAAA,IACd,KAAKA,GAAS,KACb,WAAW,+BAAiC,EAAE,GAEzC,KAAKA,GAAS,SAEhB,KAAKC,GAAM,KAAK,KAAKD,EAAQ,IAAI,KAAK,KAAK,IAAI,YAAS,KAAKC,KAAQ,KAAKA,GAAM,MAAM,CAAC,KAAK,KAAK,IAAI,OAAO,IAChH,KAAKD,KAAW,EAAC,MAAM,GAAA;AAAA,EACxB;AAAA;AAAA;AAAA,EAIA,WAAW;AACV,SAAKC,KAAsB,KAAK,MAAM,OAAO,KAAK,IAAI,OAAO,oBAAoB,CAAC,CAAC,GACnF,KAAKD,KAAW,EAAC,MAAM,GAAA;AAAA,EACxB;AAED;AChFA,SAASE,EAAQ7W,GAAkB;AAElC,SAAO,mBAAmB,KAAK,UAAUA,CAAC,CAAC;AAC5C;AAGO,MAAMoT,EAA4B;AAAA;AAAA,EAaxC,YAA6Bvc,GAA8BuX,GAA8B5R,GAAuCtI,GAAiC4C,GAA8ByQ,GAAyCtT,GAAc8C,GAAkB+f,GAAqB;AAAhQ,SAAA,MAAAjgB,GAA8B,KAAA,OAAAuX,GAA8B,KAAA,UAAA5R,GAAuC,KAAA,MAAAtI,GAAiC,KAAA,OAAA4C,GAA8B,KAAA,SAAAyQ,GAAyC,KAAA,MAAAtT;AAEvO,UAAM8iB,IAAe,MAAK;AAGzB,UAFA9iB,EAAI,UAAA,GACJ,KAAK,gBAAA,GACD,KAAK+iB,GAAY,YAAW5P,KAAM,KAAK6P;AAC1C,aAAKC,GAAQ9P,CAAE,EAAG,KAAK,kBAAA;AAAA,UAEnB,YAAWA,KAAM,KAAK6P;AAC1B,aAAKC,GAAQ9P,CAAE,EAAG,KAAK,UAAA;AAGxB,WAAK+P,GAAQ,UAAA,GACb,KAAKvf,GAAQ,UAAA;AAAA,IACd;AACA,QAAI8E,EAAO;AACV,WAAKL,GAAK,IAAI,YAAY,qBAAqB0a,GAAc,EAAC,SAAS,IAAK;AAAA,SAExE;AACJ,UAAIK;AACJ,WAAK/a,GAAK,IAAI,YAAY,UAAU,MAAK;AACxC,QAAI+a,MACJA,IAAM,WAAW,MAAK;AAAC,UAAAA,IAAM,QAAWL,EAAA;AAAA,QAAc,GAAG,MAAM,KAAI,EAAE;AAAA,MACtE,GAAG,EAAC,SAAS,IAAK;AAAA,IACnB;AACA,IAAA9iB,EAAI,UAAA,GAEJ,KAAKka,KAAO,IAAImI,GAAI,KAAK,IAAI,MAAMlI,GAAMla,CAAG,GAC5C+Z,EAAS,KAAKpX,GAAKuX,GAAMla,GAAK,KAAKia,IAAM,CAAAV,MAAK,KAAKyJ,GAAQzJ,EAAG,OAAO,EAAG,SAASA,GAAIjR,CAAO,GAC5FJ,EAAS,KAAKtF,GAAMD,GAAK2F,GAASvI,GAAK8C,GAAQ7C,CAAG,GAClDqf,EAAS,KAAK1c,GAAK5C,GAAK6C,CAAI,GAC5BqV,EAAO,KAAKtV,CAAG,GAEf,KAAKsgB,KAAU,IAAI5D,EAASnF,GAAM5R,GAAStI,CAAG,GAC9CD,EAAI,YAAY,MAAM,MAAK,IAAImI,EAAA,GAC/BnI,EAAI,YAAY,MAAM,MAAK,IAAIga,EAAA,GAG/BG,EAAK,aAAc,CAAApO,MAAI,KAAKqX,GAAYrX,CAAC,GAEzCoO,EAAK,WAAY,CAAApO,MAAI,KAAKsX,GAAUtX,CAAC,GACrC,KAAKuX,KAAiB,KAAK,IAAI,QAC5B,CAACvjB,GAAMiF,GAAK6N,GAAOC,GAAQyQ,MAAgB,KAAKC,GAAczjB,GAAMiF,GAAK6N,GAAOC,GAAQyQ,CAAY,IACpG,CAACxjB,GAAMiF,GAAK6N,GAAOC,GAAQyQ,MAAgB,KAAKE,GAAc1jB,GAAMiF,GAAK6N,GAAOC,GAAQyQ,CAAY,GAGvGpJ,EAAK,UAAW,CAAApO,MAAI,KAAK2X,GAAS3X,CAAC,GACnCoO,EAAK,YAAa,CAAApO,MAAI,KAAK4X,GAAW5X,CAAC,GACvCoO,EAAK,eAAe,MAAK,IACzBA,EAAK,MAAQ,CAAApO,MAAI,KAAK6X,GAAK7X,CAAC,GAC5BoO,EAAK,QAAU,CAAApO,MAAI,KAAK8X,GAAO9X,CAAC,GAChCoO,EAAK,KAAQ,CAAApO,MAAIwJ,EAAS,GAAGxJ,CAAC,GAE9BoO,EAAK,QAAU,CAAApO,MAAI,KAAK+X,GAAO/X,CAAC,GAChCoO,EAAK,aAAcA,EAAK,cACxBA,EAAK,KAAQA,EAAK,IAElBA,EAAK,YAAa,CAAApO,MAAIwJ,EAAS,UAAUxJ,CAAC,GAC1CoO,EAAK,aAAc,CAAApO,MAAIwJ,EAAS,WAAWxJ,CAAC,GAC5CoO,EAAK,WAAY,CAAApO,MAAIwJ,EAAS,SAASxJ,CAAC,GACxCoO,EAAK,MAAQ,CAAApO,MAAI,KAAKgY,GAAKhY,CAAC,GAC5BoO,EAAK,WAAY,CAAApO,MAAIwJ,EAAS,SAASxJ,CAAC,GAExCoO,EAAK,aAAc,CAAApO,MAAI,KAAKiY,GAAYjY,CAAC,GACzCoO,EAAK,eAAe,CAAApO,MAAI,KAAKkY,GAAclY,CAAC,GAC5CoO,EAAK,gBAAgB,CAAApO,MAAI,KAAKmY,GAAenY,CAAC,GAK9CoO,EAAK,KAAQ,CAAApO,MAAI,KAAKoY,GAAIpY,CAAC,GAG3BoO,EAAK,aAAc,CAAApO,MAAI,KAAKqY,GAAYrY,CAAC,GACzCoO,EAAK,UAAW,CAAApO,MAAI,KAAKsY,GAAStY,CAAC,GACnCoO,EAAK,UAAW,CAAApO,MAAI,KAAKuY,IAASvY,CAAC,GACnCoO,EAAK,KAAQ,CAAApO,MAAI,KAAKwY,IAAIxY,CAAC,GAC3BoO,EAAK,QAAU,CAAApO,MAAI,KAAKyY,IAAOzY,CAAC,GAChCoO,EAAK,OAAS,CAAApO,MAAI,KAAK0Y,IAAM1Y,CAAC,GAC9BoO,EAAK,IAAO,CAAApO,MAAI,KAAK2Y,IAAG3Y,CAAC,GAMzBoO,EAAK,QAAU,CAAApO,MAAI,KAAK4Y,IAAO5Y,CAAC,GAChCoO,EAAK,OAAS,CAAApO,MAAI,KAAK6Y,IAAM7Y,CAAC,GAC9BoO,EAAK,MAAQ,CAAApO,MAAI,KAAK8Y,IAAK9Y,CAAC,GAG5BoO,EAAK,WAAY,CAAApO,MAAIjK,EAAW,SAASiK,CAAC,GAG1CoO,EAAK,KAAQ,CAAApO,MAAIjK,EAAW,GAAGiK,CAAC,GAGhCoO,EAAK,WAAY,CAAApO,MAAI,KAAK+Y,IAAU/Y,CAAC,GAGrCoO,EAAK,eAAe,CAAApO,MAAI,KAAKgZ,IAAchZ,CAAC,GAG5CoO,EAAK,SAAW,CAAApO,MAAI,KAAKiZ,IAAQjZ,CAAC,GAG9BnJ,EAAI,oBAAiB,KAAK,YAAY,CAAC7C,MAAc;AACxD,aAAOA,EAAK,SACZA,EAAK,KAAK,SACVA,EAAK,MAAK,aACV,KAAKklB,GAAQ,SAAQrC,EAAuB7iB,CAAI,CAAC;AAAA,IAClD,IACI6C,EAAI,oBAAiB,KAAK,YAAY,CAAC7C,MAAc;AACxD,aAAOA,EAAK,SACZA,EAAK,KAAK,SACVA,EAAK,MAAK,aACV,KAAKklB,GAAQ,SAAQrC,EAAuB7iB,CAAI,CAAC;AAAA,IAClD,IAEA,KAAKmlB,KAAYC,GAAW,OAAOviB,EAAI,KAAK,KAAK,QAAQ,CAAC;AAC1D,UAAMwiB,IAAM,IAAI3R,EAAA;AAChB,IAAA2R,EACC,UAAU,KAAKF,EAAS,EACxB,UAAU,GAAG,KAAKA,EAAS,EAC3B,SAAS,GAAG,GAAGzc,EAAO,QAAQA,EAAO,MAAM,EAC3C,QAAA,GACD,KAAK4c,GAAM,SAASD,EAAI,MAAA,CAAO,GAC/B,KAAKE,GAAM,SAASF,CAAG,GACvB,KAAKE,GAAM,UAAU,IACrB,KAAKD,GAAM,OAAO,UAClB,KAAKC,GAAM,OAAO,UAElB,KAAKC,KAAShd,EAAQ,OACtB,KAAKgd,GAAO,SAAS,KAAKD,EAAK,GAC/B,KAAKC,GAAO,SAAS,KAAKF,EAAK,GAC/B,KAAKE,GAAO,SAAS,KAAKC,EAAY,GACtC,KAAKD,GAAO,SAAS,KAAKE,EAAY,GACtC,KAAKF,GAAO,OAAO;AAWnB,UAAMG,IAAiB,CAACC,GAAe1lB,MAAY;AAClD,WAAK2lB,GAAyB,OAAO3lB,CAAG,CAAC;AAAA,IAC1C;AACA,IAAAylB,EAAe,IAAIzlB,EAAI,OAAO,4BAA4B,CAAC,CAAC,GAC5DA,EAAI,UAAU,4BAA4BylB,CAAc;AAGxD,UAAMG,IAAa,CAACF,GAAe1lB,MAAY;AAAC,MAAAiY,EAAO,aAAajY;AAAAA,IAAG;AACvE,IAAA4lB,EAAW,IAAI5lB,EAAI,OAAO,4BAA4BiY,EAAO,UAAU,CAAC,GACxEjY,EAAI,UAAU,4BAA4B4lB,CAAU,GAEpD5lB,EAAI,OAAO,2BAA2B,MAAK,KAAK,mBAAmB,YAAY,EAAE,GACjFA,EAAI,OAAO,iCAAiC,MAAK,KAAK,mBAAmB,iBAAiB,EAAE,GACxFwI,EAAO,UACV5H,GAAW,KAAK0H,GAASvI,GAAKsT,GAAQuP,GAAQjgB,GAAK,KAAKqgB,EAAO,GAC/D,KAAK,kBAAkB,MAAKpiB,GAAW,gBAAA,GACvCb,EAAI,QAAQ,CAAC6F,GAAMkG,MAAK;AACvB,MAAM,KAAK+Z,GAAajgB,CAAI,IAAIA,GAAMkG,CAAC,KAEvC,OAAO,KAAK+Z,GAAajgB,CAAI;AAAA,IAC9B,CAAC;AAAA,EAEH;AAAA,EArLS0f;AAAA,EACNF,KAAQ,IAAI9S,EAAA;AAAA,EACZ+S,KAAQ,IAAI/S,EAAA;AAAA,EAEN2Q;AAAA,EACAgC;AAAA,EAEAhL;AAAA,EAEA9R,KAAQ,IAAIC,GAAA;AAAA,EA6Kb,kBAAkB;AAAA,EAAc;AAAA,EAG/Byd,KAE8C;AAAA,IACtD,QAAU,CAAAzgB,MAAoC;AAAA,IAC9C,UAAW,CAAAA,MAAoC;AAAA,IAC/C,YAAa,CAAAA,MAAoC;AAAA,IACjD,cAAc,CAAAA,MAAI;AAEjB,iBAAW8N,KAAM,KAAK6P,IAAW;AAChC,cAAM+C,IAAM,KAAK9C,GAAQ9P,CAAE,EAAG;AAC9B,QAAA4S,EAAI,uBAAuB,CAAA7b,MAAMA,EAAI,KAAA,CAAM,GAC3C6b,EAAI,eAAe,CAAA7b,MAAMA,EAAI,KAAA,CAAM;AAAA,MACpC;AAEA,kBAAK8b,GAAY,KAAKC,EAAU,GAAU;AAAA,IAI3C;AAAA,IACA,eAAe,CAAC5gB,GAAG0G,MAAyC;AAAA;AAAA,IAE5D,aAAc,CAAC1G,GAAG0G,OAAM,KAAKia,GAAYja,EAAE,IAAI,GAAU;AAAA,EAAK;AAAA,EAE/Dma,KAAW;AAAA,EACXnD,KAAa;AAAA,EACbiD,GAAYrW,GAAc;AACzB,KAAC,KAAKuW,KAAQ,IAAI,KAAKnD,KAAW,EAAE,IAAIpT,EAAK,MAAM,GAAG;AACtD,UAAMwW,IAAQ,KAAKlD,GAAQ,KAAKiD,EAAO;AACvC,IAAMC,MAGF,KAAKpD,KAAYoD,EAAM,KAAK,uBAAA,IAC3BA,EAAM,KAAK,eAAA;AAAA,EACjB;AAAA,EAEA,iBAAiB,CAAC9S,MAAc,KAAK6P,GAAQ,eAAe7P,CAAE;AAAA,EAE9D+S,KAAmC;AAAA,EACnC,MAAMC,GAAkBC,IAAW,GAAK;AACvC,IAAI,KAAKF,OACR,KAAKb,GAAO,YAAY,KAAKa,EAAS,GACtC,KAAKA,GAAU,QAAA,GACf,KAAKA,KAAY,SAEdC,UAAcd,GAAO;AAAA,OACvB,KAAKa,KAAY,IAAI3S,KACrB,UAAU6S,CAAQ,EAClB,UAAU,GAAGA,CAAQ,EACrB,SAAS,GAAG,GAAG7d,EAAO,QAAQA,EAAO,MAAM,EAC3C,QAAA;AAAA,IAAQ;AAAA,EAEX;AAAA,EAEA9E;AAAA,EACA,UAAUC,GAAiB;AAC1B,SAAKD,KAAUC,GACf,KAAKsf,GAAQ,UAAUtf,CAAM,GAC7B9B,EAAW,UAAU8B,CAAM,GAC3B2R,EAAS,KAAK3R,GAAQ,KAAK,OAAO;AAAA,EACnC;AAAA,EAEA,UAAU;AACT,eAAW2iB,KAAK,OAAO,OAAO,KAAKtD,EAAO,KAAK,QAAA;AAE/C,SAAK7a,GAAK,MAAA,GACVD,EAAS,QAAA,GACTkT,GAAY,QAAA,GACZ/I,EAAS,QAAA,GACT0H,EAAS,QAAA,GAET,KAAKkJ,GAAQ,QAAA,GAEb3N,EAAS,QAAA,GACT4J,EAASqH,KAAc;AAAA,EACxB;AAAA;AAAA,EAIAZ,GAAyB/I,GAAiB;AACzC,eAAW1J,KAAM,KAAK6P,IAAW;AAChC,YAAM,EAAC,MAAAnjB,GAAM,MAAAC,EAAA,IAAQ,KAAKmjB,GAAQ9P,CAAE;AACpC,MAAOtT,aAAgBma,MACvBna,EAAK,aAAagd,CAAO,GACd/c,EAAM,aAAa+c,CAAO;AAAA,IACtC;AAAA,EACD;AAAA,EAGAoI,KAAU,CAACwB,GAAaC,IAAK,KAAK,0BAA0BC,IAAU,OAAQD,EAAG,MAAM,aAAYD,IAAK,GAAG;AAAA,EAC3G,QAAQ,MAAK;AAAA,EAAc;AAAA,EAC3B,IAAI,YAAY;AAAC,WAAO,KAAK,mBAAmB,aAAa;AAAA,EAAM;AAAA,EACnE,YAAY,CAACG,MAAe;AAAA,EAAc;AAAA,EAC1C,YAAY,CAACA,MAAe;AAAA,EAAc;AAAA,EAC1C,aAAa;AACZ,IAAM,KAAK,sBAEX,KAAK,aAAa,MAAK,KAAK3B,GAAQ,WAAW,GAC/C,KAAK,WAAA;AAAA,EACN;AAAA,EAEA,cAAuB;AACtB,WAAM,KAAK,oBAEJ,KAAKjC,GACX,IAAI,CAAA7P,MAAK,KAAK8P,GAAQ9P,CAAE,EAAG,IAAI,EAC/B,KAAK,CAAAyB,MAAIA,aAAaoF,KAAYpF,EAAE,OAAO,IAJP;AAAA,EAKtC;AAAA;AAAA;AAAA,EAKAyO,GAAUtjB,GAAY;AACrB,UAAM8mB,IAAKC,GAAW,KAAK,KAAK,IAAI,GAAG,GACjCpiB,IAAM3E,EAAK,KACfA,EAAK,GAAG,WAAWgnB,EAAiB,IACnChnB,EAAK,KACL,GAAGinB,KAAcjnB,EAAK,KAAK8mB,CAAE,SAC9B,GAAGG,EAAW,WAAWH,CAAE,QACvB7hB,IAAM,KAAK,IAAI,WAAWN,CAAG,GAC7BmO,IAAQ5K,EAAWlI,GAAM,SAAS0I,EAAO,MAAM,GAC/CqK,IAAQ7K,EAAWlI,GAAM,UAAU0I,EAAO,MAAM;AACtD,WAAO,KAAK6a,GAAevjB,GAAMiF,GAAK6N,GAAOC,GAAQ,eAAe+T,CAAE,EAAE;AAAA,EACzE;AAAA,EACAvD,KAA2G,MAAK;AAAA,EAChHE,GAAc,EAAC,OAAAyD,EAAA,GAAcjiB,GAAa6N,GAAeC,GAAgByQ,GAA+B;AAGvG,QAFA,KAAKL,GAAQ,aAAA,GACblb,EAAQ,UAAUub,CAAY,GAC1B,CAAE0D;AACL,kBAAK,IAAI,YAAYjiB,GAAK6N,GAAOC,GAAQ,MAAK;AAC7C,aAAKoQ,GAAQ,gBAAA,GACblb,EAAQ,QAAQub,CAAY;AAAA,MAC7B,CAAC,GACM;AAIR,UAAM2D,IAAM,KAAKlE,GAChB,IAAI,CAAA7P,MAAK;AACT,YAAM,EAAC,KAAAnR,EAAA,IAAO,KAAKihB,GAAQ9P,CAAE,EAAG,MAC1BjT,IAAyB,CAAC8B,GAAKA,EAAI,OAAO;AAChD,aAAAA,EAAI,UAAU,IACP9B;AAAA,IACR,CAAC;AACD,eAAWiT,KAAM,KAAKgU,GAAWF,CAAK,EAAG,MAAKhE,GAAQ9P,CAAE,EAAG,KAAK,IAAI,UAAU;AAE9E,gBAAK,IAAI,YAAYnO,GAAK6N,GAAOC,GAAQ,MAAK;AAC7C,iBAAW,CAAC1Q,GAAIzB,CAAC,KAAKumB,KAAQ,UAAUvmB;AACxC,WAAKuiB,GAAQ,gBAAA,GACblb,EAAQ,QAAQub,CAAY;AAAA,IAC7B,CAAC,GACM;AAAA,EACR;AAAA,EACAE,GAAc1jB,GAAYiF,GAAa6N,GAAeC,GAAgByQ,GAA+B;AACpG,IAAAvb,EAAQ,UAAUub,CAAY;AAC9B,UAAMvD,IAAUpD,GAAa7c,GAAM,WAAW,KAAKmlB,EAAS,GACtDpN,IAAMsP,GAAmB;AAAA,MAC9B,OAAAvU;AAAA,MACA,QAAAC;AAAA,MACA,iBAAiBkN,IAAU,YAAahb,EAAI,SAAS,MAAM,IAAG,IAAG;AAAA,MACjE,WAAW1E,EAAeP,GAAM,aAAa,EAAK;AAAA,MAClD,uBAAuB;AAAA,MACvB,iBAAiBigB,IAAU;AAAA,MAC3B,aAAa;AAAA,IAAA,CACb,GACKqH,IAAKtnB,EAAK,SAAS,SAAQ,SAAQ,QACnC,EAAC,OAAAknB,MAASlnB;AAChB,WAAK,QAAQ;AAAA,MACZ,KAAKonB,GAAWF,CAAK,EAAE,IAAI,OAAK,IAAI;AAAA,QACnC,CAAAjd,MAAK,KAAKiZ,GAAQ9P,CAAE,EAAGkU,CAAE,EAAE,SAASvP,GAAK9N,CAAE;AAAA,MAAA,CAC3C;AAAA,IAAA,EACA,KAAK,YAAW;AACjB,YAAMsd,IAAQ1d,GAAc,OAAO,EAAC,OAAOkO,EAAI,OAAO,QAAQA,EAAI,QAAO;AACzE,MAAAA,EAAI,OAAO,KAAKyN,IAAQ,EAAC,eAAe+B,GAAM,GAC9C,MAAM,KAAK,IAAI;AAAA,QACdtiB;AAAA;AAAA,QAEA8S,EAAI,QAAQ,QAAQ,OAAOwP,CAAK;AAAA,MAAA,GAEjCA,EAAM,QAAA;AAEN,iBAAWnU,KAAM,KAAKgU,GAAWF,CAAK,EAAG,MAAKhE,GAAQ9P,CAAE,EAAGkU,CAAE,EAAE,aAAA;AAC/D,MAAAvP,EAAI,QAAQ,EAAI,GAEhB9P,EAAQ,QAAQub,CAAY;AAAA,IAC7B,CAAC,GACM;AAAA,EACR;AAAA;AAAA,EAGAH,GAAYrjB,GAAY;AACvB,UAAM,EAAC,IAAA+E,MAAM/E;AACb,QAAI,CAAE+E,EAAI,OAAM;AAChB,QAAI,CAAEA,EAAG,SAAS,MAAM,EAAG,OAAM;AAEjC,UAAMyiB,IAAOjnB,EAAeP,GAAM,QAAQ,EAAI,GACxCynB,IAAiBxf,EAAQ,SAAQ,iBAAiBlD,CAAE;AAC1D,WAAIyiB,KAAMvf,EAAQ,UAAUwf,CAAc,IACzC,YAAW;AACX,YAAMvkB,IAAM,MAAM,MAAM6B,CAAE;AAC1B,UAAI,CAAE7B,EAAI,GAAI,OAAM,IAAI,MAAM,8BAA8B;AAE5D,MAAA0X,GAAS,MAAM1X,EAAI,MAAM,GACrBskB,KAAMvf,EAAQ,QAAQwf,CAAc;AAAA,IACzC,GAAA,GAEOD;AAAA,EACR;AAAA;AAAA;AAAA,EAKA7D,GAAS3jB,GAAY;AACpB,UAAM,EAAC,OAAAknB,GAAO,OAAOrnB,EAAA,IAAOG;AAC5B,QAAI,CAAEknB,EAAO,OAAM;AACnB,QAAIA,EAAM,SAAS,GAAG,EAAG,OAAM;AAC/B,QAAIA,KAAS,KAAKhE,GAAS,OAAM,SAASgE,CAAK;AAC/C,QAAI,CAAErnB,EAAK,OAAM;AAEjB,UAAMM,IAAM,EAAC,QAAQ,GAAA;AAGrB,YAFA,KAAK+iB,GAAQgE,CAAK,IAAI,IAAIvnB,GAAMunB,GAAOrnB,GAAK,KAAKylB,IAAO,KAAKC,IAAOvlB,GAAM,KAAK,KAAK,KAAK,KAAKG,CAAG,GACjG,KAAK8iB,GAAU,KAAKiE,CAAK,GACjBrnB,GAAA;AAAA,MACR,KAAK;AACJ,QAAM,KAAKqmB,OACV,KAAKwB,KAAa,MAAK;AAAA,QAAc,GACrC,KAAKC,KAAe,CAAA3b,MAAI,KAAK4b,GAAc5b,CAAC,GAC5C,KAAKsY,KAAW,CAAAtY,MAAI,KAAK6b,GAAU7b,CAAC,GACpC,KAAK,KAAK,QAAQ,EAAC,OAAAkb,EAAA,CAAM,GACzB,KAAK,QAAQ,MAAK;AACjB,UAAI,KAAKtjB,GAAQ,aAAYwb,EAASqH,KAAc,SAC1C,gBAAA;AACV,qBAAWrT,KAAM,KAAK6P,IAAW;AAChC,kBAAMpO,IAAI,KAAKqO,GAAQ9P,CAAE,EAAG;AAC5B,YAAIyB,aAAaoF,KAAU,KAAKiL,GAAQ,UAAUrQ,GAAG,EAAK;AAAA,UAC3D;AAAA,QACD,IAGD,KAAK,IAAI,aAAa,QAAQ,oBAAmBqS,IAAO,YAAY,EAAI;AACxE;AAAA,MAED,KAAK;AACJ,YAAI,KAAKY,GAAc;AACvB,aAAKA,KAAeZ;AACpB;AAAA,IAAA;AAGD,gBAAK,OAAO,aAAalnB,CAAI,GAEtBG,EAAI;AAAA,EACZ;AAAA,EACA+iB,KAAoB;AAAA;AAAA,EAAA;AAAA;AAAA,EACpBD,KAAuB,CAAA;AAAA;AAAA,EACvBiD,KAAc;AAAA,EACd4B,KAAe;AAAA,EAEfjE,GAAK7jB,GAAqB;AAEzB,UAAMoT,IAAK,KAAK2U,GAAc/nB,CAAI,GAC5BsnB,IAAK,KAAKpE,GAAQ9P,CAAE,GACpBrT,IAAOunB,EAAG,KAAK,KACfxnB,IAAOwnB,EAAG,KAAK;AACrB,QAAI/mB,EAAeP,GAAM,SAAS,EAAK;AACtC,WAAKulB,GAAM,cAAcxlB,GAAM,KAAKwlB,GAAM,SAAS,SAAQ,CAAC,GAC5D,KAAKD,GAAM,cAAcxlB,GAAM,KAAKwlB,GAAM,SAAS,SAAQ,CAAC,GAC5D,KAAK0C,GAAA;AAAA,aAEGhoB,EAAK;AACb,MAAIkI,EAAWlI,GAAM,SAAS,CAAC,MAC9B,KAAKulB,GAAM,cAAcxlB,GAAMC,EAAK,KAAK,GACzC,KAAKslB,GAAM,cAAcxlB,GAAME,EAAK,KAAK,GACzC,KAAKgoB,GAAA;AAAA,aAGEhoB,EAAK,MAAM;AACnB,YAAM,EAAC,MAAAioB,MAAQjoB;AACf,UAAIkoB,IAAW;AACf,UAAI9U,MAAO6U,EAAM,OAAM,4BAA2BA,IAAM;AAExD,YAAME,IAAU,KAAKjF,GAAQ+E,CAAI;AACjC,UAAI,CAAEE,EAAS,OAAM,mBAAkBF,IAAM;AAC7C,YAAMG,IAAYD,EAAQ,MACpBE,IAAYF,EAAQ,MACpBG,IAAgB,KAAK/C,GAAM,cAAc6C,EAAU,GAAG,GACtDG,IAAgB,KAAKjD,GAAM,cAAc+C,EAAU,GAAG;AAC5D,MAAAH,IAAWI,IAAgBC,IAAeD,IAAeC,GACrDL,IAAW,KAAK3C,GAAM,cAAcxlB,CAAI,KAAG,EAAEmoB,GAEjD,KAAK5C,GAAM,cAAcxlB,GAAMooB,CAAQ,GACvC,KAAK3C,GAAM,cAAcxlB,GAAMmoB,CAAQ,GACvC,KAAKF,GAAA;AAAA,IACN;AAEA,WAAAhoB,EAAK,SAAS,IAAIsnB,EAAG,KAAK,KAAK,MAAM,GAAG,EAAE,GAC1C,KAAK,OAAO,aAAatnB,CAAI,GAEtBsnB,EAAG,IAAItnB,CAAI;AAAA,EACnB;AAAA,EACAgoB,KAAwB;AAAC,SAAK/E,KAAY,KAAKuF,GAAA;AAAA,EAAa;AAAA;AAAA,EAG5D5E,GAAW5jB,GAAY;AACtB,gBAAKyoB,GAAezoB,GAAM,CAAAknB,MAAQ;AAGjC,YAAMI,IAAK,KAAKpE,GAAQ,KAAK6E,GAAc,EAAC,OAAAb,EAAA,CAAM,CAAC;AACnD,UAAIlnB,EAAK,SAAS,QAAQ;AACzB,QAAAsnB,EAAG,KAAK,SAAStnB,CAAI,GACrBsnB,EAAG,KAAK,SAAStnB,CAAI;AACrB;AAAA,MACD;AACA,MAAAsnB,EAAG,QAAQtnB,CAAI,EAAE,SAASA,CAAI;AAAA,IAC/B,CAAC,GAEM;AAAA,EACR;AAAA;AAAA;AAAA,EAIA,OAAgB0oB;AAAA;AAAA,IAAkC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyClDC,KAAe9e,GAAc,OAAO;AAAA,IACnC,OAAQnB,EAAO;AAAA,IACf,QAASA,EAAO;AAAA,EAAA,CAChB;AAAA,EACD+c,KAAe,IAAIthB,EAAO,KAAKwkB,EAAY;AAAA,EAE3CC,KAAe/e,GAAc,OAAO;AAAA,IACnC,OAAQnB,EAAO;AAAA,IACf,QAASA,EAAO;AAAA,EAAA,CAChB;AAAA,EACDgd,KAAe,IAAIvhB,EAAO,KAAKykB,EAAY;AAAA;AAAA,EAI3C9E,GAAO9jB,GAAY;AAClB,UAAM,EAAC,OAAAknB,MAASlnB,GACV6oB,IAAW,oBAAI,IAAA,GACfC,IAAW,KAAK1B,GAAWF,CAAK,EAAE,IAAI,CAAA9T,OAC3CyV,EAAS,IAAIzV,CAAE,GACR,KAAK8P,GAAQ9P,CAAE,EAAG,KACzB,GAEK2V,IAAO,MAAK;AACjB,OAAC,KAAKzD,IAAO,KAAKC,EAAK,IAAI,CAAC,KAAKA,IAAO,KAAKD,EAAK;AAClD,YAAMzkB,IAAwB,CAAA;AAC9B,iBAAW,CAACuS,GAAIkU,CAAE,KAAK,OAAO,QAAQ,KAAKpE,EAAO,GAAG;AACpD,YAAI2F,EAAS,IAAIzV,CAAE,GAAG;AAAC,UAAAkU,EAAG,UAAUzmB,CAAI;AAAG;AAAA,QAAQ;AAGnD,cAAM,EAAC,MAAM,EAAC,KAAKgU,EAAA,GAAI,MAAM,EAAC,KAAKxU,EAAA,EAAC,IAAKinB,GACnC0B,IAAM,KAAK1D,GAAM,cAAcjlB,CAAC;AACtC,aAAKilB,GAAM,YAAYjlB,CAAC,GACxB,KAAKklB,GAAM,YAAY1Q,CAAC,GACxB,KAAKyQ,GAAM,WAAWzQ,GAAGmU,CAAG,GAC5B,KAAKzD,GAAM,WAAWllB,GAAG2oB,CAAG;AAAA,MAC7B;AACA,MAAK,QAAQ,WAAWnoB,CAAI,EAAE,KAAK,MAAK;AACvC,aAAKykB,GAAM,UAAU,IACrB,KAAKC,GAAM,UAAU,IACrB,KAAKE,GAAa,UAAU,IAC5B,KAAKC,GAAa,UAAU,IAE5Bzd,EAAQ,cAAcghB,KAAaC,CAAY;AAAA,MAChD,CAAC;AAAA,IACF;AAQA,QALA,KAAKxD,GAAa,UAAU,CAAA,GAC5B,KAAKA,GAAa,QAAQ,GAGbxd,EAAWlI,GAAM,QAAQ,CAAC,MAC1B,KAAK,KAAK4D,GAAQ;AAC9B,aAAAqE,EAAQ,UAAUghB,KAAaC,GAAc,MAAK;AAAA,MAAc,CAAC,GACjE,eAAe,MAAKH,GAAM,GACnB;AAIR,UAAMI,IAA4B,CAAA,GAC5BC,IAAQ,KAAKnG,GAAU,IAAI,CAAA7P,MAAK;AACrC,YAAM,EAAC,MAAAtT,GAAM,MAAAC,EAAA,IAAQ,KAAKmjB,GAAQ9P,CAAE,GAC9B4S,IAAM6C,EAAS,IAAIzV,CAAE,IAAGrT,IAAMD;AACpC,aAAIkmB,EAAI,IAAI,WAASmD,EAAgB,KAAKnD,EAAI,GAAG,GAC1CA;AAAA,IACR,CAAC,GACK,EAAC,QAAAqD,GAAQ,UAAAC,EAAA,IAAY,KAAK;AAChC,IAAAA,EAAS,OAAO,KAAK/D,IAAO,EAAC,eAAe,KAAKoD,IAAa;AAE9D,QAAIY,IAAgB,MAAK;AACxB,iBAAWtnB,KAAOknB,EAAiB,CAAAG,EAAS;AAAA,QAC3CrnB;AAAA,QACA,EAAC,eAAe,KAAK0mB,IAAc,OAAO,GAAA;AAAA,MAAK;AAAA,IAEjD;AACA,QAAI,CAAES,EAAM,KAAK,CAAApD,MAAMA,EAAI,eAAe,GAAG;AAC5C,YAAMrc,IAAS4f;AACf,MAAAA,IAAgB,MAAK;AAAC,QAAAA,IAAgB,MAAK;AAAA,QAAc,GAAG5f,EAAA;AAAA,MAAQ;AAAA,IACrE;AAEA,UAAM6f,IAAS,MAAKF,EAAS,OAAO,KAAKhE,IAAO,EAAC,eAAe,KAAKsD,IAAa;AAClF,IAAAY,EAAA;AACA,QAAI9f,IAAgB,MAAK;AACxB,WAAK4b,GAAM,UAAU,IACrBkE,EAAA,GACA,KAAKlE,GAAM,UAAU;AAAA,IACtB;AACA,QAAI,CAAEwD,EAAS,KAAK,CAAA9C,MAAMA,EAAI,eAAe,GAAG;AAC/C,YAAMrc,IAASD;AACf,MAAAA,IAAgB,MAAK;AAAC,QAAAA,IAAgB,MAAK;AAAA,QAAc,GAAGC,EAAA;AAAA,MAAQ;AAAA,IACrE;AACA,UAAM8f,IAAY,MAAK;AACtB,MAAAF,EAAA,GACA,KAAK9D,GAAa,UAAU,IAE5B/b,EAAA,GACA,KAAKgc,GAAa,UAAU;AAAA,IAC7B,GAIM,EAAC,MAAAgE,GAAM,MAAA1X,EAAA,IAAQhS,GACf2pB,IAAQ,MAAK;AAAC,MAAAN,EAAO,OAAOI,CAAS,GAAGV,EAAA;AAAA,IAAM;AACpD,QAAI,CAAEW,KAAQ,CAAE1X;AACf,aAAAwD,EAAS,MAAM0T,GAAclpB,GAAM,KAAK0lB,IAAc,EAAC,OAAO,EAAA,GAAI,MAAK;AAAA,MAAc,GAAGiE,GAAO,MAAK;AAAA,MAAc,CAAC,GACnHN,EAAO,IAAII,CAAS,GACb;AAIR,UAAMG,IAAW;AAAA,MAChB,MAAOjjB,EAAQ;AAAA,MACf,OAAQuB,EAAWlI,GAAM,SAAS,IAAI;AAAA,MACtC,MAAO;AAAA,IAAA;AAER,SAAK0lB,GAAa,UAAU,CAAC,IAAImE;AAAA,MAChC;AAAA,MACAH,KAAQtK,EAASsJ;AAAA,MACjBkB;AAAA,IAAA,CACA;AACD,UAAME,IAAKtU,EAAS,MAAM0T,GAAclpB,GAAM4pB,GAAU,EAAC,MAAM,EAAA,GAAI,MAAK;AAAA,IAAc,GAAGD,GAAO,MAAK;AAAA,IAAc,GAAG,CAAE3X,CAAI;AAC5H,WAAMA,IAMK,IAAIjQ,EAAWiQ,GAAM,QAAW,CAAA3P,MAAK;AAC/C,MAAAunB,EAAS,OAAOvnB,EAAG,SACnBA,EAAG,QAAA,GAEHynB,EAAG,MAAA,GACHT,EAAO,IAAII,CAAS;AAAA,IACrB,GAAG,CAAAjnB,MAAS;AAAC,MAAIA,KAAQ,KAAK,KAAK,OAAA;AAAA,IAAQ,CAAC,EAClC,OAZT6mB,EAAO,IAAII,CAAS,GACb;AAAA,EAYT;AAAA,EAEArC,GAAWF,IAAQ,IAAc;AAAC,WAAOA,IAAOA,EAAM,MAAM,GAAG,IAAG,KAAKjE;AAAA,EAAS;AAAA,EAChFwF,GAAezoB,GAAYuD,GAAyD;AACnF,UAAMwmB,IAAM,KAAK3C,GAAWpnB,EAAK,KAAK;AACtC,eAAWoT,KAAM2W,GAAK;AACrB,YAAMzC,IAAK,KAAKpE,GAAQ9P,CAAE;AAC1B,UAAI,CAAEkU,EAAI,OAAM,cAAclU,CAAE;AAEhC,MAAA7P,EAAI6P,GAAIkU,CAAE;AAAA,IACX;AAEA,WAAOyC;AAAA,EACR;AAAA,EACAvB,GAAYwB,IAAS,IAAc;AAClC,WAAO,KAAK5C,GAAW4C,CAAM,EAC5B,KAAK,CAACxlB,GAAGnE,MAAK;AACd,YAAM4pB,IAAK,KAAK3E,GAAM,cAAc,KAAKpC,GAAQ1e,CAAC,EAAG,KAAK,GAAG,GACvD0lB,IAAK,KAAK5E,GAAM,cAAc,KAAKpC,GAAQ7iB,CAAC,EAAG,KAAK,GAAG;AAC7D,aAAI4pB,IAAKC,IAAW,KAChBD,IAAKC,IAAW,IACb;AAAA,IACR,CAAC;AAAA,EACF;AAAA,EAEA,mBAAmBxR,GAAe;AACjC,eAAWtF,KAAM,KAAK6P,IAAW;AAChC,YAAMlH,IAAI,KAAKmH,GAAQ9P,CAAE,EAAG;AAC5B,MAAI2I,aAAa9B,KAAU8B,EAAE,IAAI,EAAC,OAAArD,GAAM;AAAA,IAEzC;AAAA,EACD;AAAA;AAAA,EAGAqL,GAAO/jB,GAAY;AAClB,QAAIkI,EAAWlI,GAAM,QAAQ,GAAG,MAAM,EAAG,QAAO;AAEhD,UAAMmqB,IAAU,KAAK/C,GAAWpnB,EAAK,KAAK,EACzC,IAAI,CAAAoT,MAAK,KAAK8P,GAAQ9P,CAAE,EAAG,KAAK,GAAG,GAC9B,EAAC,UAAAkW,GAAU,QAAAD,EAAA,IAAU,KAAK;AAChC,SAAKT,GAAa,OAAOlgB,EAAO,QAAQA,EAAO,MAAM;AACrD,UAAM+gB,IAAY,MAAK;AACtB,WAAKnE,GAAM,UAAU;AACrB,iBAAWvb,KAAKogB,EAAS,CAAAb,EAAS;AAAA,QACjCvf;AAAA,QAAG,EAAC,eAAe,KAAK6e,IAAc,OAAO,GAAA;AAAA,MAAK;AAEnD,WAAKtD,GAAM,UAAU;AAAA,IACtB;AACA,SAAKI,GAAa,UAAU,IAC5B,KAAKA,GAAa,QAAQ;AAE1B,UAAMhe,IAAI2Q,EAAKnQ,EAAWlI,GAAM,QAAQ,EAAE,CAAC,GACrCY,IAAIyX,EAAKnQ,EAAWlI,GAAM,QAAQ,EAAE,CAAC,GACrCqiB,IAAO3a,MAAM,IAChB,MAAK;AAAA,IAAc,IACnB,MAAK;AAAC,WAAKge,GAAa,IAAI,KAAK,MAAM,KAAK,WAAUhe,IAAE,CAAC,IAAGA;AAAA,IAAC,GAC1D0iB,IAAOxpB,MAAM,IAChB,MAAK;AAAA,IAAc,IACnB,MAAK;AAAC,WAAK8kB,GAAa,IAAI,KAAK,MAAM,KAAK,WAAU9kB,IAAE,CAAC,IAAGA;AAAA,IAAC;AAChE,gBAAK8kB,GAAa,UAAU,CAAA,GAE5BlQ,EAAS,MAAM0T,GAAclpB,GAAM,KAAK0lB,IAAc,EAAC,GAAG,GAAG,GAAG,EAAA,GAAI,MAAK;AAAC,MAAArD,EAAA,GAAQ+H,EAAA;AAAA,IAAM,GAAG,MAAK;AAC/F,MAAAf,EAAO,OAAOI,CAAS,GAEvB,KAAKnE,GAAM,UAAU,IACrB,KAAKI,GAAa,UAAU,IAC5B,KAAKA,GAAa,IAAI,GACtB,KAAKA,GAAa,IAAI;AAAA,IACvB,GAAG,MAAK;AAAA,IAAc,CAAC,GACvB2D,EAAO,IAAII,CAAS,GAEb;AAAA,EACR;AAAA;AAAA,EAIAzF,GAAKhkB,GAAY;AAChB,UAAM,EAAC,OAAAknB,GAAO,QAAAsC,GAAQ,MAAAzjB,EAAA,IAAQ/F;AAC9B,QAAI,CAAEknB,EAAO,OAAM;AAEnB,UAAMI,IAAK,KAAKpE,GAAQ,KAAK6E,GAAc/nB,CAAI,CAAC,GAC1CgmB,IAAMsB,EAAG;AAEf,QAAI+C,IAAmB,MAAK;AAAA,IAAc;AAC1C,IAAIb,KAAU,CAAE,KAAK5lB,GAAQ,eAC5BoiB,EAAI,YAAA,GACJqE,IAAmB,MAAKrE,EAAI,UAAA;AAG7B,UAAMsE,IAAM9U,EAAS,YAAYxV,GAAMgmB,CAAG,GACpCuE,IAAShqB,EAAeP,GAAM,UAAU,EAAK,GAC7CwqB,IAAUjqB,EAAeP,GAAM,WAAW,EAAK,GAC/CyqB,IAASnD,EAAG,KAAK;AACvB,WAAA9R,EAAS,MAAMzP,KAAQmhB,GAAOlnB,GAAMgmB,GAAKxQ,EAAS,YAAYxV,GAAMgmB,CAAG,GAAG,MAAK;AAAA,IAAc,GAAGqE,GAAkB,MAAK;AAGtH,UAFIE,KAAQ,OAAO,OAAOvE,GAAKsE,CAAG,GAE9BE,EAAS,YAAWlqB,KAAM,OAAO,KAAKkV,EAAS,UAAU,EAAS,CAAAiV,EAAQnqB,CAAE,IAAU0lB,EAAK1lB,CAAE;AAAA,IAClG,CAAC,GAIG,YAAYN,MACfgmB,EAAI,IAAI,UAAU,CAAC7d,EAAM,WAAWnI,CAAI,CAAC,GACzCgmB,EAAI,WAAW,CAAChmB,CAAI,IAGd;AAAA,EACR;AAAA;AAAA,EAIAikB,GAAYjkB,GAAY;AACvB,gBAAKyoB,GAAezoB,GAAM,CAAAknB,MAAQ;AACjC,YAAMI,IAAK,KAAKpE,GAAQ,KAAK6E,GAAc,EAAC,OAAAb,EAAA,CAAM,CAAC;AACnD,UAAIlnB,EAAK,SAAS,QAAQ;AACzB,aAAK0qB,GAAapD,EAAG,MAAMtnB,CAAI,GAC/B,KAAK0qB,GAAapD,EAAG,MAAMtnB,CAAI;AAC/B;AAAA,MACD;AACA,YAAM+b,IAAIuL,EAAG,QAAQtnB,CAAI;AACzB,WAAK0qB,GAAa3O,GAAG/b,CAAI;AAAA,IAC1B,CAAC,GAEM;AAAA,EACR;AAAA,EACA0qB,GAAa3O,GAAU/b,GAAY;AAClC,UAAM,IAAI+b,EAAE;AACZ,MAAE,YAAY,CAAA,GACd,EAAE,UAAU,CAAC,GAAG,EAAE,SAAS5T,EAAM,WAAWnI,CAAI,CAAC,GACjD+b,EAAE,SAAS,KAAK/b,CAAI;AAAA,EACrB;AAAA;AAAA,EAGAkkB,GAAclkB,GAAY;AACzB,gBAAKyoB,GAAezoB,GAAM,CAAAknB,MAAQ;AACjC,YAAMI,IAAK,KAAKpE,GAAQ,KAAK6E,GAAc,EAAC,OAAAb,EAAA,CAAM,CAAC;AACnD,UAAIlnB,EAAK,SAAS,QAAQ;AACzB,cAAM6U,IAAIyS,EAAG,MACPjnB,IAAIinB,EAAG;AACb,QAAAzS,EAAE,IAAI,UAAU,MAChBxU,EAAE,IAAI,UAAU,MAChBwU,EAAE,WAAW,CAAA,GACbxU,EAAE,WAAW,CAAA;AACb;AAAA,MACD;AACA,YAAM0b,IAAIuL,EAAG,QAAQtnB,CAAI;AACzB,MAAA+b,EAAE,IAAI,UAAU,MAChBA,EAAE,WAAW,CAAA;AAAA,IACd,CAAC,GAEM;AAAA,EACR;AAAA;AAAA,EAGAoI,GAAenkB,GAAY;AAC1B,gBAAKyoB,GAAezoB,GAAM,CAAAknB,MAAQ;AACjC,YAAMI,IAAK,KAAKpE,GAAQ,KAAK6E,GAAc,EAAC,OAAAb,EAAA,CAAM,CAAC;AACnD,UAAIlnB,EAAK,SAAS,QAAQ;AACzB,aAAK2qB,GAAgBrD,EAAG,MAAMtnB,CAAI,GAClC,KAAK2qB,GAAgBrD,EAAG,MAAMtnB,CAAI;AAClC;AAAA,MACD;AACA,YAAM+b,IAAIuL,EAAG,QAAQtnB,CAAI;AACzB,WAAK2qB,GAAgB5O,GAAG/b,CAAI;AAAA,IAC7B,CAAC,GAEM;AAAA,EACR;AAAA,EACA2qB,GAAgB5O,GAAU/b,GAAY;AACrC,UAAM,IAAI+b,EAAE;AACZ,QAAI,CAAE,EAAE,QAAS,OAAM;AAEvB,UAAM,IAAI1D,EAAKnQ,EAAWlI,GAAM,SAAS,CAAC,CAAC,GACrCyE,IAAM,EAAE,QAAQ;AACtB,QAAIA,KAAO,EAAG,OAAM,YAAY,OAAOA,CAAG,CAAC;AAE3C,IAAAsX,EAAE,SAAS,CAAC,EAAG,UACf,EAAE,QAAQ,CAAC,EAAG,UAAUxb,EAAeP,GAAM,WAAW,EAAI;AAAA,EAC7D;AAAA;AAAA,EAIA,OAAQymB,KAAe;AAAA,EACvB,WAAW,aAAa;AAAC,WAAOrH,EAASqH;AAAA,EAAW;AAAA;AAAA,EAEpDrC,GAAIpkB,GAAY;AACf,UAAM,EAAC,MAAA+Y,MAAQ/Y;AACf,QAAI,CAAE+Y,EAAM,OAAM;AAElB,UAAM4N,IAAK,KAAKgB,GAAa3nB,CAAI;AACjC,WAAOA,EAAK,MACZ,KAAK,gBAAA,GACD,KAAK4D,GAAQ,aAAY5D,EAAK,OAAO,IAChC,UAAUA,KAAMkI,EAAWlI,GAAM,QAAQ,GAAG,GAErD,KAAKklB,GAAQ,SAAQrC,EAAuB7iB,CAAI,GAAG2mB,CAAE;AAGrD,UAAMiE,IAASrqB,EAAeP,GAAM,UAAU,EAAI,GAC5C6qB,IAAW,KAAK,IAAI,SAAA;AAC1B,WAAMD,KAAQ,KAAK,IAAI,aAAa,QAAQ,eAAeA,CAAM,GACjEjE,EAAG,MAAM5N,EAAK,WAAW,OAAO;AAAA,CAAI,CAAC,GACrC,KAAK,IAAI,aAAa,QAAQ,eAAe8R,CAAQ,GAErD,KAAK3F,GAAQ,cAAcyB,CAAE,GAEtB;AAAA,EACR;AAAA,EAEAgB,KAAe,CAACd,MAAyB;AAAC,eAAKa,GAAA,GAAoB;AAAA,EAAC;AAAA,EACpEE,GAAc5nB,GAAsB;AACnC,UAAMoT,IAAK,KAAK2U,GAAc/nB,GAAM,KAAKkmB,EAAU,GAE7CF,IADK,KAAK9C,GAAQ9P,CAAE,EACX,QAAQpT,CAAI;AAC3B,QAAI,EAAGgmB,aAAe/L,GAAW,OAAM7G,IAAI;AAE3C,WAAO4S;AAAA,EACR;AAAA,EACA,kBAAwB;AAAC,IAAA5G,EAASqH,KAAc,KAAK,OAAO;AAAA,EAAU;AAAA;AAAA,EAItEnC,KAAW,CAACuC,MAAwB;AAAC,eAAKa,GAAA,GAAoB;AAAA,EAAC;AAAA,EAC/DG,GAAU7nB,GAAY;AACrB,UAAM,EAAC,OAAAknB,MAASlnB;AAChB,QAAI,CAAEknB,EAAO,OAAM;AAEnB,UAAMlB,IAAM,KAAK9C,GAAQgE,CAAK;AAC9B,QAAI,CAAElB,KAAO,EAAGA,EAAI,QAAQhmB,CAAI,aAAaia,GAAW,OAAM,GAAGiN,CAAK;AACtE,SAAK4D,KAAY9E,GAEjB,KAAK7L,GAAK,UAAA,GACV,KAAK+L,KAAagB,GAClB,KAAK,IAAI,aAAa,QAAQ,qBAAqBA,CAAK;AACxD,eAAW9T,KAAM,KAAK6P,IAAW;AAChC,YAAM,EAAC,MAAAnjB,GAAM,MAAAC,EAAA,IAAQ,KAAKmjB,GAAQ9P,CAAE;AACpC,MAAOtT,aAAgBma,MACvBna,EAAK,QAAmBC,EAAM,QAAQqT,MAAO8T;AAAA,IAC9C;AAEA,WAAO;AAAA,EACR;AAAA,EACA,IAAI,2BAAqC;AACxC,gBAAKQ,GAAA,GACE,KAAK;AAAA,EACb;AAAA,EACA,IAAI,oBAAqC;AACxC,WAAM,KAAKoD,KAEM,KAAKA,GAAU,OAFH;AAAA,EAG9B;AAAA,EACAA,KAAgC;AAAA;AAAA,EAChCpD,KAAyB,MAAK;AAAC,UAAM;AAAA,EAAyE;AAAA,EAE9GK,GAAc/nB,GAAYW,IAAM,IAAY;AAC3C,UAAMyS,IAAKpT,EAAK,SAASW;AACzB,QAAIyS,EAAG,SAAS,GAAG,EAAG,OAAM;AAC5B,QAAI,EAAGA,KAAM,KAAK8P,IAAU,OAAM,cAAa9P,IAAI;AAEnD,WAAApT,EAAK,QAAQoT,GACNA;AAAA,EACR;AAAA,EAGA,eAAe;AAAC,SAAK+G,GAAK,UAAA;AAAA,EAAW;AAAA;AAAA,EAIrCkK,GAAYrkB,GAAY;AACvB,UAAM+qB,IAAK,KAAKpD,GAAa3nB,CAAI;AACjC,WAAIA,EAAK,UAAU,KAAKkmB,MAAclmB,EAAK,SAAS,UAAQ,KAAKma,GAAK,UAAA,GACtE4Q,EAAG,UAAA,GACI;AAAA,EACR;AAAA;AAAA,EAIAxG,IAASvkB,GAAY;AAAC,gBAAKklB,GAAQ,YAAY,KAAKyC,GAAa3nB,CAAI,CAAC,GAAU;AAAA,EAAK;AAAA;AAAA,EAGrFwkB,IAAIxkB,GAAY;AACf,WAAIO,EAAeP,GAAM,kBAAkB,EAAI,KAAG,KAAKma,GAAK,UAAA,GAExD,KAAK2Q,OACR,KAAKA,GAAU,KAAK,SAAS9qB,CAAI,GACjC,KAAK8qB,GAAU,KAAK,SAAS9qB,CAAI,IAG3B;AAAA,EACR;AAAA;AAAA,EAGAykB,IAAOzkB,GAAY;AAClB,QAAI,CAAEA,EAAK,IAAK,OAAM;AAEtB,gBAAKklB,GAAQ,SAAQrC,EAAuB7iB,CAAI,GAAG,KAAK2nB,GAAa3nB,CAAI,CAAC,GACnE;AAAA,EACR;AAAA;AAAA,EAGA0kB,IAAM1kB,GAAY;AACjB,QAAI,CAAEA,EAAK,MAAM,CAAEA,EAAK,SAAS,CAAEA,EAAK,IAAK,OAAM;AACnD,WAAAA,EAAK,OAAO,KAAK,OAAO,UAExBA,EAAK,UAAU,wCACfA,EAAK,gBAAgB,wCACrBA,EAAK,kBAAkBA,EAAK,OAC5B,KAAKklB,GAAQ,UAASrC,EAAuB7iB,CAAI,GAAG,KAAK2nB,GAAa3nB,CAAI,CAAC,GACpE;AAAA,EACR;AAAA;AAAA,EAGA2kB,IAAG3kB,GAAY;AAAC,WAAO,KAAKokB,GAAI,EAAC,GAAGpkB,GAAM,MAAM;AAAA,GAAK;AAAA,EAAC;AAAA;AAAA,EAGtD4kB,IAAO5kB,GAAY;AAClB,UAAM,EAAC,GAAA4e,GAAG,GAAA3b,EAAA,IAAKjD;AACf,QAAI,CAAE4e,EAAG,OAAM;AACf,QAAI,CAAE3b,EAAG,OAAM;AAEf,WAAAjD,EAAK,OAAO,MAAK,mBAAmB4e,CAAC,IAAG,MAAK,mBAAmB3b,CAAC,IAAG,KACpE,OAAOjD,EAAK,GACZ,OAAOA,EAAK,GACL,KAAKokB,GAAIpkB,CAAI;AAAA,EACrB;AAAA;AAAA,EAIA6kB,IAAM7kB,GAAY;AACjB,gBAAKklB,GAAQ,UAASrC,EAAuB7iB,CAAI,GAAG,KAAK2nB,GAAa3nB,CAAI,CAAC,GACpE;AAAA,EACR;AAAA;AAAA,EAGA8kB,IAAK9kB,GAAY;AAChB,QAAI,CAAEA,EAAK,EAAG,OAAM;AAEpB,gBAAKklB,GAAQ,SAAQrC,EAAuB7iB,CAAI,GAAG,KAAK2nB,GAAa3nB,CAAI,CAAC,GACnE;AAAA,EACR;AAAA;AAAA,EAIA+kB,IAAU,EAAC,OAAAmC,KAAc;AACxB,YAAQ,MAAM,eAAe;AAC7B,eAAW9T,KAAM,KAAKgU,GAAWF,CAAK,GAAG;AACxC,YAAM,EAAC,MAAApnB,GAAM,MAAAC,EAAA,IAAQ,KAAKmjB,GAAQ9P,CAAE;AACpC,UAAI;AACH,gBAAQ;AAAA,UAAK,KAAKtT,EAAK,KAAK,MAAM,GAAG,EAAE,CAAC;AAAA,UAAO,UAAU4I,EAAO,aAAY,QAAO,KAAK;AAAA,UACxF,KAAK,MAAM,YAAY3I,EAAK,MAAM,cAAcD,EAAK,KAAA,CAAM,IAAI;AAAA,QAAA;AAAA,MAChE,SAAS6F,GAAG;AACX,gBAAQ,MAAM,mBAAmBA,CAAC,GAClC,QAAQ,MAAM,WAAW5F,EAAK,KAAA,CAAM,EAAE,GACtC,QAAQ,MAAM,WAAWD,EAAK,KAAA,CAAM,EAAE;AAAA,MACvC;AAAA,IACD;AACA,mBAAQ,SAAA,GAED;AAAA,EACR;AAAA;AAAA,EAIAklB,IAAchlB,GAAY;AACzB,UAAMoT,IAAK,KAAK2U,GAAc/nB,GAAM,KAAKkmB,EAAU,GAC7CtlB,IAAIL,EAAeP,GAAM,WAAW,EAAI;AAC9C,gBAAK2nB,GAAa3nB,CAAI,EAAE,UAAUY,GAClC,KAAK,IAAI,aAAa,QAAQ,oBAAmBwS,IAAI,YAAYxS,CAAC,GAE3D;AAAA,EACR;AAAA;AAAA,EAIAqkB,IAAQjlB,GAAY;AACnB,WAAAL,GAAM,YAAYK,GAAM,MAAM,GAC9BA,EAAK,OAAO,KAAK,OAAO,UAGnB,KAAK2nB,GAAa3nB,CAAI,EAAE,UAAUA,CAAI,GAE3C,KAAK,OAAO,aAAaA,CAAI,GAEtB;AAAA,EACR;AAAA;AAAA,EAIA,SAAc;AAEb,UAAMgM,IAAS,CAAA;AACf,eAAWoH,KAAM,KAAK6P,IAAW;AAChC,YAAMqE,IAAK,KAAKpE,GAAQ9P,CAAE;AAE1B,MAAApH,EAAEoH,CAAE,IAAI;AAAA,QACP,KAAKkU,EAAG;AAAA,QACR,MAAMA,EAAG,KAAK,OAAA;AAAA,QACd,MAAMA,EAAG,KAAK,OAAA;AAAA,MAAO;AAAA,IAEvB;AACA,WAAOtb;AAAA,EACR;AAAA,EACA,SAASgf,GAAkC;AAE1C,SAAK7Q,GAAK,SAAA;AAEV,UAAMtZ,IAAwB,CAAA,GACxBoqB,IAAqC,CAAA;AAC3C,eAAW,CAAC7X,GAAI,EAAC,MAAAtT,GAAM,MAAM,EAAC,KAAAkpB,EAAA,GAAM,MAAAjpB,GAAM,KAAAF,GAAI,KAAK,OAAO,QAAQmrB,CAAO,GAAG;AAC3E,MAAAC,EAAM,KAAK,EAAC,IAAA7X,GAAI,KAAA4V,EAAA,CAAI;AACpB,YAAMkC,IAAK,KAAKhI,GAAQ9P,CAAE,MAAM,IAAIzT,GAAMyT,GAAIvT,GAAK,KAAKylB,IAAO,KAAKC,IAAO,IAAI,KAAK,KAAK,KAAK,KAAK,EAAC,QAAQ,IAAM;AAClH,MAAA2F,EAAG,KAAK,SAASprB,GAAMe,CAAI,GAC3BqqB,EAAG,KAAK,SAASnrB,GAAMc,CAAI;AAAA,IAC5B;AAEA,UAAM4D,IAAM,KAAK6gB,GAAM,SAAS;AAChC,WAAAzkB,EAAK,KAAK,IAAI,QAAQ,CAAAoJ,MAAK;AAC1B,iBAAW,EAAC,IAAAmJ,GAAI,KAAA4V,EAAA,KAAQiC,EAAM,KAAK,CAAC,EAAC,KAAKzmB,EAAA,GAAI,EAAC,KAAKnE,EAAA,MAAMmE,MAAMnE,IAAG,IAAGmE,IAAInE,IAAG,KAAI,CAAC,GAAG;AACpF,cAAMinB,IAAK,KAAKpE,GAAQ9P,CAAE;AAC1B,YAAI,CAAEkU,EAAI;AAEV,cAAM5iB,IAAID,IAAMukB,IAAKA,IAAKvkB,IAAK,GACzB,EAAC,MAAA3E,GAAM,MAAAC,EAAA,IAAQunB;AACrB,aAAKhC,GAAM,cAAcxlB,EAAK,KAAK4E,CAAC,GACpC,KAAK6gB,GAAM,cAAcxlB,EAAK,KAAK2E,CAAC;AAAA,MACrC;AACA,MAAAuF,EAAA;AAAA,IACD,CAAC,CAAC,GACKpJ;AAAA,EACR;AAED;;;;;"}
|