pdf.js.map 1.4 MB

1
  1. {"version":3,"file":"pdf.js","mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACUA,MAAMA,QAAA,GAEJ,OAAOC,OAAP,KAAmB,QADnB,IAEAA,OAAA,GAAU,EAAV,KAAiB,kBAFjB,IAGA,CAACA,OAAA,CAAQC,QAAR,CAAiBC,EAHlB,IAIA,EAAEF,OAAA,CAAQC,QAAR,CAAiBE,QAAjB,IAA6BH,OAAA,CAAQI,IAArC,IAA6CJ,OAAA,CAAQI,IAAR,KAAiB,SAA9D,CALJ;AApBAC,gBAAA,GAAAN,QAAA;AA2BA,MAAMO,eAAA,GAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB;AA3BAD,uBAAA,GAAAC,eAAA;AA4BA,MAAMC,oBAAA,GAAuB,CAAC,KAAD,EAAQ,CAAR,EAAW,CAAX,EAAc,KAAd,EAAqB,CAArB,EAAwB,CAAxB,CAA7B;AA5BAF,4BAAA,GAAAE,oBAAA;AA8BA,MAAMC,uBAAA,GAA0B,IAAhC;AA9BAH,+BAAA,GAAAG,uBAAA;AAkCA,MAAMC,WAAA,GAAc,IAApB;AAlCAJ,mBAAA,GAAAI,WAAA;AAmCA,MAAMC,mBAAA,GAAsB,IAA5B;AAnCAL,2BAAA,GAAAK,mBAAA;AAoCA,MAAMC,eAAA,GAAkBD,mBAAA,GAAsBD,WAA9C;AApCAJ,uBAAA,GAAAM,eAAA;AAkDA,MAAMC,mBAAA,GAAsB;EAC1BC,GAAA,EAAK,IADqB;EAE1BC,OAAA,EAAS,IAFiB;EAG1BC,KAAA,EAAO,IAHmB;EAI1BC,IAAA,EAAM,IAJoB;EAK1BC,iBAAA,EAAmB,IALO;EAM1BC,mBAAA,EAAqB,IANK;EAO1BC,mBAAA,EAAqB,IAPK;EAQ1BC,MAAA,EAAQ;AARkB,CAA5B;AAlDAf,2BAAA,GAAAO,mBAAA;AA6DA,MAAMS,cAAA,GAAiB;EACrBC,OAAA,EAAS,CADY;EAErBC,MAAA,EAAQ,CAFa;EAGrBC,YAAA,EAAc,CAHO;EAIrBC,cAAA,EAAgB;AAJK,CAAvB;AA7DApB,sBAAA,GAAAgB,cAAA;AAoEA,MAAMK,sBAAA,GAAyB,wBAA/B;AApEArB,8BAAA,GAAAqB,sBAAA;AAsEA,MAAMC,oBAAA,GAAuB;EAC3BL,OAAA,EAAS,CAAC,CADiB;EAE3BM,IAAA,EAAM,CAFqB;EAG3BC,QAAA,EAAU,CAHiB;EAI3BC,KAAA,EAAO,EAJoB;EAK3BC,GAAA,EAAK;AALsB,CAA7B;AAtEA1B,4BAAA,GAAAsB,oBAAA;AA8EA,MAAMK,0BAAA,GAA6B;EACjCC,MAAA,EAAQ,CADyB;EAEjCC,MAAA,EAAQ,CAFyB;EAGjCC,aAAA,EAAe,EAHkB;EAIjCC,cAAA,EAAgB,EAJiB;EAKjCC,gBAAA,EAAkB,EALe;EAMjCC,SAAA,EAAW,EANsB;EAOjCC,aAAA,EAAe,EAPkB;EAQjCC,WAAA,EAAa;AARoB,CAAnC;AA9EAnC,kCAAA,GAAA2B,0BAAA;AA0FA,MAAMS,cAAA,GAAiB;EACrB1B,KAAA,EAAO,IADc;EAErB2B,eAAA,EAAiB,IAFI;EAGrBC,IAAA,EAAM,IAHe;EAIrBC,kBAAA,EAAoB,IAJC;EAKrBC,sBAAA,EAAwB,KALH;EAMrBC,sBAAA,EAAwB,KANH;EAOrBC,QAAA,EAAU,KAPW;EAQrBC,kBAAA,EAAoB;AARC,CAAvB;AA1FA3C,sBAAA,GAAAoC,cAAA;AAqGA,MAAMQ,iBAAA,GAAoB;EACxBC,IAAA,EAAM,CADkB;EAExBC,MAAA,EAAQ,CAFgB;EAGxBC,WAAA,EAAa,CAHW;EAIxBC,SAAA,EAAW,CAJa;EAKxBC,gBAAA,EAAkB,CALM;EAMxBC,kBAAA,EAAoB,CANI;EAOxBC,uBAAA,EAAyB,CAPD;EAQxBC,WAAA,EAAa,CARW;EASxBC,gBAAA,EAAkB,CATM;EAUxBC,gBAAA,EAAkB;AAVM,CAA1B;AArGAtD,yBAAA,GAAA4C,iBAAA;AAkHA,MAAMW,SAAA,GAAY;EAChBC,cAAA,EAAgB,CADA;EAEhBC,SAAA,EAAW,CAFK;EAGhBC,UAAA,EAAY;AAHI,CAAlB;AAlHA1D,iBAAA,GAAAuD,SAAA;AAwHA,MAAMI,cAAA,GAAiB;EACrBC,IAAA,EAAM,CADe;EAErBC,IAAA,EAAM,CAFe;EAGrBrC,QAAA,EAAU,CAHW;EAIrBsC,IAAA,EAAM,CAJe;EAKrBC,MAAA,EAAQ,CALa;EAMrBC,MAAA,EAAQ,CANa;EAOrBC,OAAA,EAAS,CAPY;EAQrBC,QAAA,EAAU,CARW;EASrBC,SAAA,EAAW,CATU;EAUrBC,SAAA,EAAW,EAVU;EAWrBC,QAAA,EAAU,EAXW;EAYrBC,SAAA,EAAW,EAZU;EAarB7C,KAAA,EAAO,EAbc;EAcrB8C,KAAA,EAAO,EAdc;EAerB7C,GAAA,EAAK,EAfgB;EAgBrB8C,KAAA,EAAO,EAhBc;EAiBrBC,cAAA,EAAgB,EAjBK;EAkBrBC,KAAA,EAAO,EAlBc;EAmBrBC,KAAA,EAAO,EAnBc;EAoBrBC,MAAA,EAAQ,EApBa;EAqBrBC,MAAA,EAAQ,EArBa;EAsBrBC,WAAA,EAAa,EAtBQ;EAuBrBC,OAAA,EAAS,EAvBY;EAwBrBC,SAAA,EAAW,EAxBU;EAyBrBC,MAAA,EAAQ,EAzBa;EA0BrBC,MAAA,EAAQ;AA1Ba,CAAvB;AAxHAlF,sBAAA,GAAA2D,cAAA;AAqJA,MAAMwB,mBAAA,GAAsB;EAC1BC,KAAA,EAAO,OADmB;EAE1BC,KAAA,EAAO;AAFmB,CAA5B;AArJArF,2BAAA,GAAAmF,mBAAA;AA0JA,MAAMG,cAAA,GAAiB;EACrBtC,SAAA,EAAW,IADU;EAErBuC,MAAA,EAAQ,IAFa;EAGrB7E,KAAA,EAAO,IAHc;EAIrB8E,MAAA,EAAQ,IAJa;EAKrBC,QAAA,EAAU,IALW;EAMrBC,MAAA,EAAQ,IANa;EAOrBC,QAAA,EAAU,IAPW;EAQrBC,MAAA,EAAQ,IARa;EASrBC,YAAA,EAAc,KATO;EAUrBC,cAAA,EAAgB;AAVK,CAAvB;AA1JA9F,sBAAA,GAAAsF,cAAA;AAuKA,MAAMS,mBAAA,GAAsB;EAC1BJ,QAAA,EAAU,SADgB;EAE1BK,QAAA,EAAU,SAFgB;EAG1BC,QAAA,EAAU,SAHgB;EAI1BC,SAAA,EAAW,SAJe;EAK1BC,QAAA,EAAU,SALgB;EAM1BC,aAAA,EAAe,SANW;EAO1BC,KAAA,EAAO,SAPmB;EAQ1BC,UAAA,EAAY,SARc;EAS1BC,KAAA,EAAO,SATmB;EAU1BC,IAAA,EAAM,SAVoB;EAW1BC,IAAA,EAAM,SAXoB;EAY1BC,UAAA,EAAY,SAZc;EAa1BC,WAAA,EAAa,SAba;EAc1BC,eAAA,EAAiB,SAdS;EAe1BC,WAAA,EAAa,SAfa;EAgB1BC,IAAA,EAAM,SAhBoB;EAiB1BC,QAAA,EAAU,SAjBgB;EAkB1BC,cAAA,EAAgB,SAlBU;EAmB1BC,iBAAA,EAAmB;AAnBO,CAA5B;AAvKAjH,2BAAA,GAAA+F,mBAAA;AA6LA,MAAMmB,yBAAA,GAA4B;EAChCC,KAAA,EAAO,CADyB;EAEhCC,MAAA,EAAQ,CAFwB;EAGhCC,OAAA,EAAS,CAHuB;EAIhCC,KAAA,EAAO,CAJyB;EAKhClD,SAAA,EAAW;AALqB,CAAlC;AA7LApE,iCAAA,GAAAkH,yBAAA;AAqMA,MAAMK,yBAAA,GAA4B;EAChCC,CAAA,EAAG,aAD6B;EAEhCC,CAAA,EAAG,YAF6B;EAGhCC,CAAA,EAAG,YAH6B;EAIhCC,CAAA,EAAG,UAJ6B;EAKhCC,EAAA,EAAI,OAL4B;EAMhCC,EAAA,EAAI,MAN4B;EAOhCC,EAAA,EAAI,UAP4B;EAQhCC,EAAA,EAAI,WAR4B;EAShCC,EAAA,EAAI,aAT4B;EAUhCC,EAAA,EAAI,eAV4B;EAWhCC,CAAA,EAAG,WAX6B;EAYhCC,CAAA,EAAG,QAZ6B;EAahCC,CAAA,EAAG,UAb6B;EAchCC,CAAA,EAAG;AAd6B,CAAlC;AArMArI,iCAAA,GAAAuH,yBAAA;AAsNA,MAAMe,uBAAA,GAA0B;EAC9BC,EAAA,EAAI,WAD0B;EAE9BC,EAAA,EAAI,UAF0B;EAG9BC,EAAA,EAAI,SAH0B;EAI9BC,EAAA,EAAI,WAJ0B;EAK9BC,EAAA,EAAI;AAL0B,CAAhC;AAtNA3I,+BAAA,GAAAsI,uBAAA;AA8NA,MAAMM,mBAAA,GAAsB;EAC1BC,CAAA,EAAG,UADuB;EAE1BR,CAAA,EAAG;AAFuB,CAA5B;AA9NArI,2BAAA,GAAA4I,mBAAA;AAmOA,MAAME,cAAA,GAAiB;EACrBC,MAAA,EAAQ,CADa;EAErBC,QAAA,EAAU,CAFW;EAGrBC,KAAA,EAAO;AAHc,CAAvB;AAnOAjJ,sBAAA,GAAA8I,cAAA;AAyOA,MAAMI,mBAAA,GAAsB;EAC1B3H,IAAA,EAAM,CADoB;EAE1B4H,MAAA,EAAQ;AAFkB,CAA5B;AAzOAnJ,2BAAA,GAAAkJ,mBAAA;AA+OA,MAAME,GAAA,GAAM;EAKVC,UAAA,EAAY,CALF;EAMVC,YAAA,EAAc,CANJ;EAOVC,UAAA,EAAY,CAPF;EAQVC,WAAA,EAAa,CARH;EASVC,aAAA,EAAe,CATL;EAUVC,OAAA,EAAS,CAVC;EAWVC,kBAAA,EAAoB,CAXV;EAYVC,WAAA,EAAa,CAZH;EAaVC,SAAA,EAAW,CAbD;EAcVC,IAAA,EAAM,EAdI;EAeVC,OAAA,EAAS,EAfC;EAgBVC,SAAA,EAAW,EAhBD;EAiBVC,MAAA,EAAQ,EAjBE;EAkBVC,MAAA,EAAQ,EAlBE;EAmBVC,OAAA,EAAS,EAnBC;EAoBVC,QAAA,EAAU,EApBA;EAqBVC,QAAA,EAAU,EArBA;EAsBVC,SAAA,EAAW,EAtBD;EAuBVC,SAAA,EAAW,EAvBD;EAwBVC,MAAA,EAAQ,EAxBE;EAyBVC,WAAA,EAAa,EAzBH;EA0BVC,IAAA,EAAM,EA1BI;EA2BVC,MAAA,EAAQ,EA3BE;EA4BVC,UAAA,EAAY,EA5BF;EA6BVC,YAAA,EAAc,EA7BJ;EA8BVC,eAAA,EAAiB,EA9BP;EA+BVC,iBAAA,EAAmB,EA/BT;EAgCVC,OAAA,EAAS,EAhCC;EAiCVC,IAAA,EAAM,EAjCI;EAkCVC,MAAA,EAAQ,EAlCE;EAmCVC,SAAA,EAAW,EAnCD;EAoCVC,OAAA,EAAS,EApCC;EAqCVC,cAAA,EAAgB,EArCN;EAsCVC,cAAA,EAAgB,EAtCN;EAuCVC,SAAA,EAAW,EAvCD;EAwCVC,UAAA,EAAY,EAxCF;EAyCVC,OAAA,EAAS,EAzCC;EA0CVC,oBAAA,EAAsB,EA1CZ;EA2CVC,WAAA,EAAa,EA3CH;EA4CVC,QAAA,EAAU,EA5CA;EA6CVC,kBAAA,EAAoB,EA7CV;EA8CVC,aAAA,EAAe,EA9CL;EA+CVC,QAAA,EAAU,EA/CA;EAgDVC,QAAA,EAAU,EAhDA;EAiDVC,cAAA,EAAgB,EAjDN;EAkDVC,gBAAA,EAAkB,EAlDR;EAmDVC,0BAAA,EAA4B,EAnDlB;EAoDVC,YAAA,EAAc,EApDJ;EAqDVC,qBAAA,EAAuB,EArDb;EAsDVC,mBAAA,EAAqB,EAtDX;EAuDVC,iBAAA,EAAmB,EAvDT;EAwDVC,cAAA,EAAgB,EAxDN;EAyDVC,eAAA,EAAiB,EAzDP;EA0DVC,YAAA,EAAc,EA1DJ;EA2DVC,aAAA,EAAe,EA3DL;EA4DVC,aAAA,EAAe,EA5DL;EA6DVC,WAAA,EAAa,EA7DH;EA8DVC,iBAAA,EAAmB,EA9DT;EA+DVC,eAAA,EAAiB,EA/DP;EAgEVC,kBAAA,EAAoB,EAhEV;EAiEVC,gBAAA,EAAkB,EAjER;EAkEVC,WAAA,EAAa,EAlEH;EAmEVC,gBAAA,EAAkB,EAnER;EAoEVC,cAAA,EAAgB,EApEN;EAqEVC,cAAA,EAAgB,EArEN;EAsEVC,YAAA,EAAc,EAtEJ;EAuEVC,SAAA,EAAW,EAvED;EAwEVC,cAAA,EAAgB,EAxEN;EAyEVC,kBAAA,EAAoB,EAzEV;EA0EVC,uBAAA,EAAyB,EA1Ef;EA2EVC,gBAAA,EAAkB,EA3ER;EA4EVC,WAAA,EAAa,EA5EH;EA6EVC,SAAA,EAAW,EA7ED;EA8EVC,qBAAA,EAAuB,EA9Eb;EA+EVC,mBAAA,EAAqB,EA/EX;EAgFVC,UAAA,EAAY,EAhFF;EAiFVC,QAAA,EAAU,EAjFA;EAoFVC,eAAA,EAAiB,EApFP;EAqFVC,aAAA,EAAe,EArFL;EAuFVC,qBAAA,EAAuB,EAvFb;EAwFVC,0BAAA,EAA4B,EAxFlB;EAyFVC,iBAAA,EAAmB,EAzFT;EA0FVC,uBAAA,EAAyB,EA1Ff;EA2FVC,4BAAA,EAA8B,EA3FpB;EA4FVC,uBAAA,EAAyB,EA5Ff;EA6FVC,2BAAA,EAA6B,EA7FnB;EA8FVC,wBAAA,EAA0B,EA9FhB;EA+FVC,aAAA,EAAe;AA/FL,CAAZ;AA/OA5O,WAAA,GAAAoJ,GAAA;AAiVA,MAAMyF,iBAAA,GAAoB;EACxBC,aAAA,EAAe,CADS;EAExBC,kBAAA,EAAoB;AAFI,CAA1B;AAjVA/O,yBAAA,GAAA6O,iBAAA;AAsVA,IAAIG,SAAA,GAAYlG,cAAA,CAAeE,QAA/B;AAEA,SAASiG,iBAATA,CAA2BC,KAA3B,EAAkC;EAChC,IAAIC,MAAA,CAAOC,SAAP,CAAiBF,KAAjB,CAAJ,EAA6B;IAC3BF,SAAA,GAAYE,KAAZ;EAD2B;AADG;AAMlC,SAASG,iBAATA,CAAA,EAA6B;EAC3B,OAAOL,SAAP;AAD2B;AAO7B,SAASM,IAATA,CAAcC,GAAd,EAAmB;EACjB,IAAIP,SAAA,IAAalG,cAAA,CAAeG,KAAhC,EAAuC;IACrCuG,OAAA,CAAQC,GAAR,CAAa,SAAQF,GAAT,EAAZ;EADqC;AADtB;AAOnB,SAASG,IAATA,CAAcH,GAAd,EAAmB;EACjB,IAAIP,SAAA,IAAalG,cAAA,CAAeE,QAAhC,EAA0C;IACxCwG,OAAA,CAAQC,GAAR,CAAa,YAAWF,GAAZ,EAAZ;EADwC;AADzB;AAMnB,SAASI,WAATA,CAAqBJ,GAArB,EAA0B;EACxB,MAAM,IAAIK,KAAJ,CAAUL,GAAV,CAAN;AADwB;AAI1B,SAASM,MAATA,CAAgBC,IAAhB,EAAsBP,GAAtB,EAA2B;EACzB,IAAI,CAACO,IAAL,EAAW;IACTH,WAAA,CAAYJ,GAAZ;EADS;AADc;AAO3B,SAASQ,gBAATA,CAA0BC,GAA1B,EAA+B;EAC7B,QAAQA,GAAA,EAAKC,QAAb;IACE,KAAK,OAAL;IACA,KAAK,QAAL;IACA,KAAK,MAAL;IACA,KAAK,SAAL;IACA,KAAK,MAAL;MACE,OAAO,IAAP;IACF;MACE,OAAO,KAAP;EARJ;AAD6B;AAqB/B,SAASC,sBAATA,CAAgCF,GAAhC,EAAqCG,OAAA,GAAU,IAA/C,EAAqDC,OAAA,GAAU,IAA/D,EAAqE;EACnE,IAAI,CAACJ,GAAL,EAAU;IACR,OAAO,IAAP;EADQ;EAGV,IAAI;IACF,IAAII,OAAA,IAAW,OAAOJ,GAAP,KAAe,QAA9B,EAAwC;MAEtC,IAAII,OAAA,CAAQC,kBAAR,IAA8BL,GAAA,CAAIM,UAAJ,CAAe,MAAf,CAAlC,EAA0D;QACxD,MAAMC,IAAA,GAAOP,GAAA,CAAIQ,KAAJ,CAAU,KAAV,CAAb;QAGA,IAAID,IAAA,EAAME,MAAN,IAAgB,CAApB,EAAuB;UACrBT,GAAA,GAAO,UAASA,GAAV,EAAN;QADqB;MAJiC;MAW1D,IAAII,OAAA,CAAQM,kBAAZ,EAAgC;QAC9B,IAAI;UACFV,GAAA,GAAMW,kBAAA,CAAmBX,GAAnB,CAAN;QADE,CAAJ,CAEE,MAAM;MAHsB;IAbM;IAoBxC,MAAMY,WAAA,GAAcT,OAAA,GAAU,IAAIU,GAAJ,CAAQb,GAAR,EAAaG,OAAb,CAAV,GAAkC,IAAIU,GAAJ,CAAQb,GAAR,CAAtD;IACA,IAAID,gBAAA,CAAiBa,WAAjB,CAAJ,EAAmC;MACjC,OAAOA,WAAP;IADiC;EAtBjC,CAAJ,CAyBE,MAAM;EAGR,OAAO,IAAP;AAhCmE;AAmCrE,SAASE,MAATA,CAAgBC,GAAhB,EAAqBC,IAArB,EAA2BC,KAA3B,EAAkCC,eAAA,GAAkB,KAApD,EAA2D;EAOzDC,MAAA,CAAOC,cAAP,CAAsBL,GAAtB,EAA2BC,IAA3B,EAAiC;IAC/BC,KAD+B;IAE/BI,UAAA,EAAY,CAACH,eAFkB;IAG/BI,YAAA,EAAc,IAHiB;IAI/BC,QAAA,EAAU;EAJqB,CAAjC;EAMA,OAAON,KAAP;AAbyD;AAmB3D,MAAMO,aAAA,GAAiB,SAASC,oBAATA,CAAA,EAAgC;EAErD,SAASD,aAATA,CAAuBE,OAAvB,EAAgCC,IAAhC,EAAsC;IACpC,IAAI,KAAKC,WAAL,KAAqBJ,aAAzB,EAAwC;MACtC7B,WAAA,CAAY,kCAAZ;IADsC;IAGxC,KAAK+B,OAAL,GAAeA,OAAf;IACA,KAAKC,IAAL,GAAYA,IAAZ;EALoC;EAOtCH,aAAA,CAAcK,SAAd,GAA0B,IAAIjC,KAAJ,EAA1B;EACA4B,aAAA,CAAcI,WAAd,GAA4BJ,aAA5B;EAEA,OAAOA,aAAP;AAZqD,CAAjC,EAAtB;AAxcAxR,qBAAA,GAAAwR,aAAA;AAudA,MAAMM,iBAAN,SAAgCN,aAAhC,CAA8C;EAC5CI,YAAYrC,GAAZ,EAAiBwC,IAAjB,EAAuB;IACrB,MAAMxC,GAAN,EAAW,mBAAX;IACA,KAAKwC,IAAL,GAAYA,IAAZ;EAFqB;AADqB;AAvd9C/R,yBAAA,GAAA8R,iBAAA;AA8dA,MAAME,qBAAN,SAAoCR,aAApC,CAAkD;EAChDI,YAAYrC,GAAZ,EAAiB0C,OAAjB,EAA0B;IACxB,MAAM1C,GAAN,EAAW,uBAAX;IACA,KAAK0C,OAAL,GAAeA,OAAf;EAFwB;AADsB;AA9dlDjS,6BAAA,GAAAgS,qBAAA;AAqeA,MAAME,mBAAN,SAAkCV,aAAlC,CAAgD;EAC9CI,YAAYrC,GAAZ,EAAiB;IACf,MAAMA,GAAN,EAAW,qBAAX;EADe;AAD6B;AArehDvP,2BAAA,GAAAkS,mBAAA;AA2eA,MAAMC,mBAAN,SAAkCX,aAAlC,CAAgD;EAC9CI,YAAYrC,GAAZ,EAAiB;IACf,MAAMA,GAAN,EAAW,qBAAX;EADe;AAD6B;AA3ehDvP,2BAAA,GAAAmS,mBAAA;AAifA,MAAMC,2BAAN,SAA0CZ,aAA1C,CAAwD;EACtDI,YAAYrC,GAAZ,EAAiB8C,MAAjB,EAAyB;IACvB,MAAM9C,GAAN,EAAW,6BAAX;IACA,KAAK8C,MAAL,GAAcA,MAAd;EAFuB;AAD6B;AAjfxDrS,mCAAA,GAAAoS,2BAAA;AA2fA,MAAME,WAAN,SAA0Bd,aAA1B,CAAwC;EACtCI,YAAYrC,GAAZ,EAAiB;IACf,MAAMA,GAAN,EAAW,aAAX;EADe;AADqB;AA3fxCvP,mBAAA,GAAAsS,WAAA;AAogBA,MAAMC,cAAN,SAA6Bf,aAA7B,CAA2C;EACzCI,YAAYrC,GAAZ,EAAiB;IACf,MAAMA,GAAN,EAAW,gBAAX;EADe;AADwB;AApgB3CvP,sBAAA,GAAAuS,cAAA;AA0gBA,SAASC,aAATA,CAAuBC,KAAvB,EAA8B;EAC5B,IAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAA,EAAOhC,MAAP,KAAkBiC,SAAnD,EAA8D;IAC5D/C,WAAA,CAAY,oCAAZ;EAD4D;EAG9D,MAAMc,MAAA,GAASgC,KAAA,CAAMhC,MAArB;EACA,MAAMkC,kBAAA,GAAqB,IAA3B;EACA,IAAIlC,MAAA,GAASkC,kBAAb,EAAiC;IAC/B,OAAOC,MAAA,CAAOC,YAAP,CAAoBC,KAApB,CAA0B,IAA1B,EAAgCL,KAAhC,CAAP;EAD+B;EAGjC,MAAMM,MAAA,GAAS,EAAf;EACA,KAAK,IAAIC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvC,MAApB,EAA4BuC,CAAA,IAAKL,kBAAjC,EAAqD;IACnD,MAAMM,QAAA,GAAWC,IAAA,CAAKC,GAAL,CAASH,CAAA,GAAIL,kBAAb,EAAiClC,MAAjC,CAAjB;IACA,MAAM2C,KAAA,GAAQX,KAAA,CAAMY,QAAN,CAAeL,CAAf,EAAkBC,QAAlB,CAAd;IACAF,MAAA,CAAOO,IAAP,CAAYV,MAAA,CAAOC,YAAP,CAAoBC,KAApB,CAA0B,IAA1B,EAAgCM,KAAhC,CAAZ;EAHmD;EAKrD,OAAOL,MAAA,CAAOQ,IAAP,CAAY,EAAZ,CAAP;AAf4B;AAkB9B,SAASC,aAATA,CAAuBC,GAAvB,EAA4B;EAC1B,IAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;IAC3B9D,WAAA,CAAY,oCAAZ;EAD2B;EAG7B,MAAMc,MAAA,GAASgD,GAAA,CAAIhD,MAAnB;EACA,MAAMgC,KAAA,GAAQ,IAAIiB,UAAJ,CAAejD,MAAf,CAAd;EACA,KAAK,IAAIuC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvC,MAApB,EAA4B,EAAEuC,CAA9B,EAAiC;IAC/BP,KAAA,CAAMO,CAAN,IAAWS,GAAA,CAAIE,UAAJ,CAAeX,CAAf,IAAoB,IAA/B;EAD+B;EAGjC,OAAOP,KAAP;AAT0B;AAY5B,SAASmB,QAATA,CAAkB3C,KAAlB,EAAyB;EAOvB,OAAO2B,MAAA,CAAOC,YAAP,CACJ5B,KAAA,IAAS,EAAV,GAAgB,IADX,EAEJA,KAAA,IAAS,EAAV,GAAgB,IAFX,EAGJA,KAAA,IAAS,CAAV,GAAe,IAHV,EAILA,KAAA,GAAQ,IAJH,CAAP;AAPuB;AAezB,SAAS4C,UAATA,CAAoB9C,GAApB,EAAyB;EACvB,OAAOI,MAAA,CAAO2C,IAAP,CAAY/C,GAAZ,EAAiBN,MAAxB;AADuB;AAMzB,SAASsD,aAATA,CAAuBC,GAAvB,EAA4B;EAC1B,MAAMjD,GAAA,GAAMI,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAZ;EACA,WAAW,CAACC,GAAD,EAAMjD,KAAN,CAAX,IAA2B+C,GAA3B,EAAgC;IAC9BjD,GAAA,CAAImD,GAAJ,IAAWjD,KAAX;EAD8B;EAGhC,OAAOF,GAAP;AAL0B;AAS5B,SAASoD,cAATA,CAAA,EAA0B;EACxB,MAAMC,OAAA,GAAU,IAAIV,UAAJ,CAAe,CAAf,CAAhB;EACAU,OAAA,CAAQ,CAAR,IAAa,CAAb;EACA,MAAMC,MAAA,GAAS,IAAIC,WAAJ,CAAgBF,OAAA,CAAQG,MAAxB,EAAgC,CAAhC,EAAmC,CAAnC,CAAf;EACA,OAAOF,MAAA,CAAO,CAAP,MAAc,CAArB;AAJwB;AAQ1B,SAASG,eAATA,CAAA,EAA2B;EACzB,IAAI;IACF,IAAIC,QAAJ,CAAa,EAAb;IACA,OAAO,IAAP;EAFE,CAAJ,CAGE,MAAM;IACN,OAAO,KAAP;EADM;AAJiB;AAS3B,MAAMC,WAAN,CAAkB;EAChB,WAAWP,cAAXA,CAAA,EAA4B;IAC1B,OAAOrD,MAAA,CAAO,IAAP,EAAa,gBAAb,EAA+BqD,cAAA,EAA/B,CAAP;EAD0B;EAI5B,WAAWK,eAAXA,CAAA,EAA6B;IAC3B,OAAO1D,MAAA,CAAO,IAAP,EAAa,iBAAb,EAAgC0D,eAAA,EAAhC,CAAP;EAD2B;EAI7B,WAAWG,0BAAXA,CAAA,EAAwC;IACtC,OAAO7D,MAAA,CACL,IADK,EAEL,4BAFK,EAGL,OAAO8D,eAAP,KAA2B,WAHtB,CAAP;EADsC;EAQxC,WAAWC,QAAXA,CAAA,EAAsB;IACpB,IAEE,OAAOC,SAAP,KAAqB,WAFvB,EAGE;MACA,OAAOhE,MAAA,CAAO,IAAP,EAAa,UAAb,EAAyB;QAAEiE,KAAA,EAAO,KAAT;QAAgBC,KAAA,EAAO;MAAvB,CAAzB,CAAP;IADA;IAGF,OAAOlE,MAAA,CAAO,IAAP,EAAa,UAAb,EAAyB;MAC9BiE,KAAA,EAAOD,SAAA,CAAUD,QAAV,CAAmBI,QAAnB,CAA4B,KAA5B,CADuB;MAE9BD,KAAA,EAAOF,SAAA,CAAUD,QAAV,CAAmBI,QAAnB,CAA4B,KAA5B;IAFuB,CAAzB,CAAP;EAPoB;EAatB,WAAWC,mBAAXA,CAAA,EAAiC;IAC/B,OAAOpE,MAAA,CACL,IADK,EAEL,qBAFK,EAGLqE,UAAA,CAAWC,GAAX,EAAgBC,QAAhB,GAA2B,0BAA3B,CAHK,CAAP;EAD+B;AA9BjB;AAvlBlBrV,mBAAA,GAAA0U,WAAA;AA8nBA,MAAMY,UAAA,GAAa,CAAC,GAAGC,KAAA,CAAM,GAAN,EAAWzB,IAAX,EAAJ,EAAuBE,GAAvB,CAA2BwB,CAAA,IAC5CA,CAAA,CAAEC,QAAF,CAAW,EAAX,EAAeC,QAAf,CAAwB,CAAxB,EAA2B,GAA3B,CADiB,CAAnB;AAIA,MAAMC,IAAN,CAAW;EACT,OAAOC,YAAPA,CAAoBC,CAApB,EAAuBC,CAAvB,EAA0BC,CAA1B,EAA6B;IAC3B,OAAQ,IAAGT,UAAA,CAAWO,CAAX,CAAJ,GAAoBP,UAAA,CAAWQ,CAAX,CAApB,GAAoCR,UAAA,CAAWS,CAAX,CAApC,EAAP;EAD2B;EAO7B,OAAOC,WAAPA,CAAmBhM,SAAnB,EAA8BiM,MAA9B,EAAsC;IACpC,IAAIC,IAAJ;IACA,IAAIlM,SAAA,CAAU,CAAV,CAAJ,EAAkB;MAChB,IAAIA,SAAA,CAAU,CAAV,IAAe,CAAnB,EAAsB;QACpBkM,IAAA,GAAOD,MAAA,CAAO,CAAP,CAAP;QACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;QACAA,MAAA,CAAO,CAAP,IAAYC,IAAZ;MAHoB;MAKtBD,MAAA,CAAO,CAAP,KAAajM,SAAA,CAAU,CAAV,CAAb;MACAiM,MAAA,CAAO,CAAP,KAAajM,SAAA,CAAU,CAAV,CAAb;MAEA,IAAIA,SAAA,CAAU,CAAV,IAAe,CAAnB,EAAsB;QACpBkM,IAAA,GAAOD,MAAA,CAAO,CAAP,CAAP;QACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;QACAA,MAAA,CAAO,CAAP,IAAYC,IAAZ;MAHoB;MAKtBD,MAAA,CAAO,CAAP,KAAajM,SAAA,CAAU,CAAV,CAAb;MACAiM,MAAA,CAAO,CAAP,KAAajM,SAAA,CAAU,CAAV,CAAb;IAfgB,CAAlB,MAgBO;MACLkM,IAAA,GAAOD,MAAA,CAAO,CAAP,CAAP;MACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;MACAA,MAAA,CAAO,CAAP,IAAYC,IAAZ;MACAA,IAAA,GAAOD,MAAA,CAAO,CAAP,CAAP;MACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;MACAA,MAAA,CAAO,CAAP,IAAYC,IAAZ;MAEA,IAAIlM,SAAA,CAAU,CAAV,IAAe,CAAnB,EAAsB;QACpBkM,IAAA,GAAOD,MAAA,CAAO,CAAP,CAAP;QACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;QACAA,MAAA,CAAO,CAAP,IAAYC,IAAZ;MAHoB;MAKtBD,MAAA,CAAO,CAAP,KAAajM,SAAA,CAAU,CAAV,CAAb;MACAiM,MAAA,CAAO,CAAP,KAAajM,SAAA,CAAU,CAAV,CAAb;MAEA,IAAIA,SAAA,CAAU,CAAV,IAAe,CAAnB,EAAsB;QACpBkM,IAAA,GAAOD,MAAA,CAAO,CAAP,CAAP;QACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;QACAA,MAAA,CAAO,CAAP,IAAYC,IAAZ;MAHoB;MAKtBD,MAAA,CAAO,CAAP,KAAajM,SAAA,CAAU,CAAV,CAAb;MACAiM,MAAA,CAAO,CAAP,KAAajM,SAAA,CAAU,CAAV,CAAb;IAtBK;IAwBPiM,MAAA,CAAO,CAAP,KAAajM,SAAA,CAAU,CAAV,CAAb;IACAiM,MAAA,CAAO,CAAP,KAAajM,SAAA,CAAU,CAAV,CAAb;IACAiM,MAAA,CAAO,CAAP,KAAajM,SAAA,CAAU,CAAV,CAAb;IACAiM,MAAA,CAAO,CAAP,KAAajM,SAAA,CAAU,CAAV,CAAb;EA7CoC;EAiDtC,OAAOA,SAAPA,CAAiBmM,EAAjB,EAAqBC,EAArB,EAAyB;IACvB,OAAO,CACLD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CADnB,EAELD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAFnB,EAGLD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAHnB,EAILD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAJnB,EAKLD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAxB,GAAgCD,EAAA,CAAG,CAAH,CAL3B,EAMLA,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAxB,GAAgCD,EAAA,CAAG,CAAH,CAN3B,CAAP;EADuB;EAYzB,OAAOE,cAAPA,CAAsBC,CAAtB,EAAyBC,CAAzB,EAA4B;IAC1B,MAAMC,EAAA,GAAKF,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAAP,GAAcD,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAArB,GAA4BA,CAAA,CAAE,CAAF,CAAvC;IACA,MAAME,EAAA,GAAKH,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAAP,GAAcD,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAArB,GAA4BA,CAAA,CAAE,CAAF,CAAvC;IACA,OAAO,CAACC,EAAD,EAAKC,EAAL,CAAP;EAH0B;EAM5B,OAAOC,qBAAPA,CAA6BJ,CAA7B,EAAgCC,CAAhC,EAAmC;IACjC,MAAMI,CAAA,GAAIJ,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAA/B;IACA,MAAMC,EAAA,GAAM,CAAAF,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAAP,GAAcD,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAArB,GAA4BA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAnC,GAA0CA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAjD,IAAyDI,CAArE;IACA,MAAMF,EAAA,GAAM,EAACH,CAAA,CAAE,CAAF,CAAD,GAAQC,CAAA,CAAE,CAAF,CAAR,GAAeD,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAAtB,GAA6BA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAApC,GAA2CA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAlD,IAA0DI,CAAtE;IACA,OAAO,CAACH,EAAD,EAAKC,EAAL,CAAP;EAJiC;EASnC,OAAOG,0BAAPA,CAAkCf,CAAlC,EAAqCU,CAArC,EAAwC;IACtC,MAAMM,EAAA,GAAK,KAAKR,cAAL,CAAoBR,CAApB,EAAuBU,CAAvB,CAAX;IACA,MAAMO,EAAA,GAAK,KAAKT,cAAL,CAAoBR,CAAA,CAAEkB,KAAF,CAAQ,CAAR,EAAW,CAAX,CAApB,EAAmCR,CAAnC,CAAX;IACA,MAAMS,EAAA,GAAK,KAAKX,cAAL,CAAoB,CAACR,CAAA,CAAE,CAAF,CAAD,EAAOA,CAAA,CAAE,CAAF,CAAP,CAApB,EAAkCU,CAAlC,CAAX;IACA,MAAMU,EAAA,GAAK,KAAKZ,cAAL,CAAoB,CAACR,CAAA,CAAE,CAAF,CAAD,EAAOA,CAAA,CAAE,CAAF,CAAP,CAApB,EAAkCU,CAAlC,CAAX;IACA,OAAO,CACLrD,IAAA,CAAKC,GAAL,CAAS0D,EAAA,CAAG,CAAH,CAAT,EAAgBC,EAAA,CAAG,CAAH,CAAhB,EAAuBE,EAAA,CAAG,CAAH,CAAvB,EAA8BC,EAAA,CAAG,CAAH,CAA9B,CADK,EAEL/D,IAAA,CAAKC,GAAL,CAAS0D,EAAA,CAAG,CAAH,CAAT,EAAgBC,EAAA,CAAG,CAAH,CAAhB,EAAuBE,EAAA,CAAG,CAAH,CAAvB,EAA8BC,EAAA,CAAG,CAAH,CAA9B,CAFK,EAGL/D,IAAA,CAAKgE,GAAL,CAASL,EAAA,CAAG,CAAH,CAAT,EAAgBC,EAAA,CAAG,CAAH,CAAhB,EAAuBE,EAAA,CAAG,CAAH,CAAvB,EAA8BC,EAAA,CAAG,CAAH,CAA9B,CAHK,EAIL/D,IAAA,CAAKgE,GAAL,CAASL,EAAA,CAAG,CAAH,CAAT,EAAgBC,EAAA,CAAG,CAAH,CAAhB,EAAuBE,EAAA,CAAG,CAAH,CAAvB,EAA8BC,EAAA,CAAG,CAAH,CAA9B,CAJK,CAAP;EALsC;EAaxC,OAAOE,gBAAPA,CAAwBZ,CAAxB,EAA2B;IACzB,MAAMI,CAAA,GAAIJ,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAA/B;IACA,OAAO,CACLA,CAAA,CAAE,CAAF,IAAOI,CADF,EAEL,CAACJ,CAAA,CAAE,CAAF,CAAD,GAAQI,CAFH,EAGL,CAACJ,CAAA,CAAE,CAAF,CAAD,GAAQI,CAHH,EAILJ,CAAA,CAAE,CAAF,IAAOI,CAJF,EAKJ,CAAAJ,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAArB,IAA6BI,CALzB,EAMJ,CAAAJ,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAArB,IAA6BI,CANzB,CAAP;EAFyB;EAe3B,OAAOS,6BAAPA,CAAqCb,CAArC,EAAwC;IACtC,MAAMc,SAAA,GAAY,CAACd,CAAA,CAAE,CAAF,CAAD,EAAOA,CAAA,CAAE,CAAF,CAAP,EAAaA,CAAA,CAAE,CAAF,CAAb,EAAmBA,CAAA,CAAE,CAAF,CAAnB,CAAlB;IAGA,MAAMe,CAAA,GAAIf,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAP,GAAsBd,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAvC;IACA,MAAMtB,CAAA,GAAIQ,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAP,GAAsBd,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAvC;IACA,MAAME,CAAA,GAAIhB,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAP,GAAsBd,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAvC;IACA,MAAMV,CAAA,GAAIJ,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAP,GAAsBd,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAvC;IAGA,MAAMG,KAAA,GAAS,CAAAF,CAAA,GAAIX,CAAJ,IAAS,CAAxB;IACA,MAAMc,MAAA,GAASvE,IAAA,CAAKwE,IAAL,CAAW,CAAAJ,CAAA,GAAIX,CAAJ,KAAU,CAAX,GAAe,KAAKW,CAAA,GAAIX,CAAJ,GAAQY,CAAA,GAAIxB,CAAZ,CAA9B,IAAgD,CAA/D;IACA,MAAM4B,EAAA,GAAKH,KAAA,GAAQC,MAAR,IAAkB,CAA7B;IACA,MAAMG,EAAA,GAAKJ,KAAA,GAAQC,MAAR,IAAkB,CAA7B;IAGA,OAAO,CAACvE,IAAA,CAAKwE,IAAL,CAAUC,EAAV,CAAD,EAAgBzE,IAAA,CAAKwE,IAAL,CAAUE,EAAV,CAAhB,CAAP;EAhBsC;EAuBxC,OAAOC,aAAPA,CAAqBC,IAArB,EAA2B;IACzB,MAAMjC,CAAA,GAAIiC,IAAA,CAAKf,KAAL,CAAW,CAAX,CAAV;IACA,IAAIe,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAd,EAAuB;MACrBjC,CAAA,CAAE,CAAF,IAAOiC,IAAA,CAAK,CAAL,CAAP;MACAjC,CAAA,CAAE,CAAF,IAAOiC,IAAA,CAAK,CAAL,CAAP;IAFqB;IAIvB,IAAIA,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAd,EAAuB;MACrBjC,CAAA,CAAE,CAAF,IAAOiC,IAAA,CAAK,CAAL,CAAP;MACAjC,CAAA,CAAE,CAAF,IAAOiC,IAAA,CAAK,CAAL,CAAP;IAFqB;IAIvB,OAAOjC,CAAP;EAVyB;EAgB3B,OAAOkC,SAAPA,CAAiBC,KAAjB,EAAwBC,KAAxB,EAA+B;IAC7B,MAAMC,IAAA,GAAOhF,IAAA,CAAKgE,GAAL,CACXhE,IAAA,CAAKC,GAAL,CAAS6E,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CADW,EAEX9E,IAAA,CAAKC,GAAL,CAAS8E,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CAFW,CAAb;IAIA,MAAME,KAAA,GAAQjF,IAAA,CAAKC,GAAL,CACZD,IAAA,CAAKgE,GAAL,CAASc,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CADY,EAEZ9E,IAAA,CAAKgE,GAAL,CAASe,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CAFY,CAAd;IAIA,IAAIC,IAAA,GAAOC,KAAX,EAAkB;MAChB,OAAO,IAAP;IADgB;IAGlB,MAAMC,IAAA,GAAOlF,IAAA,CAAKgE,GAAL,CACXhE,IAAA,CAAKC,GAAL,CAAS6E,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CADW,EAEX9E,IAAA,CAAKC,GAAL,CAAS8E,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CAFW,CAAb;IAIA,MAAMI,KAAA,GAAQnF,IAAA,CAAKC,GAAL,CACZD,IAAA,CAAKgE,GAAL,CAASc,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CADY,EAEZ9E,IAAA,CAAKgE,GAAL,CAASe,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CAFY,CAAd;IAIA,IAAIG,IAAA,GAAOC,KAAX,EAAkB;MAChB,OAAO,IAAP;IADgB;IAIlB,OAAO,CAACH,IAAD,EAAOE,IAAP,EAAaD,KAAb,EAAoBE,KAApB,CAAP;EAxB6B;EA4B/B,OAAOC,iBAAPA,CAAyBC,EAAzB,EAA6BC,EAA7B,EAAiCC,EAAjC,EAAqCC,EAArC,EAAyCC,EAAzC,EAA6CC,EAA7C,EAAiDC,EAAjD,EAAqDC,EAArD,EAAyD;IACvD,MAAMC,OAAA,GAAU,EAAhB;MACEC,MAAA,GAAS,CAAC,EAAD,EAAK,EAAL,CADX;IAEA,IAAI1B,CAAJ,EAAOvB,CAAP,EAAUwB,CAAV,EAAa0B,CAAb,EAAgBC,EAAhB,EAAoBC,EAApB,EAAwBC,IAAxB,EAA8BC,QAA9B;IACA,KAAK,IAAIrG,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;MAC1B,IAAIA,CAAA,KAAM,CAAV,EAAa;QACX+C,CAAA,GAAI,IAAIwC,EAAJ,GAAS,KAAKE,EAAd,GAAmB,IAAIE,EAA3B;QACArB,CAAA,GAAI,CAAC,CAAD,GAAKiB,EAAL,GAAU,IAAIE,EAAd,GAAmB,IAAIE,EAAvB,GAA4B,IAAIE,EAApC;QACAtB,CAAA,GAAI,IAAIkB,EAAJ,GAAS,IAAIF,EAAjB;MAHW,CAAb,MAIO;QACLxC,CAAA,GAAI,IAAIyC,EAAJ,GAAS,KAAKE,EAAd,GAAmB,IAAIE,EAA3B;QACAtB,CAAA,GAAI,CAAC,CAAD,GAAKkB,EAAL,GAAU,IAAIE,EAAd,GAAmB,IAAIE,EAAvB,GAA4B,IAAIE,EAApC;QACAvB,CAAA,GAAI,IAAImB,EAAJ,GAAS,IAAIF,EAAjB;MAHK;MAKP,IAAItF,IAAA,CAAKoG,GAAL,CAAShC,CAAT,IAAc,KAAlB,EAAyB;QACvB,IAAIpE,IAAA,CAAKoG,GAAL,CAASvD,CAAT,IAAc,KAAlB,EAAyB;UACvB;QADuB;QAGzBkD,CAAA,GAAI,CAAC1B,CAAD,GAAKxB,CAAT;QACA,IAAI,IAAIkD,CAAJ,IAASA,CAAA,GAAI,CAAjB,EAAoB;UAClBF,OAAA,CAAQzF,IAAR,CAAa2F,CAAb;QADkB;QAGpB;MARuB;MAUzBG,IAAA,GAAOrD,CAAA,GAAIA,CAAJ,GAAQ,IAAIwB,CAAJ,GAAQD,CAAvB;MACA+B,QAAA,GAAWnG,IAAA,CAAKwE,IAAL,CAAU0B,IAAV,CAAX;MACA,IAAIA,IAAA,GAAO,CAAX,EAAc;QACZ;MADY;MAGdF,EAAA,GAAM,EAACnD,CAAD,GAAKsD,QAAL,KAAkB,IAAI/B,CAAJ,CAAxB;MACA,IAAI,IAAI4B,EAAJ,IAAUA,EAAA,GAAK,CAAnB,EAAsB;QACpBH,OAAA,CAAQzF,IAAR,CAAa4F,EAAb;MADoB;MAGtBC,EAAA,GAAM,EAACpD,CAAD,GAAKsD,QAAL,KAAkB,IAAI/B,CAAJ,CAAxB;MACA,IAAI,IAAI6B,EAAJ,IAAUA,EAAA,GAAK,CAAnB,EAAsB;QACpBJ,OAAA,CAAQzF,IAAR,CAAa6F,EAAb;MADoB;IA9BI;IAmC5B,IAAII,CAAA,GAAIR,OAAA,CAAQtI,MAAhB;MACE+I,EADF;IAEA,MAAMC,IAAA,GAAOF,CAAb;IACA,OAAOA,CAAA,EAAP,EAAY;MACVN,CAAA,GAAIF,OAAA,CAAQQ,CAAR,CAAJ;MACAC,EAAA,GAAK,IAAIP,CAAT;MACAD,MAAA,CAAO,CAAP,EAAUO,CAAV,IACEC,EAAA,GAAKA,EAAL,GAAUA,EAAV,GAAejB,EAAf,GACA,IAAIiB,EAAJ,GAASA,EAAT,GAAcP,CAAd,GAAkBR,EADlB,GAEA,IAAIe,EAAJ,GAASP,CAAT,GAAaA,CAAb,GAAiBN,EAFjB,GAGAM,CAAA,GAAIA,CAAJ,GAAQA,CAAR,GAAYJ,EAJd;MAKAG,MAAA,CAAO,CAAP,EAAUO,CAAV,IACEC,EAAA,GAAKA,EAAL,GAAUA,EAAV,GAAehB,EAAf,GACA,IAAIgB,EAAJ,GAASA,EAAT,GAAcP,CAAd,GAAkBP,EADlB,GAEA,IAAIc,EAAJ,GAASP,CAAT,GAAaA,CAAb,GAAiBL,EAFjB,GAGAK,CAAA,GAAIA,CAAJ,GAAQA,CAAR,GAAYH,EAJd;IARU;IAeZE,MAAA,CAAO,CAAP,EAAUS,IAAV,IAAkBlB,EAAlB;IACAS,MAAA,CAAO,CAAP,EAAUS,IAAV,IAAkBjB,EAAlB;IACAQ,MAAA,CAAO,CAAP,EAAUS,IAAA,GAAO,CAAjB,IAAsBZ,EAAtB;IACAG,MAAA,CAAO,CAAP,EAAUS,IAAA,GAAO,CAAjB,IAAsBX,EAAtB;IACAE,MAAA,CAAO,CAAP,EAAUvI,MAAV,GAAmBuI,MAAA,CAAO,CAAP,EAAUvI,MAAV,GAAmBgJ,IAAA,GAAO,CAA7C;IAEA,OAAO,CACLvG,IAAA,CAAKC,GAAL,CAAS,GAAG6F,MAAA,CAAO,CAAP,CAAZ,CADK,EAEL9F,IAAA,CAAKC,GAAL,CAAS,GAAG6F,MAAA,CAAO,CAAP,CAAZ,CAFK,EAGL9F,IAAA,CAAKgE,GAAL,CAAS,GAAG8B,MAAA,CAAO,CAAP,CAAZ,CAHK,EAIL9F,IAAA,CAAKgE,GAAL,CAAS,GAAG8B,MAAA,CAAO,CAAP,CAAZ,CAJK,CAAP;EA/DuD;AAnLhD;AAloBXhZ,YAAA,GAAA2V,IAAA;AA63BA,MAAM+D,uBAAA,GAA0B,CAC9B,CAD8B,EAC3B,CAD2B,EACxB,CADwB,EACrB,CADqB,EAClB,CADkB,EACf,CADe,EACZ,CADY,EACT,CADS,EACN,CADM,EACH,CADG,EACA,CADA,EACG,CADH,EACM,CADN,EACS,CADT,EACY,CADZ,EACe,CADf,EACkB,CADlB,EACqB,CADrB,EACwB,CADxB,EAC2B,CAD3B,EAC8B,CAD9B,EACiC,CADjC,EACoC,CADpC,EACuC,CADvC,EAC0C,KAD1C,EAE9B,KAF8B,EAEvB,KAFuB,EAEhB,KAFgB,EAET,KAFS,EAEF,KAFE,EAEK,KAFL,EAEY,KAFZ,EAEmB,CAFnB,EAEsB,CAFtB,EAEyB,CAFzB,EAE4B,CAF5B,EAE+B,CAF/B,EAEkC,CAFlC,EAEqC,CAFrC,EAEwC,CAFxC,EAE2C,CAF3C,EAE8C,CAF9C,EAG9B,CAH8B,EAG3B,CAH2B,EAGxB,CAHwB,EAGrB,CAHqB,EAGlB,CAHkB,EAGf,CAHe,EAGZ,CAHY,EAGT,CAHS,EAGN,CAHM,EAGH,CAHG,EAGA,CAHA,EAGG,CAHH,EAGM,CAHN,EAGS,CAHT,EAGY,CAHZ,EAGe,CAHf,EAGkB,CAHlB,EAGqB,CAHrB,EAGwB,CAHxB,EAG2B,CAH3B,EAG8B,CAH9B,EAGiC,CAHjC,EAGoC,CAHpC,EAGuC,CAHvC,EAG0C,CAH1C,EAG6C,CAH7C,EAI9B,CAJ8B,EAI3B,CAJ2B,EAIxB,CAJwB,EAIrB,CAJqB,EAIlB,CAJkB,EAIf,CAJe,EAIZ,CAJY,EAIT,CAJS,EAIN,CAJM,EAIH,CAJG,EAIA,CAJA,EAIG,CAJH,EAIM,CAJN,EAIS,CAJT,EAIY,CAJZ,EAIe,CAJf,EAIkB,CAJlB,EAIqB,CAJrB,EAIwB,CAJxB,EAI2B,CAJ3B,EAI8B,CAJ9B,EAIiC,CAJjC,EAIoC,CAJpC,EAIuC,CAJvC,EAI0C,CAJ1C,EAI6C,CAJ7C,EAK9B,CAL8B,EAK3B,CAL2B,EAKxB,CALwB,EAKrB,CALqB,EAKlB,CALkB,EAKf,CALe,EAKZ,CALY,EAKT,CALS,EAKN,CALM,EAKH,CALG,EAKA,CALA,EAKG,CALH,EAKM,CALN,EAKS,CALT,EAKY,CALZ,EAKe,CALf,EAKkB,CALlB,EAKqB,CALrB,EAKwB,CALxB,EAK2B,CAL3B,EAK8B,CAL9B,EAKiC,CALjC,EAKoC,CALpC,EAKuC,CALvC,EAK0C,CAL1C,EAK6C,CAL7C,EAM9B,CAN8B,EAM3B,CAN2B,EAMxB,CANwB,EAMrB,CANqB,EAMlB,CANkB,EAMf,CANe,EAMZ,CANY,EAMT,CANS,EAMN,MANM,EAME,MANF,EAMU,MANV,EAMkB,MANlB,EAM0B,MAN1B,EAMkC,MANlC,EAM0C,KAN1C,EAO9B,MAP8B,EAOtB,MAPsB,EAOd,MAPc,EAON,MAPM,EAOE,MAPF,EAOU,MAPV,EAOkB,MAPlB,EAO0B,MAP1B,EAOkC,MAPlC,EAQ9B,MAR8B,EAQtB,MARsB,EAQd,MARc,EAQN,MARM,EAQE,MARF,EAQU,KARV,EAQiB,KARjB,EAQwB,KARxB,EAQ+B,KAR/B,EAQsC,KARtC,EAS9B,KAT8B,EASvB,KATuB,EAShB,KATgB,EAST,KATS,EASF,KATE,EASK,CATL,EASQ,MATR,CAAhC;AAYA,SAASC,iBAATA,CAA2BlG,GAA3B,EAAgC;EAC9B,IAAIA,GAAA,CAAI,CAAJ,KAAU,MAAd,EAAsB;IACpB,IAAImG,QAAJ;IACA,IAAInG,GAAA,CAAI,CAAJ,MAAW,MAAX,IAAqBA,GAAA,CAAI,CAAJ,MAAW,MAApC,EAA4C;MAC1CmG,QAAA,GAAW,UAAX;IAD0C,CAA5C,MAEO,IAAInG,GAAA,CAAI,CAAJ,MAAW,MAAX,IAAqBA,GAAA,CAAI,CAAJ,MAAW,MAApC,EAA4C;MACjDmG,QAAA,GAAW,UAAX;IADiD,CAA5C,MAEA,IAAInG,GAAA,CAAI,CAAJ,MAAW,MAAX,IAAqBA,GAAA,CAAI,CAAJ,MAAW,MAAhC,IAA0CA,GAAA,CAAI,CAAJ,MAAW,MAAzD,EAAiE;MACtEmG,QAAA,GAAW,OAAX;IADsE;IAIxE,IAAIA,QAAJ,EAAc;MACZ,IAAI;QACF,MAAMC,OAAA,GAAU,IAAIC,WAAJ,CAAgBF,QAAhB,EAA0B;UAAEG,KAAA,EAAO;QAAT,CAA1B,CAAhB;QACA,MAAMxF,MAAA,GAASf,aAAA,CAAcC,GAAd,CAAf;QACA,OAAOoG,OAAA,CAAQG,MAAR,CAAezF,MAAf,CAAP;MAHE,CAAJ,CAIE,OAAO0F,EAAP,EAAW;QACXvK,IAAA,CAAM,uBAAsBuK,EAAG,IAA/B;MADW;IALD;EAVM;EAqBtB,MAAMlH,MAAA,GAAS,EAAf;EACA,KAAK,IAAIC,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKzG,GAAA,CAAIhD,MAApB,EAA4BuC,CAAA,GAAIkH,EAArC,EAAyClH,CAAA,EAAzC,EAA8C;IAC5C,MAAMjB,IAAA,GAAO2H,uBAAA,CAAwBjG,GAAA,CAAIE,UAAJ,CAAeX,CAAf,CAAxB,CAAb;IACAD,MAAA,CAAOO,IAAP,CAAYvB,IAAA,GAAOa,MAAA,CAAOC,YAAP,CAAoBd,IAApB,CAAP,GAAmC0B,GAAA,CAAI0G,MAAJ,CAAWnH,CAAX,CAA/C;EAF4C;EAI9C,OAAOD,MAAA,CAAOQ,IAAP,CAAY,EAAZ,CAAP;AA3B8B;AA8BhC,SAAS5C,kBAATA,CAA4B8C,GAA5B,EAAiC;EAC/B,OAAO2G,kBAAA,CAAmBC,MAAA,CAAO5G,GAAP,CAAnB,CAAP;AAD+B;AAIjC,SAAS6G,kBAATA,CAA4B7G,GAA5B,EAAiC;EAC/B,OAAO8G,QAAA,CAASC,kBAAA,CAAmB/G,GAAnB,CAAT,CAAP;AAD+B;AAIjC,SAASgH,aAATA,CAAuBC,CAAvB,EAA0B;EACxB,OAAO,OAAOA,CAAP,KAAa,QAAb,IAAyBA,CAAA,EAAGC,UAAH,KAAkBjI,SAAlD;AADwB;AAI1B,SAASkI,YAATA,CAAsBC,IAAtB,EAA4BC,IAA5B,EAAkC;EAChC,IAAID,IAAA,CAAKpK,MAAL,KAAgBqK,IAAA,CAAKrK,MAAzB,EAAiC;IAC/B,OAAO,KAAP;EAD+B;EAGjC,KAAK,IAAIuC,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKW,IAAA,CAAKpK,MAArB,EAA6BuC,CAAA,GAAIkH,EAAtC,EAA0ClH,CAAA,EAA1C,EAA+C;IAC7C,IAAI6H,IAAA,CAAK7H,CAAL,MAAY8H,IAAA,CAAK9H,CAAL,CAAhB,EAAyB;MACvB,OAAO,KAAP;IADuB;EADoB;EAK/C,OAAO,IAAP;AATgC;AAYlC,SAAS+H,mBAATA,CAA6BC,IAAA,GAAO,IAAIC,IAAJ,EAApC,EAAgD;EAC9C,MAAM1G,MAAA,GAAS,CACbyG,IAAA,CAAKE,cAAL,GAAsBzF,QAAtB,EADa,EAEZ,CAAAuF,IAAA,CAAKG,WAAL,KAAqB,CAArB,EAAwB1F,QAAzB,GAAoCC,QAApC,CAA6C,CAA7C,EAAgD,GAAhD,CAFa,EAGbsF,IAAA,CAAKI,UAAL,GAAkB3F,QAAlB,GAA6BC,QAA7B,CAAsC,CAAtC,EAAyC,GAAzC,CAHa,EAIbsF,IAAA,CAAKK,WAAL,GAAmB5F,QAAnB,GAA8BC,QAA9B,CAAuC,CAAvC,EAA0C,GAA1C,CAJa,EAKbsF,IAAA,CAAKM,aAAL,GAAqB7F,QAArB,GAAgCC,QAAhC,CAAyC,CAAzC,EAA4C,GAA5C,CALa,EAMbsF,IAAA,CAAKO,aAAL,GAAqB9F,QAArB,GAAgCC,QAAhC,CAAyC,CAAzC,EAA4C,GAA5C,CANa,CAAf;EASA,OAAOnB,MAAA,CAAOhB,IAAP,CAAY,EAAZ,CAAP;AAV8C;AAahD,MAAMiI,iBAAN,CAAwB;EACtB,CAAAC,OAAA,GAAW,KAAX;EAEA7J,YAAA,EAAc;IAIZ,KAAK8J,OAAL,GAAe,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;MAI9C,KAAKD,OAAL,GAAeE,IAAA,IAAQ;QACrB,KAAK,CAAAL,OAAL,GAAgB,IAAhB;QACAG,OAAA,CAAQE,IAAR;MAFqB,CAAvB;MAQA,KAAKD,MAAL,GAAcE,MAAA,IAAU;QAItB,KAAK,CAAAN,OAAL,GAAgB,IAAhB;QACAI,MAAA,CAAOE,MAAP;MALsB,CAAxB;IAZ8C,CAAjC,CAAf;EAJY;EA6Bd,IAAIN,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK,CAAAA,OAAZ;EADY;AAhCQ;AA58BxBzb,yBAAA,GAAAwb,iBAAA;AAi/BA,IAAIQ,cAAA,GAAiB,IAArB;AACA,IAAIC,gBAAA,GAAmB,IAAvB;AACA,SAASC,gBAATA,CAA0BzI,GAA1B,EAA+B;EAC7B,IAAI,CAACuI,cAAL,EAAqB;IAOnBA,cAAA,GACE,0UADF;IAEAC,gBAAA,GAAmB,IAAIE,GAAJ,CAAQ,CAAC,CAAC,GAAD,EAAM,IAAN,CAAD,CAAR,CAAnB;EATmB;EAWrB,OAAO1I,GAAA,CAAI2I,UAAJ,CAAeJ,cAAf,EAA+B,CAACK,CAAD,EAAIxF,EAAJ,EAAQC,EAAR,KAAe;IACnD,OAAOD,EAAA,GAAKA,EAAA,CAAGyF,SAAH,CAAa,MAAb,CAAL,GAA4BL,gBAAA,CAAiBM,GAAjB,CAAqBzF,EAArB,CAAnC;EADmD,CAA9C,CAAP;AAZ6B;AAiB/B,SAAS0F,OAATA,CAAA,EAAmB;EACjB,IAEG,OAAOC,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAA,EAAQC,UAAf,KAA8B,UAFlE,EAGE;IACA,OAAOD,MAAA,CAAOC,UAAP,EAAP;EADA;EAGF,MAAMC,GAAA,GAAM,IAAIjJ,UAAJ,CAAe,EAAf,CAAZ;EACA,IACE,OAAO+I,MAAP,KAAkB,WAAlB,IACA,OAAOA,MAAA,EAAQG,eAAf,KAAmC,UAFrC,EAGE;IACAH,MAAA,CAAOG,eAAP,CAAuBD,GAAvB;EADA,CAHF,MAKO;IACL,KAAK,IAAI3J,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,EAApB,EAAwBA,CAAA,EAAxB,EAA6B;MAC3B2J,GAAA,CAAI3J,CAAJ,IAASE,IAAA,CAAK2J,KAAL,CAAW3J,IAAA,CAAK4J,MAAL,KAAgB,GAA3B,CAAT;IAD2B;EADxB;EAKP,OAAOtK,aAAA,CAAcmK,GAAd,CAAP;AAlBiB;;;;;;;;;;;;;;;;;;;;;ACj/BnB,IAAAI,KAAA,GAAAC,mBAAA;AAsBA,IAAAC,mBAAA,GAAAD,mBAAA;AAKA,IAAAE,cAAA,GAAAF,mBAAA;AAaA,IAAAG,YAAA,GAAAH,mBAAA;AACA,IAAAI,kBAAA,GAAAJ,mBAAA;AAMA,IAAAK,OAAA,GAAAL,mBAAA;AACA,IAAAM,eAAA,GAAAN,mBAAA;AACA,IAAAO,gBAAA,GAAAP,mBAAA;AACA,IAAAQ,SAAA,GAAAR,mBAAA;AACA,IAAAS,wBAAA,GAAAT,mBAAA;AACA,IAAAU,iBAAA,GAAAV,mBAAA;AACA,IAAAW,oBAAA,GAAAX,mBAAA;AACA,IAAAY,eAAA,GAAAZ,mBAAA;AACA,IAAAa,mBAAA,GAAAb,mBAAA;AACA,IAAAc,WAAA,GAAAd,mBAAA;AACA,IAAAe,SAAA,GAAAf,mBAAA;AAEA,MAAMgB,wBAAA,GAA2B,KAAjC;AACA,MAAMC,2BAAA,GAA8B,GAApC;AACA,MAAMC,uBAAA,GAA0B,IAAhC;AAEA,MAAMC,oBAAA,GAC2Dze,cAA/D,GACI0e,oCADJ,GAEIC,+BAHN;AAlFAre,4BAAA,GAAAme,oBAAA;AAsFA,MAAMG,wBAAA,GAC2D5e,cAA/D,GACI6e,wCADJ,GAEIC,mCAHN;AAtFAxe,gCAAA,GAAAse,wBAAA;AA0FA,MAAMG,oBAAA,GAC2D/e,cAA/D,GACIgf,oCADJ,GAEIC,+BAHN;AA1FA3e,4BAAA,GAAAye,oBAAA;AA8FA,MAAMG,8BAAA,GAC2Dlf,cAA/D,GACImf,8CADJ,GAEIC,yCAHN;AA9FA9e,sCAAA,GAAA4e,8BAAA;AA2OA,SAASG,WAATA,CAAqBC,GAArB,EAA0B;EAEtB,IAAI,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAA,YAAenO,GAA9C,EAAmD;IACjDmO,GAAA,GAAM;MAAEhP,GAAA,EAAKgP;IAAP,CAAN;EADiD,CAAnD,MAEO,IAAI,IAAAvE,mBAAA,EAAcuE,GAAd,CAAJ,EAAwB;IAC7BA,GAAA,GAAM;MAAElD,IAAA,EAAMkD;IAAR,CAAN;EAD6B;EAIjC,IAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;IAC3B,MAAM,IAAIpP,KAAJ,CAAU,0DAAV,CAAN;EAD2B;EAG7B,IAAI,CAACoP,GAAA,CAAIhP,GAAL,IAAY,CAACgP,GAAA,CAAIlD,IAAjB,IAAyB,CAACkD,GAAA,CAAIC,KAAlC,EAAyC;IACvC,MAAM,IAAIrP,KAAJ,CACJ,6DADI,CAAN;EADuC;EAKzC,MAAMsP,IAAA,GAAO,IAAIC,sBAAJ,EAAb;EACA,MAAM;IAAEC;EAAF,IAAYF,IAAlB;EAEA,MAAMlP,GAAA,GAAMgP,GAAA,CAAIhP,GAAJ,GAAUqP,UAAA,CAAWL,GAAA,CAAIhP,GAAf,CAAV,GAAgC,IAA5C;EACA,MAAM8L,IAAA,GAAOkD,GAAA,CAAIlD,IAAJ,GAAWwD,WAAA,CAAYN,GAAA,CAAIlD,IAAhB,CAAX,GAAmC,IAAhD;EACA,MAAMyD,WAAA,GAAcP,GAAA,CAAIO,WAAJ,IAAmB,IAAvC;EACA,MAAMC,eAAA,GAAkBR,GAAA,CAAIQ,eAAJ,KAAwB,IAAhD;EACA,MAAMC,QAAA,GAAWT,GAAA,CAAIS,QAAJ,IAAgB,IAAjC;EACA,MAAMC,cAAA,GACJV,GAAA,CAAIC,KAAJ,YAAqBU,qBAArB,GAA6CX,GAAA,CAAIC,KAAjD,GAAyD,IAD3D;EAEA,MAAMW,cAAA,GACJzQ,MAAA,CAAOC,SAAP,CAAiB4P,GAAA,CAAIY,cAArB,KAAwCZ,GAAA,CAAIY,cAAJ,GAAqB,CAA7D,GACIZ,GAAA,CAAIY,cADR,GAEI5B,wBAHN;EAIA,IAAI6B,MAAA,GAASb,GAAA,CAAIa,MAAJ,YAAsBC,SAAtB,GAAkCd,GAAA,CAAIa,MAAtC,GAA+C,IAA5D;EACA,MAAM7Q,SAAA,GAAYgQ,GAAA,CAAIhQ,SAAtB;EAIA,MAAM+Q,UAAA,GACJ,OAAOf,GAAA,CAAIe,UAAX,KAA0B,QAA1B,IAAsC,CAAC,IAAAC,2BAAA,EAAahB,GAAA,CAAIe,UAAjB,CAAvC,GACIf,GAAA,CAAIe,UADR,GAEI,IAHN;EAIA,MAAME,OAAA,GAAU,OAAOjB,GAAA,CAAIiB,OAAX,KAAuB,QAAvB,GAAkCjB,GAAA,CAAIiB,OAAtC,GAAgD,IAAhE;EACA,MAAMC,UAAA,GAAalB,GAAA,CAAIkB,UAAJ,KAAmB,KAAtC;EACA,MAAMC,iBAAA,GAAoBnB,GAAA,CAAImB,iBAAJ,IAAyB7B,wBAAnD;EACA,MAAM8B,mBAAA,GACJ,OAAOpB,GAAA,CAAIoB,mBAAX,KAAmC,QAAnC,GACIpB,GAAA,CAAIoB,mBADR,GAEI,IAHN;EAIA,MAAMC,uBAAA,GACJrB,GAAA,CAAIqB,uBAAJ,IAA+BzB,8BADjC;EAEA,MAAM0B,YAAA,GAAetB,GAAA,CAAIuB,YAAJ,KAAqB,IAA1C;EACA,MAAMC,YAAA,GACJrR,MAAA,CAAOC,SAAP,CAAiB4P,GAAA,CAAIwB,YAArB,KAAsCxB,GAAA,CAAIwB,YAAJ,GAAmB,CAAC,CAA1D,GACIxB,GAAA,CAAIwB,YADR,GAEI,CAAC,CAHP;EAIA,MAAMhM,eAAA,GAAkBwK,GAAA,CAAIxK,eAAJ,KAAwB,KAAhD;EACA,MAAMG,0BAAA,GACJ,OAAOqK,GAAA,CAAIrK,0BAAX,KAA0C,SAA1C,GACIqK,GAAA,CAAIrK,0BADR,GAEI,CAACjV,cAHP;EAIA,MAAM+gB,oBAAA,GAAuBtR,MAAA,CAAOC,SAAP,CAAiB4P,GAAA,CAAIyB,oBAArB,IACzBzB,GAAA,CAAIyB,oBADqB,GAEzB,CAAC,CAFL;EAGA,MAAMC,eAAA,GACJ,OAAO1B,GAAA,CAAI0B,eAAX,KAA+B,SAA/B,GAA2C1B,GAAA,CAAI0B,eAA/C,GAAiEhhB,cADnE;EAEA,MAAMihB,mBAAA,GAAsB3B,GAAA,CAAI2B,mBAAJ,KAA4B,IAAxD;EACA,MAAMC,SAAA,GAAY5B,GAAA,CAAI4B,SAAJ,KAAkB,IAApC;EACA,MAAMC,aAAA,GAAgB7B,GAAA,CAAI6B,aAAJ,IAAqB1L,UAAA,CAAW2L,QAAtD;EACA,MAAMC,YAAA,GAAe/B,GAAA,CAAI+B,YAAJ,KAAqB,IAA1C;EACA,MAAMC,aAAA,GAAgBhC,GAAA,CAAIgC,aAAJ,KAAsB,IAA5C;EACA,MAAMC,gBAAA,GAAmBjC,GAAA,CAAIiC,gBAAJ,KAAyB,IAAlD;EACA,MAAMC,MAAA,GAASlC,GAAA,CAAIkC,MAAJ,KAAe,IAA9B;EAGA,MAAMzQ,MAAA,GAASiP,cAAA,GAAiBA,cAAA,CAAejP,MAAhC,GAAyCuO,GAAA,CAAIvO,MAAJ,IAAc0Q,GAAtE;EACA,MAAMC,cAAA,GACJ,OAAOpC,GAAA,CAAIoC,cAAX,KAA8B,SAA9B,GACIpC,GAAA,CAAIoC,cADR,GAEI,CAAC1hB,cAAD,IAAa,CAACghB,eAHpB;EAIA,MAAMW,cAAA,GACJ,OAAOrC,GAAA,CAAIqC,cAAX,KAA8B,SAA9B,GACIrC,GAAA,CAAIqC,cADR,GAGKlB,iBAAA,KAAsB3B,mCAAtB,IACC6B,uBAAA,KAA4BvB,yCAD7B,IAECmB,OAFD,IAGCG,mBAHD,IAIC,IAAAkB,8BAAA,EAAgBrB,OAAhB,EAAyBa,QAAA,CAASS,OAAlC,CAJD,IAKC,IAAAD,8BAAA,EAAgBlB,mBAAhB,EAAqCU,QAAA,CAASS,OAA9C,CATR;EAUA,MAAMC,aAAA,GACJxC,GAAA,CAAIwC,aAAJ,IAAqB,IAAIrD,oBAAJ,CAAyB;IAAE0C;EAAF,CAAzB,CADvB;EAEA,MAAMY,aAAA,GACJzC,GAAA,CAAIyC,aAAJ,IAAqB,IAAIhD,oBAAJ,CAAyB;IAAEW,KAAF;IAASyB;EAAT,CAAzB,CADvB;EAIA,MAAMa,YAAA,GAGA,IAHN;EAMA,IAAAzS,uBAAA,EAAkBD,SAAlB;EAIA,MAAM2S,gBAAA,GAAmB;IACvBH,aADuB;IAEvBC;EAFuB,CAAzB;EAIA,IAAI,CAACJ,cAAL,EAAqB;IACnBM,gBAAA,CAAiBC,iBAAjB,GAAqC,IAAIzB,iBAAJ,CAAsB;MACzDhQ,OAAA,EAAS8P,OADgD;MAEzD4B,YAAA,EAAc3B;IAF2C,CAAtB,CAArC;IAIAyB,gBAAA,CAAiBG,uBAAjB,GAA2C,IAAIzB,uBAAJ,CAA4B;MACrElQ,OAAA,EAASiQ;IAD4D,CAA5B,CAA3C;EALmB;EAUrB,IAAI,CAACP,MAAL,EAAa;IACX,MAAMkC,YAAA,GAAe;MACnB/S,SADmB;MAEnBgT,IAAA,EAAMC,mCAAA,CAAoBC;IAFP,CAArB;IAMArC,MAAA,GAASkC,YAAA,CAAaC,IAAb,GACLlC,SAAA,CAAUqC,QAAV,CAAmBJ,YAAnB,CADK,GAEL,IAAIjC,SAAJ,CAAciC,YAAd,CAFJ;IAGA7C,IAAA,CAAKkD,OAAL,GAAevC,MAAf;EAVW;EAab,MAAMwC,cAAA,GAAiB;IACrBjD,KADqB;IAErBkD,UAAA,EAEM,UAJe;IAMrBxG,IANqB;IAOrB2D,QAPqB;IAQrBwB,gBARqB;IASrBrB,cATqB;IAUrBnP,MAVqB;IAWrBsP,UAXqB;IAYrBa,SAZqB;IAarB2B,gBAAA,EAAkB;MAChB/B,YADgB;MAEhBE,eAFgB;MAGhBJ,YAHgB;MAIhB9L,eAJgB;MAKhBG,0BALgB;MAMhB8L,oBANgB;MAOhBE,mBAPgB;MAQhBS,cARgB;MAShBnB,OAAA,EAASoB,cAAA,GAAiBpB,OAAjB,GAA2B,IATpB;MAUhBG,mBAAA,EAAqBiB,cAAA,GAAiBjB,mBAAjB,GAAuC;IAV5C;EAbG,CAAvB;EA0BA,MAAMoC,eAAA,GAAkB;IACtBlC,YADsB;IAEtB9L,eAFsB;IAGtBkM,eAHsB;IAItBC,mBAJsB;IAKtBC,SALsB;IAMtBC,aANsB;IAOtBI,gBAPsB;IAQtBC,MARsB;IAStBQ;EATsB,CAAxB;EAYA7B,MAAA,CAAOnE,OAAP,CACG+G,IADH,CACQ,YAAY;IAChB,IAAIvD,IAAA,CAAKwD,SAAT,EAAoB;MAClB,MAAM,IAAI9S,KAAJ,CAAU,iBAAV,CAAN;IADkB;IAIpB,MAAM+S,eAAA,GAAkBC,cAAA,CAAe/C,MAAf,EAAuBwC,cAAvB,CAAxB;IACA,MAAMQ,oBAAA,GAAuB,IAAIlH,OAAJ,CAAY,UAAUC,OAAV,EAAmB;MAC1D,IAAIkH,aAAJ;MACA,IAAIpD,cAAJ,EAAoB;QAClBoD,aAAA,GAAgB,IAAIC,wCAAJ,CACd;UACEtS,MADF;UAEEuS,WAAA,EAAatD,cAAA,CAAesD,WAF9B;UAGEC,eAAA,EAAiBvD,cAAA,CAAeuD,eAHlC;UAIEC,0BAAA,EACExD,cAAA,CAAewD,0BALnB;UAMEnC,YANF;UAOEC;QAPF,CADc,EAUdtB,cAVc,CAAhB;MADkB,CAApB,MAaO,IAAI,CAAC5D,IAAL,EAAW;QAIhB,MAAMqH,sBAAA,GAAyBC,MAAA,IAAU;UACvC,IAGE1jB,cAHF,EAIE;YACA,OAAO,IAAI2jB,iCAAJ,CAAkBD,MAAlB,CAAP;UADA;UAGF,OAAO,IAAA9B,8BAAA,EAAgB8B,MAAA,CAAOpT,GAAvB,IACH,IAAIsT,mCAAJ,CAAmBF,MAAnB,CADG,GAEH,IAAIG,gCAAJ,CAAqBH,MAArB,CAFJ;QARuC,CAAzC;QAaAN,aAAA,GAAgBK,sBAAA,CAAuB;UACrCnT,GADqC;UAErCS,MAFqC;UAGrC8O,WAHqC;UAIrCC,eAJqC;UAKrCI,cALqC;UAMrCmB,YANqC;UAOrCC;QAPqC,CAAvB,CAAhB;MAjBgB;MA2BlBpF,OAAA,CAAQkH,aAAR;IA1C0D,CAA/B,CAA7B;IA6CA,OAAOnH,OAAA,CAAQ6H,GAAR,CAAY,CAACb,eAAD,EAAkBE,oBAAlB,CAAZ,EAAqDJ,IAArD,CACL,UAAU,CAACgB,QAAD,EAAWX,aAAX,CAAV,EAAqC;MACnC,IAAI5D,IAAA,CAAKwD,SAAT,EAAoB;QAClB,MAAM,IAAI9S,KAAJ,CAAU,iBAAV,CAAN;MADkB;MAIpB,MAAM8T,cAAA,GAAiB,IAAIC,+BAAJ,CACrBvE,KADqB,EAErBqE,QAFqB,EAGrB5D,MAAA,CAAOmC,IAHc,CAAvB;MAKA,MAAM4B,SAAA,GAAY,IAAIC,eAAJ,CAChBH,cADgB,EAEhBxE,IAFgB,EAGhB4D,aAHgB,EAIhBN,eAJgB,EAKhBb,gBALgB,CAAlB;MAOAzC,IAAA,CAAK4E,UAAL,GAAkBF,SAAlB;MACAF,cAAA,CAAeK,IAAf,CAAoB,OAApB,EAA6B,IAA7B;IAlBmC,CADhC,CAAP;EAnDgB,CADpB,EA2EGC,KA3EH,CA2ES9E,IAAA,CAAK+E,WAAL,CAAiBpI,MA3E1B;EA6EA,OAAOqD,IAAP;AArPwB;AAiQ1B,eAAe0D,cAAfA,CAA8B/C,MAA9B,EAAsCqE,MAAtC,EAA8C;EAC5C,IAAIrE,MAAA,CAAO6C,SAAX,EAAsB;IACpB,MAAM,IAAI9S,KAAJ,CAAU,sBAAV,CAAN;EADoB;EAGtB,MAAM6T,QAAA,GAAW,MAAM5D,MAAA,CAAO6D,cAAP,CAAsBS,eAAtB,CACrB,eADqB,EAErBD,MAFqB,EAGrBA,MAAA,CAAOpI,IAAP,GAAc,CAACoI,MAAA,CAAOpI,IAAP,CAAYvH,MAAb,CAAd,GAAqC,IAHhB,CAAvB;EAMA,IAAIsL,MAAA,CAAO6C,SAAX,EAAsB;IACpB,MAAM,IAAI9S,KAAJ,CAAU,sBAAV,CAAN;EADoB;EAGtB,OAAO6T,QAAP;AAb4C;AAgB9C,SAASpE,UAATA,CAAoB+E,GAApB,EAAyB;EAIvB,IAAIA,GAAA,YAAevT,GAAnB,EAAwB;IACtB,OAAOuT,GAAA,CAAIC,IAAX;EADsB;EAGxB,IAAI;IAEF,OAAO,IAAIxT,GAAJ,CAAQuT,GAAR,EAAaE,MAAA,CAAOC,QAApB,EAA8BF,IAArC;EAFE,CAAJ,CAGE,MAAM;IACN,IAGE3kB,cAFA,IAGA,OAAO0kB,GAAP,KAAe,QAJjB,EAKE;MACA,OAAOA,GAAP;IADA;EANI;EAUR,MAAM,IAAIxU,KAAJ,CACJ,2BACE,8DAFE,CAAN;AApBuB;AA0BzB,SAAS0P,WAATA,CAAqB8E,GAArB,EAA0B;EAExB,IAGE1kB,cAFA,IAGA,OAAO8kB,MAAP,KAAkB,WAHlB,IAIAJ,GAAA,YAAeI,MALjB,EAME;IACA,MAAM,IAAI5U,KAAJ,CACJ,mEADI,CAAN;EADA;EAKF,IAAIwU,GAAA,YAAe1Q,UAAf,IAA6B0Q,GAAA,CAAIzJ,UAAJ,KAAmByJ,GAAA,CAAI7P,MAAJ,CAAWoG,UAA/D,EAA2E;IAIzE,OAAOyJ,GAAP;EAJyE;EAM3E,IAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;IAC3B,OAAO,IAAA5Q,mBAAA,EAAc4Q,GAAd,CAAP;EAD2B;EAG7B,IAAK,OAAOA,GAAP,KAAe,QAAf,IAA2B,CAACK,KAAA,CAAML,GAAA,EAAK3T,MAAX,CAA7B,IAAoD,IAAAgK,mBAAA,EAAc2J,GAAd,CAAxD,EAA4E;IAC1E,OAAO,IAAI1Q,UAAJ,CAAe0Q,GAAf,CAAP;EAD0E;EAG5E,MAAM,IAAIxU,KAAJ,CACJ,iDACE,gEAFE,CAAN;AAzBwB;AA0C1B,MAAMuP,sBAAN,CAA6B;EAC3B,OAAO,CAAAC,KAAP,GAAgB,CAAhB;EAEAxN,YAAA,EAAc;IACZ,KAAKqS,WAAL,GAAmB,IAAIzI,uBAAJ,EAAnB;IACA,KAAKsI,UAAL,GAAkB,IAAlB;IACA,KAAK1B,OAAL,GAAe,IAAf;IAMA,KAAKhD,KAAL,GAAc,IAAGD,sBAAA,CAAuB,CAAAC,KAAvB,EAAJ,EAAb;IAMA,KAAKsD,SAAL,GAAiB,KAAjB;IAQA,KAAKgC,UAAL,GAAkB,IAAlB;IAQA,KAAKC,UAAL,GAAkB,IAAlB;EA/BY;EAsCd,IAAIjJ,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAKuI,WAAL,CAAiBvI,OAAxB;EADY;EASd,MAAMkJ,OAANA,CAAA,EAAgB;IACd,KAAKlC,SAAL,GAAiB,IAAjB;IACA,IAAI;MACF,IAAI,KAAKN,OAAL,EAAcJ,IAAlB,EAAwB;QACtB,KAAKI,OAAL,CAAayC,eAAb,GAA+B,IAA/B;MADsB;MAGxB,MAAM,KAAKf,UAAL,EAAiBc,OAAjB,EAAN;IAJE,CAAJ,CAKE,OAAO3K,EAAP,EAAW;MACX,IAAI,KAAKmI,OAAL,EAAcJ,IAAlB,EAAwB;QACtB,OAAO,KAAKI,OAAL,CAAayC,eAApB;MADsB;MAGxB,MAAM5K,EAAN;IAJW;IAOb,KAAK6J,UAAL,GAAkB,IAAlB;IACA,IAAI,KAAK1B,OAAT,EAAkB;MAChB,KAAKA,OAAL,CAAawC,OAAb;MACA,KAAKxC,OAAL,GAAe,IAAf;IAFgB;EAfJ;AAlDW;AAhkB7BpiB,8BAAA,GAAAmf,sBAAA;AA+oBA,MAAMQ,qBAAN,CAA4B;EAO1B/N,YACEnB,MADF,EAEEuS,WAFF,EAGEC,eAAA,GAAkB,KAHpB,EAIEC,0BAAA,GAA6B,IAJ/B,EAKE;IACA,KAAKzS,MAAL,GAAcA,MAAd;IACA,KAAKuS,WAAL,GAAmBA,WAAnB;IACA,KAAKC,eAAL,GAAuBA,eAAvB;IACA,KAAKC,0BAAL,GAAkCA,0BAAlC;IAEA,KAAK4B,eAAL,GAAuB,EAAvB;IACA,KAAKC,kBAAL,GAA0B,EAA1B;IACA,KAAKC,yBAAL,GAAiC,EAAjC;IACA,KAAKC,yBAAL,GAAiC,EAAjC;IACA,KAAKC,gBAAL,GAAwB,IAAI1J,uBAAJ,EAAxB;EAVA;EAgBF2J,iBAAiBC,QAAjB,EAA2B;IACzB,KAAKN,eAAL,CAAqBxR,IAArB,CAA0B8R,QAA1B;EADyB;EAO3BC,oBAAoBD,QAApB,EAA8B;IAC5B,KAAKL,kBAAL,CAAwBzR,IAAxB,CAA6B8R,QAA7B;EAD4B;EAO9BE,2BAA2BF,QAA3B,EAAqC;IACnC,KAAKJ,yBAAL,CAA+B1R,IAA/B,CAAoC8R,QAApC;EADmC;EAOrCG,2BAA2BH,QAA3B,EAAqC;IACnC,KAAKH,yBAAL,CAA+B3R,IAA/B,CAAoC8R,QAApC;EADmC;EAQrCI,YAAYC,KAAZ,EAAmBrS,KAAnB,EAA0B;IACxB,WAAWgS,QAAX,IAAuB,KAAKN,eAA5B,EAA6C;MAC3CM,QAAA,CAASK,KAAT,EAAgBrS,KAAhB;IAD2C;EADrB;EAU1BsS,eAAeC,MAAf,EAAuBC,KAAvB,EAA8B;IAC5B,KAAKV,gBAAL,CAAsBxJ,OAAtB,CAA8B+G,IAA9B,CAAmC,MAAM;MACvC,WAAW2C,QAAX,IAAuB,KAAKL,kBAA5B,EAAgD;QAC9CK,QAAA,CAASO,MAAT,EAAiBC,KAAjB;MAD8C;IADT,CAAzC;EAD4B;EAW9BC,sBAAsBzS,KAAtB,EAA6B;IAC3B,KAAK8R,gBAAL,CAAsBxJ,OAAtB,CAA8B+G,IAA9B,CAAmC,MAAM;MACvC,WAAW2C,QAAX,IAAuB,KAAKJ,yBAA5B,EAAuD;QACrDI,QAAA,CAAShS,KAAT;MADqD;IADhB,CAAzC;EAD2B;EAQ7B0S,sBAAA,EAAwB;IACtB,KAAKZ,gBAAL,CAAsBxJ,OAAtB,CAA8B+G,IAA9B,CAAmC,MAAM;MACvC,WAAW2C,QAAX,IAAuB,KAAKH,yBAA5B,EAAuD;QACrDG,QAAA;MADqD;IADhB,CAAzC;EADsB;EAQxBW,eAAA,EAAiB;IACf,KAAKb,gBAAL,CAAsBtJ,OAAtB;EADe;EAQjBoK,iBAAiBP,KAAjB,EAAwBQ,GAAxB,EAA6B;IAC3B,IAAAtW,iBAAA,EAAY,wDAAZ;EAD2B;EAI7BuW,MAAA,EAAQ;AA1GkB;AA/oB5BlmB,6BAAA,GAAA2f,qBAAA;AA+vBA,MAAMwG,gBAAN,CAAuB;EACrBvU,YAAYwU,OAAZ,EAAqBxC,SAArB,EAAgC;IAC9B,KAAKyC,QAAL,GAAgBD,OAAhB;IACA,KAAKtC,UAAL,GAAkBF,SAAlB;IAGEzS,MAAA,CAAOC,cAAP,CAAsB,IAAtB,EAA4B,eAA5B,EAA6C;MAC3CH,KAAA,EAAOA,CAAA,KAAM;QACX,IAAAqV,yBAAA,EACE,uCACE,qDAFJ;QAIA,OAAO,KAAKC,YAAL,GAAoB9D,IAApB,CAAyB+D,EAAA,IAAM;UACpC,IAAI,CAACA,EAAL,EAAS;YACP,OAAOA,EAAP;UADO;UAGT,MAAMC,KAAA,GAAQ,EAAd;UACA,WAAW9U,IAAX,IAAmB6U,EAAnB,EAAuB;YACrBC,KAAA,CAAMnT,IAAN,CAAW,GAAGkT,EAAA,CAAG7U,IAAH,CAAd;UADqB;UAGvB,OAAO8U,KAAP;QARoC,CAA/B,CAAP;MALW;IAD8B,CAA7C;EAL4B;EA+ChC,IAAIC,iBAAJA,CAAA,EAAwB;IACtB,OAAO,KAAK5C,UAAL,CAAgB4C,iBAAvB;EADsB;EAOxB,IAAIjF,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAKqC,UAAL,CAAgBrC,aAAvB;EADkB;EAOpB,IAAIkF,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKN,QAAL,CAAcM,QAArB;EADa;EAUf,IAAIC,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKP,QAAL,CAAcO,YAArB;EADiB;EAOnB,IAAIC,SAAJA,CAAA,EAAgB;IACd,OAAO,IAAA/V,YAAA,EAAO,IAAP,EAAa,WAAb,EAA0B,CAAC,CAAC,KAAKgT,UAAL,CAAgBgD,WAA5C,CAAP;EADc;EAUhB,IAAIC,UAAJA,CAAA,EAAiB;IACf,OAAO,KAAKjD,UAAL,CAAgBgD,WAAvB;EADe;EASjBE,QAAQC,UAAR,EAAoB;IAClB,OAAO,KAAKnD,UAAL,CAAgBkD,OAAhB,CAAwBC,UAAxB,CAAP;EADkB;EASpBC,aAAaC,GAAb,EAAkB;IAChB,OAAO,KAAKrD,UAAL,CAAgBoD,YAAhB,CAA6BC,GAA7B,CAAP;EADgB;EAUlBC,gBAAA,EAAkB;IAChB,OAAO,KAAKtD,UAAL,CAAgBsD,eAAhB,EAAP;EADgB;EAUlBC,eAAeC,EAAf,EAAmB;IACjB,OAAO,KAAKxD,UAAL,CAAgBuD,cAAhB,CAA+BC,EAA/B,CAAP;EADiB;EASnBC,cAAA,EAAgB;IACd,OAAO,KAAKzD,UAAL,CAAgByD,aAAhB,EAAP;EADc;EAQhBC,cAAA,EAAgB;IACd,OAAO,KAAK1D,UAAL,CAAgB0D,aAAhB,EAAP;EADc;EAQhBC,YAAA,EAAc;IACZ,OAAO,KAAK3D,UAAL,CAAgB2D,WAAhB,EAAP;EADY;EASdC,qBAAA,EAAuB;IACrB,OAAO,KAAK5D,UAAL,CAAgB4D,oBAAhB,EAAP;EADqB;EASvBC,cAAA,EAAgB;IACd,OAAO,KAAK7D,UAAL,CAAgB6D,aAAhB,EAAP;EADc;EAQhBC,eAAA,EAAiB;IACf,OAAO,KAAK9D,UAAL,CAAgB8D,cAAhB,EAAP;EADe;EAWjBrB,aAAA,EAAe;IACb,OAAO,KAAKzC,UAAL,CAAgB+D,eAAhB,EAAP;EADa;EAuBfC,WAAA,EAAa;IACX,OAAO,KAAKhE,UAAL,CAAgBgE,UAAhB,EAAP;EADW;EASbC,yBAAA,EAA2B;IACzB,OAAO,KAAKjE,UAAL,CAAgBiE,wBAAhB,EAAP;EADyB;EAS3BC,eAAA,EAAiB;IACf,OAAO,KAAKlE,UAAL,CAAgBkE,cAAhB,EAAP;EADe;EAWjBC,YAAA,EAAc;IACZ,OAAO,KAAKnE,UAAL,CAAgBmE,WAAhB,EAAP;EADY;EAiBdC,YAAA,EAAc;IACZ,OAAO,KAAKpE,UAAL,CAAgBoE,WAAhB,EAAP;EADY;EAQdC,QAAA,EAAU;IACR,OAAO,KAAKrE,UAAL,CAAgBqE,OAAhB,EAAP;EADQ;EAQVC,aAAA,EAAe;IACb,OAAO,KAAKtE,UAAL,CAAgBsE,YAAhB,EAAP;EADa;EASfC,gBAAA,EAAkB;IAChB,OAAO,KAAKvE,UAAL,CAAgBwE,sBAAhB,CAAuC5M,OAA9C;EADgB;EAgBlB6M,QAAQC,eAAA,GAAkB,KAA1B,EAAiC;IAC/B,OAAO,KAAK1E,UAAL,CAAgB2E,YAAhB,CAA6BD,eAAA,IAAmB,KAAK3B,SAArD,CAAP;EAD+B;EAOjCjC,QAAA,EAAU;IACR,OAAO,KAAK8D,WAAL,CAAiB9D,OAAjB,EAAP;EADQ;EAQV,IAAI+D,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAK7E,UAAL,CAAgB6E,aAAvB;EADkB;EAOpB,IAAID,WAAJA,CAAA,EAAkB;IAChB,OAAO,KAAK5E,UAAL,CAAgB4E,WAAvB;EADgB;EASlBE,gBAAA,EAAkB;IAChB,OAAO,KAAK9E,UAAL,CAAgB8E,eAAhB,EAAP;EADgB;EAQlBC,aAAA,EAAe;IACb,OAAO,KAAK/E,UAAL,CAAgB+E,YAAhB,EAAP;EADa;EASfC,uBAAA,EAAyB;IACvB,OAAO,KAAKhF,UAAL,CAAgBgF,sBAAhB,EAAP;EADuB;AA3VJ;AA/vBvB9oB,wBAAA,GAAAmmB,gBAAA;AAgxCA,MAAM4C,YAAN,CAAmB;EACjB,CAAAC,qBAAA,GAAyB,IAAzB;EAEA,CAAAC,cAAA,GAAkB,KAAlB;EAEArX,YAAYsX,SAAZ,EAAuBC,QAAvB,EAAiCvF,SAAjC,EAA4C1C,MAAA,GAAS,KAArD,EAA4D;IAC1D,KAAKkI,UAAL,GAAkBF,SAAlB;IACA,KAAKG,SAAL,GAAiBF,QAAjB;IACA,KAAKrF,UAAL,GAAkBF,SAAlB;IACA,KAAK0F,MAAL,GAAcpI,MAAA,GAAS,IAAIqI,wBAAJ,EAAT,GAA2B,IAAzC;IACA,KAAKC,OAAL,GAAetI,MAAf;IAEA,KAAKuI,UAAL,GAAkB7F,SAAA,CAAU6F,UAA5B;IACA,KAAKC,IAAL,GAAY,IAAIC,UAAJ,EAAZ;IAEA,KAAKC,wBAAL,GAAgC,KAAhC;IACA,KAAKC,aAAL,GAAqB,IAAI1N,GAAJ,EAArB;IACA,KAAKuG,SAAL,GAAiB,KAAjB;EAZ0D;EAkB5D,IAAIuE,UAAJA,CAAA,EAAiB;IACf,OAAO,KAAKmC,UAAL,GAAkB,CAAzB;EADe;EAOjB,IAAIU,MAAJA,CAAA,EAAa;IACX,OAAO,KAAKT,SAAL,CAAeS,MAAtB;EADW;EAOb,IAAI3C,GAAJA,CAAA,EAAU;IACR,OAAO,KAAKkC,SAAL,CAAelC,GAAtB;EADQ;EAOV,IAAI4C,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKV,SAAL,CAAeU,QAAtB;EADa;EAQf,IAAIC,IAAJA,CAAA,EAAW;IACT,OAAO,KAAKX,SAAL,CAAeW,IAAtB;EADS;EASXC,YAAY;IACVC,KADU;IAEVC,QAAA,GAAW,KAAKL,MAFN;IAGVM,OAAA,GAAU,CAHA;IAIVC,OAAA,GAAU,CAJA;IAKVC,QAAA,GAAW;EALD,IAMR,EANJ,EAMQ;IACN,OAAO,IAAIC,2BAAJ,CAAiB;MACtBC,OAAA,EAAS,KAAKR,IADQ;MAEtBE,KAFsB;MAGtBC,QAHsB;MAItBC,OAJsB;MAKtBC,OALsB;MAMtBC;IANsB,CAAjB,CAAP;EADM;EAgBRG,eAAe;IAAEC,MAAA,GAAS;EAAX,IAAyB,EAAxC,EAA4C;IAC1C,MAAMC,UAAA,GAAa,KAAK7G,UAAL,CAAgB8G,kBAAhB,CAAmCF,MAAnC,CAAnB;IAEA,OAAO,KAAK5G,UAAL,CAAgB2G,cAAhB,CACL,KAAKrB,UADA,EAELuB,UAAA,CAAWE,eAFN,CAAP;EAH0C;EAa5CtE,aAAA,EAAe;IACb,OAAO,KAAKzC,UAAL,CAAgBgH,gBAAhB,CAAiC,KAAK1B,UAAtC,CAAP;EADa;EAOf,IAAI3H,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAKqC,UAAL,CAAgBrC,aAAvB;EADkB;EAOpB,IAAIoF,SAAJA,CAAA,EAAgB;IACd,OAAO,IAAA/V,YAAA,EAAO,IAAP,EAAa,WAAb,EAA0B,CAAC,CAAC,KAAKgT,UAAL,CAAgBgD,WAA5C,CAAP;EADc;EAUhB,MAAMiE,MAANA,CAAA,EAAe;IACb,OAAO,KAAKjH,UAAL,CAAgBgD,WAAhB,EAA6BkE,QAA7B,CAAsC,KAAK5B,UAA3C,KAA0D,IAAjE;EADa;EAWf6B,OAAO;IACLC,aADK;IAELC,QAFK;IAGLT,MAAA,GAAS,SAHJ;IAILU,cAAA,GAAiBpqB,oBAAA,CAAeE,MAJ3B;IAKL8I,SAAA,GAAY,IALP;IAMLqhB,UAAA,GAAa,IANR;IAOLC,4BAAA,GAA+B,IAP1B;IAQLC,mBAAA,GAAsB,IARjB;IASLC,UAAA,GAAa,IATR;IAULC,sBAAA,GAAyB;EAVpB,CAAP,EAWG;IACD,KAAKnC,MAAL,EAAaoC,IAAb,CAAkB,SAAlB;IAEA,MAAMf,UAAA,GAAa,KAAK7G,UAAL,CAAgB8G,kBAAhB,CACjBF,MADiB,EAEjBU,cAFiB,EAGjBK,sBAHiB,CAAnB;IAOA,KAAK,CAAAxC,cAAL,GAAuB,KAAvB;IAEA,KAAK,CAAA0C,mBAAL;IAEA,IAAI,CAACL,4BAAL,EAAmC;MACjCA,4BAAA,GAA+B,KAAKxH,UAAL,CAAgBiE,wBAAhB,EAA/B;IADiC;IAInC,IAAI6D,WAAA,GAAc,KAAK/B,aAAL,CAAmBtN,GAAnB,CAAuBoO,UAAA,CAAWkB,QAAlC,CAAlB;IACA,IAAI,CAACD,WAAL,EAAkB;MAChBA,WAAA,GAAcza,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAd;MACA,KAAK4V,aAAL,CAAmBiC,GAAnB,CAAuBnB,UAAA,CAAWkB,QAAlC,EAA4CD,WAA5C;IAFgB;IAMlB,IAAIA,WAAA,CAAYG,yBAAhB,EAA2C;MACzCC,YAAA,CAAaJ,WAAA,CAAYG,yBAAzB;MACAH,WAAA,CAAYG,yBAAZ,GAAwC,IAAxC;IAFyC;IAK3C,MAAME,WAAA,GAAc,CAAC,EACnBtB,UAAA,CAAWE,eAAX,GAA6BtqB,yBAAA,CAAoBG,KAAjD,CADF;IAMA,IAAI,CAACkrB,WAAA,CAAYM,sBAAjB,EAAyC;MACvCN,WAAA,CAAYM,sBAAZ,GAAqC,IAAI1Q,uBAAJ,EAArC;MACAoQ,WAAA,CAAYO,YAAZ,GAA2B;QACzBC,OAAA,EAAS,EADgB;QAEzBC,SAAA,EAAW,EAFc;QAGzBC,SAAA,EAAW,KAHc;QAIzBC,cAAA,EAAgB;MAJS,CAA3B;MAOA,KAAKjD,MAAL,EAAaoC,IAAb,CAAkB,cAAlB;MACA,KAAKc,iBAAL,CAAuB7B,UAAvB;IAVuC;IAazC,MAAM8B,QAAA,GAAWC,KAAA,IAAS;MACxBd,WAAA,CAAYe,WAAZ,CAAwBC,MAAxB,CAA+BC,kBAA/B;MAIA,IAAI,KAAKjD,wBAAL,IAAiCqC,WAArC,EAAkD;QAChD,KAAK,CAAAhD,cAAL,GAAuB,IAAvB;MADgD;MAGlD,KAAK,CAAA6D,UAAL,CAAiC,CAACb,WAAlC;MAEA,IAAIS,KAAJ,EAAW;QACTG,kBAAA,CAAmBE,UAAnB,CAA8BlR,MAA9B,CAAqC6Q,KAArC;QAEA,KAAKM,kBAAL,CAAwB;UACtBpB,WADsB;UAEtB7P,MAAA,EAAQ2Q,KAAA,YAAiB9c,KAAjB,GAAyB8c,KAAzB,GAAiC,IAAI9c,KAAJ,CAAU8c,KAAV;QAFnB,CAAxB;MAHS,CAAX,MAOO;QACLG,kBAAA,CAAmBE,UAAnB,CAA8BnR,OAA9B;MADK;MAIP,KAAK0N,MAAL,EAAa2D,OAAb,CAAqB,WAArB;MACA,KAAK3D,MAAL,EAAa2D,OAAb,CAAqB,SAArB;IAtBwB,CAA1B;IAyBA,MAAMJ,kBAAA,GAAqB,IAAIK,kBAAJ,CAAuB;MAChDC,QAAA,EAAUV,QADsC;MAGhDrJ,MAAA,EAAQ;QACN8H,aADM;QAENC,QAFM;QAGNnhB,SAHM;QAINqhB;MAJM,CAHwC;MAShD3B,IAAA,EAAM,KAAKA,IATqC;MAUhDD,UAAA,EAAY,KAAKA,UAV+B;MAWhD8B,mBAXgD;MAYhDY,YAAA,EAAcP,WAAA,CAAYO,YAZsB;MAahDjD,SAAA,EAAW,KAAKE,UAbgC;MAchD5H,aAAA,EAAe,KAAKsC,UAAL,CAAgBtC,aAdiB;MAehDC,aAAA,EAAe,KAAKqC,UAAL,CAAgBrC,aAfiB;MAgBhD2L,wBAAA,EAA0B,CAACnB,WAhBqB;MAiBhD/K,MAAA,EAAQ,KAAKsI,OAjBmC;MAkBhDgC;IAlBgD,CAAvB,CAA3B;IAqBC,CAAAI,WAAA,CAAYe,WAAZ,KAA4B,IAAIU,GAAJ,EAA5B,EAAuCC,GAAxC,CAA4CT,kBAA5C;IACA,MAAMU,UAAA,GAAaV,kBAAA,CAAmB3N,IAAtC;IAEAvD,OAAA,CAAQ6H,GAAR,CAAY,CACVoI,WAAA,CAAYM,sBAAZ,CAAmCxQ,OADzB,EAEV4P,4BAFU,CAAZ,EAIG7I,IAJH,CAIQ,CAAC,CAAC+K,YAAD,EAAeC,qBAAf,CAAD,KAA2C;MAC/C,IAAI,KAAK/K,SAAT,EAAoB;QAClB+J,QAAA;QACA;MAFkB;MAIpB,KAAKnD,MAAL,EAAaoC,IAAb,CAAkB,WAAlB;MAEAmB,kBAAA,CAAmBa,kBAAnB,CAAsC;QACpCF,YADoC;QAEpCC;MAFoC,CAAtC;MAIAZ,kBAAA,CAAmBc,mBAAnB;IAX+C,CAJnD,EAiBG3J,KAjBH,CAiBSyI,QAjBT;IAmBA,OAAOc,UAAP;EArHC;EA8HHK,gBAAgB;IACdlD,MAAA,GAAS,SADK;IAEdU,cAAA,GAAiBpqB,oBAAA,CAAeE,MAFlB;IAGduqB,sBAAA,GAAyB;EAHX,IAIZ,EAJJ,EAIQ;IAIN,SAASkC,mBAATA,CAAA,EAA+B;MAC7B,IAAI/B,WAAA,CAAYO,YAAZ,CAAyBG,SAA7B,EAAwC;QACtCV,WAAA,CAAYiC,oBAAZ,CAAiCjS,OAAjC,CAAyCgQ,WAAA,CAAYO,YAArD;QAEAP,WAAA,CAAYe,WAAZ,CAAwBC,MAAxB,CAA+BkB,UAA/B;MAHsC;IADX;IAQ/B,MAAMnD,UAAA,GAAa,KAAK7G,UAAL,CAAgB8G,kBAAhB,CACjBF,MADiB,EAEjBU,cAFiB,EAGjBK,sBAHiB,EAIA,IAJA,CAAnB;IAMA,IAAIG,WAAA,GAAc,KAAK/B,aAAL,CAAmBtN,GAAnB,CAAuBoO,UAAA,CAAWkB,QAAlC,CAAlB;IACA,IAAI,CAACD,WAAL,EAAkB;MAChBA,WAAA,GAAcza,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAd;MACA,KAAK4V,aAAL,CAAmBiC,GAAnB,CAAuBnB,UAAA,CAAWkB,QAAlC,EAA4CD,WAA5C;IAFgB;IAIlB,IAAIkC,UAAJ;IAEA,IAAI,CAAClC,WAAA,CAAYiC,oBAAjB,EAAuC;MACrCC,UAAA,GAAa3c,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAb;MACA6Z,UAAA,CAAWH,mBAAX,GAAiCA,mBAAjC;MACA/B,WAAA,CAAYiC,oBAAZ,GAAmC,IAAIrS,uBAAJ,EAAnC;MACC,CAAAoQ,WAAA,CAAYe,WAAZ,KAA4B,IAAIU,GAAJ,EAA5B,EAAuCC,GAAxC,CAA4CQ,UAA5C;MACAlC,WAAA,CAAYO,YAAZ,GAA2B;QACzBC,OAAA,EAAS,EADgB;QAEzBC,SAAA,EAAW,EAFc;QAGzBC,SAAA,EAAW,KAHc;QAIzBC,cAAA,EAAgB;MAJS,CAA3B;MAOA,KAAKjD,MAAL,EAAaoC,IAAb,CAAkB,cAAlB;MACA,KAAKc,iBAAL,CAAuB7B,UAAvB;IAbqC;IAevC,OAAOiB,WAAA,CAAYiC,oBAAZ,CAAiCnS,OAAxC;EAxCM;EAkDRqS,kBAAkB;IAChBC,oBAAA,GAAuB,KADP;IAEhBC,oBAAA,GAAuB;EAFP,IAGd,EAHJ,EAGQ;IACN,MAAMC,uBAAA,GAA0B,GAAhC;IAEA,OAAO,KAAKpK,UAAL,CAAgBJ,cAAhB,CAA+ByK,cAA/B,CACL,gBADK,EAEL;MACEjF,SAAA,EAAW,KAAKE,UADlB;MAEE4E,oBAAA,EAAsBA,oBAAA,KAAyB,IAFjD;MAGEC,oBAAA,EAAsBA,oBAAA,KAAyB;IAHjD,CAFK,EAOL;MACEG,aAAA,EAAeF,uBADjB;MAEEG,KAAKC,WAAL,EAAkB;QAChB,OAAOA,WAAA,CAAYC,KAAZ,CAAkB9d,MAAzB;MADgB;IAFpB,CAPK,CAAP;EAHM;EA2BR+d,eAAepL,MAAA,GAAS,EAAxB,EAA4B;IAC1B,IAAI,KAAKU,UAAL,CAAgBgD,WAApB,EAAiC;MAG/B,OAAO,KAAKiE,MAAL,GAActI,IAAd,CAAmBgM,GAAA,IAAO;QAC/B,OAAOC,iBAAA,CAAQJ,WAAR,CAAoBG,GAApB,CAAP;MAD+B,CAA1B,CAAP;IAH+B;IAOjC,MAAME,cAAA,GAAiB,KAAKZ,iBAAL,CAAuB3K,MAAvB,CAAvB;IAEA,OAAO,IAAIzH,OAAJ,CAAY,UAAUC,OAAV,EAAmBC,MAAnB,EAA2B;MAC5C,SAAS+S,IAATA,CAAA,EAAgB;QACdC,MAAA,CAAOC,IAAP,GAAcrM,IAAd,CAAmB,UAAU;UAAExR,KAAF;UAAS8d;QAAT,CAAV,EAA2B;UAC5C,IAAIA,IAAJ,EAAU;YACRnT,OAAA,CAAQ0S,WAAR;YACA;UAFQ;UAIVnd,MAAA,CAAO6d,MAAP,CAAcV,WAAA,CAAYW,MAA1B,EAAkChe,KAAA,CAAMge,MAAxC;UACAX,WAAA,CAAYC,KAAZ,CAAkBjb,IAAlB,CAAuB,GAAGrC,KAAA,CAAMsd,KAAhC;UACAK,IAAA;QAP4C,CAA9C,EAQG/S,MARH;MADc;MAYhB,MAAMgT,MAAA,GAASF,cAAA,CAAeO,SAAf,EAAf;MACA,MAAMZ,WAAA,GAAc;QAClBC,KAAA,EAAO,EADW;QAElBU,MAAA,EAAQ9d,MAAA,CAAO8C,MAAP,CAAc,IAAd;MAFU,CAApB;MAIA2a,IAAA;IAlB4C,CAAvC,CAAP;EAV0B;EAqC5BO,cAAA,EAAgB;IACd,OAAO,KAAKrL,UAAL,CAAgBqL,aAAhB,CAA8B,KAAK/F,UAAnC,CAAP;EADc;EAQhBgG,SAAA,EAAW;IACT,KAAK1M,SAAL,GAAiB,IAAjB;IAEA,MAAM2M,MAAA,GAAS,EAAf;IACA,WAAWzD,WAAX,IAA0B,KAAK/B,aAAL,CAAmByF,MAAnB,EAA1B,EAAuD;MACrD,KAAKtC,kBAAL,CAAwB;QACtBpB,WADsB;QAEtB7P,MAAA,EAAQ,IAAInM,KAAJ,CAAU,qBAAV,CAFc;QAGtB2f,KAAA,EAAO;MAHe,CAAxB;MAMA,IAAI3D,WAAA,CAAYiC,oBAAhB,EAAsC;QAEpC;MAFoC;MAItC,WAAWhB,kBAAX,IAAiCjB,WAAA,CAAYe,WAA7C,EAA0D;QACxD0C,MAAA,CAAO/b,IAAP,CAAYuZ,kBAAA,CAAmB2C,SAA/B;QACA3C,kBAAA,CAAmB4C,MAAnB;MAFwD;IAXL;IAgBvD,KAAK/F,IAAL,CAAUgG,KAAV;IACA,KAAK,CAAAzG,cAAL,GAAuB,KAAvB;IACA,KAAK,CAAA0C,mBAAL;IAEA,OAAOhQ,OAAA,CAAQ6H,GAAR,CAAY6L,MAAZ,CAAP;EAxBS;EAkCX9G,QAAQoH,UAAA,GAAa,KAArB,EAA4B;IAC1B,KAAK,CAAA1G,cAAL,GAAuB,IAAvB;IACA,MAAM2G,OAAA,GAAU,KAAK,CAAA9C,UAAL,CAAiC,KAAjC,CAAhB;IAEA,IAAI6C,UAAA,IAAcC,OAAlB,EAA2B;MACzB,KAAKtG,MAAL,KAAgB,IAAIC,wBAAJ,EAAhB;IADyB;IAG3B,OAAOqG,OAAP;EAP0B;EAiB5B,CAAA9C,WAAY+C,OAAA,GAAU,KAAtB,EAA6B;IAC3B,KAAK,CAAAlE,mBAAL;IAEA,IAAI,CAAC,KAAK,CAAA1C,cAAN,IAAyB,KAAKvG,SAAlC,EAA6C;MAC3C,OAAO,KAAP;IAD2C;IAG7C,IAAImN,OAAJ,EAAa;MACX,KAAK,CAAA7G,qBAAL,GAA8B8G,UAAA,CAAW,MAAM;QAC7C,KAAK,CAAA9G,qBAAL,GAA8B,IAA9B;QACA,KAAK,CAAA8D,UAAL,CAAiC,KAAjC;MAF6C,CAAjB,EAG3B5O,uBAH2B,CAA9B;MAKA,OAAO,KAAP;IANW;IAQb,WAAW;MAAEyO,WAAF;MAAeR;IAAf,CAAX,IAA4C,KAAKtC,aAAL,CAAmByF,MAAnB,EAA5C,EAAyE;MACvE,IAAI3C,WAAA,CAAY0B,IAAZ,GAAmB,CAAnB,IAAwB,CAAClC,YAAA,CAAaG,SAA1C,EAAqD;QACnD,OAAO,KAAP;MADmD;IADkB;IAKzE,KAAKzC,aAAL,CAAmB6F,KAAnB;IACA,KAAKhG,IAAL,CAAUgG,KAAV;IACA,KAAK,CAAAzG,cAAL,GAAuB,KAAvB;IACA,OAAO,IAAP;EAtB2B;EAyB7B,CAAA0C,oBAAA,EAAuB;IACrB,IAAI,KAAK,CAAA3C,qBAAT,EAAiC;MAC/BgD,YAAA,CAAa,KAAK,CAAAhD,qBAAlB;MACA,KAAK,CAAAA,qBAAL,GAA8B,IAA9B;IAF+B;EADZ;EAUvB+G,iBAAiBvC,YAAjB,EAA+B3B,QAA/B,EAAyC;IACvC,MAAMD,WAAA,GAAc,KAAK/B,aAAL,CAAmBtN,GAAnB,CAAuBsP,QAAvB,CAApB;IACA,IAAI,CAACD,WAAL,EAAkB;MAChB;IADgB;IAGlB,KAAKtC,MAAL,EAAa2D,OAAb,CAAqB,cAArB;IAIArB,WAAA,CAAYM,sBAAZ,EAAoCtQ,OAApC,CAA4C4R,YAA5C;EATuC;EAezCwC,iBAAiBC,iBAAjB,EAAoCrE,WAApC,EAAiD;IAE/C,KAAK,IAAI5Y,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAK+V,iBAAA,CAAkBxf,MAAlC,EAA0CuC,CAAA,GAAIkH,EAAnD,EAAuDlH,CAAA,EAAvD,EAA4D;MAC1D4Y,WAAA,CAAYO,YAAZ,CAAyBC,OAAzB,CAAiC9Y,IAAjC,CAAsC2c,iBAAA,CAAkB7D,OAAlB,CAA0BpZ,CAA1B,CAAtC;MACA4Y,WAAA,CAAYO,YAAZ,CAAyBE,SAAzB,CAAmC/Y,IAAnC,CAAwC2c,iBAAA,CAAkB5D,SAAlB,CAA4BrZ,CAA5B,CAAxC;IAF0D;IAI5D4Y,WAAA,CAAYO,YAAZ,CAAyBG,SAAzB,GAAqC2D,iBAAA,CAAkB3D,SAAvD;IACAV,WAAA,CAAYO,YAAZ,CAAyBI,cAAzB,GAA0C0D,iBAAA,CAAkB1D,cAA5D;IAGA,WAAWM,kBAAX,IAAiCjB,WAAA,CAAYe,WAA7C,EAA0D;MACxDE,kBAAA,CAAmBc,mBAAnB;IADwD;IAI1D,IAAIsC,iBAAA,CAAkB3D,SAAtB,EAAiC;MAC/B,KAAK,CAAAQ,UAAL,CAAiC,IAAjC;IAD+B;EAdc;EAsBjDN,kBAAkB;IAChB3B,eADgB;IAEhBgB,QAFgB;IAGhBqE;EAHgB,CAAlB,EAIG;IAOD,MAAM;MAAElc,GAAF;MAAOmc;IAAP,IAAqBD,6BAA3B;IAEA,MAAMvB,cAAA,GAAiB,KAAK7K,UAAL,CAAgBJ,cAAhB,CAA+ByK,cAA/B,CACrB,iBADqB,EAErB;MACEjF,SAAA,EAAW,KAAKE,UADlB;MAEEsB,MAAA,EAAQG,eAFV;MAGEgB,QAHF;MAIEnF,iBAAA,EAAmB1S;IAJrB,CAFqB,EAQrBmc,SARqB,CAAvB;IAUA,MAAMtB,MAAA,GAASF,cAAA,CAAeO,SAAf,EAAf;IAEA,MAAMtD,WAAA,GAAc,KAAK/B,aAAL,CAAmBtN,GAAnB,CAAuBsP,QAAvB,CAApB;IACAD,WAAA,CAAYwE,YAAZ,GAA2BvB,MAA3B;IAEA,MAAMD,IAAA,GAAOA,CAAA,KAAM;MACjBC,MAAA,CAAOC,IAAP,GAAcrM,IAAd,CACE,CAAC;QAAExR,KAAF;QAAS8d;MAAT,CAAD,KAAqB;QACnB,IAAIA,IAAJ,EAAU;UACRnD,WAAA,CAAYwE,YAAZ,GAA2B,IAA3B;UACA;QAFQ;QAIV,IAAI,KAAKtM,UAAL,CAAgBpB,SAApB,EAA+B;UAC7B;QAD6B;QAG/B,KAAKsN,gBAAL,CAAsB/e,KAAtB,EAA6B2a,WAA7B;QACAgD,IAAA;MATmB,CADvB,EAYE7S,MAAA,IAAU;QACR6P,WAAA,CAAYwE,YAAZ,GAA2B,IAA3B;QAEA,IAAI,KAAKtM,UAAL,CAAgBpB,SAApB,EAA+B;UAC7B;QAD6B;QAG/B,IAAIkJ,WAAA,CAAYO,YAAhB,EAA8B;UAE5BP,WAAA,CAAYO,YAAZ,CAAyBG,SAAzB,GAAqC,IAArC;UAEA,WAAWO,kBAAX,IAAiCjB,WAAA,CAAYe,WAA7C,EAA0D;YACxDE,kBAAA,CAAmBc,mBAAnB;UADwD;UAG1D,KAAK,CAAAb,UAAL,CAAiC,IAAjC;QAP4B;QAU9B,IAAIlB,WAAA,CAAYM,sBAAhB,EAAwC;UACtCN,WAAA,CAAYM,sBAAZ,CAAmCrQ,MAAnC,CAA0CE,MAA1C;QADsC,CAAxC,MAEO,IAAI6P,WAAA,CAAYiC,oBAAhB,EAAsC;UAC3CjC,WAAA,CAAYiC,oBAAZ,CAAiChS,MAAjC,CAAwCE,MAAxC;QAD2C,CAAtC,MAEA;UACL,MAAMA,MAAN;QADK;MApBC,CAZZ;IADiB,CAAnB;IAuCA6S,IAAA;EA/DC;EAqEH5B,mBAAmB;IAAEpB,WAAF;IAAe7P,MAAf;IAAuBwT,KAAA,GAAQ;EAA/B,CAAnB,EAA2D;IAQzD,IAAI,CAAC3D,WAAA,CAAYwE,YAAjB,EAA+B;MAC7B;IAD6B;IAI/B,IAAIxE,WAAA,CAAYG,yBAAhB,EAA2C;MACzCC,YAAA,CAAaJ,WAAA,CAAYG,yBAAzB;MACAH,WAAA,CAAYG,yBAAZ,GAAwC,IAAxC;IAFyC;IAK3C,IAAI,CAACwD,KAAL,EAAY;MAGV,IAAI3D,WAAA,CAAYe,WAAZ,CAAwB0B,IAAxB,GAA+B,CAAnC,EAAsC;QACpC;MADoC;MAMtC,IAAItS,MAAA,YAAkBsU,0CAAtB,EAAmD;QACjD,IAAIC,KAAA,GAAQrS,2BAAZ;QACA,IAAIlC,MAAA,CAAOwU,UAAP,GAAoB,CAApB,IAAyBxU,MAAA,CAAOwU,UAAP,GAA+B,IAA5D,EAAkE;UAEhED,KAAA,IAASvU,MAAA,CAAOwU,UAAhB;QAFgE;QAKlE3E,WAAA,CAAYG,yBAAZ,GAAwC+D,UAAA,CAAW,MAAM;UACvDlE,WAAA,CAAYG,yBAAZ,GAAwC,IAAxC;UACA,KAAKiB,kBAAL,CAAwB;YAAEpB,WAAF;YAAe7P,MAAf;YAAuBwT,KAAA,EAAO;UAA9B,CAAxB;QAFuD,CAAjB,EAGrCe,KAHqC,CAAxC;QAIA;MAXiD;IATzC;IAuBZ1E,WAAA,CAAYwE,YAAZ,CACGX,MADH,CACU,IAAIld,oBAAJ,CAAmBwJ,MAAA,CAAOrK,OAA1B,CADV,EAEGsS,KAFH,CAES,MAAM,EAFf;IAKA4H,WAAA,CAAYwE,YAAZ,GAA2B,IAA3B;IAEA,IAAI,KAAKtM,UAAL,CAAgBpB,SAApB,EAA+B;MAC7B;IAD6B;IAK/B,WAAW,CAAC8N,WAAD,EAAcC,cAAd,CAAX,IAA4C,KAAK5G,aAAjD,EAAgE;MAC9D,IAAI4G,cAAA,KAAmB7E,WAAvB,EAAoC;QAClC,KAAK/B,aAAL,CAAmB+C,MAAnB,CAA0B4D,WAA1B;QACA;MAFkC;IAD0B;IAOhE,KAAKjI,OAAL;EA3DyD;EAkE3D,IAAImI,KAAJA,CAAA,EAAY;IACV,OAAO,KAAKpH,MAAZ;EADU;AAnpBK;AAhxCnBtpB,oBAAA,GAAA+oB,YAAA;AAw6DA,MAAM4H,YAAN,CAAmB;EACjB,CAAAC,SAAA,GAAa,IAAIvD,GAAJ,EAAb;EAEA,CAAAwD,QAAA,GAAYlV,OAAA,CAAQC,OAAR,EAAZ;EAEAkV,YAAY/f,GAAZ,EAAiBggB,QAAjB,EAA2B;IACzB,MAAMC,KAAA,GAAQ;MACZlV,IAAA,EAAMmV,eAAA,CACJlgB,GADI,EAIFggB,QAFF,GAGI;QAAEA;MAAF,CAHJ,GAII,IANA;IADM,CAAd;IAWA,KAAK,CAAAF,QAAL,CAAepO,IAAf,CAAoB,MAAM;MACxB,WAAW2C,QAAX,IAAuB,KAAK,CAAAwL,SAA5B,EAAwC;QACtCxL,QAAA,CAAS8L,IAAT,CAAc,IAAd,EAAoBF,KAApB;MADsC;IADhB,CAA1B;EAZyB;EAmB3BG,iBAAiBxf,IAAjB,EAAuByT,QAAvB,EAAiC;IAC/B,KAAK,CAAAwL,SAAL,CAAgBtD,GAAhB,CAAoBlI,QAApB;EAD+B;EAIjCgM,oBAAoBzf,IAApB,EAA0ByT,QAA1B,EAAoC;IAClC,KAAK,CAAAwL,SAAL,CAAgBhE,MAAhB,CAAuBxH,QAAvB;EADkC;EAIpCiM,UAAA,EAAY;IACV,KAAK,CAAAT,SAAL,CAAgBlB,KAAhB;EADU;AAhCK;AAx6DnB1vB,oBAAA,GAAA2wB,YAAA;AAq9DA,MAAMW,aAAA,GAAgB;EACpBC,gBAAA,EAAkB,KADE;EAEpBC,iBAAA,EAAmB,IAFC;EAGpBC,YAAA,EAAc;AAHM,CAAtB;AAr9DAzxB,qBAAA,GAAAsxB,aAAA;AA09DiE;EAE/D,IAAI5xB,cAAA,IAAY,OAAOgyB,OAAP,KAAmC,UAAnD,EAA+D;IAE7DJ,aAAA,CAAcC,gBAAd,GAAiC,IAAjC;IAEAD,aAAA,CAAcE,iBAAd,GAEI,iBAFJ;EAJ6D,CAA/D,MAOO,IAAI,OAAO1Q,QAAP,KAAoB,QAAxB,EAAkC;IACvC,MAAM6Q,aAAA,GAAgB7Q,QAAA,EAAU8Q,aAAV,EAAyB5S,GAA/C;IACA,IAAI2S,aAAJ,EAAmB;MACjBL,aAAA,CAAcE,iBAAd,GAAkCG,aAAA,CAAcE,OAAd,CAChC,2BADgC,EAEhC,aAFgC,CAAlC;IADiB;EAFoB;EAWzCP,aAAA,CAAcQ,YAAd,GAA6B,UAAU3hB,OAAV,EAAmB4hB,QAAnB,EAA6B;IACxD,IAAIC,IAAJ;IACA,IAAI;MACFA,IAAA,GAAO,IAAInhB,GAAJ,CAAQV,OAAR,CAAP;MACA,IAAI,CAAC6hB,IAAA,CAAKC,MAAN,IAAgBD,IAAA,CAAKC,MAAL,KAAgB,MAApC,EAA4C;QAC1C,OAAO,KAAP;MAD0C;IAF1C,CAAJ,CAKE,MAAM;MACN,OAAO,KAAP;IADM;IAIR,MAAMC,KAAA,GAAQ,IAAIrhB,GAAJ,CAAQkhB,QAAR,EAAkBC,IAAlB,CAAd;IACA,OAAOA,IAAA,CAAKC,MAAL,KAAgBC,KAAA,CAAMD,MAA7B;EAZwD,CAA1D;EAeAX,aAAA,CAAca,gBAAd,GAAiC,UAAUniB,GAAV,EAAe;IAI9C,MAAMoiB,OAAA,GAAW,kBAAiBpiB,GAAI,KAAtC;IACA,OAAOa,GAAA,CAAIwhB,eAAJ,CAAoB,IAAIC,IAAJ,CAAS,CAACF,OAAD,CAAT,CAApB,CAAP;EAL8C,CAAhD;AAnC+D;AAoDjE,MAAMtS,SAAN,CAAgB;EACd,OAAO,CAAAyS,WAAP;EAEA3gB,YAAY;IACVD,IAAA,GAAO,IADG;IAEVqQ,IAAA,GAAO,IAFG;IAGVhT,SAAA,GAAY,IAAAK,uBAAA;EAHF,IAIR,EAJJ,EAIQ;IACN,KAAKsC,IAAL,GAAYA,IAAZ;IACA,KAAK+Q,SAAL,GAAiB,KAAjB;IACA,KAAK1T,SAAL,GAAiBA,SAAjB;IAEA,KAAKkW,gBAAL,GAAwB,IAAI1J,uBAAJ,EAAxB;IACA,KAAKgX,KAAL,GAAa,IAAb;IACA,KAAKC,UAAL,GAAkB,IAAlB;IACA,KAAKC,eAAL,GAAuB,IAAvB;IAEA,IAEE1Q,IAFF,EAGE;MACA,IAAIlC,SAAA,CAAU,CAAAyS,WAAV,EAAwBI,GAAxB,CAA4B3Q,IAA5B,CAAJ,EAAuC;QACrC,MAAM,IAAIpS,KAAJ,CAAU,8CAAV,CAAN;MADqC;MAGtC,CAAAkQ,SAAA,CAAU,CAAAyS,WAAV,KAA2B,IAAIK,OAAJ,EAA3B,EAA0C9G,GAA3C,CAA+C9J,IAA/C,EAAqD,IAArD;MACA,KAAK6Q,mBAAL,CAAyB7Q,IAAzB;MACA;IANA;IAQF,KAAK8Q,WAAL;EArBM;EA4BR,IAAIpX,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAKwJ,gBAAL,CAAsBxJ,OAA7B;EADY;EAQd,IAAIsG,IAAJA,CAAA,EAAW;IACT,OAAO,KAAKwQ,KAAZ;EADS;EAQX,IAAI9O,cAAJA,CAAA,EAAqB;IACnB,OAAO,KAAKgP,eAAZ;EADmB;EAIrBG,oBAAoB7Q,IAApB,EAA0B;IAIxB,KAAKwQ,KAAL,GAAaxQ,IAAb;IACA,KAAK0Q,eAAL,GAAuB,IAAI/O,+BAAJ,CAAmB,MAAnB,EAA2B,QAA3B,EAAqC3B,IAArC,CAAvB;IACA,KAAK0Q,eAAL,CAAqBK,EAArB,CAAwB,OAAxB,EAAiC,YAAY,EAA7C;IAIA,KAAK7N,gBAAL,CAAsBtJ,OAAtB;IAEA,KAAK8W,eAAL,CAAqB3O,IAArB,CAA0B,WAA1B,EAAuC;MACrC/U,SAAA,EAAW,KAAKA;IADqB,CAAvC;EAZwB;EAiB1B8jB,YAAA,EAAc;IAMZ,IACE,CAACxB,aAAA,CAAcC,gBAAf,IACA,CAACzR,SAAA,CAAUkT,+BAFb,EAGE;MACA,IAAI;QAAEC;MAAF,IAAgBnT,SAApB;MAEA,IAAI;QAGF,IAGE,CAACwR,aAAA,CAAcQ,YAAd,CAA2BxN,MAAA,CAAOC,QAAP,CAAgBF,IAA3C,EAAiD4O,SAAjD,CAHH,EAIE;UACAA,SAAA,GAAY3B,aAAA,CAAca,gBAAd,CACV,IAAIthB,GAAJ,CAAQoiB,SAAR,EAAmB3O,MAAA,CAAOC,QAA1B,EAAoCF,IAD1B,CAAZ;QADA;QAMF,MAAMxE,MAAA,GAIA,IAAIqT,MAAJ,CAAWD,SAAX,CAJN;QAKA,MAAMvP,cAAA,GAAiB,IAAIC,+BAAJ,CAAmB,MAAnB,EAA2B,QAA3B,EAAqC9D,MAArC,CAAvB;QACA,MAAMsT,cAAA,GAAiBA,CAAA,KAAM;UAC3BtT,MAAA,CAAOuR,mBAAP,CAA2B,OAA3B,EAAoCgC,aAApC;UACA1P,cAAA,CAAekB,OAAf;UACA/E,MAAA,CAAOwR,SAAP;UACA,IAAI,KAAK3O,SAAT,EAAoB;YAClB,KAAKwC,gBAAL,CAAsBrJ,MAAtB,CAA6B,IAAIjM,KAAJ,CAAU,sBAAV,CAA7B;UADkB,CAApB,MAEO;YAGL,KAAKyjB,gBAAL;UAHK;QANoB,CAA7B;QAaA,MAAMD,aAAA,GAAgBA,CAAA,KAAM;UAC1B,IAAI,CAAC,KAAKX,UAAV,EAAsB;YAGpBU,cAAA;UAHoB;QADI,CAA5B;QAOAtT,MAAA,CAAOsR,gBAAP,CAAwB,OAAxB,EAAiCiC,aAAjC;QAEA1P,cAAA,CAAeqP,EAAf,CAAkB,MAAlB,EAA0BjX,IAAA,IAAQ;UAChC+D,MAAA,CAAOuR,mBAAP,CAA2B,OAA3B,EAAoCgC,aAApC;UACA,IAAI,KAAK1Q,SAAT,EAAoB;YAClByQ,cAAA;YACA;UAFkB;UAIpB,IAAIrX,IAAJ,EAAU;YACR,KAAK4W,eAAL,GAAuBhP,cAAvB;YACA,KAAK8O,KAAL,GAAa3S,MAAb;YACA,KAAK4S,UAAL,GAAkB5S,MAAlB;YAEA,KAAKqF,gBAAL,CAAsBtJ,OAAtB;YAEA8H,cAAA,CAAeK,IAAf,CAAoB,WAApB,EAAiC;cAC/B/U,SAAA,EAAW,KAAKA;YADe,CAAjC;UAPQ,CAAV,MAUO;YACL,KAAKqkB,gBAAL;YACA3P,cAAA,CAAekB,OAAf;YACA/E,MAAA,CAAOwR,SAAP;UAHK;QAhByB,CAAlC;QAuBA3N,cAAA,CAAeqP,EAAf,CAAkB,OAAlB,EAA2BjX,IAAA,IAAQ;UACjC+D,MAAA,CAAOuR,mBAAP,CAA2B,OAA3B,EAAoCgC,aAApC;UACA,IAAI,KAAK1Q,SAAT,EAAoB;YAClByQ,cAAA;YACA;UAFkB;UAIpB,IAAI;YACFG,QAAA;UADE,CAAJ,CAEE,MAAM;YAEN,KAAKD,gBAAL;UAFM;QARyB,CAAnC;QAcA,MAAMC,QAAA,GAAWA,CAAA,KAAM;UACrB,MAAMC,OAAA,GAAU,IAAI7f,UAAJ,EAAhB;UAEAgQ,cAAA,CAAeK,IAAf,CAAoB,MAApB,EAA4BwP,OAA5B,EAAqC,CAACA,OAAA,CAAQhf,MAAT,CAArC;QAHqB,CAAvB;QASA+e,QAAA;QACA;MAxFE,CAAJ,CAyFE,MAAM;QACN,IAAAhkB,UAAA,EAAK,+BAAL;MADM;IA5FR;IAkGF,KAAK+jB,gBAAL;EA3GY;EA8GdA,iBAAA,EAAmB;IACjB,IAAI,CAAC/B,aAAA,CAAcC,gBAAnB,EAAqC;MACnC,IAAA7hB,UAAA,EAAK,yBAAL;MACA4hB,aAAA,CAAcC,gBAAd,GAAiC,IAAjC;IAFmC;IAKrCzR,SAAA,CAAU0T,sBAAV,CACG/Q,IADH,CACQgR,oBAAA,IAAwB;MAC5B,IAAI,KAAK/Q,SAAT,EAAoB;QAClB,KAAKwC,gBAAL,CAAsBrJ,MAAtB,CAA6B,IAAIjM,KAAJ,CAAU,sBAAV,CAA7B;QACA;MAFkB;MAIpB,MAAMoS,IAAA,GAAO,IAAI2O,YAAJ,EAAb;MACA,KAAK6B,KAAL,GAAaxQ,IAAb;MAGA,MAAMsF,EAAA,GAAM,OAAMgK,aAAA,CAAcG,YAAd,EAAP,EAAX;MAIA,MAAMiC,aAAA,GAAgB,IAAI/P,+BAAJ,CAAmB2D,EAAA,GAAK,SAAxB,EAAmCA,EAAnC,EAAuCtF,IAAvC,CAAtB;MACAyR,oBAAA,CAAqBE,KAArB,CAA2BD,aAA3B,EAA0C1R,IAA1C;MAEA,MAAM0B,cAAA,GAAiB,IAAIC,+BAAJ,CAAmB2D,EAAnB,EAAuBA,EAAA,GAAK,SAA5B,EAAuCtF,IAAvC,CAAvB;MACA,KAAK0Q,eAAL,GAAuBhP,cAAvB;MACA,KAAKwB,gBAAL,CAAsBtJ,OAAtB;MAEA8H,cAAA,CAAeK,IAAf,CAAoB,WAApB,EAAiC;QAC/B/U,SAAA,EAAW,KAAKA;MADe,CAAjC;IApB4B,CADhC,EAyBGgV,KAzBH,CAyBSjI,MAAA,IAAU;MACf,KAAKmJ,gBAAL,CAAsBrJ,MAAtB,CACE,IAAIjM,KAAJ,CAAW,mCAAkCmM,MAAA,CAAOrK,OAAQ,IAA5D,CADF;IADe,CAzBnB;EANiB;EAyCnBkT,QAAA,EAAU;IACR,KAAKlC,SAAL,GAAiB,IAAjB;IACA,IAAI,KAAK+P,UAAT,EAAqB;MAEnB,KAAKA,UAAL,CAAgBpB,SAAhB;MACA,KAAKoB,UAAL,GAAkB,IAAlB;IAHmB;IAKrB3S,SAAA,CAAU,CAAAyS,WAAV,EAAwB3F,MAAxB,CAA+B,KAAK4F,KAApC;IACA,KAAKA,KAAL,GAAa,IAAb;IACA,IAAI,KAAKE,eAAT,EAA0B;MACxB,KAAKA,eAAL,CAAqB9N,OAArB;MACA,KAAK8N,eAAL,GAAuB,IAAvB;IAFwB;EATlB;EAkBV,OAAOvQ,QAAPA,CAAgBiB,MAAhB,EAAwB;IAItB,IAAI,CAACA,MAAA,EAAQpB,IAAb,EAAmB;MACjB,MAAM,IAAIpS,KAAJ,CAAU,gDAAV,CAAN;IADiB;IAGnB,MAAMgkB,UAAA,GAAa,KAAK,CAAArB,WAAL,EAAmBhW,GAAnB,CAAuB6G,MAAA,CAAOpB,IAA9B,CAAnB;IACA,IAAI4R,UAAJ,EAAgB;MACd,IAAIA,UAAA,CAAW/O,eAAf,EAAgC;QAC9B,MAAM,IAAIjV,KAAJ,CACJ,0DACE,oEAFE,CAAN;MAD8B;MAMhC,OAAOgkB,UAAP;IAPc;IAShB,OAAO,IAAI9T,SAAJ,CAAcsD,MAAd,CAAP;EAjBsB;EAwBxB,WAAW6P,SAAXA,CAAA,EAAuB;IACrB,IAAIhR,mCAAA,CAAoBgR,SAAxB,EAAmC;MACjC,OAAOhR,mCAAA,CAAoBgR,SAA3B;IADiC;IAGnC,IAEE3B,aAAA,CAAcE,iBAAd,KAAoC,IAFtC,EAGE;MACA,IAAI,CAAC9xB,cAAL,EAAe;QACb,IAAA4mB,yBAAA,EAAW,+CAAX;MADa;MAGf,OAAOgL,aAAA,CAAcE,iBAArB;IAJA;IAMF,MAAM,IAAI5hB,KAAJ,CAAU,+CAAV,CAAN;EAbqB;EAgBvB,WAAWojB,+BAAXA,CAAA,EAA6C;IAC3C,IAAI;MACF,OAAO7d,UAAA,CAAW0e,WAAX,EAAwBJ,oBAAxB,IAAgD,IAAvD;IADE,CAAJ,CAEE,MAAM;MACN,OAAO,IAAP;IADM;EAHmC;EAS7C,WAAWD,sBAAXA,CAAA,EAAoC;IAClC,MAAMM,MAAA,GAAS,MAAAA,CAAA,KAAY;MACzB,MAAMC,wBAAA,GAA2B,KAAKf,+BAAtC;MAEA,IAAIe,wBAAJ,EAA8B;QAE5B,OAAOA,wBAAP;MAF4B;MAQ9B,IAEEr0B,cADA,IAGA,OAAOgyB,OAAP,KAAmC,UAJrC,EAKE;QAcA,MAAM7R,MAAA,GAASmU,IAAA,CAAK,SAAL,EAAgB,KAAKf,SAArB,CAAf;QACA,OAAOpT,MAAA,CAAO4T,oBAAd;MAfA;MAiBF,MAAM,IAAAQ,yBAAA,EAAW,KAAKhB,SAAhB,CAAN;MACA,OAAO3O,MAAA,CAAOuP,WAAP,CAAmBJ,oBAA1B;IAlCyB,CAA3B;IAqCA,OAAO,IAAA3iB,YAAA,EAAO,IAAP,EAAa,wBAAb,EAAuCgjB,MAAA,EAAvC,CAAP;EAtCkC;AAlStB;AA9gEhB9zB,iBAAA,GAAA8f,SAAA;AA81EA,MAAM+D,eAAN,CAAsB;EACpB,CAAAqQ,cAAA,GAAkB,IAAI/X,GAAJ,EAAlB;EAEA,CAAAgY,SAAA,GAAa,IAAIhY,GAAJ,EAAb;EAEA,CAAAiY,YAAA,GAAgB,IAAIjY,GAAJ,EAAhB;EAEA,CAAAkY,kBAAA,GAAsB,IAAtB;EAEAziB,YAAY8R,cAAZ,EAA4BgF,WAA5B,EAAyC5F,aAAzC,EAAwDM,MAAxD,EAAgEkR,OAAhE,EAAyE;IACvE,KAAK5Q,cAAL,GAAsBA,cAAtB;IACA,KAAKgF,WAAL,GAAmBA,WAAnB;IACA,KAAKe,UAAL,GAAkB,IAAIE,UAAJ,EAAlB;IACA,KAAK4K,UAAL,GAAkB,IAAIC,uBAAJ,CAAe;MAC/B3T,aAAA,EAAeuC,MAAA,CAAOvC,aADS;MAE/Ba,YAAA,EAAc0B,MAAA,CAAO1B;IAFU,CAAf,CAAlB;IAIA,KAAK+S,OAAL,GAAerR,MAAf;IAEA,KAAK5B,aAAL,GAAqB8S,OAAA,CAAQ9S,aAA7B;IACA,KAAKC,aAAL,GAAqB6S,OAAA,CAAQ7S,aAA7B;IACA,KAAKG,iBAAL,GAAyB0S,OAAA,CAAQ1S,iBAAjC;IACA,KAAKE,uBAAL,GAA+BwS,OAAA,CAAQxS,uBAAvC;IAEA,KAAKY,SAAL,GAAiB,KAAjB;IACA,KAAKgS,iBAAL,GAAyB,IAAzB;IAEA,KAAKC,cAAL,GAAsB7R,aAAtB;IACA,KAAK8R,WAAL,GAAmB,IAAnB;IACA,KAAKC,aAAL,GAAqB,IAArB;IACA,KAAKvM,sBAAL,GAA8B,IAAI9M,uBAAJ,EAA9B;IAEA,KAAKsZ,mBAAL;EAvBuE;EA+CzE,CAAAC,kBAAmBpjB,IAAnB,EAAyBmK,IAAA,GAAO,IAAhC,EAAsC;IACpC,MAAMkZ,aAAA,GAAgB,KAAK,CAAAd,cAAL,CAAqB3X,GAArB,CAAyB5K,IAAzB,CAAtB;IACA,IAAIqjB,aAAJ,EAAmB;MACjB,OAAOA,aAAP;IADiB;IAGnB,MAAMtZ,OAAA,GAAU,KAAKgI,cAAL,CAAoBS,eAApB,CAAoCxS,IAApC,EAA0CmK,IAA1C,CAAhB;IAEA,KAAK,CAAAoY,cAAL,CAAqBpI,GAArB,CAAyBna,IAAzB,EAA+B+J,OAA/B;IACA,OAAOA,OAAP;EARoC;EAWtC,IAAIgL,iBAAJA,CAAA,EAAwB;IACtB,OAAO,IAAA5V,YAAA,EAAO,IAAP,EAAa,mBAAb,EAAkC,IAAImkB,qCAAJ,EAAlC,CAAP;EADsB;EAIxBrK,mBACEF,MADF,EAEEU,cAAA,GAAiBpqB,oBAAA,CAAeE,MAFlC,EAGEuqB,sBAAA,GAAyB,IAH3B,EAIEyJ,QAAA,GAAW,KAJb,EAKE;IACA,IAAIrK,eAAA,GAAkBtqB,yBAAA,CAAoBE,OAA1C;IACA,IAAIyvB,6BAAA,GAAgCiF,qCAApC;IAEA,QAAQzK,MAAR;MACE,KAAK,KAAL;QACEG,eAAA,GAAkBtqB,yBAAA,CAAoBC,GAAtC;QACA;MACF,KAAK,SAAL;QACE;MACF,KAAK,OAAL;QACEqqB,eAAA,GAAkBtqB,yBAAA,CAAoBG,KAAtC;QACA;MACF;QACE,IAAAgP,UAAA,EAAM,wCAAuCgb,MAAxC,EAAL;IAVJ;IAaA,QAAQU,cAAR;MACE,KAAKpqB,oBAAA,CAAeC,OAApB;QACE4pB,eAAA,IAAmBtqB,yBAAA,CAAoBO,mBAAvC;QACA;MACF,KAAKE,oBAAA,CAAeE,MAApB;QACE;MACF,KAAKF,oBAAA,CAAeG,YAApB;QACE0pB,eAAA,IAAmBtqB,yBAAA,CAAoBK,iBAAvC;QACA;MACF,KAAKI,oBAAA,CAAeI,cAApB;QACEypB,eAAA,IAAmBtqB,yBAAA,CAAoBM,mBAAvC;QAEA,MAAM6lB,iBAAA,GACJmE,eAAA,GAAkBtqB,yBAAA,CAAoBG,KAAtC,IACA+qB,sBAAA,YAAkC2J,0CADlC,GAEI3J,sBAFJ,GAGI,KAAK/E,iBAJX;QAMAwJ,6BAAA,GAAgCxJ,iBAAA,CAAkB2O,YAAlD;QACA;MACF;QACE,IAAA3lB,UAAA,EAAM,gDAA+C0b,cAAhD,EAAL;IArBJ;IAwBA,IAAI8J,QAAJ,EAAc;MACZrK,eAAA,IAAmBtqB,yBAAA,CAAoBQ,MAAvC;IADY;IAId,OAAO;MACL8pB,eADK;MAELgB,QAAA,EAAU,GAAGhB,eAAgB,IAAGqF,6BAAA,CAA8BoF,IAApD,EAFL;MAGLpF;IAHK,CAAP;EA7CA;EAoDFtL,QAAA,EAAU;IACR,IAAI,KAAK8P,iBAAT,EAA4B;MAC1B,OAAO,KAAKA,iBAAL,CAAuBhZ,OAA9B;IAD0B;IAI5B,KAAKgH,SAAL,GAAiB,IAAjB;IACA,KAAKgS,iBAAL,GAAyB,IAAIlZ,uBAAJ,EAAzB;IAEA,KAAK,CAAA6Y,kBAAL,EAA0BxY,MAA1B,CACE,IAAIjM,KAAJ,CAAU,iDAAV,CADF;IAIA,MAAMyf,MAAA,GAAS,EAAf;IAGA,WAAWkG,IAAX,IAAmB,KAAK,CAAApB,SAAL,CAAgB7E,MAAhB,EAAnB,EAA6C;MAC3CD,MAAA,CAAO/b,IAAP,CAAYiiB,IAAA,CAAKnG,QAAL,EAAZ;IAD2C;IAG7C,KAAK,CAAA+E,SAAL,CAAgBzE,KAAhB;IACA,KAAK,CAAA0E,YAAL,CAAmB1E,KAAnB;IAEA,IAAI,KAAK8F,cAAL,CAAoB,mBAApB,CAAJ,EAA8C;MAC5C,KAAK9O,iBAAL,CAAuB+O,aAAvB;IAD4C;IAI9C,MAAMC,UAAA,GAAa,KAAKhS,cAAL,CAAoBS,eAApB,CAAoC,WAApC,EAAiD,IAAjD,CAAnB;IACAkL,MAAA,CAAO/b,IAAP,CAAYoiB,UAAZ;IAEA/Z,OAAA,CAAQ6H,GAAR,CAAY6L,MAAZ,EAAoB5M,IAApB,CAAyB,MAAM;MAC7B,KAAKgH,UAAL,CAAgBiG,KAAhB;MACA,KAAK6E,UAAL,CAAgB7E,KAAhB;MACA,KAAK,CAAAwE,cAAL,CAAqBxE,KAArB;MACA,KAAKjO,aAAL,CAAmBmD,OAAnB;MAEA,KAAK+P,cAAL,EAAqBgB,iBAArB,CACE,IAAIpjB,oBAAJ,CAAmB,wBAAnB,CADF;MAIA,IAAI,KAAKmR,cAAT,EAAyB;QACvB,KAAKA,cAAL,CAAoBkB,OAApB;QACA,KAAKlB,cAAL,GAAsB,IAAtB;MAFuB;MAIzB,KAAKgR,iBAAL,CAAuB9Y,OAAvB;IAd6B,CAA/B,EAeG,KAAK8Y,iBAAL,CAAuB7Y,MAf1B;IAgBA,OAAO,KAAK6Y,iBAAL,CAAuBhZ,OAA9B;EA5CQ;EA+CVoZ,oBAAA,EAAsB;IACpB,MAAM;MAAEpR,cAAF;MAAkBgF;IAAlB,IAAkC,IAAxC;IAEAhF,cAAA,CAAeqP,EAAf,CAAkB,WAAlB,EAA+B,CAACjX,IAAD,EAAO8Z,IAAP,KAAgB;MAC7C,IAAA/lB,YAAA,EACE,KAAK8kB,cADP,EAEE,iDAFF;MAIA,KAAKC,WAAL,GAAmB,KAAKD,cAAL,CAAoBkB,aAApB,EAAnB;MACA,KAAKjB,WAAL,CAAiBjQ,UAAjB,GAA8BmR,GAAA,IAAO;QACnC,KAAKjB,aAAL,GAAqB;UACnBlP,MAAA,EAAQmQ,GAAA,CAAInQ,MADO;UAEnBC,KAAA,EAAOkQ,GAAA,CAAIlQ;QAFQ,CAArB;MADmC,CAArC;MAMAgQ,IAAA,CAAKG,MAAL,GAAc,MAAM;QAClB,KAAKnB,WAAL,CACG9F,IADH,GAEGrM,IAFH,CAEQ,UAAU;UAAExR,KAAF;UAAS8d;QAAT,CAAV,EAA2B;UAC/B,IAAIA,IAAJ,EAAU;YACR6G,IAAA,CAAKI,KAAL;YACA;UAFQ;UAIV,IAAAnmB,YAAA,EACEoB,KAAA,YAAiBglB,WADnB,EAEE,sCAFF;UAMAL,IAAA,CAAKM,OAAL,CAAa,IAAIxiB,UAAJ,CAAezC,KAAf,CAAb,EAAoC,CAApC,EAAuC,CAACA,KAAD,CAAvC;QAX+B,CAFnC,EAeG+S,KAfH,CAeSjI,MAAA,IAAU;UACf6Z,IAAA,CAAKlJ,KAAL,CAAW3Q,MAAX;QADe,CAfnB;MADkB,CAApB;MAqBA6Z,IAAA,CAAKO,QAAL,GAAgBpa,MAAA,IAAU;QACxB,KAAK6Y,WAAL,CAAiBnF,MAAjB,CAAwB1T,MAAxB;QAEA6Z,IAAA,CAAKQ,KAAL,CAAWpS,KAAX,CAAiBqS,WAAA,IAAe;UAC9B,IAAI,KAAK3T,SAAT,EAAoB;YAClB;UADkB;UAGpB,MAAM2T,WAAN;QAJ8B,CAAhC;MAHwB,CAA1B;IAjC6C,CAA/C;IA6CA3S,cAAA,CAAeqP,EAAf,CAAkB,oBAAlB,EAAwCjX,IAAA,IAAQ;MAC9C,MAAMwa,iBAAA,GAAoB,IAAI9a,uBAAJ,EAA1B;MACA,MAAM+a,UAAA,GAAa,KAAK3B,WAAxB;MACA2B,UAAA,CAAWC,YAAX,CAAwB/T,IAAxB,CAA6B,MAAM;QAGjC,IAAI,CAAC8T,UAAA,CAAWE,oBAAZ,IAAoC,CAACF,UAAA,CAAWG,gBAApD,EAAsE;UACpE,IAAI,KAAK7B,aAAT,EAAwB;YACtBnM,WAAA,CAAY/D,UAAZ,GAAyB,KAAKkQ,aAA9B;UADsB;UAGxB0B,UAAA,CAAW5R,UAAX,GAAwBmR,GAAA,IAAO;YAC7BpN,WAAA,CAAY/D,UAAZ,GAAyB;cACvBgB,MAAA,EAAQmQ,GAAA,CAAInQ,MADW;cAEvBC,KAAA,EAAOkQ,GAAA,CAAIlQ;YAFY,CAAzB;UAD6B,CAA/B;QAJoE;QAYtE0Q,iBAAA,CAAkB1a,OAAlB,CAA0B;UACxB6a,oBAAA,EAAsBF,UAAA,CAAWE,oBADT;UAExBC,gBAAA,EAAkBH,UAAA,CAAWG,gBAFL;UAGxBC,aAAA,EAAeJ,UAAA,CAAWI;QAHF,CAA1B;MAfiC,CAAnC,EAoBGL,iBAAA,CAAkBza,MApBrB;MAsBA,OAAOya,iBAAA,CAAkB5a,OAAzB;IAzB8C,CAAhD;IA4BAgI,cAAA,CAAeqP,EAAf,CAAkB,gBAAlB,EAAoC,CAACjX,IAAD,EAAO8Z,IAAP,KAAgB;MAClD,IAAA/lB,YAAA,EACE,KAAK8kB,cADP,EAEE,sDAFF;MAIA,MAAMiC,WAAA,GAAc,KAAKjC,cAAL,CAAoBkC,cAApB,CAClB/a,IAAA,CAAK2J,KADa,EAElB3J,IAAA,CAAKmK,GAFa,CAApB;MAeA,IAAI,CAAC2Q,WAAL,EAAkB;QAChBhB,IAAA,CAAKI,KAAL;QACA;MAFgB;MAKlBJ,IAAA,CAAKG,MAAL,GAAc,MAAM;QAClBa,WAAA,CACG9H,IADH,GAEGrM,IAFH,CAEQ,UAAU;UAAExR,KAAF;UAAS8d;QAAT,CAAV,EAA2B;UAC/B,IAAIA,IAAJ,EAAU;YACR6G,IAAA,CAAKI,KAAL;YACA;UAFQ;UAIV,IAAAnmB,YAAA,EACEoB,KAAA,YAAiBglB,WADnB,EAEE,2CAFF;UAIAL,IAAA,CAAKM,OAAL,CAAa,IAAIxiB,UAAJ,CAAezC,KAAf,CAAb,EAAoC,CAApC,EAAuC,CAACA,KAAD,CAAvC;QAT+B,CAFnC,EAaG+S,KAbH,CAaSjI,MAAA,IAAU;UACf6Z,IAAA,CAAKlJ,KAAL,CAAW3Q,MAAX;QADe,CAbnB;MADkB,CAApB;MAmBA6Z,IAAA,CAAKO,QAAL,GAAgBpa,MAAA,IAAU;QACxB6a,WAAA,CAAYnH,MAAZ,CAAmB1T,MAAnB;QAEA6Z,IAAA,CAAKQ,KAAL,CAAWpS,KAAX,CAAiBqS,WAAA,IAAe;UAC9B,IAAI,KAAK3T,SAAT,EAAoB;YAClB;UADkB;UAGpB,MAAM2T,WAAN;QAJ8B,CAAhC;MAHwB,CAA1B;IA5CkD,CAApD;IAwDA3S,cAAA,CAAeqP,EAAf,CAAkB,QAAlB,EAA4B,CAAC;MAAE3M;IAAF,CAAD,KAAiB;MAC3C,KAAK0Q,SAAL,GAAiB1Q,OAAA,CAAQO,QAAzB;MACA,KAAKG,WAAL,GAAmBV,OAAA,CAAQ2Q,UAA3B;MACA,OAAO3Q,OAAA,CAAQ2Q,UAAf;MACArO,WAAA,CAAYzE,WAAZ,CAAwBrI,OAAxB,CAAgC,IAAIuK,gBAAJ,CAAqBC,OAArB,EAA8B,IAA9B,CAAhC;IAJ2C,CAA7C;IAOA1C,cAAA,CAAeqP,EAAf,CAAkB,cAAlB,EAAkC,UAAU9Y,EAAV,EAAc;MAC9C,IAAI8B,MAAJ;MACA,QAAQ9B,EAAA,CAAGtI,IAAX;QACE,KAAK,mBAAL;UACEoK,MAAA,GAAS,IAAIjK,uBAAJ,CAAsBmI,EAAA,CAAGvI,OAAzB,EAAkCuI,EAAA,CAAGlI,IAArC,CAAT;UACA;QACF,KAAK,qBAAL;UACEgK,MAAA,GAAS,IAAI7J,yBAAJ,CAAwB+H,EAAA,CAAGvI,OAA3B,CAAT;UACA;QACF,KAAK,qBAAL;UACEqK,MAAA,GAAS,IAAI5J,yBAAJ,CAAwB8H,EAAA,CAAGvI,OAA3B,CAAT;UACA;QACF,KAAK,6BAAL;UACEqK,MAAA,GAAS,IAAI3J,iCAAJ,CAAgC6H,EAAA,CAAGvI,OAAnC,EAA4CuI,EAAA,CAAG5H,MAA/C,CAAT;UACA;QACF,KAAK,uBAAL;UACE0J,MAAA,GAAS,IAAI/J,2BAAJ,CAA0BiI,EAAA,CAAGvI,OAA7B,EAAsCuI,EAAA,CAAGhI,OAAzC,CAAT;UACA;QACF;UACE,IAAAtC,iBAAA,EAAY,wCAAZ;MAjBJ;MAmBA+Y,WAAA,CAAYzE,WAAZ,CAAwBpI,MAAxB,CAA+BE,MAA/B;IArB8C,CAAhD;IAwBA2H,cAAA,CAAeqP,EAAf,CAAkB,iBAAlB,EAAqCiE,SAAA,IAAa;MAChD,KAAK,CAAA3C,kBAAL,GAA2B,IAAI7Y,uBAAJ,EAA3B;MAEA,IAAIkN,WAAA,CAAYhE,UAAhB,EAA4B;QAC1B,MAAMuS,cAAA,GAAiBxX,QAAA,IAAY;UACjC,IAAIA,QAAA,YAAoB7P,KAAxB,EAA+B;YAC7B,KAAK,CAAAykB,kBAAL,CAAyBxY,MAAzB,CAAgC4D,QAAhC;UAD6B,CAA/B,MAEO;YACL,KAAK,CAAA4U,kBAAL,CAAyBzY,OAAzB,CAAiC;cAAE6D;YAAF,CAAjC;UADK;QAH0B,CAAnC;QAOA,IAAI;UACFiJ,WAAA,CAAYhE,UAAZ,CAAuBuS,cAAvB,EAAuCD,SAAA,CAAUjlB,IAAjD;QADE,CAAJ,CAEE,OAAOkI,EAAP,EAAW;UACX,KAAK,CAAAoa,kBAAL,CAAyBxY,MAAzB,CAAgC5B,EAAhC;QADW;MAVa,CAA5B,MAaO;QACL,KAAK,CAAAoa,kBAAL,CAAyBxY,MAAzB,CACE,IAAI/J,uBAAJ,CAAsBklB,SAAA,CAAUtlB,OAAhC,EAAyCslB,SAAA,CAAUjlB,IAAnD,CADF;MADK;MAKP,OAAO,KAAK,CAAAsiB,kBAAL,CAAyB3Y,OAAhC;IArBgD,CAAlD;IAwBAgI,cAAA,CAAeqP,EAAf,CAAkB,YAAlB,EAAgCjX,IAAA,IAAQ;MAGtC4M,WAAA,CAAY/D,UAAZ,GAAyB;QACvBgB,MAAA,EAAQ7J,IAAA,CAAKrL,MADU;QAEvBmV,KAAA,EAAO9J,IAAA,CAAKrL;MAFW,CAAzB;MAKA,KAAK6X,sBAAL,CAA4B1M,OAA5B,CAAoCE,IAApC;IARsC,CAAxC;IAWA4H,cAAA,CAAeqP,EAAf,CAAkB,iBAAlB,EAAqCjX,IAAA,IAAQ;MAC3C,IAAI,KAAK4G,SAAT,EAAoB;QAClB;MADkB;MAIpB,MAAM6S,IAAA,GAAO,KAAK,CAAApB,SAAL,CAAgB5X,GAAhB,CAAoBT,IAAA,CAAKoN,SAAzB,CAAb;MACAqM,IAAA,CAAKxF,gBAAL,CAAsBjU,IAAA,CAAK0R,YAA3B,EAAyC1R,IAAA,CAAK+P,QAA9C;IAN2C,CAA7C;IASAnI,cAAA,CAAeqP,EAAf,CAAkB,WAAlB,EAA+B,CAAC,CAACzL,EAAD,EAAKvnB,IAAL,EAAWm3B,YAAX,CAAD,KAA8B;MAC3D,IAAI,KAAKxU,SAAT,EAAoB;QAClB;MADkB;MAIpB,IAAI,KAAK+G,UAAL,CAAgBkJ,GAAhB,CAAoBrL,EAApB,CAAJ,EAA6B;QAC3B;MAD2B;MAI7B,QAAQvnB,IAAR;QACE,KAAK,MAAL;UACE,MAAMqjB,MAAA,GAAS,KAAKqR,OAApB;UAEA,IAAI,WAAWyC,YAAf,EAA6B;YAC3B,MAAMC,aAAA,GAAgBD,YAAA,CAAaxK,KAAnC;YACA,IAAAhd,UAAA,EAAM,8BAA6BynB,aAA9B,EAAL;YACA,KAAK1N,UAAL,CAAgB7N,OAAhB,CAAwB0L,EAAxB,EAA4B6P,aAA5B;YACA;UAJ2B;UAO7B,MAAMC,WAAA,GACJhU,MAAA,CAAOlC,MAAP,IAAiB/L,UAAA,CAAWkiB,aAAX,EAA0BC,OAA3C,GACI,CAACC,IAAD,EAAOvnB,GAAP,KAAemF,UAAA,CAAWkiB,aAAX,CAAyBG,SAAzB,CAAmCD,IAAnC,EAAyCvnB,GAAzC,CADnB,GAEI,IAHN;UAIA,MAAMunB,IAAA,GAAO,IAAIE,2BAAJ,CAAmBP,YAAnB,EAAiC;YAC5C1iB,eAAA,EAAiB4O,MAAA,CAAO5O,eADoB;YAE5CkM,eAAA,EAAiB0C,MAAA,CAAO1C,eAFoB;YAG5CJ,YAAA,EAAc8C,MAAA,CAAO9C,YAHuB;YAI5C8W;UAJ4C,CAAjC,CAAb;UAOA,KAAK7C,UAAL,CACGmD,IADH,CACQH,IADR,EAEGvT,KAFH,CAESjI,MAAA,IAAU;YACf,OAAO2H,cAAA,CAAeS,eAAf,CAA+B,cAA/B,EAA+C;cAAEmD;YAAF,CAA/C,CAAP;UADe,CAFnB,EAKGqQ,OALH,CAKW,MAAM;YACb,IAAI,CAACvU,MAAA,CAAOzC,mBAAR,IAA+B4W,IAAA,CAAKzb,IAAxC,EAA8C;cAM5Cyb,IAAA,CAAKzb,IAAL,GAAY,IAAZ;YAN4C;YAQ9C,KAAK2N,UAAL,CAAgB7N,OAAhB,CAAwB0L,EAAxB,EAA4BiQ,IAA5B;UATa,CALjB;UAgBA;QACF,KAAK,UAAL;QACA,KAAK,OAAL;QACA,KAAK,SAAL;UACE,KAAK9N,UAAL,CAAgB7N,OAAhB,CAAwB0L,EAAxB,EAA4B4P,YAA5B;UACA;QACF;UACE,MAAM,IAAItnB,KAAJ,CAAW,kCAAiC7P,IAAlC,EAAV,CAAN;MA7CJ;IAT2D,CAA7D;IA0DA2jB,cAAA,CAAeqP,EAAf,CAAkB,KAAlB,EAAyB,CAAC,CAACzL,EAAD,EAAK4B,SAAL,EAAgBnpB,IAAhB,EAAsB63B,SAAtB,CAAD,KAAsC;MAC7D,IAAI,KAAKlV,SAAT,EAAoB;QAElB;MAFkB;MAKpB,MAAMmV,SAAA,GAAY,KAAK,CAAA1D,SAAL,CAAgB5X,GAAhB,CAAoB2M,SAApB,CAAlB;MACA,IAAI2O,SAAA,CAAUnO,IAAV,CAAeiJ,GAAf,CAAmBrL,EAAnB,CAAJ,EAA4B;QAC1B;MAD0B;MAI5B,QAAQvnB,IAAR;QACE,KAAK,OAAL;UACE83B,SAAA,CAAUnO,IAAV,CAAe9N,OAAf,CAAuB0L,EAAvB,EAA2BsQ,SAA3B;UAGA,IAAIA,SAAJ,EAAe;YACb,IAAInnB,MAAJ;YACA,IAAImnB,SAAA,CAAUE,MAAd,EAAsB;cACpB,MAAM;gBAAEC,KAAF;gBAASC;cAAT,IAAoBJ,SAA1B;cACAnnB,MAAA,GAASsnB,KAAA,GAAQC,MAAR,GAAiB,CAA1B;YAFoB,CAAtB,MAGO;cACLvnB,MAAA,GAASmnB,SAAA,CAAU9b,IAAV,EAAgBrL,MAAhB,IAA0B,CAAnC;YADK;YAIP,IAAIA,MAAA,GAAStQ,6BAAb,EAAsC;cACpC03B,SAAA,CAAUjO,wBAAV,GAAqC,IAArC;YADoC;UATzB;UAaf;QACF,KAAK,SAAL;UACEiO,SAAA,CAAUnO,IAAV,CAAe9N,OAAf,CAAuB0L,EAAvB,EAA2BsQ,SAA3B;UACA;QACF;UACE,MAAM,IAAIhoB,KAAJ,CAAW,2BAA0B7P,IAA3B,EAAV,CAAN;MAvBJ;IAX6D,CAA/D;IAsCA2jB,cAAA,CAAeqP,EAAf,CAAkB,aAAlB,EAAiCjX,IAAA,IAAQ;MACvC,IAAI,KAAK4G,SAAT,EAAoB;QAClB;MADkB;MAGpBgG,WAAA,CAAY/D,UAAZ,GAAyB;QACvBgB,MAAA,EAAQ7J,IAAA,CAAK6J,MADU;QAEvBC,KAAA,EAAO9J,IAAA,CAAK8J;MAFW,CAAzB;IAJuC,CAAzC;IAUAlC,cAAA,CAAeqP,EAAf,CAAkB,kBAAlB,EAAsCjX,IAAA,IAAQ;MAC5C,IAAI,KAAK4G,SAAT,EAAoB;QAClB,OAAO/G,OAAA,CAAQE,MAAR,CAAe,IAAIjM,KAAJ,CAAU,uBAAV,CAAf,CAAP;MADkB;MAGpB,IAAI,CAAC,KAAKgS,iBAAV,EAA6B;QAC3B,OAAOjG,OAAA,CAAQE,MAAR,CACL,IAAIjM,KAAJ,CACE,wEADF,CADK,CAAP;MAD2B;MAO7B,OAAO,KAAKgS,iBAAL,CAAuBqW,KAAvB,CAA6Bnc,IAA7B,CAAP;IAX4C,CAA9C;IAcA4H,cAAA,CAAeqP,EAAf,CAAkB,uBAAlB,EAA2CjX,IAAA,IAAQ;MACjD,IAAI,KAAK4G,SAAT,EAAoB;QAClB,OAAO/G,OAAA,CAAQE,MAAR,CAAe,IAAIjM,KAAJ,CAAU,uBAAV,CAAf,CAAP;MADkB;MAGpB,IAAI,CAAC,KAAKkS,uBAAV,EAAmC;QACjC,OAAOnG,OAAA,CAAQE,MAAR,CACL,IAAIjM,KAAJ,CACE,8EADF,CADK,CAAP;MADiC;MAOnC,OAAO,KAAKkS,uBAAL,CAA6BmW,KAA7B,CAAmCnc,IAAnC,CAAP;IAXiD,CAAnD;EAvUoB;EAsVtBqM,QAAA,EAAU;IACR,OAAO,KAAKzE,cAAL,CAAoBS,eAApB,CAAoC,SAApC,EAA+C,IAA/C,CAAP;EADQ;EAIViE,aAAA,EAAe;IACb,IAAI,KAAK1B,iBAAL,CAAuB2H,IAAvB,IAA+B,CAAnC,EAAsC;MACpC,IAAA3e,UAAA,EACE,6DACE,wCAFJ;IADoC;IAMtC,MAAM;MAAEsE,GAAF;MAAOmc;IAAP,IAAqB,KAAKzJ,iBAAL,CAAuB2O,YAAlD;IAEA,OAAO,KAAK3R,cAAL,CACJS,eADI,CAEH,cAFG,EAGH;MACE0C,SAAA,EAAW,CAAC,CAAC,KAAKC,WADpB;MAEEH,QAAA,EAAU,KAAKmQ,SAFjB;MAGEpQ,iBAAA,EAAmB1S,GAHrB;MAIEkkB,QAAA,EAAU,KAAKtD,WAAL,EAAkBsD,QAAlB,IAA8B;IAJ1C,CAHG,EASH/H,SATG,EAWJwH,OAXI,CAWI,MAAM;MACb,KAAKjR,iBAAL,CAAuB+O,aAAvB;IADa,CAXV,CAAP;EATa;EAyBfzO,QAAQC,UAAR,EAAoB;IAClB,IACE,CAAC9X,MAAA,CAAOC,SAAP,CAAiB6X,UAAjB,CAAD,IACAA,UAAA,IAAc,CADd,IAEAA,UAAA,GAAa,KAAK6P,SAHpB,EAIE;MACA,OAAOnb,OAAA,CAAQE,MAAR,CAAe,IAAIjM,KAAJ,CAAU,uBAAV,CAAf,CAAP;IADA;IAIF,MAAMsZ,SAAA,GAAYjC,UAAA,GAAa,CAA/B;MACE+N,aAAA,GAAgB,KAAK,CAAAZ,YAAL,CAAmB7X,GAAnB,CAAuB2M,SAAvB,CADlB;IAEA,IAAI8L,aAAJ,EAAmB;MACjB,OAAOA,aAAP;IADiB;IAGnB,MAAMtZ,OAAA,GAAU,KAAKgI,cAAL,CACbS,eADa,CACG,SADH,EACc;MAC1B+E;IAD0B,CADd,EAIbzG,IAJa,CAIR0G,QAAA,IAAY;MAChB,IAAI,KAAKzG,SAAT,EAAoB;QAClB,MAAM,IAAI9S,KAAJ,CAAU,qBAAV,CAAN;MADkB;MAGpB,MAAM2lB,IAAA,GAAO,IAAIxM,YAAJ,CACXG,SADW,EAEXC,QAFW,EAGX,IAHW,EAIX,KAAKsL,OAAL,CAAavT,MAJF,CAAb;MAMA,KAAK,CAAAiT,SAAL,CAAgBrI,GAAhB,CAAoB5C,SAApB,EAA+BqM,IAA/B;MACA,OAAOA,IAAP;IAXgB,CAJJ,CAAhB;IAiBA,KAAK,CAAAnB,YAAL,CAAmBtI,GAAnB,CAAuB5C,SAAvB,EAAkCxN,OAAlC;IACA,OAAOA,OAAP;EAhCkB;EAmCpBwL,aAAaC,GAAb,EAAkB;IAChB,IACE,OAAOA,GAAP,KAAe,QAAf,IACAA,GAAA,KAAQ,IADR,IAEA,CAAChY,MAAA,CAAOC,SAAP,CAAiB+X,GAAA,CAAIgR,GAArB,CAFD,IAGAhR,GAAA,CAAIgR,GAAJ,GAAU,CAHV,IAIA,CAAChpB,MAAA,CAAOC,SAAP,CAAiB+X,GAAA,CAAIiR,GAArB,CAJD,IAKAjR,GAAA,CAAIiR,GAAJ,GAAU,CANZ,EAOE;MACA,OAAOzc,OAAA,CAAQE,MAAR,CAAe,IAAIjM,KAAJ,CAAU,4BAAV,CAAf,CAAP;IADA;IAGF,OAAO,KAAK8T,cAAL,CAAoBS,eAApB,CAAoC,cAApC,EAAoD;MACzDgU,GAAA,EAAKhR,GAAA,CAAIgR,GADgD;MAEzDC,GAAA,EAAKjR,GAAA,CAAIiR;IAFgD,CAApD,CAAP;EAXgB;EAiBlB3N,eAAevB,SAAf,EAA0BwB,MAA1B,EAAkC;IAChC,OAAO,KAAKhH,cAAL,CAAoBS,eAApB,CAAoC,gBAApC,EAAsD;MAC3D+E,SAD2D;MAE3DwB;IAF2D,CAAtD,CAAP;EADgC;EAOlC9B,gBAAA,EAAkB;IAChB,OAAO,KAAK,CAAAmM,iBAAL,CAAwB,iBAAxB,CAAP;EADgB;EAIlBlM,aAAA,EAAe;IACb,OAAO,KAAK,CAAAkM,iBAAL,CAAwB,cAAxB,CAAP;EADa;EAIfjM,uBAAA,EAAyB;IACvB,OAAO,KAAKpF,cAAL,CAAoBS,eAApB,CAAoC,wBAApC,EAA8D,IAA9D,CAAP;EADuB;EAIzBiD,gBAAA,EAAkB;IAChB,OAAO,KAAK1D,cAAL,CAAoBS,eAApB,CAAoC,iBAApC,EAAuD,IAAvD,CAAP;EADgB;EAIlBkD,eAAeC,EAAf,EAAmB;IACjB,IAAI,OAAOA,EAAP,KAAc,QAAlB,EAA4B;MAC1B,OAAO3L,OAAA,CAAQE,MAAR,CAAe,IAAIjM,KAAJ,CAAU,8BAAV,CAAf,CAAP;IAD0B;IAG5B,OAAO,KAAK8T,cAAL,CAAoBS,eAApB,CAAoC,gBAApC,EAAsD;MAC3DmD;IAD2D,CAAtD,CAAP;EAJiB;EASnBC,cAAA,EAAgB;IACd,OAAO,KAAK7D,cAAL,CAAoBS,eAApB,CAAoC,eAApC,EAAqD,IAArD,CAAP;EADc;EAIhBqD,cAAA,EAAgB;IACd,OAAO,KAAK9D,cAAL,CAAoBS,eAApB,CAAoC,eAApC,EAAqD,IAArD,CAAP;EADc;EAIhBsD,YAAA,EAAc;IACZ,OAAO,KAAK/D,cAAL,CAAoBS,eAApB,CAAoC,aAApC,EAAmD,IAAnD,CAAP;EADY;EAIduD,qBAAA,EAAuB;IACrB,OAAO,KAAKhE,cAAL,CAAoBS,eAApB,CAAoC,sBAApC,EAA4D,IAA5D,CAAP;EADqB;EAIvBwD,cAAA,EAAgB;IACd,OAAO,KAAKjE,cAAL,CAAoBS,eAApB,CAAoC,eAApC,EAAqD,IAArD,CAAP;EADc;EAIhByD,eAAA,EAAiB;IACf,OAAO,KAAKlE,cAAL,CAAoBS,eAApB,CAAoC,gBAApC,EAAsD,IAAtD,CAAP;EADe;EAIjB0D,gBAAA,EAAkB;IAChB,OAAO,KAAK,CAAAkN,iBAAL,CAAwB,iBAAxB,CAAP;EADgB;EAIlBjK,iBAAiB5B,SAAjB,EAA4B;IAC1B,OAAO,KAAKxF,cAAL,CAAoBS,eAApB,CAAoC,kBAApC,EAAwD;MAC7D+E;IAD6D,CAAxD,CAAP;EAD0B;EAM5BiG,cAAcjG,SAAd,EAAyB;IACvB,OAAO,KAAKxF,cAAL,CAAoBS,eAApB,CAAoC,eAApC,EAAqD;MAC1D+E;IAD0D,CAArD,CAAP;EADuB;EAMzBpB,WAAA,EAAa;IACX,OAAO,KAAKpE,cAAL,CAAoBS,eAApB,CAAoC,YAApC,EAAkD,IAAlD,CAAP;EADW;EAIb4D,yBAAA,EAA2B;IACzB,OAAO,KAAKrE,cAAL,CACJS,eADI,CACY,0BADZ,EACwC,IADxC,EAEJ1B,IAFI,CAEC4V,OAAA,IAAW;MACf,OAAO,IAAIC,8CAAJ,CAA0BD,OAA1B,CAAP;IADe,CAFZ,CAAP;EADyB;EAQ3BrQ,eAAA,EAAiB;IACf,OAAO,KAAKtE,cAAL,CAAoBS,eAApB,CAAoC,gBAApC,EAAsD,IAAtD,CAAP;EADe;EAIjB8D,YAAA,EAAc;IACZ,MAAMtW,IAAA,GAAO,aAAb;MACEqjB,aAAA,GAAgB,KAAK,CAAAd,cAAL,CAAqB3X,GAArB,CAAyB5K,IAAzB,CADlB;IAEA,IAAIqjB,aAAJ,EAAmB;MACjB,OAAOA,aAAP;IADiB;IAGnB,MAAMtZ,OAAA,GAAU,KAAKgI,cAAL,CACbS,eADa,CACGxS,IADH,EACS,IADT,EAEb8Q,IAFa,CAER4V,OAAA,IAAW;MACf,OAAO;QACL/oB,IAAA,EAAM+oB,OAAA,CAAQ,CAAR,CADD;QAELE,QAAA,EAAUF,OAAA,CAAQ,CAAR,IAAa,IAAIG,kBAAJ,CAAaH,OAAA,CAAQ,CAAR,CAAb,CAAb,GAAwC,IAF7C;QAGLnV,0BAAA,EAA4B,KAAK0R,WAAL,EAAkBsD,QAAlB,IAA8B,IAHrD;QAILvB,aAAA,EAAe,KAAK/B,WAAL,EAAkB+B,aAAlB,IAAmC;MAJ7C,CAAP;IADe,CAFH,CAAhB;IAUA,KAAK,CAAAzC,cAAL,CAAqBpI,GAArB,CAAyBna,IAAzB,EAA+B+J,OAA/B;IACA,OAAOA,OAAP;EAjBY;EAoBdwM,YAAA,EAAc;IACZ,OAAO,KAAKxE,cAAL,CAAoBS,eAApB,CAAoC,aAApC,EAAmD,IAAnD,CAAP;EADY;EAId,MAAMsE,YAANA,CAAmBD,eAAA,GAAkB,KAArC,EAA4C;IAC1C,IAAI,KAAK9F,SAAT,EAAoB;MAClB;IADkB;IAGpB,MAAM,KAAKgB,cAAL,CAAoBS,eAApB,CAAoC,SAApC,EAA+C,IAA/C,CAAN;IAEA,WAAWoR,IAAX,IAAmB,KAAK,CAAApB,SAAL,CAAgB7E,MAAhB,EAAnB,EAA6C;MAC3C,MAAMmJ,iBAAA,GAAoBlD,IAAA,CAAKhN,OAAL,EAA1B;MAEA,IAAI,CAACkQ,iBAAL,EAAwB;QACtB,MAAM,IAAI7oB,KAAJ,CACH,sBAAqB2lB,IAAA,CAAKtO,UAAW,0BADlC,CAAN;MADsB;IAHmB;IAS7C,KAAKwC,UAAL,CAAgBiG,KAAhB;IACA,IAAI,CAAClH,eAAL,EAAsB;MACpB,KAAK+L,UAAL,CAAgB7E,KAAhB;IADoB;IAGtB,KAAK,CAAAwE,cAAL,CAAqBxE,KAArB;IACA,KAAKjO,aAAL,CAAmBmD,OAAnB,CAA2C,IAA3C;EApB0C;EAuB5C,IAAI+D,aAAJA,CAAA,EAAoB;IAClB,MAAM;MAAE1H,gBAAF;MAAoBL;IAApB,IAAkC,KAAK6T,OAA7C;IACA,OAAO,IAAA3jB,YAAA,EAAO,IAAP,EAAa,eAAb,EAA8B;MACnCmQ,gBADmC;MAEnCL;IAFmC,CAA9B,CAAP;EAFkB;AA7tBA;AA2uBtB,MAAM+I,UAAN,CAAiB;EACf,CAAAD,IAAA,GAAQvY,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAR;EAQA,CAAAykB,UAAWC,KAAX,EAAkB;IAChB,OAAQ,KAAK,CAAAjP,IAAL,CAAWiP,KAAX,MAAsB;MAC5B5L,UAAA,EAAY,IAAIvR,uBAAJ,EADgB;MAE5BM,IAAA,EAAM;IAFsB,CAA9B;EADgB;EAmBlBS,IAAIoc,KAAJ,EAAWxL,QAAA,GAAW,IAAtB,EAA4B;IAG1B,IAAIA,QAAJ,EAAc;MACZ,MAAMpc,GAAA,GAAM,KAAK,CAAA2nB,SAAL,CAAgBC,KAAhB,CAAZ;MACA5nB,GAAA,CAAIgc,UAAJ,CAAerR,OAAf,CAAuB+G,IAAvB,CAA4B,MAAM0K,QAAA,CAASpc,GAAA,CAAI+K,IAAb,CAAlC;MACA,OAAO,IAAP;IAHY;IAOd,MAAM/K,GAAA,GAAM,KAAK,CAAA2Y,IAAL,CAAWiP,KAAX,CAAZ;IAGA,IAAI,CAAC5nB,GAAA,EAAKgc,UAAL,CAAgBtR,OAArB,EAA8B;MAC5B,MAAM,IAAI7L,KAAJ,CAAW,6CAA4C+oB,KAAM,GAA7D,CAAN;IAD4B;IAG9B,OAAO5nB,GAAA,CAAI+K,IAAX;EAhB0B;EAuB5B6W,IAAIgG,KAAJ,EAAW;IACT,MAAM5nB,GAAA,GAAM,KAAK,CAAA2Y,IAAL,CAAWiP,KAAX,CAAZ;IACA,OAAO5nB,GAAA,EAAKgc,UAAL,CAAgBtR,OAAhB,IAA2B,KAAlC;EAFS;EAWXG,QAAQ+c,KAAR,EAAe7c,IAAA,GAAO,IAAtB,EAA4B;IAC1B,MAAM/K,GAAA,GAAM,KAAK,CAAA2nB,SAAL,CAAgBC,KAAhB,CAAZ;IACA5nB,GAAA,CAAI+K,IAAJ,GAAWA,IAAX;IACA/K,GAAA,CAAIgc,UAAJ,CAAenR,OAAf;EAH0B;EAM5B8T,MAAA,EAAQ;IACN,WAAWiJ,KAAX,IAAoB,KAAK,CAAAjP,IAAzB,EAAgC;MAC9B,MAAM;QAAE5N;MAAF,IAAW,KAAK,CAAA4N,IAAL,CAAWiP,KAAX,CAAjB;MACA7c,IAAA,EAAMgc,MAAN,EAAc9B,KAAd;IAF8B;IAIhC,KAAK,CAAAtM,IAAL,GAAavY,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAb;EALM;AApEO;AAgFjB,MAAM2kB,UAAN,CAAiB;EACf,CAAA/L,kBAAA,GAAsB,IAAtB;EAEAjb,YAAYib,kBAAZ,EAAgC;IAC9B,KAAK,CAAAA,kBAAL,GAA2BA,kBAA3B;IAQA,KAAKgM,UAAL,GAAkB,IAAlB;EAT8B;EAgBhC,IAAInd,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK,CAAAmR,kBAAL,CAAyBE,UAAzB,CAAoCrR,OAA3C;EADY;EAWd+T,OAAOc,UAAA,GAAa,CAApB,EAAuB;IACrB,KAAK,CAAA1D,kBAAL,CAAyB4C,MAAzB,CAA8C,IAA9C,EAAoDc,UAApD;EADqB;EAQvB,IAAIhE,cAAJA,CAAA,EAAqB;IACnB,MAAM;MAAEA;IAAF,IAAqB,KAAK,CAAAM,kBAAL,CAAyBV,YAApD;IACA,IAAI,CAACI,cAAL,EAAqB;MACnB,OAAO,KAAP;IADmB;IAGrB,MAAM;MAAEhB;IAAF,IAA0B,KAAK,CAAAsB,kBAArC;IACA,OACEN,cAAA,CAAeuM,IAAf,IACCvM,cAAA,CAAewM,MAAf,IAAyBxN,mBAAA,EAAqB8C,IAArB,GAA4B,CAFxD;EANmB;AAtCN;AAzpGjBruB,kBAAA,GAAA44B,UAAA;AAgtGA,MAAM1L,kBAAN,CAAyB;EACvB,OAAO,CAAA8L,WAAP,GAAsB,IAAIC,OAAJ,EAAtB;EAEArnB,YAAY;IACVub,QADU;IAEV/J,MAFU;IAGVsG,IAHU;IAIVD,UAJU;IAKV8B,mBALU;IAMVY,YANU;IAOVjD,SAPU;IAQV1H,aARU;IASVC,aATU;IAUV2L,wBAAA,GAA2B,KAVjB;IAWVlM,MAAA,GAAS,KAXC;IAYVsK,UAAA,GAAa;EAZH,CAAZ,EAaG;IACD,KAAK2B,QAAL,GAAgBA,QAAhB;IACA,KAAK/J,MAAL,GAAcA,MAAd;IACA,KAAKsG,IAAL,GAAYA,IAAZ;IACA,KAAKD,UAAL,GAAkBA,UAAlB;IACA,KAAK8B,mBAAL,GAA2BA,mBAA3B;IACA,KAAK2N,eAAL,GAAuB,IAAvB;IACA,KAAK/M,YAAL,GAAoBA,YAApB;IACA,KAAK/C,UAAL,GAAkBF,SAAlB;IACA,KAAK1H,aAAL,GAAqBA,aAArB;IACA,KAAKC,aAAL,GAAqBA,aAArB;IACA,KAAK+H,OAAL,GAAetI,MAAf;IACA,KAAKsK,UAAL,GAAkBA,UAAlB;IAEA,KAAK2N,OAAL,GAAe,KAAf;IACA,KAAKC,qBAAL,GAA6B,IAA7B;IACA,KAAKC,aAAL,GAAqB,KAArB;IACA,KAAKC,yBAAL,GACElM,wBAAA,KAA6B,IAA7B,IAAqC,OAAO9I,MAAP,KAAkB,WADzD;IAEA,KAAKiV,SAAL,GAAiB,KAAjB;IACA,KAAKxM,UAAL,GAAkB,IAAIvR,uBAAJ,EAAlB;IACA,KAAK0D,IAAL,GAAY,IAAI0Z,UAAJ,CAAe,IAAf,CAAZ;IAEA,KAAKY,YAAL,GAAoB,KAAK/J,MAAL,CAAYiI,IAAZ,CAAiB,IAAjB,CAApB;IACA,KAAK+B,cAAL,GAAsB,KAAKC,SAAL,CAAehC,IAAf,CAAoB,IAApB,CAAtB;IACA,KAAKiC,kBAAL,GAA0B,KAAKC,aAAL,CAAmBlC,IAAnB,CAAwB,IAAxB,CAA1B;IACA,KAAKmC,UAAL,GAAkB,KAAKC,KAAL,CAAWpC,IAAX,CAAgB,IAAhB,CAAlB;IACA,KAAKra,OAAL,GAAe+F,MAAA,CAAO8H,aAAP,CAAqB6N,MAApC;EA3BC;EA8BH,IAAIvJ,SAAJA,CAAA,EAAgB;IACd,OAAO,KAAKzC,UAAL,CAAgBrR,OAAhB,CAAwBsI,KAAxB,CAA8B,YAAY,EAA1C,CAAP;EADc;EAOhB0J,mBAAmB;IAAEF,YAAA,GAAe,KAAjB;IAAwBC;EAAxB,CAAnB,EAAoE;IAClE,IAAI,KAAK8L,SAAT,EAAoB;MAClB;IADkB;IAGpB,IAAI,KAAKlc,OAAT,EAAkB;MAChB,IAAI6P,kBAAA,CAAmB,CAAA8L,WAAnB,CAAgCrG,GAAhC,CAAoC,KAAKtV,OAAzC,CAAJ,EAAuD;QACrD,MAAM,IAAIzN,KAAJ,CACJ,qEACE,0DADF,GAEE,yBAHE,CAAN;MADqD;MAOvDsd,kBAAA,CAAmB,CAAA8L,WAAnB,CAAgC1L,GAAhC,CAAoC,KAAKjQ,OAAzC;IARgB;IAWlB,IAAI,KAAKmM,OAAL,IAAgBrU,UAAA,CAAW4kB,cAAX,EAA2BzC,OAA/C,EAAwD;MACtD,KAAK0C,OAAL,GAAe7kB,UAAA,CAAW4kB,cAAX,CAA0B9lB,MAA1B,CAAiC,KAAKmV,UAAtC,CAAf;MACA,KAAK4Q,OAAL,CAAaC,IAAb,CAAkB,KAAK9N,YAAvB;MACA,KAAK6N,OAAL,CAAaE,cAAb,GAA8B,KAAKF,OAAL,CAAaG,iBAAb,EAA9B;IAHsD;IAKxD,MAAM;MAAEjP,aAAF;MAAiBC,QAAjB;MAA2BnhB,SAA3B;MAAsCqhB;IAAtC,IAAqD,KAAKjI,MAAhE;IAEA,KAAKgX,GAAL,GAAW,IAAIC,sBAAJ,CACTnP,aADS,EAET,KAAKzB,UAFI,EAGT,KAAKC,IAHI,EAIT,KAAKlI,aAJI,EAKT,KAAKC,aALI,EAMT;MAAEgM;IAAF,CANS,EAOT,KAAKlC,mBAPI,EAQT,KAAKC,UARI,CAAX;IAUA,KAAK4O,GAAL,CAASE,YAAT,CAAsB;MACpBtwB,SADoB;MAEpBmhB,QAFoB;MAGpBqC,YAHoB;MAIpBnC;IAJoB,CAAtB;IAMA,KAAK6N,eAAL,GAAuB,CAAvB;IACA,KAAKG,aAAL,GAAqB,IAArB;IACA,KAAKD,qBAAL;EAxCkE;EA2CpE3J,OAAO/C,KAAA,GAAQ,IAAf,EAAqB6D,UAAA,GAAa,CAAlC,EAAqC;IACnC,KAAK4I,OAAL,GAAe,KAAf;IACA,KAAKI,SAAL,GAAiB,IAAjB;IACA,KAAKa,GAAL,EAAUG,UAAV;IAEA,IAAI,KAAKld,OAAT,EAAkB;MAChB6P,kBAAA,CAAmB,CAAA8L,WAAnB,CAAgCpM,MAAhC,CAAuC,KAAKvP,OAA5C;IADgB;IAGlB,KAAK8P,QAAL,CACET,KAAA,IACE,IAAI2D,0CAAJ,CACG,6BAA4B,KAAKjH,UAAL,GAAkB,CAA/C,EADF,EAEEmH,UAFF,CAFJ;EARmC;EAiBrC5C,oBAAA,EAAsB;IACpB,IAAI,CAAC,KAAK0L,aAAV,EAAyB;MACvB,KAAKD,qBAAL,KAA+B,KAAKK,cAApC;MACA;IAFuB;IAIzB,KAAKO,OAAL,EAAcQ,kBAAd,CAAiC,KAAKrO,YAAtC;IAEA,IAAI,KAAKgN,OAAT,EAAkB;MAChB;IADgB;IAGlB,KAAKO,SAAL;EAVoB;EAatBA,UAAA,EAAY;IACV,KAAKP,OAAL,GAAe,IAAf;IACA,IAAI,KAAKI,SAAT,EAAoB;MAClB;IADkB;IAGpB,IAAI,KAAKra,IAAL,CAAU2Z,UAAd,EAA0B;MACxB,KAAK3Z,IAAL,CAAU2Z,UAAV,CAAqB,KAAKc,kBAA1B;IADwB,CAA1B,MAEO;MACL,KAAKC,aAAL;IADK;EAPG;EAYZA,cAAA,EAAgB;IACd,IAAI,KAAKN,yBAAT,EAAoC;MAClChV,MAAA,CAAOmW,qBAAP,CAA6B,MAAM;QACjC,KAAKZ,UAAL,GAAkB7V,KAAlB,CAAwB,KAAKwV,YAA7B;MADiC,CAAnC;IADkC,CAApC,MAIO;MACL7d,OAAA,CAAQC,OAAR,GAAkB6G,IAAlB,CAAuB,KAAKoX,UAA5B,EAAwC7V,KAAxC,CAA8C,KAAKwV,YAAnD;IADK;EALO;EAUhB,MAAMM,KAANA,CAAA,EAAc;IACZ,IAAI,KAAKP,SAAT,EAAoB;MAClB;IADkB;IAGpB,KAAKL,eAAL,GAAuB,KAAKkB,GAAL,CAASM,mBAAT,CACrB,KAAKvO,YADgB,EAErB,KAAK+M,eAFgB,EAGrB,KAAKO,cAHgB,EAIrB,KAAKO,OAJgB,CAAvB;IAMA,IAAI,KAAKd,eAAL,KAAyB,KAAK/M,YAAL,CAAkBE,SAAlB,CAA4B5b,MAAzD,EAAiE;MAC/D,KAAK0oB,OAAL,GAAe,KAAf;MACA,IAAI,KAAKhN,YAAL,CAAkBG,SAAtB,EAAiC;QAC/B,KAAK8N,GAAL,CAASG,UAAT,CAAoB,KAAK/O,UAAzB;QACA,IAAI,KAAKnO,OAAT,EAAkB;UAChB6P,kBAAA,CAAmB,CAAA8L,WAAnB,CAAgCpM,MAAhC,CAAuC,KAAKvP,OAA5C;QADgB;QAGlB,KAAK8P,QAAL;MAL+B;IAF8B;EAVrD;AApJS;AA4KzB,MAAMwN,OAAA,GAC8B,UADpC;AA53GA36B,eAAA,GAAA26B,OAAA;AA+3GA,MAAMC,KAAA,GAC8B,WADpC;AA/3GA56B,aAAA,GAAA46B,KAAA;;;;;;;;;;;;ACeA,IAAA7d,KAAA,GAAAC,mBAAA;AACA,IAAA6d,OAAA,GAAA7d,mBAAA;AACA,IAAA8d,WAAA,GAAA9d,mBAAA;AAEA,MAAMmY,iBAAA,GAAoBhkB,MAAA,CAAO4pB,MAAP,CAAc;EACtC/mB,GAAA,EAAK,IADiC;EAEtCshB,IAAA,EAAM,EAFgC;EAGtCnF,SAAA,EAAWzd;AAH2B,CAAd,CAA1B;AAnBA1S,yBAAA,GAAAm1B,iBAAA;AA4BA,MAAMF,iBAAN,CAAwB;EACtB,CAAA+F,QAAA,GAAY,KAAZ;EAEA,CAAAC,OAAA,GAAW,IAAI9e,GAAJ,EAAX;EAEAvK,YAAA,EAAc;IAKZ,KAAKspB,aAAL,GAAqB,IAArB;IACA,KAAKC,eAAL,GAAuB,IAAvB;IACA,KAAKC,kBAAL,GAA0B,IAA1B;EAPY;EAgBdC,SAASnnB,GAAT,EAAconB,YAAd,EAA4B;IAC1B,MAAMrqB,KAAA,GAAQ,KAAK,CAAAgqB,OAAL,CAAc1e,GAAd,CAAkBrI,GAAlB,CAAd;IACA,IAAIjD,KAAA,KAAUyB,SAAd,EAAyB;MACvB,OAAO4oB,YAAP;IADuB;IAIzB,OAAOnqB,MAAA,CAAO6d,MAAP,CAAcsM,YAAd,EAA4BrqB,KAA5B,CAAP;EAN0B;EAc5BsqB,YAAYrnB,GAAZ,EAAiB;IACf,OAAO,KAAK,CAAA+mB,OAAL,CAAc1e,GAAd,CAAkBrI,GAAlB,CAAP;EADe;EAQjBsnB,OAAOtnB,GAAP,EAAY;IACV,KAAK,CAAA+mB,OAAL,CAAcrO,MAAd,CAAqB1Y,GAArB;IAEA,IAAI,KAAK,CAAA+mB,OAAL,CAAc5M,IAAd,KAAuB,CAA3B,EAA8B;MAC5B,KAAKoH,aAAL;IAD4B;IAI9B,IAAI,OAAO,KAAK2F,kBAAZ,KAAmC,UAAvC,EAAmD;MACjD,WAAWnqB,KAAX,IAAoB,KAAK,CAAAgqB,OAAL,CAAc3L,MAAd,EAApB,EAA4C;QAC1C,IAAIre,KAAA,YAAiBwqB,wBAArB,EAAuC;UACrC;QADqC;MADG;MAK5C,KAAKL,kBAAL,CAAwB,IAAxB;IANiD;EAPzC;EAsBZM,SAASxnB,GAAT,EAAcjD,KAAd,EAAqB;IACnB,MAAMF,GAAA,GAAM,KAAK,CAAAkqB,OAAL,CAAc1e,GAAd,CAAkBrI,GAAlB,CAAZ;IACA,IAAI8mB,QAAA,GAAW,KAAf;IACA,IAAIjqB,GAAA,KAAQ2B,SAAZ,EAAuB;MACrB,WAAW,CAACipB,KAAD,EAAQvX,GAAR,CAAX,IAA2BjT,MAAA,CAAOyqB,OAAP,CAAe3qB,KAAf,CAA3B,EAAkD;QAChD,IAAIF,GAAA,CAAI4qB,KAAJ,MAAevX,GAAnB,EAAwB;UACtB4W,QAAA,GAAW,IAAX;UACAjqB,GAAA,CAAI4qB,KAAJ,IAAavX,GAAb;QAFsB;MADwB;IAD7B,CAAvB,MAOO;MACL4W,QAAA,GAAW,IAAX;MACA,KAAK,CAAAC,OAAL,CAAcnP,GAAd,CAAkB5X,GAAlB,EAAuBjD,KAAvB;IAFK;IAIP,IAAI+pB,QAAJ,EAAc;MACZ,KAAK,CAAAa,WAAL;IADY;IAId,IACE5qB,KAAA,YAAiBwqB,wBAAjB,IACA,OAAO,KAAKL,kBAAZ,KAAmC,UAFrC,EAGE;MACA,KAAKA,kBAAL,CAAwBnqB,KAAA,CAAMW,WAAN,CAAkBkqB,KAA1C;IADA;EArBiB;EA+BrBnJ,IAAIze,GAAJ,EAAS;IACP,OAAO,KAAK,CAAA+mB,OAAL,CAActI,GAAd,CAAkBze,GAAlB,CAAP;EADO;EAOT6nB,OAAA,EAAS;IACP,OAAO,KAAK,CAAAd,OAAL,CAAc5M,IAAd,GAAqB,CAArB,GAAyB,IAAAta,mBAAA,EAAc,KAAK,CAAAknB,OAAnB,CAAzB,GAAwD,IAA/D;EADO;EAOTe,OAAOjrB,GAAP,EAAY;IACV,WAAW,CAACmD,GAAD,EAAMkQ,GAAN,CAAX,IAAyBjT,MAAA,CAAOyqB,OAAP,CAAe7qB,GAAf,CAAzB,EAA8C;MAC5C,KAAK2qB,QAAL,CAAcxnB,GAAd,EAAmBkQ,GAAnB;IAD4C;EADpC;EAMZ,IAAIiK,IAAJA,CAAA,EAAW;IACT,OAAO,KAAK,CAAA4M,OAAL,CAAc5M,IAArB;EADS;EAIX,CAAAwN,YAAA,EAAe;IACb,IAAI,CAAC,KAAK,CAAAb,QAAV,EAAqB;MACnB,KAAK,CAAAA,QAAL,GAAiB,IAAjB;MACA,IAAI,OAAO,KAAKE,aAAZ,KAA8B,UAAlC,EAA8C;QAC5C,KAAKA,aAAL;MAD4C;IAF3B;EADR;EASfzF,cAAA,EAAgB;IACd,IAAI,KAAK,CAAAuF,QAAT,EAAoB;MAClB,KAAK,CAAAA,QAAL,GAAiB,KAAjB;MACA,IAAI,OAAO,KAAKG,eAAZ,KAAgC,UAApC,EAAgD;QAC9C,KAAKA,eAAL;MAD8C;IAF9B;EADN;EAYhB,IAAIc,KAAJA,CAAA,EAAY;IACV,OAAO,IAAI7G,sBAAJ,CAA2B,IAA3B,CAAP;EADU;EAQZ,IAAIC,YAAJA,CAAA,EAAmB;IACjB,IAAI,KAAK,CAAA4F,OAAL,CAAc5M,IAAd,KAAuB,CAA3B,EAA8B;MAC5B,OAAO8G,iBAAP;IAD4B;IAG9B,MAAMnhB,GAAA,GAAM,IAAImI,GAAJ,EAAZ;MACEmZ,IAAA,GAAO,IAAI4G,0BAAJ,EADT;MAEE/L,SAAA,GAAY,EAFd;IAGA,MAAMgM,OAAA,GAAUhrB,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAhB;IACA,IAAImoB,SAAA,GAAY,KAAhB;IAEA,WAAW,CAACloB,GAAD,EAAMkQ,GAAN,CAAX,IAAyB,KAAK,CAAA6W,OAA9B,EAAwC;MACtC,MAAMoB,UAAA,GACJjY,GAAA,YAAeqX,wBAAf,GACIrX,GAAA,CAAIkY,SAAJ,CAAmC,KAAnC,EAA0CH,OAA1C,CADJ,GAEI/X,GAHN;MAIA,IAAIiY,UAAJ,EAAgB;QACdroB,GAAA,CAAI8X,GAAJ,CAAQ5X,GAAR,EAAamoB,UAAb;QAEA/G,IAAA,CAAKiH,MAAL,CAAY,GAAGroB,GAAI,IAAGsoB,IAAA,CAAKC,SAAL,CAAeJ,UAAf,CAAV,EAAZ;QACAD,SAAA,KAAc,CAAC,CAACC,UAAA,CAAWvE,MAA3B;MAJc;IALsB;IAaxC,IAAIsE,SAAJ,EAAe;MAGb,WAAWnrB,KAAX,IAAoB+C,GAAA,CAAIsb,MAAJ,EAApB,EAAkC;QAChC,IAAIre,KAAA,CAAM6mB,MAAV,EAAkB;UAChB3H,SAAA,CAAU7c,IAAV,CAAerC,KAAA,CAAM6mB,MAArB;QADgB;MADc;IAHrB;IAUf,OAAO9jB,GAAA,CAAIqa,IAAJ,GAAW,CAAX,GACH;MAAEra,GAAF;MAAOshB,IAAA,EAAMA,IAAA,CAAKoH,SAAL,EAAb;MAA+BvM;IAA/B,CADG,GAEHgF,iBAFJ;EAjCiB;AArJG;AA5BxBn1B,yBAAA,GAAAi1B,iBAAA;AA6NA,MAAMG,sBAAN,SAAqCH,iBAArC,CAAuD;EACrD,CAAAI,YAAA;EAEAzjB,YAAY+qB,MAAZ,EAAoB;IAClB;IACA,MAAM;MAAE3oB,GAAF;MAAOshB,IAAP;MAAanF;IAAb,IAA2BwM,MAAA,CAAOtH,YAAxC;IAEA,MAAMuH,KAAA,GAAQ3L,eAAA,CACZjd,GADY,EAIVmc,SAFF,GAGI;MAAEY,QAAA,EAAUZ;IAAZ,CAHJ,GAII,IANQ,CAAd;IAQA,KAAK,CAAAkF,YAAL,GAAqB;MAAErhB,GAAA,EAAK4oB,KAAP;MAActH,IAAd;MAAoBnF;IAApB,CAArB;EAZkB;EAmBpB,IAAI8L,KAAJA,CAAA,EAAY;IACV,IAAAtsB,iBAAA,EAAY,8CAAZ;EADU;EAQZ,IAAI0lB,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK,CAAAA,YAAZ;EADiB;AA9BkC;AA7NvDr1B,8BAAA,GAAAo1B,sBAAA;;;;;;;;;;;;ACoBA,IAAAyH,MAAA,GAAA7f,mBAAA;AACA,IAAAD,KAAA,GAAAC,mBAAA;AAcA,MAAMye,gBAAN,CAAuB;EACrB,CAAAqB,eAAA,GAAmB,KAAnB;EAEA,CAAAC,WAAA,GAAe,IAAf;EAEA,CAAAC,YAAA,GAAgB,KAAKC,OAAL,CAAavF,IAAb,CAAkB,IAAlB,CAAhB;EAEA,CAAAwF,aAAA,GAAiB,KAAKC,QAAL,CAAczF,IAAd,CAAmB,IAAnB,CAAjB;EAEA,CAAA0F,cAAA,GAAkB,KAAlB;EAEA,CAAAC,SAAA,GAAa,KAAb;EAEA,CAAAC,YAAA,GAAgB,KAAhB;EAEAC,eAAA,GAAkBpsB,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAlB;EAEAupB,UAAA,GAAa,IAAb;EAEAC,mBAAA,GAAsB,IAAtB;EAEA,CAAAC,WAAA,GAAe,KAAf;EAEA,CAAAC,MAAA,GAAUlC,gBAAA,CAAiBmC,OAAjB,EAAV;EAEA,OAAOC,aAAP,GAAuB,IAAIC,mBAAJ,EAAvB;EAEA,OAAOF,OAAP,GAAiB,CAAjB;EAKAhsB,YAAYmsB,UAAZ,EAAwB;IACtB,IAAI,KAAKnsB,WAAL,KAAqB6pB,gBAAzB,EAA2C;MACzC,IAAA9rB,iBAAA,EAAY,qCAAZ;IADyC;IAI3C,KAAKgtB,MAAL,GAAcoB,UAAA,CAAWpB,MAAzB;IACA,KAAKrV,EAAL,GAAUyW,UAAA,CAAWzW,EAArB;IACA,KAAKyQ,KAAL,GAAa,KAAKC,MAAL,GAAc,IAA3B;IACA,KAAK9O,SAAL,GAAiB6U,UAAA,CAAWpB,MAAX,CAAkBzT,SAAnC;IACA,KAAKvX,IAAL,GAAYosB,UAAA,CAAWpsB,IAAvB;IACA,KAAKqsB,GAAL,GAAW,IAAX;IACA,KAAKR,UAAL,GAAkBO,UAAA,CAAWE,SAA7B;IACA,KAAKC,mBAAL,GAA2B,IAA3B;IACA,KAAKC,oBAAL,GAA4B,KAA5B;IACA,KAAKZ,eAAL,CAAqBa,UAArB,GAAkCL,UAAA,CAAWK,UAA7C;IAEA,MAAM;MACJjU,QADI;MAEJkU,OAAA,EAAS;QAAEC,SAAF;QAAaC,UAAb;QAAyBC,KAAzB;QAAgCC;MAAhC;IAFL,IAGF,KAAK9B,MAAL,CAAYxR,QAHhB;IAKA,KAAKhB,QAAL,GAAgBA,QAAhB;IACA,KAAKuU,YAAL,GACG,OAAMvU,QAAN,GAAiB,KAAKqT,UAAL,CAAgBmB,cAAhB,CAA+BxU,QAAhD,IAA4D,GAD/D;IAEA,KAAKyU,cAAL,GAAsB,CAACN,SAAD,EAAYC,UAAZ,CAAtB;IACA,KAAKM,eAAL,GAAuB,CAACL,KAAD,EAAQC,KAAR,CAAvB;IAEA,MAAM,CAAC1G,KAAD,EAAQC,MAAR,IAAkB,KAAK8G,gBAA7B;IACA,KAAKC,CAAL,GAAShB,UAAA,CAAWgB,CAAX,GAAehH,KAAxB;IACA,KAAKiH,CAAL,GAASjB,UAAA,CAAWiB,CAAX,GAAehH,MAAxB;IAEA,KAAKiH,eAAL,GAAuB,KAAvB;IACA,KAAKC,OAAL,GAAe,KAAf;EAhCsB;EAmCxB,WAAWC,iBAAXA,CAAA,EAA+B;IAC7B,OAAO,IAAAruB,YAAA,EACL,IADK,EAEL,mBAFK,EAGL,KAAK+sB,aAAL,CAAmBuB,UAAnB,CAA8B,YAA9B,CAHK,CAAP;EAD6B;EAQ/B,OAAOC,uBAAPA,CAA+BC,MAA/B,EAAuC;IACrC,MAAMC,UAAA,GAAa,IAAIC,UAAJ,CAAe;MAChClY,EAAA,EAAIgY,MAAA,CAAO3C,MAAP,CAAc8C,SAAd,EAD4B;MAEhC9C,MAAA,EAAQ2C,MAAA,CAAO3C,MAFiB;MAGhCsB,SAAA,EAAWqB,MAAA,CAAO9B;IAHc,CAAf,CAAnB;IAKA+B,UAAA,CAAWrB,mBAAX,GAAiCoB,MAAA,CAAOpB,mBAAxC;IACAqB,UAAA,CAAWL,OAAX,GAAqB,IAArB;IACAK,UAAA,CAAW/B,UAAX,CAAsBkC,sBAAtB,CAA6CH,UAA7C;EARqC;EAevC,OAAOI,UAAPA,CAAkBC,KAAlB,EAAyB;EAOzB,OAAOC,mBAAPA,CAA2B/D,KAA3B,EAAkCgE,MAAlC,EAA0C;EAM1C,WAAWC,yBAAXA,CAAA,EAAuC;IACrC,OAAO,EAAP;EADqC;EAUvC,OAAOC,wBAAPA,CAAgCC,KAAhC,EAAuC;IACrC,OAAO,KAAP;EADqC;EAUvC,OAAOC,KAAPA,CAAaC,IAAb,EAAmBxD,MAAnB,EAA2B;IACzB,IAAAhtB,iBAAA,EAAY,iBAAZ;EADyB;EAQ3B,IAAIywB,kBAAJA,CAAA,EAAyB;IACvB,OAAO,EAAP;EADuB;EAIzB,IAAIC,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK,CAAA3C,WAAZ;EADiB;EAInB,IAAI2C,YAAJA,CAAiBpvB,KAAjB,EAAwB;IACtB,KAAK,CAAAysB,WAAL,GAAoBzsB,KAApB;IACA,KAAK+sB,GAAL,EAAUsC,SAAV,CAAoBC,MAApB,CAA2B,WAA3B,EAAwCtvB,KAAxC;EAFsB;EAKxBuvB,OAAA,EAAS;IACP,MAAM,CAAClC,SAAD,EAAYC,UAAZ,IAA0B,KAAKK,cAArC;IACA,QAAQ,KAAK6B,cAAb;MACE,KAAK,EAAL;QACE,KAAK1B,CAAL,IAAW,KAAK/G,MAAL,GAAcuG,UAAf,IAA8BD,SAAA,GAAY,CAAZ,CAAxC;QACA,KAAKU,CAAL,IAAW,KAAKjH,KAAL,GAAauG,SAAd,IAA4BC,UAAA,GAAa,CAAb,CAAtC;QACA;MACF,KAAK,GAAL;QACE,KAAKQ,CAAL,IAAU,KAAKhH,KAAL,GAAa,CAAvB;QACA,KAAKiH,CAAL,IAAU,KAAKhH,MAAL,GAAc,CAAxB;QACA;MACF,KAAK,GAAL;QACE,KAAK+G,CAAL,IAAW,KAAK/G,MAAL,GAAcuG,UAAf,IAA8BD,SAAA,GAAY,CAAZ,CAAxC;QACA,KAAKU,CAAL,IAAW,KAAKjH,KAAL,GAAauG,SAAd,IAA4BC,UAAA,GAAa,CAAb,CAAtC;QACA;MACF;QACE,KAAKQ,CAAL,IAAU,KAAKhH,KAAL,GAAa,CAAvB;QACA,KAAKiH,CAAL,IAAU,KAAKhH,MAAL,GAAc,CAAxB;QACA;IAhBJ;IAkBA,KAAK0I,iBAAL;EApBO;EA2BTC,YAAYvd,MAAZ,EAAoB;IAClB,KAAKoa,UAAL,CAAgBmD,WAAhB,CAA4Bvd,MAA5B;EADkB;EAIpB,IAAIwd,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKpD,UAAL,CAAgBoD,YAAvB;EADiB;EAOnBC,gBAAA,EAAkB;IAChB,KAAK7C,GAAL,CAAS8C,KAAT,CAAenD,MAAf,GAAwB,CAAxB;EADgB;EAOlBoD,gBAAA,EAAkB;IAChB,KAAK/C,GAAL,CAAS8C,KAAT,CAAenD,MAAf,GAAwB,KAAK,CAAAA,MAA7B;EADgB;EAIlBqD,UAAUrE,MAAV,EAAkB;IAChB,IAAIA,MAAA,KAAW,IAAf,EAAqB;MACnB,KAAKzT,SAAL,GAAiByT,MAAA,CAAOzT,SAAxB;MACA,KAAK0V,cAAL,GAAsBjC,MAAA,CAAOiC,cAA7B;IAFmB;IAIrB,KAAKjC,MAAL,GAAcA,MAAd;EALgB;EAWlBM,QAAQjM,KAAR,EAAe;IACb,IAAI,CAAC,KAAKyM,mBAAV,EAA+B;MAC7B;IAD6B;IAG/B,IAAI,CAAC,KAAK,CAAAL,cAAV,EAA2B;MACzB,KAAKT,MAAL,CAAYsE,WAAZ,CAAwB,IAAxB;IADyB,CAA3B,MAEO;MACL,KAAK,CAAA7D,cAAL,GAAuB,KAAvB;IADK;EANM;EAefD,SAASnM,KAAT,EAAgB;IACd,IAAI,CAAC,KAAKyM,mBAAV,EAA+B;MAC7B;IAD6B;IAI/B,IAAI,CAAC,KAAKwB,eAAV,EAA2B;MACzB;IADyB;IAQ3B,MAAMiC,MAAA,GAASlQ,KAAA,CAAMmQ,aAArB;IACA,IAAID,MAAA,EAAQE,OAAR,CAAiB,IAAG,KAAK9Z,EAAT,EAAhB,CAAJ,EAAoC;MAClC;IADkC;IAIpC0J,KAAA,CAAMqQ,cAAN;IAEA,IAAI,CAAC,KAAK1E,MAAL,EAAa2E,mBAAlB,EAAuC;MACrC,KAAKC,cAAL;IADqC;EApBzB;EAyBhBA,eAAA,EAAiB;IACf,IAAI,KAAKC,OAAL,EAAJ,EAAoB;MAClB,KAAKhG,MAAL;IADkB,CAApB,MAEO;MACL,KAAKiG,MAAL;IADK;EAHQ;EAWjBA,OAAA,EAAS;IACP,KAAK/B,sBAAL;EADO;EAITA,uBAAA,EAAyB;IACvB,KAAKlC,UAAL,CAAgBkC,sBAAhB,CAAuC,IAAvC;EADuB;EAWzBgC,MAAM3C,CAAN,EAASC,CAAT,EAAY2C,EAAZ,EAAgBC,EAAhB,EAAoB;IAClB,MAAM,CAAC7J,KAAD,EAAQC,MAAR,IAAkB,KAAK8G,gBAA7B;IACA,CAAC6C,EAAD,EAAKC,EAAL,IAAW,KAAKC,uBAAL,CAA6BF,EAA7B,EAAiCC,EAAjC,CAAX;IAEA,KAAK7C,CAAL,GAAU,CAAAA,CAAA,GAAI4C,EAAJ,IAAU5J,KAApB;IACA,KAAKiH,CAAL,GAAU,CAAAA,CAAA,GAAI4C,EAAJ,IAAU5J,MAApB;IAEA,KAAK0I,iBAAL;EAPkB;EAUpB,CAAAoB,UAAW,CAAC/J,KAAD,EAAQC,MAAR,CAAX,EAA4B+G,CAA5B,EAA+BC,CAA/B,EAAkC;IAChC,CAACD,CAAD,EAAIC,CAAJ,IAAS,KAAK6C,uBAAL,CAA6B9C,CAA7B,EAAgCC,CAAhC,CAAT;IAEA,KAAKD,CAAL,IAAUA,CAAA,GAAIhH,KAAd;IACA,KAAKiH,CAAL,IAAUA,CAAA,GAAIhH,MAAd;IAEA,KAAK0I,iBAAL;EANgC;EAclCoB,UAAU/C,CAAV,EAAaC,CAAb,EAAgB;IACd,KAAK,CAAA8C,SAAL,CAAgB,KAAKhD,gBAArB,EAAuCC,CAAvC,EAA0CC,CAA1C;EADc;EAUhB+C,gBAAgBhD,CAAhB,EAAmBC,CAAnB,EAAsB;IACpB,KAAK,CAAA8C,SAAL,CAAgB,KAAKlD,cAArB,EAAqCG,CAArC,EAAwCC,CAAxC;IACA,KAAKgD,SAAL;IACA,KAAKhE,GAAL,CAASiE,cAAT,CAAwB;MAAEC,KAAA,EAAO;IAAT,CAAxB;EAHoB;EAMtBC,KAAKR,EAAL,EAASC,EAAT,EAAa;IACX,MAAM,CAACQ,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;IACA,KAAKC,CAAL,IAAU4C,EAAA,GAAKS,WAAf;IACA,KAAKpD,CAAL,IAAU4C,EAAA,GAAKS,YAAf;IACA,IAAI,KAAKtD,CAAL,GAAS,CAAT,IAAc,KAAKA,CAAL,GAAS,CAAvB,IAA4B,KAAKC,CAAL,GAAS,CAArC,IAA0C,KAAKA,CAAL,GAAS,CAAvD,EAA0D;MAExD,MAAM;QAAED,CAAF;QAAKC;MAAL,IAAW,KAAKhB,GAAL,CAASsE,qBAAT,EAAjB;MACA,IAAI,KAAK3F,MAAL,CAAY4F,aAAZ,CAA0B,IAA1B,EAAgCxD,CAAhC,EAAmCC,CAAnC,CAAJ,EAA2C;QACzC,KAAKD,CAAL,IAAU7rB,IAAA,CAAK2J,KAAL,CAAW,KAAKkiB,CAAhB,CAAV;QACA,KAAKC,CAAL,IAAU9rB,IAAA,CAAK2J,KAAL,CAAW,KAAKmiB,CAAhB,CAAV;MAFyC;IAHa;IAW1D,KAAKhB,GAAL,CAAS8C,KAAT,CAAe0B,IAAf,GAAsB,GAAI,OAAM,KAAKzD,CAAX,EAAc0D,OAAf,CAAuB,CAAvB,CAA0B,GAAnD;IACA,KAAKzE,GAAL,CAAS8C,KAAT,CAAe4B,GAAf,GAAqB,GAAI,OAAM,KAAK1D,CAAX,EAAcyD,OAAf,CAAuB,CAAvB,CAA0B,GAAlD;IACA,KAAKzE,GAAL,CAASiE,cAAT,CAAwB;MAAEC,KAAA,EAAO;IAAT,CAAxB;EAjBW;EAoBbxB,kBAAA,EAAoB;IAClB,MAAM,CAACpC,SAAD,EAAYC,UAAZ,IAA0B,KAAKK,cAArC;IACA,IAAI;MAAEG,CAAF;MAAKC,CAAL;MAAQjH,KAAR;MAAeC;IAAf,IAA0B,IAA9B;IACAD,KAAA,IAASuG,SAAT;IACAtG,MAAA,IAAUuG,UAAV;IACAQ,CAAA,IAAKT,SAAL;IACAU,CAAA,IAAKT,UAAL;IAEA,QAAQ,KAAKpU,QAAb;MACE,KAAK,CAAL;QACE4U,CAAA,GAAI7rB,IAAA,CAAKgE,GAAL,CAAS,CAAT,EAAYhE,IAAA,CAAKC,GAAL,CAASmrB,SAAA,GAAYvG,KAArB,EAA4BgH,CAA5B,CAAZ,CAAJ;QACAC,CAAA,GAAI9rB,IAAA,CAAKgE,GAAL,CAAS,CAAT,EAAYhE,IAAA,CAAKC,GAAL,CAASorB,UAAA,GAAavG,MAAtB,EAA8BgH,CAA9B,CAAZ,CAAJ;QACA;MACF,KAAK,EAAL;QACED,CAAA,GAAI7rB,IAAA,CAAKgE,GAAL,CAAS,CAAT,EAAYhE,IAAA,CAAKC,GAAL,CAASmrB,SAAA,GAAYtG,MAArB,EAA6B+G,CAA7B,CAAZ,CAAJ;QACAC,CAAA,GAAI9rB,IAAA,CAAKC,GAAL,CAASorB,UAAT,EAAqBrrB,IAAA,CAAKgE,GAAL,CAAS6gB,KAAT,EAAgBiH,CAAhB,CAArB,CAAJ;QACA;MACF,KAAK,GAAL;QACED,CAAA,GAAI7rB,IAAA,CAAKC,GAAL,CAASmrB,SAAT,EAAoBprB,IAAA,CAAKgE,GAAL,CAAS6gB,KAAT,EAAgBgH,CAAhB,CAApB,CAAJ;QACAC,CAAA,GAAI9rB,IAAA,CAAKC,GAAL,CAASorB,UAAT,EAAqBrrB,IAAA,CAAKgE,GAAL,CAAS8gB,MAAT,EAAiBgH,CAAjB,CAArB,CAAJ;QACA;MACF,KAAK,GAAL;QACED,CAAA,GAAI7rB,IAAA,CAAKC,GAAL,CAASmrB,SAAT,EAAoBprB,IAAA,CAAKgE,GAAL,CAAS8gB,MAAT,EAAiB+G,CAAjB,CAApB,CAAJ;QACAC,CAAA,GAAI9rB,IAAA,CAAKgE,GAAL,CAAS,CAAT,EAAYhE,IAAA,CAAKC,GAAL,CAASorB,UAAA,GAAaxG,KAAtB,EAA6BiH,CAA7B,CAAZ,CAAJ;QACA;IAhBJ;IAmBA,KAAKD,CAAL,GAASA,CAAA,GAAIT,SAAb;IACA,KAAKU,CAAL,GAASA,CAAA,GAAIT,UAAb;IAEA,KAAKP,GAAL,CAAS8C,KAAT,CAAe0B,IAAf,GAAsB,GAAI,OAAM,KAAKzD,CAAX,EAAc0D,OAAf,CAAuB,CAAvB,CAA0B,GAAnD;IACA,KAAKzE,GAAL,CAAS8C,KAAT,CAAe4B,GAAf,GAAqB,GAAI,OAAM,KAAK1D,CAAX,EAAcyD,OAAf,CAAuB,CAAvB,CAA0B,GAAlD;EA/BkB;EAkCpB,OAAO,CAAAE,WAAPA,CAAoB5D,CAApB,EAAuBC,CAAvB,EAA0B4D,KAA1B,EAAiC;IAC/B,QAAQA,KAAR;MACE,KAAK,EAAL;QACE,OAAO,CAAC5D,CAAD,EAAI,CAACD,CAAL,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAAC,CAACA,CAAF,EAAK,CAACC,CAAN,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAAC,CAACA,CAAF,EAAKD,CAAL,CAAP;MACF;QACE,OAAO,CAACA,CAAD,EAAIC,CAAJ,CAAP;IARJ;EAD+B;EAkBjC6C,wBAAwB9C,CAAxB,EAA2BC,CAA3B,EAA8B;IAC5B,OAAOvD,gBAAA,CAAiB,CAAAkH,WAAjB,CAA8B5D,CAA9B,EAAiCC,CAAjC,EAAoC,KAAKyB,cAAzC,CAAP;EAD4B;EAS9BoC,wBAAwB9D,CAAxB,EAA2BC,CAA3B,EAA8B;IAC5B,OAAOvD,gBAAA,CAAiB,CAAAkH,WAAjB,CAA8B5D,CAA9B,EAAiCC,CAAjC,EAAoC,MAAM,KAAKyB,cAA/C,CAAP;EAD4B;EAI9B,CAAAqC,kBAAmB3Y,QAAnB,EAA6B;IAC3B,QAAQA,QAAR;MACE,KAAK,EAAL;QAAS;UACP,MAAM,CAACmU,SAAD,EAAYC,UAAZ,IAA0B,KAAKK,cAArC;UACA,OAAO,CAAC,CAAD,EAAI,CAACN,SAAD,GAAaC,UAAjB,EAA6BA,UAAA,GAAaD,SAA1C,EAAqD,CAArD,CAAP;QAFO;MAIT,KAAK,GAAL;QACE,OAAO,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,EAAW,CAAC,CAAZ,CAAP;MACF,KAAK,GAAL;QAAU;UACR,MAAM,CAACA,SAAD,EAAYC,UAAZ,IAA0B,KAAKK,cAArC;UACA,OAAO,CAAC,CAAD,EAAIN,SAAA,GAAYC,UAAhB,EAA4B,CAACA,UAAD,GAAcD,SAA1C,EAAqD,CAArD,CAAP;QAFQ;MAIV;QACE,OAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAP;IAZJ;EAD2B;EAiB7B,IAAIyE,WAAJA,CAAA,EAAkB;IAChB,OAAO,KAAKvF,UAAL,CAAgBmB,cAAhB,CAA+BqE,SAAtC;EADgB;EAIlB,IAAIvC,cAAJA,CAAA,EAAqB;IACnB,OAAQ,MAAKjD,UAAL,CAAgBmB,cAAhB,CAA+BxU,QAA/B,GAA0C,KAAKuU,YAA/C,IAA+D,GAAvE;EADmB;EAIrB,IAAII,gBAAJA,CAAA,EAAuB;IACrB,MAAM;MACJiE,WADI;MAEJnE,cAAA,EAAgB,CAACN,SAAD,EAAYC,UAAZ;IAFZ,IAGF,IAHJ;IAIA,MAAM0E,WAAA,GAAc3E,SAAA,GAAYyE,WAAhC;IACA,MAAMG,YAAA,GAAe3E,UAAA,GAAawE,WAAlC;IACA,OAAOruB,iBAAA,CAAYQ,mBAAZ,GACH,CAAChC,IAAA,CAAKiwB,KAAL,CAAWF,WAAX,CAAD,EAA0B/vB,IAAA,CAAKiwB,KAAL,CAAWD,YAAX,CAA1B,CADG,GAEH,CAACD,WAAD,EAAcC,YAAd,CAFJ;EAPqB;EAiBvBE,QAAQrL,KAAR,EAAeC,MAAf,EAAuB;IACrB,MAAM,CAACoK,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;IACA,KAAKd,GAAL,CAAS8C,KAAT,CAAe/I,KAAf,GAAuB,GAAI,CAAC,MAAMA,KAAP,GAAgBqK,WAAhB,EAA6BK,OAA9B,CAAsC,CAAtC,CAAyC,GAAnE;IACA,IAAI,CAAC,KAAK,CAAA3F,eAAV,EAA4B;MAC1B,KAAKkB,GAAL,CAAS8C,KAAT,CAAe9I,MAAf,GAAwB,GAAI,CAAC,MAAMA,MAAP,GAAiBqK,YAAjB,EAA+BI,OAAhC,CAAwC,CAAxC,CAA2C,GAAtE;IAD0B;EAHP;EAQvBY,QAAA,EAAU;IACR,MAAM;MAAEvC;IAAF,IAAY,KAAK9C,GAAvB;IACA,MAAM;MAAEhG,MAAF;MAAUD;IAAV,IAAoB+I,KAA1B;IACA,MAAMwC,YAAA,GAAevL,KAAA,CAAMwL,QAAN,CAAe,GAAf,CAArB;IACA,MAAMC,aAAA,GAAgB,CAAC,KAAK,CAAA1G,eAAN,IAA0B9E,MAAA,CAAOuL,QAAP,CAAgB,GAAhB,CAAhD;IACA,IAAID,YAAA,IAAgBE,aAApB,EAAmC;MACjC;IADiC;IAInC,MAAM,CAACpB,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;IACA,IAAI,CAACwE,YAAL,EAAmB;MACjBxC,KAAA,CAAM/I,KAAN,GAAc,GAAI,CAAC,MAAM0L,UAAA,CAAW1L,KAAX,CAAP,GAA4BqK,WAA5B,EAAyCK,OAA1C,CAAkD,CAAlD,CAAqD,GAAtE;IADiB;IAGnB,IAAI,CAAC,KAAK,CAAA3F,eAAN,IAA0B,CAAC0G,aAA/B,EAA8C;MAC5C1C,KAAA,CAAM9I,MAAN,GAAe,GAAI,CAAC,MAAMyL,UAAA,CAAWzL,MAAX,CAAP,GAA6BqK,YAA7B,EAA2CI,OAA5C,CAChB,CADgB,CAEhB,GAFF;IAD4C;EAbtC;EAwBViB,sBAAA,EAAwB;IACtB,OAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;EADsB;EAIxB,OAAO,CAAAC,aAAPA,CAAsBC,CAAtB,EAAyB;IACvBA,CAAA,CAAEvC,cAAF;EADuB;EAIzB,CAAAwC,eAAA,EAAkB;IAChB,IAAI,KAAK,CAAA9G,WAAT,EAAuB;MACrB;IADqB;IAGvB,KAAK,CAAAA,WAAL,GAAoBjc,QAAA,CAASgjB,aAAT,CAAuB,KAAvB,CAApB;IACA,KAAK,CAAA/G,WAAL,CAAkBuD,SAAlB,CAA4BhT,GAA5B,CAAgC,UAAhC;IACA,MAAMyW,OAAA,GAAU,CAAC,SAAD,EAAY,UAAZ,EAAwB,aAAxB,EAAuC,YAAvC,CAAhB;IACA,IAAI,CAAC,KAAK5F,oBAAV,EAAgC;MAC9B4F,OAAA,CAAQzwB,IAAR,CAAa,WAAb,EAA0B,aAA1B,EAAyC,cAAzC,EAAyD,YAAzD;IAD8B;IAGhC,WAAW3B,IAAX,IAAmBoyB,OAAnB,EAA4B;MAC1B,MAAM/F,GAAA,GAAMld,QAAA,CAASgjB,aAAT,CAAuB,KAAvB,CAAZ;MACA,KAAK,CAAA/G,WAAL,CAAkBiH,MAAlB,CAAyBhG,GAAzB;MACAA,GAAA,CAAIsC,SAAJ,CAAchT,GAAd,CAAkB,SAAlB,EAA6B3b,IAA7B;MACAqsB,GAAA,CAAI7M,gBAAJ,CACE,aADF,EAEE,KAAK,CAAA8S,kBAAL,CAAyBvM,IAAzB,CAA8B,IAA9B,EAAoC/lB,IAApC,CAFF;MAIAqsB,GAAA,CAAI7M,gBAAJ,CAAqB,aAArB,EAAoCsK,gBAAA,CAAiB,CAAAkI,aAArD;IAR0B;IAU5B,KAAK3F,GAAL,CAASkG,OAAT,CAAiB,KAAK,CAAAnH,WAAtB;EApBgB;EAuBlB,CAAAkH,mBAAoBtyB,IAApB,EAA0Bqf,KAA1B,EAAiC;IAC/BA,KAAA,CAAMqQ,cAAN;IACA,MAAM;MAAErsB;IAAF,IAAYN,iBAAA,CAAYG,QAA9B;IACA,IAAImc,KAAA,CAAMmT,MAAN,KAAiB,CAAjB,IAAuBnT,KAAA,CAAMoT,OAAN,IAAiBpvB,KAA5C,EAAoD;MAClD;IADkD;IAIpD,MAAMqvB,uBAAA,GAA0B,KAAK,CAAAC,kBAAL,CAAyB5M,IAAzB,CAA8B,IAA9B,EAAoC/lB,IAApC,CAAhC;IACA,MAAM4yB,cAAA,GAAiB,KAAKlE,YAA5B;IACA,KAAKA,YAAL,GAAoB,KAApB;IACA,MAAMmE,kBAAA,GAAqB;MAAEC,OAAA,EAAS,IAAX;MAAiBC,OAAA,EAAS;IAA1B,CAA3B;IACApgB,MAAA,CAAO6M,gBAAP,CACE,aADF,EAEEkT,uBAFF,EAGEG,kBAHF;IAKA,MAAMG,MAAA,GAAS,KAAK5F,CAApB;IACA,MAAM6F,MAAA,GAAS,KAAK5F,CAApB;IACA,MAAM6F,UAAA,GAAa,KAAK9M,KAAxB;IACA,MAAM+M,WAAA,GAAc,KAAK9M,MAAzB;IACA,MAAM+M,iBAAA,GAAoB,KAAKpI,MAAL,CAAYqB,GAAZ,CAAgB8C,KAAhB,CAAsBkE,MAAhD;IACA,MAAMC,WAAA,GAAc,KAAKjH,GAAL,CAAS8C,KAAT,CAAekE,MAAnC;IACA,KAAKhH,GAAL,CAAS8C,KAAT,CAAekE,MAAf,GAAwB,KAAKrI,MAAL,CAAYqB,GAAZ,CAAgB8C,KAAhB,CAAsBkE,MAAtB,GACtB1gB,MAAA,CAAO4gB,gBAAP,CAAwBlU,KAAA,CAAMkQ,MAA9B,EAAsC8D,MADxC;IAGA,MAAMG,iBAAA,GAAoBA,CAAA,KAAM;MAC9B,KAAK9E,YAAL,GAAoBkE,cAApB;MACAjgB,MAAA,CAAO8M,mBAAP,CAA2B,WAA3B,EAAwC+T,iBAAxC;MACA7gB,MAAA,CAAO8M,mBAAP,CAA2B,MAA3B,EAAmC+T,iBAAnC;MACA7gB,MAAA,CAAO8M,mBAAP,CACE,aADF,EAEEiT,uBAFF,EAGEG,kBAHF;MAKA,KAAK7H,MAAL,CAAYqB,GAAZ,CAAgB8C,KAAhB,CAAsBkE,MAAtB,GAA+BD,iBAA/B;MACA,KAAK/G,GAAL,CAAS8C,KAAT,CAAekE,MAAf,GAAwBC,WAAxB;MAEA,MAAMG,IAAA,GAAO,KAAKrG,CAAlB;MACA,MAAMsG,IAAA,GAAO,KAAKrG,CAAlB;MACA,MAAMsG,QAAA,GAAW,KAAKvN,KAAtB;MACA,MAAMwN,SAAA,GAAY,KAAKvN,MAAvB;MACA,IACEoN,IAAA,KAAST,MAAT,IACAU,IAAA,KAAST,MADT,IAEAU,QAAA,KAAaT,UAFb,IAGAU,SAAA,KAAcT,WAJhB,EAKE;QACA;MADA;MAIF,KAAKnE,WAAL,CAAiB;QACf6E,GAAA,EAAKA,CAAA,KAAM;UACT,KAAKzN,KAAL,GAAauN,QAAb;UACA,KAAKtN,MAAL,GAAcuN,SAAd;UACA,KAAKxG,CAAL,GAASqG,IAAT;UACA,KAAKpG,CAAL,GAASqG,IAAT;UACA,MAAM,CAACjD,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;UACA,KAAKsE,OAAL,CAAahB,WAAA,GAAckD,QAA3B,EAAqCjD,YAAA,GAAekD,SAApD;UACA,KAAK7E,iBAAL;UACA,KAAKsB,SAAL;QARS,CADI;QAWfyD,IAAA,EAAMA,CAAA,KAAM;UACV,KAAK1N,KAAL,GAAa8M,UAAb;UACA,KAAK7M,MAAL,GAAc8M,WAAd;UACA,KAAK/F,CAAL,GAAS4F,MAAT;UACA,KAAK3F,CAAL,GAAS4F,MAAT;UACA,MAAM,CAACxC,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;UACA,KAAKsE,OAAL,CAAahB,WAAA,GAAcyC,UAA3B,EAAuCxC,YAAA,GAAeyC,WAAtD;UACA,KAAKpE,iBAAL;UACA,KAAKsB,SAAL;QARU,CAXG;QAqBf0D,QAAA,EAAU;MArBK,CAAjB;IAzB8B,CAAhC;IAiDAphB,MAAA,CAAO6M,gBAAP,CAAwB,WAAxB,EAAqCgU,iBAArC;IAGA7gB,MAAA,CAAO6M,gBAAP,CAAwB,MAAxB,EAAgCgU,iBAAhC;EA7E+B;EAgFjC,CAAAb,mBAAoB3yB,IAApB,EAA0Bqf,KAA1B,EAAiC;IAC/B,MAAM,CAACoR,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;IACA,MAAM6F,MAAA,GAAS,KAAK5F,CAApB;IACA,MAAM6F,MAAA,GAAS,KAAK5F,CAApB;IACA,MAAM6F,UAAA,GAAa,KAAK9M,KAAxB;IACA,MAAM+M,WAAA,GAAc,KAAK9M,MAAzB;IACA,MAAM2N,QAAA,GAAWlK,gBAAA,CAAiBmK,QAAjB,GAA4BxD,WAA7C;IACA,MAAMyD,SAAA,GAAYpK,gBAAA,CAAiBmK,QAAjB,GAA4BvD,YAA9C;IAKA,MAAMc,KAAA,GAAQpE,CAAA,IAAK7rB,IAAA,CAAKiwB,KAAL,CAAWpE,CAAA,GAAI,KAAf,IAAwB,KAA3C;IACA,MAAM+G,cAAA,GAAiB,KAAK,CAAAhD,iBAAL,CAAwB,KAAK3Y,QAA7B,CAAvB;IACA,MAAM4b,MAAA,GAASA,CAAChH,CAAD,EAAIC,CAAJ,KAAU,CACvB8G,cAAA,CAAe,CAAf,IAAoB/G,CAApB,GAAwB+G,cAAA,CAAe,CAAf,IAAoB9G,CADrB,EAEvB8G,cAAA,CAAe,CAAf,IAAoB/G,CAApB,GAAwB+G,cAAA,CAAe,CAAf,IAAoB9G,CAFrB,CAAzB;IAIA,MAAMgH,iBAAA,GAAoB,KAAK,CAAAlD,iBAAL,CAAwB,MAAM,KAAK3Y,QAAnC,CAA1B;IACA,MAAM8b,SAAA,GAAYA,CAAClH,CAAD,EAAIC,CAAJ,KAAU,CAC1BgH,iBAAA,CAAkB,CAAlB,IAAuBjH,CAAvB,GAA2BiH,iBAAA,CAAkB,CAAlB,IAAuBhH,CADxB,EAE1BgH,iBAAA,CAAkB,CAAlB,IAAuBjH,CAAvB,GAA2BiH,iBAAA,CAAkB,CAAlB,IAAuBhH,CAFxB,CAA5B;IAIA,IAAIkH,QAAJ;IACA,IAAIC,WAAJ;IACA,IAAIC,UAAA,GAAa,KAAjB;IACA,IAAIC,YAAA,GAAe,KAAnB;IAEA,QAAQ10B,IAAR;MACE,KAAK,SAAL;QACEy0B,UAAA,GAAa,IAAb;QACAF,QAAA,GAAWA,CAACI,CAAD,EAAIC,CAAJ,KAAU,CAAC,CAAD,EAAI,CAAJ,CAArB;QACAJ,WAAA,GAAcA,CAACG,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAD,EAAIC,CAAJ,CAAxB;QACA;MACF,KAAK,WAAL;QACEL,QAAA,GAAWA,CAACI,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAA,GAAI,CAAL,EAAQ,CAAR,CAArB;QACAH,WAAA,GAAcA,CAACG,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAA,GAAI,CAAL,EAAQC,CAAR,CAAxB;QACA;MACF,KAAK,UAAL;QACEH,UAAA,GAAa,IAAb;QACAF,QAAA,GAAWA,CAACI,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAD,EAAI,CAAJ,CAArB;QACAH,WAAA,GAAcA,CAACG,CAAD,EAAIC,CAAJ,KAAU,CAAC,CAAD,EAAIA,CAAJ,CAAxB;QACA;MACF,KAAK,aAAL;QACEF,YAAA,GAAe,IAAf;QACAH,QAAA,GAAWA,CAACI,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAD,EAAIC,CAAA,GAAI,CAAR,CAArB;QACAJ,WAAA,GAAcA,CAACG,CAAD,EAAIC,CAAJ,KAAU,CAAC,CAAD,EAAIA,CAAA,GAAI,CAAR,CAAxB;QACA;MACF,KAAK,aAAL;QACEH,UAAA,GAAa,IAAb;QACAF,QAAA,GAAWA,CAACI,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAD,EAAIC,CAAJ,CAArB;QACAJ,WAAA,GAAcA,CAACG,CAAD,EAAIC,CAAJ,KAAU,CAAC,CAAD,EAAI,CAAJ,CAAxB;QACA;MACF,KAAK,cAAL;QACEL,QAAA,GAAWA,CAACI,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAA,GAAI,CAAL,EAAQC,CAAR,CAArB;QACAJ,WAAA,GAAcA,CAACG,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAA,GAAI,CAAL,EAAQ,CAAR,CAAxB;QACA;MACF,KAAK,YAAL;QACEF,UAAA,GAAa,IAAb;QACAF,QAAA,GAAWA,CAACI,CAAD,EAAIC,CAAJ,KAAU,CAAC,CAAD,EAAIA,CAAJ,CAArB;QACAJ,WAAA,GAAcA,CAACG,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAD,EAAI,CAAJ,CAAxB;QACA;MACF,KAAK,YAAL;QACED,YAAA,GAAe,IAAf;QACAH,QAAA,GAAWA,CAACI,CAAD,EAAIC,CAAJ,KAAU,CAAC,CAAD,EAAIA,CAAA,GAAI,CAAR,CAArB;QACAJ,WAAA,GAAcA,CAACG,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAD,EAAIC,CAAA,GAAI,CAAR,CAAxB;QACA;IAtCJ;IAyCA,MAAMC,KAAA,GAAQN,QAAA,CAASrB,UAAT,EAAqBC,WAArB,CAAd;IACA,MAAM2B,aAAA,GAAgBN,WAAA,CAAYtB,UAAZ,EAAwBC,WAAxB,CAAtB;IACA,IAAI4B,mBAAA,GAAsBX,MAAA,CAAO,GAAGU,aAAV,CAA1B;IACA,MAAME,SAAA,GAAYxD,KAAA,CAAMwB,MAAA,GAAS+B,mBAAA,CAAoB,CAApB,CAAf,CAAlB;IACA,MAAME,SAAA,GAAYzD,KAAA,CAAMyB,MAAA,GAAS8B,mBAAA,CAAoB,CAApB,CAAf,CAAlB;IACA,IAAIG,MAAA,GAAS,CAAb;IACA,IAAIC,MAAA,GAAS,CAAb;IAEA,IAAI,CAACC,MAAD,EAASC,MAAT,IAAmB,KAAKnF,uBAAL,CACrB7Q,KAAA,CAAMiW,SADe,EAErBjW,KAAA,CAAMkW,SAFe,CAAvB;IAIA,CAACH,MAAD,EAASC,MAAT,IAAmBf,SAAA,CAAUc,MAAA,GAAS3E,WAAnB,EAAgC4E,MAAA,GAAS3E,YAAzC,CAAnB;IAEA,IAAI+D,UAAJ,EAAgB;MACd,MAAMe,OAAA,GAAUj0B,IAAA,CAAKk0B,KAAL,CAAWvC,UAAX,EAAuBC,WAAvB,CAAhB;MACA+B,MAAA,GAASC,MAAA,GAAS5zB,IAAA,CAAKgE,GAAL,CAChBhE,IAAA,CAAKC,GAAL,CACED,IAAA,CAAKk0B,KAAL,CACEX,aAAA,CAAc,CAAd,IAAmBD,KAAA,CAAM,CAAN,CAAnB,GAA8BO,MADhC,EAEEN,aAAA,CAAc,CAAd,IAAmBD,KAAA,CAAM,CAAN,CAAnB,GAA8BQ,MAFhC,IAGIG,OAJN,EAME,IAAItC,UANN,EAOE,IAAIC,WAPN,CADgB,EAWhBa,QAAA,GAAWd,UAXK,EAYhBgB,SAAA,GAAYf,WAZI,CAAlB;IAFc,CAAhB,MAgBO,IAAIuB,YAAJ,EAAkB;MACvBQ,MAAA,GACE3zB,IAAA,CAAKgE,GAAL,CACEyuB,QADF,EAEEzyB,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAYD,IAAA,CAAKoG,GAAL,CAASmtB,aAAA,CAAc,CAAd,IAAmBD,KAAA,CAAM,CAAN,CAAnB,GAA8BO,MAAvC,CAAZ,CAFF,IAGIlC,UAJN;IADuB,CAAlB,MAMA;MACLiC,MAAA,GACE5zB,IAAA,CAAKgE,GAAL,CACE2uB,SADF,EAEE3yB,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAYD,IAAA,CAAKoG,GAAL,CAASmtB,aAAA,CAAc,CAAd,IAAmBD,KAAA,CAAM,CAAN,CAAnB,GAA8BQ,MAAvC,CAAZ,CAFF,IAGIlC,WAJN;IADK;IAQP,MAAMQ,QAAA,GAAWnC,KAAA,CAAM0B,UAAA,GAAagC,MAAnB,CAAjB;IACA,MAAMtB,SAAA,GAAYpC,KAAA,CAAM2B,WAAA,GAAcgC,MAApB,CAAlB;IACAJ,mBAAA,GAAsBX,MAAA,CAAO,GAAGI,WAAA,CAAYb,QAAZ,EAAsBC,SAAtB,CAAV,CAAtB;IACA,MAAMH,IAAA,GAAOuB,SAAA,GAAYD,mBAAA,CAAoB,CAApB,CAAzB;IACA,MAAMrB,IAAA,GAAOuB,SAAA,GAAYF,mBAAA,CAAoB,CAApB,CAAzB;IAEA,KAAK3O,KAAL,GAAauN,QAAb;IACA,KAAKtN,MAAL,GAAcuN,SAAd;IACA,KAAKxG,CAAL,GAASqG,IAAT;IACA,KAAKpG,CAAL,GAASqG,IAAT;IAEA,KAAKjC,OAAL,CAAahB,WAAA,GAAckD,QAA3B,EAAqCjD,YAAA,GAAekD,SAApD;IACA,KAAK7E,iBAAL;EA7H+B;EAoIjCzV,OAAA,EAAS;IACP,KAAK+S,GAAL,GAAWld,QAAA,CAASgjB,aAAT,CAAuB,KAAvB,CAAX;IACA,KAAK9F,GAAL,CAASqJ,YAAT,CAAsB,sBAAtB,EAA+C,OAAM,KAAKld,QAAX,IAAuB,GAAtE;IACA,KAAK6T,GAAL,CAASsJ,SAAT,GAAqB,KAAK31B,IAA1B;IACA,KAAKqsB,GAAL,CAASqJ,YAAT,CAAsB,IAAtB,EAA4B,KAAK/f,EAAjC;IACA,KAAK0W,GAAL,CAASqJ,YAAT,CAAsB,UAAtB,EAAkC,CAAlC;IAEA,KAAKtG,eAAL;IAEA,KAAK/C,GAAL,CAAS7M,gBAAT,CAA0B,SAA1B,EAAqC,KAAK,CAAA6L,YAA1C;IACA,KAAKgB,GAAL,CAAS7M,gBAAT,CAA0B,UAA1B,EAAsC,KAAK,CAAA+L,aAA3C;IAEA,MAAM,CAACkF,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;IACA,IAAI,KAAK2B,cAAL,GAAsB,GAAtB,KAA8B,CAAlC,EAAqC;MACnC,KAAKzC,GAAL,CAAS8C,KAAT,CAAeyG,QAAf,GAA0B,GAAI,CAAC,MAAMlF,YAAP,GAAuBD,WAAvB,EAAoCK,OAArC,CAC3B,CAD2B,CAE3B,GAFF;MAGA,KAAKzE,GAAL,CAAS8C,KAAT,CAAe0G,SAAf,GAA2B,GACzB,CAAC,MAAMpF,WAAP,GACAC,YADA,EAEAI,OAH4B,CAGpB,CAHoB,CAGjB,GAHb;IAJmC;IAUrC,MAAM,CAACd,EAAD,EAAKC,EAAL,IAAW,KAAK8B,qBAAL,EAAjB;IACA,KAAK5B,SAAL,CAAeH,EAAf,EAAmBC,EAAnB;IAEA,IAAA6F,iBAAA,EAAW,IAAX,EAAiB,KAAKzJ,GAAtB,EAA2B,CAAC,aAAD,CAA3B;IAEA,OAAO,KAAKA,GAAZ;EA5BO;EAmCT0J,YAAY1W,KAAZ,EAAmB;IACjB,MAAM;MAAEhc;IAAF,IAAYN,iBAAA,CAAYG,QAA9B;IACA,IAAImc,KAAA,CAAMmT,MAAN,KAAiB,CAAjB,IAAuBnT,KAAA,CAAMoT,OAAN,IAAiBpvB,KAA5C,EAAoD;MAElDgc,KAAA,CAAMqQ,cAAN;MACA;IAHkD;IAMpD,KAAK,CAAAjE,cAAL,GAAuB,IAAvB;IAEA,KAAK,CAAAuK,gBAAL,CAAuB3W,KAAvB;EAViB;EAanB,CAAA2W,iBAAkB3W,KAAlB,EAAyB;IACvB,IAAI,CAAC,KAAKqP,YAAV,EAAwB;MACtB;IADsB;IAIxB,MAAMuH,UAAA,GAAa,KAAKpK,UAAL,CAAgBoK,UAAhB,CAA2B,IAA3B,CAAnB;IACA,KAAKpK,UAAL,CAAgBmK,gBAAhB;IAEA,IAAInD,kBAAJ,EAAwBqD,mBAAxB;IACA,IAAID,UAAJ,EAAgB;MACdpD,kBAAA,GAAqB;QAAEC,OAAA,EAAS,IAAX;QAAiBC,OAAA,EAAS;MAA1B,CAArB;MACAmD,mBAAA,GAAsBjE,CAAA,IAAK;QACzB,MAAM,CAACjC,EAAD,EAAKC,EAAL,IAAW,KAAKC,uBAAL,CAA6B+B,CAAA,CAAEqD,SAA/B,EAA0CrD,CAAA,CAAEsD,SAA5C,CAAjB;QACA,KAAK1J,UAAL,CAAgBsK,mBAAhB,CAAoCnG,EAApC,EAAwCC,EAAxC;MAFyB,CAA3B;MAIAtd,MAAA,CAAO6M,gBAAP,CACE,aADF,EAEE0W,mBAFF,EAGErD,kBAHF;IANc;IAahB,MAAMW,iBAAA,GAAoBA,CAAA,KAAM;MAC9B7gB,MAAA,CAAO8M,mBAAP,CAA2B,WAA3B,EAAwC+T,iBAAxC;MACA7gB,MAAA,CAAO8M,mBAAP,CAA2B,MAA3B,EAAmC+T,iBAAnC;MACA,IAAIyC,UAAJ,EAAgB;QACdtjB,MAAA,CAAO8M,mBAAP,CACE,aADF,EAEEyW,mBAFF,EAGErD,kBAHF;MADc;MAQhB,KAAK,CAAApH,cAAL,GAAuB,KAAvB;MACA,IAAI,CAAC,KAAKI,UAAL,CAAgBuK,cAAhB,EAAL,EAAuC;QACrC,MAAM;UAAE/yB;QAAF,IAAYN,iBAAA,CAAYG,QAA9B;QACA,IACGmc,KAAA,CAAMoT,OAAN,IAAiB,CAACpvB,KAAnB,IACAgc,KAAA,CAAMgX,QADN,IAEChX,KAAA,CAAMiX,OAAN,IAAiBjzB,KAHpB,EAIE;UACA,KAAK2nB,MAAL,CAAYuL,cAAZ,CAA2B,IAA3B;QADA,CAJF,MAMO;UACL,KAAKvL,MAAL,CAAYsE,WAAZ,CAAwB,IAAxB;QADK;MAR8B;IAZT,CAAhC;IAyBA3c,MAAA,CAAO6M,gBAAP,CAAwB,WAAxB,EAAqCgU,iBAArC;IAIA7gB,MAAA,CAAO6M,gBAAP,CAAwB,MAAxB,EAAgCgU,iBAAhC;EAnDuB;EAsDzBnD,UAAA,EAAY;IACV,KAAKrF,MAAL,CAAYwL,eAAZ,CAA4B,IAA5B;EADU;EAIZC,sBAAsBzL,MAAtB,EAA8BoC,CAA9B,EAAiCC,CAAjC,EAAoC;IAClCrC,MAAA,CAAO0L,YAAP,CAAoB,IAApB;IACA,KAAKtJ,CAAL,GAASA,CAAT;IACA,KAAKC,CAAL,GAASA,CAAT;IACA,KAAK0B,iBAAL;IACA,KAAKsB,SAAL;EALkC;EAWpCsG,QAAQ3G,EAAR,EAAYC,EAAZ,EAAgB;IACd,MAAM1X,KAAA,GAAQ,KAAK6Y,WAAnB;IACA,MAAM,CAACzE,SAAD,EAAYC,UAAZ,IAA0B,KAAKK,cAArC;IACA,MAAM,CAACJ,KAAD,EAAQC,KAAR,IAAiB,KAAKI,eAA5B;IACA,MAAM0J,MAAA,GAAS5G,EAAA,GAAKzX,KAApB;IACA,MAAMse,MAAA,GAAS5G,EAAA,GAAK1X,KAApB;IACA,MAAM6U,CAAA,GAAI,KAAKA,CAAL,GAAST,SAAnB;IACA,MAAMU,CAAA,GAAI,KAAKA,CAAL,GAAST,UAAnB;IACA,MAAMxG,KAAA,GAAQ,KAAKA,KAAL,GAAauG,SAA3B;IACA,MAAMtG,MAAA,GAAS,KAAKA,MAAL,GAAcuG,UAA7B;IAEA,QAAQ,KAAKpU,QAAb;MACE,KAAK,CAAL;QACE,OAAO,CACL4U,CAAA,GAAIwJ,MAAJ,GAAa/J,KADR,EAELD,UAAA,GAAaS,CAAb,GAAiBwJ,MAAjB,GAA0BxQ,MAA1B,GAAmCyG,KAF9B,EAGLM,CAAA,GAAIwJ,MAAJ,GAAaxQ,KAAb,GAAqByG,KAHhB,EAILD,UAAA,GAAaS,CAAb,GAAiBwJ,MAAjB,GAA0B/J,KAJrB,CAAP;MAMF,KAAK,EAAL;QACE,OAAO,CACLM,CAAA,GAAIyJ,MAAJ,GAAahK,KADR,EAELD,UAAA,GAAaS,CAAb,GAAiBuJ,MAAjB,GAA0B9J,KAFrB,EAGLM,CAAA,GAAIyJ,MAAJ,GAAaxQ,MAAb,GAAsBwG,KAHjB,EAILD,UAAA,GAAaS,CAAb,GAAiBuJ,MAAjB,GAA0BxQ,KAA1B,GAAkC0G,KAJ7B,CAAP;MAMF,KAAK,GAAL;QACE,OAAO,CACLM,CAAA,GAAIwJ,MAAJ,GAAaxQ,KAAb,GAAqByG,KADhB,EAELD,UAAA,GAAaS,CAAb,GAAiBwJ,MAAjB,GAA0B/J,KAFrB,EAGLM,CAAA,GAAIwJ,MAAJ,GAAa/J,KAHR,EAILD,UAAA,GAAaS,CAAb,GAAiBwJ,MAAjB,GAA0BxQ,MAA1B,GAAmCyG,KAJ9B,CAAP;MAMF,KAAK,GAAL;QACE,OAAO,CACLM,CAAA,GAAIyJ,MAAJ,GAAaxQ,MAAb,GAAsBwG,KADjB,EAELD,UAAA,GAAaS,CAAb,GAAiBuJ,MAAjB,GAA0BxQ,KAA1B,GAAkC0G,KAF7B,EAGLM,CAAA,GAAIyJ,MAAJ,GAAahK,KAHR,EAILD,UAAA,GAAaS,CAAb,GAAiBuJ,MAAjB,GAA0B9J,KAJrB,CAAP;MAMF;QACE,MAAM,IAAI7uB,KAAJ,CAAU,kBAAV,CAAN;IA9BJ;EAXc;EA6ChB64B,uBAAuB3wB,IAAvB,EAA6BymB,UAA7B,EAAyC;IACvC,MAAM,CAAC9lB,EAAD,EAAKC,EAAL,EAASC,EAAT,EAAaC,EAAb,IAAmBd,IAAzB;IAEA,MAAMigB,KAAA,GAAQpf,EAAA,GAAKF,EAAnB;IACA,MAAMuf,MAAA,GAASpf,EAAA,GAAKF,EAApB;IAEA,QAAQ,KAAKyR,QAAb;MACE,KAAK,CAAL;QACE,OAAO,CAAC1R,EAAD,EAAK8lB,UAAA,GAAa3lB,EAAlB,EAAsBmf,KAAtB,EAA6BC,MAA7B,CAAP;MACF,KAAK,EAAL;QACE,OAAO,CAACvf,EAAD,EAAK8lB,UAAA,GAAa7lB,EAAlB,EAAsBsf,MAAtB,EAA8BD,KAA9B,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAACpf,EAAD,EAAK4lB,UAAA,GAAa7lB,EAAlB,EAAsBqf,KAAtB,EAA6BC,MAA7B,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAACrf,EAAD,EAAK4lB,UAAA,GAAa3lB,EAAlB,EAAsBof,MAAtB,EAA8BD,KAA9B,CAAP;MACF;QACE,MAAM,IAAInoB,KAAJ,CAAU,kBAAV,CAAN;IAVJ;EANuC;EAuBzC84B,UAAA,EAAY;EAMZlH,QAAA,EAAU;IACR,OAAO,KAAP;EADQ;EAOVmH,eAAA,EAAiB;IACf,KAAK,CAAArL,YAAL,GAAqB,IAArB;EADe;EAOjBsL,gBAAA,EAAkB;IAChB,KAAK,CAAAtL,YAAL,GAAqB,KAArB;EADgB;EAQlBA,aAAA,EAAe;IACb,OAAO,KAAK,CAAAA,YAAZ;EADa;EASfuL,wBAAA,EAA0B;IACxB,OAAO,KAAP;EADwB;EAQ1BC,iBAAA,EAAmB;IACjB,OAAO,KAAK9K,GAAL,IAAY,CAAC,KAAKiB,eAAzB;EADiB;EASnB8J,QAAA,EAAU;IACR,KAAK/K,GAAL,EAAU7M,gBAAV,CAA2B,SAA3B,EAAsC,KAAK,CAAA6L,YAA3C;IACA,KAAKgB,GAAL,EAAU7M,gBAAV,CAA2B,UAA3B,EAAuC,KAAK,CAAA+L,aAA5C;EAFQ;EAcVZ,UAAU0M,aAAA,GAAgB,KAA1B,EAAiCC,QAAA,GAAW,IAA5C,EAAkD;IAChD,IAAAt5B,iBAAA,EAAY,gCAAZ;EADgD;EAalD,OAAOu5B,WAAPA,CAAmBptB,IAAnB,EAAyB6gB,MAAzB,EAAiCsB,SAAjC,EAA4C;IAC1C,MAAMqB,MAAA,GAAS,IAAI,KAAKztB,SAAL,CAAeD,WAAnB,CAA+B;MAC5C+qB,MAD4C;MAE5CrV,EAAA,EAAIqV,MAAA,CAAO8C,SAAP,EAFwC;MAG5CxB;IAH4C,CAA/B,CAAf;IAKAqB,MAAA,CAAOnV,QAAP,GAAkBrO,IAAA,CAAKqO,QAAvB;IAEA,MAAM,CAACmU,SAAD,EAAYC,UAAZ,IAA0Be,MAAA,CAAOV,cAAvC;IACA,MAAM,CAACG,CAAD,EAAIC,CAAJ,EAAOjH,KAAP,EAAcC,MAAd,IAAwBsH,MAAA,CAAOmJ,sBAAP,CAC5B3sB,IAAA,CAAKhE,IADuB,EAE5BymB,UAF4B,CAA9B;IAIAe,MAAA,CAAOP,CAAP,GAAWA,CAAA,GAAIT,SAAf;IACAgB,MAAA,CAAON,CAAP,GAAWA,CAAA,GAAIT,UAAf;IACAe,MAAA,CAAOvH,KAAP,GAAeA,KAAA,GAAQuG,SAAvB;IACAgB,MAAA,CAAOtH,MAAP,GAAgBA,MAAA,GAASuG,UAAzB;IAEA,OAAOe,MAAP;EAlB0C;EAyB5C9D,OAAA,EAAS;IACP,KAAKwC,GAAL,CAAS5M,mBAAT,CAA6B,SAA7B,EAAwC,KAAK,CAAA4L,YAA7C;IACA,KAAKgB,GAAL,CAAS5M,mBAAT,CAA6B,UAA7B,EAAyC,KAAK,CAAA8L,aAA9C;IAEA,IAAI,CAAC,KAAKsE,OAAL,EAAL,EAAqB;MAGnB,KAAKC,MAAL;IAHmB;IAKrB,IAAI,KAAK9E,MAAT,EAAiB;MACf,KAAKA,MAAL,CAAYnB,MAAZ,CAAmB,IAAnB;IADe,CAAjB,MAEO;MACL,KAAKgC,UAAL,CAAgB2L,YAAhB,CAA6B,IAA7B;IADK;EAXA;EAmBT,IAAIC,WAAJA,CAAA,EAAkB;IAChB,OAAO,KAAP;EADgB;EAOlBC,cAAA,EAAgB;IACd,IAAI,KAAKD,WAAT,EAAsB;MACpB,KAAK,CAAAvF,cAAL;MACA,KAAK,CAAA9G,WAAL,CAAkBuD,SAAlB,CAA4B9E,MAA5B,CAAmC,QAAnC;IAFoB;EADR;EAUhB8N,OAAA,EAAS;IACP,KAAKD,aAAL;IACA,KAAKrL,GAAL,EAAUsC,SAAV,CAAoBhT,GAApB,CAAwB,gBAAxB;EAFO;EAQTic,SAAA,EAAW;IACT,KAAK,CAAAxM,WAAL,EAAmBuD,SAAnB,CAA6BhT,GAA7B,CAAiC,QAAjC;IACA,KAAK0Q,GAAL,EAAUsC,SAAV,CAAoB9E,MAApB,CAA2B,gBAA3B;IACA,IAAI,KAAKwC,GAAL,EAAUwL,QAAV,CAAmB1oB,QAAA,CAAS2oB,aAA5B,CAAJ,EAAgD;MAG9C,KAAKjM,UAAL,CAAgBoD,YAAhB,CAA6B5C,GAA7B,CAAiC0L,KAAjC;IAH8C;EAHvC;EAeXC,aAAa5pC,IAAb,EAAmBkR,KAAnB,EAA0B;EAM1B24B,eAAA,EAAiB;EAMjBC,cAAA,EAAgB;EAKhBC,gBAAA,EAAkB;EAKlB,IAAIC,UAAJA,CAAA,EAAiB;IACf,OAAO,KAAK/L,GAAZ;EADe;EAQjB,IAAIX,SAAJA,CAAA,EAAgB;IACd,OAAO,KAAK,CAAAA,SAAZ;EADc;EAQhB,IAAIA,SAAJA,CAAcpsB,KAAd,EAAqB;IACnB,KAAK,CAAAosB,SAAL,GAAkBpsB,KAAlB;IACA,IAAI,CAAC,KAAK0rB,MAAV,EAAkB;MAChB;IADgB;IAGlB,IAAI1rB,KAAJ,EAAW;MACT,KAAK0rB,MAAL,CAAYsE,WAAZ,CAAwB,IAAxB;MACA,KAAKtE,MAAL,CAAYqN,eAAZ,CAA4B,IAA5B;IAFS,CAAX,MAGO;MACL,KAAKrN,MAAL,CAAYqN,eAAZ,CAA4B,IAA5B;IADK;EARY;EAkBrBC,eAAelS,KAAf,EAAsBC,MAAtB,EAA8B;IAC5B,KAAK,CAAA8E,eAAL,GAAwB,IAAxB;IACA,MAAMoN,WAAA,GAAcnS,KAAA,GAAQC,MAA5B;IACA,MAAM;MAAE8I;IAAF,IAAY,KAAK9C,GAAvB;IACA8C,KAAA,CAAMoJ,WAAN,GAAoBA,WAApB;IACApJ,KAAA,CAAM9I,MAAN,GAAe,MAAf;EAL4B;EAQ9B,WAAW4N,QAAXA,CAAA,EAAsB;IACpB,OAAO,EAAP;EADoB;AAtmCD;AAnCvB5lC,wBAAA,GAAAy7B,gBAAA;AA+oCA,MAAM+D,UAAN,SAAyB/D,gBAAzB,CAA0C;EACxC7pB,YAAYwR,MAAZ,EAAoB;IAClB,MAAMA,MAAN;IACA,KAAK8a,mBAAL,GAA2B9a,MAAA,CAAO8a,mBAAlC;IACA,KAAKgB,OAAL,GAAe,IAAf;EAHkB;EAMpB5C,UAAA,EAAY;IACV,OAAO;MACLhV,EAAA,EAAI,KAAK4W,mBADJ;MAELgB,OAAA,EAAS,IAFJ;MAGLhW,SAAA,EAAW,KAAKA;IAHX,CAAP;EADU;AAP4B;;;;;;;;;;;;;;AC5nC1C,IAAAnM,KAAA,GAAAC,mBAAA;AAUA,IAAAE,cAAA,GAAAF,mBAAA;AAEA,SAASyqB,UAATA,CAAoB12B,GAApB,EAAyBo5B,OAAzB,EAAkCC,KAAlC,EAAyC;EACvC,WAAWz4B,IAAX,IAAmBy4B,KAAnB,EAA0B;IACxBD,OAAA,CAAQhZ,gBAAR,CAAyBxf,IAAzB,EAA+BZ,GAAA,CAAIY,IAAJ,EAAU+lB,IAAV,CAAe3mB,GAAf,CAA/B;EADwB;AADa;AAWzC,SAASs5B,YAATA,CAAsBC,OAAtB,EAA+B;EAC7B,OAAOp3B,IAAA,CAAKiwB,KAAL,CAAWjwB,IAAA,CAAKC,GAAL,CAAS,GAAT,EAAcD,IAAA,CAAKgE,GAAL,CAAS,CAAT,EAAY,MAAMozB,OAAlB,CAAd,CAAX,EACJ70B,QADI,CACK,EADL,EAEJC,QAFI,CAEK,CAFL,EAEQ,GAFR,CAAP;AAD6B;AAS/B,MAAM60B,SAAN,CAAgB;EACd,CAAAjjB,EAAA,GAAM,CAAN;EAMAkjB,MAAA,EAAQ;IACN,OAAO,GAAGnpC,4BAAH,GAA4B,KAAK,CAAAimB,EAAL,EAA5B,EAAP;EADM;AAPM;AAoBhB,MAAMmjB,YAAN,CAAmB;EACjB,CAAAC,MAAA,GAAU,IAAAluB,aAAA,GAAV;EAEA,CAAA8K,EAAA,GAAM,CAAN;EAEA,CAAAqjB,KAAA,GAAS,IAAT;EAEA,WAAWC,mBAAXA,CAAA,EAAiC;IAM/B,MAAMC,GAAA,GAAO,sKAAb;IACA,MAAM9R,MAAA,GAAS,IAAInkB,eAAJ,CAAoB,CAApB,EAAuB,CAAvB,CAAf;IACA,MAAMk2B,GAAA,GAAM/R,MAAA,CAAOgS,UAAP,CAAkB,IAAlB,CAAZ;IACA,MAAMC,KAAA,GAAQ,IAAIC,KAAJ,EAAd;IACAD,KAAA,CAAMhsB,GAAN,GAAY6rB,GAAZ;IACA,MAAMnvB,OAAA,GAAUsvB,KAAA,CAAMhxB,MAAN,GAAeyI,IAAf,CAAoB,MAAM;MACxCqoB,GAAA,CAAII,SAAJ,CAAcF,KAAd,EAAqB,CAArB,EAAwB,CAAxB,EAA2B,CAA3B,EAA8B,CAA9B,EAAiC,CAAjC,EAAoC,CAApC,EAAuC,CAAvC,EAA0C,CAA1C;MACA,OAAO,IAAI12B,WAAJ,CAAgBw2B,GAAA,CAAIK,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,EAA6BrvB,IAA7B,CAAkCvH,MAAlD,EAA0D,CAA1D,MAAiE,CAAxE;IAFwC,CAA1B,CAAhB;IAKA,OAAO,IAAAzD,YAAA,EAAO,IAAP,EAAa,qBAAb,EAAoC4K,OAApC,CAAP;EAhB+B;EAmBjC,MAAM,CAAAa,GAANA,CAAWrI,GAAX,EAAgBk3B,OAAhB,EAAyB;IACvB,KAAK,CAAAT,KAAL,KAAgB,IAAIxuB,GAAJ,EAAhB;IACA,IAAIL,IAAA,GAAO,KAAK,CAAA6uB,KAAL,CAAYpuB,GAAZ,CAAgBrI,GAAhB,CAAX;IACA,IAAI4H,IAAA,KAAS,IAAb,EAAmB;MAEjB,OAAO,IAAP;IAFiB;IAInB,IAAIA,IAAA,EAAMgc,MAAV,EAAkB;MAChBhc,IAAA,CAAKuvB,UAAL,IAAmB,CAAnB;MACA,OAAOvvB,IAAP;IAFgB;IAIlB,IAAI;MACFA,IAAA,KAAS;QACPgc,MAAA,EAAQ,IADD;QAEPxQ,EAAA,EAAK,SAAQ,KAAK,CAAAojB,MAAQ,IAAG,KAAK,CAAApjB,EAAL,EAAzB,EAFG;QAGP+jB,UAAA,EAAY,CAHL;QAIPC,KAAA,EAAO;MAJA,CAAT;MAMA,IAAIN,KAAJ;MACA,IAAI,OAAOI,OAAP,KAAmB,QAAvB,EAAiC;QAC/BtvB,IAAA,CAAK9L,GAAL,GAAWo7B,OAAX;QAEA,MAAMG,QAAA,GAAW,MAAMtT,KAAA,CAAMmT,OAAN,CAAvB;QACA,IAAI,CAACG,QAAA,CAASC,EAAd,EAAkB;UAChB,MAAM,IAAI57B,KAAJ,CAAU27B,QAAA,CAASE,UAAnB,CAAN;QADgB;QAGlBT,KAAA,GAAQ,MAAMO,QAAA,CAASG,IAAT,EAAd;MAP+B,CAAjC,MAQO;QACLV,KAAA,GAAQlvB,IAAA,CAAK6vB,IAAL,GAAYP,OAApB;MADK;MAIP,IAAIJ,KAAA,CAAMjrC,IAAN,KAAe,eAAnB,EAAoC;QAGlC,MAAM6rC,4BAAA,GAA+BnB,YAAA,CAAaG,mBAAlD;QACA,MAAMiB,UAAA,GAAa,IAAIC,UAAJ,EAAnB;QACA,MAAMC,YAAA,GAAe,IAAId,KAAJ,EAArB;QACA,MAAMe,YAAA,GAAe,IAAIrwB,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;UACpDkwB,YAAA,CAAaE,MAAb,GAAsB,MAAM;YAC1BnwB,IAAA,CAAKgc,MAAL,GAAciU,YAAd;YACAjwB,IAAA,CAAKwvB,KAAL,GAAa,IAAb;YACA1vB,OAAA;UAH0B,CAA5B;UAKAiwB,UAAA,CAAWI,MAAX,GAAoB,YAAY;YAC9B,MAAMj8B,GAAA,GAAO8L,IAAA,CAAKowB,MAAL,GAAcL,UAAA,CAAWM,MAAtC;YAGAJ,YAAA,CAAa/sB,GAAb,GAAoB,OAAM4sB,4BAAP,IACf,GAAG57B,GAAI,qCADQ,GAEfA,GAFJ;UAJ8B,CAAhC;UAQA+7B,YAAA,CAAaK,OAAb,GAAuBP,UAAA,CAAWO,OAAX,GAAqBvwB,MAA5C;QAdoD,CAAjC,CAArB;QAgBAgwB,UAAA,CAAWQ,aAAX,CAAyBrB,KAAzB;QACA,MAAMgB,YAAN;MAvBkC,CAApC,MAwBO;QACLlwB,IAAA,CAAKgc,MAAL,GAAc,MAAMwU,iBAAA,CAAkBtB,KAAlB,CAApB;MADK;MAGPlvB,IAAA,CAAKuvB,UAAL,GAAkB,CAAlB;IA/CE,CAAJ,CAgDE,OAAOzH,CAAP,EAAU;MACVp0B,OAAA,CAAQkd,KAAR,CAAckX,CAAd;MACA9nB,IAAA,GAAO,IAAP;IAFU;IAIZ,KAAK,CAAA6uB,KAAL,CAAY7e,GAAZ,CAAgB5X,GAAhB,EAAqB4H,IAArB;IACA,IAAIA,IAAJ,EAAU;MACR,KAAK,CAAA6uB,KAAL,CAAY7e,GAAZ,CAAgBhQ,IAAA,CAAKwL,EAArB,EAAyBxL,IAAzB;IADQ;IAGV,OAAOA,IAAP;EAnEuB;EAsEzB,MAAMywB,WAANA,CAAkBZ,IAAlB,EAAwB;IACtB,MAAM;MAAEa,YAAF;MAAgB76B,IAAhB;MAAsB0c,IAAtB;MAA4BtuB;IAA5B,IAAqC4rC,IAA3C;IACA,OAAO,KAAK,CAAApvB,GAAL,CAAU,GAAGiwB,YAAa,IAAG76B,IAAK,IAAG0c,IAAK,IAAGtuB,IAAnC,EAAV,EAAqD4rC,IAArD,CAAP;EAFsB;EAKxB,MAAMc,UAANA,CAAiBz8B,GAAjB,EAAsB;IACpB,OAAO,KAAK,CAAAuM,GAAL,CAAUvM,GAAV,EAAeA,GAAf,CAAP;EADoB;EAItB,MAAM08B,SAANA,CAAgBplB,EAAhB,EAAoB;IAClB,KAAK,CAAAqjB,KAAL,KAAgB,IAAIxuB,GAAJ,EAAhB;IACA,MAAML,IAAA,GAAO,KAAK,CAAA6uB,KAAL,CAAYpuB,GAAZ,CAAgB+K,EAAhB,CAAb;IACA,IAAI,CAACxL,IAAL,EAAW;MACT,OAAO,IAAP;IADS;IAGX,IAAIA,IAAA,CAAKgc,MAAT,EAAiB;MACfhc,IAAA,CAAKuvB,UAAL,IAAmB,CAAnB;MACA,OAAOvvB,IAAP;IAFe;IAKjB,IAAIA,IAAA,CAAK6vB,IAAT,EAAe;MACb,OAAO,KAAKY,WAAL,CAAiBzwB,IAAA,CAAK6vB,IAAtB,CAAP;IADa;IAGf,OAAO,KAAKc,UAAL,CAAgB3wB,IAAA,CAAK9L,GAArB,CAAP;EAdkB;EAiBpB28B,UAAUrlB,EAAV,EAAc;IACZ,MAAMxL,IAAA,GAAO,KAAK,CAAA6uB,KAAL,CAAYpuB,GAAZ,CAAgB+K,EAAhB,CAAb;IACA,IAAI,CAACxL,IAAA,EAAMwvB,KAAX,EAAkB;MAChB,OAAO,IAAP;IADgB;IAGlB,OAAOxvB,IAAA,CAAKowB,MAAZ;EALY;EAQdU,SAAStlB,EAAT,EAAa;IACX,KAAK,CAAAqjB,KAAL,KAAgB,IAAIxuB,GAAJ,EAAhB;IACA,MAAML,IAAA,GAAO,KAAK,CAAA6uB,KAAL,CAAYpuB,GAAZ,CAAgB+K,EAAhB,CAAb;IACA,IAAI,CAACxL,IAAL,EAAW;MACT;IADS;IAGXA,IAAA,CAAKuvB,UAAL,IAAmB,CAAnB;IACA,IAAIvvB,IAAA,CAAKuvB,UAAL,KAAoB,CAAxB,EAA2B;MACzB;IADyB;IAG3BvvB,IAAA,CAAKgc,MAAL,GAAc,IAAd;EAVW;EAiBb+U,UAAUvlB,EAAV,EAAc;IACZ,OAAOA,EAAA,CAAGhX,UAAH,CAAe,SAAQ,KAAK,CAAAo6B,MAAQ,GAApC,CAAP;EADY;AAnJG;AA8JnB,MAAMoC,cAAN,CAAqB;EACnB,CAAAC,QAAA,GAAY,EAAZ;EAEA,CAAAC,MAAA,GAAU,KAAV;EAEA,CAAAC,OAAA;EAEA,CAAAC,QAAA,GAAY,CAAC,CAAb;EAEAt7B,YAAYq7B,OAAA,GAAU,GAAtB,EAA2B;IACzB,KAAK,CAAAA,OAAL,GAAgBA,OAAhB;EADyB;EAkB3B3f,IAAI;IACFkY,GADE;IAEFC,IAFE;IAGFC,QAHE;IAIF3lC,IAAA,GAAOohB,GAJL;IAKFgsB,mBAAA,GAAsB,KALpB;IAMFC,QAAA,GAAW;EANT,CAAJ,EAOG;IACD,IAAI1H,QAAJ,EAAc;MACZF,GAAA;IADY;IAId,IAAI,KAAK,CAAAwH,MAAT,EAAkB;MAChB;IADgB;IAIlB,MAAMljC,IAAA,GAAO;MAAE07B,GAAF;MAAOC,IAAP;MAAa1lC;IAAb,CAAb;IACA,IAAI,KAAK,CAAAmtC,QAAL,KAAmB,CAAC,CAAxB,EAA2B;MACzB,IAAI,KAAK,CAAAH,QAAL,CAAet8B,MAAf,GAAwB,CAA5B,EAA+B;QAG7B,KAAK,CAAAs8B,QAAL,CAAet8B,MAAf,GAAwB,CAAxB;MAH6B;MAK/B,KAAK,CAAAy8B,QAAL,GAAiB,CAAjB;MACA,KAAK,CAAAH,QAAL,CAAez5B,IAAf,CAAoBxJ,IAApB;MACA;IARyB;IAW3B,IAAIqjC,mBAAA,IAAuB,KAAK,CAAAJ,QAAL,CAAe,KAAK,CAAAG,QAApB,EAA+BntC,IAA/B,KAAwCA,IAAnE,EAAyE;MAIvE,IAAIqtC,QAAJ,EAAc;QACZtjC,IAAA,CAAK27B,IAAL,GAAY,KAAK,CAAAsH,QAAL,CAAe,KAAK,CAAAG,QAApB,EAA+BzH,IAA3C;MADY;MAGd,KAAK,CAAAsH,QAAL,CAAe,KAAK,CAAAG,QAApB,IAAiCpjC,IAAjC;MACA;IARuE;IAWzE,MAAMujC,IAAA,GAAO,KAAK,CAAAH,QAAL,GAAiB,CAA9B;IACA,IAAIG,IAAA,KAAS,KAAK,CAAAJ,OAAlB,EAA4B;MAC1B,KAAK,CAAAF,QAAL,CAAeO,MAAf,CAAsB,CAAtB,EAAyB,CAAzB;IAD0B,CAA5B,MAEO;MACL,KAAK,CAAAJ,QAAL,GAAiBG,IAAjB;MACA,IAAIA,IAAA,GAAO,KAAK,CAAAN,QAAL,CAAet8B,MAA1B,EAAkC;QAChC,KAAK,CAAAs8B,QAAL,CAAeO,MAAf,CAAsBD,IAAtB;MADgC;IAF7B;IAOP,KAAK,CAAAN,QAAL,CAAez5B,IAAf,CAAoBxJ,IAApB;EA1CC;EAgDH27B,KAAA,EAAO;IACL,IAAI,KAAK,CAAAyH,QAAL,KAAmB,CAAC,CAAxB,EAA2B;MAEzB;IAFyB;IAM3B,KAAK,CAAAF,MAAL,GAAe,IAAf;IACA,KAAK,CAAAD,QAAL,CAAe,KAAK,CAAAG,QAApB,EAA+BzH,IAA/B;IACA,KAAK,CAAAuH,MAAL,GAAe,KAAf;IAEA,KAAK,CAAAE,QAAL,IAAkB,CAAlB;EAXK;EAiBPK,KAAA,EAAO;IACL,IAAI,KAAK,CAAAL,QAAL,GAAiB,KAAK,CAAAH,QAAL,CAAet8B,MAAf,GAAwB,CAA7C,EAAgD;MAC9C,KAAK,CAAAy8B,QAAL,IAAkB,CAAlB;MAGA,KAAK,CAAAF,MAAL,GAAe,IAAf;MACA,KAAK,CAAAD,QAAL,CAAe,KAAK,CAAAG,QAApB,EAA+B1H,GAA/B;MACA,KAAK,CAAAwH,MAAL,GAAe,KAAf;IAN8C;EAD3C;EAePQ,mBAAA,EAAqB;IACnB,OAAO,KAAK,CAAAN,QAAL,KAAmB,CAAC,CAA3B;EADmB;EAQrBO,mBAAA,EAAqB;IACnB,OAAO,KAAK,CAAAP,QAAL,GAAiB,KAAK,CAAAH,QAAL,CAAet8B,MAAf,GAAwB,CAAhD;EADmB;EAIrBmU,QAAA,EAAU;IACR,KAAK,CAAAmoB,QAAL,GAAiB,IAAjB;EADQ;AA9HS;AArOrB/sC,sBAAA,GAAA8sC,cAAA;AA4WA,MAAMY,eAAN,CAAsB;EAOpB97B,YAAY+7B,SAAZ,EAAuB;IACrB,KAAKp5B,MAAL,GAAc,EAAd;IACA,KAAKo5B,SAAL,GAAiB,IAAIxxB,GAAJ,EAAjB;IACA,KAAKyxB,OAAL,GAAe,IAAIvgB,GAAJ,EAAf;IAEA,MAAM;MAAErY;IAAF,IAAYN,iBAAA,CAAYG,QAA9B;IACA,WAAW,CAACf,IAAD,EAAOqZ,QAAP,EAAiB/c,OAAA,GAAU,EAA3B,CAAX,IAA6Cu9B,SAA7C,EAAwD;MACtD,WAAWz5B,GAAX,IAAkBJ,IAAlB,EAAwB;QACtB,MAAM+5B,QAAA,GAAW35B,GAAA,CAAI5D,UAAJ,CAAe,MAAf,CAAjB;QACA,IAAI0E,KAAA,IAAS64B,QAAb,EAAuB;UACrB,KAAKF,SAAL,CAAe7hB,GAAf,CAAmB5X,GAAA,CAAI6C,KAAJ,CAAU,CAAV,CAAnB,EAAiC;YAAEoW,QAAF;YAAY/c;UAAZ,CAAjC;UACA,KAAKw9B,OAAL,CAAatgB,GAAb,CAAiBpZ,GAAA,CAAI45B,KAAJ,CAAU,GAAV,EAAeC,EAAf,CAAkB,CAAC,CAAnB,CAAjB;QAFqB,CAAvB,MAGO,IAAI,CAAC/4B,KAAD,IAAU,CAAC64B,QAAf,EAAyB;UAC9B,KAAKF,SAAL,CAAe7hB,GAAf,CAAmB5X,GAAnB,EAAwB;YAAEiZ,QAAF;YAAY/c;UAAZ,CAAxB;UACA,KAAKw9B,OAAL,CAAatgB,GAAb,CAAiBpZ,GAAA,CAAI45B,KAAJ,CAAU,GAAV,EAAeC,EAAf,CAAkB,CAAC,CAAnB,CAAjB;QAF8B;MALV;IAD8B;EANnC;EA0BvB,CAAAzR,UAAWtL,KAAX,EAAkB;IAChB,IAAIA,KAAA,CAAMgd,MAAV,EAAkB;MAChB,KAAKz5B,MAAL,CAAYjB,IAAZ,CAAiB,KAAjB;IADgB;IAGlB,IAAI0d,KAAA,CAAMoT,OAAV,EAAmB;MACjB,KAAK7vB,MAAL,CAAYjB,IAAZ,CAAiB,MAAjB;IADiB;IAGnB,IAAI0d,KAAA,CAAMiX,OAAV,EAAmB;MACjB,KAAK1zB,MAAL,CAAYjB,IAAZ,CAAiB,MAAjB;IADiB;IAGnB,IAAI0d,KAAA,CAAMgX,QAAV,EAAoB;MAClB,KAAKzzB,MAAL,CAAYjB,IAAZ,CAAiB,OAAjB;IADkB;IAGpB,KAAKiB,MAAL,CAAYjB,IAAZ,CAAiB0d,KAAA,CAAM9c,GAAvB;IACA,MAAMT,GAAA,GAAM,KAAKc,MAAL,CAAYhB,IAAZ,CAAiB,GAAjB,CAAZ;IACA,KAAKgB,MAAL,CAAY9D,MAAZ,GAAqB,CAArB;IAEA,OAAOgD,GAAP;EAjBgB;EA2BlBw6B,KAAKC,IAAL,EAAWld,KAAX,EAAkB;IAChB,IAAI,CAAC,KAAK4c,OAAL,CAAajb,GAAb,CAAiB3B,KAAA,CAAM9c,GAAvB,CAAL,EAAkC;MAChC;IADgC;IAGlC,MAAM5E,IAAA,GAAO,KAAKq+B,SAAL,CAAepxB,GAAf,CAAmB,KAAK,CAAA+f,SAAL,CAAgBtL,KAAhB,CAAnB,CAAb;IACA,IAAI,CAAC1hB,IAAL,EAAW;MACT;IADS;IAGX,MAAM;MACJ6d,QADI;MAEJ/c,OAAA,EAAS;QAAE+9B,OAAA,GAAU,KAAZ;QAAmBC,IAAA,GAAO,EAA1B;QAA8BC,OAAA,GAAU;MAAxC;IAFL,IAGF/+B,IAHJ;IAKA,IAAI++B,OAAA,IAAW,CAACA,OAAA,CAAQH,IAAR,EAAcld,KAAd,CAAhB,EAAsC;MACpC;IADoC;IAGtC7D,QAAA,CAASuK,IAAT,CAAcwW,IAAd,EAAoB,GAAGE,IAAvB;IAIA,IAAI,CAACD,OAAL,EAAc;MACZnd,KAAA,CAAMsd,eAAN;MACAtd,KAAA,CAAMqQ,cAAN;IAFY;EApBE;AA5DE;AA5WtBrhC,uBAAA,GAAA0tC,eAAA;AAmcA,MAAM5P,YAAN,CAAmB;EACjB,OAAOyQ,cAAP,GAAwB,IAAIpyB,GAAJ,CAAQ,CAC9B,CAAC,YAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAf,CAD8B,EAE9B,CAAC,QAAD,EAAW,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAAX,CAF8B,CAAR,CAAxB;EAKA,IAAIqyB,OAAJA,CAAA,EAAc;IASZ,MAAMC,MAAA,GAAS,IAAItyB,GAAJ,CAAQ,CACrB,CAAC,YAAD,EAAe,IAAf,CADqB,EAErB,CAAC,QAAD,EAAW,IAAX,CAFqB,CAAR,CAAf;IAIA,IAAAuyB,6BAAA,EAAeD,MAAf;IACA,OAAO,IAAA39B,YAAA,EAAO,IAAP,EAAa,SAAb,EAAwB29B,MAAxB,CAAP;EAdY;EAyBdE,QAAQC,KAAR,EAAe;IACb,MAAMC,GAAA,GAAM,IAAAC,qBAAA,EAAOF,KAAP,CAAZ;IACA,IAAI,CAACtqB,MAAA,CAAOyqB,UAAP,CAAkB,yBAAlB,EAA6CC,OAAlD,EAA2D;MACzD,OAAOH,GAAP;IADyD;IAI3D,WAAW,CAACl9B,IAAD,EAAOs9B,GAAP,CAAX,IAA0B,KAAKT,OAA/B,EAAwC;MACtC,IAAIS,GAAA,CAAIC,KAAJ,CAAU,CAACnQ,CAAD,EAAI/rB,CAAJ,KAAU+rB,CAAA,KAAM8P,GAAA,CAAI77B,CAAJ,CAA1B,CAAJ,EAAuC;QACrC,OAAO8qB,YAAA,CAAayQ,cAAb,CAA4BhyB,GAA5B,CAAgC5K,IAAhC,CAAP;MADqC;IADD;IAKxC,OAAOk9B,GAAP;EAXa;EAqBfzP,WAAWztB,IAAX,EAAiB;IACf,MAAMk9B,GAAA,GAAM,KAAKL,OAAL,CAAajyB,GAAb,CAAiB5K,IAAjB,CAAZ;IACA,IAAI,CAACk9B,GAAL,EAAU;MACR,OAAOl9B,IAAP;IADQ;IAGV,OAAOgE,UAAA,CAAKC,YAAL,CAAkB,GAAGi5B,GAArB,CAAP;EALe;AApDA;AAncnB7uC,oBAAA,GAAA89B,YAAA;AAwgBA,MAAMqR,yBAAN,CAAgC;EAC9B,CAAAC,YAAA,GAAgB,IAAhB;EAEA,CAAAC,UAAA,GAAc,IAAIlzB,GAAJ,EAAd;EAEA,CAAAmzB,SAAA,GAAa,IAAInzB,GAAJ,EAAb;EAEA,CAAAuK,iBAAA,GAAqB,IAArB;EAEA,CAAA6oB,cAAA,GAAkB,IAAIzC,cAAJ,EAAlB;EAEA,CAAA0C,gBAAA,GAAoB,CAApB;EAEA,CAAAC,4BAAA,GAAgC,IAAIpiB,GAAJ,EAAhC;EAEA,CAAAqiB,eAAA,GAAmB,IAAnB;EAEA,CAAAC,WAAA,GAAe,IAAf;EAEA,CAAAC,gBAAA,GAAoB,IAAIviB,GAAJ,EAApB;EAEA,CAAAwiB,QAAA,GAAY,IAAZ;EAEA,CAAApuB,aAAA,GAAiB,IAAjB;EAEA,CAAAquB,SAAA,GAAa,IAAIvF,SAAJ,EAAb;EAEA,CAAAwF,SAAA,GAAa,KAAb;EAEA,CAAAC,SAAA,GAAa,KAAb;EAEA,CAAAC,iBAAA,GAAqB,IAArB;EAEA,CAAAC,IAAA,GAAQ5uC,0BAAA,CAAqBC,IAA7B;EAEA,CAAA4uC,eAAA,GAAmB,IAAI9iB,GAAJ,EAAnB;EAEA,CAAA7B,UAAA,GAAc,IAAd;EAEA,CAAA4kB,SAAA,GAAa,KAAKC,IAAL,CAAU3Y,IAAV,CAAe,IAAf,CAAb;EAEA,CAAA4Y,UAAA,GAAc,KAAK5G,KAAL,CAAWhS,IAAX,CAAgB,IAAhB,CAAd;EAEA,CAAA6Y,SAAA,GAAa,KAAKC,IAAL,CAAU9Y,IAAV,CAAe,IAAf,CAAb;EAEA,CAAA+Y,QAAA,GAAY,KAAKC,GAAL,CAAShZ,IAAT,CAAc,IAAd,CAAZ;EAEA,CAAAiZ,UAAA,GAAc,KAAKzQ,KAAL,CAAWxI,IAAX,CAAgB,IAAhB,CAAd;EAEA,CAAAkZ,YAAA,GAAgB,KAAKC,OAAL,CAAanZ,IAAb,CAAkB,IAAlB,CAAhB;EAEA,CAAAoZ,oBAAA,GAAwB,KAAKC,eAAL,CAAqBrZ,IAArB,CAA0B,IAA1B,CAAxB;EAEA,CAAAsZ,mBAAA,GAAuB,KAAKC,cAAL,CAAoBvZ,IAApB,CAAyB,IAAzB,CAAvB;EAEA,CAAAwZ,oBAAA,GAAwB,KAAKC,eAAL,CAAqBzZ,IAArB,CAA0B,IAA1B,CAAxB;EAEA,CAAA0Z,uBAAA,GAA2B,KAAKC,kBAAL,CAAwB3Z,IAAxB,CAA6B,IAA7B,CAA3B;EAEA,CAAA4Z,cAAA,GAAkB;IAChBjU,SAAA,EAAW,KADK;IAEhBmE,OAAA,EAAS,IAFO;IAGhBgM,kBAAA,EAAoB,KAHJ;IAIhBC,kBAAA,EAAoB,KAJJ;IAKhB8D,iBAAA,EAAmB;EALH,CAAlB;EAQA,CAAAC,WAAA,GAAe,CAAC,CAAD,EAAI,CAAJ,CAAf;EAEA,CAAAC,oBAAA,GAAwB,IAAxB;EAEA,CAAAC,SAAA,GAAa,IAAb;EAEA,CAAAC,MAAA,GAAU,IAAV;EAEA,OAAOC,eAAP,GAAyB,CAAzB;EAEA,OAAOC,aAAP,GAAuB,EAAvB;EAEA,WAAWC,gBAAXA,CAAA,EAA8B;IAC5B,MAAMC,KAAA,GAAQ5C,yBAAA,CAA0Bt9B,SAAxC;IAEA,MAAMmgC,YAAA,GAAe9D,IAAA,IAAQ;MAG3B,MAAM;QAAEzE;MAAF,IAAoB3oB,QAA1B;MACA,OACE2oB,aAAA,IACAyE,IAAA,CAAK,CAAAwD,SAAL,CAAgBlI,QAAhB,CAAyBC,aAAzB,CADA,IAEAyE,IAAA,CAAK+D,qBAAL,EAHF;IAJ2B,CAA7B;IAWA,MAAMC,KAAA,GAAQ,KAAKN,eAAnB;IACA,MAAMO,GAAA,GAAM,KAAKN,aAAjB;IAEA,OAAO,IAAA/gC,YAAA,EACL,IADK,EAEL,kBAFK,EAGL,IAAI48B,eAAJ,CAAoB,CAClB,CAAC,CAAC,QAAD,EAAW,YAAX,CAAD,EAA2BqE,KAAA,CAAMK,SAAjC,CADkB,EAElB,CAAC,CAAC,QAAD,EAAW,YAAX,CAAD,EAA2BL,KAAA,CAAMtM,IAAjC,CAFkB,EAGlB,CAGE,CACE,QADF,EAEE,cAFF,EAGE,kBAHF,EAIE,cAJF,EAKE,kBALF,CAHF,EAUEsM,KAAA,CAAMxE,IAVR,CAHkB,EAelB,CACE,CACE,WADF,EAEE,eAFF,EAGE,gBAHF,EAIE,iBAJF,EAKE,eALF,EAME,mBANF,EAOE,oBAPF,EAQE,QARF,EASE,aATF,EAUE,cAVF,EAWE,YAXF,CADF,EAcEwE,KAAA,CAAMnlB,MAdR,CAfkB,EA+BlB,CAAC,CAAC,QAAD,EAAW,YAAX,CAAD,EAA2BmlB,KAAA,CAAMM,WAAjC,CA/BkB,EAgClB,CACE,CAAC,WAAD,EAAc,eAAd,CADF,EAEEN,KAAA,CAAMO,wBAFR,EAGE;MAAElE,IAAA,EAAM,CAAC,CAAC8D,KAAF,EAAS,CAAT,CAAR;MAAqB7D,OAAA,EAAS2D;IAA9B,CAHF,CAhCkB,EAqClB,CACE,CAAC,gBAAD,EAAmB,qBAAnB,CADF,EAEED,KAAA,CAAMO,wBAFR,EAGE;MAAElE,IAAA,EAAM,CAAC,CAAC+D,GAAF,EAAO,CAAP,CAAR;MAAmB9D,OAAA,EAAS2D;IAA5B,CAHF,CArCkB,EA0ClB,CACE,CAAC,YAAD,EAAe,gBAAf,CADF,EAEED,KAAA,CAAMO,wBAFR,EAGE;MAAElE,IAAA,EAAM,CAAC8D,KAAD,EAAQ,CAAR,CAAR;MAAoB7D,OAAA,EAAS2D;IAA7B,CAHF,CA1CkB,EA+ClB,CACE,CAAC,iBAAD,EAAoB,sBAApB,CADF,EAEED,KAAA,CAAMO,wBAFR,EAGE;MAAElE,IAAA,EAAM,CAAC+D,GAAD,EAAM,CAAN,CAAR;MAAkB9D,OAAA,EAAS2D;IAA3B,CAHF,CA/CkB,EAoDlB,CACE,CAAC,SAAD,EAAY,aAAZ,CADF,EAEED,KAAA,CAAMO,wBAFR,EAGE;MAAElE,IAAA,EAAM,CAAC,CAAD,EAAI,CAAC8D,KAAL,CAAR;MAAqB7D,OAAA,EAAS2D;IAA9B,CAHF,CApDkB,EAyDlB,CACE,CAAC,cAAD,EAAiB,mBAAjB,CADF,EAEED,KAAA,CAAMO,wBAFR,EAGE;MAAElE,IAAA,EAAM,CAAC,CAAD,EAAI,CAAC+D,GAAL,CAAR;MAAmB9D,OAAA,EAAS2D;IAA5B,CAHF,CAzDkB,EA8DlB,CACE,CAAC,WAAD,EAAc,eAAd,CADF,EAEED,KAAA,CAAMO,wBAFR,EAGE;MAAElE,IAAA,EAAM,CAAC,CAAD,EAAI8D,KAAJ,CAAR;MAAoB7D,OAAA,EAAS2D;IAA7B,CAHF,CA9DkB,EAmElB,CACE,CAAC,gBAAD,EAAmB,qBAAnB,CADF,EAEED,KAAA,CAAMO,wBAFR,EAGE;MAAElE,IAAA,EAAM,CAAC,CAAD,EAAI+D,GAAJ,CAAR;MAAkB9D,OAAA,EAAS2D;IAA3B,CAHF,CAnEkB,CAApB,CAHK,CAAP;EAjB4B;EAgG9BpgC,YAAY8/B,SAAZ,EAAuBC,MAAvB,EAA+B9B,QAA/B,EAAyC0C,WAAzC,EAAsD/mB,UAAtD,EAAkE;IAChE,KAAK,CAAAkmB,SAAL,GAAkBA,SAAlB;IACA,KAAK,CAAAC,MAAL,GAAeA,MAAf;IACA,KAAK,CAAA9B,QAAL,GAAiBA,QAAjB;IACA,KAAK,CAAAA,QAAL,CAAe2C,GAAf,CAAmB,eAAnB,EAAoC,KAAK,CAAA1B,oBAAzC;IACA,KAAK,CAAAjB,QAAL,CAAe2C,GAAf,CAAmB,cAAnB,EAAmC,KAAK,CAAAxB,mBAAxC;IACA,KAAK,CAAAnB,QAAL,CAAe2C,GAAf,CAAmB,eAAnB,EAAoC,KAAK,CAAAtB,oBAAzC;IACA,KAAK,CAAArB,QAAL,CAAe2C,GAAf,CAAmB,kBAAnB,EAAuC,KAAK,CAAApB,uBAA5C;IACA,KAAK,CAAA1qB,iBAAL,GAA0B6rB,WAAA,CAAY7rB,iBAAtC;IACA,KAAK,CAAAjF,aAAL,GAAsB8wB,WAAA,CAAY9wB,aAAlC;IACA,KAAK,CAAA+J,UAAL,GAAmBA,UAAnB;IACA,KAAKmT,cAAL,GAAsB;MACpBqE,SAAA,EAAWyP,4BAAA,CAAcC,gBADL;MAEpBvoB,QAAA,EAAU;IAFU,CAAtB;EAXgE;EAiBlEvF,QAAA,EAAU;IACR,KAAK,CAAA+tB,qBAAL;IACA,KAAK,CAAAC,kBAAL;IACA,KAAK,CAAA/C,QAAL,CAAegD,IAAf,CAAoB,eAApB,EAAqC,KAAK,CAAA/B,oBAA1C;IACA,KAAK,CAAAjB,QAAL,CAAegD,IAAf,CAAoB,cAApB,EAAoC,KAAK,CAAA7B,mBAAzC;IACA,KAAK,CAAAnB,QAAL,CAAegD,IAAf,CAAoB,eAApB,EAAqC,KAAK,CAAA3B,oBAA1C;IACA,KAAK,CAAArB,QAAL,CAAegD,IAAf,CAAoB,kBAApB,EAAwC,KAAK,CAAAzB,uBAA7C;IACA,WAAW0B,KAAX,IAAoB,KAAK,CAAAxD,SAAL,CAAgBhgB,MAAhB,EAApB,EAA8C;MAC5CwjB,KAAA,CAAMluB,OAAN;IAD4C;IAG9C,KAAK,CAAA0qB,SAAL,CAAgB5f,KAAhB;IACA,KAAK,CAAA2f,UAAL,CAAiB3f,KAAjB;IACA,KAAK,CAAAkgB,gBAAL,CAAuBlgB,KAAvB;IACA,KAAK,CAAA0f,YAAL,GAAqB,IAArB;IACA,KAAK,CAAAe,eAAL,CAAsBzgB,KAAtB;IACA,KAAK,CAAA6f,cAAL,CAAqB3qB,OAArB;EAfQ;EAkBV,IAAImuB,SAAJA,CAAA,EAAgB;IACd,OAAO,IAAAjiC,YAAA,EACL,IADK,EAEL,WAFK,EAGL,KAAK,CAAA0a,UAAL,GACI,KAAK,CAAA/J,aAAL,CAAoBuxB,YAApB,CACE,KAAK,CAAAxnB,UAAL,CAAiBynB,UADnB,EAEE,KAAK,CAAAznB,UAAL,CAAiBH,UAFnB,CADJ,GAKI,MARC,CAAP;EADc;EAahB4lB,eAAe;IAAEhqB;EAAF,CAAf,EAA+B;IAC7B,KAAK,CAAAuoB,gBAAL,GAAyBvoB,UAAA,GAAa,CAAtC;EAD6B;EAI/BisB,mBAAA,EAAqB;IACnB,KAAK,CAAAxB,SAAL,CAAgBhI,KAAhB;EADmB;EAIrByJ,WAAWpU,CAAX,EAAcC,CAAd,EAAiB;IACf,WAAW8T,KAAX,IAAoB,KAAK,CAAAxD,SAAL,CAAgBhgB,MAAhB,EAApB,EAA8C;MAC5C,MAAM;QACJyP,CAAA,EAAGqU,MADC;QAEJpU,CAAA,EAAGqU,MAFC;QAGJtb,KAHI;QAIJC;MAJI,IAKF8a,KAAA,CAAM9U,GAAN,CAAUsE,qBAAV,EALJ;MAMA,IACEvD,CAAA,IAAKqU,MAAL,IACArU,CAAA,IAAKqU,MAAA,GAASrb,KADd,IAEAiH,CAAA,IAAKqU,MAFL,IAGArU,CAAA,IAAKqU,MAAA,GAASrb,MAJhB,EAKE;QACA,OAAO8a,KAAP;MADA;IAZ0C;IAgB9C,OAAO,IAAP;EAjBe;EAoBjBQ,kBAAkBriC,KAAA,GAAQ,KAA1B,EAAiC;IAC/B,KAAK,CAAA0gC,MAAL,CAAarR,SAAb,CAAuBC,MAAvB,CAA8B,cAA9B,EAA8CtvB,KAA9C;EAD+B;EAIjCsiC,iBAAiBjU,MAAjB,EAAyB;IACvB,KAAK,CAAAsQ,gBAAL,CAAuBtiB,GAAvB,CAA2BgS,MAA3B;EADuB;EAIzBkU,oBAAoBlU,MAApB,EAA4B;IAC1B,KAAK,CAAAsQ,gBAAL,CAAuBhjB,MAAvB,CAA8B0S,MAA9B;EAD0B;EAI5B6R,gBAAgB;IAAEjnB;EAAF,CAAhB,EAA2B;IACzB,KAAKqX,cAAL;IACA,KAAK5C,cAAL,CAAoBqE,SAApB,GAAgC9Y,KAAA,GAAQuoB,4BAAA,CAAcC,gBAAtD;IACA,WAAWpT,MAAX,IAAqB,KAAK,CAAAsQ,gBAA1B,EAA6C;MAC3CtQ,MAAA,CAAO6R,eAAP;IAD2C;EAHpB;EAQ3BE,mBAAmB;IAAEoC;EAAF,CAAnB,EAAsC;IACpC,KAAKlS,cAAL;IACA,KAAK5C,cAAL,CAAoBxU,QAApB,GAA+BspB,aAA/B;EAFoC;EAStC/T,uBAAuBJ,MAAvB,EAA+B;IAC7B,IACE,CAACA,MAAA,CAAOkC,OAAP,EAAD,IACA,KAAK,CAAA9a,iBADL,IAEA,CAAC,KAAK,CAAAA,iBAAL,CAAwBiM,GAAxB,CAA4B2M,MAAA,CAAOhY,EAAnC,CAHH,EAIE;MACA,KAAK,CAAAZ,iBAAL,CAAwBgV,QAAxB,CAAiC4D,MAAA,CAAOhY,EAAxC,EAA4CgY,MAA5C;IADA;EAL2B;EAU/B,CAAAoU,gBAAA,EAAmB;IACjBpvB,MAAA,CAAO6M,gBAAP,CAAwB,OAAxB,EAAiC,KAAK,CAAAmf,UAAtC;IACAhsB,MAAA,CAAO6M,gBAAP,CAAwB,MAAxB,EAAgC,KAAK,CAAAif,SAArC;EAFiB;EAKnB,CAAAwC,mBAAA,EAAsB;IACpBtuB,MAAA,CAAO8M,mBAAP,CAA2B,OAA3B,EAAoC,KAAK,CAAAkf,UAAzC;IACAhsB,MAAA,CAAO8M,mBAAP,CAA2B,MAA3B,EAAmC,KAAK,CAAAgf,SAAxC;EAFoB;EAKtBC,KAAA,EAAO;IACL,IAAI,CAAC,KAAKsD,YAAV,EAAwB;MACtB;IADsB;IAOxB,MAAM;MAAElK;IAAF,IAAoB3oB,QAA1B;IACA,WAAWwe,MAAX,IAAqB,KAAK,CAAA6Q,eAA1B,EAA4C;MAC1C,IAAI7Q,MAAA,CAAOtB,GAAP,CAAWwL,QAAX,CAAoBC,aAApB,CAAJ,EAAwC;QACtC,KAAK,CAAAwG,iBAAL,GAA0B,CAAC3Q,MAAD,EAASmK,aAAT,CAA1B;QACAnK,MAAA,CAAO7B,mBAAP,GAA6B,KAA7B;QACA;MAHsC;IADE;EATvC;EAkBPiM,MAAA,EAAQ;IACN,IAAI,CAAC,KAAK,CAAAuG,iBAAV,EAA8B;MAC5B;IAD4B;IAG9B,MAAM,CAAC2D,UAAD,EAAa3D,iBAAb,IAAkC,KAAK,CAAAA,iBAA7C;IACA,KAAK,CAAAA,iBAAL,GAA0B,IAA1B;IACAA,iBAAA,CAAkB9e,gBAAlB,CACE,SADF,EAEE,MAAM;MACJyiB,UAAA,CAAWnW,mBAAX,GAAiC,IAAjC;IADI,CAFR,EAKE;MAAEoW,IAAA,EAAM;IAAR,CALF;IAOA5D,iBAAA,CAAkBvG,KAAlB;EAbM;EAgBR,CAAAoK,mBAAA,EAAsB;IAGpBxvB,MAAA,CAAO6M,gBAAP,CAAwB,SAAxB,EAAmC,KAAK,CAAAyf,YAAxC,EAAuD;MAAElM,OAAA,EAAS;IAAX,CAAvD;EAHoB;EAMtB,CAAAiO,sBAAA,EAAyB;IACvBruB,MAAA,CAAO8M,mBAAP,CAA2B,SAA3B,EAAsC,KAAK,CAAAwf,YAA3C,EAA0D;MACxDlM,OAAA,EAAS;IAD+C,CAA1D;EADuB;EAMzB,CAAAqP,sBAAA,EAAyB;IACvBjzB,QAAA,CAASqQ,gBAAT,CAA0B,MAA1B,EAAkC,KAAK,CAAAof,SAAvC;IACAzvB,QAAA,CAASqQ,gBAAT,CAA0B,KAA1B,EAAiC,KAAK,CAAAsf,QAAtC;IACA3vB,QAAA,CAASqQ,gBAAT,CAA0B,OAA1B,EAAmC,KAAK,CAAAwf,UAAxC;EAHuB;EAMzB,CAAAqD,yBAAA,EAA4B;IAC1BlzB,QAAA,CAASsQ,mBAAT,CAA6B,MAA7B,EAAqC,KAAK,CAAAmf,SAA1C;IACAzvB,QAAA,CAASsQ,mBAAT,CAA6B,KAA7B,EAAoC,KAAK,CAAAqf,QAAzC;IACA3vB,QAAA,CAASsQ,mBAAT,CAA6B,OAA7B,EAAsC,KAAK,CAAAuf,UAA3C;EAH0B;EAU5BH,KAAKxf,KAAL,EAAY;IACVA,KAAA,CAAMqQ,cAAN;IAGA,KAAK,CAAA+N,YAAL,EAAoB7N,cAApB;IAEA,IAAI,CAAC,KAAKoS,YAAV,EAAwB;MACtB;IADsB;IAIxB,MAAMM,OAAA,GAAU,EAAhB;IACA,WAAW3U,MAAX,IAAqB,KAAK,CAAA6Q,eAA1B,EAA4C;MAC1C,MAAM9T,UAAA,GAAaiD,MAAA,CAAOhD,SAAP,CAAsC,IAAtC,CAAnB;MACA,IAAID,UAAJ,EAAgB;QACd4X,OAAA,CAAQ3gC,IAAR,CAAa+oB,UAAb;MADc;IAF0B;IAM5C,IAAI4X,OAAA,CAAQxjC,MAAR,KAAmB,CAAvB,EAA0B;MACxB;IADwB;IAI1BugB,KAAA,CAAMkjB,aAAN,CAAoBC,OAApB,CAA4B,mBAA5B,EAAiD3X,IAAA,CAAKC,SAAL,CAAewX,OAAf,CAAjD;EArBU;EA4BZvD,IAAI1f,KAAJ,EAAW;IACT,KAAKwf,IAAL,CAAUxf,KAAV;IACA,KAAKpE,MAAL;EAFS;EASXsT,MAAMlP,KAAN,EAAa;IACXA,KAAA,CAAMqQ,cAAN;IACA,MAAM;MAAE6S;IAAF,IAAoBljB,KAA1B;IACA,WAAWmP,IAAX,IAAmB+T,aAAA,CAAc3lB,KAAjC,EAAwC;MACtC,WAAW6lB,UAAX,IAAyB,KAAK,CAAAzE,WAA9B,EAA4C;QAC1C,IAAIyE,UAAA,CAAWpU,wBAAX,CAAoCG,IAAA,CAAKpgC,IAAzC,CAAJ,EAAoD;UAClDq0C,UAAA,CAAWlU,KAAX,CAAiBC,IAAjB,EAAuB,KAAKS,YAA5B;UACA;QAFkD;MADV;IADN;IASxC,IAAI9kB,IAAA,GAAOo4B,aAAA,CAAc/rB,OAAd,CAAsB,mBAAtB,CAAX;IACA,IAAI,CAACrM,IAAL,EAAW;MACT;IADS;IAIX,IAAI;MACFA,IAAA,GAAO0gB,IAAA,CAAK6X,KAAL,CAAWv4B,IAAX,CAAP;IADE,CAAJ,CAEE,OAAO7B,EAAP,EAAW;MACX,IAAAvK,UAAA,EAAM,WAAUuK,EAAA,CAAGvI,OAAQ,IAA3B;MACA;IAFW;IAKb,IAAI,CAAC6D,KAAA,CAAM++B,OAAN,CAAcx4B,IAAd,CAAL,EAA0B;MACxB;IADwB;IAI1B,KAAKu2B,WAAL;IACA,MAAMS,KAAA,GAAQ,KAAKlS,YAAnB;IAEA,IAAI;MACF,MAAM2T,UAAA,GAAa,EAAnB;MACA,WAAWjV,MAAX,IAAqBxjB,IAArB,EAA2B;QACzB,MAAM04B,kBAAA,GAAqB1B,KAAA,CAAM5J,WAAN,CAAkB5J,MAAlB,CAA3B;QACA,IAAI,CAACkV,kBAAL,EAAyB;UACvB;QADuB;QAGzBD,UAAA,CAAWjhC,IAAX,CAAgBkhC,kBAAhB;MALyB;MAQ3B,MAAMhP,GAAA,GAAMA,CAAA,KAAM;QAChB,WAAWlG,MAAX,IAAqBiV,UAArB,EAAiC;UAC/B,KAAK,CAAAE,gBAAL,CAAuBnV,MAAvB;QAD+B;QAGjC,KAAK,CAAAoV,aAAL,CAAoBH,UAApB;MAJgB,CAAlB;MAMA,MAAM9O,IAAA,GAAOA,CAAA,KAAM;QACjB,WAAWnG,MAAX,IAAqBiV,UAArB,EAAiC;UAC/BjV,MAAA,CAAO9D,MAAP;QAD+B;MADhB,CAAnB;MAKA,KAAKmF,WAAL,CAAiB;QAAE6E,GAAF;QAAOC,IAAP;QAAaC,QAAA,EAAU;MAAvB,CAAjB;IArBE,CAAJ,CAsBE,OAAOzrB,EAAP,EAAW;MACX,IAAAvK,UAAA,EAAM,WAAUuK,EAAA,CAAGvI,OAAQ,IAA3B;IADW;EArDF;EA8Dbm/B,QAAQ7f,KAAR,EAAe;IACb,IAAI,CAAC,KAAK2jB,SAAL,IAAkB9L,uBAAlB,EAAL,EAAkD;MAChDsG,yBAAA,CAA0B2C,gBAA1B,CAA2C7D,IAA3C,CAAgD,IAAhD,EAAsDjd,KAAtD;IADgD;EADrC;EAYf+f,gBAAgB9+B,OAAhB,EAAyB;IACvB,IAAI,CAAC,MAAD,EAAS,MAAT,EAAiB,QAAjB,EAA2B,WAA3B,EAAwCgD,QAAxC,CAAiDhD,OAAA,CAAQN,IAAzD,CAAJ,EAAoE;MAClE,KAAKM,OAAA,CAAQN,IAAb;IADkE;EAD7C;EAWzB,CAAAijC,qBAAsB3iC,OAAtB,EAA+B;IAC7B,MAAM4iC,UAAA,GAAa1jC,MAAA,CAAOyqB,OAAP,CAAe3pB,OAAf,EAAwB6iC,IAAxB,CACjB,CAAC,CAAC5gC,GAAD,EAAMjD,KAAN,CAAD,KAAkB,KAAK,CAAAqgC,cAAL,CAAqBp9B,GAArB,MAA8BjD,KAD/B,CAAnB;IAIA,IAAI4jC,UAAJ,EAAgB;MACd,KAAK,CAAAhF,QAAL,CAAekF,QAAf,CAAwB,+BAAxB,EAAyD;QACvD7wB,MAAA,EAAQ,IAD+C;QAEvDjS,OAAA,EAASd,MAAA,CAAO6d,MAAP,CAAc,KAAK,CAAAsiB,cAAnB,EAAoCr/B,OAApC;MAF8C,CAAzD;IADc;EALa;EAa/B,CAAA+iC,iBAAkB/iC,OAAlB,EAA2B;IACzB,KAAK,CAAA49B,QAAL,CAAekF,QAAf,CAAwB,+BAAxB,EAAyD;MACvD7wB,MAAA,EAAQ,IAD+C;MAEvDjS;IAFuD,CAAzD;EADyB;EAa3BgjC,gBAAgB5X,SAAhB,EAA2B;IACzB,IAAIA,SAAJ,EAAe;MACb,KAAK,CAAAqW,eAAL;MACA,KAAK,CAAAI,kBAAL;MACA,KAAK,CAAAC,qBAAL;MACA,KAAK,CAAAa,oBAAL,CAA2B;QACzBvX,SAAA,EAAW,KAAK,CAAA6S,IAAL,KAAe5uC,0BAAA,CAAqBC,IADtB;QAEzBigC,OAAA,EAAS,KAAK,CAAAA,OAAL,EAFgB;QAGzBgM,kBAAA,EAAoB,KAAK,CAAA+B,cAAL,CAAqB/B,kBAArB,EAHK;QAIzBC,kBAAA,EAAoB,KAAK,CAAA8B,cAAL,CAAqB9B,kBAArB,EAJK;QAKzB8D,iBAAA,EAAmB;MALM,CAA3B;IAJa,CAAf,MAWO;MACL,KAAK,CAAAqB,kBAAL;MACA,KAAK,CAAAD,qBAAL;MACA,KAAK,CAAAqB,wBAAL;MACA,KAAK,CAAAY,oBAAL,CAA2B;QACzBvX,SAAA,EAAW;MADc,CAA3B;MAGA,KAAKiW,iBAAL,CAAuB,KAAvB;IAPK;EAZkB;EAuB3B4B,oBAAoBC,KAApB,EAA2B;IACzB,IAAI,KAAK,CAAAxF,WAAT,EAAuB;MACrB;IADqB;IAGvB,KAAK,CAAAA,WAAL,GAAoBwF,KAApB;IACA,WAAWf,UAAX,IAAyB,KAAK,CAAAzE,WAA9B,EAA4C;MAC1C,KAAK,CAAAqF,gBAAL,CAAuBZ,UAAA,CAAWrU,yBAAlC;IAD0C;EALnB;EAc3ByK,MAAA,EAAQ;IACN,OAAO,KAAK,CAAAsF,SAAL,CAAgBtF,KAAhB,EAAP;EADM;EAIR,IAAI5J,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK,CAAA0O,SAAL,CAAgB/yB,GAAhB,CAAoB,KAAK,CAAAizB,gBAAzB,CAAP;EADiB;EAInB4F,SAASlsB,SAAT,EAAoB;IAClB,OAAO,KAAK,CAAAomB,SAAL,CAAgB/yB,GAAhB,CAAoB2M,SAApB,CAAP;EADkB;EAIpB,IAAIsmB,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAK,CAAAA,gBAAZ;EADqB;EAQvB6F,SAASvC,KAAT,EAAgB;IACd,KAAK,CAAAxD,SAAL,CAAgBxjB,GAAhB,CAAoBgnB,KAAA,CAAM5pB,SAA1B,EAAqC4pB,KAArC;IACA,IAAI,KAAK,CAAA/C,SAAT,EAAqB;MACnB+C,KAAA,CAAMwC,MAAN;IADmB,CAArB,MAEO;MACLxC,KAAA,CAAMyC,OAAN;IADK;EAJO;EAahBC,YAAY1C,KAAZ,EAAmB;IACjB,KAAK,CAAAxD,SAAL,CAAgB1iB,MAAhB,CAAuBkmB,KAAA,CAAM5pB,SAA7B;EADiB;EASnBusB,WAAWvF,IAAX,EAAiBwF,MAAA,GAAS,IAA1B,EAAgC;IAC9B,IAAI,KAAK,CAAAxF,IAAL,KAAeA,IAAnB,EAAyB;MACvB;IADuB;IAGzB,KAAK,CAAAA,IAAL,GAAaA,IAAb;IACA,IAAIA,IAAA,KAAS5uC,0BAAA,CAAqBC,IAAlC,EAAwC;MACtC,KAAK0zC,eAAL,CAAqB,KAArB;MACA,KAAK,CAAAU,UAAL;MACA;IAHsC;IAKxC,KAAKV,eAAL,CAAqB,IAArB;IACA,KAAK,CAAAW,SAAL;IACA,KAAKvD,WAAL;IACA,WAAWS,KAAX,IAAoB,KAAK,CAAAxD,SAAL,CAAgBhgB,MAAhB,EAApB,EAA8C;MAC5CwjB,KAAA,CAAM2C,UAAN,CAAiBvF,IAAjB;IAD4C;IAG9C,IAAI,CAACwF,MAAL,EAAa;MACX;IADW;IAGb,WAAWpW,MAAX,IAAqB,KAAK,CAAA+P,UAAL,CAAiB/f,MAAjB,EAArB,EAAgD;MAC9C,IAAIgQ,MAAA,CAAOpB,mBAAP,KAA+BwX,MAAnC,EAA2C;QACzC,KAAKzU,WAAL,CAAiB3B,MAAjB;QACAA,MAAA,CAAOwK,eAAP;QACA;MAHyC;IADG;EAnBlB;EAiChC+L,cAAc3F,IAAd,EAAoB;IAClB,IAAIA,IAAA,KAAS,KAAK,CAAAA,IAAlB,EAAyB;MACvB;IADuB;IAGzB,KAAK,CAAAL,QAAL,CAAekF,QAAf,CAAwB,4BAAxB,EAAsD;MACpD7wB,MAAA,EAAQ,IAD4C;MAEpDgsB;IAFoD,CAAtD;EAJkB;EAepBvG,aAAa5pC,IAAb,EAAmBkR,KAAnB,EAA0B;IACxB,IAAI,CAAC,KAAK,CAAA0+B,WAAV,EAAwB;MACtB;IADsB;IAGxB,IAAI5vC,IAAA,KAAS4B,gCAAA,CAA2BE,MAAxC,EAAgD;MAC9C,KAAK++B,YAAL,CAAkBkV,YAAlB,CAA+B/1C,IAA/B;MACA;IAF8C;IAKhD,WAAWu/B,MAAX,IAAqB,KAAK,CAAA6Q,eAA1B,EAA4C;MAC1C7Q,MAAA,CAAOqK,YAAP,CAAoB5pC,IAApB,EAA0BkR,KAA1B;IAD0C;IAI5C,WAAWmjC,UAAX,IAAyB,KAAK,CAAAzE,WAA9B,EAA4C;MAC1CyE,UAAA,CAAWvU,mBAAX,CAA+B9/B,IAA/B,EAAqCkR,KAArC;IAD0C;EAbpB;EAkB1B8kC,cAAcC,QAAA,GAAW,KAAzB,EAAgC;IAC9B,IAAI,KAAK,CAAAhG,SAAL,KAAoBgG,QAAxB,EAAkC;MAChC;IADgC;IAGlC,KAAK,CAAAhG,SAAL,GAAkBgG,QAAlB;IACA,WAAWlD,KAAX,IAAoB,KAAK,CAAAxD,SAAL,CAAgBhgB,MAAhB,EAApB,EAA8C;MAC5C,IAAI0mB,QAAJ,EAAc;QACZlD,KAAA,CAAMmD,YAAN;MADY,CAAd,MAEO;QACLnD,KAAA,CAAMoD,WAAN;MADK;MAGPpD,KAAA,CAAM9U,GAAN,CAAUsC,SAAV,CAAoBC,MAApB,CAA2B,SAA3B,EAAsCyV,QAAtC;IAN4C;EALhB;EAkBhC,CAAAJ,UAAA,EAAa;IACX,IAAI,CAAC,KAAK,CAAA7F,SAAV,EAAsB;MACpB,KAAK,CAAAA,SAAL,GAAkB,IAAlB;MACA,WAAW+C,KAAX,IAAoB,KAAK,CAAAxD,SAAL,CAAgBhgB,MAAhB,EAApB,EAA8C;QAC5CwjB,KAAA,CAAMwC,MAAN;MAD4C;IAF1B;EADX;EAYb,CAAAK,WAAA,EAAc;IACZ,KAAKtD,WAAL;IACA,IAAI,KAAK,CAAAtC,SAAT,EAAqB;MACnB,KAAK,CAAAA,SAAL,GAAkB,KAAlB;MACA,WAAW+C,KAAX,IAAoB,KAAK,CAAAxD,SAAL,CAAgBhgB,MAAhB,EAApB,EAA8C;QAC5CwjB,KAAA,CAAMyC,OAAN;MAD4C;IAF3B;EAFT;EAedY,WAAWjtB,SAAX,EAAsB;IACpB,MAAM+qB,OAAA,GAAU,EAAhB;IACA,WAAW3U,MAAX,IAAqB,KAAK,CAAA+P,UAAL,CAAiB/f,MAAjB,EAArB,EAAgD;MAC9C,IAAIgQ,MAAA,CAAOpW,SAAP,KAAqBA,SAAzB,EAAoC;QAClC+qB,OAAA,CAAQ3gC,IAAR,CAAagsB,MAAb;MADkC;IADU;IAKhD,OAAO2U,OAAP;EAPoB;EAetBmC,UAAU9uB,EAAV,EAAc;IACZ,OAAO,KAAK,CAAA+nB,UAAL,CAAiB9yB,GAAjB,CAAqB+K,EAArB,CAAP;EADY;EAQd+uB,UAAU/W,MAAV,EAAkB;IAChB,KAAK,CAAA+P,UAAL,CAAiBvjB,GAAjB,CAAqBwT,MAAA,CAAOhY,EAA5B,EAAgCgY,MAAhC;EADgB;EAQlB6J,aAAa7J,MAAb,EAAqB;IACnB,KAAK,CAAA+P,UAAL,CAAiBziB,MAAjB,CAAwB0S,MAAA,CAAOhY,EAA/B;IACA,KAAKiiB,QAAL,CAAcjK,MAAd;IACA,IACE,CAACA,MAAA,CAAOpB,mBAAR,IACA,CAAC,KAAK,CAAAuR,4BAAL,CAAmC9c,GAAnC,CAAuC2M,MAAA,CAAOpB,mBAA9C,CAFH,EAGE;MACA,KAAK,CAAAxX,iBAAL,EAAyB8U,MAAzB,CAAgC8D,MAAA,CAAOhY,EAAvC;IADA;EANiB;EAerBgvB,4BAA4BhX,MAA5B,EAAoC;IAClC,KAAK,CAAAmQ,4BAAL,CAAmCniB,GAAnC,CAAuCgS,MAAA,CAAOpB,mBAA9C;IACAoB,MAAA,CAAOJ,OAAP,GAAiB,IAAjB;EAFkC;EAUpCqX,2BAA2BrY,mBAA3B,EAAgD;IAC9C,OAAO,KAAK,CAAAuR,4BAAL,CAAmC9c,GAAnC,CAAuCuL,mBAAvC,CAAP;EAD8C;EAQhDsY,+BAA+BlX,MAA/B,EAAuC;IACrC,KAAK,CAAAmQ,4BAAL,CAAmC7iB,MAAnC,CAA0C0S,MAAA,CAAOpB,mBAAjD;IACAoB,MAAA,CAAOJ,OAAP,GAAiB,KAAjB;EAFqC;EASvC,CAAAuV,iBAAkBnV,MAAlB,EAA0B;IACxB,MAAMwT,KAAA,GAAQ,KAAK,CAAAxD,SAAL,CAAgB/yB,GAAhB,CAAoB+iB,MAAA,CAAOpW,SAA3B,CAAd;IACA,IAAI4pB,KAAJ,EAAW;MACTA,KAAA,CAAM2D,YAAN,CAAmBnX,MAAnB;IADS,CAAX,MAEO;MACL,KAAK+W,SAAL,CAAe/W,MAAf;IADK;EAJiB;EAa1B0K,gBAAgB1K,MAAhB,EAAwB;IACtB,IAAI,KAAK,CAAA8P,YAAL,KAAuB9P,MAA3B,EAAmC;MACjC;IADiC;IAInC,KAAK,CAAA8P,YAAL,GAAqB9P,MAArB;IACA,IAAIA,MAAJ,EAAY;MACV,KAAK,CAAA0V,gBAAL,CAAuB1V,MAAA,CAAOc,kBAA9B;IADU;EANU;EAexB8H,eAAe5I,MAAf,EAAuB;IACrB,IAAI,KAAK,CAAA6Q,eAAL,CAAsBxd,GAAtB,CAA0B2M,MAA1B,CAAJ,EAAuC;MACrC,KAAK,CAAA6Q,eAAL,CAAsBvjB,MAAtB,CAA6B0S,MAA7B;MACAA,MAAA,CAAOiK,QAAP;MACA,KAAK,CAAAqL,oBAAL,CAA2B;QACzBrD,iBAAA,EAAmB,KAAKoC;MADC,CAA3B;MAGA;IANqC;IAQvC,KAAK,CAAAxD,eAAL,CAAsB7iB,GAAtB,CAA0BgS,MAA1B;IACAA,MAAA,CAAOgK,MAAP;IACA,KAAK,CAAA0L,gBAAL,CAAuB1V,MAAA,CAAOc,kBAA9B;IACA,KAAK,CAAAwU,oBAAL,CAA2B;MACzBrD,iBAAA,EAAmB;IADM,CAA3B;EAZqB;EAqBvBtQ,YAAY3B,MAAZ,EAAoB;IAClB,WAAWoX,EAAX,IAAiB,KAAK,CAAAvG,eAAtB,EAAwC;MACtC,IAAIuG,EAAA,KAAOpX,MAAX,EAAmB;QACjBoX,EAAA,CAAGnN,QAAH;MADiB;IADmB;IAKxC,KAAK,CAAA4G,eAAL,CAAsBzgB,KAAtB;IAEA,KAAK,CAAAygB,eAAL,CAAsB7iB,GAAtB,CAA0BgS,MAA1B;IACAA,MAAA,CAAOgK,MAAP;IACA,KAAK,CAAA0L,gBAAL,CAAuB1V,MAAA,CAAOc,kBAA9B;IACA,KAAK,CAAAwU,oBAAL,CAA2B;MACzBrD,iBAAA,EAAmB;IADM,CAA3B;EAXkB;EAoBpB3J,WAAWtI,MAAX,EAAmB;IACjB,OAAO,KAAK,CAAA6Q,eAAL,CAAsBxd,GAAtB,CAA0B2M,MAA1B,CAAP;EADiB;EAQnBiK,SAASjK,MAAT,EAAiB;IACfA,MAAA,CAAOiK,QAAP;IACA,KAAK,CAAA4G,eAAL,CAAsBvjB,MAAtB,CAA6B0S,MAA7B;IACA,KAAK,CAAAsV,oBAAL,CAA2B;MACzBrD,iBAAA,EAAmB,KAAKoC;IADC,CAA3B;EAHe;EAQjB,IAAIA,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK,CAAAxD,eAAL,CAAsB9hB,IAAtB,KAA+B,CAAtC;EADiB;EAOnBoX,KAAA,EAAO;IACL,KAAK,CAAA8J,cAAL,CAAqB9J,IAArB;IACA,KAAK,CAAAmP,oBAAL,CAA2B;MACzBpH,kBAAA,EAAoB,KAAK,CAAA+B,cAAL,CAAqB/B,kBAArB,EADK;MAEzBC,kBAAA,EAAoB,IAFK;MAGzBjM,OAAA,EAAS,KAAK,CAAAA,OAAL;IAHgB,CAA3B;EAFK;EAYP+L,KAAA,EAAO;IACL,KAAK,CAAAgC,cAAL,CAAqBhC,IAArB;IACA,KAAK,CAAAqH,oBAAL,CAA2B;MACzBpH,kBAAA,EAAoB,IADK;MAEzBC,kBAAA,EAAoB,KAAK,CAAA8B,cAAL,CAAqB9B,kBAArB,EAFK;MAGzBjM,OAAA,EAAS,KAAK,CAAAA,OAAL;IAHgB,CAA3B;EAFK;EAaPb,YAAYvd,MAAZ,EAAoB;IAClB,KAAK,CAAAmsB,cAAL,CAAqBjiB,GAArB,CAAyBlK,MAAzB;IACA,KAAK,CAAAwxB,oBAAL,CAA2B;MACzBpH,kBAAA,EAAoB,IADK;MAEzBC,kBAAA,EAAoB,KAFK;MAGzBjM,OAAA,EAAS,KAAK,CAAAA,OAAL;IAHgB,CAA3B;EAFkB;EASpB,CAAAA,QAAA,EAAW;IACT,IAAI,KAAK,CAAA6N,UAAL,CAAiBhhB,IAAjB,KAA0B,CAA9B,EAAiC;MAC/B,OAAO,IAAP;IAD+B;IAIjC,IAAI,KAAK,CAAAghB,UAAL,CAAiBhhB,IAAjB,KAA0B,CAA9B,EAAiC;MAC/B,WAAWiR,MAAX,IAAqB,KAAK,CAAA+P,UAAL,CAAiB/f,MAAjB,EAArB,EAAgD;QAC9C,OAAOgQ,MAAA,CAAOkC,OAAP,EAAP;MAD8C;IADjB;IAMjC,OAAO,KAAP;EAXS;EAiBX5U,OAAA,EAAS;IACP,KAAK2U,cAAL;IACA,IAAI,CAAC,KAAKoS,YAAV,EAAwB;MACtB;IADsB;IAIxB,MAAMM,OAAA,GAAU,CAAC,GAAG,KAAK,CAAA9D,eAAT,CAAhB;IACA,MAAM3K,GAAA,GAAMA,CAAA,KAAM;MAChB,WAAWlG,MAAX,IAAqB2U,OAArB,EAA8B;QAC5B3U,MAAA,CAAO9D,MAAP;MAD4B;IADd,CAAlB;IAKA,MAAMiK,IAAA,GAAOA,CAAA,KAAM;MACjB,WAAWnG,MAAX,IAAqB2U,OAArB,EAA8B;QAC5B,KAAK,CAAAQ,gBAAL,CAAuBnV,MAAvB;MAD4B;IADb,CAAnB;IAMA,KAAKqB,WAAL,CAAiB;MAAE6E,GAAF;MAAOC,IAAP;MAAaC,QAAA,EAAU;IAAvB,CAAjB;EAlBO;EAqBTnE,eAAA,EAAiB;IAEf,KAAK,CAAA6N,YAAL,EAAoB7N,cAApB;EAFe;EAKjB0Q,sBAAA,EAAwB;IACtB,OAAO,KAAK,CAAA7C,YAAL,IAAsB,KAAKuE,YAAlC;EADsB;EAQxB,CAAAe,cAAeT,OAAf,EAAwB;IACtB,KAAK,CAAA9D,eAAL,CAAsBzgB,KAAtB;IACA,WAAW4P,MAAX,IAAqB2U,OAArB,EAA8B;MAC5B,IAAI3U,MAAA,CAAOkC,OAAP,EAAJ,EAAsB;QACpB;MADoB;MAGtB,KAAK,CAAA2O,eAAL,CAAsB7iB,GAAtB,CAA0BgS,MAA1B;MACAA,MAAA,CAAOgK,MAAP;IAL4B;IAO9B,KAAK,CAAAsL,oBAAL,CAA2B;MAAErD,iBAAA,EAAmB;IAArB,CAA3B;EATsB;EAexBa,UAAA,EAAY;IACV,WAAW9S,MAAX,IAAqB,KAAK,CAAA6Q,eAA1B,EAA4C;MAC1C7Q,MAAA,CAAOmC,MAAP;IAD0C;IAG5C,KAAK,CAAAiT,aAAL,CAAoB,KAAK,CAAArF,UAAL,CAAiB/f,MAAjB,EAApB;EAJU;EAUZ+iB,YAAA,EAAc;IACZ,IAAI,KAAK,CAAAjD,YAAT,EAAwB;MAEtB,KAAK,CAAAA,YAAL,CAAmB7N,cAAnB;MACA;IAHsB;IAMxB,IAAI,CAAC,KAAKoS,YAAV,EAAwB;MACtB;IADsB;IAGxB,WAAWrU,MAAX,IAAqB,KAAK,CAAA6Q,eAA1B,EAA4C;MAC1C7Q,MAAA,CAAOiK,QAAP;IAD0C;IAG5C,KAAK,CAAA4G,eAAL,CAAsBzgB,KAAtB;IACA,KAAK,CAAAklB,oBAAL,CAA2B;MACzBrD,iBAAA,EAAmB;IADM,CAA3B;EAdY;EAmBde,yBAAyBvT,CAAzB,EAA4BC,CAA5B,EAA+B2X,QAAA,GAAW,KAA1C,EAAiD;IAC/C,IAAI,CAACA,QAAL,EAAe;MACb,KAAKpV,cAAL;IADa;IAGf,IAAI,CAAC,KAAKoS,YAAV,EAAwB;MACtB;IADsB;IAIxB,KAAK,CAAAnC,WAAL,CAAkB,CAAlB,KAAwBzS,CAAxB;IACA,KAAK,CAAAyS,WAAL,CAAkB,CAAlB,KAAwBxS,CAAxB;IACA,MAAM,CAAC4X,MAAD,EAASC,MAAT,IAAmB,KAAK,CAAArF,WAA9B;IACA,MAAMyC,OAAA,GAAU,CAAC,GAAG,KAAK,CAAA9D,eAAT,CAAhB;IAIA,MAAM2G,YAAA,GAAe,IAArB;IAEA,IAAI,KAAK,CAAArF,oBAAT,EAAgC;MAC9BzlB,YAAA,CAAa,KAAK,CAAAylB,oBAAlB;IAD8B;IAIhC,KAAK,CAAAA,oBAAL,GAA6B3hB,UAAA,CAAW,MAAM;MAC5C,KAAK,CAAA2hB,oBAAL,GAA6B,IAA7B;MACA,KAAK,CAAAD,WAAL,CAAkB,CAAlB,IAAuB,KAAK,CAAAA,WAAL,CAAkB,CAAlB,IAAuB,CAA9C;MAEA,KAAK7Q,WAAL,CAAiB;QACf6E,GAAA,EAAKA,CAAA,KAAM;UACT,WAAWlG,MAAX,IAAqB2U,OAArB,EAA8B;YAC5B,IAAI,KAAK,CAAA5E,UAAL,CAAiB1c,GAAjB,CAAqB2M,MAAA,CAAOhY,EAA5B,CAAJ,EAAqC;cACnCgY,MAAA,CAAOyC,eAAP,CAAuB6U,MAAvB,EAA+BC,MAA/B;YADmC;UADT;QADrB,CADI;QAQfpR,IAAA,EAAMA,CAAA,KAAM;UACV,WAAWnG,MAAX,IAAqB2U,OAArB,EAA8B;YAC5B,IAAI,KAAK,CAAA5E,UAAL,CAAiB1c,GAAjB,CAAqB2M,MAAA,CAAOhY,EAA5B,CAAJ,EAAqC;cACnCgY,MAAA,CAAOyC,eAAP,CAAuB,CAAC6U,MAAxB,EAAgC,CAACC,MAAjC;YADmC;UADT;QADpB,CARG;QAefnR,QAAA,EAAU;MAfK,CAAjB;IAJ4C,CAAjB,EAqB1BoR,YArB0B,CAA7B;IAuBA,WAAWxX,MAAX,IAAqB2U,OAArB,EAA8B;MAC5B3U,MAAA,CAAOyC,eAAP,CAAuBhD,CAAvB,EAA0BC,CAA1B;IAD4B;EA5CiB;EAoDjD2I,iBAAA,EAAmB;IACjB,IAAI,CAAC,KAAKgM,YAAV,EAAwB;MACtB;IADsB;IAIxB,KAAKL,iBAAL,CAAuB,IAAvB;IACA,KAAK,CAAA5D,eAAL,GAAwB,IAAIvzB,GAAJ,EAAxB;IACA,WAAWmjB,MAAX,IAAqB,KAAK,CAAA6Q,eAA1B,EAA4C;MAC1C,KAAK,CAAAT,eAAL,CAAsB5jB,GAAtB,CAA0BwT,MAA1B,EAAkC;QAChCqF,MAAA,EAAQrF,MAAA,CAAOP,CADiB;QAEhC6F,MAAA,EAAQtF,MAAA,CAAON,CAFiB;QAGhC+X,cAAA,EAAgBzX,MAAA,CAAO3C,MAAP,CAAczT,SAHE;QAIhCkc,IAAA,EAAM,CAJ0B;QAKhCC,IAAA,EAAM,CAL0B;QAMhC2R,YAAA,EAAc,CAAC;MANiB,CAAlC;IAD0C;EAP3B;EAuBnBjP,eAAA,EAAiB;IACf,IAAI,CAAC,KAAK,CAAA2H,eAAV,EAA4B;MAC1B,OAAO,KAAP;IAD0B;IAG5B,KAAK4D,iBAAL,CAAuB,KAAvB;IACA,MAAMt/B,GAAA,GAAM,KAAK,CAAA07B,eAAjB;IACA,KAAK,CAAAA,eAAL,GAAwB,IAAxB;IACA,IAAIuH,sBAAA,GAAyB,KAA7B;IAEA,WAAW,CAAC;MAAElY,CAAF;MAAKC,CAAL;MAAQrC;IAAR,CAAD,EAAmB1rB,KAAnB,CAAX,IAAwC+C,GAAxC,EAA6C;MAC3C/C,KAAA,CAAMm0B,IAAN,GAAarG,CAAb;MACA9tB,KAAA,CAAMo0B,IAAN,GAAarG,CAAb;MACA/tB,KAAA,CAAM+lC,YAAN,GAAqBra,MAAA,CAAOzT,SAA5B;MACA+tB,sBAAA,KACElY,CAAA,KAAM9tB,KAAA,CAAM0zB,MAAZ,IACA3F,CAAA,KAAM/tB,KAAA,CAAM2zB,MADZ,IAEAjI,MAAA,CAAOzT,SAAP,KAAqBjY,KAAA,CAAM8lC,cAH7B;IAJ2C;IAU7C,IAAI,CAACE,sBAAL,EAA6B;MAC3B,OAAO,KAAP;IAD2B;IAI7B,MAAMC,IAAA,GAAOA,CAAC5X,MAAD,EAASP,CAAT,EAAYC,CAAZ,EAAe9V,SAAf,KAA6B;MACxC,IAAI,KAAK,CAAAmmB,UAAL,CAAiB1c,GAAjB,CAAqB2M,MAAA,CAAOhY,EAA5B,CAAJ,EAAqC;QAInC,MAAMqV,MAAA,GAAS,KAAK,CAAA2S,SAAL,CAAgB/yB,GAAhB,CAAoB2M,SAApB,CAAf;QACA,IAAIyT,MAAJ,EAAY;UACV2C,MAAA,CAAO8I,qBAAP,CAA6BzL,MAA7B,EAAqCoC,CAArC,EAAwCC,CAAxC;QADU,CAAZ,MAEO;UACLM,MAAA,CAAOpW,SAAP,GAAmBA,SAAnB;UACAoW,MAAA,CAAOP,CAAP,GAAWA,CAAX;UACAO,MAAA,CAAON,CAAP,GAAWA,CAAX;QAHK;MAP4B;IADG,CAA1C;IAgBA,KAAK2B,WAAL,CAAiB;MACf6E,GAAA,EAAKA,CAAA,KAAM;QACT,WAAW,CAAClG,MAAD,EAAS;UAAE8F,IAAF;UAAQC,IAAR;UAAc2R;QAAd,CAAT,CAAX,IAAqDhjC,GAArD,EAA0D;UACxDkjC,IAAA,CAAK5X,MAAL,EAAa8F,IAAb,EAAmBC,IAAnB,EAAyB2R,YAAzB;QADwD;MADjD,CADI;MAMfvR,IAAA,EAAMA,CAAA,KAAM;QACV,WAAW,CAACnG,MAAD,EAAS;UAAEqF,MAAF;UAAUC,MAAV;UAAkBmS;QAAlB,CAAT,CAAX,IAA2D/iC,GAA3D,EAAgE;UAC9DkjC,IAAA,CAAK5X,MAAL,EAAaqF,MAAb,EAAqBC,MAArB,EAA6BmS,cAA7B;QAD8D;MADtD,CANG;MAWfrR,QAAA,EAAU;IAXK,CAAjB;IAcA,OAAO,IAAP;EArDe;EA6DjBoC,oBAAoBnG,EAApB,EAAwBC,EAAxB,EAA4B;IAC1B,IAAI,CAAC,KAAK,CAAA8N,eAAV,EAA4B;MAC1B;IAD0B;IAG5B,WAAWpQ,MAAX,IAAqB,KAAK,CAAAoQ,eAAL,CAAsB57B,IAAtB,EAArB,EAAmD;MACjDwrB,MAAA,CAAO6C,IAAP,CAAYR,EAAZ,EAAgBC,EAAhB;IADiD;EAJzB;EAc5BmH,QAAQzJ,MAAR,EAAgB;IACd,IAAIA,MAAA,CAAO3C,MAAP,KAAkB,IAAtB,EAA4B;MAC1B,MAAMA,MAAA,GAAS,KAAKyY,QAAL,CAAc9V,MAAA,CAAOpW,SAArB,CAAf;MACA,IAAIyT,MAAJ,EAAY;QACVA,MAAA,CAAO0L,YAAP,CAAoB/I,MAApB;QACA3C,MAAA,CAAO8Z,YAAP,CAAoBnX,MAApB;MAFU,CAAZ,MAGO;QACL,KAAK+W,SAAL,CAAe/W,MAAf;QACA,KAAKI,sBAAL,CAA4BJ,MAA5B;QACAA,MAAA,CAAOyJ,OAAP;MAHK;IALmB,CAA5B,MAUO;MACLzJ,MAAA,CAAO3C,MAAP,CAAc8Z,YAAd,CAA2BnX,MAA3B;IADK;EAXO;EAqBhB6X,SAAS7X,MAAT,EAAiB;IACf,OAAO,KAAK,CAAA8P,YAAL,KAAuB9P,MAA9B;EADe;EAQjBqV,UAAA,EAAY;IACV,OAAO,KAAK,CAAAvF,YAAZ;EADU;EAQZgI,QAAA,EAAU;IACR,OAAO,KAAK,CAAAlH,IAAZ;EADQ;EAIV,IAAImH,YAAJA,CAAA,EAAmB;IACjB,OAAO,IAAAvmC,YAAA,EAAO,IAAP,EAAa,cAAb,EAA6B,IAAI25B,YAAJ,EAA7B,CAAP;EADiB;AAjqCW;AAxgBhCzqC,iCAAA,GAAAmvC,yBAAA;;;;;;;;;;;;;;;;;;;;;;;;;ACeA,IAAAmI,aAAA,GAAAt6B,mBAAA;AAOA,IAAAD,KAAA,GAAAC,mBAAA;AASA,MAAMu6B,MAAA,GAAS,4BAAf;AAEA,MAAMC,gBAAA,GAAmB,oBAAzB;AAjCAx3C,wBAAA,GAAAw3C,gBAAA;AAmCA,MAAM/E,aAAN,CAAoB;EAClB,OAAOr9B,GAAP,GAAa,IAAb;EAEA,OAAOqiC,GAAP,GAAa,IAAb;EAEA,OAAO/E,gBAAP,GAA0B,KAAKt9B,GAAL,GAAW,KAAKqiC,GAA1C;AALkB;AAnCpBz3C,qBAAA,GAAAyyC,aAAA;AAoDA,MAAM9zB,gBAAN,SAA+B+4B,+BAA/B,CAAiD;EAC/C,CAAAC,MAAA;EAEA,CAAAC,KAAA;EAEA,CAAAx4B,KAAA;EAEA,CAAA0B,QAAA;EAEA,CAAAiyB,SAAA;EAEA,CAAA8E,MAAA;EAEA,CAAAC,MAAA;EAEA,CAAAC,kBAAA;EAEA,CAAAC,eAAA;EAEA,CAAAC,eAAA;EAEA,CAAA3wB,EAAA,GAAM,CAAN;EAEA1V,YAAY;IAAEwN,KAAF;IAASyB,aAAA,GAAgB1L,UAAA,CAAW2L;EAApC,IAAiD,EAA7D,EAAiE;IAC/D;IACA,KAAK,CAAA1B,KAAL,GAAcA,KAAd;IACA,KAAK,CAAA0B,QAAL,GAAiBD,aAAjB;EAH+D;EAMjE,IAAI,CAAA8pB,KAAJA,CAAA,EAAa;IACX,OAAQ,KAAK,CAAAgN,MAAL,KAAiB,IAAIx7B,GAAJ,EAAzB;EADW;EAIb,IAAI,CAAA+7B,IAAJA,CAAA,EAAY;IACV,IAAI,CAAC,KAAK,CAAAN,KAAV,EAAkB;MAChB,MAAM5Z,GAAA,GAAM,KAAK,CAAAld,QAAL,CAAegjB,aAAf,CAA6B,KAA7B,CAAZ;MACA,MAAM;QAAEhD;MAAF,IAAY9C,GAAlB;MACA8C,KAAA,CAAMqX,UAAN,GAAmB,QAAnB;MACArX,KAAA,CAAMsX,OAAN,GAAgB,QAAhB;MACAtX,KAAA,CAAM/I,KAAN,GAAc+I,KAAA,CAAM9I,MAAN,GAAe,CAA7B;MACA8I,KAAA,CAAMoM,QAAN,GAAiB,UAAjB;MACApM,KAAA,CAAM4B,GAAN,GAAY5B,KAAA,CAAM0B,IAAN,GAAa,CAAzB;MACA1B,KAAA,CAAMnD,MAAN,GAAe,CAAC,CAAhB;MAEA,MAAMkN,GAAA,GAAM,KAAK,CAAA/pB,QAAL,CAAeu3B,eAAf,CAA+Bd,MAA/B,EAAuC,KAAvC,CAAZ;MACA1M,GAAA,CAAIxD,YAAJ,CAAiB,OAAjB,EAA0B,CAA1B;MACAwD,GAAA,CAAIxD,YAAJ,CAAiB,QAAjB,EAA2B,CAA3B;MACA,KAAK,CAAAuQ,KAAL,GAAc,KAAK,CAAA92B,QAAL,CAAeu3B,eAAf,CAA+Bd,MAA/B,EAAuC,MAAvC,CAAd;MACAvZ,GAAA,CAAIgG,MAAJ,CAAW6G,GAAX;MACAA,GAAA,CAAI7G,MAAJ,CAAW,KAAK,CAAA4T,KAAhB;MACA,KAAK,CAAA92B,QAAL,CAAew3B,IAAf,CAAoBtU,MAApB,CAA2BhG,GAA3B;IAhBgB;IAkBlB,OAAO,KAAK,CAAA4Z,KAAZ;EAnBU;EAsBZW,UAAUC,IAAV,EAAgB;IACd,IAAI,CAACA,IAAL,EAAW;MACT,OAAO,MAAP;IADS;IAMX,IAAIvnC,KAAA,GAAQ,KAAK,CAAA05B,KAAL,CAAYpuB,GAAZ,CAAgBi8B,IAAhB,CAAZ;IACA,IAAIvnC,KAAJ,EAAW;MACT,OAAOA,KAAP;IADS;IAIX,IAAIwnC,MAAJ,EAAYC,MAAZ,EAAoBC,MAApB,EAA4BzkC,GAA5B;IACA,IAAIskC,IAAA,CAAK/nC,MAAL,KAAgB,CAApB,EAAuB;MACrB,MAAMmoC,IAAA,GAAOJ,IAAA,CAAK,CAAL,CAAb;MACA,MAAMjkC,MAAA,GAAS,IAAIgB,KAAJ,CAAU,GAAV,CAAf;MACA,KAAK,IAAIvC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,GAApB,EAAyBA,CAAA,EAAzB,EAA8B;QAC5BuB,MAAA,CAAOvB,CAAP,IAAY4lC,IAAA,CAAK5lC,CAAL,IAAU,GAAtB;MAD4B;MAG9BkB,GAAA,GAAMukC,MAAA,GAASC,MAAA,GAASC,MAAA,GAASpkC,MAAA,CAAOhB,IAAP,CAAY,GAAZ,CAAjC;IANqB,CAAvB,MAOO;MACL,MAAM,CAACqlC,IAAD,EAAOC,IAAP,EAAaC,IAAb,IAAqBN,IAA3B;MACA,MAAMO,OAAA,GAAU,IAAIxjC,KAAJ,CAAU,GAAV,CAAhB;MACA,MAAMyjC,OAAA,GAAU,IAAIzjC,KAAJ,CAAU,GAAV,CAAhB;MACA,MAAM0jC,OAAA,GAAU,IAAI1jC,KAAJ,CAAU,GAAV,CAAhB;MACA,KAAK,IAAIvC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,GAApB,EAAyBA,CAAA,EAAzB,EAA8B;QAC5B+lC,OAAA,CAAQ/lC,CAAR,IAAa4lC,IAAA,CAAK5lC,CAAL,IAAU,GAAvB;QACAgmC,OAAA,CAAQhmC,CAAR,IAAa6lC,IAAA,CAAK7lC,CAAL,IAAU,GAAvB;QACAimC,OAAA,CAAQjmC,CAAR,IAAa8lC,IAAA,CAAK9lC,CAAL,IAAU,GAAvB;MAH4B;MAK9BylC,MAAA,GAASM,OAAA,CAAQxlC,IAAR,CAAa,GAAb,CAAT;MACAmlC,MAAA,GAASM,OAAA,CAAQzlC,IAAR,CAAa,GAAb,CAAT;MACAolC,MAAA,GAASM,OAAA,CAAQ1lC,IAAR,CAAa,GAAb,CAAT;MACAW,GAAA,GAAM,GAAGukC,MAAH,GAAYC,MAAZ,GAAqBC,MAArB,EAAN;IAbK;IAgBP1nC,KAAA,GAAQ,KAAK,CAAA05B,KAAL,CAAYpuB,GAAZ,CAAgBrI,GAAhB,CAAR;IACA,IAAIjD,KAAJ,EAAW;MACT,KAAK,CAAA05B,KAAL,CAAY7e,GAAZ,CAAgB0sB,IAAhB,EAAsBvnC,KAAtB;MACA,OAAOA,KAAP;IAFS;IAQX,MAAMqW,EAAA,GAAM,KAAI,KAAK,CAAAlI,KAAO,iBAAgB,KAAK,CAAAkI,EAAL,EAAjC,EAAX;IACA,MAAMtX,GAAA,GAAO,QAAOsX,EAAG,GAAvB;IACA,KAAK,CAAAqjB,KAAL,CAAY7e,GAAZ,CAAgB0sB,IAAhB,EAAsBxoC,GAAtB;IACA,KAAK,CAAA26B,KAAL,CAAY7e,GAAZ,CAAgB5X,GAAhB,EAAqBlE,GAArB;IAEA,MAAMkpC,MAAA,GAAS,KAAK,CAAAC,YAAL,CAAmB7xB,EAAnB,CAAf;IACA,KAAK,CAAA8xB,wBAAL,CAA+BX,MAA/B,EAAuCC,MAAvC,EAA+CC,MAA/C,EAAuDO,MAAvD;IAEA,OAAOlpC,GAAP;EArDc;EAwDhBgjC,aAAaqG,OAAb,EAAsBC,OAAtB,EAA+B;IAC7B,MAAMplC,GAAA,GAAM,GAAGmlC,OAAQ,IAAGC,OAAd,EAAZ;IACA,IAAI,KAAK,CAAAzB,MAAL,KAAiB3jC,GAArB,EAA0B;MACxB,OAAO,KAAK,CAAA4jC,MAAZ;IADwB;IAI1B,KAAK,CAAAD,MAAL,GAAe3jC,GAAf;IACA,KAAK,CAAA4jC,MAAL,GAAe,MAAf;IACA,KAAK,CAAA/E,SAAL,EAAiBvX,MAAjB;IAEA,IAAI,CAAC6d,OAAD,IAAY,CAACC,OAAjB,EAA0B;MACxB,OAAO,KAAK,CAAAxB,MAAZ;IADwB;IAI1B,MAAMyB,KAAA,GAAQ,KAAK,CAAAzK,MAAL,CAAauK,OAAb,CAAd;IACAA,OAAA,GAAU1jC,UAAA,CAAKC,YAAL,CAAkB,GAAG2jC,KAArB,CAAV;IACA,MAAMC,KAAA,GAAQ,KAAK,CAAA1K,MAAL,CAAawK,OAAb,CAAd;IACAA,OAAA,GAAU3jC,UAAA,CAAKC,YAAL,CAAkB,GAAG4jC,KAArB,CAAV;IACA,KAAK,CAAAtB,IAAL,CAAWpX,KAAX,CAAiB8N,KAAjB,GAAyB,EAAzB;IAEA,IACGyK,OAAA,KAAY,SAAZ,IAAyBC,OAAA,KAAY,SAAtC,IACAD,OAAA,KAAYC,OAFd,EAGE;MACA,OAAO,KAAK,CAAAxB,MAAZ;IADA;IAaF,MAAM9jC,GAAA,GAAM,IAAIuB,KAAJ,CAAU,GAAV,CAAZ;IACA,KAAK,IAAIvC,CAAA,GAAI,CAAR,EAAWA,CAAA,IAAK,GAArB,EAA0BA,CAAA,EAA1B,EAA+B;MAC7B,MAAM+rB,CAAA,GAAI/rB,CAAA,GAAI,GAAd;MACAgB,GAAA,CAAIhB,CAAJ,IAAS+rB,CAAA,IAAK,OAAL,GAAeA,CAAA,GAAI,KAAnB,GAA4B,CAAC,CAAAA,CAAA,GAAI,KAAJ,IAAa,KAAd,KAAwB,GAA7D;IAF6B;IAI/B,MAAM0a,KAAA,GAAQzlC,GAAA,CAAIT,IAAJ,CAAS,GAAT,CAAd;IAEA,MAAM+T,EAAA,GAAM,KAAI,KAAK,CAAAlI,KAAO,aAA5B;IACA,MAAM85B,MAAA,GAAU,KAAK,CAAAnB,kBAAL,GAA2B,KAAK,CAAAoB,YAAL,CAAmB7xB,EAAnB,CAA3C;IACA,KAAK,CAAA8xB,wBAAL,CAA+BK,KAA/B,EAAsCA,KAAtC,EAA6CA,KAA7C,EAAoDP,MAApD;IACA,KAAK,CAAAQ,iBAAL,CAAwBR,MAAxB;IAEA,MAAMS,QAAA,GAAWA,CAACpiC,CAAD,EAAI/B,CAAJ,KAAU;MACzB,MAAMokC,KAAA,GAAQL,KAAA,CAAMhiC,CAAN,IAAW,GAAzB;MACA,MAAM0O,GAAA,GAAMuzB,KAAA,CAAMjiC,CAAN,IAAW,GAAvB;MACA,MAAMsiC,GAAA,GAAM,IAAItkC,KAAJ,CAAUC,CAAA,GAAI,CAAd,CAAZ;MACA,KAAK,IAAIxC,CAAA,GAAI,CAAR,EAAWA,CAAA,IAAKwC,CAArB,EAAwBxC,CAAA,EAAxB,EAA6B;QAC3B6mC,GAAA,CAAI7mC,CAAJ,IAAS4mC,KAAA,GAAS5mC,CAAA,GAAIwC,CAAL,IAAWyQ,GAAA,GAAM2zB,KAAN,CAA5B;MAD2B;MAG7B,OAAOC,GAAA,CAAItmC,IAAJ,CAAS,GAAT,CAAP;IAPyB,CAA3B;IASA,KAAK,CAAA6lC,wBAAL,CACEO,QAAA,CAAS,CAAT,EAAY,CAAZ,CADF,EAEEA,QAAA,CAAS,CAAT,EAAY,CAAZ,CAFF,EAGEA,QAAA,CAAS,CAAT,EAAY,CAAZ,CAHF,EAIET,MAJF;IAOA,KAAK,CAAApB,MAAL,GAAgB,QAAOxwB,EAAG,GAA1B;IACA,OAAO,KAAK,CAAAwwB,MAAZ;EAjE6B;EAoE/BgC,sBAAsBT,OAAtB,EAA+BC,OAA/B,EAAwCS,UAAxC,EAAoDC,UAApD,EAAgE;IAC9D,MAAM9lC,GAAA,GAAM,GAAGmlC,OAAQ,IAAGC,OAAQ,IAAGS,UAAW,IAAGC,UAAvC,EAAZ;IACA,IAAI,KAAK,CAAAhC,eAAL,KAA0B9jC,GAA9B,EAAmC;MACjC,OAAO,KAAK,CAAA+jC,eAAZ;IADiC;IAInC,KAAK,CAAAD,eAAL,GAAwB9jC,GAAxB;IACA,KAAK,CAAA+jC,eAAL,GAAwB,MAAxB;IACA,KAAK,CAAAF,kBAAL,EAA0Bvc,MAA1B;IAEA,IAAI,CAAC6d,OAAD,IAAY,CAACC,OAAjB,EAA0B;MACxB,OAAO,KAAK,CAAArB,eAAZ;IADwB;IAI1B,MAAM,CAACsB,KAAD,EAAQC,KAAR,IAAiB,CAACH,OAAD,EAAUC,OAAV,EAAmBtlC,GAAnB,CAAuB,KAAK,CAAA86B,MAAL,CAAapX,IAAb,CAAkB,IAAlB,CAAvB,CAAvB;IACA,IAAIuiB,MAAA,GAAS/mC,IAAA,CAAKiwB,KAAL,CACX,SAASoW,KAAA,CAAM,CAAN,CAAT,GAAoB,SAASA,KAAA,CAAM,CAAN,CAA7B,GAAwC,SAASA,KAAA,CAAM,CAAN,CADtC,CAAb;IAGA,IAAIW,MAAA,GAAShnC,IAAA,CAAKiwB,KAAL,CACX,SAASqW,KAAA,CAAM,CAAN,CAAT,GAAoB,SAASA,KAAA,CAAM,CAAN,CAA7B,GAAwC,SAASA,KAAA,CAAM,CAAN,CADtC,CAAb;IAGA,IAAI,CAACW,QAAD,EAAWC,QAAX,IAAuB,CAACL,UAAD,EAAaC,UAAb,EAAyBhmC,GAAzB,CACzB,KAAK,CAAA86B,MAAL,CAAapX,IAAb,CAAkB,IAAlB,CADyB,CAA3B;IAGA,IAAIwiB,MAAA,GAASD,MAAb,EAAqB;MACnB,CAACA,MAAD,EAASC,MAAT,EAAiBC,QAAjB,EAA2BC,QAA3B,IAAuC,CACrCF,MADqC,EAErCD,MAFqC,EAGrCG,QAHqC,EAIrCD,QAJqC,CAAvC;IADmB;IAQrB,KAAK,CAAAjC,IAAL,CAAWpX,KAAX,CAAiB8N,KAAjB,GAAyB,EAAzB;IAeA,MAAM+K,QAAA,GAAWA,CAACU,EAAD,EAAKC,EAAL,EAAS9kC,CAAT,KAAe;MAC9B,MAAMqkC,GAAA,GAAM,IAAItkC,KAAJ,CAAU,GAAV,CAAZ;MACA,MAAMglC,IAAA,GAAQ,CAAAL,MAAA,GAASD,MAAT,IAAmBzkC,CAAjC;MACA,MAAMglC,QAAA,GAAWH,EAAA,GAAK,GAAtB;MACA,MAAMI,OAAA,GAAW,CAAAH,EAAA,GAAKD,EAAL,KAAY,MAAM7kC,CAAN,CAA7B;MACA,IAAIklC,IAAA,GAAO,CAAX;MACA,KAAK,IAAI1nC,CAAA,GAAI,CAAR,EAAWA,CAAA,IAAKwC,CAArB,EAAwBxC,CAAA,EAAxB,EAA6B;QAC3B,MAAM2nC,CAAA,GAAIznC,IAAA,CAAKiwB,KAAL,CAAW8W,MAAA,GAASjnC,CAAA,GAAIunC,IAAxB,CAAV;QACA,MAAMtpC,KAAA,GAAQupC,QAAA,GAAWxnC,CAAA,GAAIynC,OAA7B;QACA,KAAK,IAAIlhC,CAAA,GAAImhC,IAAR,EAAcnhC,CAAA,IAAKohC,CAAxB,EAA2BphC,CAAA,EAA3B,EAAgC;UAC9BsgC,GAAA,CAAItgC,CAAJ,IAAStI,KAAT;QAD8B;QAGhCypC,IAAA,GAAOC,CAAA,GAAI,CAAX;MAN2B;MAQ7B,KAAK,IAAI3nC,CAAA,GAAI0nC,IAAR,EAAc1nC,CAAA,GAAI,GAAvB,EAA4BA,CAAA,EAA5B,EAAiC;QAC/B6mC,GAAA,CAAI7mC,CAAJ,IAAS6mC,GAAA,CAAIa,IAAA,GAAO,CAAX,CAAT;MAD+B;MAGjC,OAAOb,GAAA,CAAItmC,IAAJ,CAAS,GAAT,CAAP;IAjB8B,CAAhC;IAoBA,MAAM+T,EAAA,GAAM,KAAI,KAAK,CAAAlI,KAAO,uBAA5B;IACA,MAAM85B,MAAA,GAAU,KAAK,CAAAnB,kBAAL,GAA2B,KAAK,CAAAoB,YAAL,CAAmB7xB,EAAnB,CAA3C;IAEA,KAAK,CAAAoyB,iBAAL,CAAwBR,MAAxB;IACA,KAAK,CAAAE,wBAAL,CACEO,QAAA,CAASQ,QAAA,CAAS,CAAT,CAAT,EAAsBC,QAAA,CAAS,CAAT,CAAtB,EAAmC,CAAnC,CADF,EAEET,QAAA,CAASQ,QAAA,CAAS,CAAT,CAAT,EAAsBC,QAAA,CAAS,CAAT,CAAtB,EAAmC,CAAnC,CAFF,EAGET,QAAA,CAASQ,QAAA,CAAS,CAAT,CAAT,EAAsBC,QAAA,CAAS,CAAT,CAAtB,EAAmC,CAAnC,CAHF,EAIElB,MAJF;IAOA,KAAK,CAAAjB,eAAL,GAAyB,QAAO3wB,EAAG,GAAnC;IACA,OAAO,KAAK,CAAA2wB,eAAZ;EA/E8D;EAkFhErzB,QAAQg2B,OAAA,GAAU,KAAlB,EAAyB;IACvB,IAAIA,OAAA,KAAY,KAAK,CAAA9C,MAAL,IAAgB,KAAK,CAAAG,eAArB,CAAhB,EAAwD;MACtD;IADsD;IAGxD,IAAI,KAAK,CAAAL,KAAT,EAAiB;MACf,KAAK,CAAAA,KAAL,CAAYiD,UAAZ,CAAuBA,UAAvB,CAAkCrf,MAAlC;MACA,KAAK,CAAAoc,KAAL,GAAc,IAAd;IAFe;IAIjB,IAAI,KAAK,CAAAD,MAAT,EAAkB;MAChB,KAAK,CAAAA,MAAL,CAAajoB,KAAb;MACA,KAAK,CAAAioB,MAAL,GAAe,IAAf;IAFgB;IAIlB,KAAK,CAAArwB,EAAL,GAAW,CAAX;EAZuB;EAezB,CAAAoyB,kBAAmBR,MAAnB,EAA2B;IACzB,MAAM4B,aAAA,GAAgB,KAAK,CAAAh6B,QAAL,CAAeu3B,eAAf,CACpBd,MADoB,EAEpB,eAFoB,CAAtB;IAIAuD,aAAA,CAAczT,YAAd,CAA2B,MAA3B,EAAmC,QAAnC;IACAyT,aAAA,CAAczT,YAAd,CACE,QADF,EAEE,sFAFF;IAIA6R,MAAA,CAAOlV,MAAP,CAAc8W,aAAd;EAVyB;EAa3B,CAAA3B,aAAc7xB,EAAd,EAAkB;IAChB,MAAM4xB,MAAA,GAAS,KAAK,CAAAp4B,QAAL,CAAeu3B,eAAf,CAA+Bd,MAA/B,EAAuC,QAAvC,CAAf;IACA2B,MAAA,CAAO7R,YAAP,CAAoB,6BAApB,EAAmD,MAAnD;IACA6R,MAAA,CAAO7R,YAAP,CAAoB,IAApB,EAA0B/f,EAA1B;IACA,KAAK,CAAA4wB,IAAL,CAAWlU,MAAX,CAAkBkV,MAAlB;IAEA,OAAOA,MAAP;EANgB;EASlB,CAAA6B,aAAcC,mBAAd,EAAmCC,IAAnC,EAAyCxB,KAAzC,EAAgD;IAC9C,MAAMyB,MAAA,GAAS,KAAK,CAAAp6B,QAAL,CAAeu3B,eAAf,CAA+Bd,MAA/B,EAAuC0D,IAAvC,CAAf;IACAC,MAAA,CAAO7T,YAAP,CAAoB,MAApB,EAA4B,UAA5B;IACA6T,MAAA,CAAO7T,YAAP,CAAoB,aAApB,EAAmCoS,KAAnC;IACAuB,mBAAA,CAAoBhX,MAApB,CAA2BkX,MAA3B;EAJ8C;EAOhD,CAAA9B,yBAA0B+B,MAA1B,EAAkCC,MAAlC,EAA0CC,MAA1C,EAAkDnC,MAAlD,EAA0D;IACxD,MAAM8B,mBAAA,GAAsB,KAAK,CAAAl6B,QAAL,CAAeu3B,eAAf,CAC1Bd,MAD0B,EAE1B,qBAF0B,CAA5B;IAIA2B,MAAA,CAAOlV,MAAP,CAAcgX,mBAAd;IACA,KAAK,CAAAD,YAAL,CAAmBC,mBAAnB,EAAwC,SAAxC,EAAmDG,MAAnD;IACA,KAAK,CAAAJ,YAAL,CAAmBC,mBAAnB,EAAwC,SAAxC,EAAmDI,MAAnD;IACA,KAAK,CAAAL,YAAL,CAAmBC,mBAAnB,EAAwC,SAAxC,EAAmDK,MAAnD;EARwD;EAW1D,CAAAvM,OAAQF,KAAR,EAAe;IACb,KAAK,CAAAsJ,IAAL,CAAWpX,KAAX,CAAiB8N,KAAjB,GAAyBA,KAAzB;IACA,OAAOE,MAAA,CAAO5J,gBAAA,CAAiB,KAAK,CAAAgT,IAAtB,EAA6BoD,gBAA7B,CAA8C,OAA9C,CAAP,CAAP;EAFa;AA5TgC;AApDjDt7C,wBAAA,GAAA2e,gBAAA;AAsXA,MAAMN,gBAAN,SAA+Bk9B,+BAA/B,CAAiD;EAC/C3pC,YAAY;IAAEiP,aAAA,GAAgB1L,UAAA,CAAW2L;EAA7B,IAA0C,EAAtD,EAA0D;IACxD;IACA,KAAK06B,SAAL,GAAiB36B,aAAjB;EAFwD;EAQ1D46B,cAAc1jB,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,MAAMe,MAAA,GAAS,KAAKyiB,SAAL,CAAe1X,aAAf,CAA6B,QAA7B,CAAf;IACA/K,MAAA,CAAOhB,KAAP,GAAeA,KAAf;IACAgB,MAAA,CAAOf,MAAP,GAAgBA,MAAhB;IACA,OAAOe,MAAP;EAJ2B;AATkB;AAtXjD/4B,wBAAA,GAAAqe,gBAAA;AAuYA,eAAeq9B,SAAfA,CAAyB1rC,GAAzB,EAA8B2rC,YAAA,GAAe,KAA7C,EAAoD;EAClD,IAEEr6B,eAAA,CAAgBtR,GAAhB,EAAqB8Q,QAAA,CAASS,OAA9B,CAFF,EAGE;IACA,MAAMgqB,QAAA,GAAW,MAAMtT,KAAA,CAAMjoB,GAAN,CAAvB;IACA,IAAI,CAACu7B,QAAA,CAASC,EAAd,EAAkB;MAChB,MAAM,IAAI57B,KAAJ,CAAU27B,QAAA,CAASE,UAAnB,CAAN;IADgB;IAGlB,OAAOkQ,YAAA,GACH,IAAIjoC,UAAJ,CAAe,MAAM63B,QAAA,CAASqQ,WAAT,EAArB,CADG,GAEH,IAAApoC,mBAAA,EAAc,MAAM+3B,QAAA,CAASsQ,IAAT,EAApB,CAFJ;EALA;EAWF,OAAO,IAAIlgC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;IACtC,MAAMigC,OAAA,GAAU,IAAIC,cAAJ,EAAhB;IACAD,OAAA,CAAQE,IAAR,CAAa,KAAb,EAAoBhsC,GAApB,EAA8C,IAA9C;IAEA,IAAI2rC,YAAJ,EAAkB;MAChBG,OAAA,CAAQG,YAAR,GAAuB,aAAvB;IADgB;IAGlBH,OAAA,CAAQI,kBAAR,GAA6B,MAAM;MACjC,IAAIJ,OAAA,CAAQK,UAAR,KAAuBJ,cAAA,CAAeK,IAA1C,EAAgD;QAC9C;MAD8C;MAGhD,IAAIN,OAAA,CAAQzpC,MAAR,KAAmB,GAAnB,IAA0BypC,OAAA,CAAQzpC,MAAR,KAAmB,CAAjD,EAAoD;QAClD,IAAIyJ,IAAJ;QACA,IAAI6/B,YAAA,IAAgBG,OAAA,CAAQvQ,QAA5B,EAAsC;UACpCzvB,IAAA,GAAO,IAAIpI,UAAJ,CAAeooC,OAAA,CAAQvQ,QAAvB,CAAP;QADoC,CAAtC,MAEO,IAAI,CAACoQ,YAAD,IAAiBG,OAAA,CAAQO,YAA7B,EAA2C;UAChDvgC,IAAA,GAAO,IAAAtI,mBAAA,EAAcsoC,OAAA,CAAQO,YAAtB,CAAP;QADgD;QAGlD,IAAIvgC,IAAJ,EAAU;UACRF,OAAA,CAAQE,IAAR;UACA;QAFQ;MAPwC;MAYpDD,MAAA,CAAO,IAAIjM,KAAJ,CAAUksC,OAAA,CAAQrQ,UAAlB,CAAP;IAhBiC,CAAnC;IAmBAqQ,OAAA,CAAQ/3B,IAAR,CAAa,IAAb;EA1BsC,CAAjC,CAAP;AAfkD;AA6CpD,MAAMvF,oBAAN,SAAmC89B,mCAAnC,CAAyD;EAIvDC,WAAWvsC,GAAX,EAAgBwsC,eAAhB,EAAiC;IAC/B,OAAOd,SAAA,CAAU1rC,GAAV,EAAoC,KAAK6R,YAAzC,EAAuDY,IAAvD,CAA4D3G,IAAA,IAAQ;MACzE,OAAO;QAAE2gC,QAAA,EAAU3gC,IAAZ;QAAkB0gC;MAAlB,CAAP;IADyE,CAApE,CAAP;EAD+B;AAJsB;AApbzDx8C,4BAAA,GAAAwe,oBAAA;AA+bA,MAAMM,0BAAN,SAAyC49B,yCAAzC,CAAqE;EAInEH,WAAWvsC,GAAX,EAAgB;IACd,OAAO0rC,SAAA,CAAU1rC,GAAV,EAAoC,IAApC,CAAP;EADc;AAJmD;AA/brEhQ,kCAAA,GAAA8e,0BAAA;AAwcA,MAAM69B,aAAN,SAA4BC,4BAA5B,CAA2C;EAIzCC,WAAW98C,IAAX,EAAiB;IACf,OAAO+gB,QAAA,CAASu3B,eAAT,CAAyBd,MAAzB,EAAiCx3C,IAAjC,CAAP;EADe;AAJwB;AAxc3CC,qBAAA,GAAA28C,aAAA;AAgfA,MAAMpyB,YAAN,CAAmB;EAIjB3Y,YAAY;IACV4Y,OADU;IAEVN,KAFU;IAGVC,QAHU;IAIVC,OAAA,GAAU,CAJA;IAKVC,OAAA,GAAU,CALA;IAMVC,QAAA,GAAW;EAND,CAAZ,EAOG;IACD,KAAKE,OAAL,GAAeA,OAAf;IACA,KAAKN,KAAL,GAAaA,KAAb;IACA,KAAKC,QAAL,GAAgBA,QAAhB;IACA,KAAKC,OAAL,GAAeA,OAAf;IACA,KAAKC,OAAL,GAAeA,OAAf;IAIA,MAAMyyB,OAAA,GAAW,CAAAtyB,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2B,CAA5C;IACA,MAAMuyB,OAAA,GAAW,CAAAvyB,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2B,CAA5C;IACA,IAAIwyB,OAAJ,EAAaC,OAAb,EAAsBC,OAAtB,EAA+BC,OAA/B;IAEAhzB,QAAA,IAAY,GAAZ;IACA,IAAIA,QAAA,GAAW,CAAf,EAAkB;MAChBA,QAAA,IAAY,GAAZ;IADgB;IAGlB,QAAQA,QAAR;MACE,KAAK,GAAL;QACE6yB,OAAA,GAAU,CAAC,CAAX;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACA;MACF,KAAK,EAAL;QACEH,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACA;MACF,KAAK,GAAL;QACEH,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAC,CAAX;QACAC,OAAA,GAAU,CAAC,CAAX;QACAC,OAAA,GAAU,CAAV;QACA;MACF,KAAK,CAAL;QACEH,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAC,CAAX;QACA;MACF;QACE,MAAM,IAAIvtC,KAAJ,CACJ,mEADI,CAAN;IA1BJ;IA+BA,IAAI0a,QAAJ,EAAc;MACZ4yB,OAAA,GAAU,CAACA,OAAX;MACAC,OAAA,GAAU,CAACA,OAAX;IAFY;IAKd,IAAIC,aAAJ,EAAmBC,aAAnB;IACA,IAAItlB,KAAJ,EAAWC,MAAX;IACA,IAAIglB,OAAA,KAAY,CAAhB,EAAmB;MACjBI,aAAA,GAAgBlqC,IAAA,CAAKoG,GAAL,CAASyjC,OAAA,GAAUvyB,OAAA,CAAQ,CAAR,CAAnB,IAAiCN,KAAjC,GAAyCE,OAAzD;MACAizB,aAAA,GAAgBnqC,IAAA,CAAKoG,GAAL,CAASwjC,OAAA,GAAUtyB,OAAA,CAAQ,CAAR,CAAnB,IAAiCN,KAAjC,GAAyCG,OAAzD;MACA0N,KAAA,GAAS,CAAAvN,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2BN,KAApC;MACA8N,MAAA,GAAU,CAAAxN,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2BN,KAArC;IAJiB,CAAnB,MAKO;MACLkzB,aAAA,GAAgBlqC,IAAA,CAAKoG,GAAL,CAASwjC,OAAA,GAAUtyB,OAAA,CAAQ,CAAR,CAAnB,IAAiCN,KAAjC,GAAyCE,OAAzD;MACAizB,aAAA,GAAgBnqC,IAAA,CAAKoG,GAAL,CAASyjC,OAAA,GAAUvyB,OAAA,CAAQ,CAAR,CAAnB,IAAiCN,KAAjC,GAAyCG,OAAzD;MACA0N,KAAA,GAAS,CAAAvN,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2BN,KAApC;MACA8N,MAAA,GAAU,CAAAxN,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2BN,KAArC;IAJK;IASP,KAAKlgB,SAAL,GAAiB,CACfgzC,OAAA,GAAU9yB,KADK,EAEf+yB,OAAA,GAAU/yB,KAFK,EAGfgzB,OAAA,GAAUhzB,KAHK,EAIfizB,OAAA,GAAUjzB,KAJK,EAKfkzB,aAAA,GAAgBJ,OAAA,GAAU9yB,KAAV,GAAkB4yB,OAAlC,GAA4CI,OAAA,GAAUhzB,KAAV,GAAkB6yB,OAL/C,EAMfM,aAAA,GAAgBJ,OAAA,GAAU/yB,KAAV,GAAkB4yB,OAAlC,GAA4CK,OAAA,GAAUjzB,KAAV,GAAkB6yB,OAN/C,CAAjB;IASA,KAAKhlB,KAAL,GAAaA,KAAb;IACA,KAAKC,MAAL,GAAcA,MAAd;EA/EC;EAsFH,IAAIqG,OAAJA,CAAA,EAAc;IACZ,MAAM;MAAE7T;IAAF,IAAc,IAApB;IACA,OAAO,IAAA1Z,YAAA,EAAO,IAAP,EAAa,SAAb,EAAwB;MAC7BwtB,SAAA,EAAW9T,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CADK;MAE7B+T,UAAA,EAAY/T,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAFI;MAG7BgU,KAAA,EAAOhU,OAAA,CAAQ,CAAR,CAHsB;MAI7BiU,KAAA,EAAOjU,OAAA,CAAQ,CAAR;IAJsB,CAAxB,CAAP;EAFY;EAedoS,MAAM;IACJ1S,KAAA,GAAQ,KAAKA,KADT;IAEJC,QAAA,GAAW,KAAKA,QAFZ;IAGJC,OAAA,GAAU,KAAKA,OAHX;IAIJC,OAAA,GAAU,KAAKA,OAJX;IAKJC,QAAA,GAAW;EALP,IAMF,EANJ,EAMQ;IACN,OAAO,IAAIC,YAAJ,CAAiB;MACtBC,OAAA,EAAS,KAAKA,OAAL,CAAazT,KAAb,EADa;MAEtBmT,KAFsB;MAGtBC,QAHsB;MAItBC,OAJsB;MAKtBC,OALsB;MAMtBC;IANsB,CAAjB,CAAP;EADM;EAqBRgzB,uBAAuBve,CAAvB,EAA0BC,CAA1B,EAA6B;IAC3B,OAAOrpB,UAAA,CAAKU,cAAL,CAAoB,CAAC0oB,CAAD,EAAIC,CAAJ,CAApB,EAA4B,KAAKh1B,SAAjC,CAAP;EAD2B;EAW7BuzC,2BAA2BzlC,IAA3B,EAAiC;IAC/B,MAAM0lC,OAAA,GAAU7nC,UAAA,CAAKU,cAAL,CAAoB,CAACyB,IAAA,CAAK,CAAL,CAAD,EAAUA,IAAA,CAAK,CAAL,CAAV,CAApB,EAAwC,KAAK9N,SAA7C,CAAhB;IACA,MAAMyzC,WAAA,GAAc9nC,UAAA,CAAKU,cAAL,CAAoB,CAACyB,IAAA,CAAK,CAAL,CAAD,EAAUA,IAAA,CAAK,CAAL,CAAV,CAApB,EAAwC,KAAK9N,SAA7C,CAApB;IACA,OAAO,CAACwzC,OAAA,CAAQ,CAAR,CAAD,EAAaA,OAAA,CAAQ,CAAR,CAAb,EAAyBC,WAAA,CAAY,CAAZ,CAAzB,EAAyCA,WAAA,CAAY,CAAZ,CAAzC,CAAP;EAH+B;EAejCC,kBAAkB3e,CAAlB,EAAqBC,CAArB,EAAwB;IACtB,OAAOrpB,UAAA,CAAKe,qBAAL,CAA2B,CAACqoB,CAAD,EAAIC,CAAJ,CAA3B,EAAmC,KAAKh1B,SAAxC,CAAP;EADsB;AArKP;AAhfnBhK,oBAAA,GAAAuqB,YAAA;AA0pBA,MAAM8F,2BAAN,SAA0C7e,mBAA1C,CAAwD;EACtDI,YAAYrC,GAAZ,EAAiBghB,UAAA,GAAa,CAA9B,EAAiC;IAC/B,MAAMhhB,GAAN,EAAW,6BAAX;IACA,KAAKghB,UAAL,GAAkBA,UAAlB;EAF+B;AADqB;AA1pBxDvwB,mCAAA,GAAAqwB,2BAAA;AAiqBA,SAASrQ,YAATA,CAAsBhQ,GAAtB,EAA2B;EACzB,MAAMkK,EAAA,GAAKlK,GAAA,CAAIS,MAAf;EACA,IAAIuC,CAAA,GAAI,CAAR;EACA,OAAOA,CAAA,GAAIkH,EAAJ,IAAUlK,GAAA,CAAIgD,CAAJ,EAAO2qC,IAAP,OAAkB,EAAnC,EAAuC;IACrC3qC,CAAA;EADqC;EAGvC,OAAOhD,GAAA,CAAI4tC,SAAJ,CAAc5qC,CAAd,EAAiBA,CAAA,GAAI,CAArB,EAAwB6qC,WAAxB,OAA0C,OAAjD;AANyB;AAS3B,SAASC,SAATA,CAAmB5lB,QAAnB,EAA6B;EAC3B,OAAO,OAAOA,QAAP,KAAoB,QAApB,IAAgC,UAAU6lB,IAAV,CAAe7lB,QAAf,CAAvC;AAD2B;AAU7B,SAAS8lB,kBAATA,CAA4BhuC,GAA5B,EAAiCiuC,aAAA,GAAgB,KAAjD,EAAwD;EACtD,IAAI,CAACA,aAAL,EAAoB;IAClB,CAACjuC,GAAD,IAAQA,GAAA,CAAI89B,KAAJ,CAAU,MAAV,EAAkB,CAAlB,CAAR;EADkB;EAGpB,OAAO99B,GAAA,CAAI4tC,SAAJ,CAAc5tC,GAAA,CAAIkuC,WAAJ,CAAgB,GAAhB,IAAuB,CAArC,CAAP;AAJsD;AAcxD,SAASC,qBAATA,CAA+BnuC,GAA/B,EAAoCouC,eAAA,GAAkB,cAAtD,EAAsE;EACpE,IAAI,OAAOpuC,GAAP,KAAe,QAAnB,EAA6B;IAC3B,OAAOouC,eAAP;EAD2B;EAG7B,IAAIp+B,YAAA,CAAahQ,GAAb,CAAJ,EAAuB;IACrB,IAAAN,UAAA,EAAK,oEAAL;IACA,OAAO0uC,eAAP;EAFqB;EAIvB,MAAMC,KAAA,GAAQ,qDAAd;EAGA,MAAMC,UAAA,GAAa,+BAAnB;EACA,MAAMC,QAAA,GAAWF,KAAA,CAAMpQ,IAAN,CAAWj+B,GAAX,CAAjB;EACA,IAAIwuC,iBAAA,GACFF,UAAA,CAAWrQ,IAAX,CAAgBsQ,QAAA,CAAS,CAAT,CAAhB,KACAD,UAAA,CAAWrQ,IAAX,CAAgBsQ,QAAA,CAAS,CAAT,CAAhB,CADA,IAEAD,UAAA,CAAWrQ,IAAX,CAAgBsQ,QAAA,CAAS,CAAT,CAAhB,CAHF;EAIA,IAAIC,iBAAJ,EAAuB;IACrBA,iBAAA,GAAoBA,iBAAA,CAAkB,CAAlB,CAApB;IACA,IAAIA,iBAAA,CAAkBvpC,QAAlB,CAA2B,GAA3B,CAAJ,EAAqC;MAEnC,IAAI;QACFupC,iBAAA,GAAoBF,UAAA,CAAWrQ,IAAX,CAClB7zB,kBAAA,CAAmBokC,iBAAnB,CADkB,EAElB,CAFkB,CAApB;MADE,CAAJ,CAIE,MAAM;IAN2B;EAFhB;EAevB,OAAOA,iBAAA,IAAqBJ,eAA5B;AAhCoE;AAmCtE,MAAM70B,SAAN,CAAgB;EACdk1B,OAAA,GAAUttC,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAV;EAEAyqC,KAAA,GAAQ,EAAR;EAEAhzB,KAAK/Z,IAAL,EAAW;IACT,IAAIA,IAAA,IAAQ,KAAK8sC,OAAjB,EAA0B;MACxB,IAAA/uC,UAAA,EAAM,gCAA+BiC,IAAhC,EAAL;IADwB;IAG1B,KAAK8sC,OAAL,CAAa9sC,IAAb,IAAqBsJ,IAAA,CAAK0jC,GAAL,EAArB;EAJS;EAOX1xB,QAAQtb,IAAR,EAAc;IACZ,IAAI,EAAEA,IAAA,IAAQ,KAAK8sC,OAAb,CAAN,EAA6B;MAC3B,IAAA/uC,UAAA,EAAM,kCAAiCiC,IAAlC,EAAL;IAD2B;IAG7B,KAAK+sC,KAAL,CAAWprC,IAAX,CAAgB;MACd3B,IADc;MAEdioC,KAAA,EAAO,KAAK6E,OAAL,CAAa9sC,IAAb,CAFO;MAGdsU,GAAA,EAAKhL,IAAA,CAAK0jC,GAAL;IAHS,CAAhB;IAMA,OAAO,KAAKF,OAAL,CAAa9sC,IAAb,CAAP;EAVY;EAad8D,SAAA,EAAW;IAET,MAAMmpC,MAAA,GAAS,EAAf;IACA,IAAIC,OAAA,GAAU,CAAd;IACA,WAAW;MAAEltC;IAAF,CAAX,IAAuB,KAAK+sC,KAA5B,EAAmC;MACjCG,OAAA,GAAU3rC,IAAA,CAAKgE,GAAL,CAASvF,IAAA,CAAKlB,MAAd,EAAsBouC,OAAtB,CAAV;IADiC;IAGnC,WAAW;MAAEltC,IAAF;MAAQioC,KAAR;MAAe3zB;IAAf,CAAX,IAAmC,KAAKy4B,KAAxC,EAA+C;MAC7CE,MAAA,CAAOtrC,IAAP,CAAY,GAAG3B,IAAA,CAAKmtC,MAAL,CAAYD,OAAZ,CAAqB,IAAG54B,GAAA,GAAM2zB,KAAM,MAAnD;IAD6C;IAG/C,OAAOgF,MAAA,CAAOrrC,IAAP,CAAY,EAAZ,CAAP;EAVS;AAzBG;AAruBhBvT,iBAAA,GAAAupB,SAAA;AA4wBA,SAASjI,eAATA,CAAyBtR,GAAzB,EAA8BG,OAA9B,EAAuC;EAIrC,IAAI;IACF,MAAM;MAAEF;IAAF,IAAeE,OAAA,GAAU,IAAIU,GAAJ,CAAQb,GAAR,EAAaG,OAAb,CAAV,GAAkC,IAAIU,GAAJ,CAAQb,GAAR,CAAvD;IAEA,OAAOC,QAAA,KAAa,OAAb,IAAwBA,QAAA,KAAa,QAA5C;EAHE,CAAJ,CAIE,MAAM;IACN,OAAO,KAAP;EADM;AAR6B;AAkBvC,SAASgkB,UAATA,CAAoBjV,GAApB,EAAyB+/B,mBAAA,GAAsB,KAA/C,EAAsD;EACpD,OAAO,IAAIpjC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;IACtC,MAAMmjC,MAAA,GAASl+B,QAAA,CAASgjB,aAAT,CAAuB,QAAvB,CAAf;IACAkb,MAAA,CAAOhgC,GAAP,GAAaA,GAAb;IAEAggC,MAAA,CAAO/S,MAAP,GAAgB,UAAUnW,GAAV,EAAe;MAC7B,IAAIipB,mBAAJ,EAAyB;QACvBC,MAAA,CAAOxjB,MAAP;MADuB;MAGzB5f,OAAA,CAAQka,GAAR;IAJ6B,CAA/B;IAMAkpB,MAAA,CAAO5S,OAAP,GAAiB,YAAY;MAC3BvwB,MAAA,CAAO,IAAIjM,KAAJ,CAAW,0BAAyBovC,MAAA,CAAOhgC,GAAjC,EAAV,CAAP;IAD2B,CAA7B;IAGC,CAAA8B,QAAA,CAASm+B,IAAT,IAAiBn+B,QAAA,CAASo+B,eAA1B,EAA2Clb,MAA5C,CAAmDgb,MAAnD;EAbsC,CAAjC,CAAP;AADoD;AAmBtD,SAAS14B,UAATA,CAAoBrU,OAApB,EAA6B;EAC3BzC,OAAA,CAAQC,GAAR,CAAY,2BAA2BwC,OAAvC;AAD2B;AAI7B,IAAIktC,kBAAJ;AAEA,MAAMC,aAAN,CAAoB;EAiBlB,OAAOC,YAAPA,CAAoBC,KAApB,EAA2B;IACzB,IAAI,CAACA,KAAD,IAAU,OAAOA,KAAP,KAAiB,QAA/B,EAAyC;MACvC,OAAO,IAAP;IADuC;IAKzCH,kBAAA,KAAuB,IAAII,MAAJ,CACrB,QACE,UADF,GAEE,WAFF,GAGE,WAHF,GAIE,WAJF,GAKE,WALF,GAME,WANF,GAOE,YAPF,GAQE,WARF,GASE,IATF,GAUE,WAVF,GAWE,IAZmB,CAAvB;IAkBA,MAAMvQ,OAAA,GAAUmQ,kBAAA,CAAmBlR,IAAnB,CAAwBqR,KAAxB,CAAhB;IACA,IAAI,CAACtQ,OAAL,EAAc;MACZ,OAAO,IAAP;IADY;IAMd,MAAMwQ,IAAA,GAAOC,QAAA,CAASzQ,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAb;IACA,IAAI0Q,KAAA,GAAQD,QAAA,CAASzQ,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAZ;IACA0Q,KAAA,GAAQA,KAAA,IAAS,CAAT,IAAcA,KAAA,IAAS,EAAvB,GAA4BA,KAAA,GAAQ,CAApC,GAAwC,CAAhD;IACA,IAAIC,GAAA,GAAMF,QAAA,CAASzQ,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAV;IACA2Q,GAAA,GAAMA,GAAA,IAAO,CAAP,IAAYA,GAAA,IAAO,EAAnB,GAAwBA,GAAxB,GAA8B,CAApC;IACA,IAAIC,IAAA,GAAOH,QAAA,CAASzQ,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAX;IACA4Q,IAAA,GAAOA,IAAA,IAAQ,CAAR,IAAaA,IAAA,IAAQ,EAArB,GAA0BA,IAA1B,GAAiC,CAAxC;IACA,IAAIC,MAAA,GAASJ,QAAA,CAASzQ,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAb;IACA6Q,MAAA,GAASA,MAAA,IAAU,CAAV,IAAeA,MAAA,IAAU,EAAzB,GAA8BA,MAA9B,GAAuC,CAAhD;IACA,IAAIpoC,MAAA,GAASgoC,QAAA,CAASzQ,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAb;IACAv3B,MAAA,GAASA,MAAA,IAAU,CAAV,IAAeA,MAAA,IAAU,EAAzB,GAA8BA,MAA9B,GAAuC,CAAhD;IACA,MAAMqoC,qBAAA,GAAwB9Q,OAAA,CAAQ,CAAR,KAAc,GAA5C;IACA,IAAI+Q,UAAA,GAAaN,QAAA,CAASzQ,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAjB;IACA+Q,UAAA,GAAaA,UAAA,IAAc,CAAd,IAAmBA,UAAA,IAAc,EAAjC,GAAsCA,UAAtC,GAAmD,CAAhE;IACA,IAAIC,YAAA,GAAeP,QAAA,CAASzQ,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,KAA4B,CAA/C;IACAgR,YAAA,GAAeA,YAAA,IAAgB,CAAhB,IAAqBA,YAAA,IAAgB,EAArC,GAA0CA,YAA1C,GAAyD,CAAxE;IAMA,IAAIF,qBAAA,KAA0B,GAA9B,EAAmC;MACjCF,IAAA,IAAQG,UAAR;MACAF,MAAA,IAAUG,YAAV;IAFiC,CAAnC,MAGO,IAAIF,qBAAA,KAA0B,GAA9B,EAAmC;MACxCF,IAAA,IAAQG,UAAR;MACAF,MAAA,IAAUG,YAAV;IAFwC;IAK1C,OAAO,IAAI/kC,IAAJ,CAASA,IAAA,CAAKglC,GAAL,CAAST,IAAT,EAAeE,KAAf,EAAsBC,GAAtB,EAA2BC,IAA3B,EAAiCC,MAAjC,EAAyCpoC,MAAzC,CAAT,CAAP;EA5DyB;AAjBT;AAvzBpBzX,qBAAA,GAAAo/C,aAAA;AA24BA,SAASc,kBAATA,CAA4BC,OAA5B,EAAqC;EAAEj2B,KAAA,GAAQ,CAAV;EAAaC,QAAA,GAAW;AAAxB,CAArC,EAAkE;EAChE,MAAM;IAAE4N,KAAF;IAASC;EAAT,IAAoBmoB,OAAA,CAAQC,UAAR,CAAmBtf,KAA7C;EACA,MAAMtW,OAAA,GAAU,CAAC,CAAD,EAAI,CAAJ,EAAOi1B,QAAA,CAAS1nB,KAAT,CAAP,EAAwB0nB,QAAA,CAASznB,MAAT,CAAxB,CAAhB;EAEA,OAAO,IAAIzN,YAAJ,CAAiB;IACtBC,OADsB;IAEtBN,KAFsB;IAGtBC;EAHsB,CAAjB,CAAP;AAJgE;AAWlE,SAAS2kB,MAATA,CAAgBF,KAAhB,EAAuB;EACrB,IAAIA,KAAA,CAAMt+B,UAAN,CAAiB,GAAjB,CAAJ,EAA2B;IACzB,MAAM+vC,QAAA,GAAWZ,QAAA,CAAS7Q,KAAA,CAAM73B,KAAN,CAAY,CAAZ,CAAT,EAAyB,EAAzB,CAAjB;IACA,OAAO,CACJ,CAAAspC,QAAA,GAAW,QAAX,KAAwB,EADpB,EAEJ,CAAAA,QAAA,GAAW,QAAX,KAAwB,CAFpB,EAGLA,QAAA,GAAW,QAHN,CAAP;EAFyB;EAS3B,IAAIzR,KAAA,CAAMt+B,UAAN,CAAiB,MAAjB,CAAJ,EAA8B;IAE5B,OAAOs+B,KAAA,CACJ73B,KADI,CACsB,CADtB,EACyB,CAAC,CAD1B,EAEJ+2B,KAFI,CAEE,GAFF,EAGJ95B,GAHI,CAGA+qB,CAAA,IAAK0gB,QAAA,CAAS1gB,CAAT,CAHL,CAAP;EAF4B;EAQ9B,IAAI6P,KAAA,CAAMt+B,UAAN,CAAiB,OAAjB,CAAJ,EAA+B;IAC7B,OAAOs+B,KAAA,CACJ73B,KADI,CACuB,CADvB,EAC0B,CAAC,CAD3B,EAEJ+2B,KAFI,CAEE,GAFF,EAGJ95B,GAHI,CAGA+qB,CAAA,IAAK0gB,QAAA,CAAS1gB,CAAT,CAHL,EAIJhoB,KAJI,CAIE,CAJF,EAIK,CAJL,CAAP;EAD6B;EAQ/B,IAAArH,UAAA,EAAM,8BAA6Bk/B,KAAM,GAAzC;EACA,OAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAP;AA3BqB;AA8BvB,SAASF,cAATA,CAAwBD,MAAxB,EAAgC;EAC9B,MAAM6R,IAAA,GAAOx/B,QAAA,CAASgjB,aAAT,CAAuB,MAAvB,CAAb;EACAwc,IAAA,CAAKxf,KAAL,CAAWqX,UAAX,GAAwB,QAAxB;EACAr3B,QAAA,CAASw3B,IAAT,CAActU,MAAd,CAAqBsc,IAArB;EACA,WAAW3uC,IAAX,IAAmB88B,MAAA,CAAO36B,IAAP,EAAnB,EAAkC;IAChCwsC,IAAA,CAAKxf,KAAL,CAAW8N,KAAX,GAAmBj9B,IAAnB;IACA,MAAM4uC,aAAA,GAAgBj8B,MAAA,CAAO4gB,gBAAP,CAAwBob,IAAxB,EAA8B1R,KAApD;IACAH,MAAA,CAAO3iB,GAAP,CAAWna,IAAX,EAAiBm9B,MAAA,CAAOyR,aAAP,CAAjB;EAHgC;EAKlCD,IAAA,CAAK9kB,MAAL;AAT8B;AAYhC,SAASglB,mBAATA,CAA6B1V,GAA7B,EAAkC;EAChC,MAAM;IAAExzB,CAAF;IAAKvB,CAAL;IAAQwB,CAAR;IAAWZ,CAAX;IAAcitB,CAAd;IAAiB6c;EAAjB,IAAuB3V,GAAA,CAAI4V,YAAJ,EAA7B;EACA,OAAO,CAACppC,CAAD,EAAIvB,CAAJ,EAAOwB,CAAP,EAAUZ,CAAV,EAAaitB,CAAb,EAAgB6c,CAAhB,CAAP;AAFgC;AAKlC,SAASE,0BAATA,CAAoC7V,GAApC,EAAyC;EACvC,MAAM;IAAExzB,CAAF;IAAKvB,CAAL;IAAQwB,CAAR;IAAWZ,CAAX;IAAcitB,CAAd;IAAiB6c;EAAjB,IAAuB3V,GAAA,CAAI4V,YAAJ,GAAmBE,UAAnB,EAA7B;EACA,OAAO,CAACtpC,CAAD,EAAIvB,CAAJ,EAAOwB,CAAP,EAAUZ,CAAV,EAAaitB,CAAb,EAAgB6c,CAAhB,CAAP;AAFuC;AAWzC,SAASI,kBAATA,CACE7iB,GADF,EAEE7S,QAFF,EAGE21B,QAAA,GAAW,KAHb,EAIEC,UAAA,GAAa,IAJf,EAKE;EACA,IAAI51B,QAAA,YAAoBZ,YAAxB,EAAsC;IACpC,MAAM;MAAE+T,SAAF;MAAaC;IAAb,IAA4BpT,QAAA,CAASkT,OAA3C;IACA,MAAM;MAAEyC;IAAF,IAAY9C,GAAlB;IACA,MAAMgjB,QAAA,GAAWtsC,iBAAA,CAAYQ,mBAA7B;IAEA,MAAMoxB,CAAA,GAAK,yBAAwBhI,SAAU,IAA7C;MACEiI,CAAA,GAAK,yBAAwBhI,UAAW,IAD1C;IAEA,MAAM0iB,QAAA,GAAWD,QAAA,GAAY,SAAQ1a,CAAE,QAAtB,GAAiC,QAAOA,CAAE,GAA3D;MACE4a,SAAA,GAAYF,QAAA,GAAY,SAAQza,CAAE,QAAtB,GAAiC,QAAOA,CAAE,GADxD;IAGA,IAAI,CAACua,QAAD,IAAa31B,QAAA,CAAShB,QAAT,GAAoB,GAApB,KAA4B,CAA7C,EAAgD;MAC9C2W,KAAA,CAAM/I,KAAN,GAAckpB,QAAd;MACAngB,KAAA,CAAM9I,MAAN,GAAekpB,SAAf;IAF8C,CAAhD,MAGO;MACLpgB,KAAA,CAAM/I,KAAN,GAAcmpB,SAAd;MACApgB,KAAA,CAAM9I,MAAN,GAAeipB,QAAf;IAFK;EAb6B;EAmBtC,IAAIF,UAAJ,EAAgB;IACd/iB,GAAA,CAAIqJ,YAAJ,CAAiB,oBAAjB,EAAuClc,QAAA,CAAShB,QAAhD;EADc;AApBhB;;;;;;;;;;;;ACt8BF,IAAApN,KAAA,GAAAC,mBAAA;AAEA,MAAM06B,iBAAN,CAAwB;EACtB9lC,YAAA,EAAc;IACZ,IAAI,KAAKA,WAAL,KAAqB8lC,iBAAzB,EAA4C;MAC1C,IAAA/nC,iBAAA,EAAY,sCAAZ;IAD0C;EADhC;EAMd4oC,UAAUC,IAAV,EAAgB;IACd,OAAO,MAAP;EADc;EAIhBxF,aAAaqG,OAAb,EAAsBC,OAAtB,EAA+B;IAC7B,OAAO,MAAP;EAD6B;EAI/BQ,sBAAsBT,OAAtB,EAA+BC,OAA/B,EAAwCS,UAAxC,EAAoDC,UAApD,EAAgE;IAC9D,OAAO,MAAP;EAD8D;EAIhEp1B,QAAQg2B,OAAA,GAAU,KAAlB,EAAyB;AAnBH;AAjBxB56C,yBAAA,GAAA03C,iBAAA;AAuCA,MAAM6D,iBAAN,CAAwB;EACtB3pC,YAAA,EAAc;IACZ,IAAI,KAAKA,WAAL,KAAqB2pC,iBAAzB,EAA4C;MAC1C,IAAA5rC,iBAAA,EAAY,sCAAZ;IAD0C;EADhC;EAMdsE,OAAO8jB,KAAP,EAAcC,MAAd,EAAsB;IACpB,IAAID,KAAA,IAAS,CAAT,IAAcC,MAAA,IAAU,CAA5B,EAA+B;MAC7B,MAAM,IAAIpoB,KAAJ,CAAU,qBAAV,CAAN;IAD6B;IAG/B,MAAMmpB,MAAA,GAAS,KAAK0iB,aAAL,CAAmB1jB,KAAnB,EAA0BC,MAA1B,CAAf;IACA,OAAO;MACLe,MADK;MAELoD,OAAA,EAASpD,MAAA,CAAOgS,UAAP,CAAkB,IAAlB;IAFJ,CAAP;EALoB;EAWtBoW,MAAMC,gBAAN,EAAwBrpB,KAAxB,EAA+BC,MAA/B,EAAuC;IACrC,IAAI,CAACopB,gBAAA,CAAiBroB,MAAtB,EAA8B;MAC5B,MAAM,IAAInpB,KAAJ,CAAU,yBAAV,CAAN;IAD4B;IAG9B,IAAImoB,KAAA,IAAS,CAAT,IAAcC,MAAA,IAAU,CAA5B,EAA+B;MAC7B,MAAM,IAAIpoB,KAAJ,CAAU,qBAAV,CAAN;IAD6B;IAG/BwxC,gBAAA,CAAiBroB,MAAjB,CAAwBhB,KAAxB,GAAgCA,KAAhC;IACAqpB,gBAAA,CAAiBroB,MAAjB,CAAwBf,MAAxB,GAAiCA,MAAjC;EARqC;EAWvCpT,QAAQw8B,gBAAR,EAA0B;IACxB,IAAI,CAACA,gBAAA,CAAiBroB,MAAtB,EAA8B;MAC5B,MAAM,IAAInpB,KAAJ,CAAU,yBAAV,CAAN;IAD4B;IAK9BwxC,gBAAA,CAAiBroB,MAAjB,CAAwBhB,KAAxB,GAAgC,CAAhC;IACAqpB,gBAAA,CAAiBroB,MAAjB,CAAwBf,MAAxB,GAAiC,CAAjC;IACAopB,gBAAA,CAAiBroB,MAAjB,GAA0B,IAA1B;IACAqoB,gBAAA,CAAiBjlB,OAAjB,GAA2B,IAA3B;EATwB;EAe1Bsf,cAAc1jB,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,IAAAroB,iBAAA,EAAY,yCAAZ;EAD2B;AA5CP;AAvCxB3P,yBAAA,GAAAu7C,iBAAA;AAwFA,MAAMe,qBAAN,CAA4B;EAC1B1qC,YAAY;IAAEzB,OAAA,GAAU,IAAZ;IAAkB0R,YAAA,GAAe;EAAjC,CAAZ,EAAqD;IACnD,IAAI,KAAKjQ,WAAL,KAAqB0qC,qBAAzB,EAAgD;MAC9C,IAAA3sC,iBAAA,EAAY,0CAAZ;IAD8C;IAGhD,KAAKQ,OAAL,GAAeA,OAAf;IACA,KAAK0R,YAAL,GAAoBA,YAApB;EALmD;EAQrD,MAAMoW,KAANA,CAAY;IAAEtmB;EAAF,CAAZ,EAAsB;IACpB,IAAI,CAAC,KAAKxB,OAAV,EAAmB;MACjB,MAAM,IAAIP,KAAJ,CACJ,iEACE,6DAFE,CAAN;IADiB;IAMnB,IAAI,CAAC+B,IAAL,EAAW;MACT,MAAM,IAAI/B,KAAJ,CAAU,8BAAV,CAAN;IADS;IAGX,MAAMI,GAAA,GAAM,KAAKG,OAAL,GAAewB,IAAf,IAAuB,KAAKkQ,YAAL,GAAoB,QAApB,GAA+B,EAA/B,CAAnC;IACA,MAAM26B,eAAA,GAAkB,KAAK36B,YAAL,GACpB3Y,yBAAA,CAAoBC,MADA,GAEpBD,yBAAA,CAAoB3H,IAFxB;IAIA,OAAO,KAAKg7C,UAAL,CAAgBvsC,GAAhB,EAAqBwsC,eAArB,EAAsCx4B,KAAtC,CAA4CjI,MAAA,IAAU;MAC3D,MAAM,IAAInM,KAAJ,CACH,kBAAiB,KAAKiS,YAAL,GAAoB,SAApB,GAAgC,EAAG,YAAW7R,GAAhE,EADI,CAAN;IAD2D,CAAtD,CAAP;EAfoB;EAyBtBusC,WAAWvsC,GAAX,EAAgBwsC,eAAhB,EAAiC;IAC/B,IAAA7sC,iBAAA,EAAY,sCAAZ;EAD+B;AAlCP;AAxF5B3P,6BAAA,GAAAs8C,qBAAA;AA+HA,MAAMI,2BAAN,CAAkC;EAChC9qC,YAAY;IAAEzB,OAAA,GAAU;EAAZ,CAAZ,EAAgC;IAC9B,IAAI,KAAKyB,WAAL,KAAqB8qC,2BAAzB,EAAsD;MACpD,IAAA/sC,iBAAA,EAAY,gDAAZ;IADoD;IAGtD,KAAKQ,OAAL,GAAeA,OAAf;EAJ8B;EAOhC,MAAM8nB,KAANA,CAAY;IAAEC;EAAF,CAAZ,EAA0B;IACxB,IAAI,CAAC,KAAK/nB,OAAV,EAAmB;MACjB,MAAM,IAAIP,KAAJ,CACJ,0EACE,sDAFE,CAAN;IADiB;IAMnB,IAAI,CAACsoB,QAAL,EAAe;MACb,MAAM,IAAItoB,KAAJ,CAAU,kCAAV,CAAN;IADa;IAGf,MAAMI,GAAA,GAAM,GAAG,KAAKG,OAAR,GAAkB+nB,QAAlB,EAAZ;IAEA,OAAO,KAAKqkB,UAAL,CAAgBvsC,GAAhB,EAAqBgU,KAArB,CAA2BjI,MAAA,IAAU;MAC1C,MAAM,IAAInM,KAAJ,CAAW,gCAA+BI,GAAhC,EAAV,CAAN;IAD0C,CAArC,CAAP;EAZwB;EAoB1BusC,WAAWvsC,GAAX,EAAgB;IACd,IAAAL,iBAAA,EAAY,sCAAZ;EADc;AA5BgB;AA/HlC3P,mCAAA,GAAA08C,2BAAA;AAgKA,MAAME,cAAN,CAAqB;EACnBhrC,YAAA,EAAc;IACZ,IAAI,KAAKA,WAAL,KAAqBgrC,cAAzB,EAAyC;MACvC,IAAAjtC,iBAAA,EAAY,mCAAZ;IADuC;EAD7B;EAMdsE,OAAO8jB,KAAP,EAAcC,MAAd,EAAsBqpB,cAAA,GAAiB,KAAvC,EAA8C;IAC5C,IAAItpB,KAAA,IAAS,CAAT,IAAcC,MAAA,IAAU,CAA5B,EAA+B;MAC7B,MAAM,IAAIpoB,KAAJ,CAAU,wBAAV,CAAN;IAD6B;IAG/B,MAAMi7B,GAAA,GAAM,KAAKgS,UAAL,CAAgB,SAAhB,CAAZ;IACAhS,GAAA,CAAIxD,YAAJ,CAAiB,SAAjB,EAA4B,KAA5B;IAEA,IAAI,CAACga,cAAL,EAAqB;MACnBxW,GAAA,CAAIxD,YAAJ,CAAiB,OAAjB,EAA0B,GAAGtP,KAAM,IAAnC;MACA8S,GAAA,CAAIxD,YAAJ,CAAiB,QAAjB,EAA2B,GAAGrP,MAAO,IAArC;IAFmB;IAKrB6S,GAAA,CAAIxD,YAAJ,CAAiB,qBAAjB,EAAwC,MAAxC;IACAwD,GAAA,CAAIxD,YAAJ,CAAiB,SAAjB,EAA6B,OAAMtP,KAAM,IAAGC,MAAhB,EAA5B;IAEA,OAAO6S,GAAP;EAf4C;EAkB9C/G,cAAc/jC,IAAd,EAAoB;IAClB,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;MAC5B,MAAM,IAAI6P,KAAJ,CAAU,0BAAV,CAAN;IAD4B;IAG9B,OAAO,KAAKitC,UAAL,CAAgB98C,IAAhB,CAAP;EAJkB;EAUpB88C,WAAW98C,IAAX,EAAiB;IACf,IAAA4P,iBAAA,EAAY,sCAAZ;EADe;AAnCE;AAhKrB3P,sBAAA,GAAA48C,cAAA;;;;;;;;;;;;ACmBA,IAAA7/B,KAAA,GAAAC,mBAAA;AAEA,MAAMskC,IAAA,GAAO,UAAb;AAEA,MAAMC,SAAA,GAAY,UAAlB;AACA,MAAMC,QAAA,GAAW,MAAjB;AAEA,MAAMtlB,cAAN,CAAqB;EACnBtqB,YAAY6vC,IAAZ,EAAkB;IAChB,KAAKC,EAAL,GAAUD,IAAA,GAAOA,IAAA,GAAO,UAAd,GAA2BH,IAArC;IACA,KAAKK,EAAL,GAAUF,IAAA,GAAOA,IAAA,GAAO,UAAd,GAA2BH,IAArC;EAFgB;EAKlB/kB,OAAO+iB,KAAP,EAAc;IACZ,IAAIxjC,IAAJ,EAAUrL,MAAV;IACA,IAAI,OAAO6uC,KAAP,KAAiB,QAArB,EAA+B;MAC7BxjC,IAAA,GAAO,IAAIpI,UAAJ,CAAe4rC,KAAA,CAAM7uC,MAAN,GAAe,CAA9B,CAAP;MACAA,MAAA,GAAS,CAAT;MACA,KAAK,IAAIuC,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKolC,KAAA,CAAM7uC,MAAtB,EAA8BuC,CAAA,GAAIkH,EAAvC,EAA2ClH,CAAA,EAA3C,EAAgD;QAC9C,MAAMjB,IAAA,GAAOutC,KAAA,CAAM3rC,UAAN,CAAiBX,CAAjB,CAAb;QACA,IAAIjB,IAAA,IAAQ,IAAZ,EAAkB;UAChB+J,IAAA,CAAKrL,MAAA,EAAL,IAAiBsB,IAAjB;QADgB,CAAlB,MAEO;UACL+J,IAAA,CAAKrL,MAAA,EAAL,IAAiBsB,IAAA,KAAS,CAA1B;UACA+J,IAAA,CAAKrL,MAAA,EAAL,IAAiBsB,IAAA,GAAO,IAAxB;QAFK;MAJuC;IAHnB,CAA/B,MAYO,IAAI,IAAA0I,mBAAA,EAAc6kC,KAAd,CAAJ,EAA0B;MAC/BxjC,IAAA,GAAOwjC,KAAA,CAAMvoC,KAAN,EAAP;MACAtG,MAAA,GAASqL,IAAA,CAAKnB,UAAd;IAF+B,CAA1B,MAGA;MACL,MAAM,IAAI/K,KAAJ,CACJ,iDACE,kCAFE,CAAN;IADK;IAOP,MAAMgyC,WAAA,GAAcnxC,MAAA,IAAU,CAA9B;IACA,MAAMoxC,UAAA,GAAapxC,MAAA,GAASmxC,WAAA,GAAc,CAA1C;IAEA,MAAME,UAAA,GAAa,IAAIxtC,WAAJ,CAAgBwH,IAAA,CAAKvH,MAArB,EAA6B,CAA7B,EAAgCqtC,WAAhC,CAAnB;IACA,IAAIG,EAAA,GAAK,CAAT;MACEC,EAAA,GAAK,CADP;IAEA,IAAIN,EAAA,GAAK,KAAKA,EAAd;MACEC,EAAA,GAAK,KAAKA,EADZ;IAEA,MAAMM,EAAA,GAAK,UAAX;MACEC,EAAA,GAAK,UADP;IAEA,MAAMC,MAAA,GAASF,EAAA,GAAKT,QAApB;MACEY,MAAA,GAASF,EAAA,GAAKV,QADhB;IAGA,KAAK,IAAIxuC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI4uC,WAApB,EAAiC5uC,CAAA,EAAjC,EAAsC;MACpC,IAAIA,CAAA,GAAI,CAAR,EAAW;QACT+uC,EAAA,GAAKD,UAAA,CAAW9uC,CAAX,CAAL;QACA+uC,EAAA,GAAOA,EAAA,GAAKE,EAAN,GAAYV,SAAb,GAA4BQ,EAAA,GAAKI,MAAN,GAAgBX,QAAhD;QACAO,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAOA,EAAA,GAAKG,EAAN,GAAYX,SAAb,GAA4BQ,EAAA,GAAKK,MAAN,GAAgBZ,QAAhD;QACAE,EAAA,IAAMK,EAAN;QACAL,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAKA,EAAA,GAAK,CAAL,GAAS,UAAd;MAPS,CAAX,MAQO;QACLM,EAAA,GAAKF,UAAA,CAAW9uC,CAAX,CAAL;QACAgvC,EAAA,GAAOA,EAAA,GAAKC,EAAN,GAAYV,SAAb,GAA4BS,EAAA,GAAKG,MAAN,GAAgBX,QAAhD;QACAQ,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAOA,EAAA,GAAKE,EAAN,GAAYX,SAAb,GAA4BS,EAAA,GAAKI,MAAN,GAAgBZ,QAAhD;QACAG,EAAA,IAAMK,EAAN;QACAL,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAKA,EAAA,GAAK,CAAL,GAAS,UAAd;MAPK;IAT6B;IAoBtCI,EAAA,GAAK,CAAL;IAEA,QAAQF,UAAR;MACE,KAAK,CAAL;QACEE,EAAA,IAAMjmC,IAAA,CAAK8lC,WAAA,GAAc,CAAd,GAAkB,CAAvB,KAA6B,EAAnC;MAEF,KAAK,CAAL;QACEG,EAAA,IAAMjmC,IAAA,CAAK8lC,WAAA,GAAc,CAAd,GAAkB,CAAvB,KAA6B,CAAnC;MAEF,KAAK,CAAL;QACEG,EAAA,IAAMjmC,IAAA,CAAK8lC,WAAA,GAAc,CAAnB,CAAN;QAGAG,EAAA,GAAOA,EAAA,GAAKE,EAAN,GAAYV,SAAb,GAA4BQ,EAAA,GAAKI,MAAN,GAAgBX,QAAhD;QACAO,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAOA,EAAA,GAAKG,EAAN,GAAYX,SAAb,GAA4BQ,EAAA,GAAKK,MAAN,GAAgBZ,QAAhD;QACA,IAAII,WAAA,GAAc,CAAlB,EAAqB;UACnBF,EAAA,IAAMK,EAAN;QADmB,CAArB,MAEO;UACLJ,EAAA,IAAMI,EAAN;QADK;IAhBX;IAqBA,KAAKL,EAAL,GAAUA,EAAV;IACA,KAAKC,EAAL,GAAUA,EAAV;EAjFY;EAoFdjlB,UAAA,EAAY;IACV,IAAIglB,EAAA,GAAK,KAAKA,EAAd;MACEC,EAAA,GAAK,KAAKA,EADZ;IAGAD,EAAA,IAAMC,EAAA,KAAO,CAAb;IACAD,EAAA,GAAOA,EAAA,GAAK,UAAN,GAAoBH,SAArB,GAAoCG,EAAA,GAAK,MAAN,GAAgBF,QAAxD;IACAG,EAAA,GACIA,EAAA,GAAK,UAAN,GAAoBJ,SAArB,GACE,CAAE,CAACI,EAAA,IAAM,EAAP,GAAcD,EAAA,KAAO,EAArB,IAA4B,UAA9B,GAA4CH,SAA5C,MAA2D,EAF/D;IAGAG,EAAA,IAAMC,EAAA,KAAO,CAAb;IACAD,EAAA,GAAOA,EAAA,GAAK,UAAN,GAAoBH,SAArB,GAAoCG,EAAA,GAAK,MAAN,GAAgBF,QAAxD;IACAG,EAAA,GACIA,EAAA,GAAK,UAAN,GAAoBJ,SAArB,GACE,CAAE,CAACI,EAAA,IAAM,EAAP,GAAcD,EAAA,KAAO,EAArB,IAA4B,UAA9B,GAA4CH,SAA5C,MAA2D,EAF/D;IAGAG,EAAA,IAAMC,EAAA,KAAO,CAAb;IAEA,OACG,CAAAD,EAAA,KAAO,CAAP,EAAUjsC,QAAX,CAAoB,EAApB,EAAwBC,QAAxB,CAAiC,CAAjC,EAAoC,GAApC,IACC,CAAAisC,EAAA,KAAO,CAAP,EAAUlsC,QAAX,CAAoB,EAApB,EAAwBC,QAAxB,CAAiC,CAAjC,EAAoC,GAApC,CAFF;EAhBU;AA1FO;AA1BrB1V,sBAAA,GAAAk8B,cAAA;;;;;;;;;;;;ACeA,IAAAnf,KAAA,GAAAC,mBAAA;AAWA,MAAMwX,UAAN,CAAiB;EACf,CAAA6tB,WAAA,GAAe,IAAIh1B,GAAJ,EAAf;EAEAzb,YAAY;IACViP,aAAA,GAAgB1L,UAAA,CAAW2L,QADjB;IAEVY,YAAA,GAAe;EAFL,CAAZ,EAGG;IACD,KAAK85B,SAAL,GAAiB36B,aAAjB;IAEA,KAAKyhC,eAAL,GAAuB,IAAIj1B,GAAJ,EAAvB;IACA,KAAK3L,YAAL,GAGM,IAHN;IAME,KAAK6gC,eAAL,GAAuB,EAAvB;IACA,KAAKC,cAAL,GAAsB,CAAtB;EAXD;EAeHC,kBAAkBC,cAAlB,EAAkC;IAChC,KAAKJ,eAAL,CAAqBh1B,GAArB,CAAyBo1B,cAAzB;IACA,KAAKlH,SAAL,CAAemH,KAAf,CAAqBr1B,GAArB,CAAyBo1B,cAAzB;EAFgC;EAKlCE,qBAAqBF,cAArB,EAAqC;IACnC,KAAKJ,eAAL,CAAqB11B,MAArB,CAA4B81B,cAA5B;IACA,KAAKlH,SAAL,CAAemH,KAAf,CAAqB/1B,MAArB,CAA4B81B,cAA5B;EAFmC;EAKrCG,WAAWC,IAAX,EAAiB;IACf,IAAI,CAAC,KAAKphC,YAAV,EAAwB;MACtB,KAAKA,YAAL,GAAoB,KAAK85B,SAAL,CAAe1X,aAAf,CAA6B,OAA7B,CAApB;MACA,KAAK0X,SAAL,CAAe0D,eAAf,CACG6D,oBADH,CACwB,MADxB,EACgC,CADhC,EAEG/e,MAFH,CAEU,KAAKtiB,YAFf;IAFsB;IAMxB,MAAMshC,UAAA,GAAa,KAAKthC,YAAL,CAAkBuhC,KAArC;IACAD,UAAA,CAAWH,UAAX,CAAsBC,IAAtB,EAA4BE,UAAA,CAAWE,QAAX,CAAoBzyC,MAAhD;EARe;EAWjBif,MAAA,EAAQ;IACN,WAAWgzB,cAAX,IAA6B,KAAKJ,eAAlC,EAAmD;MACjD,KAAK9G,SAAL,CAAemH,KAAf,CAAqB/1B,MAArB,CAA4B81B,cAA5B;IADiD;IAGnD,KAAKJ,eAAL,CAAqB5yB,KAArB;IACA,KAAK,CAAA2yB,WAAL,CAAkB3yB,KAAlB;IAEA,IAAI,KAAKhO,YAAT,EAAuB;MAErB,KAAKA,YAAL,CAAkB8Z,MAAlB;MACA,KAAK9Z,YAAL,GAAoB,IAApB;IAHqB;EAPjB;EAcR,MAAMyhC,cAANA,CAAqB7zC,IAArB,EAA2B;IACzB,IAAI,CAACA,IAAD,IAAS,KAAK,CAAA+yC,WAAL,CAAkB1vB,GAAlB,CAAsBrjB,IAAA,CAAK8zC,UAA3B,CAAb,EAAqD;MACnD;IADmD;IAGrD,IAAAvzC,YAAA,EACE,CAAC,KAAK6Q,eADR,EAEE,mEAFF;IAKA,IAAI,KAAK2iC,yBAAT,EAAoC;MAClC,MAAM;QAAED,UAAF;QAAcpkC,GAAd;QAAmB8hB;MAAnB,IAA6BxxB,IAAnC;MACA,MAAMg0C,QAAA,GAAW,IAAIC,QAAJ,CAAaH,UAAb,EAAyBpkC,GAAzB,EAA8B8hB,KAA9B,CAAjB;MACA,KAAK2hB,iBAAL,CAAuBa,QAAvB;MACA,IAAI;QACF,MAAMA,QAAA,CAASE,IAAT,EAAN;QACA,KAAK,CAAAnB,WAAL,CAAkB/0B,GAAlB,CAAsB81B,UAAtB;MAFE,CAAJ,CAGE,MAAM;QACN,IAAA1zC,UAAA,EACG,4BAA2BJ,IAAA,CAAKm0C,YAAa,sDADhD;QAIA,KAAKb,oBAAL,CAA0BU,QAA1B;MALM;MAOR;IAdkC;IAiBpC,IAAA3zC,iBAAA,EACE,+DADF;EA1ByB;EA+B3B,MAAM+nB,IAANA,CAAWH,IAAX,EAAiB;IAEf,IAAIA,IAAA,CAAKmsB,QAAL,IAAkBnsB,IAAA,CAAKosB,WAAL,IAAoB,CAACpsB,IAAA,CAAKqsB,cAAhD,EAAiE;MAC/D;IAD+D;IAGjErsB,IAAA,CAAKmsB,QAAL,GAAgB,IAAhB;IAEA,IAAInsB,IAAA,CAAKqsB,cAAT,EAAyB;MACvB,MAAM,KAAKT,cAAL,CAAoB5rB,IAAA,CAAKqsB,cAAzB,CAAN;MACA;IAFuB;IAKzB,IAAI,KAAKP,yBAAT,EAAoC;MAClC,MAAMX,cAAA,GAAiBnrB,IAAA,CAAKssB,oBAAL,EAAvB;MACA,IAAInB,cAAJ,EAAoB;QAClB,KAAKD,iBAAL,CAAuBC,cAAvB;QACA,IAAI;UACF,MAAMA,cAAA,CAAe/8B,MAArB;QADE,CAAJ,CAEE,OAAO1L,EAAP,EAAW;UACX,IAAAvK,UAAA,EAAM,wBAAuBgzC,cAAA,CAAeoB,MAAO,OAAM7pC,EAAG,IAA5D;UAGAsd,IAAA,CAAK7W,eAAL,GAAuB,IAAvB;UACA,MAAMzG,EAAN;QALW;MAJK;MAYpB;IAdkC;IAkBpC,MAAM6oC,IAAA,GAAOvrB,IAAA,CAAKwsB,kBAAL,EAAb;IACA,IAAIjB,IAAJ,EAAU;MACR,KAAKD,UAAL,CAAgBC,IAAhB;MAEA,IAAI,KAAKkB,0BAAT,EAAqC;QACnC;MADmC;MAMrC,MAAM,IAAIroC,OAAJ,CAAYC,OAAA,IAAW;QAC3B,MAAMkgC,OAAA,GAAU,KAAKmI,qBAAL,CAA2BroC,OAA3B,CAAhB;QACA,KAAKsoC,qBAAL,CAA2B3sB,IAA3B,EAAiCukB,OAAjC;MAF2B,CAAvB,CAAN;IATQ;EA/BK;EAgDjB,IAAIuH,yBAAJA,CAAA,EAAgC;IAC9B,MAAMc,QAAA,GAAW,CAAC,CAAC,KAAK3I,SAAL,EAAgBmH,KAAnC;IAQA,OAAO,IAAA7xC,YAAA,EAAO,IAAP,EAAa,2BAAb,EAA0CqzC,QAA1C,CAAP;EAT8B;EAYhC,IAAIH,0BAAJA,CAAA,EAAiC;IAK/B,IAAII,SAAA,GAAY,KAAhB;IAEE,IAAI1kD,cAAJ,EAAc;MAEZ0kD,SAAA,GAAY,IAAZ;IAFY,CAAd,MAGO,IACL,OAAOtvC,SAAP,KAAqB,WAArB,IAGA,iCAAiCipC,IAAjC,CAAsCjpC,SAAA,CAAUuvC,SAAhD,CAJK,EAKL;MAEAD,SAAA,GAAY,IAAZ;IAFA;IAKJ,OAAO,IAAAtzC,YAAA,EAAO,IAAP,EAAa,4BAAb,EAA2CszC,SAA3C,CAAP;EApB+B;EAuBjCH,sBAAsB92B,QAAtB,EAAgC;IAK9B,SAASm3B,eAATA,CAAA,EAA2B;MACzB,IAAAz0C,YAAA,EAAO,CAACisC,OAAA,CAAQ/sB,IAAhB,EAAsB,2CAAtB;MACA+sB,OAAA,CAAQ/sB,IAAR,GAAe,IAAf;MAGA,OAAOwzB,eAAA,CAAgB9xC,MAAhB,GAAyB,CAAzB,IAA8B8xC,eAAA,CAAgB,CAAhB,EAAmBxzB,IAAxD,EAA8D;QAC5D,MAAMw1B,YAAA,GAAehC,eAAA,CAAgBiC,KAAhB,EAArB;QACA10B,UAAA,CAAWy0B,YAAA,CAAap3B,QAAxB,EAAkC,CAAlC;MAF4D;IALrC;IAW3B,MAAM;MAAEo1B;IAAF,IAAsB,IAA5B;IACA,MAAMzG,OAAA,GAAU;MACd/sB,IAAA,EAAM,KADQ;MAEdtC,QAAA,EAAU63B,eAFI;MAGdn3B;IAHc,CAAhB;IAKAo1B,eAAA,CAAgBjvC,IAAhB,CAAqBwoC,OAArB;IACA,OAAOA,OAAP;EAvB8B;EA0BhC,IAAI2I,aAAJA,CAAA,EAAoB;IAOlB,MAAMC,QAAA,GAAWC,IAAA,CACf,yEACE,sEADF,GAEE,sEAFF,GAGE,sEAHF,GAIE,sEAJF,GAKE,sEALF,GAME,sEANF,GAOE,sEAPF,GAQE,sEARF,GASE,sEATF,GAUE,sEAVF,GAWE,sEAXF,GAYE,sEAZF,GAaE,sEAbF,GAcE,sEAdF,GAeE,sEAfF,GAgBE,sEAhBF,GAiBE,sEAjBF,GAkBE,sEAlBF,GAmBE,sEAnBF,GAoBE,sEApBF,GAqBE,sEAtBa,CAAjB;IAwBA,OAAO,IAAA7zC,YAAA,EAAO,IAAP,EAAa,eAAb,EAA8B4zC,QAA9B,CAAP;EA/BkB;EAkCpBR,sBAAsB3sB,IAAtB,EAA4BukB,OAA5B,EAAqC;IAWnC,SAAS8I,KAATA,CAAe9oC,IAAf,EAAqB+oC,MAArB,EAA6B;MAC3B,OACG/oC,IAAA,CAAKnI,UAAL,CAAgBkxC,MAAhB,KAA2B,EAA5B,GACC/oC,IAAA,CAAKnI,UAAL,CAAgBkxC,MAAA,GAAS,CAAzB,KAA+B,EADhC,GAEC/oC,IAAA,CAAKnI,UAAL,CAAgBkxC,MAAA,GAAS,CAAzB,KAA+B,CAFhC,GAGC/oC,IAAA,CAAKnI,UAAL,CAAgBkxC,MAAA,GAAS,CAAzB,IAA8B,IAJjC;IAD2B;IAQ7B,SAASC,YAATA,CAAsBC,CAAtB,EAAyBF,MAAzB,EAAiCrpB,MAAjC,EAAyCwpB,MAAzC,EAAiD;MAC/C,MAAMC,MAAA,GAASF,CAAA,CAAEnH,SAAF,CAAY,CAAZ,EAAeiH,MAAf,CAAf;MACA,MAAMK,MAAA,GAASH,CAAA,CAAEnH,SAAF,CAAYiH,MAAA,GAASrpB,MAArB,CAAf;MACA,OAAOypB,MAAA,GAASD,MAAT,GAAkBE,MAAzB;IAH+C;IAKjD,IAAIlyC,CAAJ,EAAOkH,EAAP;IAGA,MAAM6e,MAAA,GAAS,KAAKyiB,SAAL,CAAe1X,aAAf,CAA6B,QAA7B,CAAf;IACA/K,MAAA,CAAOhB,KAAP,GAAe,CAAf;IACAgB,MAAA,CAAOf,MAAP,GAAgB,CAAhB;IACA,MAAM8S,GAAA,GAAM/R,MAAA,CAAOgS,UAAP,CAAkB,IAAlB,CAAZ;IAEA,IAAIoa,MAAA,GAAS,CAAb;IACA,SAASC,WAATA,CAAqBzzC,IAArB,EAA2Bwb,QAA3B,EAAqC;MAEnC,IAAI,EAAEg4B,MAAF,GAAW,EAAf,EAAmB;QACjB,IAAAz1C,UAAA,EAAK,8BAAL;QACAyd,QAAA;QACA;MAHiB;MAKnB2d,GAAA,CAAIvT,IAAJ,GAAW,UAAU5lB,IAArB;MACAm5B,GAAA,CAAIua,QAAJ,CAAa,GAAb,EAAkB,CAAlB,EAAqB,EAArB;MACA,MAAMztB,SAAA,GAAYkT,GAAA,CAAIK,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,CAAlB;MACA,IAAIvT,SAAA,CAAU9b,IAAV,CAAe,CAAf,IAAoB,CAAxB,EAA2B;QACzBqR,QAAA;QACA;MAFyB;MAI3B2C,UAAA,CAAWs1B,WAAA,CAAY1tB,IAAZ,CAAiB,IAAjB,EAAuB/lB,IAAvB,EAA6Bwb,QAA7B,CAAX;IAdmC;IAiBrC,MAAMq1B,cAAA,GAAkB,KAAIvnC,IAAA,CAAK0jC,GAAL,EAAL,GAAkB,KAAK6D,cAAL,EAAlB,EAAvB;IAMA,IAAI1mC,IAAA,GAAO,KAAK2oC,aAAhB;IACA,MAAMa,cAAA,GAAiB,GAAvB;IACAxpC,IAAA,GAAOgpC,YAAA,CACLhpC,IADK,EAELwpC,cAFK,EAGL9C,cAAA,CAAe/xC,MAHV,EAIL+xC,cAJK,CAAP;IAOA,MAAM+C,mBAAA,GAAsB,EAA5B;IACA,MAAMC,UAAA,GAAa,UAAnB;IACA,IAAIC,QAAA,GAAWb,KAAA,CAAM9oC,IAAN,EAAYypC,mBAAZ,CAAf;IACA,KAAKvyC,CAAA,GAAI,CAAJ,EAAOkH,EAAA,GAAKsoC,cAAA,CAAe/xC,MAAf,GAAwB,CAAzC,EAA4CuC,CAAA,GAAIkH,EAAhD,EAAoDlH,CAAA,IAAK,CAAzD,EAA4D;MAC1DyyC,QAAA,GAAYA,QAAA,GAAWD,UAAX,GAAwBZ,KAAA,CAAMpC,cAAN,EAAsBxvC,CAAtB,CAAzB,GAAqD,CAAhE;IAD0D;IAG5D,IAAIA,CAAA,GAAIwvC,cAAA,CAAe/xC,MAAvB,EAA+B;MAE7Bg1C,QAAA,GAAYA,QAAA,GAAWD,UAAX,GAAwBZ,KAAA,CAAMpC,cAAA,GAAiB,KAAvB,EAA8BxvC,CAA9B,CAAzB,GAA6D,CAAxE;IAF6B;IAI/B8I,IAAA,GAAOgpC,YAAA,CAAahpC,IAAb,EAAmBypC,mBAAnB,EAAwC,CAAxC,EAA2C,IAAA3xC,cAAA,EAAS6xC,QAAT,CAA3C,CAAP;IAEA,MAAMz1C,GAAA,GAAO,iCAAgC01C,IAAA,CAAK5pC,IAAL,CAAW,IAAxD;IACA,MAAMgnC,IAAA,GAAQ,4BAA2BN,cAAe,SAAQxyC,GAAI,GAApE;IACA,KAAK6yC,UAAL,CAAgBC,IAAhB;IAEA,MAAM9kB,GAAA,GAAM,KAAKwd,SAAL,CAAe1X,aAAf,CAA6B,KAA7B,CAAZ;IACA9F,GAAA,CAAI8C,KAAJ,CAAUqX,UAAV,GAAuB,QAAvB;IACAna,GAAA,CAAI8C,KAAJ,CAAU/I,KAAV,GAAkBiG,GAAA,CAAI8C,KAAJ,CAAU9I,MAAV,GAAmB,MAArC;IACAgG,GAAA,CAAI8C,KAAJ,CAAUoM,QAAV,GAAqB,UAArB;IACAlP,GAAA,CAAI8C,KAAJ,CAAU4B,GAAV,GAAgB1E,GAAA,CAAI8C,KAAJ,CAAU0B,IAAV,GAAiB,KAAjC;IAEA,WAAW7wB,IAAX,IAAmB,CAAC4lB,IAAA,CAAK6rB,UAAN,EAAkBZ,cAAlB,CAAnB,EAAsD;MACpD,MAAMlC,IAAA,GAAO,KAAK9E,SAAL,CAAe1X,aAAf,CAA6B,MAA7B,CAAb;MACAwc,IAAA,CAAKhyB,WAAL,GAAmB,IAAnB;MACAgyB,IAAA,CAAKxf,KAAL,CAAW6kB,UAAX,GAAwBh0C,IAAxB;MACAqsB,GAAA,CAAIgG,MAAJ,CAAWsc,IAAX;IAJoD;IAMtD,KAAK9E,SAAL,CAAelD,IAAf,CAAoBtU,MAApB,CAA2BhG,GAA3B;IAEAonB,WAAA,CAAY5C,cAAZ,EAA4B,MAAM;MAChCxkB,GAAA,CAAIxC,MAAJ;MACAsgB,OAAA,CAAQrvB,QAAR;IAFgC,CAAlC;EA/FmC;AAtOtB;AA1BjBzsB,kBAAA,GAAAw0B,UAAA;AAuWA,MAAMiD,cAAN,CAAqB;EACnB7lB,YACEg0C,cADF,EAEE;IACEpxC,eAAA,GAAkB,IADpB;IAEEkM,eAAA,GAAkB,KAFpB;IAGEJ,YAAA,GAAe,KAHjB;IAIE8W,WAAA,GAAc;EAJhB,CAFF,EAQE;IACA,KAAKyuB,cAAL,GAAsB10C,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAtB;IAEA,WAAWjB,CAAX,IAAgB4yC,cAAhB,EAAgC;MAC9B,KAAK5yC,CAAL,IAAU4yC,cAAA,CAAe5yC,CAAf,CAAV;IAD8B;IAGhC,KAAKwB,eAAL,GAAuBA,eAAA,KAAoB,KAA3C;IACA,KAAKkM,eAAL,GAAuBA,eAAA,KAAoB,IAA3C;IACA,KAAKJ,YAAL,GAAoBA,YAAA,KAAiB,IAArC;IACA,KAAKwlC,YAAL,GAAoB1uB,WAApB;EATA;EAYFysB,qBAAA,EAAuB;IACrB,IAAI,CAAC,KAAK/nC,IAAN,IAAc,KAAK4E,eAAvB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,IAAIgiC,cAAJ;IACA,IAAI,CAAC,KAAKqD,WAAV,EAAuB;MACrBrD,cAAA,GAAiB,IAAIa,QAAJ,CAAa,KAAKH,UAAlB,EAA8B,KAAKtnC,IAAnC,EAAyC,EAAzC,CAAjB;IADqB,CAAvB,MAEO;MACL,MAAMkqC,GAAA,GAAM;QACVC,MAAA,EAAQ,KAAKF,WAAL,CAAiBG;MADf,CAAZ;MAGA,IAAI,KAAKH,WAAL,CAAiBI,WAArB,EAAkC;QAChCH,GAAA,CAAIllB,KAAJ,GAAa,WAAU,KAAKilB,WAAL,CAAiBI,WAAY,KAApD;MADgC;MAGlCzD,cAAA,GAAiB,IAAIa,QAAJ,CACf,KAAKwC,WAAL,CAAiBJ,UADF,EAEf,KAAK7pC,IAFU,EAGfkqC,GAHe,CAAjB;IAPK;IAcP,KAAKF,YAAL,GAAoB,IAApB;IACA,OAAOpD,cAAP;EAtBqB;EAyBvBqB,mBAAA,EAAqB;IACnB,IAAI,CAAC,KAAKjoC,IAAN,IAAc,KAAK4E,eAAvB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,MAAM5E,IAAA,GAAO,IAAAtJ,mBAAA,EAAc,KAAKsJ,IAAnB,CAAb;IAEA,MAAM9L,GAAA,GAAO,YAAW,KAAKo2C,QAAS,WAAUV,IAAA,CAAK5pC,IAAL,CAAW,IAA3D;IACA,IAAIgnC,IAAJ;IACA,IAAI,CAAC,KAAKiD,WAAV,EAAuB;MACrBjD,IAAA,GAAQ,4BAA2B,KAAKM,UAAW,SAAQpzC,GAAI,GAA/D;IADqB,CAAvB,MAEO;MACL,IAAIg2C,GAAA,GAAO,gBAAe,KAAKD,WAAL,CAAiBG,UAAW,GAAtD;MACA,IAAI,KAAKH,WAAL,CAAiBI,WAArB,EAAkC;QAChCH,GAAA,IAAQ,uBAAsB,KAAKD,WAAL,CAAiBI,WAAY,MAA3D;MADgC;MAGlCrD,IAAA,GAAQ,4BAA2B,KAAKiD,WAAL,CAAiBJ,UAAW,KAAIK,GAAI,OAAMh2C,GAAI,GAAjF;IALK;IAQP,KAAK81C,YAAL,GAAoB,IAApB,EAA0B91C,GAA1B;IACA,OAAO8yC,IAAP;EAnBmB;EAsBrBuD,iBAAiB38B,IAAjB,EAAuB48B,SAAvB,EAAkC;IAChC,IAAI,KAAKT,cAAL,CAAoBS,SAApB,MAAmC5zC,SAAvC,EAAkD;MAChD,OAAO,KAAKmzC,cAAL,CAAoBS,SAApB,CAAP;IADgD;IAIlD,IAAIC,IAAJ;IACA,IAAI;MACFA,IAAA,GAAO78B,IAAA,CAAKnN,GAAL,CAAS,KAAK6mC,UAAL,GAAkB,QAAlB,GAA6BkD,SAAtC,CAAP;IADE,CAAJ,CAEE,OAAOrsC,EAAP,EAAW;MACX,IAAI,CAAC,KAAKqG,YAAV,EAAwB;QACtB,MAAMrG,EAAN;MADsB;MAGxB,IAAAvK,UAAA,EAAM,2CAA0CuK,EAAG,IAAnD;MAEA,OAAQ,KAAK4rC,cAAL,CAAoBS,SAApB,IAAiC,UAAU/uC,CAAV,EAAa8W,IAAb,EAAmB,EAA5D;IANW;IAYb,IAAI,KAAK7Z,eAAL,IAAwBE,iBAAA,CAAYF,eAAxC,EAAyD;MACvD,MAAMgyC,KAAA,GAAQ,EAAd;MACA,WAAWC,OAAX,IAAsBF,IAAtB,EAA4B;QAC1B,MAAMnY,IAAA,GAAOqY,OAAA,CAAQrY,IAAR,KAAiB17B,SAAjB,GAA6B+zC,OAAA,CAAQrY,IAAR,CAAa76B,IAAb,CAAkB,GAAlB,CAA7B,GAAsD,EAAnE;QACAizC,KAAA,CAAMlzC,IAAN,CAAW,IAAX,EAAiBmzC,OAAA,CAAQjhB,GAAzB,EAA8B,GAA9B,EAAmC4I,IAAnC,EAAyC,MAAzC;MAF0B;MAK5B,OAAQ,KAAKyX,cAAL,CAAoBS,SAApB,IAAiC,IAAI7xC,QAAJ,CACvC,GADuC,EAEvC,MAFuC,EAGvC+xC,KAAA,CAAMjzC,IAAN,CAAW,EAAX,CAHuC,CAAzC;IAPuD;IAezD,OAAQ,KAAKsyC,cAAL,CAAoBS,SAApB,IAAiC,UAAU/uC,CAAV,EAAa8W,IAAb,EAAmB;MAC1D,WAAWo4B,OAAX,IAAsBF,IAAtB,EAA4B;QAC1B,IAAIE,OAAA,CAAQjhB,GAAR,KAAgB,OAApB,EAA6B;UAC3BihB,OAAA,CAAQrY,IAAR,GAAe,CAAC/f,IAAD,EAAO,CAACA,IAAR,CAAf;QAD2B;QAI7B9W,CAAA,CAAEkvC,OAAA,CAAQjhB,GAAV,EAAe1yB,KAAf,CAAqByE,CAArB,EAAwBkvC,OAAA,CAAQrY,IAAhC;MAL0B;IAD8B,CAA5D;EAnCgC;AApEf;AAvWrBpuC,sBAAA,GAAAy3B,cAAA;;;;;;;;;;;;ACgBA,IAAA6f,aAAA,GAAAt6B,mBAAA;AAMA,IAAAD,KAAA,GAAAC,mBAAA;AAEA;AAMA;AA4BA,MAAM0+B,SAAA,GAAY,SAAAA,CAAU1rC,GAAV,EAAe;EAC/B,OAAO,IAAI2L,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;IACtC,MAAM6qC,EAAA,GAAKh1B,OAAA,CAAwB,IAAxB,CAAX;IACAg1B,EAAA,CAAGC,QAAH,CAAY32C,GAAZ,EAAiB,CAAC0c,KAAD,EAAQ5Q,IAAR,KAAiB;MAChC,IAAI4Q,KAAA,IAAS,CAAC5Q,IAAd,EAAoB;QAClBD,MAAA,CAAO,IAAIjM,KAAJ,CAAU8c,KAAV,CAAP;QACA;MAFkB;MAIpB9Q,OAAA,CAAQ,IAAIlI,UAAJ,CAAeoI,IAAf,CAAR;IALgC,CAAlC;EAFsC,CAAjC,CAAP;AAD+B,CAAjC;AAaA,MAAM4C,iBAAN,SAAgCg5B,+BAAhC,CAAkD;AAvElD13C,yBAAA,GAAA0e,iBAAA;AAyEA,MAAMN,iBAAN,SAAgCm9B,+BAAhC,CAAkD;EAIhDE,cAAc1jB,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,MAAM4uB,MAAA,GAASl1B,OAAA,CAAwB,QAAxB,CAAf;IACA,OAAOk1B,MAAA,CAAOC,YAAP,CAAoB9uB,KAApB,EAA2BC,MAA3B,CAAP;EAF2B;AAJmB;AAzElDh4B,yBAAA,GAAAoe,iBAAA;AAmFA,MAAMG,qBAAN,SAAoC+9B,mCAApC,CAA0D;EAIxDC,WAAWvsC,GAAX,EAAgBwsC,eAAhB,EAAiC;IAC/B,OAAOd,SAAA,CAAU1rC,GAAV,EAAeyS,IAAf,CAAoB3G,IAAA,IAAQ;MACjC,OAAO;QAAE2gC,QAAA,EAAU3gC,IAAZ;QAAkB0gC;MAAlB,CAAP;IADiC,CAA5B,CAAP;EAD+B;AAJuB;AAnF1Dx8C,6BAAA,GAAAue,qBAAA;AA8FA,MAAMM,2BAAN,SAA0C69B,yCAA1C,CAAsE;EAIpEH,WAAWvsC,GAAX,EAAgB;IACd,OAAO0rC,SAAA,CAAU1rC,GAAV,CAAP;EADc;AAJoD;AA9FtEhQ,mCAAA,GAAA6e,2BAAA;;;;;;;;;;;;ACeA,IAAA9B,KAAA,GAAAC,mBAAA;AAcA,IAAAE,cAAA,GAAAF,mBAAA;AAKA,IAAA8pC,eAAA,GAAA9pC,mBAAA;AAKA,IAAA+pC,YAAA,GAAA/pC,mBAAA;AAKA,MAAMgqC,aAAA,GAAgB,EAAtB;AAEA,MAAMC,aAAA,GAAgB,GAAtB;AACA,MAAMC,cAAA,GAAiB,IAAvB;AAIA,MAAMC,cAAA,GAAiB,EAAvB;AAEA,MAAMC,eAAA,GAAkB,EAAxB;AAGA,MAAMC,mBAAA,GAAsB,IAA5B;AAEA,MAAMC,iBAAA,GAAoB,EAA1B;AAgBA,SAASC,uBAATA,CAAiCzc,GAAjC,EAAsC0c,OAAtC,EAA+C;EAC7C,IAAI1c,GAAA,CAAI2c,gBAAR,EAA0B;IACxB,MAAM,IAAI73C,KAAJ,CAAU,2CAAV,CAAN;EADwB;EAG1Bk7B,GAAA,CAAI4c,cAAJ,GAAqB5c,GAAA,CAAIhhC,IAAzB;EACAghC,GAAA,CAAI6c,iBAAJ,GAAwB7c,GAAA,CAAI/gC,OAA5B;EACA+gC,GAAA,CAAI8c,gBAAJ,GAAuB9c,GAAA,CAAIhhB,MAA3B;EACAghB,GAAA,CAAI+c,eAAJ,GAAsB/c,GAAA,CAAI5gB,KAA1B;EACA4gB,GAAA,CAAIgd,mBAAJ,GAA0Bhd,GAAA,CAAIhJ,SAA9B;EACAgJ,GAAA,CAAIid,mBAAJ,GAA0Bjd,GAAA,CAAI9gC,SAA9B;EACA8gC,GAAA,CAAIkd,sBAAJ,GAA6Bld,GAAA,CAAImd,YAAjC;EACAnd,GAAA,CAAIod,wBAAJ,GAA+Bpd,GAAA,CAAIqd,cAAnC;EACArd,GAAA,CAAIsd,cAAJ,GAAqBtd,GAAA,CAAI7/B,IAAzB;EACA6/B,GAAA,CAAIud,gBAAJ,GAAuBvd,GAAA,CAAI7gC,MAA3B;EACA6gC,GAAA,CAAIwd,gBAAJ,GAAuBxd,GAAA,CAAI5gC,MAA3B;EACA4gC,GAAA,CAAIyd,uBAAJ,GAA8Bzd,GAAA,CAAI0d,aAAlC;EACA1d,GAAA,CAAI2d,cAAJ,GAAqB3d,GAAA,CAAIhzB,IAAzB;EACAgzB,GAAA,CAAI4d,mBAAJ,GAA0B5d,GAAA,CAAIxgC,SAA9B;EACAwgC,GAAA,CAAI6d,mBAAJ,GAA0B7d,GAAA,CAAI8d,SAA9B;EAEA9d,GAAA,CAAI2c,gBAAJ,GAAuB,MAAM;IAC3B3c,GAAA,CAAIhhC,IAAJ,GAAWghC,GAAA,CAAI4c,cAAf;IACA5c,GAAA,CAAI/gC,OAAJ,GAAc+gC,GAAA,CAAI6c,iBAAlB;IACA7c,GAAA,CAAIhhB,MAAJ,GAAaghB,GAAA,CAAI8c,gBAAjB;IACA9c,GAAA,CAAI5gB,KAAJ,GAAY4gB,GAAA,CAAI+c,eAAhB;IACA/c,GAAA,CAAIhJ,SAAJ,GAAgBgJ,GAAA,CAAIgd,mBAApB;IACAhd,GAAA,CAAI9gC,SAAJ,GAAgB8gC,GAAA,CAAIid,mBAApB;IACAjd,GAAA,CAAImd,YAAJ,GAAmBnd,GAAA,CAAIkd,sBAAvB;IACAld,GAAA,CAAIqd,cAAJ,GAAqBrd,GAAA,CAAIod,wBAAzB;IAEApd,GAAA,CAAI7/B,IAAJ,GAAW6/B,GAAA,CAAIsd,cAAf;IACAtd,GAAA,CAAI7gC,MAAJ,GAAa6gC,GAAA,CAAIud,gBAAjB;IACAvd,GAAA,CAAI5gC,MAAJ,GAAa4gC,GAAA,CAAIwd,gBAAjB;IACAxd,GAAA,CAAI0d,aAAJ,GAAoB1d,GAAA,CAAIyd,uBAAxB;IACAzd,GAAA,CAAIhzB,IAAJ,GAAWgzB,GAAA,CAAI2d,cAAf;IACA3d,GAAA,CAAIxgC,SAAJ,GAAgBwgC,GAAA,CAAI4d,mBAApB;IACA5d,GAAA,CAAI8d,SAAJ,GAAgB9d,GAAA,CAAI6d,mBAApB;IACA,OAAO7d,GAAA,CAAI2c,gBAAX;EAjB2B,CAA7B;EAoBA3c,GAAA,CAAIhhC,IAAJ,GAAW,SAAS++C,OAATA,CAAA,EAAmB;IAC5BrB,OAAA,CAAQ19C,IAAR;IACA,KAAK49C,cAAL;EAF4B,CAA9B;EAKA5c,GAAA,CAAI/gC,OAAJ,GAAc,SAAS++C,UAATA,CAAA,EAAsB;IAClCtB,OAAA,CAAQz9C,OAAR;IACA,KAAK49C,iBAAL;EAFkC,CAApC;EAKA7c,GAAA,CAAIhJ,SAAJ,GAAgB,SAASinB,YAATA,CAAsBhqB,CAAtB,EAAyBC,CAAzB,EAA4B;IAC1CwoB,OAAA,CAAQ1lB,SAAR,CAAkB/C,CAAlB,EAAqBC,CAArB;IACA,KAAK8oB,mBAAL,CAAyB/oB,CAAzB,EAA4BC,CAA5B;EAF0C,CAA5C;EAKA8L,GAAA,CAAI5gB,KAAJ,GAAY,SAAS8+B,QAATA,CAAkBjqB,CAAlB,EAAqBC,CAArB,EAAwB;IAClCwoB,OAAA,CAAQt9B,KAAR,CAAc6U,CAAd,EAAiBC,CAAjB;IACA,KAAK6oB,eAAL,CAAqB9oB,CAArB,EAAwBC,CAAxB;EAFkC,CAApC;EAKA8L,GAAA,CAAI9gC,SAAJ,GAAgB,SAASi/C,YAATA,CAAsB3xC,CAAtB,EAAyBvB,CAAzB,EAA4BwB,CAA5B,EAA+BZ,CAA/B,EAAkCitB,CAAlC,EAAqC6c,CAArC,EAAwC;IACtD+G,OAAA,CAAQx9C,SAAR,CAAkBsN,CAAlB,EAAqBvB,CAArB,EAAwBwB,CAAxB,EAA2BZ,CAA3B,EAA8BitB,CAA9B,EAAiC6c,CAAjC;IACA,KAAKsH,mBAAL,CAAyBzwC,CAAzB,EAA4BvB,CAA5B,EAA+BwB,CAA/B,EAAkCZ,CAAlC,EAAqCitB,CAArC,EAAwC6c,CAAxC;EAFsD,CAAxD;EAKA3V,GAAA,CAAImd,YAAJ,GAAmB,SAASiB,eAATA,CAAyB5xC,CAAzB,EAA4BvB,CAA5B,EAA+BwB,CAA/B,EAAkCZ,CAAlC,EAAqCitB,CAArC,EAAwC6c,CAAxC,EAA2C;IAC5D+G,OAAA,CAAQS,YAAR,CAAqB3wC,CAArB,EAAwBvB,CAAxB,EAA2BwB,CAA3B,EAA8BZ,CAA9B,EAAiCitB,CAAjC,EAAoC6c,CAApC;IACA,KAAKuH,sBAAL,CAA4B1wC,CAA5B,EAA+BvB,CAA/B,EAAkCwB,CAAlC,EAAqCZ,CAArC,EAAwCitB,CAAxC,EAA2C6c,CAA3C;EAF4D,CAA9D;EAKA3V,GAAA,CAAIqd,cAAJ,GAAqB,SAASgB,iBAATA,CAAA,EAA6B;IAChD3B,OAAA,CAAQW,cAAR;IACA,KAAKD,wBAAL;EAFgD,CAAlD;EAKApd,GAAA,CAAIhhB,MAAJ,GAAa,SAASs/B,SAATA,CAAmBxmB,KAAnB,EAA0B;IACrC4kB,OAAA,CAAQ19B,MAAR,CAAe8Y,KAAf;IACA,KAAKglB,gBAAL,CAAsBhlB,KAAtB;EAFqC,CAAvC;EAKAkI,GAAA,CAAI7/B,IAAJ,GAAW,SAASm+C,SAATA,CAAmBtG,IAAnB,EAAyB;IAClC0E,OAAA,CAAQv8C,IAAR,CAAa63C,IAAb;IACA,KAAKsF,cAAL,CAAoBtF,IAApB;EAFkC,CAApC;EAKAhY,GAAA,CAAI7gC,MAAJ,GAAa,UAAU80B,CAAV,EAAaC,CAAb,EAAgB;IAC3BwoB,OAAA,CAAQv9C,MAAR,CAAe80B,CAAf,EAAkBC,CAAlB;IACA,KAAKqpB,gBAAL,CAAsBtpB,CAAtB,EAAyBC,CAAzB;EAF2B,CAA7B;EAKA8L,GAAA,CAAI5gC,MAAJ,GAAa,UAAU60B,CAAV,EAAaC,CAAb,EAAgB;IAC3BwoB,OAAA,CAAQt9C,MAAR,CAAe60B,CAAf,EAAkBC,CAAlB;IACA,KAAKspB,gBAAL,CAAsBvpB,CAAtB,EAAyBC,CAAzB;EAF2B,CAA7B;EAKA8L,GAAA,CAAI0d,aAAJ,GAAoB,UAAUa,IAAV,EAAgBC,IAAhB,EAAsBC,IAAtB,EAA4BC,IAA5B,EAAkCzqB,CAAlC,EAAqCC,CAArC,EAAwC;IAC1DwoB,OAAA,CAAQgB,aAAR,CAAsBa,IAAtB,EAA4BC,IAA5B,EAAkCC,IAAlC,EAAwCC,IAAxC,EAA8CzqB,CAA9C,EAAiDC,CAAjD;IACA,KAAKupB,uBAAL,CAA6Bc,IAA7B,EAAmCC,IAAnC,EAAyCC,IAAzC,EAA+CC,IAA/C,EAAqDzqB,CAArD,EAAwDC,CAAxD;EAF0D,CAA5D;EAKA8L,GAAA,CAAIhzB,IAAJ,GAAW,UAAUinB,CAAV,EAAaC,CAAb,EAAgBjH,KAAhB,EAAuBC,MAAvB,EAA+B;IACxCwvB,OAAA,CAAQ1vC,IAAR,CAAainB,CAAb,EAAgBC,CAAhB,EAAmBjH,KAAnB,EAA0BC,MAA1B;IACA,KAAKywB,cAAL,CAAoB1pB,CAApB,EAAuBC,CAAvB,EAA0BjH,KAA1B,EAAiCC,MAAjC;EAFwC,CAA1C;EAKA8S,GAAA,CAAIxgC,SAAJ,GAAgB,YAAY;IAC1Bk9C,OAAA,CAAQl9C,SAAR;IACA,KAAKo+C,mBAAL;EAF0B,CAA5B;EAKA5d,GAAA,CAAI8d,SAAJ,GAAgB,YAAY;IAC1BpB,OAAA,CAAQoB,SAAR;IACA,KAAKD,mBAAL;EAF0B,CAA5B;AA9G6C;AAoH/C,MAAMc,cAAN,CAAqB;EACnB73C,YAAY4P,aAAZ,EAA2B;IACzB,KAAKA,aAAL,GAAqBA,aAArB;IACA,KAAKmpB,KAAL,GAAax5B,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAb;EAFyB;EAK3By1C,UAAUpiC,EAAV,EAAcyQ,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,IAAI2xB,WAAJ;IACA,IAAI,KAAKhf,KAAL,CAAWrjB,EAAX,MAAmB5U,SAAvB,EAAkC;MAChCi3C,WAAA,GAAc,KAAKhf,KAAL,CAAWrjB,EAAX,CAAd;MACA,KAAK9F,aAAL,CAAmB2/B,KAAnB,CAAyBwI,WAAzB,EAAsC5xB,KAAtC,EAA6CC,MAA7C;IAFgC,CAAlC,MAGO;MACL2xB,WAAA,GAAc,KAAKnoC,aAAL,CAAmBvN,MAAnB,CAA0B8jB,KAA1B,EAAiCC,MAAjC,CAAd;MACA,KAAK2S,KAAL,CAAWrjB,EAAX,IAAiBqiC,WAAjB;IAFK;IAIP,OAAOA,WAAP;EAT2B;EAY7B/8B,OAAOtF,EAAP,EAAW;IACT,OAAO,KAAKqjB,KAAL,CAAWrjB,EAAX,CAAP;EADS;EAIXoI,MAAA,EAAQ;IACN,WAAWpI,EAAX,IAAiB,KAAKqjB,KAAtB,EAA6B;MAC3B,MAAMgf,WAAA,GAAc,KAAKhf,KAAL,CAAWrjB,EAAX,CAApB;MACA,KAAK9F,aAAL,CAAmBoD,OAAnB,CAA2B+kC,WAA3B;MACA,OAAO,KAAKhf,KAAL,CAAWrjB,EAAX,CAAP;IAH2B;EADvB;AAtBW;AA+BrB,SAASsiC,wBAATA,CACE9e,GADF,EAEE+e,MAFF,EAGEC,IAHF,EAIEC,IAJF,EAKEC,IALF,EAMEC,IANF,EAOEC,KAPF,EAQEC,KARF,EASEC,KATF,EAUEC,KAVF,EAWE;EACA,MAAM,CAAC/yC,CAAD,EAAIvB,CAAJ,EAAOwB,CAAP,EAAUZ,CAAV,EAAagrB,EAAb,EAAiBC,EAAjB,IAAuB,IAAA4e,kCAAA,EAAoB1V,GAApB,CAA7B;EACA,IAAI/0B,CAAA,KAAM,CAAN,IAAWwB,CAAA,KAAM,CAArB,EAAwB;IAWtB,MAAM+yC,GAAA,GAAMJ,KAAA,GAAQ5yC,CAAR,GAAYqqB,EAAxB;IACA,MAAM4oB,IAAA,GAAOr3C,IAAA,CAAKiwB,KAAL,CAAWmnB,GAAX,CAAb;IACA,MAAME,GAAA,GAAML,KAAA,GAAQxzC,CAAR,GAAYirB,EAAxB;IACA,MAAM6oB,IAAA,GAAOv3C,IAAA,CAAKiwB,KAAL,CAAWqnB,GAAX,CAAb;IACA,MAAME,GAAA,GAAO,CAAAR,KAAA,GAAQE,KAAR,IAAiB9yC,CAAlB,GAAsBqqB,EAAlC;IAIA,MAAMgpB,MAAA,GAASz3C,IAAA,CAAKoG,GAAL,CAASpG,IAAA,CAAKiwB,KAAL,CAAWunB,GAAX,IAAkBH,IAA3B,KAAoC,CAAnD;IACA,MAAMK,GAAA,GAAO,CAAAT,KAAA,GAAQE,KAAR,IAAiB1zC,CAAlB,GAAsBirB,EAAlC;IACA,MAAMipB,OAAA,GAAU33C,IAAA,CAAKoG,GAAL,CAASpG,IAAA,CAAKiwB,KAAL,CAAWynB,GAAX,IAAkBH,IAA3B,KAAoC,CAApD;IAKA3f,GAAA,CAAImd,YAAJ,CAAiB/0C,IAAA,CAAK43C,IAAL,CAAUxzC,CAAV,CAAjB,EAA+B,CAA/B,EAAkC,CAAlC,EAAqCpE,IAAA,CAAK43C,IAAL,CAAUn0C,CAAV,CAArC,EAAmD4zC,IAAnD,EAAyDE,IAAzD;IACA3f,GAAA,CAAII,SAAJ,CAAc2e,MAAd,EAAsBC,IAAtB,EAA4BC,IAA5B,EAAkCC,IAAlC,EAAwCC,IAAxC,EAA8C,CAA9C,EAAiD,CAAjD,EAAoDU,MAApD,EAA4DE,OAA5D;IACA/f,GAAA,CAAImd,YAAJ,CAAiB3wC,CAAjB,EAAoBvB,CAApB,EAAuBwB,CAAvB,EAA0BZ,CAA1B,EAA6BgrB,EAA7B,EAAiCC,EAAjC;IAEA,OAAO,CAAC+oB,MAAD,EAASE,OAAT,CAAP;EA9BsB;EAiCxB,IAAIvzC,CAAA,KAAM,CAAN,IAAWX,CAAA,KAAM,CAArB,EAAwB;IAEtB,MAAM2zC,GAAA,GAAMH,KAAA,GAAQ5yC,CAAR,GAAYoqB,EAAxB;IACA,MAAM4oB,IAAA,GAAOr3C,IAAA,CAAKiwB,KAAL,CAAWmnB,GAAX,CAAb;IACA,MAAME,GAAA,GAAMN,KAAA,GAAQn0C,CAAR,GAAY6rB,EAAxB;IACA,MAAM6oB,IAAA,GAAOv3C,IAAA,CAAKiwB,KAAL,CAAWqnB,GAAX,CAAb;IACA,MAAME,GAAA,GAAO,CAAAP,KAAA,GAAQE,KAAR,IAAiB9yC,CAAlB,GAAsBoqB,EAAlC;IACA,MAAMgpB,MAAA,GAASz3C,IAAA,CAAKoG,GAAL,CAASpG,IAAA,CAAKiwB,KAAL,CAAWunB,GAAX,IAAkBH,IAA3B,KAAoC,CAAnD;IACA,MAAMK,GAAA,GAAO,CAAAV,KAAA,GAAQE,KAAR,IAAiBr0C,CAAlB,GAAsB6rB,EAAlC;IACA,MAAMipB,OAAA,GAAU33C,IAAA,CAAKoG,GAAL,CAASpG,IAAA,CAAKiwB,KAAL,CAAWynB,GAAX,IAAkBH,IAA3B,KAAoC,CAApD;IAEA3f,GAAA,CAAImd,YAAJ,CAAiB,CAAjB,EAAoB/0C,IAAA,CAAK43C,IAAL,CAAU/0C,CAAV,CAApB,EAAkC7C,IAAA,CAAK43C,IAAL,CAAUvzC,CAAV,CAAlC,EAAgD,CAAhD,EAAmDgzC,IAAnD,EAAyDE,IAAzD;IACA3f,GAAA,CAAII,SAAJ,CAAc2e,MAAd,EAAsBC,IAAtB,EAA4BC,IAA5B,EAAkCC,IAAlC,EAAwCC,IAAxC,EAA8C,CAA9C,EAAiD,CAAjD,EAAoDY,OAApD,EAA6DF,MAA7D;IACA7f,GAAA,CAAImd,YAAJ,CAAiB3wC,CAAjB,EAAoBvB,CAApB,EAAuBwB,CAAvB,EAA0BZ,CAA1B,EAA6BgrB,EAA7B,EAAiCC,EAAjC;IAEA,OAAO,CAACipB,OAAD,EAAUF,MAAV,CAAP;EAfsB;EAmBxB7f,GAAA,CAAII,SAAJ,CAAc2e,MAAd,EAAsBC,IAAtB,EAA4BC,IAA5B,EAAkCC,IAAlC,EAAwCC,IAAxC,EAA8CC,KAA9C,EAAqDC,KAArD,EAA4DC,KAA5D,EAAmEC,KAAnE;EAEA,MAAMU,MAAA,GAAS73C,IAAA,CAAKk0B,KAAL,CAAW9vB,CAAX,EAAcvB,CAAd,CAAf;EACA,MAAMi1C,MAAA,GAAS93C,IAAA,CAAKk0B,KAAL,CAAW7vB,CAAX,EAAcZ,CAAd,CAAf;EACA,OAAO,CAACo0C,MAAA,GAASX,KAAV,EAAiBY,MAAA,GAASX,KAA1B,CAAP;AA1DA;AA6DF,SAASY,iBAATA,CAA2BC,OAA3B,EAAoC;EAClC,MAAM;IAAEnzB,KAAF;IAASC;EAAT,IAAoBkzB,OAA1B;EACA,IAAInzB,KAAA,GAAQsvB,mBAAR,IAA+BrvB,MAAA,GAASqvB,mBAA5C,EAAiE;IAC/D,OAAO,IAAP;EAD+D;EAIjE,MAAM8D,sBAAA,GAAyB,IAA/B;EACA,MAAMC,WAAA,GAAc,IAAI13C,UAAJ,CAAe,CACjC,CADiC,EAC9B,CAD8B,EAC3B,CAD2B,EACxB,CADwB,EACrB,CADqB,EAClB,CADkB,EACf,CADe,EACZ,CADY,EACT,CADS,EACN,EADM,EACF,CADE,EACC,CADD,EACI,CADJ,EACO,CADP,EACU,CADV,EACa,CADb,CAAf,CAApB;EAIA,MAAM23C,MAAA,GAAStzB,KAAA,GAAQ,CAAvB;EACA,IAAIuzB,MAAA,GAAS,IAAI53C,UAAJ,CAAe23C,MAAA,IAAUrzB,MAAA,GAAS,CAAT,CAAzB,CAAb;EACA,IAAIhlB,CAAJ,EAAOuG,CAAP,EAAUgyC,EAAV;EAGA,MAAMC,QAAA,GAAYzzB,KAAA,GAAQ,CAAT,GAAc,CAAC,CAAhC;EACA,IAAIjc,IAAA,GAAO,IAAIpI,UAAJ,CAAe83C,QAAA,GAAWxzB,MAA1B,CAAX;IACEyzB,GAAA,GAAM,CADR;EAEA,WAAWC,IAAX,IAAmBR,OAAA,CAAQpvC,IAA3B,EAAiC;IAC/B,IAAI6vC,IAAA,GAAO,GAAX;IACA,OAAOA,IAAA,GAAO,CAAd,EAAiB;MACf7vC,IAAA,CAAK2vC,GAAA,EAAL,IAAcC,IAAA,GAAOC,IAAP,GAAc,CAAd,GAAkB,GAAhC;MACAA,IAAA,KAAS,CAAT;IAFe;EAFc;EAkBjC,IAAIC,KAAA,GAAQ,CAAZ;EACAH,GAAA,GAAM,CAAN;EACA,IAAI3vC,IAAA,CAAK2vC,GAAL,MAAc,CAAlB,EAAqB;IACnBH,MAAA,CAAO,CAAP,IAAY,CAAZ;IACA,EAAEM,KAAF;EAFmB;EAIrB,KAAKryC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIwe,KAAhB,EAAuBxe,CAAA,EAAvB,EAA4B;IAC1B,IAAIuC,IAAA,CAAK2vC,GAAL,MAAc3vC,IAAA,CAAK2vC,GAAA,GAAM,CAAX,CAAlB,EAAiC;MAC/BH,MAAA,CAAO/xC,CAAP,IAAYuC,IAAA,CAAK2vC,GAAL,IAAY,CAAZ,GAAgB,CAA5B;MACA,EAAEG,KAAF;IAF+B;IAIjCH,GAAA;EAL0B;EAO5B,IAAI3vC,IAAA,CAAK2vC,GAAL,MAAc,CAAlB,EAAqB;IACnBH,MAAA,CAAO/xC,CAAP,IAAY,CAAZ;IACA,EAAEqyC,KAAF;EAFmB;EAIrB,KAAK54C,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIglB,MAAhB,EAAwBhlB,CAAA,EAAxB,EAA6B;IAC3By4C,GAAA,GAAMz4C,CAAA,GAAIw4C,QAAV;IACAD,EAAA,GAAKv4C,CAAA,GAAIq4C,MAAT;IACA,IAAIvvC,IAAA,CAAK2vC,GAAA,GAAMD,QAAX,MAAyB1vC,IAAA,CAAK2vC,GAAL,CAA7B,EAAwC;MACtCH,MAAA,CAAOC,EAAP,IAAazvC,IAAA,CAAK2vC,GAAL,IAAY,CAAZ,GAAgB,CAA7B;MACA,EAAEG,KAAF;IAFsC;IAMxC,IAAIC,GAAA,GAAO,CAAA/vC,IAAA,CAAK2vC,GAAL,IAAY,CAAZ,GAAgB,CAAhB,KAAsB3vC,IAAA,CAAK2vC,GAAA,GAAMD,QAAX,IAAuB,CAAvB,GAA2B,CAA3B,CAAjC;IACA,KAAKjyC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIwe,KAAhB,EAAuBxe,CAAA,EAAvB,EAA4B;MAC1BsyC,GAAA,GACG,CAAAA,GAAA,IAAO,CAAP,KACA/vC,IAAA,CAAK2vC,GAAA,GAAM,CAAX,IAAgB,CAAhB,GAAoB,CAApB,CADD,IAEC3vC,IAAA,CAAK2vC,GAAA,GAAMD,QAAN,GAAiB,CAAtB,IAA2B,CAA3B,GAA+B,CAA/B,CAHH;MAIA,IAAIJ,WAAA,CAAYS,GAAZ,CAAJ,EAAsB;QACpBP,MAAA,CAAOC,EAAA,GAAKhyC,CAAZ,IAAiB6xC,WAAA,CAAYS,GAAZ,CAAjB;QACA,EAAED,KAAF;MAFoB;MAItBH,GAAA;IAT0B;IAW5B,IAAI3vC,IAAA,CAAK2vC,GAAA,GAAMD,QAAX,MAAyB1vC,IAAA,CAAK2vC,GAAL,CAA7B,EAAwC;MACtCH,MAAA,CAAOC,EAAA,GAAKhyC,CAAZ,IAAiBuC,IAAA,CAAK2vC,GAAL,IAAY,CAAZ,GAAgB,CAAjC;MACA,EAAEG,KAAF;IAFsC;IAKxC,IAAIA,KAAA,GAAQT,sBAAZ,EAAoC;MAClC,OAAO,IAAP;IADkC;EA1BT;EA+B7BM,GAAA,GAAMD,QAAA,IAAYxzB,MAAA,GAAS,CAAT,CAAlB;EACAuzB,EAAA,GAAKv4C,CAAA,GAAIq4C,MAAT;EACA,IAAIvvC,IAAA,CAAK2vC,GAAL,MAAc,CAAlB,EAAqB;IACnBH,MAAA,CAAOC,EAAP,IAAa,CAAb;IACA,EAAEK,KAAF;EAFmB;EAIrB,KAAKryC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIwe,KAAhB,EAAuBxe,CAAA,EAAvB,EAA4B;IAC1B,IAAIuC,IAAA,CAAK2vC,GAAL,MAAc3vC,IAAA,CAAK2vC,GAAA,GAAM,CAAX,CAAlB,EAAiC;MAC/BH,MAAA,CAAOC,EAAA,GAAKhyC,CAAZ,IAAiBuC,IAAA,CAAK2vC,GAAL,IAAY,CAAZ,GAAgB,CAAjC;MACA,EAAEG,KAAF;IAF+B;IAIjCH,GAAA;EAL0B;EAO5B,IAAI3vC,IAAA,CAAK2vC,GAAL,MAAc,CAAlB,EAAqB;IACnBH,MAAA,CAAOC,EAAA,GAAKhyC,CAAZ,IAAiB,CAAjB;IACA,EAAEqyC,KAAF;EAFmB;EAIrB,IAAIA,KAAA,GAAQT,sBAAZ,EAAoC;IAClC,OAAO,IAAP;EADkC;EAKpC,MAAMW,KAAA,GAAQ,IAAIC,UAAJ,CAAe,CAAC,CAAD,EAAIV,MAAJ,EAAY,CAAC,CAAb,EAAgB,CAAhB,EAAmB,CAACA,MAApB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC,CAAf,CAAd;EACA,MAAMW,IAAA,GAAO,IAAIC,MAAJ,EAAb;EAEA,KAAKj5C,CAAA,GAAI,CAAT,EAAY44C,KAAA,IAAS54C,CAAA,IAAKglB,MAA1B,EAAkChlB,CAAA,EAAlC,EAAuC;IACrC,IAAIsD,CAAA,GAAItD,CAAA,GAAIq4C,MAAZ;IACA,MAAMplC,GAAA,GAAM3P,CAAA,GAAIyhB,KAAhB;IACA,OAAOzhB,CAAA,GAAI2P,GAAJ,IAAW,CAACqlC,MAAA,CAAOh1C,CAAP,CAAnB,EAA8B;MAC5BA,CAAA;IAD4B;IAG9B,IAAIA,CAAA,KAAM2P,GAAV,EAAe;MACb;IADa;IAGf+lC,IAAA,CAAK/hD,MAAL,CAAYqM,CAAA,GAAI+0C,MAAhB,EAAwBr4C,CAAxB;IAEA,MAAMk5C,EAAA,GAAK51C,CAAX;IACA,IAAIvW,IAAA,GAAOurD,MAAA,CAAOh1C,CAAP,CAAX;IACA,GAAG;MACD,MAAMikC,IAAA,GAAOuR,KAAA,CAAM/rD,IAAN,CAAb;MACA,GAAG;QACDuW,CAAA,IAAKikC,IAAL;MADC,CAAH,QAES,CAAC+Q,MAAA,CAAOh1C,CAAP,CAFV;MAIA,MAAM61C,EAAA,GAAKb,MAAA,CAAOh1C,CAAP,CAAX;MACA,IAAI61C,EAAA,KAAO,CAAP,IAAYA,EAAA,KAAO,EAAvB,EAA2B;QAEzBpsD,IAAA,GAAOosD,EAAP;QAEAb,MAAA,CAAOh1C,CAAP,IAAY,CAAZ;MAJyB,CAA3B,MAKO;QAGLvW,IAAA,GAAOosD,EAAA,GAAO,OAAOpsD,IAAR,IAAiB,CAA9B;QAEAurD,MAAA,CAAOh1C,CAAP,KAAcvW,IAAA,IAAQ,CAAT,GAAeA,IAAA,IAAQ,CAApC;MALK;MAOPisD,IAAA,CAAK9hD,MAAL,CAAYoM,CAAA,GAAI+0C,MAAhB,EAAyB/0C,CAAA,GAAI+0C,MAAL,GAAe,CAAvC;MAEA,IAAI,CAACC,MAAA,CAAOh1C,CAAP,CAAL,EAAgB;QACd,EAAEs1C,KAAF;MADc;IArBf,CAAH,QAwBSM,EAAA,KAAO51C,CAxBhB;IAyBA,EAAEtD,CAAF;EAtCqC;EA0CvC8I,IAAA,GAAO,IAAP;EACAwvC,MAAA,GAAS,IAAT;EAEA,MAAMc,WAAA,GAAc,SAAAA,CAAU70C,CAAV,EAAa;IAC/BA,CAAA,CAAEzN,IAAF;IAEAyN,CAAA,CAAE2S,KAAF,CAAQ,IAAI6N,KAAZ,EAAmB,CAAC,CAAD,GAAKC,MAAxB;IACAzgB,CAAA,CAAEuqB,SAAF,CAAY,CAAZ,EAAe,CAAC9J,MAAhB;IACAzgB,CAAA,CAAE7M,IAAF,CAAOshD,IAAP;IACAz0C,CAAA,CAAEqxC,SAAF;IACArxC,CAAA,CAAExN,OAAF;EAP+B,CAAjC;EAUA,OAAOqiD,WAAP;AArKkC;AAwKpC,MAAMC,gBAAN,CAAuB;EACrBz6C,YAAYmmB,KAAZ,EAAmBC,MAAnB,EAA2B;IAEzB,KAAKs0B,YAAL,GAAoB,KAApB;IACA,KAAKC,QAAL,GAAgB,CAAhB;IACA,KAAKC,aAAL,GAAqB,CAArB;IACA,KAAKC,UAAL,GAAkBxsD,qBAAlB;IACA,KAAKysD,eAAL,GAAuB,CAAvB;IACA,KAAKC,UAAL,GAAkBzsD,0BAAlB;IACA,KAAK0sD,OAAL,GAAe,CAAf;IAEA,KAAK7tB,CAAL,GAAS,CAAT;IACA,KAAKC,CAAL,GAAS,CAAT;IAEA,KAAK6tB,KAAL,GAAa,CAAb;IACA,KAAKC,KAAL,GAAa,CAAb;IAEA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,UAAL,GAAkB,CAAlB;IACA,KAAKC,iBAAL,GAAyBtqD,uBAAA,CAAkBC,IAA3C;IACA,KAAKsqD,QAAL,GAAgB,CAAhB;IAEA,KAAKC,SAAL,GAAiB,SAAjB;IACA,KAAKC,WAAL,GAAmB,SAAnB;IACA,KAAKC,WAAL,GAAmB,KAAnB;IAEA,KAAKC,SAAL,GAAiB,CAAjB;IACA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,SAAL,GAAiB,CAAjB;IACA,KAAKC,WAAL,GAAmB,IAAnB;IACA,KAAKC,YAAL,GAAoB,MAApB;IAEA,KAAKC,sBAAL,CAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO71B,KAAP,EAAcC,MAAd,CAA5B;EAhCyB;EAmC3B4E,MAAA,EAAQ;IACN,MAAMA,KAAA,GAAQzrB,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAd;IACA2oB,KAAA,CAAMixB,OAAN,GAAgB,KAAKA,OAAL,CAAa92C,KAAb,EAAhB;IACA,OAAO6lB,KAAP;EAHM;EAMRkxB,gBAAgB/uB,CAAhB,EAAmBC,CAAnB,EAAsB;IACpB,KAAKD,CAAL,GAASA,CAAT;IACA,KAAKC,CAAL,GAASA,CAAT;EAFoB;EAKtB+uB,iBAAiB/jD,SAAjB,EAA4B+0B,CAA5B,EAA+BC,CAA/B,EAAkC;IAChC,CAACD,CAAD,EAAIC,CAAJ,IAASrpB,UAAA,CAAKU,cAAL,CAAoB,CAAC0oB,CAAD,EAAIC,CAAJ,CAApB,EAA4Bh1B,SAA5B,CAAT;IACA,KAAKgkD,IAAL,GAAY96C,IAAA,CAAKC,GAAL,CAAS,KAAK66C,IAAd,EAAoBjvB,CAApB,CAAZ;IACA,KAAKkvB,IAAL,GAAY/6C,IAAA,CAAKC,GAAL,CAAS,KAAK86C,IAAd,EAAoBjvB,CAApB,CAAZ;IACA,KAAKkvB,IAAL,GAAYh7C,IAAA,CAAKgE,GAAL,CAAS,KAAKg3C,IAAd,EAAoBnvB,CAApB,CAAZ;IACA,KAAKovB,IAAL,GAAYj7C,IAAA,CAAKgE,GAAL,CAAS,KAAKi3C,IAAd,EAAoBnvB,CAApB,CAAZ;EALgC;EAQlCovB,iBAAiBpkD,SAAjB,EAA4B8N,IAA5B,EAAkC;IAChC,MAAMjB,EAAA,GAAKlB,UAAA,CAAKU,cAAL,CAAoByB,IAApB,EAA0B9N,SAA1B,CAAX;IACA,MAAM8M,EAAA,GAAKnB,UAAA,CAAKU,cAAL,CAAoByB,IAAA,CAAKf,KAAL,CAAW,CAAX,CAApB,EAAmC/M,SAAnC,CAAX;IACA,KAAKgkD,IAAL,GAAY96C,IAAA,CAAKC,GAAL,CAAS,KAAK66C,IAAd,EAAoBn3C,EAAA,CAAG,CAAH,CAApB,EAA2BC,EAAA,CAAG,CAAH,CAA3B,CAAZ;IACA,KAAKm3C,IAAL,GAAY/6C,IAAA,CAAKC,GAAL,CAAS,KAAK86C,IAAd,EAAoBp3C,EAAA,CAAG,CAAH,CAApB,EAA2BC,EAAA,CAAG,CAAH,CAA3B,CAAZ;IACA,KAAKo3C,IAAL,GAAYh7C,IAAA,CAAKgE,GAAL,CAAS,KAAKg3C,IAAd,EAAoBr3C,EAAA,CAAG,CAAH,CAApB,EAA2BC,EAAA,CAAG,CAAH,CAA3B,CAAZ;IACA,KAAKq3C,IAAL,GAAYj7C,IAAA,CAAKgE,GAAL,CAAS,KAAKi3C,IAAd,EAAoBt3C,EAAA,CAAG,CAAH,CAApB,EAA2BC,EAAA,CAAG,CAAH,CAA3B,CAAZ;EANgC;EASlCu3C,wBAAwBrkD,SAAxB,EAAmCiM,MAAnC,EAA2C;IACzCN,UAAA,CAAKK,WAAL,CAAiBhM,SAAjB,EAA4BiM,MAA5B;IACA,KAAK+3C,IAAL,GAAY96C,IAAA,CAAKC,GAAL,CAAS,KAAK66C,IAAd,EAAoB/3C,MAAA,CAAO,CAAP,CAApB,CAAZ;IACA,KAAKi4C,IAAL,GAAYh7C,IAAA,CAAKgE,GAAL,CAAS,KAAKg3C,IAAd,EAAoBj4C,MAAA,CAAO,CAAP,CAApB,CAAZ;IACA,KAAKg4C,IAAL,GAAY/6C,IAAA,CAAKC,GAAL,CAAS,KAAK86C,IAAd,EAAoBh4C,MAAA,CAAO,CAAP,CAApB,CAAZ;IACA,KAAKk4C,IAAL,GAAYj7C,IAAA,CAAKgE,GAAL,CAAS,KAAKi3C,IAAd,EAAoBl4C,MAAA,CAAO,CAAP,CAApB,CAAZ;EALyC;EAQ3Cq4C,sBAAsBtkD,SAAtB,EAAiCuO,EAAjC,EAAqCC,EAArC,EAAyCC,EAAzC,EAA6CC,EAA7C,EAAiDC,EAAjD,EAAqDC,EAArD,EAAyDC,EAAzD,EAA6DC,EAA7D,EAAiE7C,MAAjE,EAAyE;IACvE,MAAMs4C,GAAA,GAAM54C,UAAA,CAAK2C,iBAAL,CAAuBC,EAAvB,EAA2BC,EAA3B,EAA+BC,EAA/B,EAAmCC,EAAnC,EAAuCC,EAAvC,EAA2CC,EAA3C,EAA+CC,EAA/C,EAAmDC,EAAnD,CAAZ;IACA,IAAI7C,MAAJ,EAAY;MACVA,MAAA,CAAO,CAAP,IAAY/C,IAAA,CAAKC,GAAL,CAAS8C,MAAA,CAAO,CAAP,CAAT,EAAoBs4C,GAAA,CAAI,CAAJ,CAApB,EAA4BA,GAAA,CAAI,CAAJ,CAA5B,CAAZ;MACAt4C,MAAA,CAAO,CAAP,IAAY/C,IAAA,CAAKgE,GAAL,CAASjB,MAAA,CAAO,CAAP,CAAT,EAAoBs4C,GAAA,CAAI,CAAJ,CAApB,EAA4BA,GAAA,CAAI,CAAJ,CAA5B,CAAZ;MACAt4C,MAAA,CAAO,CAAP,IAAY/C,IAAA,CAAKC,GAAL,CAAS8C,MAAA,CAAO,CAAP,CAAT,EAAoBs4C,GAAA,CAAI,CAAJ,CAApB,EAA4BA,GAAA,CAAI,CAAJ,CAA5B,CAAZ;MACAt4C,MAAA,CAAO,CAAP,IAAY/C,IAAA,CAAKgE,GAAL,CAASjB,MAAA,CAAO,CAAP,CAAT,EAAoBs4C,GAAA,CAAI,CAAJ,CAApB,EAA4BA,GAAA,CAAI,CAAJ,CAA5B,CAAZ;MACA;IALU;IAOZ,KAAKH,gBAAL,CAAsBpkD,SAAtB,EAAiCukD,GAAjC;EATuE;EAYzEC,mBAAmBC,QAAA,GAAWC,wBAAA,CAAS7rD,IAAvC,EAA6CmH,SAAA,GAAY,IAAzD,EAA+D;IAC7D,MAAMukD,GAAA,GAAM,CAAC,KAAKP,IAAN,EAAY,KAAKC,IAAjB,EAAuB,KAAKC,IAA5B,EAAkC,KAAKC,IAAvC,CAAZ;IACA,IAAIM,QAAA,KAAaC,wBAAA,CAAS5rD,MAA1B,EAAkC;MAChC,IAAI,CAACkH,SAAL,EAAgB;QACd,IAAA2F,iBAAA,EAAY,6CAAZ;MADc;MAKhB,MAAMua,KAAA,GAAQvU,UAAA,CAAKyB,6BAAL,CAAmCpN,SAAnC,CAAd;MACA,MAAM2kD,UAAA,GAAczkC,KAAA,CAAM,CAAN,IAAW,KAAKujC,SAAjB,GAA8B,CAAjD;MACA,MAAMmB,UAAA,GAAc1kC,KAAA,CAAM,CAAN,IAAW,KAAKujC,SAAjB,GAA8B,CAAjD;MACAc,GAAA,CAAI,CAAJ,KAAUI,UAAV;MACAJ,GAAA,CAAI,CAAJ,KAAUK,UAAV;MACAL,GAAA,CAAI,CAAJ,KAAUI,UAAV;MACAJ,GAAA,CAAI,CAAJ,KAAUK,UAAV;IAZgC;IAclC,OAAOL,GAAP;EAhB6D;EAmB/DM,mBAAA,EAAqB;IACnB,MAAM92C,SAAA,GAAYpC,UAAA,CAAKoC,SAAL,CAAe,KAAK81C,OAApB,EAA6B,KAAKW,kBAAL,EAA7B,CAAlB;IACA,KAAKZ,sBAAL,CAA4B71C,SAAA,IAAa,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAzC;EAFmB;EAKrB+2C,YAAA,EAAc;IACZ,OAAO,KAAKd,IAAL,KAAce,QAArB;EADY;EAIdnB,uBAAuBW,GAAvB,EAA4B;IAC1B,KAAKV,OAAL,GAAeU,GAAf;IACA,KAAKP,IAAL,GAAYe,QAAZ;IACA,KAAKd,IAAL,GAAYc,QAAZ;IACA,KAAKb,IAAL,GAAY,CAAZ;IACA,KAAKC,IAAL,GAAY,CAAZ;EAL0B;EAQ5Ba,0BAA0BP,QAAA,GAAWC,wBAAA,CAAS7rD,IAA9C,EAAoDmH,SAAA,GAAY,IAAhE,EAAsE;IACpE,OAAO2L,UAAA,CAAKoC,SAAL,CACL,KAAK81C,OADA,EAEL,KAAKW,kBAAL,CAAwBC,QAAxB,EAAkCzkD,SAAlC,CAFK,CAAP;EADoE;AAxHjD;AAgIvB,SAASilD,kBAATA,CAA4BnkB,GAA5B,EAAiCogB,OAAjC,EAA0C;EACxC,IAAI,OAAOgE,SAAP,KAAqB,WAArB,IAAoChE,OAAA,YAAmBgE,SAA3D,EAAsE;IACpEpkB,GAAA,CAAIqkB,YAAJ,CAAiBjE,OAAjB,EAA0B,CAA1B,EAA6B,CAA7B;IACA;EAFoE;EAgBtE,MAAMlzB,MAAA,GAASkzB,OAAA,CAAQlzB,MAAvB;IACED,KAAA,GAAQmzB,OAAA,CAAQnzB,KADlB;EAEA,MAAMq3B,kBAAA,GAAqBp3B,MAAA,GAASsvB,iBAApC;EACA,MAAM+H,UAAA,GAAc,CAAAr3B,MAAA,GAASo3B,kBAAT,IAA+B9H,iBAAnD;EACA,MAAMgI,WAAA,GAAcF,kBAAA,KAAuB,CAAvB,GAA2BC,UAA3B,GAAwCA,UAAA,GAAa,CAAzE;EAEA,MAAME,YAAA,GAAezkB,GAAA,CAAI0kB,eAAJ,CAAoBz3B,KAApB,EAA2BuvB,iBAA3B,CAArB;EACA,IAAImI,MAAA,GAAS,CAAb;IACEC,OADF;EAEA,MAAM1wC,GAAA,GAAMksC,OAAA,CAAQpvC,IAApB;EACA,MAAM6zC,IAAA,GAAOJ,YAAA,CAAazzC,IAA1B;EACA,IAAI9I,CAAJ,EAAOuG,CAAP,EAAUq2C,eAAV,EAA2BC,gBAA3B;EAIA,IAAI3E,OAAA,CAAQ4E,IAAR,KAAiBvsD,eAAA,CAAUC,cAA/B,EAA+C;IAE7C,MAAMusD,SAAA,GAAY/wC,GAAA,CAAIrE,UAAtB;IACA,MAAMq1C,MAAA,GAAS,IAAI17C,WAAJ,CAAgBq7C,IAAA,CAAKp7C,MAArB,EAA6B,CAA7B,EAAgCo7C,IAAA,CAAKh1C,UAAL,IAAmB,CAAnD,CAAf;IACA,MAAMs1C,gBAAA,GAAmBD,MAAA,CAAOv/C,MAAhC;IACA,MAAMy/C,WAAA,GAAen4B,KAAA,GAAQ,CAAT,IAAe,CAAnC;IACA,MAAMo4B,KAAA,GAAQ,UAAd;IACA,MAAMC,KAAA,GAAQ17C,iBAAA,CAAYP,cAAZ,GAA6B,UAA7B,GAA0C,UAAxD;IAEA,KAAKnB,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIs8C,WAAhB,EAA6Bt8C,CAAA,EAA7B,EAAkC;MAChC48C,eAAA,GAAkB58C,CAAA,GAAIq8C,UAAJ,GAAiB/H,iBAAjB,GAAqC8H,kBAAvD;MACAM,OAAA,GAAU,CAAV;MACA,KAAKn2C,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIq2C,eAAhB,EAAiCr2C,CAAA,EAAjC,EAAsC;QACpC,MAAM82C,OAAA,GAAUN,SAAA,GAAYN,MAA5B;QACA,IAAI9U,CAAA,GAAI,CAAR;QACA,MAAM2V,IAAA,GAAOD,OAAA,GAAUH,WAAV,GAAwBn4B,KAAxB,GAAgCs4B,OAAA,GAAU,CAAV,GAAc,CAA3D;QACA,MAAME,YAAA,GAAeD,IAAA,GAAO,CAAC,CAA7B;QACA,IAAI3E,IAAA,GAAO,CAAX;QACA,IAAI6E,OAAA,GAAU,CAAd;QACA,OAAO7V,CAAA,GAAI4V,YAAX,EAAyB5V,CAAA,IAAK,CAA9B,EAAiC;UAC/B6V,OAAA,GAAUxxC,GAAA,CAAIywC,MAAA,EAAJ,CAAV;UACAO,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,GAAV,GAAgBL,KAAhB,GAAwBC,KAA5C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,EAAV,GAAeL,KAAf,GAAuBC,KAA3C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,EAAV,GAAeL,KAAf,GAAuBC,KAA3C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,EAAV,GAAeL,KAAf,GAAuBC,KAA3C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,CAAV,GAAcL,KAAd,GAAsBC,KAA1C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,CAAV,GAAcL,KAAd,GAAsBC,KAA1C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,CAAV,GAAcL,KAAd,GAAsBC,KAA1C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,CAAV,GAAcL,KAAd,GAAsBC,KAA1C;QAT+B;QAWjC,OAAOzV,CAAA,GAAI2V,IAAX,EAAiB3V,CAAA,EAAjB,EAAsB;UACpB,IAAIgR,IAAA,KAAS,CAAb,EAAgB;YACd6E,OAAA,GAAUxxC,GAAA,CAAIywC,MAAA,EAAJ,CAAV;YACA9D,IAAA,GAAO,GAAP;UAFc;UAKhBqE,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU7E,IAAV,GAAiBwE,KAAjB,GAAyBC,KAA7C;UACAzE,IAAA,KAAS,CAAT;QAPoB;MAlBc;MA6BtC,OAAO+D,OAAA,GAAUO,gBAAjB,EAAmC;QACjCD,MAAA,CAAON,OAAA,EAAP,IAAoB,CAApB;MADiC;MAInC5kB,GAAA,CAAIqkB,YAAJ,CAAiBI,YAAjB,EAA+B,CAA/B,EAAkCv8C,CAAA,GAAIs0C,iBAAtC;IApCgC;EATW,CAA/C,MA+CO,IAAI4D,OAAA,CAAQ4E,IAAR,KAAiBvsD,eAAA,CAAUG,UAA/B,EAA2C;IAEhD6V,CAAA,GAAI,CAAJ;IACAs2C,gBAAA,GAAmB93B,KAAA,GAAQuvB,iBAAR,GAA4B,CAA/C;IACA,KAAKt0C,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIq8C,UAAhB,EAA4Br8C,CAAA,EAA5B,EAAiC;MAC/B28C,IAAA,CAAK7jC,GAAL,CAAS9M,GAAA,CAAI3L,QAAJ,CAAao8C,MAAb,EAAqBA,MAAA,GAASI,gBAA9B,CAAT;MACAJ,MAAA,IAAUI,gBAAV;MAEA/kB,GAAA,CAAIqkB,YAAJ,CAAiBI,YAAjB,EAA+B,CAA/B,EAAkCh2C,CAAlC;MACAA,CAAA,IAAK+tC,iBAAL;IAL+B;IAOjC,IAAIt0C,CAAA,GAAIs8C,WAAR,EAAqB;MACnBO,gBAAA,GAAmB93B,KAAA,GAAQq3B,kBAAR,GAA6B,CAAhD;MACAO,IAAA,CAAK7jC,GAAL,CAAS9M,GAAA,CAAI3L,QAAJ,CAAao8C,MAAb,EAAqBA,MAAA,GAASI,gBAA9B,CAAT;MAEA/kB,GAAA,CAAIqkB,YAAJ,CAAiBI,YAAjB,EAA+B,CAA/B,EAAkCh2C,CAAlC;IAJmB;EAX2B,CAA3C,MAiBA,IAAI2xC,OAAA,CAAQ4E,IAAR,KAAiBvsD,eAAA,CAAUE,SAA/B,EAA0C;IAE/CmsD,eAAA,GAAkBtI,iBAAlB;IACAuI,gBAAA,GAAmB93B,KAAA,GAAQ63B,eAA3B;IACA,KAAK58C,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIs8C,WAAhB,EAA6Bt8C,CAAA,EAA7B,EAAkC;MAChC,IAAIA,CAAA,IAAKq8C,UAAT,EAAqB;QACnBO,eAAA,GAAkBR,kBAAlB;QACAS,gBAAA,GAAmB93B,KAAA,GAAQ63B,eAA3B;MAFmB;MAKrBF,OAAA,GAAU,CAAV;MACA,KAAKn2C,CAAA,GAAIs2C,gBAAT,EAA2Bt2C,CAAA,EAA3B,GAAkC;QAChCo2C,IAAA,CAAKD,OAAA,EAAL,IAAkB1wC,GAAA,CAAIywC,MAAA,EAAJ,CAAlB;QACAE,IAAA,CAAKD,OAAA,EAAL,IAAkB1wC,GAAA,CAAIywC,MAAA,EAAJ,CAAlB;QACAE,IAAA,CAAKD,OAAA,EAAL,IAAkB1wC,GAAA,CAAIywC,MAAA,EAAJ,CAAlB;QACAE,IAAA,CAAKD,OAAA,EAAL,IAAkB,GAAlB;MAJgC;MAOlC5kB,GAAA,CAAIqkB,YAAJ,CAAiBI,YAAjB,EAA+B,CAA/B,EAAkCv8C,CAAA,GAAIs0C,iBAAtC;IAdgC;EAJa,CAA1C,MAoBA;IACL,MAAM,IAAI13C,KAAJ,CAAW,mBAAkBs7C,OAAA,CAAQ4E,IAA3B,EAAV,CAAN;EADK;AApHiC;AAyH1C,SAASW,kBAATA,CAA4B3lB,GAA5B,EAAiCogB,OAAjC,EAA0C;EACxC,IAAIA,OAAA,CAAQpzB,MAAZ,EAAoB;IAElBgT,GAAA,CAAII,SAAJ,CAAcggB,OAAA,CAAQpzB,MAAtB,EAA8B,CAA9B,EAAiC,CAAjC;IACA;EAHkB;EAOpB,MAAME,MAAA,GAASkzB,OAAA,CAAQlzB,MAAvB;IACED,KAAA,GAAQmzB,OAAA,CAAQnzB,KADlB;EAEA,MAAMq3B,kBAAA,GAAqBp3B,MAAA,GAASsvB,iBAApC;EACA,MAAM+H,UAAA,GAAc,CAAAr3B,MAAA,GAASo3B,kBAAT,IAA+B9H,iBAAnD;EACA,MAAMgI,WAAA,GAAcF,kBAAA,KAAuB,CAAvB,GAA2BC,UAA3B,GAAwCA,UAAA,GAAa,CAAzE;EAEA,MAAME,YAAA,GAAezkB,GAAA,CAAI0kB,eAAJ,CAAoBz3B,KAApB,EAA2BuvB,iBAA3B,CAArB;EACA,IAAImI,MAAA,GAAS,CAAb;EACA,MAAMzwC,GAAA,GAAMksC,OAAA,CAAQpvC,IAApB;EACA,MAAM6zC,IAAA,GAAOJ,YAAA,CAAazzC,IAA1B;EAEA,KAAK,IAAI9I,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIs8C,WAApB,EAAiCt8C,CAAA,EAAjC,EAAsC;IACpC,MAAM48C,eAAA,GACJ58C,CAAA,GAAIq8C,UAAJ,GAAiB/H,iBAAjB,GAAqC8H,kBADvC;IAMA,CAAC;MAAEK;IAAF,IAAa,IAAAiB,uCAAA,EAA2B;MACvC1xC,GADuC;MAEvCywC,MAFuC;MAGvCE,IAHuC;MAIvC53B,KAJuC;MAKvCC,MAAA,EAAQ43B,eAL+B;MAMvCe,aAAA,EAAe;IANwB,CAA3B,CAAd;IASA7lB,GAAA,CAAIqkB,YAAJ,CAAiBI,YAAjB,EAA+B,CAA/B,EAAkCv8C,CAAA,GAAIs0C,iBAAtC;EAhBoC;AAnBE;AAuC1C,SAASsJ,YAATA,CAAsBC,SAAtB,EAAiCrJ,OAAjC,EAA0C;EACxC,MAAMsJ,UAAA,GAAa,CACjB,aADiB,EAEjB,WAFiB,EAGjB,UAHiB,EAIjB,aAJiB,EAKjB,WALiB,EAMjB,SANiB,EAOjB,UAPiB,EAQjB,YARiB,EASjB,0BATiB,EAUjB,MAViB,EAWjB,QAXiB,CAAnB;EAaA,WAAWC,QAAX,IAAuBD,UAAvB,EAAmC;IACjC,IAAID,SAAA,CAAUE,QAAV,MAAwBr+C,SAA5B,EAAuC;MACrC80C,OAAA,CAAQuJ,QAAR,IAAoBF,SAAA,CAAUE,QAAV,CAApB;IADqC;EADN;EAKnC,IAAIF,SAAA,CAAUG,WAAV,KAA0Bt+C,SAA9B,EAAyC;IACvC80C,OAAA,CAAQwJ,WAAR,CAAoBH,SAAA,CAAUI,WAAV,EAApB;IACAzJ,OAAA,CAAQ0J,cAAR,GAAyBL,SAAA,CAAUK,cAAnC;EAFuC;AAnBD;AAyB1C,SAASC,iBAATA,CAA2BrmB,GAA3B,EAAgC;EAC9BA,GAAA,CAAIsmB,WAAJ,GAAkBtmB,GAAA,CAAIumB,SAAJ,GAAgB,SAAlC;EACAvmB,GAAA,CAAIwmB,QAAJ,GAAe,SAAf;EACAxmB,GAAA,CAAIymB,WAAJ,GAAkB,CAAlB;EACAzmB,GAAA,CAAI2iB,SAAJ,GAAgB,CAAhB;EACA3iB,GAAA,CAAI0mB,OAAJ,GAAc,MAAd;EACA1mB,GAAA,CAAI2mB,QAAJ,GAAe,OAAf;EACA3mB,GAAA,CAAI4mB,UAAJ,GAAiB,EAAjB;EACA5mB,GAAA,CAAI6mB,wBAAJ,GAA+B,aAA/B;EACA7mB,GAAA,CAAIvT,IAAJ,GAAW,iBAAX;EACA,IAAIuT,GAAA,CAAIkmB,WAAJ,KAAoBt+C,SAAxB,EAAmC;IACjCo4B,GAAA,CAAIkmB,WAAJ,CAAgB,EAAhB;IACAlmB,GAAA,CAAIomB,cAAJ,GAAqB,CAArB;EAFiC;EAInC,IAEE,CAACxxD,cAFH,EAGE;IACA,MAAM;MAAEw5C;IAAF,IAAapO,GAAnB;IACA,IAAIoO,MAAA,KAAW,MAAX,IAAqBA,MAAA,KAAW,EAApC,EAAwC;MACtCpO,GAAA,CAAIoO,MAAJ,GAAa,MAAb;IADsC;EAFxC;AAjB4B;AAyBhC,SAAS0Y,oBAATA,CAA8Bn/C,KAA9B,EAAqCo/C,EAArC,EAAyCC,EAAzC,EAA6CC,EAA7C,EAAiD;EAC/C,MAAMthD,MAAA,GAASgC,KAAA,CAAMhC,MAArB;EACA,KAAK,IAAIuC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvC,MAApB,EAA4BuC,CAAA,IAAK,CAAjC,EAAoC;IAClC,MAAMg/C,KAAA,GAAQv/C,KAAA,CAAMO,CAAN,CAAd;IACA,IAAIg/C,KAAA,KAAU,CAAd,EAAiB;MACfv/C,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAe6+C,EAAf;MACAp/C,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAe8+C,EAAf;MACAr/C,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAe++C,EAAf;IAHe,CAAjB,MAIO,IAAIC,KAAA,GAAQ,GAAZ,EAAiB;MACtB,MAAMC,MAAA,GAAS,MAAMD,KAArB;MACAv/C,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAgBP,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAeg/C,KAAf,GAAuBH,EAAA,GAAKI,MAA7B,IAAwC,CAAvD;MACAx/C,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAgBP,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAeg/C,KAAf,GAAuBF,EAAA,GAAKG,MAA7B,IAAwC,CAAvD;MACAx/C,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAgBP,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAeg/C,KAAf,GAAuBD,EAAA,GAAKE,MAA7B,IAAwC,CAAvD;IAJsB;EANU;AAFW;AAiBjD,SAASC,iBAATA,CAA2BC,QAA3B,EAAqCC,SAArC,EAAgDC,WAAhD,EAA6D;EAC3D,MAAM5hD,MAAA,GAAS0hD,QAAA,CAAS1hD,MAAxB;EACA,MAAMyZ,KAAA,GAAQ,IAAI,GAAlB;EACA,KAAK,IAAIlX,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvC,MAApB,EAA4BuC,CAAA,IAAK,CAAjC,EAAoC;IAClC,MAAMg/C,KAAA,GAAQK,WAAA,GAAcA,WAAA,CAAYF,QAAA,CAASn/C,CAAT,CAAZ,CAAd,GAAyCm/C,QAAA,CAASn/C,CAAT,CAAvD;IACAo/C,SAAA,CAAUp/C,CAAV,IAAgBo/C,SAAA,CAAUp/C,CAAV,IAAeg/C,KAAf,GAAuB9nC,KAAxB,GAAiC,CAAhD;EAFkC;AAHuB;AAS7D,SAASooC,sBAATA,CAAgCH,QAAhC,EAA0CC,SAA1C,EAAqDC,WAArD,EAAkE;EAChE,MAAM5hD,MAAA,GAAS0hD,QAAA,CAAS1hD,MAAxB;EACA,KAAK,IAAIuC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvC,MAApB,EAA4BuC,CAAA,IAAK,CAAjC,EAAoC;IAClC,MAAMgsB,CAAA,GACJmzB,QAAA,CAASn/C,CAAA,GAAI,CAAb,IAAkB,EAAlB,GACAm/C,QAAA,CAASn/C,CAAA,GAAI,CAAb,IAAkB,GADlB,GAEAm/C,QAAA,CAASn/C,CAAA,GAAI,CAAb,IAAkB,EAHpB;IAIAo/C,SAAA,CAAUp/C,CAAV,IAAeq/C,WAAA,GACVD,SAAA,CAAUp/C,CAAV,IAAeq/C,WAAA,CAAYrzB,CAAA,IAAK,CAAjB,CAAhB,IAAwC,CAD7B,GAEVozB,SAAA,CAAUp/C,CAAV,IAAegsB,CAAhB,IAAsB,EAF1B;EALkC;AAF4B;AAalE,SAASuzB,mBAATA,CACEC,OADF,EAEEC,QAFF,EAGE16B,KAHF,EAIEC,MAJF,EAKE06B,OALF,EAMEC,QANF,EAOEN,WAPF,EAQEO,YARF,EASEC,YATF,EAUEC,WAVF,EAWEC,WAXF,EAYE;EACA,MAAMC,WAAA,GAAc,CAAC,CAACL,QAAtB;EACA,MAAMd,EAAA,GAAKmB,WAAA,GAAcL,QAAA,CAAS,CAAT,CAAd,GAA4B,CAAvC;EACA,MAAMb,EAAA,GAAKkB,WAAA,GAAcL,QAAA,CAAS,CAAT,CAAd,GAA4B,CAAvC;EACA,MAAMZ,EAAA,GAAKiB,WAAA,GAAcL,QAAA,CAAS,CAAT,CAAd,GAA4B,CAAvC;EAEA,MAAMM,SAAA,GACJP,OAAA,KAAY,YAAZ,GAA2BJ,sBAA3B,GAAoDJ,iBADtD;EAIA,MAAMgB,iBAAA,GAAoB,OAA1B;EACA,MAAMC,SAAA,GAAYjgD,IAAA,CAAKC,GAAL,CAAS6kB,MAAT,EAAiB9kB,IAAA,CAAKkgD,IAAL,CAAUF,iBAAA,GAAoBn7B,KAA9B,CAAjB,CAAlB;EACA,KAAK,IAAIs7B,GAAA,GAAM,CAAV,EAAaA,GAAA,GAAMr7B,MAAxB,EAAgCq7B,GAAA,IAAOF,SAAvC,EAAkD;IAChD,MAAMG,WAAA,GAAcpgD,IAAA,CAAKC,GAAL,CAASggD,SAAT,EAAoBn7B,MAAA,GAASq7B,GAA7B,CAApB;IACA,MAAMlB,QAAA,GAAWK,OAAA,CAAQrnB,YAAR,CACfynB,YAAA,GAAeE,WADA,EAEfO,GAAA,IAAOR,YAAA,GAAeE,WAAf,CAFQ,EAGfh7B,KAHe,EAIfu7B,WAJe,CAAjB;IAMA,MAAMlB,SAAA,GAAYK,QAAA,CAAStnB,YAAT,CAChBynB,YADgB,EAEhBS,GAAA,GAAMR,YAFU,EAGhB96B,KAHgB,EAIhBu7B,WAJgB,CAAlB;IAOA,IAAIN,WAAJ,EAAiB;MACfpB,oBAAA,CAAqBO,QAAA,CAASr2C,IAA9B,EAAoC+1C,EAApC,EAAwCC,EAAxC,EAA4CC,EAA5C;IADe;IAGjBkB,SAAA,CAAUd,QAAA,CAASr2C,IAAnB,EAAyBs2C,SAAA,CAAUt2C,IAAnC,EAAyCu2C,WAAzC;IAEAI,QAAA,CAAStD,YAAT,CAAsBiD,SAAtB,EAAiCQ,YAAjC,EAA+CS,GAAA,GAAMR,YAArD;EApBgD;AAZlD;AAoCF,SAASU,YAATA,CAAsBzoB,GAAtB,EAA2B0oB,KAA3B,EAAkCf,QAAlC,EAA4CgB,QAA5C,EAAsD;EACpD,MAAMb,YAAA,GAAea,QAAA,CAAS,CAAT,CAArB;EACA,MAAMZ,YAAA,GAAeY,QAAA,CAAS,CAAT,CAArB;EACA,MAAMC,UAAA,GAAaD,QAAA,CAAS,CAAT,IAAcb,YAAjC;EACA,MAAMe,WAAA,GAAcF,QAAA,CAAS,CAAT,IAAcZ,YAAlC;EACA,IAAIa,UAAA,KAAe,CAAf,IAAoBC,WAAA,KAAgB,CAAxC,EAA2C;IACzC;EADyC;EAG3CpB,mBAAA,CACEiB,KAAA,CAAMr3B,OADR,EAEEs2B,QAFF,EAGEiB,UAHF,EAIEC,WAJF,EAKEH,KAAA,CAAMd,OALR,EAMEc,KAAA,CAAMb,QANR,EAOEa,KAAA,CAAMnB,WAPR,EAQEO,YARF,EASEC,YATF,EAUEW,KAAA,CAAMppC,OAVR,EAWEopC,KAAA,CAAMnpC,OAXR;EAaAygB,GAAA,CAAIhhC,IAAJ;EACAghC,GAAA,CAAIymB,WAAJ,GAAkB,CAAlB;EACAzmB,GAAA,CAAI6mB,wBAAJ,GAA+B,aAA/B;EACA7mB,GAAA,CAAImd,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,EAA6B,CAA7B,EAAgC,CAAhC;EACAnd,GAAA,CAAII,SAAJ,CAAcunB,QAAA,CAAS15B,MAAvB,EAA+B,CAA/B,EAAkC,CAAlC;EACA+R,GAAA,CAAI/gC,OAAJ;AA1BoD;AA6BtD,SAAS6pD,wBAATA,CAAkC5pD,SAAlC,EAA6C6pD,WAA7C,EAA0D;EACxD,MAAM3pC,KAAA,GAAQvU,UAAA,CAAKyB,6BAAL,CAAmCpN,SAAnC,CAAd;EAGAkgB,KAAA,CAAM,CAAN,IAAWhX,IAAA,CAAK4gD,MAAL,CAAY5pC,KAAA,CAAM,CAAN,CAAZ,CAAX;EACAA,KAAA,CAAM,CAAN,IAAWhX,IAAA,CAAK4gD,MAAL,CAAY5pC,KAAA,CAAM,CAAN,CAAZ,CAAX;EACA,MAAM6pC,WAAA,GAAc7gD,IAAA,CAAK4gD,MAAL,CACjB,CAAA3+C,UAAA,CAAW6+C,gBAAX,IAA+B,CAA/B,IAAoCvhB,4BAAA,CAAcC,gBADjC,CAApB;EAGA,IAAImhB,WAAA,KAAgBnhD,SAApB,EAA+B;IAE7B,OAAOmhD,WAAP;EAF6B,CAA/B,MAGO,IAAI3pC,KAAA,CAAM,CAAN,KAAY6pC,WAAZ,IAA2B7pC,KAAA,CAAM,CAAN,KAAY6pC,WAA3C,EAAwD;IAE7D,OAAO,IAAP;EAF6D;EAK/D,OAAO,KAAP;AAjBwD;AAoB1D,MAAME,eAAA,GAAkB,CAAC,MAAD,EAAS,OAAT,EAAkB,QAAlB,CAAxB;AACA,MAAMC,gBAAA,GAAmB,CAAC,OAAD,EAAU,OAAV,EAAmB,OAAnB,CAAzB;AACA,MAAMC,WAAA,GAAc,EAApB;AACA,MAAMC,OAAA,GAAU,EAAhB;AAEA,MAAM/5B,cAAN,CAAqB;EACnBzoB,YACEyiD,SADF,EAEE5qC,UAFF,EAGEC,IAHF,EAIElI,aAJF,EAKEC,aALF,EAME;IAAEgM,qBAAF;IAAyB6mC,kBAAA,GAAqB;EAA9C,CANF,EAOE/oC,mBAPF,EAQEC,UARF,EASE;IACA,KAAKsf,GAAL,GAAWupB,SAAX;IACA,KAAK5N,OAAL,GAAe,IAAI4F,gBAAJ,CACb,KAAKvhB,GAAL,CAAS/R,MAAT,CAAgBhB,KADH,EAEb,KAAK+S,GAAL,CAAS/R,MAAT,CAAgBf,MAFH,CAAf;IAIA,KAAKu8B,UAAL,GAAkB,EAAlB;IACA,KAAKC,WAAL,GAAmB,IAAnB;IACA,KAAKC,aAAL,GAAqB,KAArB;IACA,KAAKC,GAAL,GAAW,IAAX;IACA,KAAKC,KAAL,GAAa,IAAb;IACA,KAAKlrC,UAAL,GAAkBA,UAAlB;IACA,KAAKC,IAAL,GAAYA,IAAZ;IACA,KAAKlI,aAAL,GAAqBA,aAArB;IACA,KAAKC,aAAL,GAAqBA,aAArB;IACA,KAAKmzC,UAAL,GAAkB,EAAlB;IACA,KAAKC,eAAL,GAAuB,IAAvB;IAGA,KAAKC,aAAL,GAAqB,IAArB;IACA,KAAKC,kBAAL,GAA0B,EAA1B;IACA,KAAKC,UAAL,GAAkB,CAAlB;IACA,KAAKC,UAAL,GAAkB,EAAlB;IACA,KAAKC,YAAL,GAAoB,CAApB;IACA,KAAKC,SAAL,GAAiB,IAAjB;IACA,KAAKC,YAAL,GAAoB,IAApB;IACA,KAAKC,cAAL,GAAsB,IAAtB;IACA,KAAKf,kBAAL,GAA0BA,kBAAA,IAAsB,EAAhD;IACA,KAAK7mC,qBAAL,GAA6BA,qBAA7B;IACA,KAAK6nC,cAAL,GAAsB,IAAI7L,cAAJ,CAAmB,KAAKjoC,aAAxB,CAAtB;IACA,KAAK+zC,cAAL,GAAsB,IAAIp5C,GAAJ,EAAtB;IACA,KAAKoP,mBAAL,GAA2BA,mBAA3B;IACA,KAAKiqC,aAAL,GAAqB,CAArB;IACA,KAAKC,YAAL,GAAoB,CAApB;IACA,KAAKC,YAAL,GAAoB,CAApB;IACA,KAAKlqC,UAAL,GAAkBA,UAAlB;IAEA,KAAKmqC,uBAAL,GAA+B,CAAC,CAAC,CAAF,EAAK,CAAL,CAA/B;IACA,KAAKC,0BAAL,GAAkC,IAAlC;IACA,KAAKC,iBAAL,GAAyB,IAAI15C,GAAJ,EAAzB;EAvCA;EA0CF25C,UAAUh6C,IAAV,EAAgBi6C,QAAA,GAAW,IAA3B,EAAiC;IAC/B,IAAI,OAAOj6C,IAAP,KAAgB,QAApB,EAA8B;MAC5B,OAAOA,IAAA,CAAKxL,UAAL,CAAgB,IAAhB,IACH,KAAKmZ,UAAL,CAAgBlN,GAAhB,CAAoBT,IAApB,CADG,GAEH,KAAK4N,IAAL,CAAUnN,GAAV,CAAcT,IAAd,CAFJ;IAD4B;IAK9B,OAAOi6C,QAAP;EAN+B;EASjCz7B,aAAa;IACXtwB,SADW;IAEXmhB,QAFW;IAGXqC,YAAA,GAAe,KAHJ;IAIXnC,UAAA,GAAa;EAJF,CAAb,EAKG;IAMD,MAAM0M,KAAA,GAAQ,KAAK+S,GAAL,CAAS/R,MAAT,CAAgBhB,KAA9B;IACA,MAAMC,MAAA,GAAS,KAAK8S,GAAL,CAAS/R,MAAT,CAAgBf,MAA/B;IAEA,MAAMg+B,cAAA,GAAiB,KAAKlrB,GAAL,CAASumB,SAAhC;IACA,KAAKvmB,GAAL,CAASumB,SAAT,GAAqBhmC,UAAA,IAAc,SAAnC;IACA,KAAKyf,GAAL,CAASmrB,QAAT,CAAkB,CAAlB,EAAqB,CAArB,EAAwBl+B,KAAxB,EAA+BC,MAA/B;IACA,KAAK8S,GAAL,CAASumB,SAAT,GAAqB2E,cAArB;IAEA,IAAIxoC,YAAJ,EAAkB;MAChB,MAAM0oC,iBAAA,GAAoB,KAAKZ,cAAL,CAAoB5L,SAApB,CACxB,aADwB,EAExB3xB,KAFwB,EAGxBC,MAHwB,CAA1B;MAKA,KAAKm+B,YAAL,GAAoB,KAAKrrB,GAAzB;MACA,KAAKorB,iBAAL,GAAyBA,iBAAA,CAAkBn9B,MAA3C;MACA,KAAK+R,GAAL,GAAWorB,iBAAA,CAAkB/5B,OAA7B;MACA,KAAK2O,GAAL,CAAShhC,IAAT;MAGA,KAAKghC,GAAL,CAAS9gC,SAAT,CAAmB,GAAG,IAAAw2C,kCAAA,EAAoB,KAAK2V,YAAzB,CAAtB;IAZgB;IAelB,KAAKrrB,GAAL,CAAShhC,IAAT;IACAqnD,iBAAA,CAAkB,KAAKrmB,GAAvB;IACA,IAAI9gC,SAAJ,EAAe;MACb,KAAK8gC,GAAL,CAAS9gC,SAAT,CAAmB,GAAGA,SAAtB;MACA,KAAKyrD,YAAL,GAAoBzrD,SAAA,CAAU,CAAV,CAApB;MACA,KAAK0rD,YAAL,GAAoB1rD,SAAA,CAAU,CAAV,CAApB;IAHa;IAKf,KAAK8gC,GAAL,CAAS9gC,SAAT,CAAmB,GAAGmhB,QAAA,CAASnhB,SAA/B;IACA,KAAKwrD,aAAL,GAAqBrqC,QAAA,CAASjB,KAA9B;IAEA,KAAK4qC,aAAL,GAAqB,IAAAtU,kCAAA,EAAoB,KAAK1V,GAAzB,CAArB;EAvCC;EA0CHpQ,oBACEvO,YADF,EAEEiqC,iBAFF,EAGEC,gBAHF,EAIEr8B,OAJF,EAKE;IACA,MAAM3N,SAAA,GAAYF,YAAA,CAAaE,SAA/B;IACA,MAAMD,OAAA,GAAUD,YAAA,CAAaC,OAA7B;IACA,IAAIpZ,CAAA,GAAIojD,iBAAA,IAAqB,CAA7B;IACA,MAAME,YAAA,GAAejqC,SAAA,CAAU5b,MAA/B;IAGA,IAAI6lD,YAAA,KAAiBtjD,CAArB,EAAwB;MACtB,OAAOA,CAAP;IADsB;IAIxB,MAAMujD,eAAA,GACJD,YAAA,GAAetjD,CAAf,GAAmBo0C,eAAnB,IACA,OAAOiP,gBAAP,KAA4B,UAF9B;IAGA,MAAMG,OAAA,GAAUD,eAAA,GAAkBt7C,IAAA,CAAK0jC,GAAL,KAAawI,cAA/B,GAAgD,CAAhE;IACA,IAAI2E,KAAA,GAAQ,CAAZ;IAEA,MAAMriC,UAAA,GAAa,KAAKA,UAAxB;IACA,MAAMC,IAAA,GAAO,KAAKA,IAAlB;IACA,IAAI+sC,IAAJ;IAEA,OAAO,IAAP,EAAa;MACX,IAAIz8B,OAAA,KAAYtnB,SAAZ,IAAyBM,CAAA,KAAMgnB,OAAA,CAAQE,cAA3C,EAA2D;QACzDF,OAAA,CAAQ08B,OAAR,CAAgB1jD,CAAhB,EAAmBqjD,gBAAnB;QACA,OAAOrjD,CAAP;MAFyD;MAK3DyjD,IAAA,GAAOrqC,OAAA,CAAQpZ,CAAR,CAAP;MAEA,IAAIyjD,IAAA,KAASrtD,SAAA,CAAIC,UAAjB,EAA6B;QAE3B,KAAKotD,IAAL,EAAW3jD,KAAX,CAAiB,IAAjB,EAAuBuZ,SAAA,CAAUrZ,CAAV,CAAvB;MAF2B,CAA7B,MAGO;QACL,WAAW2jD,QAAX,IAAuBtqC,SAAA,CAAUrZ,CAAV,CAAvB,EAAqC;UACnC,MAAM4jD,QAAA,GAAWD,QAAA,CAASrmD,UAAT,CAAoB,IAApB,IAA4BmZ,UAA5B,GAAyCC,IAA1D;UAIA,IAAI,CAACktC,QAAA,CAASjkC,GAAT,CAAagkC,QAAb,CAAL,EAA6B;YAC3BC,QAAA,CAASr6C,GAAT,CAAao6C,QAAb,EAAuBN,gBAAvB;YACA,OAAOrjD,CAAP;UAF2B;QALM;MADhC;MAaPA,CAAA;MAGA,IAAIA,CAAA,KAAMsjD,YAAV,EAAwB;QACtB,OAAOtjD,CAAP;MADsB;MAMxB,IAAIujD,eAAA,IAAmB,EAAEzK,KAAF,GAAU1E,eAAjC,EAAkD;QAChD,IAAInsC,IAAA,CAAK0jC,GAAL,KAAa6X,OAAjB,EAA0B;UACxBH,gBAAA;UACA,OAAOrjD,CAAP;QAFwB;QAI1B84C,KAAA,GAAQ,CAAR;MALgD;IAjCvC;EArBb;EAmEF,CAAA+K,oBAAA,EAAuB;IAErB,OAAO,KAAKtC,UAAL,CAAgB9jD,MAAhB,IAA0B,KAAKqmD,WAAtC,EAAmD;MACjD,KAAK/sD,OAAL;IADiD;IAInD,KAAK+gC,GAAL,CAAS/gC,OAAT;IAEA,IAAI,KAAKmsD,iBAAT,EAA4B;MAC1B,KAAKprB,GAAL,GAAW,KAAKqrB,YAAhB;MACA,KAAKrrB,GAAL,CAAShhC,IAAT;MACA,KAAKghC,GAAL,CAASmd,YAAT,CAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC;MACA,KAAKnd,GAAL,CAASI,SAAT,CAAmB,KAAKgrB,iBAAxB,EAA2C,CAA3C,EAA8C,CAA9C;MACA,KAAKprB,GAAL,CAAS/gC,OAAT;MACA,KAAKmsD,iBAAL,GAAyB,IAAzB;IAN0B;EARP;EAkBvB37B,WAAA,EAAa;IACX,KAAK,CAAAs8B,mBAAL;IAEA,KAAKvB,cAAL,CAAoB5lC,KAApB;IACA,KAAK6lC,cAAL,CAAoB7lC,KAApB;IAEA,WAAWib,KAAX,IAAoB,KAAKkrB,iBAAL,CAAuBvmC,MAAvB,EAApB,EAAqD;MACnD,WAAWyJ,MAAX,IAAqB4R,KAAA,CAAMrb,MAAN,EAArB,EAAqC;QACnC,IACE,OAAOynC,iBAAP,KAA6B,WAA7B,IACAh+B,MAAA,YAAkBg+B,iBAFpB,EAGE;UACAh+B,MAAA,CAAOhB,KAAP,GAAegB,MAAA,CAAOf,MAAP,GAAgB,CAA/B;QADA;MAJiC;MAQrC2S,KAAA,CAAMjb,KAAN;IATmD;IAWrD,KAAKmmC,iBAAL,CAAuBnmC,KAAvB;IACA,KAAK,CAAAsnC,UAAL;EAlBW;EAqBb,CAAAA,WAAA,EAAc;IACZ,IAAI,KAAKxrC,UAAT,EAAqB;MACnB,MAAMyrC,WAAA,GAAc,KAAKx1C,aAAL,CAAmBuxB,YAAnB,CAClB,KAAKxnB,UAAL,CAAgBynB,UADE,EAElB,KAAKznB,UAAL,CAAgBH,UAFE,CAApB;MAIA,IAAI4rC,WAAA,KAAgB,MAApB,EAA4B;QAC1B,MAAMC,WAAA,GAAc,KAAKpsB,GAAL,CAASoO,MAA7B;QACA,KAAKpO,GAAL,CAASoO,MAAT,GAAkB+d,WAAlB;QACA,KAAKnsB,GAAL,CAASI,SAAT,CAAmB,KAAKJ,GAAL,CAAS/R,MAA5B,EAAoC,CAApC,EAAuC,CAAvC;QACA,KAAK+R,GAAL,CAASoO,MAAT,GAAkBge,WAAlB;MAJ0B;IALT;EADT;EAedC,YAAYC,GAAZ,EAAiBjgD,gBAAjB,EAAmC;IAIjC,MAAM4gB,KAAA,GAAQq/B,GAAA,CAAIr/B,KAAlB;IACA,MAAMC,MAAA,GAASo/B,GAAA,CAAIp/B,MAAnB;IACA,IAAIq/B,UAAA,GAAankD,IAAA,CAAKgE,GAAL,CACfhE,IAAA,CAAKk0B,KAAL,CAAWjwB,gBAAA,CAAiB,CAAjB,CAAX,EAAgCA,gBAAA,CAAiB,CAAjB,CAAhC,CADe,EAEf,CAFe,CAAjB;IAIA,IAAImgD,WAAA,GAAcpkD,IAAA,CAAKgE,GAAL,CAChBhE,IAAA,CAAKk0B,KAAL,CAAWjwB,gBAAA,CAAiB,CAAjB,CAAX,EAAgCA,gBAAA,CAAiB,CAAjB,CAAhC,CADgB,EAEhB,CAFgB,CAAlB;IAKA,IAAIogD,UAAA,GAAax/B,KAAjB;MACEy/B,WAAA,GAAcx/B,MADhB;IAEA,IAAIy/B,WAAA,GAAc,WAAlB;IACA,IAAIC,SAAJ,EAAeC,MAAf;IACA,OACGN,UAAA,GAAa,CAAb,IAAkBE,UAAA,GAAa,CAAhC,IACCD,WAAA,GAAc,CAAd,IAAmBE,WAAA,GAAc,CAFpC,EAGE;MACA,IAAIlyB,QAAA,GAAWiyB,UAAf;QACEhyB,SAAA,GAAYiyB,WADd;MAEA,IAAIH,UAAA,GAAa,CAAb,IAAkBE,UAAA,GAAa,CAAnC,EAAsC;QAIpCjyB,QAAA,GACEiyB,UAAA,IAAc,KAAd,GACIrkD,IAAA,CAAK2J,KAAL,CAAW06C,UAAA,GAAa,CAAxB,IAA6B,CAA7B,IAAkC,CADtC,GAEIrkD,IAAA,CAAKkgD,IAAL,CAAUmE,UAAA,GAAa,CAAvB,CAHN;QAIAF,UAAA,IAAcE,UAAA,GAAajyB,QAA3B;MARoC;MAUtC,IAAIgyB,WAAA,GAAc,CAAd,IAAmBE,WAAA,GAAc,CAArC,EAAwC;QAEtCjyB,SAAA,GACEiyB,WAAA,IAAe,KAAf,GACItkD,IAAA,CAAK2J,KAAL,CAAW26C,WAAA,GAAc,CAAzB,IAA8B,CAA9B,IAAmC,CADvC,GAEItkD,IAAA,CAAKkgD,IAAL,CAAUoE,WAAV,IAAyB,CAH/B;QAIAF,WAAA,IAAeE,WAAA,GAAcjyB,SAA7B;MANsC;MAQxCmyB,SAAA,GAAY,KAAKpC,cAAL,CAAoB5L,SAApB,CACV+N,WADU,EAEVnyB,QAFU,EAGVC,SAHU,CAAZ;MAKAoyB,MAAA,GAASD,SAAA,CAAUv7B,OAAnB;MACAw7B,MAAA,CAAOC,SAAP,CAAiB,CAAjB,EAAoB,CAApB,EAAuBtyB,QAAvB,EAAiCC,SAAjC;MACAoyB,MAAA,CAAOzsB,SAAP,CACEksB,GADF,EAEE,CAFF,EAGE,CAHF,EAIEG,UAJF,EAKEC,WALF,EAME,CANF,EAOE,CAPF,EAQElyB,QARF,EASEC,SATF;MAWA6xB,GAAA,GAAMM,SAAA,CAAU3+B,MAAhB;MACAw+B,UAAA,GAAajyB,QAAb;MACAkyB,WAAA,GAAcjyB,SAAd;MACAkyB,WAAA,GAAcA,WAAA,KAAgB,WAAhB,GAA8B,WAA9B,GAA4C,WAA1D;IA1CA;IA4CF,OAAO;MACLL,GADK;MAELG,UAFK;MAGLC;IAHK,CAAP;EAlEiC;EAyEnCK,kBAAkBT,GAAlB,EAAuB;IACrB,MAAMtsB,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAM;MAAE/S,KAAF;MAASC;IAAT,IAAoBo/B,GAA1B;IACA,MAAMhK,SAAA,GAAY,KAAK3G,OAAL,CAAa2G,SAA/B;IACA,MAAM0K,aAAA,GAAgB,KAAKrR,OAAL,CAAa6G,WAAnC;IACA,MAAMyK,gBAAA,GAAmB,IAAAvX,kCAAA,EAAoB1V,GAApB,CAAzB;IAEA,IAAIH,KAAJ,EAAW9e,QAAX,EAAqBmsC,MAArB,EAA6BC,UAA7B;IACA,IAAK,CAAAb,GAAA,CAAIt/B,MAAJ,IAAcs/B,GAAA,CAAIt7C,IAAlB,KAA2Bs7C,GAAA,CAAIxL,KAAJ,GAAY,CAA5C,EAA+C;MAC7C,MAAMsM,OAAA,GAAUd,GAAA,CAAIt/B,MAAJ,IAAcs/B,GAAA,CAAIt7C,IAAJ,CAASvH,MAAvC;MAOAsX,QAAA,GAAW2Q,IAAA,CAAKC,SAAL,CACTq7B,aAAA,GACIC,gBADJ,GAEI,CAACA,gBAAA,CAAiBhhD,KAAjB,CAAuB,CAAvB,EAA0B,CAA1B,CAAD,EAA+Bq2C,SAA/B,CAHK,CAAX;MAMAziB,KAAA,GAAQ,KAAKkrB,iBAAL,CAAuBt5C,GAAvB,CAA2B27C,OAA3B,CAAR;MACA,IAAI,CAACvtB,KAAL,EAAY;QACVA,KAAA,GAAQ,IAAIxuB,GAAJ,EAAR;QACA,KAAK05C,iBAAL,CAAuB/pC,GAAvB,CAA2BosC,OAA3B,EAAoCvtB,KAApC;MAFU;MAIZ,MAAMwtB,WAAA,GAAcxtB,KAAA,CAAMpuB,GAAN,CAAUsP,QAAV,CAApB;MACA,IAAIssC,WAAA,IAAe,CAACL,aAApB,EAAmC;QACjC,MAAM1tC,OAAA,GAAUlX,IAAA,CAAKiwB,KAAL,CACdjwB,IAAA,CAAKC,GAAL,CAAS4kD,gBAAA,CAAiB,CAAjB,CAAT,EAA8BA,gBAAA,CAAiB,CAAjB,CAA9B,IACEA,gBAAA,CAAiB,CAAjB,CAFY,CAAhB;QAIA,MAAM1tC,OAAA,GAAUnX,IAAA,CAAKiwB,KAAL,CACdjwB,IAAA,CAAKC,GAAL,CAAS4kD,gBAAA,CAAiB,CAAjB,CAAT,EAA8BA,gBAAA,CAAiB,CAAjB,CAA9B,IACEA,gBAAA,CAAiB,CAAjB,CAFY,CAAhB;QAIA,OAAO;UACLh/B,MAAA,EAAQo/B,WADH;UAEL/tC,OAFK;UAGLC;QAHK,CAAP;MATiC;MAenC2tC,MAAA,GAASG,WAAT;IAnC6C;IAsC/C,IAAI,CAACH,MAAL,EAAa;MACXC,UAAA,GAAa,KAAK3C,cAAL,CAAoB5L,SAApB,CAA8B,YAA9B,EAA4C3xB,KAA5C,EAAmDC,MAAnD,CAAb;MACAy4B,kBAAA,CAAmBwH,UAAA,CAAW97B,OAA9B,EAAuCi7B,GAAvC;IAFW;IAUb,IAAIgB,YAAA,GAAeziD,UAAA,CAAK3L,SAAL,CAAe+tD,gBAAf,EAAiC,CAClD,IAAIhgC,KAD8C,EAElD,CAFkD,EAGlD,CAHkD,EAIlD,CAAC,CAAD,GAAKC,MAJ6C,EAKlD,CALkD,EAMlD,CANkD,CAAjC,CAAnB;IAQAogC,YAAA,GAAeziD,UAAA,CAAK3L,SAAL,CAAeouD,YAAf,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAACpgC,MAAjB,CAA7B,CAAf;IACA,MAAMqgC,KAAA,GAAQ1iD,UAAA,CAAKU,cAAL,CAAoB,CAAC,CAAD,EAAI,CAAJ,CAApB,EAA4B+hD,YAA5B,CAAd;IACA,MAAME,KAAA,GAAQ3iD,UAAA,CAAKU,cAAL,CAAoB,CAAC0hB,KAAD,EAAQC,MAAR,CAApB,EAAqCogC,YAArC,CAAd;IACA,MAAMtgD,IAAA,GAAOnC,UAAA,CAAKkC,aAAL,CAAmB,CAACwgD,KAAA,CAAM,CAAN,CAAD,EAAWA,KAAA,CAAM,CAAN,CAAX,EAAqBC,KAAA,CAAM,CAAN,CAArB,EAA+BA,KAAA,CAAM,CAAN,CAA/B,CAAnB,CAAb;IACA,MAAMC,UAAA,GAAarlD,IAAA,CAAKiwB,KAAL,CAAWrrB,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAArB,KAAiC,CAApD;IACA,MAAM0gD,WAAA,GAActlD,IAAA,CAAKiwB,KAAL,CAAWrrB,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAArB,KAAiC,CAArD;IACA,MAAM2gD,UAAA,GAAa,KAAKnD,cAAL,CAAoB5L,SAApB,CACjB,YADiB,EAEjB6O,UAFiB,EAGjBC,WAHiB,CAAnB;IAKA,MAAME,OAAA,GAAUD,UAAA,CAAWt8B,OAA3B;IAMA,MAAM/R,OAAA,GAAUlX,IAAA,CAAKC,GAAL,CAASklD,KAAA,CAAM,CAAN,CAAT,EAAmBC,KAAA,CAAM,CAAN,CAAnB,CAAhB;IACA,MAAMjuC,OAAA,GAAUnX,IAAA,CAAKC,GAAL,CAASklD,KAAA,CAAM,CAAN,CAAT,EAAmBC,KAAA,CAAM,CAAN,CAAnB,CAAhB;IACAI,OAAA,CAAQ52B,SAAR,CAAkB,CAAC1X,OAAnB,EAA4B,CAACC,OAA7B;IACAquC,OAAA,CAAQ1uD,SAAR,CAAkB,GAAGouD,YAArB;IAEA,IAAI,CAACJ,MAAL,EAAa;MAEXA,MAAA,GAAS,KAAKb,WAAL,CACPc,UAAA,CAAWl/B,MADJ,EAEP,IAAA4nB,yCAAA,EAA2B+X,OAA3B,CAFO,CAAT;MAIAV,MAAA,GAASA,MAAA,CAAOZ,GAAhB;MACA,IAAIzsB,KAAA,IAASmtB,aAAb,EAA4B;QAC1BntB,KAAA,CAAM7e,GAAN,CAAUD,QAAV,EAAoBmsC,MAApB;MAD0B;IAPjB;IAYbU,OAAA,CAAQC,qBAAR,GAAgC/E,wBAAA,CAC9B,IAAApT,kCAAA,EAAoBkY,OAApB,CAD8B,EAE9BtB,GAAA,CAAIvD,WAF0B,CAAhC;IAKAjK,wBAAA,CACE8O,OADF,EAEEV,MAFF,EAGE,CAHF,EAIE,CAJF,EAKEA,MAAA,CAAOjgC,KALT,EAMEigC,MAAA,CAAOhgC,MANT,EAOE,CAPF,EAQE,CARF,EASED,KATF,EAUEC,MAVF;IAYA0gC,OAAA,CAAQ/G,wBAAR,GAAmC,WAAnC;IAEA,MAAMiH,OAAA,GAAUjjD,UAAA,CAAK3L,SAAL,CAAe,IAAA22C,yCAAA,EAA2B+X,OAA3B,CAAf,EAAoD,CAClE,CADkE,EAElE,CAFkE,EAGlE,CAHkE,EAIlE,CAJkE,EAKlE,CAACtuC,OALiE,EAMlE,CAACC,OANiE,CAApD,CAAhB;IAQAquC,OAAA,CAAQrH,SAAR,GAAoByG,aAAA,GAChB1K,SAAA,CAAUyL,UAAV,CAAqB/tB,GAArB,EAA0B,IAA1B,EAAgC8tB,OAAhC,EAAyClK,wBAAA,CAAS7rD,IAAlD,CADgB,GAEhBuqD,SAFJ;IAIAsL,OAAA,CAAQzC,QAAR,CAAiB,CAAjB,EAAoB,CAApB,EAAuBl+B,KAAvB,EAA8BC,MAA9B;IAEA,IAAI2S,KAAA,IAAS,CAACmtB,aAAd,EAA6B;MAG3B,KAAKxC,cAAL,CAAoB1oC,MAApB,CAA2B,YAA3B;MACA+d,KAAA,CAAM7e,GAAN,CAAUD,QAAV,EAAoB4sC,UAAA,CAAW1/B,MAA/B;IAJ2B;IAQ7B,OAAO;MACLA,MAAA,EAAQ0/B,UAAA,CAAW1/B,MADd;MAEL3O,OAAA,EAASlX,IAAA,CAAKiwB,KAAL,CAAW/Y,OAAX,CAFJ;MAGLC,OAAA,EAASnX,IAAA,CAAKiwB,KAAL,CAAW9Y,OAAX;IAHJ,CAAP;EA3IqB;EAmJvB/gB,aAAayuB,KAAb,EAAoB;IAClB,IAAIA,KAAA,KAAU,KAAK0uB,OAAL,CAAagH,SAA3B,EAAsC;MACpC,KAAKkI,uBAAL,CAA6B,CAA7B,IAAkC,CAAC,CAAnC;IADoC;IAGtC,KAAKlP,OAAL,CAAagH,SAAb,GAAyB11B,KAAzB;IACA,KAAK+S,GAAL,CAAS2iB,SAAT,GAAqB11B,KAArB;EALkB;EAQpBxuB,WAAWu3B,KAAX,EAAkB;IAChB,KAAKgK,GAAL,CAAS0mB,OAAT,GAAmByC,eAAA,CAAgBnzB,KAAhB,CAAnB;EADgB;EAIlBt3B,YAAYs3B,KAAZ,EAAmB;IACjB,KAAKgK,GAAL,CAAS2mB,QAAT,GAAoByC,gBAAA,CAAiBpzB,KAAjB,CAApB;EADiB;EAInBr3B,cAAcqvD,KAAd,EAAqB;IACnB,KAAKhuB,GAAL,CAAS4mB,UAAT,GAAsBoH,KAAtB;EADmB;EAIrBpvD,QAAQqvD,SAAR,EAAmBC,SAAnB,EAA8B;IAC5B,MAAMluB,GAAA,GAAM,KAAKA,GAAjB;IACA,IAAIA,GAAA,CAAIkmB,WAAJ,KAAoBt+C,SAAxB,EAAmC;MACjCo4B,GAAA,CAAIkmB,WAAJ,CAAgB+H,SAAhB;MACAjuB,GAAA,CAAIomB,cAAJ,GAAqB8H,SAArB;IAFiC;EAFP;EAQ9BrvD,mBAAmB+gB,MAAnB,EAA2B;EAI3B9gB,YAAYqvD,QAAZ,EAAsB;EAItBpvD,UAAUqvD,MAAV,EAAkB;IAChB,WAAW,CAAChlD,GAAD,EAAMjD,KAAN,CAAX,IAA2BioD,MAA3B,EAAmC;MACjC,QAAQhlD,GAAR;QACE,KAAK,IAAL;UACE,KAAK5K,YAAL,CAAkB2H,KAAlB;UACA;QACF,KAAK,IAAL;UACE,KAAK1H,UAAL,CAAgB0H,KAAhB;UACA;QACF,KAAK,IAAL;UACE,KAAKzH,WAAL,CAAiByH,KAAjB;UACA;QACF,KAAK,IAAL;UACE,KAAKxH,aAAL,CAAmBwH,KAAnB;UACA;QACF,KAAK,GAAL;UACE,KAAKvH,OAAL,CAAauH,KAAA,CAAM,CAAN,CAAb,EAAuBA,KAAA,CAAM,CAAN,CAAvB;UACA;QACF,KAAK,IAAL;UACE,KAAKtH,kBAAL,CAAwBsH,KAAxB;UACA;QACF,KAAK,IAAL;UACE,KAAKrH,WAAL,CAAiBqH,KAAjB;UACA;QACF,KAAK,MAAL;UACE,KAAKxF,OAAL,CAAawF,KAAA,CAAM,CAAN,CAAb,EAAuBA,KAAA,CAAM,CAAN,CAAvB;UACA;QACF,KAAK,IAAL;UACE,KAAKw1C,OAAL,CAAa+G,WAAb,GAA2Bv8C,KAA3B;UACA;QACF,KAAK,IAAL;UACE,KAAKw1C,OAAL,CAAa8G,SAAb,GAAyBt8C,KAAzB;UACA,KAAK65B,GAAL,CAASymB,WAAT,GAAuBtgD,KAAvB;UACA;QACF,KAAK,IAAL;UACE,KAAK65B,GAAL,CAAS6mB,wBAAT,GAAoC1gD,KAApC;UACA;QACF,KAAK,OAAL;UACE,KAAKw1C,OAAL,CAAaiH,WAAb,GAA2Bz8C,KAAA,GAAQ,KAAKkkD,SAAb,GAAyB,IAApD;UACA,KAAKA,SAAL,GAAiB,IAAjB;UACA,KAAKgE,eAAL;UACA;QACF,KAAK,IAAL;UACE,KAAKruB,GAAL,CAASoO,MAAT,GAAkB,KAAKuN,OAAL,CAAakH,YAAb,GAChB,KAAKlsC,aAAL,CAAmB82B,SAAnB,CAA6BtnC,KAA7B,CADF;UAEA;MA3CJ;IADiC;EADnB;EAkDlB,IAAI6lD,WAAJA,CAAA,EAAkB;IAChB,OAAO,CAAC,CAAC,KAAK1B,YAAd;EADgB;EAIlB+D,gBAAA,EAAkB;IAChB,MAAMrC,WAAA,GAAc,KAAKA,WAAzB;IACA,IAAI,KAAKrQ,OAAL,CAAaiH,WAAb,IAA4B,CAACoJ,WAAjC,EAA8C;MAC5C,KAAKsC,cAAL;IAD4C,CAA9C,MAEO,IAAI,CAAC,KAAK3S,OAAL,CAAaiH,WAAd,IAA6BoJ,WAAjC,EAA8C;MACnD,KAAKuC,YAAL;IADmD;EAJrC;EAmBlBD,eAAA,EAAiB;IACf,IAAI,KAAKtC,WAAT,EAAsB;MACpB,MAAM,IAAIlnD,KAAJ,CAAU,mDAAV,CAAN;IADoB;IAGtB,MAAM2oD,UAAA,GAAa,KAAKztB,GAAL,CAAS/R,MAAT,CAAgBhB,KAAnC;IACA,MAAMygC,WAAA,GAAc,KAAK1tB,GAAL,CAAS/R,MAAT,CAAgBf,MAApC;IACA,MAAMshC,OAAA,GAAU,iBAAiB,KAAKtE,UAAtC;IACA,MAAMuE,aAAA,GAAgB,KAAKjE,cAAL,CAAoB5L,SAApB,CACpB4P,OADoB,EAEpBf,UAFoB,EAGpBC,WAHoB,CAAtB;IAKA,KAAKpD,YAAL,GAAoB,KAAKtqB,GAAzB;IACA,KAAKA,GAAL,GAAWyuB,aAAA,CAAcp9B,OAAzB;IACA,MAAM2O,GAAA,GAAM,KAAKA,GAAjB;IACAA,GAAA,CAAImd,YAAJ,CAAiB,GAAG,IAAAzH,kCAAA,EAAoB,KAAK4U,YAAzB,CAApB;IACAxE,YAAA,CAAa,KAAKwE,YAAlB,EAAgCtqB,GAAhC;IACAyc,uBAAA,CAAwBzc,GAAxB,EAA6B,KAAKsqB,YAAlC;IAEA,KAAKvrD,SAAL,CAAe,CACb,CAAC,IAAD,EAAO,aAAP,CADa,EAEb,CAAC,IAAD,EAAO,CAAP,CAFa,EAGb,CAAC,IAAD,EAAO,CAAP,CAHa,CAAf;EAnBe;EA0BjBwvD,aAAA,EAAe;IACb,IAAI,CAAC,KAAKvC,WAAV,EAAuB;MACrB,MAAM,IAAIlnD,KAAJ,CAAU,6CAAV,CAAN;IADqB;IAKvB,KAAKk7B,GAAL,CAAS2c,gBAAT;IACAmJ,YAAA,CAAa,KAAK9lB,GAAlB,EAAuB,KAAKsqB,YAA5B;IACA,KAAKtqB,GAAL,GAAW,KAAKsqB,YAAhB;IAEA,KAAKA,YAAL,GAAoB,IAApB;EAVa;EAafoE,QAAQC,QAAR,EAAkB;IAChB,IAAI,CAAC,KAAKhT,OAAL,CAAaiH,WAAlB,EAA+B;MAC7B;IAD6B;IAI/B,IAAI,CAAC+L,QAAL,EAAe;MACbA,QAAA,GAAW,CAAC,CAAD,EAAI,CAAJ,EAAO,KAAK3uB,GAAL,CAAS/R,MAAT,CAAgBhB,KAAvB,EAA8B,KAAK+S,GAAL,CAAS/R,MAAT,CAAgBf,MAA9C,CAAX;IADa,CAAf,MAEO;MACLyhC,QAAA,CAAS,CAAT,IAAcvmD,IAAA,CAAK2J,KAAL,CAAW48C,QAAA,CAAS,CAAT,CAAX,CAAd;MACAA,QAAA,CAAS,CAAT,IAAcvmD,IAAA,CAAK2J,KAAL,CAAW48C,QAAA,CAAS,CAAT,CAAX,CAAd;MACAA,QAAA,CAAS,CAAT,IAAcvmD,IAAA,CAAKkgD,IAAL,CAAUqG,QAAA,CAAS,CAAT,CAAV,CAAd;MACAA,QAAA,CAAS,CAAT,IAAcvmD,IAAA,CAAKkgD,IAAL,CAAUqG,QAAA,CAAS,CAAT,CAAV,CAAd;IAJK;IAMP,MAAMjG,KAAA,GAAQ,KAAK/M,OAAL,CAAaiH,WAA3B;IACA,MAAM0H,YAAA,GAAe,KAAKA,YAA1B;IAEA7B,YAAA,CAAa6B,YAAb,EAA2B5B,KAA3B,EAAkC,KAAK1oB,GAAvC,EAA4C2uB,QAA5C;IAGA,KAAK3uB,GAAL,CAAShhC,IAAT;IACA,KAAKghC,GAAL,CAASmd,YAAT,CAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC;IACA,KAAKnd,GAAL,CAAS8sB,SAAT,CAAmB,CAAnB,EAAsB,CAAtB,EAAyB,KAAK9sB,GAAL,CAAS/R,MAAT,CAAgBhB,KAAzC,EAAgD,KAAK+S,GAAL,CAAS/R,MAAT,CAAgBf,MAAhE;IACA,KAAK8S,GAAL,CAAS/gC,OAAT;EAtBgB;EAyBlBD,KAAA,EAAO;IACL,IAAI,KAAKgtD,WAAT,EAAsB;MAIpBlG,YAAA,CAAa,KAAK9lB,GAAlB,EAAuB,KAAKsqB,YAA5B;MAGA,KAAKA,YAAL,CAAkBtrD,IAAlB;IAPoB,CAAtB,MAQO;MACL,KAAKghC,GAAL,CAAShhC,IAAT;IADK;IAGP,MAAM4vD,GAAA,GAAM,KAAKjT,OAAjB;IACA,KAAK8N,UAAL,CAAgBjhD,IAAhB,CAAqBomD,GAArB;IACA,KAAKjT,OAAL,GAAeiT,GAAA,CAAI98B,KAAJ,EAAf;EAdK;EAiBP7yB,QAAA,EAAU;IACR,IAAI,KAAKwqD,UAAL,CAAgB9jD,MAAhB,KAA2B,CAA3B,IAAgC,KAAKqmD,WAAzC,EAAsD;MACpD,KAAKuC,YAAL;IADoD;IAGtD,IAAI,KAAK9E,UAAL,CAAgB9jD,MAAhB,KAA2B,CAA/B,EAAkC;MAChC,KAAKg2C,OAAL,GAAe,KAAK8N,UAAL,CAAgBoF,GAAhB,EAAf;MACA,IAAI,KAAK7C,WAAT,EAAsB;QAGpB,KAAK1B,YAAL,CAAkBrrD,OAAlB;QACA6mD,YAAA,CAAa,KAAKwE,YAAlB,EAAgC,KAAKtqB,GAArC;MAJoB,CAAtB,MAKO;QACL,KAAKA,GAAL,CAAS/gC,OAAT;MADK;MAGP,KAAKovD,eAAL;MAGA,KAAK3E,WAAL,GAAmB,IAAnB;MAEA,KAAKmB,uBAAL,CAA6B,CAA7B,IAAkC,CAAC,CAAnC;MACA,KAAKC,0BAAL,GAAkC,IAAlC;IAhBgC;EAJ1B;EAwBV5rD,UAAUsN,CAAV,EAAavB,CAAb,EAAgBwB,CAAhB,EAAmBZ,CAAnB,EAAsBitB,CAAtB,EAAyB6c,CAAzB,EAA4B;IAC1B,KAAK3V,GAAL,CAAS9gC,SAAT,CAAmBsN,CAAnB,EAAsBvB,CAAtB,EAAyBwB,CAAzB,EAA4BZ,CAA5B,EAA+BitB,CAA/B,EAAkC6c,CAAlC;IAEA,KAAKkV,uBAAL,CAA6B,CAA7B,IAAkC,CAAC,CAAnC;IACA,KAAKC,0BAAL,GAAkC,IAAlC;EAJ0B;EAQ5BhnD,cAAcgrD,GAAd,EAAmBxrB,IAAnB,EAAyBn4B,MAAzB,EAAiC;IAC/B,MAAM60B,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAM2b,OAAA,GAAU,KAAKA,OAArB;IACA,IAAI1nB,CAAA,GAAI0nB,OAAA,CAAQ1nB,CAAhB;MACEC,CAAA,GAAIynB,OAAA,CAAQznB,CADd;IAEA,IAAI66B,MAAJ,EAAYC,MAAZ;IACA,MAAM/B,gBAAA,GAAmB,IAAAvX,kCAAA,EAAoB1V,GAApB,CAAzB;IAQA,MAAMivB,eAAA,GACHhC,gBAAA,CAAiB,CAAjB,MAAwB,CAAxB,IAA6BA,gBAAA,CAAiB,CAAjB,MAAwB,CAAtD,IACCA,gBAAA,CAAiB,CAAjB,MAAwB,CAAxB,IAA6BA,gBAAA,CAAiB,CAAjB,MAAwB,CAFxD;IAGA,MAAMiC,eAAA,GAAkBD,eAAA,GAAkB9jD,MAAA,CAAOc,KAAP,CAAa,CAAb,CAAlB,GAAoC,IAA5D;IAEA,KAAK,IAAI/D,CAAA,GAAI,CAAR,EAAWuG,CAAA,GAAI,CAAf,EAAkBW,EAAA,GAAK0/C,GAAA,CAAInpD,MAA3B,EAAmCuC,CAAA,GAAIkH,EAA5C,EAAgDlH,CAAA,EAAhD,EAAqD;MACnD,QAAQ4mD,GAAA,CAAI5mD,CAAJ,IAAS,CAAjB;QACE,KAAK5J,SAAA,CAAImB,SAAT;UACEw0B,CAAA,GAAIqP,IAAA,CAAK70B,CAAA,EAAL,CAAJ;UACAylB,CAAA,GAAIoP,IAAA,CAAK70B,CAAA,EAAL,CAAJ;UACA,MAAMwe,KAAA,GAAQqW,IAAA,CAAK70B,CAAA,EAAL,CAAd;UACA,MAAMye,MAAA,GAASoW,IAAA,CAAK70B,CAAA,EAAL,CAAf;UAEA,MAAM0gD,EAAA,GAAKl7B,CAAA,GAAIhH,KAAf;UACA,MAAMmiC,EAAA,GAAKl7B,CAAA,GAAIhH,MAAf;UACA8S,GAAA,CAAI7gC,MAAJ,CAAW80B,CAAX,EAAcC,CAAd;UACA,IAAIjH,KAAA,KAAU,CAAV,IAAeC,MAAA,KAAW,CAA9B,EAAiC;YAC/B8S,GAAA,CAAI5gC,MAAJ,CAAW+vD,EAAX,EAAeC,EAAf;UAD+B,CAAjC,MAEO;YACLpvB,GAAA,CAAI5gC,MAAJ,CAAW+vD,EAAX,EAAej7B,CAAf;YACA8L,GAAA,CAAI5gC,MAAJ,CAAW+vD,EAAX,EAAeC,EAAf;YACApvB,GAAA,CAAI5gC,MAAJ,CAAW60B,CAAX,EAAcm7B,EAAd;UAHK;UAKP,IAAI,CAACH,eAAL,EAAsB;YACpBtT,OAAA,CAAQ2H,gBAAR,CAAyB2J,gBAAzB,EAA2C,CAACh5B,CAAD,EAAIC,CAAJ,EAAOi7B,EAAP,EAAWC,EAAX,CAA3C;UADoB;UAGtBpvB,GAAA,CAAIxgC,SAAJ;UACA;QACF,KAAKlB,SAAA,CAAIa,MAAT;UACE80B,CAAA,GAAIqP,IAAA,CAAK70B,CAAA,EAAL,CAAJ;UACAylB,CAAA,GAAIoP,IAAA,CAAK70B,CAAA,EAAL,CAAJ;UACAuxB,GAAA,CAAI7gC,MAAJ,CAAW80B,CAAX,EAAcC,CAAd;UACA,IAAI,CAAC+6B,eAAL,EAAsB;YACpBtT,OAAA,CAAQsH,gBAAR,CAAyBgK,gBAAzB,EAA2Ch5B,CAA3C,EAA8CC,CAA9C;UADoB;UAGtB;QACF,KAAK51B,SAAA,CAAIc,MAAT;UACE60B,CAAA,GAAIqP,IAAA,CAAK70B,CAAA,EAAL,CAAJ;UACAylB,CAAA,GAAIoP,IAAA,CAAK70B,CAAA,EAAL,CAAJ;UACAuxB,GAAA,CAAI5gC,MAAJ,CAAW60B,CAAX,EAAcC,CAAd;UACA,IAAI,CAAC+6B,eAAL,EAAsB;YACpBtT,OAAA,CAAQsH,gBAAR,CAAyBgK,gBAAzB,EAA2Ch5B,CAA3C,EAA8CC,CAA9C;UADoB;UAGtB;QACF,KAAK51B,SAAA,CAAIe,OAAT;UACE0vD,MAAA,GAAS96B,CAAT;UACA+6B,MAAA,GAAS96B,CAAT;UACAD,CAAA,GAAIqP,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAJ;UACAylB,CAAA,GAAIoP,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAJ;UACAuxB,GAAA,CAAI0d,aAAJ,CACEpa,IAAA,CAAK70B,CAAL,CADF,EAEE60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAFF,EAGE60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAHF,EAIE60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAJF,EAKEwlB,CALF,EAMEC,CANF;UAQAynB,OAAA,CAAQ6H,qBAAR,CACEyJ,gBADF,EAEE8B,MAFF,EAGEC,MAHF,EAIE1rB,IAAA,CAAK70B,CAAL,CAJF,EAKE60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CALF,EAME60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CANF,EAOE60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAPF,EAQEwlB,CARF,EASEC,CATF,EAUEg7B,eAVF;UAYAzgD,CAAA,IAAK,CAAL;UACA;QACF,KAAKnQ,SAAA,CAAIgB,QAAT;UACEyvD,MAAA,GAAS96B,CAAT;UACA+6B,MAAA,GAAS96B,CAAT;UACA8L,GAAA,CAAI0d,aAAJ,CACEzpB,CADF,EAEEC,CAFF,EAGEoP,IAAA,CAAK70B,CAAL,CAHF,EAIE60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAJF,EAKE60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CALF,EAME60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CANF;UAQAktC,OAAA,CAAQ6H,qBAAR,CACEyJ,gBADF,EAEE8B,MAFF,EAGEC,MAHF,EAIE/6B,CAJF,EAKEC,CALF,EAMEoP,IAAA,CAAK70B,CAAL,CANF,EAOE60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAPF,EAQE60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CARF,EASE60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CATF,EAUEygD,eAVF;UAYAj7B,CAAA,GAAIqP,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAJ;UACAylB,CAAA,GAAIoP,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAJ;UACAA,CAAA,IAAK,CAAL;UACA;QACF,KAAKnQ,SAAA,CAAIiB,QAAT;UACEwvD,MAAA,GAAS96B,CAAT;UACA+6B,MAAA,GAAS96B,CAAT;UACAD,CAAA,GAAIqP,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAJ;UACAylB,CAAA,GAAIoP,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAJ;UACAuxB,GAAA,CAAI0d,aAAJ,CAAkBpa,IAAA,CAAK70B,CAAL,CAAlB,EAA2B60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAA3B,EAAwCwlB,CAAxC,EAA2CC,CAA3C,EAA8CD,CAA9C,EAAiDC,CAAjD;UACAynB,OAAA,CAAQ6H,qBAAR,CACEyJ,gBADF,EAEE8B,MAFF,EAGEC,MAHF,EAIE1rB,IAAA,CAAK70B,CAAL,CAJF,EAKE60B,IAAA,CAAK70B,CAAA,GAAI,CAAT,CALF,EAMEwlB,CANF,EAOEC,CAPF,EAQED,CARF,EASEC,CATF,EAUEg7B,eAVF;UAYAzgD,CAAA,IAAK,CAAL;UACA;QACF,KAAKnQ,SAAA,CAAIkB,SAAT;UACEwgC,GAAA,CAAIxgC,SAAJ;UACA;MAlHJ;IADmD;IAuHrD,IAAIyvD,eAAJ,EAAqB;MACnBtT,OAAA,CAAQ4H,uBAAR,CAAgC0J,gBAAhC,EAAkDiC,eAAlD;IADmB;IAIrBvT,OAAA,CAAQqH,eAAR,CAAwB/uB,CAAxB,EAA2BC,CAA3B;EA9I+B;EAiJjC10B,UAAA,EAAY;IACV,KAAKwgC,GAAL,CAASxgC,SAAT;EADU;EAIZE,OAAO2vD,WAAA,GAAc,IAArB,EAA2B;IACzB,MAAMrvB,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMuiB,WAAA,GAAc,KAAK5G,OAAL,CAAa4G,WAAjC;IAGAviB,GAAA,CAAIymB,WAAJ,GAAkB,KAAK9K,OAAL,CAAa+G,WAA/B;IACA,IAAI,KAAK6H,cAAT,EAAyB;MACvB,IAAI,OAAOhI,WAAP,KAAuB,QAAvB,IAAmCA,WAAA,EAAawL,UAApD,EAAgE;QAC9D/tB,GAAA,CAAIhhC,IAAJ;QACAghC,GAAA,CAAIsmB,WAAJ,GAAkB/D,WAAA,CAAYwL,UAAZ,CAChB/tB,GADgB,EAEhB,IAFgB,EAGhB,IAAA6V,yCAAA,EAA2B7V,GAA3B,CAHgB,EAIhB4jB,wBAAA,CAAS5rD,MAJO,CAAlB;QAMA,KAAKs3D,gBAAL,CAAwC,KAAxC;QACAtvB,GAAA,CAAI/gC,OAAJ;MAT8D,CAAhE,MAUO;QACL,KAAKqwD,gBAAL,CAAwC,IAAxC;MADK;IAXgB;IAezB,IAAID,WAAJ,EAAiB;MACf,KAAKA,WAAL,CAAiB,KAAK1T,OAAL,CAAauI,yBAAb,EAAjB;IADe;IAIjBlkB,GAAA,CAAIymB,WAAJ,GAAkB,KAAK9K,OAAL,CAAa8G,SAA/B;EAzByB;EA4B3B9iD,YAAA,EAAc;IACZ,KAAKH,SAAL;IACA,KAAKE,MAAL;EAFY;EAKdE,KAAKyvD,WAAA,GAAc,IAAnB,EAAyB;IACvB,MAAMrvB,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMsiB,SAAA,GAAY,KAAK3G,OAAL,CAAa2G,SAA/B;IACA,MAAM0K,aAAA,GAAgB,KAAKrR,OAAL,CAAa6G,WAAnC;IACA,IAAI+M,WAAA,GAAc,KAAlB;IAEA,IAAIvC,aAAJ,EAAmB;MACjBhtB,GAAA,CAAIhhC,IAAJ;MACAghC,GAAA,CAAIumB,SAAJ,GAAgBjE,SAAA,CAAUyL,UAAV,CACd/tB,GADc,EAEd,IAFc,EAGd,IAAA6V,yCAAA,EAA2B7V,GAA3B,CAHc,EAId4jB,wBAAA,CAAS7rD,IAJK,CAAhB;MAMAw3D,WAAA,GAAc,IAAd;IARiB;IAWnB,MAAMtiD,SAAA,GAAY,KAAK0uC,OAAL,CAAauI,yBAAb,EAAlB;IACA,IAAI,KAAKqG,cAAL,IAAuBt9C,SAAA,KAAc,IAAzC,EAA+C;MAC7C,IAAI,KAAK08C,aAAT,EAAwB;QACtB3pB,GAAA,CAAIpgC,IAAJ,CAAS,SAAT;QACA,KAAK+pD,aAAL,GAAqB,KAArB;MAFsB,CAAxB,MAGO;QACL3pB,GAAA,CAAIpgC,IAAJ;MADK;IAJsC;IAS/C,IAAI2vD,WAAJ,EAAiB;MACfvvB,GAAA,CAAI/gC,OAAJ;IADe;IAGjB,IAAIowD,WAAJ,EAAiB;MACf,KAAKA,WAAL,CAAiBpiD,SAAjB;IADe;EA9BM;EAmCzBpN,OAAA,EAAS;IACP,KAAK8pD,aAAL,GAAqB,IAArB;IACA,KAAK/pD,IAAL;EAFO;EAKTE,WAAA,EAAa;IACX,KAAKF,IAAL,CAAU,KAAV;IACA,KAAKF,MAAL,CAAY,KAAZ;IAEA,KAAK2vD,WAAL;EAJW;EAObtvD,aAAA,EAAe;IACb,KAAK4pD,aAAL,GAAqB,IAArB;IACA,KAAK7pD,UAAL;EAFa;EAKfE,gBAAA,EAAkB;IAChB,KAAKR,SAAL;IACA,KAAKM,UAAL;EAFgB;EAKlBG,kBAAA,EAAoB;IAClB,KAAK0pD,aAAL,GAAqB,IAArB;IACA,KAAKnqD,SAAL;IACA,KAAKM,UAAL;EAHkB;EAMpBI,QAAA,EAAU;IACR,KAAKmvD,WAAL;EADQ;EAKVlvD,KAAA,EAAO;IACL,KAAKupD,WAAL,GAAmBL,WAAnB;EADK;EAIPjpD,OAAA,EAAS;IACP,KAAKspD,WAAL,GAAmBJ,OAAnB;EADO;EAKTjpD,UAAA,EAAY;IACV,KAAKs7C,OAAL,CAAagG,UAAb,GAA0BxsD,qBAA1B;IACA,KAAKwmD,OAAL,CAAaiG,eAAb,GAA+B,CAA/B;IACA,KAAKjG,OAAL,CAAa1nB,CAAb,GAAiB,KAAK0nB,OAAL,CAAaoG,KAAb,GAAqB,CAAtC;IACA,KAAKpG,OAAL,CAAaznB,CAAb,GAAiB,KAAKynB,OAAL,CAAaqG,KAAb,GAAqB,CAAtC;EAJU;EAOZ1hD,QAAA,EAAU;IACR,MAAMkvD,KAAA,GAAQ,KAAKC,gBAAnB;IACA,MAAMzvB,GAAA,GAAM,KAAKA,GAAjB;IACA,IAAIwvB,KAAA,KAAU5nD,SAAd,EAAyB;MACvBo4B,GAAA,CAAI8d,SAAJ;MACA;IAFuB;IAKzB9d,GAAA,CAAIhhC,IAAJ;IACAghC,GAAA,CAAI8d,SAAJ;IACA,WAAWoD,IAAX,IAAmBsO,KAAnB,EAA0B;MACxBxvB,GAAA,CAAImd,YAAJ,CAAiB,GAAG+D,IAAA,CAAKhiD,SAAzB;MACA8gC,GAAA,CAAIhJ,SAAJ,CAAckqB,IAAA,CAAKjtB,CAAnB,EAAsBitB,IAAA,CAAKhtB,CAA3B;MACAgtB,IAAA,CAAKwO,SAAL,CAAe1vB,GAAf,EAAoBkhB,IAAA,CAAKO,QAAzB;IAHwB;IAK1BzhB,GAAA,CAAI/gC,OAAJ;IACA+gC,GAAA,CAAI7/B,IAAJ;IACA6/B,GAAA,CAAI8d,SAAJ;IACA,OAAO,KAAK2R,gBAAZ;EAlBQ;EAqBVlvD,eAAeovD,OAAf,EAAwB;IACtB,KAAKhU,OAAL,CAAasG,WAAb,GAA2B0N,OAA3B;EADsB;EAIxBnvD,eAAemvD,OAAf,EAAwB;IACtB,KAAKhU,OAAL,CAAauG,WAAb,GAA2ByN,OAA3B;EADsB;EAIxBlvD,UAAU2e,KAAV,EAAiB;IACf,KAAKu8B,OAAL,CAAawG,UAAb,GAA0B/iC,KAAA,GAAQ,GAAlC;EADe;EAIjB1e,WAAWohD,OAAX,EAAoB;IAClB,KAAKnG,OAAL,CAAamG,OAAb,GAAuB,CAACA,OAAxB;EADkB;EAIpBnhD,QAAQivD,WAAR,EAAqBrsC,IAArB,EAA2B;IACzB,MAAMssC,OAAA,GAAU,KAAKlxC,UAAL,CAAgBlN,GAAhB,CAAoBm+C,WAApB,CAAhB;IACA,MAAMjU,OAAA,GAAU,KAAKA,OAArB;IAEA,IAAI,CAACkU,OAAL,EAAc;MACZ,MAAM,IAAI/qD,KAAJ,CAAW,uBAAsB8qD,WAAvB,EAAV,CAAN;IADY;IAGdjU,OAAA,CAAQkG,UAAR,GAAqBgO,OAAA,CAAQhO,UAAR,IAAsBzsD,0BAA3C;IAIA,IAAIumD,OAAA,CAAQkG,UAAR,CAAmB,CAAnB,MAA0B,CAA1B,IAA+BlG,OAAA,CAAQkG,UAAR,CAAmB,CAAnB,MAA0B,CAA7D,EAAgE;MAC9D,IAAAj9C,UAAA,EAAK,kCAAkCgrD,WAAvC;IAD8D;IAMhE,IAAIrsC,IAAA,GAAO,CAAX,EAAc;MACZA,IAAA,GAAO,CAACA,IAAR;MACAo4B,OAAA,CAAQmU,aAAR,GAAwB,CAAC,CAAzB;IAFY,CAAd,MAGO;MACLnU,OAAA,CAAQmU,aAAR,GAAwB,CAAxB;IADK;IAIP,KAAKnU,OAAL,CAAalvB,IAAb,GAAoBojC,OAApB;IACA,KAAKlU,OAAL,CAAa8F,QAAb,GAAwBl+B,IAAxB;IAEA,IAAIssC,OAAA,CAAQE,WAAZ,EAAyB;MACvB;IADuB;IAIzB,MAAMlpD,IAAA,GAAOgpD,OAAA,CAAQvX,UAAR,IAAsB,YAAnC;IACA,MAAM0X,QAAA,GACJH,OAAA,CAAQ/W,cAAR,EAAwBoC,GAAxB,IAAgC,IAAGr0C,IAAK,MAAKgpD,OAAA,CAAQI,YAAtB,EADjC;IAGA,IAAIC,IAAA,GAAO,QAAX;IACA,IAAIL,OAAA,CAAQvK,KAAZ,EAAmB;MACjB4K,IAAA,GAAO,KAAP;IADiB,CAAnB,MAEO,IAAIL,OAAA,CAAQK,IAAZ,EAAkB;MACvBA,IAAA,GAAO,MAAP;IADuB;IAGzB,MAAMC,MAAA,GAASN,OAAA,CAAQM,MAAR,GAAiB,QAAjB,GAA4B,QAA3C;IAMA,IAAIC,eAAA,GAAkB7sC,IAAtB;IACA,IAAIA,IAAA,GAAO24B,aAAX,EAA0B;MACxBkU,eAAA,GAAkBlU,aAAlB;IADwB,CAA1B,MAEO,IAAI34B,IAAA,GAAO44B,aAAX,EAA0B;MAC/BiU,eAAA,GAAkBjU,aAAlB;IAD+B;IAGjC,KAAKR,OAAL,CAAa+F,aAAb,GAA6Bn+B,IAAA,GAAO6sC,eAApC;IAEA,KAAKpwB,GAAL,CAASvT,IAAT,GAAgB,GAAG0jC,MAAO,IAAGD,IAAK,IAAGE,eAAgB,MAAKJ,QAA1C,EAAhB;EAvDyB;EA0D3BpvD,qBAAqBwkC,IAArB,EAA2B;IACzB,KAAKuW,OAAL,CAAayG,iBAAb,GAAiChd,IAAjC;EADyB;EAI3BvkC,YAAYwvD,IAAZ,EAAkB;IAChB,KAAK1U,OAAL,CAAa0G,QAAb,GAAwBgO,IAAxB;EADgB;EAIlBvvD,SAASmzB,CAAT,EAAYC,CAAZ,EAAe;IACb,KAAKynB,OAAL,CAAa1nB,CAAb,GAAiB,KAAK0nB,OAAL,CAAaoG,KAAb,IAAsB9tB,CAAvC;IACA,KAAK0nB,OAAL,CAAaznB,CAAb,GAAiB,KAAKynB,OAAL,CAAaqG,KAAb,IAAsB9tB,CAAvC;EAFa;EAKfnzB,mBAAmBkzB,CAAnB,EAAsBC,CAAtB,EAAyB;IACvB,KAAKxzB,UAAL,CAAgB,CAACwzB,CAAjB;IACA,KAAKpzB,QAAL,CAAcmzB,CAAd,EAAiBC,CAAjB;EAFuB;EAKzBlzB,cAAcwL,CAAd,EAAiBvB,CAAjB,EAAoBwB,CAApB,EAAuBZ,CAAvB,EAA0BitB,CAA1B,EAA6B6c,CAA7B,EAAgC;IAC9B,KAAKgG,OAAL,CAAagG,UAAb,GAA0B,CAACn1C,CAAD,EAAIvB,CAAJ,EAAOwB,CAAP,EAAUZ,CAAV,EAAaitB,CAAb,EAAgB6c,CAAhB,CAA1B;IACA,KAAKgG,OAAL,CAAaiG,eAAb,GAA+Bx5C,IAAA,CAAKk0B,KAAL,CAAW9vB,CAAX,EAAcvB,CAAd,CAA/B;IAEA,KAAK0wC,OAAL,CAAa1nB,CAAb,GAAiB,KAAK0nB,OAAL,CAAaoG,KAAb,GAAqB,CAAtC;IACA,KAAKpG,OAAL,CAAaznB,CAAb,GAAiB,KAAKynB,OAAL,CAAaqG,KAAb,GAAqB,CAAtC;EAL8B;EAQhC/gD,SAAA,EAAW;IACT,KAAKH,QAAL,CAAc,CAAd,EAAiB,KAAK66C,OAAL,CAAamG,OAA9B;EADS;EAIXwO,UAAU9U,SAAV,EAAqBvnB,CAArB,EAAwBC,CAAxB,EAA2Bq8B,gBAA3B,EAA6C;IAC3C,MAAMvwB,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAM2b,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMlvB,IAAA,GAAOkvB,OAAA,CAAQlvB,IAArB;IACA,MAAM21B,iBAAA,GAAoBzG,OAAA,CAAQyG,iBAAlC;IACA,MAAMX,QAAA,GAAW9F,OAAA,CAAQ8F,QAAR,GAAmB9F,OAAA,CAAQ+F,aAA5C;IACA,MAAM8O,cAAA,GACJpO,iBAAA,GAAoBtqD,uBAAA,CAAkBS,gBADxC;IAEA,MAAMk4D,cAAA,GAAiB,CAAC,EACtBrO,iBAAA,GAAoBtqD,uBAAA,CAAkBU,gBAAtC,CADF;IAGA,MAAMgqD,WAAA,GAAc7G,OAAA,CAAQ6G,WAAR,IAAuB,CAAC/1B,IAAA,CAAKosB,WAAjD;IAEA,IAAI6W,SAAJ;IACA,IAAIjjC,IAAA,CAAK7W,eAAL,IAAwB66C,cAAxB,IAA0CjO,WAA9C,EAA2D;MACzDkN,SAAA,GAAYjjC,IAAA,CAAK8uB,gBAAL,CAAsB,KAAK58B,UAA3B,EAAuC68B,SAAvC,CAAZ;IADyD;IAI3D,IAAI/uB,IAAA,CAAK7W,eAAL,IAAwB4sC,WAA5B,EAAyC;MACvCxiB,GAAA,CAAIhhC,IAAJ;MACAghC,GAAA,CAAIhJ,SAAJ,CAAc/C,CAAd,EAAiBC,CAAjB;MACA8L,GAAA,CAAI8d,SAAJ;MACA4R,SAAA,CAAU1vB,GAAV,EAAeyhB,QAAf;MACA,IAAI8O,gBAAJ,EAAsB;QACpBvwB,GAAA,CAAImd,YAAJ,CAAiB,GAAGoT,gBAApB;MADoB;MAGtB,IACEC,cAAA,KAAmB14D,uBAAA,CAAkBC,IAArC,IACAy4D,cAAA,KAAmB14D,uBAAA,CAAkBG,WAFvC,EAGE;QACA+nC,GAAA,CAAIpgC,IAAJ;MADA;MAGF,IACE4wD,cAAA,KAAmB14D,uBAAA,CAAkBE,MAArC,IACAw4D,cAAA,KAAmB14D,uBAAA,CAAkBG,WAFvC,EAGE;QACA+nC,GAAA,CAAItgC,MAAJ;MADA;MAGFsgC,GAAA,CAAI/gC,OAAJ;IApBuC,CAAzC,MAqBO;MACL,IACEuxD,cAAA,KAAmB14D,uBAAA,CAAkBC,IAArC,IACAy4D,cAAA,KAAmB14D,uBAAA,CAAkBG,WAFvC,EAGE;QACA+nC,GAAA,CAAIua,QAAJ,CAAaiB,SAAb,EAAwBvnB,CAAxB,EAA2BC,CAA3B;MADA;MAGF,IACEs8B,cAAA,KAAmB14D,uBAAA,CAAkBE,MAArC,IACAw4D,cAAA,KAAmB14D,uBAAA,CAAkBG,WAFvC,EAGE;QACA+nC,GAAA,CAAI0wB,UAAJ,CAAelV,SAAf,EAA0BvnB,CAA1B,EAA6BC,CAA7B;MADA;IAVG;IAeP,IAAIu8B,cAAJ,EAAoB;MAClB,MAAMjB,KAAA,GAAS,KAAKC,gBAAL,KAA0B,EAAzC;MACAD,KAAA,CAAMhnD,IAAN,CAAW;QACTtJ,SAAA,EAAW,IAAAw2C,kCAAA,EAAoB1V,GAApB,CADF;QAET/L,CAFS;QAGTC,CAHS;QAITutB,QAJS;QAKTiO;MALS,CAAX;IAFkB;EAtDuB;EAkE7C,IAAIiB,uBAAJA,CAAA,EAA8B;IAG5B,MAAM;MAAEt/B,OAAA,EAAS2O;IAAX,IAAmB,KAAKwqB,cAAL,CAAoB5L,SAApB,CACvB,yBADuB,EAEvB,EAFuB,EAGvB,EAHuB,CAAzB;IAKA5e,GAAA,CAAI5gB,KAAJ,CAAU,GAAV,EAAe,CAAf;IACA4gB,GAAA,CAAIua,QAAJ,CAAa,GAAb,EAAkB,CAAlB,EAAqB,EAArB;IACA,MAAMvpC,IAAA,GAAOgvB,GAAA,CAAIK,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,EAAvB,EAA2B,EAA3B,EAA+BrvB,IAA5C;IACA,IAAIwb,OAAA,GAAU,KAAd;IACA,KAAK,IAAItkB,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI8I,IAAA,CAAKrL,MAAzB,EAAiCuC,CAAA,IAAK,CAAtC,EAAyC;MACvC,IAAI8I,IAAA,CAAK9I,CAAL,IAAU,CAAV,IAAe8I,IAAA,CAAK9I,CAAL,IAAU,GAA7B,EAAkC;QAChCskB,OAAA,GAAU,IAAV;QACA;MAFgC;IADK;IAMzC,OAAO,IAAAxmB,YAAA,EAAO,IAAP,EAAa,yBAAb,EAAwCwmB,OAAxC,CAAP;EAlB4B;EAqB9BtrB,SAAS0vD,MAAT,EAAiB;IACf,MAAMjV,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMlvB,IAAA,GAAOkvB,OAAA,CAAQlvB,IAArB;IACA,IAAIA,IAAA,CAAKsjC,WAAT,EAAsB;MACpB,OAAO,KAAKc,aAAL,CAAmBD,MAAnB,CAAP;IADoB;IAItB,MAAMnP,QAAA,GAAW9F,OAAA,CAAQ8F,QAAzB;IACA,IAAIA,QAAA,KAAa,CAAjB,EAAoB;MAClB,OAAO75C,SAAP;IADkB;IAIpB,MAAMo4B,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAM0hB,aAAA,GAAgB/F,OAAA,CAAQ+F,aAA9B;IACA,MAAMO,WAAA,GAActG,OAAA,CAAQsG,WAA5B;IACA,MAAMC,WAAA,GAAcvG,OAAA,CAAQuG,WAA5B;IACA,MAAM4N,aAAA,GAAgBnU,OAAA,CAAQmU,aAA9B;IACA,MAAM3N,UAAA,GAAaxG,OAAA,CAAQwG,UAAR,GAAqB2N,aAAxC;IACA,MAAMgB,YAAA,GAAeF,MAAA,CAAOjrD,MAA5B;IACA,MAAMorD,QAAA,GAAWtkC,IAAA,CAAKskC,QAAtB;IACA,MAAMC,UAAA,GAAaD,QAAA,GAAW,CAAX,GAAe,CAAC,CAAnC;IACA,MAAME,eAAA,GAAkBxkC,IAAA,CAAKwkC,eAA7B;IACA,MAAMC,iBAAA,GAAoBzP,QAAA,GAAW9F,OAAA,CAAQkG,UAAR,CAAmB,CAAnB,CAArC;IAEA,MAAMsP,cAAA,GACJxV,OAAA,CAAQyG,iBAAR,KAA8BtqD,uBAAA,CAAkBC,IAAhD,IACA,CAAC00B,IAAA,CAAK7W,eADN,IAEA,CAAC+lC,OAAA,CAAQ6G,WAHX;IAKAxiB,GAAA,CAAIhhC,IAAJ;IACAghC,GAAA,CAAI9gC,SAAJ,CAAc,GAAGy8C,OAAA,CAAQgG,UAAzB;IACA3hB,GAAA,CAAIhJ,SAAJ,CAAc2kB,OAAA,CAAQ1nB,CAAtB,EAAyB0nB,OAAA,CAAQznB,CAAR,GAAYynB,OAAA,CAAQ0G,QAA7C;IAEA,IAAIyN,aAAA,GAAgB,CAApB,EAAuB;MACrB9vB,GAAA,CAAI5gB,KAAJ,CAAU+iC,UAAV,EAAsB,CAAC,CAAvB;IADqB,CAAvB,MAEO;MACLniB,GAAA,CAAI5gB,KAAJ,CAAU+iC,UAAV,EAAsB,CAAtB;IADK;IAIP,IAAIoO,gBAAJ;IACA,IAAI5U,OAAA,CAAQ6G,WAAZ,EAAyB;MACvBxiB,GAAA,CAAIhhC,IAAJ;MACA,MAAMoyD,OAAA,GAAUzV,OAAA,CAAQ2G,SAAR,CAAkByL,UAAlB,CACd/tB,GADc,EAEd,IAFc,EAGd,IAAA6V,yCAAA,EAA2B7V,GAA3B,CAHc,EAId4jB,wBAAA,CAAS7rD,IAJK,CAAhB;MAMAw4D,gBAAA,GAAmB,IAAA7a,kCAAA,EAAoB1V,GAApB,CAAnB;MACAA,GAAA,CAAI/gC,OAAJ;MACA+gC,GAAA,CAAIumB,SAAJ,GAAgB6K,OAAhB;IAVuB;IAazB,IAAIzO,SAAA,GAAYhH,OAAA,CAAQgH,SAAxB;IACA,MAAMvjC,KAAA,GAAQu8B,OAAA,CAAQiG,eAAtB;IACA,IAAIxiC,KAAA,KAAU,CAAV,IAAeujC,SAAA,KAAc,CAAjC,EAAoC;MAClC,MAAM6N,cAAA,GACJ7U,OAAA,CAAQyG,iBAAR,GAA4BtqD,uBAAA,CAAkBS,gBADhD;MAEA,IACEi4D,cAAA,KAAmB14D,uBAAA,CAAkBE,MAArC,IACAw4D,cAAA,KAAmB14D,uBAAA,CAAkBG,WAFvC,EAGE;QACA0qD,SAAA,GAAY,KAAK0O,mBAAL,EAAZ;MADA;IANgC,CAApC,MASO;MACL1O,SAAA,IAAavjC,KAAb;IADK;IAIP,IAAIsiC,aAAA,KAAkB,GAAtB,EAA2B;MACzB1hB,GAAA,CAAI5gB,KAAJ,CAAUsiC,aAAV,EAAyBA,aAAzB;MACAiB,SAAA,IAAajB,aAAb;IAFyB;IAK3B1hB,GAAA,CAAI2iB,SAAJ,GAAgBA,SAAhB;IAEA,IAAIl2B,IAAA,CAAK6kC,kBAAT,EAA6B;MAC3B,MAAMC,KAAA,GAAQ,EAAd;MACA,IAAItkC,KAAA,GAAQ,CAAZ;MACA,WAAWukC,KAAX,IAAoBZ,MAApB,EAA4B;QAC1BW,KAAA,CAAM/oD,IAAN,CAAWgpD,KAAA,CAAMC,OAAjB;QACAxkC,KAAA,IAASukC,KAAA,CAAMvkC,KAAf;MAF0B;MAI5B+S,GAAA,CAAIua,QAAJ,CAAagX,KAAA,CAAM9oD,IAAN,CAAW,EAAX,CAAb,EAA6B,CAA7B,EAAgC,CAAhC;MACAkzC,OAAA,CAAQ1nB,CAAR,IAAahH,KAAA,GAAQikC,iBAAR,GAA4B/O,UAAzC;MACAniB,GAAA,CAAI/gC,OAAJ;MACA,KAAKyvD,OAAL;MAEA,OAAO9mD,SAAP;IAZ2B;IAe7B,IAAIqsB,CAAA,GAAI,CAAR;MACE/rB,CADF;IAEA,KAAKA,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAI4oD,YAAhB,EAA8B,EAAE5oD,CAAhC,EAAmC;MACjC,MAAMspD,KAAA,GAAQZ,MAAA,CAAO1oD,CAAP,CAAd;MACA,IAAI,OAAOspD,KAAP,KAAiB,QAArB,EAA+B;QAC7Bv9B,CAAA,IAAM+8B,UAAA,GAAaQ,KAAb,GAAqB/P,QAAtB,GAAkC,IAAvC;QACA;MAF6B;MAK/B,IAAIiQ,aAAA,GAAgB,KAApB;MACA,MAAM/B,OAAA,GAAW,CAAA6B,KAAA,CAAMG,OAAN,GAAgBzP,WAAhB,GAA8B,CAA9B,IAAmCD,WAApD;MACA,MAAMzG,SAAA,GAAYgW,KAAA,CAAMI,QAAxB;MACA,MAAMC,MAAA,GAASL,KAAA,CAAMK,MAArB;MACA,IAAIC,OAAJ,EAAaC,OAAb;MACA,IAAI9kC,KAAA,GAAQukC,KAAA,CAAMvkC,KAAlB;MACA,IAAI8jC,QAAJ,EAAc;QACZ,MAAMiB,OAAA,GAAUR,KAAA,CAAMQ,OAAN,IAAiBf,eAAjC;QACA,MAAMgB,EAAA,GACJ,EAAET,KAAA,CAAMQ,OAAN,GAAgBA,OAAA,CAAQ,CAAR,CAAhB,GAA6B/kC,KAAA,GAAQ,GAArC,CAAF,GAA8CikC,iBADhD;QAEA,MAAMgB,EAAA,GAAKF,OAAA,CAAQ,CAAR,IAAad,iBAAxB;QAEAjkC,KAAA,GAAQ+kC,OAAA,GAAU,CAACA,OAAA,CAAQ,CAAR,CAAX,GAAwB/kC,KAAhC;QACA6kC,OAAA,GAAUG,EAAA,GAAKvQ,aAAf;QACAqQ,OAAA,GAAW,CAAA99B,CAAA,GAAIi+B,EAAJ,IAAUxQ,aAArB;MARY,CAAd,MASO;QACLoQ,OAAA,GAAU79B,CAAA,GAAIytB,aAAd;QACAqQ,OAAA,GAAU,CAAV;MAFK;MAKP,IAAItlC,IAAA,CAAK0lC,SAAL,IAAkBllC,KAAA,GAAQ,CAA9B,EAAiC;QAI/B,MAAMmlC,aAAA,GACFpyB,GAAA,CAAIqyB,WAAJ,CAAgB7W,SAAhB,EAA2BvuB,KAA3B,GAAmC,IAApC,GAA4Cw0B,QAA7C,GACAC,aAFF;QAGA,IAAIz0B,KAAA,GAAQmlC,aAAR,IAAyB,KAAKzB,uBAAlC,EAA2D;UACzD,MAAM2B,eAAA,GAAkBrlC,KAAA,GAAQmlC,aAAhC;UACAV,aAAA,GAAgB,IAAhB;UACA1xB,GAAA,CAAIhhC,IAAJ;UACAghC,GAAA,CAAI5gB,KAAJ,CAAUkzC,eAAV,EAA2B,CAA3B;UACAR,OAAA,IAAWQ,eAAX;QALyD,CAA3D,MAMO,IAAIrlC,KAAA,KAAUmlC,aAAd,EAA6B;UAClCN,OAAA,IACK,CAAA7kC,KAAA,GAAQmlC,aAAR,IAAyB,IAA3B,GAAmC3Q,QAApC,GAAgDC,aADlD;QADkC;MAbL;MAqBjC,IAAI,KAAK6I,cAAL,KAAwBiH,KAAA,CAAMe,QAAN,IAAkB9lC,IAAA,CAAKosB,WAAvB,CAA5B,EAAiE;QAC/D,IAAIsY,cAAA,IAAkB,CAACU,MAAvB,EAA+B;UAE7B7xB,GAAA,CAAIua,QAAJ,CAAaiB,SAAb,EAAwBsW,OAAxB,EAAiCC,OAAjC;QAF6B,CAA/B,MAGO;UACL,KAAKzB,SAAL,CAAe9U,SAAf,EAA0BsW,OAA1B,EAAmCC,OAAnC,EAA4CxB,gBAA5C;UACA,IAAIsB,MAAJ,EAAY;YACV,MAAMW,aAAA,GACJV,OAAA,GAAWrQ,QAAA,GAAWoQ,MAAA,CAAO9X,MAAP,CAAc9lB,CAA1B,GAA+BytB,aAD3C;YAEA,MAAM+Q,aAAA,GACJV,OAAA,GAAWtQ,QAAA,GAAWoQ,MAAA,CAAO9X,MAAP,CAAc7lB,CAA1B,GAA+BwtB,aAD3C;YAEA,KAAK4O,SAAL,CACEuB,MAAA,CAAOD,QADT,EAEEY,aAFF,EAGEC,aAHF,EAIElC,gBAJF;UALU;QAFP;MAJwD;MAqBjE,MAAMmC,SAAA,GAAY3B,QAAA,GACd9jC,KAAA,GAAQikC,iBAAR,GAA4BvB,OAAA,GAAUG,aADxB,GAEd7iC,KAAA,GAAQikC,iBAAR,GAA4BvB,OAAA,GAAUG,aAF1C;MAGA77B,CAAA,IAAKy+B,SAAL;MAEA,IAAIhB,aAAJ,EAAmB;QACjB1xB,GAAA,CAAI/gC,OAAJ;MADiB;IA1Ec;IA8EnC,IAAI8xD,QAAJ,EAAc;MACZpV,OAAA,CAAQznB,CAAR,IAAaD,CAAb;IADY,CAAd,MAEO;MACL0nB,OAAA,CAAQ1nB,CAAR,IAAaA,CAAA,GAAIkuB,UAAjB;IADK;IAGPniB,GAAA,CAAI/gC,OAAJ;IACA,KAAKyvD,OAAL;IAEA,OAAO9mD,SAAP;EAlLe;EAqLjBipD,cAAcD,MAAd,EAAsB;IAEpB,MAAM5wB,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAM2b,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMlvB,IAAA,GAAOkvB,OAAA,CAAQlvB,IAArB;IACA,MAAMg1B,QAAA,GAAW9F,OAAA,CAAQ8F,QAAzB;IACA,MAAMqO,aAAA,GAAgBnU,OAAA,CAAQmU,aAA9B;IACA,MAAMkB,UAAA,GAAavkC,IAAA,CAAKskC,QAAL,GAAgB,CAAhB,GAAoB,CAAC,CAAxC;IACA,MAAM9O,WAAA,GAActG,OAAA,CAAQsG,WAA5B;IACA,MAAMC,WAAA,GAAcvG,OAAA,CAAQuG,WAA5B;IACA,MAAMC,UAAA,GAAaxG,OAAA,CAAQwG,UAAR,GAAqB2N,aAAxC;IACA,MAAMjO,UAAA,GAAalG,OAAA,CAAQkG,UAAR,IAAsBzsD,0BAAzC;IACA,MAAM07D,YAAA,GAAeF,MAAA,CAAOjrD,MAA5B;IACA,MAAMgtD,eAAA,GACJhX,OAAA,CAAQyG,iBAAR,KAA8BtqD,uBAAA,CAAkBI,SADlD;IAEA,IAAIgQ,CAAJ,EAAOspD,KAAP,EAAcvkC,KAAd,EAAqB2lC,aAArB;IAEA,IAAID,eAAA,IAAmBlR,QAAA,KAAa,CAApC,EAAuC;MACrC;IADqC;IAGvC,KAAKoJ,uBAAL,CAA6B,CAA7B,IAAkC,CAAC,CAAnC;IACA,KAAKC,0BAAL,GAAkC,IAAlC;IAEA9qB,GAAA,CAAIhhC,IAAJ;IACAghC,GAAA,CAAI9gC,SAAJ,CAAc,GAAGy8C,OAAA,CAAQgG,UAAzB;IACA3hB,GAAA,CAAIhJ,SAAJ,CAAc2kB,OAAA,CAAQ1nB,CAAtB,EAAyB0nB,OAAA,CAAQznB,CAAjC;IAEA8L,GAAA,CAAI5gB,KAAJ,CAAU+iC,UAAV,EAAsB2N,aAAtB;IAEA,KAAK5nD,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAI4oD,YAAhB,EAA8B,EAAE5oD,CAAhC,EAAmC;MACjCspD,KAAA,GAAQZ,MAAA,CAAO1oD,CAAP,CAAR;MACA,IAAI,OAAOspD,KAAP,KAAiB,QAArB,EAA+B;QAC7BoB,aAAA,GAAiB5B,UAAA,GAAaQ,KAAb,GAAqB/P,QAAtB,GAAkC,IAAlD;QACA,KAAKzhB,GAAL,CAAShJ,SAAT,CAAmB47B,aAAnB,EAAkC,CAAlC;QACAjX,OAAA,CAAQ1nB,CAAR,IAAa2+B,aAAA,GAAgBzQ,UAA7B;QACA;MAJ6B;MAO/B,MAAMwN,OAAA,GAAW,CAAA6B,KAAA,CAAMG,OAAN,GAAgBzP,WAAhB,GAA8B,CAA9B,IAAmCD,WAApD;MACA,MAAM5gC,YAAA,GAAeoL,IAAA,CAAKomC,oBAAL,CAA0BrB,KAAA,CAAMsB,cAAhC,CAArB;MACA,IAAI,CAACzxC,YAAL,EAAmB;QACjB,IAAAzc,UAAA,EAAM,oBAAmB4sD,KAAA,CAAMsB,cAAe,qBAA9C;QACA;MAFiB;MAInB,IAAI,KAAKvI,cAAT,EAAyB;QACvB,KAAKR,eAAL,GAAuByH,KAAvB;QACA,KAAKxyD,IAAL;QACAghC,GAAA,CAAI5gB,KAAJ,CAAUqiC,QAAV,EAAoBA,QAApB;QACAzhB,GAAA,CAAI9gC,SAAJ,CAAc,GAAG2iD,UAAjB;QACA,KAAKjyB,mBAAL,CAAyBvO,YAAzB;QACA,KAAKpiB,OAAL;MANuB;MASzB,MAAM8zD,WAAA,GAAcloD,UAAA,CAAKU,cAAL,CAAoB,CAACimD,KAAA,CAAMvkC,KAAP,EAAc,CAAd,CAApB,EAAsC40B,UAAtC,CAApB;MACA50B,KAAA,GAAQ8lC,WAAA,CAAY,CAAZ,IAAiBtR,QAAjB,GAA4BkO,OAApC;MAEA3vB,GAAA,CAAIhJ,SAAJ,CAAc/J,KAAd,EAAqB,CAArB;MACA0uB,OAAA,CAAQ1nB,CAAR,IAAahH,KAAA,GAAQk1B,UAArB;IA5BiC;IA8BnCniB,GAAA,CAAI/gC,OAAJ;IACA,KAAK8qD,eAAL,GAAuB,IAAvB;EA5DoB;EAgEtBzoD,aAAa0xD,MAAb,EAAqBC,MAArB,EAA6B;EAK7B1xD,sBAAsByxD,MAAtB,EAA8BC,MAA9B,EAAsCC,GAAtC,EAA2CC,GAA3C,EAAgDC,GAAhD,EAAqDC,GAArD,EAA0D;IACxD,KAAKrzB,GAAL,CAAShzB,IAAT,CAAckmD,GAAd,EAAmBC,GAAnB,EAAwBC,GAAA,GAAMF,GAA9B,EAAmCG,GAAA,GAAMF,GAAzC;IACA,KAAKnzB,GAAL,CAAS7/B,IAAT;IACA,KAAKD,OAAL;EAHwD;EAO1DozD,kBAAkBC,EAAlB,EAAsB;IACpB,IAAInC,OAAJ;IACA,IAAImC,EAAA,CAAG,CAAH,MAAU,eAAd,EAA+B;MAC7B,MAAMzvB,KAAA,GAAQyvB,EAAA,CAAG,CAAH,CAAd;MACA,MAAMvJ,aAAA,GAAgB,KAAKA,aAAL,IAAsB,IAAAtU,kCAAA,EAAoB,KAAK1V,GAAzB,CAA5C;MACA,MAAMwzB,qBAAA,GAAwB;QAC5BC,oBAAA,EAAsBzzB,GAAA,IAAO;UAC3B,OAAO,IAAIzQ,cAAJ,CACLyQ,GADK,EAEL,KAAKrhB,UAFA,EAGL,KAAKC,IAHA,EAIL,KAAKlI,aAJA,EAKL,KAAKC,aALA,EAML;YACEgM,qBAAA,EAAuB,KAAKA,qBAD9B;YAEE6mC,kBAAA,EAAoB,KAAKA;UAF3B,CANK,CAAP;QAD2B;MADD,CAA9B;MAeA4H,OAAA,GAAU,IAAIsC,6BAAJ,CACRH,EADQ,EAERzvB,KAFQ,EAGR,KAAK9D,GAHG,EAIRwzB,qBAJQ,EAKRxJ,aALQ,CAAV;IAlB6B,CAA/B,MAyBO;MACLoH,OAAA,GAAU,KAAKuC,WAAL,CAAiBJ,EAAA,CAAG,CAAH,CAAjB,EAAwBA,EAAA,CAAG,CAAH,CAAxB,CAAV;IADK;IAGP,OAAOnC,OAAP;EA9BoB;EAiCtBzvD,gBAAA,EAAkB;IAChB,KAAKg6C,OAAL,CAAa4G,WAAb,GAA2B,KAAK+Q,iBAAL,CAAuBM,SAAvB,CAA3B;EADgB;EAIlB/xD,cAAA,EAAgB;IACd,KAAK85C,OAAL,CAAa2G,SAAb,GAAyB,KAAKgR,iBAAL,CAAuBM,SAAvB,CAAzB;IACA,KAAKjY,OAAL,CAAa6G,WAAb,GAA2B,IAA3B;EAFc;EAKhBxgD,kBAAkB+I,CAAlB,EAAqBC,CAArB,EAAwBC,CAAxB,EAA2B;IACzB,MAAM64B,KAAA,GAAQj5B,UAAA,CAAKC,YAAL,CAAkBC,CAAlB,EAAqBC,CAArB,EAAwBC,CAAxB,CAAd;IACA,KAAK+0B,GAAL,CAASsmB,WAAT,GAAuBxiB,KAAvB;IACA,KAAK6X,OAAL,CAAa4G,WAAb,GAA2Bze,KAA3B;EAHyB;EAM3B7hC,gBAAgB8I,CAAhB,EAAmBC,CAAnB,EAAsBC,CAAtB,EAAyB;IACvB,MAAM64B,KAAA,GAAQj5B,UAAA,CAAKC,YAAL,CAAkBC,CAAlB,EAAqBC,CAArB,EAAwBC,CAAxB,CAAd;IACA,KAAK+0B,GAAL,CAASumB,SAAT,GAAqBziB,KAArB;IACA,KAAK6X,OAAL,CAAa2G,SAAb,GAAyBxe,KAAzB;IACA,KAAK6X,OAAL,CAAa6G,WAAb,GAA2B,KAA3B;EAJuB;EAOzBmR,YAAY9lC,KAAZ,EAAmBgmC,MAAA,GAAS,IAA5B,EAAkC;IAChC,IAAIzC,OAAJ;IACA,IAAI,KAAK3G,cAAL,CAAoB5iC,GAApB,CAAwBgG,KAAxB,CAAJ,EAAoC;MAClCujC,OAAA,GAAU,KAAK3G,cAAL,CAAoBh5C,GAApB,CAAwBoc,KAAxB,CAAV;IADkC,CAApC,MAEO;MACLujC,OAAA,GAAU,IAAA0C,iCAAA,EAAkB,KAAK9I,SAAL,CAAen9B,KAAf,CAAlB,CAAV;MACA,KAAK48B,cAAL,CAAoBzpC,GAApB,CAAwB6M,KAAxB,EAA+BujC,OAA/B;IAFK;IAIP,IAAIyC,MAAJ,EAAY;MACVzC,OAAA,CAAQyC,MAAR,GAAiBA,MAAjB;IADU;IAGZ,OAAOzC,OAAP;EAXgC;EAclChvD,YAAYyrB,KAAZ,EAAmB;IACjB,IAAI,CAAC,KAAK08B,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMvqB,GAAA,GAAM,KAAKA,GAAjB;IAEA,KAAKhhC,IAAL;IACA,MAAMoyD,OAAA,GAAU,KAAKuC,WAAL,CAAiB9lC,KAAjB,CAAhB;IACAmS,GAAA,CAAIumB,SAAJ,GAAgB6K,OAAA,CAAQrD,UAAR,CACd/tB,GADc,EAEd,IAFc,EAGd,IAAA6V,yCAAA,EAA2B7V,GAA3B,CAHc,EAId4jB,wBAAA,CAASmQ,OAJK,CAAhB;IAOA,MAAMC,GAAA,GAAM,IAAAne,yCAAA,EAA2B7V,GAA3B,CAAZ;IACA,IAAIg0B,GAAJ,EAAS;MACP,MAAM;QAAE/mC,KAAF;QAASC;MAAT,IAAoB8S,GAAA,CAAI/R,MAA9B;MACA,MAAM,CAACxgB,EAAD,EAAKC,EAAL,EAASC,EAAT,EAAaC,EAAb,IAAmB/C,UAAA,CAAKiB,0BAAL,CACvB,CAAC,CAAD,EAAI,CAAJ,EAAOmhB,KAAP,EAAcC,MAAd,CADuB,EAEvB8mC,GAFuB,CAAzB;MAKA,KAAKh0B,GAAL,CAASmrB,QAAT,CAAkB19C,EAAlB,EAAsBC,EAAtB,EAA0BC,EAAA,GAAKF,EAA/B,EAAmCG,EAAA,GAAKF,EAAxC;IAPO,CAAT,MAQO;MAOL,KAAKsyB,GAAL,CAASmrB,QAAT,CAAkB,CAAC,IAAnB,EAAyB,CAAC,IAA1B,EAAgC,IAAhC,EAAsC,IAAtC;IAPK;IAUP,KAAKuD,OAAL,CAAa,KAAK/S,OAAL,CAAauI,yBAAb,EAAb;IACA,KAAKjlD,OAAL;EAnCiB;EAuCnBoD,iBAAA,EAAmB;IACjB,IAAAwC,iBAAA,EAAY,kCAAZ;EADiB;EAInBvC,eAAA,EAAiB;IACf,IAAAuC,iBAAA,EAAY,gCAAZ;EADe;EAIjB7B,sBAAsB6wD,MAAtB,EAA8BI,IAA9B,EAAoC;IAClC,IAAI,CAAC,KAAK1J,cAAV,EAA0B;MACxB;IADwB;IAG1B,KAAKvrD,IAAL;IACA,KAAKirD,kBAAL,CAAwBzhD,IAAxB,CAA6B,KAAKwhD,aAAlC;IAEA,IAAIv/C,KAAA,CAAM++B,OAAN,CAAcqqB,MAAd,KAAyBA,MAAA,CAAOluD,MAAP,KAAkB,CAA/C,EAAkD;MAChD,KAAKzG,SAAL,CAAe,GAAG20D,MAAlB;IADgD;IAIlD,KAAK7J,aAAL,GAAqB,IAAAtU,kCAAA,EAAoB,KAAK1V,GAAzB,CAArB;IAEA,IAAIi0B,IAAJ,EAAU;MACR,MAAMhnC,KAAA,GAAQgnC,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAxB;MACA,MAAM/mC,MAAA,GAAS+mC,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAzB;MACA,KAAKj0B,GAAL,CAAShzB,IAAT,CAAcinD,IAAA,CAAK,CAAL,CAAd,EAAuBA,IAAA,CAAK,CAAL,CAAvB,EAAgChnC,KAAhC,EAAuCC,MAAvC;MACA,KAAKyuB,OAAL,CAAa2H,gBAAb,CAA8B,IAAA5N,kCAAA,EAAoB,KAAK1V,GAAzB,CAA9B,EAA6Di0B,IAA7D;MACA,KAAK9zD,IAAL;MACA,KAAKD,OAAL;IANQ;EAbwB;EAuBpC+C,oBAAA,EAAsB;IACpB,IAAI,CAAC,KAAKsnD,cAAV,EAA0B;MACxB;IADwB;IAG1B,KAAKtrD,OAAL;IACA,KAAK+qD,aAAL,GAAqB,KAAKC,kBAAL,CAAwB4E,GAAxB,EAArB;EALoB;EAQtB3rD,WAAWgxD,KAAX,EAAkB;IAChB,IAAI,CAAC,KAAK3J,cAAV,EAA0B;MACxB;IADwB;IAI1B,KAAKvrD,IAAL;IAGA,IAAI,KAAKgtD,WAAT,EAAsB;MACpB,KAAKuC,YAAL;MACA,KAAK5S,OAAL,CAAaiH,WAAb,GAA2B,IAA3B;IAFoB;IAKtB,MAAMuR,UAAA,GAAa,KAAKn0B,GAAxB;IAcA,IAAI,CAACk0B,KAAA,CAAME,QAAX,EAAqB;MACnB,IAAA5vD,UAAA,EAAK,oCAAL;IADmB;IAMrB,IAAI0vD,KAAA,CAAMG,QAAV,EAAoB;MAClB,IAAAzvD,UAAA,EAAK,gCAAL;IADkB;IAIpB,MAAMqoD,gBAAA,GAAmB,IAAAvX,kCAAA,EAAoBye,UAApB,CAAzB;IACA,IAAID,KAAA,CAAML,MAAV,EAAkB;MAChBM,UAAA,CAAWj1D,SAAX,CAAqB,GAAGg1D,KAAA,CAAML,MAA9B;IADgB;IAGlB,IAAI,CAACK,KAAA,CAAMD,IAAX,EAAiB;MACf,MAAM,IAAInvD,KAAJ,CAAU,2BAAV,CAAN;IADe;IAMjB,IAAIoJ,MAAA,GAASrD,UAAA,CAAKiB,0BAAL,CACXooD,KAAA,CAAMD,IADK,EAEX,IAAAve,kCAAA,EAAoBye,UAApB,CAFW,CAAb;IAKA,MAAMG,YAAA,GAAe,CACnB,CADmB,EAEnB,CAFmB,EAGnBH,UAAA,CAAWlmC,MAAX,CAAkBhB,KAHC,EAInBknC,UAAA,CAAWlmC,MAAX,CAAkBf,MAJC,CAArB;IAMAhf,MAAA,GAASrD,UAAA,CAAKoC,SAAL,CAAeiB,MAAf,EAAuBomD,YAAvB,KAAwC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAjD;IAGA,MAAMh1C,OAAA,GAAUlX,IAAA,CAAK2J,KAAL,CAAW7D,MAAA,CAAO,CAAP,CAAX,CAAhB;IACA,MAAMqR,OAAA,GAAUnX,IAAA,CAAK2J,KAAL,CAAW7D,MAAA,CAAO,CAAP,CAAX,CAAhB;IACA,IAAIu/C,UAAA,GAAarlD,IAAA,CAAKgE,GAAL,CAAShE,IAAA,CAAKkgD,IAAL,CAAUp6C,MAAA,CAAO,CAAP,CAAV,IAAuBoR,OAAhC,EAAyC,CAAzC,CAAjB;IACA,IAAIouC,WAAA,GAActlD,IAAA,CAAKgE,GAAL,CAAShE,IAAA,CAAKkgD,IAAL,CAAUp6C,MAAA,CAAO,CAAP,CAAV,IAAuBqR,OAAhC,EAAyC,CAAzC,CAAlB;IACA,IAAI0gC,MAAA,GAAS,CAAb;MACEC,MAAA,GAAS,CADX;IAEA,IAAIuN,UAAA,GAAarR,cAAjB,EAAiC;MAC/B6D,MAAA,GAASwN,UAAA,GAAarR,cAAtB;MACAqR,UAAA,GAAarR,cAAb;IAF+B;IAIjC,IAAIsR,WAAA,GAActR,cAAlB,EAAkC;MAChC8D,MAAA,GAASwN,WAAA,GAActR,cAAvB;MACAsR,WAAA,GAActR,cAAd;IAFgC;IAKlC,KAAKT,OAAL,CAAamH,sBAAb,CAAoC,CAAC,CAAD,EAAI,CAAJ,EAAO2K,UAAP,EAAmBC,WAAnB,CAApC;IAEA,IAAIc,OAAA,GAAU,YAAY,KAAKtE,UAA/B;IACA,IAAIgK,KAAA,CAAMxL,KAAV,EAAiB;MAEf8F,OAAA,IAAW,YAAa,KAAKpE,YAAL,KAAsB,CAA9C;IAFe;IAIjB,MAAMqE,aAAA,GAAgB,KAAKjE,cAAL,CAAoB5L,SAApB,CACpB4P,OADoB,EAEpBf,UAFoB,EAGpBC,WAHoB,CAAtB;IAKA,MAAM6G,QAAA,GAAW9F,aAAA,CAAcp9B,OAA/B;IAIAkjC,QAAA,CAASn1C,KAAT,CAAe,IAAI6gC,MAAnB,EAA2B,IAAIC,MAA/B;IACAqU,QAAA,CAASv9B,SAAT,CAAmB,CAAC1X,OAApB,EAA6B,CAACC,OAA9B;IACAg1C,QAAA,CAASr1D,SAAT,CAAmB,GAAG+tD,gBAAtB;IAEA,IAAIiH,KAAA,CAAMxL,KAAV,EAAiB;MAEf,KAAKyB,UAAL,CAAgB3hD,IAAhB,CAAqB;QACnBylB,MAAA,EAAQwgC,aAAA,CAAcxgC,MADH;QAEnBoD,OAAA,EAASkjC,QAFU;QAGnBj1C,OAHmB;QAInBC,OAJmB;QAKnB0gC,MALmB;QAMnBC,MANmB;QAOnB0H,OAAA,EAASsM,KAAA,CAAMxL,KAAN,CAAYd,OAPF;QAQnBC,QAAA,EAAUqM,KAAA,CAAMxL,KAAN,CAAYb,QARH;QASnBN,WAAA,EAAa2M,KAAA,CAAMxL,KAAN,CAAYnB,WAAZ,IAA2B,IATrB;QAUnBiN,qBAAA,EAAuB;MAVJ,CAArB;IAFe,CAAjB,MAcO;MAGLL,UAAA,CAAWhX,YAAX,CAAwB,CAAxB,EAA2B,CAA3B,EAA8B,CAA9B,EAAiC,CAAjC,EAAoC,CAApC,EAAuC,CAAvC;MACAgX,UAAA,CAAWn9B,SAAX,CAAqB1X,OAArB,EAA8BC,OAA9B;MACA40C,UAAA,CAAW/0C,KAAX,CAAiB6gC,MAAjB,EAAyBC,MAAzB;MACAiU,UAAA,CAAWn1D,IAAX;IANK;IAUP8mD,YAAA,CAAaqO,UAAb,EAAyBI,QAAzB;IACA,KAAKv0B,GAAL,GAAWu0B,QAAX;IACA,KAAKx1D,SAAL,CAAe,CACb,CAAC,IAAD,EAAO,aAAP,CADa,EAEb,CAAC,IAAD,EAAO,CAAP,CAFa,EAGb,CAAC,IAAD,EAAO,CAAP,CAHa,CAAf;IAKA,KAAK+qD,UAAL,CAAgBthD,IAAhB,CAAqB2rD,UAArB;IACA,KAAKjK,UAAL;EAhIgB;EAmIlB/mD,SAAS+wD,KAAT,EAAgB;IACd,IAAI,CAAC,KAAK3J,cAAV,EAA0B;MACxB;IADwB;IAG1B,KAAKL,UAAL;IACA,MAAMqK,QAAA,GAAW,KAAKv0B,GAAtB;IACA,MAAMA,GAAA,GAAM,KAAK8pB,UAAL,CAAgB+E,GAAhB,EAAZ;IACA,KAAK7uB,GAAL,GAAWA,GAAX;IAGA,KAAKA,GAAL,CAAS6tB,qBAAT,GAAiC,KAAjC;IAEA,IAAIqG,KAAA,CAAMxL,KAAV,EAAiB;MACf,KAAK2B,SAAL,GAAiB,KAAKF,UAAL,CAAgB0E,GAAhB,EAAjB;MACA,KAAK5vD,OAAL;IAFe,CAAjB,MAGO;MACL,KAAK+gC,GAAL,CAAS/gC,OAAT;MACA,MAAMw1D,UAAA,GAAa,IAAA/e,kCAAA,EAAoB,KAAK1V,GAAzB,CAAnB;MACA,KAAK/gC,OAAL;MACA,KAAK+gC,GAAL,CAAShhC,IAAT;MACA,KAAKghC,GAAL,CAASmd,YAAT,CAAsB,GAAGsX,UAAzB;MACA,MAAM9F,QAAA,GAAW9jD,UAAA,CAAKiB,0BAAL,CACf,CAAC,CAAD,EAAI,CAAJ,EAAOyoD,QAAA,CAAStmC,MAAT,CAAgBhB,KAAvB,EAA8BsnC,QAAA,CAAStmC,MAAT,CAAgBf,MAA9C,CADe,EAEfunC,UAFe,CAAjB;MAIA,KAAKz0B,GAAL,CAASI,SAAT,CAAmBm0B,QAAA,CAAStmC,MAA5B,EAAoC,CAApC,EAAuC,CAAvC;MACA,KAAK+R,GAAL,CAAS/gC,OAAT;MACA,KAAKyvD,OAAL,CAAaC,QAAb;IAZK;EAfO;EA+BhBvrD,gBAAgBoZ,EAAhB,EAAoBxP,IAApB,EAA0B9N,SAA1B,EAAqC20D,MAArC,EAA6Ca,YAA7C,EAA2D;IAKzD,KAAK,CAAA3I,mBAAL;IACA1F,iBAAA,CAAkB,KAAKrmB,GAAvB;IAEA,KAAKA,GAAL,CAAShhC,IAAT;IACA,KAAKA,IAAL;IAEA,IAAI,KAAKgrD,aAAT,EAAwB;MACtB,KAAKhqB,GAAL,CAASmd,YAAT,CAAsB,GAAG,KAAK6M,aAA9B;IADsB;IAIxB,IAAIv/C,KAAA,CAAM++B,OAAN,CAAcx8B,IAAd,KAAuBA,IAAA,CAAKrH,MAAL,KAAgB,CAA3C,EAA8C;MAC5C,MAAMsnB,KAAA,GAAQjgB,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAxB;MACA,MAAMkgB,MAAA,GAASlgB,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAzB;MAEA,IAAI0nD,YAAA,IAAgB,KAAKj0C,mBAAzB,EAA8C;QAC5CvhB,SAAA,GAAYA,SAAA,CAAU+M,KAAV,EAAZ;QACA/M,SAAA,CAAU,CAAV,KAAgB8N,IAAA,CAAK,CAAL,CAAhB;QACA9N,SAAA,CAAU,CAAV,KAAgB8N,IAAA,CAAK,CAAL,CAAhB;QAEAA,IAAA,GAAOA,IAAA,CAAKf,KAAL,EAAP;QACAe,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,IAAU,CAApB;QACAA,IAAA,CAAK,CAAL,IAAUigB,KAAV;QACAjgB,IAAA,CAAK,CAAL,IAAUkgB,MAAV;QAEA,MAAM,CAAC+yB,MAAD,EAASC,MAAT,IAAmBr1C,UAAA,CAAKyB,6BAAL,CACvB,IAAAopC,kCAAA,EAAoB,KAAK1V,GAAzB,CADuB,CAAzB;QAGA,MAAM;UAAE0qB;QAAF,IAAoB,IAA1B;QACA,MAAMiK,WAAA,GAAcvsD,IAAA,CAAKkgD,IAAL,CAClBr7B,KAAA,GAAQ,KAAK09B,YAAb,GAA4BD,aADV,CAApB;QAGA,MAAMkK,YAAA,GAAexsD,IAAA,CAAKkgD,IAAL,CACnBp7B,MAAA,GAAS,KAAK09B,YAAd,GAA6BF,aADV,CAArB;QAIA,KAAKmK,gBAAL,GAAwB,KAAKn+C,aAAL,CAAmBvN,MAAnB,CACtBwrD,WADsB,EAEtBC,YAFsB,CAAxB;QAIA,MAAM;UAAE3mC,MAAF;UAAUoD;QAAV,IAAsB,KAAKwjC,gBAAjC;QACA,KAAKp0C,mBAAL,CAAyBO,GAAzB,CAA6BxE,EAA7B,EAAiCyR,MAAjC;QACA,KAAK4mC,gBAAL,CAAsBC,QAAtB,GAAiC,KAAK90B,GAAtC;QACA,KAAKA,GAAL,GAAW3O,OAAX;QACA,KAAK2O,GAAL,CAAShhC,IAAT;QACA,KAAKghC,GAAL,CAASmd,YAAT,CAAsB8C,MAAtB,EAA8B,CAA9B,EAAiC,CAAjC,EAAoC,CAACC,MAArC,EAA6C,CAA7C,EAAgDhzB,MAAA,GAASgzB,MAAzD;QAEAmG,iBAAA,CAAkB,KAAKrmB,GAAvB;MAhC4C,CAA9C,MAiCO;QACLqmB,iBAAA,CAAkB,KAAKrmB,GAAvB;QAEA,KAAKA,GAAL,CAAShzB,IAAT,CAAcA,IAAA,CAAK,CAAL,CAAd,EAAuBA,IAAA,CAAK,CAAL,CAAvB,EAAgCigB,KAAhC,EAAuCC,MAAvC;QACA,KAAK8S,GAAL,CAAS7/B,IAAT;QACA,KAAKD,OAAL;MALK;IArCqC;IA8C9C,KAAKy7C,OAAL,GAAe,IAAI4F,gBAAJ,CACb,KAAKvhB,GAAL,CAAS/R,MAAT,CAAgBhB,KADH,EAEb,KAAK+S,GAAL,CAAS/R,MAAT,CAAgBf,MAFH,CAAf;IAKA,KAAKhuB,SAAL,CAAe,GAAGA,SAAlB;IACA,KAAKA,SAAL,CAAe,GAAG20D,MAAlB;EAnEyD;EAsE3DxwD,cAAA,EAAgB;IACd,IAAI,KAAKwxD,gBAAT,EAA2B;MACzB,KAAK70B,GAAL,CAAS/gC,OAAT;MACA,KAAK,CAAAitD,UAAL;MAEA,KAAKlsB,GAAL,GAAW,KAAK60B,gBAAL,CAAsBC,QAAjC;MACA,OAAO,KAAKD,gBAAL,CAAsBC,QAA7B;MACA,OAAO,KAAKD,gBAAZ;IANyB;EADb;EAWhBvxD,sBAAsBgpD,GAAtB,EAA2B;IACzB,IAAI,CAAC,KAAK/B,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMzJ,KAAA,GAAQwL,GAAA,CAAIxL,KAAlB;IACAwL,GAAA,GAAM,KAAKtB,SAAL,CAAesB,GAAA,CAAIt7C,IAAnB,EAAyBs7C,GAAzB,CAAN;IACAA,GAAA,CAAIxL,KAAJ,GAAYA,KAAZ;IAEA,MAAM9gB,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMwxB,KAAA,GAAQ,KAAKzH,eAAnB;IAEA,IAAIyH,KAAJ,EAAW;MACT,IAAIA,KAAA,CAAMuD,QAAN,KAAmBntD,SAAvB,EAAkC;QAChC4pD,KAAA,CAAMuD,QAAN,GAAiB5U,iBAAA,CAAkBmM,GAAlB,CAAjB;MADgC;MAIlC,IAAIkF,KAAA,CAAMuD,QAAV,EAAoB;QAClBvD,KAAA,CAAMuD,QAAN,CAAe/0B,GAAf;QACA;MAFkB;IALX;IAUX,MAAM6gB,IAAA,GAAO,KAAKkM,iBAAL,CAAuBT,GAAvB,CAAb;IACA,MAAMa,UAAA,GAAatM,IAAA,CAAK5yB,MAAxB;IAEA+R,GAAA,CAAIhhC,IAAJ;IAGAghC,GAAA,CAAImd,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,EAA6B,CAA7B,EAAgC,CAAhC;IACAnd,GAAA,CAAII,SAAJ,CAAc+sB,UAAd,EAA0BtM,IAAA,CAAKvhC,OAA/B,EAAwCuhC,IAAA,CAAKthC,OAA7C;IACAygB,GAAA,CAAI/gC,OAAJ;IACA,KAAKyvD,OAAL;EA9ByB;EAiC3B9qD,4BACE0oD,GADF,EAEErM,MAFF,EAGE+U,KAAA,GAAQ,CAHV,EAIEC,KAAA,GAAQ,CAJV,EAKE/U,MALF,EAMEgV,SANF,EAOE;IACA,IAAI,CAAC,KAAK3K,cAAV,EAA0B;MACxB;IADwB;IAI1B+B,GAAA,GAAM,KAAKtB,SAAL,CAAesB,GAAA,CAAIt7C,IAAnB,EAAyBs7C,GAAzB,CAAN;IAEA,MAAMtsB,GAAA,GAAM,KAAKA,GAAjB;IACAA,GAAA,CAAIhhC,IAAJ;IACA,MAAMiuD,gBAAA,GAAmB,IAAAvX,kCAAA,EAAoB1V,GAApB,CAAzB;IACAA,GAAA,CAAI9gC,SAAJ,CAAc+gD,MAAd,EAAsB+U,KAAtB,EAA6BC,KAA7B,EAAoC/U,MAApC,EAA4C,CAA5C,EAA+C,CAA/C;IACA,MAAMW,IAAA,GAAO,KAAKkM,iBAAL,CAAuBT,GAAvB,CAAb;IAEAtsB,GAAA,CAAImd,YAAJ,CACE,CADF,EAEE,CAFF,EAGE,CAHF,EAIE,CAJF,EAKE0D,IAAA,CAAKvhC,OAAL,GAAe2tC,gBAAA,CAAiB,CAAjB,CALjB,EAMEpM,IAAA,CAAKthC,OAAL,GAAe0tC,gBAAA,CAAiB,CAAjB,CANjB;IAQA,KAAK,IAAI/kD,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAK8lD,SAAA,CAAUvvD,MAA1B,EAAkCuC,CAAA,GAAIkH,EAA3C,EAA+ClH,CAAA,IAAK,CAApD,EAAuD;MACrD,MAAMitD,KAAA,GAAQtqD,UAAA,CAAK3L,SAAL,CAAe+tD,gBAAf,EAAiC,CAC7ChN,MAD6C,EAE7C+U,KAF6C,EAG7CC,KAH6C,EAI7C/U,MAJ6C,EAK7CgV,SAAA,CAAUhtD,CAAV,CAL6C,EAM7CgtD,SAAA,CAAUhtD,CAAA,GAAI,CAAd,CAN6C,CAAjC,CAAd;MASA,MAAM,CAAC+rB,CAAD,EAAIC,CAAJ,IAASrpB,UAAA,CAAKU,cAAL,CAAoB,CAAC,CAAD,EAAI,CAAJ,CAApB,EAA4B4pD,KAA5B,CAAf;MACAn1B,GAAA,CAAII,SAAJ,CAAcygB,IAAA,CAAK5yB,MAAnB,EAA2BgG,CAA3B,EAA8BC,CAA9B;IAXqD;IAavD8L,GAAA,CAAI/gC,OAAJ;IACA,KAAKyvD,OAAL;EAnCA;EAsCFnrD,2BAA2B6xD,MAA3B,EAAmC;IACjC,IAAI,CAAC,KAAK7K,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMvqB,GAAA,GAAM,KAAKA,GAAjB;IAEA,MAAMsiB,SAAA,GAAY,KAAK3G,OAAL,CAAa2G,SAA/B;IACA,MAAM0K,aAAA,GAAgB,KAAKrR,OAAL,CAAa6G,WAAnC;IAEA,WAAWtiB,KAAX,IAAoBk1B,MAApB,EAA4B;MAC1B,MAAM;QAAEpkD,IAAF;QAAQic,KAAR;QAAeC,MAAf;QAAuBhuB;MAAvB,IAAqCghC,KAA3C;MAEA,MAAMitB,UAAA,GAAa,KAAK3C,cAAL,CAAoB5L,SAApB,CACjB,YADiB,EAEjB3xB,KAFiB,EAGjBC,MAHiB,CAAnB;MAKA,MAAMw6B,OAAA,GAAUyF,UAAA,CAAW97B,OAA3B;MACAq2B,OAAA,CAAQ1oD,IAAR;MAEA,MAAMstD,GAAA,GAAM,KAAKtB,SAAL,CAAeh6C,IAAf,EAAqBkvB,KAArB,CAAZ;MACAylB,kBAAA,CAAmB+B,OAAnB,EAA4B4E,GAA5B;MAEA5E,OAAA,CAAQb,wBAAR,GAAmC,WAAnC;MAEAa,OAAA,CAAQnB,SAAR,GAAoByG,aAAA,GAChB1K,SAAA,CAAUyL,UAAV,CACErG,OADF,EAEE,IAFF,EAGE,IAAA7R,yCAAA,EAA2B7V,GAA3B,CAHF,EAIE4jB,wBAAA,CAAS7rD,IAJX,CADgB,GAOhBuqD,SAPJ;MAQAoF,OAAA,CAAQyD,QAAR,CAAiB,CAAjB,EAAoB,CAApB,EAAuBl+B,KAAvB,EAA8BC,MAA9B;MAEAw6B,OAAA,CAAQzoD,OAAR;MAEA+gC,GAAA,CAAIhhC,IAAJ;MACAghC,GAAA,CAAI9gC,SAAJ,CAAc,GAAGA,SAAjB;MACA8gC,GAAA,CAAI5gB,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd;MACA0/B,wBAAA,CACE9e,GADF,EAEEmtB,UAAA,CAAWl/B,MAFb,EAGE,CAHF,EAIE,CAJF,EAKEhB,KALF,EAMEC,MANF,EAOE,CAPF,EAQE,CAAC,CARH,EASE,CATF,EAUE,CAVF;MAYA8S,GAAA,CAAI/gC,OAAJ;IA3C0B;IA6C5B,KAAKyvD,OAAL;EAtDiC;EAyDnClrD,kBAAkBqqB,KAAlB,EAAyB;IACvB,IAAI,CAAC,KAAK08B,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMnK,OAAA,GAAU,KAAK4K,SAAL,CAAen9B,KAAf,CAAhB;IACA,IAAI,CAACuyB,OAAL,EAAc;MACZ,IAAAx7C,UAAA,EAAK,iCAAL;MACA;IAFY;IAKd,KAAKnB,uBAAL,CAA6B28C,OAA7B;EAVuB;EAazBz8C,wBAAwBkqB,KAAxB,EAA+BoyB,MAA/B,EAAuCC,MAAvC,EAA+CgV,SAA/C,EAA0D;IACxD,IAAI,CAAC,KAAK3K,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMnK,OAAA,GAAU,KAAK4K,SAAL,CAAen9B,KAAf,CAAhB;IACA,IAAI,CAACuyB,OAAL,EAAc;MACZ,IAAAx7C,UAAA,EAAK,iCAAL;MACA;IAFY;IAKd,MAAMqoB,KAAA,GAAQmzB,OAAA,CAAQnzB,KAAtB;IACA,MAAMC,MAAA,GAASkzB,OAAA,CAAQlzB,MAAvB;IACA,MAAMhkB,GAAA,GAAM,EAAZ;IACA,KAAK,IAAIhB,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAK8lD,SAAA,CAAUvvD,MAA1B,EAAkCuC,CAAA,GAAIkH,EAA3C,EAA+ClH,CAAA,IAAK,CAApD,EAAuD;MACrDgB,GAAA,CAAIV,IAAJ,CAAS;QACPtJ,SAAA,EAAW,CAAC+gD,MAAD,EAAS,CAAT,EAAY,CAAZ,EAAeC,MAAf,EAAuBgV,SAAA,CAAUhtD,CAAV,CAAvB,EAAqCgtD,SAAA,CAAUhtD,CAAA,GAAI,CAAd,CAArC,CADJ;QAEP+rB,CAAA,EAAG,CAFI;QAGPC,CAAA,EAAG,CAHI;QAIPsH,CAAA,EAAGvO,KAJI;QAKPwO,CAAA,EAAGvO;MALI,CAAT;IADqD;IASvD,KAAKxpB,4BAAL,CAAkC08C,OAAlC,EAA2Cl3C,GAA3C;EAtBwD;EAyB1DmsD,0BAA0Br1B,GAA1B,EAA+B;IAC7B,IAAI,KAAK2b,OAAL,CAAakH,YAAb,KAA8B,MAAlC,EAA0C;MACxC7iB,GAAA,CAAIoO,MAAJ,GAAa,KAAKuN,OAAL,CAAakH,YAA1B;MACA7iB,GAAA,CAAII,SAAJ,CAAcJ,GAAA,CAAI/R,MAAlB,EAA0B,CAA1B,EAA6B,CAA7B;MACA+R,GAAA,CAAIoO,MAAJ,GAAa,MAAb;IAHwC;IAK1C,OAAOpO,GAAA,CAAI/R,MAAX;EAN6B;EAS/BqnC,0BAA0BlV,OAA1B,EAAmC;IACjC,IAAI,KAAKzE,OAAL,CAAakH,YAAb,KAA8B,MAAlC,EAA0C;MACxC,OAAOzC,OAAA,CAAQpzB,MAAf;IADwC;IAG1C,MAAM;MAAEA,MAAF;MAAUC,KAAV;MAAiBC;IAAjB,IAA4BkzB,OAAlC;IACA,MAAMwM,SAAA,GAAY,KAAKpC,cAAL,CAAoB5L,SAApB,CAChB,aADgB,EAEhB3xB,KAFgB,EAGhBC,MAHgB,CAAlB;IAKA,MAAM2/B,MAAA,GAASD,SAAA,CAAUv7B,OAAzB;IACAw7B,MAAA,CAAOze,MAAP,GAAgB,KAAKuN,OAAL,CAAakH,YAA7B;IACAgK,MAAA,CAAOzsB,SAAP,CAAiBpT,MAAjB,EAAyB,CAAzB,EAA4B,CAA5B;IACA6/B,MAAA,CAAOze,MAAP,GAAgB,MAAhB;IAEA,OAAOwe,SAAA,CAAU3+B,MAAjB;EAfiC;EAkBnCxqB,wBAAwB28C,OAAxB,EAAiC;IAC/B,IAAI,CAAC,KAAKmK,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMt9B,KAAA,GAAQmzB,OAAA,CAAQnzB,KAAtB;IACA,MAAMC,MAAA,GAASkzB,OAAA,CAAQlzB,MAAvB;IACA,MAAM8S,GAAA,GAAM,KAAKA,GAAjB;IAEA,KAAKhhC,IAAL;IAEA,IAEE,CAACpK,cAFH,EAGE;MAKA,MAAM;QAAEw5C;MAAF,IAAapO,GAAnB;MACA,IAAIoO,MAAA,KAAW,MAAX,IAAqBA,MAAA,KAAW,EAApC,EAAwC;QACtCpO,GAAA,CAAIoO,MAAJ,GAAa,MAAb;MADsC;IANxC;IAYFpO,GAAA,CAAI5gB,KAAJ,CAAU,IAAI6N,KAAd,EAAqB,CAAC,CAAD,GAAKC,MAA1B;IAEA,IAAIqoC,UAAJ;IACA,IAAInV,OAAA,CAAQpzB,MAAZ,EAAoB;MAClBuoC,UAAA,GAAa,KAAKD,yBAAL,CAA+BlV,OAA/B,CAAb;IADkB,CAApB,MAEO,IACJ,OAAOoV,WAAP,KAAuB,UAAvB,IAAqCpV,OAAA,YAAmBoV,WAAzD,IACA,CAACpV,OAAA,CAAQpvC,IAFJ,EAGL;MAEAukD,UAAA,GAAanV,OAAb;IAFA,CAHK,MAMA;MACL,MAAMwM,SAAA,GAAY,KAAKpC,cAAL,CAAoB5L,SAApB,CAChB,aADgB,EAEhB3xB,KAFgB,EAGhBC,MAHgB,CAAlB;MAKA,MAAM2/B,MAAA,GAASD,SAAA,CAAUv7B,OAAzB;MACA8yB,kBAAA,CAAmB0I,MAAnB,EAA2BzM,OAA3B;MACAmV,UAAA,GAAa,KAAKF,yBAAL,CAA+BxI,MAA/B,CAAb;IARK;IAWP,MAAMK,MAAA,GAAS,KAAKb,WAAL,CACbkJ,UADa,EAEb,IAAA1f,yCAAA,EAA2B7V,GAA3B,CAFa,CAAf;IAIAA,GAAA,CAAI6tB,qBAAJ,GAA4B/E,wBAAA,CAC1B,IAAApT,kCAAA,EAAoB1V,GAApB,CAD0B,EAE1BogB,OAAA,CAAQ2I,WAFkB,CAA5B;IAKAjK,wBAAA,CACE9e,GADF,EAEEktB,MAAA,CAAOZ,GAFT,EAGE,CAHF,EAIE,CAJF,EAKEY,MAAA,CAAOT,UALT,EAMES,MAAA,CAAOR,WANT,EAOE,CAPF,EAQE,CAACx/B,MARH,EASED,KATF,EAUEC,MAVF;IAYA,KAAKwhC,OAAL;IACA,KAAKzvD,OAAL;EArE+B;EAwEjCyE,6BAA6B08C,OAA7B,EAAsCl3C,GAAtC,EAA2C;IACzC,IAAI,CAAC,KAAKqhD,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMvqB,GAAA,GAAM,KAAKA,GAAjB;IACA,IAAIu1B,UAAJ;IACA,IAAInV,OAAA,CAAQpzB,MAAZ,EAAoB;MAClBuoC,UAAA,GAAanV,OAAA,CAAQpzB,MAArB;IADkB,CAApB,MAEO;MACL,MAAMwO,CAAA,GAAI4kB,OAAA,CAAQnzB,KAAlB;MACA,MAAMwO,CAAA,GAAI2kB,OAAA,CAAQlzB,MAAlB;MAEA,MAAM0/B,SAAA,GAAY,KAAKpC,cAAL,CAAoB5L,SAApB,CAA8B,aAA9B,EAA6CpjB,CAA7C,EAAgDC,CAAhD,CAAlB;MACA,MAAMoxB,MAAA,GAASD,SAAA,CAAUv7B,OAAzB;MACA8yB,kBAAA,CAAmB0I,MAAnB,EAA2BzM,OAA3B;MACAmV,UAAA,GAAa,KAAKF,yBAAL,CAA+BxI,MAA/B,CAAb;IAPK;IAUP,WAAWh8B,KAAX,IAAoB3nB,GAApB,EAAyB;MACvB82B,GAAA,CAAIhhC,IAAJ;MACAghC,GAAA,CAAI9gC,SAAJ,CAAc,GAAG2xB,KAAA,CAAM3xB,SAAvB;MACA8gC,GAAA,CAAI5gB,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd;MACA0/B,wBAAA,CACE9e,GADF,EAEEu1B,UAFF,EAGE1kC,KAAA,CAAMoD,CAHR,EAIEpD,KAAA,CAAMqD,CAJR,EAKErD,KAAA,CAAM2K,CALR,EAME3K,KAAA,CAAM4K,CANR,EAOE,CAPF,EAQE,CAAC,CARH,EASE,CATF,EAUE,CAVF;MAYAuE,GAAA,CAAI/gC,OAAJ;IAhBuB;IAkBzB,KAAKyvD,OAAL;EApCyC;EAuC3C7qD,yBAAA,EAA2B;IACzB,IAAI,CAAC,KAAK0mD,cAAV,EAA0B;MACxB;IADwB;IAG1B,KAAKvqB,GAAL,CAASmrB,QAAT,CAAkB,CAAlB,EAAqB,CAArB,EAAwB,CAAxB,EAA2B,CAA3B;IACA,KAAKuD,OAAL;EALyB;EAU3BjsD,UAAUgzD,GAAV,EAAe;EAIf/yD,eAAe+yD,GAAf,EAAoBzP,UAApB,EAAgC;EAIhCrjD,mBAAmB8yD,GAAnB,EAAwB;IACtB,KAAKjM,kBAAL,CAAwBhhD,IAAxB,CAA6B;MAC3BktD,OAAA,EAAS;IADkB,CAA7B;EADsB;EAMxB9yD,wBAAwB6yD,GAAxB,EAA6BzP,UAA7B,EAAyC;IACvC,IAAIyP,GAAA,KAAQ,IAAZ,EAAkB;MAChB,KAAKjM,kBAAL,CAAwBhhD,IAAxB,CAA6B;QAC3BktD,OAAA,EAAS,KAAK/yC,qBAAL,CAA2BgzC,SAA3B,CAAqC3P,UAArC;MADkB,CAA7B;IADgB,CAAlB,MAIO;MACL,KAAKwD,kBAAL,CAAwBhhD,IAAxB,CAA6B;QAC3BktD,OAAA,EAAS;MADkB,CAA7B;IADK;IAKP,KAAKnL,cAAL,GAAsB,KAAKqL,gBAAL,EAAtB;EAVuC;EAazC/yD,iBAAA,EAAmB;IACjB,KAAK2mD,kBAAL,CAAwBqF,GAAxB;IACA,KAAKtE,cAAL,GAAsB,KAAKqL,gBAAL,EAAtB;EAFiB;EAOnB9yD,YAAA,EAAc;EAIdC,UAAA,EAAY;EAMZssD,YAAYtM,OAAZ,EAAqB;IACnB,MAAMrsB,OAAA,GAAU,KAAKilB,OAAL,CAAaqI,WAAb,EAAhB;IACA,IAAI,KAAK0F,WAAT,EAAsB;MACpB,KAAK/N,OAAL,CAAaoI,kBAAb;IADoB;IAGtB,IAAI,CAAC,KAAK2F,WAAV,EAAuB;MACrB,KAAKgF,OAAL,CAAa3L,OAAb;IADqB;IAGvB,MAAM/iB,GAAA,GAAM,KAAKA,GAAjB;IACA,IAAI,KAAK0pB,WAAT,EAAsB;MACpB,IAAI,CAAChzB,OAAL,EAAc;QACZ,IAAI,KAAKgzB,WAAL,KAAqBJ,OAAzB,EAAkC;UAChCtpB,GAAA,CAAI7/B,IAAJ,CAAS,SAAT;QADgC,CAAlC,MAEO;UACL6/B,GAAA,CAAI7/B,IAAJ;QADK;MAHK;MAOd,KAAKupD,WAAL,GAAmB,IAAnB;IARoB;IAUtB,KAAK/N,OAAL,CAAamH,sBAAb,CAAoC,KAAKnH,OAAL,CAAaoH,OAAjD;IACA/iB,GAAA,CAAI8d,SAAJ;EApBmB;EAuBrBuT,oBAAA,EAAsB;IACpB,IAAI,CAAC,KAAKvG,0BAAV,EAAsC;MACpC,MAAMr/C,CAAA,GAAI,IAAAiqC,kCAAA,EAAoB,KAAK1V,GAAzB,CAAV;MACA,IAAIv0B,CAAA,CAAE,CAAF,MAAS,CAAT,IAAcA,CAAA,CAAE,CAAF,MAAS,CAA3B,EAA8B;QAE5B,KAAKq/C,0BAAL,GACE,IAAI1iD,IAAA,CAAKC,GAAL,CAASD,IAAA,CAAKoG,GAAL,CAAS/C,CAAA,CAAE,CAAF,CAAT,CAAT,EAAyBrD,IAAA,CAAKoG,GAAL,CAAS/C,CAAA,CAAE,CAAF,CAAT,CAAzB,CADN;MAF4B,CAA9B,MAIO;QACL,MAAMoqD,MAAA,GAASztD,IAAA,CAAKoG,GAAL,CAAS/C,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAA9B,CAAf;QACA,MAAMqqD,KAAA,GAAQ1tD,IAAA,CAAKk0B,KAAL,CAAW7wB,CAAA,CAAE,CAAF,CAAX,EAAiBA,CAAA,CAAE,CAAF,CAAjB,CAAd;QACA,MAAMsqD,KAAA,GAAQ3tD,IAAA,CAAKk0B,KAAL,CAAW7wB,CAAA,CAAE,CAAF,CAAX,EAAiBA,CAAA,CAAE,CAAF,CAAjB,CAAd;QACA,KAAKq/C,0BAAL,GAAkC1iD,IAAA,CAAKgE,GAAL,CAAS0pD,KAAT,EAAgBC,KAAhB,IAAyBF,MAA3D;MAJK;IAN6B;IAatC,OAAO,KAAK/K,0BAAZ;EAdoB;EAiBtBkL,oBAAA,EAAsB;IAOpB,IAAI,KAAKnL,uBAAL,CAA6B,CAA7B,MAAoC,CAAC,CAAzC,EAA4C;MAC1C,MAAM;QAAElI;MAAF,IAAgB,KAAKhH,OAA3B;MACA,MAAM;QAAEnvC,CAAF;QAAKvB,CAAL;QAAQwB,CAAR;QAAWZ;MAAX,IAAiB,KAAKm0B,GAAL,CAAS4V,YAAT,EAAvB;MACA,IAAIqK,MAAJ,EAAYC,MAAZ;MAEA,IAAIj1C,CAAA,KAAM,CAAN,IAAWwB,CAAA,KAAM,CAArB,EAAwB;QAEtB,MAAMqpD,KAAA,GAAQ1tD,IAAA,CAAKoG,GAAL,CAAShC,CAAT,CAAd;QACA,MAAMupD,KAAA,GAAQ3tD,IAAA,CAAKoG,GAAL,CAAS3C,CAAT,CAAd;QACA,IAAIiqD,KAAA,KAAUC,KAAd,EAAqB;UACnB,IAAIpT,SAAA,KAAc,CAAlB,EAAqB;YACnB1C,MAAA,GAASC,MAAA,GAAS,IAAI4V,KAAtB;UADmB,CAArB,MAEO;YACL,MAAMG,eAAA,GAAkBH,KAAA,GAAQnT,SAAhC;YACA1C,MAAA,GAASC,MAAA,GAAS+V,eAAA,GAAkB,CAAlB,GAAsB,IAAIA,eAA1B,GAA4C,CAA9D;UAFK;QAHY,CAArB,MAOO,IAAItT,SAAA,KAAc,CAAlB,EAAqB;UAC1B1C,MAAA,GAAS,IAAI6V,KAAb;UACA5V,MAAA,GAAS,IAAI6V,KAAb;QAF0B,CAArB,MAGA;UACL,MAAMG,gBAAA,GAAmBJ,KAAA,GAAQnT,SAAjC;UACA,MAAMwT,gBAAA,GAAmBJ,KAAA,GAAQpT,SAAjC;UACA1C,MAAA,GAASiW,gBAAA,GAAmB,CAAnB,GAAuB,IAAIA,gBAA3B,GAA8C,CAAvD;UACAhW,MAAA,GAASiW,gBAAA,GAAmB,CAAnB,GAAuB,IAAIA,gBAA3B,GAA8C,CAAvD;QAJK;MAde,CAAxB,MAoBO;QAOL,MAAMN,MAAA,GAASztD,IAAA,CAAKoG,GAAL,CAAShC,CAAA,GAAIX,CAAJ,GAAQZ,CAAA,GAAIwB,CAArB,CAAf;QACA,MAAMqpD,KAAA,GAAQ1tD,IAAA,CAAKk0B,KAAL,CAAW9vB,CAAX,EAAcvB,CAAd,CAAd;QACA,MAAM8qD,KAAA,GAAQ3tD,IAAA,CAAKk0B,KAAL,CAAW7vB,CAAX,EAAcZ,CAAd,CAAd;QACA,IAAI82C,SAAA,KAAc,CAAlB,EAAqB;UACnB1C,MAAA,GAAS8V,KAAA,GAAQF,MAAjB;UACA3V,MAAA,GAAS4V,KAAA,GAAQD,MAAjB;QAFmB,CAArB,MAGO;UACL,MAAMO,QAAA,GAAWzT,SAAA,GAAYkT,MAA7B;UACA5V,MAAA,GAAS8V,KAAA,GAAQK,QAAR,GAAmBL,KAAA,GAAQK,QAA3B,GAAsC,CAA/C;UACAlW,MAAA,GAAS4V,KAAA,GAAQM,QAAR,GAAmBN,KAAA,GAAQM,QAA3B,GAAsC,CAA/C;QAHK;MAbF;MAmBP,KAAKvL,uBAAL,CAA6B,CAA7B,IAAkC5K,MAAlC;MACA,KAAK4K,uBAAL,CAA6B,CAA7B,IAAkC3K,MAAlC;IA7C0C;IA+C5C,OAAO,KAAK2K,uBAAZ;EAtDoB;EA2DtByE,iBAAiB+G,WAAjB,EAA8B;IAC5B,MAAM;MAAEr2B;IAAF,IAAU,IAAhB;IACA,MAAM;MAAE2iB;IAAF,IAAgB,KAAKhH,OAA3B;IACA,MAAM,CAACsE,MAAD,EAASC,MAAT,IAAmB,KAAK8V,mBAAL,EAAzB;IAEAh2B,GAAA,CAAI2iB,SAAJ,GAAgBA,SAAA,IAAa,CAA7B;IAEA,IAAI1C,MAAA,KAAW,CAAX,IAAgBC,MAAA,KAAW,CAA/B,EAAkC;MAChClgB,GAAA,CAAItgC,MAAJ;MACA;IAFgC;IAKlC,MAAM42D,MAAA,GAASt2B,GAAA,CAAImmB,WAAJ,EAAf;IACA,IAAIkQ,WAAJ,EAAiB;MACfr2B,GAAA,CAAIhhC,IAAJ;IADe;IAIjBghC,GAAA,CAAI5gB,KAAJ,CAAU6gC,MAAV,EAAkBC,MAAlB;IASA,IAAIoW,MAAA,CAAO3wD,MAAP,GAAgB,CAApB,EAAuB;MACrB,MAAMyZ,KAAA,GAAQhX,IAAA,CAAKgE,GAAL,CAAS6zC,MAAT,EAAiBC,MAAjB,CAAd;MACAlgB,GAAA,CAAIkmB,WAAJ,CAAgBoQ,MAAA,CAAOptD,GAAP,CAAW+qB,CAAA,IAAKA,CAAA,GAAI7U,KAApB,CAAhB;MACA4gB,GAAA,CAAIomB,cAAJ,IAAsBhnC,KAAtB;IAHqB;IAMvB4gB,GAAA,CAAItgC,MAAJ;IAEA,IAAI22D,WAAJ,EAAiB;MACfr2B,GAAA,CAAI/gC,OAAJ;IADe;EAlCW;EAuC9B22D,iBAAA,EAAmB;IACjB,KAAK,IAAI1tD,CAAA,GAAI,KAAKshD,kBAAL,CAAwB7jD,MAAxB,GAAiC,CAAzC,EAA4CuC,CAAA,IAAK,CAAtD,EAAyDA,CAAA,EAAzD,EAA8D;MAC5D,IAAI,CAAC,KAAKshD,kBAAL,CAAwBthD,CAAxB,EAA2BwtD,OAAhC,EAAyC;QACvC,OAAO,KAAP;MADuC;IADmB;IAK9D,OAAO,IAAP;EANiB;AAhwEA;AA56BrBxgE,sBAAA,GAAAq6B,cAAA;AAsrGA,WAAWgnC,EAAX,IAAiBj4D,SAAjB,EAAsB;EACpB,IAAIixB,cAAA,CAAexoB,SAAf,CAAyBwvD,EAAzB,MAAiC3uD,SAArC,EAAgD;IAC9C2nB,cAAA,CAAexoB,SAAf,CAAyBzI,SAAA,CAAIi4D,EAAJ,CAAzB,IAAoChnC,cAAA,CAAexoB,SAAf,CAAyBwvD,EAAzB,CAApC;EAD8C;AAD5B;;;;;;;;;;;;;ACvqGtB,IAAAtkD,KAAA,GAAAC,mBAAA;AACA,IAAAE,cAAA,GAAAF,mBAAA;AAEA,MAAM0xC,QAAA,GAAW;EACf7rD,IAAA,EAAM,MADS;EAEfC,MAAA,EAAQ,QAFO;EAGf+7D,OAAA,EAAS;AAHM,CAAjB;AAlBA7+D,gBAAA,GAAA0uD,QAAA;AAwBA,SAAS4S,gBAATA,CAA0Bx2B,GAA1B,EAA+Bi0B,IAA/B,EAAqC;EACnC,IAAI,CAACA,IAAL,EAAW;IACT;EADS;EAGX,MAAMhnC,KAAA,GAAQgnC,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAxB;EACA,MAAM/mC,MAAA,GAAS+mC,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAzB;EACA,MAAMwC,MAAA,GAAS,IAAItV,MAAJ,EAAf;EACAsV,MAAA,CAAOzpD,IAAP,CAAYinD,IAAA,CAAK,CAAL,CAAZ,EAAqBA,IAAA,CAAK,CAAL,CAArB,EAA8BhnC,KAA9B,EAAqCC,MAArC;EACA8S,GAAA,CAAI7/B,IAAJ,CAASs2D,MAAT;AARmC;AAWrC,MAAMC,kBAAN,CAAyB;EACvB5vD,YAAA,EAAc;IACZ,IAAI,KAAKA,WAAL,KAAqB4vD,kBAAzB,EAA6C;MAC3C,IAAA7xD,iBAAA,EAAY,uCAAZ;IAD2C;EADjC;EAMdkpD,WAAA,EAAa;IACX,IAAAlpD,iBAAA,EAAY,sCAAZ;EADW;AAPU;AAYzB,MAAM8xD,yBAAN,SAAwCD,kBAAxC,CAA2D;EACzD5vD,YAAYysD,EAAZ,EAAgB;IACd;IACA,KAAKviC,KAAL,GAAauiC,EAAA,CAAG,CAAH,CAAb;IACA,KAAKqD,KAAL,GAAarD,EAAA,CAAG,CAAH,CAAb;IACA,KAAKsD,WAAL,GAAmBtD,EAAA,CAAG,CAAH,CAAnB;IACA,KAAKuD,GAAL,GAAWvD,EAAA,CAAG,CAAH,CAAX;IACA,KAAKwD,GAAL,GAAWxD,EAAA,CAAG,CAAH,CAAX;IACA,KAAKyD,GAAL,GAAWzD,EAAA,CAAG,CAAH,CAAX;IACA,KAAK0D,GAAL,GAAW1D,EAAA,CAAG,CAAH,CAAX;IACA,KAAKM,MAAL,GAAc,IAAd;EATc;EAYhBqD,gBAAgBl3B,GAAhB,EAAqB;IACnB,IAAIm3B,IAAJ;IACA,IAAI,KAAKnmC,KAAL,KAAe,OAAnB,EAA4B;MAC1BmmC,IAAA,GAAOn3B,GAAA,CAAIo3B,oBAAJ,CACL,KAAKN,GAAL,CAAS,CAAT,CADK,EAEL,KAAKA,GAAL,CAAS,CAAT,CAFK,EAGL,KAAKC,GAAL,CAAS,CAAT,CAHK,EAIL,KAAKA,GAAL,CAAS,CAAT,CAJK,CAAP;IAD0B,CAA5B,MAOO,IAAI,KAAK/lC,KAAL,KAAe,QAAnB,EAA6B;MAClCmmC,IAAA,GAAOn3B,GAAA,CAAIq3B,oBAAJ,CACL,KAAKP,GAAL,CAAS,CAAT,CADK,EAEL,KAAKA,GAAL,CAAS,CAAT,CAFK,EAGL,KAAKE,GAHA,EAIL,KAAKD,GAAL,CAAS,CAAT,CAJK,EAKL,KAAKA,GAAL,CAAS,CAAT,CALK,EAML,KAAKE,GANA,CAAP;IADkC;IAWpC,WAAWK,SAAX,IAAwB,KAAKT,WAA7B,EAA0C;MACxCM,IAAA,CAAKI,YAAL,CAAkBD,SAAA,CAAU,CAAV,CAAlB,EAAgCA,SAAA,CAAU,CAAV,CAAhC;IADwC;IAG1C,OAAOH,IAAP;EAvBmB;EA0BrBpJ,WAAW/tB,GAAX,EAAgBw3B,KAAhB,EAAuB1J,OAAvB,EAAgCnK,QAAhC,EAA0C;IACxC,IAAIyN,OAAJ;IACA,IAAIzN,QAAA,KAAaC,QAAA,CAAS5rD,MAAtB,IAAgC2rD,QAAA,KAAaC,QAAA,CAAS7rD,IAA1D,EAAgE;MAC9D,MAAM0/D,SAAA,GAAYD,KAAA,CAAM7b,OAAN,CAAcuI,yBAAd,CAChBP,QADgB,EAEhB,IAAAjO,kCAAA,EAAoB1V,GAApB,CAFgB,KAGb,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAHL;MAOA,MAAM/S,KAAA,GAAQ7kB,IAAA,CAAKkgD,IAAL,CAAUmP,SAAA,CAAU,CAAV,IAAeA,SAAA,CAAU,CAAV,CAAzB,KAA0C,CAAxD;MACA,MAAMvqC,MAAA,GAAS9kB,IAAA,CAAKkgD,IAAL,CAAUmP,SAAA,CAAU,CAAV,IAAeA,SAAA,CAAU,CAAV,CAAzB,KAA0C,CAAzD;MAEA,MAAM7K,SAAA,GAAY4K,KAAA,CAAMhN,cAAN,CAAqB5L,SAArB,CAChB,SADgB,EAEhB3xB,KAFgB,EAGhBC,MAHgB,EAIhB,IAJgB,CAAlB;MAOA,MAAM2/B,MAAA,GAASD,SAAA,CAAUv7B,OAAzB;MACAw7B,MAAA,CAAOC,SAAP,CAAiB,CAAjB,EAAoB,CAApB,EAAuBD,MAAA,CAAO5+B,MAAP,CAAchB,KAArC,EAA4C4/B,MAAA,CAAO5+B,MAAP,CAAcf,MAA1D;MACA2/B,MAAA,CAAO/O,SAAP;MACA+O,MAAA,CAAO7/C,IAAP,CAAY,CAAZ,EAAe,CAAf,EAAkB6/C,MAAA,CAAO5+B,MAAP,CAAchB,KAAhC,EAAuC4/B,MAAA,CAAO5+B,MAAP,CAAcf,MAArD;MAIA2/B,MAAA,CAAO71B,SAAP,CAAiB,CAACygC,SAAA,CAAU,CAAV,CAAlB,EAAgC,CAACA,SAAA,CAAU,CAAV,CAAjC;MACA3J,OAAA,GAAUjjD,UAAA,CAAK3L,SAAL,CAAe4uD,OAAf,EAAwB,CAChC,CADgC,EAEhC,CAFgC,EAGhC,CAHgC,EAIhC,CAJgC,EAKhC2J,SAAA,CAAU,CAAV,CALgC,EAMhCA,SAAA,CAAU,CAAV,CANgC,CAAxB,CAAV;MASA5K,MAAA,CAAO3tD,SAAP,CAAiB,GAAGs4D,KAAA,CAAMxN,aAA1B;MACA,IAAI,KAAK6J,MAAT,EAAiB;QACfhH,MAAA,CAAO3tD,SAAP,CAAiB,GAAG,KAAK20D,MAAzB;MADe;MAGjB2C,gBAAA,CAAiB3J,MAAjB,EAAyB,KAAK+J,KAA9B;MAEA/J,MAAA,CAAOtG,SAAP,GAAmB,KAAK2Q,eAAL,CAAqBrK,MAArB,CAAnB;MACAA,MAAA,CAAOjtD,IAAP;MAEAwxD,OAAA,GAAUpxB,GAAA,CAAI03B,aAAJ,CAAkB9K,SAAA,CAAU3+B,MAA5B,EAAoC,WAApC,CAAV;MACA,MAAM0pC,SAAA,GAAY,IAAIC,SAAJ,CAAc9J,OAAd,CAAlB;MACAsD,OAAA,CAAQjU,YAAR,CAAqBwa,SAArB;IA9C8D,CAAhE,MA+CO;MAILnB,gBAAA,CAAiBx2B,GAAjB,EAAsB,KAAK42B,KAA3B;MACAxF,OAAA,GAAU,KAAK8F,eAAL,CAAqBl3B,GAArB,CAAV;IALK;IAOP,OAAOoxB,OAAP;EAxDwC;AAvCe;AAmG3D,SAASyG,YAATA,CAAsB7mD,IAAtB,EAA4BqgB,OAA5B,EAAqCtlB,EAArC,EAAyCC,EAAzC,EAA6CE,EAA7C,EAAiD4rD,EAAjD,EAAqDC,EAArD,EAAyDC,EAAzD,EAA6D;EAE3D,MAAMC,MAAA,GAAS5mC,OAAA,CAAQ4mC,MAAvB;IACEt0B,MAAA,GAAStS,OAAA,CAAQsS,MADnB;EAEA,MAAMh8B,KAAA,GAAQqJ,IAAA,CAAKA,IAAnB;IACEknD,OAAA,GAAUlnD,IAAA,CAAKic,KAAL,GAAa,CADzB;EAEA,IAAIkrC,GAAJ;EACA,IAAIF,MAAA,CAAOlsD,EAAA,GAAK,CAAZ,IAAiBksD,MAAA,CAAOjsD,EAAA,GAAK,CAAZ,CAArB,EAAqC;IACnCmsD,GAAA,GAAMpsD,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKmsD,GAAL;IACAA,GAAA,GAAML,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKI,GAAL;EANmC;EAQrC,IAAIF,MAAA,CAAOjsD,EAAA,GAAK,CAAZ,IAAiBisD,MAAA,CAAO/rD,EAAA,GAAK,CAAZ,CAArB,EAAqC;IACnCisD,GAAA,GAAMnsD,EAAN;IACAA,EAAA,GAAKE,EAAL;IACAA,EAAA,GAAKisD,GAAL;IACAA,GAAA,GAAMJ,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKG,GAAL;EANmC;EAQrC,IAAIF,MAAA,CAAOlsD,EAAA,GAAK,CAAZ,IAAiBksD,MAAA,CAAOjsD,EAAA,GAAK,CAAZ,CAArB,EAAqC;IACnCmsD,GAAA,GAAMpsD,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKmsD,GAAL;IACAA,GAAA,GAAML,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKI,GAAL;EANmC;EAQrC,MAAMxqD,EAAA,GAAM,CAAAsqD,MAAA,CAAOlsD,EAAP,IAAaslB,OAAA,CAAQ/R,OAArB,IAAgC+R,OAAA,CAAQ4uB,MAApD;EACA,MAAMryC,EAAA,GAAM,CAAAqqD,MAAA,CAAOlsD,EAAA,GAAK,CAAZ,IAAiBslB,OAAA,CAAQ9R,OAAzB,IAAoC8R,OAAA,CAAQ6uB,MAAxD;EACA,MAAMryC,EAAA,GAAM,CAAAoqD,MAAA,CAAOjsD,EAAP,IAAaqlB,OAAA,CAAQ/R,OAArB,IAAgC+R,OAAA,CAAQ4uB,MAApD;EACA,MAAMnyC,EAAA,GAAM,CAAAmqD,MAAA,CAAOjsD,EAAA,GAAK,CAAZ,IAAiBqlB,OAAA,CAAQ9R,OAAzB,IAAoC8R,OAAA,CAAQ6uB,MAAxD;EACA,MAAMnyC,EAAA,GAAM,CAAAkqD,MAAA,CAAO/rD,EAAP,IAAamlB,OAAA,CAAQ/R,OAArB,IAAgC+R,OAAA,CAAQ4uB,MAApD;EACA,MAAMjyC,EAAA,GAAM,CAAAiqD,MAAA,CAAO/rD,EAAA,GAAK,CAAZ,IAAiBmlB,OAAA,CAAQ9R,OAAzB,IAAoC8R,OAAA,CAAQ6uB,MAAxD;EACA,IAAItyC,EAAA,IAAMI,EAAV,EAAc;IACZ;EADY;EAGd,MAAMoqD,GAAA,GAAMz0B,MAAA,CAAOm0B,EAAP,CAAZ;IACEO,GAAA,GAAM10B,MAAA,CAAOm0B,EAAA,GAAK,CAAZ,CADR;IAEEQ,GAAA,GAAM30B,MAAA,CAAOm0B,EAAA,GAAK,CAAZ,CAFR;EAGA,MAAMS,GAAA,GAAM50B,MAAA,CAAOo0B,EAAP,CAAZ;IACES,GAAA,GAAM70B,MAAA,CAAOo0B,EAAA,GAAK,CAAZ,CADR;IAEEU,GAAA,GAAM90B,MAAA,CAAOo0B,EAAA,GAAK,CAAZ,CAFR;EAGA,MAAMW,GAAA,GAAM/0B,MAAA,CAAOq0B,EAAP,CAAZ;IACEW,GAAA,GAAMh1B,MAAA,CAAOq0B,EAAA,GAAK,CAAZ,CADR;IAEEY,GAAA,GAAMj1B,MAAA,CAAOq0B,EAAA,GAAK,CAAZ,CAFR;EAIA,MAAM7U,IAAA,GAAO/6C,IAAA,CAAKiwB,KAAL,CAAWzqB,EAAX,CAAb;IACEy1C,IAAA,GAAOj7C,IAAA,CAAKiwB,KAAL,CAAWrqB,EAAX,CADT;EAEA,IAAI6qD,EAAJ,EAAQC,GAAR,EAAaC,GAAb,EAAkBC,GAAlB;EACA,IAAIC,EAAJ,EAAQC,GAAR,EAAaC,GAAb,EAAkBC,GAAlB;EACA,KAAK,IAAIllC,CAAA,GAAIivB,IAAR,EAAcjvB,CAAA,IAAKmvB,IAAxB,EAA8BnvB,CAAA,EAA9B,EAAmC;IACjC,IAAIA,CAAA,GAAIpmB,EAAR,EAAY;MACV,MAAM+hC,CAAA,GAAI3b,CAAA,GAAItmB,EAAJ,GAAS,CAAT,GAAc,CAAAA,EAAA,GAAKsmB,CAAL,KAAWtmB,EAAA,GAAKE,EAAL,CAAnC;MACA+qD,EAAA,GAAKlrD,EAAA,GAAM,CAAAA,EAAA,GAAKE,EAAL,IAAWgiC,CAAtB;MACAipB,GAAA,GAAMV,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAa1oB,CAA1B;MACAkpB,GAAA,GAAMV,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAa3oB,CAA1B;MACAmpB,GAAA,GAAMV,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAa5oB,CAA1B;IALU,CAAZ,MAMO;MACL,IAAIA,CAAJ;MACA,IAAI3b,CAAA,GAAIlmB,EAAR,EAAY;QACV6hC,CAAA,GAAI,CAAJ;MADU,CAAZ,MAEO,IAAI/hC,EAAA,KAAOE,EAAX,EAAe;QACpB6hC,CAAA,GAAI,CAAJ;MADoB,CAAf,MAEA;QACLA,CAAA,GAAK,CAAA/hC,EAAA,GAAKomB,CAAL,KAAWpmB,EAAA,GAAKE,EAAL,CAAhB;MADK;MAGP6qD,EAAA,GAAKhrD,EAAA,GAAM,CAAAA,EAAA,GAAKE,EAAL,IAAW8hC,CAAtB;MACAipB,GAAA,GAAMP,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAa7oB,CAA1B;MACAkpB,GAAA,GAAMP,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAa9oB,CAA1B;MACAmpB,GAAA,GAAMP,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAa/oB,CAA1B;IAZK;IAeP,IAAIA,CAAJ;IACA,IAAI3b,CAAA,GAAItmB,EAAR,EAAY;MACViiC,CAAA,GAAI,CAAJ;IADU,CAAZ,MAEO,IAAI3b,CAAA,GAAIlmB,EAAR,EAAY;MACjB6hC,CAAA,GAAI,CAAJ;IADiB,CAAZ,MAEA;MACLA,CAAA,GAAK,CAAAjiC,EAAA,GAAKsmB,CAAL,KAAWtmB,EAAA,GAAKI,EAAL,CAAhB;IADK;IAGPirD,EAAA,GAAKtrD,EAAA,GAAM,CAAAA,EAAA,GAAKI,EAAL,IAAW8hC,CAAtB;IACAqpB,GAAA,GAAMd,GAAA,GAAO,CAAAA,GAAA,GAAMM,GAAN,IAAa7oB,CAA1B;IACAspB,GAAA,GAAMd,GAAA,GAAO,CAAAA,GAAA,GAAMM,GAAN,IAAa9oB,CAA1B;IACAupB,GAAA,GAAMd,GAAA,GAAO,CAAAA,GAAA,GAAMM,GAAN,IAAa/oB,CAA1B;IACA,MAAMwpB,GAAA,GAAMjxD,IAAA,CAAKiwB,KAAL,CAAWjwB,IAAA,CAAKC,GAAL,CAASwwD,EAAT,EAAaI,EAAb,CAAX,CAAZ;IACA,MAAMK,GAAA,GAAMlxD,IAAA,CAAKiwB,KAAL,CAAWjwB,IAAA,CAAKgE,GAAL,CAASysD,EAAT,EAAaI,EAAb,CAAX,CAAZ;IACA,IAAIxqD,CAAA,GAAIypD,OAAA,GAAUhkC,CAAV,GAAcmlC,GAAA,GAAM,CAA5B;IACA,KAAK,IAAIplC,CAAA,GAAIolC,GAAR,EAAaplC,CAAA,IAAKqlC,GAAvB,EAA4BrlC,CAAA,EAA5B,EAAiC;MAC/B4b,CAAA,GAAK,CAAAgpB,EAAA,GAAK5kC,CAAL,KAAW4kC,EAAA,GAAKI,EAAL,CAAhB;MACA,IAAIppB,CAAA,GAAI,CAAR,EAAW;QACTA,CAAA,GAAI,CAAJ;MADS,CAAX,MAEO,IAAIA,CAAA,GAAI,CAAR,EAAW;QAChBA,CAAA,GAAI,CAAJ;MADgB;MAGlBloC,KAAA,CAAM8G,CAAA,EAAN,IAAcqqD,GAAA,GAAO,CAAAA,GAAA,GAAMI,GAAN,IAAarpB,CAArB,GAA0B,CAAvC;MACAloC,KAAA,CAAM8G,CAAA,EAAN,IAAcsqD,GAAA,GAAO,CAAAA,GAAA,GAAMI,GAAN,IAAatpB,CAArB,GAA0B,CAAvC;MACAloC,KAAA,CAAM8G,CAAA,EAAN,IAAcuqD,GAAA,GAAO,CAAAA,GAAA,GAAMI,GAAN,IAAavpB,CAArB,GAA0B,CAAvC;MACAloC,KAAA,CAAM8G,CAAA,EAAN,IAAa,GAAb;IAV+B;EArCA;AAtDwB;AA0G7D,SAAS8qD,UAATA,CAAoBvoD,IAApB,EAA0BwoD,MAA1B,EAAkCnoC,OAAlC,EAA2C;EACzC,MAAMooC,EAAA,GAAKD,MAAA,CAAOvB,MAAlB;EACA,MAAMyB,EAAA,GAAKF,MAAA,CAAO71B,MAAlB;EACA,IAAIz7B,CAAJ,EAAOkH,EAAP;EACA,QAAQoqD,MAAA,CAAOvkE,IAAf;IACE,KAAK,SAAL;MACE,MAAM0kE,cAAA,GAAiBH,MAAA,CAAOG,cAA9B;MACA,MAAMC,IAAA,GAAOxxD,IAAA,CAAK2J,KAAL,CAAW0nD,EAAA,CAAG9zD,MAAH,GAAYg0D,cAAvB,IAAyC,CAAtD;MACA,MAAME,IAAA,GAAOF,cAAA,GAAiB,CAA9B;MACA,KAAKzxD,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAI0xD,IAAhB,EAAsB1xD,CAAA,EAAtB,EAA2B;QACzB,IAAI4xD,CAAA,GAAI5xD,CAAA,GAAIyxD,cAAZ;QACA,KAAK,IAAIlrD,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIorD,IAApB,EAA0BprD,CAAA,IAAKqrD,CAAA,EAA/B,EAAoC;UAClCjC,YAAA,CACE7mD,IADF,EAEEqgB,OAFF,EAGEooC,EAAA,CAAGK,CAAH,CAHF,EAIEL,EAAA,CAAGK,CAAA,GAAI,CAAP,CAJF,EAKEL,EAAA,CAAGK,CAAA,GAAIH,cAAP,CALF,EAMED,EAAA,CAAGI,CAAH,CANF,EAOEJ,EAAA,CAAGI,CAAA,GAAI,CAAP,CAPF,EAQEJ,EAAA,CAAGI,CAAA,GAAIH,cAAP,CARF;UAUA9B,YAAA,CACE7mD,IADF,EAEEqgB,OAFF,EAGEooC,EAAA,CAAGK,CAAA,GAAIH,cAAJ,GAAqB,CAAxB,CAHF,EAIEF,EAAA,CAAGK,CAAA,GAAI,CAAP,CAJF,EAKEL,EAAA,CAAGK,CAAA,GAAIH,cAAP,CALF,EAMED,EAAA,CAAGI,CAAA,GAAIH,cAAJ,GAAqB,CAAxB,CANF,EAOED,EAAA,CAAGI,CAAA,GAAI,CAAP,CAPF,EAQEJ,EAAA,CAAGI,CAAA,GAAIH,cAAP,CARF;QAXkC;MAFX;MAyB3B;IACF,KAAK,WAAL;MACE,KAAKzxD,CAAA,GAAI,CAAJ,EAAOkH,EAAA,GAAKqqD,EAAA,CAAG9zD,MAApB,EAA4BuC,CAAA,GAAIkH,EAAhC,EAAoClH,CAAA,IAAK,CAAzC,EAA4C;QAC1C2vD,YAAA,CACE7mD,IADF,EAEEqgB,OAFF,EAGEooC,EAAA,CAAGvxD,CAAH,CAHF,EAIEuxD,EAAA,CAAGvxD,CAAA,GAAI,CAAP,CAJF,EAKEuxD,EAAA,CAAGvxD,CAAA,GAAI,CAAP,CALF,EAMEwxD,EAAA,CAAGxxD,CAAH,CANF,EAOEwxD,EAAA,CAAGxxD,CAAA,GAAI,CAAP,CAPF,EAQEwxD,EAAA,CAAGxxD,CAAA,GAAI,CAAP,CARF;MAD0C;MAY5C;IACF;MACE,MAAM,IAAIpD,KAAJ,CAAU,gBAAV,CAAN;EA9CJ;AAJyC;AAsD3C,MAAMi1D,kBAAN,SAAiCrD,kBAAjC,CAAoD;EAClD5vD,YAAYysD,EAAZ,EAAgB;IACd;IACA,KAAKyG,OAAL,GAAezG,EAAA,CAAG,CAAH,CAAf;IACA,KAAK7vB,OAAL,GAAe6vB,EAAA,CAAG,CAAH,CAAf;IACA,KAAK0G,QAAL,GAAgB1G,EAAA,CAAG,CAAH,CAAhB;IACA,KAAK2G,OAAL,GAAe3G,EAAA,CAAG,CAAH,CAAf;IACA,KAAKqD,KAAL,GAAarD,EAAA,CAAG,CAAH,CAAb;IACA,KAAK4G,WAAL,GAAmB5G,EAAA,CAAG,CAAH,CAAnB;IACA,KAAKM,MAAL,GAAc,IAAd;EARc;EAWhBuG,kBAAkBC,aAAlB,EAAiCC,eAAjC,EAAkD9P,cAAlD,EAAkE;IAGhE,MAAM+P,cAAA,GAAiB,GAAvB;IAEA,MAAMC,gBAAA,GAAmB,IAAzB;IAGA,MAAMC,WAAA,GAAc,CAApB;IAEA,MAAMn7C,OAAA,GAAUlX,IAAA,CAAK2J,KAAL,CAAW,KAAKmoD,OAAL,CAAa,CAAb,CAAX,CAAhB;IACA,MAAM36C,OAAA,GAAUnX,IAAA,CAAK2J,KAAL,CAAW,KAAKmoD,OAAL,CAAa,CAAb,CAAX,CAAhB;IACA,MAAMQ,WAAA,GAActyD,IAAA,CAAKkgD,IAAL,CAAU,KAAK4R,OAAL,CAAa,CAAb,CAAV,IAA6B56C,OAAjD;IACA,MAAMq7C,YAAA,GAAevyD,IAAA,CAAKkgD,IAAL,CAAU,KAAK4R,OAAL,CAAa,CAAb,CAAV,IAA6B36C,OAAlD;IAEA,MAAM0N,KAAA,GAAQ7kB,IAAA,CAAKC,GAAL,CACZD,IAAA,CAAKkgD,IAAL,CAAUlgD,IAAA,CAAKoG,GAAL,CAASksD,WAAA,GAAcL,aAAA,CAAc,CAAd,CAAd,GAAiCE,cAA1C,CAAV,CADY,EAEZC,gBAFY,CAAd;IAIA,MAAMttC,MAAA,GAAS9kB,IAAA,CAAKC,GAAL,CACbD,IAAA,CAAKkgD,IAAL,CAAUlgD,IAAA,CAAKoG,GAAL,CAASmsD,YAAA,GAAeN,aAAA,CAAc,CAAd,CAAf,GAAkCE,cAA3C,CAAV,CADa,EAEbC,gBAFa,CAAf;IAIA,MAAMva,MAAA,GAASya,WAAA,GAAcztC,KAA7B;IACA,MAAMizB,MAAA,GAASya,YAAA,GAAeztC,MAA9B;IAEA,MAAMmE,OAAA,GAAU;MACd4mC,MAAA,EAAQ,KAAK+B,OADC;MAEdr2B,MAAA,EAAQ,KAAKD,OAFC;MAGdpkB,OAAA,EAAS,CAACA,OAHI;MAIdC,OAAA,EAAS,CAACA,OAJI;MAKd0gC,MAAA,EAAQ,IAAIA,MALE;MAMdC,MAAA,EAAQ,IAAIA;IANE,CAAhB;IASA,MAAM0a,WAAA,GAAc3tC,KAAA,GAAQwtC,WAAA,GAAc,CAA1C;IACA,MAAMI,YAAA,GAAe3tC,MAAA,GAASutC,WAAA,GAAc,CAA5C;IAEA,MAAM7N,SAAA,GAAYpC,cAAA,CAAe5L,SAAf,CAChB,MADgB,EAEhBgc,WAFgB,EAGhBC,YAHgB,EAIhB,KAJgB,CAAlB;IAMA,MAAMhO,MAAA,GAASD,SAAA,CAAUv7B,OAAzB;IAEA,MAAMrgB,IAAA,GAAO67C,MAAA,CAAOnI,eAAP,CAAuBz3B,KAAvB,EAA8BC,MAA9B,CAAb;IACA,IAAIotC,eAAJ,EAAqB;MACnB,MAAM3yD,KAAA,GAAQqJ,IAAA,CAAKA,IAAnB;MACA,KAAK,IAAI9I,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKzH,KAAA,CAAMhC,MAAtB,EAA8BuC,CAAA,GAAIkH,EAAvC,EAA2ClH,CAAA,IAAK,CAAhD,EAAmD;QACjDP,KAAA,CAAMO,CAAN,IAAWoyD,eAAA,CAAgB,CAAhB,CAAX;QACA3yD,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAeoyD,eAAA,CAAgB,CAAhB,CAAf;QACA3yD,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAeoyD,eAAA,CAAgB,CAAhB,CAAf;QACA3yD,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAe,GAAf;MAJiD;IAFhC;IASrB,WAAWsxD,MAAX,IAAqB,KAAKS,QAA1B,EAAoC;MAClCV,UAAA,CAAWvoD,IAAX,EAAiBwoD,MAAjB,EAAyBnoC,OAAzB;IADkC;IAGpCw7B,MAAA,CAAOxI,YAAP,CAAoBrzC,IAApB,EAA0BypD,WAA1B,EAAuCA,WAAvC;IACA,MAAMxsC,MAAA,GAAS2+B,SAAA,CAAU3+B,MAAzB;IAEA,OAAO;MACLA,MADK;MAEL3O,OAAA,EAASA,OAAA,GAAUm7C,WAAA,GAAcxa,MAF5B;MAGL1gC,OAAA,EAASA,OAAA,GAAUk7C,WAAA,GAAcva,MAH5B;MAILD,MAJK;MAKLC;IALK,CAAP;EA9DgE;EAuElE6N,WAAW/tB,GAAX,EAAgBw3B,KAAhB,EAAuB1J,OAAvB,EAAgCnK,QAAhC,EAA0C;IACxC6S,gBAAA,CAAiBx2B,GAAjB,EAAsB,KAAK42B,KAA3B;IACA,IAAIx3C,KAAJ;IACA,IAAIukC,QAAA,KAAaC,QAAA,CAASmQ,OAA1B,EAAmC;MACjC30C,KAAA,GAAQvU,UAAA,CAAKyB,6BAAL,CAAmC,IAAAopC,kCAAA,EAAoB1V,GAApB,CAAnC,CAAR;IADiC,CAAnC,MAEO;MAEL5gB,KAAA,GAAQvU,UAAA,CAAKyB,6BAAL,CAAmCkrD,KAAA,CAAMxN,aAAzC,CAAR;MACA,IAAI,KAAK6J,MAAT,EAAiB;QACf,MAAMiH,WAAA,GAAcjwD,UAAA,CAAKyB,6BAAL,CAAmC,KAAKunD,MAAxC,CAApB;QACAz0C,KAAA,GAAQ,CAACA,KAAA,CAAM,CAAN,IAAW07C,WAAA,CAAY,CAAZ,CAAZ,EAA4B17C,KAAA,CAAM,CAAN,IAAW07C,WAAA,CAAY,CAAZ,CAAvC,CAAR;MAFe;IAHZ;IAWP,MAAMC,sBAAA,GAAyB,KAAKX,iBAAL,CAC7Bh7C,KAD6B,EAE7BukC,QAAA,KAAaC,QAAA,CAASmQ,OAAtB,GAAgC,IAAhC,GAAuC,KAAKoG,WAFf,EAG7B3C,KAAA,CAAMhN,cAHuB,CAA/B;IAMA,IAAI7G,QAAA,KAAaC,QAAA,CAASmQ,OAA1B,EAAmC;MACjC/zB,GAAA,CAAImd,YAAJ,CAAiB,GAAGqa,KAAA,CAAMxN,aAA1B;MACA,IAAI,KAAK6J,MAAT,EAAiB;QACf7zB,GAAA,CAAI9gC,SAAJ,CAAc,GAAG,KAAK20D,MAAtB;MADe;IAFgB;IAOnC7zB,GAAA,CAAIhJ,SAAJ,CACE+jC,sBAAA,CAAuBz7C,OADzB,EAEEy7C,sBAAA,CAAuBx7C,OAFzB;IAIAygB,GAAA,CAAI5gB,KAAJ,CAAU27C,sBAAA,CAAuB9a,MAAjC,EAAyC8a,sBAAA,CAAuB7a,MAAhE;IAEA,OAAOlgB,GAAA,CAAI03B,aAAJ,CAAkBqD,sBAAA,CAAuB9sC,MAAzC,EAAiD,WAAjD,CAAP;EAnCwC;AAnFQ;AA0HpD,MAAM+sC,mBAAN,SAAkCtE,kBAAlC,CAAqD;EACnD3I,WAAA,EAAa;IACX,OAAO,SAAP;EADW;AADsC;AAMrD,SAAS+F,iBAATA,CAA2BP,EAA3B,EAA+B;EAC7B,QAAQA,EAAA,CAAG,CAAH,CAAR;IACE,KAAK,aAAL;MACE,OAAO,IAAIoD,yBAAJ,CAA8BpD,EAA9B,CAAP;IACF,KAAK,MAAL;MACE,OAAO,IAAIwG,kBAAJ,CAAuBxG,EAAvB,CAAP;IACF,KAAK,OAAL;MACE,OAAO,IAAIyH,mBAAJ,EAAP;EANJ;EAQA,MAAM,IAAIl2D,KAAJ,CAAW,oBAAmByuD,EAAA,CAAG,CAAH,CAApB,EAAV,CAAN;AAT6B;AAY/B,MAAM0H,SAAA,GAAY;EAChBC,OAAA,EAAS,CADO;EAEhBC,SAAA,EAAW;AAFK,CAAlB;AAKA,MAAMzH,aAAN,CAAoB;EAElB,OAAO8G,gBAAP,GAA0B,IAA1B;EAEA1zD,YAAYysD,EAAZ,EAAgBzvB,KAAhB,EAAuB9D,GAAvB,EAA4BwzB,qBAA5B,EAAmDxJ,aAAnD,EAAkE;IAChE,KAAK3oC,YAAL,GAAoBkyC,EAAA,CAAG,CAAH,CAApB;IACA,KAAKM,MAAL,GAAcN,EAAA,CAAG,CAAH,KAAS,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAvB;IACA,KAAKU,IAAL,GAAYV,EAAA,CAAG,CAAH,CAAZ;IACA,KAAK6H,KAAL,GAAa7H,EAAA,CAAG,CAAH,CAAb;IACA,KAAK8H,KAAL,GAAa9H,EAAA,CAAG,CAAH,CAAb;IACA,KAAK+H,SAAL,GAAiB/H,EAAA,CAAG,CAAH,CAAjB;IACA,KAAKgI,UAAL,GAAkBhI,EAAA,CAAG,CAAH,CAAlB;IACA,KAAKzvB,KAAL,GAAaA,KAAb;IACA,KAAK9D,GAAL,GAAWA,GAAX;IACA,KAAKwzB,qBAAL,GAA6BA,qBAA7B;IACA,KAAKxJ,aAAL,GAAqBA,aAArB;EAXgE;EAclEwR,oBAAoBhE,KAApB,EAA2B;IACzB,MAAMn2C,YAAA,GAAe,KAAKA,YAA1B;IACA,MAAM4yC,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAMmH,KAAA,GAAQ,KAAKA,KAAnB;IACA,MAAMC,KAAA,GAAQ,KAAKA,KAAnB;IACA,MAAMC,SAAA,GAAY,KAAKA,SAAvB;IACA,MAAMC,UAAA,GAAa,KAAKA,UAAxB;IACA,MAAMz3B,KAAA,GAAQ,KAAKA,KAAnB;IACA,MAAM0vB,qBAAA,GAAwB,KAAKA,qBAAnC;IAEA,IAAAhvD,UAAA,EAAK,iBAAiB+2D,UAAtB;IAsBA,MAAM9tD,EAAA,GAAKwmD,IAAA,CAAK,CAAL,CAAX;MACEvmD,EAAA,GAAKumD,IAAA,CAAK,CAAL,CADP;MAEEtmD,EAAA,GAAKsmD,IAAA,CAAK,CAAL,CAFP;MAGErmD,EAAA,GAAKqmD,IAAA,CAAK,CAAL,CAHP;IAMA,MAAM6G,WAAA,GAAcjwD,UAAA,CAAKyB,6BAAL,CAAmC,KAAKunD,MAAxC,CAApB;IACA,MAAM4H,cAAA,GAAiB5wD,UAAA,CAAKyB,6BAAL,CACrB,KAAK09C,aADgB,CAAvB;IAGA,MAAMqQ,aAAA,GAAgB,CACpBS,WAAA,CAAY,CAAZ,IAAiBW,cAAA,CAAe,CAAf,CADG,EAEpBX,WAAA,CAAY,CAAZ,IAAiBW,cAAA,CAAe,CAAf,CAFG,CAAtB;IAQA,MAAMC,IAAA,GAAO,KAAKC,eAAL,CACXP,KADW,EAEX,KAAKp7B,GAAL,CAAS/R,MAAT,CAAgBhB,KAFL,EAGXotC,aAAA,CAAc,CAAd,CAHW,CAAb;IAKA,MAAMuB,IAAA,GAAO,KAAKD,eAAL,CACXN,KADW,EAEX,KAAKr7B,GAAL,CAAS/R,MAAT,CAAgBf,MAFL,EAGXmtC,aAAA,CAAc,CAAd,CAHW,CAAb;IAMA,MAAMzN,SAAA,GAAY4K,KAAA,CAAMhN,cAAN,CAAqB5L,SAArB,CAChB,SADgB,EAEhB8c,IAAA,CAAKn4C,IAFW,EAGhBq4C,IAAA,CAAKr4C,IAHW,EAIhB,IAJgB,CAAlB;IAMA,MAAMspC,MAAA,GAASD,SAAA,CAAUv7B,OAAzB;IACA,MAAMwqC,QAAA,GAAWrI,qBAAA,CAAsBC,oBAAtB,CAA2C5G,MAA3C,CAAjB;IACAgP,QAAA,CAAS3R,UAAT,GAAsBsN,KAAA,CAAMtN,UAA5B;IAEA,KAAK4R,8BAAL,CAAoCD,QAApC,EAA8CP,SAA9C,EAAyDx3B,KAAzD;IAEA,IAAIi4B,UAAA,GAAatuD,EAAjB;IACA,IAAIuuD,UAAA,GAAatuD,EAAjB;IACA,IAAIuuD,UAAA,GAAatuD,EAAjB;IACA,IAAIuuD,UAAA,GAAatuD,EAAjB;IAIA,IAAIH,EAAA,GAAK,CAAT,EAAY;MACVsuD,UAAA,GAAa,CAAb;MACAE,UAAA,IAAc7zD,IAAA,CAAKoG,GAAL,CAASf,EAAT,CAAd;IAFU;IAIZ,IAAIC,EAAA,GAAK,CAAT,EAAY;MACVsuD,UAAA,GAAa,CAAb;MACAE,UAAA,IAAc9zD,IAAA,CAAKoG,GAAL,CAASd,EAAT,CAAd;IAFU;IAIZm/C,MAAA,CAAO71B,SAAP,CAAiB,EAAE0kC,IAAA,CAAKt8C,KAAL,GAAa28C,UAAb,CAAnB,EAA6C,EAAEH,IAAA,CAAKx8C,KAAL,GAAa48C,UAAb,CAA/C;IACAH,QAAA,CAAS38D,SAAT,CAAmBw8D,IAAA,CAAKt8C,KAAxB,EAA+B,CAA/B,EAAkC,CAAlC,EAAqCw8C,IAAA,CAAKx8C,KAA1C,EAAiD,CAAjD,EAAoD,CAApD;IAIAytC,MAAA,CAAO7tD,IAAP;IAEA,KAAKm9D,QAAL,CAAcN,QAAd,EAAwBE,UAAxB,EAAoCC,UAApC,EAAgDC,UAAhD,EAA4DC,UAA5D;IAEAL,QAAA,CAAS7R,aAAT,GAAyB,IAAAtU,kCAAA,EAAoBmmB,QAAA,CAAS77B,GAA7B,CAAzB;IAEA67B,QAAA,CAASjsC,mBAAT,CAA6BvO,YAA7B;IAEAw6C,QAAA,CAASpsC,UAAT;IAEA,OAAO;MACLxB,MAAA,EAAQ2+B,SAAA,CAAU3+B,MADb;MAELgyB,MAAA,EAAQyb,IAAA,CAAKt8C,KAFR;MAGL8gC,MAAA,EAAQ0b,IAAA,CAAKx8C,KAHR;MAILE,OAAA,EAASy8C,UAJJ;MAKLx8C,OAAA,EAASy8C;IALJ,CAAP;EAvGyB;EAgH3BL,gBAAgBlsB,IAAhB,EAAsB2sB,cAAtB,EAAsCh9C,KAAtC,EAA6C;IAE3CqwB,IAAA,GAAOrnC,IAAA,CAAKoG,GAAL,CAASihC,IAAT,CAAP;IAKA,MAAMtN,OAAA,GAAU/5B,IAAA,CAAKgE,GAAL,CAASsnD,aAAA,CAAc8G,gBAAvB,EAAyC4B,cAAzC,CAAhB;IACA,IAAI74C,IAAA,GAAOnb,IAAA,CAAKkgD,IAAL,CAAU7Y,IAAA,GAAOrwB,KAAjB,CAAX;IACA,IAAImE,IAAA,IAAQ4e,OAAZ,EAAqB;MACnB5e,IAAA,GAAO4e,OAAP;IADmB,CAArB,MAEO;MACL/iB,KAAA,GAAQmE,IAAA,GAAOksB,IAAf;IADK;IAGP,OAAO;MAAErwB,KAAF;MAASmE;IAAT,CAAP;EAd2C;EAiB7C44C,SAASN,QAAT,EAAmBpuD,EAAnB,EAAuBC,EAAvB,EAA2BC,EAA3B,EAA+BC,EAA/B,EAAmC;IACjC,MAAMyuD,SAAA,GAAY1uD,EAAA,GAAKF,EAAvB;IACA,MAAM6uD,UAAA,GAAa1uD,EAAA,GAAKF,EAAxB;IACAmuD,QAAA,CAAS77B,GAAT,CAAahzB,IAAb,CAAkBS,EAAlB,EAAsBC,EAAtB,EAA0B2uD,SAA1B,EAAqCC,UAArC;IACAT,QAAA,CAASlgB,OAAT,CAAiB2H,gBAAjB,CAAkC,IAAA5N,kCAAA,EAAoBmmB,QAAA,CAAS77B,GAA7B,CAAlC,EAAqE,CACnEvyB,EADmE,EAEnEC,EAFmE,EAGnEC,EAHmE,EAInEC,EAJmE,CAArE;IAMAiuD,QAAA,CAAS17D,IAAT;IACA07D,QAAA,CAAS37D,OAAT;EAXiC;EAcnC47D,+BAA+BD,QAA/B,EAAyCP,SAAzC,EAAoDx3B,KAApD,EAA2D;IACzD,MAAMzS,OAAA,GAAUwqC,QAAA,CAAS77B,GAAzB;MACE2b,OAAA,GAAUkgB,QAAA,CAASlgB,OADrB;IAEA,QAAQ2f,SAAR;MACE,KAAKL,SAAA,CAAUC,OAAf;QACE,MAAMl7B,GAAA,GAAM,KAAKA,GAAjB;QACA3O,OAAA,CAAQk1B,SAAR,GAAoBvmB,GAAA,CAAIumB,SAAxB;QACAl1B,OAAA,CAAQi1B,WAAR,GAAsBtmB,GAAA,CAAIsmB,WAA1B;QACA3K,OAAA,CAAQ2G,SAAR,GAAoBtiB,GAAA,CAAIumB,SAAxB;QACA5K,OAAA,CAAQ4G,WAAR,GAAsBviB,GAAA,CAAIsmB,WAA1B;QACA;MACF,KAAK2U,SAAA,CAAUE,SAAf;QACE,MAAMoB,QAAA,GAAW1xD,UAAA,CAAKC,YAAL,CAAkBg5B,KAAA,CAAM,CAAN,CAAlB,EAA4BA,KAAA,CAAM,CAAN,CAA5B,EAAsCA,KAAA,CAAM,CAAN,CAAtC,CAAjB;QACAzS,OAAA,CAAQk1B,SAAR,GAAoBgW,QAApB;QACAlrC,OAAA,CAAQi1B,WAAR,GAAsBiW,QAAtB;QAEA5gB,OAAA,CAAQ2G,SAAR,GAAoBia,QAApB;QACA5gB,OAAA,CAAQ4G,WAAR,GAAsBga,QAAtB;QACA;MACF;QACE,MAAM,IAAI/0D,iBAAJ,CAAiB,2BAA0B8zD,SAA3B,EAAhB,CAAN;IAjBJ;EAHyD;EAwB3DvN,WAAW/tB,GAAX,EAAgBw3B,KAAhB,EAAuB1J,OAAvB,EAAgCnK,QAAhC,EAA0C;IAExC,IAAIkQ,MAAA,GAAS/F,OAAb;IACA,IAAInK,QAAA,KAAaC,QAAA,CAASmQ,OAA1B,EAAmC;MACjCF,MAAA,GAAShpD,UAAA,CAAK3L,SAAL,CAAe20D,MAAf,EAAuB2D,KAAA,CAAMxN,aAA7B,CAAT;MACA,IAAI,KAAK6J,MAAT,EAAiB;QACfA,MAAA,GAAShpD,UAAA,CAAK3L,SAAL,CAAe20D,MAAf,EAAuB,KAAKA,MAA5B,CAAT;MADe;IAFgB;IAOnC,MAAMkH,sBAAA,GAAyB,KAAKS,mBAAL,CAAyBhE,KAAzB,CAA/B;IAEA,IAAIG,SAAA,GAAY,IAAIC,SAAJ,CAAc/D,MAAd,CAAhB;IAGA8D,SAAA,GAAYA,SAAA,CAAU3gC,SAAV,CACV+jC,sBAAA,CAAuBz7C,OADb,EAEVy7C,sBAAA,CAAuBx7C,OAFb,CAAZ;IAIAo4C,SAAA,GAAYA,SAAA,CAAUv4C,KAAV,CACV,IAAI27C,sBAAA,CAAuB9a,MADjB,EAEV,IAAI8a,sBAAA,CAAuB7a,MAFjB,CAAZ;IAKA,MAAMkR,OAAA,GAAUpxB,GAAA,CAAI03B,aAAJ,CAAkBqD,sBAAA,CAAuB9sC,MAAzC,EAAiD,QAAjD,CAAhB;IACAmjC,OAAA,CAAQjU,YAAR,CAAqBwa,SAArB;IAEA,OAAOvG,OAAP;EA3BwC;AAzLxB;AAncpBl8D,qBAAA,GAAAw+D,aAAA;;;;;;;;;;;;;;ACeA,IAAAzhD,KAAA,GAAAC,mBAAA;AAEA,SAASsqD,aAATA,CAAuBlkD,MAAvB,EAA+B;EAC7B,QAAQA,MAAA,CAAO0sC,IAAf;IACE,KAAKvsD,eAAA,CAAUC,cAAf;MACE,OAAOktD,0BAAA,CAA2BttC,MAA3B,CAAP;IACF,KAAK7f,eAAA,CAAUE,SAAf;MACE,OAAO8jE,gBAAA,CAAiBnkD,MAAjB,CAAP;EAJJ;EAOA,OAAO,IAAP;AAR6B;AAW/B,SAASstC,0BAATA,CAAoC;EAClC1xC,GADkC;EAElCywC,MAAA,GAAS,CAFyB;EAGlCE,IAHkC;EAIlC53B,KAJkC;EAKlCC,MALkC;EAMlC24B,aAAA,GAAgB,UANkB;EAOlC6W,aAAA,GAAgB;AAPkB,CAApC,EAQG;EACD,MAAMpX,KAAA,GAAQ17C,iBAAA,CAAYP,cAAZ,GAA6B,UAA7B,GAA0C,UAAxD;EACA,MAAM,CAACszD,WAAD,EAAcC,UAAd,IAA4BF,aAAA,GAC9B,CAAC7W,aAAD,EAAgBP,KAAhB,CAD8B,GAE9B,CAACA,KAAD,EAAQO,aAAR,CAFJ;EAGA,MAAMgX,aAAA,GAAgB5vC,KAAA,IAAS,CAA/B;EACA,MAAM6vC,cAAA,GAAiB7vC,KAAA,GAAQ,CAA/B;EACA,MAAMg4B,SAAA,GAAY/wC,GAAA,CAAIvO,MAAtB;EACAk/C,IAAA,GAAO,IAAIr7C,WAAJ,CAAgBq7C,IAAA,CAAKp7C,MAArB,CAAP;EACA,IAAIm7C,OAAA,GAAU,CAAd;EAEA,KAAK,IAAI18C,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIglB,MAApB,EAA4BhlB,CAAA,EAA5B,EAAiC;IAC/B,KAAK,MAAMkE,GAAA,GAAMu4C,MAAA,GAASkY,aAArB,EAAoClY,MAAA,GAASv4C,GAAlD,EAAuDu4C,MAAA,EAAvD,EAAiE;MAC/D,MAAM/D,IAAA,GAAO+D,MAAA,GAASM,SAAT,GAAqB/wC,GAAA,CAAIywC,MAAJ,CAArB,GAAmC,GAAhD;MACAE,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,UAAP,GAAoBgc,UAApB,GAAiCD,WAAnD;MACA9X,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,SAAP,GAAmBgc,UAAnB,GAAgCD,WAAlD;MACA9X,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,QAAP,GAAkBgc,UAAlB,GAA+BD,WAAjD;MACA9X,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,OAAP,GAAiBgc,UAAjB,GAA8BD,WAAhD;MACA9X,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,MAAP,GAAgBgc,UAAhB,GAA6BD,WAA/C;MACA9X,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,KAAP,GAAegc,UAAf,GAA4BD,WAA9C;MACA9X,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,IAAP,GAAcgc,UAAd,GAA2BD,WAA7C;MACA9X,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,GAAP,GAAagc,UAAb,GAA0BD,WAA5C;IAT+D;IAWjE,IAAIG,cAAA,KAAmB,CAAvB,EAA0B;MACxB;IADwB;IAG1B,MAAMlc,IAAA,GAAO+D,MAAA,GAASM,SAAT,GAAqB/wC,GAAA,CAAIywC,MAAA,EAAJ,CAArB,GAAqC,GAAlD;IACA,KAAK,IAAIl2C,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIquD,cAApB,EAAoCruD,CAAA,EAApC,EAAyC;MACvCo2C,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAQ,KAAM,IAAInyC,CAAlB,GAAwBmuD,UAAxB,GAAqCD,WAAvD;IADuC;EAhBV;EAoBjC,OAAO;IAAEhY,MAAF;IAAUC;EAAV,CAAP;AA/BC;AAkCH,SAAS6X,gBAATA,CAA0B;EACxBvoD,GADwB;EAExBywC,MAAA,GAAS,CAFe;EAGxBE,IAHwB;EAIxBD,OAAA,GAAU,CAJc;EAKxB33B,KALwB;EAMxBC;AANwB,CAA1B,EAOG;EACD,IAAIhlB,CAAA,GAAI,CAAR;EACA,MAAM60D,KAAA,GAAQ7oD,GAAA,CAAIvO,MAAJ,IAAc,CAA5B;EACA,MAAMq3D,KAAA,GAAQ,IAAIxzD,WAAJ,CAAgB0K,GAAA,CAAIzK,MAApB,EAA4Bk7C,MAA5B,EAAoCoY,KAApC,CAAd;EAEA,IAAInzD,iBAAA,CAAYP,cAAhB,EAAgC;IAG9B,OAAOnB,CAAA,GAAI60D,KAAA,GAAQ,CAAnB,EAAsB70D,CAAA,IAAK,CAAL,EAAQ08C,OAAA,IAAW,CAAzC,EAA4C;MAC1C,MAAMqY,EAAA,GAAKD,KAAA,CAAM90D,CAAN,CAAX;MACA,MAAMg1D,EAAA,GAAKF,KAAA,CAAM90D,CAAA,GAAI,CAAV,CAAX;MACA,MAAMi1D,EAAA,GAAKH,KAAA,CAAM90D,CAAA,GAAI,CAAV,CAAX;MAEA28C,IAAA,CAAKD,OAAL,IAAgBqY,EAAA,GAAK,UAArB;MACApY,IAAA,CAAKD,OAAA,GAAU,CAAf,IAAqBqY,EAAA,KAAO,EAAR,GAAeC,EAAA,IAAM,CAArB,GAA0B,UAA9C;MACArY,IAAA,CAAKD,OAAA,GAAU,CAAf,IAAqBsY,EAAA,KAAO,EAAR,GAAeC,EAAA,IAAM,EAArB,GAA2B,UAA/C;MACAtY,IAAA,CAAKD,OAAA,GAAU,CAAf,IAAqBuY,EAAA,KAAO,CAAR,GAAa,UAAjC;IAR0C;IAW5C,KAAK,IAAI1uD,CAAA,GAAIvG,CAAA,GAAI,CAAZ,EAAek1D,EAAA,GAAKlpD,GAAA,CAAIvO,MAAxB,EAAgC8I,CAAA,GAAI2uD,EAAzC,EAA6C3uD,CAAA,IAAK,CAAlD,EAAqD;MACnDo2C,IAAA,CAAKD,OAAA,EAAL,IACE1wC,GAAA,CAAIzF,CAAJ,IAAUyF,GAAA,CAAIzF,CAAA,GAAI,CAAR,KAAc,CAAxB,GAA8ByF,GAAA,CAAIzF,CAAA,GAAI,CAAR,KAAc,EAA5C,GAAkD,UADpD;IADmD;EAdvB,CAAhC,MAkBO;IACL,OAAOvG,CAAA,GAAI60D,KAAA,GAAQ,CAAnB,EAAsB70D,CAAA,IAAK,CAAL,EAAQ08C,OAAA,IAAW,CAAzC,EAA4C;MAC1C,MAAMqY,EAAA,GAAKD,KAAA,CAAM90D,CAAN,CAAX;MACA,MAAMg1D,EAAA,GAAKF,KAAA,CAAM90D,CAAA,GAAI,CAAV,CAAX;MACA,MAAMi1D,EAAA,GAAKH,KAAA,CAAM90D,CAAA,GAAI,CAAV,CAAX;MAEA28C,IAAA,CAAKD,OAAL,IAAgBqY,EAAA,GAAK,IAArB;MACApY,IAAA,CAAKD,OAAA,GAAU,CAAf,IAAqBqY,EAAA,IAAM,EAAP,GAAcC,EAAA,KAAO,CAArB,GAA0B,IAA9C;MACArY,IAAA,CAAKD,OAAA,GAAU,CAAf,IAAqBsY,EAAA,IAAM,EAAP,GAAcC,EAAA,KAAO,EAArB,GAA2B,IAA/C;MACAtY,IAAA,CAAKD,OAAA,GAAU,CAAf,IAAqBuY,EAAA,IAAM,CAAP,GAAY,IAAhC;IAR0C;IAW5C,KAAK,IAAI1uD,CAAA,GAAIvG,CAAA,GAAI,CAAZ,EAAek1D,EAAA,GAAKlpD,GAAA,CAAIvO,MAAxB,EAAgC8I,CAAA,GAAI2uD,EAAzC,EAA6C3uD,CAAA,IAAK,CAAlD,EAAqD;MACnDo2C,IAAA,CAAKD,OAAA,EAAL,IACG1wC,GAAA,CAAIzF,CAAJ,KAAU,EAAX,GAAkByF,GAAA,CAAIzF,CAAA,GAAI,CAAR,KAAc,EAAhC,GAAuCyF,GAAA,CAAIzF,CAAA,GAAI,CAAR,KAAc,CAArD,GAA0D,IAD5D;IADmD;EAZhD;EAkBP,OAAO;IAAEk2C,MAAF;IAAUC;EAAV,CAAP;AAzCC;AA4CH,SAASyY,UAATA,CAAoBnpD,GAApB,EAAyB2wC,IAAzB,EAA+B;EAC7B,IAAIj7C,iBAAA,CAAYP,cAAhB,EAAgC;IAC9B,KAAK,IAAInB,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAK8E,GAAA,CAAIvO,MAApB,EAA4BuC,CAAA,GAAIkH,EAArC,EAAyClH,CAAA,EAAzC,EAA8C;MAC5C28C,IAAA,CAAK38C,CAAL,IAAWgM,GAAA,CAAIhM,CAAJ,IAAS,OAAV,GAAqB,UAA/B;IAD4C;EADhB,CAAhC,MAIO;IACL,KAAK,IAAIA,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAK8E,GAAA,CAAIvO,MAApB,EAA4BuC,CAAA,GAAIkH,EAArC,EAAyClH,CAAA,EAAzC,EAA8C;MAC5C28C,IAAA,CAAK38C,CAAL,IAAWgM,GAAA,CAAIhM,CAAJ,IAAS,SAAV,GAAuB,UAAjC;IAD4C;EADzC;AALsB;;;;;;;;;;;;AC9F/B,MAAMiP,mBAAA,GAAsB9Q,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAA5B;AA3BAjU,2BAAA,GAAAiiB,mBAAA;AA6BAA,mBAAA,CAAoBC,UAApB,GAAiC,IAAjC;AACAD,mBAAA,CAAoBgR,SAApB,GAAgC,EAAhC;;;;;;;;;;;;ACfA,IAAAlW,KAAA,GAAAC,mBAAA;AAWA,MAAMorD,YAAA,GAAe;EACnBC,OAAA,EAAS,CADU;EAEnBC,IAAA,EAAM,CAFa;EAGnBC,KAAA,EAAO;AAHY,CAArB;AAMA,MAAMC,UAAA,GAAa;EACjBH,OAAA,EAAS,CADQ;EAEjBI,MAAA,EAAQ,CAFS;EAGjBC,eAAA,EAAiB,CAHA;EAIjBC,KAAA,EAAO,CAJU;EAKjBC,OAAA,EAAS,CALQ;EAMjBL,KAAA,EAAO,CANU;EAOjBM,IAAA,EAAM,CAPW;EAQjBC,aAAA,EAAe,CARE;EASjBC,cAAA,EAAgB;AATC,CAAnB;AAYA,SAASC,UAATA,CAAoBjtD,MAApB,EAA4B;EAC1B,IACE,EACEA,MAAA,YAAkBnM,KAAlB,IACC,OAAOmM,MAAP,KAAkB,QAAlB,IAA8BA,MAAA,KAAW,IAD1C,CAFJ,EAKE;IACA,IAAApM,iBAAA,EACE,gEADF;EADA;EAKF,QAAQoM,MAAA,CAAOpK,IAAf;IACE,KAAK,gBAAL;MACE,OAAO,IAAIY,oBAAJ,CAAmBwJ,MAAA,CAAOrK,OAA1B,CAAP;IACF,KAAK,qBAAL;MACE,OAAO,IAAIS,yBAAJ,CAAwB4J,MAAA,CAAOrK,OAA/B,CAAP;IACF,KAAK,mBAAL;MACE,OAAO,IAAII,uBAAJ,CAAsBiK,MAAA,CAAOrK,OAA7B,EAAsCqK,MAAA,CAAOhK,IAA7C,CAAP;IACF,KAAK,6BAAL;MACE,OAAO,IAAIK,iCAAJ,CAAgC2J,MAAA,CAAOrK,OAAvC,EAAgDqK,MAAA,CAAO1J,MAAvD,CAAP;IACF,KAAK,uBAAL;MACE,OAAO,IAAIL,2BAAJ,CAA0B+J,MAAA,CAAOrK,OAAjC,EAA0CqK,MAAA,CAAO9J,OAAjD,CAAP;IACF;MACE,OAAO,IAAID,2BAAJ,CAA0B+J,MAAA,CAAOrK,OAAjC,EAA0CqK,MAAA,CAAOtG,QAAP,EAA1C,CAAP;EAZJ;AAX0B;AA2B5B,MAAMkO,cAAN,CAAqB;EACnB/R,YAAYq3D,UAAZ,EAAwBC,UAAxB,EAAoCC,MAApC,EAA4C;IAC1C,KAAKF,UAAL,GAAkBA,UAAlB;IACA,KAAKC,UAAL,GAAkBA,UAAlB;IACA,KAAKC,MAAL,GAAcA,MAAd;IACA,KAAKC,UAAL,GAAkB,CAAlB;IACA,KAAKC,QAAL,GAAgB,CAAhB;IACA,KAAKC,WAAL,GAAmBn4D,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAnB;IACA,KAAKs1D,iBAAL,GAAyBp4D,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAzB;IACA,KAAKu1D,oBAAL,GAA4Br4D,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAA5B;IACA,KAAKw1D,aAAL,GAAqBt4D,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAArB;IAEA,KAAKy1D,kBAAL,GAA0B14C,KAAA,IAAS;MACjC,MAAMlV,IAAA,GAAOkV,KAAA,CAAMlV,IAAnB;MACA,IAAIA,IAAA,CAAKotD,UAAL,KAAoB,KAAKD,UAA7B,EAAyC;QACvC;MADuC;MAGzC,IAAIntD,IAAA,CAAK6tD,MAAT,EAAiB;QACf,KAAK,CAAAC,oBAAL,CAA2B9tD,IAA3B;QACA;MAFe;MAIjB,IAAIA,IAAA,CAAKqR,QAAT,EAAmB;QACjB,MAAMi8C,UAAA,GAAattD,IAAA,CAAKstD,UAAxB;QACA,MAAMr8C,UAAA,GAAa,KAAKy8C,oBAAL,CAA0BJ,UAA1B,CAAnB;QACA,IAAI,CAACr8C,UAAL,EAAiB;UACf,MAAM,IAAInd,KAAJ,CAAW,2BAA0Bw5D,UAA3B,EAAV,CAAN;QADe;QAGjB,OAAO,KAAKI,oBAAL,CAA0BJ,UAA1B,CAAP;QAEA,IAAIttD,IAAA,CAAKqR,QAAL,KAAkBi7C,YAAA,CAAaE,IAAnC,EAAyC;UACvCv7C,UAAA,CAAWnR,OAAX,CAAmBE,IAAA,CAAKA,IAAxB;QADuC,CAAzC,MAEO,IAAIA,IAAA,CAAKqR,QAAL,KAAkBi7C,YAAA,CAAaG,KAAnC,EAA0C;UAC/Cx7C,UAAA,CAAWlR,MAAX,CAAkBmtD,UAAA,CAAWltD,IAAA,CAAKC,MAAhB,CAAlB;QAD+C,CAA1C,MAEA;UACL,MAAM,IAAInM,KAAJ,CAAU,0BAAV,CAAN;QADK;QAGP;MAfiB;MAiBnB,MAAMi6D,MAAA,GAAS,KAAKJ,aAAL,CAAmB3tD,IAAA,CAAK+tD,MAAxB,CAAf;MACA,IAAI,CAACA,MAAL,EAAa;QACX,MAAM,IAAIj6D,KAAJ,CAAW,+BAA8BkM,IAAA,CAAK+tD,MAApC,EAAV,CAAN;MADW;MAGb,IAAI/tD,IAAA,CAAKstD,UAAT,EAAqB;QACnB,MAAMU,YAAA,GAAe,KAAKb,UAA1B;QACA,MAAMc,YAAA,GAAejuD,IAAA,CAAKmtD,UAA1B;QAEA,IAAIttD,OAAJ,CAAY,UAAUC,OAAV,EAAmB;UAC7BA,OAAA,CAAQiuD,MAAA,CAAO/tD,IAAA,CAAKA,IAAZ,CAAR;QAD6B,CAA/B,EAEG2G,IAFH,CAGE,UAAU0pB,MAAV,EAAkB;UAChBg9B,MAAA,CAAOr4C,WAAP,CAAmB;YACjBm4C,UAAA,EAAYa,YADK;YAEjBZ,UAAA,EAAYa,YAFK;YAGjB58C,QAAA,EAAUi7C,YAAA,CAAaE,IAHN;YAIjBc,UAAA,EAAYttD,IAAA,CAAKstD,UAJA;YAKjBttD,IAAA,EAAMqwB;UALW,CAAnB;QADgB,CAHpB,EAYE,UAAUpwB,MAAV,EAAkB;UAChBotD,MAAA,CAAOr4C,WAAP,CAAmB;YACjBm4C,UAAA,EAAYa,YADK;YAEjBZ,UAAA,EAAYa,YAFK;YAGjB58C,QAAA,EAAUi7C,YAAA,CAAaG,KAHN;YAIjBa,UAAA,EAAYttD,IAAA,CAAKstD,UAJA;YAKjBrtD,MAAA,EAAQitD,UAAA,CAAWjtD,MAAX;UALS,CAAnB;QADgB,CAZpB;QAsBA;MA1BmB;MA4BrB,IAAID,IAAA,CAAKutD,QAAT,EAAmB;QACjB,KAAK,CAAAW,gBAAL,CAAuBluD,IAAvB;QACA;MAFiB;MAInB+tD,MAAA,CAAO/tD,IAAA,CAAKA,IAAZ;IA9DiC,CAAnC;IAgEAqtD,MAAA,CAAOh4C,gBAAP,CAAwB,SAAxB,EAAmC,KAAKu4C,kBAAxC;EA3E0C;EA8E5C32C,GAAGk3C,UAAH,EAAeC,OAAf,EAAwB;IAOtB,MAAMC,EAAA,GAAK,KAAKV,aAAhB;IACA,IAAIU,EAAA,CAAGF,UAAH,CAAJ,EAAoB;MAClB,MAAM,IAAIr6D,KAAJ,CAAW,0CAAyCq6D,UAAW,GAA/D,CAAN;IADkB;IAGpBE,EAAA,CAAGF,UAAH,IAAiBC,OAAjB;EAXsB;EAoBxBnmD,KAAKkmD,UAAL,EAAiBnuD,IAAjB,EAAuBqU,SAAvB,EAAkC;IAChC,KAAKg5C,MAAL,CAAYr4C,WAAZ,CACE;MACEm4C,UAAA,EAAY,KAAKA,UADnB;MAEEC,UAAA,EAAY,KAAKA,UAFnB;MAGEW,MAAA,EAAQI,UAHV;MAIEnuD;IAJF,CADF,EAOEqU,SAPF;EADgC;EAoBlChM,gBAAgB8lD,UAAhB,EAA4BnuD,IAA5B,EAAkCqU,SAAlC,EAA6C;IAC3C,MAAMi5C,UAAA,GAAa,KAAKA,UAAL,EAAnB;IACA,MAAMr8C,UAAA,GAAa,IAAIvR,uBAAJ,EAAnB;IACA,KAAKguD,oBAAL,CAA0BJ,UAA1B,IAAwCr8C,UAAxC;IACA,IAAI;MACF,KAAKo8C,MAAL,CAAYr4C,WAAZ,CACE;QACEm4C,UAAA,EAAY,KAAKA,UADnB;QAEEC,UAAA,EAAY,KAAKA,UAFnB;QAGEW,MAAA,EAAQI,UAHV;QAIEb,UAJF;QAKEttD;MALF,CADF,EAQEqU,SARF;IADE,CAAJ,CAWE,OAAOlW,EAAP,EAAW;MACX8S,UAAA,CAAWlR,MAAX,CAAkB5B,EAAlB;IADW;IAGb,OAAO8S,UAAA,CAAWrR,OAAlB;EAlB2C;EA+B7CyS,eAAe87C,UAAf,EAA2BnuD,IAA3B,EAAiCsuD,gBAAjC,EAAmDj6C,SAAnD,EAA8D;IAC5D,MAAMk5C,QAAA,GAAW,KAAKA,QAAL,EAAjB;MACEJ,UAAA,GAAa,KAAKA,UADpB;MAEEC,UAAA,GAAa,KAAKA,UAFpB;MAGEC,MAAA,GAAS,KAAKA,MAHhB;IAKA,OAAO,IAAIkB,cAAJ,CACL;MACEzwB,KAAA,EAAO0wB,UAAA,IAAc;QACnB,MAAMC,eAAA,GAAkB,IAAI/uD,uBAAJ,EAAxB;QACA,KAAK+tD,iBAAL,CAAuBF,QAAvB,IAAmC;UACjCiB,UADiC;UAEjCE,SAAA,EAAWD,eAFsB;UAGjCE,QAAA,EAAU,IAHuB;UAIjCC,UAAA,EAAY,IAJqB;UAKjCC,QAAA,EAAU;QALuB,CAAnC;QAOAxB,MAAA,CAAOr4C,WAAP,CACE;UACEm4C,UADF;UAEEC,UAFF;UAGEW,MAAA,EAAQI,UAHV;UAIEZ,QAJF;UAKEvtD,IALF;UAME8uD,WAAA,EAAaN,UAAA,CAAWM;QAN1B,CADF,EASEz6C,SATF;QAYA,OAAOo6C,eAAA,CAAgB7uD,OAAvB;MArBmB,CADvB;MAyBEmvD,IAAA,EAAMP,UAAA,IAAc;QAClB,MAAMQ,cAAA,GAAiB,IAAItvD,uBAAJ,EAAvB;QACA,KAAK+tD,iBAAL,CAAuBF,QAAvB,EAAiCoB,QAAjC,GAA4CK,cAA5C;QACA3B,MAAA,CAAOr4C,WAAP,CAAmB;UACjBm4C,UADiB;UAEjBC,UAFiB;UAGjBS,MAAA,EAAQnB,UAAA,CAAWK,IAHF;UAIjBQ,QAJiB;UAKjBuB,WAAA,EAAaN,UAAA,CAAWM;QALP,CAAnB;QASA,OAAOE,cAAA,CAAepvD,OAAtB;MAZkB,CAzBtB;MAwCE+T,MAAA,EAAQ1T,MAAA,IAAU;QAChB,IAAAlM,YAAA,EAAOkM,MAAA,YAAkBnM,KAAzB,EAAgC,iCAAhC;QACA,MAAMm7D,gBAAA,GAAmB,IAAIvvD,uBAAJ,EAAzB;QACA,KAAK+tD,iBAAL,CAAuBF,QAAvB,EAAiCqB,UAAjC,GAA8CK,gBAA9C;QACA,KAAKxB,iBAAL,CAAuBF,QAAvB,EAAiCsB,QAAjC,GAA4C,IAA5C;QACAxB,MAAA,CAAOr4C,WAAP,CAAmB;UACjBm4C,UADiB;UAEjBC,UAFiB;UAGjBS,MAAA,EAAQnB,UAAA,CAAWC,MAHF;UAIjBY,QAJiB;UAKjBttD,MAAA,EAAQitD,UAAA,CAAWjtD,MAAX;QALS,CAAnB;QAQA,OAAOgvD,gBAAA,CAAiBrvD,OAAxB;MAbgB;IAxCpB,CADK,EAyDL0uD,gBAzDK,CAAP;EAN4D;EAmE9D,CAAAJ,iBAAkBluD,IAAlB,EAAwB;IACtB,MAAMutD,QAAA,GAAWvtD,IAAA,CAAKutD,QAAtB;MACEJ,UAAA,GAAa,KAAKA,UADpB;MAEEC,UAAA,GAAaptD,IAAA,CAAKmtD,UAFpB;MAGEE,MAAA,GAAS,KAAKA,MAHhB;IAIA,MAAMj7B,IAAA,GAAO,IAAb;MACE27B,MAAA,GAAS,KAAKJ,aAAL,CAAmB3tD,IAAA,CAAK+tD,MAAxB,CADX;IAGA,MAAMmB,UAAA,GAAa;MACjB90C,QAAQ9iB,KAAR,EAAeib,IAAA,GAAO,CAAtB,EAAyB8B,SAAzB,EAAoC;QAClC,IAAI,KAAK86C,WAAT,EAAsB;UACpB;QADoB;QAGtB,MAAMC,eAAA,GAAkB,KAAKN,WAA7B;QACA,KAAKA,WAAL,IAAoBv8C,IAApB;QAIA,IAAI68C,eAAA,GAAkB,CAAlB,IAAuB,KAAKN,WAAL,IAAoB,CAA/C,EAAkD;UAChD,KAAKO,cAAL,GAAsB,IAAI3vD,uBAAJ,EAAtB;UACA,KAAK4a,KAAL,GAAa,KAAK+0C,cAAL,CAAoBzvD,OAAjC;QAFgD;QAIlDytD,MAAA,CAAOr4C,WAAP,CACE;UACEm4C,UADF;UAEEC,UAFF;UAGES,MAAA,EAAQnB,UAAA,CAAWI,OAHrB;UAIES,QAJF;UAKEj2D;QALF,CADF,EAQE+c,SARF;MAbkC,CADnB;MA0BjB6F,MAAA,EAAQ;QACN,IAAI,KAAKi1C,WAAT,EAAsB;UACpB;QADoB;QAGtB,KAAKA,WAAL,GAAmB,IAAnB;QACA9B,MAAA,CAAOr4C,WAAP,CAAmB;UACjBm4C,UADiB;UAEjBC,UAFiB;UAGjBS,MAAA,EAAQnB,UAAA,CAAWG,KAHF;UAIjBU;QAJiB,CAAnB;QAMA,OAAOn7B,IAAA,CAAKo7B,WAAL,CAAiBD,QAAjB,CAAP;MAXM,CA1BS;MAwCjB38C,MAAM3Q,MAAN,EAAc;QACZ,IAAAlM,YAAA,EAAOkM,MAAA,YAAkBnM,KAAzB,EAAgC,gCAAhC;QACA,IAAI,KAAKq7D,WAAT,EAAsB;UACpB;QADoB;QAGtB,KAAKA,WAAL,GAAmB,IAAnB;QACA9B,MAAA,CAAOr4C,WAAP,CAAmB;UACjBm4C,UADiB;UAEjBC,UAFiB;UAGjBS,MAAA,EAAQnB,UAAA,CAAWD,KAHF;UAIjBc,QAJiB;UAKjBttD,MAAA,EAAQitD,UAAA,CAAWjtD,MAAX;QALS,CAAnB;MANY,CAxCG;MAuDjBovD,cAAA,EAAgB,IAAI3vD,uBAAJ,EAvDC;MAwDjBua,MAAA,EAAQ,IAxDS;MAyDjBI,QAAA,EAAU,IAzDO;MA0DjB80C,WAAA,EAAa,KA1DI;MA2DjBL,WAAA,EAAa9uD,IAAA,CAAK8uD,WA3DD;MA4DjBx0C,KAAA,EAAO;IA5DU,CAAnB;IA+DA40C,UAAA,CAAWG,cAAX,CAA0BvvD,OAA1B;IACAovD,UAAA,CAAW50C,KAAX,GAAmB40C,UAAA,CAAWG,cAAX,CAA0BzvD,OAA7C;IACA,KAAK4tD,WAAL,CAAiBD,QAAjB,IAA6B2B,UAA7B;IAEA,IAAIrvD,OAAJ,CAAY,UAAUC,OAAV,EAAmB;MAC7BA,OAAA,CAAQiuD,MAAA,CAAO/tD,IAAA,CAAKA,IAAZ,EAAkBkvD,UAAlB,CAAR;IAD6B,CAA/B,EAEGvoD,IAFH,CAGE,YAAY;MACV0mD,MAAA,CAAOr4C,WAAP,CAAmB;QACjBm4C,UADiB;QAEjBC,UAFiB;QAGjBS,MAAA,EAAQnB,UAAA,CAAWO,cAHF;QAIjBM,QAJiB;QAKjBz5C,OAAA,EAAS;MALQ,CAAnB;IADU,CAHd,EAYE,UAAU7T,MAAV,EAAkB;MAChBotD,MAAA,CAAOr4C,WAAP,CAAmB;QACjBm4C,UADiB;QAEjBC,UAFiB;QAGjBS,MAAA,EAAQnB,UAAA,CAAWO,cAHF;QAIjBM,QAJiB;QAKjBttD,MAAA,EAAQitD,UAAA,CAAWjtD,MAAX;MALS,CAAnB;IADgB,CAZpB;EA3EsB;EAmGxB,CAAA6tD,qBAAsB9tD,IAAtB,EAA4B;IAC1B,MAAMutD,QAAA,GAAWvtD,IAAA,CAAKutD,QAAtB;MACEJ,UAAA,GAAa,KAAKA,UADpB;MAEEC,UAAA,GAAaptD,IAAA,CAAKmtD,UAFpB;MAGEE,MAAA,GAAS,KAAKA,MAHhB;IAIA,MAAMiC,gBAAA,GAAmB,KAAK7B,iBAAL,CAAuBF,QAAvB,CAAzB;MACE2B,UAAA,GAAa,KAAK1B,WAAL,CAAiBD,QAAjB,CADf;IAGA,QAAQvtD,IAAA,CAAK6tD,MAAb;MACE,KAAKnB,UAAA,CAAWO,cAAhB;QACE,IAAIjtD,IAAA,CAAK8T,OAAT,EAAkB;UAChBw7C,gBAAA,CAAiBZ,SAAjB,CAA2B5uD,OAA3B;QADgB,CAAlB,MAEO;UACLwvD,gBAAA,CAAiBZ,SAAjB,CAA2B3uD,MAA3B,CAAkCmtD,UAAA,CAAWltD,IAAA,CAAKC,MAAhB,CAAlC;QADK;QAGP;MACF,KAAKysD,UAAA,CAAWM,aAAhB;QACE,IAAIhtD,IAAA,CAAK8T,OAAT,EAAkB;UAChBw7C,gBAAA,CAAiBX,QAAjB,CAA0B7uD,OAA1B;QADgB,CAAlB,MAEO;UACLwvD,gBAAA,CAAiBX,QAAjB,CAA0B5uD,MAA1B,CAAiCmtD,UAAA,CAAWltD,IAAA,CAAKC,MAAhB,CAAjC;QADK;QAGP;MACF,KAAKysD,UAAA,CAAWK,IAAhB;QAEE,IAAI,CAACmC,UAAL,EAAiB;UACf7B,MAAA,CAAOr4C,WAAP,CAAmB;YACjBm4C,UADiB;YAEjBC,UAFiB;YAGjBS,MAAA,EAAQnB,UAAA,CAAWM,aAHF;YAIjBO,QAJiB;YAKjBz5C,OAAA,EAAS;UALQ,CAAnB;UAOA;QARe;QAYjB,IAAIo7C,UAAA,CAAWJ,WAAX,IAA0B,CAA1B,IAA+B9uD,IAAA,CAAK8uD,WAAL,GAAmB,CAAtD,EAAyD;UACvDI,UAAA,CAAWG,cAAX,CAA0BvvD,OAA1B;QADuD;QAIzDovD,UAAA,CAAWJ,WAAX,GAAyB9uD,IAAA,CAAK8uD,WAA9B;QAEA,IAAIjvD,OAAJ,CAAY,UAAUC,OAAV,EAAmB;UAC7BA,OAAA,CAAQovD,UAAA,CAAWj1C,MAAX,IAAR;QAD6B,CAA/B,EAEGtT,IAFH,CAGE,YAAY;UACV0mD,MAAA,CAAOr4C,WAAP,CAAmB;YACjBm4C,UADiB;YAEjBC,UAFiB;YAGjBS,MAAA,EAAQnB,UAAA,CAAWM,aAHF;YAIjBO,QAJiB;YAKjBz5C,OAAA,EAAS;UALQ,CAAnB;QADU,CAHd,EAYE,UAAU7T,MAAV,EAAkB;UAChBotD,MAAA,CAAOr4C,WAAP,CAAmB;YACjBm4C,UADiB;YAEjBC,UAFiB;YAGjBS,MAAA,EAAQnB,UAAA,CAAWM,aAHF;YAIjBO,QAJiB;YAKjBttD,MAAA,EAAQitD,UAAA,CAAWjtD,MAAX;UALS,CAAnB;QADgB,CAZpB;QAsBA;MACF,KAAKysD,UAAA,CAAWI,OAAhB;QACE,IAAA/4D,YAAA,EAAOu7D,gBAAP,EAAyB,uCAAzB;QACA,IAAIA,gBAAA,CAAiBT,QAArB,EAA+B;UAC7B;QAD6B;QAG/BS,gBAAA,CAAiBd,UAAjB,CAA4Bp0C,OAA5B,CAAoCpa,IAAA,CAAK1I,KAAzC;QACA;MACF,KAAKo1D,UAAA,CAAWG,KAAhB;QACE,IAAA94D,YAAA,EAAOu7D,gBAAP,EAAyB,qCAAzB;QACA,IAAIA,gBAAA,CAAiBT,QAArB,EAA+B;UAC7B;QAD6B;QAG/BS,gBAAA,CAAiBT,QAAjB,GAA4B,IAA5B;QACAS,gBAAA,CAAiBd,UAAjB,CAA4Bt0C,KAA5B;QACA,KAAK,CAAAq1C,sBAAL,CAA6BD,gBAA7B,EAA+C/B,QAA/C;QACA;MACF,KAAKb,UAAA,CAAWD,KAAhB;QACE,IAAA14D,YAAA,EAAOu7D,gBAAP,EAAyB,qCAAzB;QACAA,gBAAA,CAAiBd,UAAjB,CAA4B59C,KAA5B,CAAkCs8C,UAAA,CAAWltD,IAAA,CAAKC,MAAhB,CAAlC;QACA,KAAK,CAAAsvD,sBAAL,CAA6BD,gBAA7B,EAA+C/B,QAA/C;QACA;MACF,KAAKb,UAAA,CAAWE,eAAhB;QACE,IAAI5sD,IAAA,CAAK8T,OAAT,EAAkB;UAChBw7C,gBAAA,CAAiBV,UAAjB,CAA4B9uD,OAA5B;QADgB,CAAlB,MAEO;UACLwvD,gBAAA,CAAiBV,UAAjB,CAA4B7uD,MAA5B,CAAmCmtD,UAAA,CAAWltD,IAAA,CAAKC,MAAhB,CAAnC;QADK;QAGP,KAAK,CAAAsvD,sBAAL,CAA6BD,gBAA7B,EAA+C/B,QAA/C;QACA;MACF,KAAKb,UAAA,CAAWC,MAAhB;QACE,IAAI,CAACuC,UAAL,EAAiB;UACf;QADe;QAIjB,IAAIrvD,OAAJ,CAAY,UAAUC,OAAV,EAAmB;UAC7BA,OAAA,CAAQovD,UAAA,CAAW70C,QAAX,GAAsB6yC,UAAA,CAAWltD,IAAA,CAAKC,MAAhB,CAAtB,CAAR;QAD6B,CAA/B,EAEG0G,IAFH,CAGE,YAAY;UACV0mD,MAAA,CAAOr4C,WAAP,CAAmB;YACjBm4C,UADiB;YAEjBC,UAFiB;YAGjBS,MAAA,EAAQnB,UAAA,CAAWE,eAHF;YAIjBW,QAJiB;YAKjBz5C,OAAA,EAAS;UALQ,CAAnB;QADU,CAHd,EAYE,UAAU7T,MAAV,EAAkB;UAChBotD,MAAA,CAAOr4C,WAAP,CAAmB;YACjBm4C,UADiB;YAEjBC,UAFiB;YAGjBS,MAAA,EAAQnB,UAAA,CAAWE,eAHF;YAIjBW,QAJiB;YAKjBttD,MAAA,EAAQitD,UAAA,CAAWjtD,MAAX;UALS,CAAnB;QADgB,CAZpB;QAsBAivD,UAAA,CAAWG,cAAX,CAA0BtvD,MAA1B,CAAiCmtD,UAAA,CAAWltD,IAAA,CAAKC,MAAhB,CAAjC;QACAivD,UAAA,CAAWC,WAAX,GAAyB,IAAzB;QACA,OAAO,KAAK3B,WAAL,CAAiBD,QAAjB,CAAP;QACA;MACF;QACE,MAAM,IAAIz5D,KAAJ,CAAU,wBAAV,CAAN;IAvHJ;EAR0B;EAmI5B,MAAM,CAAAy7D,sBAANA,CAA8BD,gBAA9B,EAAgD/B,QAAhD,EAA0D;IAGxD,MAAM1tD,OAAA,CAAQ2vD,UAAR,CAAmB,CACvBF,gBAAA,CAAiBZ,SAAjB,EAA4B9uD,OADL,EAEvB0vD,gBAAA,CAAiBX,QAAjB,EAA2B/uD,OAFJ,EAGvB0vD,gBAAA,CAAiBV,UAAjB,EAA6BhvD,OAHN,CAAnB,CAAN;IAKA,OAAO,KAAK6tD,iBAAL,CAAuBF,QAAvB,CAAP;EARwD;EAW1DzkD,QAAA,EAAU;IACR,KAAKukD,MAAL,CAAY/3C,mBAAZ,CAAgC,SAAhC,EAA2C,KAAKs4C,kBAAhD;EADQ;AA1cS;AAvErB1pE,sBAAA,GAAA2jB,cAAA;;;;;;;;;;;;ACeA,IAAA5G,KAAA,GAAAC,mBAAA;AAEA,MAAMwb,QAAN,CAAe;EACb,CAAA+yC,WAAA;EAEA,CAAAzvD,IAAA;EAEAlK,YAAY;IAAE45D,UAAF;IAAcpgC;EAAd,CAAZ,EAAqC;IACnC,KAAK,CAAAmgC,WAAL,GAAoBC,UAApB;IACA,KAAK,CAAA1vD,IAAL,GAAasvB,OAAb;EAFmC;EAKrCqgC,OAAA,EAAS;IACP,OAAO,KAAK,CAAA3vD,IAAZ;EADO;EAITS,IAAI5K,IAAJ,EAAU;IACR,OAAO,KAAK,CAAA45D,WAAL,CAAkBhvD,GAAlB,CAAsB5K,IAAtB,KAA+B,IAAtC;EADQ;EAIVoqB,OAAA,EAAS;IACP,OAAO,IAAAhoB,mBAAA,EAAc,KAAK,CAAAw3D,WAAnB,CAAP;EADO;EAIT54C,IAAIhhB,IAAJ,EAAU;IACR,OAAO,KAAK,CAAA45D,WAAL,CAAkB54C,GAAlB,CAAsBhhB,IAAtB,CAAP;EADQ;AAtBG;AAjBf3R,gBAAA,GAAAw4B,QAAA;;;;;;;;;;;;ACeA,IAAAzb,KAAA,GAAAC,mBAAA;AACA,IAAA8d,WAAA,GAAA9d,mBAAA;AAEA,MAAM0uD,QAAA,GAAWC,MAAA,CAAO,UAAP,CAAjB;AAEA,MAAMC,oBAAN,CAA2B;EACzB,CAAApL,OAAA,GAAW,IAAX;EAEA5uD,YAAYD,IAAZ,EAAkB+Y,MAAlB,EAA0B;IACxB,KAAK/Y,IAAL,GAAYA,IAAZ;IACA,KAAK+Y,MAAL,GAAcA,MAAd;EAFwB;EAQ1B,IAAI81C,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK,CAAAA,OAAZ;EADY;EAOdqL,YAAYC,QAAZ,EAAsBtL,OAAtB,EAA+B;IAC7B,IAAIsL,QAAA,KAAaJ,QAAjB,EAA2B;MACzB,IAAA/7D,iBAAA,EAAY,uCAAZ;IADyB;IAG3B,KAAK,CAAA6wD,OAAL,GAAgBA,OAAhB;EAJ6B;AAlBN;AA0B3B,MAAMloC,qBAAN,CAA4B;EAC1B,CAAAyzC,aAAA,GAAiB,IAAjB;EAEA,CAAAC,MAAA,GAAU,IAAI7vD,GAAJ,EAAV;EAEA,CAAA8vD,WAAA,GAAe,IAAf;EAEA,CAAAC,KAAA,GAAS,IAAT;EAEAt6D,YAAYkK,IAAZ,EAAkB;IAChB,KAAKnK,IAAL,GAAY,IAAZ;IACA,KAAKw6D,OAAL,GAAe,IAAf;IAEA,IAAIrwD,IAAA,KAAS,IAAb,EAAmB;MACjB;IADiB;IAGnB,KAAKnK,IAAL,GAAYmK,IAAA,CAAKnK,IAAjB;IACA,KAAKw6D,OAAL,GAAerwD,IAAA,CAAKqwD,OAApB;IACA,KAAK,CAAAD,KAAL,GAAcpwD,IAAA,CAAKowD,KAAnB;IACA,WAAWlN,KAAX,IAAoBljD,IAAA,CAAKkwD,MAAzB,EAAiC;MAC/B,KAAK,CAAAA,MAAL,CAAalgD,GAAb,CACEkzC,KAAA,CAAM13C,EADR,EAEE,IAAIskD,oBAAJ,CAAyB5M,KAAA,CAAMrtD,IAA/B,EAAqCqtD,KAAA,CAAMt0C,MAA3C,CAFF;IAD+B;IAOjC,IAAI5O,IAAA,CAAKswD,SAAL,KAAmB,KAAvB,EAA8B;MAC5B,WAAWpN,KAAX,IAAoB,KAAK,CAAAgN,MAAL,CAAa18C,MAAb,EAApB,EAA2C;QACzC0vC,KAAA,CAAM6M,WAAN,CAAkBH,QAAlB,EAA4B,KAA5B;MADyC;IADf;IAM9B,WAAW34C,EAAX,IAAiBjX,IAAA,CAAKiX,EAAtB,EAA0B;MACxB,KAAK,CAAAi5C,MAAL,CAAazvD,GAAb,CAAiBwW,EAAjB,EAAqB84C,WAArB,CAAiCH,QAAjC,EAA2C,IAA3C;IADwB;IAI1B,WAAWW,GAAX,IAAkBvwD,IAAA,CAAKuwD,GAAvB,EAA4B;MAC1B,KAAK,CAAAL,MAAL,CAAazvD,GAAb,CAAiB8vD,GAAjB,EAAsBR,WAAtB,CAAkCH,QAAlC,EAA4C,KAA5C;IAD0B;IAK5B,KAAK,CAAAO,WAAL,GAAoB,KAAKK,OAAL,EAApB;EAhCgB;EAmClB,CAAAC,6BAA8BC,KAA9B,EAAqC;IACnC,MAAM/7D,MAAA,GAAS+7D,KAAA,CAAM/7D,MAArB;IACA,IAAIA,MAAA,GAAS,CAAb,EAAgB;MACd,OAAO,IAAP;IADc;IAGhB,MAAMg8D,QAAA,GAAWD,KAAA,CAAM,CAAN,CAAjB;IACA,KAAK,IAAIx5D,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvC,MAApB,EAA4BuC,CAAA,EAA5B,EAAiC;MAC/B,MAAMm3B,OAAA,GAAUqiC,KAAA,CAAMx5D,CAAN,CAAhB;MACA,IAAI05D,KAAJ;MACA,IAAIn3D,KAAA,CAAM++B,OAAN,CAAcnK,OAAd,CAAJ,EAA4B;QAC1BuiC,KAAA,GAAQ,KAAK,CAAAH,4BAAL,CAAmCpiC,OAAnC,CAAR;MAD0B,CAA5B,MAEO,IAAI,KAAK,CAAA6hC,MAAL,CAAar5C,GAAb,CAAiBwX,OAAjB,CAAJ,EAA+B;QACpCuiC,KAAA,GAAQ,KAAK,CAAAV,MAAL,CAAazvD,GAAb,CAAiB4tB,OAAjB,EAA0Bq2B,OAAlC;MADoC,CAA/B,MAEA;QACL,IAAA9wD,UAAA,EAAM,qCAAoCy6B,OAArC,EAAL;QACA,OAAO,IAAP;MAFK;MAIP,QAAQsiC,QAAR;QACE,KAAK,KAAL;UACE,IAAI,CAACC,KAAL,EAAY;YACV,OAAO,KAAP;UADU;UAGZ;QACF,KAAK,IAAL;UACE,IAAIA,KAAJ,EAAW;YACT,OAAO,IAAP;UADS;UAGX;QACF,KAAK,KAAL;UACE,OAAO,CAACA,KAAR;QACF;UACE,OAAO,IAAP;MAdJ;IAX+B;IA4BjC,OAAOD,QAAA,KAAa,KAApB;EAlCmC;EAqCrChM,UAAUzB,KAAV,EAAiB;IACf,IAAI,KAAK,CAAAgN,MAAL,CAAa39C,IAAb,KAAsB,CAA1B,EAA6B;MAC3B,OAAO,IAAP;IAD2B;IAG7B,IAAI,CAAC2wC,KAAL,EAAY;MACV,IAAAtvD,UAAA,EAAK,qCAAL;MACA,OAAO,IAAP;IAFU;IAIZ,IAAIsvD,KAAA,CAAMj/D,IAAN,KAAe,KAAnB,EAA0B;MACxB,IAAI,CAAC,KAAK,CAAAisE,MAAL,CAAar5C,GAAb,CAAiBqsC,KAAA,CAAM13C,EAAvB,CAAL,EAAiC;QAC/B,IAAA5X,UAAA,EAAM,qCAAoCsvD,KAAA,CAAM13C,EAA3C,EAAL;QACA,OAAO,IAAP;MAF+B;MAIjC,OAAO,KAAK,CAAA0kD,MAAL,CAAazvD,GAAb,CAAiByiD,KAAA,CAAM13C,EAAvB,EAA2Bk5C,OAAlC;IALwB,CAA1B,MAMO,IAAIxB,KAAA,CAAMj/D,IAAN,KAAe,MAAnB,EAA2B;MAEhC,IAAIi/D,KAAA,CAAM2N,UAAV,EAAsB;QACpB,OAAO,KAAK,CAAAJ,4BAAL,CAAmCvN,KAAA,CAAM2N,UAAzC,CAAP;MADoB;MAGtB,IAAI,CAAC3N,KAAA,CAAM4N,MAAP,IAAiB5N,KAAA,CAAM4N,MAAN,KAAiB,OAAtC,EAA+C;QAE7C,WAAWtlD,EAAX,IAAiB03C,KAAA,CAAM6N,GAAvB,EAA4B;UAC1B,IAAI,CAAC,KAAK,CAAAb,MAAL,CAAar5C,GAAb,CAAiBrL,EAAjB,CAAL,EAA2B;YACzB,IAAA5X,UAAA,EAAM,qCAAoC4X,EAArC,EAAL;YACA,OAAO,IAAP;UAFyB;UAI3B,IAAI,KAAK,CAAA0kD,MAAL,CAAazvD,GAAb,CAAiB+K,EAAjB,EAAqBk5C,OAAzB,EAAkC;YAChC,OAAO,IAAP;UADgC;QALR;QAS5B,OAAO,KAAP;MAX6C,CAA/C,MAYO,IAAIxB,KAAA,CAAM4N,MAAN,KAAiB,OAArB,EAA8B;QACnC,WAAWtlD,EAAX,IAAiB03C,KAAA,CAAM6N,GAAvB,EAA4B;UAC1B,IAAI,CAAC,KAAK,CAAAb,MAAL,CAAar5C,GAAb,CAAiBrL,EAAjB,CAAL,EAA2B;YACzB,IAAA5X,UAAA,EAAM,qCAAoC4X,EAArC,EAAL;YACA,OAAO,IAAP;UAFyB;UAI3B,IAAI,CAAC,KAAK,CAAA0kD,MAAL,CAAazvD,GAAb,CAAiB+K,EAAjB,EAAqBk5C,OAA1B,EAAmC;YACjC,OAAO,KAAP;UADiC;QALT;QAS5B,OAAO,IAAP;MAVmC,CAA9B,MAWA,IAAIxB,KAAA,CAAM4N,MAAN,KAAiB,QAArB,EAA+B;QACpC,WAAWtlD,EAAX,IAAiB03C,KAAA,CAAM6N,GAAvB,EAA4B;UAC1B,IAAI,CAAC,KAAK,CAAAb,MAAL,CAAar5C,GAAb,CAAiBrL,EAAjB,CAAL,EAA2B;YACzB,IAAA5X,UAAA,EAAM,qCAAoC4X,EAArC,EAAL;YACA,OAAO,IAAP;UAFyB;UAI3B,IAAI,CAAC,KAAK,CAAA0kD,MAAL,CAAazvD,GAAb,CAAiB+K,EAAjB,EAAqBk5C,OAA1B,EAAmC;YACjC,OAAO,IAAP;UADiC;QALT;QAS5B,OAAO,KAAP;MAVoC,CAA/B,MAWA,IAAIxB,KAAA,CAAM4N,MAAN,KAAiB,QAArB,EAA+B;QACpC,WAAWtlD,EAAX,IAAiB03C,KAAA,CAAM6N,GAAvB,EAA4B;UAC1B,IAAI,CAAC,KAAK,CAAAb,MAAL,CAAar5C,GAAb,CAAiBrL,EAAjB,CAAL,EAA2B;YACzB,IAAA5X,UAAA,EAAM,qCAAoC4X,EAArC,EAAL;YACA,OAAO,IAAP;UAFyB;UAI3B,IAAI,KAAK,CAAA0kD,MAAL,CAAazvD,GAAb,CAAiB+K,EAAjB,EAAqBk5C,OAAzB,EAAkC;YAChC,OAAO,KAAP;UADgC;QALR;QAS5B,OAAO,IAAP;MAVoC;MAYtC,IAAA9wD,UAAA,EAAM,mCAAkCsvD,KAAA,CAAM4N,MAAO,GAArD;MACA,OAAO,IAAP;IApDgC;IAsDlC,IAAAl9D,UAAA,EAAM,sBAAqBsvD,KAAA,CAAMj/D,IAAK,GAAtC;IACA,OAAO,IAAP;EArEe;EAwEjB+sE,cAAcxlD,EAAd,EAAkBk5C,OAAA,GAAU,IAA5B,EAAkC;IAChC,IAAI,CAAC,KAAK,CAAAwL,MAAL,CAAar5C,GAAb,CAAiBrL,EAAjB,CAAL,EAA2B;MACzB,IAAA5X,UAAA,EAAM,qCAAoC4X,EAArC,EAAL;MACA;IAFyB;IAI3B,KAAK,CAAA0kD,MAAL,CAAazvD,GAAb,CAAiB+K,EAAjB,EAAqBukD,WAArB,CAAiCH,QAAjC,EAA2C,CAAC,CAAClL,OAA7C;IAEA,KAAK,CAAAuL,aAAL,GAAsB,IAAtB;EAPgC;EAUlC,IAAIgB,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAK,CAAAd,WAAL,KAAsB,IAAtB,IAA8B,KAAKK,OAAL,OAAmB,KAAK,CAAAL,WAA7D;EADyB;EAI3Be,SAAA,EAAW;IACT,IAAI,CAAC,KAAK,CAAAhB,MAAL,CAAa39C,IAAlB,EAAwB;MACtB,OAAO,IAAP;IADsB;IAGxB,IAAI,KAAK,CAAA69C,KAAT,EAAiB;MACf,OAAO,KAAK,CAAAA,KAAL,CAAYn1D,KAAZ,EAAP;IADe;IAGjB,OAAO,CAAC,GAAG,KAAK,CAAAi1D,MAAL,CAAal4D,IAAb,EAAJ,CAAP;EAPS;EAUXm5D,UAAA,EAAY;IACV,OAAO,KAAK,CAAAjB,MAAL,CAAa39C,IAAb,GAAoB,CAApB,GAAwB,IAAAta,mBAAA,EAAc,KAAK,CAAAi4D,MAAnB,CAAxB,GAAsD,IAA7D;EADU;EAIZkB,SAAS5lD,EAAT,EAAa;IACX,OAAO,KAAK,CAAA0kD,MAAL,CAAazvD,GAAb,CAAiB+K,EAAjB,KAAwB,IAA/B;EADW;EAIbglD,QAAA,EAAU;IACR,IAAI,KAAK,CAAAP,aAAL,KAAwB,IAA5B,EAAkC;MAChC,OAAO,KAAK,CAAAA,aAAZ;IADgC;IAGlC,MAAMz2C,IAAA,GAAO,IAAI4G,0BAAJ,EAAb;IAEA,WAAW,CAAC5U,EAAD,EAAK03C,KAAL,CAAX,IAA0B,KAAK,CAAAgN,MAA/B,EAAwC;MACtC12C,IAAA,CAAKiH,MAAL,CAAY,GAAGjV,EAAG,IAAG03C,KAAA,CAAMwB,OAAf,EAAZ;IADsC;IAGxC,OAAQ,KAAK,CAAAuL,aAAL,GAAsBz2C,IAAA,CAAKoH,SAAL,EAA9B;EATQ;AAzLgB;AA9C5B18B,6BAAA,GAAAs4B,qBAAA;;;;;;;;;;;;ACeA,IAAAvb,KAAA,GAAAC,mBAAA;AACA,IAAAE,cAAA,GAAAF,mBAAA;AAGA,MAAM+F,sBAAN,CAA6B;EAC3BnR,YACE;IACEnB,MADF;IAEEuS,WAFF;IAGEC,eAAA,GAAkB,KAHpB;IAIEC,0BAAA,GAA6B,IAJ/B;IAKEnC,YAAA,GAAe,KALjB;IAMEC,aAAA,GAAgB;EANlB,CADF,EASEmsD,qBATF,EAUE;IACA,IAAAt9D,YAAA,EACEs9D,qBADF,EAEE,6EAFF;IAKA,KAAKC,aAAL,GAAqB,EAArB;IACA,KAAKC,gBAAL,GAAwBpqD,eAAxB;IACA,KAAKqqD,2BAAL,GAAmCpqD,0BAAnC;IAEA,IAAIF,WAAA,EAAavS,MAAb,GAAsB,CAA1B,EAA6B;MAG3B,MAAM8D,MAAA,GACJyO,WAAA,YAAuBtP,UAAvB,IACAsP,WAAA,CAAYrI,UAAZ,KAA2BqI,WAAA,CAAYzO,MAAZ,CAAmBoG,UAD9C,GAEIqI,WAAA,CAAYzO,MAFhB,GAGI,IAAIb,UAAJ,CAAesP,WAAf,EAA4BzO,MAJlC;MAKA,KAAK64D,aAAL,CAAmB95D,IAAnB,CAAwBiB,MAAxB;IAR2B;IAW7B,KAAKg5D,sBAAL,GAA8BJ,qBAA9B;IACA,KAAKK,qBAAL,GAA6B,CAACxsD,aAA9B;IACA,KAAKysD,iBAAL,GAAyB,CAAC1sD,YAA1B;IACA,KAAK2sD,cAAL,GAAsBj9D,MAAtB;IAEA,KAAKk9D,kBAAL,GAA0B,IAA1B;IACA,KAAKC,aAAL,GAAqB,EAArB;IAEA,KAAKL,sBAAL,CAA4BpoD,gBAA5B,CAA6C,CAACM,KAAD,EAAQrS,KAAR,KAAkB;MAC7D,KAAKy6D,cAAL,CAAoB;QAAEpoD,KAAF;QAASrS;MAAT,CAApB;IAD6D,CAA/D;IAIA,KAAKm6D,sBAAL,CAA4BloD,mBAA5B,CAAgD,CAACM,MAAD,EAASC,KAAT,KAAmB;MACjE,KAAKkoD,WAAL,CAAiB;QAAEnoD,MAAF;QAAUC;MAAV,CAAjB;IADiE,CAAnE;IAIA,KAAK2nD,sBAAL,CAA4BjoD,0BAA5B,CAAuDlS,KAAA,IAAS;MAC9D,KAAKy6D,cAAL,CAAoB;QAAEz6D;MAAF,CAApB;IAD8D,CAAhE;IAIA,KAAKm6D,sBAAL,CAA4BhoD,0BAA5B,CAAuD,MAAM;MAC3D,KAAKwoD,kBAAL;IAD2D,CAA7D;IAIA,KAAKR,sBAAL,CAA4BxnD,cAA5B;EA7CA;EAgDF8nD,eAAe;IAAEpoD,KAAF;IAASrS;EAAT,CAAf,EAAiC;IAG/B,MAAMmB,MAAA,GACJnB,KAAA,YAAiBM,UAAjB,IACAN,KAAA,CAAMuH,UAAN,KAAqBvH,KAAA,CAAMmB,MAAN,CAAaoG,UADlC,GAEIvH,KAAA,CAAMmB,MAFV,GAGI,IAAIb,UAAJ,CAAeN,KAAf,EAAsBmB,MAJ5B;IAMA,IAAIkR,KAAA,KAAU/S,SAAd,EAAyB;MACvB,IAAI,KAAKi7D,kBAAT,EAA6B;QAC3B,KAAKA,kBAAL,CAAwBK,QAAxB,CAAiCz5D,MAAjC;MAD2B,CAA7B,MAEO;QACL,KAAK64D,aAAL,CAAmB95D,IAAnB,CAAwBiB,MAAxB;MADK;IAHgB,CAAzB,MAMO;MACL,MAAM05D,KAAA,GAAQ,KAAKL,aAAL,CAAmB94B,IAAnB,CAAwB,UAAUle,WAAV,EAAuB;QAC3D,IAAIA,WAAA,CAAYs3C,MAAZ,KAAuBzoD,KAA3B,EAAkC;UAChC,OAAO,KAAP;QADgC;QAGlCmR,WAAA,CAAYo3C,QAAZ,CAAqBz5D,MAArB;QACA,OAAO,IAAP;MAL2D,CAA/C,CAAd;MAOA,IAAA1E,YAAA,EACEo+D,KADF,EAEE,yEAFF;IARK;EAfwB;EA8BjC,IAAIE,sBAAJA,CAAA,EAA6B;IAC3B,OAAO,KAAKR,kBAAL,EAAyBS,OAAzB,IAAoC,CAA3C;EAD2B;EAI7BN,YAAYh4C,GAAZ,EAAiB;IACf,IAAIA,GAAA,CAAIlQ,KAAJ,KAAclT,SAAlB,EAA6B;MAE3B,KAAKk7D,aAAL,CAAmB,CAAnB,GAAuBjpD,UAAvB,GAAoC;QAAEgB,MAAA,EAAQmQ,GAAA,CAAInQ;MAAd,CAApC;IAF2B,CAA7B,MAGO;MACL,KAAKgoD,kBAAL,EAAyBhpD,UAAzB,GAAsC;QACpCgB,MAAA,EAAQmQ,GAAA,CAAInQ,MADwB;QAEpCC,KAAA,EAAOkQ,GAAA,CAAIlQ;MAFyB,CAAtC;IADK;EAJQ;EAYjBmoD,mBAAA,EAAqB;IACnB,KAAKJ,kBAAL,EAAyB1qD,eAAzB;IACA,KAAKoqD,gBAAL,GAAwB,IAAxB;EAFmB;EAKrBgB,mBAAmBx/C,MAAnB,EAA2B;IACzB,MAAM7b,CAAA,GAAI,KAAK46D,aAAL,CAAmBU,OAAnB,CAA2Bz/C,MAA3B,CAAV;IACA,IAAI7b,CAAA,IAAK,CAAT,EAAY;MACV,KAAK46D,aAAL,CAAmBtgC,MAAnB,CAA0Bt6B,CAA1B,EAA6B,CAA7B;IADU;EAFa;EAO3B6iB,cAAA,EAAgB;IACd,IAAAhmB,YAAA,EACE,CAAC,KAAK89D,kBADR,EAEE,+DAFF;IAIA,MAAMY,YAAA,GAAe,KAAKnB,aAA1B;IACA,KAAKA,aAAL,GAAqB,IAArB;IACA,OAAO,IAAIoB,4BAAJ,CACL,IADK,EAELD,YAFK,EAGL,KAAKlB,gBAHA,EAIL,KAAKC,2BAJA,CAAP;EAPc;EAehBz2C,eAAepR,KAAf,EAAsBQ,GAAtB,EAA2B;IACzB,IAAIA,GAAA,IAAO,KAAKkoD,sBAAhB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,MAAMt/C,MAAA,GAAS,IAAI4/C,iCAAJ,CAAsC,IAAtC,EAA4ChpD,KAA5C,EAAmDQ,GAAnD,CAAf;IACA,KAAKsnD,sBAAL,CAA4BvnD,gBAA5B,CAA6CP,KAA7C,EAAoDQ,GAApD;IACA,KAAK2nD,aAAL,CAAmBt6D,IAAnB,CAAwBub,MAAxB;IACA,OAAOA,MAAP;EAPyB;EAU3B8G,kBAAkB5Z,MAAlB,EAA0B;IACxB,KAAK4xD,kBAAL,EAAyBl+C,MAAzB,CAAgC1T,MAAhC;IAEA,WAAW8S,MAAX,IAAqB,KAAK++C,aAAL,CAAmB72D,KAAnB,CAAyB,CAAzB,CAArB,EAAkD;MAChD8X,MAAA,CAAOY,MAAP,CAAc1T,MAAd;IADgD;IAGlD,KAAKwxD,sBAAL,CAA4BrnD,KAA5B;EANwB;AA9IC;AAnB7BlmB,8BAAA,GAAA+iB,sBAAA;AA4KA,MAAMyrD,4BAAN,CAAmC;EACjC58D,YACE+3D,MADF,EAEE4E,YAFF,EAGEtrD,eAAA,GAAkB,KAHpB,EAIEC,0BAAA,GAA6B,IAJ/B,EAKE;IACA,KAAKwrD,OAAL,GAAe/E,MAAf;IACA,KAAKgF,KAAL,GAAa1rD,eAAA,IAAmB,KAAhC;IACA,KAAK2rD,SAAL,GAAiB,IAAA9wB,wBAAA,EAAU56B,0BAAV,IACbA,0BADa,GAEb,IAFJ;IAGA,KAAKkqD,aAAL,GAAqBmB,YAAA,IAAgB,EAArC;IACA,KAAKH,OAAL,GAAe,CAAf;IACA,WAAWh7D,KAAX,IAAoB,KAAKg6D,aAAzB,EAAwC;MACtC,KAAKgB,OAAL,IAAgBh7D,KAAA,CAAMuH,UAAtB;IADsC;IAGxC,KAAKk0D,SAAL,GAAiB,EAAjB;IACA,KAAKC,aAAL,GAAqBnzD,OAAA,CAAQC,OAAR,EAArB;IACA+tD,MAAA,CAAOgE,kBAAP,GAA4B,IAA5B;IAEA,KAAKhpD,UAAL,GAAkB,IAAlB;EAfA;EAkBFqpD,SAAS56D,KAAT,EAAgB;IACd,IAAI,KAAKu7D,KAAT,EAAgB;MACd;IADc;IAGhB,IAAI,KAAKE,SAAL,CAAep+D,MAAf,GAAwB,CAA5B,EAA+B;MAC7B,MAAMs+D,iBAAA,GAAoB,KAAKF,SAAL,CAAerqB,KAAf,EAA1B;MACAuqB,iBAAA,CAAkBnzD,OAAlB,CAA0B;QAAE3K,KAAA,EAAOmC,KAAT;QAAgB2b,IAAA,EAAM;MAAtB,CAA1B;IAF6B,CAA/B,MAGO;MACL,KAAKq+C,aAAL,CAAmB95D,IAAnB,CAAwBF,KAAxB;IADK;IAGP,KAAKg7D,OAAL,IAAgBh7D,KAAA,CAAMuH,UAAtB;EAVc;EAahB,IAAI6b,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKs4C,aAAZ;EADiB;EAInB,IAAI52C,QAAJA,CAAA,EAAe;IACb,OAAO,KAAK02C,SAAZ;EADa;EAIf,IAAIl4C,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAKg4C,OAAL,CAAajB,iBAApB;EADqB;EAIvB,IAAIh3C,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAKi4C,OAAL,CAAalB,qBAApB;EADyB;EAI3B,IAAI72C,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAK+3C,OAAL,CAAahB,cAApB;EADkB;EAIpB,MAAM5+C,IAANA,CAAA,EAAa;IACX,IAAI,KAAKs+C,aAAL,CAAmB38D,MAAnB,GAA4B,CAAhC,EAAmC;MACjC,MAAM2C,KAAA,GAAQ,KAAKg6D,aAAL,CAAmB5oB,KAAnB,EAAd;MACA,OAAO;QAAEvzC,KAAA,EAAOmC,KAAT;QAAgB2b,IAAA,EAAM;MAAtB,CAAP;IAFiC;IAInC,IAAI,KAAK4/C,KAAT,EAAgB;MACd,OAAO;QAAE19D,KAAA,EAAOyB,SAAT;QAAoBqc,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,MAAMggD,iBAAA,GAAoB,IAAIvzD,uBAAJ,EAA1B;IACA,KAAKqzD,SAAL,CAAev7D,IAAf,CAAoBy7D,iBAApB;IACA,OAAOA,iBAAA,CAAkBrzD,OAAzB;EAVW;EAab+T,OAAO1T,MAAP,EAAe;IACb,KAAK4yD,KAAL,GAAa,IAAb;IACA,WAAWI,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBnzD,OAAlB,CAA0B;QAAE3K,KAAA,EAAOyB,SAAT;QAAoBqc,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAK8/C,SAAL,CAAep+D,MAAf,GAAwB,CAAxB;EALa;EAQfwS,gBAAA,EAAkB;IAChB,IAAI,KAAK0rD,KAAT,EAAgB;MACd;IADc;IAGhB,KAAKA,KAAL,GAAa,IAAb;EAJgB;AA9Ee;AAuFnC,MAAMF,iCAAN,CAAwC;EACtC78D,YAAY+3D,MAAZ,EAAoBlkD,KAApB,EAA2BQ,GAA3B,EAAgC;IAC9B,KAAKyoD,OAAL,GAAe/E,MAAf;IACA,KAAKuE,MAAL,GAAczoD,KAAd;IACA,KAAKupD,IAAL,GAAY/oD,GAAZ;IACA,KAAKgpD,YAAL,GAAoB,IAApB;IACA,KAAKJ,SAAL,GAAiB,EAAjB;IACA,KAAKF,KAAL,GAAa,KAAb;IAEA,KAAKhqD,UAAL,GAAkB,IAAlB;EAR8B;EAWhCqpD,SAAS56D,KAAT,EAAgB;IACd,IAAI,KAAKu7D,KAAT,EAAgB;MACd;IADc;IAGhB,IAAI,KAAKE,SAAL,CAAep+D,MAAf,KAA0B,CAA9B,EAAiC;MAC/B,KAAKw+D,YAAL,GAAoB77D,KAApB;IAD+B,CAAjC,MAEO;MACL,MAAM87D,kBAAA,GAAqB,KAAKL,SAAL,CAAerqB,KAAf,EAA3B;MACA0qB,kBAAA,CAAmBtzD,OAAnB,CAA2B;QAAE3K,KAAA,EAAOmC,KAAT;QAAgB2b,IAAA,EAAM;MAAtB,CAA3B;MACA,WAAWggD,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;QAC9CE,iBAAA,CAAkBnzD,OAAlB,CAA0B;UAAE3K,KAAA,EAAOyB,SAAT;UAAoBqc,IAAA,EAAM;QAA1B,CAA1B;MAD8C;MAGhD,KAAK8/C,SAAL,CAAep+D,MAAf,GAAwB,CAAxB;IANK;IAQP,KAAKk+D,KAAL,GAAa,IAAb;IACA,KAAKD,OAAL,CAAaL,kBAAb,CAAgC,IAAhC;EAfc;EAkBhB,IAAI53C,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAP;EADyB;EAI3B,MAAM3H,IAANA,CAAA,EAAa;IACX,IAAI,KAAKmgD,YAAT,EAAuB;MACrB,MAAM77D,KAAA,GAAQ,KAAK67D,YAAnB;MACA,KAAKA,YAAL,GAAoB,IAApB;MACA,OAAO;QAAEh+D,KAAA,EAAOmC,KAAT;QAAgB2b,IAAA,EAAM;MAAtB,CAAP;IAHqB;IAKvB,IAAI,KAAK4/C,KAAT,EAAgB;MACd,OAAO;QAAE19D,KAAA,EAAOyB,SAAT;QAAoBqc,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,MAAMggD,iBAAA,GAAoB,IAAIvzD,uBAAJ,EAA1B;IACA,KAAKqzD,SAAL,CAAev7D,IAAf,CAAoBy7D,iBAApB;IACA,OAAOA,iBAAA,CAAkBrzD,OAAzB;EAXW;EAcb+T,OAAO1T,MAAP,EAAe;IACb,KAAK4yD,KAAL,GAAa,IAAb;IACA,WAAWI,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBnzD,OAAlB,CAA0B;QAAE3K,KAAA,EAAOyB,SAAT;QAAoBqc,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAK8/C,SAAL,CAAep+D,MAAf,GAAwB,CAAxB;IACA,KAAKi+D,OAAL,CAAaL,kBAAb,CAAgC,IAAhC;EANa;AAhDuB;;;;;;;;;;;;ACpPxC,IAAAtxD,KAAA,GAAAC,mBAAA;AAMA,IAAAmyD,cAAA,GAAAnyD,mBAAA;AAOA;AAMA,SAASoyD,kBAATA,CAA4BC,OAA5B,EAAqC7vD,eAArC,EAAsD8vD,eAAtD,EAAuE;EACrE,OAAO;IACLC,MAAA,EAAQ,KADH;IAELF,OAFK;IAGLG,MAAA,EAAQF,eAAA,CAAgBE,MAHnB;IAILt/B,IAAA,EAAM,MAJD;IAKLu/B,WAAA,EAAajwD,eAAA,GAAkB,SAAlB,GAA8B,aALtC;IAMLkwD,QAAA,EAAU;EANL,CAAP;AADqE;AAWvE,SAASC,aAATA,CAAuBpwD,WAAvB,EAAoC;EAClC,MAAM8vD,OAAA,GAAU,IAAIO,OAAJ,EAAhB;EACA,WAAW7e,QAAX,IAAuBxxC,WAAvB,EAAoC;IAClC,MAAMtO,KAAA,GAAQsO,WAAA,CAAYwxC,QAAZ,CAAd;IACA,IAAI9/C,KAAA,KAAUyB,SAAd,EAAyB;MACvB;IADuB;IAGzB28D,OAAA,CAAQrrC,MAAR,CAAe+sB,QAAf,EAAyB9/C,KAAzB;EALkC;EAOpC,OAAOo+D,OAAP;AATkC;AAYpC,SAASQ,cAATA,CAAwBzrD,GAAxB,EAA6B;EAC3B,IAAIA,GAAA,YAAe1Q,UAAnB,EAA+B;IAC7B,OAAO0Q,GAAA,CAAI7P,MAAX;EAD6B;EAG/B,IAAI6P,GAAA,YAAe6R,WAAnB,EAAgC;IAC9B,OAAO7R,GAAP;EAD8B;EAGhC,IAAA1U,UAAA,EAAM,4CAA2C0U,GAA5C,EAAL;EACA,OAAO,IAAI1Q,UAAJ,CAAe0Q,GAAf,EAAoB7P,MAA3B;AAR2B;AAY7B,MAAM+O,cAAN,CAAqB;EACnB1R,YAAYsS,MAAZ,EAAoB;IAClB,KAAKA,MAAL,GAAcA,MAAd;IACA,KAAK4rD,MAAL,GAAc,YAAY/xB,IAAZ,CAAiB75B,MAAA,CAAOlU,GAAxB,CAAd;IACA,KAAKuP,WAAL,GAAoB,KAAKuwD,MAAL,IAAe5rD,MAAA,CAAO3E,WAAvB,IAAuC,EAA1D;IAEA,KAAKouD,kBAAL,GAA0B,IAA1B;IACA,KAAKoC,oBAAL,GAA4B,EAA5B;EANkB;EASpB,IAAI5B,sBAAJA,CAAA,EAA6B;IAC3B,OAAO,KAAKR,kBAAL,EAAyBS,OAAzB,IAAoC,CAA3C;EAD2B;EAI7Bv4C,cAAA,EAAgB;IACd,IAAAhmB,YAAA,EACE,CAAC,KAAK89D,kBADR,EAEE,uDAFF;IAIA,KAAKA,kBAAL,GAA0B,IAAIqC,oBAAJ,CAAyB,IAAzB,CAA1B;IACA,OAAO,KAAKrC,kBAAZ;EANc;EAShB92C,eAAepR,KAAf,EAAsBQ,GAAtB,EAA2B;IACzB,IAAIA,GAAA,IAAO,KAAKkoD,sBAAhB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,MAAMt/C,MAAA,GAAS,IAAIohD,yBAAJ,CAA8B,IAA9B,EAAoCxqD,KAApC,EAA2CQ,GAA3C,CAAf;IACA,KAAK8pD,oBAAL,CAA0Bz8D,IAA1B,CAA+Bub,MAA/B;IACA,OAAOA,MAAP;EANyB;EAS3B8G,kBAAkB5Z,MAAlB,EAA0B;IACxB,KAAK4xD,kBAAL,EAAyBl+C,MAAzB,CAAgC1T,MAAhC;IAEA,WAAW8S,MAAX,IAAqB,KAAKkhD,oBAAL,CAA0Bh5D,KAA1B,CAAgC,CAAhC,CAArB,EAAyD;MACvD8X,MAAA,CAAOY,MAAP,CAAc1T,MAAd;IADuD;EAHjC;AAhCP;AArErB/b,sBAAA,GAAAsjB,cAAA;AA+GA,MAAM0sD,oBAAN,CAA2B;EACzBp+D,YAAY+3D,MAAZ,EAAoB;IAClB,KAAK+E,OAAL,GAAe/E,MAAf;IACA,KAAKuG,OAAL,GAAe,IAAf;IACA,KAAK9B,OAAL,GAAe,CAAf;IACA,KAAKQ,SAAL,GAAiB,IAAjB;IACA,MAAM1qD,MAAA,GAASylD,MAAA,CAAOzlD,MAAtB;IACA,KAAKisD,gBAAL,GAAwBjsD,MAAA,CAAO1E,eAAP,IAA0B,KAAlD;IACA,KAAKkuD,cAAL,GAAsBxpD,MAAA,CAAOzT,MAA7B;IACA,KAAK2/D,kBAAL,GAA0B,IAAI50D,uBAAJ,EAA1B;IACA,KAAK60D,aAAL,GAAqBnsD,MAAA,CAAOnD,YAAP,IAAuB,KAA5C;IACA,KAAKuvD,eAAL,GAAuBpsD,MAAA,CAAOtE,cAA9B;IACA,IAAI,CAAC,KAAK0wD,eAAN,IAAyB,CAAC,KAAKD,aAAnC,EAAkD;MAChD,KAAKA,aAAL,GAAqB,IAArB;IADgD;IAIlD,KAAKE,gBAAL,GAAwB,IAAIC,eAAJ,EAAxB;IACA,KAAKhD,qBAAL,GAA6B,CAACtpD,MAAA,CAAOlD,aAArC;IACA,KAAKysD,iBAAL,GAAyB,CAACvpD,MAAA,CAAOnD,YAAjC;IAEA,KAAK0vD,QAAL,GAAgBd,aAAA,CAAc,KAAKjB,OAAL,CAAanvD,WAA3B,CAAhB;IAEA,MAAMvP,GAAA,GAAMkU,MAAA,CAAOlU,GAAnB;IACAioB,KAAA,CACEjoB,GADF,EAEEo/D,kBAAA,CACE,KAAKqB,QADP,EAEE,KAAKN,gBAFP,EAGE,KAAKI,gBAHP,CAFF,EAQG9tD,IARH,CAQQ8oB,QAAA,IAAY;MAChB,IAAI,CAAC,IAAAmlC,qCAAA,EAAuBnlC,QAAA,CAASl5B,MAAhC,CAAL,EAA8C;QAC5C,MAAM,IAAAs+D,wCAAA,EAA0BplC,QAAA,CAASl5B,MAAnC,EAA2CrC,GAA3C,CAAN;MAD4C;MAG9C,KAAKkgE,OAAL,GAAe3kC,QAAA,CAAS+M,IAAT,CAAcppB,SAAd,EAAf;MACA,KAAKkhD,kBAAL,CAAwBx0D,OAAxB;MAEA,MAAMg1D,iBAAA,GAAoBj/D,IAAA,IAAQ;QAChC,OAAO45B,QAAA,CAAS8jC,OAAT,CAAiB9yD,GAAjB,CAAqB5K,IAArB,CAAP;MADgC,CAAlC;MAGA,MAAM;QAAEk/D,kBAAF;QAAsBC;MAAtB,IACJ,IAAAC,+CAAA,EAAiC;QAC/BH,iBAD+B;QAE/Bd,MAAA,EAAQ,KAAKpB,OAAL,CAAaoB,MAFU;QAG/BlwD,cAAA,EAAgB,KAAK0wD,eAHU;QAI/BvvD,YAAA,EAAc,KAAKsvD;MAJY,CAAjC,CADF;MAQA,KAAK5C,iBAAL,GAAyBoD,kBAAzB;MAEA,KAAKnD,cAAL,GAAsBoD,eAAA,IAAmB,KAAKpD,cAA9C;MAEA,KAAKkB,SAAL,GAAiB,IAAAoC,wCAAA,EAA0BJ,iBAA1B,CAAjB;MAIA,IAAI,CAAC,KAAKpD,qBAAN,IAA+B,KAAKC,iBAAxC,EAA2D;QACzD,KAAKh+C,MAAL,CAAY,IAAIld,oBAAJ,CAAmB,wBAAnB,CAAZ;MADyD;IA1B3C,CARpB,EAsCGyR,KAtCH,CAsCS,KAAKosD,kBAAL,CAAwBv0D,MAtCjC;IAwCA,KAAK8I,UAAL,GAAkB,IAAlB;EA9DkB;EAiEpB,IAAI6R,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK45C,kBAAL,CAAwB10D,OAA/B;EADiB;EAInB,IAAIwc,QAAJA,CAAA,EAAe;IACb,OAAO,KAAK02C,SAAZ;EADa;EAIf,IAAIj4C,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAK+2C,cAAZ;EADkB;EAIpB,IAAIh3C,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAK+2C,iBAAZ;EADqB;EAIvB,IAAIh3C,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAK+2C,qBAAZ;EADyB;EAI3B,MAAM1+C,IAANA,CAAA,EAAa;IACX,MAAM,KAAKshD,kBAAL,CAAwB10D,OAA9B;IACA,MAAM;MAAEzK,KAAF;MAAS8d;IAAT,IAAkB,MAAM,KAAKmhD,OAAL,CAAaphD,IAAb,EAA9B;IACA,IAAIC,IAAJ,EAAU;MACR,OAAO;QAAE9d,KAAF;QAAS8d;MAAT,CAAP;IADQ;IAGV,KAAKq/C,OAAL,IAAgBn9D,KAAA,CAAM0J,UAAtB;IACA,KAAKgK,UAAL,GAAkB;MAChBgB,MAAA,EAAQ,KAAKyoD,OADG;MAEhBxoD,KAAA,EAAO,KAAK8nD;IAFI,CAAlB;IAKA,OAAO;MAAEz8D,KAAA,EAAO4+D,cAAA,CAAe5+D,KAAf,CAAT;MAAgC8d,IAAA,EAAM;IAAtC,CAAP;EAZW;EAebU,OAAO1T,MAAP,EAAe;IACb,KAAKm0D,OAAL,EAAczgD,MAAd,CAAqB1T,MAArB;IACA,KAAKw0D,gBAAL,CAAsBrqD,KAAtB;EAFa;AArGU;AA4G3B,MAAM+pD,yBAAN,CAAgC;EAC9Br+D,YAAY+3D,MAAZ,EAAoBlkD,KAApB,EAA2BQ,GAA3B,EAAgC;IAC9B,KAAKyoD,OAAL,GAAe/E,MAAf;IACA,KAAKuG,OAAL,GAAe,IAAf;IACA,KAAK9B,OAAL,GAAe,CAAf;IACA,MAAMlqD,MAAA,GAASylD,MAAA,CAAOzlD,MAAtB;IACA,KAAKisD,gBAAL,GAAwBjsD,MAAA,CAAO1E,eAAP,IAA0B,KAAlD;IACA,KAAKyxD,eAAL,GAAuB,IAAIz1D,uBAAJ,EAAvB;IACA,KAAKgyD,qBAAL,GAA6B,CAACtpD,MAAA,CAAOlD,aAArC;IAEA,KAAKuvD,gBAAL,GAAwB,IAAIC,eAAJ,EAAxB;IACA,KAAKC,QAAL,GAAgBd,aAAA,CAAc,KAAKjB,OAAL,CAAanvD,WAA3B,CAAhB;IACA,KAAKkxD,QAAL,CAAczsC,MAAd,CAAqB,OAArB,EAA+B,SAAQve,KAAM,IAAGQ,GAAA,GAAM,CAAxB,EAA9B;IAEA,MAAMjW,GAAA,GAAMkU,MAAA,CAAOlU,GAAnB;IACAioB,KAAA,CACEjoB,GADF,EAEEo/D,kBAAA,CACE,KAAKqB,QADP,EAEE,KAAKN,gBAFP,EAGE,KAAKI,gBAHP,CAFF,EAQG9tD,IARH,CAQQ8oB,QAAA,IAAY;MAChB,IAAI,CAAC,IAAAmlC,qCAAA,EAAuBnlC,QAAA,CAASl5B,MAAhC,CAAL,EAA8C;QAC5C,MAAM,IAAAs+D,wCAAA,EAA0BplC,QAAA,CAASl5B,MAAnC,EAA2CrC,GAA3C,CAAN;MAD4C;MAG9C,KAAKihE,eAAL,CAAqBr1D,OAArB;MACA,KAAKs0D,OAAL,GAAe3kC,QAAA,CAAS+M,IAAT,CAAcppB,SAAd,EAAf;IALgB,CARpB,EAeGlL,KAfH,CAeS,KAAKitD,eAAL,CAAqBp1D,MAf9B;IAiBA,KAAK8I,UAAL,GAAkB,IAAlB;EA/B8B;EAkChC,IAAI8R,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAK+2C,qBAAZ;EADyB;EAI3B,MAAM1+C,IAANA,CAAA,EAAa;IACX,MAAM,KAAKmiD,eAAL,CAAqBv1D,OAA3B;IACA,MAAM;MAAEzK,KAAF;MAAS8d;IAAT,IAAkB,MAAM,KAAKmhD,OAAL,CAAaphD,IAAb,EAA9B;IACA,IAAIC,IAAJ,EAAU;MACR,OAAO;QAAE9d,KAAF;QAAS8d;MAAT,CAAP;IADQ;IAGV,KAAKq/C,OAAL,IAAgBn9D,KAAA,CAAM0J,UAAtB;IACA,KAAKgK,UAAL,GAAkB;MAAEgB,MAAA,EAAQ,KAAKyoD;IAAf,CAAlB;IAEA,OAAO;MAAEn9D,KAAA,EAAO4+D,cAAA,CAAe5+D,KAAf,CAAT;MAAgC8d,IAAA,EAAM;IAAtC,CAAP;EATW;EAYbU,OAAO1T,MAAP,EAAe;IACb,KAAKm0D,OAAL,EAAczgD,MAAd,CAAqB1T,MAArB;IACA,KAAKw0D,gBAAL,CAAsBrqD,KAAtB;EAFa;AAnDe;;;;;;;;;;;;;;;AC5MhC,IAAAnJ,KAAA,GAAAC,mBAAA;AAKA,IAAAk0D,oBAAA,GAAAl0D,mBAAA;AACA,IAAAE,cAAA,GAAAF,mBAAA;AAEA,SAAS+zD,gCAATA,CAA0C;EACxCH,iBADwC;EAExCd,MAFwC;EAGxClwD,cAHwC;EAIxCmB;AAJwC,CAA1C,EAKG;EAOD,MAAMowD,YAAA,GAAe;IACnBN,kBAAA,EAAoB,KADD;IAEnBC,eAAA,EAAiBp+D;EAFE,CAArB;EAKA,MAAMjC,MAAA,GAASgvC,QAAA,CAASmxB,iBAAA,CAAkB,gBAAlB,CAAT,EAA8C,EAA9C,CAAf;EACA,IAAI,CAACzhE,MAAA,CAAOC,SAAP,CAAiBqB,MAAjB,CAAL,EAA+B;IAC7B,OAAO0gE,YAAP;EAD6B;EAI/BA,YAAA,CAAaL,eAAb,GAA+BrgE,MAA/B;EAEA,IAAIA,MAAA,IAAU,IAAImP,cAAlB,EAAkC;IAGhC,OAAOuxD,YAAP;EAHgC;EAMlC,IAAIpwD,YAAA,IAAgB,CAAC+uD,MAArB,EAA6B;IAC3B,OAAOqB,YAAP;EAD2B;EAG7B,IAAIP,iBAAA,CAAkB,eAAlB,MAAuC,OAA3C,EAAoD;IAClD,OAAOO,YAAP;EADkD;EAIpD,MAAMC,eAAA,GAAkBR,iBAAA,CAAkB,kBAAlB,KAAyC,UAAjE;EACA,IAAIQ,eAAA,KAAoB,UAAxB,EAAoC;IAClC,OAAOD,YAAP;EADkC;EAIpCA,YAAA,CAAaN,kBAAb,GAAkC,IAAlC;EACA,OAAOM,YAAP;AAtCC;AAyCH,SAASH,yBAATA,CAAmCJ,iBAAnC,EAAsD;EACpD,MAAMS,kBAAA,GAAqBT,iBAAA,CAAkB,qBAAlB,CAA3B;EACA,IAAIS,kBAAJ,EAAwB;IACtB,IAAIn5C,QAAA,GAAW,IAAAo5C,4DAAA,EAAwCD,kBAAxC,CAAf;IACA,IAAIn5C,QAAA,CAASjjB,QAAT,CAAkB,GAAlB,CAAJ,EAA4B;MAC1B,IAAI;QACFijB,QAAA,GAAW9d,kBAAA,CAAmB8d,QAAnB,CAAX;MADE,CAAJ,CAEE,MAAM;IAHkB;IAK5B,IAAI,IAAA4lB,wBAAA,EAAU5lB,QAAV,CAAJ,EAAyB;MACvB,OAAOA,QAAP;IADuB;EAPH;EAWxB,OAAO,IAAP;AAboD;AAgBtD,SAASy4C,yBAATA,CAAmCt+D,MAAnC,EAA2CrC,GAA3C,EAAgD;EAC9C,IAAIqC,MAAA,KAAW,GAAX,IAAmBA,MAAA,KAAW,CAAX,IAAgBrC,GAAA,CAAIM,UAAJ,CAAe,OAAf,CAAvC,EAAiE;IAC/D,OAAO,IAAI6B,yBAAJ,CAAwB,kBAAkBnC,GAAlB,GAAwB,IAAhD,CAAP;EAD+D;EAGjE,OAAO,IAAIoC,iCAAJ,CACJ,+BAA8BC,MAAO,2BAA0BrC,GAAI,IAD/D,EAELqC,MAFK,CAAP;AAJ8C;AAUhD,SAASq+D,sBAATA,CAAgCr+D,MAAhC,EAAwC;EACtC,OAAOA,MAAA,KAAW,GAAX,IAAkBA,MAAA,KAAW,GAApC;AADsC;;;;;;;;;;;;AChFxC,IAAA0K,KAAA,GAAAC,mBAAA;AAeA,SAASs0D,uCAATA,CAAiDD,kBAAjD,EAAqE;EACnE,IAAIE,kBAAA,GAAqB,IAAzB;EAGA,IAAItO,GAAA,GAAMuO,aAAA,CAAc,aAAd,EAA6B,GAA7B,EAAkCvjC,IAAlC,CAAuCojC,kBAAvC,CAAV;EACA,IAAIpO,GAAJ,EAAS;IACPA,GAAA,GAAMA,GAAA,CAAI,CAAJ,CAAN;IACA,IAAI/qC,QAAA,GAAWu5C,cAAA,CAAexO,GAAf,CAAf;IACA/qC,QAAA,GAAW3d,QAAA,CAAS2d,QAAT,CAAX;IACAA,QAAA,GAAWw5C,aAAA,CAAcx5C,QAAd,CAAX;IACAA,QAAA,GAAWy5C,aAAA,CAAcz5C,QAAd,CAAX;IACA,OAAO05C,aAAA,CAAc15C,QAAd,CAAP;EANO;EAYT+qC,GAAA,GAAM4O,eAAA,CAAgBR,kBAAhB,CAAN;EACA,IAAIpO,GAAJ,EAAS;IAEP,MAAM/qC,QAAA,GAAWy5C,aAAA,CAAc1O,GAAd,CAAjB;IACA,OAAO2O,aAAA,CAAc15C,QAAd,CAAP;EAHO;EAOT+qC,GAAA,GAAMuO,aAAA,CAAc,UAAd,EAA0B,GAA1B,EAA+BvjC,IAA/B,CAAoCojC,kBAApC,CAAN;EACA,IAAIpO,GAAJ,EAAS;IACPA,GAAA,GAAMA,GAAA,CAAI,CAAJ,CAAN;IACA,IAAI/qC,QAAA,GAAWu5C,cAAA,CAAexO,GAAf,CAAf;IACA/qC,QAAA,GAAWy5C,aAAA,CAAcz5C,QAAd,CAAX;IACA,OAAO05C,aAAA,CAAc15C,QAAd,CAAP;EAJO;EAUT,SAASs5C,aAATA,CAAuBM,gBAAvB,EAAyCC,KAAzC,EAAgD;IAC9C,OAAO,IAAIxyB,MAAJ,CACL,gBACEuyB,gBADF,GAEE,WAFF,GAKE,GALF,GAME,kBANF,GAOE,GAPF,GAQE,yBARF,GASE,GAVG,EAWLC,KAXK,CAAP;EAD8C;EAehD,SAASC,UAATA,CAAoBp4D,QAApB,EAA8B3I,KAA9B,EAAqC;IACnC,IAAI2I,QAAJ,EAAc;MACZ,IAAI,CAAC,iBAAiBmkC,IAAjB,CAAsB9sC,KAAtB,CAAL,EAAmC;QACjC,OAAOA,KAAP;MADiC;MAGnC,IAAI;QACF,MAAM4I,OAAA,GAAU,IAAIC,WAAJ,CAAgBF,QAAhB,EAA0B;UAAEG,KAAA,EAAO;QAAT,CAA1B,CAAhB;QACA,MAAMxF,MAAA,GAAS,IAAAf,mBAAA,EAAcvC,KAAd,CAAf;QACAA,KAAA,GAAQ4I,OAAA,CAAQG,MAAR,CAAezF,MAAf,CAAR;QACAg9D,kBAAA,GAAqB,KAArB;MAJE,CAAJ,CAKE,MAAM;IATI;IAad,OAAOtgE,KAAP;EAdmC;EAgBrC,SAAS2gE,aAATA,CAAuB3gE,KAAvB,EAA8B;IAC5B,IAAIsgE,kBAAA,IAAsB,cAAcxzB,IAAd,CAAmB9sC,KAAnB,CAA1B,EAAqD;MAEnDA,KAAA,GAAQ+gE,UAAA,CAAW,OAAX,EAAoB/gE,KAApB,CAAR;MACA,IAAIsgE,kBAAJ,EAAwB;QAEtBtgE,KAAA,GAAQ+gE,UAAA,CAAW,YAAX,EAAyB/gE,KAAzB,CAAR;MAFsB;IAH2B;IAQrD,OAAOA,KAAP;EAT4B;EAW9B,SAAS4gE,eAATA,CAAyBI,qBAAzB,EAAgD;IAC9C,MAAMjjC,OAAA,GAAU,EAAhB;IACA,IAAIx+B,KAAJ;IAGA,MAAM0hE,IAAA,GAAOV,aAAA,CAAc,iCAAd,EAAiD,IAAjD,CAAb;IACA,OAAQ,CAAAhhE,KAAA,GAAQ0hE,IAAA,CAAKjkC,IAAL,CAAUgkC,qBAAV,CAAR,MAA8C,IAAtD,EAA4D;MAC1D,IAAI,GAAGz8D,CAAH,EAAM28D,IAAN,EAAYC,IAAZ,IAAoB5hE,KAAxB;MACAgF,CAAA,GAAIiqC,QAAA,CAASjqC,CAAT,EAAY,EAAZ,CAAJ;MACA,IAAIA,CAAA,IAAKw5B,OAAT,EAAkB;QAEhB,IAAIx5B,CAAA,KAAM,CAAV,EAAa;UACX;QADW;QAGb;MALgB;MAOlBw5B,OAAA,CAAQx5B,CAAR,IAAa,CAAC28D,IAAD,EAAOC,IAAP,CAAb;IAV0D;IAY5D,MAAMC,KAAA,GAAQ,EAAd;IACA,KAAK,IAAI78D,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIw5B,OAAA,CAAQv+B,MAA5B,EAAoC,EAAE+E,CAAtC,EAAyC;MACvC,IAAI,EAAEA,CAAA,IAAKw5B,OAAL,CAAN,EAAqB;QAEnB;MAFmB;MAIrB,IAAI,CAACmjC,IAAD,EAAOC,IAAP,IAAepjC,OAAA,CAAQx5B,CAAR,CAAnB;MACA48D,IAAA,GAAOX,cAAA,CAAeW,IAAf,CAAP;MACA,IAAID,IAAJ,EAAU;QACRC,IAAA,GAAO73D,QAAA,CAAS63D,IAAT,CAAP;QACA,IAAI58D,CAAA,KAAM,CAAV,EAAa;UACX48D,IAAA,GAAOV,aAAA,CAAcU,IAAd,CAAP;QADW;MAFL;MAMVC,KAAA,CAAM/+D,IAAN,CAAW8+D,IAAX;IAbuC;IAezC,OAAOC,KAAA,CAAM9+D,IAAN,CAAW,EAAX,CAAP;EAlC8C;EAoChD,SAASk+D,cAATA,CAAwBxgE,KAAxB,EAA+B;IAC7B,IAAIA,KAAA,CAAMX,UAAN,CAAiB,GAAjB,CAAJ,EAA2B;MACzB,MAAM+hE,KAAA,GAAQphE,KAAA,CAAM8F,KAAN,CAAY,CAAZ,EAAe+2B,KAAf,CAAqB,KAArB,CAAd;MAEA,KAAK,IAAI96B,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIq/D,KAAA,CAAM5hE,MAA1B,EAAkC,EAAEuC,CAApC,EAAuC;QACrC,MAAMs/D,SAAA,GAAYD,KAAA,CAAMr/D,CAAN,EAASs7D,OAAT,CAAiB,GAAjB,CAAlB;QACA,IAAIgE,SAAA,KAAc,CAAC,CAAnB,EAAsB;UACpBD,KAAA,CAAMr/D,CAAN,IAAWq/D,KAAA,CAAMr/D,CAAN,EAAS+D,KAAT,CAAe,CAAf,EAAkBu7D,SAAlB,CAAX;UACAD,KAAA,CAAM5hE,MAAN,GAAeuC,CAAA,GAAI,CAAnB;QAFoB;QAItBq/D,KAAA,CAAMr/D,CAAN,IAAWq/D,KAAA,CAAMr/D,CAAN,EAASoJ,UAAT,CAAoB,QAApB,EAA8B,IAA9B,CAAX;MANqC;MAQvCnL,KAAA,GAAQohE,KAAA,CAAM9+D,IAAN,CAAW,GAAX,CAAR;IAXyB;IAa3B,OAAOtC,KAAP;EAd6B;EAgB/B,SAASygE,aAATA,CAAuBa,QAAvB,EAAiC;IAE/B,MAAMC,WAAA,GAAcD,QAAA,CAASjE,OAAT,CAAiB,GAAjB,CAApB;IACA,IAAIkE,WAAA,KAAgB,CAAC,CAArB,EAAwB;MAItB,OAAOD,QAAP;IAJsB;IAMxB,MAAM34D,QAAA,GAAW24D,QAAA,CAASx7D,KAAT,CAAe,CAAf,EAAkBy7D,WAAlB,CAAjB;IACA,MAAMC,SAAA,GAAYF,QAAA,CAASx7D,KAAT,CAAey7D,WAAA,GAAc,CAA7B,CAAlB;IAEA,MAAMvhE,KAAA,GAAQwhE,SAAA,CAAU5gD,OAAV,CAAkB,SAAlB,EAA6B,EAA7B,CAAd;IACA,OAAOmgD,UAAA,CAAWp4D,QAAX,EAAqB3I,KAArB,CAAP;EAb+B;EAejC,SAAS0gE,aAATA,CAAuB1gE,KAAvB,EAA8B;IAW5B,IAAI,CAACA,KAAA,CAAMX,UAAN,CAAiB,IAAjB,CAAD,IAA2B,uBAAuBytC,IAAvB,CAA4B9sC,KAA5B,CAA/B,EAAmE;MACjE,OAAOA,KAAP;IADiE;IAUnE,OAAOA,KAAA,CAAMmL,UAAN,CACL,gDADK,EAEL,UAAU4yB,OAAV,EAAmB0jC,OAAnB,EAA4B94D,QAA5B,EAAsCiiC,IAAtC,EAA4C;MAC1C,IAAIjiC,QAAA,KAAa,GAAb,IAAoBA,QAAA,KAAa,GAArC,EAA0C;QAExCiiC,IAAA,GAAOA,IAAA,CAAKz/B,UAAL,CAAgB,GAAhB,EAAqB,GAArB,CAAP;QACAy/B,IAAA,GAAOA,IAAA,CAAKz/B,UAAL,CAAgB,oBAAhB,EAAsC,UAAU5L,KAAV,EAAiBmiE,GAAjB,EAAsB;UACjE,OAAO//D,MAAA,CAAOC,YAAP,CAAoB4sC,QAAA,CAASkzB,GAAT,EAAc,EAAd,CAApB,CAAP;QADiE,CAA5D,CAAP;QAGA,OAAOX,UAAA,CAAWU,OAAX,EAAoB72B,IAApB,CAAP;MANwC;MAQ1C,IAAI;QACFA,IAAA,GAAO8I,IAAA,CAAK9I,IAAL,CAAP;MADE,CAAJ,CAEE,MAAM;MACR,OAAOm2B,UAAA,CAAWU,OAAX,EAAoB72B,IAApB,CAAP;IAZ0C,CAFvC,CAAP;EArB4B;EAwC9B,OAAO,EAAP;AAzLmE;;;;;;;;;;;;ACfrE,IAAA9+B,KAAA,GAAAC,mBAAA;AACA,IAAAmyD,cAAA,GAAAnyD,mBAAA;AAMA;AAMA,MAAM41D,WAAA,GAAc,GAApB;AACA,MAAMC,wBAAA,GAA2B,GAAjC;AAEA,SAAShD,cAATA,CAAwBiD,GAAxB,EAA6B;EAC3B,MAAMh3D,IAAA,GAAOg3D,GAAA,CAAIvnC,QAAjB;EACA,IAAI,OAAOzvB,IAAP,KAAgB,QAApB,EAA8B;IAC5B,OAAOA,IAAP;EAD4B;EAG9B,OAAO,IAAAtI,mBAAA,EAAcsI,IAAd,EAAoBvH,MAA3B;AAL2B;AAQ7B,MAAMw+D,cAAN,CAAqB;EACnBnhE,YAAY5B,GAAZ,EAAiBo+B,IAAA,GAAO,EAAxB,EAA4B;IAC1B,KAAKp+B,GAAL,GAAWA,GAAX;IACA,KAAK8/D,MAAL,GAAc,YAAY/xB,IAAZ,CAAiB/tC,GAAjB,CAAd;IACA,KAAKuP,WAAL,GAAoB,KAAKuwD,MAAL,IAAe1hC,IAAA,CAAK7uB,WAArB,IAAqCpO,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAxD;IACA,KAAKuL,eAAL,GAAuB4uB,IAAA,CAAK5uB,eAAL,IAAwB,KAA/C;IAEA,KAAKwzD,SAAL,GAAiB,CAAjB;IACA,KAAKC,eAAL,GAAuB9hE,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAvB;EAP0B;EAU5Bi/D,aAAaztD,KAAb,EAAoBQ,GAApB,EAAyB2K,SAAzB,EAAoC;IAClC,MAAMwd,IAAA,GAAO;MACX3oB,KADW;MAEXQ;IAFW,CAAb;IAIA,WAAWjV,IAAX,IAAmB4f,SAAnB,EAA8B;MAC5Bwd,IAAA,CAAKp9B,IAAL,IAAa4f,SAAA,CAAU5f,IAAV,CAAb;IAD4B;IAG9B,OAAO,KAAK8qC,OAAL,CAAa1N,IAAb,CAAP;EARkC;EAWpC+kC,YAAYviD,SAAZ,EAAuB;IACrB,OAAO,KAAKkrB,OAAL,CAAalrB,SAAb,CAAP;EADqB;EAIvBkrB,QAAQ1N,IAAR,EAAc;IACZ,MAAM0kC,GAAA,GAAM,IAAI/2B,cAAJ,EAAZ;IACA,MAAMq3B,KAAA,GAAQ,KAAKJ,SAAL,EAAd;IACA,MAAMK,cAAA,GAAkB,KAAKJ,eAAL,CAAqBG,KAArB,IAA8B;MAAEN;IAAF,CAAtD;IAEAA,GAAA,CAAI92B,IAAJ,CAAS,KAAT,EAAgB,KAAKhsC,GAArB;IACA8iE,GAAA,CAAItzD,eAAJ,GAAsB,KAAKA,eAA3B;IACA,WAAWuxC,QAAX,IAAuB,KAAKxxC,WAA5B,EAAyC;MACvC,MAAMtO,KAAA,GAAQ,KAAKsO,WAAL,CAAiBwxC,QAAjB,CAAd;MACA,IAAI9/C,KAAA,KAAUyB,SAAd,EAAyB;QACvB;MADuB;MAGzBogE,GAAA,CAAIQ,gBAAJ,CAAqBviB,QAArB,EAA+B9/C,KAA/B;IALuC;IAOzC,IAAI,KAAK6+D,MAAL,IAAe,WAAW1hC,IAA1B,IAAkC,SAASA,IAA/C,EAAqD;MACnD0kC,GAAA,CAAIQ,gBAAJ,CAAqB,OAArB,EAA+B,SAAQllC,IAAA,CAAK3oB,KAAM,IAAG2oB,IAAA,CAAKnoB,GAAL,GAAW,CAAlC,EAA9B;MACAotD,cAAA,CAAeE,cAAf,GAAgCV,wBAAhC;IAFmD,CAArD,MAGO;MACLQ,cAAA,CAAeE,cAAf,GAAgCX,WAAhC;IADK;IAGPE,GAAA,CAAI72B,YAAJ,GAAmB,aAAnB;IAEA,IAAI7N,IAAA,CAAKolC,OAAT,EAAkB;MAChBV,GAAA,CAAI1mC,OAAJ,GAAc,UAAUtW,GAAV,EAAe;QAC3BsY,IAAA,CAAKolC,OAAL,CAAaV,GAAA,CAAIzgE,MAAjB;MAD2B,CAA7B;IADgB;IAKlBygE,GAAA,CAAI52B,kBAAJ,GAAyB,KAAKu3B,aAAL,CAAmB/7C,IAAnB,CAAwB,IAAxB,EAA8B07C,KAA9B,CAAzB;IACAN,GAAA,CAAIY,UAAJ,GAAiB,KAAK/uD,UAAL,CAAgB+S,IAAhB,CAAqB,IAArB,EAA2B07C,KAA3B,CAAjB;IAEAC,cAAA,CAAeM,iBAAf,GAAmCvlC,IAAA,CAAKulC,iBAAxC;IACAN,cAAA,CAAeO,MAAf,GAAwBxlC,IAAA,CAAKwlC,MAA7B;IACAP,cAAA,CAAeG,OAAf,GAAyBplC,IAAA,CAAKolC,OAA9B;IACAH,cAAA,CAAe1uD,UAAf,GAA4BypB,IAAA,CAAKzpB,UAAjC;IAEAmuD,GAAA,CAAI/uD,IAAJ,CAAS,IAAT;IAEA,OAAOqvD,KAAP;EArCY;EAwCdzuD,WAAWyuD,KAAX,EAAkBt9C,GAAlB,EAAuB;IACrB,MAAMu9C,cAAA,GAAiB,KAAKJ,eAAL,CAAqBG,KAArB,CAAvB;IACA,IAAI,CAACC,cAAL,EAAqB;MACnB;IADmB;IAGrBA,cAAA,CAAe1uD,UAAf,GAA4BmR,GAA5B;EALqB;EAQvB29C,cAAcL,KAAd,EAAqBt9C,GAArB,EAA0B;IACxB,MAAMu9C,cAAA,GAAiB,KAAKJ,eAAL,CAAqBG,KAArB,CAAvB;IACA,IAAI,CAACC,cAAL,EAAqB;MACnB;IADmB;IAIrB,MAAMP,GAAA,GAAMO,cAAA,CAAeP,GAA3B;IACA,IAAIA,GAAA,CAAI32B,UAAJ,IAAkB,CAAlB,IAAuBk3B,cAAA,CAAeM,iBAA1C,EAA6D;MAC3DN,cAAA,CAAeM,iBAAf;MACA,OAAON,cAAA,CAAeM,iBAAtB;IAF2D;IAK7D,IAAIb,GAAA,CAAI32B,UAAJ,KAAmB,CAAvB,EAA0B;MACxB;IADwB;IAI1B,IAAI,EAAEi3B,KAAA,IAAS,KAAKH,eAAd,CAAN,EAAsC;MAGpC;IAHoC;IAMtC,OAAO,KAAKA,eAAL,CAAqBG,KAArB,CAAP;IAGA,IAAIN,GAAA,CAAIzgE,MAAJ,KAAe,CAAf,IAAoB,KAAKy9D,MAA7B,EAAqC;MACnCuD,cAAA,CAAeG,OAAf,GAAyBV,GAAA,CAAIzgE,MAA7B;MACA;IAFmC;IAIrC,MAAMwhE,SAAA,GAAYf,GAAA,CAAIzgE,MAAJ,IAAcugE,WAAhC;IAKA,MAAMkB,4BAAA,GACJD,SAAA,KAAcjB,WAAd,IACAS,cAAA,CAAeE,cAAf,KAAkCV,wBAFpC;IAIA,IACE,CAACiB,4BAAD,IACAD,SAAA,KAAcR,cAAA,CAAeE,cAF/B,EAGE;MACAF,cAAA,CAAeG,OAAf,GAAyBV,GAAA,CAAIzgE,MAA7B;MACA;IAFA;IAKF,MAAMe,KAAA,GAAQy8D,cAAA,CAAeiD,GAAf,CAAd;IACA,IAAIe,SAAA,KAAchB,wBAAlB,EAA4C;MAC1C,MAAMkB,WAAA,GAAcjB,GAAA,CAAIlC,iBAAJ,CAAsB,eAAtB,CAApB;MACA,MAAM5hC,OAAA,GAAU,2BAA2Bf,IAA3B,CAAgC8lC,WAAhC,CAAhB;MACAV,cAAA,CAAeO,MAAf,CAAsB;QACpBnuD,KAAA,EAAOg6B,QAAA,CAASzQ,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CADa;QAEpB57B;MAFoB,CAAtB;IAH0C,CAA5C,MAOO,IAAIA,KAAJ,EAAW;MAChBigE,cAAA,CAAeO,MAAf,CAAsB;QACpBnuD,KAAA,EAAO,CADa;QAEpBrS;MAFoB,CAAtB;IADgB,CAAX,MAKA;MACLigE,cAAA,CAAeG,OAAf,GAAyBV,GAAA,CAAIzgE,MAA7B;IADK;EA3DiB;EAgE1B2hE,cAAcZ,KAAd,EAAqB;IACnB,OAAO,KAAKH,eAAL,CAAqBG,KAArB,EAA4BN,GAAnC;EADmB;EAIrBmB,iBAAiBb,KAAjB,EAAwB;IACtB,OAAOA,KAAA,IAAS,KAAKH,eAArB;EADsB;EAIxBiB,aAAad,KAAb,EAAoB;IAClB,MAAMN,GAAA,GAAM,KAAKG,eAAL,CAAqBG,KAArB,EAA4BN,GAAxC;IACA,OAAO,KAAKG,eAAL,CAAqBG,KAArB,CAAP;IACAN,GAAA,CAAI5sD,KAAJ;EAHkB;AAlJD;AA0JrB,MAAM3C,gBAAN,CAAuB;EACrB3R,YAAYsS,MAAZ,EAAoB;IAClB,KAAKiwD,OAAL,GAAejwD,MAAf;IACA,KAAKkwD,QAAL,GAAgB,IAAIrB,cAAJ,CAAmB7uD,MAAA,CAAOlU,GAA1B,EAA+B;MAC7CuP,WAAA,EAAa2E,MAAA,CAAO3E,WADyB;MAE7CC,eAAA,EAAiB0E,MAAA,CAAO1E;IAFqB,CAA/B,CAAhB;IAIA,KAAK8wD,eAAL,GAAuBpsD,MAAA,CAAOtE,cAA9B;IACA,KAAK+tD,kBAAL,GAA0B,IAA1B;IACA,KAAKoC,oBAAL,GAA4B,EAA5B;EARkB;EAWpBsE,4BAA4BxlD,MAA5B,EAAoC;IAClC,MAAM7b,CAAA,GAAI,KAAK+8D,oBAAL,CAA0BzB,OAA1B,CAAkCz/C,MAAlC,CAAV;IACA,IAAI7b,CAAA,IAAK,CAAT,EAAY;MACV,KAAK+8D,oBAAL,CAA0BziC,MAA1B,CAAiCt6B,CAAjC,EAAoC,CAApC;IADU;EAFsB;EAOpC6iB,cAAA,EAAgB;IACd,IAAAhmB,YAAA,EACE,CAAC,KAAK89D,kBADR,EAEE,yDAFF;IAIA,KAAKA,kBAAL,GAA0B,IAAI2G,iCAAJ,CACxB,KAAKF,QADmB,EAExB,KAAKD,OAFmB,CAA1B;IAIA,OAAO,KAAKxG,kBAAZ;EATc;EAYhB92C,eAAepR,KAAf,EAAsBQ,GAAtB,EAA2B;IACzB,MAAM4I,MAAA,GAAS,IAAI0lD,kCAAJ,CACb,KAAKH,QADQ,EAEb3uD,KAFa,EAGbQ,GAHa,CAAf;IAKA4I,MAAA,CAAO2lD,QAAP,GAAkB,KAAKH,2BAAL,CAAiC38C,IAAjC,CAAsC,IAAtC,CAAlB;IACA,KAAKq4C,oBAAL,CAA0Bz8D,IAA1B,CAA+Bub,MAA/B;IACA,OAAOA,MAAP;EARyB;EAW3B8G,kBAAkB5Z,MAAlB,EAA0B;IACxB,KAAK4xD,kBAAL,EAAyBl+C,MAAzB,CAAgC1T,MAAhC;IAEA,WAAW8S,MAAX,IAAqB,KAAKkhD,oBAAL,CAA0Bh5D,KAA1B,CAAgC,CAAhC,CAArB,EAAyD;MACvD8X,MAAA,CAAOY,MAAP,CAAc1T,MAAd;IADuD;EAHjC;AA1CL;AAjMvB/b,wBAAA,GAAAujB,gBAAA;AAqPA,MAAM+wD,iCAAN,CAAwC;EACtC1iE,YAAY6iE,OAAZ,EAAqBvwD,MAArB,EAA6B;IAC3B,KAAKkwD,QAAL,GAAgBK,OAAhB;IAEA,MAAMrmC,IAAA,GAAO;MACXulC,iBAAA,EAAmB,KAAKe,kBAAL,CAAwBh9C,IAAxB,CAA6B,IAA7B,CADR;MAEXk8C,MAAA,EAAQ,KAAKe,OAAL,CAAaj9C,IAAb,CAAkB,IAAlB,CAFG;MAGX87C,OAAA,EAAS,KAAKoB,QAAL,CAAcl9C,IAAd,CAAmB,IAAnB,CAHE;MAIX/S,UAAA,EAAY,KAAKmpD,WAAL,CAAiBp2C,IAAjB,CAAsB,IAAtB;IAJD,CAAb;IAMA,KAAKm9C,IAAL,GAAY3wD,MAAA,CAAOlU,GAAnB;IACA,KAAK8kE,cAAL,GAAsBL,OAAA,CAAQtB,WAAR,CAAoB/kC,IAApB,CAAtB;IACA,KAAK2mC,0BAAL,GAAkC,IAAIv5D,uBAAJ,EAAlC;IACA,KAAK60D,aAAL,GAAqBnsD,MAAA,CAAOnD,YAAP,IAAuB,KAA5C;IACA,KAAK2sD,cAAL,GAAsBxpD,MAAA,CAAOzT,MAA7B;IACA,KAAK6/D,eAAL,GAAuBpsD,MAAA,CAAOtE,cAA9B;IACA,IAAI,CAAC,KAAK0wD,eAAN,IAAyB,CAAC,KAAKD,aAAnC,EAAkD;MAChD,KAAKA,aAAL,GAAqB,IAArB;IADgD;IAIlD,KAAK7C,qBAAL,GAA6B,KAA7B;IACA,KAAKC,iBAAL,GAAyB,KAAzB;IAEA,KAAKuH,aAAL,GAAqB,EAArB;IACA,KAAKnG,SAAL,GAAiB,EAAjB;IACA,KAAKF,KAAL,GAAa,KAAb;IACA,KAAKsG,YAAL,GAAoBviE,SAApB;IACA,KAAKk8D,SAAL,GAAiB,IAAjB;IAEA,KAAKjqD,UAAL,GAAkB,IAAlB;EA5B2B;EA+B7B+vD,mBAAA,EAAqB;IACnB,MAAMQ,gBAAA,GAAmB,KAAKJ,cAA9B;IACA,MAAMK,cAAA,GAAiB,KAAKf,QAAL,CAAcJ,aAAd,CAA4BkB,gBAA5B,CAAvB;IAEA,MAAMtE,iBAAA,GAAoBj/D,IAAA,IAAQ;MAChC,OAAOwjE,cAAA,CAAevE,iBAAf,CAAiCj/D,IAAjC,CAAP;IADgC,CAAlC;IAGA,MAAM;MAAEk/D,kBAAF;MAAsBC;IAAtB,IACJ,IAAAC,+CAAA,EAAiC;MAC/BH,iBAD+B;MAE/Bd,MAAA,EAAQ,KAAKsE,QAAL,CAActE,MAFS;MAG/BlwD,cAAA,EAAgB,KAAK0wD,eAHU;MAI/BvvD,YAAA,EAAc,KAAKsvD;IAJY,CAAjC,CADF;IAQA,IAAIQ,kBAAJ,EAAwB;MACtB,KAAKpD,iBAAL,GAAyB,IAAzB;IADsB;IAIxB,KAAKC,cAAL,GAAsBoD,eAAA,IAAmB,KAAKpD,cAA9C;IAEA,KAAKkB,SAAL,GAAiB,IAAAoC,wCAAA,EAA0BJ,iBAA1B,CAAjB;IAEA,IAAI,KAAKnD,iBAAT,EAA4B;MAK1B,KAAK2G,QAAL,CAAcF,YAAd,CAA2BgB,gBAA3B;IAL0B;IAQ5B,KAAKH,0BAAL,CAAgCn5D,OAAhC;EA/BmB;EAkCrB+4D,QAAQ74D,IAAR,EAAc;IACZ,IAAIA,IAAJ,EAAU;MACR,IAAI,KAAK+yD,SAAL,CAAep+D,MAAf,GAAwB,CAA5B,EAA+B;QAC7B,MAAMs+D,iBAAA,GAAoB,KAAKF,SAAL,CAAerqB,KAAf,EAA1B;QACAuqB,iBAAA,CAAkBnzD,OAAlB,CAA0B;UAAE3K,KAAA,EAAO6K,IAAA,CAAK1I,KAAd;UAAqB2b,IAAA,EAAM;QAA3B,CAA1B;MAF6B,CAA/B,MAGO;QACL,KAAKimD,aAAL,CAAmB1hE,IAAnB,CAAwBwI,IAAA,CAAK1I,KAA7B;MADK;IAJC;IAQV,KAAKu7D,KAAL,GAAa,IAAb;IACA,IAAI,KAAKqG,aAAL,CAAmBvkE,MAAnB,GAA4B,CAAhC,EAAmC;MACjC;IADiC;IAGnC,WAAWs+D,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBnzD,OAAlB,CAA0B;QAAE3K,KAAA,EAAOyB,SAAT;QAAoBqc,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAK8/C,SAAL,CAAep+D,MAAf,GAAwB,CAAxB;EAhBY;EAmBdmkE,SAASviE,MAAT,EAAiB;IACf,KAAK4iE,YAAL,GAAoB,IAAAtE,wCAAA,EAA0Bt+D,MAA1B,EAAkC,KAAKwiE,IAAvC,CAApB;IACA,KAAKE,0BAAL,CAAgCl5D,MAAhC,CAAuC,KAAKo5D,YAA5C;IACA,WAAWlG,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBlzD,MAAlB,CAAyB,KAAKo5D,YAA9B;IAD8C;IAGhD,KAAKpG,SAAL,CAAep+D,MAAf,GAAwB,CAAxB;IACA,KAAKukE,aAAL,CAAmBvkE,MAAnB,GAA4B,CAA5B;EAPe;EAUjBq9D,YAAYh4C,GAAZ,EAAiB;IACf,KAAKnR,UAAL,GAAkB;MAChBgB,MAAA,EAAQmQ,GAAA,CAAInQ,MADI;MAEhBC,KAAA,EAAOkQ,GAAA,CAAIs/C,gBAAJ,GAAuBt/C,GAAA,CAAIlQ,KAA3B,GAAmC,KAAK8nD;IAF/B,CAAlB;EADe;EAOjB,IAAIx1C,QAAJA,CAAA,EAAe;IACb,OAAO,KAAK02C,SAAZ;EADa;EAIf,IAAIl4C,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAK+2C,iBAAZ;EADqB;EAIvB,IAAIh3C,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAK+2C,qBAAZ;EADyB;EAI3B,IAAI72C,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAK+2C,cAAZ;EADkB;EAIpB,IAAIl3C,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKu+C,0BAAL,CAAgCr5D,OAAvC;EADiB;EAInB,MAAMoT,IAANA,CAAA,EAAa;IACX,IAAI,KAAKmmD,YAAT,EAAuB;MACrB,MAAM,KAAKA,YAAX;IADqB;IAGvB,IAAI,KAAKD,aAAL,CAAmBvkE,MAAnB,GAA4B,CAAhC,EAAmC;MACjC,MAAM2C,KAAA,GAAQ,KAAK4hE,aAAL,CAAmBxwB,KAAnB,EAAd;MACA,OAAO;QAAEvzC,KAAA,EAAOmC,KAAT;QAAgB2b,IAAA,EAAM;MAAtB,CAAP;IAFiC;IAInC,IAAI,KAAK4/C,KAAT,EAAgB;MACd,OAAO;QAAE19D,KAAA,EAAOyB,SAAT;QAAoBqc,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,MAAMggD,iBAAA,GAAoB,IAAIvzD,uBAAJ,EAA1B;IACA,KAAKqzD,SAAL,CAAev7D,IAAf,CAAoBy7D,iBAApB;IACA,OAAOA,iBAAA,CAAkBrzD,OAAzB;EAbW;EAgBb+T,OAAO1T,MAAP,EAAe;IACb,KAAK4yD,KAAL,GAAa,IAAb;IACA,KAAKoG,0BAAL,CAAgCl5D,MAAhC,CAAuCE,MAAvC;IACA,WAAWgzD,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBnzD,OAAlB,CAA0B;QAAE3K,KAAA,EAAOyB,SAAT;QAAoBqc,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAK8/C,SAAL,CAAep+D,MAAf,GAAwB,CAAxB;IACA,IAAI,KAAK2jE,QAAL,CAAcH,gBAAd,CAA+B,KAAKa,cAApC,CAAJ,EAAyD;MACvD,KAAKV,QAAL,CAAcF,YAAd,CAA2B,KAAKY,cAAhC;IADuD;IAGzD,KAAKnH,kBAAL,GAA0B,IAA1B;EAVa;AA1IuB;AAyJxC,MAAM4G,kCAAN,CAAyC;EACvC3iE,YAAY6iE,OAAZ,EAAqBhvD,KAArB,EAA4BQ,GAA5B,EAAiC;IAC/B,KAAKmuD,QAAL,GAAgBK,OAAhB;IAEA,MAAMrmC,IAAA,GAAO;MACXwlC,MAAA,EAAQ,KAAKe,OAAL,CAAaj9C,IAAb,CAAkB,IAAlB,CADG;MAEX87C,OAAA,EAAS,KAAKoB,QAAL,CAAcl9C,IAAd,CAAmB,IAAnB,CAFE;MAGX/S,UAAA,EAAY,KAAKmpD,WAAL,CAAiBp2C,IAAjB,CAAsB,IAAtB;IAHD,CAAb;IAKA,KAAKm9C,IAAL,GAAYJ,OAAA,CAAQzkE,GAApB;IACA,KAAKqlE,UAAL,GAAkBZ,OAAA,CAAQvB,YAAR,CAAqBztD,KAArB,EAA4BQ,GAA5B,EAAiCmoB,IAAjC,CAAlB;IACA,KAAKygC,SAAL,GAAiB,EAAjB;IACA,KAAKI,YAAL,GAAoB,IAApB;IACA,KAAKN,KAAL,GAAa,KAAb;IACA,KAAKsG,YAAL,GAAoBviE,SAApB;IAEA,KAAKiS,UAAL,GAAkB,IAAlB;IACA,KAAK6vD,QAAL,GAAgB,IAAhB;EAhB+B;EAmBjCc,OAAA,EAAS;IACP,KAAKd,QAAL,GAAgB,IAAhB;EADO;EAITG,QAAQ74D,IAAR,EAAc;IACZ,MAAM1I,KAAA,GAAQ0I,IAAA,CAAK1I,KAAnB;IACA,IAAI,KAAKy7D,SAAL,CAAep+D,MAAf,GAAwB,CAA5B,EAA+B;MAC7B,MAAMs+D,iBAAA,GAAoB,KAAKF,SAAL,CAAerqB,KAAf,EAA1B;MACAuqB,iBAAA,CAAkBnzD,OAAlB,CAA0B;QAAE3K,KAAA,EAAOmC,KAAT;QAAgB2b,IAAA,EAAM;MAAtB,CAA1B;IAF6B,CAA/B,MAGO;MACL,KAAKkgD,YAAL,GAAoB77D,KAApB;IADK;IAGP,KAAKu7D,KAAL,GAAa,IAAb;IACA,WAAWI,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBnzD,OAAlB,CAA0B;QAAE3K,KAAA,EAAOyB,SAAT;QAAoBqc,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAK8/C,SAAL,CAAep+D,MAAf,GAAwB,CAAxB;IACA,KAAK6kE,MAAL;EAbY;EAgBdV,SAASviE,MAAT,EAAiB;IACf,KAAK4iE,YAAL,GAAoB,IAAAtE,wCAAA,EAA0Bt+D,MAA1B,EAAkC,KAAKwiE,IAAvC,CAApB;IACA,WAAW9F,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBlzD,MAAlB,CAAyB,KAAKo5D,YAA9B;IAD8C;IAGhD,KAAKpG,SAAL,CAAep+D,MAAf,GAAwB,CAAxB;IACA,KAAKw+D,YAAL,GAAoB,IAApB;EANe;EASjBnB,YAAYh4C,GAAZ,EAAiB;IACf,IAAI,CAAC,KAAKW,oBAAV,EAAgC;MAC9B,KAAK9R,UAAL,GAAkB;QAAEgB,MAAA,EAAQmQ,GAAA,CAAInQ;MAAd,CAAlB;IAD8B;EADjB;EAMjB,IAAI8Q,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAP;EADyB;EAI3B,MAAM3H,IAANA,CAAA,EAAa;IACX,IAAI,KAAKmmD,YAAT,EAAuB;MACrB,MAAM,KAAKA,YAAX;IADqB;IAGvB,IAAI,KAAKhG,YAAL,KAAsB,IAA1B,EAAgC;MAC9B,MAAM77D,KAAA,GAAQ,KAAK67D,YAAnB;MACA,KAAKA,YAAL,GAAoB,IAApB;MACA,OAAO;QAAEh+D,KAAA,EAAOmC,KAAT;QAAgB2b,IAAA,EAAM;MAAtB,CAAP;IAH8B;IAKhC,IAAI,KAAK4/C,KAAT,EAAgB;MACd,OAAO;QAAE19D,KAAA,EAAOyB,SAAT;QAAoBqc,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,MAAMggD,iBAAA,GAAoB,IAAIvzD,uBAAJ,EAA1B;IACA,KAAKqzD,SAAL,CAAev7D,IAAf,CAAoBy7D,iBAApB;IACA,OAAOA,iBAAA,CAAkBrzD,OAAzB;EAdW;EAiBb+T,OAAO1T,MAAP,EAAe;IACb,KAAK4yD,KAAL,GAAa,IAAb;IACA,WAAWI,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBnzD,OAAlB,CAA0B;QAAE3K,KAAA,EAAOyB,SAAT;QAAoBqc,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAK8/C,SAAL,CAAep+D,MAAf,GAAwB,CAAxB;IACA,IAAI,KAAK2jE,QAAL,CAAcH,gBAAd,CAA+B,KAAKoB,UAApC,CAAJ,EAAqD;MACnD,KAAKjB,QAAL,CAAcF,YAAd,CAA2B,KAAKmB,UAAhC;IADmD;IAGrD,KAAKC,MAAL;EATa;AA5EwB;;;;;;;;;;;;AC9XzC,IAAAv4D,KAAA,GAAAC,mBAAA;AAMA,IAAAmyD,cAAA,GAAAnyD,mBAAA;AAKA;AAMA,MAAMu4D,YAAA,GAAe,yBAArB;AAEA,SAASC,QAATA,CAAkBC,SAAlB,EAA6B;EAC3B,MAAMzlE,GAAA,GAAM0hB,OAAA,CAAwB,KAAxB,CAAZ;EACA,MAAMgkD,SAAA,GAAY1lE,GAAA,CAAIqkC,KAAJ,CAAUohC,SAAV,CAAlB;EACA,IAAIC,SAAA,CAAUzlE,QAAV,KAAuB,OAAvB,IAAkCylE,SAAA,CAAUC,IAAhD,EAAsD;IACpD,OAAOD,SAAP;EADoD;EAItD,IAAI,gBAAgB33B,IAAhB,CAAqB03B,SAArB,CAAJ,EAAqC;IACnC,OAAOzlE,GAAA,CAAIqkC,KAAJ,CAAW,WAAUohC,SAAX,EAAV,CAAP;EADmC;EAIrC,IAAI,CAACC,SAAA,CAAUC,IAAf,EAAqB;IACnBD,SAAA,CAAUzlE,QAAV,GAAqB,OAArB;EADmB;EAGrB,OAAOylE,SAAP;AAd2B;AAiB7B,MAAMryD,aAAN,CAAoB;EAClBzR,YAAYsS,MAAZ,EAAoB;IAClB,KAAKA,MAAL,GAAcA,MAAd;IACA,KAAKlU,GAAL,GAAWwlE,QAAA,CAAStxD,MAAA,CAAOlU,GAAhB,CAAX;IACA,KAAK8/D,MAAL,GACE,KAAK9/D,GAAL,CAASC,QAAT,KAAsB,OAAtB,IAAiC,KAAKD,GAAL,CAASC,QAAT,KAAsB,QADzD;IAGA,KAAK2lE,OAAL,GAAe,KAAK5lE,GAAL,CAASC,QAAT,KAAsB,OAArC;IACA,KAAKsP,WAAL,GAAoB,KAAKuwD,MAAL,IAAe5rD,MAAA,CAAO3E,WAAvB,IAAuC,EAA1D;IAEA,KAAKouD,kBAAL,GAA0B,IAA1B;IACA,KAAKoC,oBAAL,GAA4B,EAA5B;EAVkB;EAapB,IAAI5B,sBAAJA,CAAA,EAA6B;IAC3B,OAAO,KAAKR,kBAAL,EAAyBS,OAAzB,IAAoC,CAA3C;EAD2B;EAI7Bv4C,cAAA,EAAgB;IACd,IAAAhmB,YAAA,EACE,CAAC,KAAK89D,kBADR,EAEE,sDAFF;IAIA,KAAKA,kBAAL,GAA0B,KAAKiI,OAAL,GACtB,IAAIC,yBAAJ,CAA8B,IAA9B,CADsB,GAEtB,IAAIC,uBAAJ,CAA4B,IAA5B,CAFJ;IAGA,OAAO,KAAKnI,kBAAZ;EARc;EAWhB92C,eAAe+iB,KAAf,EAAsB3zB,GAAtB,EAA2B;IACzB,IAAIA,GAAA,IAAO,KAAKkoD,sBAAhB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,MAAMv3C,WAAA,GAAc,KAAKg/C,OAAL,GAChB,IAAIG,0BAAJ,CAA+B,IAA/B,EAAqCn8B,KAArC,EAA4C3zB,GAA5C,CADgB,GAEhB,IAAI+vD,wBAAJ,CAA6B,IAA7B,EAAmCp8B,KAAnC,EAA0C3zB,GAA1C,CAFJ;IAGA,KAAK8pD,oBAAL,CAA0Bz8D,IAA1B,CAA+BsjB,WAA/B;IACA,OAAOA,WAAP;EARyB;EAW3BjB,kBAAkB5Z,MAAlB,EAA0B;IACxB,KAAK4xD,kBAAL,EAAyBl+C,MAAzB,CAAgC1T,MAAhC;IAEA,WAAW8S,MAAX,IAAqB,KAAKkhD,oBAAL,CAA0Bh5D,KAA1B,CAAgC,CAAhC,CAArB,EAAyD;MACvD8X,MAAA,CAAOY,MAAP,CAAc1T,MAAd;IADuD;EAHjC;AAxCR;AApDpB/b,qBAAA,GAAAqjB,aAAA;AAqGA,MAAM4yD,cAAN,CAAqB;EACnBrkE,YAAY+3D,MAAZ,EAAoB;IAClB,KAAKkL,IAAL,GAAYlL,MAAA,CAAO35D,GAAnB;IACA,KAAK2+D,KAAL,GAAa,KAAb;IACA,KAAKsG,YAAL,GAAoB,IAApB;IACA,KAAKtwD,UAAL,GAAkB,IAAlB;IACA,MAAMT,MAAA,GAASylD,MAAA,CAAOzlD,MAAtB;IACA,KAAKwpD,cAAL,GAAsBxpD,MAAA,CAAOzT,MAA7B;IACA,KAAK29D,OAAL,GAAe,CAAf;IACA,KAAKQ,SAAL,GAAiB,IAAjB;IAEA,KAAKyB,aAAL,GAAqBnsD,MAAA,CAAOnD,YAAP,IAAuB,KAA5C;IACA,KAAKuvD,eAAL,GAAuBpsD,MAAA,CAAOtE,cAA9B;IACA,IAAI,CAAC,KAAK0wD,eAAN,IAAyB,CAAC,KAAKD,aAAnC,EAAkD;MAChD,KAAKA,aAAL,GAAqB,IAArB;IADgD;IAIlD,KAAK7C,qBAAL,GAA6B,CAACtpD,MAAA,CAAOlD,aAArC;IACA,KAAKysD,iBAAL,GAAyB,CAACvpD,MAAA,CAAOnD,YAAjC;IAEA,KAAKm1D,eAAL,GAAuB,IAAvB;IACA,KAAKjF,eAAL,GAAuB,IAAIz1D,uBAAJ,EAAvB;IACA,KAAK40D,kBAAL,GAA0B,IAAI50D,uBAAJ,EAA1B;EArBkB;EAwBpB,IAAIgb,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK45C,kBAAL,CAAwB10D,OAA/B;EADiB;EAInB,IAAIwc,QAAJA,CAAA,EAAe;IACb,OAAO,KAAK02C,SAAZ;EADa;EAIf,IAAIj4C,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAK+2C,cAAZ;EADkB;EAIpB,IAAIh3C,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAK+2C,iBAAZ;EADqB;EAIvB,IAAIh3C,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAK+2C,qBAAZ;EADyB;EAI3B,MAAM1+C,IAANA,CAAA,EAAa;IACX,MAAM,KAAKmiD,eAAL,CAAqBv1D,OAA3B;IACA,IAAI,KAAKizD,KAAT,EAAgB;MACd,OAAO;QAAE19D,KAAA,EAAOyB,SAAT;QAAoBqc,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,IAAI,KAAKkmD,YAAT,EAAuB;MACrB,MAAM,KAAKA,YAAX;IADqB;IAIvB,MAAM7hE,KAAA,GAAQ,KAAK8iE,eAAL,CAAqBpnD,IAArB,EAAd;IACA,IAAI1b,KAAA,KAAU,IAAd,EAAoB;MAClB,KAAK69D,eAAL,GAAuB,IAAIz1D,uBAAJ,EAAvB;MACA,OAAO,KAAKsT,IAAL,EAAP;IAFkB;IAIpB,KAAKs/C,OAAL,IAAgBh7D,KAAA,CAAM3C,MAAtB;IACA,KAAKkU,UAAL,GAAkB;MAChBgB,MAAA,EAAQ,KAAKyoD,OADG;MAEhBxoD,KAAA,EAAO,KAAK8nD;IAFI,CAAlB;IAMA,MAAMn5D,MAAA,GAAS,IAAIb,UAAJ,CAAeN,KAAf,EAAsBmB,MAArC;IACA,OAAO;MAAEtD,KAAA,EAAOsD,MAAT;MAAiBwa,IAAA,EAAM;IAAvB,CAAP;EAtBW;EAyBbU,OAAO1T,MAAP,EAAe;IAGb,IAAI,CAAC,KAAKm6D,eAAV,EAA2B;MACzB,KAAKC,MAAL,CAAYp6D,MAAZ;MACA;IAFyB;IAI3B,KAAKm6D,eAAL,CAAqBtxD,OAArB,CAA6B7I,MAA7B;EAPa;EAUfo6D,OAAOp6D,MAAP,EAAe;IACb,KAAKk5D,YAAL,GAAoBl5D,MAApB;IACA,KAAKk1D,eAAL,CAAqBr1D,OAArB;EAFa;EAKfw6D,mBAAmBznD,cAAnB,EAAmC;IACjC,KAAKunD,eAAL,GAAuBvnD,cAAvB;IACAA,cAAA,CAAeoE,EAAf,CAAkB,UAAlB,EAA8B,MAAM;MAClC,KAAKk+C,eAAL,CAAqBr1D,OAArB;IADkC,CAApC;IAIA+S,cAAA,CAAeoE,EAAf,CAAkB,KAAlB,EAAyB,MAAM;MAE7BpE,cAAA,CAAe/J,OAAf;MACA,KAAK+pD,KAAL,GAAa,IAAb;MACA,KAAKsC,eAAL,CAAqBr1D,OAArB;IAJ6B,CAA/B;IAOA+S,cAAA,CAAeoE,EAAf,CAAkB,OAAlB,EAA2BhX,MAAA,IAAU;MACnC,KAAKo6D,MAAL,CAAYp6D,MAAZ;IADmC,CAArC;IAMA,IAAI,CAAC,KAAKyxD,qBAAN,IAA+B,KAAKC,iBAAxC,EAA2D;MACzD,KAAK0I,MAAL,CAAY,IAAI5jE,oBAAJ,CAAmB,uBAAnB,CAAZ;IADyD;IAK3D,IAAI,KAAK0iE,YAAT,EAAuB;MACrB,KAAKiB,eAAL,CAAqBtxD,OAArB,CAA6B,KAAKqwD,YAAlC;IADqB;EAxBU;AArFhB;AAmHrB,MAAMoB,eAAN,CAAsB;EACpBzkE,YAAY+3D,MAAZ,EAAoB;IAClB,KAAKkL,IAAL,GAAYlL,MAAA,CAAO35D,GAAnB;IACA,KAAK2+D,KAAL,GAAa,KAAb;IACA,KAAKsG,YAAL,GAAoB,IAApB;IACA,KAAKtwD,UAAL,GAAkB,IAAlB;IACA,KAAKypD,OAAL,GAAe,CAAf;IACA,KAAK8H,eAAL,GAAuB,IAAvB;IACA,KAAKjF,eAAL,GAAuB,IAAIz1D,uBAAJ,EAAvB;IACA,MAAM0I,MAAA,GAASylD,MAAA,CAAOzlD,MAAtB;IACA,KAAKspD,qBAAL,GAA6B,CAACtpD,MAAA,CAAOlD,aAArC;EATkB;EAYpB,IAAIyV,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAK+2C,qBAAZ;EADyB;EAI3B,MAAM1+C,IAANA,CAAA,EAAa;IACX,MAAM,KAAKmiD,eAAL,CAAqBv1D,OAA3B;IACA,IAAI,KAAKizD,KAAT,EAAgB;MACd,OAAO;QAAE19D,KAAA,EAAOyB,SAAT;QAAoBqc,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,IAAI,KAAKkmD,YAAT,EAAuB;MACrB,MAAM,KAAKA,YAAX;IADqB;IAIvB,MAAM7hE,KAAA,GAAQ,KAAK8iE,eAAL,CAAqBpnD,IAArB,EAAd;IACA,IAAI1b,KAAA,KAAU,IAAd,EAAoB;MAClB,KAAK69D,eAAL,GAAuB,IAAIz1D,uBAAJ,EAAvB;MACA,OAAO,KAAKsT,IAAL,EAAP;IAFkB;IAIpB,KAAKs/C,OAAL,IAAgBh7D,KAAA,CAAM3C,MAAtB;IACA,KAAKkU,UAAL,GAAkB;MAAEgB,MAAA,EAAQ,KAAKyoD;IAAf,CAAlB;IAGA,MAAM75D,MAAA,GAAS,IAAIb,UAAJ,CAAeN,KAAf,EAAsBmB,MAArC;IACA,OAAO;MAAEtD,KAAA,EAAOsD,MAAT;MAAiBwa,IAAA,EAAM;IAAvB,CAAP;EAnBW;EAsBbU,OAAO1T,MAAP,EAAe;IAGb,IAAI,CAAC,KAAKm6D,eAAV,EAA2B;MACzB,KAAKC,MAAL,CAAYp6D,MAAZ;MACA;IAFyB;IAI3B,KAAKm6D,eAAL,CAAqBtxD,OAArB,CAA6B7I,MAA7B;EAPa;EAUfo6D,OAAOp6D,MAAP,EAAe;IACb,KAAKk5D,YAAL,GAAoBl5D,MAApB;IACA,KAAKk1D,eAAL,CAAqBr1D,OAArB;EAFa;EAKfw6D,mBAAmBznD,cAAnB,EAAmC;IACjC,KAAKunD,eAAL,GAAuBvnD,cAAvB;IACAA,cAAA,CAAeoE,EAAf,CAAkB,UAAlB,EAA8B,MAAM;MAClC,KAAKk+C,eAAL,CAAqBr1D,OAArB;IADkC,CAApC;IAIA+S,cAAA,CAAeoE,EAAf,CAAkB,KAAlB,EAAyB,MAAM;MAE7BpE,cAAA,CAAe/J,OAAf;MACA,KAAK+pD,KAAL,GAAa,IAAb;MACA,KAAKsC,eAAL,CAAqBr1D,OAArB;IAJ6B,CAA/B;IAOA+S,cAAA,CAAeoE,EAAf,CAAkB,OAAlB,EAA2BhX,MAAA,IAAU;MACnC,KAAKo6D,MAAL,CAAYp6D,MAAZ;IADmC,CAArC;IAKA,IAAI,KAAKk5D,YAAT,EAAuB;MACrB,KAAKiB,eAAL,CAAqBtxD,OAArB,CAA6B,KAAKqwD,YAAlC;IADqB;EAlBU;AAtDf;AA8EtB,SAASqB,oBAATA,CAA8BZ,SAA9B,EAAyCrG,OAAzC,EAAkD;EAChD,OAAO;IACLp/D,QAAA,EAAUylE,SAAA,CAAUzlE,QADf;IAELsmE,IAAA,EAAMb,SAAA,CAAUa,IAFX;IAGLZ,IAAA,EAAMD,SAAA,CAAUc,QAHX;IAILx0D,IAAA,EAAM0zD,SAAA,CAAU1zD,IAJX;IAKLgqC,IAAA,EAAM0pB,SAAA,CAAU1pB,IALX;IAMLujB,MAAA,EAAQ,KANH;IAOLF;EAPK,CAAP;AADgD;AAYlD,MAAMyG,uBAAN,SAAsCG,cAAtC,CAAqD;EACnDrkE,YAAY+3D,MAAZ,EAAoB;IAClB,MAAMA,MAAN;IAEA,MAAM8M,cAAA,GAAiBlrC,QAAA,IAAY;MACjC,IAAIA,QAAA,CAASmrC,UAAT,KAAwB,GAA5B,EAAiC;QAC/B,MAAMhqD,KAAA,GAAQ,IAAIva,yBAAJ,CAAyB,gBAAe,KAAK0iE,IAAK,IAAlD,CAAd;QACA,KAAKI,YAAL,GAAoBvoD,KAApB;QACA,KAAK0jD,kBAAL,CAAwBv0D,MAAxB,CAA+B6Q,KAA/B;QACA;MAJ+B;MAMjC,KAAK0jD,kBAAL,CAAwBx0D,OAAxB;MACA,KAAKw6D,kBAAL,CAAwB7qC,QAAxB;MAEA,MAAMqlC,iBAAA,GAAoBj/D,IAAA,IAAQ;QAGhC,OAAO,KAAKukE,eAAL,CAAqB7G,OAArB,CAA6B19D,IAAA,CAAKksC,WAAL,EAA7B,CAAP;MAHgC,CAAlC;MAKA,MAAM;QAAEgzB,kBAAF;QAAsBC;MAAtB,IACJ,IAAAC,+CAAA,EAAiC;QAC/BH,iBAD+B;QAE/Bd,MAAA,EAAQnG,MAAA,CAAOmG,MAFgB;QAG/BlwD,cAAA,EAAgB,KAAK0wD,eAHU;QAI/BvvD,YAAA,EAAc,KAAKsvD;MAJY,CAAjC,CADF;MAQA,KAAK5C,iBAAL,GAAyBoD,kBAAzB;MAEA,KAAKnD,cAAL,GAAsBoD,eAAA,IAAmB,KAAKpD,cAA9C;MAEA,KAAKkB,SAAL,GAAiB,IAAAoC,wCAAA,EAA0BJ,iBAA1B,CAAjB;IA3BiC,CAAnC;IA8BA,KAAK+F,QAAL,GAAgB,IAAhB;IACA,IAAI,KAAK9B,IAAL,CAAU5kE,QAAV,KAAuB,OAA3B,EAAoC;MAClC,MAAM2mE,IAAA,GAAOllD,OAAA,CAAwB,MAAxB,CAAb;MACA,KAAKilD,QAAL,GAAgBC,IAAA,CAAK96B,OAAL,CACdw6B,oBAAA,CAAqB,KAAKzB,IAA1B,EAAgClL,MAAA,CAAOpqD,WAAvC,CADc,EAEdk3D,cAFc,CAAhB;IAFkC,CAApC,MAMO;MACL,MAAMI,KAAA,GAAQnlD,OAAA,CAAwB,OAAxB,CAAd;MACA,KAAKilD,QAAL,GAAgBE,KAAA,CAAM/6B,OAAN,CACdw6B,oBAAA,CAAqB,KAAKzB,IAA1B,EAAgClL,MAAA,CAAOpqD,WAAvC,CADc,EAEdk3D,cAFc,CAAhB;IAFK;IAQP,KAAKE,QAAL,CAAc5jD,EAAd,CAAiB,OAAjB,EAA0BhX,MAAA,IAAU;MAClC,KAAKk5D,YAAL,GAAoBl5D,MAApB;MACA,KAAKq0D,kBAAL,CAAwBv0D,MAAxB,CAA+BE,MAA/B;IAFkC,CAApC;IAOA,KAAK46D,QAAL,CAAc1wD,GAAd;EAvDkB;AAD+B;AA4DrD,MAAM+vD,wBAAN,SAAuCK,eAAvC,CAAuD;EACrDzkE,YAAY+3D,MAAZ,EAAoB/vB,KAApB,EAA2B3zB,GAA3B,EAAgC;IAC9B,MAAM0jD,MAAN;IAEA,KAAKmN,YAAL,GAAoB,EAApB;IACA,WAAW/lB,QAAX,IAAuB4Y,MAAA,CAAOpqD,WAA9B,EAA2C;MACzC,MAAMtO,KAAA,GAAQ04D,MAAA,CAAOpqD,WAAP,CAAmBwxC,QAAnB,CAAd;MACA,IAAI9/C,KAAA,KAAUyB,SAAd,EAAyB;QACvB;MADuB;MAGzB,KAAKokE,YAAL,CAAkB/lB,QAAlB,IAA8B9/C,KAA9B;IALyC;IAO3C,KAAK6lE,YAAL,CAAkBC,KAAlB,GAA2B,SAAQn9B,KAAM,IAAG3zB,GAAA,GAAM,CAAxB,EAA1B;IAEA,MAAMwwD,cAAA,GAAiBlrC,QAAA,IAAY;MACjC,IAAIA,QAAA,CAASmrC,UAAT,KAAwB,GAA5B,EAAiC;QAC/B,MAAMhqD,KAAA,GAAQ,IAAIva,yBAAJ,CAAyB,gBAAe,KAAK0iE,IAAK,IAAlD,CAAd;QACA,KAAKI,YAAL,GAAoBvoD,KAApB;QACA;MAH+B;MAKjC,KAAK0pD,kBAAL,CAAwB7qC,QAAxB;IANiC,CAAnC;IASA,KAAKorC,QAAL,GAAgB,IAAhB;IACA,IAAI,KAAK9B,IAAL,CAAU5kE,QAAV,KAAuB,OAA3B,EAAoC;MAClC,MAAM2mE,IAAA,GAAOllD,OAAA,CAAwB,MAAxB,CAAb;MACA,KAAKilD,QAAL,GAAgBC,IAAA,CAAK96B,OAAL,CACdw6B,oBAAA,CAAqB,KAAKzB,IAA1B,EAAgC,KAAKiC,YAArC,CADc,EAEdL,cAFc,CAAhB;IAFkC,CAApC,MAMO;MACL,MAAMI,KAAA,GAAQnlD,OAAA,CAAwB,OAAxB,CAAd;MACA,KAAKilD,QAAL,GAAgBE,KAAA,CAAM/6B,OAAN,CACdw6B,oBAAA,CAAqB,KAAKzB,IAA1B,EAAgC,KAAKiC,YAArC,CADc,EAEdL,cAFc,CAAhB;IAFK;IAQP,KAAKE,QAAL,CAAc5jD,EAAd,CAAiB,OAAjB,EAA0BhX,MAAA,IAAU;MAClC,KAAKk5D,YAAL,GAAoBl5D,MAApB;IADkC,CAApC;IAGA,KAAK46D,QAAL,CAAc1wD,GAAd;EAxC8B;AADqB;AA6CvD,MAAM4vD,yBAAN,SAAwCI,cAAxC,CAAuD;EACrDrkE,YAAY+3D,MAAZ,EAAoB;IAClB,MAAMA,MAAN;IAEA,IAAI3d,IAAA,GAAO5xC,kBAAA,CAAmB,KAAKy6D,IAAL,CAAU7oB,IAA7B,CAAX;IAGA,IAAIupB,YAAA,CAAax3B,IAAb,CAAkB,KAAK82B,IAAL,CAAUxwD,IAA5B,CAAJ,EAAuC;MACrC2nC,IAAA,GAAOA,IAAA,CAAKn6B,OAAL,CAAa,KAAb,EAAoB,EAApB,CAAP;IADqC;IAIvC,MAAM60B,EAAA,GAAKh1B,OAAA,CAAwB,IAAxB,CAAX;IACAg1B,EAAA,CAAGswB,KAAH,CAAShrB,IAAT,EAAe,CAACt/B,KAAD,EAAQuqD,IAAR,KAAiB;MAC9B,IAAIvqD,KAAJ,EAAW;QACT,IAAIA,KAAA,CAAM3a,IAAN,KAAe,QAAnB,EAA6B;UAC3B2a,KAAA,GAAQ,IAAIva,yBAAJ,CAAyB,gBAAe65C,IAAK,IAA7C,CAAR;QAD2B;QAG7B,KAAKipB,YAAL,GAAoBvoD,KAApB;QACA,KAAK0jD,kBAAL,CAAwBv0D,MAAxB,CAA+B6Q,KAA/B;QACA;MANS;MASX,KAAKghD,cAAL,GAAsBuJ,IAAA,CAAK5oD,IAA3B;MAEA,KAAK+nD,kBAAL,CAAwB1vB,EAAA,CAAGwwB,gBAAH,CAAoBlrB,IAApB,CAAxB;MACA,KAAKokB,kBAAL,CAAwBx0D,OAAxB;IAb8B,CAAhC;EAXkB;AADiC;AA8BvD,MAAMm6D,0BAAN,SAAyCM,eAAzC,CAAyD;EACvDzkE,YAAY+3D,MAAZ,EAAoB/vB,KAApB,EAA2B3zB,GAA3B,EAAgC;IAC9B,MAAM0jD,MAAN;IAEA,IAAI3d,IAAA,GAAO5xC,kBAAA,CAAmB,KAAKy6D,IAAL,CAAU7oB,IAA7B,CAAX;IAGA,IAAIupB,YAAA,CAAax3B,IAAb,CAAkB,KAAK82B,IAAL,CAAUxwD,IAA5B,CAAJ,EAAuC;MACrC2nC,IAAA,GAAOA,IAAA,CAAKn6B,OAAL,CAAa,KAAb,EAAoB,EAApB,CAAP;IADqC;IAIvC,MAAM60B,EAAA,GAAKh1B,OAAA,CAAwB,IAAxB,CAAX;IACA,KAAK0kD,kBAAL,CAAwB1vB,EAAA,CAAGwwB,gBAAH,CAAoBlrB,IAApB,EAA0B;MAAEpS,KAAF;MAAS3zB,GAAA,EAAKA,GAAA,GAAM;IAApB,CAA1B,CAAxB;EAX8B;AADuB;;;;;;;;;;;;ACzazD,IAAA/I,cAAA,GAAAF,mBAAA;AACA,IAAAD,KAAA,GAAAC,mBAAA;AAWA;AAMA,MAAMm6D,YAAA,GAAe;EACnBC,SAAA,EAAW,QADQ;EAEnBlxB,UAAA,EAAY,QAFO;EAGnBkH,SAAA,EAAW;AAHQ,CAArB;AAKA,MAAMiqB,MAAA,GAAS,sCAAf;AACA,MAAMC,QAAA,GAAW,8BAAjB;AACA,MAAMrjB,eAAA,GAAkB,CAAC,MAAD,EAAS,OAAT,EAAkB,QAAlB,CAAxB;AACA,MAAMC,gBAAA,GAAmB,CAAC,OAAD,EAAU,OAAV,EAAmB,OAAnB,CAAzB;AAEA,MAAM7hC,eAAA,GAAkB,SAAAA,CACtBvW,IADsB,EAEtBy7D,WAAA,GAAc,EAFQ,EAGtBC,eAAA,GAAkB,KAHI,EAItB;EACA,IAAI3mE,GAAA,CAAIwhB,eAAJ,IAAuB,OAAOC,IAAP,KAAgB,WAAvC,IAAsD,CAACklD,eAA3D,EAA4E;IAC1E,OAAO3mE,GAAA,CAAIwhB,eAAJ,CAAoB,IAAIC,IAAJ,CAAS,CAACxW,IAAD,CAAT,EAAiB;MAAE/b,IAAA,EAAMw3E;IAAR,CAAjB,CAApB,CAAP;EAD0E;EAI5E,MAAME,MAAA,GACJ,mEADF;EAGA,IAAIljE,MAAA,GAAU,QAAOgjE,WAAY,UAAjC;EACA,KAAK,IAAIvkE,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAK4B,IAAA,CAAKrL,MAArB,EAA6BuC,CAAA,GAAIkH,EAAtC,EAA0ClH,CAAA,IAAK,CAA/C,EAAkD;IAChD,MAAM0kE,EAAA,GAAK57D,IAAA,CAAK9I,CAAL,IAAU,IAArB;IACA,MAAM2kE,EAAA,GAAK77D,IAAA,CAAK9I,CAAA,GAAI,CAAT,IAAc,IAAzB;IACA,MAAM4kE,EAAA,GAAK97D,IAAA,CAAK9I,CAAA,GAAI,CAAT,IAAc,IAAzB;IACA,MAAM6kE,EAAA,GAAKH,EAAA,IAAM,CAAjB;MACEI,EAAA,GAAO,CAAAJ,EAAA,GAAK,CAAL,KAAW,CAAb,GAAmBC,EAAA,IAAM,CADhC;IAEA,MAAMI,EAAA,GAAK/kE,CAAA,GAAI,CAAJ,GAAQkH,EAAR,GAAe,CAAAy9D,EAAA,GAAK,GAAL,KAAa,CAAf,GAAqBC,EAAA,IAAM,CAAxC,GAA6C,EAAxD;IACA,MAAMI,EAAA,GAAKhlE,CAAA,GAAI,CAAJ,GAAQkH,EAAR,GAAa09D,EAAA,GAAK,IAAlB,GAAyB,EAApC;IACArjE,MAAA,IAAUkjE,MAAA,CAAOI,EAAP,IAAaJ,MAAA,CAAOK,EAAP,CAAb,GAA0BL,MAAA,CAAOM,EAAP,CAA1B,GAAuCN,MAAA,CAAOO,EAAP,CAAjD;EARgD;EAUlD,OAAOzjE,MAAP;AAnBA,CAJF;AA0BA,MAAM0jE,mBAAA,GAAuB,YAAY;EACvC,MAAMC,UAAA,GAAa,IAAIxkE,UAAJ,CAAe,CAChC,IADgC,EAC1B,IAD0B,EACpB,IADoB,EACd,IADc,EACR,IADQ,EACF,IADE,EACI,IADJ,EACU,IADV,CAAf,CAAnB;EAGA,MAAMykE,kBAAA,GAAqB,EAA3B;EAEA,MAAMC,QAAA,GAAW,IAAIrsB,UAAJ,CAAe,GAAf,CAAjB;EACA,KAAK,IAAI/4C,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,GAApB,EAAyBA,CAAA,EAAzB,EAA8B;IAC5B,IAAIuE,CAAA,GAAIvE,CAAR;IACA,KAAK,IAAIuzB,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,CAApB,EAAuBA,CAAA,EAAvB,EAA4B;MAC1BhvB,CAAA,GAAIA,CAAA,GAAI,CAAJ,GAAQ,aAAeA,CAAA,IAAK,CAAN,GAAW,UAAjC,GAAgDA,CAAA,IAAK,CAAN,GAAW,UAA9D;IAD0B;IAG5B6gE,QAAA,CAASplE,CAAT,IAAcuE,CAAd;EAL4B;EAQ9B,SAAS8gE,KAATA,CAAev8D,IAAf,EAAqB89B,KAArB,EAA4B3zB,GAA5B,EAAiC;IAC/B,IAAIqyD,GAAA,GAAM,CAAC,CAAX;IACA,KAAK,IAAItlE,CAAA,GAAI4mC,KAAR,EAAe5mC,CAAA,GAAIiT,GAAxB,EAA6BjT,CAAA,EAA7B,EAAkC;MAChC,MAAMsE,CAAA,GAAK,CAAAghE,GAAA,GAAMx8D,IAAA,CAAK9I,CAAL,CAAN,IAAiB,IAA5B;MACA,MAAM+C,CAAA,GAAIqiE,QAAA,CAAS9gE,CAAT,CAAV;MACAghE,GAAA,GAAOA,GAAA,KAAQ,CAAT,GAAcviE,CAApB;IAHgC;IAKlC,OAAOuiE,GAAA,GAAM,CAAC,CAAd;EAP+B;EAUjC,SAASC,aAATA,CAAuBx4E,IAAvB,EAA6Bu4C,IAA7B,EAAmCx8B,IAAnC,EAAyC+oC,MAAzC,EAAiD;IAC/C,IAAIvuC,CAAA,GAAIuuC,MAAR;IACA,MAAM2zB,GAAA,GAAMlgC,IAAA,CAAK7nC,MAAjB;IAEAqL,IAAA,CAAKxF,CAAL,IAAWkiE,GAAA,IAAO,EAAR,GAAc,IAAxB;IACA18D,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAekiE,GAAA,IAAO,EAAR,GAAc,IAA5B;IACA18D,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAekiE,GAAA,IAAO,CAAR,GAAa,IAA3B;IACA18D,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAckiE,GAAA,GAAM,IAApB;IACAliE,CAAA,IAAK,CAAL;IAEAwF,IAAA,CAAKxF,CAAL,IAAUvW,IAAA,CAAK4T,UAAL,CAAgB,CAAhB,IAAqB,IAA/B;IACAmI,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAcvW,IAAA,CAAK4T,UAAL,CAAgB,CAAhB,IAAqB,IAAnC;IACAmI,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAcvW,IAAA,CAAK4T,UAAL,CAAgB,CAAhB,IAAqB,IAAnC;IACAmI,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAcvW,IAAA,CAAK4T,UAAL,CAAgB,CAAhB,IAAqB,IAAnC;IACA2C,CAAA,IAAK,CAAL;IAEAwF,IAAA,CAAKgQ,GAAL,CAASwsB,IAAT,EAAehiC,CAAf;IACAA,CAAA,IAAKgiC,IAAA,CAAK7nC,MAAV;IAEA,MAAM6nE,GAAA,GAAMD,KAAA,CAAMv8D,IAAN,EAAY+oC,MAAA,GAAS,CAArB,EAAwBvuC,CAAxB,CAAZ;IACAwF,IAAA,CAAKxF,CAAL,IAAWgiE,GAAA,IAAO,EAAR,GAAc,IAAxB;IACAx8D,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAegiE,GAAA,IAAO,EAAR,GAAc,IAA5B;IACAx8D,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAegiE,GAAA,IAAO,CAAR,GAAa,IAA3B;IACAx8D,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAcgiE,GAAA,GAAM,IAApB;EAvB+C;EA0BjD,SAASG,OAATA,CAAiB38D,IAAjB,EAAuB89B,KAAvB,EAA8B3zB,GAA9B,EAAmC;IACjC,IAAI3O,CAAA,GAAI,CAAR;IACA,IAAIvB,CAAA,GAAI,CAAR;IACA,KAAK,IAAI/C,CAAA,GAAI4mC,KAAR,EAAe5mC,CAAA,GAAIiT,GAAxB,EAA6B,EAAEjT,CAA/B,EAAkC;MAChCsE,CAAA,GAAK,CAAAA,CAAA,IAAKwE,IAAA,CAAK9I,CAAL,IAAU,IAAV,CAAL,IAAwB,KAA7B;MACA+C,CAAA,GAAK,CAAAA,CAAA,GAAIuB,CAAJ,IAAS,KAAd;IAFgC;IAIlC,OAAQvB,CAAA,IAAK,EAAN,GAAYuB,CAAnB;EAPiC;EAgBnC,SAASohE,WAATA,CAAqBC,QAArB,EAA+B;IAC7B,IAAI,CAACj5E,cAAL,EAAe;MAIb,OAAOk5E,uBAAA,CAAwBD,QAAxB,CAAP;IAJa;IAMf,IAAI;MAUF,MAAMr5B,KAAA,GAEJG,QAAA,CAAS9/C,OAAA,CAAQC,QAAR,CAAiBi5E,IAA1B,KAAmC,CAAnC,GAAuCF,QAAvC,GAAkDn0D,MAAA,CAAOs0D,IAAP,CAAYH,QAAZ,CAFpD;MAGA,MAAMI,MAAA,GAASrnD,OAAA,CAAwB,MAAxB,EAAgCgnD,WAAhC,CAA4Cp5B,KAA5C,EAAmD;QAChEpwC,KAAA,EAAO;MADyD,CAAnD,CAAf;MAGA,OAAO6pE,MAAA,YAAkBrlE,UAAlB,GAA+BqlE,MAA/B,GAAwC,IAAIrlE,UAAJ,CAAeqlE,MAAf,CAA/C;IAhBE,CAAJ,CAiBE,OAAOn1C,CAAP,EAAU;MACV,IAAAl0B,UAAA,EAAK,kEAAkEk0B,CAAvE;IADU;IAIZ,OAAOg1C,uBAAA,CAAwBD,QAAxB,CAAP;EA5B6B;EAgC/B,SAASC,uBAATA,CAAiCD,QAAjC,EAA2C;IACzC,IAAIH,GAAA,GAAMG,QAAA,CAASloE,MAAnB;IACA,MAAMuoE,cAAA,GAAiB,MAAvB;IAEA,MAAMC,aAAA,GAAgB/lE,IAAA,CAAKkgD,IAAL,CAAUolB,GAAA,GAAMQ,cAAhB,CAAtB;IACA,MAAME,IAAA,GAAO,IAAIxlE,UAAJ,CAAe,IAAI8kE,GAAJ,GAAUS,aAAA,GAAgB,CAA1B,GAA8B,CAA7C,CAAb;IACA,IAAIE,EAAA,GAAK,CAAT;IACAD,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;IACAD,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;IAEA,IAAI1tB,GAAA,GAAM,CAAV;IACA,OAAO+sB,GAAA,GAAMQ,cAAb,EAA6B;MAE3BE,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;MACAD,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;MACAD,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;MACAD,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;MACAD,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;MACAD,IAAA,CAAKptD,GAAL,CAAS6sD,QAAA,CAAStlE,QAAT,CAAkBo4C,GAAlB,EAAuBA,GAAA,GAAMutB,cAA7B,CAAT,EAAuDG,EAAvD;MACAA,EAAA,IAAMH,cAAN;MACAvtB,GAAA,IAAOutB,cAAP;MACAR,GAAA,IAAOQ,cAAP;IAV2B;IAc7BE,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;IACAD,IAAA,CAAKC,EAAA,EAAL,IAAaX,GAAA,GAAM,IAAnB;IACAU,IAAA,CAAKC,EAAA,EAAL,IAAcX,GAAA,IAAO,CAAR,GAAa,IAA1B;IACAU,IAAA,CAAKC,EAAA,EAAL,IAAa,CAACX,GAAD,GAAO,MAAP,GAAgB,IAA7B;IACAU,IAAA,CAAKC,EAAA,EAAL,IAAe,EAACX,GAAD,GAAO,MAAP,KAAkB,CAApB,GAAyB,IAAtC;IACAU,IAAA,CAAKptD,GAAL,CAAS6sD,QAAA,CAAStlE,QAAT,CAAkBo4C,GAAlB,CAAT,EAAiC0tB,EAAjC;IACAA,EAAA,IAAMR,QAAA,CAASloE,MAAT,GAAkBg7C,GAAxB;IAEA,MAAM2tB,KAAA,GAAQX,OAAA,CAAQE,QAAR,EAAkB,CAAlB,EAAqBA,QAAA,CAASloE,MAA9B,CAAd;IACAyoE,IAAA,CAAKC,EAAA,EAAL,IAAcC,KAAA,IAAS,EAAV,GAAgB,IAA7B;IACAF,IAAA,CAAKC,EAAA,EAAL,IAAcC,KAAA,IAAS,EAAV,GAAgB,IAA7B;IACAF,IAAA,CAAKC,EAAA,EAAL,IAAcC,KAAA,IAAS,CAAV,GAAe,IAA5B;IACAF,IAAA,CAAKC,EAAA,EAAL,IAAaC,KAAA,GAAQ,IAArB;IACA,OAAOF,IAAP;EAtCyC;EAyC3C,SAASG,MAATA,CAAgBnuB,OAAhB,EAAyB4E,IAAzB,EAA+B0nB,eAA/B,EAAgD8B,MAAhD,EAAwD;IACtD,MAAMvhD,KAAA,GAAQmzB,OAAA,CAAQnzB,KAAtB;IACA,MAAMC,MAAA,GAASkzB,OAAA,CAAQlzB,MAAvB;IACA,IAAIuhD,QAAJ,EAAcC,SAAd,EAAyBhuB,QAAzB;IACA,MAAM/4C,KAAA,GAAQy4C,OAAA,CAAQpvC,IAAtB;IAEA,QAAQg0C,IAAR;MACE,KAAKvsD,eAAA,CAAUC,cAAf;QACEg2E,SAAA,GAAY,CAAZ;QACAD,QAAA,GAAW,CAAX;QACA/tB,QAAA,GAAYzzB,KAAA,GAAQ,CAAT,IAAe,CAA1B;QACA;MACF,KAAKx0B,eAAA,CAAUE,SAAf;QACE+1E,SAAA,GAAY,CAAZ;QACAD,QAAA,GAAW,CAAX;QACA/tB,QAAA,GAAWzzB,KAAA,GAAQ,CAAnB;QACA;MACF,KAAKx0B,eAAA,CAAUG,UAAf;QACE81E,SAAA,GAAY,CAAZ;QACAD,QAAA,GAAW,CAAX;QACA/tB,QAAA,GAAWzzB,KAAA,GAAQ,CAAnB;QACA;MACF;QACE,MAAM,IAAInoB,KAAJ,CAAU,gBAAV,CAAN;IAjBJ;IAqBA,MAAM+oE,QAAA,GAAW,IAAIjlE,UAAJ,CAAgB,KAAI83C,QAAJ,IAAgBxzB,MAAhC,CAAjB;IACA,IAAIyhD,cAAA,GAAiB,CAArB;MACEC,WAAA,GAAc,CADhB;IAEA,KAAK,IAAI16C,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIhH,MAApB,EAA4B,EAAEgH,CAA9B,EAAiC;MAC/B25C,QAAA,CAASc,cAAA,EAAT,IAA6B,CAA7B;MACAd,QAAA,CAAS7sD,GAAT,CACErZ,KAAA,CAAMY,QAAN,CAAeqmE,WAAf,EAA4BA,WAAA,GAAcluB,QAA1C,CADF,EAEEiuB,cAFF;MAIAC,WAAA,IAAeluB,QAAf;MACAiuB,cAAA,IAAkBjuB,QAAlB;IAP+B;IAUjC,IAAIsE,IAAA,KAASvsD,eAAA,CAAUC,cAAnB,IAAqC81E,MAAzC,EAAiD;MAE/CG,cAAA,GAAiB,CAAjB;MACA,KAAK,IAAIz6C,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIhH,MAApB,EAA4BgH,CAAA,EAA5B,EAAiC;QAC/By6C,cAAA;QACA,KAAK,IAAIzmE,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIw4C,QAApB,EAA8Bx4C,CAAA,EAA9B,EAAmC;UACjC2lE,QAAA,CAASc,cAAA,EAAT,KAA8B,IAA9B;QADiC;MAFJ;IAHc;IAWjD,MAAME,IAAA,GAAO,IAAIjmE,UAAJ,CAAe,CACzBqkB,KAAA,IAAS,EAAV,GAAgB,IADU,EAEzBA,KAAA,IAAS,EAAV,GAAgB,IAFU,EAGzBA,KAAA,IAAS,CAAV,GAAe,IAHW,EAI1BA,KAAA,GAAQ,IAJkB,EAKzBC,MAAA,IAAU,EAAX,GAAiB,IALS,EAMzBA,MAAA,IAAU,EAAX,GAAiB,IANS,EAOzBA,MAAA,IAAU,CAAX,GAAgB,IAPU,EAQ1BA,MAAA,GAAS,IARiB,EAS1BuhD,QAT0B,EAU1BC,SAV0B,EAW1B,IAX0B,EAY1B,IAZ0B,EAa1B,IAb0B,CAAf,CAAb;IAeA,MAAMN,IAAA,GAAOR,WAAA,CAAYC,QAAZ,CAAb;IAGA,MAAMiB,SAAA,GACJ1B,UAAA,CAAWznE,MAAX,GAAoB0nE,kBAAA,GAAqB,CAAzC,GAA6CwB,IAAA,CAAKlpE,MAAlD,GAA2DyoE,IAAA,CAAKzoE,MADlE;IAEA,MAAMqL,IAAA,GAAO,IAAIpI,UAAJ,CAAekmE,SAAf,CAAb;IACA,IAAI/0B,MAAA,GAAS,CAAb;IACA/oC,IAAA,CAAKgQ,GAAL,CAASosD,UAAT,EAAqBrzB,MAArB;IACAA,MAAA,IAAUqzB,UAAA,CAAWznE,MAArB;IACA8nE,aAAA,CAAc,MAAd,EAAsBoB,IAAtB,EAA4B79D,IAA5B,EAAkC+oC,MAAlC;IACAA,MAAA,IAAUszB,kBAAA,GAAqBwB,IAAA,CAAKlpE,MAApC;IACA8nE,aAAA,CAAc,OAAd,EAAuBW,IAAvB,EAA6Bp9D,IAA7B,EAAmC+oC,MAAnC;IACAA,MAAA,IAAUszB,kBAAA,GAAqBe,IAAA,CAAKzoE,MAApC;IACA8nE,aAAA,CAAc,MAAd,EAAsB,IAAI7kE,UAAJ,CAAe,CAAf,CAAtB,EAAyCoI,IAAzC,EAA+C+oC,MAA/C;IAEA,OAAOxyB,eAAA,CAAgBvW,IAAhB,EAAsB,WAAtB,EAAmC07D,eAAnC,CAAP;EAjFsD;EAqFxD,OAAO,SAASS,mBAATA,CAA6B/sB,OAA7B,EAAsCssB,eAAtC,EAAuD8B,MAAvD,EAA+D;IACpE,MAAMxpB,IAAA,GACJ5E,OAAA,CAAQ4E,IAAR,KAAiBp9C,SAAjB,GAA6BnP,eAAA,CAAUC,cAAvC,GAAwD0nD,OAAA,CAAQ4E,IADlE;IAEA,OAAOupB,MAAA,CAAOnuB,OAAP,EAAgB4E,IAAhB,EAAsB0nB,eAAtB,EAAuC8B,MAAvC,CAAP;EAHoE,CAAtE;AAjOuC,CAAb,EAA5B;AAwOA,MAAMO,aAAN,CAAoB;EAClBjoE,YAAA,EAAc;IACZ,KAAK46C,aAAL,GAAqB,CAArB;IACA,KAAKtG,UAAL,GAAkBixB,YAAA,CAAajxB,UAA/B;IACA,KAAKqG,QAAL,GAAgB,CAAhB;IAEA,KAAKE,UAAL,GAAkBxsD,qBAAlB;IACA,KAAK0sD,UAAL,GAAkBzsD,0BAAlB;IACA,KAAK0sD,OAAL,GAAe,CAAf;IACA,KAAKM,iBAAL,GAAyBtqD,uBAAA,CAAkBC,IAA3C;IACA,KAAK6pD,eAAL,GAAuB,CAAvB;IAGA,KAAK3tB,CAAL,GAAS,CAAT;IACA,KAAKC,CAAL,GAAS,CAAT;IAGA,KAAK6tB,KAAL,GAAa,CAAb;IACA,KAAKC,KAAL,GAAa,CAAb;IAGA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,UAAL,GAAkB,CAAlB;IACA,KAAKE,QAAL,GAAgB,CAAhB;IAGA,KAAKC,SAAL,GAAiB+pB,YAAA,CAAa/pB,SAA9B;IACA,KAAKC,WAAL,GAAmB,SAAnB;IAEA,KAAKE,SAAL,GAAiB,CAAjB;IACA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,SAAL,GAAiB,CAAjB;IACA,KAAKgE,QAAL,GAAgB,EAAhB;IACA,KAAKD,OAAL,GAAe,EAAf;IACA,KAAKE,UAAL,GAAkB,CAAlB;IAEA,KAAKqH,SAAL,GAAiB,EAAjB;IACA,KAAKC,SAAL,GAAiB,CAAjB;IAEA,KAAK8gB,YAAL,GAAoB,EAApB;IAGA,KAAKC,aAAL,GAAqB,IAArB;IACA,KAAKC,SAAL,GAAiB,IAAjB;IAEA,KAAKC,MAAL,GAAc,EAAd;EA7CY;EAgDdr9C,MAAA,EAAQ;IACN,OAAOzrB,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAP;EADM;EAIR65C,gBAAgB/uB,CAAhB,EAAmBC,CAAnB,EAAsB;IACpB,KAAKD,CAAL,GAASA,CAAT;IACA,KAAKC,CAAL,GAASA,CAAT;EAFoB;AArDJ;AA2DpB,SAASk7C,YAATA,CAAsBC,MAAtB,EAA8B;EAC5B,IAAIC,MAAA,GAAS,EAAb;EACA,MAAMnX,GAAA,GAAM,EAAZ;EAEA,WAAWoX,aAAX,IAA4BF,MAA5B,EAAoC;IAClC,IAAIE,aAAA,CAAcC,EAAd,KAAqB,MAAzB,EAAiC;MAC/BF,MAAA,CAAO9mE,IAAP,CAAY;QAAEmjD,IAAA,EAAM,EAAR;QAAY6jB,EAAA,EAAI,OAAhB;QAAyB/rD,KAAA,EAAO;MAAhC,CAAZ;MACA00C,GAAA,CAAI3vD,IAAJ,CAAS8mE,MAAT;MACAA,MAAA,GAASA,MAAA,CAAOrsC,EAAP,CAAU,CAAC,CAAX,EAAcxf,KAAvB;MACA;IAJ+B;IAOjC,IAAI8rD,aAAA,CAAcC,EAAd,KAAqB,SAAzB,EAAoC;MAClCF,MAAA,GAASnX,GAAA,CAAItJ,GAAJ,EAAT;IADkC,CAApC,MAEO;MACLygB,MAAA,CAAO9mE,IAAP,CAAY+mE,aAAZ;IADK;EAV2B;EAcpC,OAAOD,MAAP;AAlB4B;AA2B9B,SAASG,EAATA,CAAYtpE,KAAZ,EAAmB;EACjB,IAAI9B,MAAA,CAAOC,SAAP,CAAiB6B,KAAjB,CAAJ,EAA6B;IAC3B,OAAOA,KAAA,CAAMwE,QAAN,EAAP;EAD2B;EAG7B,MAAMsvC,CAAA,GAAI9zC,KAAA,CAAMwxB,OAAN,CAAc,EAAd,CAAV;EACA,IAAIzvB,CAAA,GAAI+xC,CAAA,CAAEt0C,MAAF,GAAW,CAAnB;EACA,IAAIs0C,CAAA,CAAE/xC,CAAF,MAAS,GAAb,EAAkB;IAChB,OAAO+xC,CAAP;EADgB;EAKlB,GAAG;IACD/xC,CAAA;EADC,CAAH,QAES+xC,CAAA,CAAE/xC,CAAF,MAAS,GAFlB;EAGA,OAAO+xC,CAAA,CAAEnH,SAAF,CAAY,CAAZ,EAAemH,CAAA,CAAE/xC,CAAF,MAAS,GAAT,GAAeA,CAAf,GAAmBA,CAAA,GAAI,CAAtC,CAAP;AAdiB;AAyBnB,SAASwnE,EAATA,CAAYjkE,CAAZ,EAAe;EACb,IAAIA,CAAA,CAAE,CAAF,MAAS,CAAT,IAAcA,CAAA,CAAE,CAAF,MAAS,CAA3B,EAA8B;IAC5B,IAAIA,CAAA,CAAE,CAAF,MAAS,CAAT,IAAcA,CAAA,CAAE,CAAF,MAAS,CAA3B,EAA8B;MAC5B,IAAIA,CAAA,CAAE,CAAF,MAAS,CAAT,IAAcA,CAAA,CAAE,CAAF,MAAS,CAA3B,EAA8B;QAC5B,OAAO,EAAP;MAD4B;MAG9B,OAAQ,SAAQgkE,EAAA,CAAGhkE,CAAA,CAAE,CAAF,CAAH,CAAS,IAAGgkE,EAAA,CAAGhkE,CAAA,CAAE,CAAF,CAAH,CAAS,GAArC;IAJ4B;IAM9B,IAAIA,CAAA,CAAE,CAAF,MAASA,CAAA,CAAE,CAAF,CAAT,IAAiBA,CAAA,CAAE,CAAF,MAAS,CAACA,CAAA,CAAE,CAAF,CAA/B,EAAqC;MACnC,MAAMe,CAAA,GAAKpE,IAAA,CAAKunE,IAAL,CAAUlkE,CAAA,CAAE,CAAF,CAAV,IAAkB,GAAnB,GAA0BrD,IAAA,CAAKjL,EAAzC;MACA,OAAQ,UAASsyE,EAAA,CAAGjjE,CAAH,CAAM,GAAvB;IAFmC;EAPT,CAA9B,MAWO,IAAIf,CAAA,CAAE,CAAF,MAAS,CAAT,IAAcA,CAAA,CAAE,CAAF,MAAS,CAAvB,IAA4BA,CAAA,CAAE,CAAF,MAAS,CAArC,IAA0CA,CAAA,CAAE,CAAF,MAAS,CAAvD,EAA0D;IAC/D,OAAQ,aAAYgkE,EAAA,CAAGhkE,CAAA,CAAE,CAAF,CAAH,CAAS,IAAGgkE,EAAA,CAAGhkE,CAAA,CAAE,CAAF,CAAH,CAAS,GAAzC;EAD+D;EAGjE,OACG,UAASgkE,EAAA,CAAGhkE,CAAA,CAAE,CAAF,CAAH,CAAS,IAAGgkE,EAAA,CAAGhkE,CAAA,CAAE,CAAF,CAAH,CAAS,IAAGgkE,EAAA,CAAGhkE,CAAA,CAAE,CAAF,CAAH,CAAS,IAAGgkE,EAAA,CAAGhkE,CAAA,CAAE,CAAF,CAAH,CAAS,IAAGgkE,EAAA,CAAGhkE,CAAA,CAAE,CAAF,CAAH,CAAS,GAAnE,GACA,GAAGgkE,EAAA,CAAGhkE,CAAA,CAAE,CAAF,CAAH,CAAS,GAFd;AAfa;AAwBf,IAAImkE,SAAA,GAAY,CAAhB;AACA,IAAIC,SAAA,GAAY,CAAhB;AACA,IAAIC,YAAA,GAAe,CAAnB;AAEA,MAAMC,WAAN,CAAkB;EAChBjpE,YAAY6X,UAAZ,EAAwBC,IAAxB,EAA8B8tD,eAAA,GAAkB,KAAhD,EAAuD;IACrD,IAAAlxD,yBAAA,EACE,8EADF;IAGA,KAAKw0D,UAAL,GAAkB,IAAIn+B,4BAAJ,EAAlB;IAEA,KAAK8J,OAAL,GAAe,IAAIozB,aAAJ,EAAf;IACA,KAAKkB,eAAL,GAAuB96E,qBAAvB;IACA,KAAK+6E,cAAL,GAAsB,EAAtB;IACA,KAAKC,UAAL,GAAkB,EAAlB;IACA,KAAKxxD,UAAL,GAAkBA,UAAlB;IACA,KAAKC,IAAL,GAAYA,IAAZ;IACA,KAAK8qC,WAAL,GAAmB,IAAnB;IACA,KAAKC,aAAL,GAAqB,KAArB;IAEA,KAAKymB,UAAL,GAAkB,KAAlB;IACA,KAAKC,aAAL,GAAqBhqE,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAArB;IACA,KAAKmnE,QAAL,GAAgB,IAAhB;IACA,KAAK5D,eAAL,GAAuB,CAAC,CAACA,eAAzB;IAKA,KAAK6D,kBAAL,GAA0B,EAA1B;IACA,WAAWha,EAAX,IAAiBj4D,SAAjB,EAAsB;MACpB,KAAKiyE,kBAAL,CAAwBjyE,SAAA,CAAIi4D,EAAJ,CAAxB,IAAmCA,EAAnC;IADoB;EAxB+B;EA6BvDvL,UAAUh6C,IAAV,EAAgBi6C,QAAA,GAAW,IAA3B,EAAiC;IAC/B,IAAI,OAAOj6C,IAAP,KAAgB,QAApB,EAA8B;MAC5B,OAAOA,IAAA,CAAKxL,UAAL,CAAgB,IAAhB,IACH,KAAKmZ,UAAL,CAAgBlN,GAAhB,CAAoBT,IAApB,CADG,GAEH,KAAK4N,IAAL,CAAUnN,GAAV,CAAcT,IAAd,CAFJ;IAD4B;IAK9B,OAAOi6C,QAAP;EAN+B;EASjCjsD,KAAA,EAAO;IACL,KAAKkxE,cAAL,CAAoB1nE,IAApB,CAAyB,KAAKynE,eAA9B;IACA,MAAMrhB,GAAA,GAAM,KAAKjT,OAAjB;IACA,KAAKw0B,UAAL,CAAgB3nE,IAAhB,CAAqBomD,GAArB;IACA,KAAKjT,OAAL,GAAeiT,GAAA,CAAI98B,KAAJ,EAAf;EAJK;EAOP7yB,QAAA,EAAU;IACR,KAAKgxE,eAAL,GAAuB,KAAKC,cAAL,CAAoBrhB,GAApB,EAAvB;IACA,KAAKlT,OAAL,GAAe,KAAKw0B,UAAL,CAAgBthB,GAAhB,EAAf;IACA,KAAKnF,WAAL,GAAmB,IAAnB;IACA,KAAK8mB,IAAL,GAAY,IAAZ;EAJQ;EAOVtc,MAAMzwC,KAAN,EAAa;IACX,KAAKzkB,IAAL;IACA,KAAKyxE,aAAL,CAAmBhtD,KAAnB;IACA,KAAKxkB,OAAL;EAHW;EAMbyxE,iBAAiBrvD,YAAjB,EAA+B;IAC7B,MAAMC,OAAA,GAAUD,YAAA,CAAaC,OAA7B;IACA,MAAMC,SAAA,GAAYF,YAAA,CAAaE,SAA/B;IAEA,KAAK,IAAIrZ,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKkS,OAAA,CAAQ3b,MAAxB,EAAgCuC,CAAA,GAAIkH,EAAzC,EAA6ClH,CAAA,EAA7C,EAAkD;MAChD,IAAIoZ,OAAA,CAAQpZ,CAAR,MAAe5J,SAAA,CAAIC,UAAvB,EAAmC;QACjC;MADiC;MAInC,WAAW0H,GAAX,IAAkBsb,SAAA,CAAUrZ,CAAV,CAAlB,EAAgC;QAC9B,MAAM4jD,QAAA,GAAW7lD,GAAA,CAAIT,UAAJ,CAAe,IAAf,IAAuB,KAAKmZ,UAA5B,GAAyC,KAAKC,IAA/D;QACA,MAAMhO,OAAA,GAAU,IAAIC,OAAJ,CAAYC,OAAA,IAAW;UACrCg7C,QAAA,CAASr6C,GAAT,CAAaxL,GAAb,EAAkB6K,OAAlB;QADqC,CAAvB,CAAhB;QAGA,KAAK6qC,OAAL,CAAaqzB,YAAb,CAA0BxmE,IAA1B,CAA+BoI,OAA/B;MAL8B;IALgB;IAalD,OAAOC,OAAA,CAAQ6H,GAAR,CAAY,KAAKijC,OAAL,CAAaqzB,YAAzB,CAAP;EAjB6B;EAoB/B9vE,UAAUsN,CAAV,EAAavB,CAAb,EAAgBwB,CAAhB,EAAmBZ,CAAnB,EAAsBitB,CAAtB,EAAyB6c,CAAzB,EAA4B;IAC1B,MAAMs6B,eAAA,GAAkB,CAACzjE,CAAD,EAAIvB,CAAJ,EAAOwB,CAAP,EAAUZ,CAAV,EAAaitB,CAAb,EAAgB6c,CAAhB,CAAxB;IACA,KAAKs6B,eAAL,GAAuBplE,UAAA,CAAK3L,SAAL,CACrB,KAAK+wE,eADgB,EAErBA,eAFqB,CAAvB;IAIA,KAAKO,IAAL,GAAY,IAAZ;EAN0B;EAS5BG,OAAOtvD,YAAP,EAAqBhB,QAArB,EAA+B;IAC7B,KAAKA,QAAL,GAAgBA,QAAhB;IAEA,MAAMuwD,UAAA,GAAa,KAAK5oD,WAAL,CAAiB3H,QAAjB,CAAnB;IACA,OAAO,KAAKqwD,gBAAL,CAAsBrvD,YAAtB,EAAoC1J,IAApC,CAAyC,MAAM;MACpD,KAAKs4D,eAAL,GAAuB96E,qBAAvB;MACA,KAAKs7E,aAAL,CAAmB,KAAKI,aAAL,CAAmBxvD,YAAnB,CAAnB;MACA,OAAOuvD,UAAP;IAHoD,CAA/C,CAAP;EAJ6B;EAW/BC,cAAcxvD,YAAd,EAA4B;IAC1B,MAAMyvD,iBAAA,GAAoB,KAAKP,kBAA/B;IACA,MAAMhvD,SAAA,GAAYF,YAAA,CAAaE,SAA/B;IACA,MAAMD,OAAA,GAAUD,YAAA,CAAaC,OAA7B;IACA,MAAM+tD,MAAA,GAAS,EAAf;IACA,KAAK,IAAInnE,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKkS,OAAA,CAAQ3b,MAAxB,EAAgCuC,CAAA,GAAIkH,EAAzC,EAA6ClH,CAAA,EAA7C,EAAkD;MAChD,MAAMyjD,IAAA,GAAOrqC,OAAA,CAAQpZ,CAAR,CAAb;MACAmnE,MAAA,CAAO7mE,IAAP,CAAY;QACVmjD,IADU;QAEV6jB,EAAA,EAAIsB,iBAAA,CAAkBnlB,IAAlB,CAFM;QAGVroB,IAAA,EAAM/hB,SAAA,CAAUrZ,CAAV;MAHI,CAAZ;IAFgD;IAQlD,OAAOknE,YAAA,CAAaC,MAAb,CAAP;EAb0B;EAgB5BoB,cAAcnB,MAAd,EAAsB;IACpB,WAAWyB,aAAX,IAA4BzB,MAA5B,EAAoC;MAClC,MAAME,EAAA,GAAKuB,aAAA,CAAcvB,EAAzB;MACA,MAAM7jB,IAAA,GAAOolB,aAAA,CAAcplB,IAA3B;MACA,MAAMroB,IAAA,GAAOytC,aAAA,CAAcztC,IAA3B;MAEA,QAAQqoB,IAAA,GAAO,CAAf;QACE,KAAKrtD,SAAA,CAAI+B,SAAT;UACE,KAAKA,SAAL;UACA;QACF,KAAK/B,SAAA,CAAIC,UAAT;UAEE;QACF,KAAKD,SAAA,CAAIoC,UAAT;UACE,KAAKA,UAAL,CAAgB4iC,IAAhB;UACA;QACF,KAAKhlC,SAAA,CAAIyC,kBAAT;UACE,KAAKA,kBAAL,CAAwBuiC,IAAA,CAAK,CAAL,CAAxB,EAAiCA,IAAA,CAAK,CAAL,CAAjC;UACA;QACF,KAAKhlC,SAAA,CAAIqC,OAAT;UACE,KAAKA,OAAL,CAAa2iC,IAAb;UACA;QACF,KAAKhlC,SAAA,CAAI4C,QAAT;UACE,KAAKA,QAAL,CAAcoiC,IAAA,CAAK,CAAL,CAAd;UACA;QACF,KAAKhlC,SAAA,CAAI6C,cAAT;UACE,KAAKD,QAAL,CAAcoiC,IAAA,CAAK,CAAL,CAAd;UACA;QACF,KAAKhlC,SAAA,CAAIgC,OAAT;UACE,KAAKA,OAAL;UACA;QACF,KAAKhC,SAAA,CAAIwC,QAAT;UACE,KAAKA,QAAL,CAAcwiC,IAAA,CAAK,CAAL,CAAd,EAAuBA,IAAA,CAAK,CAAL,CAAvB;UACA;QACF,KAAKhlC,SAAA,CAAIiC,cAAT;UACE,KAAKA,cAAL,CAAoB+iC,IAAA,CAAK,CAAL,CAApB;UACA;QACF,KAAKhlC,SAAA,CAAIkC,cAAT;UACE,KAAKA,cAAL,CAAoB8iC,IAAA,CAAK,CAAL,CAApB;UACA;QACF,KAAKhlC,SAAA,CAAImC,SAAT;UACE,KAAKA,SAAL,CAAe6iC,IAAA,CAAK,CAAL,CAAf;UACA;QACF,KAAKhlC,SAAA,CAAI0C,aAAT;UACE,KAAKA,aAAL,CACEsiC,IAAA,CAAK,CAAL,CADF,EAEEA,IAAA,CAAK,CAAL,CAFF,EAGEA,IAAA,CAAK,CAAL,CAHF,EAIEA,IAAA,CAAK,CAAL,CAJF,EAKEA,IAAA,CAAK,CAAL,CALF,EAMEA,IAAA,CAAK,CAAL,CANF;UAQA;QACF,KAAKhlC,SAAA,CAAIuC,WAAT;UACE,KAAKA,WAAL,CAAiByiC,IAAA,CAAK,CAAL,CAAjB;UACA;QACF,KAAKhlC,SAAA,CAAIsC,oBAAT;UACE,KAAKA,oBAAL,CAA0B0iC,IAAA,CAAK,CAAL,CAA1B;UACA;QACF,KAAKhlC,SAAA,CAAIE,YAAT;UACE,KAAKA,YAAL,CAAkB8kC,IAAA,CAAK,CAAL,CAAlB;UACA;QACF,KAAKhlC,SAAA,CAAII,WAAT;UACE,KAAKA,WAAL,CAAiB4kC,IAAA,CAAK,CAAL,CAAjB;UACA;QACF,KAAKhlC,SAAA,CAAIG,UAAT;UACE,KAAKA,UAAL,CAAgB6kC,IAAA,CAAK,CAAL,CAAhB;UACA;QACF,KAAKhlC,SAAA,CAAIK,aAAT;UACE,KAAKA,aAAL,CAAmB2kC,IAAA,CAAK,CAAL,CAAnB;UACA;QACF,KAAKhlC,SAAA,CAAI2D,eAAT;UACE,KAAKA,eAAL,CAAqBqhC,IAAA,CAAK,CAAL,CAArB,EAA8BA,IAAA,CAAK,CAAL,CAA9B,EAAuCA,IAAA,CAAK,CAAL,CAAvC;UACA;QACF,KAAKhlC,SAAA,CAAI0D,iBAAT;UACE,KAAKA,iBAAL,CAAuBshC,IAAA,CAAK,CAAL,CAAvB,EAAgCA,IAAA,CAAK,CAAL,CAAhC,EAAyCA,IAAA,CAAK,CAAL,CAAzC;UACA;QACF,KAAKhlC,SAAA,CAAIqD,eAAT;UACE,KAAKA,eAAL,CAAqB2hC,IAArB;UACA;QACF,KAAKhlC,SAAA,CAAIuD,aAAT;UACE,KAAKA,aAAL,CAAmByhC,IAAnB;UACA;QACF,KAAKhlC,SAAA,CAAI8D,WAAT;UACE,KAAKA,WAAL,CAAiBkhC,IAAA,CAAK,CAAL,CAAjB;UACA;QACF,KAAKhlC,SAAA,CAAIM,OAAT;UACE,KAAKA,OAAL,CAAa0kC,IAAA,CAAK,CAAL,CAAb,EAAsBA,IAAA,CAAK,CAAL,CAAtB;UACA;QACF,KAAKhlC,SAAA,CAAIO,kBAAT;UACE,KAAKA,kBAAL,CAAwBykC,IAAA,CAAK,CAAL,CAAxB;UACA;QACF,KAAKhlC,SAAA,CAAIQ,WAAT;UACE,KAAKA,WAAL,CAAiBwkC,IAAA,CAAK,CAAL,CAAjB;UACA;QACF,KAAKhlC,SAAA,CAAIS,SAAT;UACE,KAAKA,SAAL,CAAeukC,IAAA,CAAK,CAAL,CAAf;UACA;QACF,KAAKhlC,SAAA,CAAIsB,IAAT;UACE,KAAKA,IAAL;UACA;QACF,KAAKtB,SAAA,CAAIuB,MAAT;UACE,KAAKA,MAAL;UACA;QACF,KAAKvB,SAAA,CAAIoB,MAAT;UACE,KAAKA,MAAL;UACA;QACF,KAAKpB,SAAA,CAAIwB,UAAT;UACE,KAAKA,UAAL;UACA;QACF,KAAKxB,SAAA,CAAIyB,YAAT;UACE,KAAKA,YAAL;UACA;QACF,KAAKzB,SAAA,CAAI6B,IAAT;UACE,KAAKA,IAAL,CAAU,SAAV;UACA;QACF,KAAK7B,SAAA,CAAI8B,MAAT;UACE,KAAKD,IAAL,CAAU,SAAV;UACA;QACF,KAAK7B,SAAA,CAAIuF,wBAAT;UACE,KAAKA,wBAAL;UACA;QACF,KAAKvF,SAAA,CAAIkF,iBAAT;UACE,KAAKA,iBAAL,CAAuB8/B,IAAA,CAAK,CAAL,CAAvB;UACA;QACF,KAAKhlC,SAAA,CAAImF,uBAAT;UACE,KAAKA,uBAAL,CAA6B6/B,IAAA,CAAK,CAAL,CAA7B;UACA;QACF,KAAKhlC,SAAA,CAAIgF,qBAAT;UACE,KAAKA,qBAAL,CAA2BggC,IAAA,CAAK,CAAL,CAA3B;UACA;QACF,KAAKhlC,SAAA,CAAI0E,qBAAT;UACE,KAAKA,qBAAL,CAA2BsgC,IAAA,CAAK,CAAL,CAA3B,EAAoCA,IAAA,CAAK,CAAL,CAApC;UACA;QACF,KAAKhlC,SAAA,CAAI2E,mBAAT;UACE,KAAKA,mBAAL;UACA;QACF,KAAK3E,SAAA,CAAIkB,SAAT;UACE,KAAKA,SAAL;UACA;QACF,KAAKlB,SAAA,CAAIqB,WAAT;UACE,KAAKA,WAAL;UACA;QACF,KAAKrB,SAAA,CAAI0B,eAAT;UACE,KAAKA,eAAL;UACA;QACF,KAAK1B,SAAA,CAAI2B,iBAAT;UACE,KAAKA,iBAAL;UACA;QACF,KAAK3B,SAAA,CAAI2C,QAAT;UACE,KAAKA,QAAL;UACA;QACF,KAAK3C,SAAA,CAAIY,SAAT;UACE,KAAKA,SAAL,CAAeokC,IAAA,CAAK,CAAL,CAAf,EAAwBA,IAAA,CAAK,CAAL,CAAxB,EAAiCA,IAAA,CAAK,CAAL,CAAjC,EAA0CA,IAAA,CAAK,CAAL,CAA1C,EAAmDA,IAAA,CAAK,CAAL,CAAnD,EAA4DA,IAAA,CAAK,CAAL,CAA5D;UACA;QACF,KAAKhlC,SAAA,CAAIwF,aAAT;UACE,KAAKA,aAAL,CAAmBw/B,IAAA,CAAK,CAAL,CAAnB,EAA4BA,IAAA,CAAK,CAAL,CAA5B;UACA;QACF,KAAKhlC,SAAA,CAAI4B,OAAT;UACE,KAAKA,OAAL;UACA;QACF,KAAK,EAAL;UACE,KAAKg0D,KAAL,CAAW6c,aAAA,CAActtD,KAAzB;UACA;QACF;UACE,IAAA7e,UAAA,EAAM,0BAAyB4qE,EAA1B,EAAL;UACA;MAhKJ;IALkC;EADhB;EA2KtBhvE,eAAe0hD,WAAf,EAA4B;IAC1B,KAAKvG,OAAL,CAAauG,WAAb,GAA2BA,WAA3B;EAD0B;EAI5B3hD,eAAe0hD,WAAf,EAA4B;IAC1B,KAAKtG,OAAL,CAAasG,WAAb,GAA2BA,WAA3B;EAD0B;EAI5BhhD,SAAA,EAAW;IACT,KAAKH,QAAL,CAAc,CAAd,EAAiB,KAAK66C,OAAL,CAAamG,OAA9B;EADS;EAIX9gD,cAAcwL,CAAd,EAAiBvB,CAAjB,EAAoBwB,CAApB,EAAuBZ,CAAvB,EAA0BitB,CAA1B,EAA6B6c,CAA7B,EAAgC;IAC9B,MAAMgG,OAAA,GAAU,KAAKA,OAArB;IACAA,OAAA,CAAQgG,UAAR,GAAqBhG,OAAA,CAAQq1B,UAAR,GAAqB,CAACxkE,CAAD,EAAIvB,CAAJ,EAAOwB,CAAP,EAAUZ,CAAV,EAAaitB,CAAb,EAAgB6c,CAAhB,CAA1C;IACAgG,OAAA,CAAQiG,eAAR,GAA0Bx5C,IAAA,CAAKk0B,KAAL,CAAW9vB,CAAX,EAAcvB,CAAd,CAA1B;IAEA0wC,OAAA,CAAQ1nB,CAAR,GAAY0nB,OAAA,CAAQoG,KAAR,GAAgB,CAA5B;IACApG,OAAA,CAAQznB,CAAR,GAAYynB,OAAA,CAAQqG,KAAR,GAAgB,CAA5B;IAEArG,OAAA,CAAQs1B,OAAR,GAAkB,EAAlB;IACAt1B,OAAA,CAAQu1B,OAAR,GAAkB,EAAlB;IACAv1B,OAAA,CAAQw1B,KAAR,GAAgB,KAAKnB,UAAL,CAAgBh3C,aAAhB,CAA8B,WAA9B,CAAhB;IACA2iB,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,aAAnC,EAAkDz1B,OAAA,CAAQd,UAA1D;IACAc,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CACE,IADF,EAEE,WAFF,EAGE,GAAG3B,EAAA,CAAG9zB,OAAA,CAAQ8F,QAAX,CAAqB,IAH1B;IAKA9F,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,GAAnC,EAAwC3B,EAAA,CAAG,CAAC9zB,OAAA,CAAQznB,CAAZ,CAAxC;IAEAynB,OAAA,CAAQ01B,UAAR,GAAqB,KAAKrB,UAAL,CAAgBh3C,aAAhB,CAA8B,UAA9B,CAArB;IACA2iB,OAAA,CAAQ01B,UAAR,CAAmBn4C,MAAnB,CAA0ByiB,OAAA,CAAQw1B,KAAlC;EApB8B;EAuBhC9wE,UAAA,EAAY;IACV,MAAMs7C,OAAA,GAAU,KAAKA,OAArB;IACAA,OAAA,CAAQ1nB,CAAR,GAAY0nB,OAAA,CAAQoG,KAAR,GAAgB,CAA5B;IACApG,OAAA,CAAQznB,CAAR,GAAYynB,OAAA,CAAQqG,KAAR,GAAgB,CAA5B;IACArG,OAAA,CAAQgG,UAAR,GAAqBxsD,qBAArB;IACAwmD,OAAA,CAAQq1B,UAAR,GAAqB77E,qBAArB;IACAwmD,OAAA,CAAQiG,eAAR,GAA0B,CAA1B;IACAjG,OAAA,CAAQw1B,KAAR,GAAgB,KAAKnB,UAAL,CAAgBh3C,aAAhB,CAA8B,WAA9B,CAAhB;IACA2iB,OAAA,CAAQ01B,UAAR,GAAqB,KAAKrB,UAAL,CAAgBh3C,aAAhB,CAA8B,UAA9B,CAArB;IACA2iB,OAAA,CAAQ21B,MAAR,GAAiB,KAAKtB,UAAL,CAAgBh3C,aAAhB,CAA8B,OAA9B,CAAjB;IACA2iB,OAAA,CAAQs1B,OAAR,GAAkB,EAAlB;IACAt1B,OAAA,CAAQu1B,OAAR,GAAkB,EAAlB;EAXU;EAcZpwE,SAASmzB,CAAT,EAAYC,CAAZ,EAAe;IACb,MAAMynB,OAAA,GAAU,KAAKA,OAArB;IACAA,OAAA,CAAQ1nB,CAAR,GAAY0nB,OAAA,CAAQoG,KAAR,IAAiB9tB,CAA7B;IACA0nB,OAAA,CAAQznB,CAAR,GAAYynB,OAAA,CAAQqG,KAAR,IAAiB9tB,CAA7B;IAEAynB,OAAA,CAAQs1B,OAAR,GAAkB,EAAlB;IACAt1B,OAAA,CAAQu1B,OAAR,GAAkB,EAAlB;IACAv1B,OAAA,CAAQw1B,KAAR,GAAgB,KAAKnB,UAAL,CAAgBh3C,aAAhB,CAA8B,WAA9B,CAAhB;IACA2iB,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,aAAnC,EAAkDz1B,OAAA,CAAQd,UAA1D;IACAc,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CACE,IADF,EAEE,WAFF,EAGE,GAAG3B,EAAA,CAAG9zB,OAAA,CAAQ8F,QAAX,CAAqB,IAH1B;IAKA9F,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,GAAnC,EAAwC3B,EAAA,CAAG,CAAC9zB,OAAA,CAAQznB,CAAZ,CAAxC;EAda;EAiBfhzB,SAAS0vD,MAAT,EAAiB;IACf,MAAMjV,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMlvB,IAAA,GAAOkvB,OAAA,CAAQlvB,IAArB;IACA,MAAMg1B,QAAA,GAAW9F,OAAA,CAAQ8F,QAAzB;IACA,IAAIA,QAAA,KAAa,CAAjB,EAAoB;MAClB;IADkB;IAIpB,MAAMC,aAAA,GAAgB/F,OAAA,CAAQ+F,aAA9B;IACA,MAAMO,WAAA,GAActG,OAAA,CAAQsG,WAA5B;IACA,MAAMC,WAAA,GAAcvG,OAAA,CAAQuG,WAA5B;IACA,MAAM4N,aAAA,GAAgBnU,OAAA,CAAQmU,aAA9B;IACA,MAAM3N,UAAA,GAAaxG,OAAA,CAAQwG,UAAR,GAAqB2N,aAAxC;IACA,MAAMiB,QAAA,GAAWtkC,IAAA,CAAKskC,QAAtB;IACA,MAAMC,UAAA,GAAaD,QAAA,GAAW,CAAX,GAAe,CAAC,CAAnC;IACA,MAAME,eAAA,GAAkBxkC,IAAA,CAAKwkC,eAA7B;IACA,MAAMC,iBAAA,GAAoBzP,QAAA,GAAW9F,OAAA,CAAQkG,UAAR,CAAmB,CAAnB,CAArC;IAEA,IAAI5tB,CAAA,GAAI,CAAR;IACA,WAAWu9B,KAAX,IAAoBZ,MAApB,EAA4B;MAC1B,IAAIY,KAAA,KAAU,IAAd,EAAoB;QAElBv9B,CAAA,IAAK67B,aAAA,GAAgB5N,WAArB;QACA;MAHkB,CAApB,MAIO,IAAI,OAAOsP,KAAP,KAAiB,QAArB,EAA+B;QACpCv9B,CAAA,IAAM+8B,UAAA,GAAaQ,KAAb,GAAqB/P,QAAtB,GAAkC,IAAvC;QACA;MAFoC;MAKtC,MAAMkO,OAAA,GAAW,CAAA6B,KAAA,CAAMG,OAAN,GAAgBzP,WAAhB,GAA8B,CAA9B,IAAmCD,WAApD;MACA,MAAMzG,SAAA,GAAYgW,KAAA,CAAMI,QAAxB;MACA,IAAIE,OAAJ,EAAaC,OAAb;MACA,IAAI9kC,KAAA,GAAQukC,KAAA,CAAMvkC,KAAlB;MACA,IAAI8jC,QAAJ,EAAc;QACZ,IAAIkB,EAAJ;QACA,MAAMD,OAAA,GAAUR,KAAA,CAAMQ,OAAN,IAAiBf,eAAjC;QACAgB,EAAA,GAAKT,KAAA,CAAMQ,OAAN,GAAgBA,OAAA,CAAQ,CAAR,CAAhB,GAA6B/kC,KAAA,GAAQ,GAA1C;QACAglC,EAAA,GAAK,CAACA,EAAD,GAAMf,iBAAX;QACA,MAAMgB,EAAA,GAAKF,OAAA,CAAQ,CAAR,IAAad,iBAAxB;QAEAjkC,KAAA,GAAQ+kC,OAAA,GAAU,CAACA,OAAA,CAAQ,CAAR,CAAX,GAAwB/kC,KAAhC;QACA6kC,OAAA,GAAUG,EAAA,GAAKvQ,aAAf;QACAqQ,OAAA,GAAW,CAAA99B,CAAA,GAAIi+B,EAAJ,IAAUxQ,aAArB;MATY,CAAd,MAUO;QACLoQ,OAAA,GAAU79B,CAAA,GAAIytB,aAAd;QACAqQ,OAAA,GAAU,CAAV;MAFK;MAKP,IAAIP,KAAA,CAAMe,QAAN,IAAkB9lC,IAAA,CAAKosB,WAA3B,EAAwC;QACtC8C,OAAA,CAAQs1B,OAAR,CAAgBzoE,IAAhB,CAAqBmzC,OAAA,CAAQ1nB,CAAR,GAAY69B,OAAjC;QACA,IAAIf,QAAJ,EAAc;UACZpV,OAAA,CAAQu1B,OAAR,CAAgB1oE,IAAhB,CAAqB,CAACmzC,OAAA,CAAQznB,CAAT,GAAa69B,OAAlC;QADY;QAGdpW,OAAA,CAAQw1B,KAAR,CAAc3tD,WAAd,IAA6Bg4B,SAA7B;MALsC,CAAxC,MAMO;MAOP,MAAMkX,SAAA,GAAY3B,QAAA,GACd9jC,KAAA,GAAQikC,iBAAR,GAA4BvB,OAAA,GAAUG,aADxB,GAEd7iC,KAAA,GAAQikC,iBAAR,GAA4BvB,OAAA,GAAUG,aAF1C;MAIA77B,CAAA,IAAKy+B,SAAL;IA9C0B;IAgD5B/W,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,GAAnC,EAAwCz1B,OAAA,CAAQs1B,OAAR,CAAgB/nE,GAAhB,CAAoBumE,EAApB,EAAwBhnE,IAAxB,CAA6B,GAA7B,CAAxC;IACA,IAAIsoD,QAAJ,EAAc;MACZpV,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CACE,IADF,EAEE,GAFF,EAGEz1B,OAAA,CAAQu1B,OAAR,CAAgBhoE,GAAhB,CAAoBumE,EAApB,EAAwBhnE,IAAxB,CAA6B,GAA7B,CAHF;IADY,CAAd,MAMO;MACLkzC,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,GAAnC,EAAwC3B,EAAA,CAAG,CAAC9zB,OAAA,CAAQznB,CAAZ,CAAxC;IADK;IAIP,IAAI68B,QAAJ,EAAc;MACZpV,OAAA,CAAQznB,CAAR,IAAaD,CAAb;IADY,CAAd,MAEO;MACL0nB,OAAA,CAAQ1nB,CAAR,IAAaA,CAAA,GAAIkuB,UAAjB;IADK;IAIPxG,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,aAAnC,EAAkDz1B,OAAA,CAAQd,UAA1D;IACAc,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CACE,IADF,EAEE,WAFF,EAGE,GAAG3B,EAAA,CAAG9zB,OAAA,CAAQ8F,QAAX,CAAqB,IAH1B;IAKA,IAAI9F,OAAA,CAAQ2wB,SAAR,KAAsBD,YAAA,CAAaC,SAAvC,EAAkD;MAChD3wB,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,YAAnC,EAAiDz1B,OAAA,CAAQ2wB,SAAzD;IADgD;IAGlD,IAAI3wB,OAAA,CAAQP,UAAR,KAAuBixB,YAAA,CAAajxB,UAAxC,EAAoD;MAClDO,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,aAAnC,EAAkDz1B,OAAA,CAAQP,UAA1D;IADkD;IAIpD,MAAMoV,cAAA,GACJ7U,OAAA,CAAQyG,iBAAR,GAA4BtqD,uBAAA,CAAkBS,gBADhD;IAEA,IACEi4D,cAAA,KAAmB14D,uBAAA,CAAkBC,IAArC,IACAy4D,cAAA,KAAmB14D,uBAAA,CAAkBG,WAFvC,EAGE;MACA,IAAI0jD,OAAA,CAAQ2G,SAAR,KAAsB+pB,YAAA,CAAa/pB,SAAvC,EAAkD;QAChD3G,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,MAAnC,EAA2Cz1B,OAAA,CAAQ2G,SAAnD;MADgD;MAGlD,IAAI3G,OAAA,CAAQ8G,SAAR,GAAoB,CAAxB,EAA2B;QACzB9G,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,cAAnC,EAAmDz1B,OAAA,CAAQ8G,SAA3D;MADyB;IAJ3B,CAHF,MAUO,IAAI9G,OAAA,CAAQyG,iBAAR,KAA8BtqD,uBAAA,CAAkBQ,WAApD,EAAiE;MAGtEqjD,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,MAAnC,EAA2C,aAA3C;IAHsE,CAAjE,MAIA;MACLz1B,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,MAAnC,EAA2C,MAA3C;IADK;IAIP,IACE5gB,cAAA,KAAmB14D,uBAAA,CAAkBE,MAArC,IACAw4D,cAAA,KAAmB14D,uBAAA,CAAkBG,WAFvC,EAGE;MACA,MAAMs5E,cAAA,GAAiB,KAAK51B,OAAA,CAAQiG,eAAR,IAA2B,CAA3B,CAA5B;MACA,KAAK4vB,oBAAL,CAA0B71B,OAAA,CAAQw1B,KAAlC,EAAyCI,cAAzC;IAFA;IAQF,IAAI5vB,UAAA,GAAahG,OAAA,CAAQgG,UAAzB;IACA,IAAIhG,OAAA,CAAQ0G,QAAR,KAAqB,CAAzB,EAA4B;MAC1BV,UAAA,GAAaA,UAAA,CAAW11C,KAAX,EAAb;MACA01C,UAAA,CAAW,CAAX,KAAiBhG,OAAA,CAAQ0G,QAAzB;IAF0B;IAK5B1G,OAAA,CAAQ01B,UAAR,CAAmBD,cAAnB,CACE,IADF,EAEE,WAFF,EAGE,GAAG1B,EAAA,CAAG/tB,UAAH,CAAe,UAAS8tB,EAAA,CAAGttB,UAAH,CAAe,OAH5C;IAKAxG,OAAA,CAAQ01B,UAAR,CAAmBD,cAAnB,CAAkC7E,MAAlC,EAA0C,WAA1C,EAAuD,UAAvD;IACA5wB,OAAA,CAAQ01B,UAAR,CAAmBn4C,MAAnB,CAA0ByiB,OAAA,CAAQw1B,KAAlC;IACAx1B,OAAA,CAAQ21B,MAAR,CAAep4C,MAAf,CAAsByiB,OAAA,CAAQ01B,UAA9B;IAEA,KAAKI,qBAAL,GAA6Bv4C,MAA7B,CAAoCyiB,OAAA,CAAQ01B,UAA5C;EA/Ie;EAkJjBtwE,mBAAmBkzB,CAAnB,EAAsBC,CAAtB,EAAyB;IACvB,KAAKxzB,UAAL,CAAgB,CAACwzB,CAAjB;IACA,KAAKpzB,QAAL,CAAcmzB,CAAd,EAAiBC,CAAjB;EAFuB;EAKzBw9C,aAAa7hB,OAAb,EAAsB;IACpB,IAAI,CAACA,OAAA,CAAQ7+C,IAAb,EAAmB;MACjB,MAAM,IAAIlM,KAAJ,CACJ,2CACE,6DAFE,CAAN;IADiB;IAMnB,IAAI,CAAC,KAAKwrE,QAAV,EAAoB;MAClB,KAAKA,QAAL,GAAgB,KAAKN,UAAL,CAAgBh3C,aAAhB,CAA8B,WAA9B,CAAhB;MACA,KAAKs3C,QAAL,CAAcc,cAAd,CAA6B,IAA7B,EAAmC,MAAnC,EAA2C,UAA3C;MACA,KAAKhkC,IAAL,CAAUlU,MAAV,CAAiB,KAAKo3C,QAAtB;IAHkB;IAMpB,MAAMprE,GAAA,GAAMqiB,eAAA,CACVsoC,OAAA,CAAQ7+C,IADE,EAEV6+C,OAAA,CAAQvU,QAFE,EAGV,KAAKoxB,eAHK,CAAZ;IAKA,KAAK4D,QAAL,CAAc9sD,WAAd,IACG,8BAA6BqsC,OAAA,CAAQvX,UAAW,IAAjD,GACC,aAAYpzC,GAAI,QAFnB;EAlBoB;EAuBtBvE,QAAQwG,OAAR,EAAiB;IACf,MAAMw0C,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMkU,OAAA,GAAU,KAAKlxC,UAAL,CAAgBlN,GAAhB,CAAoBtK,OAAA,CAAQ,CAAR,CAApB,CAAhB;IACA,IAAIoc,IAAA,GAAOpc,OAAA,CAAQ,CAAR,CAAX;IACAw0C,OAAA,CAAQlvB,IAAR,GAAeojC,OAAf;IAEA,IACE,KAAKugB,UAAL,IACA,CAACvgB,OAAA,CAAQhX,WADT,IAEA,CAAC,KAAKw3B,aAAL,CAAmBxgB,OAAA,CAAQvX,UAA3B,CAHH,EAIE;MACA,KAAKo5B,YAAL,CAAkB7hB,OAAlB;MACA,KAAKwgB,aAAL,CAAmBxgB,OAAA,CAAQvX,UAA3B,IAAyCuX,OAAzC;IAFA;IAIFlU,OAAA,CAAQkG,UAAR,GAAqBgO,OAAA,CAAQhO,UAAR,IAAsBzsD,0BAA3C;IAEA,IAAI86D,IAAA,GAAO,QAAX;IACA,IAAIL,OAAA,CAAQvK,KAAZ,EAAmB;MACjB4K,IAAA,GAAO,KAAP;IADiB,CAAnB,MAEO,IAAIL,OAAA,CAAQK,IAAZ,EAAkB;MACvBA,IAAA,GAAO,MAAP;IADuB;IAGzB,MAAMC,MAAA,GAASN,OAAA,CAAQM,MAAR,GAAiB,QAAjB,GAA4B,QAA3C;IAEA,IAAI5sC,IAAA,GAAO,CAAX,EAAc;MACZA,IAAA,GAAO,CAACA,IAAR;MACAo4B,OAAA,CAAQmU,aAAR,GAAwB,CAAC,CAAzB;IAFY,CAAd,MAGO;MACLnU,OAAA,CAAQmU,aAAR,GAAwB,CAAxB;IADK;IAGPnU,OAAA,CAAQ8F,QAAR,GAAmBl+B,IAAnB;IACAo4B,OAAA,CAAQd,UAAR,GAAqBgV,OAAA,CAAQvX,UAA7B;IACAqD,OAAA,CAAQP,UAAR,GAAqB8U,IAArB;IACAvU,OAAA,CAAQ2wB,SAAR,GAAoBnc,MAApB;IAEAxU,OAAA,CAAQw1B,KAAR,GAAgB,KAAKnB,UAAL,CAAgBh3C,aAAhB,CAA8B,WAA9B,CAAhB;IACA2iB,OAAA,CAAQw1B,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,GAAnC,EAAwC3B,EAAA,CAAG,CAAC9zB,OAAA,CAAQznB,CAAZ,CAAxC;IACAynB,OAAA,CAAQs1B,OAAR,GAAkB,EAAlB;IACAt1B,OAAA,CAAQu1B,OAAR,GAAkB,EAAlB;EAtCe;EAyCjB5wE,QAAA,EAAU;IACR,MAAMq7C,OAAA,GAAU,KAAKA,OAArB;IACA,IACEA,OAAA,CAAQyG,iBAAR,GAA4BtqD,uBAAA,CAAkBU,gBAA9C,IACAmjD,OAAA,CAAQ01B,UAAR,EAAoBM,aAApB,EAFF,EAGE;MAEAh2B,OAAA,CAAQtc,OAAR,GAAkBsc,OAAA,CAAQ01B,UAA1B;MACA,KAAKlxE,IAAL,CAAU,SAAV;MACA,KAAKD,OAAL;IAJA;EALM;EAcV1B,aAAayuB,KAAb,EAAoB;IAClB,IAAIA,KAAA,GAAQ,CAAZ,EAAe;MACb,KAAK0uB,OAAL,CAAagH,SAAb,GAAyB11B,KAAzB;IADa;EADG;EAMpBxuB,WAAWu3B,KAAX,EAAkB;IAChB,KAAK2lB,OAAL,CAAa+K,OAAb,GAAuByC,eAAA,CAAgBnzB,KAAhB,CAAvB;EADgB;EAIlBt3B,YAAYs3B,KAAZ,EAAmB;IACjB,KAAK2lB,OAAL,CAAagL,QAAb,GAAwByC,gBAAA,CAAiBpzB,KAAjB,CAAxB;EADiB;EAInBr3B,cAAcqvD,KAAd,EAAqB;IACnB,KAAKrS,OAAL,CAAaiL,UAAb,GAA0BoH,KAA1B;EADmB;EAIrB4jB,eAAelvB,WAAf,EAA4B;IAC1B,KAAK/G,OAAL,CAAa+G,WAAb,GAA2BA,WAA3B;EAD0B;EAI5B1gD,kBAAkB+I,CAAlB,EAAqBC,CAArB,EAAwBC,CAAxB,EAA2B;IACzB,KAAK0wC,OAAL,CAAa4G,WAAb,GAA2B13C,UAAA,CAAKC,YAAL,CAAkBC,CAAlB,EAAqBC,CAArB,EAAwBC,CAAxB,CAA3B;EADyB;EAI3B4mE,aAAapvB,SAAb,EAAwB;IACtB,KAAK9G,OAAL,CAAa8G,SAAb,GAAyBA,SAAzB;EADsB;EAIxBxgD,gBAAgB8I,CAAhB,EAAmBC,CAAnB,EAAsBC,CAAtB,EAAyB;IACvB,KAAK0wC,OAAL,CAAa2G,SAAb,GAAyBz3C,UAAA,CAAKC,YAAL,CAAkBC,CAAlB,EAAqBC,CAArB,EAAwBC,CAAxB,CAAzB;IACA,KAAK0wC,OAAL,CAAaw1B,KAAb,GAAqB,KAAKnB,UAAL,CAAgBh3C,aAAhB,CAA8B,WAA9B,CAArB;IACA,KAAK2iB,OAAL,CAAas1B,OAAb,GAAuB,EAAvB;IACA,KAAKt1B,OAAL,CAAau1B,OAAb,GAAuB,EAAvB;EAJuB;EAOzBvvE,gBAAgB2hC,IAAhB,EAAsB;IACpB,KAAKqY,OAAL,CAAa4G,WAAb,GAA2B,KAAKuvB,mBAAL,CAAyBxuC,IAAzB,CAA3B;EADoB;EAItBzhC,cAAcyhC,IAAd,EAAoB;IAClB,KAAKqY,OAAL,CAAa2G,SAAb,GAAyB,KAAKwvB,mBAAL,CAAyBxuC,IAAzB,CAAzB;EADkB;EAIpBlhC,YAAYkhC,IAAZ,EAAkB;IAChB,MAAM;MAAErW,KAAF;MAASC;IAAT,IAAoB,KAAK7M,QAA/B;IACA,MAAM2zC,GAAA,GAAMnpD,UAAA,CAAKwB,gBAAL,CAAsB,KAAK4jE,eAA3B,CAAZ;IACA,MAAM,CAACxiE,EAAD,EAAKC,EAAL,EAASC,EAAT,EAAaC,EAAb,IAAmB/C,UAAA,CAAKiB,0BAAL,CACvB,CAAC,CAAD,EAAI,CAAJ,EAAOmhB,KAAP,EAAcC,MAAd,CADuB,EAEvB8mC,GAFuB,CAAzB;IAKA,MAAMhnD,IAAA,GAAO,KAAKgjE,UAAL,CAAgBh3C,aAAhB,CAA8B,UAA9B,CAAb;IACAhsB,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,GAA1B,EAA+B3jE,EAA/B;IACAT,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,GAA1B,EAA+B1jE,EAA/B;IACAV,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,OAA1B,EAAmCzjE,EAAA,GAAKF,EAAxC;IACAT,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,QAA1B,EAAoCxjE,EAAA,GAAKF,EAAzC;IACAV,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,MAA1B,EAAkC,KAAKW,mBAAL,CAAyBzuC,IAAzB,CAAlC;IACA,IAAI,KAAKqY,OAAL,CAAa8G,SAAb,GAAyB,CAA7B,EAAgC;MAC9Bz1C,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,cAA1B,EAA0C,KAAKz1B,OAAL,CAAa8G,SAAvD;IAD8B;IAGhC,KAAKgvB,qBAAL,GAA6Bv4C,MAA7B,CAAoClsB,IAApC;EAjBgB;EAuBlB8kE,oBAAoBxuC,IAApB,EAA0B;IACxB,IAAIA,IAAA,CAAK,CAAL,MAAY,eAAhB,EAAiC;MAC/B,OAAO,KAAK0uC,kBAAL,CAAwB1uC,IAAxB,CAAP;IAD+B;IAGjC,OAAO,KAAKyuC,mBAAL,CAAyBzuC,IAAzB,CAAP;EAJwB;EAU1B0uC,mBAAmB1uC,IAAnB,EAAyB;IACvB,MAAMQ,KAAA,GAAQR,IAAA,CAAK,CAAL,CAAd;IACA,MAAMjiB,YAAA,GAAeiiB,IAAA,CAAK,CAAL,CAArB;IACA,MAAMuwB,MAAA,GAASvwB,IAAA,CAAK,CAAL,KAAWnuC,qBAA1B;IACA,MAAM,CAACsY,EAAD,EAAKC,EAAL,EAASC,EAAT,EAAaC,EAAb,IAAmB01B,IAAA,CAAK,CAAL,CAAzB;IACA,MAAM83B,KAAA,GAAQ93B,IAAA,CAAK,CAAL,CAAd;IACA,MAAM+3B,KAAA,GAAQ/3B,IAAA,CAAK,CAAL,CAAd;IACA,MAAMg4B,SAAA,GAAYh4B,IAAA,CAAK,CAAL,CAAlB;IAEA,MAAM2uC,QAAA,GAAY,UAASnC,YAAA,EAAV,EAAjB;IACA,MAAM,CAACoC,GAAD,EAAMC,GAAN,EAAWC,GAAX,EAAgBC,GAAhB,IAAuBxnE,UAAA,CAAKkC,aAAL,CAAmB,CAC9C,GAAGlC,UAAA,CAAKU,cAAL,CAAoB,CAACkC,EAAD,EAAKC,EAAL,CAApB,EAA8BmmD,MAA9B,CAD2C,EAE9C,GAAGhpD,UAAA,CAAKU,cAAL,CAAoB,CAACoC,EAAD,EAAKC,EAAL,CAApB,EAA8BimD,MAA9B,CAF2C,CAAnB,CAA7B;IAIA,MAAM,CAACye,MAAD,EAASC,MAAT,IAAmB1nE,UAAA,CAAKyB,6BAAL,CAAmCunD,MAAnC,CAAzB;IACA,MAAM2e,MAAA,GAASpX,KAAA,GAAQkX,MAAvB;IACA,MAAMG,MAAA,GAASpX,KAAA,GAAQkX,MAAvB;IAEA,MAAMG,MAAA,GAAS,KAAK1C,UAAL,CAAgBh3C,aAAhB,CAA8B,aAA9B,CAAf;IACA05C,MAAA,CAAOtB,cAAP,CAAsB,IAAtB,EAA4B,IAA5B,EAAkCa,QAAlC;IACAS,MAAA,CAAOtB,cAAP,CAAsB,IAAtB,EAA4B,cAA5B,EAA4C,gBAA5C;IACAsB,MAAA,CAAOtB,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqCoB,MAArC;IACAE,MAAA,CAAOtB,cAAP,CAAsB,IAAtB,EAA4B,QAA5B,EAAsCqB,MAAtC;IACAC,MAAA,CAAOtB,cAAP,CAAsB,IAAtB,EAA4B,GAA5B,EAAiC,GAAGc,GAAH,EAAjC;IACAQ,MAAA,CAAOtB,cAAP,CAAsB,IAAtB,EAA4B,GAA5B,EAAiC,GAAGe,GAAH,EAAjC;IAGA,MAAMpyC,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMkwC,eAAA,GAAkB,KAAKA,eAA7B;IACA,MAAM3tB,SAAA,GAAY,KAAK3G,OAAL,CAAa2G,SAA/B;IACA,MAAMC,WAAA,GAAc,KAAK5G,OAAL,CAAa4G,WAAjC;IAEA,MAAM0R,IAAA,GAAO,KAAK+b,UAAL,CAAgB7mE,MAAhB,CAAuBipE,GAAA,GAAMF,GAA7B,EAAkCG,GAAA,GAAMF,GAAxC,CAAb;IACA,KAAKpyC,GAAL,GAAWk0B,IAAX;IACA,KAAKgc,eAAL,GAAuBpc,MAAvB;IACA,IAAIyH,SAAA,KAAc,CAAlB,EAAqB;MACnB,MAAMiB,QAAA,GAAW1xD,UAAA,CAAKC,YAAL,CAAkB,GAAGg5B,KAArB,CAAjB;MACA,KAAK6X,OAAL,CAAa2G,SAAb,GAAyBia,QAAzB;MACA,KAAK5gB,OAAL,CAAa4G,WAAb,GAA2Bga,QAA3B;IAHmB;IAKrB,KAAKkU,aAAL,CAAmB,KAAKI,aAAL,CAAmBxvD,YAAnB,CAAnB;IAGA,KAAK0e,GAAL,GAAWA,GAAX;IACA,KAAKkwC,eAAL,GAAuBA,eAAvB;IACA,KAAKt0B,OAAL,CAAa2G,SAAb,GAAyBA,SAAzB;IACA,KAAK3G,OAAL,CAAa4G,WAAb,GAA2BA,WAA3B;IAEAmwB,MAAA,CAAOx5C,MAAP,CAAc+6B,IAAA,CAAK0e,UAAL,CAAgB,CAAhB,CAAd;IACA,KAAKvlC,IAAL,CAAUlU,MAAV,CAAiBw5C,MAAjB;IACA,OAAQ,QAAOT,QAAS,GAAxB;EAlDuB;EAwDzBF,oBAAoBzuC,IAApB,EAA0B;IACxB,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;MAC5BA,IAAA,GAAO,KAAK1kB,IAAL,CAAUnN,GAAV,CAAc6xB,IAAd,CAAP;IAD4B;IAG9B,QAAQA,IAAA,CAAK,CAAL,CAAR;MACE,KAAK,aAAL;QACE,MAAMsvC,SAAA,GAAa,UAAS9C,YAAA,EAAV,EAAlB;QACA,MAAM+C,UAAA,GAAavvC,IAAA,CAAK,CAAL,CAAnB;QACA,IAAIwvC,QAAJ;QAEA,QAAQxvC,IAAA,CAAK,CAAL,CAAR;UACE,KAAK,OAAL;YACE,MAAMyvC,MAAA,GAASzvC,IAAA,CAAK,CAAL,CAAf;YACA,MAAM0vC,MAAA,GAAS1vC,IAAA,CAAK,CAAL,CAAf;YACAwvC,QAAA,GAAW,KAAK9C,UAAL,CAAgBh3C,aAAhB,CAA8B,oBAA9B,CAAX;YACA85C,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoCwB,SAApC;YACAE,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,eAA9B,EAA+C,gBAA/C;YACA0B,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC2B,MAAA,CAAO,CAAP,CAApC;YACAD,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC2B,MAAA,CAAO,CAAP,CAApC;YACAD,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC4B,MAAA,CAAO,CAAP,CAApC;YACAF,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC4B,MAAA,CAAO,CAAP,CAApC;YACA;UACF,KAAK,QAAL;YACE,MAAMC,UAAA,GAAa3vC,IAAA,CAAK,CAAL,CAAnB;YACA,MAAM4vC,WAAA,GAAc5vC,IAAA,CAAK,CAAL,CAApB;YACA,MAAM6vC,WAAA,GAAc7vC,IAAA,CAAK,CAAL,CAApB;YACA,MAAM8vC,YAAA,GAAe9vC,IAAA,CAAK,CAAL,CAArB;YACAwvC,QAAA,GAAW,KAAK9C,UAAL,CAAgBh3C,aAAhB,CAA8B,oBAA9B,CAAX;YACA85C,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoCwB,SAApC;YACAE,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,eAA9B,EAA+C,gBAA/C;YACA0B,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC8B,WAAA,CAAY,CAAZ,CAApC;YACAJ,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC8B,WAAA,CAAY,CAAZ,CAApC;YACAJ,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,GAA9B,EAAmCgC,YAAnC;YACAN,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC6B,UAAA,CAAW,CAAX,CAApC;YACAH,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC6B,UAAA,CAAW,CAAX,CAApC;YACAH,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC+B,WAApC;YACA;UACF;YACE,MAAM,IAAIruE,KAAJ,CAAW,6BAA4Bw+B,IAAA,CAAK,CAAL,CAA7B,EAAV,CAAN;QA5BJ;QA8BA,WAAWg0B,SAAX,IAAwBub,UAAxB,EAAoC;UAClC,MAAMQ,IAAA,GAAO,KAAKrD,UAAL,CAAgBh3C,aAAhB,CAA8B,UAA9B,CAAb;UACAq6C,IAAA,CAAKjC,cAAL,CAAoB,IAApB,EAA0B,QAA1B,EAAoC9Z,SAAA,CAAU,CAAV,CAApC;UACA+b,IAAA,CAAKjC,cAAL,CAAoB,IAApB,EAA0B,YAA1B,EAAwC9Z,SAAA,CAAU,CAAV,CAAxC;UACAwb,QAAA,CAAS55C,MAAT,CAAgBm6C,IAAhB;QAJkC;QAMpC,KAAKjmC,IAAL,CAAUlU,MAAV,CAAiB45C,QAAjB;QACA,OAAQ,QAAOF,SAAU,GAAzB;MACF,KAAK,MAAL;QACE,IAAAhuE,UAAA,EAAK,4BAAL;QACA,OAAO,IAAP;MACF,KAAK,OAAL;QACE,OAAO,SAAP;MACF;QACE,MAAM,IAAIE,KAAJ,CAAW,oBAAmBw+B,IAAA,CAAK,CAAL,CAApB,EAAV,CAAN;IAlDJ;EAJwB;EA0D1B1kC,QAAQqvD,SAAR,EAAmBC,SAAnB,EAA8B;IAC5B,KAAKvS,OAAL,CAAasS,SAAb,GAAyBA,SAAzB;IACA,KAAKtS,OAAL,CAAauS,SAAb,GAAyBA,SAAzB;EAF4B;EAK9BpqD,cAAcgrD,GAAd,EAAmBxrB,IAAnB,EAAyB;IACvB,MAAMqY,OAAA,GAAU,KAAKA,OAArB;IACA,IAAI1nB,CAAA,GAAI0nB,OAAA,CAAQ1nB,CAAhB;MACEC,CAAA,GAAIynB,OAAA,CAAQznB,CADd;IAEA,IAAIroB,CAAA,GAAI,EAAR;IACA,IAAI4C,CAAA,GAAI,CAAR;IAEA,WAAW8nD,EAAX,IAAiBzH,GAAjB,EAAsB;MACpB,QAAQyH,EAAA,GAAK,CAAb;QACE,KAAKj4D,SAAA,CAAImB,SAAT;UACEw0B,CAAA,GAAIqP,IAAA,CAAK70B,CAAA,EAAL,CAAJ;UACAylB,CAAA,GAAIoP,IAAA,CAAK70B,CAAA,EAAL,CAAJ;UACA,MAAMwe,KAAA,GAAQqW,IAAA,CAAK70B,CAAA,EAAL,CAAd;UACA,MAAMye,MAAA,GAASoW,IAAA,CAAK70B,CAAA,EAAL,CAAf;UACA,MAAM0gD,EAAA,GAAKl7B,CAAA,GAAIhH,KAAf;UACA,MAAMmiC,EAAA,GAAKl7B,CAAA,GAAIhH,MAAf;UACArhB,CAAA,CAAErD,IAAF,CACE,GADF,EAEEinE,EAAA,CAAGx7C,CAAH,CAFF,EAGEw7C,EAAA,CAAGv7C,CAAH,CAHF,EAIE,GAJF,EAKEu7C,EAAA,CAAGtgB,EAAH,CALF,EAMEsgB,EAAA,CAAGv7C,CAAH,CANF,EAOE,GAPF,EAQEu7C,EAAA,CAAGtgB,EAAH,CARF,EASEsgB,EAAA,CAAGrgB,EAAH,CATF,EAUE,GAVF,EAWEqgB,EAAA,CAAGx7C,CAAH,CAXF,EAYEw7C,EAAA,CAAGrgB,EAAH,CAZF,EAaE,GAbF;UAeA;QACF,KAAK9wD,SAAA,CAAIa,MAAT;UACE80B,CAAA,GAAIqP,IAAA,CAAK70B,CAAA,EAAL,CAAJ;UACAylB,CAAA,GAAIoP,IAAA,CAAK70B,CAAA,EAAL,CAAJ;UACA5C,CAAA,CAAErD,IAAF,CAAO,GAAP,EAAYinE,EAAA,CAAGx7C,CAAH,CAAZ,EAAmBw7C,EAAA,CAAGv7C,CAAH,CAAnB;UACA;QACF,KAAK51B,SAAA,CAAIc,MAAT;UACE60B,CAAA,GAAIqP,IAAA,CAAK70B,CAAA,EAAL,CAAJ;UACAylB,CAAA,GAAIoP,IAAA,CAAK70B,CAAA,EAAL,CAAJ;UACA5C,CAAA,CAAErD,IAAF,CAAO,GAAP,EAAYinE,EAAA,CAAGx7C,CAAH,CAAZ,EAAmBw7C,EAAA,CAAGv7C,CAAH,CAAnB;UACA;QACF,KAAK51B,SAAA,CAAIe,OAAT;UACE40B,CAAA,GAAIqP,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAJ;UACAylB,CAAA,GAAIoP,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAJ;UACA5C,CAAA,CAAErD,IAAF,CACE,GADF,EAEEinE,EAAA,CAAGnsC,IAAA,CAAK70B,CAAL,CAAH,CAFF,EAGEghE,EAAA,CAAGnsC,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAH,CAHF,EAIEghE,EAAA,CAAGnsC,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAH,CAJF,EAKEghE,EAAA,CAAGnsC,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAH,CALF,EAMEghE,EAAA,CAAGx7C,CAAH,CANF,EAOEw7C,EAAA,CAAGv7C,CAAH,CAPF;UASAzlB,CAAA,IAAK,CAAL;UACA;QACF,KAAKnQ,SAAA,CAAIgB,QAAT;UACEuM,CAAA,CAAErD,IAAF,CACE,GADF,EAEEinE,EAAA,CAAGx7C,CAAH,CAFF,EAGEw7C,EAAA,CAAGv7C,CAAH,CAHF,EAIEu7C,EAAA,CAAGnsC,IAAA,CAAK70B,CAAL,CAAH,CAJF,EAKEghE,EAAA,CAAGnsC,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAH,CALF,EAMEghE,EAAA,CAAGnsC,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAH,CANF,EAOEghE,EAAA,CAAGnsC,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAH,CAPF;UASAwlB,CAAA,GAAIqP,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAJ;UACAylB,CAAA,GAAIoP,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAJ;UACAA,CAAA,IAAK,CAAL;UACA;QACF,KAAKnQ,SAAA,CAAIiB,QAAT;UACE00B,CAAA,GAAIqP,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAJ;UACAylB,CAAA,GAAIoP,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAJ;UACA5C,CAAA,CAAErD,IAAF,CAAO,GAAP,EAAYinE,EAAA,CAAGnsC,IAAA,CAAK70B,CAAL,CAAH,CAAZ,EAAyBghE,EAAA,CAAGnsC,IAAA,CAAK70B,CAAA,GAAI,CAAT,CAAH,CAAzB,EAA0CghE,EAAA,CAAGx7C,CAAH,CAA1C,EAAiDw7C,EAAA,CAAGv7C,CAAH,CAAjD,EAAwDu7C,EAAA,CAAGx7C,CAAH,CAAxD,EAA+Dw7C,EAAA,CAAGv7C,CAAH,CAA/D;UACAzlB,CAAA,IAAK,CAAL;UACA;QACF,KAAKnQ,SAAA,CAAIkB,SAAT;UACEqM,CAAA,CAAErD,IAAF,CAAO,GAAP;UACA;MAtEJ;IADoB;IA2EtBqD,CAAA,GAAIA,CAAA,CAAEpD,IAAF,CAAO,GAAP,CAAJ;IAEA,IACEkzC,OAAA,CAAQuF,IAAR,IACA4N,GAAA,CAAInpD,MAAJ,GAAa,CADb,IAEAmpD,GAAA,CAAI,CAAJ,MAAWxwD,SAAA,CAAImB,SAFf,IAGAqvD,GAAA,CAAI,CAAJ,MAAWxwD,SAAA,CAAIa,MAJjB,EAKE;MAIA0M,CAAA,GAAI8vC,OAAA,CAAQuF,IAAR,CAAaoyB,cAAb,CAA4B,IAA5B,EAAkC,GAAlC,IAAyCznE,CAA7C;IAJA,CALF,MAUO;MACL8vC,OAAA,CAAQuF,IAAR,GAAe,KAAK8uB,UAAL,CAAgBh3C,aAAhB,CAA8B,UAA9B,CAAf;MACA,KAAKy4C,qBAAL,GAA6Bv4C,MAA7B,CAAoCyiB,OAAA,CAAQuF,IAA5C;IAFK;IAKPvF,OAAA,CAAQuF,IAAR,CAAakwB,cAAb,CAA4B,IAA5B,EAAkC,GAAlC,EAAuCvlE,CAAvC;IACA8vC,OAAA,CAAQuF,IAAR,CAAakwB,cAAb,CAA4B,IAA5B,EAAkC,MAAlC,EAA0C,MAA1C;IAIAz1B,OAAA,CAAQtc,OAAR,GAAkBsc,OAAA,CAAQuF,IAA1B;IACAvF,OAAA,CAAQqH,eAAR,CAAwB/uB,CAAxB,EAA2BC,CAA3B;EAzGuB;EA4GzBh0B,QAAA,EAAU;IACR,MAAMy7C,OAAA,GAAU,KAAKA,OAArB;IAGAA,OAAA,CAAQuF,IAAR,GAAe,IAAf;IAEA,IAAI,CAAC,KAAKwI,WAAV,EAAuB;MACrB;IADqB;IAGvB,IAAI,CAAC/N,OAAA,CAAQtc,OAAb,EAAsB;MACpB,KAAKqqB,WAAL,GAAmB,IAAnB;MACA;IAFoB;IAMtB,MAAM6pB,MAAA,GAAU,WAAU3D,SAAA,EAAX,EAAf;IACA,MAAM4D,QAAA,GAAW,KAAKxD,UAAL,CAAgBh3C,aAAhB,CAA8B,cAA9B,CAAjB;IACAw6C,QAAA,CAASpC,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoCmC,MAApC;IACAC,QAAA,CAASpC,cAAT,CAAwB,IAAxB,EAA8B,WAA9B,EAA2C1B,EAAA,CAAG,KAAKO,eAAR,CAA3C;IAGA,MAAMwD,WAAA,GAAc93B,OAAA,CAAQtc,OAAR,CAAgBq0C,SAAhB,CAA0B,IAA1B,CAApB;IACA,IAAI,KAAKhqB,WAAL,KAAqB,SAAzB,EAAoC;MAClC+pB,WAAA,CAAYrC,cAAZ,CAA2B,IAA3B,EAAiC,WAAjC,EAA8C,SAA9C;IADkC,CAApC,MAEO;MACLqC,WAAA,CAAYrC,cAAZ,CAA2B,IAA3B,EAAiC,WAAjC,EAA8C,SAA9C;IADK;IAGP,KAAK1nB,WAAL,GAAmB,IAAnB;IACA8pB,QAAA,CAASt6C,MAAT,CAAgBu6C,WAAhB;IACA,KAAKrmC,IAAL,CAAUlU,MAAV,CAAiBs6C,QAAjB;IAEA,IAAI73B,OAAA,CAAQszB,aAAZ,EAA2B;MAGzBtzB,OAAA,CAAQuzB,SAAR,GAAoB,IAApB;MACA,WAAWt/B,IAAX,IAAmB,KAAKugC,UAAxB,EAAoC;QAClCvgC,IAAA,CAAKs/B,SAAL,GAAiB,IAAjB;MADkC;MAIpCsE,QAAA,CAASpC,cAAT,CAAwB,IAAxB,EAA8B,WAA9B,EAA2Cz1B,OAAA,CAAQszB,aAAnD;IARyB;IAU3BtzB,OAAA,CAAQszB,aAAR,GAAyB,QAAOsE,MAAO,GAAvC;IAEA,KAAK/C,IAAL,GAAY,IAAZ;EA3CQ;EA8CVrwE,KAAKlL,IAAL,EAAW;IACT,KAAKy0D,WAAL,GAAmBz0D,IAAnB;EADS;EAIXuK,UAAA,EAAY;IACV,MAAMm8C,OAAA,GAAU,KAAKA,OAArB;IACA,IAAIA,OAAA,CAAQuF,IAAZ,EAAkB;MAChB,MAAMr1C,CAAA,GAAI,GAAG8vC,OAAA,CAAQuF,IAAR,CAAaoyB,cAAb,CAA4B,IAA5B,EAAkC,GAAlC,CAAuC,GAApD;MACA33B,OAAA,CAAQuF,IAAR,CAAakwB,cAAb,CAA4B,IAA5B,EAAkC,GAAlC,EAAuCvlE,CAAvC;IAFgB;EAFR;EAQZnL,WAAWohD,OAAX,EAAoB;IAClB,KAAKnG,OAAL,CAAamG,OAAb,GAAuB,CAACA,OAAxB;EADkB;EAIpBjhD,YAAYwhD,QAAZ,EAAsB;IACpB,KAAK1G,OAAL,CAAa0G,QAAb,GAAwBA,QAAxB;EADoB;EAItBzhD,qBAAqBwhD,iBAArB,EAAwC;IACtC,KAAKzG,OAAL,CAAayG,iBAAb,GAAiCA,iBAAjC;EADsC;EAIxC3hD,UAAU2e,KAAV,EAAiB;IACf,KAAKu8B,OAAL,CAAawG,UAAb,GAA0B/iC,KAAA,GAAQ,GAAlC;EADe;EAIjBvgB,mBAAmB+gB,MAAnB,EAA2B;EAI3B9gB,YAAYqvD,QAAZ,EAAsB;EAItBpvD,UAAUqvD,MAAV,EAAkB;IAChB,WAAW,CAAChlD,GAAD,EAAMjD,KAAN,CAAX,IAA2BioD,MAA3B,EAAmC;MACjC,QAAQhlD,GAAR;QACE,KAAK,IAAL;UACE,KAAK5K,YAAL,CAAkB2H,KAAlB;UACA;QACF,KAAK,IAAL;UACE,KAAK1H,UAAL,CAAgB0H,KAAhB;UACA;QACF,KAAK,IAAL;UACE,KAAKzH,WAAL,CAAiByH,KAAjB;UACA;QACF,KAAK,IAAL;UACE,KAAKxH,aAAL,CAAmBwH,KAAnB;UACA;QACF,KAAK,GAAL;UACE,KAAKvH,OAAL,CAAauH,KAAA,CAAM,CAAN,CAAb,EAAuBA,KAAA,CAAM,CAAN,CAAvB;UACA;QACF,KAAK,IAAL;UACE,KAAKtH,kBAAL,CAAwBsH,KAAxB;UACA;QACF,KAAK,IAAL;UACE,KAAKrH,WAAL,CAAiBqH,KAAjB;UACA;QACF,KAAK,MAAL;UACE,KAAKxF,OAAL,CAAawF,KAAb;UACA;QACF,KAAK,IAAL;UACE,KAAKyrE,cAAL,CAAoBzrE,KAApB;UACA;QACF,KAAK,IAAL;UACE,KAAK0rE,YAAL,CAAkB1rE,KAAlB;UACA;QACF;UACE,IAAAvB,UAAA,EAAM,wCAAuCwE,GAAxC,EAAL;UACA;MAjCJ;IADiC;EADnB;EAwClBxJ,KAAA,EAAO;IACL,MAAM+7C,OAAA,GAAU,KAAKA,OAArB;IACA,IAAIA,OAAA,CAAQtc,OAAZ,EAAqB;MACnBsc,OAAA,CAAQtc,OAAR,CAAgB+xC,cAAhB,CAA+B,IAA/B,EAAqC,MAArC,EAA6Cz1B,OAAA,CAAQ2G,SAArD;MACA3G,OAAA,CAAQtc,OAAR,CAAgB+xC,cAAhB,CAA+B,IAA/B,EAAqC,cAArC,EAAqDz1B,OAAA,CAAQ8G,SAA7D;MACA,KAAKviD,OAAL;IAHmB;EAFhB;EASPR,OAAA,EAAS;IACP,MAAMi8C,OAAA,GAAU,KAAKA,OAArB;IACA,IAAIA,OAAA,CAAQtc,OAAZ,EAAqB;MACnB,KAAKmyC,oBAAL,CAA0B71B,OAAA,CAAQtc,OAAlC;MACAsc,OAAA,CAAQtc,OAAR,CAAgB+xC,cAAhB,CAA+B,IAA/B,EAAqC,MAArC,EAA6C,MAA7C;MACA,KAAKlxE,OAAL;IAHmB;EAFd;EAYTsxE,qBAAqBnyC,OAArB,EAA8BkyC,cAAA,GAAiB,CAA/C,EAAkD;IAChD,MAAM51B,OAAA,GAAU,KAAKA,OAArB;IACA,IAAIsS,SAAA,GAAYtS,OAAA,CAAQsS,SAAxB;IACA,IAAIsjB,cAAA,KAAmB,CAAnB,IAAwBtjB,SAAA,CAAUtoD,MAAV,GAAmB,CAA/C,EAAkD;MAChDsoD,SAAA,GAAYA,SAAA,CAAU/kD,GAAV,CAAc,UAAU/C,KAAV,EAAiB;QACzC,OAAOorE,cAAA,GAAiBprE,KAAxB;MADyC,CAA/B,CAAZ;IADgD;IAKlDk5B,OAAA,CAAQ+xC,cAAR,CAAuB,IAAvB,EAA6B,QAA7B,EAAuCz1B,OAAA,CAAQ4G,WAA/C;IACAljB,OAAA,CAAQ+xC,cAAR,CAAuB,IAAvB,EAA6B,gBAA7B,EAA+Cz1B,OAAA,CAAQ+G,WAAvD;IACArjB,OAAA,CAAQ+xC,cAAR,CAAuB,IAAvB,EAA6B,mBAA7B,EAAkD3B,EAAA,CAAG9zB,OAAA,CAAQiL,UAAX,CAAlD;IACAvnB,OAAA,CAAQ+xC,cAAR,CAAuB,IAAvB,EAA6B,gBAA7B,EAA+Cz1B,OAAA,CAAQ+K,OAAvD;IACArnB,OAAA,CAAQ+xC,cAAR,CAAuB,IAAvB,EAA6B,iBAA7B,EAAgDz1B,OAAA,CAAQgL,QAAxD;IACAtnB,OAAA,CAAQ+xC,cAAR,CACE,IADF,EAEE,cAFF,EAGE3B,EAAA,CAAG8B,cAAA,GAAiB51B,OAAA,CAAQgH,SAA5B,IAAyC,IAH3C;IAKAtjB,OAAA,CAAQ+xC,cAAR,CACE,IADF,EAEE,kBAFF,EAGEnjB,SAAA,CAAU/kD,GAAV,CAAcumE,EAAd,EAAkBhnE,IAAlB,CAAuB,GAAvB,CAHF;IAKA42B,OAAA,CAAQ+xC,cAAR,CACE,IADF,EAEE,mBAFF,EAGE3B,EAAA,CAAG8B,cAAA,GAAiB51B,OAAA,CAAQuS,SAA5B,IAAyC,IAH3C;EAvBgD;EA8BlDruD,OAAA,EAAS;IACP,KAAK87C,OAAL,CAAatc,OAAb,EAAsB+xC,cAAtB,CAAqC,IAArC,EAA2C,WAA3C,EAAwD,SAAxD;IACA,KAAKxxE,IAAL;EAFO;EAKTE,WAAA,EAAa;IAGX,KAAKJ,MAAL;IACA,KAAKE,IAAL;EAJW;EAObG,aAAA,EAAe;IACb,KAAK47C,OAAL,CAAatc,OAAb,EAAsB+xC,cAAtB,CAAqC,IAArC,EAA2C,WAA3C,EAAwD,SAAxD;IACA,KAAKtxE,UAAL;EAFa;EAKfH,YAAA,EAAc;IACZ,KAAKH,SAAL;IACA,KAAKE,MAAL;EAFY;EAKdM,gBAAA,EAAkB;IAChB,KAAKR,SAAL;IACA,KAAKM,UAAL;EAFgB;EAKlBG,kBAAA,EAAoB;IAClB,KAAKT,SAAL;IACA,KAAKO,YAAL;EAFkB;EAKpB8D,yBAAA,EAA2B;IACzB,MAAMmJ,IAAA,GAAO,KAAKgjE,UAAL,CAAgBh3C,aAAhB,CAA8B,UAA9B,CAAb;IACAhsB,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,GAA1B,EAA+B,GAA/B;IACApkE,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,GAA1B,EAA+B,GAA/B;IACApkE,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,OAA1B,EAAmC,KAAnC;IACApkE,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,QAA1B,EAAoC,KAApC;IACApkE,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,MAA1B,EAAkC,KAAKz1B,OAAL,CAAa2G,SAA/C;IAEA,KAAKmvB,qBAAL,GAA6Bv4C,MAA7B,CAAoClsB,IAApC;EARyB;EAW3BxJ,kBAAkBqqB,KAAlB,EAAyB;IACvB,MAAMuyB,OAAA,GAAU,KAAK4K,SAAL,CAAen9B,KAAf,CAAhB;IACA,IAAI,CAACuyB,OAAL,EAAc;MACZ,IAAAx7C,UAAA,EAAM,kCAAiCipB,KAAM,mBAA7C;MACA;IAFY;IAId,KAAKpqB,uBAAL,CAA6B28C,OAA7B;EANuB;EASzB38C,wBAAwB28C,OAAxB,EAAiCS,IAAjC,EAAuC;IACrC,MAAM5zB,KAAA,GAAQmzB,OAAA,CAAQnzB,KAAtB;IACA,MAAMC,MAAA,GAASkzB,OAAA,CAAQlzB,MAAvB;IAEA,MAAMymD,MAAA,GAASxG,mBAAA,CAAoB/sB,OAApB,EAA6B,KAAKssB,eAAlC,EAAmD,CAAC,CAAC7rB,IAArD,CAAf;IACA,MAAM+yB,QAAA,GAAW,KAAK5D,UAAL,CAAgBh3C,aAAhB,CAA8B,UAA9B,CAAjB;IACA46C,QAAA,CAASxC,cAAT,CAAwB,IAAxB,EAA8B,GAA9B,EAAmC,GAAnC;IACAwC,QAAA,CAASxC,cAAT,CAAwB,IAAxB,EAA8B,GAA9B,EAAmC,GAAnC;IACAwC,QAAA,CAASxC,cAAT,CAAwB,IAAxB,EAA8B,OAA9B,EAAuC3B,EAAA,CAAGxiD,KAAH,CAAvC;IACA2mD,QAAA,CAASxC,cAAT,CAAwB,IAAxB,EAA8B,QAA9B,EAAwC3B,EAAA,CAAGviD,MAAH,CAAxC;IACA,KAAKyuB,OAAL,CAAatc,OAAb,GAAuBu0C,QAAvB;IACA,KAAKzzE,IAAL,CAAU,SAAV;IAEA,MAAM0zE,KAAA,GAAQ,KAAK7D,UAAL,CAAgBh3C,aAAhB,CAA8B,WAA9B,CAAd;IACA66C,KAAA,CAAMzC,cAAN,CAAqB5E,QAArB,EAA+B,YAA/B,EAA6CmH,MAA7C;IACAE,KAAA,CAAMzC,cAAN,CAAqB,IAArB,EAA2B,GAA3B,EAAgC,GAAhC;IACAyC,KAAA,CAAMzC,cAAN,CAAqB,IAArB,EAA2B,GAA3B,EAAgC3B,EAAA,CAAG,CAACviD,MAAJ,CAAhC;IACA2mD,KAAA,CAAMzC,cAAN,CAAqB,IAArB,EAA2B,OAA3B,EAAoC3B,EAAA,CAAGxiD,KAAH,IAAY,IAAhD;IACA4mD,KAAA,CAAMzC,cAAN,CAAqB,IAArB,EAA2B,QAA3B,EAAqC3B,EAAA,CAAGviD,MAAH,IAAa,IAAlD;IACA2mD,KAAA,CAAMzC,cAAN,CACE,IADF,EAEE,WAFF,EAGG,SAAQ3B,EAAA,CAAG,IAAIxiD,KAAP,CAAc,IAAGwiD,EAAA,CAAG,CAAC,CAAD,GAAKviD,MAAR,CAAgB,GAH5C;IAKA,IAAI2zB,IAAJ,EAAU;MACRA,IAAA,CAAK3nB,MAAL,CAAY26C,KAAZ;IADQ,CAAV,MAEO;MACL,KAAKpC,qBAAL,GAA6Bv4C,MAA7B,CAAoC26C,KAApC;IADK;EA1B8B;EA+BvCvwE,sBAAsBgpD,GAAtB,EAA2B;IACzB,MAAMlM,OAAA,GAAU,KAAK4K,SAAL,CAAesB,GAAA,CAAIt7C,IAAnB,EAAyBs7C,GAAzB,CAAhB;IACA,IAAIlM,OAAA,CAAQpzB,MAAZ,EAAoB;MAClB,IAAApoB,UAAA,EACE,oEACE,yEAFJ;MAIA;IALkB;IAOpB,MAAM+2C,OAAA,GAAU,KAAKA,OAArB;IACA,MAAM1uB,KAAA,GAAQmzB,OAAA,CAAQnzB,KAAtB;IACA,MAAMC,MAAA,GAASkzB,OAAA,CAAQlzB,MAAvB;IACA,MAAMo1B,SAAA,GAAY3G,OAAA,CAAQ2G,SAA1B;IAEA3G,OAAA,CAAQwzB,MAAR,GAAkB,OAAMU,SAAA,EAAP,EAAjB;IACA,MAAMhvB,IAAA,GAAO,KAAKmvB,UAAL,CAAgBh3C,aAAhB,CAA8B,UAA9B,CAAb;IACA6nB,IAAA,CAAKuwB,cAAL,CAAoB,IAApB,EAA0B,IAA1B,EAAgCz1B,OAAA,CAAQwzB,MAAxC;IAEA,MAAMniE,IAAA,GAAO,KAAKgjE,UAAL,CAAgBh3C,aAAhB,CAA8B,UAA9B,CAAb;IACAhsB,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,GAA1B,EAA+B,GAA/B;IACApkE,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,GAA1B,EAA+B,GAA/B;IACApkE,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,OAA1B,EAAmC3B,EAAA,CAAGxiD,KAAH,CAAnC;IACAjgB,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,QAA1B,EAAoC3B,EAAA,CAAGviD,MAAH,CAApC;IACAlgB,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,MAA1B,EAAkC9uB,SAAlC;IACAt1C,IAAA,CAAKokE,cAAL,CAAoB,IAApB,EAA0B,MAA1B,EAAmC,QAAOz1B,OAAA,CAAQwzB,MAAO,GAAzD;IAEA,KAAK/hC,IAAL,CAAUlU,MAAV,CAAiB2nB,IAAjB;IACA,KAAK4wB,qBAAL,GAA6Bv4C,MAA7B,CAAoClsB,IAApC;IAEA,KAAKvJ,uBAAL,CAA6B28C,OAA7B,EAAsCS,IAAtC;EA7ByB;EAgC3B79C,sBAAsB6wD,MAAtB,EAA8BI,IAA9B,EAAoC;IAClC,IAAIxpD,KAAA,CAAM++B,OAAN,CAAcqqB,MAAd,KAAyBA,MAAA,CAAOluD,MAAP,KAAkB,CAA/C,EAAkD;MAChD,KAAKzG,SAAL,CACE20D,MAAA,CAAO,CAAP,CADF,EAEEA,MAAA,CAAO,CAAP,CAFF,EAGEA,MAAA,CAAO,CAAP,CAHF,EAIEA,MAAA,CAAO,CAAP,CAJF,EAKEA,MAAA,CAAO,CAAP,CALF,EAMEA,MAAA,CAAO,CAAP,CANF;IADgD;IAWlD,IAAII,IAAJ,EAAU;MACR,MAAMhnC,KAAA,GAAQgnC,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAxB;MACA,MAAM/mC,MAAA,GAAS+mC,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAzB;MAEA,MAAM2f,QAAA,GAAW,KAAK5D,UAAL,CAAgBh3C,aAAhB,CAA8B,UAA9B,CAAjB;MACA46C,QAAA,CAASxC,cAAT,CAAwB,IAAxB,EAA8B,GAA9B,EAAmCnd,IAAA,CAAK,CAAL,CAAnC;MACA2f,QAAA,CAASxC,cAAT,CAAwB,IAAxB,EAA8B,GAA9B,EAAmCnd,IAAA,CAAK,CAAL,CAAnC;MACA2f,QAAA,CAASxC,cAAT,CAAwB,IAAxB,EAA8B,OAA9B,EAAuC3B,EAAA,CAAGxiD,KAAH,CAAvC;MACA2mD,QAAA,CAASxC,cAAT,CAAwB,IAAxB,EAA8B,QAA9B,EAAwC3B,EAAA,CAAGviD,MAAH,CAAxC;MACA,KAAKyuB,OAAL,CAAatc,OAAb,GAAuBu0C,QAAvB;MACA,KAAKzzE,IAAL,CAAU,SAAV;MACA,KAAKD,OAAL;IAXQ;EAZwB;EA2BpC+C,oBAAA,EAAsB;EAKtB+kB,YAAY3H,QAAZ,EAAsB;IACpB,MAAM0f,GAAA,GAAM,KAAKiwC,UAAL,CAAgB7mE,MAAhB,CAAuBkX,QAAA,CAAS4M,KAAhC,EAAuC5M,QAAA,CAAS6M,MAAhD,CAAZ;IAGA,MAAM4mD,WAAA,GAAc,KAAK9D,UAAL,CAAgBh3C,aAAhB,CAA8B,UAA9B,CAApB;IACA+G,GAAA,CAAI7G,MAAJ,CAAW46C,WAAX;IACA,KAAK1mC,IAAL,GAAY0mC,WAAZ;IAIA,MAAMC,SAAA,GAAY,KAAK/D,UAAL,CAAgBh3C,aAAhB,CAA8B,OAA9B,CAAlB;IACA+6C,SAAA,CAAU3C,cAAV,CAAyB,IAAzB,EAA+B,WAA/B,EAA4C1B,EAAA,CAAGrvD,QAAA,CAASnhB,SAAZ,CAA5C;IACA6gC,GAAA,CAAI7G,MAAJ,CAAW66C,SAAX;IAKA,KAAKh0C,GAAL,GAAWg0C,SAAX;IAEA,OAAOh0C,GAAP;EAnBoB;EAyBtBi0C,iBAAA,EAAmB;IACjB,IAAI,CAAC,KAAKr4B,OAAL,CAAauzB,SAAlB,EAA6B;MAC3B,MAAMA,SAAA,GAAY,KAAKc,UAAL,CAAgBh3C,aAAhB,CAA8B,OAA9B,CAAlB;MACAk2C,SAAA,CAAUkC,cAAV,CAAyB,IAAzB,EAA+B,WAA/B,EAA4C,KAAKz1B,OAAL,CAAaszB,aAAzD;MACA,KAAKlvC,GAAL,CAAS7G,MAAT,CAAgBg2C,SAAhB;MACA,KAAKvzB,OAAL,CAAauzB,SAAb,GAAyBA,SAAzB;IAJ2B;IAM7B,OAAO,KAAKvzB,OAAL,CAAauzB,SAApB;EAPiB;EAanBuC,sBAAA,EAAwB;IACtB,IAAI,CAAC,KAAKjB,IAAV,EAAgB;MACd,KAAKA,IAAL,GAAY,KAAKR,UAAL,CAAgBh3C,aAAhB,CAA8B,OAA9B,CAAZ;MACA,KAAKw3C,IAAL,CAAUY,cAAV,CAAyB,IAAzB,EAA+B,WAA/B,EAA4C1B,EAAA,CAAG,KAAKO,eAAR,CAA5C;MACA,IAAI,KAAKt0B,OAAL,CAAaszB,aAAjB,EAAgC;QAC9B,KAAK+E,gBAAL,GAAwB96C,MAAxB,CAA+B,KAAKs3C,IAApC;MAD8B,CAAhC,MAEO;QACL,KAAKzwC,GAAL,CAAS7G,MAAT,CAAgB,KAAKs3C,IAArB;MADK;IALO;IAShB,OAAO,KAAKA,IAAZ;EAVsB;AA5tCR;AAzblBt7E,mBAAA,GAAA66E,WAAA;;;;;;;;;;;;ACeA,MAAMnsD,OAAN,CAAc;EAUZ,OAAOJ,WAAPA,CAAmBG,GAAnB,EAAwB;IACtB,MAAMF,KAAA,GAAQ,EAAd;IACA,MAAMwqD,MAAA,GAAS;MACbxqD,KADa;MAEbU,MAAA,EAAQ9d,MAAA,CAAO8C,MAAP,CAAc,IAAd;IAFK,CAAf;IAIA,SAAS8qE,IAATA,CAAclG,IAAd,EAAoB;MAClB,IAAI,CAACA,IAAL,EAAW;QACT;MADS;MAGX,IAAIplE,GAAA,GAAM,IAAV;MACA,MAAM9B,IAAA,GAAOknE,IAAA,CAAKlnE,IAAlB;MACA,IAAIA,IAAA,KAAS,OAAb,EAAsB;QACpB8B,GAAA,GAAMolE,IAAA,CAAK5nE,KAAX;MADoB,CAAtB,MAEO,IAAI,CAACyd,OAAA,CAAQswD,eAAR,CAAwBrtE,IAAxB,CAAL,EAAoC;QACzC;MADyC,CAApC,MAEA,IAAIknE,IAAA,EAAMz4B,UAAN,EAAkB9xB,WAAtB,EAAmC;QACxC7a,GAAA,GAAMolE,IAAA,CAAKz4B,UAAL,CAAgB9xB,WAAtB;MADwC,CAAnC,MAEA,IAAIuqD,IAAA,CAAK5nE,KAAT,EAAgB;QACrBwC,GAAA,GAAMolE,IAAA,CAAK5nE,KAAX;MADqB;MAGvB,IAAIwC,GAAA,KAAQ,IAAZ,EAAkB;QAChB8a,KAAA,CAAMjb,IAAN,CAAW;UACTG;QADS,CAAX;MADgB;MAKlB,IAAI,CAAColE,IAAA,CAAK7tD,QAAV,EAAoB;QAClB;MADkB;MAGpB,WAAWi0D,KAAX,IAAoBpG,IAAA,CAAK7tD,QAAzB,EAAmC;QACjC+zD,IAAA,CAAKE,KAAL;MADiC;IAvBjB;IA2BpBF,IAAA,CAAKtwD,GAAL;IACA,OAAOsqD,MAAP;EAlCsB;EA2CxB,OAAOiG,eAAPA,CAAuBrtE,IAAvB,EAA6B;IAC3B,OAAO,EACLA,IAAA,KAAS,UAAT,IACAA,IAAA,KAAS,OADT,IAEAA,IAAA,KAAS,QAFT,IAGAA,IAAA,KAAS,QAHT,CADF;EAD2B;AArDjB;AAfd3R,eAAA,GAAA0uB,OAAA;;;;;;;;;;;;;;ACkBA,IAAA3R,KAAA,GAAAC,mBAAA;AAMA,IAAAE,cAAA,GAAAF,mBAAA;AA6CA,MAAMkiE,uBAAA,GAA0B,MAAhC;AACA,MAAMC,iBAAA,GAAoB,EAA1B;AACA,MAAMC,mBAAA,GAAsB,GAA5B;AACA,MAAMC,WAAA,GAAc,IAAIljE,GAAJ,EAApB;AAEA,SAASmjE,MAATA,CAAgBjxD,IAAhB,EAAsB1Z,0BAAtB,EAAkD;EAChD,IAAIm2B,GAAJ;EACA,IAAIn2B,0BAAA,IAA8BD,iBAAA,CAAYC,0BAA9C,EAA0E;IACxEm2B,GAAA,GAAM,IAAIl2B,eAAJ,CAAoByZ,IAApB,EAA0BA,IAA1B,EAAgC0c,UAAhC,CAA2C,IAA3C,EAAiD;MAAEinB,KAAA,EAAO;IAAT,CAAjD,CAAN;EADwE,CAA1E,MAEO;IACL,MAAMj5B,MAAA,GAASjY,QAAA,CAASgjB,aAAT,CAAuB,QAAvB,CAAf;IACA/K,MAAA,CAAOhB,KAAP,GAAegB,MAAA,CAAOf,MAAP,GAAgB3J,IAA/B;IACAyc,GAAA,GAAM/R,MAAA,CAAOgS,UAAP,CAAkB,IAAlB,EAAwB;MAAEinB,KAAA,EAAO;IAAT,CAAxB,CAAN;EAHK;EAMP,OAAOlnB,GAAP;AAVgD;AAalD,SAASy0C,SAATA,CAAmB55B,UAAnB,EAA+BhxC,0BAA/B,EAA2D;EACzD,MAAM6qE,YAAA,GAAeH,WAAA,CAAY9iE,GAAZ,CAAgBopC,UAAhB,CAArB;EACA,IAAI65B,YAAJ,EAAkB;IAChB,OAAOA,YAAP;EADgB;EAIlB,MAAM10C,GAAA,GAAMw0C,MAAA,CAAOH,iBAAP,EAA0BxqE,0BAA1B,CAAZ;EAEAm2B,GAAA,CAAIvT,IAAJ,GAAW,GAAG4nD,iBAAkB,MAAKx5B,UAA1B,EAAX;EACA,MAAM85B,OAAA,GAAU30C,GAAA,CAAIqyB,WAAJ,CAAgB,EAAhB,CAAhB;EAGA,IAAIuiB,MAAA,GAASD,OAAA,CAAQE,qBAArB;EACA,IAAIC,OAAA,GAAU1sE,IAAA,CAAKoG,GAAL,CAASmmE,OAAA,CAAQI,sBAAjB,CAAd;EACA,IAAIH,MAAJ,EAAY;IACV,MAAMI,KAAA,GAAQJ,MAAA,IAAUA,MAAA,GAASE,OAAT,CAAxB;IACAP,WAAA,CAAYvzD,GAAZ,CAAgB65B,UAAhB,EAA4Bm6B,KAA5B;IAEAh1C,GAAA,CAAI/R,MAAJ,CAAWhB,KAAX,GAAmB+S,GAAA,CAAI/R,MAAJ,CAAWf,MAAX,GAAoB,CAAvC;IACA,OAAO8nD,KAAP;EALU;EAYZh1C,GAAA,CAAIsmB,WAAJ,GAAkB,KAAlB;EACAtmB,GAAA,CAAI8sB,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBunB,iBAApB,EAAuCA,iBAAvC;EACAr0C,GAAA,CAAI0wB,UAAJ,CAAe,GAAf,EAAoB,CAApB,EAAuB,CAAvB;EACA,IAAIukB,MAAA,GAASj1C,GAAA,CAAIK,YAAJ,CACX,CADW,EAEX,CAFW,EAGXg0C,iBAHW,EAIXA,iBAJW,EAKXrjE,IALF;EAMA8jE,OAAA,GAAU,CAAV;EACA,KAAK,IAAI5sE,CAAA,GAAI+sE,MAAA,CAAOtvE,MAAP,GAAgB,CAAhB,GAAoB,CAA5B,EAA+BuC,CAAA,IAAK,CAAzC,EAA4CA,CAAA,IAAK,CAAjD,EAAoD;IAClD,IAAI+sE,MAAA,CAAO/sE,CAAP,IAAY,CAAhB,EAAmB;MACjB4sE,OAAA,GAAU1sE,IAAA,CAAKkgD,IAAL,CAAUpgD,CAAA,GAAI,CAAJ,GAAQmsE,iBAAlB,CAAV;MACA;IAFiB;EAD+B;EAUpDr0C,GAAA,CAAI8sB,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBunB,iBAApB,EAAuCA,iBAAvC;EACAr0C,GAAA,CAAI0wB,UAAJ,CAAe,GAAf,EAAoB,CAApB,EAAuB2jB,iBAAvB;EACAY,MAAA,GAASj1C,GAAA,CAAIK,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuBg0C,iBAAvB,EAA0CA,iBAA1C,EAA6DrjE,IAAtE;EACA4jE,MAAA,GAAS,CAAT;EACA,KAAK,IAAI1sE,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAK6lE,MAAA,CAAOtvE,MAAvB,EAA+BuC,CAAA,GAAIkH,EAAxC,EAA4ClH,CAAA,IAAK,CAAjD,EAAoD;IAClD,IAAI+sE,MAAA,CAAO/sE,CAAP,IAAY,CAAhB,EAAmB;MACjB0sE,MAAA,GAASP,iBAAA,GAAoBjsE,IAAA,CAAK2J,KAAL,CAAW7J,CAAA,GAAI,CAAJ,GAAQmsE,iBAAnB,CAA7B;MACA;IAFiB;EAD+B;EAOpDr0C,GAAA,CAAI/R,MAAJ,CAAWhB,KAAX,GAAmB+S,GAAA,CAAI/R,MAAJ,CAAWf,MAAX,GAAoB,CAAvC;EAEA,IAAI0nD,MAAJ,EAAY;IACV,MAAMI,KAAA,GAAQJ,MAAA,IAAUA,MAAA,GAASE,OAAT,CAAxB;IACAP,WAAA,CAAYvzD,GAAZ,CAAgB65B,UAAhB,EAA4Bm6B,KAA5B;IACA,OAAOA,KAAP;EAHU;EAMZT,WAAA,CAAYvzD,GAAZ,CAAgB65B,UAAhB,EAA4By5B,mBAA5B;EACA,OAAOA,mBAAP;AAlEyD;AAqE3D,SAASY,UAATA,CAAoB9gE,IAApB,EAA0B+gE,IAA1B,EAAgChxD,MAAhC,EAAwC;EAEtC,MAAMixD,OAAA,GAAUp/D,QAAA,CAASgjB,aAAT,CAAuB,MAAvB,CAAhB;EACA,MAAMq8C,iBAAA,GAAoB;IACxBv9C,KAAA,EAAO,CADiB;IAExB68B,WAAA,EAAa,CAFW;IAGxB2gB,OAAA,EAASH,IAAA,CAAKxsE,GAAL,KAAa,EAHE;IAIxB4sE,MAAA,EAAQJ,IAAA,CAAKI,MAJW;IAKxB9zB,QAAA,EAAU;EALc,CAA1B;EAOArtC,IAAA,CAAKohE,SAAL,CAAehtE,IAAf,CAAoB4sE,OAApB;EAEA,MAAMv+C,EAAA,GAAKhsB,UAAA,CAAK3L,SAAL,CAAekV,IAAA,CAAKqhE,UAApB,EAAgCN,IAAA,CAAKj2E,SAArC,CAAX;EACA,IAAI44B,KAAA,GAAQ1vB,IAAA,CAAKstE,KAAL,CAAW7+C,EAAA,CAAG,CAAH,CAAX,EAAkBA,EAAA,CAAG,CAAH,CAAlB,CAAZ;EACA,MAAMb,KAAA,GAAQ7R,MAAA,CAAOgxD,IAAA,CAAKQ,QAAZ,CAAd;EACA,IAAI3/C,KAAA,CAAM+6B,QAAV,EAAoB;IAClBj5B,KAAA,IAAS1vB,IAAA,CAAKjL,EAAL,GAAU,CAAnB;EADkB;EAGpB,MAAMy4E,UAAA,GAAaxtE,IAAA,CAAKk0B,KAAL,CAAWzF,EAAA,CAAG,CAAH,CAAX,EAAkBA,EAAA,CAAG,CAAH,CAAlB,CAAnB;EACA,MAAMg/C,UAAA,GACJD,UAAA,GAAanB,SAAA,CAAUz+C,KAAA,CAAM6kB,UAAhB,EAA4BzmC,IAAA,CAAK0hE,2BAAjC,CADf;EAGA,IAAIp+C,IAAJ,EAAUE,GAAV;EACA,IAAIE,KAAA,KAAU,CAAd,EAAiB;IACfJ,IAAA,GAAOb,EAAA,CAAG,CAAH,CAAP;IACAe,GAAA,GAAMf,EAAA,CAAG,CAAH,IAAQg/C,UAAd;EAFe,CAAjB,MAGO;IACLn+C,IAAA,GAAOb,EAAA,CAAG,CAAH,IAAQg/C,UAAA,GAAaztE,IAAA,CAAK2tE,GAAL,CAASj+C,KAAT,CAA5B;IACAF,GAAA,GAAMf,EAAA,CAAG,CAAH,IAAQg/C,UAAA,GAAaztE,IAAA,CAAK4tE,GAAL,CAASl+C,KAAT,CAA3B;EAFK;EAKP,MAAMm+C,cAAA,GAAiB,2BAAvB;EACA,MAAMC,QAAA,GAAWd,OAAA,CAAQp/C,KAAzB;EAGA,IAAI5hB,IAAA,CAAK+hE,UAAL,KAAoB/hE,IAAA,CAAKgiE,cAA7B,EAA6C;IAC3CF,QAAA,CAASx+C,IAAT,GAAgB,GAAI,CAAC,MAAMA,IAAP,GAAetjB,IAAA,CAAKiiE,UAApB,EAAgC1+C,OAAjC,CAAyC,CAAzC,CAA4C,GAA/D;IACAu+C,QAAA,CAASt+C,GAAT,GAAe,GAAI,CAAC,MAAMA,GAAP,GAAcxjB,IAAA,CAAKkiE,WAAnB,EAAgC3+C,OAAjC,CAAyC,CAAzC,CAA4C,GAA9D;EAF2C,CAA7C,MAGO;IAELu+C,QAAA,CAASx+C,IAAT,GAAgB,GAAGu+C,cAAH,GAAoBv+C,IAAA,CAAKC,OAAL,CAAa,CAAb,CAAgB,KAApD;IACAu+C,QAAA,CAASt+C,GAAT,GAAe,GAAGq+C,cAAH,GAAoBr+C,GAAA,CAAID,OAAJ,CAAY,CAAZ,CAAe,KAAlD;EAHK;EAKPu+C,QAAA,CAASz0B,QAAT,GAAoB,GAAGw0B,cAAH,GAAoBL,UAAA,CAAWj+C,OAAX,CAAmB,CAAnB,CAAsB,KAA9D;EACAu+C,QAAA,CAASr7B,UAAT,GAAsB7kB,KAAA,CAAM6kB,UAA5B;EAEAw6B,iBAAA,CAAkB5zB,QAAlB,GAA6Bm0B,UAA7B;EAGAR,OAAA,CAAQ74C,YAAR,CAAqB,MAArB,EAA6B,cAA7B;EAEA64C,OAAA,CAAQ5xD,WAAR,GAAsB2xD,IAAA,CAAKxsE,GAA3B;EAEAysE,OAAA,CAAQmB,GAAR,GAAcpB,IAAA,CAAKoB,GAAnB;EAIA,IAAIniE,IAAA,CAAKoiE,qBAAT,EAAgC;IAC9BpB,OAAA,CAAQqB,OAAR,CAAgBd,QAAhB,GAA2BR,IAAA,CAAKQ,QAAhC;EAD8B;EAGhC,IAAI79C,KAAA,KAAU,CAAd,EAAiB;IACfu9C,iBAAA,CAAkBv9C,KAAlB,GAA0BA,KAAA,IAAS,MAAM1vB,IAAA,CAAKjL,EAAX,CAAnC;EADe;EAMjB,IAAIu5E,eAAA,GAAkB,KAAtB;EACA,IAAIvB,IAAA,CAAKxsE,GAAL,CAAShD,MAAT,GAAkB,CAAtB,EAAyB;IACvB+wE,eAAA,GAAkB,IAAlB;EADuB,CAAzB,MAEO,IAAIvB,IAAA,CAAKxsE,GAAL,KAAa,GAAb,IAAoBwsE,IAAA,CAAKj2E,SAAL,CAAe,CAAf,MAAsBi2E,IAAA,CAAKj2E,SAAL,CAAe,CAAf,CAA9C,EAAiE;IACtE,MAAMy3E,SAAA,GAAYvuE,IAAA,CAAKoG,GAAL,CAAS2mE,IAAA,CAAKj2E,SAAL,CAAe,CAAf,CAAT,CAAlB;MACE03E,SAAA,GAAYxuE,IAAA,CAAKoG,GAAL,CAAS2mE,IAAA,CAAKj2E,SAAL,CAAe,CAAf,CAAT,CADd;IAIA,IACEy3E,SAAA,KAAcC,SAAd,IACAxuE,IAAA,CAAKgE,GAAL,CAASuqE,SAAT,EAAoBC,SAApB,IAAiCxuE,IAAA,CAAKC,GAAL,CAASsuE,SAAT,EAAoBC,SAApB,CAAjC,GAAkE,GAFpE,EAGE;MACAF,eAAA,GAAkB,IAAlB;IADA;EARoE;EAYxE,IAAIA,eAAJ,EAAqB;IACnBrB,iBAAA,CAAkB1gB,WAAlB,GAAgC3+B,KAAA,CAAM+6B,QAAN,GAAiBokB,IAAA,CAAKjoD,MAAtB,GAA+BioD,IAAA,CAAKloD,KAApE;EADmB;EAGrB7Y,IAAA,CAAKyiE,kBAAL,CAAwB71D,GAAxB,CAA4Bo0D,OAA5B,EAAqCC,iBAArC;EACA,IAAIjhE,IAAA,CAAK0iE,iBAAT,EAA4B;IAC1B1iE,IAAA,CAAK2iE,WAAL,CAAiB3B,OAAjB;EAD0B;AArFU;AA0FxC,SAAS4B,MAATA,CAAgB1+D,MAAhB,EAAwB;EACtB,MAAM;IAAE4a,GAAF;IAAO9T,KAAP;IAAc4mC,UAAd;IAA0BhmB,GAA1B;IAA+Bi3C,YAA/B;IAA6CC;EAA7C,IAAgE5+D,MAAtE;EACA,MAAM;IAAE0d;EAAF,IAAY9C,GAAlB;EACA,IAAIh0B,SAAA,GAAY,EAAhB;EACA,IAAI8mD,UAAA,CAAW2O,WAAX,KAA2B,CAA3B,IAAgC3O,UAAA,CAAWsvB,OAA/C,EAAwD;IACtD,MAAM;MAAEz6B;IAAF,IAAiB7kB,KAAvB;IACA,MAAM;MAAE2+B,WAAF;MAAelT;IAAf,IAA4BuE,UAAlC;IAEA,IAAIixB,YAAA,KAAiBx1B,QAAjB,IAA6By1B,cAAA,KAAmBr8B,UAApD,EAAgE;MAC9D7a,GAAA,CAAIvT,IAAJ,GAAW,GAAGg1B,QAAA,GAAWriC,KAAM,MAAKy7B,UAAzB,EAAX;MACAviC,MAAA,CAAO2+D,YAAP,GAAsBx1B,QAAtB;MACAnpC,MAAA,CAAO4+D,cAAP,GAAwBr8B,UAAxB;IAH8D;IAOhE,MAAM;MAAE5tB;IAAF,IAAY+S,GAAA,CAAIqyB,WAAJ,CAAgBn/B,GAAA,CAAI1P,WAApB,CAAlB;IAEA,IAAIyJ,KAAA,GAAQ,CAAZ,EAAe;MACb/tB,SAAA,GAAa,UAAUy1D,WAAA,GAAcv1C,KAAf,GAAwB6N,KAAM,GAApD;IADa;EAbuC;EAiBxD,IAAI+4B,UAAA,CAAWluB,KAAX,KAAqB,CAAzB,EAA4B;IAC1B54B,SAAA,GAAa,UAAS8mD,UAAA,CAAWluB,KAAM,QAAO54B,SAAlC,EAAZ;EAD0B;EAG5B,IAAIA,SAAA,CAAUyG,MAAV,GAAmB,CAAvB,EAA0B;IACxBqwB,KAAA,CAAM92B,SAAN,GAAkBA,SAAlB;EADwB;AAxBJ;AA6BxB,SAASihB,MAATA,CAAgB/L,IAAhB,EAAsB;EACpB,IAAIA,IAAA,CAAK+iE,SAAT,EAAoB;IAClB;EADkB;EAGpB,MAAMC,QAAA,GAAWhjE,IAAA,CAAKohE,SAAtB;EACA,MAAMvzD,UAAA,GAAa7N,IAAA,CAAK+E,WAAxB;EACA,MAAMk+D,cAAA,GAAiBD,QAAA,CAASzxE,MAAhC;EAIA,IAAI0xE,cAAA,GAAiBjD,uBAArB,EAA8C;IAC5CnyD,UAAA,CAAWnR,OAAX;IACA;EAF4C;EAK9C,IAAI,CAACsD,IAAA,CAAK0iE,iBAAV,EAA6B;IAC3B,WAAW1B,OAAX,IAAsBgC,QAAtB,EAAgC;MAC9BhjE,IAAA,CAAK2iE,WAAL,CAAiB3B,OAAjB;IAD8B;EADL;EAK7BnzD,UAAA,CAAWnR,OAAX;AApBoB;AAuBtB,MAAMwmE,mBAAN,CAA0B;EACxBxwE,YAAY;IACVywE,iBADU;IAEV3wC,SAFU;IAGVvmB,QAHU;IAIV+2D,QAJU;IAKV/B,iBALU;IAMVmC,mBANU;IAOV3tE;EAPU,CAAZ,EAQG;IACD,KAAK4tE,kBAAL,GAA0BF,iBAA1B;IACA,KAAKT,iBAAL,GAAyBS,iBAAA,YAA6BhY,cAAtD;IACA,KAAK4W,UAAL,GAAkB,KAAKC,cAAL,GAAsBxvC,SAAxC;IACA,KAAK4uC,SAAL,GAAiB4B,QAAA,IAAY,EAA7B;IACA,KAAKM,oBAAL,GAA4BF,mBAAA,IAAuB,EAAnD;IACA,KAAK1B,2BAAL,GAAmCjsE,0BAAnC;IACA,KAAK2sE,qBAAL,GAA6B,CAAC,CAACnsE,UAAA,CAAWkiB,aAAX,EAA0BC,OAAzD;IAEA,KAAK44C,OAAL,GAAe,IAAf;IACA,KAAKyR,kBAAL,GAA0BxB,iBAAA,IAAqB,IAAIvtD,OAAJ,EAA/C;IACA,KAAKqvD,SAAL,GAAiB,KAAjB;IACA,KAAKh+D,WAAL,GAAmB,IAAIzI,uBAAJ,EAAnB;IACA,KAAKinE,iBAAL,GAAyB;MACvBV,YAAA,EAAc,IADS;MAEvBC,cAAA,EAAgB,IAFO;MAGvBhkD,GAAA,EAAK,IAHkB;MAIvB9T,KAAA,EAAOiB,QAAA,CAASjB,KAAT,IAAkB/U,UAAA,CAAW6+C,gBAAX,IAA+B,CAA/B,CAJF;MAKvBlD,UAAA,EAAY,IALW;MAMvBhmB,GAAA,EAAKw0C,MAAA,CAAO,CAAP,EAAU3qE,0BAAV;IANkB,CAAzB;IAQA,MAAM;MAAE2pB,SAAF;MAAaC,UAAb;MAAyBC,KAAzB;MAAgCC;IAAhC,IAA0CtT,QAAA,CAASkT,OAAzD;IACA,KAAKkiD,UAAL,GAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAC,CAAX,EAAc,CAAC/hD,KAAf,EAAsBC,KAAA,GAAQF,UAA9B,CAAlB;IACA,KAAK4iD,UAAL,GAAkB7iD,SAAlB;IACA,KAAK8iD,WAAL,GAAmB7iD,UAAnB;IAEA,IAAAsiB,iCAAA,EAAmBnP,SAAnB,EAA8BvmB,QAA9B;IAGA,KAAKlH,WAAL,CAAiBvI,OAAjB,CACGic,OADH,CACW,MAAM;MACb,KAAK8qD,iBAAL,GAAyB,IAAzB;IADa,CADjB,EAIGz+D,KAJH,CAIS,MAAM,EAJf;EA7BC;EA0CH,IAAItI,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAKuI,WAAL,CAAiBvI,OAAxB;EADY;EAOd+T,OAAA,EAAS;IACP,KAAKwyD,SAAL,GAAiB,IAAjB;IACA,IAAI,KAAK/R,OAAT,EAAkB;MAChB,KAAKA,OAAL,CACGzgD,MADH,CACU,IAAIld,oBAAJ,CAAmB,2BAAnB,CADV,EAEGyR,KAFH,CAES,MAAM,EAFf;MAKA,KAAKksD,OAAL,GAAe,IAAf;IANgB;IAQlB,KAAKjsD,WAAL,CAAiBpI,MAAjB,CAAwB,IAAItJ,oBAAJ,CAAmB,2BAAnB,CAAxB;EAVO;EAgBTmwE,cAAcn0D,KAAd,EAAqBo0D,UAArB,EAAiC;IAC/B,WAAWxiD,IAAX,IAAmB5R,KAAnB,EAA0B;MACxB,IAAI4R,IAAA,CAAK1sB,GAAL,KAAaf,SAAjB,EAA4B;QAC1B,IACEytB,IAAA,CAAKpgC,IAAL,KAAc,yBAAd,IACAogC,IAAA,CAAKpgC,IAAL,KAAc,oBAFhB,EAGE;UACA,MAAM48B,MAAA,GAAS,KAAKskD,UAApB;UACA,KAAKA,UAAL,GAAkBngE,QAAA,CAASgjB,aAAT,CAAuB,MAAvB,CAAlB;UACA,KAAKm9C,UAAL,CAAgB3gD,SAAhB,CAA0BhT,GAA1B,CAA8B,eAA9B;UACA,IAAI6S,IAAA,CAAK7Y,EAAL,KAAY,IAAhB,EAAsB;YACpB,KAAK25D,UAAL,CAAgB55C,YAAhB,CAA6B,IAA7B,EAAmC,GAAGlH,IAAA,CAAK7Y,EAAR,EAAnC;UADoB;UAGtBqV,MAAA,CAAOqH,MAAP,CAAc,KAAKi9C,UAAnB;QAPA,CAHF,MAWO,IAAI9gD,IAAA,CAAKpgC,IAAL,KAAc,kBAAlB,EAAsC;UAC3C,KAAKkhF,UAAL,GAAkB,KAAKA,UAAL,CAAgBpmC,UAAlC;QAD2C;QAG7C;MAf0B;MAiB5B,KAAK2nC,oBAAL,CAA0BlvE,IAA1B,CAA+B6sB,IAAA,CAAK1sB,GAApC;MACAusE,UAAA,CAAW,IAAX,EAAiB7/C,IAAjB,EAAuBwiD,UAAvB;IAnBwB;EADK;EA2BjCd,YAAY3B,OAAZ,EAAqB;IACnB,MAAMC,iBAAA,GAAqB,KAAKsC,iBAAL,CAAuB3xB,UAAvB,GACzB,KAAK6wB,kBAAL,CAAwBplE,GAAxB,CAA4B2jE,OAA5B,CADF;IAEA,KAAKuC,iBAAL,CAAuBzkD,GAAvB,GAA6BkiD,OAA7B;IACA4B,MAAA,CAAO,KAAKW,iBAAZ;IAEA,IAAItC,iBAAA,CAAkBC,OAAtB,EAA+B;MAC7B,KAAKa,UAAL,CAAgBj9C,MAAhB,CAAuBk8C,OAAvB;IAD6B;IAG/B,IAAIC,iBAAA,CAAkBE,MAAtB,EAA8B;MAC5B,MAAMuC,EAAA,GAAK9hE,QAAA,CAASgjB,aAAT,CAAuB,IAAvB,CAAX;MACA8+C,EAAA,CAAGv7C,YAAH,CAAgB,MAAhB,EAAwB,cAAxB;MACA,KAAK45C,UAAL,CAAgBj9C,MAAhB,CAAuB4+C,EAAvB;IAH4B;EATX;EAmBrBC,QAAA,EAAU;IACR,MAAM91D,UAAA,GAAa,IAAIvR,uBAAJ,EAAnB;IACA,IAAImnE,UAAA,GAAaxxE,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAjB;IAEA,IAAI,KAAK2tE,iBAAT,EAA4B;MAC1B,MAAMhzD,IAAA,GAAOA,CAAA,KAAM;QACjB,KAAKshD,OAAL,CAAaphD,IAAb,GAAoBrM,IAApB,CAAyB,CAAC;UAAExR,KAAF;UAAS8d;QAAT,CAAD,KAAqB;UAC5C,IAAIA,IAAJ,EAAU;YACRhC,UAAA,CAAWnR,OAAX;YACA;UAFQ;UAKVzK,MAAA,CAAO6d,MAAP,CAAc2zD,UAAd,EAA0B1xE,KAAA,CAAMge,MAAhC;UACA,KAAKyzD,aAAL,CAAmBzxE,KAAA,CAAMsd,KAAzB,EAAgCo0D,UAAhC;UACA/zD,IAAA;QAR4C,CAA9C,EASG7B,UAAA,CAAWlR,MATd;MADiB,CAAnB;MAaA,KAAKq0D,OAAL,GAAe,KAAKqS,kBAAL,CAAwBrzD,SAAxB,EAAf;MACAN,IAAA;IAf0B,CAA5B,MAgBO,IAAI,KAAK2zD,kBAAT,EAA6B;MAClC,MAAM;QAAEh0D,KAAF;QAASU;MAAT,IAAoB,KAAKszD,kBAA/B;MACA,KAAKG,aAAL,CAAmBn0D,KAAnB,EAA0BU,MAA1B;MACAlC,UAAA,CAAWnR,OAAX;IAHkC,CAA7B,MAIA;MACL,MAAM,IAAIhM,KAAJ,CAAU,6CAAV,CAAN;IADK;IAIPmd,UAAA,CAAWrR,OAAX,CAAmB+G,IAAnB,CAAwB,MAAM;MAC5BkgE,UAAA,GAAa,IAAb;MACA13D,MAAA,CAAO,IAAP;IAF4B,CAA9B,EAGG,KAAKhH,WAAL,CAAiBpI,MAHpB;EA5BQ;AAxHc;AA1S1B7b,2BAAA,GAAAoiF,mBAAA;AAycA,SAASU,eAATA,CAAyB1/D,MAAzB,EAAiC;EAC/B,IAEE,CAACA,MAAA,CAAOi/D,iBADR,KAECj/D,MAAA,CAAOkL,WAAP,IAAsBlL,MAAA,CAAO2/D,iBAA7B,CAHH,EAIE;IACA,IAAAz8D,yBAAA,EACE,sEACE,wEAFJ;IAIAlD,MAAA,CAAOi/D,iBAAP,GAA2Bj/D,MAAA,CAAOkL,WAAP,IAAsBlL,MAAA,CAAO2/D,iBAAxD;EALA;EAQA,MAAM;IAAErxC,SAAF;IAAavmB;EAAb,IAA0B/H,MAAhC;EACA,MAAM0d,KAAA,GAAQoE,gBAAA,CAAiBwM,SAAjB,CAAd;EACA,MAAMyG,UAAA,GAAarX,KAAA,CAAMwa,gBAAN,CAAuB,YAAvB,CAAnB;EACA,MAAM0nC,WAAA,GAAcv/C,UAAA,CAAW3C,KAAA,CAAMwa,gBAAN,CAAuB,gBAAvB,CAAX,CAApB;EAEA,IACEnD,UAAA,KAAe,SAAf,KACC,CAAC6qC,WAAD,IAAgB9vE,IAAA,CAAKoG,GAAL,CAAS0pE,WAAA,GAAc73D,QAAA,CAASjB,KAAhC,IAAyC,IAAzD,CAFH,EAGE;IACA1a,OAAA,CAAQkd,KAAR,CACE,oDACE,yCADF,GAEE,mEAHJ;EADA;EAQJ,MAAMxN,IAAA,GAAO,IAAIkjE,mBAAJ,CAAwBh/D,MAAxB,CAAb;EACAlE,IAAA,CAAK2jE,OAAL;EACA,OAAO3jE,IAAP;AA/B+B;AAsCjC,SAAS+jE,eAATA,CAAyB;EACvBvxC,SADuB;EAEvBvmB,QAFuB;EAGvB+2D,QAHuB;EAIvB/B,iBAJuB;EAKvBxrE,0BALuB;EAMvBosC,UAAA,GAAa,IANU;EAOvBmiC,WAAA,GAAc;AAPS,CAAzB,EAQG;EACD,IAAIniC,UAAJ,EAAgB;IACd,IAAAF,iCAAA,EAAmBnP,SAAnB,EAA8B;MAAEvnB,QAAA,EAAUgB,QAAA,CAAShB;IAArB,CAA9B;EADc;EAIhB,IAAI+4D,WAAJ,EAAiB;IACf,MAAMp4C,GAAA,GAAMw0C,MAAA,CAAO,CAAP,EAAU3qE,0BAAV,CAAZ;IACA,MAAMuV,KAAA,GAAQiB,QAAA,CAASjB,KAAT,IAAkB/U,UAAA,CAAW6+C,gBAAX,IAA+B,CAA/B,CAAhC;IACA,MAAM5wC,MAAA,GAAS;MACb2+D,YAAA,EAAc,IADD;MAEbC,cAAA,EAAgB,IAFH;MAGbhkD,GAAA,EAAK,IAHQ;MAIb9T,KAJa;MAKb4mC,UAAA,EAAY,IALC;MAMbhmB;IANa,CAAf;IAQA,WAAW9M,GAAX,IAAkBkkD,QAAlB,EAA4B;MAC1B9+D,MAAA,CAAO0tC,UAAP,GAAoBqvB,iBAAA,CAAkB5jE,GAAlB,CAAsByhB,GAAtB,CAApB;MACA5a,MAAA,CAAO4a,GAAP,GAAaA,GAAb;MACA8jD,MAAA,CAAO1+D,MAAP;IAH0B;EAXb;AALhB;;;;;;;;;;;;AC/dH,IAAArG,KAAA,GAAAC,mBAAA;AACA,IAAA6d,OAAA,GAAA7d,mBAAA;AACA,IAAAmmE,SAAA,GAAAnmE,mBAAA;AACA,IAAAomE,IAAA,GAAApmE,mBAAA;AACA,IAAAE,cAAA,GAAAF,mBAAA;AACA,IAAAqmE,MAAA,GAAArmE,mBAAA;AAuBA,MAAMsmE,qBAAN,CAA4B;EAC1B,CAAAC,oBAAA;EAEA,CAAAC,UAAA,GAAc,KAAd;EAEA,CAAAC,eAAA,GAAmB,IAAnB;EAEA,CAAAC,cAAA,GAAkB,KAAKC,SAAL,CAAejsD,IAAf,CAAoB,IAApB,CAAlB;EAEA,CAAAksD,gBAAA,GAAoB,KAAKl8C,WAAL,CAAiBhQ,IAAjB,CAAsB,IAAtB,CAApB;EAEA,CAAAuc,OAAA,GAAW,IAAI93B,GAAJ,EAAX;EAEA,CAAA0nE,cAAA,GAAkB,KAAlB;EAEA,CAAAC,YAAA,GAAgB,KAAhB;EAEA,CAAAC,WAAA,GAAe,KAAf;EAEA,CAAA9lD,SAAA;EAEA,OAAO+lD,YAAP,GAAsB,KAAtB;EAKApyE,YAAY;IACVqsB,SADU;IAEV/U,SAFU;IAGV8U,GAHU;IAIVulD,oBAJU;IAKVE,eALU;IAMVt4D,QANU;IAOV84D;EAPU,CAAZ,EAQG;IACD,MAAMt0C,WAAA,GAAc,CAACu0C,wBAAD,EAAiBC,cAAjB,EAA4BC,kBAA5B,CAApB;IACA,IAAI,CAACd,qBAAA,CAAsBU,YAA3B,EAAyC;MACvCV,qBAAA,CAAsBU,YAAtB,GAAqC,IAArC;MACA,WAAW5vC,UAAX,IAAyBzE,WAAzB,EAAsC;QACpCyE,UAAA,CAAWzU,UAAX,CAAsBskD,IAAtB;MADoC;IAFC;IAMzChmD,SAAA,CAAUiX,mBAAV,CAA8BvF,WAA9B;IAEA,KAAK,CAAA1R,SAAL,GAAkBA,SAAlB;IACA,KAAK/U,SAAL,GAAiBA,SAAjB;IACA,KAAK8U,GAAL,GAAWA,GAAX;IACA,KAAK,CAAAulD,oBAAL,GAA6BA,oBAA7B;IACA,KAAK,CAAAE,eAAL,GAAwBA,eAAxB;IACA,KAAKt4D,QAAL,GAAgBA,QAAhB;IAEA,KAAK,CAAA8S,SAAL,CAAgBoX,QAAhB,CAAyB,IAAzB;EAjBC;EAoBH,IAAI7T,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK,CAAAyS,OAAL,CAAc5lB,IAAd,KAAuB,CAA9B;EADY;EAQdwnB,cAAc3F,IAAd,EAAoB;IAClB,KAAK,CAAAjS,SAAL,CAAgB4X,aAAhB,CAA8B3F,IAA9B;EADkB;EAQpBuF,WAAWvF,IAAA,GAAO,KAAK,CAAAjS,SAAL,CAAgBmZ,OAAhB,EAAlB,EAA6C;IAC3C,KAAK,CAAA7uB,OAAL;IACA,IAAI2nB,IAAA,KAAS5uC,0BAAA,CAAqBI,GAAlC,EAAuC;MAErC,KAAK2iF,oBAAL,CAA0B,KAA1B;MACA,KAAKpuC,YAAL;IAHqC,CAAvC,MAIO;MACL,KAAKC,WAAL;IADK;IAIP,IAAIhG,IAAA,KAAS5uC,0BAAA,CAAqBC,IAAlC,EAAwC;MACtC,KAAKy8B,GAAL,CAASsC,SAAT,CAAmBC,MAAnB,CACE,iBADF,EAEE2P,IAAA,KAAS5uC,0BAAA,CAAqBE,QAFhC;MAIA,KAAKw8B,GAAL,CAASsC,SAAT,CAAmBC,MAAnB,CACE,YADF,EAEE2P,IAAA,KAAS5uC,0BAAA,CAAqBI,GAFhC;MAIA,KAAKs8B,GAAL,CAASsC,SAAT,CAAmBC,MAAnB,CACE,cADF,EAEE2P,IAAA,KAAS5uC,0BAAA,CAAqBG,KAFhC;MAIA,KAAKu8B,GAAL,CAASsmD,MAAT,GAAkB,KAAlB;IAbsC;EAVG;EA2B7CD,qBAAqBE,YAArB,EAAmC;IACjC,IACE,CAACA,YAAD,IACA,KAAK,CAAAtmD,SAAL,CAAgBmZ,OAAhB,OAA8B91C,0BAAA,CAAqBI,GAFrD,EAGE;MACA;IADA;IAIF,IAAI,CAAC6iF,YAAL,EAAmB;MAGjB,WAAWjlD,MAAX,IAAqB,KAAK,CAAA2U,OAAL,CAAc3kB,MAAd,EAArB,EAA6C;QAC3C,IAAIgQ,MAAA,CAAOkC,OAAP,EAAJ,EAAsB;UACpBlC,MAAA,CAAOuB,eAAP;UACA;QAFoB;MADqB;IAH5B;IAWnB,MAAMvB,MAAA,GAAS,KAAK,CAAAklD,qBAAL,CACb;MAAEp6D,OAAA,EAAS,CAAX;MAAcC,OAAA,EAAS;IAAvB,CADa,EAEM,KAFN,CAAf;IAIAiV,MAAA,CAAOuB,eAAP;EAvBiC;EA8BnCoU,gBAAgB5X,SAAhB,EAA2B;IACzB,KAAK,CAAAY,SAAL,CAAgBgX,eAAhB,CAAgC5X,SAAhC;EADyB;EAQ3BsD,YAAYvd,MAAZ,EAAoB;IAClB,KAAK,CAAA6a,SAAL,CAAgB0C,WAAhB,CAA4Bvd,MAA5B;EADkB;EAQpBkyB,OAAA,EAAS;IACP,KAAKtX,GAAL,CAAS8C,KAAT,CAAe2jD,aAAf,GAA+B,MAA/B;IACA,MAAMC,oBAAA,GAAuB,IAAIr3D,GAAJ,EAA7B;IACA,WAAWiS,MAAX,IAAqB,KAAK,CAAA2U,OAAL,CAAc3kB,MAAd,EAArB,EAA6C;MAC3CgQ,MAAA,CAAOuK,aAAP;MACA,IAAIvK,MAAA,CAAOpB,mBAAX,EAAgC;QAC9BwmD,oBAAA,CAAqBp3D,GAArB,CAAyBgS,MAAA,CAAOpB,mBAAhC;MAD8B;IAFW;IAO7C,IAAI,CAAC,KAAK,CAAAulD,eAAV,EAA4B;MAC1B;IAD0B;IAI5B,MAAMkB,SAAA,GAAY,KAAK,CAAAlB,eAAL,CAAsBmB,sBAAtB,EAAlB;IACA,WAAWC,QAAX,IAAuBF,SAAvB,EAAkC;MAEhCE,QAAA,CAASC,IAAT;MACA,IAAI,KAAK,CAAA7mD,SAAL,CAAgBsY,0BAAhB,CAA2CsuC,QAAA,CAAS/oE,IAAT,CAAcwL,EAAzD,CAAJ,EAAkE;QAChE;MADgE;MAGlE,IAAIo9D,oBAAA,CAAqB/xD,GAArB,CAAyBkyD,QAAA,CAAS/oE,IAAT,CAAcwL,EAAvC,CAAJ,EAAgD;QAC9C;MAD8C;MAGhD,MAAMgY,MAAA,GAAS,KAAK4J,WAAL,CAAiB27C,QAAjB,CAAf;MACA,IAAI,CAACvlD,MAAL,EAAa;QACX;MADW;MAGb,KAAKmX,YAAL,CAAkBnX,MAAlB;MACAA,MAAA,CAAOuK,aAAP;IAdgC;EAf3B;EAoCT0L,QAAA,EAAU;IACR,KAAK,CAAAwuC,WAAL,GAAoB,IAApB;IACA,KAAK/lD,GAAL,CAAS8C,KAAT,CAAe2jD,aAAf,GAA+B,MAA/B;IACA,MAAMM,mBAAA,GAAsB,IAAI13D,GAAJ,EAA5B;IACA,WAAWiS,MAAX,IAAqB,KAAK,CAAA2U,OAAL,CAAc3kB,MAAd,EAArB,EAA6C;MAC3CgQ,MAAA,CAAOsK,cAAP;MACA,IAAI,CAACtK,MAAA,CAAOpB,mBAAR,IAA+BoB,MAAA,CAAOhD,SAAP,OAAuB,IAA1D,EAAgE;QAC9DyoD,mBAAA,CAAoBz3D,GAApB,CAAwBgS,MAAA,CAAOpB,mBAA/B;QACA;MAF8D;MAIhE,KAAK8mD,qBAAL,CAA2B1lD,MAAA,CAAOpB,mBAAlC,GAAwD+mD,IAAxD;MACA3lD,MAAA,CAAO9D,MAAP;IAP2C;IAU7C,IAAI,KAAK,CAAAioD,eAAT,EAA2B;MAEzB,MAAMkB,SAAA,GAAY,KAAK,CAAAlB,eAAL,CAAsBmB,sBAAtB,EAAlB;MACA,WAAWC,QAAX,IAAuBF,SAAvB,EAAkC;QAChC,MAAM;UAAEr9D;QAAF,IAASu9D,QAAA,CAAS/oE,IAAxB;QACA,IACEipE,mBAAA,CAAoBpyD,GAApB,CAAwBrL,EAAxB,KACA,KAAK,CAAA2W,SAAL,CAAgBsY,0BAAhB,CAA2CjvB,EAA3C,CAFF,EAGE;UACA;QADA;QAGFu9D,QAAA,CAASI,IAAT;MARgC;IAHT;IAe3B,KAAK,CAAA18D,OAAL;IACA,IAAI,KAAKiZ,OAAT,EAAkB;MAChB,KAAKxD,GAAL,CAASsmD,MAAT,GAAkB,IAAlB;IADgB;IAGlB,KAAK,CAAAP,WAAL,GAAoB,KAApB;EAjCQ;EAoCViB,sBAAsB19D,EAAtB,EAA0B;IACxB,OAAO,KAAK,CAAAm8D,eAAL,EAAuBuB,qBAAvB,CAA6C19D,EAA7C,KAAoD,IAA3D;EADwB;EAQ1B0iB,gBAAgB1K,MAAhB,EAAwB;IACtB,MAAM4lD,aAAA,GAAgB,KAAK,CAAAjnD,SAAL,CAAgB0W,SAAhB,EAAtB;IACA,IAAIuwC,aAAA,KAAkB5lD,MAAtB,EAA8B;MAC5B;IAD4B;IAI9B,KAAK,CAAArB,SAAL,CAAgB+L,eAAhB,CAAgC1K,MAAhC;EANsB;EASxB4W,YAAA,EAAc;IACZ,KAAKlY,GAAL,CAAS7M,gBAAT,CAA0B,aAA1B,EAAyC,KAAK,CAAAyyD,gBAA9C;IACA,KAAK5lD,GAAL,CAAS7M,gBAAT,CAA0B,WAA1B,EAAuC,KAAK,CAAAuyD,cAA5C;EAFY;EAKdztC,aAAA,EAAe;IACb,KAAKjY,GAAL,CAAS5M,mBAAT,CAA6B,aAA7B,EAA4C,KAAK,CAAAwyD,gBAAjD;IACA,KAAK5lD,GAAL,CAAS5M,mBAAT,CAA6B,WAA7B,EAA0C,KAAK,CAAAsyD,cAA/C;EAFa;EAKfyB,OAAO7lD,MAAP,EAAe;IACb,KAAK,CAAA2U,OAAL,CAAcnoB,GAAd,CAAkBwT,MAAA,CAAOhY,EAAzB,EAA6BgY,MAA7B;IACA,MAAM;MAAEpB;IAAF,IAA0BoB,MAAhC;IACA,IACEpB,mBAAA,IACA,KAAK,CAAAD,SAAL,CAAgBsY,0BAAhB,CAA2CrY,mBAA3C,CAFF,EAGE;MACA,KAAK,CAAAD,SAAL,CAAgBuY,8BAAhB,CAA+ClX,MAA/C;IADA;EANW;EAWf8lD,OAAO9lD,MAAP,EAAe;IACb,KAAK,CAAA2U,OAAL,CAAcrnB,MAAd,CAAqB0S,MAAA,CAAOhY,EAA5B;IACA,KAAK,CAAAi8D,oBAAL,EAA4B8B,wBAA5B,CAAqD/lD,MAAA,CAAOyK,UAA5D;IAEA,IAAI,CAAC,KAAK,CAAAg6C,WAAN,IAAsBzkD,MAAA,CAAOpB,mBAAjC,EAAsD;MACpD,KAAK,CAAAD,SAAL,CAAgBqY,2BAAhB,CAA4ChX,MAA5C;IADoD;EAJzC;EAaf9D,OAAO8D,MAAP,EAAe;IAIb,KAAK8lD,MAAL,CAAY9lD,MAAZ;IACA,KAAK,CAAArB,SAAL,CAAgBkL,YAAhB,CAA6B7J,MAA7B;IACA,IAAIA,MAAA,CAAOtB,GAAP,CAAWwL,QAAX,CAAoB1oB,QAAA,CAAS2oB,aAA7B,CAAJ,EAAiD;MAC/C3Z,UAAA,CAAW,MAAM;QAGf,KAAK,CAAAmO,SAAL,CAAgBiV,kBAAhB;MAHe,CAAjB,EAIG,CAJH;IAD+C;IAOjD5T,MAAA,CAAOtB,GAAP,CAAWxC,MAAX;IACA8D,MAAA,CAAOL,eAAP,GAAyB,KAAzB;IAEA,IAAI,CAAC,KAAK,CAAA6kD,YAAV,EAAyB;MACvB,KAAKO,oBAAL,CAA+C,KAA/C;IADuB;EAhBZ;EA0Bfh8C,aAAa/I,MAAb,EAAqB;IACnB,IAAIA,MAAA,CAAO3C,MAAP,KAAkB,IAAtB,EAA4B;MAC1B;IAD0B;IAI5B,IAAI2C,MAAA,CAAOpB,mBAAX,EAAgC;MAC9B,KAAK,CAAAD,SAAL,CAAgBqY,2BAAhB,CAA4ChX,MAAA,CAAOpB,mBAAnD;MACAzC,wBAAA,CAAiB4D,uBAAjB,CAAyCC,MAAzC;MACAA,MAAA,CAAOpB,mBAAP,GAA6B,IAA7B;IAH8B;IAMhC,KAAKinD,MAAL,CAAY7lD,MAAZ;IACAA,MAAA,CAAO3C,MAAP,EAAeyoD,MAAf,CAAsB9lD,MAAtB;IACAA,MAAA,CAAO0B,SAAP,CAAiB,IAAjB;IACA,IAAI1B,MAAA,CAAOtB,GAAP,IAAcsB,MAAA,CAAOL,eAAzB,EAA0C;MACxCK,MAAA,CAAOtB,GAAP,CAAWxC,MAAX;MACA,KAAKwC,GAAL,CAASgG,MAAT,CAAgB1E,MAAA,CAAOtB,GAAvB;IAFwC;EAdvB;EAwBrB1Q,IAAIgS,MAAJ,EAAY;IACV,KAAK+I,YAAL,CAAkB/I,MAAlB;IACA,KAAK,CAAArB,SAAL,CAAgBoY,SAAhB,CAA0B/W,MAA1B;IACA,KAAK6lD,MAAL,CAAY7lD,MAAZ;IAEA,IAAI,CAACA,MAAA,CAAOL,eAAZ,EAA6B;MAC3B,MAAMjB,GAAA,GAAMsB,MAAA,CAAOrU,MAAP,EAAZ;MACA,KAAK+S,GAAL,CAASgG,MAAT,CAAgBhG,GAAhB;MACAsB,MAAA,CAAOL,eAAP,GAAyB,IAAzB;IAH2B;IAM7B,KAAKkJ,eAAL,CAAqB7I,MAArB;IACAA,MAAA,CAAOoJ,SAAP;IACA,KAAK,CAAAzK,SAAL,CAAgByB,sBAAhB,CAAuCJ,MAAvC;EAbU;EAgBZ6I,gBAAgB7I,MAAhB,EAAwB;IACtB,IAAI,CAACA,MAAA,CAAOL,eAAZ,EAA6B;MAC3B;IAD2B;IAI7B,MAAM;MAAEwK;IAAF,IAAoB3oB,QAA1B;IACA,IAAIwe,MAAA,CAAOtB,GAAP,CAAWwL,QAAX,CAAoBC,aAApB,CAAJ,EAAwC;MAKtCnK,MAAA,CAAO7B,mBAAP,GAA6B,KAA7B;MACA3N,UAAA,CAAW,MAAM;QACfwP,MAAA,CAAOtB,GAAP,CAAW7M,gBAAX,CACE,SADF,EAEE,MAAM;UACJmO,MAAA,CAAO7B,mBAAP,GAA6B,IAA7B;QADI,CAFR,EAKE;UAAEoW,IAAA,EAAM;QAAR,CALF;QAOApK,aAAA,CAAcC,KAAd;MARe,CAAjB,EASG,CATH;IANsC;IAkBxC,KAAK,CAAA65C,oBAAL,EAA4B+B,gBAA5B,CACE,KAAKtnD,GADP,EAEEsB,MAAA,CAAOtB,GAFT,EAGEsB,MAAA,CAAOyK,UAHT,EAIsB,IAJtB;EAxBsB;EAoCxB0M,aAAanX,MAAb,EAAqB;IACnB,IAAIA,MAAA,CAAOwJ,gBAAP,EAAJ,EAA+B;MAC7BxJ,MAAA,CAAOyJ,OAAP;IAD6B,CAA/B,MAEO;MACL,KAAKzb,GAAL,CAASgS,MAAT;IADK;EAHY;EAYrBimD,kBAAkBjmD,MAAlB,EAA0B;IACxB,MAAMkG,GAAA,GAAMA,CAAA,KAAMlG,MAAA,CAAO9B,UAAP,CAAkBuL,OAAlB,CAA0BzJ,MAA1B,CAAlB;IACA,MAAMmG,IAAA,GAAOA,CAAA,KAAM;MACjBnG,MAAA,CAAO9D,MAAP;IADiB,CAAnB;IAIA,KAAKmF,WAAL,CAAiB;MAAE6E,GAAF;MAAOC,IAAP;MAAaC,QAAA,EAAU;IAAvB,CAAjB;EANwB;EAa1BjG,UAAA,EAAY;IACV,OAAO,KAAK,CAAAxB,SAAL,CAAgBuM,KAAhB,EAAP;EADU;EASZ,CAAAg7C,gBAAiBpiE,MAAjB,EAAyB;IACvB,QAAQ,KAAK,CAAA6a,SAAL,CAAgBmZ,OAAhB,EAAR;MACE,KAAK91C,0BAAA,CAAqBE,QAA1B;QACE,OAAO,IAAI0iF,wBAAJ,CAAmB9gE,MAAnB,CAAP;MACF,KAAK9hB,0BAAA,CAAqBI,GAA1B;QACE,OAAO,IAAIyiF,cAAJ,CAAc/gE,MAAd,CAAP;MACF,KAAK9hB,0BAAA,CAAqBG,KAA1B;QACE,OAAO,IAAI2iF,kBAAJ,CAAgBhhE,MAAhB,CAAP;IANJ;IAQA,OAAO,IAAP;EATuB;EAiBzBqiE,YAAYv1C,IAAZ,EAAkB9sB,MAAlB,EAA0B;IACxB,KAAK,CAAA6a,SAAL,CAAgB4X,aAAhB,CAA8B3F,IAA9B;IACA,KAAK,CAAAjS,SAAL,CAAgBwX,UAAhB,CAA2BvF,IAA3B;IAEA,MAAM;MAAE9lB,OAAF;MAAWC;IAAX,IAAuB,KAAK,CAAAq7D,cAAL,EAA7B;IACA,MAAMp+D,EAAA,GAAK,KAAKmY,SAAL,EAAX;IACA,MAAMH,MAAA,GAAS,KAAK,CAAAkmD,eAAL,CAAsB;MACnC7oD,MAAA,EAAQ,IAD2B;MAEnCrV,EAFmC;MAGnCyX,CAAA,EAAG3U,OAHgC;MAInC4U,CAAA,EAAG3U,OAJgC;MAKnC4T,SAAA,EAAW,KAAK,CAAAA,SALmB;MAMnCG,UAAA,EAAY,IANuB;MAOnC,GAAGhb;IAPgC,CAAtB,CAAf;IASA,IAAIkc,MAAJ,EAAY;MACV,KAAKhS,GAAL,CAASgS,MAAT;IADU;EAfY;EAyB1B4J,YAAYptB,IAAZ,EAAkB;IAChB,QAAQA,IAAA,CAAK6pE,cAAL,IAAuB7pE,IAAA,CAAK8pE,oBAApC;MACE,KAAKtkF,0BAAA,CAAqBE,QAA1B;QACE,OAAO0iF,wBAAA,CAAeh7C,WAAf,CAA2BptB,IAA3B,EAAiC,IAAjC,EAAuC,KAAK,CAAAmiB,SAA5C,CAAP;MACF,KAAK38B,0BAAA,CAAqBI,GAA1B;QACE,OAAOyiF,cAAA,CAAUj7C,WAAV,CAAsBptB,IAAtB,EAA4B,IAA5B,EAAkC,KAAK,CAAAmiB,SAAvC,CAAP;MACF,KAAK38B,0BAAA,CAAqBG,KAA1B;QACE,OAAO2iF,kBAAA,CAAYl7C,WAAZ,CAAwBptB,IAAxB,EAA8B,IAA9B,EAAoC,KAAK,CAAAmiB,SAAzC,CAAP;IANJ;IAQA,OAAO,IAAP;EATgB;EAkBlB,CAAAumD,sBAAuBxzD,KAAvB,EAA8BoN,UAA9B,EAA0C;IACxC,MAAM9W,EAAA,GAAK,KAAKmY,SAAL,EAAX;IACA,MAAMH,MAAA,GAAS,KAAK,CAAAkmD,eAAL,CAAsB;MACnC7oD,MAAA,EAAQ,IAD2B;MAEnCrV,EAFmC;MAGnCyX,CAAA,EAAG/N,KAAA,CAAM5G,OAH0B;MAInC4U,CAAA,EAAGhO,KAAA,CAAM3G,OAJ0B;MAKnC4T,SAAA,EAAW,KAAK,CAAAA,SALmB;MAMnCG;IANmC,CAAtB,CAAf;IAQA,IAAIkB,MAAJ,EAAY;MACV,KAAKhS,GAAL,CAASgS,MAAT;IADU;IAIZ,OAAOA,MAAP;EAdwC;EAiB1C,CAAAomD,eAAA,EAAkB;IAChB,MAAM;MAAE3mD,CAAF;MAAKC,CAAL;MAAQjH,KAAR;MAAeC;IAAf,IAA0B,KAAKgG,GAAL,CAASsE,qBAAT,EAAhC;IACA,MAAMgoB,GAAA,GAAMp3C,IAAA,CAAKgE,GAAL,CAAS,CAAT,EAAY6nB,CAAZ,CAAZ;IACA,MAAMyrB,GAAA,GAAMt3C,IAAA,CAAKgE,GAAL,CAAS,CAAT,EAAY8nB,CAAZ,CAAZ;IACA,MAAM0rB,GAAA,GAAMx3C,IAAA,CAAKC,GAAL,CAASmR,MAAA,CAAOuhE,UAAhB,EAA4B9mD,CAAA,GAAIhH,KAAhC,CAAZ;IACA,MAAM6yB,GAAA,GAAM13C,IAAA,CAAKC,GAAL,CAASmR,MAAA,CAAOwhE,WAAhB,EAA6B9mD,CAAA,GAAIhH,MAAjC,CAAZ;IACA,MAAM8kB,OAAA,GAAW,CAAAwN,GAAA,GAAMI,GAAN,IAAa,CAAd,GAAkB3rB,CAAlC;IACA,MAAMge,OAAA,GAAW,CAAAyN,GAAA,GAAMI,GAAN,IAAa,CAAd,GAAkB5rB,CAAlC;IACA,MAAM,CAAC5U,OAAD,EAAUC,OAAV,IACJ,KAAKc,QAAL,CAAchB,QAAd,GAAyB,GAAzB,KAAiC,CAAjC,GACI,CAAC2yB,OAAD,EAAUC,OAAV,CADJ,GAEI,CAACA,OAAD,EAAUD,OAAV,CAHN;IAKA,OAAO;MAAE1yB,OAAF;MAAWC;IAAX,CAAP;EAbgB;EAmBlByrB,aAAA,EAAe;IACb,KAAK,CAAA0uC,qBAAL,CACE,KAAK,CAAAkB,cAAL,EADF,EAEqB,IAFrB;EADa;EAWfzkD,YAAY3B,MAAZ,EAAoB;IAClB,KAAK,CAAArB,SAAL,CAAgBgD,WAAhB,CAA4B3B,MAA5B;EADkB;EAQpB4I,eAAe5I,MAAf,EAAuB;IACrB,KAAK,CAAArB,SAAL,CAAgBiK,cAAhB,CAA+B5I,MAA/B;EADqB;EAQvBsI,WAAWtI,MAAX,EAAmB;IACjB,OAAO,KAAK,CAAArB,SAAL,CAAgB2J,UAAhB,CAA2BtI,MAA3B,CAAP;EADiB;EAQnBiK,SAASjK,MAAT,EAAiB;IACf,KAAK,CAAArB,SAAL,CAAgBsL,QAAhB,CAAyBjK,MAAzB;EADe;EAQjBqkD,UAAU3yD,KAAV,EAAiB;IACf,MAAM;MAAEhc;IAAF,IAAYN,iBAAA,CAAYG,QAA9B;IACA,IAAImc,KAAA,CAAMmT,MAAN,KAAiB,CAAjB,IAAuBnT,KAAA,CAAMoT,OAAN,IAAiBpvB,KAA5C,EAAoD;MAElD;IAFkD;IAKpD,IAAIgc,KAAA,CAAMkQ,MAAN,KAAiB,KAAKlD,GAA1B,EAA+B;MAC7B;IAD6B;IAI/B,IAAI,CAAC,KAAK,CAAA6lD,cAAV,EAA2B;MAKzB;IALyB;IAO3B,KAAK,CAAAA,cAAL,GAAuB,KAAvB;IAEA,IAAI,CAAC,KAAK,CAAAL,UAAV,EAAuB;MACrB,KAAK,CAAAA,UAAL,GAAmB,IAAnB;MACA;IAFqB;IAKvB,IAAI,KAAK,CAAAvlD,SAAL,CAAgBmZ,OAAhB,OAA8B91C,0BAAA,CAAqBG,KAAvD,EAA8D;MAC5D,KAAK,CAAAw8B,SAAL,CAAgBoU,WAAhB;MACA;IAF4D;IAK9D,KAAK,CAAAmyC,qBAAL,CAA4BxzD,KAA5B,EAAsD,KAAtD;EA9Be;EAqCjB0W,YAAY1W,KAAZ,EAAmB;IACjB,IAAI,KAAK,CAAA6yD,cAAT,EAA0B;MAMxB,KAAK,CAAAA,cAAL,GAAuB,KAAvB;MACA;IAPwB;IAS1B,MAAM;MAAE7uE;IAAF,IAAYN,iBAAA,CAAYG,QAA9B;IACA,IAAImc,KAAA,CAAMmT,MAAN,KAAiB,CAAjB,IAAuBnT,KAAA,CAAMoT,OAAN,IAAiBpvB,KAA5C,EAAoD;MAElD;IAFkD;IAKpD,IAAIgc,KAAA,CAAMkQ,MAAN,KAAiB,KAAKlD,GAA1B,EAA+B;MAC7B;IAD6B;IAI/B,KAAK,CAAA6lD,cAAL,GAAuB,IAAvB;IAEA,MAAMvkD,MAAA,GAAS,KAAK,CAAArB,SAAL,CAAgB0W,SAAhB,EAAf;IACA,KAAK,CAAA6uC,UAAL,GAAmB,CAAClkD,MAAD,IAAWA,MAAA,CAAOkC,OAAP,EAA9B;EAvBiB;EAiCnBe,cAAcjD,MAAd,EAAsBP,CAAtB,EAAyBC,CAAzB,EAA4B;IAC1B,MAAM8T,KAAA,GAAQ,KAAK,CAAA7U,SAAL,CAAgBkV,UAAhB,CAA2BpU,CAA3B,EAA8BC,CAA9B,CAAd;IACA,IAAI8T,KAAA,KAAU,IAAV,IAAkBA,KAAA,KAAU,IAAhC,EAAsC;MACpC,OAAO,KAAP;IADoC;IAGtCA,KAAA,CAAMzK,YAAN,CAAmB/I,MAAnB;IACA,OAAO,IAAP;EAN0B;EAY5B1a,QAAA,EAAU;IACR,IAAI,KAAK,CAAAqZ,SAAL,CAAgB0W,SAAhB,IAA6BhY,MAA7B,KAAwC,IAA5C,EAAkD;MAChD,KAAK,CAAAsB,SAAL,CAAgB+L,eAAhB,CAAgC,IAAhC;IADgD;IAIlD,WAAW1K,MAAX,IAAqB,KAAK,CAAA2U,OAAL,CAAc3kB,MAAd,EAArB,EAA6C;MAC3C,KAAK,CAAAi0D,oBAAL,EAA4B8B,wBAA5B,CAAqD/lD,MAAA,CAAOyK,UAA5D;MACAzK,MAAA,CAAO0B,SAAP,CAAiB,IAAjB;MACA1B,MAAA,CAAOL,eAAP,GAAyB,KAAzB;MACAK,MAAA,CAAOtB,GAAP,CAAWxC,MAAX;IAJ2C;IAM7C,KAAKwC,GAAL,GAAW,IAAX;IACA,KAAK,CAAAiW,OAAL,CAAcvkB,KAAd;IACA,KAAK,CAAAuO,SAAL,CAAgBuX,WAAhB,CAA4B,IAA5B;EAbQ;EAgBV,CAAAjtB,QAAA,EAAW;IAIT,KAAK,CAAAu7D,YAAL,GAAqB,IAArB;IACA,WAAWxkD,MAAX,IAAqB,KAAK,CAAA2U,OAAL,CAAc3kB,MAAd,EAArB,EAA6C;MAC3C,IAAIgQ,MAAA,CAAOkC,OAAP,EAAJ,EAAsB;QACpBlC,MAAA,CAAO9D,MAAP;MADoB;IADqB;IAK7C,KAAK,CAAAsoD,YAAL,GAAqB,KAArB;EAVS;EAiBX74D,OAAO;IAAEE;EAAF,CAAP,EAAqB;IACnB,KAAKA,QAAL,GAAgBA,QAAhB;IACA,IAAA01B,iCAAA,EAAmB,KAAK7iB,GAAxB,EAA6B7S,QAA7B;IACA,WAAWmU,MAAX,IAAqB,KAAK,CAAArB,SAAL,CAAgBkY,UAAhB,CAA2B,KAAKjtB,SAAhC,CAArB,EAAiE;MAC/D,KAAKoE,GAAL,CAASgS,MAAT;IAD+D;IAGjE,KAAKmW,UAAL;EANmB;EAarBlZ,OAAO;IAAEpR;EAAF,CAAP,EAAqB;IAInB,KAAK,CAAA8S,SAAL,CAAgBsD,cAAhB;IAEA,KAAKpW,QAAL,GAAgBA,QAAhB;IACA,IAAA01B,iCAAA,EAAmB,KAAK7iB,GAAxB,EAA6B;MAAE7T,QAAA,EAAUgB,QAAA,CAAShB;IAArB,CAA7B;IACA,KAAKsrB,UAAL;EARmB;EAerB,IAAI7W,cAAJA,CAAA,EAAqB;IACnB,MAAM;MAAEN,SAAF;MAAaC;IAAb,IAA4B,KAAKpT,QAAL,CAAckT,OAAhD;IACA,OAAO,CAACC,SAAD,EAAYC,UAAZ,CAAP;EAFmB;AA5qBK;AApD5Bv+B,6BAAA,GAAAsjF,qBAAA;;;;;;;;;;;;ACkBA,IAAAvmE,KAAA,GAAAC,mBAAA;AAQA,IAAA6f,MAAA,GAAA7f,mBAAA;AAKA,IAAA6d,OAAA,GAAA7d,mBAAA;AACA,IAAA+oE,iBAAA,GAAA/oE,mBAAA;AAKA,MAAMknE,cAAN,SAA6BzoD,wBAA7B,CAA8C;EAC5C,CAAAuqD,kBAAA,GAAsB,KAAKC,aAAL,CAAmBvuD,IAAnB,CAAwB,IAAxB,CAAtB;EAEA,CAAAwuD,mBAAA,GAAuB,KAAKC,cAAL,CAAoBzuD,IAApB,CAAyB,IAAzB,CAAvB;EAEA,CAAA0uD,mBAAA,GAAuB,KAAKC,cAAL,CAAoB3uD,IAApB,CAAyB,IAAzB,CAAvB;EAEA,CAAA4uD,qBAAA,GAAyB,KAAKC,gBAAL,CAAsB7uD,IAAtB,CAA2B,IAA3B,CAAzB;EAEA,CAAAkX,KAAA;EAEA,CAAA43C,OAAA,GAAW,EAAX;EAEA,CAAAC,WAAA,GAAe,GAAG,KAAKn/D,EAAG,SAA1B;EAEA,CAAAilC,QAAA;EAEA,CAAAvpC,WAAA,GAAe,IAAf;EAEA,OAAO0jE,uBAAP,GAAiC,EAAjC;EAEA,OAAOC,YAAP;EAEA,OAAOC,gBAAP,GAA0B,CAA1B;EAEA,OAAOC,aAAP,GAAuB,IAAvB;EAEA,OAAOC,gBAAP,GAA0B,EAA1B;EAEA,WAAWh1C,gBAAXA,CAAA,EAA8B;IAC5B,MAAMC,KAAA,GAAQmyC,cAAA,CAAeryE,SAA7B;IAEA,MAAMmgC,YAAA,GAAe9D,IAAA,IAAQA,IAAA,CAAK1M,OAAL,EAA7B;IAEA,MAAM0Q,KAAA,GAAQ/C,gCAAA,CAA0ByC,eAAxC;IACA,MAAMO,GAAA,GAAMhD,gCAAA,CAA0B0C,aAAtC;IAEA,OAAO,IAAA/gC,YAAA,EACL,IADK,EAEL,kBAFK,EAGL,IAAI48B,sBAAJ,CAAoB,CAClB,CAIE,CAAC,QAAD,EAAW,YAAX,EAAyB,QAAzB,EAAmC,YAAnC,CAJF,EAKEqE,KAAA,CAAMxQ,cALR,EAME;MAAE4M,OAAA,EAAS;IAAX,CANF,CADkB,EASlB,CACE,CAAC,YAAD,EAAe,gBAAf,EAAiC,QAAjC,EAA2C,YAA3C,CADF,EAEE4D,KAAA,CAAMxQ,cAFR,CATkB,EAalB,CACE,CAAC,WAAD,EAAc,eAAd,CADF,EAEEwQ,KAAA,CAAMg1C,eAFR,EAGE;MAAE34C,IAAA,EAAM,CAAC,CAAC8D,KAAF,EAAS,CAAT,CAAR;MAAqB7D,OAAA,EAAS2D;IAA9B,CAHF,CAbkB,EAkBlB,CACE,CAAC,gBAAD,EAAmB,qBAAnB,CADF,EAEED,KAAA,CAAMg1C,eAFR,EAGE;MAAE34C,IAAA,EAAM,CAAC,CAAC+D,GAAF,EAAO,CAAP,CAAR;MAAmB9D,OAAA,EAAS2D;IAA5B,CAHF,CAlBkB,EAuBlB,CACE,CAAC,YAAD,EAAe,gBAAf,CADF,EAEED,KAAA,CAAMg1C,eAFR,EAGE;MAAE34C,IAAA,EAAM,CAAC8D,KAAD,EAAQ,CAAR,CAAR;MAAoB7D,OAAA,EAAS2D;IAA7B,CAHF,CAvBkB,EA4BlB,CACE,CAAC,iBAAD,EAAoB,sBAApB,CADF,EAEED,KAAA,CAAMg1C,eAFR,EAGE;MAAE34C,IAAA,EAAM,CAAC+D,GAAD,EAAM,CAAN,CAAR;MAAkB9D,OAAA,EAAS2D;IAA3B,CAHF,CA5BkB,EAiClB,CACE,CAAC,SAAD,EAAY,aAAZ,CADF,EAEED,KAAA,CAAMg1C,eAFR,EAGE;MAAE34C,IAAA,EAAM,CAAC,CAAD,EAAI,CAAC8D,KAAL,CAAR;MAAqB7D,OAAA,EAAS2D;IAA9B,CAHF,CAjCkB,EAsClB,CACE,CAAC,cAAD,EAAiB,mBAAjB,CADF,EAEED,KAAA,CAAMg1C,eAFR,EAGE;MAAE34C,IAAA,EAAM,CAAC,CAAD,EAAI,CAAC+D,GAAL,CAAR;MAAmB9D,OAAA,EAAS2D;IAA5B,CAHF,CAtCkB,EA2ClB,CACE,CAAC,WAAD,EAAc,eAAd,CADF,EAEED,KAAA,CAAMg1C,eAFR,EAGE;MAAE34C,IAAA,EAAM,CAAC,CAAD,EAAI8D,KAAJ,CAAR;MAAoB7D,OAAA,EAAS2D;IAA7B,CAHF,CA3CkB,EAgDlB,CACE,CAAC,gBAAD,EAAmB,qBAAnB,CADF,EAEED,KAAA,CAAMg1C,eAFR,EAGE;MAAE34C,IAAA,EAAM,CAAC,CAAD,EAAI+D,GAAJ,CAAR;MAAkB9D,OAAA,EAAS2D;IAA3B,CAHF,CAhDkB,CAApB,CAHK,CAAP;EAR4B;EAoE9B,OAAOlW,KAAP,GAAe,UAAf;EAEAlqB,YAAYwR,MAAZ,EAAoB;IAClB,MAAM;MAAE,GAAGA,MAAL;MAAazR,IAAA,EAAM;IAAnB,CAAN;IACA,KAAK,CAAAi9B,KAAL,GACExrB,MAAA,CAAOwrB,KAAP,IACAs1C,cAAA,CAAe2C,aADf,IAEAprD,wBAAA,CAAiB0D,iBAHnB;IAIA,KAAK,CAAAotB,QAAL,GAAiBnpC,MAAA,CAAOmpC,QAAP,IAAmB23B,cAAA,CAAe4C,gBAAnD;EANkB;EAUpB,OAAOnnD,UAAPA,CAAkBskD,IAAlB,EAAwB;IACtB,KAAK0C,YAAL,GAAoB,IAAIxqE,GAAJ,CAClB,CAAC,4BAAD,EAA+B,8BAA/B,EAA+DnI,GAA/D,CACEP,GAAA,IAAO,CAACA,GAAD,EAAMwwE,IAAA,CAAK1nE,GAAL,CAAS9I,GAAT,CAAN,CADT,CADkB,CAApB;IAMA,MAAMqtB,KAAA,GAAQoE,gBAAA,CAAiBpkB,QAAA,CAASo+B,eAA1B,CAAd;IAYA,KAAK0nC,gBAAL,GAAwBnjD,UAAA,CACtB3C,KAAA,CAAMwa,gBAAN,CAAuB,oBAAvB,CADsB,CAAxB;EAnBsB;EAyBxB,OAAOzb,mBAAPA,CAA2B9/B,IAA3B,EAAiCkR,KAAjC,EAAwC;IACtC,QAAQlR,IAAR;MACE,KAAK4B,gCAAA,CAA2BG,aAAhC;QACEoiF,cAAA,CAAe4C,gBAAf,GAAkC71E,KAAlC;QACA;MACF,KAAKtP,gCAAA,CAA2BI,cAAhC;QACEmiF,cAAA,CAAe2C,aAAf,GAA+B51E,KAA/B;QACA;IANJ;EADsC;EAYxC04B,aAAa5pC,IAAb,EAAmBkR,KAAnB,EAA0B;IACxB,QAAQlR,IAAR;MACE,KAAK4B,gCAAA,CAA2BG,aAAhC;QACE,KAAK,CAAAklF,cAAL,CAAqB/1E,KAArB;QACA;MACF,KAAKtP,gCAAA,CAA2BI,cAAhC;QACE,KAAK,CAAAklF,WAAL,CAAkBh2E,KAAlB;QACA;IANJ;EADwB;EAY1B,WAAW8uB,yBAAXA,CAAA,EAAuC;IACrC,OAAO,CACL,CACEp+B,gCAAA,CAA2BG,aAD7B,EAEEoiF,cAAA,CAAe4C,gBAFjB,CADK,EAKL,CACEnlF,gCAAA,CAA2BI,cAD7B,EAEEmiF,cAAA,CAAe2C,aAAf,IAAgCprD,wBAAA,CAAiB0D,iBAFnD,CALK,CAAP;EADqC;EAcvC,IAAIiB,kBAAJA,CAAA,EAAyB;IACvB,OAAO,CACL,CAACz+B,gCAAA,CAA2BG,aAA5B,EAA2C,KAAK,CAAAyqD,QAAhD,CADK,EAEL,CAAC5qD,gCAAA,CAA2BI,cAA5B,EAA4C,KAAK,CAAA6sC,KAAjD,CAFK,CAAP;EADuB;EAWzB,CAAAo4C,eAAgBz6B,QAAhB,EAA0B;IACxB,MAAM26B,WAAA,GAAc74D,IAAA,IAAQ;MAC1B,KAAK84D,SAAL,CAAermD,KAAf,CAAqByrB,QAArB,GAAiC,QAAOl+B,IAAK,2BAA7C;MACA,KAAKyT,SAAL,CAAe,CAAf,EAAkB,EAAEzT,IAAA,GAAO,KAAK,CAAAk+B,QAAZ,CAAF,GAA2B,KAAKxpB,WAAlD;MACA,KAAK,CAAAwpB,QAAL,GAAiBl+B,IAAjB;MACA,KAAK,CAAA+4D,mBAAL;IAJ0B,CAA5B;IAMA,MAAMC,aAAA,GAAgB,KAAK,CAAA96B,QAA3B;IACA,KAAK5rB,WAAL,CAAiB;MACf6E,GAAA,EAAKA,CAAA,KAAM;QACT0hD,WAAA,CAAY36B,QAAZ;MADS,CADI;MAIf9mB,IAAA,EAAMA,CAAA,KAAM;QACVyhD,WAAA,CAAYG,aAAZ;MADU,CAJG;MAOf3hD,QAAA,EAAU,IAPK;MAQf3lC,IAAA,EAAM4B,gCAAA,CAA2BG,aARlB;MASfqrC,mBAAA,EAAqB,IATN;MAUfC,QAAA,EAAU;IAVK,CAAjB;EARwB;EA0B1B,CAAA65C,YAAar4C,KAAb,EAAoB;IAClB,MAAM04C,UAAA,GAAa,KAAK,CAAA14C,KAAxB;IACA,KAAKjO,WAAL,CAAiB;MACf6E,GAAA,EAAKA,CAAA,KAAM;QACT,KAAK,CAAAoJ,KAAL,GAAc,KAAKu4C,SAAL,CAAermD,KAAf,CAAqB8N,KAArB,GAA6BA,KAA3C;MADS,CADI;MAIfnJ,IAAA,EAAMA,CAAA,KAAM;QACV,KAAK,CAAAmJ,KAAL,GAAc,KAAKu4C,SAAL,CAAermD,KAAf,CAAqB8N,KAArB,GAA6B04C,UAA3C;MADU,CAJG;MAOf5hD,QAAA,EAAU,IAPK;MAQf3lC,IAAA,EAAM4B,gCAAA,CAA2BI,cARlB;MASforC,mBAAA,EAAqB,IATN;MAUfC,QAAA,EAAU;IAVK,CAAjB;EAFkB;EAqBpB25C,gBAAgBhoD,CAAhB,EAAmBC,CAAnB,EAAsB;IACpB,KAAKxB,UAAL,CAAgB8U,wBAAhB,CAAyCvT,CAAzC,EAA4CC,CAA5C,EAAgE,IAAhE;EADoB;EAKtB0E,sBAAA,EAAwB;IAEtB,MAAMxZ,KAAA,GAAQ,KAAK6Y,WAAnB;IACA,OAAO,CACL,CAACmhD,cAAA,CAAe0C,gBAAhB,GAAmC18D,KAD9B,EAEL,EAAEg6D,cAAA,CAAe0C,gBAAf,GAAkC,KAAK,CAAAr6B,QAAvC,CAAF,GAAsDriC,KAFjD,CAAP;EAHsB;EAUxB6e,QAAA,EAAU;IACR,IAAI,CAAC,KAAKpM,MAAV,EAAkB;MAChB;IADgB;IAGlB,MAAMoM,OAAN;IACA,IAAI,KAAK/K,GAAL,KAAa,IAAjB,EAAuB;MACrB;IADqB;IAIvB,IAAI,CAAC,KAAKiB,eAAV,EAA2B;MAGzB,KAAKtC,MAAL,CAAYrP,GAAZ,CAAgB,IAAhB;IAHyB;EATnB;EAiBVqb,eAAA,EAAiB;IACf,IAAI,KAAKrL,YAAL,EAAJ,EAAyB;MACvB;IADuB;IAIzB,KAAKX,MAAL,CAAYsY,eAAZ,CAA4B,KAA5B;IACA,KAAKtY,MAAL,CAAYkZ,aAAZ,CAA0Bv0C,0BAAA,CAAqBE,QAA/C;IACA,MAAMmnC,cAAN;IACA,KAAK4+C,UAAL,CAAgBjnD,SAAhB,CAA0B9E,MAA1B,CAAiC,SAAjC;IACA,KAAK2rD,SAAL,CAAeK,eAAf,GAAiC,IAAjC;IACA,KAAKnnD,YAAL,GAAoB,KAApB;IACA,KAAKrC,GAAL,CAASypD,eAAT,CAAyB,uBAAzB;IACA,KAAKN,SAAL,CAAeh2D,gBAAf,CAAgC,SAAhC,EAA2C,KAAK,CAAAm1D,qBAAhD;IACA,KAAKa,SAAL,CAAeh2D,gBAAf,CAAgC,OAAhC,EAAyC,KAAK,CAAA+0D,mBAA9C;IACA,KAAKiB,SAAL,CAAeh2D,gBAAf,CAAgC,MAAhC,EAAwC,KAAK,CAAA60D,kBAA7C;IACA,KAAKmB,SAAL,CAAeh2D,gBAAf,CAAgC,OAAhC,EAAyC,KAAK,CAAAi1D,mBAA9C;EAfe;EAmBjBx9C,gBAAA,EAAkB;IAChB,IAAI,CAAC,KAAKtL,YAAL,EAAL,EAA0B;MACxB;IADwB;IAI1B,KAAKX,MAAL,CAAYsY,eAAZ,CAA4B,IAA5B;IACA,MAAMrM,eAAN;IACA,KAAK2+C,UAAL,CAAgBjnD,SAAhB,CAA0BhT,GAA1B,CAA8B,SAA9B;IACA,KAAK65D,SAAL,CAAeK,eAAf,GAAiC,KAAjC;IACA,KAAKxpD,GAAL,CAASqJ,YAAT,CAAsB,uBAAtB,EAA+C,KAAK,CAAAo/C,WAApD;IACA,KAAKpmD,YAAL,GAAoB,IAApB;IACA,KAAK8mD,SAAL,CAAe/1D,mBAAf,CAAmC,SAAnC,EAA8C,KAAK,CAAAk1D,qBAAnD;IACA,KAAKa,SAAL,CAAe/1D,mBAAf,CAAmC,OAAnC,EAA4C,KAAK,CAAA80D,mBAAjD;IACA,KAAKiB,SAAL,CAAe/1D,mBAAf,CAAmC,MAAnC,EAA2C,KAAK,CAAA40D,kBAAhD;IACA,KAAKmB,SAAL,CAAe/1D,mBAAf,CAAmC,OAAnC,EAA4C,KAAK,CAAAg1D,mBAAjD;IAIA,KAAKpoD,GAAL,CAAS0L,KAAT,CAAe;MACbg+C,aAAA,EAAe;IADF,CAAf;IAKA,KAAKrqD,SAAL,GAAiB,KAAjB;IACA,KAAKV,MAAL,CAAYqB,GAAZ,CAAgBsC,SAAhB,CAA0BhT,GAA1B,CAA8B,iBAA9B;EAxBgB;EA4BlB2P,QAAQjM,KAAR,EAAe;IACb,IAAI,CAAC,KAAKyM,mBAAV,EAA+B;MAC7B;IAD6B;IAG/B,MAAMR,OAAN,CAAcjM,KAAd;IACA,IAAIA,KAAA,CAAMkQ,MAAN,KAAiB,KAAKimD,SAA1B,EAAqC;MACnC,KAAKA,SAAL,CAAez9C,KAAf;IADmC;EALxB;EAWfhB,UAAA,EAAY;IACV,IAAI,KAAK3Q,KAAT,EAAgB;MACd,KAAK,CAAA4vD,gBAAL;MAEA;IAHc;IAKhB,KAAKh/C,cAAL;IACA,KAAKw+C,SAAL,CAAez9C,KAAf;IACA,IAAI,KAAKnM,eAAL,EAAsBa,UAA1B,EAAsC;MACpC,KAAKoC,MAAL;IADoC;IAGtC,KAAKjD,eAAL,GAAuB,IAAvB;EAXU;EAeZiE,QAAA,EAAU;IACR,OAAO,CAAC,KAAK2lD,SAAN,IAAmB,KAAKA,SAAL,CAAeS,SAAf,CAAyBjqC,IAAzB,OAAoC,EAA9D;EADQ;EAKVniB,OAAA,EAAS;IACP,KAAK6B,SAAL,GAAiB,KAAjB;IACA,IAAI,KAAKV,MAAT,EAAiB;MACf,KAAKA,MAAL,CAAYsY,eAAZ,CAA4B,IAA5B;MACA,KAAKtY,MAAL,CAAYqB,GAAZ,CAAgBsC,SAAhB,CAA0BhT,GAA1B,CAA8B,iBAA9B;IAFe;IAIjB,MAAMkO,MAAN;EANO;EAaT,CAAAqsD,YAAA,EAAe;IACb,MAAMC,IAAA,GAAO,KAAKX,SAAL,CAAepkC,oBAAf,CAAoC,KAApC,CAAb;IACA,IAAI+kC,IAAA,CAAKr3E,MAAL,KAAgB,CAApB,EAAuB;MACrB,OAAO,KAAK02E,SAAL,CAAeS,SAAtB;IADqB;IAGvB,MAAMrzE,MAAA,GAAS,EAAf;IACA,WAAWypB,GAAX,IAAkB8pD,IAAlB,EAAwB;MACtBvzE,MAAA,CAAOjB,IAAP,CAAY0qB,GAAA,CAAI4pD,SAAJ,CAAc/1D,OAAd,CAAsB,UAAtB,EAAkC,EAAlC,CAAZ;IADsB;IAGxB,OAAOtd,MAAA,CAAOhB,IAAP,CAAY,IAAZ,CAAP;EATa;EAYf,CAAA6zE,oBAAA,EAAuB;IACrB,MAAM,CAAChlD,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;IAEA,IAAIhnB,IAAJ;IACA,IAAI,KAAKmnB,eAAT,EAA0B;MACxBnnB,IAAA,GAAO,KAAKkmB,GAAL,CAASsE,qBAAT,EAAP;IADwB,CAA1B,MAEO;MAGL,MAAM;QAAE1B,YAAF;QAAgB5C;MAAhB,IAAwB,IAA9B;MACA,MAAM+pD,YAAA,GAAe/pD,GAAA,CAAI8C,KAAJ,CAAUknD,OAA/B;MACAhqD,GAAA,CAAI8C,KAAJ,CAAUknD,OAAV,GAAoB,QAApB;MACApnD,YAAA,CAAa5C,GAAb,CAAiBgG,MAAjB,CAAwB,KAAKhG,GAA7B;MACAlmB,IAAA,GAAOkmB,GAAA,CAAIsE,qBAAJ,EAAP;MACAtE,GAAA,CAAIxC,MAAJ;MACAwC,GAAA,CAAI8C,KAAJ,CAAUknD,OAAV,GAAoBD,YAApB;IATK;IAcP,IAAI,KAAK59D,QAAL,GAAgB,GAAhB,KAAwB,KAAKsW,cAAL,GAAsB,GAAlD,EAAuD;MACrD,KAAK1I,KAAL,GAAajgB,IAAA,CAAKigB,KAAL,GAAaqK,WAA1B;MACA,KAAKpK,MAAL,GAAclgB,IAAA,CAAKkgB,MAAL,GAAcqK,YAA5B;IAFqD,CAAvD,MAGO;MACL,KAAKtK,KAAL,GAAajgB,IAAA,CAAKkgB,MAAL,GAAcoK,WAA3B;MACA,KAAKpK,MAAL,GAAclgB,IAAA,CAAKigB,KAAL,GAAasK,YAA3B;IAFK;IAIP,KAAK3B,iBAAL;EA3BqB;EAkCvBe,OAAA,EAAS;IACP,IAAI,CAAC,KAAKnE,YAAL,EAAL,EAA0B;MACxB;IADwB;IAI1B,MAAMmE,MAAN;IACA,KAAKmH,eAAL;IACA,MAAMq/C,SAAA,GAAY,KAAK,CAAAzB,OAAvB;IACA,MAAM0B,OAAA,GAAW,KAAK,CAAA1B,OAAL,GAAgB,KAAK,CAAAqB,WAAL,GAAoBM,OAApB,EAAjC;IACA,IAAIF,SAAA,KAAcC,OAAlB,EAA2B;MACzB;IADyB;IAI3B,MAAME,OAAA,GAAUvsC,IAAA,IAAQ;MACtB,KAAK,CAAA2qC,OAAL,GAAgB3qC,IAAhB;MACA,IAAI,CAACA,IAAL,EAAW;QACT,KAAKrgB,MAAL;QACA;MAFS;MAIX,KAAK,CAAA6sD,UAAL;MACA,KAAK7qD,UAAL,CAAgBuL,OAAhB,CAAwB,IAAxB;MACA,KAAK,CAAAq+C,mBAAL;IARsB,CAAxB;IAUA,KAAKzmD,WAAL,CAAiB;MACf6E,GAAA,EAAKA,CAAA,KAAM;QACT4iD,OAAA,CAAQF,OAAR;MADS,CADI;MAIfziD,IAAA,EAAMA,CAAA,KAAM;QACV2iD,OAAA,CAAQH,SAAR;MADU,CAJG;MAOfviD,QAAA,EAAU;IAPK,CAAjB;IASA,KAAK,CAAA0hD,mBAAL;EAhCO;EAoCTv+C,wBAAA,EAA0B;IACxB,OAAO,KAAKvL,YAAL,EAAP;EADwB;EAK1BwM,gBAAA,EAAkB;IAChB,KAAKnB,cAAL;IACA,KAAKw+C,SAAL,CAAez9C,KAAf;EAFgB;EASlB4+C,SAASt3D,KAAT,EAAgB;IACd,KAAK8Y,eAAL;EADc;EAQhB+G,QAAQ7f,KAAR,EAAe;IACb,IAAIA,KAAA,CAAMkQ,MAAN,KAAiB,KAAKlD,GAAtB,IAA6BhN,KAAA,CAAM9c,GAAN,KAAc,OAA/C,EAAwD;MACtD,KAAK41B,eAAL;MAEA9Y,KAAA,CAAMqQ,cAAN;IAHsD;EAD3C;EAQfklD,iBAAiBv1D,KAAjB,EAAwB;IACtBkzD,cAAA,CAAepyC,gBAAf,CAAgC7D,IAAhC,CAAqC,IAArC,EAA2Cjd,KAA3C;EADsB;EAIxBm1D,eAAen1D,KAAf,EAAsB;IACpB,KAAKqM,SAAL,GAAiB,IAAjB;EADoB;EAItB4oD,cAAcj1D,KAAd,EAAqB;IACnB,KAAKqM,SAAL,GAAiB,KAAjB;EADmB;EAIrBgpD,eAAer1D,KAAf,EAAsB;IACpB,KAAK2L,MAAL,CAAYqB,GAAZ,CAAgBsC,SAAhB,CAA0BC,MAA1B,CAAiC,iBAAjC,EAAoD,KAAKiB,OAAL,EAApD;EADoB;EAKtBoI,eAAA,EAAiB;IACf,KAAKu9C,SAAL,CAAe9/C,YAAf,CAA4B,MAA5B,EAAoC,SAApC;IACA,KAAK8/C,SAAL,CAAeM,eAAf,CAA+B,gBAA/B;EAFe;EAMjB59C,cAAA,EAAgB;IACd,KAAKs9C,SAAL,CAAe9/C,YAAf,CAA4B,MAA5B,EAAoC,SAApC;IACA,KAAK8/C,SAAL,CAAe9/C,YAAf,CAA4B,gBAA5B,EAA8C,IAA9C;EAFc;EAMhBpc,OAAA,EAAS;IACP,IAAI,KAAK+S,GAAT,EAAc;MACZ,OAAO,KAAKA,GAAZ;IADY;IAId,IAAIuqD,KAAJ,EAAWC,KAAX;IACA,IAAI,KAAKzwD,KAAT,EAAgB;MACdwwD,KAAA,GAAQ,KAAKxpD,CAAb;MACAypD,KAAA,GAAQ,KAAKxpD,CAAb;IAFc;IAKhB,MAAM/T,MAAN;IACA,KAAKk8D,SAAL,GAAiBrmE,QAAA,CAASgjB,aAAT,CAAuB,KAAvB,CAAjB;IACA,KAAKqjD,SAAL,CAAe7/C,SAAf,GAA2B,UAA3B;IAEA,KAAK6/C,SAAL,CAAe9/C,YAAf,CAA4B,IAA5B,EAAkC,KAAK,CAAAo/C,WAAvC;IACA,KAAK58C,aAAL;IAEAq6C,cAAA,CAAeyC,YAAf,CACGpqE,GADH,CACO,8BADP,EAEGkG,IAFH,CAEQlT,GAAA,IAAO,KAAK43E,SAAL,EAAgB9/C,YAAhB,CAA6B,YAA7B,EAA2C93B,GAA3C,CAFf;IAIA20E,cAAA,CAAeyC,YAAf,CACGpqE,GADH,CACO,4BADP,EAEGkG,IAFH,CAEQlT,GAAA,IAAO,KAAK43E,SAAL,EAAgB9/C,YAAhB,CAA6B,iBAA7B,EAAgD93B,GAAhD,CAFf;IAGA,KAAK43E,SAAL,CAAeK,eAAf,GAAiC,IAAjC;IAEA,MAAM;MAAE1mD;IAAF,IAAY,KAAKqmD,SAAvB;IACArmD,KAAA,CAAMyrB,QAAN,GAAkB,QAAO,KAAK,CAAAA,QAAU,2BAAxC;IACAzrB,KAAA,CAAM8N,KAAN,GAAc,KAAK,CAAAA,KAAnB;IAEA,KAAK5Q,GAAL,CAASgG,MAAT,CAAgB,KAAKmjD,SAArB;IAEA,KAAKI,UAAL,GAAkBzmE,QAAA,CAASgjB,aAAT,CAAuB,KAAvB,CAAlB;IACA,KAAKyjD,UAAL,CAAgBjnD,SAAhB,CAA0BhT,GAA1B,CAA8B,SAA9B,EAAyC,SAAzC;IACA,KAAK0Q,GAAL,CAASgG,MAAT,CAAgB,KAAKujD,UAArB;IAKA,IAAA9/C,iBAAA,EAAW,IAAX,EAAiB,KAAKzJ,GAAtB,EAA2B,CAAC,UAAD,EAAa,SAAb,CAA3B;IAEA,IAAI,KAAKjG,KAAT,EAAgB;MAEd,MAAM,CAACqK,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;MACA,IAAI,KAAKZ,mBAAT,EAA8B;QAU5B,MAAM;UAAEgP;QAAF,IAAe,KAAK,CAAAlqB,WAA1B;QACA,IAAI,CAAC2e,EAAD,EAAKC,EAAL,IAAW,KAAK8B,qBAAL,EAAf;QACA,CAAC/B,EAAD,EAAKC,EAAL,IAAW,KAAKiB,uBAAL,CAA6BlB,EAA7B,EAAiCC,EAAjC,CAAX;QACA,MAAM,CAACtD,SAAD,EAAYC,UAAZ,IAA0B,KAAKK,cAArC;QACA,MAAM,CAACJ,KAAD,EAAQC,KAAR,IAAiB,KAAKI,eAA5B;QACA,IAAI4pD,IAAJ,EAAUC,IAAV;QACA,QAAQ,KAAKv+D,QAAb;UACE,KAAK,CAAL;YACEs+D,IAAA,GAAOF,KAAA,GAAS,CAAAr7C,QAAA,CAAS,CAAT,IAAc1O,KAAd,IAAuBF,SAAvC;YACAoqD,IAAA,GAAOF,KAAA,GAAQ,KAAKxwD,MAAb,GAAuB,CAAAkV,QAAA,CAAS,CAAT,IAAczO,KAAd,IAAuBF,UAArD;YACA;UACF,KAAK,EAAL;YACEkqD,IAAA,GAAOF,KAAA,GAAS,CAAAr7C,QAAA,CAAS,CAAT,IAAc1O,KAAd,IAAuBF,SAAvC;YACAoqD,IAAA,GAAOF,KAAA,GAAS,CAAAt7C,QAAA,CAAS,CAAT,IAAczO,KAAd,IAAuBF,UAAvC;YACA,CAACoD,EAAD,EAAKC,EAAL,IAAW,CAACA,EAAD,EAAK,CAACD,EAAN,CAAX;YACA;UACF,KAAK,GAAL;YACE8mD,IAAA,GAAOF,KAAA,GAAQ,KAAKxwD,KAAb,GAAsB,CAAAmV,QAAA,CAAS,CAAT,IAAc1O,KAAd,IAAuBF,SAApD;YACAoqD,IAAA,GAAOF,KAAA,GAAS,CAAAt7C,QAAA,CAAS,CAAT,IAAczO,KAAd,IAAuBF,UAAvC;YACA,CAACoD,EAAD,EAAKC,EAAL,IAAW,CAAC,CAACD,EAAF,EAAM,CAACC,EAAP,CAAX;YACA;UACF,KAAK,GAAL;YACE6mD,IAAA,GACEF,KAAA,GACC,CAAAr7C,QAAA,CAAS,CAAT,IAAc1O,KAAd,GAAsB,KAAKxG,MAAL,GAAcuG,UAApC,IAAkDD,SAFrD;YAGAoqD,IAAA,GACEF,KAAA,GACC,CAAAt7C,QAAA,CAAS,CAAT,IAAczO,KAAd,GAAsB,KAAK1G,KAAL,GAAauG,SAAnC,IAAgDC,UAFnD;YAGA,CAACoD,EAAD,EAAKC,EAAL,IAAW,CAAC,CAACA,EAAF,EAAMD,EAAN,CAAX;YACA;QAvBJ;QAyBA,KAAKD,KAAL,CAAW+mD,IAAA,GAAOrmD,WAAlB,EAA+BsmD,IAAA,GAAOrmD,YAAtC,EAAoDV,EAApD,EAAwDC,EAAxD;MAzC4B,CAA9B,MA0CO;QACL,KAAKF,KAAL,CACE6mD,KAAA,GAAQnmD,WADV,EAEEomD,KAAA,GAAQnmD,YAFV,EAGE,KAAKtK,KAAL,GAAaqK,WAHf,EAIE,KAAKpK,MAAL,GAAcqK,YAJhB;MADK;MASP,KAAK,CAAAgmD,UAAL;MACA,KAAKhoD,YAAL,GAAoB,IAApB;MACA,KAAK8mD,SAAL,CAAeK,eAAf,GAAiC,KAAjC;IAxDc,CAAhB,MAyDO;MACL,KAAKnnD,YAAL,GAAoB,KAApB;MACA,KAAK8mD,SAAL,CAAeK,eAAf,GAAiC,IAAjC;IAFK;IASP,OAAO,KAAKxpD,GAAZ;EA5GO;EA+GT,CAAAqqD,WAAA,EAAc;IACZ,KAAKlB,SAAL,CAAewB,eAAf;IACA,IAAI,CAAC,KAAK,CAAAnC,OAAV,EAAoB;MAClB;IADkB;IAGpB,WAAWoC,IAAX,IAAmB,KAAK,CAAApC,OAAL,CAAc14C,KAAd,CAAoB,IAApB,CAAnB,EAA8C;MAC5C,MAAM9P,GAAA,GAAMld,QAAA,CAASgjB,aAAT,CAAuB,KAAvB,CAAZ;MACA9F,GAAA,CAAIgG,MAAJ,CACE4kD,IAAA,GAAO9nE,QAAA,CAAS+nE,cAAT,CAAwBD,IAAxB,CAAP,GAAuC9nE,QAAA,CAASgjB,aAAT,CAAuB,IAAvB,CADzC;MAGA,KAAKqjD,SAAL,CAAenjD,MAAf,CAAsBhG,GAAtB;IAL4C;EALlC;EAcd,IAAI+L,UAAJA,CAAA,EAAiB;IACf,OAAO,KAAKo9C,SAAZ;EADe;EAKjB,OAAOj+C,WAAPA,CAAmBptB,IAAnB,EAAyB6gB,MAAzB,EAAiCsB,SAAjC,EAA4C;IAC1C,IAAIjb,WAAA,GAAc,IAAlB;IACA,IAAIlH,IAAA,YAAgBgtE,2CAApB,EAA+C;MAC7C,MAAM;QACJhtE,IAAA,EAAM;UACJitE,qBAAA,EAAuB;YAAEx8B,QAAF;YAAYy8B;UAAZ,CADnB;UAEJlxE,IAFI;UAGJqS,QAHI;UAIJ7C;QAJI,CADF;QAOJgH,WAPI;QAQJ26D,YARI;QASJtsD,MAAA,EAAQ;UACNpH,IAAA,EAAM;YAAEtO;UAAF;QADA;MATJ,IAYFnL,IAZJ;MAeA,IAAI,CAACwS,WAAD,IAAgBA,WAAA,CAAY7d,MAAZ,KAAuB,CAA3C,EAA8C;QAE5C,OAAO,IAAP;MAF4C;MAI9CuS,WAAA,GAAclH,IAAA,GAAO;QACnB6pE,cAAA,EAAgBrkF,0BAAA,CAAqBE,QADlB;QAEnBotC,KAAA,EAAOr5B,KAAA,CAAMujE,IAAN,CAAWkQ,SAAX,CAFY;QAGnBz8B,QAHmB;QAInBt7C,KAAA,EAAOqd,WAAA,CAAY/a,IAAZ,CAAiB,IAAjB,CAJY;QAKnB25B,QAAA,EAAU+7C,YALS;QAMnB//D,SAAA,EAAWjC,UAAA,GAAa,CANL;QAOnBnP,IAPmB;QAQnBqS,QARmB;QASnB7C,EATmB;QAUnB4X,OAAA,EAAS;MAVU,CAArB;IApB6C;IAiC/C,MAAMI,MAAA,GAAS,MAAM4J,WAAN,CAAkBptB,IAAlB,EAAwB6gB,MAAxB,EAAgCsB,SAAhC,CAAf;IAEAqB,MAAA,CAAO,CAAAitB,QAAP,GAAmBzwC,IAAA,CAAKywC,QAAxB;IACAjtB,MAAA,CAAO,CAAAsP,KAAP,GAAgBj5B,UAAA,CAAKC,YAAL,CAAkB,GAAGkG,IAAA,CAAK8yB,KAA1B,CAAhB;IACAtP,MAAA,CAAO,CAAAknD,OAAP,GAAkB1qE,IAAA,CAAK7K,KAAvB;IACAquB,MAAA,CAAOpB,mBAAP,GAA6BpiB,IAAA,CAAKwL,EAAL,IAAW,IAAxC;IACAgY,MAAA,CAAO,CAAAtc,WAAP,GAAsBA,WAAtB;IAEA,OAAOsc,MAAP;EA3C0C;EA+C5ChD,UAAU4sD,YAAA,GAAe,KAAzB,EAAgC;IAC9B,IAAI,KAAK1nD,OAAL,EAAJ,EAAoB;MAClB,OAAO,IAAP;IADkB;IAIpB,IAAI,KAAKtC,OAAT,EAAkB;MAChB,OAAO;QACLhW,SAAA,EAAW,KAAKA,SADX;QAEL5B,EAAA,EAAI,KAAK4W,mBAFJ;QAGLgB,OAAA,EAAS;MAHJ,CAAP;IADgB;IAQlB,MAAMiqD,OAAA,GAAUjF,cAAA,CAAe0C,gBAAf,GAAkC,KAAK7jD,WAAvD;IACA,MAAMjrB,IAAA,GAAO,KAAKwwB,OAAL,CAAa6gD,OAAb,EAAsBA,OAAtB,CAAb;IACA,MAAMv6C,KAAA,GAAQnT,wBAAA,CAAiBoC,aAAjB,CAA+B8Q,OAA/B,CACZ,KAAK1P,eAAL,GACIiG,gBAAA,CAAiB,KAAKiiD,SAAtB,EAAiCv4C,KADrC,GAEI,KAAK,CAAAA,KAHG,CAAd;IAMA,MAAMvS,UAAA,GAAa;MACjBspD,cAAA,EAAgBrkF,0BAAA,CAAqBE,QADpB;MAEjBotC,KAFiB;MAGjB2d,QAAA,EAAU,KAAK,CAAAA,QAHE;MAIjBt7C,KAAA,EAAO,KAAK,CAAAu1E,OAJK;MAKjBt9D,SAAA,EAAW,KAAKA,SALC;MAMjBpR,IANiB;MAOjBqS,QAAA,EAAU,KAAKA;IAPE,CAAnB;IAUA,IAAI++D,YAAJ,EAAkB;MAGhB,OAAO7sD,UAAP;IAHgB;IAMlB,IAAI,KAAK6B,mBAAL,IAA4B,CAAC,KAAK,CAAAkrD,iBAAL,CAAwB/sD,UAAxB,CAAjC,EAAsE;MACpE,OAAO,IAAP;IADoE;IAItEA,UAAA,CAAW/U,EAAX,GAAgB,KAAK4W,mBAArB;IAEA,OAAO7B,UAAP;EA3C8B;EA8ChC,CAAA+sD,kBAAmB/sD,UAAnB,EAA+B;IAC7B,MAAM;MAAEprB,KAAF;MAASs7C,QAAT;MAAmB3d,KAAnB;MAA0B92B,IAA1B;MAAgCoR;IAAhC,IAA8C,KAAK,CAAAlG,WAAzD;IAEA,OACEqZ,UAAA,CAAWprB,KAAX,KAAqBA,KAArB,IACAorB,UAAA,CAAWkwB,QAAX,KAAwBA,QADxB,IAEAlwB,UAAA,CAAWvkB,IAAX,CAAgBg9B,IAAhB,CAAqB,CAAC/V,CAAD,EAAI/rB,CAAJ,KAAUE,IAAA,CAAKoG,GAAL,CAASylB,CAAA,GAAIjnB,IAAA,CAAK9E,CAAL,CAAb,KAAyB,CAAxD,CAFA,IAGAqpB,UAAA,CAAWuS,KAAX,CAAiBkG,IAAjB,CAAsB,CAACv9B,CAAD,EAAIvE,CAAJ,KAAUuE,CAAA,KAAMq3B,KAAA,CAAM57B,CAAN,CAAtC,CAHA,IAIAqpB,UAAA,CAAWnT,SAAX,KAAyBA,SAL3B;EAH6B;EAY/B,CAAAy+D,iBAAkB93D,OAAA,GAAU,KAA5B,EAAmC;IAKjC,IAAI,CAAC,KAAKqO,mBAAV,EAA+B;MAC7B;IAD6B;IAI/B,KAAK,CAAAkpD,mBAAL;IACA,IAAI,CAACv3D,OAAD,KAAa,KAAKkI,KAAL,KAAe,CAAf,IAAoB,KAAKC,MAAL,KAAgB,CAApC,CAAjB,EAAyD;MACvDlI,UAAA,CAAW,MAAM,KAAK,CAAA63D,gBAAL,CAAuC,IAAvC,CAAjB,EAA+D,CAA/D;MACA;IAFuD;IAKzD,MAAMwB,OAAA,GAAUjF,cAAA,CAAe0C,gBAAf,GAAkC,KAAK7jD,WAAvD;IACA,KAAK,CAAA/f,WAAL,CAAkBlL,IAAlB,GAAyB,KAAKwwB,OAAL,CAAa6gD,OAAb,EAAsBA,OAAtB,CAAzB;EAhBiC;AAztBS;AArC9CnpF,sBAAA,GAAAkkF,cAAA;;;;;;;;;;;;ACoBA,IAAAnnE,KAAA,GAAAC,mBAAA;AAWA,IAAAE,cAAA,GAAAF,mBAAA;AAOA,IAAAC,mBAAA,GAAAD,mBAAA;AACA,IAAAqsE,gBAAA,GAAArsE,mBAAA;AACA,IAAAssE,kBAAA,GAAAtsE,mBAAA;AACA,IAAAusE,UAAA,GAAAvsE,mBAAA;AAEA,MAAMwsE,iBAAA,GAAoB,IAA1B;AACA,MAAMrK,iBAAA,GAAoB,CAA1B;AACA,MAAMsK,oBAAA,GAAuB,IAAIxwD,OAAJ,EAA7B;AAEA,SAASywD,WAATA,CAAqB5xE,IAArB,EAA2B;EACzB,OAAO;IACLigB,KAAA,EAAOjgB,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CADZ;IAELkgB,MAAA,EAAQlgB,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL;EAFb,CAAP;AADyB;AAuB3B,MAAM6xE,wBAAN,CAA+B;EAK7B,OAAO11E,MAAPA,CAAc8pB,UAAd,EAA0B;IACxB,MAAM20B,OAAA,GAAU30B,UAAA,CAAWjiB,IAAX,CAAgB6pE,cAAhC;IAEA,QAAQjzB,OAAR;MACE,KAAK/uD,oBAAA,CAAeE,IAApB;QACE,OAAO,IAAI+lF,qBAAJ,CAA0B7rD,UAA1B,CAAP;MAEF,KAAKp6B,oBAAA,CAAeC,IAApB;QACE,OAAO,IAAIimF,qBAAJ,CAA0B9rD,UAA1B,CAAP;MAEF,KAAKp6B,oBAAA,CAAeiB,MAApB;QACE,MAAMklF,SAAA,GAAY/rD,UAAA,CAAWjiB,IAAX,CAAgBguE,SAAlC;QAEA,QAAQA,SAAR;UACE,KAAK,IAAL;YACE,OAAO,IAAIC,2BAAJ,CAAgChsD,UAAhC,CAAP;UACF,KAAK,KAAL;YACE,IAAIA,UAAA,CAAWjiB,IAAX,CAAgBkuE,WAApB,EAAiC;cAC/B,OAAO,IAAIC,kCAAJ,CAAuClsD,UAAvC,CAAP;YAD+B,CAAjC,MAEO,IAAIA,UAAA,CAAWjiB,IAAX,CAAgBouE,QAApB,EAA8B;cACnC,OAAO,IAAIC,+BAAJ,CAAoCpsD,UAApC,CAAP;YADmC;YAGrC,OAAO,IAAIqsD,iCAAJ,CAAsCrsD,UAAtC,CAAP;UACF,KAAK,IAAL;YACE,OAAO,IAAIssD,6BAAJ,CAAkCtsD,UAAlC,CAAP;UACF,KAAK,KAAL;YACE,OAAO,IAAIusD,gCAAJ,CAAqCvsD,UAArC,CAAP;QAbJ;QAeA,OAAO,IAAIwsD,uBAAJ,CAA4BxsD,UAA5B,CAAP;MAEF,KAAKp6B,oBAAA,CAAea,KAApB;QACE,OAAO,IAAIgmF,sBAAJ,CAA2BzsD,UAA3B,CAAP;MAEF,KAAKp6B,oBAAA,CAAenC,QAApB;QACE,OAAO,IAAIsnF,yBAAJ,CAA8B/qD,UAA9B,CAAP;MAEF,KAAKp6B,oBAAA,CAAeG,IAApB;QACE,OAAO,IAAI2mF,qBAAJ,CAA0B1sD,UAA1B,CAAP;MAEF,KAAKp6B,oBAAA,CAAeI,MAApB;QACE,OAAO,IAAI2mF,uBAAJ,CAA4B3sD,UAA5B,CAAP;MAEF,KAAKp6B,oBAAA,CAAeK,MAApB;QACE,OAAO,IAAI2mF,uBAAJ,CAA4B5sD,UAA5B,CAAP;MAEF,KAAKp6B,oBAAA,CAAeO,QAApB;QACE,OAAO,IAAI0mF,yBAAJ,CAA8B7sD,UAA9B,CAAP;MAEF,KAAKp6B,oBAAA,CAAeY,KAApB;QACE,OAAO,IAAIsmF,sBAAJ,CAA2B9sD,UAA3B,CAAP;MAEF,KAAKp6B,oBAAA,CAAejC,GAApB;QACE,OAAO,IAAIopF,oBAAJ,CAAyB/sD,UAAzB,CAAP;MAEF,KAAKp6B,oBAAA,CAAeM,OAApB;QACE,OAAO,IAAI8mF,wBAAJ,CAA6BhtD,UAA7B,CAAP;MAEF,KAAKp6B,oBAAA,CAAeQ,SAApB;QACE,OAAO,IAAI6mF,0BAAJ,CAA+BjtD,UAA/B,CAAP;MAEF,KAAKp6B,oBAAA,CAAeS,SAApB;QACE,OAAO,IAAI6mF,0BAAJ,CAA+BltD,UAA/B,CAAP;MAEF,KAAKp6B,oBAAA,CAAeU,QAApB;QACE,OAAO,IAAI6mF,yBAAJ,CAA8BntD,UAA9B,CAAP;MAEF,KAAKp6B,oBAAA,CAAeW,SAApB;QACE,OAAO,IAAI6mF,0BAAJ,CAA+BptD,UAA/B,CAAP;MAEF,KAAKp6B,oBAAA,CAAelC,KAApB;QACE,OAAO,IAAI2pF,sBAAJ,CAA2BrtD,UAA3B,CAAP;MAEF,KAAKp6B,oBAAA,CAAec,cAApB;QACE,OAAO,IAAI4mF,+BAAJ,CAAoCttD,UAApC,CAAP;MAEF;QACE,OAAO,IAAIutD,iBAAJ,CAAsBvtD,UAAtB,CAAP;IAzEJ;EAHwB;AALG;AAsF/B,MAAMutD,iBAAN,CAAwB;EACtB,CAAAC,SAAA,GAAa,KAAb;EAEA35E,YACEmsB,UADF,EAEE;IACEytD,YAAA,GAAe,KADjB;IAEEC,YAAA,GAAe,KAFjB;IAGEC,oBAAA,GAAuB;EAHzB,IAII,EANN,EAOE;IACA,KAAKF,YAAL,GAAoBA,YAApB;IACA,KAAK1vE,IAAL,GAAYiiB,UAAA,CAAWjiB,IAAvB;IACA,KAAKg3B,KAAL,GAAa/U,UAAA,CAAW+U,KAAxB;IACA,KAAK64C,WAAL,GAAmB5tD,UAAA,CAAW4tD,WAA9B;IACA,KAAKC,eAAL,GAAuB7tD,UAAA,CAAW6tD,eAAlC;IACA,KAAKC,kBAAL,GAA0B9tD,UAAA,CAAW8tD,kBAArC;IACA,KAAKC,WAAL,GAAmB/tD,UAAA,CAAW+tD,WAA9B;IACA,KAAKhR,UAAL,GAAkB/8C,UAAA,CAAW+8C,UAA7B;IACA,KAAKp0D,iBAAL,GAAyBqX,UAAA,CAAWrX,iBAApC;IACA,KAAKqlE,eAAL,GAAuBhuD,UAAA,CAAWguD,eAAlC;IACA,KAAKljE,YAAL,GAAoBkV,UAAA,CAAWlV,YAA/B;IACA,KAAKmjE,aAAL,GAAqBjuD,UAAA,CAAWkuD,YAAhC;IACA,KAAKtvD,MAAL,GAAcoB,UAAA,CAAWpB,MAAzB;IAEA,IAAI6uD,YAAJ,EAAkB;MAChB,KAAK95C,SAAL,GAAiB,KAAKw6C,gBAAL,CAAsBT,YAAtB,CAAjB;IADgB;IAGlB,IAAIC,oBAAJ,EAA0B;MACxB,KAAKS,qBAAL;IADwB;EAlB1B;EA+BFD,iBAAiBT,YAAjB,EAA+B;IAC7B,MAAM;MACJ3vE,IADI;MAEJ6gB,MAAA,EAAQ;QAAEpH,IAAF;QAAQpK;MAAR;IAFJ,IAGF,IAHJ;IAKA,MAAMumB,SAAA,GAAY5wB,QAAA,CAASgjB,aAAT,CAAuB,SAAvB,CAAlB;IACA4N,SAAA,CAAUrK,YAAV,CAAuB,oBAAvB,EAA6CvrB,IAAA,CAAKwL,EAAlD;IAOAoqB,SAAA,CAAU5Q,KAAV,CAAgBnD,MAAhB,GAAyB,KAAKhB,MAAL,CAAYgB,MAAZ,EAAzB;IAEA,IAAI,KAAK7hB,IAAL,CAAUswE,QAAd,EAAwB;MACtB16C,SAAA,CAAUrK,YAAV,CAAuB,eAAvB,EAAwC,QAAxC;IADsB;IAIxB,IAAIvrB,IAAA,CAAKuwE,QAAT,EAAmB;MACjB36C,SAAA,CAAUpR,SAAV,CAAoBhT,GAApB,CAAwB,UAAxB;IADiB;IAInB,MAAM;MAAEgR,SAAF;MAAaC,UAAb;MAAyBC,KAAzB;MAAgCC;IAAhC,IAA0CtT,QAAA,CAASkT,OAAzD;IAEA,IAAI,CAACviB,IAAA,CAAKhE,IAAN,IAAc,gBAAgB0yE,sBAAlC,EAA0D;MACxD,MAAM;QAAErgE;MAAF,IAAerO,IAArB;MACA,IAAI,CAACA,IAAA,CAAK0jD,YAAN,IAAsBr1C,QAAA,KAAa,CAAvC,EAA0C;QACxC,KAAKmiE,WAAL,CAAiBniE,QAAjB,EAA2BunB,SAA3B;MADwC;MAG1C,OAAOA,SAAP;IALwD;IAQ1D,MAAM;MAAE3Z,KAAF;MAASC;IAAT,IAAoB0xD,WAAA,CAAY5tE,IAAA,CAAKhE,IAAjB,CAA1B;IAIA,MAAMA,IAAA,GAAOnC,UAAA,CAAKkC,aAAL,CAAmB,CAC9BiE,IAAA,CAAKhE,IAAL,CAAU,CAAV,CAD8B,EAE9Byd,IAAA,CAAKvL,IAAL,CAAU,CAAV,IAAelO,IAAA,CAAKhE,IAAL,CAAU,CAAV,CAAf,GAA8Byd,IAAA,CAAKvL,IAAL,CAAU,CAAV,CAFA,EAG9BlO,IAAA,CAAKhE,IAAL,CAAU,CAAV,CAH8B,EAI9Byd,IAAA,CAAKvL,IAAL,CAAU,CAAV,IAAelO,IAAA,CAAKhE,IAAL,CAAU,CAAV,CAAf,GAA8Byd,IAAA,CAAKvL,IAAL,CAAU,CAAV,CAJA,CAAnB,CAAb;IAOA,IAAI,CAACyhE,YAAD,IAAiB3vE,IAAA,CAAKywE,WAAL,CAAiBx0D,KAAjB,GAAyB,CAA9C,EAAiD;MAC/C2Z,SAAA,CAAU5Q,KAAV,CAAgB0rD,WAAhB,GAA8B,GAAG1wE,IAAA,CAAKywE,WAAL,CAAiBx0D,KAAM,IAAxD;MAEA,MAAM00D,gBAAA,GAAmB3wE,IAAA,CAAKywE,WAAL,CAAiBG,sBAA1C;MACA,MAAMC,cAAA,GAAiB7wE,IAAA,CAAKywE,WAAL,CAAiBK,oBAAxC;MACA,IAAIH,gBAAA,GAAmB,CAAnB,IAAwBE,cAAA,GAAiB,CAA7C,EAAgD;QAC9C,MAAME,MAAA,GAAU,QAAOJ,gBAAiB,oCAAmCE,cAAe,2BAA1F;QACAj7C,SAAA,CAAU5Q,KAAV,CAAgBgsD,YAAhB,GAA+BD,MAA/B;MAF8C,CAAhD,MAGO,IAAI,gBAAgB5C,kCAApB,EAAwD;QAC7D,MAAM4C,MAAA,GAAU,QAAO90D,KAAM,oCAAmCC,MAAO,2BAAvE;QACA0Z,SAAA,CAAU5Q,KAAV,CAAgBgsD,YAAhB,GAA+BD,MAA/B;MAF6D;MAK/D,QAAQ/wE,IAAA,CAAKywE,WAAL,CAAiBzrD,KAAzB;QACE,KAAK55B,+BAAA,CAA0BC,KAA/B;UACEuqC,SAAA,CAAU5Q,KAAV,CAAgByrD,WAAhB,GAA8B,OAA9B;UACA;QAEF,KAAKrlF,+BAAA,CAA0BE,MAA/B;UACEsqC,SAAA,CAAU5Q,KAAV,CAAgByrD,WAAhB,GAA8B,QAA9B;UACA;QAEF,KAAKrlF,+BAAA,CAA0BG,OAA/B;UACE,IAAAqI,UAAA,EAAK,qCAAL;UACA;QAEF,KAAKxI,+BAAA,CAA0BI,KAA/B;UACE,IAAAoI,UAAA,EAAK,mCAAL;UACA;QAEF,KAAKxI,+BAAA,CAA0B9C,SAA/B;UACEstC,SAAA,CAAU5Q,KAAV,CAAgBisD,iBAAhB,GAAoC,OAApC;UACA;QAEF;UACE;MAtBJ;MAyBA,MAAMC,WAAA,GAAclxE,IAAA,CAAKkxE,WAAL,IAAoB,IAAxC;MACA,IAAIA,WAAJ,EAAiB;QACf,KAAK,CAAAzB,SAAL,GAAkB,IAAlB;QACA75C,SAAA,CAAU5Q,KAAV,CAAgBksD,WAAhB,GAA8Br3E,UAAA,CAAKC,YAAL,CAC5Bo3E,WAAA,CAAY,CAAZ,IAAiB,CADW,EAE5BA,WAAA,CAAY,CAAZ,IAAiB,CAFW,EAG5BA,WAAA,CAAY,CAAZ,IAAiB,CAHW,CAA9B;MAFe,CAAjB,MAOO;QAELt7C,SAAA,CAAU5Q,KAAV,CAAgB0rD,WAAhB,GAA8B,CAA9B;MAFK;IA9CwC;IAoDjD96C,SAAA,CAAU5Q,KAAV,CAAgB0B,IAAhB,GAAuB,GAAI,OAAO1qB,IAAA,CAAK,CAAL,IAAU0mB,KAAV,CAAR,GAA4BF,SAAU,GAAhE;IACAoT,SAAA,CAAU5Q,KAAV,CAAgB4B,GAAhB,GAAsB,GAAI,OAAO5qB,IAAA,CAAK,CAAL,IAAU2mB,KAAV,CAAR,GAA4BF,UAAW,GAAhE;IAEA,MAAM;MAAEpU;IAAF,IAAerO,IAArB;IACA,IAAIA,IAAA,CAAK0jD,YAAL,IAAqBr1C,QAAA,KAAa,CAAtC,EAAyC;MACvCunB,SAAA,CAAU5Q,KAAV,CAAgB/I,KAAhB,GAAwB,GAAI,MAAMA,KAAP,GAAgBuG,SAAU,GAArD;MACAoT,SAAA,CAAU5Q,KAAV,CAAgB9I,MAAhB,GAAyB,GAAI,MAAMA,MAAP,GAAiBuG,UAAW,GAAxD;IAFuC,CAAzC,MAGO;MACL,KAAK+tD,WAAL,CAAiBniE,QAAjB,EAA2BunB,SAA3B;IADK;IAIP,OAAOA,SAAP;EA5G6B;EA+G/B46C,YAAY1pD,KAAZ,EAAmB8O,SAAA,GAAY,KAAKA,SAApC,EAA+C;IAC7C,IAAI,CAAC,KAAK51B,IAAL,CAAUhE,IAAf,EAAqB;MACnB;IADmB;IAGrB,MAAM;MAAEwmB,SAAF;MAAaC;IAAb,IAA4B,KAAK5B,MAAL,CAAYxR,QAAZ,CAAqBkT,OAAvD;IACA,MAAM;MAAEtG,KAAF;MAASC;IAAT,IAAoB0xD,WAAA,CAAY,KAAK5tE,IAAL,CAAUhE,IAAtB,CAA1B;IAEA,IAAIm1E,YAAJ,EAAkBC,aAAlB;IACA,IAAItqD,KAAA,GAAQ,GAAR,KAAgB,CAApB,EAAuB;MACrBqqD,YAAA,GAAgB,MAAMl1D,KAAP,GAAgBuG,SAA/B;MACA4uD,aAAA,GAAiB,MAAMl1D,MAAP,GAAiBuG,UAAjC;IAFqB,CAAvB,MAGO;MACL0uD,YAAA,GAAgB,MAAMj1D,MAAP,GAAiBsG,SAAhC;MACA4uD,aAAA,GAAiB,MAAMn1D,KAAP,GAAgBwG,UAAhC;IAFK;IAKPmT,SAAA,CAAU5Q,KAAV,CAAgB/I,KAAhB,GAAwB,GAAGk1D,YAAa,GAAxC;IACAv7C,SAAA,CAAU5Q,KAAV,CAAgB9I,MAAhB,GAAyB,GAAGk1D,aAAc,GAA1C;IAEAx7C,SAAA,CAAUrK,YAAV,CAAuB,oBAAvB,EAA8C,OAAMzE,KAAN,IAAe,GAA7D;EAnB6C;EAsB/C,IAAIuqD,cAAJA,CAAA,EAAqB;IACnB,MAAMC,QAAA,GAAWA,CAACC,MAAD,EAASC,SAAT,EAAoBt8D,KAApB,KAA8B;MAC7C,MAAM4d,KAAA,GAAQ5d,KAAA,CAAMu8D,MAAN,CAAaF,MAAb,CAAd;MACA,MAAM7T,SAAA,GAAY5qC,KAAA,CAAM,CAAN,CAAlB;MACA,MAAM4+C,UAAA,GAAa5+C,KAAA,CAAM73B,KAAN,CAAY,CAAZ,CAAnB;MACAia,KAAA,CAAMkQ,MAAN,CAAaJ,KAAb,CAAmBwsD,SAAnB,IACEG,gCAAA,CAAgB,GAAGjU,SAAU,OAA7B,EAAqCgU,UAArC,CADF;MAEA,KAAK9mE,iBAAL,CAAuBgV,QAAvB,CAAgC,KAAK5f,IAAL,CAAUwL,EAA1C,EAA8C;QAC5C,CAACgmE,SAAD,GAAaG,gCAAA,CAAgB,GAAGjU,SAAU,MAA7B,EAAoCgU,UAApC;MAD+B,CAA9C;IAN6C,CAA/C;IAWA,OAAO,IAAA18E,YAAA,EAAO,IAAP,EAAa,gBAAb,EAA+B;MACpCk3E,OAAA,EAASh3D,KAAA,IAAS;QAChB,MAAM;UAAEg3D;QAAF,IAAch3D,KAAA,CAAMu8D,MAA1B;QAGA,MAAMjJ,MAAA,GAAS0D,OAAA,GAAU,CAAV,KAAgB,CAA/B;QACA,KAAKt2C,SAAL,CAAe5Q,KAAf,CAAqBqX,UAArB,GAAkCmsC,MAAA,GAAS,QAAT,GAAoB,SAAtD;QACA,KAAK59D,iBAAL,CAAuBgV,QAAvB,CAAgC,KAAK5f,IAAL,CAAUwL,EAA1C,EAA8C;UAC5ComE,MAAA,EAAQpJ,MADoC;UAE5CqJ,OAAA,EAAS3F,OAAA,KAAY,CAAZ,IAAiBA,OAAA,KAAY;QAFM,CAA9C;MANgB,CADkB;MAYpC/rD,KAAA,EAAOjL,KAAA,IAAS;QACd,KAAKtK,iBAAL,CAAuBgV,QAAvB,CAAgC,KAAK5f,IAAL,CAAUwL,EAA1C,EAA8C;UAC5CqmE,OAAA,EAAS,CAAC38D,KAAA,CAAMu8D,MAAN,CAAatxD;QADqB,CAA9C;MADc,CAZoB;MAiBpCqoD,MAAA,EAAQtzD,KAAA,IAAS;QACf,MAAM;UAAEszD;QAAF,IAAatzD,KAAA,CAAMu8D,MAAzB;QACA,KAAK77C,SAAL,CAAe5Q,KAAf,CAAqBqX,UAArB,GAAkCmsC,MAAA,GAAS,QAAT,GAAoB,SAAtD;QACA,KAAK59D,iBAAL,CAAuBgV,QAAvB,CAAgC,KAAK5f,IAAL,CAAUwL,EAA1C,EAA8C;UAC5CqmE,OAAA,EAASrJ,MADmC;UAE5CoJ,MAAA,EAAQpJ;QAFoC,CAA9C;MAHe,CAjBmB;MAyBpC56C,KAAA,EAAO1Y,KAAA,IAAS;QACdlB,UAAA,CAAW,MAAMkB,KAAA,CAAMkQ,MAAN,CAAawI,KAAb,CAAmB;UAAEg+C,aAAA,EAAe;QAAjB,CAAnB,CAAjB,EAA+D,CAA/D;MADc,CAzBoB;MA4BpCkG,QAAA,EAAU58D,KAAA,IAAS;QAEjBA,KAAA,CAAMkQ,MAAN,CAAa2sD,KAAb,GAAqB78D,KAAA,CAAMu8D,MAAN,CAAaK,QAAlC;MAFiB,CA5BiB;MAgCpCE,QAAA,EAAU98D,KAAA,IAAS;QACjBA,KAAA,CAAMkQ,MAAN,CAAa6sD,QAAb,GAAwB/8D,KAAA,CAAMu8D,MAAN,CAAaO,QAArC;MADiB,CAhCiB;MAmCpCE,QAAA,EAAUh9D,KAAA,IAAS;QACjB,KAAKi9D,YAAL,CAAkBj9D,KAAA,CAAMkQ,MAAxB,EAAgClQ,KAAA,CAAMu8D,MAAN,CAAaS,QAA7C;MADiB,CAnCiB;MAsCpC10C,OAAA,EAAStoB,KAAA,IAAS;QAChBo8D,QAAA,CAAS,SAAT,EAAoB,iBAApB,EAAuCp8D,KAAvC;MADgB,CAtCkB;MAyCpCo8B,SAAA,EAAWp8B,KAAA,IAAS;QAClBo8D,QAAA,CAAS,WAAT,EAAsB,iBAAtB,EAAyCp8D,KAAzC;MADkB,CAzCgB;MA4CpCqoB,OAAA,EAASroB,KAAA,IAAS;QAChBo8D,QAAA,CAAS,SAAT,EAAoB,OAApB,EAA6Bp8D,KAA7B;MADgB,CA5CkB;MA+CpCk9D,SAAA,EAAWl9D,KAAA,IAAS;QAClBo8D,QAAA,CAAS,WAAT,EAAsB,OAAtB,EAA+Bp8D,KAA/B;MADkB,CA/CgB;MAkDpCg8D,WAAA,EAAah8D,KAAA,IAAS;QACpBo8D,QAAA,CAAS,aAAT,EAAwB,aAAxB,EAAuCp8D,KAAvC;MADoB,CAlDc;MAqDpCq8B,WAAA,EAAar8B,KAAA,IAAS;QACpBo8D,QAAA,CAAS,aAAT,EAAwB,aAAxB,EAAuCp8D,KAAvC;MADoB,CArDc;MAwDpC7G,QAAA,EAAU6G,KAAA,IAAS;QACjB,MAAM4R,KAAA,GAAQ5R,KAAA,CAAMu8D,MAAN,CAAapjE,QAA3B;QACA,KAAKmiE,WAAL,CAAiB1pD,KAAjB;QACA,KAAKlc,iBAAL,CAAuBgV,QAAvB,CAAgC,KAAK5f,IAAL,CAAUwL,EAA1C,EAA8C;UAC5C6C,QAAA,EAAUyY;QADkC,CAA9C;MAHiB;IAxDiB,CAA/B,CAAP;EAZmB;EA8ErBurD,0BAA0BC,OAA1B,EAAmCC,OAAnC,EAA4C;IAC1C,MAAMC,aAAA,GAAgB,KAAKnB,cAA3B;IACA,WAAWx7E,IAAX,IAAmBR,MAAA,CAAO2C,IAAP,CAAYu6E,OAAA,CAAQd,MAApB,CAAnB,EAAgD;MAC9C,MAAM1jB,MAAA,GAASukB,OAAA,CAAQz8E,IAAR,KAAiB28E,aAAA,CAAc38E,IAAd,CAAhC;MACAk4D,MAAA,GAASwkB,OAAT;IAF8C;EAFN;EAQ5CE,4BAA4BpkD,OAA5B,EAAqC;IACnC,IAAI,CAAC,KAAK4hD,eAAV,EAA2B;MACzB;IADyB;IAK3B,MAAMyC,UAAA,GAAa,KAAK9nE,iBAAL,CAAuB6U,WAAvB,CAAmC,KAAKzf,IAAL,CAAUwL,EAA7C,CAAnB;IACA,IAAI,CAACknE,UAAL,EAAiB;MACf;IADe;IAIjB,MAAMF,aAAA,GAAgB,KAAKnB,cAA3B;IACA,WAAW,CAACljB,UAAD,EAAasjB,MAAb,CAAX,IAAmCp8E,MAAA,CAAOyqB,OAAP,CAAe4yD,UAAf,CAAnC,EAA+D;MAC7D,MAAM3kB,MAAA,GAASykB,aAAA,CAAcrkB,UAAd,CAAf;MACA,IAAIJ,MAAJ,EAAY;QACV,MAAM4kB,UAAA,GAAa;UACjBlB,MAAA,EAAQ;YACN,CAACtjB,UAAD,GAAcsjB;UADR,CADS;UAIjBrsD,MAAA,EAAQiJ;QAJS,CAAnB;QAMA0/B,MAAA,CAAO4kB,UAAP;QAEA,OAAOD,UAAA,CAAWvkB,UAAX,CAAP;MATU;IAFiD;EAZ5B;EAkCrCkiB,sBAAA,EAAwB;IACtB,IAAI,CAAC,KAAKz6C,SAAV,EAAqB;MACnB;IADmB;IAGrB,MAAM;MAAEg9C;IAAF,IAAiB,KAAK5yE,IAA5B;IACA,IAAI,CAAC4yE,UAAL,EAAiB;MACf;IADe;IAIjB,MAAM,CAACC,OAAD,EAAUC,OAAV,EAAmBC,OAAnB,EAA4BC,OAA5B,IAAuC,KAAKhzE,IAAL,CAAUhE,IAAvD;IAEA,IAAI42E,UAAA,CAAWj+E,MAAX,KAAsB,CAA1B,EAA6B;MAC3B,MAAM,GAAG;QAAEsuB,CAAA,EAAGgwD,GAAL;QAAU/vD,CAAA,EAAGgwD;MAAb,CAAH,EAAuB;QAAEjwD,CAAA,EAAGkwD,GAAL;QAAUjwD,CAAA,EAAGkwD;MAAb,CAAvB,IAA6CR,UAAA,CAAW,CAAX,CAAnD;MACA,IACEG,OAAA,KAAYE,GAAZ,IACAD,OAAA,KAAYE,GADZ,IAEAL,OAAA,KAAYM,GAFZ,IAGAL,OAAA,KAAYM,GAJd,EAKE;QAGA;MAHA;IAPyB;IAc7B,MAAM;MAAEpuD;IAAF,IAAY,KAAK4Q,SAAvB;IACA,IAAIy9C,SAAJ;IACA,IAAI,KAAK,CAAA5D,SAAT,EAAqB;MACnB,MAAM;QAAEyB,WAAF;QAAeR;MAAf,IAA+B1rD,KAArC;MACAA,KAAA,CAAM0rD,WAAN,GAAoB,CAApB;MACA2C,SAAA,GAAY,CACV,+BADU,EAET,yCAFS,EAGT,gDAHS,EAIT,iCAAgCnC,WAAY,mBAAkBR,WAAY,IAJjE,CAAZ;MAMA,KAAK96C,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,WAA7B;IATmB;IAgBrB,MAAMyK,KAAA,GAAQ82D,OAAA,GAAUF,OAAxB;IACA,MAAM32D,MAAA,GAAS82D,OAAA,GAAUF,OAAzB;IAEA,MAAM;MAAE9T;IAAF,IAAiB,IAAvB;IACA,MAAMjwC,GAAA,GAAMiwC,UAAA,CAAWh3C,aAAX,CAAyB,KAAzB,CAAZ;IACA+G,GAAA,CAAIvK,SAAJ,CAAchT,GAAd,CAAkB,yBAAlB;IACAud,GAAA,CAAIxD,YAAJ,CAAiB,OAAjB,EAA0B,CAA1B;IACAwD,GAAA,CAAIxD,YAAJ,CAAiB,QAAjB,EAA2B,CAA3B;IACA,MAAM6Q,IAAA,GAAO4iC,UAAA,CAAWh3C,aAAX,CAAyB,MAAzB,CAAb;IACA+G,GAAA,CAAI7G,MAAJ,CAAWkU,IAAX;IACA,MAAMomC,QAAA,GAAWxD,UAAA,CAAWh3C,aAAX,CAAyB,UAAzB,CAAjB;IACA,MAAMxc,EAAA,GAAM,YAAW,KAAKxL,IAAL,CAAUwL,EAAtB,EAAX;IACAg3D,QAAA,CAASj3C,YAAT,CAAsB,IAAtB,EAA4B/f,EAA5B;IACAg3D,QAAA,CAASj3C,YAAT,CAAsB,eAAtB,EAAuC,mBAAvC;IACA6Q,IAAA,CAAKlU,MAAL,CAAYs6C,QAAZ;IAEA,WAAW,GAAG;MAAEv/C,CAAA,EAAGgwD,GAAL;MAAU/vD,CAAA,EAAGgwD;IAAb,CAAH,EAAuB;MAAEjwD,CAAA,EAAGkwD,GAAL;MAAUjwD,CAAA,EAAGkwD;IAAb,CAAvB,CAAX,IAAyDR,UAAzD,EAAqE;MACnE,MAAM52E,IAAA,GAAOgjE,UAAA,CAAWh3C,aAAX,CAAyB,MAAzB,CAAb;MACA,MAAM/E,CAAA,GAAK,CAAAkwD,GAAA,GAAMN,OAAN,IAAiB52D,KAA5B;MACA,MAAMiH,CAAA,GAAK,CAAA8vD,OAAA,GAAUE,GAAV,IAAiBh3D,MAA5B;MACA,MAAMo3D,SAAA,GAAa,CAAAL,GAAA,GAAME,GAAN,IAAal3D,KAAhC;MACA,MAAMs3D,UAAA,GAAc,CAAAL,GAAA,GAAME,GAAN,IAAal3D,MAAjC;MACAlgB,IAAA,CAAKuvB,YAAL,CAAkB,GAAlB,EAAuBtI,CAAvB;MACAjnB,IAAA,CAAKuvB,YAAL,CAAkB,GAAlB,EAAuBrI,CAAvB;MACAlnB,IAAA,CAAKuvB,YAAL,CAAkB,OAAlB,EAA2B+nD,SAA3B;MACAt3E,IAAA,CAAKuvB,YAAL,CAAkB,QAAlB,EAA4BgoD,UAA5B;MACA/Q,QAAA,CAASt6C,MAAT,CAAgBlsB,IAAhB;MACAq3E,SAAA,EAAW77E,IAAX,CACG,+CAA8CyrB,CAAE,QAAOC,CAAE,YAAWowD,SAAU,aAAYC,UAAW,KADxG;IAXmE;IAgBrE,IAAI,KAAK,CAAA9D,SAAT,EAAqB;MACnB4D,SAAA,CAAU77E,IAAV,CAAgB,cAAhB;MACAwtB,KAAA,CAAMwuD,eAAN,GAAwBH,SAAA,CAAU57E,IAAV,CAAe,EAAf,CAAxB;IAFmB;IAKrB,KAAKm+B,SAAL,CAAe1N,MAAf,CAAsB6G,GAAtB;IACA,KAAK6G,SAAL,CAAe5Q,KAAf,CAAqBw9C,QAArB,GAAiC,QAAOh3D,EAAG,GAA3C;EAjFsB;EA4FxBioE,aAAA,EAAe;IACb,MAAM;MAAE79C,SAAF;MAAa51B;IAAb,IAAsB,IAA5B;IACA41B,SAAA,CAAUrK,YAAV,CAAuB,eAAvB,EAAwC,QAAxC;IAEA,MAAMmoD,KAAA,GAAQ,IAAIhF,sBAAJ,CAA2B;MACvC1uE,IAAA,EAAM;QACJ8yB,KAAA,EAAO9yB,IAAA,CAAK8yB,KADR;QAEJ6gD,QAAA,EAAU3zE,IAAA,CAAK2zE,QAFX;QAGJC,gBAAA,EAAkB5zE,IAAA,CAAK4zE,gBAHnB;QAIJC,WAAA,EAAa7zE,IAAA,CAAK6zE,WAJd;QAKJC,QAAA,EAAU9zE,IAAA,CAAK8zE,QALX;QAMJC,UAAA,EAAY/zE,IAAA,CAAKhE,IANb;QAOJy0E,WAAA,EAAa,CAPT;QAQJjlE,EAAA,EAAK,SAAQxL,IAAA,CAAKwL,EAAd,EARA;QASJ6C,QAAA,EAAUrO,IAAA,CAAKqO;MATX,CADiC;MAYvCwS,MAAA,EAAQ,KAAKA,MAZ0B;MAavCmzD,QAAA,EAAU,CAAC,IAAD;IAb6B,CAA3B,CAAd;IAeA,KAAKnzD,MAAL,CAAYqB,GAAZ,CAAgBgG,MAAhB,CAAuBwrD,KAAA,CAAMvkE,MAAN,EAAvB;EAnBa;EA4BfA,OAAA,EAAS;IACP,IAAAtb,iBAAA,EAAY,mDAAZ;EADO;EAQTogF,mBAAmBp+E,IAAnB,EAAyBq+E,MAAA,GAAS,IAAlC,EAAwC;IACtC,MAAMC,MAAA,GAAS,EAAf;IAEA,IAAI,KAAKjE,aAAT,EAAwB;MACtB,MAAMkE,QAAA,GAAW,KAAKlE,aAAL,CAAmBr6E,IAAnB,CAAjB;MACA,IAAIu+E,QAAJ,EAAc;QACZ,WAAW;UAAE36D,IAAF;UAAQjO,EAAR;UAAY6oE;QAAZ,CAAX,IAAyCD,QAAzC,EAAmD;UACjD,IAAI36D,IAAA,KAAS,CAAC,CAAd,EAAiB;YACf;UADe;UAGjB,IAAIjO,EAAA,KAAO0oE,MAAX,EAAmB;YACjB;UADiB;UAGnB,MAAMI,WAAA,GACJ,OAAOD,YAAP,KAAwB,QAAxB,GAAmCA,YAAnC,GAAkD,IADpD;UAGA,MAAME,UAAA,GAAavvE,QAAA,CAASwvE,aAAT,CAChB,qBAAoBhpE,EAAG,IADP,CAAnB;UAGA,IAAI+oE,UAAA,IAAc,CAAC5G,oBAAA,CAAqB92D,GAArB,CAAyB09D,UAAzB,CAAnB,EAAyD;YACvD,IAAA3gF,UAAA,EAAM,6CAA4C4X,EAA7C,EAAL;YACA;UAFuD;UAIzD2oE,MAAA,CAAO38E,IAAP,CAAY;YAAEgU,EAAF;YAAM8oE,WAAN;YAAmBC;UAAnB,CAAZ;QAjBiD;MADvC;MAqBd,OAAOJ,MAAP;IAvBsB;IA2BxB,WAAWI,UAAX,IAAyBvvE,QAAA,CAASyvE,iBAAT,CAA2B5+E,IAA3B,CAAzB,EAA2D;MACzD,MAAM;QAAEy+E;MAAF,IAAkBC,UAAxB;MACA,MAAM/oE,EAAA,GAAK+oE,UAAA,CAAWG,YAAX,CAAwB,iBAAxB,CAAX;MACA,IAAIlpE,EAAA,KAAO0oE,MAAX,EAAmB;QACjB;MADiB;MAGnB,IAAI,CAACvG,oBAAA,CAAqB92D,GAArB,CAAyB09D,UAAzB,CAAL,EAA2C;QACzC;MADyC;MAG3CJ,MAAA,CAAO38E,IAAP,CAAY;QAAEgU,EAAF;QAAM8oE,WAAN;QAAmBC;MAAnB,CAAZ;IATyD;IAW3D,OAAOJ,MAAP;EAzCsC;EA4CxChL,KAAA,EAAO;IACL,IAAI,KAAKvzC,SAAT,EAAoB;MAClB,KAAKA,SAAL,CAAe4yC,MAAf,GAAwB,KAAxB;IADkB;IAGpB,KAAKkL,KAAL,EAAYiB,SAAZ;EAJK;EAOP3L,KAAA,EAAO;IACL,IAAI,KAAKpzC,SAAT,EAAoB;MAClB,KAAKA,SAAL,CAAe4yC,MAAf,GAAwB,IAAxB;IADkB;IAGpB,KAAKkL,KAAL,EAAYkB,SAAZ;EAJK;EAePC,0BAAA,EAA4B;IAC1B,OAAO,KAAKj/C,SAAZ;EAD0B;EAI5Bk/C,iBAAA,EAAmB;IACjB,MAAMC,QAAA,GAAW,KAAKF,yBAAL,EAAjB;IACA,IAAIp7E,KAAA,CAAM++B,OAAN,CAAcu8C,QAAd,CAAJ,EAA6B;MAC3B,WAAW1mD,OAAX,IAAsB0mD,QAAtB,EAAgC;QAC9B1mD,OAAA,CAAQ7J,SAAR,CAAkBhT,GAAlB,CAAsB,eAAtB;MAD8B;IADL,CAA7B,MAIO;MACLujE,QAAA,CAASvwD,SAAT,CAAmBhT,GAAnB,CAAuB,eAAvB;IADK;EANU;EAWnBwjE,mBAAA,EAAqB;IACnB,MAAM;MACJlL,oBAAA,EAAsB11C,IADlB;MAEJp0B,IAAA,EAAM;QAAEwL,EAAA,EAAIouB;MAAN;IAFF,IAGF,IAHJ;IAIA,KAAKhE,SAAL,CAAevgB,gBAAf,CAAgC,UAAhC,EAA4C,MAAM;MAChD,KAAKw6D,WAAL,CAAiB97C,QAAjB,EAA2BkF,QAA3B,CAAoC,4BAApC,EAAkE;QAChE7wB,MAAA,EAAQ,IADwD;QAEhEgsB,IAFgE;QAGhEwF;MAHgE,CAAlE;IADgD,CAAlD;EALmB;AAvfC;AAsgBxB,MAAMk0C,qBAAN,SAAoC0B,iBAApC,CAAsD;EACpD15E,YAAYmsB,UAAZ,EAAwB3tB,OAAA,GAAU,IAAlC,EAAwC;IACtC,MAAM2tB,UAAN,EAAkB;MAChBytD,YAAA,EAAc,IADE;MAEhBC,YAAA,EAAc,CAAC,CAACr7E,OAAA,EAASq7E,YAFT;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;IAKA,KAAKqF,aAAL,GAAqBhzD,UAAA,CAAWjiB,IAAX,CAAgBi1E,aAArC;EANsC;EASxC9lE,OAAA,EAAS;IACP,MAAM;MAAEnP,IAAF;MAAQ6vE;IAAR,IAAwB,IAA9B;IACA,MAAMqF,IAAA,GAAOlwE,QAAA,CAASgjB,aAAT,CAAuB,GAAvB,CAAb;IACAktD,IAAA,CAAK3pD,YAAL,CAAkB,iBAAlB,EAAqCvrB,IAAA,CAAKwL,EAA1C;IACA,IAAI2pE,OAAA,GAAU,KAAd;IAEA,IAAIn1E,IAAA,CAAK9L,GAAT,EAAc;MACZ27E,WAAA,CAAYuF,iBAAZ,CAA8BF,IAA9B,EAAoCl1E,IAAA,CAAK9L,GAAzC,EAA8C8L,IAAA,CAAKq1E,SAAnD;MACAF,OAAA,GAAU,IAAV;IAFY,CAAd,MAGO,IAAIn1E,IAAA,CAAK+tD,MAAT,EAAiB;MACtB,KAAKunB,gBAAL,CAAsBJ,IAAtB,EAA4Bl1E,IAAA,CAAK+tD,MAAjC;MACAonB,OAAA,GAAU,IAAV;IAFsB,CAAjB,MAGA,IAAIn1E,IAAA,CAAKu1E,UAAT,EAAqB;MAC1B,KAAKC,eAAL,CAAqBN,IAArB,EAA2Bl1E,IAAA,CAAKu1E,UAAhC;MACAJ,OAAA,GAAU,IAAV;IAF0B,CAArB,MAGA,IAAIn1E,IAAA,CAAKy1E,WAAT,EAAsB;MAC3B,KAAK,CAAAC,eAAL,CAAsBR,IAAtB,EAA4Bl1E,IAAA,CAAKy1E,WAAjC;MACAN,OAAA,GAAU,IAAV;IAF2B,CAAtB,MAGA,IAAIn1E,IAAA,CAAK6zC,IAAT,EAAe;MACpB,KAAK8hC,SAAL,CAAeT,IAAf,EAAqBl1E,IAAA,CAAK6zC,IAA1B;MACAshC,OAAA,GAAU,IAAV;IAFoB,CAAf,MAGA;MACL,IACEn1E,IAAA,CAAKsyE,OAAL,KACCtyE,IAAA,CAAKsyE,OAAL,CAAasD,MAAb,IACC51E,IAAA,CAAKsyE,OAAL,CAAa,UAAb,CADD,IAECtyE,IAAA,CAAKsyE,OAAL,CAAa,YAAb,CAFD,CADD,IAIA,KAAKrC,eAJL,IAKA,KAAKljE,YANP,EAOE;QACA,KAAK8oE,aAAL,CAAmBX,IAAnB,EAAyBl1E,IAAzB;QACAm1E,OAAA,GAAU,IAAV;MAFA;MAKF,IAAIn1E,IAAA,CAAK81E,SAAT,EAAoB;QAClB,KAAKC,oBAAL,CAA0Bb,IAA1B,EAAgCl1E,IAAA,CAAK81E,SAArC;QACAX,OAAA,GAAU,IAAV;MAFkB,CAApB,MAGO,IAAI,KAAKF,aAAL,IAAsB,CAACE,OAA3B,EAAoC;QACzC,KAAKQ,SAAL,CAAeT,IAAf,EAAqB,EAArB;QACAC,OAAA,GAAU,IAAV;MAFyC;IAhBtC;IAsBP,KAAKv/C,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,gBAA7B;IACA,IAAI2jE,OAAJ,EAAa;MACX,KAAKv/C,SAAL,CAAe1N,MAAf,CAAsBgtD,IAAtB;IADW;IAIb,OAAO,KAAKt/C,SAAZ;EAhDO;EAmDT,CAAAogD,gBAAA,EAAmB;IACjB,KAAKpgD,SAAL,CAAerK,YAAf,CAA4B,oBAA5B,EAAkD,EAAlD;EADiB;EAYnBoqD,UAAUT,IAAV,EAAgBe,WAAhB,EAA6B;IAC3Bf,IAAA,CAAK3sE,IAAL,GAAY,KAAKsnE,WAAL,CAAiBqG,kBAAjB,CAAoCD,WAApC,CAAZ;IACAf,IAAA,CAAKiB,OAAL,GAAe,MAAM;MACnB,IAAIF,WAAJ,EAAiB;QACf,KAAKpG,WAAL,CAAiBuG,eAAjB,CAAiCH,WAAjC;MADe;MAGjB,OAAO,KAAP;IAJmB,CAArB;IAMA,IAAIA,WAAA,IAAeA,WAAA,KAAsC,EAAzD,EAA6D;MAC3D,KAAK,CAAAD,eAAL;IAD2D;EARlC;EAqB7BV,iBAAiBJ,IAAjB,EAAuBnnB,MAAvB,EAA+B;IAC7BmnB,IAAA,CAAK3sE,IAAL,GAAY,KAAKsnE,WAAL,CAAiBwG,YAAjB,CAA8B,EAA9B,CAAZ;IACAnB,IAAA,CAAKiB,OAAL,GAAe,MAAM;MACnB,KAAKtG,WAAL,CAAiByG,kBAAjB,CAAoCvoB,MAApC;MACA,OAAO,KAAP;IAFmB,CAArB;IAIA,KAAK,CAAAioB,eAAL;EAN6B;EAc/BR,gBAAgBN,IAAhB,EAAsBK,UAAtB,EAAkC;IAChCL,IAAA,CAAK3sE,IAAL,GAAY,KAAKsnE,WAAL,CAAiBwG,YAAjB,CAA8B,EAA9B,CAAZ;IACAnB,IAAA,CAAKiB,OAAL,GAAe,MAAM;MACnB,KAAKrG,eAAL,EAAsByG,kBAAtB,CACE,KAAK3gD,SADP,EAEE2/C,UAAA,CAAW7K,OAFb,EAGE6K,UAAA,CAAWn5D,QAHb;MAKA,OAAO,KAAP;IANmB,CAArB;IAQA,KAAK,CAAA45D,eAAL;EAVgC;EAkBlC,CAAAN,gBAAiBR,IAAjB,EAAuBnnB,MAAvB,EAA+B;IAC7BmnB,IAAA,CAAK3sE,IAAL,GAAY,KAAKsnE,WAAL,CAAiBwG,YAAjB,CAA8B,EAA9B,CAAZ;IACAnB,IAAA,CAAKiB,OAAL,GAAe,MAAM;MACnB,KAAKtG,WAAL,CAAiB2G,kBAAjB,CAAoCzoB,MAApC;MACA,OAAO,KAAP;IAFmB,CAArB;IAIA,KAAK,CAAAioB,eAAL;EAN6B;EAiB/BH,cAAcX,IAAd,EAAoBl1E,IAApB,EAA0B;IACxBk1E,IAAA,CAAK3sE,IAAL,GAAY,KAAKsnE,WAAL,CAAiBwG,YAAjB,CAA8B,EAA9B,CAAZ;IACA,MAAMn+E,GAAA,GAAM,IAAImI,GAAJ,CAAQ,CAClB,CAAC,QAAD,EAAW,SAAX,CADkB,EAElB,CAAC,UAAD,EAAa,WAAb,CAFkB,EAGlB,CAAC,YAAD,EAAe,aAAf,CAHkB,CAAR,CAAZ;IAKA,WAAWxK,IAAX,IAAmBR,MAAA,CAAO2C,IAAP,CAAYgI,IAAA,CAAKsyE,OAAjB,CAAnB,EAA8C;MAC5C,MAAMf,MAAA,GAASr5E,GAAA,CAAIuI,GAAJ,CAAQ5K,IAAR,CAAf;MACA,IAAI,CAAC07E,MAAL,EAAa;QACX;MADW;MAGb2D,IAAA,CAAK3D,MAAL,IAAe,MAAM;QACnB,KAAK1B,WAAL,CAAiB97C,QAAjB,EAA2BkF,QAA3B,CAAoC,wBAApC,EAA8D;UAC5D7wB,MAAA,EAAQ,IADoD;UAE5DqpE,MAAA,EAAQ;YACNjmE,EAAA,EAAIxL,IAAA,CAAKwL,EADH;YAEN3V;UAFM;QAFoD,CAA9D;QAOA,OAAO,KAAP;MARmB,CAArB;IAL4C;IAiB9C,IAAI,CAACq/E,IAAA,CAAKiB,OAAV,EAAmB;MACjBjB,IAAA,CAAKiB,OAAL,GAAe,MAAM,KAArB;IADiB;IAGnB,KAAK,CAAAH,eAAL;EA3BwB;EA8B1BD,qBAAqBb,IAArB,EAA2BY,SAA3B,EAAsC;IACpC,MAAMW,gBAAA,GAAmBvB,IAAA,CAAKiB,OAA9B;IACA,IAAI,CAACM,gBAAL,EAAuB;MACrBvB,IAAA,CAAK3sE,IAAL,GAAY,KAAKsnE,WAAL,CAAiBwG,YAAjB,CAA8B,EAA9B,CAAZ;IADqB;IAGvB,KAAK,CAAAL,eAAL;IAEA,IAAI,CAAC,KAAK9F,aAAV,EAAyB;MACvB,IAAAt8E,UAAA,EACG,2DAAD,GACE,uDAFJ;MAIA,IAAI,CAAC6iF,gBAAL,EAAuB;QACrBvB,IAAA,CAAKiB,OAAL,GAAe,MAAM,KAArB;MADqB;MAGvB;IARuB;IAWzBjB,IAAA,CAAKiB,OAAL,GAAe,MAAM;MACnBM,gBAAA;MAEA,MAAM;QACJtC,MAAA,EAAQuC,eADJ;QAEJC,IAAA,EAAMC,aAFF;QAGJC;MAHI,IAIFf,SAJJ;MAMA,MAAMgB,SAAA,GAAY,EAAlB;MACA,IAAIJ,eAAA,CAAgB/hF,MAAhB,KAA2B,CAA3B,IAAgCiiF,aAAA,CAAcjiF,MAAd,KAAyB,CAA7D,EAAgE;QAC9D,MAAMoiF,QAAA,GAAW,IAAIxlE,GAAJ,CAAQqlE,aAAR,CAAjB;QACA,WAAWI,SAAX,IAAwBN,eAAxB,EAAyC;UACvC,MAAMvC,MAAA,GAAS,KAAKjE,aAAL,CAAmB8G,SAAnB,KAAiC,EAAhD;UACA,WAAW;YAAExrE;UAAF,CAAX,IAAqB2oE,MAArB,EAA6B;YAC3B4C,QAAA,CAASvlE,GAAT,CAAahG,EAAb;UAD2B;QAFU;QAMzC,WAAW2oE,MAAX,IAAqB9+E,MAAA,CAAOme,MAAP,CAAc,KAAK08D,aAAnB,CAArB,EAAwD;UACtD,WAAW+G,KAAX,IAAoB9C,MAApB,EAA4B;YAC1B,IAAI4C,QAAA,CAASlgE,GAAT,CAAaogE,KAAA,CAAMzrE,EAAnB,MAA2BqrE,OAA/B,EAAwC;cACtCC,SAAA,CAAUt/E,IAAV,CAAey/E,KAAf;YADsC;UADd;QAD0B;MARM,CAAhE,MAeO;QACL,WAAW9C,MAAX,IAAqB9+E,MAAA,CAAOme,MAAP,CAAc,KAAK08D,aAAnB,CAArB,EAAwD;UACtD4G,SAAA,CAAUt/E,IAAV,CAAe,GAAG28E,MAAlB;QADsD;MADnD;MAMP,MAAMh1D,OAAA,GAAU,KAAKvU,iBAArB;MACA,MAAMssE,MAAA,GAAS,EAAf;MACA,WAAWD,KAAX,IAAoBH,SAApB,EAA+B;QAC7B,MAAM;UAAEtrE;QAAF,IAASyrE,KAAf;QACAC,MAAA,CAAO1/E,IAAP,CAAYgU,EAAZ;QACA,QAAQyrE,KAAA,CAAMhzF,IAAd;UACE,KAAK,MAAL;YAAa;cACX,MAAMkR,KAAA,GAAQ8hF,KAAA,CAAMz3D,YAAN,IAAsB,EAApC;cACAL,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;gBAAErW;cAAF,CAArB;cACA;YAHW;UAKb,KAAK,UAAL;UACA,KAAK,aAAL;YAAoB;cAClB,MAAMA,KAAA,GAAQ8hF,KAAA,CAAMz3D,YAAN,KAAuBy3D,KAAA,CAAM5C,YAA3C;cACAl1D,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;gBAAErW;cAAF,CAArB;cACA;YAHkB;UAKpB,KAAK,UAAL;UACA,KAAK,SAAL;YAAgB;cACd,MAAMA,KAAA,GAAQ8hF,KAAA,CAAMz3D,YAAN,IAAsB,EAApC;cACAL,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;gBAAErW;cAAF,CAArB;cACA;YAHc;UAKhB;YACE;QAnBJ;QAsBA,MAAMo/E,UAAA,GAAavvE,QAAA,CAASwvE,aAAT,CAAwB,qBAAoBhpE,EAAG,IAA/C,CAAnB;QACA,IAAI,CAAC+oE,UAAL,EAAiB;UACf;QADe,CAAjB,MAEO,IAAI,CAAC5G,oBAAA,CAAqB92D,GAArB,CAAyB09D,UAAzB,CAAL,EAA2C;UAChD,IAAA3gF,UAAA,EAAM,+CAA8C4X,EAA/C,EAAL;UACA;QAFgD;QAIlD+oE,UAAA,CAAW4C,aAAX,CAAyB,IAAIC,KAAJ,CAAU,WAAV,CAAzB;MAhC6B;MAmC/B,IAAI,KAAKnH,eAAT,EAA0B;QAExB,KAAKJ,WAAL,CAAiB97C,QAAjB,EAA2BkF,QAA3B,CAAoC,wBAApC,EAA8D;UAC5D7wB,MAAA,EAAQ,IADoD;UAE5DqpE,MAAA,EAAQ;YACNjmE,EAAA,EAAI,KADE;YAENulD,GAAA,EAAKmmB,MAFC;YAGNrhF,IAAA,EAAM;UAHA;QAFoD,CAA9D;MAFwB;MAY1B,OAAO,KAAP;IAhFmB,CAArB;EAlBoC;AA7Kc;AAoRtD,MAAMk4E,qBAAN,SAAoCyB,iBAApC,CAAsD;EACpD15E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GAAe,CAAC,EACpBztD,UAAA,CAAWjiB,IAAX,CAAgBswE,QAAhB,IACAruD,UAAA,CAAWjiB,IAAX,CAAgB2zE,QAAhB,EAA0Bh8E,GAD1B,IAEAsqB,UAAA,CAAWjiB,IAAX,CAAgB6zE,WAAhB,EAA6Bl8E,GAF7B,IAGAsqB,UAAA,CAAWjiB,IAAX,CAAgB8zE,QAAhB,EAA0Bn8E,GAH1B,CADF;IAMA,MAAMsqB,UAAN,EAAkB;MAAEytD;IAAF,CAAlB;EAPsB;EAUxBvgE,OAAA,EAAS;IACP,KAAKymB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,gBAA7B;IAEA,MAAM0d,KAAA,GAAQlqB,QAAA,CAASgjB,aAAT,CAAuB,KAAvB,CAAd;IACAkH,KAAA,CAAMhsB,GAAN,GACE,KAAK6sE,kBAAL,GACA,aADA,GAEA,KAAK/vE,IAAL,CAAUnK,IAAV,CAAeksC,WAAf,EAFA,GAGA,MAJF;IAKA7S,KAAA,CAAMmoD,GAAN,GAAY,uBAAZ;IACAnoD,KAAA,CAAMu2C,OAAN,CAAc6R,MAAd,GAAuB,sBAAvB;IACApoD,KAAA,CAAMu2C,OAAN,CAAc8R,QAAd,GAAyB72D,IAAA,CAAKC,SAAL,CAAe;MAAE18B,IAAA,EAAM,KAAK+b,IAAL,CAAUnK;IAAlB,CAAf,CAAzB;IAEA,IAAI,CAAC,KAAKmK,IAAL,CAAUswE,QAAf,EAAyB;MACvB,KAAKmD,YAAL;IADuB;IAIzB,KAAK79C,SAAL,CAAe1N,MAAf,CAAsBgH,KAAtB;IACA,OAAO,KAAK0G,SAAZ;EAlBO;AAX2C;AAiCtD,MAAM64C,uBAAN,SAAsCe,iBAAtC,CAAwD;EACtDrgE,OAAA,EAAS;IAEP,IAAI,KAAKnP,IAAL,CAAUw3E,eAAd,EAA+B;MAC7B,KAAK5hD,SAAL,CAAem8C,KAAf,GAAuB,KAAK/xE,IAAL,CAAUw3E,eAAjC;IAD6B;IAI/B,OAAO,KAAK5hD,SAAZ;EANO;EAST6hD,yBAAyBppD,OAAzB,EAAkC;IAChC,IAAI,KAAKruB,IAAL,CAAU0jD,YAAd,EAA4B;MAC1B,IAAIr1B,OAAA,CAAQqpD,eAAR,EAAyBC,QAAzB,KAAsC,QAA1C,EAAoD;QAClDtpD,OAAA,CAAQqpD,eAAR,CAAwBlP,MAAxB,GAAiC,IAAjC;MADkD;MAGpDn6C,OAAA,CAAQm6C,MAAR,GAAiB,KAAjB;IAJ0B;EADI;EASlCoP,gBAAgB1iE,KAAhB,EAAuB;IACrB,MAAM;MAAEjc,KAAF;MAASC;IAAT,IAAmBN,iBAAA,CAAYG,QAArC;IACA,OAAQE,KAAA,IAASic,KAAA,CAAMoT,OAAhB,IAA6BpvB,KAAA,IAASgc,KAAA,CAAMiX,OAAnD;EAFqB;EAKvB0rD,kBAAkBxpD,OAAlB,EAA2BypD,QAA3B,EAAqCC,SAArC,EAAgDC,WAAhD,EAA6D;IAC3D,IAAIF,QAAA,CAAS3+E,QAAT,CAAkB,OAAlB,CAAJ,EAAgC;MAE9Bk1B,OAAA,CAAQhZ,gBAAR,CAAyByiE,QAAzB,EAAmC5iE,KAAA,IAAS;QAC1C,KAAK26D,WAAL,CAAiB97C,QAAjB,EAA2BkF,QAA3B,CAAoC,wBAApC,EAA8D;UAC5D7wB,MAAA,EAAQ,IADoD;UAE5DqpE,MAAA,EAAQ;YACNjmE,EAAA,EAAI,KAAKxL,IAAL,CAAUwL,EADR;YAEN3V,IAAA,EAAMkiF,SAFA;YAGN5iF,KAAA,EAAO6iF,WAAA,CAAY9iE,KAAZ,CAHD;YAINwzB,KAAA,EAAOxzB,KAAA,CAAMgX,QAJP;YAKN+rD,QAAA,EAAU,KAAKL,eAAL,CAAqB1iE,KAArB;UALJ;QAFoD,CAA9D;MAD0C,CAA5C;IAF8B,CAAhC,MAcO;MAELmZ,OAAA,CAAQhZ,gBAAR,CAAyByiE,QAAzB,EAAmC5iE,KAAA,IAAS;QAC1C,KAAK26D,WAAL,CAAiB97C,QAAjB,EAA2BkF,QAA3B,CAAoC,wBAApC,EAA8D;UAC5D7wB,MAAA,EAAQ,IADoD;UAE5DqpE,MAAA,EAAQ;YACNjmE,EAAA,EAAI,KAAKxL,IAAL,CAAUwL,EADR;YAEN3V,IAAA,EAAMkiF,SAFA;YAGN5iF,KAAA,EAAO6iF,WAAA,CAAY9iE,KAAZ;UAHD;QAFoD,CAA9D;MAD0C,CAA5C;IAFK;EAfoD;EA8B7DgjE,mBAAmB7pD,OAAnB,EAA4BC,KAA5B,EAAmC6pD,MAAnC,EAA2C;IACzC,WAAW,CAACL,QAAD,EAAWC,SAAX,CAAX,IAAoCzpD,KAApC,EAA2C;MACzC,IAAIypD,SAAA,KAAc,QAAd,IAA0B,KAAK/3E,IAAL,CAAUsyE,OAAV,GAAoByF,SAApB,CAA9B,EAA8D;QAC5D,KAAKF,iBAAL,CAAuBxpD,OAAvB,EAAgCypD,QAAhC,EAA0CC,SAA1C,EAAqDI,MAArD;MAD4D;IADrB;EADF;EAQ3CC,oBAAoB/pD,OAApB,EAA6B;IAC3B,MAAMyE,KAAA,GAAQ,KAAK9yB,IAAL,CAAUspD,eAAV,IAA6B,IAA3C;IACAj7B,OAAA,CAAQrJ,KAAR,CAAcskC,eAAd,GACEx2B,KAAA,KAAU,IAAV,GACI,aADJ,GAEIj5B,UAAA,CAAKC,YAAL,CAAkBg5B,KAAA,CAAM,CAAN,CAAlB,EAA4BA,KAAA,CAAM,CAAN,CAA5B,EAAsCA,KAAA,CAAM,CAAN,CAAtC,CAHN;EAF2B;EAe7BulD,cAAchqD,OAAd,EAAuB;IACrB,MAAMiqD,cAAA,GAAiB,CAAC,MAAD,EAAS,QAAT,EAAmB,OAAnB,CAAvB;IACA,MAAM;MAAEpL;IAAF,IAAgB,KAAKltE,IAAL,CAAUitE,qBAAhC;IACA,MAAMx8B,QAAA,GACJ,KAAKzwC,IAAL,CAAUitE,qBAAV,CAAgCx8B,QAAhC,IAA4C4yB,iBAD9C;IAGA,MAAMr+C,KAAA,GAAQqJ,OAAA,CAAQrJ,KAAtB;IAWA,IAAIuzD,gBAAJ;IACA,MAAM9uB,WAAA,GAAc,CAApB;IACA,MAAM+uB,iBAAA,GAAoBv1D,CAAA,IAAK7rB,IAAA,CAAKiwB,KAAL,CAAW,KAAKpE,CAAhB,IAAqB,EAApD;IACA,IAAI,KAAKjjB,IAAL,CAAUy4E,SAAd,EAAyB;MACvB,MAAMv8D,MAAA,GAAS9kB,IAAA,CAAKoG,GAAL,CACb,KAAKwC,IAAL,CAAUhE,IAAV,CAAe,CAAf,IAAoB,KAAKgE,IAAL,CAAUhE,IAAV,CAAe,CAAf,CAApB,GAAwCytD,WAD3B,CAAf;MAGA,MAAMivB,aAAA,GAAgBthF,IAAA,CAAKiwB,KAAL,CAAWnL,MAAA,IAAU53B,iBAAA,GAAcmsD,QAAd,CAArB,KAAiD,CAAvE;MACA,MAAMkoC,UAAA,GAAaz8D,MAAA,GAASw8D,aAA5B;MACAH,gBAAA,GAAmBnhF,IAAA,CAAKC,GAAL,CACjBo5C,QADiB,EAEjB+nC,iBAAA,CAAkBG,UAAA,GAAar0F,iBAA/B,CAFiB,CAAnB;IANuB,CAAzB,MAUO;MACL,MAAM43B,MAAA,GAAS9kB,IAAA,CAAKoG,GAAL,CACb,KAAKwC,IAAL,CAAUhE,IAAV,CAAe,CAAf,IAAoB,KAAKgE,IAAL,CAAUhE,IAAV,CAAe,CAAf,CAApB,GAAwCytD,WAD3B,CAAf;MAGA8uB,gBAAA,GAAmBnhF,IAAA,CAAKC,GAAL,CACjBo5C,QADiB,EAEjB+nC,iBAAA,CAAkBt8D,MAAA,GAAS53B,iBAA3B,CAFiB,CAAnB;IAJK;IASP0gC,KAAA,CAAMyrB,QAAN,GAAkB,QAAO8nC,gBAAiB,2BAA1C;IAEAvzD,KAAA,CAAM8N,KAAN,GAAcj5B,UAAA,CAAKC,YAAL,CAAkBozE,SAAA,CAAU,CAAV,CAAlB,EAAgCA,SAAA,CAAU,CAAV,CAAhC,EAA8CA,SAAA,CAAU,CAAV,CAA9C,CAAd;IAEA,IAAI,KAAKltE,IAAL,CAAU44E,aAAV,KAA4B,IAAhC,EAAsC;MACpC5zD,KAAA,CAAM6zD,SAAN,GAAkBP,cAAA,CAAe,KAAKt4E,IAAL,CAAU44E,aAAzB,CAAlB;IADoC;EA3CjB;EAgDvBzG,aAAa9jD,OAAb,EAAsByqD,UAAtB,EAAkC;IAChC,IAAIA,UAAJ,EAAgB;MACdzqD,OAAA,CAAQ9C,YAAR,CAAqB,UAArB,EAAiC,IAAjC;IADc,CAAhB,MAEO;MACL8C,OAAA,CAAQs9C,eAAR,CAAwB,UAAxB;IADK;IAGPt9C,OAAA,CAAQ9C,YAAR,CAAqB,eAArB,EAAsCutD,UAAtC;EANgC;AA7HoB;AAuIxD,MAAM7K,2BAAN,SAA0CQ,uBAA1C,CAAkE;EAChE34E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GACJztD,UAAA,CAAW+tD,WAAX,IACC,CAAC/tD,UAAA,CAAWjiB,IAAX,CAAgB+4E,aAAjB,IAAkC,CAAC,CAAC92D,UAAA,CAAWjiB,IAAX,CAAgBg5E,UAFvD;IAGA,MAAM/2D,UAAN,EAAkB;MAAEytD;IAAF,CAAlB;EAJsB;EAOxBuJ,sBAAsB/iE,IAAtB,EAA4B9d,GAA5B,EAAiCjD,KAAjC,EAAwC+jF,YAAxC,EAAsD;IACpD,MAAM/5D,OAAA,GAAU,KAAKvU,iBAArB;IACA,WAAWyjB,OAAX,IAAsB,KAAK4lD,kBAAL,CACpB/9D,IAAA,CAAKrgB,IADe,EAELqgB,IAAA,CAAK1K,EAFA,CAAtB,EAGG;MACD,IAAI6iB,OAAA,CAAQkmD,UAAZ,EAAwB;QACtBlmD,OAAA,CAAQkmD,UAAR,CAAmBn8E,GAAnB,IAA0BjD,KAA1B;MADsB;MAGxBgqB,OAAA,CAAQS,QAAR,CAAiByO,OAAA,CAAQ7iB,EAAzB,EAA6B;QAAE,CAAC0tE,YAAD,GAAgB/jF;MAAlB,CAA7B;IAJC;EALiD;EAatDga,OAAA,EAAS;IACP,MAAMgQ,OAAA,GAAU,KAAKvU,iBAArB;IACA,MAAMY,EAAA,GAAK,KAAKxL,IAAL,CAAUwL,EAArB;IAEA,KAAKoqB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,sBAA7B;IAEA,IAAI6c,OAAA,GAAU,IAAd;IACA,IAAI,KAAK2hD,WAAT,EAAsB;MAIpB,MAAM0C,UAAA,GAAavzD,OAAA,CAAQI,QAAR,CAAiB/T,EAAjB,EAAqB;QACtCrW,KAAA,EAAO,KAAK6K,IAAL,CAAUg5E;MADqB,CAArB,CAAnB;MAGA,IAAIxmE,WAAA,GAAckgE,UAAA,CAAWv9E,KAAX,IAAoB,EAAtC;MACA,MAAMgkF,MAAA,GAASh6D,OAAA,CAAQI,QAAR,CAAiB/T,EAAjB,EAAqB;QAClC4tE,SAAA,EAAW,KAAKp5E,IAAL,CAAUm5E;MADa,CAArB,EAEZC,SAFH;MAGA,IAAID,MAAA,IAAU3mE,WAAA,CAAY7d,MAAZ,GAAqBwkF,MAAnC,EAA2C;QACzC3mE,WAAA,GAAcA,WAAA,CAAYvX,KAAZ,CAAkB,CAAlB,EAAqBk+E,MAArB,CAAd;MADyC;MAI3C,IAAIE,oBAAA,GACF3G,UAAA,CAAW4G,cAAX,IAA6B,KAAKt5E,IAAL,CAAUwS,WAAV,EAAuB/a,IAAvB,CAA4B,IAA5B,CAA7B,IAAkE,IADpE;MAEA,IAAI4hF,oBAAA,IAAwB,KAAKr5E,IAAL,CAAUu5E,IAAtC,EAA4C;QAC1CF,oBAAA,GAAuBA,oBAAA,CAAqB/4E,UAArB,CAAgC,MAAhC,EAAwC,EAAxC,CAAvB;MAD0C;MAI5C,MAAMk5E,WAAA,GAAc;QAClBC,SAAA,EAAWjnE,WADO;QAElB8mE,cAAA,EAAgBD,oBAFE;QAGlBK,kBAAA,EAAoB,IAHF;QAIlBC,SAAA,EAAW;MAJO,CAApB;MAOA,IAAI,KAAK35E,IAAL,CAAUy4E,SAAd,EAAyB;QACvBpqD,OAAA,GAAUrpB,QAAA,CAASgjB,aAAT,CAAuB,UAAvB,CAAV;QACAqG,OAAA,CAAQ7b,WAAR,GAAsB6mE,oBAAA,IAAwB7mE,WAA9C;QACA,IAAI,KAAKxS,IAAL,CAAU45E,WAAd,EAA2B;UACzBvrD,OAAA,CAAQrJ,KAAR,CAAc60D,SAAd,GAA0B,QAA1B;QADyB;MAHJ,CAAzB,MAMO;QACLxrD,OAAA,GAAUrpB,QAAA,CAASgjB,aAAT,CAAuB,OAAvB,CAAV;QACAqG,OAAA,CAAQpqC,IAAR,GAAe,MAAf;QACAoqC,OAAA,CAAQ9C,YAAR,CAAqB,OAArB,EAA8B8tD,oBAAA,IAAwB7mE,WAAtD;QACA,IAAI,KAAKxS,IAAL,CAAU45E,WAAd,EAA2B;UACzBvrD,OAAA,CAAQrJ,KAAR,CAAc80D,SAAd,GAA0B,QAA1B;QADyB;MAJtB;MAQP,IAAI,KAAK95E,IAAL,CAAU0jD,YAAd,EAA4B;QAC1Br1B,OAAA,CAAQm6C,MAAR,GAAiB,IAAjB;MAD0B;MAG5BmF,oBAAA,CAAqBn8D,GAArB,CAAyB6c,OAAzB;MACAA,OAAA,CAAQ9C,YAAR,CAAqB,iBAArB,EAAwC/f,EAAxC;MAEA6iB,OAAA,CAAQ4jD,QAAR,GAAmB,KAAKjyE,IAAL,CAAU+5E,QAA7B;MACA1rD,OAAA,CAAQx4B,IAAR,GAAe,KAAKmK,IAAL,CAAUg3E,SAAzB;MACA3oD,OAAA,CAAQ2rD,QAAR,GAAmBtM,iBAAnB;MAEA,KAAKyE,YAAL,CAAkB9jD,OAAlB,EAA2B,KAAKruB,IAAL,CAAUkyE,QAArC;MAEA,IAAIiH,MAAJ,EAAY;QACV9qD,OAAA,CAAQ4rD,SAAR,GAAoBd,MAApB;MADU;MAIZ9qD,OAAA,CAAQhZ,gBAAR,CAAyB,OAAzB,EAAkCH,KAAA,IAAS;QACzCiK,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;UAAErW,KAAA,EAAO+f,KAAA,CAAMkQ,MAAN,CAAajwB;QAAtB,CAArB;QACA,KAAK8jF,qBAAL,CACE5qD,OADF,EAEE,OAFF,EAGEnZ,KAAA,CAAMkQ,MAAN,CAAajwB,KAHf,EAIE,OAJF;QAMAqkF,WAAA,CAAYF,cAAZ,GAA6B,IAA7B;MARyC,CAA3C;MAWAjrD,OAAA,CAAQhZ,gBAAR,CAAyB,WAAzB,EAAsCH,KAAA,IAAS;QAC7C,MAAMsK,YAAA,GAAe,KAAKxf,IAAL,CAAUk6E,iBAAV,IAA+B,EAApD;QACA7rD,OAAA,CAAQl5B,KAAR,GAAgBqkF,WAAA,CAAYC,SAAZ,GAAwBj6D,YAAxC;QACAg6D,WAAA,CAAYF,cAAZ,GAA6B,IAA7B;MAH6C,CAA/C;MAMA,IAAIa,YAAA,GAAejlE,KAAA,IAAS;QAC1B,MAAM;UAAEokE;QAAF,IAAqBE,WAA3B;QACA,IAAIF,cAAA,KAAmB,IAAnB,IAA2BA,cAAA,KAAmB1iF,SAAlD,EAA6D;UAC3Dse,KAAA,CAAMkQ,MAAN,CAAajwB,KAAb,GAAqBmkF,cAArB;QAD2D;QAI7DpkE,KAAA,CAAMkQ,MAAN,CAAag1D,UAAb,GAA0B,CAA1B;MAN0B,CAA5B;MASA,IAAI,KAAKnK,eAAL,IAAwB,KAAKljE,YAAjC,EAA+C;QAC7CshB,OAAA,CAAQhZ,gBAAR,CAAyB,OAAzB,EAAkCH,KAAA,IAAS;UACzC,MAAM;YAAEkQ;UAAF,IAAalQ,KAAnB;UACA,IAAIskE,WAAA,CAAYC,SAAhB,EAA2B;YACzBr0D,MAAA,CAAOjwB,KAAP,GAAeqkF,WAAA,CAAYC,SAA3B;UADyB;UAG3BD,WAAA,CAAYE,kBAAZ,GAAiCt0D,MAAA,CAAOjwB,KAAxC;UACAqkF,WAAA,CAAYG,SAAZ,GAAwB,CAAxB;QANyC,CAA3C;QASAtrD,OAAA,CAAQhZ,gBAAR,CAAyB,mBAAzB,EAA8Ck9D,OAAA,IAAW;UACvD,KAAKkF,wBAAL,CAA8BlF,OAAA,CAAQntD,MAAtC;UACA,MAAMktD,OAAA,GAAU;YACdn9E,MAAM+f,KAAN,EAAa;cACXskE,WAAA,CAAYC,SAAZ,GAAwBvkE,KAAA,CAAMu8D,MAAN,CAAat8E,KAAb,IAAsB,EAA9C;cACAgqB,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;gBAAErW,KAAA,EAAOqkF,WAAA,CAAYC,SAAZ,CAAsB9/E,QAAtB;cAAT,CAArB;cACAub,KAAA,CAAMkQ,MAAN,CAAajwB,KAAb,GAAqBqkF,WAAA,CAAYC,SAAjC;YAHW,CADC;YAMdH,eAAepkE,KAAf,EAAsB;cACpB,MAAM;gBAAEokE;cAAF,IAAqBpkE,KAAA,CAAMu8D,MAAjC;cACA+H,WAAA,CAAYF,cAAZ,GAA6BA,cAA7B;cACA,IACEA,cAAA,KAAmB,IAAnB,IACAA,cAAA,KAAmB1iF,SADnB,IAEAse,KAAA,CAAMkQ,MAAN,KAAiBpgB,QAAA,CAAS2oB,aAH5B,EAIE;gBAEAzY,KAAA,CAAMkQ,MAAN,CAAajwB,KAAb,GAAqBmkF,cAArB;cAFA;cAIFn6D,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;gBACnB8tE;cADmB,CAArB;YAXoB,CANR;YAqBde,SAASnlE,KAAT,EAAgB;cACdA,KAAA,CAAMkQ,MAAN,CAAak1D,iBAAb,CAA+B,GAAGplE,KAAA,CAAMu8D,MAAN,CAAa4I,QAA/C;YADc,CArBF;YAwBdjB,SAAA,EAAWlkE,KAAA,IAAS;cAClB,MAAM;gBAAEkkE;cAAF,IAAgBlkE,KAAA,CAAMu8D,MAA5B;cACA,MAAM;gBAAErsD;cAAF,IAAalQ,KAAnB;cACA,IAAIkkE,SAAA,KAAc,CAAlB,EAAqB;gBACnBh0D,MAAA,CAAOumD,eAAP,CAAuB,WAAvB;gBACA;cAFmB;cAKrBvmD,MAAA,CAAOmG,YAAP,CAAoB,WAApB,EAAiC6tD,SAAjC;cACA,IAAIjkF,KAAA,GAAQqkF,WAAA,CAAYC,SAAxB;cACA,IAAI,CAACtkF,KAAD,IAAUA,KAAA,CAAMR,MAAN,IAAgBykF,SAA9B,EAAyC;gBACvC;cADuC;cAGzCjkF,KAAA,GAAQA,KAAA,CAAM8F,KAAN,CAAY,CAAZ,EAAem+E,SAAf,CAAR;cACAh0D,MAAA,CAAOjwB,KAAP,GAAeqkF,WAAA,CAAYC,SAAZ,GAAwBtkF,KAAvC;cACAgqB,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;gBAAErW;cAAF,CAArB;cAEA,KAAK06E,WAAL,CAAiB97C,QAAjB,EAA2BkF,QAA3B,CAAoC,wBAApC,EAA8D;gBAC5D7wB,MAAA,EAAQ,IADoD;gBAE5DqpE,MAAA,EAAQ;kBACNjmE,EADM;kBAEN3V,IAAA,EAAM,WAFA;kBAGNV,KAHM;kBAINolF,UAAA,EAAY,IAJN;kBAKNZ,SAAA,EAAW,CALL;kBAMNa,QAAA,EAAUp1D,MAAA,CAAOq1D,cANX;kBAONC,MAAA,EAAQt1D,MAAA,CAAOu1D;gBAPT;cAFoD,CAA9D;YAjBkB;UAxBN,CAAhB;UAuDA,KAAKtI,yBAAL,CAA+BC,OAA/B,EAAwCC,OAAxC;QAzDuD,CAAzD;QA8DAlkD,OAAA,CAAQhZ,gBAAR,CAAyB,SAAzB,EAAoCH,KAAA,IAAS;UAC3CskE,WAAA,CAAYG,SAAZ,GAAwB,CAAxB;UAGA,IAAIA,SAAA,GAAY,CAAC,CAAjB;UACA,IAAIzkE,KAAA,CAAM9c,GAAN,KAAc,QAAlB,EAA4B;YAC1BuhF,SAAA,GAAY,CAAZ;UAD0B,CAA5B,MAEO,IAAIzkE,KAAA,CAAM9c,GAAN,KAAc,OAAd,IAAyB,CAAC,KAAK4H,IAAL,CAAUy4E,SAAxC,EAAmD;YAIxDkB,SAAA,GAAY,CAAZ;UAJwD,CAAnD,MAKA,IAAIzkE,KAAA,CAAM9c,GAAN,KAAc,KAAlB,EAAyB;YAC9BohF,WAAA,CAAYG,SAAZ,GAAwB,CAAxB;UAD8B;UAGhC,IAAIA,SAAA,KAAc,CAAC,CAAnB,EAAsB;YACpB;UADoB;UAGtB,MAAM;YAAExkF;UAAF,IAAY+f,KAAA,CAAMkQ,MAAxB;UACA,IAAIo0D,WAAA,CAAYE,kBAAZ,KAAmCvkF,KAAvC,EAA8C;YAC5C;UAD4C;UAG9CqkF,WAAA,CAAYE,kBAAZ,GAAiCvkF,KAAjC;UAEAqkF,WAAA,CAAYC,SAAZ,GAAwBtkF,KAAxB;UACA,KAAK06E,WAAL,CAAiB97C,QAAjB,EAA2BkF,QAA3B,CAAoC,wBAApC,EAA8D;YAC5D7wB,MAAA,EAAQ,IADoD;YAE5DqpE,MAAA,EAAQ;cACNjmE,EADM;cAEN3V,IAAA,EAAM,WAFA;cAGNV,KAHM;cAINolF,UAAA,EAAY,IAJN;cAKNZ,SALM;cAMNa,QAAA,EAAUtlE,KAAA,CAAMkQ,MAAN,CAAaq1D,cANjB;cAONC,MAAA,EAAQxlE,KAAA,CAAMkQ,MAAN,CAAau1D;YAPf;UAFoD,CAA9D;QAzB2C,CAA7C;QAsCA,MAAMC,aAAA,GAAgBT,YAAtB;QACAA,YAAA,GAAe,IAAf;QACA9rD,OAAA,CAAQhZ,gBAAR,CAAyB,MAAzB,EAAiCH,KAAA,IAAS;UACxC,IAAI,CAACA,KAAA,CAAMmQ,aAAX,EAA0B;YACxB;UADwB;UAG1B,MAAM;YAAElwB;UAAF,IAAY+f,KAAA,CAAMkQ,MAAxB;UACAo0D,WAAA,CAAYC,SAAZ,GAAwBtkF,KAAxB;UACA,IAAIqkF,WAAA,CAAYE,kBAAZ,KAAmCvkF,KAAvC,EAA8C;YAC5C,KAAK06E,WAAL,CAAiB97C,QAAjB,EAA2BkF,QAA3B,CAAoC,wBAApC,EAA8D;cAC5D7wB,MAAA,EAAQ,IADoD;cAE5DqpE,MAAA,EAAQ;gBACNjmE,EADM;gBAEN3V,IAAA,EAAM,WAFA;gBAGNV,KAHM;gBAINolF,UAAA,EAAY,IAJN;gBAKNZ,SAAA,EAAWH,WAAA,CAAYG,SALjB;gBAMNa,QAAA,EAAUtlE,KAAA,CAAMkQ,MAAN,CAAaq1D,cANjB;gBAONC,MAAA,EAAQxlE,KAAA,CAAMkQ,MAAN,CAAau1D;cAPf;YAFoD,CAA9D;UAD4C;UAc9CC,aAAA,CAAc1lE,KAAd;QApBwC,CAA1C;QAuBA,IAAI,KAAKlV,IAAL,CAAUsyE,OAAV,EAAmBuI,SAAvB,EAAkC;UAChCxsD,OAAA,CAAQhZ,gBAAR,CAAyB,aAAzB,EAAwCH,KAAA,IAAS;YAC/CskE,WAAA,CAAYE,kBAAZ,GAAiC,IAAjC;YACA,MAAM;cAAE15E,IAAF;cAAQolB;YAAR,IAAmBlQ,KAAzB;YACA,MAAM;cAAE/f,KAAF;cAASslF,cAAT;cAAyBE;YAAzB,IAA0Cv1D,MAAhD;YAEA,IAAIo1D,QAAA,GAAWC,cAAf;cACEC,MAAA,GAASC,YADX;YAGA,QAAQzlE,KAAA,CAAM4lE,SAAd;cAEE,KAAK,oBAAL;gBAA2B;kBACzB,MAAMpmF,KAAA,GAAQS,KAAA,CACX2sC,SADW,CACD,CADC,EACE24C,cADF,EAEX/lF,KAFW,CAEL,YAFK,CAAd;kBAGA,IAAIA,KAAJ,EAAW;oBACT8lF,QAAA,IAAY9lF,KAAA,CAAM,CAAN,EAASC,MAArB;kBADS;kBAGX;gBAPyB;cAS3B,KAAK,mBAAL;gBAA0B;kBACxB,MAAMD,KAAA,GAAQS,KAAA,CACX2sC,SADW,CACD24C,cADC,EAEX/lF,KAFW,CAEL,YAFK,CAAd;kBAGA,IAAIA,KAAJ,EAAW;oBACTgmF,MAAA,IAAUhmF,KAAA,CAAM,CAAN,EAASC,MAAnB;kBADS;kBAGX;gBAPwB;cAS1B,KAAK,uBAAL;gBACE,IAAI8lF,cAAA,KAAmBE,YAAvB,EAAqC;kBACnCH,QAAA,IAAY,CAAZ;gBADmC;gBAGrC;cACF,KAAK,sBAAL;gBACE,IAAIC,cAAA,KAAmBE,YAAvB,EAAqC;kBACnCD,MAAA,IAAU,CAAV;gBADmC;gBAGrC;YA7BJ;YAiCAxlE,KAAA,CAAMqQ,cAAN;YACA,KAAKsqD,WAAL,CAAiB97C,QAAjB,EAA2BkF,QAA3B,CAAoC,wBAApC,EAA8D;cAC5D7wB,MAAA,EAAQ,IADoD;cAE5DqpE,MAAA,EAAQ;gBACNjmE,EADM;gBAEN3V,IAAA,EAAM,WAFA;gBAGNV,KAHM;gBAIN4lF,MAAA,EAAQ/6E,IAAA,IAAQ,EAJV;gBAKNu6E,UAAA,EAAY,KALN;gBAMNC,QANM;gBAONE;cAPM;YAFoD,CAA9D;UA1C+C,CAAjD;QADgC;QA0DlC,KAAKxC,kBAAL,CACE7pD,OADF,EAEE,CACE,CAAC,OAAD,EAAU,OAAV,CADF,EAEE,CAAC,MAAD,EAAS,MAAT,CAFF,EAGE,CAAC,WAAD,EAAc,YAAd,CAHF,EAIE,CAAC,YAAD,EAAe,aAAf,CAJF,EAKE,CAAC,YAAD,EAAe,YAAf,CALF,EAME,CAAC,SAAD,EAAY,UAAZ,CANF,CAFF,EAUEnZ,KAAA,IAASA,KAAA,CAAMkQ,MAAN,CAAajwB,KAVxB;MAjM6C;MA+M/C,IAAIglF,YAAJ,EAAkB;QAChB9rD,OAAA,CAAQhZ,gBAAR,CAAyB,MAAzB,EAAiC8kE,YAAjC;MADgB;MAIlB,IAAI,KAAKn6E,IAAL,CAAUu5E,IAAd,EAAoB;QAClB,MAAMyB,UAAA,GAAa,KAAKh7E,IAAL,CAAUhE,IAAV,CAAe,CAAf,IAAoB,KAAKgE,IAAL,CAAUhE,IAAV,CAAe,CAAf,CAAvC;QACA,MAAMi/E,SAAA,GAAYD,UAAA,GAAa7B,MAA/B;QAEA9qD,OAAA,CAAQ7J,SAAR,CAAkBhT,GAAlB,CAAsB,MAAtB;QACA6c,OAAA,CAAQrJ,KAAR,CAAck2D,aAAd,GAA+B,QAAOD,SAAU,iCAAhD;MALkB;IAvSA,CAAtB,MA8SO;MACL5sD,OAAA,GAAUrpB,QAAA,CAASgjB,aAAT,CAAuB,KAAvB,CAAV;MACAqG,OAAA,CAAQ7b,WAAR,GAAsB,KAAKxS,IAAL,CAAUg5E,UAAhC;MACA3qD,OAAA,CAAQrJ,KAAR,CAAcm2D,aAAd,GAA8B,QAA9B;MACA9sD,OAAA,CAAQrJ,KAAR,CAAcknD,OAAd,GAAwB,YAAxB;IAJK;IAOP,KAAKmM,aAAL,CAAmBhqD,OAAnB;IACA,KAAK+pD,mBAAL,CAAyB/pD,OAAzB;IACA,KAAKokD,2BAAL,CAAiCpkD,OAAjC;IAEA,KAAKuH,SAAL,CAAe1N,MAAf,CAAsBmG,OAAtB;IACA,OAAO,KAAKuH,SAAZ;EAjUO;AArBuD;AA0VlE,MAAM44C,gCAAN,SAA+CC,uBAA/C,CAAuE;EACrE34E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEytD,YAAA,EAAc,CAAC,CAACztD,UAAA,CAAWjiB,IAAX,CAAgB0jD;IAAlC,CAAlB;EADsB;AAD6C;AAMvE,MAAM2qB,+BAAN,SAA8CI,uBAA9C,CAAsE;EACpE34E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEytD,YAAA,EAAcztD,UAAA,CAAW+tD;IAA3B,CAAlB;EADsB;EAIxB7gE,OAAA,EAAS;IACP,MAAMgQ,OAAA,GAAU,KAAKvU,iBAArB;IACA,MAAM5K,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAMwL,EAAA,GAAKxL,IAAA,CAAKwL,EAAhB;IACA,IAAIrW,KAAA,GAAQgqB,OAAA,CAAQI,QAAR,CAAiB/T,EAAjB,EAAqB;MAC/BrW,KAAA,EAAO6K,IAAA,CAAKs0E,WAAL,KAAqBt0E,IAAA,CAAKg5E;IADF,CAArB,EAET7jF,KAFH;IAGA,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;MAE7BA,KAAA,GAAQA,KAAA,KAAU,KAAlB;MACAgqB,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;QAAErW;MAAF,CAArB;IAH6B;IAM/B,KAAKygC,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,wBAA7B,EAAuD,UAAvD;IAEA,MAAM6c,OAAA,GAAUrpB,QAAA,CAASgjB,aAAT,CAAuB,OAAvB,CAAhB;IACA2lD,oBAAA,CAAqBn8D,GAArB,CAAyB6c,OAAzB;IACAA,OAAA,CAAQ9C,YAAR,CAAqB,iBAArB,EAAwC/f,EAAxC;IAEA6iB,OAAA,CAAQ4jD,QAAR,GAAmBjyE,IAAA,CAAK+5E,QAAxB;IACA,KAAK5H,YAAL,CAAkB9jD,OAAlB,EAA2B,KAAKruB,IAAL,CAAUkyE,QAArC;IACA7jD,OAAA,CAAQpqC,IAAR,GAAe,UAAf;IACAoqC,OAAA,CAAQx4B,IAAR,GAAemK,IAAA,CAAKg3E,SAApB;IACA,IAAI7hF,KAAJ,EAAW;MACTk5B,OAAA,CAAQ9C,YAAR,CAAqB,SAArB,EAAgC,IAAhC;IADS;IAGX8C,OAAA,CAAQ9C,YAAR,CAAqB,aAArB,EAAoCvrB,IAAA,CAAKs0E,WAAzC;IACAjmD,OAAA,CAAQ2rD,QAAR,GAAmBtM,iBAAnB;IAEAr/C,OAAA,CAAQhZ,gBAAR,CAAyB,QAAzB,EAAmCH,KAAA,IAAS;MAC1C,MAAM;QAAErf,IAAF;QAAQulF;MAAR,IAAoBlmE,KAAA,CAAMkQ,MAAhC;MACA,WAAWi2D,QAAX,IAAuB,KAAKpH,kBAAL,CAAwBp+E,IAAxB,EAA6C2V,EAA7C,CAAvB,EAAyE;QACvE,MAAM8vE,UAAA,GAAaF,OAAA,IAAWC,QAAA,CAAS/G,WAAT,KAAyBt0E,IAAA,CAAKs0E,WAA5D;QACA,IAAI+G,QAAA,CAAS9G,UAAb,EAAyB;UACvB8G,QAAA,CAAS9G,UAAT,CAAoB6G,OAApB,GAA8BE,UAA9B;QADuB;QAGzBn8D,OAAA,CAAQS,QAAR,CAAiBy7D,QAAA,CAAS7vE,EAA1B,EAA8B;UAAErW,KAAA,EAAOmmF;QAAT,CAA9B;MALuE;MAOzEn8D,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;QAAErW,KAAA,EAAOimF;MAAT,CAArB;IAT0C,CAA5C;IAYA/sD,OAAA,CAAQhZ,gBAAR,CAAyB,WAAzB,EAAsCH,KAAA,IAAS;MAC7C,MAAMsK,YAAA,GAAexf,IAAA,CAAKk6E,iBAAL,IAA0B,KAA/C;MACAhlE,KAAA,CAAMkQ,MAAN,CAAag2D,OAAb,GAAuB57D,YAAA,KAAiBxf,IAAA,CAAKs0E,WAA7C;IAF6C,CAA/C;IAKA,IAAI,KAAKrE,eAAL,IAAwB,KAAKljE,YAAjC,EAA+C;MAC7CshB,OAAA,CAAQhZ,gBAAR,CAAyB,mBAAzB,EAA8Ck9D,OAAA,IAAW;QACvD,MAAMD,OAAA,GAAU;UACdn9E,MAAM+f,KAAN,EAAa;YACXA,KAAA,CAAMkQ,MAAN,CAAag2D,OAAb,GAAuBlmE,KAAA,CAAMu8D,MAAN,CAAat8E,KAAb,KAAuB,KAA9C;YACAgqB,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;cAAErW,KAAA,EAAO+f,KAAA,CAAMkQ,MAAN,CAAag2D;YAAtB,CAArB;UAFW;QADC,CAAhB;QAMA,KAAK/I,yBAAL,CAA+BC,OAA/B,EAAwCC,OAAxC;MAPuD,CAAzD;MAUA,KAAK2F,kBAAL,CACE7pD,OADF,EAEE,CACE,CAAC,QAAD,EAAW,UAAX,CADF,EAEE,CAAC,QAAD,EAAW,QAAX,CAFF,EAGE,CAAC,OAAD,EAAU,OAAV,CAHF,EAIE,CAAC,MAAD,EAAS,MAAT,CAJF,EAKE,CAAC,WAAD,EAAc,YAAd,CALF,EAME,CAAC,YAAD,EAAe,aAAf,CANF,EAOE,CAAC,YAAD,EAAe,YAAf,CAPF,EAQE,CAAC,SAAD,EAAY,UAAZ,CARF,CAFF,EAYEnZ,KAAA,IAASA,KAAA,CAAMkQ,MAAN,CAAag2D,OAZxB;IAX6C;IA2B/C,KAAKhD,mBAAL,CAAyB/pD,OAAzB;IACA,KAAKokD,2BAAL,CAAiCpkD,OAAjC;IAEA,KAAKuH,SAAL,CAAe1N,MAAf,CAAsBmG,OAAtB;IACA,OAAO,KAAKuH,SAAZ;EA7EO;AAL2D;AAsFtE,MAAMu4C,kCAAN,SAAiDM,uBAAjD,CAAyE;EACvE34E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEytD,YAAA,EAAcztD,UAAA,CAAW+tD;IAA3B,CAAlB;EADsB;EAIxB7gE,OAAA,EAAS;IACP,KAAKymB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,wBAA7B,EAAuD,aAAvD;IACA,MAAM2N,OAAA,GAAU,KAAKvU,iBAArB;IACA,MAAM5K,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAMwL,EAAA,GAAKxL,IAAA,CAAKwL,EAAhB;IACA,IAAIrW,KAAA,GAAQgqB,OAAA,CAAQI,QAAR,CAAiB/T,EAAjB,EAAqB;MAC/BrW,KAAA,EAAO6K,IAAA,CAAKg5E,UAAL,KAAoBh5E,IAAA,CAAKu7E;IADD,CAArB,EAETpmF,KAFH;IAGA,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;MAE7BA,KAAA,GAAQA,KAAA,KAAU6K,IAAA,CAAKu7E,WAAvB;MACAp8D,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;QAAErW;MAAF,CAArB;IAH6B;IAM/B,MAAMk5B,OAAA,GAAUrpB,QAAA,CAASgjB,aAAT,CAAuB,OAAvB,CAAhB;IACA2lD,oBAAA,CAAqBn8D,GAArB,CAAyB6c,OAAzB;IACAA,OAAA,CAAQ9C,YAAR,CAAqB,iBAArB,EAAwC/f,EAAxC;IAEA6iB,OAAA,CAAQ4jD,QAAR,GAAmBjyE,IAAA,CAAK+5E,QAAxB;IACA,KAAK5H,YAAL,CAAkB9jD,OAAlB,EAA2B,KAAKruB,IAAL,CAAUkyE,QAArC;IACA7jD,OAAA,CAAQpqC,IAAR,GAAe,OAAf;IACAoqC,OAAA,CAAQx4B,IAAR,GAAemK,IAAA,CAAKg3E,SAApB;IACA,IAAI7hF,KAAJ,EAAW;MACTk5B,OAAA,CAAQ9C,YAAR,CAAqB,SAArB,EAAgC,IAAhC;IADS;IAGX8C,OAAA,CAAQ2rD,QAAR,GAAmBtM,iBAAnB;IAEAr/C,OAAA,CAAQhZ,gBAAR,CAAyB,QAAzB,EAAmCH,KAAA,IAAS;MAC1C,MAAM;QAAErf,IAAF;QAAQulF;MAAR,IAAoBlmE,KAAA,CAAMkQ,MAAhC;MACA,WAAWo2D,KAAX,IAAoB,KAAKvH,kBAAL,CAAwBp+E,IAAxB,EAA6C2V,EAA7C,CAApB,EAAsE;QACpE2T,OAAA,CAAQS,QAAR,CAAiB47D,KAAA,CAAMhwE,EAAvB,EAA2B;UAAErW,KAAA,EAAO;QAAT,CAA3B;MADoE;MAGtEgqB,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;QAAErW,KAAA,EAAOimF;MAAT,CAArB;IAL0C,CAA5C;IAQA/sD,OAAA,CAAQhZ,gBAAR,CAAyB,WAAzB,EAAsCH,KAAA,IAAS;MAC7C,MAAMsK,YAAA,GAAexf,IAAA,CAAKk6E,iBAA1B;MACAhlE,KAAA,CAAMkQ,MAAN,CAAag2D,OAAb,GACE57D,YAAA,KAAiB,IAAjB,IACAA,YAAA,KAAiB5oB,SADjB,IAEA4oB,YAAA,KAAiBxf,IAAA,CAAKu7E,WAHxB;IAF6C,CAA/C;IAQA,IAAI,KAAKtL,eAAL,IAAwB,KAAKljE,YAAjC,EAA+C;MAC7C,MAAM0uE,cAAA,GAAiBz7E,IAAA,CAAKu7E,WAA5B;MACAltD,OAAA,CAAQhZ,gBAAR,CAAyB,mBAAzB,EAA8Ck9D,OAAA,IAAW;QACvD,MAAMD,OAAA,GAAU;UACdn9E,KAAA,EAAO+f,KAAA,IAAS;YACd,MAAMkmE,OAAA,GAAUK,cAAA,KAAmBvmE,KAAA,CAAMu8D,MAAN,CAAat8E,KAAhD;YACA,WAAWqmF,KAAX,IAAoB,KAAKvH,kBAAL,CAAwB/+D,KAAA,CAAMkQ,MAAN,CAAavvB,IAArC,CAApB,EAAgE;cAC9D,MAAMylF,UAAA,GAAaF,OAAA,IAAWI,KAAA,CAAMhwE,EAAN,KAAaA,EAA3C;cACA,IAAIgwE,KAAA,CAAMjH,UAAV,EAAsB;gBACpBiH,KAAA,CAAMjH,UAAN,CAAiB6G,OAAjB,GAA2BE,UAA3B;cADoB;cAGtBn8D,OAAA,CAAQS,QAAR,CAAiB47D,KAAA,CAAMhwE,EAAvB,EAA2B;gBAAErW,KAAA,EAAOmmF;cAAT,CAA3B;YAL8D;UAFlD;QADF,CAAhB;QAYA,KAAKjJ,yBAAL,CAA+BC,OAA/B,EAAwCC,OAAxC;MAbuD,CAAzD;MAgBA,KAAK2F,kBAAL,CACE7pD,OADF,EAEE,CACE,CAAC,QAAD,EAAW,UAAX,CADF,EAEE,CAAC,QAAD,EAAW,QAAX,CAFF,EAGE,CAAC,OAAD,EAAU,OAAV,CAHF,EAIE,CAAC,MAAD,EAAS,MAAT,CAJF,EAKE,CAAC,WAAD,EAAc,YAAd,CALF,EAME,CAAC,YAAD,EAAe,aAAf,CANF,EAOE,CAAC,YAAD,EAAe,YAAf,CAPF,EAQE,CAAC,SAAD,EAAY,UAAZ,CARF,CAFF,EAYEnZ,KAAA,IAASA,KAAA,CAAMkQ,MAAN,CAAag2D,OAZxB;IAlB6C;IAkC/C,KAAKhD,mBAAL,CAAyB/pD,OAAzB;IACA,KAAKokD,2BAAL,CAAiCpkD,OAAjC;IAEA,KAAKuH,SAAL,CAAe1N,MAAf,CAAsBmG,OAAtB;IACA,OAAO,KAAKuH,SAAZ;EAjFO;AAL8D;AA0FzE,MAAM04C,iCAAN,SAAgDR,qBAAhD,CAAsE;EACpEh4E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAE0tD,YAAA,EAAc1tD,UAAA,CAAWjiB,IAAX,CAAgB+4E;IAAhC,CAAlB;EADsB;EAIxB5pE,OAAA,EAAS;IAIP,MAAMymB,SAAA,GAAY,MAAMzmB,MAAN,EAAlB;IACAymB,SAAA,CAAUpR,SAAV,CAAoBhT,GAApB,CAAwB,wBAAxB,EAAkD,YAAlD;IAEA,IAAI,KAAKxR,IAAL,CAAUw3E,eAAd,EAA+B;MAC7B5hD,SAAA,CAAUm8C,KAAV,GAAkB,KAAK/xE,IAAL,CAAUw3E,eAA5B;IAD6B;IAI/B,MAAMkE,WAAA,GAAc9lD,SAAA,CAAU+lD,SAA9B;IACA,IAAI,KAAK1L,eAAL,IAAwB,KAAKljE,YAA7B,IAA6C2uE,WAAjD,EAA8D;MAC5D,KAAKjJ,2BAAL,CAAiCiJ,WAAjC;MAEAA,WAAA,CAAYrmE,gBAAZ,CAA6B,mBAA7B,EAAkDk9D,OAAA,IAAW;QAC3D,KAAKF,yBAAL,CAA+B,EAA/B,EAAmCE,OAAnC;MAD2D,CAA7D;IAH4D;IAQ9D,OAAO38C,SAAP;EApBO;AAL2D;AA6BtE,MAAM24C,6BAAN,SAA4CE,uBAA5C,CAAoE;EAClE34E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEytD,YAAA,EAAcztD,UAAA,CAAW+tD;IAA3B,CAAlB;EADsB;EAIxB7gE,OAAA,EAAS;IACP,KAAKymB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,wBAA7B;IACA,MAAM2N,OAAA,GAAU,KAAKvU,iBAArB;IACA,MAAMY,EAAA,GAAK,KAAKxL,IAAL,CAAUwL,EAArB;IAEA,MAAMknE,UAAA,GAAavzD,OAAA,CAAQI,QAAR,CAAiB/T,EAAjB,EAAqB;MACtCrW,KAAA,EAAO,KAAK6K,IAAL,CAAUg5E;IADqB,CAArB,CAAnB;IAIA,MAAM4C,aAAA,GAAgB52E,QAAA,CAASgjB,aAAT,CAAuB,QAAvB,CAAtB;IACA2lD,oBAAA,CAAqBn8D,GAArB,CAAyBoqE,aAAzB;IACAA,aAAA,CAAcrwD,YAAd,CAA2B,iBAA3B,EAA8C/f,EAA9C;IAEAowE,aAAA,CAAc3J,QAAd,GAAyB,KAAKjyE,IAAL,CAAU+5E,QAAnC;IACA,KAAK5H,YAAL,CAAkByJ,aAAlB,EAAiC,KAAK57E,IAAL,CAAUkyE,QAA3C;IACA0J,aAAA,CAAc/lF,IAAd,GAAqB,KAAKmK,IAAL,CAAUg3E,SAA/B;IACA4E,aAAA,CAAc5B,QAAd,GAAyBtM,iBAAzB;IAEA,IAAImO,eAAA,GAAkB,KAAK77E,IAAL,CAAU87E,KAAV,IAAmB,KAAK97E,IAAL,CAAU1L,OAAV,CAAkBK,MAAlB,GAA2B,CAApE;IAEA,IAAI,CAAC,KAAKqL,IAAL,CAAU87E,KAAf,EAAsB;MAEpBF,aAAA,CAAcrpE,IAAd,GAAqB,KAAKvS,IAAL,CAAU1L,OAAV,CAAkBK,MAAvC;MACA,IAAI,KAAKqL,IAAL,CAAU+7E,WAAd,EAA2B;QACzBH,aAAA,CAAcI,QAAd,GAAyB,IAAzB;MADyB;IAHP;IAQtBJ,aAAA,CAAcvmE,gBAAd,CAA+B,WAA/B,EAA4CH,KAAA,IAAS;MACnD,MAAMsK,YAAA,GAAe,KAAKxf,IAAL,CAAUk6E,iBAA/B;MACA,WAAW+B,MAAX,IAAqBL,aAAA,CAActnF,OAAnC,EAA4C;QAC1C2nF,MAAA,CAAOC,QAAP,GAAkBD,MAAA,CAAO9mF,KAAP,KAAiBqqB,YAAnC;MAD0C;IAFO,CAArD;IAQA,WAAWy8D,MAAX,IAAqB,KAAKj8E,IAAL,CAAU1L,OAA/B,EAAwC;MACtC,MAAM6nF,aAAA,GAAgBn3E,QAAA,CAASgjB,aAAT,CAAuB,QAAvB,CAAtB;MACAm0D,aAAA,CAAc3pE,WAAd,GAA4BypE,MAAA,CAAOG,YAAnC;MACAD,aAAA,CAAchnF,KAAd,GAAsB8mF,MAAA,CAAO3H,WAA7B;MACA,IAAI5B,UAAA,CAAWv9E,KAAX,CAAiBgE,QAAjB,CAA0B8iF,MAAA,CAAO3H,WAAjC,CAAJ,EAAmD;QACjD6H,aAAA,CAAc5wD,YAAd,CAA2B,UAA3B,EAAuC,IAAvC;QACAswD,eAAA,GAAkB,KAAlB;MAFiD;MAInDD,aAAA,CAAc1zD,MAAd,CAAqBi0D,aAArB;IARsC;IAWxC,IAAIE,gBAAA,GAAmB,IAAvB;IACA,IAAIR,eAAJ,EAAqB;MACnB,MAAMS,iBAAA,GAAoBt3E,QAAA,CAASgjB,aAAT,CAAuB,QAAvB,CAA1B;MACAs0D,iBAAA,CAAkBnnF,KAAlB,GAA0B,GAA1B;MACAmnF,iBAAA,CAAkB/wD,YAAlB,CAA+B,QAA/B,EAAyC,IAAzC;MACA+wD,iBAAA,CAAkB/wD,YAAlB,CAA+B,UAA/B,EAA2C,IAA3C;MACAqwD,aAAA,CAAcxzD,OAAd,CAAsBk0D,iBAAtB;MAEAD,gBAAA,GAAmBA,CAAA,KAAM;QACvBC,iBAAA,CAAkB58D,MAAlB;QACAk8D,aAAA,CAActmE,mBAAd,CAAkC,OAAlC,EAA2C+mE,gBAA3C;QACAA,gBAAA,GAAmB,IAAnB;MAHuB,CAAzB;MAKAT,aAAA,CAAcvmE,gBAAd,CAA+B,OAA/B,EAAwCgnE,gBAAxC;IAZmB;IAerB,MAAM98D,QAAA,GAAWg9D,QAAA,IAAY;MAC3B,MAAM1mF,IAAA,GAAO0mF,QAAA,GAAW,OAAX,GAAqB,aAAlC;MACA,MAAM;QAAEjoF,OAAF;QAAW0nF;MAAX,IAAwBJ,aAA9B;MACA,IAAI,CAACI,QAAL,EAAe;QACb,OAAO1nF,OAAA,CAAQkoF,aAAR,KAA0B,CAAC,CAA3B,GACH,IADG,GAEHloF,OAAA,CAAQA,OAAA,CAAQkoF,aAAhB,EAA+B3mF,IAA/B,CAFJ;MADa;MAKf,OAAO4D,KAAA,CAAM1D,SAAN,CAAgBqnC,MAAhB,CACJhoB,IADI,CACC9gB,OADD,EACU2nF,MAAA,IAAUA,MAAA,CAAOC,QAD3B,EAEJhkF,GAFI,CAEA+jF,MAAA,IAAUA,MAAA,CAAOpmF,IAAP,CAFV,CAAP;IAR2B,CAA7B;IAaA,IAAI4mF,cAAA,GAAiBl9D,QAAA,CAAwB,KAAxB,CAArB;IAEA,MAAMm9D,QAAA,GAAWxnE,KAAA,IAAS;MACxB,MAAM5gB,OAAA,GAAU4gB,KAAA,CAAMkQ,MAAN,CAAa9wB,OAA7B;MACA,OAAOmF,KAAA,CAAM1D,SAAN,CAAgBmC,GAAhB,CAAoBkd,IAApB,CAAyB9gB,OAAzB,EAAkC2nF,MAAA,IAAU;QACjD,OAAO;UAAEG,YAAA,EAAcH,MAAA,CAAOzpE,WAAvB;UAAoC8hE,WAAA,EAAa2H,MAAA,CAAO9mF;QAAxD,CAAP;MADiD,CAA5C,CAAP;IAFwB,CAA1B;IAOA,IAAI,KAAK86E,eAAL,IAAwB,KAAKljE,YAAjC,EAA+C;MAC7C6uE,aAAA,CAAcvmE,gBAAd,CAA+B,mBAA/B,EAAoDk9D,OAAA,IAAW;QAC7D,MAAMD,OAAA,GAAU;UACdn9E,MAAM+f,KAAN,EAAa;YACXmnE,gBAAA;YACA,MAAMlnF,KAAA,GAAQ+f,KAAA,CAAMu8D,MAAN,CAAat8E,KAA3B;YACA,MAAMqe,MAAA,GAAS,IAAIjC,GAAJ,CAAQ9X,KAAA,CAAM++B,OAAN,CAAcrjC,KAAd,IAAuBA,KAAvB,GAA+B,CAACA,KAAD,CAAvC,CAAf;YACA,WAAW8mF,MAAX,IAAqBL,aAAA,CAActnF,OAAnC,EAA4C;cAC1C2nF,MAAA,CAAOC,QAAP,GAAkB1oE,MAAA,CAAOqD,GAAP,CAAWolE,MAAA,CAAO9mF,KAAlB,CAAlB;YAD0C;YAG5CgqB,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;cACnBrW,KAAA,EAAOoqB,QAAA,CAAwB,IAAxB;YADY,CAArB;YAGAk9D,cAAA,GAAiBl9D,QAAA,CAAwB,KAAxB,CAAjB;UAVW,CADC;UAado9D,kBAAkBznE,KAAlB,EAAyB;YACvB0mE,aAAA,CAAcI,QAAd,GAAyB,IAAzB;UADuB,CAbX;UAgBdt8D,OAAOxK,KAAP,EAAc;YACZ,MAAM5gB,OAAA,GAAUsnF,aAAA,CAActnF,OAA9B;YACA,MAAMsoF,KAAA,GAAQ1nE,KAAA,CAAMu8D,MAAN,CAAa/xD,MAA3B;YACAprB,OAAA,CAAQsoF,KAAR,EAAeV,QAAf,GAA0B,KAA1B;YACAN,aAAA,CAAcl8D,MAAd,CAAqBk9D,KAArB;YACA,IAAItoF,OAAA,CAAQK,MAAR,GAAiB,CAArB,EAAwB;cACtB,MAAMuC,CAAA,GAAIuC,KAAA,CAAM1D,SAAN,CAAgB8mF,SAAhB,CAA0BznE,IAA1B,CACR9gB,OADQ,EAER2nF,MAAA,IAAUA,MAAA,CAAOC,QAFT,CAAV;cAIA,IAAIhlF,CAAA,KAAM,CAAC,CAAX,EAAc;gBACZ5C,OAAA,CAAQ,CAAR,EAAW4nF,QAAX,GAAsB,IAAtB;cADY;YALQ;YASxB/8D,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;cACnBrW,KAAA,EAAOoqB,QAAA,CAAwB,IAAxB,CADY;cAEnB9M,KAAA,EAAOiqE,QAAA,CAASxnE,KAAT;YAFY,CAArB;YAIAunE,cAAA,GAAiBl9D,QAAA,CAAwB,KAAxB,CAAjB;UAlBY,CAhBA;UAoCd3L,MAAMsB,KAAN,EAAa;YACX,OAAO0mE,aAAA,CAAcjnF,MAAd,KAAyB,CAAhC,EAAmC;cACjCinF,aAAA,CAAcl8D,MAAd,CAAqB,CAArB;YADiC;YAGnCP,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;cAAErW,KAAA,EAAO,IAAT;cAAesd,KAAA,EAAO;YAAtB,CAArB;YACAgqE,cAAA,GAAiBl9D,QAAA,CAAwB,KAAxB,CAAjB;UALW,CApCC;UA2Cd2pB,OAAOh0B,KAAP,EAAc;YACZ,MAAM;cAAE0nE,KAAF;cAASR,YAAT;cAAuB9H;YAAvB,IAAuCp/D,KAAA,CAAMu8D,MAAN,CAAavoC,MAA1D;YACA,MAAM4zC,WAAA,GAAclB,aAAA,CAAc1sE,QAAd,CAAuB0tE,KAAvB,CAApB;YACA,MAAMT,aAAA,GAAgBn3E,QAAA,CAASgjB,aAAT,CAAuB,QAAvB,CAAtB;YACAm0D,aAAA,CAAc3pE,WAAd,GAA4B4pE,YAA5B;YACAD,aAAA,CAAchnF,KAAd,GAAsBm/E,WAAtB;YAEA,IAAIwI,WAAJ,EAAiB;cACfA,WAAA,CAAYC,MAAZ,CAAmBZ,aAAnB;YADe,CAAjB,MAEO;cACLP,aAAA,CAAc1zD,MAAd,CAAqBi0D,aAArB;YADK;YAGPh9D,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;cACnBrW,KAAA,EAAOoqB,QAAA,CAAwB,IAAxB,CADY;cAEnB9M,KAAA,EAAOiqE,QAAA,CAASxnE,KAAT;YAFY,CAArB;YAIAunE,cAAA,GAAiBl9D,QAAA,CAAwB,KAAxB,CAAjB;UAhBY,CA3CA;UA6Dd9M,MAAMyC,KAAN,EAAa;YACX,MAAM;cAAEzC;YAAF,IAAYyC,KAAA,CAAMu8D,MAAxB;YACA,OAAOmK,aAAA,CAAcjnF,MAAd,KAAyB,CAAhC,EAAmC;cACjCinF,aAAA,CAAcl8D,MAAd,CAAqB,CAArB;YADiC;YAGnC,WAAW2E,IAAX,IAAmB5R,KAAnB,EAA0B;cACxB,MAAM;gBAAE2pE,YAAF;gBAAgB9H;cAAhB,IAAgCjwD,IAAtC;cACA,MAAM83D,aAAA,GAAgBn3E,QAAA,CAASgjB,aAAT,CAAuB,QAAvB,CAAtB;cACAm0D,aAAA,CAAc3pE,WAAd,GAA4B4pE,YAA5B;cACAD,aAAA,CAAchnF,KAAd,GAAsBm/E,WAAtB;cACAsH,aAAA,CAAc1zD,MAAd,CAAqBi0D,aAArB;YALwB;YAO1B,IAAIP,aAAA,CAActnF,OAAd,CAAsBK,MAAtB,GAA+B,CAAnC,EAAsC;cACpCinF,aAAA,CAActnF,OAAd,CAAsB,CAAtB,EAAyB4nF,QAAzB,GAAoC,IAApC;YADoC;YAGtC/8D,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;cACnBrW,KAAA,EAAOoqB,QAAA,CAAwB,IAAxB,CADY;cAEnB9M,KAAA,EAAOiqE,QAAA,CAASxnE,KAAT;YAFY,CAArB;YAIAunE,cAAA,GAAiBl9D,QAAA,CAAwB,KAAxB,CAAjB;UAnBW,CA7DC;UAkFdy9D,QAAQ9nE,KAAR,EAAe;YACb,MAAM8nE,OAAA,GAAU,IAAIzrE,GAAJ,CAAQ2D,KAAA,CAAMu8D,MAAN,CAAauL,OAArB,CAAhB;YACA,WAAWf,MAAX,IAAqB/mE,KAAA,CAAMkQ,MAAN,CAAa9wB,OAAlC,EAA2C;cACzC2nF,MAAA,CAAOC,QAAP,GAAkBc,OAAA,CAAQnmE,GAAR,CAAYolE,MAAA,CAAOW,KAAnB,CAAlB;YADyC;YAG3Cz9D,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;cACnBrW,KAAA,EAAOoqB,QAAA,CAAwB,IAAxB;YADY,CAArB;YAGAk9D,cAAA,GAAiBl9D,QAAA,CAAwB,KAAxB,CAAjB;UARa,CAlFD;UA4FdwpD,SAAS7zD,KAAT,EAAgB;YACdA,KAAA,CAAMkQ,MAAN,CAAa6sD,QAAb,GAAwB,CAAC/8D,KAAA,CAAMu8D,MAAN,CAAa1I,QAAtC;UADc;QA5FF,CAAhB;QAgGA,KAAKsJ,yBAAL,CAA+BC,OAA/B,EAAwCC,OAAxC;MAjG6D,CAA/D;MAoGAqJ,aAAA,CAAcvmE,gBAAd,CAA+B,OAA/B,EAAwCH,KAAA,IAAS;QAC/C,MAAMo/D,WAAA,GAAc/0D,QAAA,CAAwB,IAAxB,CAApB;QACAJ,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;UAAErW,KAAA,EAAOm/E;QAAT,CAArB;QAEAp/D,KAAA,CAAMqQ,cAAN;QAEA,KAAKsqD,WAAL,CAAiB97C,QAAjB,EAA2BkF,QAA3B,CAAoC,wBAApC,EAA8D;UAC5D7wB,MAAA,EAAQ,IADoD;UAE5DqpE,MAAA,EAAQ;YACNjmE,EADM;YAEN3V,IAAA,EAAM,WAFA;YAGNV,KAAA,EAAOsnF,cAHD;YAINQ,QAAA,EAAU3I,WAJJ;YAKNiG,UAAA,EAAY,KALN;YAMNZ,SAAA,EAAW,CANL;YAONuD,OAAA,EAAS;UAPH;QAFoD,CAA9D;MAN+C,CAAjD;MAoBA,KAAKhF,kBAAL,CACE0D,aADF,EAEE,CACE,CAAC,OAAD,EAAU,OAAV,CADF,EAEE,CAAC,MAAD,EAAS,MAAT,CAFF,EAGE,CAAC,WAAD,EAAc,YAAd,CAHF,EAIE,CAAC,YAAD,EAAe,aAAf,CAJF,EAKE,CAAC,YAAD,EAAe,YAAf,CALF,EAME,CAAC,SAAD,EAAY,UAAZ,CANF,EAOE,CAAC,OAAD,EAAU,QAAV,CAPF,EAQE,CAAC,OAAD,EAAU,UAAV,CARF,CAFF,EAYE1mE,KAAA,IAASA,KAAA,CAAMkQ,MAAN,CAAajwB,KAZxB;IAzH6C,CAA/C,MAuIO;MACLymF,aAAA,CAAcvmE,gBAAd,CAA+B,OAA/B,EAAwC,UAAUH,KAAV,EAAiB;QACvDiK,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;UAAErW,KAAA,EAAOoqB,QAAA,CAAwB,IAAxB;QAAT,CAArB;MADuD,CAAzD;IADK;IAMP,IAAI,KAAKvf,IAAL,CAAU87E,KAAd,EAAqB;MACnB,KAAKzD,aAAL,CAAmBuD,aAAnB;IADmB,CAArB,MAEO;IAIP,KAAKxD,mBAAL,CAAyBwD,aAAzB;IACA,KAAKnJ,2BAAL,CAAiCmJ,aAAjC;IAEA,KAAKhmD,SAAL,CAAe1N,MAAf,CAAsB0zD,aAAtB;IACA,OAAO,KAAKhmD,SAAZ;EA5OO;AALyD;AAqPpE,MAAM84C,sBAAN,SAAqCc,iBAArC,CAAuD;EACrD15E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAM;MAAEjiB,IAAF;MAAQg0E;IAAR,IAAqB/xD,UAA3B;IACA,MAAMytD,YAAA,GAAe,CAAC,EACpB1vE,IAAA,CAAK2zE,QAAL,EAAeh8E,GAAf,IACAqI,IAAA,CAAK6zE,WAAL,EAAkBl8E,GADlB,IAEAqI,IAAA,CAAK8zE,QAAL,EAAen8E,GAFf,CADF;IAKA,MAAMsqB,UAAN,EAAkB;MAAEytD;IAAF,CAAlB;IACA,KAAKsE,QAAL,GAAgBA,QAAhB;EARsB;EAWxB7kE,OAAA,EAAS;IACP,KAAKymB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,iBAA7B;IAEA,MAAMkiE,KAAA,GAAQ,IAAIyJ,YAAJ,CAAiB;MAC7BvnD,SAAA,EAAW,KAAKA,SADa;MAE7B9C,KAAA,EAAO,KAAK9yB,IAAL,CAAU8yB,KAFY;MAG7B6gD,QAAA,EAAU,KAAK3zE,IAAL,CAAU2zE,QAHS;MAI7BC,gBAAA,EAAkB,KAAK5zE,IAAL,CAAU4zE,gBAJC;MAK7BC,WAAA,EAAa,KAAK7zE,IAAL,CAAU6zE,WALM;MAM7BC,QAAA,EAAU,KAAK9zE,IAAL,CAAU8zE,QANS;MAO7B93E,IAAA,EAAM,KAAKgE,IAAL,CAAUhE,IAPa;MAQ7B+3E,UAAA,EAAY,KAAK/zE,IAAL,CAAU+zE,UAAV,IAAwB,IARP;MAS7BlzD,MAAA,EAAQ,KAAKA,MATgB;MAU7BmzD,QAAA,EAAU,KAAKA,QAVc;MAW7B9zC,IAAA,EAAM,KAAKlgC,IAAL,CAAUkgC;IAXa,CAAjB,CAAd;IAcA,MAAMk9C,UAAA,GAAa,EAAnB;IACA,WAAW/uD,OAAX,IAAsB,KAAK2lD,QAA3B,EAAqC;MACnC3lD,OAAA,CAAQqlD,KAAR,GAAgBA,KAAhB;MACA0J,UAAA,CAAW5lF,IAAX,CAAgB62B,OAAA,CAAQruB,IAAR,CAAawL,EAA7B;MACA6iB,OAAA,CAAQymD,gBAAR;IAHmC;IAMrC,KAAKl/C,SAAL,CAAerK,YAAf,CAA4B,eAA5B,EAA6C6xD,UAAA,CAAW3lF,IAAX,CAAgB,GAAhB,CAA7C;IAEA,OAAO,KAAKm+B,SAAZ;EA1BO;AAZ4C;AA0CvD,MAAMunD,YAAN,CAAmB;EACjB,CAAAE,eAAA,GAAmB,IAAnB;EAEA,CAAAC,SAAA,GAAa,KAAK,CAAAtU,IAAL,CAAWptD,IAAX,CAAgB,IAAhB,CAAb;EAEA,CAAA2hE,SAAA,GAAa,KAAK,CAAApU,IAAL,CAAWvtD,IAAX,CAAgB,IAAhB,CAAb;EAEA,CAAA4hE,WAAA,GAAe,KAAK,CAAA/4D,MAAL,CAAa7I,IAAb,CAAkB,IAAlB,CAAf;EAEA,CAAAkX,KAAA,GAAS,IAAT;EAEA,CAAA8C,SAAA,GAAa,IAAb;EAEA,CAAAi+C,WAAA,GAAe,IAAf;EAEA,CAAAG,QAAA,GAAY,IAAZ;EAEA,CAAAnzD,MAAA,GAAU,IAAV;EAEA,CAAAkzD,UAAA,GAAc,IAAd;EAEA,CAAA0J,MAAA,GAAU,KAAV;EAEA,CAAA/J,KAAA,GAAS,IAAT;EAEA,CAAA13E,IAAA,GAAQ,IAAR;EAEA,CAAA83E,QAAA,GAAY,IAAZ;EAEA,CAAAH,QAAA,GAAY,IAAZ;EAEA,CAAA+J,UAAA,GAAc,KAAd;EAEA5nF,YAAY;IACV8/B,SADU;IAEV9C,KAFU;IAGVkhD,QAHU;IAIVL,QAJU;IAKVC,gBALU;IAMVC,WANU;IAOVC,QAPU;IAQVjzD,MARU;IASV7kB,IATU;IAUV+3E,UAVU;IAWV7zC;EAXU,CAAZ,EAYG;IACD,KAAK,CAAAtK,SAAL,GAAkBA,SAAlB;IACA,KAAK,CAAA+9C,QAAL,GAAiBA,QAAjB;IACA,KAAK,CAAAE,WAAL,GAAoBA,WAApB;IACA,KAAK,CAAAC,QAAL,GAAiBA,QAAjB;IACA,KAAK,CAAAjzD,MAAL,GAAeA,MAAf;IACA,KAAK,CAAAiS,KAAL,GAAcA,KAAd;IACA,KAAK,CAAA92B,IAAL,GAAaA,IAAb;IACA,KAAK,CAAA+3E,UAAL,GAAmBA,UAAnB;IACA,KAAK,CAAAC,QAAL,GAAiBA,QAAjB;IAEA,MAAM2J,UAAA,GAAar6C,4BAAA,CAAcC,YAAd,CAA2BqwC,gBAA3B,CAAnB;IACA,IAAI+J,UAAJ,EAAgB;MAId,KAAK,CAAAN,eAAL,GAAwBx8D,MAAA,CAAOsnD,IAAP,CAAY1nE,GAAZ,CAAgB,wBAAhB,EAA0C;QAChEvB,IAAA,EAAMy+E,UAAA,CAAWC,kBAAX,EAD0D;QAEhEhuE,IAAA,EAAM+tE,UAAA,CAAWE,kBAAX;MAF0D,CAA1C,CAAxB;IAJc;IAUhB,KAAKC,OAAL,GAAe9J,QAAA,CAAS+J,OAAT,CAAiBj2D,CAAA,IAAKA,CAAA,CAAE+sD,yBAAF,EAAtB,CAAf;IAEA,WAAWxmD,OAAX,IAAsB,KAAKyvD,OAA3B,EAAoC;MAClCzvD,OAAA,CAAQhZ,gBAAR,CAAyB,OAAzB,EAAkC,KAAK,CAAAmoE,WAAvC;MACAnvD,OAAA,CAAQhZ,gBAAR,CAAyB,YAAzB,EAAuC,KAAK,CAAAkoE,SAA5C;MACAlvD,OAAA,CAAQhZ,gBAAR,CAAyB,YAAzB,EAAuC,KAAK,CAAAioE,SAA5C;IAHkC;IASpC,KAAK,CAAA1nD,SAAL,CAAgB4yC,MAAhB,GAAyB,IAAzB;IACA,IAAItoC,IAAJ,EAAU;MACR,KAAK,CAAAzb,MAAL;IADQ;EAlCT;EAoDHtV,OAAA,EAAS;IACP,IAAI,KAAK,CAAAukE,KAAT,EAAiB;MACf;IADe;IAIjB,MAAM;MACJj6D,IAAA,EAAM;QAAEvL;MAAF,CADF;MAEJmB,QAAA,EAAU;QACRkT,OAAA,EAAS;UAAEC,SAAF;UAAaC,UAAb;UAAyBC,KAAzB;UAAgCC;QAAhC;MADD;IAFN,IAKF,KAAK,CAAA9B,MALT;IAMA,MAAM6yD,KAAA,GAAS,KAAK,CAAAA,KAAL,GAAc1uE,QAAA,CAASgjB,aAAT,CAAuB,KAAvB,CAA7B;IACA0rD,KAAA,CAAMloD,SAAN,GAAkB,OAAlB;IAEA,IAAI,KAAK,CAAAsH,KAAT,EAAiB;MACf,MAAMkrD,SAAA,GAAatK,KAAA,CAAM1uD,KAAN,CAAYi5D,YAAZ,GAA2BpkF,UAAA,CAAKC,YAAL,CAC5C,GAAG,KAAK,CAAAg5B,KADoC,CAA9C;MAGA,IAEEx5B,GAAA,CAAIC,QAAJ,CAAa,kBAAb,EAAiC,oCAAjC,CAFF,EAGE;QACAm6E,KAAA,CAAM1uD,KAAN,CAAYskC,eAAZ,GAA+B,sBAAqB00B,SAAU,cAA9D;MADA,CAHF,MAKO;QAKL,MAAME,kBAAA,GAAqB,GAA3B;QACAxK,KAAA,CAAM1uD,KAAN,CAAYskC,eAAZ,GAA8BzvD,UAAA,CAAKC,YAAL,CAC5B,GAAG,KAAK,CAAAg5B,KAAL,CAAY56B,GAAZ,CAAgBuD,CAAA,IACjBrE,IAAA,CAAK2J,KAAL,CAAWm9E,kBAAA,IAAsB,MAAMziF,CAAN,CAAtB,GAAiCA,CAA5C,CADC,CADyB,CAA9B;MANK;IATQ;IAuBjB,MAAM0iF,MAAA,GAASn5E,QAAA,CAASgjB,aAAT,CAAuB,MAAvB,CAAf;IACAm2D,MAAA,CAAO3yD,SAAP,GAAmB,QAAnB;IACA,MAAMumD,KAAA,GAAQ/sE,QAAA,CAASgjB,aAAT,CAAuB,IAAvB,CAAd;IACAm2D,MAAA,CAAOj2D,MAAP,CAAc6pD,KAAd;IACA,CAAC;MAAExM,GAAA,EAAKwM,KAAA,CAAMxM,GAAb;MAAkB5tE,GAAA,EAAKo6E,KAAA,CAAMv/D;IAA7B,IAA6C,KAAK,CAAAmhE,QAAnD;IACAD,KAAA,CAAMxrD,MAAN,CAAai2D,MAAb;IAEA,IAAI,KAAK,CAAAd,eAAT,EAA2B;MACzB,MAAMzJ,gBAAA,GAAmB5uE,QAAA,CAASgjB,aAAT,CAAuB,MAAvB,CAAzB;MACA4rD,gBAAA,CAAiBpvD,SAAjB,CAA2BhT,GAA3B,CAA+B,WAA/B;MACA,KAAK,CAAA6rE,eAAL,CAAsB12E,IAAtB,CAA2By3E,SAAA,IAAa;QACtCxK,gBAAA,CAAiBphE,WAAjB,GAA+B4rE,SAA/B;MADsC,CAAxC;MAGAD,MAAA,CAAOj2D,MAAP,CAAc0rD,gBAAd;IANyB;IAS3B,MAAMC,WAAA,GAAc,KAAK,CAAAA,WAAzB;IACA,MAAMC,QAAA,GAAW,KAAK,CAAAA,QAAtB;IACA,IACEA,QAAA,EAAUn8E,GAAV,KACC,CAACk8E,WAAA,EAAal8E,GAAd,IAAqBk8E,WAAA,CAAYl8E,GAAZ,KAAoBm8E,QAAA,CAASn8E,GAAlD,CAFH,EAGE;MACA0mF,mBAAA,CAASlvE,MAAT,CAAgB;QACdmvE,OAAA,EAASxK,QAAA,CAASyK,IADJ;QAEd3vE,MAAA,EAAQ,UAFM;QAGdsT,GAAA,EAAKwxD;MAHS,CAAhB;MAKAA,KAAA,CAAMiI,SAAN,CAAgBn3D,SAAhB,CAA0BhT,GAA1B,CAA8B,UAA9B,EAA0C,cAA1C;IANA,CAHF,MAUO;MACL,MAAMgtE,QAAA,GAAW,KAAKC,eAAL,CAAqB5K,WAArB,CAAjB;MACAH,KAAA,CAAMxrD,MAAN,CAAas2D,QAAb;IAFK;IAKP,IAAIE,aAAA,GAAgB,CAAC,CAAC,KAAK,CAAA3K,UAA3B;IACA,IAAI/3E,IAAA,GAAO0iF,aAAA,GAAgB,KAAK,CAAA3K,UAArB,GAAmC,KAAK,CAAA/3E,IAAnD;IACA,WAAWqyB,OAAX,IAAsB,KAAK,CAAA2lD,QAA3B,EAAsC;MACpC,IAAI,CAACh4E,IAAD,IAASnC,UAAA,CAAKoC,SAAL,CAAeoyB,OAAA,CAAQruB,IAAR,CAAahE,IAA5B,EAAkCA,IAAlC,MAA4C,IAAzD,EAA+D;QAC7DA,IAAA,GAAOqyB,OAAA,CAAQruB,IAAR,CAAahE,IAApB;QACA0iF,aAAA,GAAgB,IAAhB;QACA;MAH6D;IAD3B;IAQtC,MAAMC,cAAA,GAAiB9kF,UAAA,CAAKkC,aAAL,CAAmB,CACxCC,IAAA,CAAK,CAAL,CADwC,EAExCkS,IAAA,CAAK,CAAL,IAAUlS,IAAA,CAAK,CAAL,CAAV,GAAoBkS,IAAA,CAAK,CAAL,CAFoB,EAGxClS,IAAA,CAAK,CAAL,CAHwC,EAIxCkS,IAAA,CAAK,CAAL,IAAUlS,IAAA,CAAK,CAAL,CAAV,GAAoBkS,IAAA,CAAK,CAAL,CAJoB,CAAnB,CAAvB;IAOA,MAAM0wE,iCAAA,GAAoC,CAA1C;IACA,MAAMt4D,WAAA,GAAco4D,aAAA,GAChB1iF,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAV,GAAoB4iF,iCADJ,GAEhB,CAFJ;IAGA,MAAMC,SAAA,GAAYF,cAAA,CAAe,CAAf,IAAoBr4D,WAAtC;IACA,MAAMw4D,QAAA,GAAWH,cAAA,CAAe,CAAf,CAAjB;IAEA,MAAM;MAAE35D;IAAF,IAAY,KAAK,CAAA4Q,SAAvB;IACA5Q,KAAA,CAAM0B,IAAN,GAAa,GAAI,OAAOm4D,SAAA,GAAYn8D,KAAZ,CAAR,GAA8BF,SAAU,GAAxD;IACAwC,KAAA,CAAM4B,GAAN,GAAY,GAAI,OAAOk4D,QAAA,GAAWn8D,KAAX,CAAR,GAA6BF,UAAW,GAAvD;IAEA,KAAK,CAAAmT,SAAL,CAAgB1N,MAAhB,CAAuBwrD,KAAvB;EAlGO;EA6GT+K,gBAAgB;IAAE9mF,GAAF;IAAO4tE;EAAP,CAAhB,EAA8B;IAC5B,MAAM/qE,CAAA,GAAIwK,QAAA,CAASgjB,aAAT,CAAuB,GAAvB,CAAV;IACAxtB,CAAA,CAAEgqB,SAAF,CAAYhT,GAAZ,CAAgB,cAAhB;IACAhX,CAAA,CAAE+qE,GAAF,GAAQA,GAAR;IACA,MAAMwZ,KAAA,GAAQpnF,GAAA,CAAIq6B,KAAJ,CAAU,cAAV,CAAd;IACA,KAAK,IAAI96B,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAK2gF,KAAA,CAAMpqF,MAAtB,EAA8BuC,CAAA,GAAIkH,EAAvC,EAA2C,EAAElH,CAA7C,EAAgD;MAC9C,MAAM41E,IAAA,GAAOiS,KAAA,CAAM7nF,CAAN,CAAb;MACAsD,CAAA,CAAE0tB,MAAF,CAASljB,QAAA,CAAS+nE,cAAT,CAAwBD,IAAxB,CAAT;MACA,IAAI51E,CAAA,GAAIkH,EAAA,GAAK,CAAb,EAAgB;QACd5D,CAAA,CAAE0tB,MAAF,CAASljB,QAAA,CAASgjB,aAAT,CAAuB,IAAvB,CAAT;MADc;IAH8B;IAOhD,OAAOxtB,CAAP;EAZ4B;EAkB9B,CAAAiqB,OAAA,EAAU;IACR,KAAK,CAAAg5D,MAAL,GAAe,CAAC,KAAK,CAAAA,MAArB;IACA,IAAI,KAAK,CAAAA,MAAT,EAAkB;MAChB,KAAK,CAAAtU,IAAL;MACA,KAAK,CAAAvzC,SAAL,CAAgBvgB,gBAAhB,CAAiC,OAAjC,EAA0C,KAAK,CAAAmoE,WAA/C;IAFgB,CAAlB,MAGO;MACL,KAAK,CAAAxU,IAAL;MACA,KAAK,CAAApzC,SAAL,CAAgBtgB,mBAAhB,CAAoC,OAApC,EAA6C,KAAK,CAAAkoE,WAAlD;IAFK;EALC;EAcV,CAAArU,KAAA,EAAQ;IACN,IAAI,CAAC,KAAK,CAAAuK,KAAV,EAAkB;MAChB,KAAKvkE,MAAL;IADgB;IAGlB,IAAI,CAAC,KAAKw1C,SAAV,EAAqB;MACnB,KAAK,CAAA/uB,SAAL,CAAgB4yC,MAAhB,GAAyB,KAAzB;MACA,KAAK,CAAA5yC,SAAL,CAAgB5Q,KAAhB,CAAsBnD,MAAtB,GACE8hB,QAAA,CAAS,KAAK,CAAA/N,SAAL,CAAgB5Q,KAAhB,CAAsBnD,MAA/B,IAAyC,IAD3C;IAFmB,CAArB,MAIO,IAAI,KAAK,CAAA47D,MAAT,EAAkB;MACvB,KAAK,CAAA7nD,SAAL,CAAgBpR,SAAhB,CAA0BhT,GAA1B,CAA8B,SAA9B;IADuB;EARnB;EAgBR,CAAAw3D,KAAA,EAAQ;IACN,KAAK,CAAApzC,SAAL,CAAgBpR,SAAhB,CAA0B9E,MAA1B,CAAiC,SAAjC;IACA,IAAI,KAAK,CAAA+9D,MAAL,IAAgB,CAAC,KAAK94B,SAA1B,EAAqC;MACnC;IADmC;IAGrC,KAAK,CAAA/uB,SAAL,CAAgB4yC,MAAhB,GAAyB,IAAzB;IACA,KAAK,CAAA5yC,SAAL,CAAgB5Q,KAAhB,CAAsBnD,MAAtB,GACE8hB,QAAA,CAAS,KAAK,CAAA/N,SAAL,CAAgB5Q,KAAhB,CAAsBnD,MAA/B,IAAyC,IAD3C;EANM;EAUR+yD,UAAA,EAAY;IACV,KAAK,CAAA8I,UAAL,GAAmB,KAAK/4B,SAAxB;IACA,IAAI,CAAC,KAAK,CAAA+4B,UAAV,EAAuB;MACrB;IADqB;IAGvB,KAAK,CAAA9nD,SAAL,CAAgB4yC,MAAhB,GAAyB,IAAzB;EALU;EAQZmM,UAAA,EAAY;IACV,IAAI,CAAC,KAAK,CAAA+I,UAAV,EAAuB;MACrB;IADqB;IAGvB,KAAK,CAAAA,UAAL,GAAmB,KAAnB;IACA,KAAK,CAAA9nD,SAAL,CAAgB4yC,MAAhB,GAAyB,KAAzB;EALU;EAQZ,IAAI7jB,SAAJA,CAAA,EAAgB;IACd,OAAO,KAAK,CAAA/uB,SAAL,CAAgB4yC,MAAhB,KAA2B,KAAlC;EADc;AAxRC;AA6RnB,MAAMwE,yBAAN,SAAwCwC,iBAAxC,CAA0D;EACxD15E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GAAe,CAAC,EACpBztD,UAAA,CAAWjiB,IAAX,CAAgBswE,QAAhB,IACAruD,UAAA,CAAWjiB,IAAX,CAAgB2zE,QAAhB,EAA0Bh8E,GAD1B,IAEAsqB,UAAA,CAAWjiB,IAAX,CAAgB6zE,WAAhB,EAA6Bl8E,GAF7B,IAGAsqB,UAAA,CAAWjiB,IAAX,CAAgB8zE,QAAhB,EAA0Bn8E,GAH1B,CADF;IAMA,MAAMsqB,UAAN,EAAkB;MAAEytD,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;IACA,KAAKn9D,WAAL,GAAmByP,UAAA,CAAWjiB,IAAX,CAAgBwS,WAAnC;IACA,KAAK26D,YAAL,GAAoBlrD,UAAA,CAAWjiB,IAAX,CAAgBmtE,YAApC;IACA,KAAKrD,oBAAL,GAA4BtkF,0BAAA,CAAqBE,QAAjD;EAVsB;EAaxBypB,OAAA,EAAS;IACP,KAAKymB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,oBAA7B;IAEA,IAAI,KAAKgB,WAAT,EAAsB;MACpB,MAAMk4D,OAAA,GAAU1lE,QAAA,CAASgjB,aAAT,CAAuB,KAAvB,CAAhB;MACA0iD,OAAA,CAAQlmD,SAAR,CAAkBhT,GAAlB,CAAsB,uBAAtB;MACAk5D,OAAA,CAAQn/C,YAAR,CAAqB,MAArB,EAA6B,SAA7B;MACA,WAAWuhD,IAAX,IAAmB,KAAKt6D,WAAxB,EAAqC;QACnC,MAAMwsE,QAAA,GAAWh6E,QAAA,CAASgjB,aAAT,CAAuB,MAAvB,CAAjB;QACAg3D,QAAA,CAASxsE,WAAT,GAAuBs6D,IAAvB;QACApC,OAAA,CAAQxiD,MAAR,CAAe82D,QAAf;MAHmC;MAKrC,KAAKppD,SAAL,CAAe1N,MAAf,CAAsBwiD,OAAtB;IAToB;IAYtB,IAAI,CAAC,KAAK1qE,IAAL,CAAUswE,QAAf,EAAyB;MACvB,KAAKmD,YAAL;IADuB;IAIzB,KAAKuB,kBAAL;IAEA,OAAO,KAAKp/C,SAAZ;EArBO;AAd+C;AAvsE1D1xC,iCAAA,GAAA8oF,yBAAA;AA8uEA,MAAM2B,qBAAN,SAAoCa,iBAApC,CAAsD;EACpD,CAAA1C,IAAA,GAAQ,IAAR;EAEAh3E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GAAe,CAAC,EACpBztD,UAAA,CAAWjiB,IAAX,CAAgBswE,QAAhB,IACAruD,UAAA,CAAWjiB,IAAX,CAAgB2zE,QAAhB,EAA0Bh8E,GAD1B,IAEAsqB,UAAA,CAAWjiB,IAAX,CAAgB6zE,WAAhB,EAA6Bl8E,GAF7B,IAGAsqB,UAAA,CAAWjiB,IAAX,CAAgB8zE,QAAhB,EAA0Bn8E,GAH1B,CADF;IAMA,MAAMsqB,UAAN,EAAkB;MAAEytD,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;EAPsB;EAUxBxgE,OAAA,EAAS;IACP,KAAKymB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,gBAA7B;IAKA,MAAMxR,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEic,KAAF;MAASC;IAAT,IAAoB0xD,WAAA,CAAY5tE,IAAA,CAAKhE,IAAjB,CAA1B;IACA,MAAM+yB,GAAA,GAAM,KAAKiwC,UAAL,CAAgB7mE,MAAhB,CACV8jB,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IAQA,MAAM4wD,IAAA,GAAQ,KAAK,CAAAA,IAAL,GAAa,KAAK9N,UAAL,CAAgBh3C,aAAhB,CAA8B,UAA9B,CAA3B;IACA8kD,IAAA,CAAKvhD,YAAL,CAAkB,IAAlB,EAAwBvrB,IAAA,CAAKhE,IAAL,CAAU,CAAV,IAAegE,IAAA,CAAKi/E,eAAL,CAAqB,CAArB,CAAvC;IACAnS,IAAA,CAAKvhD,YAAL,CAAkB,IAAlB,EAAwBvrB,IAAA,CAAKhE,IAAL,CAAU,CAAV,IAAegE,IAAA,CAAKi/E,eAAL,CAAqB,CAArB,CAAvC;IACAnS,IAAA,CAAKvhD,YAAL,CAAkB,IAAlB,EAAwBvrB,IAAA,CAAKhE,IAAL,CAAU,CAAV,IAAegE,IAAA,CAAKi/E,eAAL,CAAqB,CAArB,CAAvC;IACAnS,IAAA,CAAKvhD,YAAL,CAAkB,IAAlB,EAAwBvrB,IAAA,CAAKhE,IAAL,CAAU,CAAV,IAAegE,IAAA,CAAKi/E,eAAL,CAAqB,CAArB,CAAvC;IAGAnS,IAAA,CAAKvhD,YAAL,CAAkB,cAAlB,EAAkCvrB,IAAA,CAAKywE,WAAL,CAAiBx0D,KAAjB,IAA0B,CAA5D;IACA6wD,IAAA,CAAKvhD,YAAL,CAAkB,QAAlB,EAA4B,aAA5B;IACAuhD,IAAA,CAAKvhD,YAAL,CAAkB,MAAlB,EAA0B,aAA1B;IAEAwD,GAAA,CAAI7G,MAAJ,CAAW4kD,IAAX;IACA,KAAKl3C,SAAL,CAAe1N,MAAf,CAAsB6G,GAAtB;IAIA,IAAI,CAAC/uB,IAAA,CAAKswE,QAAV,EAAoB;MAClB,KAAKmD,YAAL;IADkB;IAIpB,OAAO,KAAK79C,SAAZ;EApCO;EAuCTi/C,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAA/H,IAAZ;EAD0B;EAI5BgI,iBAAA,EAAmB;IACjB,KAAKl/C,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,eAA7B;EADiB;AAxDiC;AA6DtD,MAAMo9D,uBAAN,SAAsCY,iBAAtC,CAAwD;EACtD,CAAA0P,MAAA,GAAU,IAAV;EAEAppF,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GAAe,CAAC,EACpBztD,UAAA,CAAWjiB,IAAX,CAAgBswE,QAAhB,IACAruD,UAAA,CAAWjiB,IAAX,CAAgB2zE,QAAhB,EAA0Bh8E,GAD1B,IAEAsqB,UAAA,CAAWjiB,IAAX,CAAgB6zE,WAAhB,EAA6Bl8E,GAF7B,IAGAsqB,UAAA,CAAWjiB,IAAX,CAAgB8zE,QAAhB,EAA0Bn8E,GAH1B,CADF;IAMA,MAAMsqB,UAAN,EAAkB;MAAEytD,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;EAPsB;EAUxBxgE,OAAA,EAAS;IACP,KAAKymB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,kBAA7B;IAKA,MAAMxR,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEic,KAAF;MAASC;IAAT,IAAoB0xD,WAAA,CAAY5tE,IAAA,CAAKhE,IAAjB,CAA1B;IACA,MAAM+yB,GAAA,GAAM,KAAKiwC,UAAL,CAAgB7mE,MAAhB,CACV8jB,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IASA,MAAMw0D,WAAA,GAAc1wE,IAAA,CAAKywE,WAAL,CAAiBx0D,KAArC;IACA,MAAMijE,MAAA,GAAU,KAAK,CAAAA,MAAL,GAAe,KAAKlgB,UAAL,CAAgBh3C,aAAhB,CAA8B,UAA9B,CAA/B;IACAk3D,MAAA,CAAO3zD,YAAP,CAAoB,GAApB,EAAyBmlD,WAAA,GAAc,CAAvC;IACAwO,MAAA,CAAO3zD,YAAP,CAAoB,GAApB,EAAyBmlD,WAAA,GAAc,CAAvC;IACAwO,MAAA,CAAO3zD,YAAP,CAAoB,OAApB,EAA6BtP,KAAA,GAAQy0D,WAArC;IACAwO,MAAA,CAAO3zD,YAAP,CAAoB,QAApB,EAA8BrP,MAAA,GAASw0D,WAAvC;IAGAwO,MAAA,CAAO3zD,YAAP,CAAoB,cAApB,EAAoCmlD,WAAA,IAAe,CAAnD;IACAwO,MAAA,CAAO3zD,YAAP,CAAoB,QAApB,EAA8B,aAA9B;IACA2zD,MAAA,CAAO3zD,YAAP,CAAoB,MAApB,EAA4B,aAA5B;IAEAwD,GAAA,CAAI7G,MAAJ,CAAWg3D,MAAX;IACA,KAAKtpD,SAAL,CAAe1N,MAAf,CAAsB6G,GAAtB;IAIA,IAAI,CAAC/uB,IAAA,CAAKswE,QAAV,EAAoB;MAClB,KAAKmD,YAAL;IADkB;IAIpB,OAAO,KAAK79C,SAAZ;EAtCO;EAyCTi/C,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAAqK,MAAZ;EAD0B;EAI5BpK,iBAAA,EAAmB;IACjB,KAAKl/C,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,eAA7B;EADiB;AA1DmC;AA+DxD,MAAMq9D,uBAAN,SAAsCW,iBAAtC,CAAwD;EACtD,CAAA2P,MAAA,GAAU,IAAV;EAEArpF,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GAAe,CAAC,EACpBztD,UAAA,CAAWjiB,IAAX,CAAgBswE,QAAhB,IACAruD,UAAA,CAAWjiB,IAAX,CAAgB2zE,QAAhB,EAA0Bh8E,GAD1B,IAEAsqB,UAAA,CAAWjiB,IAAX,CAAgB6zE,WAAhB,EAA6Bl8E,GAF7B,IAGAsqB,UAAA,CAAWjiB,IAAX,CAAgB8zE,QAAhB,EAA0Bn8E,GAH1B,CADF;IAMA,MAAMsqB,UAAN,EAAkB;MAAEytD,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;EAPsB;EAUxBxgE,OAAA,EAAS;IACP,KAAKymB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,kBAA7B;IAKA,MAAMxR,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEic,KAAF;MAASC;IAAT,IAAoB0xD,WAAA,CAAY5tE,IAAA,CAAKhE,IAAjB,CAA1B;IACA,MAAM+yB,GAAA,GAAM,KAAKiwC,UAAL,CAAgB7mE,MAAhB,CACV8jB,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IASA,MAAMw0D,WAAA,GAAc1wE,IAAA,CAAKywE,WAAL,CAAiBx0D,KAArC;IACA,MAAMkjE,MAAA,GAAU,KAAK,CAAAA,MAAL,GACd,KAAKngB,UAAL,CAAgBh3C,aAAhB,CAA8B,aAA9B,CADF;IAEAm3D,MAAA,CAAO5zD,YAAP,CAAoB,IAApB,EAA0BtP,KAAA,GAAQ,CAAlC;IACAkjE,MAAA,CAAO5zD,YAAP,CAAoB,IAApB,EAA0BrP,MAAA,GAAS,CAAnC;IACAijE,MAAA,CAAO5zD,YAAP,CAAoB,IAApB,EAA0BtP,KAAA,GAAQ,CAAR,GAAYy0D,WAAA,GAAc,CAApD;IACAyO,MAAA,CAAO5zD,YAAP,CAAoB,IAApB,EAA0BrP,MAAA,GAAS,CAAT,GAAaw0D,WAAA,GAAc,CAArD;IAGAyO,MAAA,CAAO5zD,YAAP,CAAoB,cAApB,EAAoCmlD,WAAA,IAAe,CAAnD;IACAyO,MAAA,CAAO5zD,YAAP,CAAoB,QAApB,EAA8B,aAA9B;IACA4zD,MAAA,CAAO5zD,YAAP,CAAoB,MAApB,EAA4B,aAA5B;IAEAwD,GAAA,CAAI7G,MAAJ,CAAWi3D,MAAX;IACA,KAAKvpD,SAAL,CAAe1N,MAAf,CAAsB6G,GAAtB;IAIA,IAAI,CAAC/uB,IAAA,CAAKswE,QAAV,EAAoB;MAClB,KAAKmD,YAAL;IADkB;IAIpB,OAAO,KAAK79C,SAAZ;EAvCO;EA0CTi/C,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAAsK,MAAZ;EAD0B;EAI5BrK,iBAAA,EAAmB;IACjB,KAAKl/C,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,eAA7B;EADiB;AA3DmC;AAgExD,MAAMs9D,yBAAN,SAAwCU,iBAAxC,CAA0D;EACxD,CAAA4P,QAAA,GAAY,IAAZ;EAEAtpF,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GAAe,CAAC,EACpBztD,UAAA,CAAWjiB,IAAX,CAAgBswE,QAAhB,IACAruD,UAAA,CAAWjiB,IAAX,CAAgB2zE,QAAhB,EAA0Bh8E,GAD1B,IAEAsqB,UAAA,CAAWjiB,IAAX,CAAgB6zE,WAAhB,EAA6Bl8E,GAF7B,IAGAsqB,UAAA,CAAWjiB,IAAX,CAAgB8zE,QAAhB,EAA0Bn8E,GAH1B,CADF;IAMA,MAAMsqB,UAAN,EAAkB;MAAEytD,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;IAEA,KAAK0P,kBAAL,GAA0B,oBAA1B;IACA,KAAKC,cAAL,GAAsB,cAAtB;EAVsB;EAaxBnwE,OAAA,EAAS;IACP,KAAKymB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,KAAK6tE,kBAAlC;IAKA,MAAMr/E,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEic,KAAF;MAASC;IAAT,IAAoB0xD,WAAA,CAAY5tE,IAAA,CAAKhE,IAAjB,CAA1B;IACA,MAAM+yB,GAAA,GAAM,KAAKiwC,UAAL,CAAgB7mE,MAAhB,CACV8jB,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IAUA,IAAIszB,MAAA,GAAS,EAAb;IACA,WAAW+vC,UAAX,IAAyBv/E,IAAA,CAAKw/E,QAA9B,EAAwC;MACtC,MAAMv8D,CAAA,GAAIs8D,UAAA,CAAWt8D,CAAX,GAAejjB,IAAA,CAAKhE,IAAL,CAAU,CAAV,CAAzB;MACA,MAAMknB,CAAA,GAAIljB,IAAA,CAAKhE,IAAL,CAAU,CAAV,IAAeujF,UAAA,CAAWr8D,CAApC;MACAssB,MAAA,CAAOh4C,IAAP,CAAYyrB,CAAA,GAAI,GAAJ,GAAUC,CAAtB;IAHsC;IAKxCssB,MAAA,GAASA,MAAA,CAAO/3C,IAAP,CAAY,GAAZ,CAAT;IAEA,MAAM2nF,QAAA,GAAY,KAAK,CAAAA,QAAL,GAAiB,KAAKpgB,UAAL,CAAgBh3C,aAAhB,CACjC,KAAKs3D,cAD4B,CAAnC;IAGAF,QAAA,CAAS7zD,YAAT,CAAsB,QAAtB,EAAgCikB,MAAhC;IAGA4vC,QAAA,CAAS7zD,YAAT,CAAsB,cAAtB,EAAsCvrB,IAAA,CAAKywE,WAAL,CAAiBx0D,KAAjB,IAA0B,CAAhE;IACAmjE,QAAA,CAAS7zD,YAAT,CAAsB,QAAtB,EAAgC,aAAhC;IACA6zD,QAAA,CAAS7zD,YAAT,CAAsB,MAAtB,EAA8B,aAA9B;IAEAwD,GAAA,CAAI7G,MAAJ,CAAWk3D,QAAX;IACA,KAAKxpD,SAAL,CAAe1N,MAAf,CAAsB6G,GAAtB;IAIA,IAAI,CAAC/uB,IAAA,CAAKswE,QAAV,EAAoB;MAClB,KAAKmD,YAAL,CAAkB2L,QAAlB,EAA4Bp/E,IAA5B;IADkB;IAIpB,OAAO,KAAK41B,SAAZ;EA7CO;EAgDTi/C,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAAuK,QAAZ;EAD0B;EAI5BtK,iBAAA,EAAmB;IACjB,KAAKl/C,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,eAA7B;EADiB;AApEqC;AAyE1D,MAAMy9D,wBAAN,SAAuCH,yBAAvC,CAAiE;EAC/Dh5E,YAAYmsB,UAAZ,EAAwB;IAEtB,MAAMA,UAAN;IAEA,KAAKo9D,kBAAL,GAA0B,mBAA1B;IACA,KAAKC,cAAL,GAAsB,aAAtB;EALsB;AADuC;AAUjE,MAAMvQ,sBAAN,SAAqCS,iBAArC,CAAuD;EACrD15E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GAAe,CAAC,EACpBztD,UAAA,CAAWjiB,IAAX,CAAgBswE,QAAhB,IACAruD,UAAA,CAAWjiB,IAAX,CAAgB2zE,QAAhB,EAA0Bh8E,GAD1B,IAEAsqB,UAAA,CAAWjiB,IAAX,CAAgB6zE,WAAhB,EAA6Bl8E,GAF7B,IAGAsqB,UAAA,CAAWjiB,IAAX,CAAgB8zE,QAAhB,EAA0Bn8E,GAH1B,CADF;IAMA,MAAMsqB,UAAN,EAAkB;MAAEytD,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;EAPsB;EAUxBxgE,OAAA,EAAS;IACP,KAAKymB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,iBAA7B;IAEA,IAAI,CAAC,KAAKxR,IAAL,CAAUswE,QAAf,EAAyB;MACvB,KAAKmD,YAAL;IADuB;IAGzB,OAAO,KAAK79C,SAAZ;EANO;AAX4C;AAqBvD,MAAMo5C,oBAAN,SAAmCQ,iBAAnC,CAAqD;EACnD,CAAAiQ,SAAA,GAAa,EAAb;EAEA3pF,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GAAe,CAAC,EACpBztD,UAAA,CAAWjiB,IAAX,CAAgBswE,QAAhB,IACAruD,UAAA,CAAWjiB,IAAX,CAAgB2zE,QAAhB,EAA0Bh8E,GAD1B,IAEAsqB,UAAA,CAAWjiB,IAAX,CAAgB6zE,WAAhB,EAA6Bl8E,GAF7B,IAGAsqB,UAAA,CAAWjiB,IAAX,CAAgB8zE,QAAhB,EAA0Bn8E,GAH1B,CADF;IAMA,MAAMsqB,UAAN,EAAkB;MAAEytD,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;IAEA,KAAK0P,kBAAL,GAA0B,eAA1B;IAIA,KAAKC,cAAL,GAAsB,cAAtB;IACA,KAAKxV,oBAAL,GAA4BtkF,0BAAA,CAAqBI,GAAjD;EAdsB;EAiBxBupB,OAAA,EAAS;IACP,KAAKymB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,KAAK6tE,kBAAlC;IAIA,MAAMr/E,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEic,KAAF;MAASC;IAAT,IAAoB0xD,WAAA,CAAY5tE,IAAA,CAAKhE,IAAjB,CAA1B;IACA,MAAM+yB,GAAA,GAAM,KAAKiwC,UAAL,CAAgB7mE,MAAhB,CACV8jB,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IAMA,WAAWwjE,OAAX,IAAsB1/E,IAAA,CAAK2/E,QAA3B,EAAqC;MAKnC,IAAInwC,MAAA,GAAS,EAAb;MACA,WAAW+vC,UAAX,IAAyBG,OAAzB,EAAkC;QAChC,MAAMz8D,CAAA,GAAIs8D,UAAA,CAAWt8D,CAAX,GAAejjB,IAAA,CAAKhE,IAAL,CAAU,CAAV,CAAzB;QACA,MAAMknB,CAAA,GAAIljB,IAAA,CAAKhE,IAAL,CAAU,CAAV,IAAeujF,UAAA,CAAWr8D,CAApC;QACAssB,MAAA,CAAOh4C,IAAP,CAAY,GAAGyrB,CAAE,IAAGC,CAAR,EAAZ;MAHgC;MAKlCssB,MAAA,GAASA,MAAA,CAAO/3C,IAAP,CAAY,GAAZ,CAAT;MAEA,MAAM2nF,QAAA,GAAW,KAAKpgB,UAAL,CAAgBh3C,aAAhB,CAA8B,KAAKs3D,cAAnC,CAAjB;MACA,KAAK,CAAAG,SAAL,CAAgBjoF,IAAhB,CAAqB4nF,QAArB;MACAA,QAAA,CAAS7zD,YAAT,CAAsB,QAAtB,EAAgCikB,MAAhC;MAGA4vC,QAAA,CAAS7zD,YAAT,CAAsB,cAAtB,EAAsCvrB,IAAA,CAAKywE,WAAL,CAAiBx0D,KAAjB,IAA0B,CAAhE;MACAmjE,QAAA,CAAS7zD,YAAT,CAAsB,QAAtB,EAAgC,aAAhC;MACA6zD,QAAA,CAAS7zD,YAAT,CAAsB,MAAtB,EAA8B,aAA9B;MAIA,IAAI,CAACvrB,IAAA,CAAKswE,QAAV,EAAoB;QAClB,KAAKmD,YAAL,CAAkB2L,QAAlB,EAA4Bp/E,IAA5B;MADkB;MAIpB+uB,GAAA,CAAI7G,MAAJ,CAAWk3D,QAAX;IA5BmC;IA+BrC,KAAKxpD,SAAL,CAAe1N,MAAf,CAAsB6G,GAAtB;IACA,OAAO,KAAK6G,SAAZ;EA7CO;EAgDTi/C,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAA4K,SAAZ;EAD0B;EAI5B3K,iBAAA,EAAmB;IACjB,KAAKl/C,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,eAA7B;EADiB;AAxEgC;AAlhFrDttB,4BAAA,GAAA8qF,oBAAA;AA+lFA,MAAME,0BAAN,SAAyCM,iBAAzC,CAA2D;EACzD15E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GAAe,CAAC,EACpBztD,UAAA,CAAWjiB,IAAX,CAAgBswE,QAAhB,IACAruD,UAAA,CAAWjiB,IAAX,CAAgB2zE,QAAhB,EAA0Bh8E,GAD1B,IAEAsqB,UAAA,CAAWjiB,IAAX,CAAgB6zE,WAAhB,EAA6Bl8E,GAF7B,IAGAsqB,UAAA,CAAWjiB,IAAX,CAAgB8zE,QAAhB,EAA0Bn8E,GAH1B,CADF;IAMA,MAAMsqB,UAAN,EAAkB;MAChBytD,YADgB;MAEhBC,YAAA,EAAc,IAFE;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;EAPsB;EAcxBzgE,OAAA,EAAS;IACP,IAAI,CAAC,KAAKnP,IAAL,CAAUswE,QAAf,EAAyB;MACvB,KAAKmD,YAAL;IADuB;IAIzB,KAAK79C,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,qBAA7B;IACA,OAAO,KAAKokB,SAAZ;EANO;AAfgD;AAyB3D,MAAMu5C,0BAAN,SAAyCK,iBAAzC,CAA2D;EACzD15E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GAAe,CAAC,EACpBztD,UAAA,CAAWjiB,IAAX,CAAgBswE,QAAhB,IACAruD,UAAA,CAAWjiB,IAAX,CAAgB2zE,QAAhB,EAA0Bh8E,GAD1B,IAEAsqB,UAAA,CAAWjiB,IAAX,CAAgB6zE,WAAhB,EAA6Bl8E,GAF7B,IAGAsqB,UAAA,CAAWjiB,IAAX,CAAgB8zE,QAAhB,EAA0Bn8E,GAH1B,CADF;IAMA,MAAMsqB,UAAN,EAAkB;MAChBytD,YADgB;MAEhBC,YAAA,EAAc,IAFE;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;EAPsB;EAcxBzgE,OAAA,EAAS;IACP,IAAI,CAAC,KAAKnP,IAAL,CAAUswE,QAAf,EAAyB;MACvB,KAAKmD,YAAL;IADuB;IAIzB,KAAK79C,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,qBAA7B;IACA,OAAO,KAAKokB,SAAZ;EANO;AAfgD;AAyB3D,MAAMw5C,yBAAN,SAAwCI,iBAAxC,CAA0D;EACxD15E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GAAe,CAAC,EACpBztD,UAAA,CAAWjiB,IAAX,CAAgBswE,QAAhB,IACAruD,UAAA,CAAWjiB,IAAX,CAAgB2zE,QAAhB,EAA0Bh8E,GAD1B,IAEAsqB,UAAA,CAAWjiB,IAAX,CAAgB6zE,WAAhB,EAA6Bl8E,GAF7B,IAGAsqB,UAAA,CAAWjiB,IAAX,CAAgB8zE,QAAhB,EAA0Bn8E,GAH1B,CADF;IAMA,MAAMsqB,UAAN,EAAkB;MAChBytD,YADgB;MAEhBC,YAAA,EAAc,IAFE;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;EAPsB;EAcxBzgE,OAAA,EAAS;IACP,IAAI,CAAC,KAAKnP,IAAL,CAAUswE,QAAf,EAAyB;MACvB,KAAKmD,YAAL;IADuB;IAIzB,KAAK79C,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,oBAA7B;IACA,OAAO,KAAKokB,SAAZ;EANO;AAf+C;AAyB1D,MAAMy5C,0BAAN,SAAyCG,iBAAzC,CAA2D;EACzD15E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GAAe,CAAC,EACpBztD,UAAA,CAAWjiB,IAAX,CAAgBswE,QAAhB,IACAruD,UAAA,CAAWjiB,IAAX,CAAgB2zE,QAAhB,EAA0Bh8E,GAD1B,IAEAsqB,UAAA,CAAWjiB,IAAX,CAAgB6zE,WAAhB,EAA6Bl8E,GAF7B,IAGAsqB,UAAA,CAAWjiB,IAAX,CAAgB8zE,QAAhB,EAA0Bn8E,GAH1B,CADF;IAMA,MAAMsqB,UAAN,EAAkB;MAChBytD,YADgB;MAEhBC,YAAA,EAAc,IAFE;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;EAPsB;EAcxBzgE,OAAA,EAAS;IACP,IAAI,CAAC,KAAKnP,IAAL,CAAUswE,QAAf,EAAyB;MACvB,KAAKmD,YAAL;IADuB;IAIzB,KAAK79C,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,qBAA7B;IACA,OAAO,KAAKokB,SAAZ;EANO;AAfgD;AAyB3D,MAAM05C,sBAAN,SAAqCE,iBAArC,CAAuD;EACrD15E,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMytD,YAAA,GAAe,CAAC,EACpBztD,UAAA,CAAWjiB,IAAX,CAAgBswE,QAAhB,IACAruD,UAAA,CAAWjiB,IAAX,CAAgB2zE,QAAhB,EAA0Bh8E,GAD1B,IAEAsqB,UAAA,CAAWjiB,IAAX,CAAgB6zE,WAAhB,EAA6Bl8E,GAF7B,IAGAsqB,UAAA,CAAWjiB,IAAX,CAAgB8zE,QAAhB,EAA0Bn8E,GAH1B,CADF;IAMA,MAAMsqB,UAAN,EAAkB;MAAEytD,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;EAPsB;EAUxBxgE,OAAA,EAAS;IACP,KAAKymB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,iBAA7B;IAEA,IAAI,CAAC,KAAKxR,IAAL,CAAUswE,QAAf,EAAyB;MACvB,KAAKmD,YAAL;IADuB;IAGzB,OAAO,KAAK79C,SAAZ;EANO;AAX4C;AAnsFvD1xC,8BAAA,GAAAorF,sBAAA;AAwtFA,MAAMC,+BAAN,SAA8CC,iBAA9C,CAAgE;EAC9D,CAAAsO,OAAA,GAAW,IAAX;EAEAhoF,YAAYmsB,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEytD,YAAA,EAAc;IAAhB,CAAlB;IAEA,MAAM;MAAEtzD,QAAF;MAAYsuD;IAAZ,IAAwB,KAAK1qE,IAAL,CAAU6vB,IAAxC;IACA,KAAKzT,QAAL,GAAgB,IAAA8lB,iCAAA,EAAmB9lB,QAAnB,EAAmD,IAAnD,CAAhB;IACA,KAAKsuD,OAAL,GAAeA,OAAf;IAEA,KAAKmF,WAAL,CAAiB97C,QAAjB,EAA2BkF,QAA3B,CAAoC,0BAApC,EAAgE;MAC9D7wB,MAAA,EAAQ,IADsD;MAE9DgU,QAF8D;MAG9DsuD;IAH8D,CAAhE;EAPsB;EAcxBv7D,OAAA,EAAS;IACP,KAAKymB,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,0BAA7B;IAEA,MAAM;MAAExR;IAAF,IAAW,IAAjB;IACA,IAAI89E,OAAJ;IACA,IAAI99E,IAAA,CAAK+4E,aAAL,IAAsB/4E,IAAA,CAAKyxC,SAAL,KAAmB,CAA7C,EAAgD;MAC9CqsC,OAAA,GAAU94E,QAAA,CAASgjB,aAAT,CAAuB,KAAvB,CAAV;IAD8C,CAAhD,MAEO;MAML81D,OAAA,GAAU94E,QAAA,CAASgjB,aAAT,CAAuB,KAAvB,CAAV;MACA81D,OAAA,CAAQ56E,GAAR,GAAc,GAAG,KAAK6sE,kBAAmB,cACvC,aAAa9tC,IAAb,CAAkBjiC,IAAA,CAAKnK,IAAvB,IAA+B,WAA/B,GAA6C,SAC9C,MAFD;MAIA,IAAImK,IAAA,CAAKyxC,SAAL,IAAkBzxC,IAAA,CAAKyxC,SAAL,GAAiB,CAAvC,EAA0C;QACxCqsC,OAAA,CAAQ94D,KAAR,GAAiB,mBAAkB5tB,IAAA,CAAKiwB,KAAL,CACjCrnB,IAAA,CAAKyxC,SAAL,GAAiB,GADgB,CAEjC,KAFF;MADwC;IAXrC;IAqBPqsC,OAAA,CAAQt5D,SAAR,CAAkBhT,GAAlB,CAAsB,kBAAtB;IACAssE,OAAA,CAAQzoE,gBAAR,CAAyB,UAAzB,EAAqC,KAAKuqE,SAAL,CAAehkE,IAAf,CAAoB,IAApB,CAArC;IACA,KAAK,CAAAkiE,OAAL,GAAgBA,OAAhB;IAEA,IACE,CAAC99E,IAAA,CAAKswE,QAAN,KACCtwE,IAAA,CAAK2zE,QAAL,EAAeh8E,GAAf,IAAsBqI,IAAA,CAAK6zE,WAAL,EAAkBl8E,GAAxC,IAA+CqI,IAAA,CAAK8zE,QAApD,CAFH,EAGE;MACA,KAAKL,YAAL;IADA;IAIF,KAAK79C,SAAL,CAAe1N,MAAf,CAAsB41D,OAAtB;IACA,OAAO,KAAKloD,SAAZ;EAxCO;EA2CTi/C,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAAiJ,OAAZ;EAD0B;EAI5BhJ,iBAAA,EAAmB;IACjB,KAAKl/C,SAAL,CAAepR,SAAf,CAAyBhT,GAAzB,CAA6B,eAA7B;EADiB;EAUnBouE,UAAA,EAAY;IACV,KAAK9P,eAAL,EAAsByG,kBAAtB,CACE,KAAK3gD,SADP,EAEE,KAAK80C,OAFP,EAGE,KAAKtuD,QAHP;EADU;AA1EkD;AA0GhE,MAAMyjE,eAAN,CAAsB;EACpB,CAAApY,oBAAA,GAAwB,IAAxB;EAEA,CAAAh4D,mBAAA,GAAuB,IAAvB;EAEA,CAAAqwE,mBAAA,GAAuB,IAAIz/E,GAAJ,EAAvB;EAEAvK,YAAY;IACVosB,GADU;IAEVulD,oBAFU;IAGVh4D,mBAHU;IAIV04D,IAJU;IAKV1uD,IALU;IAMVpK;EANU,CAAZ,EAOG;IACD,KAAK6S,GAAL,GAAWA,GAAX;IACA,KAAK,CAAAulD,oBAAL,GAA6BA,oBAA7B;IACA,KAAK,CAAAh4D,mBAAL,GAA4BA,mBAA5B;IACA,KAAK04D,IAAL,GAAYA,IAAZ;IACA,KAAK1uD,IAAL,GAAYA,IAAZ;IACA,KAAKpK,QAAL,GAAgBA,QAAhB;IACA,KAAKwS,MAAL,GAAc,CAAd;IAME,KAAKsmD,IAAL,KAAc4X,2BAAd;EAbD;EA4BH,CAAAC,cAAe3xD,OAAf,EAAwB7iB,EAAxB,EAA4B;IAC1B,MAAMy0E,cAAA,GAAiB5xD,OAAA,CAAQ6xD,UAAR,IAAsB7xD,OAA7C;IACA4xD,cAAA,CAAez0E,EAAf,GAAoB,GAAGkwB,+BAAH,GAAsBlwB,EAAtB,EAApB;IAEA,KAAK0W,GAAL,CAASgG,MAAT,CAAgBmG,OAAhB;IACA,KAAK,CAAAo5C,oBAAL,EAA4B+B,gBAA5B,CACE,KAAKtnD,GADP,EAEEmM,OAFF,EAGE4xD,cAHF,EAIsB,KAJtB;EAL0B;EAmB5B,MAAM9wE,MAANA,CAAa7H,MAAb,EAAqB;IACnB,MAAM;MAAE64E;IAAF,IAAkB74E,MAAxB;IACA,MAAM0vB,KAAA,GAAQ,KAAK9U,GAAnB;IACA,IAAA6iB,iCAAA,EAAmB/N,KAAnB,EAA0B,KAAK3nB,QAA/B;IAEA,MAAM+wE,eAAA,GAAkB,IAAI//E,GAAJ,EAAxB;IACA,MAAMggF,aAAA,GAAgB;MACpBrgF,IAAA,EAAM,IADc;MAEpBg3B,KAFoB;MAGpB64C,WAAA,EAAavoE,MAAA,CAAOuoE,WAHA;MAIpBC,eAAA,EAAiBxoE,MAAA,CAAOwoE,eAJJ;MAKpBC,kBAAA,EAAoBzoE,MAAA,CAAOyoE,kBAAP,IAA6B,EAL7B;MAMpBC,WAAA,EAAa1oE,MAAA,CAAO0oE,WAAP,KAAuB,KANhB;MAOpBhR,UAAA,EAAY,IAAIn+B,4BAAJ,EAPQ;MAQpBj2B,iBAAA,EAAmBtD,MAAA,CAAOsD,iBAAP,IAA4B,IAAIuO,qCAAJ,EAR3B;MASpB82D,eAAA,EAAiB3oE,MAAA,CAAO2oE,eAAP,KAA2B,IATxB;MAUpBljE,YAAA,EAAczF,MAAA,CAAOyF,YAVD;MAWpBojE,YAAA,EAAc7oE,MAAA,CAAO6oE,YAXD;MAYpBtvD,MAAA,EAAQ,IAZY;MAapBmzD,QAAA,EAAU;IAbU,CAAtB;IAgBA,WAAWh0E,IAAX,IAAmBmgF,WAAnB,EAAgC;MAC9B,IAAIngF,IAAA,CAAKsgF,MAAT,EAAiB;QACf;MADe;MAGjB,MAAMC,iBAAA,GAAoBvgF,IAAA,CAAK6pE,cAAL,KAAwBhiF,oBAAA,CAAea,KAAjE;MACA,IAAI,CAAC63F,iBAAL,EAAwB;QACtB,MAAM;UAAEtkE,KAAF;UAASC;QAAT,IAAoB0xD,WAAA,CAAY5tE,IAAA,CAAKhE,IAAjB,CAA1B;QACA,IAAIigB,KAAA,IAAS,CAAT,IAAcC,MAAA,IAAU,CAA5B,EAA+B;UAC7B;QAD6B;MAFT,CAAxB,MAKO;QACL,MAAM83D,QAAA,GAAWoM,eAAA,CAAgB3/E,GAAhB,CAAoBT,IAAA,CAAKwL,EAAzB,CAAjB;QACA,IAAI,CAACwoE,QAAL,EAAe;UAEb;QAFa;QAIfqM,aAAA,CAAcrM,QAAd,GAAyBA,QAAzB;MANK;MAQPqM,aAAA,CAAcrgF,IAAd,GAAqBA,IAArB;MACA,MAAMquB,OAAA,GAAUw/C,wBAAA,CAAyB11E,MAAzB,CAAgCkoF,aAAhC,CAAhB;MAEA,IAAI,CAAChyD,OAAA,CAAQqhD,YAAb,EAA2B;QACzB;MADyB;MAI3B,IAAI,CAAC6Q,iBAAD,IAAsBvgF,IAAA,CAAKswE,QAA/B,EAAyC;QACvC,MAAM0D,QAAA,GAAWoM,eAAA,CAAgB3/E,GAAhB,CAAoBT,IAAA,CAAKswE,QAAzB,CAAjB;QACA,IAAI,CAAC0D,QAAL,EAAe;UACboM,eAAA,CAAgBpwE,GAAhB,CAAoBhQ,IAAA,CAAKswE,QAAzB,EAAmC,CAACjiD,OAAD,CAAnC;QADa,CAAf,MAEO;UACL2lD,QAAA,CAASx8E,IAAT,CAAc62B,OAAd;QADK;MAJgC;MASzC,IAAIA,OAAA,CAAQy7C,oBAAR,GAA+B,CAAnC,EAAsC;QACpC,KAAK,CAAAgW,mBAAL,CAA0B9vE,GAA1B,CAA8Bqe,OAAA,CAAQruB,IAAR,CAAawL,EAA3C,EAA+C6iB,OAA/C;MADoC;MAItC,MAAMmyD,QAAA,GAAWnyD,OAAA,CAAQlf,MAAR,EAAjB;MACA,IAAInP,IAAA,CAAKwoE,MAAT,EAAiB;QACfgY,QAAA,CAASx7D,KAAT,CAAeqX,UAAf,GAA4B,QAA5B;MADe;MAGjB,KAAK,CAAA2jD,aAAL,CAAoBQ,QAApB,EAA8BxgF,IAAA,CAAKwL,EAAnC;IA1C8B;IA6ChC,KAAK,CAAAi1E,sBAAL;IAEA,MAAM,KAAKtY,IAAL,CAAUniD,SAAV,CAAoBgR,KAApB,CAAN;EArEmB;EA8ErBvW,OAAO;IAAEpR;EAAF,CAAP,EAAqB;IACnB,MAAM2nB,KAAA,GAAQ,KAAK9U,GAAnB;IACA,KAAK7S,QAAL,GAAgBA,QAAhB;IACA,IAAA01B,iCAAA,EAAmB/N,KAAnB,EAA0B;MAAE3oB,QAAA,EAAUgB,QAAA,CAAShB;IAArB,CAA1B;IAEA,KAAK,CAAAoyE,sBAAL;IACAzpD,KAAA,CAAMwxC,MAAN,GAAe,KAAf;EANmB;EASrB,CAAAiY,uBAAA,EAA0B;IACxB,IAAI,CAAC,KAAK,CAAAhxE,mBAAV,EAAgC;MAC9B;IAD8B;IAGhC,MAAMunB,KAAA,GAAQ,KAAK9U,GAAnB;IACA,WAAW,CAAC1W,EAAD,EAAKyR,MAAL,CAAX,IAA2B,KAAK,CAAAxN,mBAAhC,EAAsD;MACpD,MAAM4e,OAAA,GAAU2I,KAAA,CAAMw9C,aAAN,CAAqB,wBAAuBhpE,EAAG,IAA/C,CAAhB;MACA,IAAI,CAAC6iB,OAAL,EAAc;QACZ;MADY;MAId,MAAM;QAAE6xD;MAAF,IAAiB7xD,OAAvB;MACA,IAAI,CAAC6xD,UAAL,EAAiB;QACf7xD,OAAA,CAAQnG,MAAR,CAAejL,MAAf;MADe,CAAjB,MAEO,IAAIijE,UAAA,CAAWvI,QAAX,KAAwB,QAA5B,EAAsC;QAC3CuI,UAAA,CAAWQ,WAAX,CAAuBzjE,MAAvB;MAD2C,CAAtC,MAEA;QACLijE,UAAA,CAAWnD,MAAX,CAAkB9/D,MAAlB;MADK;IAX6C;IAetD,KAAK,CAAAxN,mBAAL,CAA0BmE,KAA1B;EApBwB;EAuB1Bk1D,uBAAA,EAAyB;IACvB,OAAOrvE,KAAA,CAAMujE,IAAN,CAAW,KAAK,CAAA8iB,mBAAL,CAA0BtsE,MAA1B,EAAX,CAAP;EADuB;EAIzB01D,sBAAsB19D,EAAtB,EAA0B;IACxB,OAAO,KAAK,CAAAs0E,mBAAL,CAA0Br/E,GAA1B,CAA8B+K,EAA9B,CAAP;EADwB;AA/KN;AAl0FtBtnB,uBAAA,GAAA27F,eAAA;;;;;;;;;;;;ACsBA,SAASc,aAATA,CAAuBjnF,CAAvB,EAA0B;EACxB,OAAOtC,IAAA,CAAK2J,KAAL,CAAW3J,IAAA,CAAKgE,GAAL,CAAS,CAAT,EAAYhE,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAYqC,CAAZ,CAAZ,IAA8B,GAAzC,EACJC,QADI,CACK,EADL,EAEJC,QAFI,CAEK,CAFL,EAEQ,GAFR,CAAP;AADwB;AAM1B,SAASgnF,aAATA,CAAuB39D,CAAvB,EAA0B;EACxB,OAAO7rB,IAAA,CAAKgE,GAAL,CAAS,CAAT,EAAYhE,IAAA,CAAKC,GAAL,CAAS,GAAT,EAAc,MAAM4rB,CAApB,CAAZ,CAAP;AADwB;AAK1B,MAAM0uD,eAAN,CAAsB;EACpB,OAAOkP,MAAPA,CAAc,CAACplF,CAAD,EAAIynB,CAAJ,EAAOzoB,CAAP,EAAUokC,CAAV,CAAd,EAA4B;IAC1B,OAAO,CAAC,GAAD,EAAM,IAAIznC,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAY,MAAMoE,CAAN,GAAU,OAAOhB,CAAjB,GAAqB,OAAOyoB,CAA5B,GAAgC2b,CAA5C,CAAV,CAAP;EAD0B;EAI5B,OAAOiiD,MAAPA,CAAc,CAAC9mF,CAAD,CAAd,EAAmB;IACjB,OAAO,CAAC,MAAD,EAAS,CAAT,EAAY,CAAZ,EAAe,CAAf,EAAkB,IAAIA,CAAtB,CAAP;EADiB;EAInB,OAAO+mF,KAAPA,CAAa,CAAC/mF,CAAD,CAAb,EAAkB;IAChB,OAAO,CAAC,KAAD,EAAQA,CAAR,EAAWA,CAAX,EAAcA,CAAd,CAAP;EADgB;EAIlB,OAAOgnF,KAAPA,CAAa,CAAChnF,CAAD,CAAb,EAAkB;IAChBA,CAAA,GAAI4mF,aAAA,CAAc5mF,CAAd,CAAJ;IACA,OAAO,CAACA,CAAD,EAAIA,CAAJ,EAAOA,CAAP,CAAP;EAFgB;EAKlB,OAAOinF,MAAPA,CAAc,CAACjnF,CAAD,CAAd,EAAmB;IACjB,MAAMknF,CAAA,GAAIP,aAAA,CAAc3mF,CAAd,CAAV;IACA,OAAQ,IAAGknF,CAAJ,GAAQA,CAAR,GAAYA,CAAZ,EAAP;EAFiB;EAKnB,OAAOC,KAAPA,CAAa,CAACpnF,CAAD,EAAIC,CAAJ,EAAOC,CAAP,CAAb,EAAwB;IACtB,OAAO,CAAC,GAAD,EAAM,MAAMF,CAAN,GAAU,OAAOC,CAAjB,GAAqB,OAAOC,CAAlC,CAAP;EADsB;EAIxB,OAAOmnF,OAAPA,CAAetuD,KAAf,EAAsB;IACpB,OAAOA,KAAA,CAAM56B,GAAN,CAAU0oF,aAAV,CAAP;EADoB;EAItB,OAAOS,QAAPA,CAAgBvuD,KAAhB,EAAuB;IACrB,OAAQ,IAAGA,KAAA,CAAM56B,GAAN,CAAUyoF,aAAV,EAAyBlpF,IAAzB,CAA8B,EAA9B,CAAJ,EAAP;EADqB;EAIvB,OAAO6pF,MAAPA,CAAA,EAAgB;IACd,OAAO,WAAP;EADc;EAIhB,OAAOC,KAAPA,CAAA,EAAe;IACb,OAAO,CAAC,IAAD,CAAP;EADa;EAIf,OAAOC,QAAPA,CAAgB,CAAC/lF,CAAD,EAAIynB,CAAJ,EAAOzoB,CAAP,EAAUokC,CAAV,CAAhB,EAA8B;IAC5B,OAAO,CACL,KADK,EAEL,IAAIznC,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAYoE,CAAA,GAAIojC,CAAhB,CAFC,EAGL,IAAIznC,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAYoD,CAAA,GAAIokC,CAAhB,CAHC,EAIL,IAAIznC,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAY6rB,CAAA,GAAI2b,CAAhB,CAJC,CAAP;EAD4B;EAS9B,OAAO4iD,QAAPA,CAAgB,CAAChmF,CAAD,EAAIynB,CAAJ,EAAOzoB,CAAP,EAAUokC,CAAV,CAAhB,EAA8B;IAC5B,OAAO,CACL+hD,aAAA,CAAc,IAAIxpF,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAYoE,CAAA,GAAIojC,CAAhB,CAAlB,CADK,EAEL+hD,aAAA,CAAc,IAAIxpF,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAYoD,CAAA,GAAIokC,CAAhB,CAAlB,CAFK,EAGL+hD,aAAA,CAAc,IAAIxpF,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAY6rB,CAAA,GAAI2b,CAAhB,CAAlB,CAHK,CAAP;EAD4B;EAQ9B,OAAO6iD,SAAPA,CAAiBC,UAAjB,EAA6B;IAC3B,MAAM5uD,GAAA,GAAM,KAAKyuD,QAAL,CAAcG,UAAd,EAA0B1mF,KAA1B,CAAgC,CAAhC,CAAZ;IACA,OAAO,KAAKomF,QAAL,CAActuD,GAAd,CAAP;EAF2B;EAK7B,OAAO6uD,QAAPA,CAAgB,CAAC7nF,CAAD,EAAIC,CAAJ,EAAOC,CAAP,CAAhB,EAA2B;IACzB,MAAMwB,CAAA,GAAI,IAAI1B,CAAd;IACA,MAAMU,CAAA,GAAI,IAAIT,CAAd;IACA,MAAMkpB,CAAA,GAAI,IAAIjpB,CAAd;IACA,MAAM4kC,CAAA,GAAIznC,IAAA,CAAKC,GAAL,CAASoE,CAAT,EAAYhB,CAAZ,EAAeyoB,CAAf,CAAV;IACA,OAAO,CAAC,MAAD,EAASznB,CAAT,EAAYhB,CAAZ,EAAeyoB,CAAf,EAAkB2b,CAAlB,CAAP;EALyB;AAjEP;AAjCtB36C,uBAAA,GAAAytF,eAAA;;;;;;;;;;;;;ACyBA,MAAMkQ,oBAAA,GAAuB;EAC3BC,QAAA,EAAU,mBADiB;EAE3BC,aAAA,EAAe,oCAFY;EAI3BC,sBAAA,EAAwB,mCAJG;EAK3BC,sBAAA,EAAwB,mCALG;EAM3BC,+BAAA,EAAiC,oBANN;EAO3BC,yCAAA,EAA2C,IAPhB;EAQ3BC,8CAAA,EAAgD,IARrB;EAS3BC,kDAAA,EAAoD,UATzB;EAU3BC,mDAAA,EAAqD,WAV1B;EAW3BC,qCAAA,EAAuC,IAXZ;EAY3BC,qCAAA,EAAuC,IAZZ;EAa3BC,yCAAA,EAA2C,QAbhB;EAc3BC,wCAAA,EAA0C,OAdf;EAe3BC,8CAAA,EACE,mDAhByB;EAiB3BC,mDAAA,EACE,6DAlByB;EAmB3BC,kCAAA,EAAoC,KAnBT;EAoB3BC,iCAAA,EAAmC,IApBR;EAsB3BC,iBAAA,EAAmB,mBAtBQ;EAuB3BC,aAAA,EAAe,eAvBY;EAwB3BC,gBAAA,EAAkB,eAxBS;EAyB3BC,iBAAA,EAAmB,4BAzBQ;EA2B3BC,gBAAA,EAAkB,gDA3BS;EA4B3BC,mBAAA,EAAqB,6CA5BM;EA6B3B,yBAAyB,gCA7BE;EA8B3B,2BAA2B,kCA9BA;EA+B3B,+BAA+B,2BA/BJ;EAgC3B,iCAAiC,6BAhCN;EAiC3BC,cAAA,EAAgB,kBAjCW;EAmC3BC,gBAAA,EAAkB,YAnCS;EAoC3BC,cAAA,EAAgB,UApCW;EAqC3BC,eAAA,EAAiB,gBArCU;EAsC3BC,iBAAA,EAAmB,aAtCQ;EAuC3BC,kBAAA,EAAoB,YAvCO;EAyC3BC,aAAA,EAAe,0CAzCY;EA0C3BC,kBAAA,EAAoB,gCA1CO;EA2C3BC,kBAAA,EAAoB,mBA3CO;EA4C3BC,yBAAA,EAA2B,6BA5CA;EA6C3BC,eAAA,EAAiB,6CA7CU;EA+C3BC,sBAAA,EAAwB,oBA/CG;EAiD3BC,sBAAA,EACE,2DAlDyB;EAmD3BC,kBAAA,EAAoB,oDAnDO;EAoD3BC,kBAAA,EACE,2DArDyB;EAuD3BC,0BAAA,EAA4B,eAvDD;EAwD3BC,4BAAA,EAA8B,aAxDH;EAyD3BC,sBAAA,EAAwB,aAzDG;EA0D3BC,4BAAA,EAA8B;AA1DH,CAA7B;AA4DqE;EACnE1C,oBAAA,CAAqB2C,sBAArB,GAA8C,eAA9C;AADmE;AAIrE,SAASC,eAATA,CAAyBrsF,GAAzB,EAA8Bk6B,IAA9B,EAAoC;EAClC,QAAQl6B,GAAR;IACE,KAAK,kBAAL;MACEA,GAAA,GAAO,oBAAmBk6B,IAAA,CAAKxoB,KAAL,KAAe,CAAf,GAAmB,KAAnB,GAA2B,OAAQ,GAA7D;MACA;IACF,KAAK,wBAAL;MACE1R,GAAA,GAAO,0BAAyBk6B,IAAA,CAAK0qB,KAAL,KAAe,CAAf,GAAmB,KAAnB,GAA2B,OAAQ,GAAnE;MACA;EANJ;EAQA,OAAO6kC,oBAAA,CAAqBzpF,GAArB,KAA6B,EAApC;AATkC;AAapC,SAASssF,eAATA,CAAyB3kD,IAAzB,EAA+BzN,IAA/B,EAAqC;EACnC,IAAI,CAACA,IAAL,EAAW;IACT,OAAOyN,IAAP;EADS;EAGX,OAAOA,IAAA,CAAKz/B,UAAL,CAAgB,sBAAhB,EAAwC,CAACoH,GAAD,EAAM7R,IAAN,KAAe;IAC5D,OAAOA,IAAA,IAAQy8B,IAAR,GAAeA,IAAA,CAAKz8B,IAAL,CAAf,GAA4B,OAAOA,IAAP,GAAc,IAAjD;EAD4D,CAAvD,CAAP;AAJmC;AAarC,MAAMkqF,QAAA,GAAW;EACf,MAAM4E,WAANA,CAAA,EAAoB;IAClB,OAAO,OAAP;EADkB,CADL;EAKf,MAAMC,YAANA,CAAA,EAAqB;IACnB,OAAO,KAAP;EADmB,CALN;EASf,MAAMnkF,GAANA,CAAUrI,GAAV,EAAek6B,IAAA,GAAO,IAAtB,EAA4B2nB,QAAA,GAAWwqC,eAAA,CAAgBrsF,GAAhB,EAAqBk6B,IAArB,CAAvC,EAAmE;IACjE,OAAOoyD,eAAA,CAAgBzqC,QAAhB,EAA0B3nB,IAA1B,CAAP;EADiE,CATpD;EAaf,MAAMtM,SAANA,CAAgBqI,OAAhB,EAAyB;AAbV,CAAjB;AAnHAnqC,gBAAA,GAAA67F,QAAA;;;;;;;;;;;;ACkBA,IAAA99E,SAAA,GAAAf,mBAAA;AAYA,MAAMm9E,QAAN,CAAe;EACb,OAAOwG,YAAPA,CAAoBtG,IAApB,EAA0B/yE,EAA1B,EAA8B6iB,OAA9B,EAAuClP,OAAvC,EAAgDvQ,MAAhD,EAAwD;IACtD,MAAM8jE,UAAA,GAAavzD,OAAA,CAAQI,QAAR,CAAiB/T,EAAjB,EAAqB;MAAErW,KAAA,EAAO;IAAT,CAArB,CAAnB;IACA,QAAQk5B,OAAA,CAAQx4B,IAAhB;MACE,KAAK,UAAL;QACE,IAAI68E,UAAA,CAAWv9E,KAAX,KAAqB,IAAzB,EAA+B;UAC7BopF,IAAA,CAAK/rE,WAAL,GAAmBkgE,UAAA,CAAWv9E,KAA9B;QAD6B;QAG/B,IAAIyZ,MAAA,KAAW,OAAf,EAAwB;UACtB;QADsB;QAGxB2vE,IAAA,CAAKlpE,gBAAL,CAAsB,OAAtB,EAA+BH,KAAA,IAAS;UACtCiK,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;YAAErW,KAAA,EAAO+f,KAAA,CAAMkQ,MAAN,CAAajwB;UAAtB,CAArB;QADsC,CAAxC;QAGA;MACF,KAAK,OAAL;QACE,IACEk5B,OAAA,CAAQiW,UAAR,CAAmBrgD,IAAnB,KAA4B,OAA5B,IACAoqC,OAAA,CAAQiW,UAAR,CAAmBrgD,IAAnB,KAA4B,UAF9B,EAGE;UACA,IAAIyuF,UAAA,CAAWv9E,KAAX,KAAqBk5B,OAAA,CAAQiW,UAAR,CAAmBwgD,KAA5C,EAAmD;YACjDvG,IAAA,CAAKhzD,YAAL,CAAkB,SAAlB,EAA6B,IAA7B;UADiD,CAAnD,MAEO,IAAImnD,UAAA,CAAWv9E,KAAX,KAAqBk5B,OAAA,CAAQiW,UAAR,CAAmBygD,MAA5C,EAAoD;YAGzDxG,IAAA,CAAK5S,eAAL,CAAqB,SAArB;UAHyD;UAK3D,IAAI/8D,MAAA,KAAW,OAAf,EAAwB;YACtB;UADsB;UAGxB2vE,IAAA,CAAKlpE,gBAAL,CAAsB,QAAtB,EAAgCH,KAAA,IAAS;YACvCiK,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;cACnBrW,KAAA,EAAO+f,KAAA,CAAMkQ,MAAN,CAAag2D,OAAb,GACHlmE,KAAA,CAAMkQ,MAAN,CAAasvD,YAAb,CAA0B,OAA1B,CADG,GAEHx/D,KAAA,CAAMkQ,MAAN,CAAasvD,YAAb,CAA0B,QAA1B;YAHe,CAArB;UADuC,CAAzC;QAXA,CAHF,MAqBO;UACL,IAAIhC,UAAA,CAAWv9E,KAAX,KAAqB,IAAzB,EAA+B;YAC7BopF,IAAA,CAAKhzD,YAAL,CAAkB,OAAlB,EAA2BmnD,UAAA,CAAWv9E,KAAtC;UAD6B;UAG/B,IAAIyZ,MAAA,KAAW,OAAf,EAAwB;YACtB;UADsB;UAGxB2vE,IAAA,CAAKlpE,gBAAL,CAAsB,OAAtB,EAA+BH,KAAA,IAAS;YACtCiK,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;cAAErW,KAAA,EAAO+f,KAAA,CAAMkQ,MAAN,CAAajwB;YAAtB,CAArB;UADsC,CAAxC;QAPK;QAWP;MACF,KAAK,QAAL;QACE,IAAIu9E,UAAA,CAAWv9E,KAAX,KAAqB,IAAzB,EAA+B;UAC7BopF,IAAA,CAAKhzD,YAAL,CAAkB,OAAlB,EAA2BmnD,UAAA,CAAWv9E,KAAtC;UACA,WAAW8mF,MAAX,IAAqB5tD,OAAA,CAAQnf,QAA7B,EAAuC;YACrC,IAAI+sE,MAAA,CAAO33C,UAAP,CAAkBnvC,KAAlB,KAA4Bu9E,UAAA,CAAWv9E,KAA3C,EAAkD;cAChD8mF,MAAA,CAAO33C,UAAP,CAAkB43C,QAAlB,GAA6B,IAA7B;YADgD,CAAlD,MAEO,IAAID,MAAA,CAAO33C,UAAP,CAAkB5qB,cAAlB,CAAiC,UAAjC,CAAJ,EAAkD;cACvD,OAAOuiE,MAAA,CAAO33C,UAAP,CAAkB43C,QAAzB;YADuD;UAHpB;QAFV;QAU/BqC,IAAA,CAAKlpE,gBAAL,CAAsB,OAAtB,EAA+BH,KAAA,IAAS;UACtC,MAAM5gB,OAAA,GAAU4gB,KAAA,CAAMkQ,MAAN,CAAa9wB,OAA7B;UACA,MAAMa,KAAA,GACJb,OAAA,CAAQkoF,aAAR,KAA0B,CAAC,CAA3B,GACI,EADJ,GAEIloF,OAAA,CAAQA,OAAA,CAAQkoF,aAAhB,EAA+BrnF,KAHrC;UAIAgqB,OAAA,CAAQS,QAAR,CAAiBpU,EAAjB,EAAqB;YAAErW;UAAF,CAArB;QANsC,CAAxC;QAQA;IAjEJ;EAFsD;EAuExD,OAAO6vF,aAAPA,CAAqB;IAAEzG,IAAF;IAAQlwD,OAAR;IAAiBlP,OAAA,GAAU,IAA3B;IAAiCvQ,MAAjC;IAAyCihE;EAAzC,CAArB,EAA6E;IAC3E,MAAM;MAAEvrC;IAAF,IAAiBjW,OAAvB;IACA,MAAM42D,mBAAA,GAAsB1G,IAAA,YAAgB2G,iBAA5C;IAEA,IAAI5gD,UAAA,CAAWrgD,IAAX,KAAoB,OAAxB,EAAiC;MAG/BqgD,UAAA,CAAWzuC,IAAX,GAAkB,GAAGyuC,UAAA,CAAWzuC,IAAK,IAAG+Y,MAAtB,EAAlB;IAH+B;IAKjC,WAAW,CAACxW,GAAD,EAAMjD,KAAN,CAAX,IAA2BE,MAAA,CAAOyqB,OAAP,CAAewkB,UAAf,CAA3B,EAAuD;MACrD,IAAInvC,KAAA,KAAU,IAAV,IAAkBA,KAAA,KAAUyB,SAAhC,EAA2C;QACzC;MADyC;MAI3C,QAAQwB,GAAR;QACE,KAAK,OAAL;UACE,IAAIjD,KAAA,CAAMR,MAAV,EAAkB;YAChB4pF,IAAA,CAAKhzD,YAAL,CAAkBnzB,GAAlB,EAAuBjD,KAAA,CAAMsC,IAAN,CAAW,GAAX,CAAvB;UADgB;UAGlB;QACF,KAAK,QAAL;UAIE;QACF,KAAK,IAAL;UACE8mF,IAAA,CAAKhzD,YAAL,CAAkB,iBAAlB,EAAqCp2B,KAArC;UACA;QACF,KAAK,OAAL;UACEE,MAAA,CAAO6d,MAAP,CAAcqrE,IAAA,CAAKv5D,KAAnB,EAA0B7vB,KAA1B;UACA;QACF,KAAK,aAAL;UACEopF,IAAA,CAAK/rE,WAAL,GAAmBrd,KAAnB;UACA;QACF;UACE,IAAI,CAAC8vF,mBAAD,IAAyB7sF,GAAA,KAAQ,MAAR,IAAkBA,GAAA,KAAQ,WAAvD,EAAqE;YACnEmmF,IAAA,CAAKhzD,YAAL,CAAkBnzB,GAAlB,EAAuBjD,KAAvB;UADmE;MArBzE;IALqD;IAgCvD,IAAI8vF,mBAAJ,EAAyB;MACvBpV,WAAA,CAAYuF,iBAAZ,CACEmJ,IADF,EAEEj6C,UAAA,CAAW/7B,IAFb,EAGE+7B,UAAA,CAAW+wC,SAHb;IADuB;IASzB,IAAIl2D,OAAA,IAAWmlB,UAAA,CAAW6gD,MAA1B,EAAkC;MAChC,KAAKN,YAAL,CAAkBtG,IAAlB,EAAwBj6C,UAAA,CAAW6gD,MAAnC,EAA2C92D,OAA3C,EAAoDlP,OAApD;IADgC;EAlDyC;EA4D7E,OAAOhQ,MAAPA,CAAc8S,UAAd,EAA0B;IACxB,MAAM9C,OAAA,GAAU8C,UAAA,CAAWrX,iBAA3B;IACA,MAAMilE,WAAA,GAAc5tD,UAAA,CAAW4tD,WAA/B;IACA,MAAMuV,IAAA,GAAOnjE,UAAA,CAAWq8D,OAAxB;IACA,MAAM1vE,MAAA,GAASqT,UAAA,CAAWrT,MAAX,IAAqB,SAApC;IACA,MAAMy2E,QAAA,GAAWrgF,QAAA,CAASgjB,aAAT,CAAuBo9D,IAAA,CAAKvvF,IAA5B,CAAjB;IACA,IAAIuvF,IAAA,CAAK9gD,UAAT,EAAqB;MACnB,KAAK0gD,aAAL,CAAmB;QACjBzG,IAAA,EAAM8G,QADW;QAEjBh3D,OAAA,EAAS+2D,IAFQ;QAGjBx2E,MAHiB;QAIjBihE;MAJiB,CAAnB;IADmB;IAQrB,MAAMyV,KAAA,GAAQ,CAAC,CAACF,IAAD,EAAO,CAAC,CAAR,EAAWC,QAAX,CAAD,CAAd;IAEA,MAAME,OAAA,GAAUtjE,UAAA,CAAWC,GAA3B;IACAqjE,OAAA,CAAQr9D,MAAR,CAAem9D,QAAf;IAEA,IAAIpjE,UAAA,CAAW5S,QAAf,EAAyB;MACvB,MAAMnhB,SAAA,GAAa,UAAS+zB,UAAA,CAAW5S,QAAX,CAAoBnhB,SAApB,CAA8BuJ,IAA9B,CAAmC,GAAnC,CAAwC,GAApE;MACA8tF,OAAA,CAAQvgE,KAAR,CAAc92B,SAAd,GAA0BA,SAA1B;IAFuB;IAMzB,IAAI0gB,MAAA,KAAW,UAAf,EAA2B;MACzB22E,OAAA,CAAQh6D,YAAR,CAAqB,OAArB,EAA8B,kBAA9B;IADyB;IAK3B,MAAM66C,QAAA,GAAW,EAAjB;IAEA,OAAOkf,KAAA,CAAM3wF,MAAN,GAAe,CAAtB,EAAyB;MACvB,MAAM,CAACksB,MAAD,EAAS3pB,CAAT,EAAYqnF,IAAZ,IAAoB+G,KAAA,CAAMrzD,EAAN,CAAS,CAAC,CAAV,CAA1B;MACA,IAAI/6B,CAAA,GAAI,CAAJ,KAAU2pB,MAAA,CAAO3R,QAAP,CAAgBva,MAA9B,EAAsC;QACpC2wF,KAAA,CAAMznC,GAAN;QACA;MAFoC;MAKtC,MAAMslB,KAAA,GAAQtiD,MAAA,CAAO3R,QAAP,CAAgB,EAAEo2E,KAAA,CAAMrzD,EAAN,CAAS,CAAC,CAAV,EAAa,CAAb,CAAlB,CAAd;MACA,IAAIkxC,KAAA,KAAU,IAAd,EAAoB;QAClB;MADkB;MAIpB,MAAM;QAAEttE;MAAF,IAAWstE,KAAjB;MACA,IAAIttE,IAAA,KAAS,OAAb,EAAsB;QACpB,MAAMknE,IAAA,GAAO/3D,QAAA,CAAS+nE,cAAT,CAAwB5J,KAAA,CAAMhuE,KAA9B,CAAb;QACAixE,QAAA,CAAS5uE,IAAT,CAAculE,IAAd;QACAwhB,IAAA,CAAKr2D,MAAL,CAAY60C,IAAZ;QACA;MAJoB;MAOtB,MAAMyoB,SAAA,GAAYriB,KAAA,EAAO7+B,UAAP,EAAmBmhD,KAAnB,GACdzgF,QAAA,CAASu3B,eAAT,CAAyB4mC,KAAA,CAAM7+B,UAAN,CAAiBmhD,KAA1C,EAAiD5vF,IAAjD,CADc,GAEdmP,QAAA,CAASgjB,aAAT,CAAuBnyB,IAAvB,CAFJ;MAIA0oF,IAAA,CAAKr2D,MAAL,CAAYs9D,SAAZ;MACA,IAAIriB,KAAA,CAAM7+B,UAAV,EAAsB;QACpB,KAAK0gD,aAAL,CAAmB;UACjBzG,IAAA,EAAMiH,SADW;UAEjBn3D,OAAA,EAAS80C,KAFQ;UAGjBhkD,OAHiB;UAIjBvQ,MAJiB;UAKjBihE;QALiB,CAAnB;MADoB;MAUtB,IAAI1M,KAAA,CAAMj0D,QAAN,IAAkBi0D,KAAA,CAAMj0D,QAAN,CAAeva,MAAf,GAAwB,CAA9C,EAAiD;QAC/C2wF,KAAA,CAAM9tF,IAAN,CAAW,CAAC2rE,KAAD,EAAQ,CAAC,CAAT,EAAYqiB,SAAZ,CAAX;MAD+C,CAAjD,MAEO,IAAIriB,KAAA,CAAMhuE,KAAV,EAAiB;QACtB,MAAM4nE,IAAA,GAAO/3D,QAAA,CAAS+nE,cAAT,CAAwB5J,KAAA,CAAMhuE,KAA9B,CAAb;QACA,IAAIyd,iBAAA,CAAQswD,eAAR,CAAwBrtE,IAAxB,CAAJ,EAAmC;UACjCuwE,QAAA,CAAS5uE,IAAT,CAAculE,IAAd;QADiC;QAGnCyoB,SAAA,CAAUt9D,MAAV,CAAiB60C,IAAjB;MALsB;IArCD;IA8DzB,WAAW2oB,EAAX,IAAiBH,OAAA,CAAQI,gBAAR,CACf,uDADe,CAAjB,EAEG;MACDD,EAAA,CAAGn6D,YAAH,CAAgB,UAAhB,EAA4B,IAA5B;IADC;IAIH,OAAO;MACL66C;IADK,CAAP;EApGwB;EA8G1B,OAAO3lD,MAAPA,CAAcwB,UAAd,EAA0B;IACxB,MAAM/zB,SAAA,GAAa,UAAS+zB,UAAA,CAAW5S,QAAX,CAAoBnhB,SAApB,CAA8BuJ,IAA9B,CAAmC,GAAnC,CAAwC,GAApE;IACAwqB,UAAA,CAAWC,GAAX,CAAe8C,KAAf,CAAqB92B,SAArB,GAAiCA,SAAjC;IACA+zB,UAAA,CAAWC,GAAX,CAAesmD,MAAf,GAAwB,KAAxB;EAHwB;AAlPb;AA9BftkF,gBAAA,GAAAm6F,QAAA;;;;;;;;;;;;ACeA,IAAAp9E,KAAA,GAAAC,mBAAA;AAKA,IAAA6d,OAAA,GAAA7d,mBAAA;AACA,IAAA+oE,iBAAA,GAAA/oE,mBAAA;AACA,IAAA6f,MAAA,GAAA7f,mBAAA;AAKA,MAAMmnE,SAAN,SAAwB1oD,wBAAxB,CAAyC;EACvC,CAAAimE,UAAA,GAAc,CAAd;EAEA,CAAAC,SAAA,GAAa,CAAb;EAEA,CAAAC,sBAAA,GAA0B,KAAKC,iBAAL,CAAuBnqE,IAAvB,CAA4B,IAA5B,CAA1B;EAEA,CAAAoqE,sBAAA,GAA0B,KAAKC,iBAAL,CAAuBrqE,IAAvB,CAA4B,IAA5B,CAA1B;EAEA,CAAAsqE,uBAAA,GAA2B,KAAKC,kBAAL,CAAwBvqE,IAAxB,CAA6B,IAA7B,CAA3B;EAEA,CAAAwqE,oBAAA,GAAwB,KAAKC,eAAL,CAAqBzqE,IAArB,CAA0B,IAA1B,CAAxB;EAEA,CAAA0qE,sBAAA,GAA0B,KAAKC,iBAAL,CAAuB3qE,IAAvB,CAA4B,IAA5B,CAA1B;EAEA,CAAA4qE,aAAA,GAAiB,IAAIr2C,MAAJ,EAAjB;EAEA,CAAAriB,cAAA,GAAkB,KAAlB;EAEA,CAAA24D,kBAAA,GAAsB,KAAtB;EAEA,CAAAC,mBAAA,GAAuB,KAAvB;EAEA,CAAAC,QAAA,GAAY,IAAZ;EAEA,CAAAC,SAAA,GAAa,CAAb;EAEA,CAAAC,UAAA,GAAc,CAAd;EAEA,CAAAC,oBAAA,GAAwB,IAAxB;EAEA,OAAO/b,aAAP,GAAuB,IAAvB;EAEA,OAAOgc,eAAP,GAAyB,CAAzB;EAEA,OAAOC,iBAAP,GAA2B,CAA3B;EAEA,OAAOnc,YAAP;EAEA,OAAO7qD,KAAP,GAAe,KAAf;EAEAlqB,YAAYwR,MAAZ,EAAoB;IAClB,MAAM;MAAE,GAAGA,MAAL;MAAazR,IAAA,EAAM;IAAnB,CAAN;IACA,KAAKi9B,KAAL,GAAaxrB,MAAA,CAAOwrB,KAAP,IAAgB,IAA7B;IACA,KAAKm0D,SAAL,GAAiB3/E,MAAA,CAAO2/E,SAAP,IAAoB,IAArC;IACA,KAAKz4D,OAAL,GAAelnB,MAAA,CAAOknB,OAAP,IAAkB,IAAjC;IACA,KAAKgwB,KAAL,GAAa,EAAb;IACA,KAAK0oC,YAAL,GAAoB,EAApB;IACA,KAAKC,WAAL,GAAmB,EAAnB;IACA,KAAKC,WAAL,GAAmB,EAAnB;IACA,KAAKlgB,WAAL,GAAmB,CAAnB;IACA,KAAKmgB,YAAL,GAAoB,KAAKC,YAAL,GAAoB,CAAxC;IACA,KAAKrkE,CAAL,GAAS,CAAT;IACA,KAAKC,CAAL,GAAS,CAAT;IACA,KAAKb,oBAAL,GAA4B,IAA5B;EAbkB;EAiBpB,OAAOwB,UAAPA,CAAkBskD,IAAlB,EAAwB;IACtB,KAAK0C,YAAL,GAAoB,IAAIxqE,GAAJ,CAClB,CAAC,8BAAD,EAAiC,wBAAjC,EAA2DnI,GAA3D,CAA+DP,GAAA,IAAO,CACpEA,GADoE,EAEpEwwE,IAAA,CAAK1nE,GAAL,CAAS9I,GAAT,CAFoE,CAAtE,CADkB,CAApB;EADsB;EAUxB,OAAOosB,mBAAPA,CAA2B9/B,IAA3B,EAAiCkR,KAAjC,EAAwC;IACtC,QAAQlR,IAAR;MACE,KAAK4B,gCAAA,CAA2BO,aAAhC;QACEiiF,SAAA,CAAU2e,iBAAV,GAA8B7xF,KAA9B;QACA;MACF,KAAKtP,gCAAA,CAA2BM,SAAhC;QACEkiF,SAAA,CAAU0C,aAAV,GAA0B51E,KAA1B;QACA;MACF,KAAKtP,gCAAA,CAA2BQ,WAAhC;QACEgiF,SAAA,CAAU0e,eAAV,GAA4B5xF,KAAA,GAAQ,GAApC;QACA;IATJ;EADsC;EAexC04B,aAAa5pC,IAAb,EAAmBkR,KAAnB,EAA0B;IACxB,QAAQlR,IAAR;MACE,KAAK4B,gCAAA,CAA2BO,aAAhC;QACE,KAAK,CAAAmhG,eAAL,CAAsBpyF,KAAtB;QACA;MACF,KAAKtP,gCAAA,CAA2BM,SAAhC;QACE,KAAK,CAAAglF,WAAL,CAAkBh2E,KAAlB;QACA;MACF,KAAKtP,gCAAA,CAA2BQ,WAAhC;QACE,KAAK,CAAAmhG,aAAL,CAAoBryF,KAApB;QACA;IATJ;EADwB;EAe1B,WAAW8uB,yBAAXA,CAAA,EAAuC;IACrC,OAAO,CACL,CAACp+B,gCAAA,CAA2BO,aAA5B,EAA2CiiF,SAAA,CAAU2e,iBAArD,CADK,EAEL,CACEnhG,gCAAA,CAA2BM,SAD7B,EAEEkiF,SAAA,CAAU0C,aAAV,IAA2BprD,wBAAA,CAAiB0D,iBAF9C,CAFK,EAML,CACEx9B,gCAAA,CAA2BQ,WAD7B,EAEE+Q,IAAA,CAAKiwB,KAAL,CAAWghD,SAAA,CAAU0e,eAAV,GAA4B,GAAvC,CAFF,CANK,CAAP;EADqC;EAevC,IAAIziE,kBAAJA,CAAA,EAAyB;IACvB,OAAO,CACL,CACEz+B,gCAAA,CAA2BO,aAD7B,EAEE,KAAK6gG,SAAL,IAAkB5e,SAAA,CAAU2e,iBAF9B,CADK,EAKL,CACEnhG,gCAAA,CAA2BM,SAD7B,EAEE,KAAK2sC,KAAL,IACEu1C,SAAA,CAAU0C,aADZ,IAEEprD,wBAAA,CAAiB0D,iBAJrB,CALK,EAWL,CACEx9B,gCAAA,CAA2BQ,WAD7B,EAEE+Q,IAAA,CAAKiwB,KAAL,CAAW,OAAO,KAAKmH,OAAL,IAAgB65C,SAAA,CAAU0e,eAA1B,CAAlB,CAFF,CAXK,CAAP;EADuB;EAuBzB,CAAAQ,gBAAiBN,SAAjB,EAA4B;IAC1B,MAAMQ,cAAA,GAAiB,KAAKR,SAA5B;IACA,KAAKpiE,WAAL,CAAiB;MACf6E,GAAA,EAAKA,CAAA,KAAM;QACT,KAAKu9D,SAAL,GAAiBA,SAAjB;QACA,KAAK,CAAAS,YAAL;MAFS,CADI;MAKf/9D,IAAA,EAAMA,CAAA,KAAM;QACV,KAAKs9D,SAAL,GAAiBQ,cAAjB;QACA,KAAK,CAAAC,YAAL;MAFU,CALG;MASf99D,QAAA,EAAU,IATK;MAUf3lC,IAAA,EAAM4B,gCAAA,CAA2BO,aAVlB;MAWfirC,mBAAA,EAAqB,IAXN;MAYfC,QAAA,EAAU;IAZK,CAAjB;EAF0B;EAsB5B,CAAA65C,YAAar4C,KAAb,EAAoB;IAClB,MAAM04C,UAAA,GAAa,KAAK14C,KAAxB;IACA,KAAKjO,WAAL,CAAiB;MACf6E,GAAA,EAAKA,CAAA,KAAM;QACT,KAAKoJ,KAAL,GAAaA,KAAb;QACA,KAAK,CAAA60D,MAAL;MAFS,CADI;MAKfh+D,IAAA,EAAMA,CAAA,KAAM;QACV,KAAKmJ,KAAL,GAAa04C,UAAb;QACA,KAAK,CAAAmc,MAAL;MAFU,CALG;MASf/9D,QAAA,EAAU,IATK;MAUf3lC,IAAA,EAAM4B,gCAAA,CAA2BM,SAVlB;MAWfkrC,mBAAA,EAAqB,IAXN;MAYfC,QAAA,EAAU;IAZK,CAAjB;EAFkB;EAsBpB,CAAAk2D,cAAeh5D,OAAf,EAAwB;IACtBA,OAAA,IAAW,GAAX;IACA,MAAMo5D,YAAA,GAAe,KAAKp5D,OAA1B;IACA,KAAK3J,WAAL,CAAiB;MACf6E,GAAA,EAAKA,CAAA,KAAM;QACT,KAAK8E,OAAL,GAAeA,OAAf;QACA,KAAK,CAAAm5D,MAAL;MAFS,CADI;MAKfh+D,IAAA,EAAMA,CAAA,KAAM;QACV,KAAK6E,OAAL,GAAeo5D,YAAf;QACA,KAAK,CAAAD,MAAL;MAFU,CALG;MASf/9D,QAAA,EAAU,IATK;MAUf3lC,IAAA,EAAM4B,gCAAA,CAA2BQ,WAVlB;MAWfgrC,mBAAA,EAAqB,IAXN;MAYfC,QAAA,EAAU;IAZK,CAAjB;EAHsB;EAoBxBrE,QAAA,EAAU;IACR,IAAI,CAAC,KAAKpM,MAAV,EAAkB;MAChB;IADgB;IAGlB,MAAMoM,OAAN;IACA,IAAI,KAAK/K,GAAL,KAAa,IAAjB,EAAuB;MACrB;IADqB;IAIvB,IAAI,CAAC,KAAKjF,MAAV,EAAkB;MAChB,KAAK,CAAA8tB,YAAL;MACA,KAAK,CAAA88C,cAAL;IAFgB;IAKlB,IAAI,CAAC,KAAK1kE,eAAV,EAA2B;MAGzB,KAAKtC,MAAL,CAAYrP,GAAZ,CAAgB,IAAhB;MACA,KAAK,CAAAs2E,aAAL;IAJyB;IAM3B,KAAK,CAAAJ,YAAL;EApBQ;EAwBVhoE,OAAA,EAAS;IACP,IAAI,KAAKzC,MAAL,KAAgB,IAApB,EAA0B;MACxB;IADwB;IAI1B,IAAI,CAAC,KAAKyI,OAAL,EAAL,EAAqB;MACnB,KAAKC,MAAL;IADmB;IAKrB,KAAK1I,MAAL,CAAYhB,KAAZ,GAAoB,KAAKgB,MAAL,CAAYf,MAAZ,GAAqB,CAAzC;IACA,KAAKe,MAAL,CAAYyC,MAAZ;IACA,KAAKzC,MAAL,GAAc,IAAd;IAEA,KAAK,CAAA0pE,QAAL,CAAeoB,UAAf;IACA,KAAK,CAAApB,QAAL,GAAiB,IAAjB;IAEA,MAAMjnE,MAAN;EAjBO;EAoBTwF,UAAUrE,MAAV,EAAkB;IAChB,IAAI,CAAC,KAAKA,MAAN,IAAgBA,MAApB,EAA4B;MAG1B,KAAKa,UAAL,CAAgBgW,mBAAhB,CAAoC,IAApC;IAH0B,CAA5B,MAIO,IAAI,KAAK7W,MAAL,IAAeA,MAAA,KAAW,IAA9B,EAAoC;MAIzC,KAAKa,UAAL,CAAgB+V,gBAAhB,CAAiC,IAAjC;IAJyC;IAM3C,MAAMvS,SAAN,CAAgBrE,MAAhB;EAXgB;EAclBwU,gBAAA,EAAkB;IAChB,MAAM,CAAC/O,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;IACA,MAAM/G,KAAA,GAAQ,KAAKA,KAAL,GAAaqK,WAA3B;IACA,MAAMpK,MAAA,GAAS,KAAKA,MAAL,GAAcqK,YAA7B;IACA,KAAKyhE,aAAL,CAAmB/rE,KAAnB,EAA0BC,MAA1B;EAJgB;EAQlB2Q,eAAA,EAAiB;IACf,IAAI,KAAK,CAAAiB,cAAL,IAAwB,KAAK7Q,MAAL,KAAgB,IAA5C,EAAkD;MAChD;IADgD;IAIlD,MAAM4P,cAAN;IACA,KAAKtI,YAAL,GAAoB,KAApB;IACA,KAAKtH,MAAL,CAAY5H,gBAAZ,CAA6B,aAA7B,EAA4C,KAAK,CAAAixE,sBAAjD;EAPe;EAWjBx5D,gBAAA,EAAkB;IAChB,IAAI,CAAC,KAAKtL,YAAL,EAAD,IAAwB,KAAKvE,MAAL,KAAgB,IAA5C,EAAkD;MAChD;IADgD;IAIlD,MAAM6P,eAAN;IACA,KAAKvI,YAAL,GAAoB,CAAC,KAAKmB,OAAL,EAArB;IACA,KAAKxD,GAAL,CAASsC,SAAT,CAAmB9E,MAAnB,CAA0B,SAA1B;IAEA,KAAKzC,MAAL,CAAY3H,mBAAZ,CACE,aADF,EAEE,KAAK,CAAAgxE,sBAFP;EATgB;EAgBlB15D,UAAA,EAAY;IACV,KAAKrI,YAAL,GAAoB,CAAC,KAAKmB,OAAL,EAArB;EADU;EAKZA,QAAA,EAAU;IACR,OACE,KAAK84B,KAAL,CAAW7pD,MAAX,KAAsB,CAAtB,IACC,KAAK6pD,KAAL,CAAW7pD,MAAX,KAAsB,CAAtB,IAA2B,KAAK6pD,KAAL,CAAW,CAAX,EAAc7pD,MAAd,KAAyB,CAFvD;EADQ;EAOV,CAAAszF,eAAA,EAAkB;IAChB,MAAM;MACJtjE,cADI;MAEJ3B,gBAAA,EAAkB,CAAC/G,KAAD,EAAQC,MAAR;IAFd,IAGF,IAHJ;IAIA,QAAQyI,cAAR;MACE,KAAK,EAAL;QACE,OAAO,CAAC,CAAD,EAAIzI,MAAJ,EAAYA,MAAZ,EAAoBD,KAApB,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAACA,KAAD,EAAQC,MAAR,EAAgBD,KAAhB,EAAuBC,MAAvB,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAACD,KAAD,EAAQ,CAAR,EAAWC,MAAX,EAAmBD,KAAnB,CAAP;MACF;QACE,OAAO,CAAC,CAAD,EAAI,CAAJ,EAAOA,KAAP,EAAcC,MAAd,CAAP;IARJ;EALgB;EAoBlB,CAAAgsE,UAAA,EAAa;IACX,MAAM;MAAEl5D,GAAF;MAAO8D,KAAP;MAActE,OAAd;MAAuBy4D,SAAvB;MAAkChgE,WAAlC;MAA+CigD;IAA/C,IAA+D,IAArE;IACAl4C,GAAA,CAAI2iB,SAAJ,GAAiBs1C,SAAA,GAAYhgE,WAAb,GAA4BigD,WAA5C;IACAl4C,GAAA,CAAI0mB,OAAJ,GAAc,OAAd;IACA1mB,GAAA,CAAI2mB,QAAJ,GAAe,OAAf;IACA3mB,GAAA,CAAI4mB,UAAJ,GAAiB,EAAjB;IACA5mB,GAAA,CAAIsmB,WAAJ,GAAkB,GAAGxiB,KAAH,GAAW,IAAAvE,mBAAA,EAAaC,OAAb,CAAX,EAAlB;EANW;EAcb,CAAA25D,aAAcllE,CAAd,EAAiBC,CAAjB,EAAoB;IAClB,KAAKjG,MAAL,CAAY5H,gBAAZ,CAA6B,aAA7B,EAA4C,KAAK,CAAAywE,sBAAjD;IACA,KAAK7oE,MAAL,CAAY5H,gBAAZ,CAA6B,cAA7B,EAA6C,KAAK,CAAA6wE,uBAAlD;IACA,KAAKjpE,MAAL,CAAY5H,gBAAZ,CAA6B,aAA7B,EAA4C,KAAK,CAAA2wE,sBAAjD;IACA,KAAK/oE,MAAL,CAAY5H,gBAAZ,CAA6B,WAA7B,EAA0C,KAAK,CAAA+wE,oBAA/C;IACA,KAAKnpE,MAAL,CAAY3H,mBAAZ,CACE,aADF,EAEE,KAAK,CAAAgxE,sBAFP;IAKA,KAAK/kE,SAAL,GAAiB,IAAjB;IACA,IAAI,CAAC,KAAK,CAAAmlE,mBAAV,EAAgC;MAC9B,KAAK,CAAAA,mBAAL,GAA4B,IAA5B;MACA,KAAK,CAAAoB,aAAL;MACA,KAAKb,SAAL,KAAmB5e,SAAA,CAAU2e,iBAA7B;MACA,KAAKl0D,KAAL,KACEu1C,SAAA,CAAU0C,aAAV,IAA2BprD,wBAAA,CAAiB0D,iBAD9C;MAEA,KAAKmL,OAAL,KAAiB65C,SAAA,CAAU0e,eAA3B;IAN8B;IAQhC,KAAKK,WAAL,CAAiB5vF,IAAjB,CAAsB,CAACyrB,CAAD,EAAIC,CAAJ,CAAtB;IACA,KAAK,CAAAujE,kBAAL,GAA2B,KAA3B;IACA,KAAK,CAAAyB,SAAL;IAEA,KAAK,CAAApB,oBAAL,GAA6B,MAAM;MACjC,KAAK,CAAAsB,UAAL;MACA,IAAI,KAAK,CAAAtB,oBAAT,EAAgC;QAC9Bt+E,MAAA,CAAOmW,qBAAP,CAA6B,KAAK,CAAAmoE,oBAAlC;MAD8B;IAFC,CAAnC;IAMAt+E,MAAA,CAAOmW,qBAAP,CAA6B,KAAK,CAAAmoE,oBAAlC;EA7BkB;EAqCpB,CAAAuB,KAAMplE,CAAN,EAASC,CAAT,EAAY;IACV,MAAM,CAAColE,KAAD,EAAQC,KAAR,IAAiB,KAAKnB,WAAL,CAAiBn1D,EAAjB,CAAoB,CAAC,CAArB,CAAvB;IACA,IAAI,KAAKm1D,WAAL,CAAiBzyF,MAAjB,GAA0B,CAA1B,IAA+BsuB,CAAA,KAAMqlE,KAArC,IAA8CplE,CAAA,KAAMqlE,KAAxD,EAA+D;MAC7D;IAD6D;IAG/D,MAAMnB,WAAA,GAAc,KAAKA,WAAzB;IACA,IAAIoB,MAAA,GAAS,KAAK,CAAAhC,aAAlB;IACAY,WAAA,CAAY5vF,IAAZ,CAAiB,CAACyrB,CAAD,EAAIC,CAAJ,CAAjB;IACA,KAAK,CAAAujE,kBAAL,GAA2B,IAA3B;IAEA,IAAIW,WAAA,CAAYzyF,MAAZ,IAAsB,CAA1B,EAA6B;MAC3B6zF,MAAA,CAAOr6F,MAAP,CAAc,GAAGi5F,WAAA,CAAY,CAAZ,CAAjB;MACAoB,MAAA,CAAOp6F,MAAP,CAAc60B,CAAd,EAAiBC,CAAjB;MACA;IAH2B;IAM7B,IAAIkkE,WAAA,CAAYzyF,MAAZ,KAAuB,CAA3B,EAA8B;MAC5B,KAAK,CAAA6xF,aAAL,GAAsBgC,MAAA,GAAS,IAAIr4C,MAAJ,EAA/B;MACAq4C,MAAA,CAAOr6F,MAAP,CAAc,GAAGi5F,WAAA,CAAY,CAAZ,CAAjB;IAF4B;IAK9B,KAAK,CAAAqB,eAAL,CACED,MADF,EAEE,GAAGpB,WAAA,CAAYn1D,EAAZ,CAAe,CAAC,CAAhB,CAFL,EAGE,GAAGm1D,WAAA,CAAYn1D,EAAZ,CAAe,CAAC,CAAhB,CAHL,EAIEhP,CAJF,EAKEC,CALF;EArBU;EA8BZ,CAAAh0B,QAAA,EAAW;IACT,IAAI,KAAKk4F,WAAL,CAAiBzyF,MAAjB,KAA4B,CAAhC,EAAmC;MACjC;IADiC;IAGnC,MAAM+zF,SAAA,GAAY,KAAKtB,WAAL,CAAiBn1D,EAAjB,CAAoB,CAAC,CAArB,CAAlB;IACA,KAAK,CAAAu0D,aAAL,CAAoBp4F,MAApB,CAA2B,GAAGs6F,SAA9B;EALS;EAaX,CAAAC,YAAa1lE,CAAb,EAAgBC,CAAhB,EAAmB;IACjB,KAAK,CAAA4jE,oBAAL,GAA6B,IAA7B;IAEA7jE,CAAA,GAAI7rB,IAAA,CAAKC,GAAL,CAASD,IAAA,CAAKgE,GAAL,CAAS6nB,CAAT,EAAY,CAAZ,CAAT,EAAyB,KAAKhG,MAAL,CAAYhB,KAArC,CAAJ;IACAiH,CAAA,GAAI9rB,IAAA,CAAKC,GAAL,CAASD,IAAA,CAAKgE,GAAL,CAAS8nB,CAAT,EAAY,CAAZ,CAAT,EAAyB,KAAKjG,MAAL,CAAYf,MAArC,CAAJ;IAEA,KAAK,CAAAmsE,IAAL,CAAWplE,CAAX,EAAcC,CAAd;IACA,KAAK,CAAAh0B,OAAL;IAKA,IAAI05F,MAAJ;IACA,IAAI,KAAKxB,WAAL,CAAiBzyF,MAAjB,KAA4B,CAAhC,EAAmC;MACjCi0F,MAAA,GAAS,KAAK,CAAAC,oBAAL,EAAT;IADiC,CAAnC,MAEO;MAEL,MAAMC,EAAA,GAAK,CAAC7lE,CAAD,EAAIC,CAAJ,CAAX;MACA0lE,MAAA,GAAS,CAAC,CAACE,EAAD,EAAKA,EAAA,CAAG7tF,KAAH,EAAL,EAAiB6tF,EAAA,CAAG7tF,KAAH,EAAjB,EAA6B6tF,EAA7B,CAAD,CAAT;IAHK;IAKP,MAAMN,MAAA,GAAS,KAAK,CAAAhC,aAApB;IACA,MAAMY,WAAA,GAAc,KAAKA,WAAzB;IACA,KAAKA,WAAL,GAAmB,EAAnB;IACA,KAAK,CAAAZ,aAAL,GAAsB,IAAIr2C,MAAJ,EAAtB;IAEA,MAAMzmB,GAAA,GAAMA,CAAA,KAAM;MAChB,KAAKy9D,WAAL,CAAiB3vF,IAAjB,CAAsB4vF,WAAtB;MACA,KAAK5oC,KAAL,CAAWhnD,IAAX,CAAgBoxF,MAAhB;MACA,KAAK1B,YAAL,CAAkB1vF,IAAlB,CAAuBgxF,MAAvB;MACA,KAAKv7D,OAAL;IAJgB,CAAlB;IAOA,MAAMtD,IAAA,GAAOA,CAAA,KAAM;MACjB,KAAKw9D,WAAL,CAAiBtpC,GAAjB;MACA,KAAKW,KAAL,CAAWX,GAAX;MACA,KAAKqpC,YAAL,CAAkBrpC,GAAlB;MACA,IAAI,KAAKW,KAAL,CAAW7pD,MAAX,KAAsB,CAA1B,EAA6B;QAC3B,KAAK+qB,MAAL;MAD2B,CAA7B,MAEO;QACL,IAAI,CAAC,KAAKzC,MAAV,EAAkB;UAChB,KAAK,CAAA8tB,YAAL;UACA,KAAK,CAAA88C,cAAL;QAFgB;QAIlB,KAAK,CAAAH,YAAL;MALK;IANU,CAAnB;IAeA,KAAK7iE,WAAL,CAAiB;MAAE6E,GAAF;MAAOC,IAAP;MAAaC,QAAA,EAAU;IAAvB,CAAjB;EA/CiB;EAkDnB,CAAAw+D,WAAA,EAAc;IACZ,IAAI,CAAC,KAAK,CAAA3B,kBAAV,EAA+B;MAC7B;IAD6B;IAG/B,KAAK,CAAAA,kBAAL,GAA2B,KAA3B;IAEA,MAAMQ,SAAA,GAAY7vF,IAAA,CAAKkgD,IAAL,CAAU,KAAK2vC,SAAL,GAAiB,KAAKhgE,WAAhC,CAAlB;IACA,MAAM8hE,UAAA,GAAa,KAAK3B,WAAL,CAAiBnsF,KAAjB,CAAuB,CAAC,CAAxB,CAAnB;IACA,MAAMgoB,CAAA,GAAI8lE,UAAA,CAAW7wF,GAAX,CAAe4wF,EAAA,IAAMA,EAAA,CAAG,CAAH,CAArB,CAAV;IACA,MAAM5lE,CAAA,GAAI6lE,UAAA,CAAW7wF,GAAX,CAAe4wF,EAAA,IAAMA,EAAA,CAAG,CAAH,CAArB,CAAV;IACA,MAAME,IAAA,GAAO5xF,IAAA,CAAKC,GAAL,CAAS,GAAG4rB,CAAZ,IAAiBgkE,SAA9B;IACA,MAAMgC,IAAA,GAAO7xF,IAAA,CAAKgE,GAAL,CAAS,GAAG6nB,CAAZ,IAAiBgkE,SAA9B;IACA,MAAMiC,IAAA,GAAO9xF,IAAA,CAAKC,GAAL,CAAS,GAAG6rB,CAAZ,IAAiB+jE,SAA9B;IACA,MAAMkC,IAAA,GAAO/xF,IAAA,CAAKgE,GAAL,CAAS,GAAG8nB,CAAZ,IAAiB+jE,SAA9B;IAEA,MAAM;MAAEj4D;IAAF,IAAU,IAAhB;IACAA,GAAA,CAAIhhC,IAAJ;IASEghC,GAAA,CAAI8sB,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoB,KAAK7+B,MAAL,CAAYhB,KAAhC,EAAuC,KAAKgB,MAAL,CAAYf,MAAnD;IAGF,WAAWg0B,IAAX,IAAmB,KAAKg3C,YAAxB,EAAsC;MACpCl4D,GAAA,CAAItgC,MAAJ,CAAWwhD,IAAX;IADoC;IAGtClhB,GAAA,CAAItgC,MAAJ,CAAW,KAAK,CAAA83F,aAAhB;IAEAx3D,GAAA,CAAI/gC,OAAJ;EAjCY;EAoCd,CAAAw6F,gBAAiBD,MAAjB,EAAyB/rF,EAAzB,EAA6BC,EAA7B,EAAiCC,EAAjC,EAAqCC,EAArC,EAAyCC,EAAzC,EAA6CC,EAA7C,EAAiD;IAC/C,MAAMssF,KAAA,GAAS,CAAA3sF,EAAA,GAAKE,EAAL,IAAW,CAA1B;IACA,MAAM0sF,KAAA,GAAS,CAAA3sF,EAAA,GAAKE,EAAL,IAAW,CAA1B;IACA,MAAMG,EAAA,GAAM,CAAAJ,EAAA,GAAKE,EAAL,IAAW,CAAvB;IACA,MAAMG,EAAA,GAAM,CAAAJ,EAAA,GAAKE,EAAL,IAAW,CAAvB;IAEA0rF,MAAA,CAAO97C,aAAP,CACE08C,KAAA,GAAS,KAAKzsF,EAAA,GAAKysF,KAAL,CAAN,GAAqB,CAD/B,EAEEC,KAAA,GAAS,KAAKzsF,EAAA,GAAKysF,KAAL,CAAN,GAAqB,CAF/B,EAGEtsF,EAAA,GAAM,KAAKJ,EAAA,GAAKI,EAAL,CAAN,GAAkB,CAHzB,EAIEC,EAAA,GAAM,KAAKJ,EAAA,GAAKI,EAAL,CAAN,GAAkB,CAJzB,EAKED,EALF,EAMEC,EANF;EAN+C;EAgBjD,CAAA6rF,qBAAA,EAAwB;IACtB,MAAM34C,IAAA,GAAO,KAAKk3C,WAAlB;IACA,IAAIl3C,IAAA,CAAKv7C,MAAL,IAAe,CAAnB,EAAsB;MACpB,OAAO,CAAC,CAACu7C,IAAA,CAAK,CAAL,CAAD,EAAUA,IAAA,CAAK,CAAL,CAAV,EAAmBA,IAAA,CAAKje,EAAL,CAAQ,CAAC,CAAT,CAAnB,EAAgCie,IAAA,CAAKje,EAAL,CAAQ,CAAC,CAAT,CAAhC,CAAD,CAAP;IADoB;IAItB,MAAMq3D,YAAA,GAAe,EAArB;IACA,IAAIpyF,CAAJ;IACA,IAAI,CAACuF,EAAD,EAAKC,EAAL,IAAWwzC,IAAA,CAAK,CAAL,CAAf;IACA,KAAKh5C,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIg5C,IAAA,CAAKv7C,MAAL,GAAc,CAA9B,EAAiCuC,CAAA,EAAjC,EAAsC;MACpC,MAAM,CAACyF,EAAD,EAAKC,EAAL,IAAWszC,IAAA,CAAKh5C,CAAL,CAAjB;MACA,MAAM,CAAC2F,EAAD,EAAKC,EAAL,IAAWozC,IAAA,CAAKh5C,CAAA,GAAI,CAAT,CAAjB;MACA,MAAM6F,EAAA,GAAM,CAAAJ,EAAA,GAAKE,EAAL,IAAW,CAAvB;MACA,MAAMG,EAAA,GAAM,CAAAJ,EAAA,GAAKE,EAAL,IAAW,CAAvB;MAKA,MAAMysF,QAAA,GAAW,CAAC9sF,EAAA,GAAM,KAAKE,EAAA,GAAKF,EAAL,CAAN,GAAkB,CAAxB,EAA2BC,EAAA,GAAM,KAAKE,EAAA,GAAKF,EAAL,CAAN,GAAkB,CAAlD,CAAjB;MACA,MAAM8sF,QAAA,GAAW,CAACzsF,EAAA,GAAM,KAAKJ,EAAA,GAAKI,EAAL,CAAN,GAAkB,CAAxB,EAA2BC,EAAA,GAAM,KAAKJ,EAAA,GAAKI,EAAL,CAAN,GAAkB,CAAlD,CAAjB;MAEAssF,YAAA,CAAa9xF,IAAb,CAAkB,CAAC,CAACiF,EAAD,EAAKC,EAAL,CAAD,EAAW6sF,QAAX,EAAqBC,QAArB,EAA+B,CAACzsF,EAAD,EAAKC,EAAL,CAA/B,CAAlB;MAEA,CAACP,EAAD,EAAKC,EAAL,IAAW,CAACK,EAAD,EAAKC,EAAL,CAAX;IAdoC;IAiBtC,MAAM,CAACL,EAAD,EAAKC,EAAL,IAAWszC,IAAA,CAAKh5C,CAAL,CAAjB;IACA,MAAM,CAAC2F,EAAD,EAAKC,EAAL,IAAWozC,IAAA,CAAKh5C,CAAA,GAAI,CAAT,CAAjB;IAGA,MAAMqyF,QAAA,GAAW,CAAC9sF,EAAA,GAAM,KAAKE,EAAA,GAAKF,EAAL,CAAN,GAAkB,CAAxB,EAA2BC,EAAA,GAAM,KAAKE,EAAA,GAAKF,EAAL,CAAN,GAAkB,CAAlD,CAAjB;IACA,MAAM8sF,QAAA,GAAW,CAAC3sF,EAAA,GAAM,KAAKF,EAAA,GAAKE,EAAL,CAAN,GAAkB,CAAxB,EAA2BC,EAAA,GAAM,KAAKF,EAAA,GAAKE,EAAL,CAAN,GAAkB,CAAlD,CAAjB;IAEAwsF,YAAA,CAAa9xF,IAAb,CAAkB,CAAC,CAACiF,EAAD,EAAKC,EAAL,CAAD,EAAW6sF,QAAX,EAAqBC,QAArB,EAA+B,CAAC3sF,EAAD,EAAKC,EAAL,CAA/B,CAAlB;IACA,OAAOwsF,YAAP;EAlCsB;EAwCxB,CAAA3B,OAAA,EAAU;IACR,IAAI,KAAKjiE,OAAL,EAAJ,EAAoB;MAClB,KAAK,CAAA+jE,eAAL;MACA;IAFkB;IAIpB,KAAK,CAAAvB,SAAL;IAEA,MAAM;MAAEjrE,MAAF;MAAU+R;IAAV,IAAkB,IAAxB;IACAA,GAAA,CAAImd,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,EAA6B,CAA7B,EAAgC,CAAhC;IACAnd,GAAA,CAAI8sB,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoB7+B,MAAA,CAAOhB,KAA3B,EAAkCgB,MAAA,CAAOf,MAAzC;IACA,KAAK,CAAAutE,eAAL;IAEA,WAAWv5C,IAAX,IAAmB,KAAKg3C,YAAxB,EAAsC;MACpCl4D,GAAA,CAAItgC,MAAJ,CAAWwhD,IAAX;IADoC;EAZ9B;EAoBVvqB,OAAA,EAAS;IACP,IAAI,KAAK,CAAAmI,cAAT,EAA0B;MACxB;IADwB;IAI1B,MAAMnI,MAAN;IAEA,KAAKpE,SAAL,GAAiB,KAAjB;IACA,KAAKuL,eAAL;IAGA,KAAK7H,eAAL;IAEA,KAAK,CAAA6I,cAAL,GAAuB,IAAvB;IACA,KAAK5L,GAAL,CAASsC,SAAT,CAAmBhT,GAAnB,CAAuB,UAAvB;IAEA,KAAK,CAAAk2E,YAAL,CAAqC,IAArC;IACA,KAAKn6D,aAAL;IAEA,KAAK1M,MAAL,CAAY0nD,oBAAZ,CAAsD,IAAtD;IAIA,KAAKriD,SAAL;IACA,KAAKhE,GAAL,CAAS0L,KAAT,CAAe;MACbg+C,aAAA,EAAe;IADF,CAAf;EAxBO;EA8BTzqD,QAAQjM,KAAR,EAAe;IACb,IAAI,CAAC,KAAKyM,mBAAV,EAA+B;MAC7B;IAD6B;IAG/B,MAAMR,OAAN,CAAcjM,KAAd;IACA,KAAK2X,cAAL;EALa;EAYf05D,kBAAkBrxE,KAAlB,EAAyB;IACvB,IAAIA,KAAA,CAAMmT,MAAN,KAAiB,CAAjB,IAAsB,CAAC,KAAK7G,YAAL,EAAvB,IAA8C,KAAK,CAAAsM,cAAvD,EAAwE;MACtE;IADsE;IAMxE,KAAK7I,eAAL;IAEA/P,KAAA,CAAMqQ,cAAN;IAEA,IAAIrQ,KAAA,CAAMjxB,IAAN,KAAe,OAAnB,EAA4B;MAC1B,KAAKi+B,GAAL,CAAS0L,KAAT;IAD0B;IAI5B,KAAK,CAAAu6D,YAAL,CAAmBjzE,KAAA,CAAM5G,OAAzB,EAAkC4G,KAAA,CAAM3G,OAAxC;EAfuB;EAsBzBw3E,kBAAkB7wE,KAAlB,EAAyB;IACvBA,KAAA,CAAMqQ,cAAN;EADuB;EAQzB0gE,kBAAkB/wE,KAAlB,EAAyB;IACvBA,KAAA,CAAMqQ,cAAN;IACA,KAAK,CAAA8iE,IAAL,CAAWnzE,KAAA,CAAM5G,OAAjB,EAA0B4G,KAAA,CAAM3G,OAAhC;EAFuB;EASzB83E,gBAAgBnxE,KAAhB,EAAuB;IACrBA,KAAA,CAAMqQ,cAAN;IACA,KAAK,CAAA9G,UAAL,CAAiBvJ,KAAjB;EAFqB;EASvBixE,mBAAmBjxE,KAAnB,EAA0B;IACxB,KAAK,CAAAuJ,UAAL,CAAiBvJ,KAAjB;EADwB;EAQ1B,CAAAuJ,WAAYvJ,KAAZ,EAAmB;IACjB,KAAK+H,MAAL,CAAY3H,mBAAZ,CACE,cADF,EAEE,KAAK,CAAA4wE,uBAFP;IAIA,KAAKjpE,MAAL,CAAY3H,mBAAZ,CACE,aADF,EAEE,KAAK,CAAA0wE,sBAFP;IAIA,KAAK/oE,MAAL,CAAY3H,mBAAZ,CAAgC,WAAhC,EAA6C,KAAK,CAAA8wE,oBAAlD;IACA,KAAKnpE,MAAL,CAAY5H,gBAAZ,CAA6B,aAA7B,EAA4C,KAAK,CAAAixE,sBAAjD;IAIAtyE,UAAA,CAAW,MAAM;MACf,KAAKiJ,MAAL,CAAY3H,mBAAZ,CACE,aADF,EAEE,KAAK,CAAAwwE,sBAFP;IADe,CAAjB,EAKG,EALH;IAOA,KAAK,CAAA6C,WAAL,CAAkBzzE,KAAA,CAAM5G,OAAxB,EAAiC4G,KAAA,CAAM3G,OAAvC;IAEA,KAAKqV,sBAAL;IAIA,KAAKmB,eAAL;EA3BiB;EAiCnB,CAAAgmB,aAAA,EAAgB;IACd,KAAK9tB,MAAL,GAAcjY,QAAA,CAASgjB,aAAT,CAAuB,QAAvB,CAAd;IACA,KAAK/K,MAAL,CAAYhB,KAAZ,GAAoB,KAAKgB,MAAL,CAAYf,MAAZ,GAAqB,CAAzC;IACA,KAAKe,MAAL,CAAYuO,SAAZ,GAAwB,iBAAxB;IAEA68C,SAAA,CAAUwC,YAAV,CACGpqE,GADH,CACO,8BADP,EAEGkG,IAFH,CAEQlT,GAAA,IAAO,KAAKwpB,MAAL,EAAasO,YAAb,CAA0B,YAA1B,EAAwC93B,GAAxC,CAFf;IAGA,KAAKyuB,GAAL,CAASgG,MAAT,CAAgB,KAAKjL,MAArB;IACA,KAAK+R,GAAL,GAAW,KAAK/R,MAAL,CAAYgS,UAAZ,CAAuB,IAAvB,CAAX;EATc;EAehB,CAAA44D,eAAA,EAAkB;IAChB,KAAK,CAAAlB,QAAL,GAAiB,IAAI+C,cAAJ,CAAmB5pE,OAAA,IAAW;MAC7C,MAAM9jB,IAAA,GAAO8jB,OAAA,CAAQ,CAAR,EAAW6pE,WAAxB;MACA,IAAI3tF,IAAA,CAAKigB,KAAL,IAAcjgB,IAAA,CAAKkgB,MAAvB,EAA+B;QAC7B,KAAK8rE,aAAL,CAAmBhsF,IAAA,CAAKigB,KAAxB,EAA+BjgB,IAAA,CAAKkgB,MAApC;MAD6B;IAFc,CAA9B,CAAjB;IAMA,KAAK,CAAAyqE,QAAL,CAAeiD,OAAf,CAAuB,KAAK1nE,GAA5B;EAPgB;EAWlB,IAAIoL,WAAJA,CAAA,EAAkB;IAChB,OAAO,CAAC,KAAK5H,OAAL,EAAD,IAAmB,KAAK,CAAAoI,cAA/B;EADgB;EAKlB3e,OAAA,EAAS;IACP,IAAI,KAAK+S,GAAT,EAAc;MACZ,OAAO,KAAKA,GAAZ;IADY;IAId,IAAIuqD,KAAJ,EAAWC,KAAX;IACA,IAAI,KAAKzwD,KAAT,EAAgB;MACdwwD,KAAA,GAAQ,KAAKxpD,CAAb;MACAypD,KAAA,GAAQ,KAAKxpD,CAAb;IAFc;IAKhB,MAAM/T,MAAN;IAEAk5D,SAAA,CAAUwC,YAAV,CACGpqE,GADH,CACO,wBADP,EAEGkG,IAFH,CAEQlT,GAAA,IAAO,KAAKyuB,GAAL,EAAUqJ,YAAV,CAAuB,YAAvB,EAAqC93B,GAArC,CAFf;IAIA,MAAM,CAACwvB,CAAD,EAAIC,CAAJ,EAAOsH,CAAP,EAAUC,CAAV,IAAe,KAAK,CAAAw9D,cAAL,EAArB;IACA,KAAKriE,KAAL,CAAW3C,CAAX,EAAcC,CAAd,EAAiB,CAAjB,EAAoB,CAApB;IACA,KAAKoE,OAAL,CAAakD,CAAb,EAAgBC,CAAhB;IAEA,KAAK,CAAAsgB,YAAL;IAEA,IAAI,KAAK9uB,KAAT,EAAgB;MAEd,MAAM,CAACqK,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;MACA,KAAKmL,cAAL,CAAoB,KAAKlS,KAAL,GAAaqK,WAAjC,EAA8C,KAAKpK,MAAL,GAAcqK,YAA5D;MACA,KAAKX,KAAL,CACE6mD,KAAA,GAAQnmD,WADV,EAEEomD,KAAA,GAAQnmD,YAFV,EAGE,KAAKtK,KAAL,GAAaqK,WAHf,EAIE,KAAKpK,MAAL,GAAcqK,YAJhB;MAMA,KAAK,CAAAmgE,mBAAL,GAA4B,IAA5B;MACA,KAAK,CAAAoB,aAAL;MACA,KAAKxgE,OAAL,CAAa,KAAKrL,KAAL,GAAaqK,WAA1B,EAAuC,KAAKpK,MAAL,GAAcqK,YAArD;MACA,KAAK,CAAAohE,MAAL;MACA,KAAKzlE,GAAL,CAASsC,SAAT,CAAmBhT,GAAnB,CAAuB,UAAvB;IAdc,CAAhB,MAeO;MACL,KAAK0Q,GAAL,CAASsC,SAAT,CAAmBhT,GAAnB,CAAuB,SAAvB;MACA,KAAKqb,cAAL;IAFK;IAKP,KAAK,CAAAg7D,cAAL;IAEA,OAAO,KAAK3lE,GAAZ;EA7CO;EAgDT,CAAA4lE,cAAA,EAAiB;IACf,IAAI,CAAC,KAAK,CAAApB,mBAAV,EAAgC;MAC9B;IAD8B;IAGhC,MAAM,CAACpgE,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;IACA,KAAK/F,MAAL,CAAYhB,KAAZ,GAAoB7kB,IAAA,CAAKkgD,IAAL,CAAU,KAAKr7B,KAAL,GAAaqK,WAAvB,CAApB;IACA,KAAKrJ,MAAL,CAAYf,MAAZ,GAAqB9kB,IAAA,CAAKkgD,IAAL,CAAU,KAAKp7B,MAAL,GAAcqK,YAAxB,CAArB;IACA,KAAK,CAAAkjE,eAAL;EAPe;EAiBjBzB,cAAc/rE,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,MAAM2tE,YAAA,GAAezyF,IAAA,CAAKiwB,KAAL,CAAWpL,KAAX,CAArB;IACA,MAAM6tE,aAAA,GAAgB1yF,IAAA,CAAKiwB,KAAL,CAAWnL,MAAX,CAAtB;IACA,IACE,KAAK,CAAA0qE,SAAL,KAAoBiD,YAApB,IACA,KAAK,CAAAhD,UAAL,KAAqBiD,aAFvB,EAGE;MACA;IADA;IAIF,KAAK,CAAAlD,SAAL,GAAkBiD,YAAlB;IACA,KAAK,CAAAhD,UAAL,GAAmBiD,aAAnB;IAEA,KAAK7sE,MAAL,CAAY+H,KAAZ,CAAkBqX,UAAlB,GAA+B,QAA/B;IAEA,MAAM,CAAC/V,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;IACA,KAAK/G,KAAL,GAAaA,KAAA,GAAQqK,WAArB;IACA,KAAKpK,MAAL,GAAcA,MAAA,GAASqK,YAAvB;IACA,KAAK3B,iBAAL;IAEA,IAAI,KAAK,CAAAkJ,cAAT,EAA0B;MACxB,KAAK,CAAAi8D,cAAL,CAAqB9tE,KAArB,EAA4BC,MAA5B;IADwB;IAI1B,KAAK,CAAA4rE,aAAL;IACA,KAAK,CAAAH,MAAL;IAEA,KAAK1qE,MAAL,CAAY+H,KAAZ,CAAkBqX,UAAlB,GAA+B,SAA/B;IAIA,KAAK9U,OAAL;EA/B2B;EAkC7B,CAAAwiE,eAAgB9tE,KAAhB,EAAuBC,MAAvB,EAA+B;IAC7B,MAAMmxD,OAAA,GAAU,KAAK,CAAA2c,UAAL,EAAhB;IACA,MAAMC,YAAA,GAAgB,CAAAhuE,KAAA,GAAQoxD,OAAR,IAAmB,KAAK,CAAAwY,SAA9C;IACA,MAAMqE,YAAA,GAAgB,CAAAhuE,MAAA,GAASmxD,OAAT,IAAoB,KAAK,CAAAuY,UAA/C;IACA,KAAK1e,WAAL,GAAmB9vE,IAAA,CAAKC,GAAL,CAAS4yF,YAAT,EAAuBC,YAAvB,CAAnB;EAJ6B;EAU/B,CAAAT,gBAAA,EAAmB;IACjB,MAAMpc,OAAA,GAAU,KAAK,CAAA2c,UAAL,KAAqB,CAArC;IACA,KAAKh7D,GAAL,CAASmd,YAAT,CACE,KAAK+6B,WADP,EAEE,CAFF,EAGE,CAHF,EAIE,KAAKA,WAJP,EAKE,KAAKmgB,YAAL,GAAoB,KAAKngB,WAAzB,GAAuCmG,OALzC,EAME,KAAKia,YAAL,GAAoB,KAAKpgB,WAAzB,GAAuCmG,OANzC;EAFiB;EAiBnB,OAAO,CAAA8c,WAAPA,CAAoBvB,MAApB,EAA4B;IAC1B,MAAMJ,MAAA,GAAS,IAAIr4C,MAAJ,EAAf;IACA,KAAK,IAAIj5C,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKwqF,MAAA,CAAOj0F,MAAvB,EAA+BuC,CAAA,GAAIkH,EAAxC,EAA4ClH,CAAA,EAA5C,EAAiD;MAC/C,MAAM,CAACwE,KAAD,EAAQ6tF,QAAR,EAAkBC,QAAlB,EAA4B7tF,MAA5B,IAAsCitF,MAAA,CAAO1xF,CAAP,CAA5C;MACA,IAAIA,CAAA,KAAM,CAAV,EAAa;QACXsxF,MAAA,CAAOr6F,MAAP,CAAc,GAAGuN,KAAjB;MADW;MAGb8sF,MAAA,CAAO97C,aAAP,CACE68C,QAAA,CAAS,CAAT,CADF,EAEEA,QAAA,CAAS,CAAT,CAFF,EAGEC,QAAA,CAAS,CAAT,CAHF,EAIEA,QAAA,CAAS,CAAT,CAJF,EAKE7tF,MAAA,CAAO,CAAP,CALF,EAMEA,MAAA,CAAO,CAAP,CANF;IAL+C;IAcjD,OAAO6sF,MAAP;EAhB0B;EAmB5B,OAAO,CAAA4B,gBAAPA,CAAyB56C,MAAzB,EAAiCxzC,IAAjC,EAAuCqS,QAAvC,EAAiD;IAC/C,MAAM,CAAC8kE,GAAD,EAAMC,GAAN,EAAWH,GAAX,EAAgBC,GAAhB,IAAuBl3E,IAA7B;IAEA,QAAQqS,QAAR;MACE,KAAK,CAAL;QACE,KAAK,IAAInX,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKoxC,MAAA,CAAO76C,MAAvB,EAA+BuC,CAAA,GAAIkH,EAAxC,EAA4ClH,CAAA,IAAK,CAAjD,EAAoD;UAClDs4C,MAAA,CAAOt4C,CAAP,KAAai8E,GAAb;UACA3jC,MAAA,CAAOt4C,CAAA,GAAI,CAAX,IAAgBg8E,GAAA,GAAM1jC,MAAA,CAAOt4C,CAAA,GAAI,CAAX,CAAtB;QAFkD;QAIpD;MACF,KAAK,EAAL;QACE,KAAK,IAAIA,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKoxC,MAAA,CAAO76C,MAAvB,EAA+BuC,CAAA,GAAIkH,EAAxC,EAA4ClH,CAAA,IAAK,CAAjD,EAAoD;UAClD,MAAM+rB,CAAA,GAAIusB,MAAA,CAAOt4C,CAAP,CAAV;UACAs4C,MAAA,CAAOt4C,CAAP,IAAYs4C,MAAA,CAAOt4C,CAAA,GAAI,CAAX,IAAgBi8E,GAA5B;UACA3jC,MAAA,CAAOt4C,CAAA,GAAI,CAAX,IAAgB+rB,CAAA,GAAImwD,GAApB;QAHkD;QAKpD;MACF,KAAK,GAAL;QACE,KAAK,IAAIl8E,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKoxC,MAAA,CAAO76C,MAAvB,EAA+BuC,CAAA,GAAIkH,EAAxC,EAA4ClH,CAAA,IAAK,CAAjD,EAAoD;UAClDs4C,MAAA,CAAOt4C,CAAP,IAAY+7E,GAAA,GAAMzjC,MAAA,CAAOt4C,CAAP,CAAlB;UACAs4C,MAAA,CAAOt4C,CAAA,GAAI,CAAX,KAAiBk8E,GAAjB;QAFkD;QAIpD;MACF,KAAK,GAAL;QACE,KAAK,IAAIl8E,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKoxC,MAAA,CAAO76C,MAAvB,EAA+BuC,CAAA,GAAIkH,EAAxC,EAA4ClH,CAAA,IAAK,CAAjD,EAAoD;UAClD,MAAM+rB,CAAA,GAAIusB,MAAA,CAAOt4C,CAAP,CAAV;UACAs4C,MAAA,CAAOt4C,CAAP,IAAY+7E,GAAA,GAAMzjC,MAAA,CAAOt4C,CAAA,GAAI,CAAX,CAAlB;UACAs4C,MAAA,CAAOt4C,CAAA,GAAI,CAAX,IAAgBg8E,GAAA,GAAMjwD,CAAtB;QAHkD;QAKpD;MACF;QACE,MAAM,IAAInvB,KAAJ,CAAU,kBAAV,CAAN;IA5BJ;IA8BA,OAAO07C,MAAP;EAjC+C;EAoCjD,OAAO,CAAA66C,kBAAPA,CAA2B76C,MAA3B,EAAmCxzC,IAAnC,EAAyCqS,QAAzC,EAAmD;IACjD,MAAM,CAAC8kE,GAAD,EAAMC,GAAN,EAAWH,GAAX,EAAgBC,GAAhB,IAAuBl3E,IAA7B;IAEA,QAAQqS,QAAR;MACE,KAAK,CAAL;QACE,KAAK,IAAInX,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKoxC,MAAA,CAAO76C,MAAvB,EAA+BuC,CAAA,GAAIkH,EAAxC,EAA4ClH,CAAA,IAAK,CAAjD,EAAoD;UAClDs4C,MAAA,CAAOt4C,CAAP,KAAai8E,GAAb;UACA3jC,MAAA,CAAOt4C,CAAA,GAAI,CAAX,IAAgBg8E,GAAA,GAAM1jC,MAAA,CAAOt4C,CAAA,GAAI,CAAX,CAAtB;QAFkD;QAIpD;MACF,KAAK,EAAL;QACE,KAAK,IAAIA,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKoxC,MAAA,CAAO76C,MAAvB,EAA+BuC,CAAA,GAAIkH,EAAxC,EAA4ClH,CAAA,IAAK,CAAjD,EAAoD;UAClD,MAAM+rB,CAAA,GAAIusB,MAAA,CAAOt4C,CAAP,CAAV;UACAs4C,MAAA,CAAOt4C,CAAP,IAAYs4C,MAAA,CAAOt4C,CAAA,GAAI,CAAX,IAAgBk8E,GAA5B;UACA5jC,MAAA,CAAOt4C,CAAA,GAAI,CAAX,IAAgB+rB,CAAA,GAAIkwD,GAApB;QAHkD;QAKpD;MACF,KAAK,GAAL;QACE,KAAK,IAAIj8E,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKoxC,MAAA,CAAO76C,MAAvB,EAA+BuC,CAAA,GAAIkH,EAAxC,EAA4ClH,CAAA,IAAK,CAAjD,EAAoD;UAClDs4C,MAAA,CAAOt4C,CAAP,IAAY+7E,GAAA,GAAMzjC,MAAA,CAAOt4C,CAAP,CAAlB;UACAs4C,MAAA,CAAOt4C,CAAA,GAAI,CAAX,KAAiBk8E,GAAjB;QAFkD;QAIpD;MACF,KAAK,GAAL;QACE,KAAK,IAAIl8E,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKoxC,MAAA,CAAO76C,MAAvB,EAA+BuC,CAAA,GAAIkH,EAAxC,EAA4ClH,CAAA,IAAK,CAAjD,EAAoD;UAClD,MAAM+rB,CAAA,GAAIusB,MAAA,CAAOt4C,CAAP,CAAV;UACAs4C,MAAA,CAAOt4C,CAAP,IAAYg8E,GAAA,GAAM1jC,MAAA,CAAOt4C,CAAA,GAAI,CAAX,CAAlB;UACAs4C,MAAA,CAAOt4C,CAAA,GAAI,CAAX,IAAgB+7E,GAAA,GAAMhwD,CAAtB;QAHkD;QAKpD;MACF;QACE,MAAM,IAAInvB,KAAJ,CAAU,kBAAV,CAAN;IA5BJ;IA8BA,OAAO07C,MAAP;EAjCiD;EA2CnD,CAAA86C,eAAgBrhD,CAAhB,EAAmBpjB,EAAnB,EAAuBC,EAAvB,EAA2B9pB,IAA3B,EAAiC;IAC/B,MAAMwiD,KAAA,GAAQ,EAAd;IACA,MAAM6uB,OAAA,GAAU,KAAK4Z,SAAL,GAAiB,CAAjC;IACA,MAAMx6D,MAAA,GAASwc,CAAA,GAAIpjB,EAAJ,GAASwnD,OAAxB;IACA,MAAM3gD,MAAA,GAASuc,CAAA,GAAInjB,EAAJ,GAASunD,OAAxB;IACA,WAAWub,MAAX,IAAqB,KAAKpqC,KAA1B,EAAiC;MAC/B,MAAM/lD,MAAA,GAAS,EAAf;MACA,MAAM+2C,MAAA,GAAS,EAAf;MACA,KAAK,IAAI/xC,CAAA,GAAI,CAAR,EAAW2uD,EAAA,GAAKw8B,MAAA,CAAOj0F,MAAvB,EAA+B8I,CAAA,GAAI2uD,EAAxC,EAA4C3uD,CAAA,EAA5C,EAAiD;QAC/C,MAAM,CAAC/B,KAAD,EAAQ6tF,QAAR,EAAkBC,QAAlB,EAA4B7tF,MAA5B,IAAsCitF,MAAA,CAAOnrF,CAAP,CAA5C;QACA,MAAM8sF,GAAA,GAAMthD,CAAA,GAAIvtC,KAAA,CAAM,CAAN,CAAJ,GAAe+wB,MAA3B;QACA,MAAM+9D,GAAA,GAAMvhD,CAAA,GAAIvtC,KAAA,CAAM,CAAN,CAAJ,GAAegxB,MAA3B;QACA,MAAM+9D,GAAA,GAAMxhD,CAAA,GAAIsgD,QAAA,CAAS,CAAT,CAAJ,GAAkB98D,MAA9B;QACA,MAAMi+D,GAAA,GAAMzhD,CAAA,GAAIsgD,QAAA,CAAS,CAAT,CAAJ,GAAkB78D,MAA9B;QACA,MAAMi+D,GAAA,GAAM1hD,CAAA,GAAIugD,QAAA,CAAS,CAAT,CAAJ,GAAkB/8D,MAA9B;QACA,MAAMm+D,GAAA,GAAM3hD,CAAA,GAAIugD,QAAA,CAAS,CAAT,CAAJ,GAAkB98D,MAA9B;QACA,MAAMm+D,GAAA,GAAM5hD,CAAA,GAAIttC,MAAA,CAAO,CAAP,CAAJ,GAAgB8wB,MAA5B;QACA,MAAMq+D,GAAA,GAAM7hD,CAAA,GAAIttC,MAAA,CAAO,CAAP,CAAJ,GAAgB+wB,MAA5B;QAEA,IAAIjvB,CAAA,KAAM,CAAV,EAAa;UACXhF,MAAA,CAAOjB,IAAP,CAAY+yF,GAAZ,EAAiBC,GAAjB;UACAh7C,MAAA,CAAOh4C,IAAP,CAAY+yF,GAAZ,EAAiBC,GAAjB;QAFW;QAIb/xF,MAAA,CAAOjB,IAAP,CAAYizF,GAAZ,EAAiBC,GAAjB,EAAsBC,GAAtB,EAA2BC,GAA3B,EAAgCC,GAAhC,EAAqCC,GAArC;QACAt7C,MAAA,CAAOh4C,IAAP,CAAYizF,GAAZ,EAAiBC,GAAjB;QACA,IAAIjtF,CAAA,KAAM2uD,EAAA,GAAK,CAAf,EAAkB;UAChB5c,MAAA,CAAOh4C,IAAP,CAAYqzF,GAAZ,EAAiBC,GAAjB;QADgB;MAjB6B;MAqBjDtsC,KAAA,CAAMhnD,IAAN,CAAW;QACToxF,MAAA,EAAQvgB,SAAA,CAAU,CAAA+hB,gBAAV,CAA4B3xF,MAA5B,EAAoCuD,IAApC,EAA0C,KAAKqS,QAA/C,CADC;QAETmhC,MAAA,EAAQ64B,SAAA,CAAU,CAAA+hB,gBAAV,CAA4B56C,MAA5B,EAAoCxzC,IAApC,EAA0C,KAAKqS,QAA/C;MAFC,CAAX;IAxB+B;IA8BjC,OAAOmwC,KAAP;EAnC+B;EA0CjC,CAAAusC,QAAA,EAAW;IACT,IAAI/B,IAAA,GAAO/1C,QAAX;IACA,IAAIg2C,IAAA,GAAO,CAACh2C,QAAZ;IACA,IAAIi2C,IAAA,GAAOj2C,QAAX;IACA,IAAIk2C,IAAA,GAAO,CAACl2C,QAAZ;IAEA,WAAW/C,IAAX,IAAmB,KAAKsO,KAAxB,EAA+B;MAC7B,WAAW,CAAC9iD,KAAD,EAAQ6tF,QAAR,EAAkBC,QAAlB,EAA4B7tF,MAA5B,CAAX,IAAkDu0C,IAAlD,EAAwD;QACtD,MAAM+S,IAAA,GAAOppD,UAAA,CAAK2C,iBAAL,CACX,GAAGd,KADQ,EAEX,GAAG6tF,QAFQ,EAGX,GAAGC,QAHQ,EAIX,GAAG7tF,MAJQ,CAAb;QAMAqtF,IAAA,GAAO5xF,IAAA,CAAKC,GAAL,CAAS2xF,IAAT,EAAe/lC,IAAA,CAAK,CAAL,CAAf,CAAP;QACAimC,IAAA,GAAO9xF,IAAA,CAAKC,GAAL,CAAS6xF,IAAT,EAAejmC,IAAA,CAAK,CAAL,CAAf,CAAP;QACAgmC,IAAA,GAAO7xF,IAAA,CAAKgE,GAAL,CAAS6tF,IAAT,EAAehmC,IAAA,CAAK,CAAL,CAAf,CAAP;QACAkmC,IAAA,GAAO/xF,IAAA,CAAKgE,GAAL,CAAS+tF,IAAT,EAAelmC,IAAA,CAAK,CAAL,CAAf,CAAP;MAVsD;IAD3B;IAe/B,OAAO,CAAC+lC,IAAD,EAAOE,IAAP,EAAaD,IAAb,EAAmBE,IAAnB,CAAP;EArBS;EA+BX,CAAAa,WAAA,EAAc;IACZ,OAAO,KAAK,CAAAl8D,cAAL,GACH12B,IAAA,CAAKkgD,IAAL,CAAU,KAAK2vC,SAAL,GAAiB,KAAKhgE,WAAhC,CADG,GAEH,CAFJ;EADY;EAWd,CAAAygE,aAAcsD,SAAA,GAAY,KAA1B,EAAiC;IAC/B,IAAI,KAAKtlE,OAAL,EAAJ,EAAoB;MAClB;IADkB;IAIpB,IAAI,CAAC,KAAK,CAAAoI,cAAV,EAA2B;MACzB,KAAK,CAAA65D,MAAL;MACA;IAFyB;IAK3B,MAAM1kC,IAAA,GAAO,KAAK,CAAA8nC,OAAL,EAAb;IACA,MAAM1d,OAAA,GAAU,KAAK,CAAA2c,UAAL,EAAhB;IACA,KAAK,CAAAnE,SAAL,GAAkBzuF,IAAA,CAAKgE,GAAL,CAASukB,wBAAA,CAAiBmK,QAA1B,EAAoCm5B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAA9C,CAAlB;IACA,KAAK,CAAA2iC,UAAL,GAAmBxuF,IAAA,CAAKgE,GAAL,CAASukB,wBAAA,CAAiBmK,QAA1B,EAAoCm5B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAA9C,CAAnB;IAEA,MAAMhnC,KAAA,GAAQ7kB,IAAA,CAAKkgD,IAAL,CAAU+1B,OAAA,GAAU,KAAK,CAAAwY,SAAL,GAAkB,KAAK3e,WAA3C,CAAd;IACA,MAAMhrD,MAAA,GAAS9kB,IAAA,CAAKkgD,IAAL,CAAU+1B,OAAA,GAAU,KAAK,CAAAuY,UAAL,GAAmB,KAAK1e,WAA5C,CAAf;IAEA,MAAM,CAAC5gD,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;IACA,KAAK/G,KAAL,GAAaA,KAAA,GAAQqK,WAArB;IACA,KAAKpK,MAAL,GAAcA,MAAA,GAASqK,YAAvB;IAEA,KAAK4H,cAAL,CAAoBlS,KAApB,EAA2BC,MAA3B;IAEA,MAAM+uE,gBAAA,GAAmB,KAAK5D,YAA9B;IACA,MAAM6D,gBAAA,GAAmB,KAAK5D,YAA9B;IAEA,KAAKD,YAAL,GAAoB,CAACpkC,IAAA,CAAK,CAAL,CAArB;IACA,KAAKqkC,YAAL,GAAoB,CAACrkC,IAAA,CAAK,CAAL,CAArB;IACA,KAAK,CAAA6kC,aAAL;IACA,KAAK,CAAAH,MAAL;IAEA,KAAK,CAAAf,SAAL,GAAkB3qE,KAAlB;IACA,KAAK,CAAA4qE,UAAL,GAAmB3qE,MAAnB;IAEA,KAAKoL,OAAL,CAAarL,KAAb,EAAoBC,MAApB;IACA,MAAMivE,eAAA,GAAkBH,SAAA,GAAY3d,OAAA,GAAU,KAAKnG,WAAf,GAA6B,CAAzC,GAA6C,CAArE;IACA,KAAKlhD,SAAL,CACEilE,gBAAA,GAAmB,KAAK5D,YAAxB,GAAuC8D,eADzC,EAEED,gBAAA,GAAmB,KAAK5D,YAAxB,GAAuC6D,eAFzC;EArC+B;EA4CjC,OAAO/9D,WAAPA,CAAmBptB,IAAnB,EAAyB6gB,MAAzB,EAAiCsB,SAAjC,EAA4C;IAC1C,IAAIniB,IAAA,YAAgBgvE,sCAApB,EAA0C;MACxC,OAAO,IAAP;IADwC;IAG1C,MAAMxrD,MAAA,GAAS,MAAM4J,WAAN,CAAkBptB,IAAlB,EAAwB6gB,MAAxB,EAAgCsB,SAAhC,CAAf;IAEAqB,MAAA,CAAOyjE,SAAP,GAAmBjnF,IAAA,CAAKinF,SAAxB;IACAzjE,MAAA,CAAOsP,KAAP,GAAej5B,UAAA,CAAKC,YAAL,CAAkB,GAAGkG,IAAA,CAAK8yB,KAA1B,CAAf;IACAtP,MAAA,CAAOgL,OAAP,GAAiBxuB,IAAA,CAAKwuB,OAAtB;IAEA,MAAM,CAAChM,SAAD,EAAYC,UAAZ,IAA0Be,MAAA,CAAOV,cAAvC;IACA,MAAM7G,KAAA,GAAQuH,MAAA,CAAOvH,KAAP,GAAeuG,SAA7B;IACA,MAAMtG,MAAA,GAASsH,MAAA,CAAOtH,MAAP,GAAgBuG,UAA/B;IACA,MAAMykD,WAAA,GAAc1jD,MAAA,CAAOyD,WAA3B;IACA,MAAMomD,OAAA,GAAUrtE,IAAA,CAAKinF,SAAL,GAAiB,CAAjC;IAEAzjE,MAAA,CAAO,CAAAsK,cAAP,GAAyB,IAAzB;IACAtK,MAAA,CAAO,CAAAojE,SAAP,GAAoBxvF,IAAA,CAAKiwB,KAAL,CAAWpL,KAAX,CAApB;IACAuH,MAAA,CAAO,CAAAqjE,UAAP,GAAqBzvF,IAAA,CAAKiwB,KAAL,CAAWnL,MAAX,CAArB;IAEA,MAAM;MAAEsiC,KAAF;MAASxiD,IAAT;MAAeqS;IAAf,IAA4BrO,IAAlC;IAEA,SAAS;MAAE4oF;IAAF,CAAT,IAAuBpqC,KAAvB,EAA8B;MAC5BoqC,MAAA,GAASvgB,SAAA,CAAU,CAAAgiB,kBAAV,CAA8BzB,MAA9B,EAAsC5sF,IAAtC,EAA4CqS,QAA5C,CAAT;MACA,MAAM6hC,IAAA,GAAO,EAAb;MACA1sB,MAAA,CAAOg7B,KAAP,CAAahnD,IAAb,CAAkB04C,IAAlB;MACA,IAAIE,EAAA,GAAK82B,WAAA,IAAe0hB,MAAA,CAAO,CAAP,IAAYvb,OAAZ,CAAxB;MACA,IAAItyE,EAAA,GAAKmsE,WAAA,IAAe0hB,MAAA,CAAO,CAAP,IAAYvb,OAAZ,CAAxB;MACA,KAAK,IAAIn2E,CAAA,GAAI,CAAR,EAAWkH,EAAA,GAAKwqF,MAAA,CAAOj0F,MAAvB,EAA+BuC,CAAA,GAAIkH,EAAxC,EAA4ClH,CAAA,IAAK,CAAjD,EAAoD;QAClD,MAAMqzF,GAAA,GAAMrjB,WAAA,IAAe0hB,MAAA,CAAO1xF,CAAP,IAAYm2E,OAAZ,CAA3B;QACA,MAAMmd,GAAA,GAAMtjB,WAAA,IAAe0hB,MAAA,CAAO1xF,CAAA,GAAI,CAAX,IAAgBm2E,OAAhB,CAA3B;QACA,MAAMod,GAAA,GAAMvjB,WAAA,IAAe0hB,MAAA,CAAO1xF,CAAA,GAAI,CAAX,IAAgBm2E,OAAhB,CAA3B;QACA,MAAMqd,GAAA,GAAMxjB,WAAA,IAAe0hB,MAAA,CAAO1xF,CAAA,GAAI,CAAX,IAAgBm2E,OAAhB,CAA3B;QACA,MAAMsd,GAAA,GAAMzjB,WAAA,IAAe0hB,MAAA,CAAO1xF,CAAA,GAAI,CAAX,IAAgBm2E,OAAhB,CAA3B;QACA,MAAMud,GAAA,GAAM1jB,WAAA,IAAe0hB,MAAA,CAAO1xF,CAAA,GAAI,CAAX,IAAgBm2E,OAAhB,CAA3B;QACAn9B,IAAA,CAAK14C,IAAL,CAAU,CACR,CAAC44C,EAAD,EAAKr1C,EAAL,CADQ,EAER,CAACwvF,GAAD,EAAMC,GAAN,CAFQ,EAGR,CAACC,GAAD,EAAMC,GAAN,CAHQ,EAIR,CAACC,GAAD,EAAMC,GAAN,CAJQ,CAAV;QAMAx6C,EAAA,GAAKu6C,GAAL;QACA5vF,EAAA,GAAK6vF,GAAL;MAdkD;MAgBpD,MAAMpC,MAAA,GAAS,KAAK,CAAA2B,WAAL,CAAkBj6C,IAAlB,CAAf;MACA1sB,MAAA,CAAO0jE,YAAP,CAAoB1vF,IAApB,CAAyBgxF,MAAzB;IAvB4B;IA0B9B,MAAMvlC,IAAA,GAAOz/B,MAAA,CAAO,CAAAunE,OAAP,EAAb;IACAvnE,MAAA,CAAO,CAAAqiE,SAAP,GAAoBzuF,IAAA,CAAKgE,GAAL,CAASukB,wBAAA,CAAiBmK,QAA1B,EAAoCm5B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAA9C,CAApB;IACAz/B,MAAA,CAAO,CAAAoiE,UAAP,GAAqBxuF,IAAA,CAAKgE,GAAL,CAASukB,wBAAA,CAAiBmK,QAA1B,EAAoCm5B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAA9C,CAArB;IACAz/B,MAAA,CAAO,CAAAumE,cAAP,CAAuB9tE,KAAvB,EAA8BC,MAA9B;IAEA,OAAOsH,MAAP;EArD0C;EAyD5ChD,UAAA,EAAY;IACV,IAAI,KAAKkF,OAAL,EAAJ,EAAoB;MAClB,OAAO,IAAP;IADkB;IAIpB,MAAM1pB,IAAA,GAAO,KAAKwwB,OAAL,CAAa,CAAb,EAAgB,CAAhB,CAAb;IACA,MAAMsG,KAAA,GAAQnT,wBAAA,CAAiBoC,aAAjB,CAA+B8Q,OAA/B,CAAuC,KAAK7D,GAAL,CAASsmB,WAAhD,CAAd;IAEA,OAAO;MACLu0B,cAAA,EAAgBrkF,0BAAA,CAAqBI,GADhC;MAELktC,KAFK;MAGLm0D,SAAA,EAAW,KAAKA,SAHX;MAILz4D,OAAA,EAAS,KAAKA,OAJT;MAKLgwB,KAAA,EAAO,KAAK,CAAA8rC,cAAL,CACL,KAAKpjB,WAAL,GAAmB,KAAKjgD,WADnB,EAEL,KAAKogE,YAFA,EAGL,KAAKC,YAHA,EAILtrF,IAJK,CALF;MAWLoR,SAAA,EAAW,KAAKA,SAXX;MAYLpR,IAZK;MAaLqS,QAAA,EAAU,KAAKA;IAbV,CAAP;EARU;AAhoC2B;AA3BzCnqB,iBAAA,GAAAmkF,SAAA;;;;;;;;;;;;ACeA,IAAApnE,KAAA,GAAAC,mBAAA;AACA,IAAA6d,OAAA,GAAA7d,mBAAA;AACA,IAAAE,cAAA,GAAAF,mBAAA;AACA,IAAA+oE,iBAAA,GAAA/oE,mBAAA;AAKA,MAAMonE,WAAN,SAA0B3oD,wBAA1B,CAA2C;EACzC,CAAA3D,MAAA,GAAU,IAAV;EAEA,CAAAovE,QAAA,GAAY,IAAZ;EAEA,CAAAC,aAAA,GAAiB,IAAjB;EAEA,CAAAC,SAAA,GAAa,IAAb;EAEA,CAAAC,UAAA,GAAc,IAAd;EAEA,CAAAtuE,MAAA,GAAU,IAAV;EAEA,CAAA0pE,QAAA,GAAY,IAAZ;EAEA,CAAA6E,eAAA,GAAmB,IAAnB;EAEA,CAAAh8D,KAAA,GAAS,KAAT;EAEA,CAAAi8D,uBAAA,GAA2B,KAA3B;EAEA,OAAOzrE,KAAP,GAAe,OAAf;EAEAlqB,YAAYwR,MAAZ,EAAoB;IAClB,MAAM;MAAE,GAAGA,MAAL;MAAazR,IAAA,EAAM;IAAnB,CAAN;IACA,KAAK,CAAAy1F,SAAL,GAAkBhkF,MAAA,CAAOgkF,SAAzB;IACA,KAAK,CAAAC,UAAL,GAAmBjkF,MAAA,CAAOikF,UAA1B;EAHkB;EAMpB,WAAWG,cAAXA,CAAA,EAA4B;IAG1B,MAAMryD,KAAA,GAAQ,CACZ,MADY,EAEZ,MAFY,EAGZ,KAHY,EAIZ,KAJY,EAKZ,MALY,EAMZ,KANY,EAOZ,SAPY,EAQZ,MARY,EASZ,QATY,CAAd;IAWA,OAAO,IAAArkC,YAAA,EACL,IADK,EAEL,gBAFK,EAGLqkC,KAAA,CAAMnhC,GAAN,CAAUjU,IAAA,IAAS,SAAQA,IAAT,EAAlB,CAHK,CAAP;EAd0B;EAqB5B,WAAW0nG,iBAAXA,CAAA,EAA+B;IAC7B,OAAO,IAAA32F,YAAA,EAAO,IAAP,EAAa,mBAAb,EAAkC,KAAK02F,cAAL,CAAoBj0F,IAApB,CAAyB,GAAzB,CAAlC,CAAP;EAD6B;EAK/B,OAAOysB,wBAAPA,CAAgC0nE,IAAhC,EAAsC;IACpC,OAAO,KAAKF,cAAL,CAAoBvyF,QAApB,CAA6ByyF,IAA7B,CAAP;EADoC;EAKtC,OAAOxnE,KAAPA,CAAaC,IAAb,EAAmBxD,MAAnB,EAA2B;IACzBA,MAAA,CAAO8oD,WAAP,CAAmBnkF,0BAAA,CAAqBG,KAAxC,EAA+C;MAC7C4lG,UAAA,EAAYlnE,IAAA,CAAKwnE,SAAL;IADiC,CAA/C;EADyB;EAM3B,CAAAC,iBAAkB9rF,IAAlB,EAAwB+rF,MAAA,GAAS,KAAjC,EAAwC;IACtC,IAAI,CAAC/rF,IAAL,EAAW;MACT,KAAK0f,MAAL;MACA;IAFS;IAIX,KAAK,CAAA1D,MAAL,GAAehc,IAAA,CAAKgc,MAApB;IACA,IAAI,CAAC+vE,MAAL,EAAa;MACX,KAAK,CAAAX,QAAL,GAAiBprF,IAAA,CAAKwL,EAAtB;MACA,KAAK,CAAAgkB,KAAL,GAAcxvB,IAAA,CAAKwvB,KAAnB;IAFW;IAIb,KAAK,CAAAub,YAAL;EAVsC;EAaxC,CAAAihD,cAAA,EAAiB;IACf,KAAK,CAAAX,aAAL,GAAsB,IAAtB;IACA,KAAK3pE,UAAL,CAAgBuY,aAAhB,CAA8B,KAA9B;IACA,IAAI,KAAK,CAAAhd,MAAT,EAAkB;MAChB,KAAKiF,GAAL,CAAS0L,KAAT;IADgB;EAHH;EAQjB,CAAAq+D,UAAA,EAAa;IACX,IAAI,KAAK,CAAAb,QAAT,EAAoB;MAClB,KAAK1pE,UAAL,CAAgBuY,aAAhB,CAA8B,IAA9B;MACA,KAAKvY,UAAL,CAAgB6Z,YAAhB,CACG3K,SADH,CACa,KAAK,CAAAw6D,QADlB,EAEGzkF,IAFH,CAEQ3G,IAAA,IAAQ,KAAK,CAAA8rF,gBAAL,CAAuB9rF,IAAvB,EAA4C,IAA5C,CAFhB,EAGG6b,OAHH,CAGW,MAAM,KAAK,CAAAmwE,aAAL,EAHjB;MAIA;IANkB;IASpB,IAAI,KAAK,CAAAV,SAAT,EAAqB;MACnB,MAAMp3F,GAAA,GAAM,KAAK,CAAAo3F,SAAjB;MACA,KAAK,CAAAA,SAAL,GAAkB,IAAlB;MACA,KAAK5pE,UAAL,CAAgBuY,aAAhB,CAA8B,IAA9B;MACA,KAAK,CAAAoxD,aAAL,GAAsB,KAAK3pE,UAAL,CAAgB6Z,YAAhB,CACnB5K,UADmB,CACRz8B,GADQ,EAEnByS,IAFmB,CAEd3G,IAAA,IAAQ,KAAK,CAAA8rF,gBAAL,CAAuB9rF,IAAvB,CAFM,EAGnB6b,OAHmB,CAGX,MAAM,KAAK,CAAAmwE,aAAL,EAHK,CAAtB;MAIA;IARmB;IAWrB,IAAI,KAAK,CAAAT,UAAT,EAAsB;MACpB,MAAM17D,IAAA,GAAO,KAAK,CAAA07D,UAAlB;MACA,KAAK,CAAAA,UAAL,GAAmB,IAAnB;MACA,KAAK7pE,UAAL,CAAgBuY,aAAhB,CAA8B,IAA9B;MACA,KAAK,CAAAoxD,aAAL,GAAsB,KAAK3pE,UAAL,CAAgB6Z,YAAhB,CACnB9K,WADmB,CACPZ,IADO,EAEnBlpB,IAFmB,CAEd3G,IAAA,IAAQ,KAAK,CAAA8rF,gBAAL,CAAuB9rF,IAAvB,CAFM,EAGnB6b,OAHmB,CAGX,MAAM,KAAK,CAAAmwE,aAAL,EAHK,CAAtB;MAIA;IARoB;IAWtB,MAAMxoD,KAAA,GAAQx+B,QAAA,CAASgjB,aAAT,CAAuB,OAAvB,CAAd;IAMAwb,KAAA,CAAMv/C,IAAN,GAAa,MAAb;IACAu/C,KAAA,CAAM0oD,MAAN,GAAe5jB,WAAA,CAAYqjB,iBAA3B;IACA,KAAK,CAAAN,aAAL,GAAsB,IAAIxrF,OAAJ,CAAYC,OAAA,IAAW;MAC3C0jC,KAAA,CAAMnuB,gBAAN,CAAuB,QAAvB,EAAiC,YAAY;QAC3C,IAAI,CAACmuB,KAAA,CAAM2oD,KAAP,IAAgB3oD,KAAA,CAAM2oD,KAAN,CAAYx3F,MAAZ,KAAuB,CAA3C,EAA8C;UAC5C,KAAK+qB,MAAL;QAD4C,CAA9C,MAEO;UACL,KAAKgC,UAAL,CAAgBuY,aAAhB,CAA8B,IAA9B;UACA,MAAMj6B,IAAA,GAAO,MAAM,KAAK0hB,UAAL,CAAgB6Z,YAAhB,CAA6B9K,WAA7B,CACjB+S,KAAA,CAAM2oD,KAAN,CAAY,CAAZ,CADiB,CAAnB;UAGA,KAAK,CAAAL,gBAAL,CAAuB9rF,IAAvB;QALK;QAUPF,OAAA;MAb2C,CAA7C;MAeA0jC,KAAA,CAAMnuB,gBAAN,CAAuB,QAAvB,EAAiC,MAAM;QACrC,KAAKqK,MAAL;QACA5f,OAAA;MAFqC,CAAvC;IAhB2C,CAAvB,EAoBnB+b,OApBmB,CAoBX,MAAM,KAAK,CAAAmwE,aAAL,EApBK,CAAtB;IAsBExoD,KAAA,CAAM4oD,KAAN;EA9DS;EAmEb1sE,OAAA,EAAS;IACP,IAAI,KAAK,CAAA0rE,QAAT,EAAoB;MAClB,KAAK,CAAApvE,MAAL,GAAe,IAAf;MACA,KAAK0F,UAAL,CAAgB6Z,YAAhB,CAA6BzK,QAA7B,CAAsC,KAAK,CAAAs6D,QAA3C;MACA,KAAK,CAAAnuE,MAAL,EAAcyC,MAAd;MACA,KAAK,CAAAzC,MAAL,GAAe,IAAf;MACA,KAAK,CAAA0pE,QAAL,EAAgBoB,UAAhB;MACA,KAAK,CAAApB,QAAL,GAAiB,IAAjB;IANkB;IAQpB,MAAMjnE,MAAN;EATO;EAaTuN,QAAA,EAAU;IACR,IAAI,CAAC,KAAKpM,MAAV,EAAkB;MAGhB,IAAI,KAAK,CAAAuqE,QAAT,EAAoB;QAClB,KAAK,CAAAa,SAAL;MADkB;MAGpB;IANgB;IAQlB,MAAMh/D,OAAN;IACA,IAAI,KAAK/K,GAAL,KAAa,IAAjB,EAAuB;MACrB;IADqB;IAIvB,IAAI,KAAK,CAAAkpE,QAAT,EAAoB;MAClB,KAAK,CAAAa,SAAL;IADkB;IAIpB,IAAI,CAAC,KAAK9oE,eAAV,EAA2B;MAGzB,KAAKtC,MAAL,CAAYrP,GAAZ,CAAgB,IAAhB;IAHyB;EAlBnB;EA0BVob,UAAA,EAAY;IACV,KAAKrI,YAAL,GAAoB,IAApB;IACA,KAAKrC,GAAL,CAAS0L,KAAT;EAFU;EAMZlI,QAAA,EAAU;IACR,OAAO,EACL,KAAK,CAAA2lE,aAAL,IACA,KAAK,CAAArvE,MADL,IAEA,KAAK,CAAAsvE,SAFL,IAGA,KAAK,CAAAC,UAHL,CADF;EADQ;EAUV,IAAIj+D,WAAJA,CAAA,EAAkB;IAChB,OAAO,IAAP;EADgB;EAKlBne,OAAA,EAAS;IACP,IAAI,KAAK+S,GAAT,EAAc;MACZ,OAAO,KAAKA,GAAZ;IADY;IAId,IAAIuqD,KAAJ,EAAWC,KAAX;IACA,IAAI,KAAKzwD,KAAT,EAAgB;MACdwwD,KAAA,GAAQ,KAAKxpD,CAAb;MACAypD,KAAA,GAAQ,KAAKxpD,CAAb;IAFc;IAKhB,MAAM/T,MAAN;IACA,KAAK+S,GAAL,CAASsmD,MAAT,GAAkB,IAAlB;IAEA,IAAI,KAAK,CAAAxsD,MAAT,EAAkB;MAChB,KAAK,CAAA+uB,YAAL;IADgB,CAAlB,MAEO;MACL,KAAK,CAAAkhD,SAAL;IADK;IAIP,IAAI,KAAKhwE,KAAT,EAAgB;MAEd,MAAM,CAACqK,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;MACA,KAAK4C,KAAL,CACE6mD,KAAA,GAAQnmD,WADV,EAEEomD,KAAA,GAAQnmD,YAFV,EAGE,KAAKtK,KAAL,GAAaqK,WAHf,EAIE,KAAKpK,MAAL,GAAcqK,YAJhB;IAHc;IAWhB,OAAO,KAAKrE,GAAZ;EA/BO;EAkCT,CAAA6oB,aAAA,EAAgB;IACd,MAAM;MAAE7oB;IAAF,IAAU,IAAhB;IACA,IAAI;MAAEjG,KAAF;MAASC;IAAT,IAAoB,KAAK,CAAAF,MAA7B;IACA,MAAM,CAACwG,SAAD,EAAYC,UAAZ,IAA0B,KAAKK,cAArC;IACA,MAAMupE,SAAA,GAAY,IAAlB;IACA,IAAI,KAAKpwE,KAAT,EAAgB;MACdA,KAAA,GAAQ,KAAKA,KAAL,GAAauG,SAArB;MACAtG,MAAA,GAAS,KAAKA,MAAL,GAAcuG,UAAvB;IAFc,CAAhB,MAGO,IACLxG,KAAA,GAAQowE,SAAA,GAAY7pE,SAApB,IACAtG,MAAA,GAASmwE,SAAA,GAAY5pE,UAFhB,EAGL;MAGA,MAAM6pE,MAAA,GAASl1F,IAAA,CAAKC,GAAL,CACZg1F,SAAA,GAAY7pE,SAAb,GAA0BvG,KADb,EAEZowE,SAAA,GAAY5pE,UAAb,GAA2BvG,MAFd,CAAf;MAIAD,KAAA,IAASqwE,MAAT;MACApwE,MAAA,IAAUowE,MAAV;IARA;IAUF,MAAM,CAAChmE,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;IACA,KAAKsE,OAAL,CACGrL,KAAA,GAAQqK,WAAT,GAAwB9D,SAD1B,EAEGtG,MAAA,GAASqK,YAAV,GAA0B9D,UAF5B;IAKA,KAAKf,UAAL,CAAgBuY,aAAhB,CAA8B,KAA9B;IACA,MAAMhd,MAAA,GAAU,KAAK,CAAAA,MAAL,GAAejY,QAAA,CAASgjB,aAAT,CAAuB,QAAvB,CAA/B;IACA9F,GAAA,CAAIgG,MAAJ,CAAWjL,MAAX;IACAiF,GAAA,CAAIsmD,MAAJ,GAAa,KAAb;IACA,KAAK,CAAA+jB,UAAL,CAAiBtwE,KAAjB,EAAwBC,MAAxB;IACA,KAAK,CAAA2rE,cAAL;IACA,IAAI,CAAC,KAAK,CAAA4D,uBAAV,EAAoC;MAClC,KAAK5qE,MAAL,CAAY4oD,iBAAZ,CAA8B,IAA9B;MACA,KAAK,CAAAgiB,uBAAL,GAAgC,IAAhC;IAFkC;EAjCtB;EA8ChB,CAAAzD,cAAe/rE,KAAf,EAAsBC,MAAtB,EAA8B;IAC5B,MAAM,CAACoK,WAAD,EAAcC,YAAd,IAA8B,KAAKvD,gBAAzC;IACA,KAAK/G,KAAL,GAAaA,KAAA,GAAQqK,WAArB;IACA,KAAKpK,MAAL,GAAcA,MAAA,GAASqK,YAAvB;IACA,KAAKe,OAAL,CAAarL,KAAb,EAAoBC,MAApB;IACA,IAAI,KAAKuF,eAAL,EAAsBa,UAA1B,EAAsC;MACpC,KAAKoC,MAAL;IADoC,CAAtC,MAEO;MACL,KAAKE,iBAAL;IADK;IAGP,KAAKnD,eAAL,GAAuB,IAAvB;IACA,IAAI,KAAK,CAAA+pE,eAAL,KAA0B,IAA9B,EAAoC;MAClCt7E,YAAA,CAAa,KAAK,CAAAs7E,eAAlB;IADkC;IAOpC,MAAMxwD,YAAA,GAAe,GAArB;IACA,KAAK,CAAAwwD,eAAL,GAAwBx3E,UAAA,CAAW,MAAM;MACvC,KAAK,CAAAw3E,eAAL,GAAwB,IAAxB;MACA,KAAK,CAAAe,UAAL,CAAiBtwE,KAAjB,EAAwBC,MAAxB;IAFuC,CAAjB,EAGrB8e,YAHqB,CAAxB;EAnB4B;EAyB9B,CAAAwxD,YAAavwE,KAAb,EAAoBC,MAApB,EAA4B;IAC1B,MAAM;MAAED,KAAA,EAAOwwE,WAAT;MAAsBvwE,MAAA,EAAQwwE;IAA9B,IAA+C,KAAK,CAAA1wE,MAA1D;IAEA,IAAIwN,QAAA,GAAWijE,WAAf;IACA,IAAIhjE,SAAA,GAAYijE,YAAhB;IACA,IAAI1wE,MAAA,GAAS,KAAK,CAAAA,MAAlB;IACA,OAAOwN,QAAA,GAAW,IAAIvN,KAAf,IAAwBwN,SAAA,GAAY,IAAIvN,MAA/C,EAAuD;MACrD,MAAMywE,SAAA,GAAYnjE,QAAlB;MACA,MAAMojE,UAAA,GAAanjE,SAAnB;MAEA,IAAID,QAAA,GAAW,IAAIvN,KAAnB,EAA0B;QAIxBuN,QAAA,GACEA,QAAA,IAAY,KAAZ,GACIpyB,IAAA,CAAK2J,KAAL,CAAWyoB,QAAA,GAAW,CAAtB,IAA2B,CAD/B,GAEIpyB,IAAA,CAAKkgD,IAAL,CAAU9tB,QAAA,GAAW,CAArB,CAHN;MAJwB;MAS1B,IAAIC,SAAA,GAAY,IAAIvN,MAApB,EAA4B;QAC1BuN,SAAA,GACEA,SAAA,IAAa,KAAb,GACIryB,IAAA,CAAK2J,KAAL,CAAW0oB,SAAA,GAAY,CAAvB,IAA4B,CADhC,GAEIryB,IAAA,CAAKkgD,IAAL,CAAU7tB,SAAA,GAAY,CAAtB,CAHN;MAD0B;MAO5B,MAAMojE,SAAA,GAAY,IAAI/zF,eAAJ,CAAoB0wB,QAApB,EAA8BC,SAA9B,CAAlB;MACA,MAAMuF,GAAA,GAAM69D,SAAA,CAAU59D,UAAV,CAAqB,IAArB,CAAZ;MACAD,GAAA,CAAII,SAAJ,CACEpT,MADF,EAEE,CAFF,EAGE,CAHF,EAIE2wE,SAJF,EAKEC,UALF,EAME,CANF,EAOE,CAPF,EAQEpjE,QARF,EASEC,SATF;MAWAzN,MAAA,GAAS6wE,SAAA,CAAUC,qBAAV,EAAT;IAjCqD;IAoCvD,OAAO9wE,MAAP;EA1C0B;EA6C5B,CAAAuwE,WAAYtwE,KAAZ,EAAmBC,MAAnB,EAA2B;IACzBD,KAAA,GAAQ7kB,IAAA,CAAKkgD,IAAL,CAAUr7B,KAAV,CAAR;IACAC,MAAA,GAAS9kB,IAAA,CAAKkgD,IAAL,CAAUp7B,MAAV,CAAT;IACA,MAAMe,MAAA,GAAS,KAAK,CAAAA,MAApB;IACA,IAAI,CAACA,MAAD,IAAYA,MAAA,CAAOhB,KAAP,KAAiBA,KAAjB,IAA0BgB,MAAA,CAAOf,MAAP,KAAkBA,MAA5D,EAAqE;MACnE;IADmE;IAGrEe,MAAA,CAAOhB,KAAP,GAAeA,KAAf;IACAgB,MAAA,CAAOf,MAAP,GAAgBA,MAAhB;IACA,MAAMF,MAAA,GAAS,KAAK,CAAAwT,KAAL,GACX,KAAK,CAAAxT,MADM,GAEX,KAAK,CAAAwwE,WAAL,CAAkBvwE,KAAlB,EAAyBC,MAAzB,CAFJ;IAGA,MAAM8S,GAAA,GAAM/R,MAAA,CAAOgS,UAAP,CAAkB,IAAlB,CAAZ;IACAD,GAAA,CAAIoO,MAAJ,GAAa,KAAK1b,UAAL,CAAgBuV,SAA7B;IACAjI,GAAA,CAAII,SAAJ,CACEpT,MADF,EAEE,CAFF,EAGE,CAHF,EAIEA,MAAA,CAAOC,KAJT,EAKED,MAAA,CAAOE,MALT,EAME,CANF,EAOE,CAPF,EAQED,KARF,EASEC,MATF;EAdyB;EA2B3B,CAAA6wE,gBAAiBC,KAAjB,EAAwB;IACtB,IAAIA,KAAJ,EAAW;MACT,IAAI,KAAK,CAAAx9D,KAAT,EAAiB;QACf,MAAMt7B,GAAA,GAAM,KAAKwtB,UAAL,CAAgB6Z,YAAhB,CAA6B1K,SAA7B,CAAuC,KAAK,CAAAu6D,QAA5C,CAAZ;QACA,IAAIl3F,GAAJ,EAAS;UACP,OAAOA,GAAP;QADO;MAFM;MAQjB,MAAM+oB,MAAA,GAASjY,QAAA,CAASgjB,aAAT,CAAuB,QAAvB,CAAf;MACA,CAAC;QAAE/L,KAAA,EAAOgB,MAAA,CAAOhB,KAAhB;QAAuBC,MAAA,EAAQe,MAAA,CAAOf;MAAtC,IAAiD,KAAK,CAAAF,MAAvD;MACA,MAAMgT,GAAA,GAAM/R,MAAA,CAAOgS,UAAP,CAAkB,IAAlB,CAAZ;MACAD,GAAA,CAAII,SAAJ,CAAc,KAAK,CAAApT,MAAnB,EAA4B,CAA5B,EAA+B,CAA/B;MAEA,OAAOiB,MAAA,CAAOgwE,SAAP,EAAP;IAdS;IAiBX,IAAI,KAAK,CAAAz9D,KAAT,EAAiB;MACf,MAAM,CAAChN,SAAD,EAAYC,UAAZ,IAA0B,KAAKK,cAArC;MAGA,MAAM7G,KAAA,GAAQ7kB,IAAA,CAAKiwB,KAAL,CACZ,KAAKpL,KAAL,GAAauG,SAAb,GAAyBmU,4BAAA,CAAcC,gBAD3B,CAAd;MAGA,MAAM1a,MAAA,GAAS9kB,IAAA,CAAKiwB,KAAL,CACb,KAAKnL,MAAL,GAAcuG,UAAd,GAA2BkU,4BAAA,CAAcC,gBAD5B,CAAf;MAGA,MAAMi2D,SAAA,GAAY,IAAI/zF,eAAJ,CAAoBmjB,KAApB,EAA2BC,MAA3B,CAAlB;MACA,MAAM8S,GAAA,GAAM69D,SAAA,CAAU59D,UAAV,CAAqB,IAArB,CAAZ;MACAD,GAAA,CAAII,SAAJ,CACE,KAAK,CAAApT,MADP,EAEE,CAFF,EAGE,CAHF,EAIE,KAAK,CAAAA,MAAL,CAAaC,KAJf,EAKE,KAAK,CAAAD,MAAL,CAAaE,MALf,EAME,CANF,EAOE,CAPF,EAQED,KARF,EASEC,MATF;MAWA,OAAO2wE,SAAA,CAAUC,qBAAV,EAAP;IAvBe;IA0BjB,OAAO33E,eAAA,CAAgB,KAAK,CAAA6G,MAArB,CAAP;EA5CsB;EAkDxB,CAAA6rE,eAAA,EAAkB;IAChB,KAAK,CAAAlB,QAAL,GAAiB,IAAI+C,cAAJ,CAAmB5pE,OAAA,IAAW;MAC7C,MAAM9jB,IAAA,GAAO8jB,OAAA,CAAQ,CAAR,EAAW6pE,WAAxB;MACA,IAAI3tF,IAAA,CAAKigB,KAAL,IAAcjgB,IAAA,CAAKkgB,MAAvB,EAA+B;QAC7B,KAAK,CAAA8rE,aAAL,CAAoBhsF,IAAA,CAAKigB,KAAzB,EAAgCjgB,IAAA,CAAKkgB,MAArC;MAD6B;IAFc,CAA9B,CAAjB;IAMA,KAAK,CAAAyqE,QAAL,CAAeiD,OAAf,CAAuB,KAAK1nE,GAA5B;EAPgB;EAWlB,OAAOkL,WAAPA,CAAmBptB,IAAnB,EAAyB6gB,MAAzB,EAAiCsB,SAAjC,EAA4C;IAC1C,IAAIniB,IAAA,YAAgBsvE,wCAApB,EAA4C;MAC1C,OAAO,IAAP;IAD0C;IAG5C,MAAM9rD,MAAA,GAAS,MAAM4J,WAAN,CAAkBptB,IAAlB,EAAwB6gB,MAAxB,EAAgCsB,SAAhC,CAAf;IACA,MAAM;MAAEnmB,IAAF;MAAQsvF,SAAR;MAAmBF,QAAnB;MAA6B57D;IAA7B,IAAuCxvB,IAA7C;IACA,IAAIorF,QAAA,IAAYjpE,SAAA,CAAUoZ,YAAV,CAAuBxK,SAAvB,CAAiCq6D,QAAjC,CAAhB,EAA4D;MAC1D5nE,MAAA,CAAO,CAAA4nE,QAAP,GAAmBA,QAAnB;IAD0D,CAA5D,MAEO;MACL5nE,MAAA,CAAO,CAAA8nE,SAAP,GAAoBA,SAApB;IADK;IAGP9nE,MAAA,CAAO,CAAAgM,KAAP,GAAgBA,KAAhB;IAEA,MAAM,CAAClJ,WAAD,EAAcC,YAAd,IAA8B/C,MAAA,CAAOV,cAA3C;IACAU,MAAA,CAAOvH,KAAP,GAAgB,CAAAjgB,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAV,IAAqBsqB,WAArC;IACA9C,MAAA,CAAOtH,MAAP,GAAiB,CAAAlgB,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAV,IAAqBuqB,YAAtC;IAEA,OAAO/C,MAAP;EAjB0C;EAqB5ChD,UAAU4sD,YAAA,GAAe,KAAzB,EAAgC/sD,OAAA,GAAU,IAA1C,EAAgD;IAC9C,IAAI,KAAKqF,OAAL,EAAJ,EAAoB;MAClB,OAAO,IAAP;IADkB;IAIpB,MAAMnF,UAAA,GAAa;MACjBspD,cAAA,EAAgBrkF,0BAAA,CAAqBG,KADpB;MAEjBylG,QAAA,EAAU,KAAK,CAAAA,QAFE;MAGjBh+E,SAAA,EAAW,KAAKA,SAHC;MAIjBpR,IAAA,EAAM,KAAKwwB,OAAL,CAAa,CAAb,EAAgB,CAAhB,CAJW;MAKjBne,QAAA,EAAU,KAAKA,QALE;MAMjBmhB,KAAA,EAAO,KAAK,CAAAA;IANK,CAAnB;IASA,IAAI49C,YAAJ,EAAkB;MAIhB7sD,UAAA,CAAW+qE,SAAX,GAAuB,KAAK,CAAAyB,eAAL,CAAoC,IAApC,CAAvB;MACA,OAAOxsE,UAAP;IALgB;IAQlB,IAAIF,OAAA,KAAY,IAAhB,EAAsB;MACpB,OAAOE,UAAP;IADoB;IAItBF,OAAA,CAAQ6sE,MAAR,KAAmB,IAAI7sF,GAAJ,EAAnB;IACA,MAAM8sF,IAAA,GAAO,KAAK,CAAA39D,KAAL,GACR,CAAAjP,UAAA,CAAWvkB,IAAX,CAAgB,CAAhB,IAAqBukB,UAAA,CAAWvkB,IAAX,CAAgB,CAAhB,CAArB,KACAukB,UAAA,CAAWvkB,IAAX,CAAgB,CAAhB,IAAqBukB,UAAA,CAAWvkB,IAAX,CAAgB,CAAhB,CAArB,CAFQ,GAGT,IAHJ;IAIA,IAAI,CAACqkB,OAAA,CAAQ6sE,MAAR,CAAer2E,GAAf,CAAmB,KAAK,CAAAu0E,QAAxB,CAAL,EAAyC;MAGvC/qE,OAAA,CAAQ6sE,MAAR,CAAel9E,GAAf,CAAmB,KAAK,CAAAo7E,QAAxB,EAAmC;QAAE+B,IAAF;QAAQ5sE;MAAR,CAAnC;MACAA,UAAA,CAAWvE,MAAX,GAAoB,KAAK,CAAA+wE,eAAL,CAAoC,KAApC,CAApB;IAJuC,CAAzC,MAKO,IAAI,KAAK,CAAAv9D,KAAT,EAAiB;MAGtB,MAAM49D,QAAA,GAAW/sE,OAAA,CAAQ6sE,MAAR,CAAezsF,GAAf,CAAmB,KAAK,CAAA2qF,QAAxB,CAAjB;MACA,IAAI+B,IAAA,GAAOC,QAAA,CAASD,IAApB,EAA0B;QACxBC,QAAA,CAASD,IAAT,GAAgBA,IAAhB;QACAC,QAAA,CAAS7sE,UAAT,CAAoBvE,MAApB,CAA2B9B,KAA3B;QACAkzE,QAAA,CAAS7sE,UAAT,CAAoBvE,MAApB,GAA6B,KAAK,CAAA+wE,eAAL,CAAoC,KAApC,CAA7B;MAHwB;IAJJ;IAUxB,OAAOxsE,UAAP;EA9C8C;AAzdP;AAvB3Cr8B,mBAAA,GAAAokF,WAAA;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACIA,IAAArnE,KAAA,GAAAC,mBAAA;AAqBA,IAAAmsF,IAAA,GAAAnsF,mBAAA;AAQA,IAAAE,cAAA,GAAAF,mBAAA;AAYA,IAAAosF,WAAA,GAAApsF,mBAAA;AACA,IAAAqsF,wBAAA,GAAArsF,mBAAA;AACA,IAAA6f,MAAA,GAAA7f,mBAAA;AACA,IAAA+oE,iBAAA,GAAA/oE,mBAAA;AACA,IAAAM,eAAA,GAAAN,mBAAA;AACA,IAAAusE,UAAA,GAAAvsE,mBAAA;AAGA,MAAMssF,YAAA,GAC8B,UADpC;AAGA,MAAMC,UAAA,GAC8B,WADpC","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/display/editor/editor.js","webpack://pdfjs-dist/build/pdf/src/display/editor/tools.js","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/shared/murmurhash3.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/shared/image_utils.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_text.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/editor/annotation_editor_layer.js","webpack://pdfjs-dist/build/pdf/src/display/editor/freetext.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js","webpack://pdfjs-dist/build/pdf/web/l10n_utils.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js","webpack://pdfjs-dist/build/pdf/src/display/editor/ink.js","webpack://pdfjs-dist/build/pdf/src/display/editor/stamp.js","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = root.pdfjsLib = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(globalThis, () => {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6; // Ten megabytes.\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n STAMP: 13,\n INK: 15,\n};\n\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n // PLEASE NOTE: We purposely keep any removed operators commented out, since\n // re-numbering the list would risk breaking third-party users.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n // beginAnnotations: 78,\n // endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n // paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\nfunction string32(value) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n\n static get platform() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof navigator === \"undefined\"\n ) {\n return shadow(this, \"platform\", { isWin: false, isMac: false });\n }\n return shadow(this, \"platform\", {\n isWin: navigator.platform.includes(\"Win\"),\n isMac: navigator.platform.includes(\"Mac\"),\n });\n }\n\n static get isCSSRoundSupported() {\n return shadow(\n this,\n \"isCSSRoundSupported\",\n globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\")\n );\n }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swaped.\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v?.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\nclass PromiseCapability {\n #settled = false;\n\n constructor() {\n /**\n * @type {Promise<any>} The Promise object.\n */\n this.promise = new Promise((resolve, reject) => {\n /**\n * @type {function} Fulfills the Promise.\n */\n this.resolve = data => {\n this.#settled = true;\n resolve(data);\n };\n\n /**\n * @type {function} Rejects the Promise.\n */\n this.reject = reason => {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(reason instanceof Error, 'Expected valid \"reason\" argument.');\n }\n this.#settled = true;\n reject(reason);\n };\n });\n }\n\n /**\n * @type {boolean} If the Promise has been fulfilled/rejected.\n */\n get settled() {\n return this.#settled;\n }\n}\n\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n // In order to generate the following regex:\n // - create a PDF containing all the chars in the range 0000-FFFF with\n // a NFKC which is different of the char.\n // - copy and paste all those chars and get the ones where NFKC is\n // required.\n // It appears that most the chars here contain some ligatures.\n NormalizeRegex =\n /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => {\n return p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2);\n });\n}\n\nfunction getUuid() {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\")\n ) {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto?.getRandomValues === \"function\"\n ) {\n crypto.getRandomValues(buf);\n } else {\n for (let i = 0; i < 32; i++) {\n buf[i] = Math.floor(Math.random() * 255);\n }\n }\n return bytesToString(buf);\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationEditorParamsType,\n AnnotationEditorPrefix,\n AnnotationEditorType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationType,\n assert,\n BaseException,\n BASELINE_FACTOR,\n bytesToString,\n CMapCompressionType,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FormatError,\n getModificationDate,\n getUuid,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isNodeJS,\n LINE_DESCENT_FACTOR,\n LINE_FACTOR,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n normalizeUnicode,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n PromiseCapability,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isNodeJS,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n PasswordException,\n PromiseCapability,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n AnnotationStorage,\n PrintAnnotationStorage,\n SerializableEmpty,\n} from \"./annotation_storage.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMFilterFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n isValidFetchUrl,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeFilterFactory,\n NodeStandardFontDataFactory,\n} from \"display-node_utils\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { PDFFetchStream } from \"display-fetch_stream\";\nimport { PDFNetworkStream } from \"display-network\";\nimport { PDFNodeStream } from \"display-node_stream\";\nimport { SVGGraphics } from \"display-svg\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\nconst DELAYED_CLEANUP_TIMEOUT = 5000; // ms\n\nconst DefaultCanvasFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeCMapReaderFactory\n : DOMCMapReaderFactory;\nconst DefaultFilterFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeFilterFactory\n : DOMFilterFactory;\nconst DefaultStandardFontDataFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeStandardFontDataFactory\n : DOMStandardFontDataFactory;\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef { TypedArray | ArrayBuffer | Array<number> | string } BinaryData\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {BinaryData} [data] - Binary PDF data.\n * Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n *\n * NOTE: If TypedArrays are used they will generally be transferred to the\n * worker-thread. This will help reduce main-thread memory usage, however\n * it will take ownership of the TypedArrays.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not. The default value is `true`.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\n * `OffscreenCanvas` in the worker. Primarily used to improve performance of\n * image conversion/rendering.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {number} [canvasMaxAreaInBytes] - The integer value is used to\n * know when an image must be resized (uses `OffscreenCanvas` in the worker).\n * If it's -1 then a possibly slow algorithm is used to guess the max value.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object} [filterFactory] - A factory instance that will be used\n * to create SVG filters when rendering some images on the main canvas.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = { url: src };\n } else if (isArrayBuffer(src)) {\n src = { data: src };\n }\n }\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n const task = new PDFDocumentLoadingTask();\n const { docId } = task;\n\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport =\n src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize =\n Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\n ? src.rangeChunkSize\n : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n const docBaseUrl =\n typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl)\n ? src.docBaseUrl\n : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl =\n typeof src.standardFontDataUrl === \"string\"\n ? src.standardFontDataUrl\n : null;\n const StandardFontDataFactory =\n src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize =\n Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\n ? src.maxImageSize\n : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported =\n typeof src.isOffscreenCanvasSupported === \"boolean\"\n ? src.isOffscreenCanvasSupported\n : !isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\n ? src.canvasMaxAreaInBytes\n : -1;\n const disableFontFace =\n typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n\n // Parameters whose default values depend on other parameters.\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts =\n typeof src.useSystemFonts === \"boolean\"\n ? src.useSystemFonts\n : !isNodeJS && !disableFontFace;\n const useWorkerFetch =\n typeof src.useWorkerFetch === \"boolean\"\n ? src.useWorkerFetch\n : (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (CMapReaderFactory === DOMCMapReaderFactory &&\n StandardFontDataFactory === DOMStandardFontDataFactory &&\n cMapUrl &&\n standardFontDataUrl &&\n isValidFetchUrl(cMapUrl, document.baseURI) &&\n isValidFetchUrl(standardFontDataUrl, document.baseURI));\n const canvasFactory =\n src.canvasFactory || new DefaultCanvasFactory({ ownerDocument });\n const filterFactory =\n src.filterFactory || new DefaultFilterFactory({ docId, ownerDocument });\n\n // Parameters only intended for development/testing purposes.\n const styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n ? src.styleElement\n : null;\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(verbosity);\n\n // Ensure that the various factories can be initialized, when necessary,\n // since the user may provide *custom* ones.\n const transportFactory = {\n canvasFactory,\n filterFactory,\n };\n if (!useWorkerFetch) {\n transportFactory.cMapReaderFactory = new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked,\n });\n transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n baseUrl: standardFontDataUrl,\n });\n }\n\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n const fetchDocParams = {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null,\n },\n };\n const transportParams = {\n ignoreErrors,\n isEvalSupported,\n disableFontFace,\n fontExtraProperties,\n enableXfa,\n ownerDocument,\n disableAutoFetch,\n pdfBug,\n styleElement,\n };\n\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length,\n initialData: rangeTransport.initialData,\n progressiveDone: rangeTransport.progressiveDone,\n contentDispositionFilename:\n rangeTransport.contentDispositionFilename,\n disableRange,\n disableStream,\n },\n rangeTransport\n );\n } else if (!data) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: createPDFNetworkStream\");\n }\n const createPDFNetworkStream = params => {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS\n ) {\n return new PDFNodeStream(params);\n }\n return isValidFetchUrl(params.url)\n ? new PDFFetchStream(params)\n : new PDFNetworkStream(params);\n };\n\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n transportParams,\n transportFactory\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @returns {Promise<string>} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n source,\n source.data ? [source.data.buffer] : null\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\nfunction getUrlProp(val) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return null; // The 'url' is unused with `PDFDataRangeTransport`.\n }\n if (val instanceof URL) {\n return val.href;\n }\n try {\n // The full path is required in the 'url' field.\n return new URL(val, window.location).href;\n } catch {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof val === \"string\"\n ) {\n return val; // Use the url as-is in Node.js environments.\n }\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n}\n\nfunction getDataProp(val) {\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n val instanceof Buffer // eslint-disable-line no-undef\n ) {\n throw new Error(\n \"Please provide binary data as `Uint8Array`, rather than `Buffer`.\"\n );\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n // Use the data as-is when it's already a Uint8Array that completely\n // \"utilizes\" its underlying ArrayBuffer, to prevent any possible\n // issues when transferring it to the worker-thread.\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if ((typeof val === \"object\" && !isNaN(val?.length)) || isArrayBuffer(val)) {\n return new Uint8Array(val);\n }\n throw new Error(\n \"Invalid PDF binary data: either TypedArray, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = new PromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise<PDFDocumentProxy>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise<void>} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n *\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\n * will generally be transferred to the worker-thread. This will help reduce\n * main-thread memory usage, however it will take ownership of the TypedArrays.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array|null} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = new PromiseCapability();\n }\n\n /**\n * @param {function} listener\n */\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n /**\n * @param {number} begin\n * @param {Uint8Array|null} chunk\n */\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n /**\n * @param {number} loaded\n * @param {number|undefined} total\n */\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n /**\n * @param {Uint8Array|null} chunk\n */\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n /**\n * @param {number} begin\n * @param {number} end\n */\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n Object.defineProperty(this, \"getJavaScript\", {\n value: () => {\n deprecated(\n \"`PDFDocumentProxy.getJavaScript`, \" +\n \"please use `PDFDocumentProxy.getJSActions` instead.\"\n );\n return this.getJSActions().then(js => {\n if (!js) {\n return js;\n }\n const jsArr = [];\n for (const name in js) {\n jsArr.push(...js[name]);\n }\n return jsArr;\n });\n },\n });\n }\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getXFADatasets\", {\n value: () => {\n return this._transport.getXFADatasets();\n },\n });\n Object.defineProperty(this, \"getXRefPrevValue\", {\n value: () => {\n return this._transport.getXRefPrevValue();\n },\n });\n Object.defineProperty(this, \"getAnnotArray\", {\n value: pageIndex => {\n return this._transport.getAnnotArray(pageIndex);\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array<string, string|null>} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise<number>} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise<any>} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree.\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array<any> | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array<OutlineNode>} items\n */\n\n /**\n * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise<Array<number> | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise<Uint8Array>} A promise that is resolved with a\n * {Uint8Array} containing the raw data of the PDF document.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<Uint8Array>} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise<boolean>} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n * {Array<string>} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n * @property {boolean} [disableNormalization] - When true the text is *not*\n * normalized in the worker-thread. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {CanvasRenderingContext2D} canvasContext - A 2D context of a DOM\n * Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {CanvasGradient | CanvasPattern | string} [background] - Background\n * to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n *\n * NOTE: This option may be partially, or completely, ignored when the\n * `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n\n #pendingCleanup = false;\n\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array<number>} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise<Array<any>>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n return this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n }\n\n /**\n * @returns {Promise<Object>} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n }) {\n this._stats?.time(\"Overall\");\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render...\n this.#pendingCleanup = false;\n // ... and ensure that a delayed cleanup is always aborted.\n this.#abortDelayedCleanup();\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = new PromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup immediately once rendering has finished.\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(/* delayed = */ !intentPrint);\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n\n this._stats?.timeEnd(\"Rendering\");\n this._stats?.timeEnd(\"Overall\");\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise<PDFOperatorList>} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n } = {}) {\n if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\"Not implemented: getOperatorList\");\n }\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = new PromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise<TextContent>} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(/* delayed = */ false);\n\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @param {boolean} [delayed] - Delay the cleanup, to e.g. improve zooming\n * performance in documents with large images.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(/* delayed = */ false);\n }, DELAYED_CLEANUP_TIMEOUT);\n\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n this._stats?.timeEnd(\"Page Request\");\n\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n intentState.displayReadyCapability?.resolve(transparency);\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(/* delayed = */ true);\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n const { map, transfers } = annotationStorageSerializable;\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n },\n transfers\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(/* delayed = */ true);\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < /* ms = */ 1000) {\n // Above, we prevent the total delay from becoming arbitrarily large.\n delay += reason.extraDelay;\n }\n\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({ intentState, reason, force: true });\n }, delay);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {StatTimer | null} Returns page stats, if enabled; returns `null`\n * otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n #listeners = new Set();\n\n #deferred = Promise.resolve();\n\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(\n obj,\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"SKIP_BABEL || TESTING\")) &&\n transfer\n ? { transfer }\n : null\n ),\n };\n\n this.#deferred.then(() => {\n for (const listener of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this.#listeners.add(listener);\n }\n\n removeEventListener(name, listener) {\n this.#listeners.delete(listener);\n }\n\n terminate() {\n this.#listeners.clear();\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Worker} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n\n // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static #workerPorts;\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = new PromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) &&\n port\n ) {\n if (PDFWorker.#workerPorts?.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _initializeFromPort\");\n }\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker._mainThreadWorkerMessageHandler\n ) {\n let { workerSrc } = PDFWorker;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n const worker =\n typeof PDFJSDev === \"undefined\" &&\n !workerSrc.endsWith(\"/build/pdf.worker.js\")\n ? new Worker(workerSrc, { type: \"module\" })\n : new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n // Ensure that we can use `postMessage` transfers.\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: fromPort\");\n }\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\n \"PDFWorker.fromPort - the worker is being destroyed.\\n\" +\n \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\"\n );\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n PDFWorkerUtil.fallbackWorkerSrc !== null\n ) {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a `<script>` tag.\n return mainWorkerMessageHandler;\n }\n if (typeof PDFJSDev === \"undefined\") {\n const worker = await import(\"pdfjs/pdf.worker.js\");\n return worker.WorkerMessageHandler;\n }\n if (\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n // eslint-disable-next-line no-undef\n typeof __non_webpack_require__ === \"function\"\n ) {\n // Since bundlers, such as Webpack, cannot be told to leave `require`\n // statements alone we are thus forced to jump through hoops in order\n // to prevent `Critical dependency: ...` warnings in third-party\n // deployments of the built `pdf.js`/`pdf.worker.js` files; see\n // https://github.com/webpack/webpack/issues/8826\n //\n // The following hack is based on the assumption that code running in\n // Node.js won't ever be affected by e.g. Content Security Policies that\n // prevent the use of `eval`. If that ever occurs, we should revert this\n // to a normal `__non_webpack_require__` statement and simply document\n // the Webpack warnings instead (telling users to ignore them).\n //\n // eslint-disable-next-line no-eval\n const worker = eval(\"require\")(this.workerSrc);\n return worker.WorkerMessageHandler;\n }\n await loadScript(this.workerSrc);\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n #methodPromises = new Map();\n\n #pageCache = new Map();\n\n #pagePromises = new Map();\n\n #passwordCapability = null;\n\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement,\n });\n this._params = params;\n\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n\n this.destroyed = false;\n this.destroyCapability = null;\n\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = new PromiseCapability();\n\n this.setupMessageHandler();\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getXFADatasets\", {\n value: () => {\n return this.messageHandler.sendWithPromise(\"GetXFADatasets\", null);\n },\n });\n Object.defineProperty(this, \"getXRefPrevValue\", {\n value: () => {\n return this.messageHandler.sendWithPromise(\"GetXRefPrevValue\", null);\n },\n });\n Object.defineProperty(this, \"getAnnotArray\", {\n value: pageIndex => {\n return this.messageHandler.sendWithPromise(\"GetAnnotArray\", {\n pageIndex,\n });\n },\n });\n }\n }\n\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n\n this.#methodPromises.set(name, promise);\n return promise;\n }\n\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n\n getRenderingIntent(\n intent,\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isOpList = false\n ) {\n let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n let annotationStorageSerializable = SerializableEmpty;\n\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n\n const annotationStorage =\n renderingIntent & RenderingIntentFlag.PRINT &&\n printAnnotationStorage instanceof PrintAnnotationStorage\n ? printAnnotationStorage\n : this.annotationStorage;\n\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`,\n annotationStorageSerializable,\n };\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = new PromiseCapability();\n\n this.#passwordCapability?.reject(\n new Error(\"Worker was destroyed during onPassword callback\")\n );\n\n const waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n // Allow `AnnotationStorage`-related clean-up when destroying the document.\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n // We also need to wait for the worker to finish its long running tasks.\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n\n this._networkStream?.cancelAllRequests(\n new AbortException(\"Worker was terminated.\")\n );\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const { messageHandler, loadingTask } = this;\n\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetReader - no `IPDFStream` instance available.\"\n );\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total,\n };\n };\n sink.onPull = () => {\n this._fullReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n value instanceof ArrayBuffer,\n \"GetReader - expected an ArrayBuffer.\"\n );\n // Enqueue data chunk into sink, and transfer it\n // to other side as `Transferable` object.\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = new PromiseCapability();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n // If stream or range are disabled, it's our only way to report\n // loading progress.\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total,\n });\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength,\n });\n }, headersCapability.reject);\n\n return headersCapability.promise;\n });\n\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetRangeReader - no `IPDFStream` instance available.\"\n );\n const rangeReader = this._networkStream.getRangeReader(\n data.begin,\n data.end\n );\n\n // When streaming is enabled, it's possible that the data requested here\n // has already been fetched via the `_fullRequestReader` implementation.\n // However, given that the PDF data is loaded asynchronously on the\n // main-thread and then sent via `postMessage` to the worker-thread,\n // it may not have been available during parsing (hence the attempt to\n // use range requests here).\n //\n // To avoid wasting time and resources here, we'll thus *not* dispatch\n // range requests if the data was already loaded but has not been sent to\n // the worker-thread yet (which will happen via the `_fullRequestReader`).\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n value instanceof ArrayBuffer,\n \"GetRangeReader - expected an ArrayBuffer.\"\n );\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n\n messageHandler.on(\"PasswordRequest\", exception => {\n this.#passwordCapability = new PromiseCapability();\n\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({ password });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this.#passwordCapability.reject(ex);\n }\n } else {\n this.#passwordCapability.reject(\n new PasswordException(exception.message, exception.code)\n );\n }\n return this.#passwordCapability.promise;\n });\n\n messageHandler.on(\"DataLoaded\", data => {\n // For consistency: Ensure that progress is always reported when the\n // entire PDF file has been loaded, regardless of how it was fetched.\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length,\n });\n\n this.downloadInfoCapability.resolve(data);\n });\n\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n if (this.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n\n const inspectFont =\n params.pdfBug && globalThis.FontInspector?.enabled\n ? (font, url) => globalThis.FontInspector.fontAdded(font, url)\n : null;\n const font = new FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n inspectFont,\n });\n\n this.fontLoader\n .bind(font)\n .catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", { id });\n })\n .finally(() => {\n if (!params.fontExtraProperties && font.data) {\n // Immediately release the `font.data` property once the font\n // has been attached to the DOM, since it's no longer needed,\n // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n // Since `font.data` could be very large, e.g. in some cases\n // multiple megabytes, this will help reduce memory usage.\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n // Ignore any pending requests if the worker was terminated.\n return;\n }\n\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n\n // Heuristic that will allow us not to store large data.\n if (imageData) {\n let length;\n if (imageData.bitmap) {\n const { width, height } = imageData;\n length = width * height * 4;\n } else {\n length = imageData.data?.length || 0;\n }\n\n if (length > MAX_IMAGE_SIZE_TO_CACHE) {\n pageProxy._maybeCleanupAfterRender = true;\n }\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total,\n });\n });\n\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.cMapReaderFactory) {\n return Promise.reject(\n new Error(\n \"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.cMapReaderFactory.fetch(data);\n });\n\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.standardFontDataFactory) {\n return Promise.reject(\n new Error(\n \"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.standardFontDataFactory.fetch(data);\n });\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\n \"saveDocument called while `annotationStorage` is empty, \" +\n \"please use the getData-method instead.\"\n );\n }\n const { map, transfers } = this.annotationStorage.serializable;\n\n return this.messageHandler\n .sendWithPromise(\n \"SaveDocument\",\n {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null,\n },\n transfers\n )\n .finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n\n getPage(pageNumber) {\n if (\n !Number.isInteger(pageNumber) ||\n pageNumber <= 0 ||\n pageNumber > this._numPages\n ) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler\n .sendWithPromise(\"GetPage\", {\n pageIndex,\n })\n .then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n const page = new PDFPageProxy(\n pageIndex,\n pageInfo,\n this,\n this._params.pdfBug\n );\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n getPageIndex(ref) {\n if (\n typeof ref !== \"object\" ||\n ref === null ||\n !Number.isInteger(ref.num) ||\n ref.num < 0 ||\n !Number.isInteger(ref.gen) ||\n ref.gen < 0\n ) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen,\n });\n }\n\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent,\n });\n }\n\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id,\n });\n }\n\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex,\n });\n }\n\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex,\n });\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getOptionalContentConfig() {\n return this.messageHandler\n .sendWithPromise(\"GetOptionalContentConfig\", null)\n .then(results => {\n return new OptionalContentConfig(results);\n });\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler\n .sendWithPromise(name, null)\n .then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null,\n };\n });\n this.#methodPromises.set(name, promise);\n return promise;\n }\n\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return; // No need to manually clean-up when destruction has started.\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(\n `startCleanup: Page ${page.pageNumber} is currently rendering.`\n );\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(/* keepHCM = */ true);\n }\n\n get loadingParams() {\n const { disableAutoFetch, enableXfa } = this._params;\n return shadow(this, \"loadingParams\", {\n disableAutoFetch,\n enableXfa,\n });\n }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n */\nclass PDFObjects {\n #objs = Object.create(null);\n\n /**\n * Ensures there is an object defined for `objId`.\n *\n * @param {string} objId\n * @returns {Object}\n */\n #ensureObj(objId) {\n return (this.#objs[objId] ||= {\n capability: new PromiseCapability(),\n data: null,\n });\n }\n\n /**\n * If called *without* callback, this returns the data of `objId` but the\n * object needs to be resolved. If it isn't, this method throws.\n *\n * If called *with* a callback, the callback is called with the data of the\n * object once the object is resolved. That means, if you call this method\n * and the object is already resolved, the callback gets called right away.\n *\n * @param {string} objId\n * @param {function} [callback]\n * @returns {any}\n */\n get(objId, callback = null) {\n // If there is a callback, then the get can be async and the object is\n // not required to be resolved right now.\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.capability.promise.then(() => callback(obj.data));\n return null;\n }\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n const obj = this.#objs[objId];\n // If there isn't an object yet or the object isn't resolved, then the\n // data isn't ready yet!\n if (!obj?.capability.settled) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n\n /**\n * @param {string} objId\n * @returns {boolean}\n */\n has(objId) {\n const obj = this.#objs[objId];\n return obj?.capability.settled || false;\n }\n\n /**\n * Resolves the object `objId` with optional `data`.\n *\n * @param {string} objId\n * @param {any} [data]\n */\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.capability.resolve();\n }\n\n clear() {\n for (const objId in this.#objs) {\n const { data } = this.#objs[objId];\n data?.bitmap?.close(); // Release any `ImageBitmap` data.\n }\n this.#objs = Object.create(null);\n }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n #internalRenderTask = null;\n\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n\n /**\n * Callback for incremental rendering -- a function that will be called\n * each time the rendering is paused. To continue rendering call the\n * function that is the first argument to the callback.\n * @type {function}\n */\n this.onContinue = null;\n }\n\n /**\n * Promise for rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n\n /**\n * Cancels the rendering task. If the task is currently rendering it will\n * not be cancelled until graphics pauses with a timeout. The promise that\n * this object extends will be rejected when cancelled.\n *\n * @param {number} [extraDelay]\n */\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(/* error = */ null, extraDelay);\n }\n\n /**\n * Whether form fields are rendered separately from the main operatorList.\n * @type {boolean}\n */\n get separateAnnots() {\n const { separateAnnots } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const { annotationCanvasMap } = this.#internalRenderTask;\n return (\n separateAnnots.form ||\n (separateAnnots.canvas && annotationCanvasMap?.size > 0)\n );\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n static #canvasInUse = new WeakSet();\n\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null,\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame =\n useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = new PromiseCapability();\n this.task = new RenderTask(this);\n // caching this-bound methods\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n get completed() {\n return this.capability.promise.catch(function () {\n // Ignoring errors, since we only want to know when rendering is\n // no longer pending.\n });\n }\n\n initializeGraphics({ transparency = false, optionalContentConfig }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\n \"Cannot use the same canvas during multiple render() operations. \" +\n \"Use different canvas or ensure previous operations were \" +\n \"cancelled or completed.\"\n );\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const { canvasContext, viewport, transform, background } = this.params;\n\n this.gfx = new CanvasGraphics(\n canvasContext,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n this.filterFactory,\n { optionalContentConfig },\n this.annotationCanvasMap,\n this.pageColors\n );\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background,\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n\n if (this._canvas) {\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n }\n this.callback(\n error ||\n new RenderingCancelledException(\n `Rendering cancelled, page ${this._pageIndex + 1}`,\n extraDelay\n )\n );\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n\n if (this.running) {\n return;\n }\n this._continue();\n }\n\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(\n this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper\n );\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing(this.pageColors);\n if (this._canvas) {\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n }\n this.callback();\n }\n }\n }\n}\n\n/** @type {string} */\nconst version =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n build,\n DefaultCanvasFactory,\n DefaultCMapReaderFactory,\n DefaultFilterFactory,\n DefaultStandardFontDataFactory,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFDocumentLoadingTask,\n PDFDocumentProxy,\n PDFPageProxy,\n PDFWorker,\n PDFWorkerUtil,\n RenderTask,\n SVGGraphics,\n version,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap, unreachable } from \"../shared/util.js\";\nimport { AnnotationEditor } from \"./editor/editor.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfers: undefined,\n});\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n #modified = false;\n\n #storage = new Map();\n\n constructor() {\n // Callbacks to signal when the modification state is set or reset.\n // This is used by the viewer to only bind on `beforeunload` if forms\n // are actually edited to prevent doing so unconditionally since that\n // can have undesirable effects.\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n\n /**\n * Get the value for a given key if it exists, or return the default value.\n * @param {string} key\n * @param {Object} defaultValue\n * @returns {Object}\n */\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n\n /**\n * Get the value for a given key.\n * @param {string} key\n * @returns {Object}\n */\n getRawValue(key) {\n return this.#storage.get(key);\n }\n\n /**\n * Remove a value from the storage.\n * @param {string} key\n */\n remove(key) {\n this.#storage.delete(key);\n\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n\n /**\n * Set the value for a given key\n * @param {string} key\n * @param {Object} value\n */\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n\n if (\n value instanceof AnnotationEditor &&\n typeof this.onAnnotationEditor === \"function\"\n ) {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n\n /**\n * Check if the storage contains the given key.\n * @param {string} key\n * @returns {boolean}\n */\n has(key) {\n return this.#storage.has(key);\n }\n\n /**\n * @returns {Object | null}\n */\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n\n /**\n * @param {Object} obj\n */\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n\n get size() {\n return this.#storage.size;\n }\n\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n\n /**\n * @returns {PrintAnnotationStorage}\n */\n get print() {\n return new PrintAnnotationStorage(this);\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfers = [];\n const context = Object.create(null);\n let hasBitmap = false;\n\n for (const [key, val] of this.#storage) {\n const serialized =\n val instanceof AnnotationEditor\n ? val.serialize(/* isForCopying = */ false, context)\n : val;\n if (serialized) {\n map.set(key, serialized);\n\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n\n if (hasBitmap) {\n // We must transfer the bitmap data separately, since it can be changed\n // during serialization with SVG images.\n for (const value of map.values()) {\n if (value.bitmap) {\n transfers.push(value.bitmap);\n }\n }\n }\n\n return map.size > 0\n ? { map, hash: hash.hexdigest(), transfers }\n : SerializableEmpty;\n }\n}\n\n/**\n * A special `AnnotationStorage` for use during printing, where the serializable\n * data is *frozen* upon initialization, to prevent scripting from modifying its\n * contents. (Necessary since printing is triggered synchronously in browsers.)\n */\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n\n constructor(parent) {\n super();\n const { map, hash, transfers } = parent.serializable;\n // Create a *copy* of the data, since Objects are passed by reference in JS.\n const clone = structuredClone(\n map,\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"SKIP_BABEL || TESTING\")) &&\n transfers\n ? { transfer: transfers }\n : null\n );\n this.#serializable = { map: clone, hash, transfers };\n }\n\n /**\n * @returns {PrintAnnotationStorage}\n */\n // eslint-disable-next-line getter-return\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n return this.#serializable;\n }\n}\n\nexport { AnnotationStorage, PrintAnnotationStorage, SerializableEmpty };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n\nimport { bindEvents, ColorManager } from \"./tools.js\";\nimport { FeatureTest, shadow, unreachable } from \"../../shared/util.js\";\n\n/**\n * @typedef {Object} AnnotationEditorParameters\n * @property {AnnotationEditorUIManager} uiManager - the global manager\n * @property {AnnotationEditorLayer} parent - the layer containing this editor\n * @property {string} id - editor id\n * @property {number} x - x-coordinate\n * @property {number} y - y-coordinate\n */\n\n/**\n * Base class for editors.\n */\nclass AnnotationEditor {\n #keepAspectRatio = false;\n\n #resizersDiv = null;\n\n #boundFocusin = this.focusin.bind(this);\n\n #boundFocusout = this.focusout.bind(this);\n\n #hasBeenClicked = false;\n\n #isEditing = false;\n\n #isInEditMode = false;\n\n _initialOptions = Object.create(null);\n\n _uiManager = null;\n\n _focusEventsAllowed = true;\n\n #isDraggable = false;\n\n #zIndex = AnnotationEditor._zIndex++;\n\n static _colorManager = new ColorManager();\n\n static _zIndex = 1;\n\n /**\n * @param {AnnotationEditorParameters} parameters\n */\n constructor(parameters) {\n if (this.constructor === AnnotationEditor) {\n unreachable(\"Cannot initialize AnnotationEditor.\");\n }\n\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n\n const {\n rotation,\n rawDims: { pageWidth, pageHeight, pageX, pageY },\n } = this.parent.viewport;\n\n this.rotation = rotation;\n this.pageRotation =\n (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n\n static get _defaultLineColor() {\n return shadow(\n this,\n \"_defaultLineColor\",\n this._colorManager.getHexCode(\"CanvasText\")\n );\n }\n\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager,\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n\n /**\n * Initialize the l10n stuff for this type of editor.\n * @param {Object} _l10n\n */\n static initialize(_l10n) {}\n\n /**\n * Update the default parameters for this type of editor.\n * @param {number} _type\n * @param {*} _value\n */\n static updateDefaultParams(_type, _value) {}\n\n /**\n * Get the default properties to set in the UI for this type of editor.\n * @returns {Array}\n */\n static get defaultPropertiesToUpdate() {\n return [];\n }\n\n /**\n * Check if this kind of editor is able to handle the given mime type for\n * pasting.\n * @param {string} mime\n * @returns {boolean}\n */\n static isHandlingMimeForPasting(_mime) {\n return false;\n }\n\n /**\n * Extract the data from the clipboard item and delegate the creation of the\n * editor to the parent.\n * @param {DataTransferItem} item\n * @param {AnnotationEditorLayer} parent\n */\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n\n /**\n * Get the properties to update in the UI for this editor.\n * @returns {Array}\n */\n get propertiesToUpdate() {\n return [];\n }\n\n get _isDraggable() {\n return this.#isDraggable;\n }\n\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= (this.height * pageHeight) / (pageWidth * 2);\n this.y += (this.width * pageWidth) / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += (this.height * pageHeight) / (pageWidth * 2);\n this.y -= (this.width * pageWidth) / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n\n /**\n * Add some commands into the CommandManager (undo/redo stuff).\n * @param {Object} params\n */\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n\n /**\n * This editor will be behind the others.\n */\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n\n /**\n * This editor will be in the foreground.\n */\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n }\n this.parent = parent;\n }\n\n /**\n * onfocus callback.\n */\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n\n /**\n * onblur callback.\n * @param {FocusEvent} event\n */\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n\n if (!this.isAttachedToDOM) {\n return;\n }\n\n // In case of focusout, the relatedTarget is the element which\n // is grabbing the focus.\n // So if the related target is an element under the div for this\n // editor, then the editor isn't unactive.\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n\n event.preventDefault();\n\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n\n /**\n * Commit the data contained in this editor.\n */\n commit() {\n this.addToAnnotationStorage();\n }\n\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n\n /**\n * Set the editor position within its parent.\n * @param {number} x\n * @param {number} y\n * @param {number} tx - x-translation in screen coordinates.\n * @param {number} ty - y-translation in screen coordinates.\n */\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n\n this.fixAndSetPosition();\n }\n\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n\n this.x += x / width;\n this.y += y / height;\n\n this.fixAndSetPosition();\n }\n\n /**\n * Translate the editor position within its parent.\n * @param {number} x - x-translation in screen coordinates.\n * @param {number} y - y-translation in screen coordinates.\n */\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n\n /**\n * Translate the editor position within its page and adjust the scroll\n * in order to have the editor in the view.\n * @param {number} x - x-translation in page coordinates.\n * @param {number} y - y-translation in page coordinates.\n */\n translateInPage(x, y) {\n this.#translate(this.pageDimensions, x, y);\n this.moveInDOM();\n this.div.scrollIntoView({ block: \"nearest\" });\n }\n\n drag(tx, ty) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1) {\n // The element will be outside of its parent so change the parent.\n const { x, y } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n\n // The editor can be moved wherever the user wants, so we don't need to fix\n // the position: it'll be done when the user will release the mouse button.\n this.div.style.left = `${(100 * this.x).toFixed(2)}%`;\n this.div.style.top = `${(100 * this.y).toFixed(2)}%`;\n this.div.scrollIntoView({ block: \"nearest\" });\n }\n\n fixAndSetPosition() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n let { x, y, width, height } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n\n switch (this.rotation) {\n case 0:\n x = Math.max(0, Math.min(pageWidth - width, x));\n y = Math.max(0, Math.min(pageHeight - height, y));\n break;\n case 90:\n x = Math.max(0, Math.min(pageWidth - height, x));\n y = Math.min(pageHeight, Math.max(width, y));\n break;\n case 180:\n x = Math.min(pageWidth, Math.max(width, x));\n y = Math.min(pageHeight, Math.max(height, y));\n break;\n case 270:\n x = Math.min(pageWidth, Math.max(height, x));\n y = Math.max(0, Math.min(pageHeight - width, y));\n break;\n }\n\n this.x = x / pageWidth;\n this.y = y / pageHeight;\n\n this.div.style.left = `${(100 * this.x).toFixed(2)}%`;\n this.div.style.top = `${(100 * this.y).toFixed(2)}%`;\n }\n\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n\n /**\n * Convert a screen translation into a page one.\n * @param {number} x\n * @param {number} y\n */\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n\n /**\n * Convert a page translation into a screen one.\n * @param {number} x\n * @param {number} y\n */\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90: {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270: {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight],\n } = this;\n const scaledWidth = pageWidth * parentScale;\n const scaledHeight = pageHeight * parentScale;\n return FeatureTest.isCSSRoundSupported\n ? [Math.round(scaledWidth), Math.round(scaledHeight)]\n : [scaledWidth, scaledHeight];\n }\n\n /**\n * Set the dimensions of this editor.\n * @param {number} width\n * @param {number} height\n */\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.div.style.width = `${((100 * width) / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n this.div.style.height = `${((100 * height) / parentHeight).toFixed(2)}%`;\n }\n }\n\n fixDims() {\n const { style } = this.div;\n const { height, width } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${((100 * parseFloat(width)) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${((100 * parseFloat(height)) / parentHeight).toFixed(\n 2\n )}%`;\n }\n }\n\n /**\n * Get the translation used to position this editor when it's created.\n * @returns {Array<number>}\n */\n getInitialTranslation() {\n return [0, 0];\n }\n\n static #noContextMenu(e) {\n e.preventDefault();\n }\n\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"];\n if (!this._willKeepAspectRatio) {\n classes.push(\"topMiddle\", \"middleRight\", \"bottomMiddle\", \"middleLeft\");\n }\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.addEventListener(\n \"pointerdown\",\n this.#resizerPointerdown.bind(this, name)\n );\n div.addEventListener(\"contextmenu\", AnnotationEditor.#noContextMenu);\n }\n this.div.prepend(this.#resizersDiv);\n }\n\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n return;\n }\n\n const boundResizerPointermove = this.#resizerPointermove.bind(this, name);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n const pointerMoveOptions = { passive: true, capture: true };\n window.addEventListener(\n \"pointermove\",\n boundResizerPointermove,\n pointerMoveOptions\n );\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor =\n window.getComputedStyle(event.target).cursor;\n\n const pointerUpCallback = () => {\n this._isDraggable = savedDraggable;\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"blur\", pointerUpCallback);\n window.removeEventListener(\n \"pointermove\",\n boundResizerPointermove,\n pointerMoveOptions\n );\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (\n newX === savedX &&\n newY === savedY &&\n newWidth === savedWidth &&\n newHeight === savedHeight\n ) {\n return;\n }\n\n this.addCommands({\n cmd: () => {\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n this.moveInDOM();\n },\n undo: () => {\n this.width = savedWidth;\n this.height = savedHeight;\n this.x = savedX;\n this.y = savedY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n this.fixAndSetPosition();\n this.moveInDOM();\n },\n mustExec: true,\n });\n };\n window.addEventListener(\"pointerup\", pointerUpCallback);\n // If the user switches to another window (with alt+tab), then we end the\n // resize session.\n window.addEventListener(\"blur\", pointerUpCallback);\n }\n\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n\n // 10000 because we multiply by 100 and use toFixed(2) in fixAndSetPosition.\n // Without rounding, the positions of the corners other than the top left\n // one can be slightly wrong.\n const round = x => Math.round(x * 10000) / 10000;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [\n rotationMatrix[0] * x + rotationMatrix[2] * y,\n rotationMatrix[1] * x + rotationMatrix[3] * y,\n ];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [\n invRotationMatrix[0] * x + invRotationMatrix[2] * y,\n invRotationMatrix[1] * x + invRotationMatrix[3] * y,\n ];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = round(savedX + transfOppositePoint[0]);\n const oppositeY = round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n\n let [deltaX, deltaY] = this.screenToPageTranslation(\n event.movementX,\n event.movementY\n );\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(\n Math.min(\n Math.hypot(\n oppositePoint[0] - point[0] - deltaX,\n oppositePoint[1] - point[1] - deltaY\n ) / oldDiag,\n // Avoid the editor to be larger than the page.\n 1 / savedWidth,\n 1 / savedHeight\n ),\n // Avoid the editor to be smaller than the minimum size.\n minWidth / savedWidth,\n minHeight / savedHeight\n );\n } else if (isHorizontal) {\n ratioX =\n Math.max(\n minWidth,\n Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))\n ) / savedWidth;\n } else {\n ratioY =\n Math.max(\n minHeight,\n Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))\n ) / savedHeight;\n }\n\n const newWidth = round(savedWidth * ratioX);\n const newHeight = round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n }\n\n /**\n * Render this editor in a div.\n * @returns {HTMLDivElement}\n */\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.setAttribute(\"tabIndex\", 0);\n\n this.setInForeground();\n\n this.div.addEventListener(\"focusin\", this.#boundFocusin);\n this.div.addEventListener(\"focusout\", this.#boundFocusout);\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n this.div.style.maxWidth = `${((100 * parentHeight) / parentWidth).toFixed(\n 2\n )}%`;\n this.div.style.maxHeight = `${(\n (100 * parentWidth) /\n parentHeight\n ).toFixed(2)}%`;\n }\n\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n\n bindEvents(this, this.div, [\"pointerdown\"]);\n\n return this.div;\n }\n\n /**\n * Onpointerdown callback.\n * @param {PointerEvent} event\n */\n pointerdown(event) {\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Avoid to focus this editor because of a non-left click.\n event.preventDefault();\n return;\n }\n\n this.#hasBeenClicked = true;\n\n this.#setUpDragSession(event);\n }\n\n #setUpDragSession(event) {\n if (!this._isDraggable) {\n return;\n }\n\n const isSelected = this._uiManager.isSelected(this);\n this._uiManager.setUpDragSession();\n\n let pointerMoveOptions, pointerMoveCallback;\n if (isSelected) {\n pointerMoveOptions = { passive: true, capture: true };\n pointerMoveCallback = e => {\n const [tx, ty] = this.screenToPageTranslation(e.movementX, e.movementY);\n this._uiManager.dragSelectedEditors(tx, ty);\n };\n window.addEventListener(\n \"pointermove\",\n pointerMoveCallback,\n pointerMoveOptions\n );\n }\n\n const pointerUpCallback = () => {\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"blur\", pointerUpCallback);\n if (isSelected) {\n window.removeEventListener(\n \"pointermove\",\n pointerMoveCallback,\n pointerMoveOptions\n );\n }\n\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n const { isMac } = FeatureTest.platform;\n if (\n (event.ctrlKey && !isMac) ||\n event.shiftKey ||\n (event.metaKey && isMac)\n ) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n };\n window.addEventListener(\"pointerup\", pointerUpCallback);\n // If the user is using alt+tab during the dragging session, the pointerup\n // event could be not fired, but a blur event is fired so we can use it in\n // order to interrupt the dragging session.\n window.addEventListener(\"blur\", pointerUpCallback);\n }\n\n moveInDOM() {\n this.parent.moveEditorInDOM(this);\n }\n\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n this.moveInDOM();\n }\n\n /**\n * Convert the current rect into a page one.\n */\n getRect(tx, ty) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n\n switch (this.rotation) {\n case 0:\n return [\n x + shiftX + pageX,\n pageHeight - y - shiftY - height + pageY,\n x + shiftX + width + pageX,\n pageHeight - y - shiftY + pageY,\n ];\n case 90:\n return [\n x + shiftY + pageX,\n pageHeight - y + shiftX + pageY,\n x + shiftY + height + pageX,\n pageHeight - y + shiftX + width + pageY,\n ];\n case 180:\n return [\n x - shiftX - width + pageX,\n pageHeight - y + shiftY + pageY,\n x - shiftX + pageX,\n pageHeight - y + shiftY + height + pageY,\n ];\n case 270:\n return [\n x - shiftY - height + pageX,\n pageHeight - y - shiftX - width + pageY,\n x - shiftY + pageX,\n pageHeight - y - shiftX + pageY,\n ];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n\n const width = x2 - x1;\n const height = y2 - y1;\n\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n\n /**\n * Executed once this editor has been rendered.\n */\n onceAdded() {}\n\n /**\n * Check if the editor contains something.\n * @returns {boolean}\n */\n isEmpty() {\n return false;\n }\n\n /**\n * Enable edit mode.\n */\n enableEditMode() {\n this.#isInEditMode = true;\n }\n\n /**\n * Disable edit mode.\n */\n disableEditMode() {\n this.#isInEditMode = false;\n }\n\n /**\n * Check if the editor is edited.\n * @returns {boolean}\n */\n isInEditMode() {\n return this.#isInEditMode;\n }\n\n /**\n * If it returns true, then this editor handle the keyboard\n * events itself.\n * @returns {boolean}\n */\n shouldGetKeyboardEvents() {\n return false;\n }\n\n /**\n * Check if this editor needs to be rebuilt or not.\n * @returns {boolean}\n */\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n\n /**\n * Rebuild the editor in case it has been removed on undo.\n *\n * To implement in subclasses.\n */\n rebuild() {\n this.div?.addEventListener(\"focusin\", this.#boundFocusin);\n this.div?.addEventListener(\"focusout\", this.#boundFocusout);\n }\n\n /**\n * Serialize the editor.\n * The result of the serialization will be used to construct a\n * new annotation to add to the pdf document.\n *\n * To implement in subclasses.\n * @param {boolean} isForCopying\n * @param {Object} [context]\n */\n serialize(_isForCopying = false, _context = null) {\n unreachable(\"An editor must be serializable\");\n }\n\n /**\n * Deserialize the editor.\n * The result of the deserialization is a new editor.\n *\n * @param {Object} data\n * @param {AnnotationEditorLayer} parent\n * @param {AnnotationEditorUIManager} uiManager\n * @returns {AnnotationEditor}\n */\n static deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager,\n });\n editor.rotation = data.rotation;\n\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(\n data.rect,\n pageHeight\n );\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n\n return editor;\n }\n\n /**\n * Remove this editor.\n * It's used on ctrl+backspace action.\n */\n remove() {\n this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n\n if (!this.isEmpty()) {\n // The editor is removed but it can be back at some point thanks to\n // undo/redo so we must commit it before.\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n }\n\n /**\n * @returns {boolean} true if this editor can be resized.\n */\n get isResizable() {\n return false;\n }\n\n /**\n * Add the resizers to this editor.\n */\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n }\n }\n\n /**\n * Select this editor.\n */\n select() {\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n }\n\n /**\n * Unselect this editor.\n */\n unselect() {\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n // Don't use this.div.blur() because we don't know where the focus will\n // go.\n this._uiManager.currentLayer.div.focus();\n }\n }\n\n /**\n * Update some parameters which have been changed through the UI.\n * @param {number} type\n * @param {*} value\n */\n updateParams(type, value) {}\n\n /**\n * When the user disables the editing mode some editors can change some of\n * their properties.\n */\n disableEditing() {}\n\n /**\n * When the user enables the editing mode some editors can change some of\n * their properties.\n */\n enableEditing() {}\n\n /**\n * The editor is about to be edited.\n */\n enterInEditMode() {}\n\n /**\n * Get the div which really contains the displayed content.\n */\n get contentDiv() {\n return this.div;\n }\n\n /**\n * If true then the editor is currently edited.\n * @type {boolean}\n */\n get isEditing() {\n return this.#isEditing;\n }\n\n /**\n * When set to true, it means that this editor is currently edited.\n * @param {boolean} value\n */\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n\n /**\n * Set the aspect ratio to use when resizing.\n * @param {number} width\n * @param {number} height\n */\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const { style } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n\n static get MIN_SIZE() {\n return 16;\n }\n}\n\n// This class is used to fake an editor which has been deleted.\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n\n serialize() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n };\n }\n}\n\nexport { AnnotationEditor };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./editor.js\").AnnotationEditor} AnnotationEditor */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n AnnotationEditorParamsType,\n AnnotationEditorPrefix,\n AnnotationEditorType,\n FeatureTest,\n getUuid,\n shadow,\n Util,\n warn,\n} from \"../../shared/util.js\";\nimport { getColorValues, getRGB, PixelsPerInch } from \"../display_utils.js\";\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\n\n/**\n * Convert a number between 0 and 100 into an hex number between 0 and 255.\n * @param {number} opacity\n * @return {string}\n */\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity)))\n .toString(16)\n .padStart(2, \"0\");\n}\n\n/**\n * Class to create some unique ids for the different editors.\n */\nclass IdManager {\n #id = 0;\n\n /**\n * Get a unique id.\n * @returns {string}\n */\n getId() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\n\n/**\n * Class to manage the images used by the editors.\n * The main idea is to try to minimize the memory used by the images.\n * The images are cached and reused when possible\n * We use a refCounter to know when an image is not used anymore but we need to\n * be able to restore an image after a remove+undo, so we keep a file reference\n * or an url one.\n */\nclass ImageManager {\n #baseId = getUuid();\n\n #id = 0;\n\n #cache = null;\n\n static get _isSVGFittingCanvas() {\n // By default, Firefox doesn't rescale without preserving the aspect ratio\n // when drawing an SVG image on a canvas, see https://bugzilla.mozilla.org/1547776.\n // The \"workaround\" is to append \"svgView(preserveAspectRatio(none))\" to the\n // url, but according to comment #15, it seems that it leads to unexpected\n // behavior in Safari.\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\");\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n // We already tried to load the image but it failed.\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false,\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n\n const response = await fetch(rawData);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n image = await response.blob();\n } else {\n image = data.file = rawData;\n }\n\n if (image.type === \"image/svg+xml\") {\n // Unfortunately, createImageBitmap doesn't work with SVG images.\n // (see https://bugzilla.mozilla.org/1841972).\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = (data.svgUrl = fileReader.result);\n // We need to set the preserveAspectRatio to none in order to let\n // the image fits the canvas when resizing.\n imageElement.src = (await mustRemoveAspectRatioPromise)\n ? `${url}#svgView(preserveAspectRatio(none))`\n : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n console.error(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n\n async getFromFile(file) {\n const { lastModified, name, size, type } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n\n if (data.file) {\n return this.getFromFile(data.file);\n }\n return this.getFromUrl(data.url);\n }\n\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n data.bitmap = null;\n }\n\n // We can use the id only if it belongs this manager.\n // We must take care of having the right manager because we can copy/paste\n // some images from other documents, hence it'd be a pity to use an id from an\n // other manager.\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\n\n/**\n * Class to handle undo/redo.\n * Commands are just saved in a buffer.\n * If we hit some memory issues we could likely use a circular buffer.\n * It has to be used as a singleton.\n */\nclass CommandManager {\n #commands = [];\n\n #locked = false;\n\n #maxSize;\n\n #position = -1;\n\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n\n /**\n * @typedef {Object} addOptions\n * @property {function} cmd\n * @property {function} undo\n * @property {boolean} mustExec\n * @property {number} type\n * @property {boolean} overwriteIfSameType\n * @property {boolean} keepUndo\n */\n\n /**\n * Add a new couple of commands to be used in case of redo/undo.\n * @param {addOptions} options\n */\n add({\n cmd,\n undo,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false,\n }) {\n if (mustExec) {\n cmd();\n }\n\n if (this.#locked) {\n return;\n }\n\n const save = { cmd, undo, type };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n // All the commands have been undone and then a new one is added\n // hence we clear the queue.\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n // For example when we change a color we don't want to\n // be able to undo all the steps, hence we only want to\n // keep the last undoable action in this sequence of actions.\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n\n this.#commands.push(save);\n }\n\n /**\n * Undo the last command.\n */\n undo() {\n if (this.#position === -1) {\n // Nothing to undo.\n return;\n }\n\n // Avoid to insert something during the undo execution.\n this.#locked = true;\n this.#commands[this.#position].undo();\n this.#locked = false;\n\n this.#position -= 1;\n }\n\n /**\n * Redo the last command.\n */\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n\n // Avoid to insert something during the redo execution.\n this.#locked = true;\n this.#commands[this.#position].cmd();\n this.#locked = false;\n }\n }\n\n /**\n * Check if there is something to undo.\n * @returns {boolean}\n */\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n\n /**\n * Check if there is something to redo.\n * @returns {boolean}\n */\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n\n destroy() {\n this.#commands = null;\n }\n}\n\n/**\n * Class to handle the different keyboards shortcuts we can have on mac or\n * non-mac OSes.\n */\nclass KeyboardManager {\n /**\n * Create a new keyboard manager class.\n * @param {Array<Array>} callbacks - an array containing an array of shortcuts\n * and a callback to call.\n * A shortcut is a string like `ctrl+c` or `mac+ctrl+c` for mac OS.\n */\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n\n const { isMac } = FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), { callback, options });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, { callback, options });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n\n /**\n * Serialize an event into a string in order to match a\n * potential key for a callback.\n * @param {KeyboardEvent} event\n * @returns {string}\n */\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n\n return str;\n }\n\n /**\n * Execute a callback, if any, for a given keyboard event.\n * The self is used as `this` in the callback.\n * @param {Object} self.\n * @param {KeyboardEvent} event\n * @returns\n */\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: { bubbles = false, args = [], checker = null },\n } = info;\n\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args)();\n\n // For example, ctrl+s in a FreeText must be handled by the viewer, hence\n // the event must bubble.\n if (!bubbles) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\n\nclass ColorManager {\n static _colorsMapping = new Map([\n [\"CanvasText\", [0, 0, 0]],\n [\"Canvas\", [255, 255, 255]],\n ]);\n\n get _colors() {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof document === \"undefined\"\n ) {\n return shadow(this, \"_colors\", ColorManager._colorsMapping);\n }\n\n const colors = new Map([\n [\"CanvasText\", null],\n [\"Canvas\", null],\n ]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n\n /**\n * In High Contrast Mode, the color on the screen is not always the\n * real color used in the pdf.\n * For example in some cases white can appear to be black but when saving\n * we want to have white.\n * @param {string} color\n * @returns {Array<number>}\n */\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n\n /**\n * An input element must have its color value as a hex string\n * and not as color name.\n * So this function converts a name into an hex string.\n * @param {string} name\n * @returns {string}\n */\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\n\n/**\n * A pdf has several pages and each of them when it will rendered\n * will have an AnnotationEditorLayer which will contain the some\n * new Annotations associated to an editor in order to modify them.\n *\n * This class is used to manage all the different layers, editors and\n * some action like copy/paste, undo/redo, ...\n */\nclass AnnotationEditorUIManager {\n #activeEditor = null;\n\n #allEditors = new Map();\n\n #allLayers = new Map();\n\n #annotationStorage = null;\n\n #commandManager = new CommandManager();\n\n #currentPageIndex = 0;\n\n #deletedAnnotationsElementIds = new Set();\n\n #draggingEditors = null;\n\n #editorTypes = null;\n\n #editorsToRescale = new Set();\n\n #eventBus = null;\n\n #filterFactory = null;\n\n #idManager = new IdManager();\n\n #isEnabled = false;\n\n #isWaiting = false;\n\n #lastActiveElement = null;\n\n #mode = AnnotationEditorType.NONE;\n\n #selectedEditors = new Set();\n\n #pageColors = null;\n\n #boundBlur = this.blur.bind(this);\n\n #boundFocus = this.focus.bind(this);\n\n #boundCopy = this.copy.bind(this);\n\n #boundCut = this.cut.bind(this);\n\n #boundPaste = this.paste.bind(this);\n\n #boundKeydown = this.keydown.bind(this);\n\n #boundOnEditingAction = this.onEditingAction.bind(this);\n\n #boundOnPageChanging = this.onPageChanging.bind(this);\n\n #boundOnScaleChanging = this.onScaleChanging.bind(this);\n\n #boundOnRotationChanging = this.onRotationChanging.bind(this);\n\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n };\n\n #translation = [0, 0];\n\n #translationTimeoutId = null;\n\n #container = null;\n\n #viewer = null;\n\n static TRANSLATE_SMALL = 1; // page units.\n\n static TRANSLATE_BIG = 10; // page units.\n\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n\n const arrowChecker = self => {\n // If the focused element is an input, we don't want to handle the arrow.\n // For example, sliders can be controlled with the arrow keys.\n const { activeElement } = document;\n return (\n activeElement &&\n self.#container.contains(activeElement) &&\n self.hasSomethingToControl()\n );\n };\n\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n\n return shadow(\n this,\n \"_keyboardManager\",\n new KeyboardManager([\n [[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll],\n [[\"ctrl+z\", \"mac+meta+z\"], proto.undo],\n [\n // On mac, depending of the OS version, the event.key is either \"z\" or\n // \"Z\" when the user presses \"meta+shift+z\".\n [\n \"ctrl+y\",\n \"ctrl+shift+z\",\n \"mac+meta+shift+z\",\n \"ctrl+shift+Z\",\n \"mac+meta+shift+Z\",\n ],\n proto.redo,\n ],\n [\n [\n \"Backspace\",\n \"alt+Backspace\",\n \"ctrl+Backspace\",\n \"shift+Backspace\",\n \"mac+Backspace\",\n \"mac+alt+Backspace\",\n \"mac+ctrl+Backspace\",\n \"Delete\",\n \"ctrl+Delete\",\n \"shift+Delete\",\n \"mac+Delete\",\n ],\n proto.delete,\n ],\n [[\"Escape\", \"mac+Escape\"], proto.unselectAll],\n [\n [\"ArrowLeft\", \"mac+ArrowLeft\"],\n proto.translateSelectedEditors,\n { args: [-small, 0], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n proto.translateSelectedEditors,\n { args: [-big, 0], checker: arrowChecker },\n ],\n [\n [\"ArrowRight\", \"mac+ArrowRight\"],\n proto.translateSelectedEditors,\n { args: [small, 0], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n proto.translateSelectedEditors,\n { args: [big, 0], checker: arrowChecker },\n ],\n [\n [\"ArrowUp\", \"mac+ArrowUp\"],\n proto.translateSelectedEditors,\n { args: [0, -small], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n proto.translateSelectedEditors,\n { args: [0, -big], checker: arrowChecker },\n ],\n [\n [\"ArrowDown\", \"mac+ArrowDown\"],\n proto.translateSelectedEditors,\n { args: [0, small], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n proto.translateSelectedEditors,\n { args: [0, big], checker: arrowChecker },\n ],\n ])\n );\n }\n\n constructor(container, viewer, eventBus, pdfDocument, pageColors) {\n this.#container = container;\n this.#viewer = viewer;\n this.#eventBus = eventBus;\n this.#eventBus._on(\"editingaction\", this.#boundOnEditingAction);\n this.#eventBus._on(\"pagechanging\", this.#boundOnPageChanging);\n this.#eventBus._on(\"scalechanging\", this.#boundOnScaleChanging);\n this.#eventBus._on(\"rotationchanging\", this.#boundOnRotationChanging);\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0,\n };\n }\n\n destroy() {\n this.#removeKeyboardManager();\n this.#removeFocusManager();\n this.#eventBus._off(\"editingaction\", this.#boundOnEditingAction);\n this.#eventBus._off(\"pagechanging\", this.#boundOnPageChanging);\n this.#eventBus._off(\"scalechanging\", this.#boundOnScaleChanging);\n this.#eventBus._off(\"rotationchanging\", this.#boundOnRotationChanging);\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n }\n\n get hcmFilter() {\n return shadow(\n this,\n \"hcmFilter\",\n this.#pageColors\n ? this.#filterFactory.addHCMFilter(\n this.#pageColors.foreground,\n this.#pageColors.background\n )\n : \"none\"\n );\n }\n\n onPageChanging({ pageNumber }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n\n focusMainContainer() {\n this.#container.focus();\n }\n\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height,\n } = layer.div.getBoundingClientRect();\n if (\n x >= layerX &&\n x <= layerX + width &&\n y >= layerY &&\n y <= layerY + height\n ) {\n return layer;\n }\n }\n return null;\n }\n\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n\n onScaleChanging({ scale }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n }\n\n onRotationChanging({ pagesRotation }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n\n /**\n * Add an editor in the annotation storage.\n * @param {AnnotationEditor} editor\n */\n addToAnnotationStorage(editor) {\n if (\n !editor.isEmpty() &&\n this.#annotationStorage &&\n !this.#annotationStorage.has(editor.id)\n ) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n\n #addFocusManager() {\n window.addEventListener(\"focus\", this.#boundFocus);\n window.addEventListener(\"blur\", this.#boundBlur);\n }\n\n #removeFocusManager() {\n window.removeEventListener(\"focus\", this.#boundFocus);\n window.removeEventListener(\"blur\", this.#boundBlur);\n }\n\n blur() {\n if (!this.hasSelection) {\n return;\n }\n // When several editors are selected and the window loses focus, we want to\n // keep the last active element in order to be able to focus it again when\n // the window gets the focus back but we don't want to trigger any focus\n // callbacks else only one editor will be selected.\n const { activeElement } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\n \"focusin\",\n () => {\n lastEditor._focusEventsAllowed = true;\n },\n { once: true }\n );\n lastActiveElement.focus();\n }\n\n #addKeyboardManager() {\n // The keyboard events are caught at the container level in order to be able\n // to execute some callbacks even if the current page doesn't have focus.\n window.addEventListener(\"keydown\", this.#boundKeydown, { capture: true });\n }\n\n #removeKeyboardManager() {\n window.removeEventListener(\"keydown\", this.#boundKeydown, {\n capture: true,\n });\n }\n\n #addCopyPasteListeners() {\n document.addEventListener(\"copy\", this.#boundCopy);\n document.addEventListener(\"cut\", this.#boundCut);\n document.addEventListener(\"paste\", this.#boundPaste);\n }\n\n #removeCopyPasteListeners() {\n document.removeEventListener(\"copy\", this.#boundCopy);\n document.removeEventListener(\"cut\", this.#boundCut);\n document.removeEventListener(\"paste\", this.#boundPaste);\n }\n\n /**\n * Copy callback.\n * @param {ClipboardEvent} event\n */\n copy(event) {\n event.preventDefault();\n\n // An editor is being edited so just commit it.\n this.#activeEditor?.commitOrRemove();\n\n if (!this.hasSelection) {\n return;\n }\n\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(/* isForCopying = */ true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n\n /**\n * Cut callback.\n * @param {ClipboardEvent} event\n */\n cut(event) {\n this.copy(event);\n this.delete();\n }\n\n /**\n * Paste callback.\n * @param {ClipboardEvent} event\n */\n paste(event) {\n event.preventDefault();\n const { clipboardData } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n\n if (!Array.isArray(data)) {\n return;\n }\n\n this.unselectAll();\n const layer = this.currentLayer;\n\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({ cmd, undo, mustExec: true });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n\n /**\n * Keydown callback.\n * @param {KeyboardEvent} event\n */\n keydown(event) {\n if (!this.getActive()?.shouldGetKeyboardEvents()) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n\n /**\n * Execute an action for a given name.\n * For example, the user can click on the \"Undo\" entry in the context menu\n * and it'll trigger the undo action.\n * @param {Object} details\n */\n onEditingAction(details) {\n if ([\"undo\", \"redo\", \"delete\", \"selectAll\"].includes(details.name)) {\n this[details.name]();\n }\n }\n\n /**\n * Update the different possible states of this manager, e.g. is there\n * something to undo, redo, ...\n * @param {Object} details\n */\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(\n ([key, value]) => this.#previousStates[key] !== value\n );\n\n if (hasChanged) {\n this.#eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details),\n });\n }\n }\n\n #dispatchUpdateUI(details) {\n this.#eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details,\n });\n }\n\n /**\n * Set the editing state.\n * It can be useful to temporarily disable it when the user is editing a\n * FreeText annotation.\n * @param {boolean} isEditing\n */\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false,\n });\n } else {\n this.#removeFocusManager();\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false,\n });\n this.disableUserSelect(false);\n }\n }\n\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n\n /**\n * Get an id.\n * @returns {string}\n */\n getId() {\n return this.#idManager.getId();\n }\n\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n\n /**\n * Add a new layer for a page which will contains the editors.\n * @param {AnnotationEditorLayer} layer\n */\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n\n /**\n * Remove a layer.\n * @param {AnnotationEditorLayer} layer\n */\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n\n /**\n * Change the editor mode (None, FreeText, Ink, ...)\n * @param {number} mode\n * @param {string|null} editId\n */\n updateMode(mode, editId = null) {\n if (this.#mode === mode) {\n return;\n }\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n return;\n }\n this.setEditingState(true);\n this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId) {\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n break;\n }\n }\n }\n\n /**\n * Update the toolbar if it's required to reflect the tool currently used.\n * @param {number} mode\n * @returns {undefined}\n */\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n this.#eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n });\n }\n\n /**\n * Update a parameter in the current editor or globally.\n * @param {number} type\n * @param {*} value\n */\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n if (type === AnnotationEditorParamsType.CREATE) {\n this.currentLayer.addNewEditor(type);\n return;\n }\n\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n\n /**\n * Enable all the layers.\n */\n #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n for (const layer of this.#allLayers.values()) {\n layer.enable();\n }\n }\n }\n\n /**\n * Disable all the layers.\n */\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n }\n }\n\n /**\n * Get all the editors belonging to a given page.\n * @param {number} pageIndex\n * @returns {Array<AnnotationEditor>}\n */\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n\n /**\n * Get an editor with the given id.\n * @param {string} id\n * @returns {AnnotationEditor}\n */\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n\n /**\n * Add a new editor.\n * @param {AnnotationEditor} editor\n */\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n\n /**\n * Remove an editor.\n * @param {AnnotationEditor} editor\n */\n removeEditor(editor) {\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n if (\n !editor.annotationElementId ||\n !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)\n ) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n\n /**\n * The annotation element with the given id has been deleted.\n * @param {AnnotationEditor} editor\n */\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n editor.deleted = true;\n }\n\n /**\n * Check if the annotation element with the given id has been deleted.\n * @param {string} annotationElementId\n * @returns {boolean}\n */\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n\n /**\n * The annotation element with the given id have been restored.\n * @param {AnnotationEditor} editor\n */\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n editor.deleted = false;\n }\n\n /**\n * Add an editor to the layer it belongs to or add it to the global map.\n * @param {AnnotationEditor} editor\n */\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n }\n }\n\n /**\n * Set the given editor as the active one.\n * @param {AnnotationEditor} editor\n */\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n\n /**\n * Add or remove an editor the current selection.\n * @param {AnnotationEditor} editor\n */\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection,\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true,\n });\n }\n\n /**\n * Set the last selected editor.\n * @param {AnnotationEditor} editor\n */\n setSelected(editor) {\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true,\n });\n }\n\n /**\n * Check if the editor is selected.\n * @param {AnnotationEditor} editor\n */\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n\n /**\n * Unselect an editor.\n * @param {AnnotationEditor} editor\n */\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection,\n });\n }\n\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n\n /**\n * Undo the last command.\n */\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty(),\n });\n }\n\n /**\n * Redo the last undoed command.\n */\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty(),\n });\n }\n\n /**\n * Add a command to execute (cmd) and another one to undo it.\n * @param {Object} params\n */\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty(),\n });\n }\n\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n\n return false;\n }\n\n /**\n * Delete the current editor or all.\n */\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n\n const editors = [...this.#selectedEditors];\n const cmd = () => {\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n\n this.addCommands({ cmd, undo, mustExec: true });\n }\n\n commitOrRemove() {\n // An editor is being edited so just commit it.\n this.#activeEditor?.commitOrRemove();\n }\n\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n\n /**\n * Select the editors.\n * @param {Array<AnnotationEditor>} editors\n */\n #selectEditors(editors) {\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({ hasSelectedEditor: true });\n }\n\n /**\n * Select all the editors.\n */\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n\n /**\n * Unselect all the selected editors.\n */\n unselectAll() {\n if (this.#activeEditor) {\n // An editor is being edited so just commit it.\n this.#activeEditor.commitOrRemove();\n return;\n }\n\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false,\n });\n }\n\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n\n // We don't want to have an undo/redo for each translation so we wait a bit\n // before adding the command to the command manager.\n const TIME_TO_WAIT = 1000;\n\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n }\n }\n },\n mustExec: false,\n });\n }, TIME_TO_WAIT);\n\n for (const editor of editors) {\n editor.translateInPage(x, y);\n }\n }\n\n /**\n * Set up the drag session for moving the selected editors.\n */\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n // Avoid to have spurious text selection in the text layer when dragging.\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.parent.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1,\n });\n }\n }\n\n /**\n * Ends the drag session.\n * @returns {boolean} true if at least one editor has been moved.\n */\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n\n for (const [{ x, y, parent }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = parent.pageIndex;\n mustBeAddedInUndoStack ||=\n x !== value.savedX ||\n y !== value.savedY ||\n parent.pageIndex !== value.savedPageIndex;\n }\n\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n // The editor can be undone/redone on a page which is not visible (and\n // which potentially has no annotation editor layer), hence we need to\n // use the pageIndex instead of the parent.\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n\n this.addCommands({\n cmd: () => {\n for (const [editor, { newX, newY, newPageIndex }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, { savedX, savedY, savedPageIndex }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true,\n });\n\n return true;\n }\n\n /**\n * Drag the set of selected editors.\n * @param {number} tx\n * @param {number} ty\n */\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n\n /**\n * Rebuild the editor (usually on undo/redo actions) on a potentially\n * non-rendered page.\n * @param {AnnotationEditor} editor\n */\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n\n /**\n * Is the current editor the one passed as argument?\n * @param {AnnotationEditor} editor\n * @returns\n */\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n\n /**\n * Get the current active editor.\n * @returns {AnnotationEditor|null}\n */\n getActive() {\n return this.#activeEditor;\n }\n\n /**\n * Get the current editor mode.\n * @returns {number}\n */\n getMode() {\n return this.#mode;\n }\n\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n}\n\nexport {\n AnnotationEditorUIManager,\n bindEvents,\n ColorManager,\n CommandManager,\n KeyboardManager,\n opacityToHex,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseFilterFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n} from \"./base_factory.js\";\nimport {\n BaseException,\n FeatureTest,\n shadow,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\n\nclass PixelsPerInch {\n static CSS = 96.0;\n\n static PDF = 72.0;\n\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\n/**\n * FilterFactory aims to create some SVG filters we can use when drawing an\n * image (or whatever) on a canvas.\n * Filters aren't applied with ctx.putImageData because it just overwrites the\n * underlying pixels.\n * With these filters, it's possible for example to apply some transfer maps on\n * an image without the need to apply them on the pixel arrays: the renderer\n * does the magic for us.\n */\nclass DOMFilterFactory extends BaseFilterFactory {\n #_cache;\n\n #_defs;\n\n #docId;\n\n #document;\n\n #hcmFilter;\n\n #hcmKey;\n\n #hcmUrl;\n\n #hcmHighlightFilter;\n\n #hcmHighlightKey;\n\n #hcmHighlightUrl;\n\n #id = 0;\n\n constructor({ docId, ownerDocument = globalThis.document } = {}) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n\n get #cache() {\n return (this.#_cache ||= new Map());\n }\n\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const { style } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n\n // When a page is zoomed the page is re-drawn but the maps are likely\n // the same.\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n\n let tableR, tableG, tableB, key;\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n key = tableR = tableG = tableB = buffer.join(\",\");\n } else {\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n tableR = bufferR.join(\",\");\n tableG = bufferG.join(\",\");\n tableB = bufferB.join(\",\");\n key = `${tableR}${tableG}${tableB}`;\n }\n\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n\n // We create a SVG filter: feComponentTransferElement\n // https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement\n\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = `url(#${id})`;\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n\n return url;\n }\n\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n if (this.#hcmKey === key) {\n return this.#hcmUrl;\n }\n\n this.#hcmKey = key;\n this.#hcmUrl = \"none\";\n this.#hcmFilter?.remove();\n\n if (!fgColor || !bgColor) {\n return this.#hcmUrl;\n }\n\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n\n if (\n (fgColor === \"#000000\" && bgColor === \"#ffffff\") ||\n fgColor === bgColor\n ) {\n return this.#hcmUrl;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance\n //\n // Relative luminance:\n // https://www.w3.org/TR/WCAG20/#relativeluminancedef\n //\n // We compute the rounded luminance of the default background color.\n // Then for every color in the pdf, if its rounded luminance is the\n // same as the background one then it's replaced by the new\n // background color else by the foreground one.\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = (this.#hcmHighlightFilter = this.#createFilter(id));\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + (i / n) * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(\n getSteps(0, 5),\n getSteps(1, 5),\n getSteps(2, 5),\n filter\n );\n\n this.#hcmUrl = `url(#${id})`;\n return this.#hcmUrl;\n }\n\n addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n if (this.#hcmHighlightKey === key) {\n return this.#hcmHighlightUrl;\n }\n\n this.#hcmHighlightKey = key;\n this.#hcmHighlightUrl = \"none\";\n this.#hcmHighlightFilter?.remove();\n\n if (!fgColor || !bgColor) {\n return this.#hcmHighlightUrl;\n }\n\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(\n 0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]\n );\n let bgGray = Math.round(\n 0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]\n );\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(\n this.#getRGB.bind(this)\n );\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [\n bgGray,\n fgGray,\n newBgRGB,\n newFgRGB,\n ];\n }\n this.#defs.style.color = \"\";\n\n // Now we can create the filters to highlight some canvas parts.\n // The colors in the pdf will almost be Canvas and CanvasText, hence we\n // want to filter them to finally get Highlight and HighlightText.\n // Since we're in HCM the background color and the foreground color should\n // be really different when converted to grayscale (if they're not then it\n // means that we've a poor contrast). Once the canvas colors are converted\n // to grayscale we can easily map them on their new colors.\n // The grayscale step is important because if we've something like:\n // fgColor = #FF....\n // bgColor = #FF....\n // then we are enable to map the red component on the new red components\n // which can be different.\n\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n\n const id = `g_${this.#docId}_hcm_highlight_filter`;\n const filter = (this.#hcmHighlightFilter = this.#createFilter(id));\n\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(\n getSteps(newFgRGB[0], newBgRGB[0], 5),\n getSteps(newFgRGB[1], newBgRGB[1], 5),\n getSteps(newFgRGB[2], newBgRGB[2], 5),\n filter\n );\n\n this.#hcmHighlightUrl = `url(#${id})`;\n return this.#hcmHighlightUrl;\n }\n\n destroy(keepHCM = false) {\n if (keepHCM && (this.#hcmUrl || this.#hcmHighlightUrl)) {\n return;\n }\n if (this.#_defs) {\n this.#_defs.parentNode.parentNode.remove();\n this.#_defs = null;\n }\n if (this.#_cache) {\n this.#_cache.clear();\n this.#_cache = null;\n }\n this.#id = 0;\n }\n\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(\n SVG_NS,\n \"feColorMatrix\"\n );\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\n \"values\",\n \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\"\n );\n filter.append(feColorMatrix);\n }\n\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n\n return filter;\n }\n\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(\n SVG_NS,\n \"feComponentTransfer\"\n );\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({ ownerDocument = globalThis.document } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\nasync function fetchData(url, asTypedArray = false) {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n isValidFetchUrl(url, document.baseURI)\n ) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n return asTypedArray\n ? new Uint8Array(await response.arrayBuffer())\n : stringToBytes(await response.text());\n }\n\n // The Fetch API is not supported.\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, /* asTypedArray = */ true);\n\n if (asTypedArray) {\n request.responseType = \"arraybuffer\";\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n if (asTypedArray && request.response) {\n data = new Uint8Array(request.response);\n } else if (!asTypedArray && request.responseText) {\n data = stringToBytes(request.responseText);\n }\n if (data) {\n resolve(data);\n return;\n }\n }\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n return fetchData(url, /* asTypedArray = */ this.isCompressed).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n /**\n * @ignore\n */\n _fetchData(url) {\n return fetchData(url, /* asTypedArray = */ true);\n }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n /**\n * @ignore\n */\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n * yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n * default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n * default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n * viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n * in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n /**\n * @param {PageViewportParameters}\n */\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n // Normalize the rotation, by clamping it to the [0, 360) range.\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\n \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n );\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n ];\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * The original, un-scaled, viewport dimensions.\n * @type {Object}\n */\n get rawDims() {\n const { viewBox } = this;\n return shadow(this, \"rawDims\", {\n pageWidth: viewBox[2] - viewBox[0],\n pageHeight: viewBox[3] - viewBox[1],\n pageX: viewBox[0],\n pageY: viewBox[1],\n });\n }\n\n /**\n * Clones viewport, with optional additional properties.\n * @param {PageViewportCloneParameters} [params]\n * @returns {PageViewport} Cloned viewport.\n */\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Array} Array containing `x`- and `y`-coordinates of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Array containing corresponding coordinates of the\n * rectangle in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Array} Array containing `x`- and `y`-coordinates of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\n\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\n\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @param {boolean} [onlyStripPath]\n * @returns {string}\n */\nfunction getFilenameFromUrl(url, onlyStripPath = false) {\n if (!onlyStripPath) {\n [url] = url.split(/[#?]/, 1);\n }\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n * unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n // SCHEME HOST 1.PATH 2.QUERY 3.REF\n // Pattern to get last matching NAME.pdf\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename =\n reFilename.exec(splitURI[1]) ||\n reFilename.exec(splitURI[2]) ||\n reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n try {\n suggestedFilename = reFilename.exec(\n decodeURIComponent(suggestedFilename)\n )[0];\n } catch {\n // Possible (extremely rare) errors:\n // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n }\n }\n }\n return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n started = Object.create(null);\n\n times = [];\n\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n }\n\n toString() {\n // Find the longest name for padding purposes.\n const outBuf = [];\n let longest = 0;\n for (const { name } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const { name, start, end } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: isValidFetchUrl\");\n }\n try {\n const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n // The Fetch API only supports the http/https protocols, and not file/ftp.\n return protocol === \"http:\" || protocol === \"https:\";\n } catch {\n return false; // `new URL()` will throw on incorrect data.\n }\n}\n\n/**\n * @param {string} src\n * @param {boolean} [removeScriptElement]\n * @returns {Promise<void>}\n */\nfunction loadScript(src, removeScriptElement = false) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n resolve(evt);\n };\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n (document.head || document.documentElement).append(script);\n });\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n /**\n * Convert a PDF date string to a JavaScript `Date` object.\n *\n * The PDF date string format is described in section 7.9.4 of the official\n * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n * edition) Adobe describes the same format including a trailing apostrophe.\n * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n * them. We ignore all apostrophes as they are not necessary for date parsing.\n *\n * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n * parts of the date string).\n *\n * @param {string} input\n * @returns {Date|null}\n */\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n\n // Lazily initialize the regular expression.\n pdfDateStringRegex ||= new RegExp(\n \"^D:\" + // Prefix (required)\n \"(\\\\d{4})\" + // Year (required)\n \"(\\\\d{2})?\" + // Month (optional)\n \"(\\\\d{2})?\" + // Day (optional)\n \"(\\\\d{2})?\" + // Hour (optional)\n \"(\\\\d{2})?\" + // Minute (optional)\n \"(\\\\d{2})?\" + // Second (optional)\n \"([Z|+|-])?\" + // Universal time relation (optional)\n \"(\\\\d{2})?\" + // Offset hour (optional)\n \"'?\" + // Splitting apostrophe (optional)\n \"(\\\\d{2})?\" + // Offset minute (optional)\n \"'?\" // Trailing apostrophe (optional)\n );\n\n // Optional fields that don't satisfy the requirements from the regular\n // expression (such as incorrect digit counts or numbers that are out of\n // range) will fall back the defaults from the specification.\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n\n // JavaScript's `Date` object expects the month to be between 0 and 11\n // instead of 1 and 12, so we have to correct for that.\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n // Universal time relation 'Z' means that the local time is equal to the\n // universal time, whereas the relations '+'/'-' indicate that the local\n // time is later respectively earlier than the universal time. Every date\n // is normalized to universal time.\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n const { width, height } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n return new PageViewport({\n viewBox,\n scale,\n rotation,\n });\n}\n\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [\n (colorRGB & 0xff0000) >> 16,\n (colorRGB & 0x00ff00) >> 8,\n colorRGB & 0x0000ff,\n ];\n }\n\n if (color.startsWith(\"rgb(\")) {\n // getComputedStyle(...).color returns a `rgb(R, G, B)` color.\n return color\n .slice(/* \"rgb(\".length */ 4, -1) // Strip out \"rgb(\" and \")\".\n .split(\",\")\n .map(x => parseInt(x));\n }\n\n if (color.startsWith(\"rgba(\")) {\n return color\n .slice(/* \"rgba(\".length */ 5, -1) // Strip out \"rgba(\" and \")\".\n .split(\",\")\n .map(x => parseInt(x))\n .slice(0, 3);\n }\n\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\n\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\n\nfunction getCurrentTransform(ctx) {\n const { a, b, c, d, e, f } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\n\nfunction getCurrentTransformInverse(ctx) {\n const { a, b, c, d, e, f } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\n\n/**\n * @param {HTMLDivElement} div\n * @param {PageViewport} viewport\n * @param {boolean} mustFlip\n * @param {boolean} mustRotate\n */\nfunction setLayerDimensions(\n div,\n viewport,\n mustFlip = false,\n mustRotate = true\n) {\n if (viewport instanceof PageViewport) {\n const { pageWidth, pageHeight } = viewport.rawDims;\n const { style } = div;\n const useRound = FeatureTest.isCSSRoundSupported;\n\n const w = `var(--scale-factor) * ${pageWidth}px`,\n h = `var(--scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`,\n heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`;\n\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\n\nexport {\n AnnotationPrefix,\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMFilterFactory,\n DOMStandardFontDataFactory,\n DOMSVGFactory,\n getColorValues,\n getCurrentTransform,\n getCurrentTransformInverse,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getRGB,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n isValidFetchUrl,\n loadScript,\n PageViewport,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n setLayerDimensions,\n StatTimer,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CMapCompressionType, unreachable } from \"../shared/util.js\";\n\nclass BaseFilterFactory {\n constructor() {\n if (this.constructor === BaseFilterFactory) {\n unreachable(\"Cannot initialize BaseFilterFactory.\");\n }\n }\n\n addFilter(maps) {\n return \"none\";\n }\n\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n\n addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n\n destroy(keepHCM = false) {}\n}\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n unreachable(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\"),\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\n\nclass BaseCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = true }) {\n if (this.constructor === BaseCMapReaderFactory) {\n unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({ name }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n );\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed\n ? CMapCompressionType.BINARY\n : CMapCompressionType.NONE;\n\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(\n `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n );\n });\n }\n\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseStandardFontDataFactory {\n constructor({ baseUrl = null }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n\n async fetch({ filename }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The standard font \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"standardFontDataUrl\" API parameter is provided.'\n );\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n\n /**\n * @ignore\n */\n _fetchData(url) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n unreachable(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n return svg;\n }\n\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n\n /**\n * @ignore\n */\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\n\nexport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseFilterFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n};\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"./util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (isArrayBuffer(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\n \"Wrong data format in MurmurHash3_64_update. \" +\n \"Input must be a string or array.\"\n );\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n k2 = (k2 << 15) | (k2 >>> 17);\n k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n h2 ^= k2;\n h2 = (h2 << 13) | (h2 >>> 19);\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n return (\n (h1 >>> 0).toString(16).padStart(8, \"0\") +\n (h2 >>> 0).toString(16).padStart(8, \"0\")\n );\n }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FeatureTest,\n isNodeJS,\n shadow,\n string32,\n unreachable,\n warn,\n} from \"../shared/util.js\";\n\nclass FontLoader {\n #systemFonts = new Set();\n\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null, // For testing only.\n }) {\n this._document = ownerDocument;\n\n this.nativeFontFaces = new Set();\n this.styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n ? styleElement\n : null;\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement\n .getElementsByTagName(\"head\")[0]\n .append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n\n if (this.styleElement) {\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async loadSystemFont(info) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(\n !this.disableFontFace,\n \"loadSystemFont shouldn't be called when `disableFontFace` is set.\"\n );\n\n if (this.isFontLoadingAPISupported) {\n const { loadedName, src, style } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n } catch {\n warn(\n `Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`\n );\n\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n\n unreachable(\n \"Not implemented: loadSystemFont without the Font Loading API.\"\n );\n }\n\n async bind(font) {\n // Add the font to the DOM only once; skip if the font is already loaded.\n if (font.attached || (font.missingFile && !font.systemFontInfo)) {\n return;\n }\n font.attached = true;\n\n if (font.systemFontInfo) {\n await this.loadSystemFont(font.systemFontInfo);\n return;\n }\n\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n\n // When font loading failed, fall back to the built-in font renderer.\n font.disableFontFace = true;\n throw ex;\n }\n }\n return; // The font was, asynchronously, loaded.\n }\n\n // !this.isFontLoadingAPISupported\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return; // The font was, synchronously, loaded.\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: async font loading\");\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n // The font was, asynchronously, loaded.\n }\n }\n\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n return shadow(\n this,\n \"isFontLoadingAPISupported\",\n hasFonts && !this.styleElement\n );\n }\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n\n get isSyncFontLoadingSupported() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return shadow(this, \"isSyncFontLoadingSupported\", true);\n }\n\n let supported = false;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n if (isNodeJS) {\n // Node.js - we can pretend that sync font loading is supported.\n supported = true;\n } else if (\n typeof navigator !== \"undefined\" &&\n // User agent string sniffing is bad, but there is no reliable way to\n // tell if the font is fully loaded and ready to be used with canvas.\n /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)\n ) {\n // Firefox, from version 14, supports synchronous font loading.\n supported = true;\n }\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _queueLoadingCallback\");\n }\n\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n // Sending all completed requests in order of how they were queued.\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const { loadingRequests } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback,\n };\n loadingRequests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _loadTestFont\");\n }\n\n // This is a CFF font with 1 glyph for '.' that fills its entire width\n // and height.\n const testFont = atob(\n \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n );\n return shadow(this, \"_loadTestFont\", testFont);\n }\n\n _prepareFontLoadEvent(font, request) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _prepareFontLoadEvent\");\n }\n\n /** Hack begin */\n // There's currently no event when a font has finished downloading so the\n // following code is a dirty hack to 'guess' when a font is ready.\n // It's assumed fonts are loaded in order, so add a known test font after\n // the desired fonts and then test for the loading of that test font.\n\n function int32(data, offset) {\n return (\n (data.charCodeAt(offset) << 24) |\n (data.charCodeAt(offset + 1) << 16) |\n (data.charCodeAt(offset + 2) << 8) |\n (data.charCodeAt(offset + 3) & 0xff)\n );\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n\n // The temporary canvas is used to determine if fonts are loaded.\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n\n let called = 0;\n function isFontReady(name, callback) {\n // With setTimeout clamping this gives the font ~100ms to load.\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n // Chromium seems to cache fonts based on a hash of the actual font data,\n // so the font must be modified for each load test else it will appear to\n // be loaded already.\n // TODO: This could maybe be made faster by avoiding the btoa of the full\n // font by splitting it in chunks before hand and padding the font id.\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(\n data,\n COMMENT_OFFSET,\n loadTestFontId.length,\n loadTestFontId\n );\n // CFF checksum is important for IE, adjusting it\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n }\n if (i < loadTestFontId.length) {\n // align to 4 bytes boundary\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n /** Hack end */\n }\n}\n\nclass FontFaceObject {\n constructor(\n translatedData,\n {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n inspectFont = null,\n }\n ) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._inspectFont = inspectFont;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight,\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(\n this.cssFontInfo.fontFamily,\n this.data,\n css\n );\n }\n\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = bytesToString(this.data);\n // Add the @font-face rule to the document.\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n\n this._inspectFont?.(this, url);\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n return (this.compiledGlyphs[character] = function (c, size) {\n // No-op function, to allow rendering to continue.\n });\n }\n\n // If we can, compile cmds into JS for MAXIMUM SPEED...\n if (this.isEvalSupported && FeatureTest.isEvalSupported) {\n const jsBuf = [];\n for (const current of cmds) {\n const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n // eslint-disable-next-line no-new-func\n return (this.compiledGlyphs[character] = new Function(\n \"c\",\n \"size\",\n jsBuf.join(\"\")\n ));\n }\n // ... but fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies).\n return (this.compiledGlyphs[character] = function (c, size) {\n for (const current of cmds) {\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n // eslint-disable-next-line prefer-spread\n c[current.cmd].apply(c, current.args);\n }\n });\n }\n}\n\nexport { FontFaceObject, FontLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseFilterFactory,\n BaseStandardFontDataFactory,\n} from \"./base_factory.js\";\nimport { isNodeJS, warn } from \"../shared/util.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_utils.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"SKIP_BABEL\")) {\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n try {\n globalThis.DOMMatrix = __non_webpack_require__(\"canvas\").DOMMatrix;\n } catch (ex) {\n warn(`Cannot polyfill \\`DOMMatrix\\`, rendering may be broken: \"${ex}\".`);\n }\n })();\n\n (function checkPath2D() {\n if (globalThis.Path2D || !isNodeJS) {\n return;\n }\n try {\n const { CanvasRenderingContext2D } = __non_webpack_require__(\"canvas\");\n const { polyfillPath2D } = __non_webpack_require__(\"path2d-polyfill\");\n\n globalThis.CanvasRenderingContext2D = CanvasRenderingContext2D;\n polyfillPath2D(globalThis);\n } catch (ex) {\n warn(`Cannot polyfill \\`Path2D\\`, rendering may be broken: \"${ex}\".`);\n }\n })();\n}\n\nconst fetchData = function (url) {\n return new Promise((resolve, reject) => {\n const fs = __non_webpack_require__(\"fs\");\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n resolve(new Uint8Array(data));\n });\n });\n};\n\nclass NodeFilterFactory extends BaseFilterFactory {}\n\nclass NodeCanvasFactory extends BaseCanvasFactory {\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n const Canvas = __non_webpack_require__(\"canvas\");\n return Canvas.createCanvas(width, height);\n }\n}\n\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n}\n\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n /**\n * @ignore\n */\n _fetchData(url) {\n return fetchData(url);\n }\n}\n\nexport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeFilterFactory,\n NodeStandardFontDataFactory,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n isNodeJS,\n OPS,\n shadow,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n getCurrentTransform,\n getCurrentTransformInverse,\n PixelsPerInch,\n} from \"./display_utils.js\";\nimport {\n getShadingPattern,\n PathType,\n TilingPattern,\n} from \"./pattern_helper.js\";\nimport { convertBlackAndWhiteToRGBA } from \"../shared/image_utils.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and schedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\n// To disable Type3 compilation, set the value to `-1`.\nconst MAX_SIZE_TO_COMPILE = 1000;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n * the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n * forwarded calls.\n */\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\n\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n\n delete(id) {\n delete this.cache[id];\n }\n\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\n\nfunction drawImageAtIntegerCoords(\n ctx,\n srcImg,\n srcX,\n srcY,\n srcW,\n srcH,\n destX,\n destY,\n destW,\n destH\n) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n // top-left corner is at (X, Y) and\n // bottom-right one is at (X + width, Y + height).\n\n // If leftX is 4.321 then it's rounded to 4.\n // If width is 10.432 then it's rounded to 11 because\n // rightX = leftX + width = 14.753 which is rounded to 15\n // so after rounding the total width is 11 (15 - 4).\n // It's why we can't just floor/ceil uniformly, it just depends\n // on the values we've.\n\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n\n // Some pdf contains images with 1x1 images so in case of 0-width after\n // scaling we must fallback on 1 to be sure there is something.\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n // We must apply a transformation in order to apply it on the image itself.\n // For example if a == 1 && d == -1, it means that the image itself is\n // mirrored w.r.t. the x-axis.\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n\n return [rWidth, rHeight];\n }\n\n if (a === 0 && d === 0) {\n // This path is taken in issue9462.pdf (page 3).\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n\n return [rHeight, rWidth];\n }\n\n // Not a scale matrix so let the render handle the case without rounding.\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\n\nfunction compileType3Glyph(imgData) {\n const { width, height } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([\n 0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\n ]);\n\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n\n // decodes bit-packed mask data\n const lineSize = (width + 7) & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n // finding interesting points: every point is located between mask pixels,\n // so there will be points of the (width + 1)x(height + 1) grid. Every point\n // will have flags assigned based on neighboring mask pixels:\n // 4 | 8\n // --P--\n // 2 | 1\n // We are interested only in points with the flags:\n // - outside corners: 1, 2, 4, 8;\n // - inside corners: 7, 11, 13, 14;\n // - and, intersections: 5, 10.\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n // 'sum' is the position of the current pixel configuration in the 'TYPES'\n // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum =\n (sum >> 2) +\n (data[pos + 1] ? 4 : 0) +\n (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n // building outlines\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n path.moveTo(p % width1, i);\n\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n // set new direction\n type = pp;\n // delete mark\n points[p] = 0;\n } else {\n // type is 5 or 10, ie, a crossing\n // set new direction\n type = pp & ((0x33 * type) >> 4);\n // set new type for \"future hit\"\n points[p] &= (type >> 2) | (type << 2);\n }\n path.lineTo(p % width1, (p / width1) | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n\n // Immediately release the, potentially large, `Uint8Array`s after parsing.\n data = null;\n points = null;\n\n const drawOutline = function (c) {\n c.save();\n // the path shall be painted in [0..1]x[0..1] space\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nclass CanvasExtraState {\n constructor(width, height) {\n // Are soft masks and alpha values shapes or opacities?\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n // Default fore and background colors\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n // Note: fill alpha applies to all non-stroking operations\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n\n updateRectMinMax(transform, rect) {\n const p1 = Util.applyTransform(rect, transform);\n const p2 = Util.applyTransform(rect.slice(2), transform);\n this.minX = Math.min(this.minX, p1[0], p2[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1]);\n }\n\n updateScalingPathMinMax(transform, minMax) {\n Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.maxX = Math.max(this.maxX, minMax[1]);\n this.minY = Math.min(this.minY, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n if (minMax) {\n minMax[0] = Math.min(minMax[0], box[0], box[2]);\n minMax[1] = Math.max(minMax[1], box[0], box[2]);\n minMax[2] = Math.min(minMax[2], box[1], box[3]);\n minMax[3] = Math.max(minMax[3], box[1], box[3]);\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n // Stroked paths can be outside of the path bounding box by 1/2 the line\n // width.\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = (scale[0] * this.lineWidth) / 2;\n const yStrokePad = (scale[1] * this.lineWidth) / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n\n isEmptyClip() {\n return this.minX === Infinity;\n }\n\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(\n this.clipBox,\n this.getPathBoundingBox(pathType, transform)\n );\n }\n}\n\nfunction putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n // Put the image data to the canvas in chunks, rather than putting the\n // whole image at once. This saves JS memory, because the ImageData object\n // is smaller. It also possibly saves C++ memory within the implementation\n // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n // the data passed to putImageData()). |n| shouldn't be too small, however,\n // because too many putImageData() calls will slow things down.\n //\n // Note: as written, if the last chunk is partial, the putImageData() call\n // will (conceptually) put pixels past the bounds of the canvas. But\n // that's ok; any such pixels are ignored.\n\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n\n // There are multiple forms in which the pixel data can be passed, and\n // imgData.kind tells us which one this is.\n if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n // Grayscale, 1 bit per pixel (i.e. black-and-white).\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = (width + 7) >> 3;\n const white = 0xffffffff;\n const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n // We ran out of input. Make all remaining pixels transparent.\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n // RGBA, 32-bits per pixel.\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n for (j = elemsInThisChunk; j--; ) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n // The bitmap has been created in the worker.\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n\n // Slow path: OffscreenCanvas isn't available in the worker.\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight =\n i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n // Expand the mask so it can be used by the canvas. Any required\n // inversion has already been handled.\n\n ({ srcPos } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0,\n }));\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\n \"strokeStyle\",\n \"fillStyle\",\n \"fillRule\",\n \"globalAlpha\",\n \"lineWidth\",\n \"lineCap\",\n \"lineJoin\",\n \"miterLimit\",\n \"globalCompositeOperation\",\n \"font\",\n \"filter\",\n ];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\n\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n !isNodeJS\n ) {\n const { filter } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n }\n }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n for (let i = 3; i < length; i += 4) {\n const y =\n maskData[i - 3] * 77 + // * 0.3 / 255 * 0x10000\n maskData[i - 2] * 152 + // * 0.59 ....\n maskData[i - 1] * 28; // * 0.11 ....\n layerData[i] = transferMap\n ? (layerData[i] * transferMap[y >> 8]) >> 8\n : (layerData[i] * y) >> 16;\n }\n}\n\nfunction genericComposeSMask(\n maskCtx,\n layerCtx,\n width,\n height,\n subtype,\n backdrop,\n transferMap,\n layerOffsetX,\n layerOffsetY,\n maskOffsetX,\n maskOffsetY\n) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n\n const composeFn =\n subtype === \"Luminosity\" ? composeSMaskLuminosity : composeSMaskAlpha;\n\n // processing image in chunks to save memory\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(\n layerOffsetX - maskOffsetX,\n row + (layerOffsetY - maskOffsetY),\n width,\n chunkHeight\n );\n const layerData = layerCtx.getImageData(\n layerOffsetX,\n row + layerOffsetY,\n width,\n chunkHeight\n );\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\n\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n genericComposeSMask(\n smask.context,\n layerCtx,\n layerWidth,\n layerHeight,\n smask.subtype,\n smask.backdrop,\n smask.transferMap,\n layerOffsetX,\n layerOffsetY,\n smask.offsetX,\n smask.offsetY\n );\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n const scale = Util.singularValueDecompose2dScale(transform);\n // Round to a 32bit float so that `<=` check below will pass for numbers that\n // are very close, but not exactly the same 64bit floats.\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround(\n (globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n if (interpolate !== undefined) {\n // If the value is explicitly set use it.\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n // Smooth when downscaling.\n return true;\n }\n // Don't smooth when upscaling.\n return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n constructor(\n canvasCtx,\n commonObjs,\n objs,\n canvasFactory,\n filterFactory,\n { optionalContentConfig, markedContentStack = null },\n annotationCanvasMap,\n pageColors\n ) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.processingType3 = null;\n // Patterns are painted relative to the initial page/form transform, see\n // PDF spec 8.7.2 NOTE 1.\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\")\n ? this.commonObjs.get(data)\n : this.objs.get(data);\n }\n return fallback;\n }\n\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null,\n }) {\n // For pdfs that use blend modes we have to clear the canvas else certain\n // blend modes can look wrong since we'd be blending with a white\n // backdrop. The problem with a transparent backdrop though is we then\n // don't get sub pixel anti aliasing on text, creating temporary\n // transparent canvas when we have blend modes.\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\n \"transparent\",\n width,\n height\n );\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n // The transform can be applied before rendering, transferring it to\n // the new canvas.\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n\n executeOperatorList(\n operatorList,\n executionStartIdx,\n continueCallback,\n stepper\n ) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n const chunkOperations =\n argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== OPS.dependency) {\n // eslint-disable-next-line prefer-spread\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n // If the entire operatorList was executed, stop as were done.\n if (i === argsArrayLen) {\n return i;\n }\n\n // If the execution took longer then a certain amount of time and\n // `continueCallback` is specified, interrupt the execution.\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n\n // If the operatorList isn't executed completely yet OR the execution\n // time was short enough, do another execution round.\n }\n }\n\n #restoreInitialState() {\n // Finishing all opened operations such as SMask group painting.\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n\n endDrawing() {\n this.#restoreInitialState();\n\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (\n typeof HTMLCanvasElement !== \"undefined\" &&\n canvas instanceof HTMLCanvasElement\n ) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(\n this.pageColors.foreground,\n this.pageColors.background\n );\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n\n _scaleImage(img, inverseTransform) {\n // Vertical or horizontal scaling shall not be more than 2 to not lose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size.\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(\n Math.hypot(inverseTransform[0], inverseTransform[1]),\n 1\n );\n let heightScale = Math.max(\n Math.hypot(inverseTransform[2], inverseTransform[3]),\n 1\n );\n\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (\n (widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)\n ) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n // See bug 1820511 (Windows specific bug).\n // TODO: once the above bug is fixed we could revert to:\n // newWidth = Math.ceil(paintWidth / 2);\n newWidth =\n paintWidth >= 16384\n ? Math.floor(paintWidth / 2) - 1 || 1\n : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n // TODO: see the comment above.\n newHeight =\n paintHeight >= 16384\n ? Math.floor(paintHeight / 2) - 1 || 1\n : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(\n tmpCanvasId,\n newWidth,\n newHeight\n );\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(\n img,\n 0,\n 0,\n paintWidth,\n paintHeight,\n 0,\n 0,\n newWidth,\n newHeight\n );\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight,\n };\n }\n\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const { width, height } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n // We're reusing the same image several times, so we can cache it.\n // In case we've a pattern fill we just keep the scaled version of\n // the image.\n // Only the scaling part matters, the translation part is just used\n // to compute offsets (but not when filling patterns see #15573).\n // TODO: handle the case of a pattern fill if it's possible.\n cacheKey = JSON.stringify(\n isPatternFill\n ? currentTransform\n : [currentTransform.slice(0, 4), fillColor]\n );\n\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(\n Math.min(currentTransform[0], currentTransform[2]) +\n currentTransform[4]\n );\n const offsetY = Math.round(\n Math.min(currentTransform[1], currentTransform[3]) +\n currentTransform[5]\n );\n return {\n canvas: cachedImage,\n offsetX,\n offsetY,\n };\n }\n scaled = cachedImage;\n }\n\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n\n // Create the mask canvas at the size it will be drawn at and also set\n // its transform to match the current transform so if there are any\n // patterns applied they will be applied relative to the correct\n // transform.\n\n let maskToCanvas = Util.transform(currentTransform, [\n 1 / width,\n 0,\n 0,\n -1 / height,\n 0,\n 0,\n ]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const cord1 = Util.applyTransform([0, 0], maskToCanvas);\n const cord2 = Util.applyTransform([width, height], maskToCanvas);\n const rect = Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n const drawnWidth = Math.round(rect[2] - rect[0]) || 1;\n const drawnHeight = Math.round(rect[3] - rect[1]) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\n \"fillCanvas\",\n drawnWidth,\n drawnHeight\n );\n const fillCtx = fillCanvas.context;\n\n // The offset will be the top-left cordinate mask.\n // If objToCanvas is [a,b,c,d,e,f] then:\n // - offsetX = min(a, c) + e\n // - offsetY = min(b, d) + f\n const offsetX = Math.min(cord1[0], cord2[0]);\n const offsetY = Math.min(cord1[1], cord2[1]);\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n\n if (!scaled) {\n // Pre-scale if needed to improve image smoothing.\n scaled = this._scaleImage(\n maskCanvas.canvas,\n getCurrentTransformInverse(fillCtx)\n );\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n getCurrentTransform(fillCtx),\n img.interpolate\n );\n\n drawImageAtIntegerCoords(\n fillCtx,\n scaled,\n 0,\n 0,\n scaled.width,\n scaled.height,\n 0,\n 0,\n width,\n height\n );\n fillCtx.globalCompositeOperation = \"source-in\";\n\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [\n 1,\n 0,\n 0,\n 1,\n -offsetX,\n -offsetY,\n ]);\n fillCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\n : fillColor;\n\n fillCtx.fillRect(0, 0, width, height);\n\n if (cache && !isPatternFill) {\n // The fill canvas is put in the cache associated to the mask image\n // so we must remove from the cached canvas: it mustn't be used again.\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n\n // Round the offsets to avoid drawing fractional pixels.\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY),\n };\n }\n\n // Graphics state\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.current.fillAlpha = value;\n this.ctx.globalAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps =\n this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n // Else, the state is okay and nothing needs to be done.\n }\n\n /**\n * Soft mask mode takes the current main drawing canvas and replaces it with\n * a temporary canvas. Any drawing operations that happen on the temporary\n * canvas need to be composed with the main canvas that was suspended (see\n * `compose()`). The temporary canvas also duplicates many of its operations\n * on the suspended canvas to keep them in sync, so that when the soft mask\n * mode ends any clipping paths or transformations will still be active and in\n * the right order on the canvas' graphics state stack.\n */\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight\n );\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n }\n\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n // The soft mask is done, now restore the suspended canvas as the main\n // drawing canvas.\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n\n this.suspendedCtx = null;\n }\n\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n // Whatever was drawn has been moved to the suspended canvas, now clear it\n // out of the current canvas.\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n\n save() {\n if (this.inSMaskMode) {\n // SMask mode may be turned on/off causing us to lose graphics state.\n // Copy the temporary canvas state to the main(suspended) canvas to keep\n // it in sync.\n copyCtxState(this.ctx, this.suspendedCtx);\n // Don't bother calling save on the temporary canvas since state is not\n // saved there.\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n // Graphics state is stored on the main(suspended) canvas. Restore its\n // state then copy it over to the temporary canvas.\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n\n // Path\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = getCurrentTransform(ctx);\n\n // Most of the time the current transform is a scaling matrix\n // so we don't need to transform points before computing min/max:\n // we can compute min/max first and then smartly \"apply\" the\n // transform (see Util.scaleMinMax).\n // For rectangle, moveTo and lineTo, min/max are computed in the\n // worker (see evaluator.js).\n const isScalingMatrix =\n (currentTransform[0] === 0 && currentTransform[3] === 0) ||\n (currentTransform[1] === 0 && currentTransform[2] === 0);\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n current.updateCurvePathMinMax(\n currentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y,\n minMaxForBezier\n );\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n current.updateCurvePathMinMax(\n currentTransform,\n startX,\n startY,\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n minMaxForBezier\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(\n currentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n x,\n y,\n x,\n y,\n minMaxForBezier\n );\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n\n current.setCurrentPoint(x, y);\n }\n\n closePath() {\n this.ctx.closePath();\n }\n\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.STROKE\n );\n this.rescaleAndStroke(/* saveRestore */ false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(/* saveRestore */ true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n fill(consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.FILL\n );\n needRestore = true;\n }\n\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n }\n\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n\n endPath() {\n this.consumePath();\n }\n\n // Clipping\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n\n // Text\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n for (const path of paths) {\n ctx.setTransform(...path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n // A valid matrix needs all main diagonal elements to be non-zero\n // This also ensures we bypass FF bugzilla bug #719844.\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n\n // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n // and in some docs this can be negative (inverted x-y axes).\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return; // we don't need ctx.font for Type3 fonts\n }\n\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface =\n fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n // Some font backends cannot handle fonts below certain size.\n // Keeping the font at minimal size and using the fontSizeScale to change\n // the current transformation matrix before the fillText/strokeText.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n paintChar(character, x, y, patternTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode =\n textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(\n textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n const patternFill = current.patternFill && !font.missingFile;\n\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform(...patternTransform);\n }\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fill();\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fillText(character, x, y);\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n const paths = (this.pendingTextPaths ||= []);\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n addToPath,\n });\n }\n }\n\n get isFontSubpixelAAEnabled() {\n // Checks if anti-aliasing is enabled when scaled text is painted.\n // On Windows GDI scaled fonts looks bad.\n const { context: ctx } = this.cachedCanvases.getCanvas(\n \"isFontSubpixelAAEnabled\",\n 10,\n 10\n );\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n const simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace &&\n !current.patternFill;\n\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.FILL\n );\n patternTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n\n return undefined;\n }\n\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx =\n -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n // Some standard fonts may not have the exact width: rescale per\n // character if measured width is greater than expected glyph width\n // and subpixel-aa is enabled, otherwise just center the glyph.\n const measuredWidth =\n ((ctx.measureText(character).width * 1000) / fontSize) *\n fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX +=\n (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n }\n }\n\n // Only attempt to draw the glyph if it is actually in the embedded font\n // file or if there isn't a font file so the fallback font is shown.\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n const scaledAccentX =\n scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n const scaledAccentY =\n scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n this.paintChar(\n accent.fontChar,\n scaledAccentX,\n scaledAccentY,\n patternTransform\n );\n }\n }\n }\n\n const charWidth = vertical\n ? width * widthAdvanceScale - spacing * fontDirection\n : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n\n return undefined;\n }\n\n showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = (spacingDir * glyph * fontSize) / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n\n // Type3 fonts\n setCharWidth(xWidth, yWidth) {\n // We can safely ignore this since the width should be the same\n // as the width in the Widths array.\n }\n\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n\n // Color\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(\n ctx,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n this.filterFactory,\n {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack,\n }\n );\n },\n };\n pattern = new TilingPattern(\n IR,\n color,\n this.ctx,\n canvasGraphicsFactory,\n baseTransform\n );\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n\n setStrokeRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n\n setFillRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.SHADING\n );\n\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const { width, height } = ctx.canvas;\n const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox(\n [0, 0, width, height],\n inv\n );\n\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n // HACK to draw the gradient onto an infinite rectangle.\n // PDF gradients are drawn across the entire image while\n // Canvas only allows gradients to be drawn in a rectangle\n // The following bug should allow us to remove this.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n\n // Images\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(...matrix);\n }\n\n this.baseTransform = getCurrentTransform(this.ctx);\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n // If there's an active soft mask we don't want it enabled for the group, so\n // clear it out. The mask and suspended canvas will be restored in endGroup.\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n\n const currentCtx = this.ctx;\n // TODO non-isolated groups - according to Rik at adobe non-isolated\n // group results aren't usually that different and they even have tools\n // that ignore this setting. Notes from Rik on implementing:\n // - When you encounter an transparency group, create a new canvas with\n // the dimensions of the bbox\n // - copy the content from the previous canvas to the new canvas\n // - draw as usual\n // - remove the backdrop alpha:\n // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n // value of your transparency group and 'alphaBackdrop' the alpha of the\n // backdrop\n // - remove background color:\n // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n\n // TODO knockout - supposedly possible with the clever use of compositing\n // modes.\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n // Based on the current transform figure out how big the bounding box\n // will actually be.\n let bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n getCurrentTransform(currentCtx)\n );\n // Clip the bounding box to the current canvas.\n const canvasBounds = [\n 0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height,\n ];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n // Use ceil in case we're between sizes so we don't create canvas that is\n // too small and make the canvas at least 1x1 pixels.\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n // Using two cache entries is case if masks are used one after another.\n cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight\n );\n const groupCtx = scratchCanvas.context;\n\n // Since we created a new canvas that is just the size of the bounding box\n // we have to translate the group ctx.\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n\n if (group.smask) {\n // Saving state and cached mask to be used in setGState.\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null, // used during suspend operation\n });\n } else {\n // Setup the current ctx so when the group is popped we draw it at the\n // right location.\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n // The transparency group inherits all off the current graphics state\n // except the blend mode, soft mask, and alpha constants.\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n this.ctx.imageSmoothingEnabled = false;\n\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox(\n [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n currentMtx\n );\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n // The annotations are drawn just after the page content.\n // The page content drawing can potentially have set a transform,\n // a clipping path, whatever...\n // So in order to have something clean, we restore the initial state.\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n\n this.ctx.save();\n this.save();\n\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(\n getCurrentTransform(this.ctx)\n );\n const { viewportScale } = this;\n const canvasWidth = Math.ceil(\n width * this.outputScaleX * viewportScale\n );\n const canvasHeight = Math.ceil(\n height * this.outputScaleY * viewportScale\n );\n\n this.annotationCanvas = this.canvasFactory.create(\n canvasWidth,\n canvasHeight\n );\n const { canvas, context } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.endPath();\n }\n }\n\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n\n this.transform(...transform);\n this.transform(...matrix);\n }\n\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n\n const ctx = this.ctx;\n const glyph = this.processingType3;\n\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n\n ctx.save();\n // The mask is drawn with the transform applied. Reset the current\n // transform to draw to the identity.\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectRepeat(\n img,\n scaleX,\n skewX = 0,\n skewY = 0,\n scaleY,\n positions\n ) {\n if (!this.contentVisible) {\n return;\n }\n\n img = this.getObject(img.data, img);\n\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n\n ctx.setTransform(\n 1,\n 0,\n 0,\n 1,\n mask.offsetX - currentTransform[4],\n mask.offsetY - currentTransform[5]\n );\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [\n scaleX,\n skewX,\n skewY,\n scaleY,\n positions[i],\n positions[i + 1],\n ]);\n\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n\n for (const image of images) {\n const { data, width, height, transform } = image;\n\n const maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n\n maskCtx.globalCompositeOperation = \"source-in\";\n\n maskCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(\n maskCtx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.FILL\n )\n : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(\n ctx,\n maskCanvas.canvas,\n 0,\n 0,\n width,\n height,\n 0,\n -1,\n 1,\n 1\n );\n ctx.restore();\n }\n this.compose();\n }\n\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height,\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const { bitmap, width, height } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n width,\n height\n );\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n\n return tmpCanvas.canvas;\n }\n\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n\n this.save();\n\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n !isNodeJS\n ) {\n // The filter, if any, will be applied in applyTransferMapsToBitmap.\n // It must be applied to the image before rescaling else some artifacts\n // could appear.\n // The final restore will reset it to its value.\n const { filter } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (\n (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n !imgData.data\n ) {\n // typeof check is needed due to node.js support, see issue #8489\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n width,\n height\n );\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n\n const scaled = this._scaleImage(\n imgToPaint,\n getCurrentTransformInverse(ctx)\n );\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n getCurrentTransform(ctx),\n imgData.interpolate\n );\n\n drawImageAtIntegerCoords(\n ctx,\n scaled.img,\n 0,\n 0,\n scaled.paintWidth,\n scaled.paintHeight,\n 0,\n -height,\n width,\n height\n );\n this.compose();\n this.restore();\n }\n\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(\n ctx,\n imgToPaint,\n entry.x,\n entry.y,\n entry.w,\n entry.h,\n 0,\n -1,\n 1,\n 1\n );\n ctx.restore();\n }\n this.compose();\n }\n\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n\n // Marked content\n\n markPoint(tag) {\n // TODO Marked content.\n }\n\n markPointProps(tag, properties) {\n // TODO Marked content.\n }\n\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true,\n });\n }\n\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties),\n });\n } else {\n this.markedContentStack.push({\n visible: true,\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n\n // Compatibility\n\n beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n }\n\n endCompat() {\n // TODO stop ignoring undefined operators\n }\n\n // Helper functions\n\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n // Fast path\n this._cachedGetSinglePixelWidth =\n 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n\n getScaleForStroking() {\n // A pixel has thicknessX = thicknessY = 1;\n // A transformed pixel is a parallelogram and the thicknesses\n // corresponds to the heights.\n // The goal of this function is to rescale before setting the\n // lineWidth in order to have both thicknesses greater or equal\n // to 1 after transform.\n if (this._cachedScaleForStroking[0] === -1) {\n const { lineWidth } = this.current;\n const { a, b, c, d } = this.ctx.getTransform();\n let scaleX, scaleY;\n\n if (b === 0 && c === 0) {\n // Fast path\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n // A pixel (base (x, y)) is transformed by M into a parallelogram:\n // - its area is |det(M)|;\n // - heightY (orthogonal to Mx) has a length: |det(M)| / norm(Mx);\n // - heightX (orthogonal to My) has a length: |det(M)| / norm(My).\n // heightX and heightY are the thicknesses of the transformed pixel\n // and they must be both greater or equal to 1.\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n\n // Rescale before stroking in order to have a final lineWidth\n // with both thicknesses greater or equal to 1.\n rescaleAndStroke(saveRestore) {\n const { ctx } = this;\n const { lineWidth } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n\n ctx.lineWidth = lineWidth || 1;\n\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n\n ctx.scale(scaleX, scaleY);\n\n // How the dashed line is rendered depends on the current transform...\n // so we added a rescale to handle too thin lines and consequently\n // the way the line is dashed will be modified.\n // If scaleX === scaleY, the dashed lines will be rendered correctly\n // else we'll have some bugs (but only with too thin lines).\n // Here we take the max... why not taking the min... or something else.\n // Anyway, as said it's buggy when scaleX !== scaleY.\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n\n ctx.stroke();\n\n if (saveRestore) {\n ctx.restore();\n }\n }\n\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\n\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\nexport { CanvasGraphics };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, info, unreachable, Util } from \"../shared/util.js\";\nimport { getCurrentTransform } from \"./display_utils.js\";\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\",\n};\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n unreachable(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\n\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(\n this._p0[0],\n this._p0[1],\n this._p1[0],\n this._p1[1]\n );\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(\n this._p0[0],\n this._p0[1],\n this._r0,\n this._p1[0],\n this._p1[1],\n this._r1\n );\n }\n\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(\n pathType,\n getCurrentTransform(ctx)\n ) || [0, 0, 0, 0];\n // Create a canvas that is only as big as the current path. This doesn't\n // allow us to cache the pattern, but it generally creates much smaller\n // canvases and saves memory use. See bug 1722807 for an example.\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n width,\n height,\n true\n );\n\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n // Non shading fill patterns are positioned relative to the base transform\n // (usually the page's initial transform), but we may have created a\n // smaller canvas based on the path, so we must account for the shift.\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [\n 1,\n 0,\n 0,\n 1,\n ownerBBox[0],\n ownerBBox[1],\n ]);\n\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n // Shading fills are applied relative to the current matrix which is also\n // how canvas gradients work, so there's no need to do anything special\n // here.\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = (car - (car - cbr) * k) | 0;\n bytes[j++] = (cag - (cag - cbg) * k) | 0;\n bytes[j++] = (cab - (cab - cbb) * k) | 0;\n bytes[j++] = 255;\n }\n }\n}\n\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(\n data,\n context,\n ps[q],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n drawTriangle(\n data,\n context,\n ps[q + verticesPerRow + 1],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(\n data,\n context,\n ps[i],\n ps[i + 1],\n ps[i + 2],\n cs[i],\n cs[i + 1],\n cs[i + 2]\n );\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\n\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n const EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n // We need to keep transparent border around our pattern for fill():\n // createPattern with 'no-repeat' will bleed edges across entire area.\n const BORDER_SIZE = 2;\n\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n\n const width = Math.min(\n Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const height = Math.min(\n Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY,\n };\n\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n\n const tmpCanvas = cachedCanvases.getCanvas(\n \"mesh\",\n paddedWidth,\n paddedHeight,\n false\n );\n const tmpCtx = tmpCanvas.context;\n\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n } else {\n // Obtain scale from matrix and current transformation matrix.\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n const temporaryPatternCanvas = this._createMeshCanvas(\n scale,\n pathType === PathType.SHADING ? null : this._background,\n owner.cachedCanvases\n );\n\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n\n ctx.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\n\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n};\n\nclass TilingPattern {\n // 10in @ 300dpi shall be enough.\n static MAX_PATTERN_SIZE = 3000;\n\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n info(\"TilingType: \" + tilingType);\n\n // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n // described by bbox, and may repeat regularly by shifting the cell by\n // xstep and ystep.\n // Because the HTML5 canvas API does not support pattern repetition with\n // gaps in between, we use the xstep/ystep instead of the bbox's size.\n //\n // This has the following consequences (similarly for ystep):\n //\n // - If xstep is the same as bbox, then there is no observable difference.\n //\n // - If xstep is larger than bbox, then the pattern canvas is partially\n // empty: the area bounded by bbox is painted, the outside area is void.\n //\n // - If xstep is smaller than bbox, then the pixels between xstep and the\n // bbox boundary will be missing. This is INCORRECT behavior.\n // \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n // but overlapping cells without common pixels are still valid.\n // TODO: Fix the implementation, to allow this scenario to be painted\n // correctly.\n\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n // Obtain scale from matrix and current transformation matrix.\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform\n );\n const combinedScale = [\n matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1],\n ];\n\n // Use width and height values that are as close as possible to the end\n // result when the pattern is used. Too low value makes the pattern look\n // blurry. Too large value makes it look too crispy.\n const dimx = this.getSizeAndScale(\n xstep,\n this.ctx.canvas.width,\n combinedScale[0]\n );\n const dimy = this.getSizeAndScale(\n ystep,\n this.ctx.canvas.height,\n combinedScale[1]\n );\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n dimx.size,\n dimy.size,\n true\n );\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n // Some bounding boxes have negative x0/y0 coordinates which will cause the\n // some of the drawing to be off of the canvas. To avoid this shift the\n // bounding box over.\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n\n // To match CanvasGraphics beginDrawing we must save the context here or\n // else we end up with unbalanced save/restores.\n tmpCtx.save();\n\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n\n graphics.executeOperatorList(operatorList);\n\n graphics.endDrawing();\n\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0,\n };\n }\n\n getSizeAndScale(step, realOutputSize, scale) {\n // xstep / ystep may be negative -- normalize.\n step = Math.abs(step);\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n // Use the destination canvas's size if it is bigger than the hard-coded\n // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n // whole canvas.\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return { scale, size };\n }\n\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [\n x0,\n y0,\n x1,\n y1,\n ]);\n graphics.clip();\n graphics.endPath();\n }\n\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n // Set color needed by image masks (fixes issues 3226 and 8741).\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n let domMatrix = new DOMMatrix(matrix);\n // Rescale and so that the ctx.createPattern call generates a pattern with\n // the desired size.\n domMatrix = domMatrix.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n domMatrix = domMatrix.scale(\n 1 / temporaryPatternCanvas.scaleX,\n 1 / temporaryPatternCanvas.scaleY\n );\n\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n\n return pattern;\n }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FeatureTest, ImageKind } from \"./util.js\";\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n\n return null;\n}\n\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false,\n}) {\n const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode\n ? [nonBlackColor, black]\n : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & (1 << (7 - j)) ? oneMapping : zeroMapping;\n }\n }\n return { srcPos, destPos };\n}\n\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height,\n}) {\n let i = 0;\n const len32 = src.length >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n\n if (FeatureTest.isLittleEndian) {\n // It's a way faster to do the shuffle manually instead of working\n // component by component with some Uint8 arrays.\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i]; // R2B1G1R1\n const s2 = src32[i + 1]; // G3R3B2G2\n const s3 = src32[i + 2]; // B4G4R4B3\n\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = (s1 >>> 24) | (s2 << 8) | 0xff000000;\n dest[destPos + 2] = (s2 >>> 16) | (s3 << 16) | 0xff000000;\n dest[destPos + 3] = (s3 >>> 8) | 0xff000000;\n }\n\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] =\n src[j] | (src[j + 1] << 8) | (src[j + 2] << 16) | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i]; // R1G1B1R2\n const s2 = src32[i + 1]; // G2B2R3G3\n const s3 = src32[i + 2]; // B3R4G4B4\n\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = (s1 << 24) | (s2 >>> 8) | 0xff;\n dest[destPos + 2] = (s2 << 16) | (s3 >>> 16) | 0xff;\n dest[destPos + 3] = (s3 << 8) | 0xff;\n }\n\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] =\n (src[j] << 24) | (src[j + 1] << 16) | (src[j + 2] << 8) | 0xff;\n }\n }\n\n return { srcPos, destPos };\n}\n\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = (src[i] * 0x10101) | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = (src[i] * 0x1010100) | 0x000000ff;\n }\n }\n}\n\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @typedef {Object} GlobalWorkerOptionsType\n * @property {Worker | null} workerPort - Defines global port for worker\n * process. Overrides the `workerSrc` option.\n * @property {string} workerSrc - A string containing the path and filename\n * of the worker file.\n *\n * NOTE: The `workerSrc` option should always be set, in order to prevent any\n * issues when using the PDF.js library.\n */\n\n/** @type {GlobalWorkerOptionsType} */\nconst GlobalWorkerOptions = Object.create(null);\n\nGlobalWorkerOptions.workerPort = null;\nGlobalWorkerOptions.workerSrc = \"\";\n\nexport { GlobalWorkerOptions };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n MissingPDFException,\n PasswordException,\n PromiseCapability,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n unreachable(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = new PromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = new PromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = new PromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = new PromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = new PromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: new PromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull?.());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n async #deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall?.promise,\n streamController.pullCall?.promise,\n streamController.cancelCall?.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap } from \"../shared/util.js\";\n\nclass Metadata {\n #metadataMap;\n\n #data;\n\n constructor({ parsedData, rawData }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n\n getRaw() {\n return this.#data;\n }\n\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\nexport { Metadata };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap, unreachable, warn } from \"../shared/util.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst INTERNAL = Symbol(\"INTERNAL\");\n\nclass OptionalContentGroup {\n #visible = true;\n\n constructor(name, intent) {\n this.name = name;\n this.intent = intent;\n }\n\n /**\n * @type {boolean}\n */\n get visible() {\n return this.#visible;\n }\n\n /**\n * @ignore\n */\n _setVisible(internal, visible) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#visible = visible;\n }\n}\n\nclass OptionalContentConfig {\n #cachedGetHash = null;\n\n #groups = new Map();\n\n #initialHash = null;\n\n #order = null;\n\n constructor(data) {\n this.name = null;\n this.creator = null;\n\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(\n group.id,\n new OptionalContentGroup(group.name, group.intent)\n );\n }\n\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n\n // The following code must always run *last* in the constructor.\n this.#initialHash = this.getHash();\n }\n\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n warn(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n // Per the spec, the expression should be preferred if available.\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n // Default\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n\n setVisibility(id, visible = true) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n this.#groups.get(id)._setVisible(INTERNAL, !!visible);\n\n this.#cachedGetHash = null;\n }\n\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n\n getGroups() {\n return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n }\n\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return (this.#cachedGetHash = hash.hexdigest());\n }\n}\n\nexport { OptionalContentConfig };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, PromiseCapability } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n constructor(\n {\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null,\n disableRange = false,\n disableStream = false,\n },\n pdfDataRangeTransport\n ) {\n assert(\n pdfDataRangeTransport,\n 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n );\n\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n\n if (initialData?.length > 0) {\n // Prevent any possible issues by only transferring a Uint8Array that\n // completely \"utilizes\" its underlying ArrayBuffer.\n const buffer =\n initialData instanceof Uint8Array &&\n initialData.byteLength === initialData.buffer.byteLength\n ? initialData.buffer\n : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({ begin, chunk });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({ loaded, total });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({ chunk });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData({ begin, chunk }) {\n // Prevent any possible issues by only transferring a Uint8Array that\n // completely \"utilizes\" its underlying ArrayBuffer.\n const buffer =\n chunk instanceof Uint8Array &&\n chunk.byteLength === chunk.buffer.byteLength\n ? chunk.buffer\n : new Uint8Array(chunk).buffer;\n\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(\n found,\n \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n );\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n // Reporting to first range reader, if it exists.\n this._rangeReaders[0]?.onProgress?.({ loaded: evt.loaded });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total,\n });\n }\n }\n\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFDataTransportStream.getFullReader can only be called once.\"\n );\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(\n this,\n queuedChunks,\n this._progressiveDone,\n this._contentDispositionFilename\n );\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n constructor(\n stream,\n queuedChunks,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename)\n ? contentDispositionFilename\n : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // Ignore new data.\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = new PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = new PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\nexport { PDFDataTransportStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n PromiseCapability,\n warn,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\",\n };\n}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\n}\n\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFFetchStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = new PromiseCapability();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n })\n .catch(this._headersCapability.reject);\n\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength,\n });\n\n return { value: getArrayBuffer(value), done: false };\n }\n\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = new PromiseCapability();\n this._isStreamingSupported = !source.disableStream;\n\n this._abortController = new AbortController();\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n })\n .catch(this._readCapability.reject);\n\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({ loaded: this._loaded });\n\n return { value: getArrayBuffer(value), done: false };\n }\n\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\nexport { PDFFetchStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n MissingPDFException,\n UnexpectedResponseException,\n} from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange,\n}) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n Number.isInteger(rangeChunkSize) && rangeChunkSize > 0,\n \"rangeChunkSize must be an integer larger than zero.\"\n );\n }\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined,\n };\n\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does not\n // make any sense to abort the request and retry with a range request.\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || (status === 0 && url.startsWith(\"file:\"))) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(\n `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n status\n );\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\nexport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Move return to the end of the function to prevent Babel from dropping the\n// function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n\n // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n // filename*n*=part\n // filename*n=part\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n // RFC 2047, section\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n // filename=value (RFC 5987, section 4.1).\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // After this line there are only function declarations. We cannot put\n // \"return\" here for readability because babel would then drop the function\n // declarations...\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\n \"(?:^|;)\\\\s*\" +\n attributePattern +\n \"\\\\s*=\\\\s*\" +\n // Captures: value = token | quoted-string\n // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n \"(\" +\n '[^\";\\\\s][^;\\\\s]*' +\n \"|\" +\n '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n \")\",\n flags\n );\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {\n // TextDecoder constructor threw - unrecognized encoding.\n }\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n // Maybe multi-byte UTF-8.\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n // Try iso-8859-1 encoding.\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n // Iterate over all filename*n= and filename*n*= with n being an integer\n // of at least zero. Any non-zero number must not start with '0'.\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match; // eslint-disable-line prefer-const\n n = parseInt(n, 10);\n if (n in matches) {\n // Ignore anything after the invalid second filename*0.\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n // Numbers must be consecutive. Truncate when there is a hole.\n break;\n }\n let [quot, part] = matches[n]; // eslint-disable-line prefer-const\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n // Find the first unescaped \" and terminate there.\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1; // Truncates and stop the iteration.\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n // Decodes \"ext-value\" from RFC 5987.\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n // Some servers send \"filename*=\" without encoding 'language' prefix,\n // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n // RFC 2047-decode the result. Firefox tried to drop support for it, but\n // backed out because some servers use it - https://bugzil.la/875615\n // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n // We are more strict and only recognize RFC 2047-encoding if the value\n // starts with \"=?\", since then it is likely that the full value is\n // RFC 2047-encoded.\n\n // Firefox also decodes words even where RFC 2047 section 5 states:\n // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n // RFC 2047, section 2.4\n // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n // charset = token (but let's restrict to characters that denote a\n // possibly valid encoding).\n // encoding = q or b\n // encoded-text = any printable ASCII character other than ? or space.\n // ... but Firefox permits ? and space.\n return value.replaceAll(\n /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n // RFC 2047 section 4.2.\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n }\n );\n }\n\n return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, PromiseCapability, stringToBytes } from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\n\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = (this.isHttp && args.httpHeaders) || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end,\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\n\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n\n xhr.send(null);\n\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n pendingRequest.onProgress?.(evt);\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n // The XHR request might have been aborted in onHeadersReceived()\n // callback, in which case we should abort request.\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n // Success status == 0 can be on ftp, file and other protocols.\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n\n // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n // \"A server MAY ignore the Range header\". This means it's possible to\n // get a 200 rather than a 206 response from a range request.\n const ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (\n !ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus\n ) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n\n const chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk,\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk,\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\n\n/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials,\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNetworkStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n this._manager,\n this._source\n );\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(\n this._manager,\n begin,\n end\n );\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = new PromiseCapability();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length; // Optional\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n if (this._isRangeSupported) {\n // NOTE: by cancelling the full request, and then issuing range\n // requests, there will be an issue for sites where you can only\n // request the pdf once. However, if this is the case, then the\n // server should not be returning that it can support range requests.\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: data.chunk, done: false });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength,\n });\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = new PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n this.onClosed?.(this);\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._close();\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({ loaded: evt.loaded });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = new PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\nexport { PDFNetworkStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n AbortException,\n assert,\n MissingPDFException,\n PromiseCapability,\n} from \"../shared/util.js\";\nimport {\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const url = __non_webpack_require__(\"url\");\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n // Prepending 'file:///' to Windows absolute path.\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n // Changes protocol to 'file:' if url refers to filesystem.\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp =\n this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n // Check if url refers to filesystem.\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNodeStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = this.isFsUrl\n ? new PDFNodeStreamFsFullReader(this)\n : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl\n ? new PDFNodeStreamFsRangeReader(this, start, end)\n : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length; // optional\n this._loaded = 0;\n this._filename = null;\n\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._readableStream = null;\n this._readCapability = new PromiseCapability();\n this._headersCapability = new PromiseCapability();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = new PromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength,\n });\n\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readable to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n\n // Destroy ReadableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = new PromiseCapability();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = new PromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({ loaded: this._loaded });\n\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readableStream to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // Destroy readableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers,\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n\n const getResponseHeader = name => {\n // Make sure that headers name are in lower case, as mentioned\n // here: https://nodejs.org/api/http.html#http_message_headers.\n return this._readableStream.headers[name.toLowerCase()];\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n const http = __non_webpack_require__(\"http\");\n this._request = http.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n } else {\n const https = __non_webpack_require__(\"https\");\n this._request = https.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n // Note: `request.end(data)` is used to write `data` to request body\n // and notify end of request. But one should always call `request.end()`\n // even if there is no data to write -- (to notify the end of request).\n this._request.end();\n }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n const http = __non_webpack_require__(\"http\");\n this._request = http.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n } else {\n const https = __non_webpack_require__(\"https\");\n this._request = https.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n const fs = __non_webpack_require__(\"fs\");\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n // Setting right content length.\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n });\n }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n const fs = __non_webpack_require__(\"fs\");\n this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\n }\n}\n\nexport { PDFNodeStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { deprecated, DOMSVGFactory } from \"./display_utils.js\";\nimport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n isNodeJS,\n OPS,\n TextRenderingMode,\n Util,\n warn,\n} from \"../shared/util.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\n 'Module \"SVGGraphics\" shall not be used outside GENERIC builds.'\n );\n}\n\nconst SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\",\n};\nconst XML_NS = \"http://www.w3.org/XML/1998/namespace\";\nconst XLINK_NS = \"http://www.w3.org/1999/xlink\";\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\nconst createObjectURL = function (\n data,\n contentType = \"\",\n forceDataSchema = false\n) {\n if (URL.createObjectURL && typeof Blob !== \"undefined\" && !forceDataSchema) {\n return URL.createObjectURL(new Blob([data], { type: contentType }));\n }\n // Blob/createObjectURL is not available, falling back to data schema.\n const digits =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n let buffer = `data:${contentType};base64,`;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = ((b1 & 3) << 4) | (b2 >> 4);\n const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n};\n\nconst convertImgDataToPng = (function () {\n const PNG_HEADER = new Uint8Array([\n 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,\n ]);\n const CHUNK_WRAPPER_SIZE = 12;\n\n const crcTable = new Int32Array(256);\n for (let i = 0; i < 256; i++) {\n let c = i;\n for (let h = 0; h < 8; h++) {\n c = c & 1 ? 0xedb88320 ^ ((c >> 1) & 0x7fffffff) : (c >> 1) & 0x7fffffff;\n }\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n let crc = -1;\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = (crc >>> 8) ^ b;\n }\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n\n data[p] = (len >> 24) & 0xff;\n data[p + 1] = (len >> 16) & 0xff;\n data[p + 2] = (len >> 8) & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n\n data.set(body, p);\n p += body.length;\n\n const crc = crc32(data, offset + 4, p);\n data[p] = (crc >> 24) & 0xff;\n data[p + 1] = (crc >> 16) & 0xff;\n data[p + 2] = (crc >> 8) & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n return (b << 16) | a;\n }\n\n /**\n * @param {Uint8Array} literals The input data.\n * @returns {Uint8Array} The DEFLATE-compressed data stream in zlib format.\n * This is the required format for compressed streams in the PNG format:\n * http://www.libpng.org/pub/png/spec/1.2/PNG-Compression.html\n */\n function deflateSync(literals) {\n if (!isNodeJS) {\n // zlib is certainly not available outside of Node.js. We can either use\n // the pako library for client-side DEFLATE compression, or use the\n // canvas API of the browser to obtain a more optimal PNG file.\n return deflateSyncUncompressed(literals);\n }\n try {\n // NOTE: This implementation is far from perfect, but already way better\n // than not applying any compression.\n //\n // A better algorithm will try to choose a good predictor/filter and\n // then choose a suitable zlib compression strategy (e.g. 3,Z_RLE).\n //\n // Node v0.11.12 zlib.deflateSync is introduced (and returns a Buffer).\n // Node v3.0.0 Buffer inherits from Uint8Array.\n // Node v8.0.0 zlib.deflateSync accepts Uint8Array as input.\n const input =\n // eslint-disable-next-line no-undef\n parseInt(process.versions.node) >= 8 ? literals : Buffer.from(literals);\n const output = __non_webpack_require__(\"zlib\").deflateSync(input, {\n level: 9,\n });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n warn(\"Not compressing PNG because zlib.deflateSync is unavailable: \" + e);\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n // An implementation of DEFLATE with compression level 0 (Z_NO_COMPRESSION).\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78; // compression method and flags\n idat[pi++] = 0x9c; // flags\n\n let pos = 0;\n while (len > maxBlockLength) {\n // writing non-final DEFLATE blocks type 0 and length of 65535\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n // writing non-final DEFLATE blocks type 0\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = (len >> 8) & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = ((~len & 0xffff) >> 8) & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n\n const adler = adler32(literals, 0, literals.length); // checksum\n idat[pi++] = (adler >> 24) & 0xff;\n idat[pi++] = (adler >> 16) & 0xff;\n idat[pi++] = (adler >> 8) & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = (width + 7) >> 3;\n break;\n case ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n case ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n default:\n throw new Error(\"invalid format\");\n }\n\n // prefix every row with predictor 0\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0; // no prediction\n literals.set(\n bytes.subarray(offsetBytes, offsetBytes + lineSize),\n offsetLiterals\n );\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === ImageKind.GRAYSCALE_1BPP && isMask) {\n // inverting for image masks\n offsetLiterals = 0;\n for (let y = 0; y < height; y++) {\n offsetLiterals++; // skipping predictor\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n const ihdr = new Uint8Array([\n (width >> 24) & 0xff,\n (width >> 16) & 0xff,\n (width >> 8) & 0xff,\n width & 0xff,\n (height >> 24) & 0xff,\n (height >> 16) & 0xff,\n (height >> 8) & 0xff,\n height & 0xff,\n bitDepth, // bit depth\n colorType, // color type\n 0x00, // compression method\n 0x00, // filter method\n 0x00, // interlace method\n ]);\n const idat = deflateSync(literals);\n\n // PNG consists of: header, IHDR+data, IDAT+data, and IEND.\n const pngLength =\n PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n\n return createObjectURL(data, \"image/png\", forceDataSchema);\n }\n\n // eslint-disable-next-line no-shadow\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind =\n imgData.kind === undefined ? ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n})();\n\nclass SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n\n this.textMatrix = IDENTITY_MATRIX;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n\n // Default foreground and background colors\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n\n this.dashArray = [];\n this.dashPhase = 0;\n\n this.dependencies = [];\n\n // Clipping\n this.activeClipUrl = null;\n this.clipGroup = null;\n\n this.maskId = \"\";\n }\n\n clone() {\n return Object.create(this);\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n}\n\nfunction opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({ fnId: 92, fn: \"group\", items: [] });\n tmp.push(opTree);\n opTree = opTree.at(-1).items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n return opTree;\n}\n\n/**\n * Format a float number as a string.\n *\n * @param value {number} - The float number to format.\n * @returns {string}\n */\nfunction pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n const s = value.toFixed(10);\n let i = s.length - 1;\n if (s[i] !== \"0\") {\n return s;\n }\n\n // Remove trailing zeros.\n do {\n i--;\n } while (s[i] === \"0\");\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n}\n\n/**\n * Format a transform matrix as a string. The standard rotation, scale and\n * translation matrices are replaced by their shorter forms, and for\n * identity matrices an empty string is returned to save memory.\n *\n * @param m {Array} - The transform matrix to format.\n * @returns {string}\n */\nfunction pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = (Math.acos(m[0]) * 180) / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n return (\n `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` +\n `${pf(m[5])})`\n );\n}\n\n// The counts below are relevant for all pages, so they have to be global\n// instead of being members of `SVGGraphics` (which is recreated for\n// each page).\nlet clipCount = 0;\nlet maskCount = 0;\nlet shadingCount = 0;\n\nclass SVGGraphics {\n constructor(commonObjs, objs, forceDataSchema = false) {\n deprecated(\n \"The SVG back-end is no longer maintained and *may* be removed in the future.\"\n );\n this.svgFactory = new DOMSVGFactory();\n\n this.current = new SVGExtraState();\n this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n\n // In `src/shared/util.js` the operator names are mapped to IDs.\n // The list below represents the reverse of that, i.e., it maps IDs\n // to operator names.\n this._operatorIdMapping = [];\n for (const op in OPS) {\n this._operatorIdMapping[OPS[op]] = op;\n }\n }\n\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\")\n ? this.commonObjs.get(data)\n : this.objs.get(data);\n }\n return fallback;\n }\n\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== OPS.dependency) {\n continue;\n }\n\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n return Promise.all(this.current.dependencies);\n }\n\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = Util.transform(\n this.transformMatrix,\n transformMatrix\n );\n this.tgrp = null;\n }\n\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n const svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i],\n });\n }\n return opListToTree(opList);\n }\n\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n\n switch (fnId | 0) {\n case OPS.beginText:\n this.beginText();\n break;\n case OPS.dependency:\n // Handled in `loadDependencies`, so no warning should be shown.\n break;\n case OPS.setLeading:\n this.setLeading(args);\n break;\n case OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n case OPS.setFont:\n this.setFont(args);\n break;\n case OPS.showText:\n this.showText(args[0]);\n break;\n case OPS.showSpacedText:\n this.showText(args[0]);\n break;\n case OPS.endText:\n this.endText();\n break;\n case OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n case OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n case OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n case OPS.setHScale:\n this.setHScale(args[0]);\n break;\n case OPS.setTextMatrix:\n this.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n case OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n case OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n case OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n case OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n case OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n case OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n case OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n case OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n case OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n case OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n case OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n case OPS.setGState:\n this.setGState(args[0]);\n break;\n case OPS.fill:\n this.fill();\n break;\n case OPS.eoFill:\n this.eoFill();\n break;\n case OPS.stroke:\n this.stroke();\n break;\n case OPS.fillStroke:\n this.fillStroke();\n break;\n case OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case OPS.clip:\n this.clip(\"nonzero\");\n break;\n case OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n case OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n case OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n case OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n case OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n case OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case OPS.closePath:\n this.closePath();\n break;\n case OPS.closeStroke:\n this.closeStroke();\n break;\n case OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n case OPS.nextLine:\n this.nextLine();\n break;\n case OPS.transform:\n this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n case OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n case OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(opTreeElement.items);\n break;\n default:\n warn(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.hypot(a, b);\n\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.append(current.tspan);\n }\n\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = IDENTITY_MATRIX;\n current.lineMatrix = IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n let x = 0;\n for (const glyph of glyphs) {\n if (glyph === null) {\n // Word break\n x += fontDirection * wordSpacing;\n continue;\n } else if (typeof glyph === \"number\") {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n let vx;\n const vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n current.tspan.textContent += character;\n } else {\n // TODO: To assist with text selection, we should replace the missing\n // character with a space character if charWidth is not zero.\n // But we cannot just do \"character = ' '\", because the ' ' character\n // might actually map to a different glyph.\n }\n\n const charWidth = vertical\n ? width * widthAdvanceScale - spacing * fontDirection\n : width * widthAdvanceScale + spacing * fontDirection;\n\n x += charWidth;\n }\n current.tspan.setAttributeNS(null, \"x\", current.xcoords.map(pf).join(\" \"));\n if (vertical) {\n current.tspan.setAttributeNS(\n null,\n \"y\",\n current.ycoords.map(pf).join(\" \")\n );\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === TextRenderingMode.ADD_TO_PATH) {\n // Workaround for Firefox: We must set fill=\"transparent\" because\n // fill=\"none\" would generate an empty clipping path.\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n // Include the text rise in the text matrix since the `pm` function\n // creates the SVG element's `translate` entry (work on a copy to avoid\n // altering the original text matrix).\n let textMatrix = current.textMatrix;\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(\n null,\n \"transform\",\n `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`\n );\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.append(current.tspan);\n current.txtgrp.append(current.txtElement);\n\n this._ensureTransformGroup().append(current.txtElement);\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\n \"addFontStyle: No font data available, \" +\n 'ensure that the \"fontExtraProperties\" API parameter is set.'\n );\n }\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.append(this.cssStyle);\n }\n\n const url = createObjectURL(\n fontObj.data,\n fontObj.mimetype,\n this.forceDataSchema\n );\n this.cssStyle.textContent +=\n `@font-face { font-family: \"${fontObj.loadedName}\";` +\n ` src: url(${url}); }\\n`;\n }\n\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n\n if (\n this.embedFonts &&\n !fontObj.missingFile &&\n !this.embeddedFonts[fontObj.loadedName]\n ) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n\n endText() {\n const current = this.current;\n if (\n current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG &&\n current.txtElement?.hasChildNodes()\n ) {\n // If no glyphs are shown (i.e. no child nodes), no clipping occurs.\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n // Path properties\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = Util.makeHexColor(r, g, b);\n }\n\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n\n setFillRGBColor(r, g, b) {\n this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n\n shadingFill(args) {\n const { width, height } = this.viewport;\n const inv = Util.inverseTransform(this.transformMatrix);\n const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox(\n [0, 0, width, height],\n inv\n );\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n this._ensureTransformGroup().append(rect);\n }\n\n /**\n * @private\n */\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n return this._makeShadingPattern(args);\n }\n\n /**\n * @private\n */\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n\n const tilingId = `shading${shadingCount++}`;\n const [tx0, ty0, tx1, ty1] = Util.normalizeRect([\n ...Util.applyTransform([x0, y0], matrix),\n ...Util.applyTransform([x1, y1], matrix),\n ]);\n const [xscale, yscale] = Util.singularValueDecompose2dScale(matrix);\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n\n // Save current state.\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n if (paintType === 2) {\n const cssColor = Util.makeHexColor(...color);\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n this.executeOpTree(this.convertOpList(operatorList));\n\n // Restore saved state.\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n\n tiling.append(bbox.childNodes[0]);\n this.defs.append(tiling);\n return `url(#${tilingId})`;\n }\n\n /**\n * @private\n */\n _makeShadingPattern(args) {\n if (typeof args === \"string\") {\n args = this.objs.get(args);\n }\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.append(stop);\n }\n this.defs.append(gradient);\n return `url(#${shadingId})`;\n case \"Mesh\":\n warn(\"Unimplemented pattern Mesh\");\n return null;\n case \"Dummy\":\n return \"hotpink\";\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n\n for (const op of ops) {\n switch (op | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\n \"M\",\n pf(x),\n pf(y),\n \"L\",\n pf(xw),\n pf(y),\n \"L\",\n pf(xw),\n pf(yh),\n \"L\",\n pf(x),\n pf(yh),\n \"Z\"\n );\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3]),\n pf(x),\n pf(y)\n );\n j += 6;\n break;\n case OPS.curveTo2:\n d.push(\n \"C\",\n pf(x),\n pf(y),\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3])\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));\n j += 4;\n break;\n case OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n\n d = d.join(\" \");\n\n if (\n current.path &&\n ops.length > 0 &&\n ops[0] !== OPS.rectangle &&\n ops[0] !== OPS.moveTo\n ) {\n // If a path does not start with an OPS.rectangle or OPS.moveTo, it has\n // probably been divided into two OPS.constructPath operators by\n // OperatorList. Append the commands to the previous path element.\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n this._ensureTransformGroup().append(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n\n // Saving a reference in current.element so that it can be addressed\n // in 'fill' and 'stroke'\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n\n endPath() {\n const current = this.current;\n\n // Painting operators end a path.\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n // Add the current path to a clipping path.\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n // A deep clone is needed when text is used as a clipping path.\n const clipElement = current.element.cloneNode(true);\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n this.pendingClip = null;\n clipPath.append(clipElement);\n this.defs.append(clipPath);\n\n if (current.activeClipUrl) {\n // The previous clipping group content can go out of order -- resetting\n // cached clipGroups.\n current.clipGroup = null;\n for (const prev of this.extraStack) {\n prev.clipGroup = null;\n }\n // Intersect with the previous clipping path.\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n current.activeClipUrl = `url(#${clipId})`;\n\n this.tgrp = null;\n }\n\n clip(type) {\n this.pendingClip = type;\n }\n\n closePath() {\n const current = this.current;\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value);\n break;\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n case \"ca\":\n this.setFillAlpha(value);\n break;\n default:\n warn(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n\n fill() {\n const current = this.current;\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n\n stroke() {\n const current = this.current;\n if (current.element) {\n this._setStrokeAttributes(current.element);\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n\n /**\n * @private\n */\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(\n null,\n \"stroke-width\",\n pf(lineWidthScale * current.lineWidth) + \"px\"\n );\n element.setAttributeNS(\n null,\n \"stroke-dasharray\",\n dashArray.map(pf).join(\" \")\n );\n element.setAttributeNS(\n null,\n \"stroke-dashoffset\",\n pf(lineWidthScale * current.dashPhase) + \"px\"\n );\n }\n\n eoFill() {\n this.current.element?.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n this.fill();\n }\n\n fillStroke() {\n // Order is important since stroke wants fill to be none.\n // First stroke, then if fill needed, it will be overwritten.\n this.stroke();\n this.fill();\n }\n\n eoFillStroke() {\n this.current.element?.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n this.fillStroke();\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().append(rect);\n }\n\n paintImageXObject(objId) {\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(\n null,\n \"transform\",\n `scale(${pf(1 / width)} ${pf(-1 / height)})`\n );\n if (mask) {\n mask.append(imgEl);\n } else {\n this._ensureTransformGroup().append(imgEl);\n }\n }\n\n paintImageMaskXObject(img) {\n const imgData = this.getObject(img.data, img);\n if (imgData.bitmap) {\n warn(\n \"paintImageMaskXObject: ImageBitmap support is not implemented, \" +\n \"ensure that the `isOffscreenCanvasSupported` API parameter is disabled.\"\n );\n return;\n }\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n\n this.defs.append(mask);\n this._ensureTransformGroup().append(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(\n matrix[0],\n matrix[1],\n matrix[2],\n matrix[3],\n matrix[4],\n matrix[5]\n );\n }\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {}\n\n /**\n * @private\n */\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n\n // Create the definitions element.\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.append(definitions);\n this.defs = definitions;\n\n // Create the root group element, which acts a container for all other\n // groups and applies the viewport transform.\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.append(rootGroup);\n\n // For the construction of the SVG image we are only interested in the\n // root group, so we expose it as the entry point of the SVG image for\n // the other code in this class.\n this.svg = rootGroup;\n\n return svg;\n }\n\n /**\n * @private\n */\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.append(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n return this.current.clipGroup;\n }\n\n /**\n * @private\n */\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().append(this.tgrp);\n } else {\n this.svg.append(this.tgrp);\n }\n }\n return this.tgrp;\n }\n}\n\nexport { SVGGraphics };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass XfaText {\n /**\n * Walk an XFA tree and create an array of text nodes that is compatible\n * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n * all other fields and styles haven't been implemented.\n *\n * @param {Object} xfa - An XFA fake DOM object.\n *\n * @returns {TextContent}\n */\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null),\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str,\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n\n /**\n * @param {string} name - DOM node name. (lower case)\n *\n * @returns {boolean} true if the DOM node should have a corresponding text\n * node.\n */\n static shouldBuildText(name) {\n return !(\n name === \"textarea\" ||\n name === \"input\" ||\n name === \"option\" ||\n name === \"select\"\n );\n }\n}\n\nexport { XfaText };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nimport {\n AbortException,\n FeatureTest,\n PromiseCapability,\n Util,\n} from \"../shared/util.js\";\nimport { deprecated, setLayerDimensions } from \"./display_utils.js\";\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {ReadableStream | TextContent} textContentSource - Text content to\n * render, i.e. the value returned by the page's `streamTextContent` or\n * `getTextContent` method.\n * @property {HTMLElement} container - The DOM node that will contain the text\n * runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n * the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n * the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {WeakMap<HTMLElement,Object>} [textDivProperties] - Some properties\n * weakly mapped to the HTML elements used to render the text.\n * @property {Array<string>} [textContentItemsStr] - Strings that correspond to\n * the `str` property of the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {boolean} [isOffscreenCanvasSupported] true if we can use\n * OffscreenCanvas to measure string widths.\n */\n\n/**\n * Text layer update parameters.\n *\n * @typedef {Object} TextLayerUpdateParameters\n * @property {HTMLElement} container - The DOM node that will contain the text\n * runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n * the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n * the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {WeakMap<HTMLElement,Object>} [textDivProperties] - Some properties\n * weakly mapped to the HTML elements used to render the text.\n * @property {boolean} [isOffscreenCanvasSupported] true if we can use\n * OffscreenCanvas to measure string widths.\n * @property {boolean} [mustRotate] true if the text layer must be rotated.\n * @property {boolean} [mustRescale] true if the text layer contents must be\n * rescaled.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\n\nfunction getCtx(size, isOffscreenCanvasSupported) {\n let ctx;\n if (isOffscreenCanvasSupported && FeatureTest.isOffscreenCanvasSupported) {\n ctx = new OffscreenCanvas(size, size).getContext(\"2d\", { alpha: false });\n } else {\n const canvas = document.createElement(\"canvas\");\n canvas.width = canvas.height = size;\n ctx = canvas.getContext(\"2d\", { alpha: false });\n }\n\n return ctx;\n}\n\nfunction getAscent(fontFamily, isOffscreenCanvasSupported) {\n const cachedAscent = ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n\n const ctx = getCtx(DEFAULT_FONT_SIZE, isOffscreenCanvasSupported);\n\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n\n // Both properties aren't available by default in Firefox.\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n\n ctx.canvas.width = ctx.canvas.height = 0;\n return ratio;\n }\n\n // Try basic heuristic to guess ascent/descent.\n // Draw a g with baseline at 0,0 and then get the line\n // number where a pixel has non-null red component (starting\n // from bottom).\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(\n 0,\n 0,\n DEFAULT_FONT_SIZE,\n DEFAULT_FONT_SIZE\n ).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n // Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line\n // number where a pixel has non-null red component (starting\n // from top).\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n ctx.canvas.width = ctx.canvas.height = 0;\n\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles) {\n // Initialize all used properties to keep the caches monomorphic.\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0,\n };\n task._textDivs.push(textDiv);\n\n const tx = Util.transform(task._transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent =\n fontHeight * getAscent(style.fontFamily, task._isOffscreenCanvasSupported);\n\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n\n const scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n // Setting the style properties individually, rather than all at once,\n // should be OK since the `textDiv` isn't appended to the document yet.\n if (task._container === task._rootContainer) {\n divStyle.left = `${((100 * left) / task._pageWidth).toFixed(2)}%`;\n divStyle.top = `${((100 * top) / task._pageHeight).toFixed(2)}%`;\n } else {\n // We're in a marked content span, hence we can't use percents.\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`;\n divStyle.fontFamily = style.fontFamily;\n\n textDivProperties.fontSize = fontHeight;\n\n // Keeps screen readers from pausing on every new text span.\n textDiv.setAttribute(\"role\", \"presentation\");\n\n textDiv.textContent = geom.str;\n // geom.dir may be 'ttb' for vertical texts.\n textDiv.dir = geom.dir;\n\n // `fontName` is only used by the FontInspector, and we only use `dataset`\n // here to make the font name available in the debugger.\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n // We don't bother scaling single-char text divs, because it has very\n // little effect on text highlighting. This makes scrolling on docs with\n // lots of such divs a lot faster.\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n // When the horizontal/vertical scaling differs significantly, also scale\n // even single-char text to improve highlighting (fixes issue11713.pdf).\n if (\n absScaleX !== absScaleY &&\n Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n ) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._isReadableStream) {\n task._layoutText(textDiv);\n }\n}\n\nfunction layout(params) {\n const { div, scale, properties, ctx, prevFontSize, prevFontFamily } = params;\n const { style } = div;\n let transform = \"\";\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const { fontFamily } = style;\n const { canvasWidth, fontSize } = properties;\n\n if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {\n ctx.font = `${fontSize * scale}px ${fontFamily}`;\n params.prevFontSize = fontSize;\n params.prevFontFamily = fontFamily;\n }\n\n // Only measure the width for multi-char text divs, see `appendText`.\n const { width } = ctx.measureText(div.textContent);\n\n if (width > 0) {\n transform = `scaleX(${(canvasWidth * scale) / width})`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n}\n\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n\n // No point in rendering many divs as it would make the browser\n // unusable even after the divs are rendered.\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n capability.resolve();\n return;\n }\n\n if (!task._isReadableStream) {\n for (const textDiv of textDivs) {\n task._layoutText(textDiv);\n }\n }\n capability.resolve();\n}\n\nclass TextLayerRenderTask {\n constructor({\n textContentSource,\n container,\n viewport,\n textDivs,\n textDivProperties,\n textContentItemsStr,\n isOffscreenCanvasSupported,\n }) {\n this._textContentSource = textContentSource;\n this._isReadableStream = textContentSource instanceof ReadableStream;\n this._container = this._rootContainer = container;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._isOffscreenCanvasSupported = isOffscreenCanvasSupported;\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n this._reader = null;\n this._textDivProperties = textDivProperties || new WeakMap();\n this._canceled = false;\n this._capability = new PromiseCapability();\n this._layoutTextParams = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale: viewport.scale * (globalThis.devicePixelRatio || 1),\n properties: null,\n ctx: getCtx(0, isOffscreenCanvasSupported),\n };\n const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this._pageWidth = pageWidth;\n this._pageHeight = pageHeight;\n\n setLayerDimensions(container, viewport);\n\n // Always clean-up the temporary canvas once rendering is no longer pending.\n this._capability.promise\n .finally(() => {\n this._layoutTextParams = null;\n })\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n }\n\n /**\n * Promise for textLayer rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Cancel rendering of the textLayer.\n */\n cancel() {\n this._canceled = true;\n if (this._reader) {\n this._reader\n .cancel(new AbortException(\"TextLayer task cancelled.\"))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n this._reader = null;\n }\n this._capability.reject(new AbortException(\"TextLayer task cancelled.\"));\n }\n\n /**\n * @private\n */\n _processItems(items, styleCache) {\n for (const item of items) {\n if (item.str === undefined) {\n if (\n item.type === \"beginMarkedContentProps\" ||\n item.type === \"beginMarkedContent\"\n ) {\n const parent = this._container;\n this._container = document.createElement(\"span\");\n this._container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this._container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this._container);\n } else if (item.type === \"endMarkedContent\") {\n this._container = this._container.parentNode;\n }\n continue;\n }\n this._textContentItemsStr.push(item.str);\n appendText(this, item, styleCache);\n }\n }\n\n /**\n * @private\n */\n _layoutText(textDiv) {\n const textDivProperties = (this._layoutTextParams.properties =\n this._textDivProperties.get(textDiv));\n this._layoutTextParams.div = textDiv;\n layout(this._layoutTextParams);\n\n if (textDivProperties.hasText) {\n this._container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this._container.append(br);\n }\n }\n\n /**\n * @private\n */\n _render() {\n const capability = new PromiseCapability();\n let styleCache = Object.create(null);\n\n if (this._isReadableStream) {\n const pump = () => {\n this._reader.read().then(({ value, done }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentSource.getReader();\n pump();\n } else if (this._textContentSource) {\n const { items, styles } = this._textContentSource;\n this._processItems(items, styles);\n capability.resolve();\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n\n capability.promise.then(() => {\n styleCache = null;\n render(this);\n }, this._capability.reject);\n }\n}\n\n/**\n * @param {TextLayerRenderParameters} params\n * @returns {TextLayerRenderTask}\n */\nfunction renderTextLayer(params) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n !params.textContentSource &&\n (params.textContent || params.textContentStream)\n ) {\n deprecated(\n \"The TextLayerRender `textContent`/`textContentStream` parameters \" +\n \"will be removed in the future, please use `textContentSource` instead.\"\n );\n params.textContentSource = params.textContent || params.textContentStream;\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC && !TESTING\")) {\n const { container, viewport } = params;\n const style = getComputedStyle(container);\n const visibility = style.getPropertyValue(\"visibility\");\n const scaleFactor = parseFloat(style.getPropertyValue(\"--scale-factor\"));\n\n if (\n visibility === \"visible\" &&\n (!scaleFactor || Math.abs(scaleFactor - viewport.scale) > 1e-5)\n ) {\n console.error(\n \"The `--scale-factor` CSS-variable must be set, \" +\n \"to the same value as `viewport.scale`, \" +\n \"either on the `container`-element itself or higher up in the DOM.\"\n );\n }\n }\n const task = new TextLayerRenderTask(params);\n task._render();\n return task;\n}\n\n/**\n * @param {TextLayerUpdateParameters} params\n * @returns {undefined}\n */\nfunction updateTextLayer({\n container,\n viewport,\n textDivs,\n textDivProperties,\n isOffscreenCanvasSupported,\n mustRotate = true,\n mustRescale = true,\n}) {\n if (mustRotate) {\n setLayerDimensions(container, { rotation: viewport.rotation });\n }\n\n if (mustRescale) {\n const ctx = getCtx(0, isOffscreenCanvasSupported);\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const params = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale,\n properties: null,\n ctx,\n };\n for (const div of textDivs) {\n params.properties = textDivProperties.get(div);\n params.div = div;\n layout(params);\n }\n }\n}\n\nexport { renderTextLayer, TextLayerRenderTask, updateTextLayer };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n/** @typedef {import(\"../display_utils.js\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n/** @typedef {import(\"../../web/interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/annotation_layer.js\").AnnotationLayer} AnnotationLayer */\n\nimport { AnnotationEditorType, FeatureTest } from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { FreeTextEditor } from \"./freetext.js\";\nimport { InkEditor } from \"./ink.js\";\nimport { setLayerDimensions } from \"../display_utils.js\";\nimport { StampEditor } from \"./stamp.js\";\n\n/**\n * @typedef {Object} AnnotationEditorLayerOptions\n * @property {Object} mode\n * @property {HTMLDivElement} div\n * @property {AnnotationEditorUIManager} uiManager\n * @property {boolean} enabled\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {number} pageIndex\n * @property {IL10n} l10n\n * @property {AnnotationLayer} [annotationLayer]\n * @property {PageViewport} viewport\n */\n\n/**\n * @typedef {Object} RenderEditorLayerOptions\n * @property {PageViewport} viewport\n */\n\n/**\n * Manage all the different editors on a page.\n */\nclass AnnotationEditorLayer {\n #accessibilityManager;\n\n #allowClick = false;\n\n #annotationLayer = null;\n\n #boundPointerup = this.pointerup.bind(this);\n\n #boundPointerdown = this.pointerdown.bind(this);\n\n #editors = new Map();\n\n #hadPointerDown = false;\n\n #isCleaningUp = false;\n\n #isDisabling = false;\n\n #uiManager;\n\n static _initialized = false;\n\n /**\n * @param {AnnotationEditorLayerOptions} options\n */\n constructor({\n uiManager,\n pageIndex,\n div,\n accessibilityManager,\n annotationLayer,\n viewport,\n l10n,\n }) {\n const editorTypes = [FreeTextEditor, InkEditor, StampEditor];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n\n this.#uiManager.addLayer(this);\n }\n\n get isEmpty() {\n return this.#editors.size === 0;\n }\n\n /**\n * Update the toolbar if it's required to reflect the tool currently used.\n * @param {number} mode\n */\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n\n /**\n * The mode has changed: it must be updated.\n * @param {number} mode\n */\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n if (mode === AnnotationEditorType.INK) {\n // We always want to an ink editor ready to draw in.\n this.addInkEditorIfNeeded(false);\n this.disableClick();\n } else {\n this.enableClick();\n }\n\n if (mode !== AnnotationEditorType.NONE) {\n this.div.classList.toggle(\n \"freeTextEditing\",\n mode === AnnotationEditorType.FREETEXT\n );\n this.div.classList.toggle(\n \"inkEditing\",\n mode === AnnotationEditorType.INK\n );\n this.div.classList.toggle(\n \"stampEditing\",\n mode === AnnotationEditorType.STAMP\n );\n this.div.hidden = false;\n }\n }\n\n addInkEditorIfNeeded(isCommitting) {\n if (\n !isCommitting &&\n this.#uiManager.getMode() !== AnnotationEditorType.INK\n ) {\n return;\n }\n\n if (!isCommitting) {\n // We're removing an editor but an empty one can already exist so in this\n // case we don't need to create a new one.\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n\n const editor = this.#createAndAddNewEditor(\n { offsetX: 0, offsetY: 0 },\n /* isCentered = */ false\n );\n editor.setInBackground();\n }\n\n /**\n * Set the editing state.\n * @param {boolean} isEditing\n */\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n\n /**\n * Add some commands into the CommandManager (undo/redo stuff).\n * @param {Object} params\n */\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n\n /**\n * Enable pointer events on the main div in order to enable\n * editor creation.\n */\n enable() {\n this.div.style.pointerEvents = \"auto\";\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n if (editor.annotationElementId) {\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n\n if (!this.#annotationLayer) {\n return;\n }\n\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n // The element must be hidden whatever its state is.\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n\n /**\n * Disable editor creation.\n */\n disable() {\n this.#isDisabling = true;\n this.div.style.pointerEvents = \"none\";\n const hiddenAnnotationIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId || editor.serialize() !== null) {\n hiddenAnnotationIds.add(editor.annotationElementId);\n continue;\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n\n if (this.#annotationLayer) {\n // Show the annotations that were hidden in enable().\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const { id } = editable.data;\n if (\n hiddenAnnotationIds.has(id) ||\n this.#uiManager.isDeletedAnnotationElement(id)\n ) {\n continue;\n }\n editable.show();\n }\n }\n\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n this.#isDisabling = false;\n }\n\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n\n /**\n * Set the current editor.\n * @param {AnnotationEditor} editor\n */\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n\n this.#uiManager.setActiveEditor(editor);\n }\n\n enableClick() {\n this.div.addEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.addEventListener(\"pointerup\", this.#boundPointerup);\n }\n\n disableClick() {\n this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n }\n\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const { annotationElementId } = editor;\n if (\n annotationElementId &&\n this.#uiManager.isDeletedAnnotationElement(annotationElementId)\n ) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n\n /**\n * Remove an editor.\n * @param {AnnotationEditor} editor\n */\n remove(editor) {\n // Since we can undo a removal we need to keep the\n // parent property as it is, so don't null it!\n\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n if (editor.div.contains(document.activeElement)) {\n setTimeout(() => {\n // When the div is removed from DOM the focus can move on the\n // document.body, so we need to move it back to the main container.\n this.#uiManager.focusMainContainer();\n }, 0);\n }\n editor.div.remove();\n editor.isAttachedToDOM = false;\n\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(/* isCommitting = */ false);\n }\n }\n\n /**\n * An editor can have a different parent, for example after having\n * being dragged and droped from a page to another.\n * @param {AnnotationEditor} editor\n */\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n\n if (editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n\n /**\n * Add a new editor in the current view.\n * @param {AnnotationEditor} editor\n */\n add(editor) {\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n\n this.moveEditorInDOM(editor);\n editor.onceAdded();\n this.#uiManager.addToAnnotationStorage(editor);\n }\n\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n\n const { activeElement } = document;\n if (editor.div.contains(activeElement)) {\n // When the div is moved in the DOM the focus can move somewhere else,\n // so we want to be sure that the focus will stay on the editor but we\n // don't want to call any focus callbacks, hence we disable them and only\n // re-enable them when the editor has the focus.\n editor._focusEventsAllowed = false;\n setTimeout(() => {\n editor.div.addEventListener(\n \"focusin\",\n () => {\n editor._focusEventsAllowed = true;\n },\n { once: true }\n );\n activeElement.focus();\n }, 0);\n }\n\n this.#accessibilityManager?.moveElementInDOM(\n this.div,\n editor.div,\n editor.contentDiv,\n /* isRemovable = */ true\n );\n }\n\n /**\n * Add or rebuild depending if it has been removed or not.\n * @param {AnnotationEditor} editor\n */\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.rebuild();\n } else {\n this.add(editor);\n }\n }\n\n /**\n * Add a new editor and make this addition undoable.\n * @param {AnnotationEditor} editor\n */\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n\n this.addCommands({ cmd, undo, mustExec: false });\n }\n\n /**\n * Get an id for an editor.\n * @returns {string}\n */\n getNextId() {\n return this.#uiManager.getId();\n }\n\n /**\n * Create a new editor\n * @param {Object} params\n * @returns {AnnotationEditor}\n */\n #createNewEditor(params) {\n switch (this.#uiManager.getMode()) {\n case AnnotationEditorType.FREETEXT:\n return new FreeTextEditor(params);\n case AnnotationEditorType.INK:\n return new InkEditor(params);\n case AnnotationEditorType.STAMP:\n return new StampEditor(params);\n }\n return null;\n }\n\n /**\n * Paste some content into a new editor.\n * @param {number} mode\n * @param {Object} params\n */\n pasteEditor(mode, params) {\n this.#uiManager.updateToolbar(mode);\n this.#uiManager.updateMode(mode);\n\n const { offsetX, offsetY } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params,\n });\n if (editor) {\n this.add(editor);\n }\n }\n\n /**\n * Create a new editor\n * @param {Object} data\n * @returns {AnnotationEditor}\n */\n deserialize(data) {\n switch (data.annotationType ?? data.annotationEditorType) {\n case AnnotationEditorType.FREETEXT:\n return FreeTextEditor.deserialize(data, this, this.#uiManager);\n case AnnotationEditorType.INK:\n return InkEditor.deserialize(data, this, this.#uiManager);\n case AnnotationEditorType.STAMP:\n return StampEditor.deserialize(data, this, this.#uiManager);\n }\n return null;\n }\n\n /**\n * Create and add a new editor.\n * @param {PointerEvent} event\n * @param {boolean} isCentered\n * @returns {AnnotationEditor}\n */\n #createAndAddNewEditor(event, isCentered) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n });\n if (editor) {\n this.add(editor);\n }\n\n return editor;\n }\n\n #getCenterPoint() {\n const { x, y, width, height } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] =\n this.viewport.rotation % 180 === 0\n ? [centerX, centerY]\n : [centerY, centerX];\n\n return { offsetX, offsetY };\n }\n\n /**\n * Create and add a new editor.\n */\n addNewEditor() {\n this.#createAndAddNewEditor(\n this.#getCenterPoint(),\n /* isCentered = */ true\n );\n }\n\n /**\n * Set the last selected editor.\n * @param {AnnotationEditor} editor\n */\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n\n /**\n * Add or remove an editor the current selection.\n * @param {AnnotationEditor} editor\n */\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n\n /**\n * Check if the editor is selected.\n * @param {AnnotationEditor} editor\n */\n isSelected(editor) {\n return this.#uiManager.isSelected(editor);\n }\n\n /**\n * Unselect an editor.\n * @param {AnnotationEditor} editor\n */\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n\n /**\n * Pointerup callback.\n * @param {PointerEvent} event\n */\n pointerup(event) {\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Don't create an editor on right click.\n return;\n }\n\n if (event.target !== this.div) {\n return;\n }\n\n if (!this.#hadPointerDown) {\n // It can happen when the user starts a drag inside a text editor\n // and then releases the mouse button outside of it. In such a case\n // we don't want to create a new editor, hence we check that a pointerdown\n // occurred on this div previously.\n return;\n }\n this.#hadPointerDown = false;\n\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n\n if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n this.#uiManager.unselectAll();\n return;\n }\n\n this.#createAndAddNewEditor(event, /* isCentered = */ false);\n }\n\n /**\n * Pointerdown callback.\n * @param {PointerEvent} event\n */\n pointerdown(event) {\n if (this.#hadPointerDown) {\n // It's possible to have a second pointerdown event before a pointerup one\n // when the user puts a finger on a touchscreen and then add a second one\n // to start a pinch-to-zoom gesture.\n // That said, in case it's possible to have two pointerdown events with\n // a mouse, we don't want to create a new editor in such a case either.\n this.#hadPointerDown = false;\n return;\n }\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Do nothing on right click.\n return;\n }\n\n if (event.target !== this.div) {\n return;\n }\n\n this.#hadPointerDown = true;\n\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n\n /**\n *\n * @param {AnnotationEditor} editor\n * @param {number} x\n * @param {number} y\n * @returns\n */\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n\n /**\n * Destroy the main editor.\n */\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.setActiveEditor(null);\n }\n\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n\n #cleanup() {\n // When we're cleaning up, some editors are removed but we don't want\n // to add a new one which will induce an addition in this.#editors, hence\n // an infinite loop.\n this.#isCleaningUp = true;\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n this.#isCleaningUp = false;\n }\n\n /**\n * Render the main editor.\n * @param {RenderEditorLayerOptions} parameters\n */\n render({ viewport }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n }\n this.updateMode();\n }\n\n /**\n * Update the main editor.\n * @param {RenderEditorLayerOptions} parameters\n */\n update({ viewport }) {\n // Editors have their dimensions/positions in percent so to avoid any\n // issues (see #15582), we must commit the current one before changing\n // the viewport.\n this.#uiManager.commitOrRemove();\n\n this.viewport = viewport;\n setLayerDimensions(this.div, { rotation: viewport.rotation });\n this.updateMode();\n }\n\n /**\n * Get page dimensions.\n * @returns {Object} dimensions.\n */\n get pageDimensions() {\n const { pageWidth, pageHeight } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n}\n\nexport { AnnotationEditorLayer };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n AnnotationEditorParamsType,\n AnnotationEditorType,\n assert,\n LINE_FACTOR,\n shadow,\n Util,\n} from \"../../shared/util.js\";\nimport {\n AnnotationEditorUIManager,\n bindEvents,\n KeyboardManager,\n} from \"./tools.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { FreeTextAnnotationElement } from \"../annotation_layer.js\";\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass FreeTextEditor extends AnnotationEditor {\n #boundEditorDivBlur = this.editorDivBlur.bind(this);\n\n #boundEditorDivFocus = this.editorDivFocus.bind(this);\n\n #boundEditorDivInput = this.editorDivInput.bind(this);\n\n #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n\n #color;\n\n #content = \"\";\n\n #editorDivId = `${this.id}-editor`;\n\n #fontSize;\n\n #initialData = null;\n\n static _freeTextDefaultContent = \"\";\n\n static _l10nPromise;\n\n static _internalPadding = 0;\n\n static _defaultColor = null;\n\n static _defaultFontSize = 10;\n\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n\n const arrowChecker = self => self.isEmpty();\n\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n\n return shadow(\n this,\n \"_keyboardManager\",\n new KeyboardManager([\n [\n // Commit the text in case the user use ctrl+s to save the document.\n // The event must bubble in order to be caught by the viewer.\n // See bug 1831574.\n [\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"],\n proto.commitOrRemove,\n { bubbles: true },\n ],\n [\n [\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"],\n proto.commitOrRemove,\n ],\n [\n [\"ArrowLeft\", \"mac+ArrowLeft\"],\n proto._translateEmpty,\n { args: [-small, 0], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n proto._translateEmpty,\n { args: [-big, 0], checker: arrowChecker },\n ],\n [\n [\"ArrowRight\", \"mac+ArrowRight\"],\n proto._translateEmpty,\n { args: [small, 0], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n proto._translateEmpty,\n { args: [big, 0], checker: arrowChecker },\n ],\n [\n [\"ArrowUp\", \"mac+ArrowUp\"],\n proto._translateEmpty,\n { args: [0, -small], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n proto._translateEmpty,\n { args: [0, -big], checker: arrowChecker },\n ],\n [\n [\"ArrowDown\", \"mac+ArrowDown\"],\n proto._translateEmpty,\n { args: [0, small], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n proto._translateEmpty,\n { args: [0, big], checker: arrowChecker },\n ],\n ])\n );\n }\n\n static _type = \"freetext\";\n\n constructor(params) {\n super({ ...params, name: \"freeTextEditor\" });\n this.#color =\n params.color ||\n FreeTextEditor._defaultColor ||\n AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n\n /** @inheritdoc */\n static initialize(l10n) {\n this._l10nPromise = new Map(\n [\"free_text2_default_content\", \"editor_free_text2_aria_label\"].map(\n str => [str, l10n.get(str)]\n )\n );\n\n const style = getComputedStyle(document.documentElement);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n const lineHeight = parseFloat(\n style.getPropertyValue(\"--freetext-line-height\")\n );\n assert(\n lineHeight === LINE_FACTOR,\n \"Update the CSS variable to agree with the constant.\"\n );\n }\n\n this._internalPadding = parseFloat(\n style.getPropertyValue(\"--freetext-padding\")\n );\n }\n\n /** @inheritdoc */\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n\n /** @inheritdoc */\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n\n /** @inheritdoc */\n static get defaultPropertiesToUpdate() {\n return [\n [\n AnnotationEditorParamsType.FREETEXT_SIZE,\n FreeTextEditor._defaultFontSize,\n ],\n [\n AnnotationEditorParamsType.FREETEXT_COLOR,\n FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor,\n ],\n ];\n }\n\n /** @inheritdoc */\n get propertiesToUpdate() {\n return [\n [AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize],\n [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color],\n ];\n }\n\n /**\n * Update the font size and make this action as undoable.\n * @param {number} fontSize\n */\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: () => {\n setFontsize(fontSize);\n },\n undo: () => {\n setFontsize(savedFontsize);\n },\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /**\n * Update the color and make this action undoable.\n * @param {string} color\n */\n #updateColor(color) {\n const savedColor = this.#color;\n this.addCommands({\n cmd: () => {\n this.#color = this.editorDiv.style.color = color;\n },\n undo: () => {\n this.#color = this.editorDiv.style.color = savedColor;\n },\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /**\n * Helper to translate the editor with the keyboard when it's empty.\n * @param {number} x in page units.\n * @param {number} y in page units.\n */\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, /* noCommit = */ true);\n }\n\n /** @inheritdoc */\n getInitialTranslation() {\n // The start of the base line is where the user clicked.\n const scale = this.parentScale;\n return [\n -FreeTextEditor._internalPadding * scale,\n -(FreeTextEditor._internalPadding + this.#fontSize) * scale,\n ];\n }\n\n /** @inheritdoc */\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilting it,\n // hence we must add it to its parent.\n this.parent.add(this);\n }\n }\n\n /** @inheritdoc */\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n\n this.parent.setEditingState(false);\n this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.addEventListener(\"input\", this.#boundEditorDivInput);\n }\n\n /** @inheritdoc */\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.editorDiv.removeEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.removeEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.removeEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.removeEventListener(\"input\", this.#boundEditorDivInput);\n\n // On Chrome, the focus is given to <body> when contentEditable is set to\n // false, hence we focus the div.\n this.div.focus({\n preventScroll: true /* See issue #15744 */,\n });\n\n // In case the blur callback hasn't been called.\n this.isEditing = false;\n this.parent.div.classList.add(\"freeTextEditing\");\n }\n\n /** @inheritdoc */\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n\n /** @inheritdoc */\n onceAdded() {\n if (this.width) {\n this.#cheatInitialRect();\n // The editor was created in using ctrl+c.\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n\n /** @inheritdoc */\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n\n /** @inheritdoc */\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freeTextEditing\");\n }\n super.remove();\n }\n\n /**\n * Extract the text from this editor.\n * @returns {string}\n */\n #extractText() {\n const divs = this.editorDiv.getElementsByTagName(\"div\");\n if (divs.length === 0) {\n return this.editorDiv.innerText;\n }\n const buffer = [];\n for (const div of divs) {\n buffer.push(div.innerText.replace(/\\r\\n?|\\n/, \"\"));\n }\n return buffer.join(\"\\n\");\n }\n\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n // This editor isn't on screen but we need to get its dimensions, so\n // we just insert it in the DOM, get its bounding box and then remove it.\n const { currentLayer, div } = this;\n const savedDisplay = div.style.display;\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n }\n\n // The dimensions are relative to the rotation of the page, hence we need to\n // take that into account (see issue #16636).\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n\n /**\n * Commit the content we have in this editor.\n * @returns {undefined}\n */\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = (this.#content = this.#extractText().trimEnd());\n if (savedText === newText) {\n return;\n }\n\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false,\n });\n this.#setEditorDimensions();\n }\n\n /** @inheritdoc */\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n\n /** @inheritdoc */\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n\n /**\n * ondblclick callback.\n * @param {MouseEvent} event\n */\n dblclick(event) {\n this.enterInEditMode();\n }\n\n /**\n * onkeydown callback.\n * @param {KeyboardEvent} event\n */\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n // Avoid to add an unwanted new line.\n event.preventDefault();\n }\n }\n\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n\n editorDivFocus(event) {\n this.isEditing = true;\n }\n\n editorDivBlur(event) {\n this.isEditing = false;\n }\n\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freeTextEditing\", this.isEmpty());\n }\n\n /** @inheritdoc */\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n\n /** @inheritdoc */\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n\n /** @inheritdoc */\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.enableEditing();\n\n FreeTextEditor._l10nPromise\n .get(\"editor_free_text2_aria_label\")\n .then(msg => this.editorDiv?.setAttribute(\"aria-label\", msg));\n\n FreeTextEditor._l10nPromise\n .get(\"free_text2_default_content\")\n .then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n this.editorDiv.contentEditable = true;\n\n const { style } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n\n this.div.append(this.editorDiv);\n\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n\n // TODO: implement paste callback.\n // The goal is to sanitize and have something suitable for this\n // editor.\n bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n\n if (this.width) {\n // This editor was created in using copy (ctrl+c).\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n // This stuff is hard to test: if something is changed here, please\n // test with the following PDF file:\n // - freetexts.pdf\n // - rotated_freetexts.pdf\n // Only small variations between the original annotation and its editor\n // are allowed.\n\n // position is the position of the first glyph in the annotation\n // and it's relative to its container.\n const { position } = this.#initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX =\n baseX +\n (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY =\n baseY +\n (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this.setAt(\n baseX * parentWidth,\n baseY * parentHeight,\n this.width * parentWidth,\n this.height * parentHeight\n );\n }\n\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n this.div.setAttribute(\"annotation-id\", this.annotationElementId);\n }\n\n return this.div;\n }\n\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(\n line ? document.createTextNode(line) : document.createElement(\"br\")\n );\n this.editorDiv.append(div);\n }\n }\n\n get contentDiv() {\n return this.editorDiv;\n }\n\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: { fontSize, fontColor },\n rect,\n rotation,\n id,\n },\n textContent,\n textPosition,\n parent: {\n page: { pageNumber },\n },\n } = data;\n // textContent is supposed to be an array of strings containing each line\n // of text. However, it can be null or empty.\n if (!textContent || textContent.length === 0) {\n // Empty annotation.\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect,\n rotation,\n id,\n deleted: false,\n };\n }\n const editor = super.deserialize(data, parent, uiManager);\n\n editor.#fontSize = data.fontSize;\n editor.#color = Util.makeHexColor(...data.color);\n editor.#content = data.value;\n editor.annotationElementId = data.id || null;\n editor.#initialData = initialData;\n\n return editor;\n }\n\n /** @inheritdoc */\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n\n if (this.deleted) {\n return {\n pageIndex: this.pageIndex,\n id: this.annotationElementId,\n deleted: true,\n };\n }\n\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(\n this.isAttachedToDOM\n ? getComputedStyle(this.editorDiv).color\n : this.#color\n );\n\n const serialized = {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#content,\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n };\n\n if (isForCopying) {\n // Don't add the id when copying because the pasted editor mustn't be\n // linked to an existing annotation.\n return serialized;\n }\n\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n\n serialized.id = this.annotationElementId;\n\n return serialized;\n }\n\n #hasElementChanged(serialized) {\n const { value, fontSize, color, rect, pageIndex } = this.#initialData;\n\n return (\n serialized.value !== value ||\n serialized.fontSize !== fontSize ||\n serialized.rect.some((x, i) => Math.abs(x - rect[i]) >= 1) ||\n serialized.color.some((c, i) => c !== color[i]) ||\n serialized.pageIndex !== pageIndex\n );\n }\n\n #cheatInitialRect(delayed = false) {\n // The annotation has a rect but the editor has an other one.\n // When we want to know if the annotation has changed (e.g. has been moved)\n // we must compare the editor initial rect with the current one.\n // So this method is a hack to have a way to compare the real rects.\n if (!this.annotationElementId) {\n return;\n }\n\n this.#setEditorDimensions();\n if (!delayed && (this.width === 0 || this.height === 0)) {\n setTimeout(() => this.#cheatInitialRect(/* delayed = */ true), 0);\n return;\n }\n\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n this.#initialData.rect = this.getRect(padding, padding);\n }\n}\n\nexport { FreeTextEditor };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n AnnotationBorderStyleType,\n AnnotationEditorType,\n AnnotationType,\n FeatureTest,\n LINE_FACTOR,\n shadow,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n AnnotationPrefix,\n DOMSVGFactory,\n getFilenameFromUrl,\n PDFDateString,\n setLayerDimensions,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { NullL10n } from \"display-l10n_utils\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1],\n };\n}\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n */\n\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\n\nclass AnnotationElement {\n #hasBorder = false;\n\n constructor(\n parameters,\n {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false,\n } = {}\n ) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLElement} A section element.\n */\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: { page, viewport },\n } = this;\n\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n\n // The accessibility manager will move the annotation in the DOM in\n // order to match the visual ordering.\n // But if an annotation is above an other one, then we must draw it\n // after the other one whatever the order is in the DOM, hence the\n // use of the z-index.\n container.style.zIndex = this.parent.zIndex++;\n\n if (this.data.popupRef) {\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n }\n\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n\n const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const { rotation } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n\n const { width, height } = getRectDims(data.rect);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n container.style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n container.style.borderColor = Util.makeHexColor(\n borderColor[0] | 0,\n borderColor[1] | 0,\n borderColor[2] | 0\n );\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n container.style.top = `${(100 * (rect[1] - pageY)) / pageHeight}%`;\n\n const { rotation } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n container.style.width = `${(100 * width) / pageWidth}%`;\n container.style.height = `${(100 * height) / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n\n return container;\n }\n\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const { pageWidth, pageHeight } = this.parent.viewport.rawDims;\n const { width, height } = getRectDims(this.data.rect);\n\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = (100 * width) / pageWidth;\n elementHeight = (100 * height) / pageHeight;\n } else {\n elementWidth = (100 * height) / pageWidth;\n elementHeight = (100 * width) / pageHeight;\n }\n\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] =\n ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray),\n });\n };\n\n return shadow(this, \"_commonActions\", {\n display: event => {\n const { display } = event.detail;\n // See scripting/constants.js for the values of `Display`.\n // 0 = visible, 1 = hidden, 2 = noPrint and 3 = noView.\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2,\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print,\n });\n },\n hidden: event => {\n const { hidden } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden,\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n },\n userName: event => {\n // tooltip\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle,\n });\n },\n });\n }\n\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n\n // Some properties may have been updated thanks to JS.\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail,\n },\n target: element,\n };\n action(eventProxy);\n // The action has been consumed: no need to keep it.\n delete storedData[actionName];\n }\n }\n }\n\n /**\n * Create quadrilaterals from the annotation's quadpoints.\n *\n * @private\n * @memberof AnnotationElement\n */\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const { quadPoints } = this.data;\n if (!quadPoints) {\n return;\n }\n\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect;\n\n if (quadPoints.length === 1) {\n const [, { x: trX, y: trY }, { x: blX, y: blY }] = quadPoints[0];\n if (\n rectTrX === trX &&\n rectTrY === trY &&\n rectBlX === blX &&\n rectBlY === blY\n ) {\n // The quadpoints cover the whole annotation rectangle, so no need to\n // create a quadrilateral.\n return;\n }\n }\n\n const { style } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const { borderColor, borderWidth } = style;\n style.borderWidth = 0;\n svgBuffer = [\n \"url('data:image/svg+xml;utf8,\",\n `<svg xmlns=\"http://www.w3.org/2000/svg\"`,\n ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`,\n `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`,\n ];\n this.container.classList.add(\"hasBorder\");\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n this.container.classList.add(\"hasClipPath\");\n }\n\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n\n const { svgFactory } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n\n for (const [, { x: trX, y: trY }, { x: blX, y: blY }] of quadPoints) {\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(\n `<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`\n );\n }\n\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @memberof AnnotationElement\n */\n _createPopup() {\n const { container, data } = this;\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n\n const popup = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation,\n },\n parent: this.parent,\n elements: [this],\n });\n this.parent.div.append(popup.render());\n }\n\n /**\n * Render the annotation's HTML element(s).\n *\n * @public\n * @memberof AnnotationElement\n */\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n\n /**\n * @private\n * @returns {Array}\n */\n _getElementsByName(name, skipId = null) {\n const fields = [];\n\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const { page, id, exportValues } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue =\n typeof exportValues === \"string\" ? exportValues : null;\n\n const domElement = document.querySelector(\n `[data-element-id=\"${id}\"]`\n );\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n }\n return fields;\n }\n // Fallback to a regular DOM lookup, to ensure that the standalone\n // viewer components won't break.\n for (const domElement of document.getElementsByName(name)) {\n const { exportValue } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n return fields;\n }\n\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n\n /**\n * Get the HTML element(s) which can trigger a popup when clicked or hovered.\n *\n * @public\n * @memberof AnnotationElement\n * @returns {Array<HTMLElement>|HTMLElement} An array of elements or an\n * element.\n */\n getElementsToTriggerPopup() {\n return this.container;\n }\n\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n\n _editOnDoubleClick() {\n const {\n annotationEditorType: mode,\n data: { id: editId },\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n });\n });\n }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true,\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n\n render() {\n const { data, linkService } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this._bindAttachment(link, data.attachment);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (\n data.actions &&\n (data.actions.Action ||\n data.actions[\"Mouse Up\"] ||\n data.actions[\"Mouse Down\"]) &&\n this.enableScripting &&\n this.hasJSActions\n ) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n\n return this.container;\n }\n\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\n */\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === /* isTooltipOnly = */ \"\") {\n this.#setInternalLink();\n }\n }\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\n */\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n\n /**\n * Bind attachments to the link element.\n * @param {Object} link\n * @param {Object} attachment\n */\n _bindAttachment(link, attachment) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(\n this.container,\n attachment.content,\n attachment.filename\n );\n return false;\n };\n this.#setInternalLink();\n }\n\n /**\n * Bind SetOCGState actions to the link element.\n * @param {Object} link\n * @param {Object} action\n */\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n\n /**\n * Bind JS actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} data\n * @memberof LinkAnnotationElement\n */\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([\n [\"Action\", \"onclick\"],\n [\"Mouse Up\", \"onmouseup\"],\n [\"Mouse Down\", \"onmousedown\"],\n ]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name,\n },\n });\n return false;\n };\n }\n\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n\n if (!this._fieldObjects) {\n warn(\n `_bindResetFormAction - \"resetForm\" action not supported, ` +\n \"ensure that the `fieldObjects` parameter is provided.\"\n );\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n\n link.onclick = () => {\n otherClickAction?.();\n\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include,\n } = resetForm;\n\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const { id } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const { id } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\": {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, { value });\n break;\n }\n case \"combobox\":\n case \"listbox\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n default:\n continue;\n }\n\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n\n if (this.enableScripting) {\n // Update the values in the sandbox.\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\",\n },\n });\n }\n\n return false;\n };\n }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.popupRef ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable });\n }\n\n render() {\n this.container.classList.add(\"textAnnotation\");\n\n const image = document.createElement(\"img\");\n image.src =\n this.imageResourcesPath +\n \"annotation-\" +\n this.data.name.toLowerCase() +\n \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });\n\n if (!this.data.popupRef) {\n this._createPopup();\n }\n\n this.container.append(image);\n return this.container;\n }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n // Show only the container for unsupported field types.\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n\n return this.container;\n }\n\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n\n _getKeyModifier(event) {\n const { isWin, isMac } = FeatureTest.platform;\n return (isWin && event.ctrlKey) || (isMac && event.metaKey);\n }\n\n _setEventListener(element, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n // Mouse events\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event),\n },\n });\n });\n } else {\n // Non mouse event\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n },\n });\n });\n }\n }\n\n _setEventListeners(element, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n this._setEventListener(element, baseName, eventName, getter);\n }\n }\n }\n\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor =\n color === null\n ? \"transparent\"\n : Util.makeHexColor(color[0], color[1], color[2]);\n }\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const { fontColor } = this.data.defaultAppearanceData;\n const fontSize =\n this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n\n const style = element.style;\n\n // TODO: If the font-size is zero, calculate it based on the height and\n // width of the element.\n // Not setting `style.fontSize` will use the default font-size for now.\n\n // We don't use the font, as specified in the PDF document, for the <input>\n // element. Hence using the original `fontSize` could look bad, which is why\n // it's instead based on the field height.\n // If the height is \"big\" then it could lead to a too big font size\n // so in this case use the one we've in the pdf (hence the min).\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(\n this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n );\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(\n fontSize,\n roundToOneDecimal(lineHeight / LINE_FACTOR)\n );\n } else {\n const height = Math.abs(\n this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n );\n computedFontSize = Math.min(\n fontSize,\n roundToOneDecimal(height / LINE_FACTOR)\n );\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable =\n parameters.renderForms ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n super(parameters, { isRenderable });\n }\n\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(\n base.name,\n /* skipId = */ base.id\n )) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, { [keyInStorage]: value });\n }\n }\n\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n this.container.classList.add(\"textWidgetAnnotation\");\n\n let element = null;\n if (this.renderForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen,\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n\n let fieldFormattedValues =\n storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n };\n\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n this._setRequired(element, this.data.required);\n\n if (maxLen) {\n element.maxLength = maxLen;\n }\n\n element.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n this.setPropertyOnSiblings(\n element,\n \"value\",\n event.target.value,\n \"value\"\n );\n elementData.formattedValue = null;\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n\n let blurListener = event => {\n const { formattedValue } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n // Reset the cursor position to the start of the field (issue 12359).\n event.target.scrollLeft = 0;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n const { target } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n });\n\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, { value: elementData.userValue.toString() });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const { formattedValue } = event.detail;\n elementData.formattedValue = formattedValue;\n if (\n formattedValue !== null &&\n formattedValue !== undefined &&\n event.target !== document.activeElement\n ) {\n // Input hasn't the focus so display formatted string\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue,\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const { charLimit } = event.detail;\n const { target } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, { value });\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd,\n },\n });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n // Even if the field hasn't any actions\n // leaving it can still trigger some actions with Calculate\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n // If the key is one of Escape, Enter then the data are committed.\n // If we've a Tab then data will be committed on blur.\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n // When we've a multiline field, \"Enter\" key is a key as the other\n // hence we don't commit the data (Acrobat behaves the same way)\n // (see issue #15627).\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const { value } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n // Save the entered value\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!event.relatedTarget) {\n return;\n }\n const { value } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n }\n _blurListener(event);\n });\n\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const { data, target } = event;\n const { value, selectionStart, selectionEnd } = target;\n\n let selStart = selectionStart,\n selEnd = selectionEnd;\n\n switch (event.inputType) {\n // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n case \"deleteWordBackward\": {\n const match = value\n .substring(0, selectionStart)\n .match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\": {\n const match = value\n .substring(selectionStart)\n .match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n\n // We handle the event ourselves.\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd,\n },\n });\n });\n }\n\n this._setEventListeners(\n element,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.value\n );\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n }\n\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: !!parameters.data.hasOwnCanvas });\n }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== \"Off\";\n storage.setValue(id, { value });\n }\n\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, { value: curChecked });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, { value: event.target.checked });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== data.buttonValue;\n storage.setValue(id, { value });\n }\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n storage.setValue(radio.id, { value: false });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked =\n defaultValue !== null &&\n defaultValue !== undefined &&\n defaultValue === data.buttonValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, { value: curChecked });\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n }\n\n render() {\n // The rendering and functionality of a push button widget annotation is\n // equal to that of a link annotation, but may have more functionality, such\n // as performing actions on form fields (resetting, submitting, et cetera).\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n\n return container;\n }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n });\n\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n\n // Insert the options into the choice field.\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const { options, multiple } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1\n ? null\n : options[options.selectedIndex][name];\n }\n return Array.prototype.filter\n .call(options, option => option.selected)\n .map(option => option[name]);\n };\n\n let selectedValues = getValue(/* isExport */ false);\n\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return { displayValue: option.textContent, exportValue: option.value };\n });\n };\n\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(\n options,\n option => option.selected\n );\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, { value: null, items: [] });\n selectedValues = getValue(/* isExport */ false);\n },\n insert(event) {\n const { index, displayValue, exportValue } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n items(event) {\n const { items } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const { displayValue, exportValue } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(/* isExport */ true);\n storage.setValue(id, { value: exportValue });\n\n event.preventDefault();\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false,\n },\n });\n });\n\n this._setEventListeners(\n selectElement,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n [\"input\", \"Action\"],\n [\"input\", \"Validate\"],\n ],\n event => event.target.value\n );\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, { value: getValue(/* isExport */ true) });\n });\n }\n\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {\n // Just use the default font size...\n // it's a bit hard to guess what is a good size.\n }\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n\n this.container.append(selectElement);\n return this.container;\n }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const { data, elements } = parameters;\n const isRenderable = !!(\n data.titleObj?.str ||\n data.contentsObj?.str ||\n data.richText?.str\n );\n super(parameters, { isRenderable });\n this.elements = elements;\n }\n\n render() {\n this.container.classList.add(\"popupAnnotation\");\n\n const popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open,\n });\n\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n\n this.container.setAttribute(\"aria-controls\", elementIds.join(\",\"));\n\n return this.container;\n }\n}\n\nclass PopupElement {\n #dateTimePromise = null;\n\n #boundHide = this.#hide.bind(this);\n\n #boundShow = this.#show.bind(this);\n\n #boundToggle = this.#toggle.bind(this);\n\n #color = null;\n\n #container = null;\n\n #contentsObj = null;\n\n #elements = null;\n\n #parent = null;\n\n #parentRect = null;\n\n #pinned = false;\n\n #popup = null;\n\n #rect = null;\n\n #richText = null;\n\n #titleObj = null;\n\n #wasVisible = false;\n\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open,\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n\n const dateObject = PDFDateString.toDateObject(modificationDate);\n if (dateObject) {\n // The modification date is shown in the popup instead of the creation\n // date if it is available and can be parsed correctly, which is\n // consistent with other viewers such as Adobe Acrobat.\n this.#dateTimePromise = parent.l10n.get(\"annotation_date_string\", {\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString(),\n });\n }\n\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n // Attach the event listeners to the trigger element.\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n element.classList.add(\"popupTriggerArea\");\n }\n }\n\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // Since the popup is lazily created, we need to ensure that it'll be\n // created and displayed during reference tests.\n this.#parent.popupShow.push(async () => {\n if (this.#container.hidden) {\n this.#show();\n }\n if (this.#dateTimePromise) {\n await this.#dateTimePromise;\n }\n });\n }\n }\n\n render() {\n if (this.#popup) {\n return;\n }\n\n const {\n page: { view },\n viewport: {\n rawDims: { pageWidth, pageHeight, pageX, pageY },\n },\n } = this.#parent;\n const popup = (this.#popup = document.createElement(\"div\"));\n popup.className = \"popup\";\n\n if (this.#color) {\n const baseColor = (popup.style.outlineColor = Util.makeHexColor(\n ...this.#color\n ));\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")\n ) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n // color-mix isn't supported in some browsers hence this version.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix#browser_compatibility\n // TODO: Use color-mix when it's supported everywhere.\n // Enlighten the color.\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = Util.makeHexColor(\n ...this.#color.map(c =>\n Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)\n )\n );\n }\n }\n\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({ dir: title.dir, str: title.textContent } = this.#titleObj);\n popup.append(header);\n\n if (this.#dateTimePromise) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n this.#dateTimePromise.then(localized => {\n modificationDate.textContent = localized;\n });\n header.append(modificationDate);\n }\n\n const contentsObj = this.#contentsObj;\n const richText = this.#richText;\n if (\n richText?.str &&\n (!contentsObj?.str || contentsObj.str === richText.str)\n ) {\n XfaLayer.render({\n xfaHtml: richText.html,\n intent: \"richText\",\n div: popup,\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(contentsObj);\n popup.append(contents);\n }\n\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n\n const normalizedRect = Util.normalizeRect([\n rect[0],\n view[3] - rect[1] + view[1],\n rect[2],\n view[3] - rect[3] + view[1],\n ]);\n\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect\n ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION\n : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n\n const { style } = this.#container;\n style.left = `${(100 * (popupLeft - pageX)) / pageWidth}%`;\n style.top = `${(100 * (popupTop - pageY)) / pageHeight}%`;\n\n this.#container.append(popup);\n }\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {Object<string, string>} contentsObj\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents({ str, dir }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n\n /**\n * Toggle the visibility of the popup.\n */\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n }\n }\n\n /**\n * Show the popup.\n */\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#container.hidden = false;\n this.#container.style.zIndex =\n parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n\n /**\n * Hide the popup.\n */\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex =\n parseInt(this.#container.style.zIndex) - 1000;\n }\n\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.popupRef ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n\n if (!this.data.popupRef) {\n this._createPopup();\n }\n\n this._editOnDoubleClick();\n\n return this.container;\n }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.popupRef ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"lineAnnotation\");\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\n const line = (this.#line = this.svgFactory.createElement(\"svg:line\"));\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n\n svg.append(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n if (!data.popupRef) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#line;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.popupRef ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"squareAnnotation\");\n\n // Create an invisible square with the same rectangle that acts as the\n // trigger for the popup. Only the square itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // The browser draws half of the borders inside the square and half of\n // the borders outside the square by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const square = (this.#square = this.svgFactory.createElement(\"svg:rect\"));\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n\n svg.append(square);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the square instead\n // of to the entire container (which is the default).\n if (!data.popupRef) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#square;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.popupRef ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"circleAnnotation\");\n\n // Create an invisible circle with the same ellipse that acts as the\n // trigger for the popup. Only the circle itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // The browser draws half of the borders inside the circle and half of\n // the borders outside the circle by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const circle = (this.#circle =\n this.svgFactory.createElement(\"svg:ellipse\"));\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n\n svg.append(circle);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the circle instead\n // of to the entire container (which is the default).\n if (!data.popupRef) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.popupRef ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.classList.add(this.containerClassName);\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup. Only the polyline itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // Convert the vertices array to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n\n const polyline = (this.#polyline = this.svgFactory.createElement(\n this.svgElementName\n ));\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n svg.append(polyline);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n if (!data.popupRef) {\n this._createPopup(polyline, data);\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.popupRef ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"caretAnnotation\");\n\n if (!this.data.popupRef) {\n this._createPopup();\n }\n return this.container;\n }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n #polylines = [];\n\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.popupRef ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"inkAnnotation\";\n\n // Use the polyline SVG element since it allows us to use coordinates\n // directly and to draw both straight lines and curves.\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = AnnotationEditorType.INK;\n }\n\n render() {\n this.container.classList.add(this.containerClassName);\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n for (const inkList of data.inkLists) {\n // Convert the ink list to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n if (!data.popupRef) {\n this._createPopup(polyline, data);\n }\n\n svg.append(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.popupRef ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef) {\n this._createPopup();\n }\n\n this.container.classList.add(\"highlightAnnotation\");\n return this.container;\n }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.popupRef ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef) {\n this._createPopup();\n }\n\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.popupRef ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef) {\n this._createPopup();\n }\n\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.popupRef ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef) {\n this._createPopup();\n }\n\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.popupRef ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"stampAnnotation\");\n\n if (!this.data.popupRef) {\n this._createPopup();\n }\n return this.container;\n }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n\n const { filename, content } = this.data.file;\n this.filename = getFilenameFromUrl(filename, /* onlyStripPath = */ true);\n this.content = content;\n\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename,\n content,\n });\n }\n\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n\n const { data } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n // Unfortunately it seems that it's not clearly specified exactly what\n // names are actually valid, since Table 184 contains:\n // Conforming readers shall provide predefined icon appearances for at\n // least the following standard names: GraphPushPin, PaperclipTag.\n // Additional names may be supported as well. Default value: PushPin.\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${\n /paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"\n }.svg`;\n\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(\n data.fillAlpha * 100\n )}%);`;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n this.container.classList.add(\"hasFillAlpha\");\n }\n }\n }\n trigger.classList.add(\"popupTriggerArea\");\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n this.#trigger = trigger;\n\n if (\n !data.popupRef &&\n (data.titleObj?.str || data.contentsObj?.str || data.richText)\n ) {\n this._createPopup();\n }\n\n this.container.append(trigger);\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n\n /**\n * Download the file attachment associated with this annotation.\n *\n * @private\n * @memberof FileAttachmentAnnotationElement\n */\n _download() {\n this.downloadManager?.openOrDownloadData(\n this.container,\n this.content,\n this.filename\n );\n }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n * The default value is `false`.\n * @property {Object<string, Array<Object>> | null} [fieldObjects]\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n * @property {TextAccessibilityManager} [accessibilityManager]\n */\n\n/**\n * Manage the layer containing all the annotations.\n */\nclass AnnotationLayer {\n #accessibilityManager = null;\n\n #annotationCanvasMap = null;\n\n #editableAnnotations = new Map();\n\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n l10n,\n page,\n viewport,\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.l10n = l10n;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC && !TESTING\")\n ) {\n this.l10n ||= NullL10n;\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"showPopups\", {\n value: async () => {\n for (const show of this.popupShow) {\n await show();\n }\n },\n });\n this.popupShow = [];\n }\n }\n\n #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n contentElement.id = `${AnnotationPrefix}${id}`;\n\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(\n this.div,\n element,\n contentElement,\n /* isRemovable = */ false\n );\n }\n\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @param {AnnotationLayerParameters} params\n * @memberof AnnotationLayer\n */\n async render(params) {\n const { annotations } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null,\n };\n\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n const { width, height } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue; // Ignore empty annotations.\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n // Ignore popup annotations without a corresponding annotation.\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n\n if (!element.isRenderable) {\n continue;\n }\n\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n\n if (element.annotationEditorType > 0) {\n this.#editableAnnotations.set(element.data.id, element);\n }\n\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n this.#appendElement(rendered, data.id);\n }\n\n this.#setAnnotationCanvasMap();\n\n await this.l10n.translate(layer);\n }\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @param {AnnotationLayerParameters} viewport\n * @memberof AnnotationLayer\n */\n update({ viewport }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, { rotation: viewport.rotation });\n\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n\n const { firstChild } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else {\n firstChild.before(canvas);\n }\n }\n this.#annotationCanvasMap.clear();\n }\n\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n}\n\nexport {\n AnnotationLayer,\n FreeTextAnnotationElement,\n InkAnnotationElement,\n StampAnnotationElement,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n * `../scripting_api/` folders, hence be EXTREMELY careful about\n * introducing any dependencies here since that can lead to an\n * unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n}\n\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\n\n// PDF specifications section 10.3\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n\n static T_HTML() {\n return \"#00000000\";\n }\n\n static T_rgb() {\n return [null];\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return [\n \"RGB\",\n 1 - Math.min(1, c + k),\n 1 - Math.min(1, m + k),\n 1 - Math.min(1, y + k),\n ];\n }\n\n static CMYK_rgb([c, y, m, k]) {\n return [\n scaleAndClamp(1 - Math.min(1, c + k)),\n scaleAndClamp(1 - Math.min(1, m + k)),\n scaleAndClamp(1 - Math.min(1, y + k)),\n ];\n }\n\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\nexport { ColorConverters };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * PLEASE NOTE: This file is currently imported in both the `web/` and\n * `src/display/` folders, hence be EXTREMELY careful about\n * introducing any dependencies here since that can lead to an\n * unexpected/unnecessary size increase of the *built* files.\n */\n\n/**\n * A subset of the l10n strings in the `l10n/en-US/viewer.properties` file.\n */\nconst DEFAULT_L10N_STRINGS = {\n of_pages: \"of {{pagesCount}}\",\n page_of_pages: \"({{pageNumber}} of {{pagesCount}})\",\n\n document_properties_kb: \"{{size_kb}} KB ({{size_b}} bytes)\",\n document_properties_mb: \"{{size_mb}} MB ({{size_b}} bytes)\",\n document_properties_date_string: \"{{date}}, {{time}}\",\n document_properties_page_size_unit_inches: \"in\",\n document_properties_page_size_unit_millimeters: \"mm\",\n document_properties_page_size_orientation_portrait: \"portrait\",\n document_properties_page_size_orientation_landscape: \"landscape\",\n document_properties_page_size_name_a3: \"A3\",\n document_properties_page_size_name_a4: \"A4\",\n document_properties_page_size_name_letter: \"Letter\",\n document_properties_page_size_name_legal: \"Legal\",\n document_properties_page_size_dimension_string:\n \"{{width}} × {{height}} {{unit}} ({{orientation}})\",\n document_properties_page_size_dimension_name_string:\n \"{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\",\n document_properties_linearized_yes: \"Yes\",\n document_properties_linearized_no: \"No\",\n\n additional_layers: \"Additional Layers\",\n page_landmark: \"Page {{page}}\",\n thumb_page_title: \"Page {{page}}\",\n thumb_page_canvas: \"Thumbnail of Page {{page}}\",\n\n find_reached_top: \"Reached top of document, continued from bottom\",\n find_reached_bottom: \"Reached end of document, continued from top\",\n \"find_match_count[one]\": \"{{current}} of {{total}} match\",\n \"find_match_count[other]\": \"{{current}} of {{total}} matches\",\n \"find_match_count_limit[one]\": \"More than {{limit}} match\",\n \"find_match_count_limit[other]\": \"More than {{limit}} matches\",\n find_not_found: \"Phrase not found\",\n\n page_scale_width: \"Page Width\",\n page_scale_fit: \"Page Fit\",\n page_scale_auto: \"Automatic Zoom\",\n page_scale_actual: \"Actual Size\",\n page_scale_percent: \"{{scale}}%\",\n\n loading_error: \"An error occurred while loading the PDF.\",\n invalid_file_error: \"Invalid or corrupted PDF file.\",\n missing_file_error: \"Missing PDF file.\",\n unexpected_response_error: \"Unexpected server response.\",\n rendering_error: \"An error occurred while rendering the page.\",\n\n annotation_date_string: \"{{date}}, {{time}}\",\n\n printing_not_supported:\n \"Warning: Printing is not fully supported by this browser.\",\n printing_not_ready: \"Warning: The PDF is not fully loaded for printing.\",\n web_fonts_disabled:\n \"Web fonts are disabled: unable to use embedded PDF fonts.\",\n\n free_text2_default_content: \"Start typing…\",\n editor_free_text2_aria_label: \"Text Editor\",\n editor_ink2_aria_label: \"Draw Editor\",\n editor_ink_canvas_aria_label: \"User-created image\",\n};\nif (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n DEFAULT_L10N_STRINGS.print_progress_percent = \"{{progress}}%\";\n}\n\nfunction getL10nFallback(key, args) {\n switch (key) {\n case \"find_match_count\":\n key = `find_match_count[${args.total === 1 ? \"one\" : \"other\"}]`;\n break;\n case \"find_match_count_limit\":\n key = `find_match_count_limit[${args.limit === 1 ? \"one\" : \"other\"}]`;\n break;\n }\n return DEFAULT_L10N_STRINGS[key] || \"\";\n}\n\n// Replaces {{arguments}} with their values.\nfunction formatL10nValue(text, args) {\n if (!args) {\n return text;\n }\n return text.replaceAll(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (all, name) => {\n return name in args ? args[name] : \"{{\" + name + \"}}\";\n });\n}\n\n/**\n * No-op implementation of the localization service.\n * @implements {IL10n}\n */\nconst NullL10n = {\n async getLanguage() {\n return \"en-us\";\n },\n\n async getDirection() {\n return \"ltr\";\n },\n\n async get(key, args = null, fallback = getL10nFallback(key, args)) {\n return formatL10nValue(fallback, args);\n },\n\n async translate(element) {},\n};\n\nexport { getL10nFallback, NullL10n };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, { value: null });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n break;\n case \"input\":\n if (\n element.attributes.type === \"radio\" ||\n element.attributes.type === \"checkbox\"\n ) {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n // The checked attribute may have been set when opening the file,\n // unset through the UI and we're here because of printing.\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked\n ? event.target.getAttribute(\"xfaOn\")\n : event.target.getAttribute(\"xfaOff\"),\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value =\n options.selectedIndex === -1\n ? \"\"\n : options[options.selectedIndex].value;\n storage.setValue(id, { value });\n });\n break;\n }\n }\n\n static setAttributes({ html, element, storage = null, intent, linkService }) {\n const { attributes } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n if (attributes.type === \"radio\") {\n // Avoid to have a radio group when printing with the same as one\n // already displayed.\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n // We don't need to add dataId in the html object but it can\n // be useful to know its value when writing printing tests:\n // in this case, don't skip dataId to have its value.\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || (key !== \"href\" && key !== \"newWindow\")) {\n html.setAttribute(key, value);\n }\n }\n }\n\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(\n html,\n attributes.href,\n attributes.newWindow\n );\n }\n\n // Set the value after the others to be sure to overwrite any other values.\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n\n /**\n * Render the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService,\n });\n }\n const stack = [[root, -1, rootHtml]];\n\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n\n // Set defaults.\n if (intent !== \"richText\") {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n\n // Text nodes used for the text highlighter.\n const textDivs = [];\n\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n\n const { name } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n\n const childHtml = child?.attributes?.xmlns\n ? document.createElementNS(child.attributes.xmlns, name)\n : document.createElement(name);\n\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService,\n });\n }\n\n if (child.children && child.children.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n\n /**\n * TODO: re-enable that stuff once we've JS implementation.\n * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n *\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaDisabled input, .xfaDisabled textarea\"\n * )) {\n * el.setAttribute(\"disabled\", true);\n * }\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaReadOnly input, .xfaReadOnly textarea\"\n * )) {\n * el.setAttribute(\"readOnly\", true);\n * }\n */\n\n for (const el of rootDiv.querySelectorAll(\n \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n )) {\n el.setAttribute(\"readOnly\", true);\n }\n\n return {\n textDivs,\n };\n }\n\n /**\n * Update the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\nexport { XfaLayer };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AnnotationEditorParamsType,\n AnnotationEditorType,\n Util,\n} from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { InkAnnotationElement } from \"../annotation_layer.js\";\nimport { opacityToHex } from \"./tools.js\";\n\n/**\n * Basic draw editor in order to generate an Ink annotation.\n */\nclass InkEditor extends AnnotationEditor {\n #baseHeight = 0;\n\n #baseWidth = 0;\n\n #boundCanvasContextMenu = this.canvasContextMenu.bind(this);\n\n #boundCanvasPointermove = this.canvasPointermove.bind(this);\n\n #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n\n #boundCanvasPointerup = this.canvasPointerup.bind(this);\n\n #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n\n #currentPath2D = new Path2D();\n\n #disableEditing = false;\n\n #hasSomethingToDraw = false;\n\n #isCanvasInitialized = false;\n\n #observer = null;\n\n #realWidth = 0;\n\n #realHeight = 0;\n\n #requestFrameCallback = null;\n\n static _defaultColor = null;\n\n static _defaultOpacity = 1;\n\n static _defaultThickness = 1;\n\n static _l10nPromise;\n\n static _type = \"ink\";\n\n constructor(params) {\n super({ ...params, name: \"inkEditor\" });\n this.color = params.color || null;\n this.thickness = params.thickness || null;\n this.opacity = params.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.allRawPaths = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n this._willKeepAspectRatio = true;\n }\n\n /** @inheritdoc */\n static initialize(l10n) {\n this._l10nPromise = new Map(\n [\"editor_ink_canvas_aria_label\", \"editor_ink2_aria_label\"].map(str => [\n str,\n l10n.get(str),\n ])\n );\n }\n\n /** @inheritdoc */\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = value;\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = value / 100;\n break;\n }\n }\n\n /** @inheritdoc */\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n this.#updateThickness(value);\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n this.#updateOpacity(value);\n break;\n }\n }\n\n /** @inheritdoc */\n static get defaultPropertiesToUpdate() {\n return [\n [AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness],\n [\n AnnotationEditorParamsType.INK_COLOR,\n InkEditor._defaultColor || AnnotationEditor._defaultLineColor,\n ],\n [\n AnnotationEditorParamsType.INK_OPACITY,\n Math.round(InkEditor._defaultOpacity * 100),\n ],\n ];\n }\n\n /** @inheritdoc */\n get propertiesToUpdate() {\n return [\n [\n AnnotationEditorParamsType.INK_THICKNESS,\n this.thickness || InkEditor._defaultThickness,\n ],\n [\n AnnotationEditorParamsType.INK_COLOR,\n this.color ||\n InkEditor._defaultColor ||\n AnnotationEditor._defaultLineColor,\n ],\n [\n AnnotationEditorParamsType.INK_OPACITY,\n Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity)),\n ],\n ];\n }\n\n /**\n * Update the thickness and make this action undoable.\n * @param {number} thickness\n */\n #updateThickness(thickness) {\n const savedThickness = this.thickness;\n this.addCommands({\n cmd: () => {\n this.thickness = thickness;\n this.#fitToContent();\n },\n undo: () => {\n this.thickness = savedThickness;\n this.#fitToContent();\n },\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /**\n * Update the color and make this action undoable.\n * @param {string} color\n */\n #updateColor(color) {\n const savedColor = this.color;\n this.addCommands({\n cmd: () => {\n this.color = color;\n this.#redraw();\n },\n undo: () => {\n this.color = savedColor;\n this.#redraw();\n },\n mustExec: true,\n type: AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /**\n * Update the opacity and make this action undoable.\n * @param {number} opacity\n */\n #updateOpacity(opacity) {\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: () => {\n this.opacity = opacity;\n this.#redraw();\n },\n undo: () => {\n this.opacity = savedOpacity;\n this.#redraw();\n },\n mustExec: true,\n type: AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /** @inheritdoc */\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilding it,\n // hence we must add it to its parent.\n this.parent.add(this);\n this.#setCanvasDims();\n }\n this.#fitToContent();\n }\n\n /** @inheritdoc */\n remove() {\n if (this.canvas === null) {\n return;\n }\n\n if (!this.isEmpty()) {\n this.commit();\n }\n\n // Destroy the canvas.\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n\n this.#observer.disconnect();\n this.#observer = null;\n\n super.remove();\n }\n\n setParent(parent) {\n if (!this.parent && parent) {\n // We've a parent hence the rescale will be handled thanks to the\n // ResizeObserver.\n this._uiManager.removeShouldRescale(this);\n } else if (this.parent && parent === null) {\n // The editor is removed from the DOM, hence we handle the rescale thanks\n // to the onScaleChanging callback.\n // This way, it'll be saved/printed correctly.\n this._uiManager.addShouldRescale(this);\n }\n super.setParent(parent);\n }\n\n onScaleChanging() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const width = this.width * parentWidth;\n const height = this.height * parentHeight;\n this.setDimensions(width, height);\n }\n\n /** @inheritdoc */\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n\n super.enableEditMode();\n this._isDraggable = false;\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n }\n\n /** @inheritdoc */\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n\n super.disableEditMode();\n this._isDraggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n\n this.canvas.removeEventListener(\n \"pointerdown\",\n this.#boundCanvasPointerdown\n );\n }\n\n /** @inheritdoc */\n onceAdded() {\n this._isDraggable = !this.isEmpty();\n }\n\n /** @inheritdoc */\n isEmpty() {\n return (\n this.paths.length === 0 ||\n (this.paths.length === 1 && this.paths[0].length === 0)\n );\n }\n\n #getInitialBBox() {\n const {\n parentRotation,\n parentDimensions: [width, height],\n } = this;\n switch (parentRotation) {\n case 90:\n return [0, height, height, width];\n case 180:\n return [width, height, width, height];\n case 270:\n return [width, 0, height, width];\n default:\n return [0, 0, width, height];\n }\n }\n\n /**\n * Set line styles.\n */\n #setStroke() {\n const { ctx, color, opacity, thickness, parentScale, scaleFactor } = this;\n ctx.lineWidth = (thickness * parentScale) / scaleFactor;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.miterLimit = 10;\n ctx.strokeStyle = `${color}${opacityToHex(opacity)}`;\n }\n\n /**\n * Start to draw on the canvas.\n * @param {number} x\n * @param {number} y\n */\n #startDrawing(x, y) {\n this.canvas.addEventListener(\"contextmenu\", this.#boundCanvasContextMenu);\n this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.removeEventListener(\n \"pointerdown\",\n this.#boundCanvasPointerdown\n );\n\n this.isEditing = true;\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||=\n InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n this.currentPath.push([x, y]);\n this.#hasSomethingToDraw = false;\n this.#setStroke();\n\n this.#requestFrameCallback = () => {\n this.#drawPoints();\n if (this.#requestFrameCallback) {\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n };\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n\n /**\n * Draw on the canvas.\n * @param {number} x\n * @param {number} y\n */\n #draw(x, y) {\n const [lastX, lastY] = this.currentPath.at(-1);\n if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n return;\n }\n const currentPath = this.currentPath;\n let path2D = this.#currentPath2D;\n currentPath.push([x, y]);\n this.#hasSomethingToDraw = true;\n\n if (currentPath.length <= 2) {\n path2D.moveTo(...currentPath[0]);\n path2D.lineTo(x, y);\n return;\n }\n\n if (currentPath.length === 3) {\n this.#currentPath2D = path2D = new Path2D();\n path2D.moveTo(...currentPath[0]);\n }\n\n this.#makeBezierCurve(\n path2D,\n ...currentPath.at(-3),\n ...currentPath.at(-2),\n x,\n y\n );\n }\n\n #endPath() {\n if (this.currentPath.length === 0) {\n return;\n }\n const lastPoint = this.currentPath.at(-1);\n this.#currentPath2D.lineTo(...lastPoint);\n }\n\n /**\n * Stop to draw on the canvas.\n * @param {number} x\n * @param {number} y\n */\n #stopDrawing(x, y) {\n this.#requestFrameCallback = null;\n\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n\n this.#draw(x, y);\n this.#endPath();\n\n // Interpolate the path entered by the user with some\n // Bezier's curves in order to have a smoother path and\n // to reduce the data size used to draw it in the PDF.\n let bezier;\n if (this.currentPath.length !== 1) {\n bezier = this.#generateBezierPoints();\n } else {\n // We have only one point finally.\n const xy = [x, y];\n bezier = [[xy, xy.slice(), xy.slice(), xy]];\n }\n const path2D = this.#currentPath2D;\n const currentPath = this.currentPath;\n this.currentPath = [];\n this.#currentPath2D = new Path2D();\n\n const cmd = () => {\n this.allRawPaths.push(currentPath);\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this.rebuild();\n };\n\n const undo = () => {\n this.allRawPaths.pop();\n this.paths.pop();\n this.bezierPath2D.pop();\n if (this.paths.length === 0) {\n this.remove();\n } else {\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n this.#fitToContent();\n }\n };\n\n this.addCommands({ cmd, undo, mustExec: true });\n }\n\n #drawPoints() {\n if (!this.#hasSomethingToDraw) {\n return;\n }\n this.#hasSomethingToDraw = false;\n\n const thickness = Math.ceil(this.thickness * this.parentScale);\n const lastPoints = this.currentPath.slice(-3);\n const x = lastPoints.map(xy => xy[0]);\n const y = lastPoints.map(xy => xy[1]);\n const xMin = Math.min(...x) - thickness;\n const xMax = Math.max(...x) + thickness;\n const yMin = Math.min(...y) - thickness;\n const yMax = Math.max(...y) + thickness;\n\n const { ctx } = this;\n ctx.save();\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n // In Chrome, the clip() method doesn't work as expected.\n ctx.clearRect(xMin, yMin, xMax - xMin, yMax - yMin);\n ctx.beginPath();\n ctx.rect(xMin, yMin, xMax - xMin, yMax - yMin);\n ctx.clip();\n } else {\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n ctx.stroke(this.#currentPath2D);\n\n ctx.restore();\n }\n\n #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n const prevX = (x0 + x1) / 2;\n const prevY = (y0 + y1) / 2;\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n\n path2D.bezierCurveTo(\n prevX + (2 * (x1 - prevX)) / 3,\n prevY + (2 * (y1 - prevY)) / 3,\n x3 + (2 * (x1 - x3)) / 3,\n y3 + (2 * (y1 - y3)) / 3,\n x3,\n y3\n );\n }\n\n #generateBezierPoints() {\n const path = this.currentPath;\n if (path.length <= 2) {\n return [[path[0], path[0], path.at(-1), path.at(-1)]];\n }\n\n const bezierPoints = [];\n let i;\n let [x0, y0] = path[0];\n for (i = 1; i < path.length - 2; i++) {\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n\n // The quadratic is: [[x0, y0], [x1, y1], [x3, y3]].\n // Convert the quadratic to a cubic\n // (see https://fontforge.org/docs/techref/bezier.html#converting-truetype-to-postscript)\n const control1 = [x0 + (2 * (x1 - x0)) / 3, y0 + (2 * (y1 - y0)) / 3];\n const control2 = [x3 + (2 * (x1 - x3)) / 3, y3 + (2 * (y1 - y3)) / 3];\n\n bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n\n [x0, y0] = [x3, y3];\n }\n\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n\n // The quadratic is: [[x0, y0], [x1, y1], [x2, y2]].\n const control1 = [x0 + (2 * (x1 - x0)) / 3, y0 + (2 * (y1 - y0)) / 3];\n const control2 = [x2 + (2 * (x1 - x2)) / 3, y2 + (2 * (y1 - y2)) / 3];\n\n bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n return bezierPoints;\n }\n\n /**\n * Redraw all the paths.\n */\n #redraw() {\n if (this.isEmpty()) {\n this.#updateTransform();\n return;\n }\n this.#setStroke();\n\n const { canvas, ctx } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.#updateTransform();\n\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n\n /**\n * Commit the curves we have in this editor.\n */\n commit() {\n if (this.#disableEditing) {\n return;\n }\n\n super.commit();\n\n this.isEditing = false;\n this.disableEditMode();\n\n // This editor must be on top of the main ink editor.\n this.setInForeground();\n\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n\n this.#fitToContent(/* firstTime = */ true);\n this.makeResizable();\n\n this.parent.addInkEditorIfNeeded(/* isCommitting = */ true);\n\n // When commiting, the position of this editor is changed, hence we must\n // move it to the right position in the DOM.\n this.moveInDOM();\n this.div.focus({\n preventScroll: true /* See issue #15744 */,\n });\n }\n\n /** @inheritdoc */\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n this.enableEditMode();\n }\n\n /**\n * onpointerdown callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n\n // We want to draw on top of any other editors.\n // Since it's the last child, there's no need to give it a higher z-index.\n this.setInForeground();\n\n event.preventDefault();\n\n if (event.type !== \"mouse\") {\n this.div.focus();\n }\n\n this.#startDrawing(event.offsetX, event.offsetY);\n }\n\n /**\n * oncontextmenu callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasContextMenu(event) {\n event.preventDefault();\n }\n\n /**\n * onpointermove callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointermove(event) {\n event.preventDefault();\n this.#draw(event.offsetX, event.offsetY);\n }\n\n /**\n * onpointerup callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointerup(event) {\n event.preventDefault();\n this.#endDrawing(event);\n }\n\n /**\n * onpointerleave callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointerleave(event) {\n this.#endDrawing(event);\n }\n\n /**\n * End the drawing.\n * @param {PointerEvent} event\n */\n #endDrawing(event) {\n this.canvas.removeEventListener(\n \"pointerleave\",\n this.#boundCanvasPointerleave\n );\n this.canvas.removeEventListener(\n \"pointermove\",\n this.#boundCanvasPointermove\n );\n this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n\n // Slight delay to avoid the context menu to appear (it can happen on a long\n // tap with a pen).\n setTimeout(() => {\n this.canvas.removeEventListener(\n \"contextmenu\",\n this.#boundCanvasContextMenu\n );\n }, 10);\n\n this.#stopDrawing(event.offsetX, event.offsetY);\n\n this.addToAnnotationStorage();\n\n // Since the ink editor covers all of the page and we want to be able\n // to select another editor, we just put this one in the background.\n this.setInBackground();\n }\n\n /**\n * Create the canvas element.\n */\n #createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n\n InkEditor._l10nPromise\n .get(\"editor_ink_canvas_aria_label\")\n .then(msg => this.canvas?.setAttribute(\"aria-label\", msg));\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n\n /**\n * Create the resize observer.\n */\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n }\n\n /** @inheritdoc */\n get isResizable() {\n return !this.isEmpty() && this.#disableEditing;\n }\n\n /** @inheritdoc */\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n\n InkEditor._l10nPromise\n .get(\"editor_ink2_aria_label\")\n .then(msg => this.div?.setAttribute(\"aria-label\", msg));\n\n const [x, y, w, h] = this.#getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n\n this.#createCanvas();\n\n if (this.width) {\n // This editor was created in using copy (ctrl+c).\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n this.setAt(\n baseX * parentWidth,\n baseY * parentHeight,\n this.width * parentWidth,\n this.height * parentHeight\n );\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.#redraw();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n\n this.#createObserver();\n\n return this.div;\n }\n\n #setCanvasDims() {\n if (!this.#isCanvasInitialized) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.canvas.width = Math.ceil(this.width * parentWidth);\n this.canvas.height = Math.ceil(this.height * parentHeight);\n this.#updateTransform();\n }\n\n /**\n * When the dimensions of the div change the inner canvas must\n * renew its dimensions, hence it must redraw its own contents.\n * @param {number} width - the new width of the div\n * @param {number} height - the new height of the div\n * @returns\n */\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n if (\n this.#realWidth === roundedWidth &&\n this.#realHeight === roundedHeight\n ) {\n return;\n }\n\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n\n this.canvas.style.visibility = \"hidden\";\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.fixAndSetPosition();\n\n if (this.#disableEditing) {\n this.#setScaleFactor(width, height);\n }\n\n this.#setCanvasDims();\n this.#redraw();\n\n this.canvas.style.visibility = \"visible\";\n\n // For any reason the dimensions couldn't be in percent but in pixels, hence\n // we must fix them.\n this.fixDims();\n }\n\n #setScaleFactor(width, height) {\n const padding = this.#getPadding();\n const scaleFactorW = (width - padding) / this.#baseWidth;\n const scaleFactorH = (height - padding) / this.#baseHeight;\n this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n }\n\n /**\n * Update the canvas transform.\n */\n #updateTransform() {\n const padding = this.#getPadding() / 2;\n this.ctx.setTransform(\n this.scaleFactor,\n 0,\n 0,\n this.scaleFactor,\n this.translationX * this.scaleFactor + padding,\n this.translationY * this.scaleFactor + padding\n );\n }\n\n /**\n * Convert into a Path2D.\n * @param {Arra<Array<number>} bezier\n * @returns {Path2D}\n */\n static #buildPath2D(bezier) {\n const path2D = new Path2D();\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n if (i === 0) {\n path2D.moveTo(...first);\n }\n path2D.bezierCurveTo(\n control1[0],\n control1[1],\n control2[0],\n control2[1],\n second[0],\n second[1]\n );\n }\n return path2D;\n }\n\n static #toPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] += blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] + blX;\n points[i + 1] = x + blY;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] += blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trX - points[i + 1];\n points[i + 1] = trY - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n\n static #fromPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] -= blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] - blY;\n points[i + 1] = x - blX;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] -= blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trY - points[i + 1];\n points[i + 1] = trX - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n\n /**\n * Transform and serialize the paths.\n * @param {number} s - scale factor\n * @param {number} tx - abscissa of the translation\n * @param {number} ty - ordinate of the translation\n * @param {Array<number>} rect - the bounding box of the annotation\n */\n #serializePaths(s, tx, ty, rect) {\n const paths = [];\n const padding = this.thickness / 2;\n const shiftX = s * tx + padding;\n const shiftY = s * ty + padding;\n for (const bezier of this.paths) {\n const buffer = [];\n const points = [];\n for (let j = 0, jj = bezier.length; j < jj; j++) {\n const [first, control1, control2, second] = bezier[j];\n const p10 = s * first[0] + shiftX;\n const p11 = s * first[1] + shiftY;\n const p20 = s * control1[0] + shiftX;\n const p21 = s * control1[1] + shiftY;\n const p30 = s * control2[0] + shiftX;\n const p31 = s * control2[1] + shiftY;\n const p40 = s * second[0] + shiftX;\n const p41 = s * second[1] + shiftY;\n\n if (j === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n buffer.push(p20, p21, p30, p31, p40, p41);\n points.push(p20, p21);\n if (j === jj - 1) {\n points.push(p40, p41);\n }\n }\n paths.push({\n bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n points: InkEditor.#toPDFCoordinates(points, rect, this.rotation),\n });\n }\n\n return paths;\n }\n\n /**\n * Get the bounding box containing all the paths.\n * @returns {Array<number>}\n */\n #getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = Util.bezierBoundingBox(\n ...first,\n ...control1,\n ...control2,\n ...second\n );\n xMin = Math.min(xMin, bbox[0]);\n yMin = Math.min(yMin, bbox[1]);\n xMax = Math.max(xMax, bbox[2]);\n yMax = Math.max(yMax, bbox[3]);\n }\n }\n\n return [xMin, yMin, xMax, yMax];\n }\n\n /**\n * The bounding box is computed with null thickness, so we must take\n * it into account for the display.\n * It corresponds to the total padding, hence it should be divided by 2\n * in order to have left/right paddings.\n * @returns {number}\n */\n #getPadding() {\n return this.#disableEditing\n ? Math.ceil(this.thickness * this.parentScale)\n : 0;\n }\n\n /**\n * Set the div position and dimensions in order to fit to\n * the bounding box of the contents.\n * @returns {undefined}\n */\n #fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n\n if (!this.#disableEditing) {\n this.#redraw();\n return;\n }\n\n const bbox = this.#getBbox();\n const padding = this.#getPadding();\n this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n\n this.setAspectRatio(width, height);\n\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.#setCanvasDims();\n this.#redraw();\n\n this.#realWidth = width;\n this.#realHeight = height;\n\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(\n prevTranslationX - this.translationX - unscaledPadding,\n prevTranslationY - this.translationY - unscaledPadding\n );\n }\n\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n if (data instanceof InkAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n\n editor.thickness = data.thickness;\n editor.color = Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const width = editor.width * pageWidth;\n const height = editor.height * pageHeight;\n const scaleFactor = editor.parentScale;\n const padding = data.thickness / 2;\n\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n\n const { paths, rect, rotation } = data;\n\n for (let { bezier } of paths) {\n bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (bezier[1] - padding);\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const p10 = scaleFactor * (bezier[i] - padding);\n const p11 = scaleFactor * (bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (bezier[i + 5] - padding);\n path.push([\n [p0, p1],\n [p10, p11],\n [p20, p21],\n [p30, p31],\n ]);\n p0 = p30;\n p1 = p31;\n }\n const path2D = this.#buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n\n const bbox = editor.#getBbox();\n editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n editor.#setScaleFactor(width, height);\n\n return editor;\n }\n\n /** @inheritdoc */\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n\n return {\n annotationType: AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.#serializePaths(\n this.scaleFactor / this.parentScale,\n this.translationX,\n this.translationY,\n rect\n ),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n };\n }\n}\n\nexport { InkEditor };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType, shadow } from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { PixelsPerInch } from \"../display_utils.js\";\nimport { StampAnnotationElement } from \"../annotation_layer.js\";\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n\n #bitmapId = null;\n\n #bitmapPromise = null;\n\n #bitmapUrl = null;\n\n #bitmapFile = null;\n\n #canvas = null;\n\n #observer = null;\n\n #resizeTimeoutId = null;\n\n #isSvg = false;\n\n #hasBeenAddedInUndoStack = false;\n\n static _type = \"stamp\";\n\n constructor(params) {\n super({ ...params, name: \"stampEditor\" });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n }\n\n static get supportedTypes() {\n // See https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types\n // to know which types are supported by the browser.\n const types = [\n \"apng\",\n \"avif\",\n \"bmp\",\n \"gif\",\n \"jpeg\",\n \"png\",\n \"svg+xml\",\n \"webp\",\n \"x-icon\",\n ];\n return shadow(\n this,\n \"supportedTypes\",\n types.map(type => `image/${type}`)\n );\n }\n\n static get supportedTypesStr() {\n return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n }\n\n /** @inheritdoc */\n static isHandlingMimeForPasting(mime) {\n return this.supportedTypes.includes(mime);\n }\n\n /** @inheritdoc */\n static paste(item, parent) {\n parent.pasteEditor(AnnotationEditorType.STAMP, {\n bitmapFile: item.getAsFile(),\n });\n }\n\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n this.#createCanvas();\n }\n\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (this.#canvas) {\n this.div.focus();\n }\n }\n\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager\n .getFromId(this.#bitmapId)\n .then(data => this.#getBitmapFetched(data, /* fromId = */ true))\n .finally(() => this.#getBitmapDone());\n return;\n }\n\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager\n .getFromUrl(url)\n .then(data => this.#getBitmapFetched(data))\n .finally(() => this.#getBitmapDone());\n return;\n }\n\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager\n .getFromFile(file)\n .then(data => this.#getBitmapFetched(data))\n .finally(() => this.#getBitmapDone());\n return;\n }\n\n const input = document.createElement(\"input\");\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n input.hidden = true;\n input.id = \"stampEditorFileInput\";\n document.body.append(input);\n }\n input.type = \"file\";\n input.accept = StampEditor.supportedTypesStr;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(\n input.files[0]\n );\n this.#getBitmapFetched(data);\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n input.remove();\n }\n resolve();\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n });\n }).finally(() => this.#getBitmapDone());\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"TESTING\")) {\n input.click();\n }\n }\n\n /** @inheritdoc */\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n this.#observer?.disconnect();\n this.#observer = null;\n }\n super.remove();\n }\n\n /** @inheritdoc */\n rebuild() {\n if (!this.parent) {\n // It's possible to have to rebuild an editor which is not on a visible\n // page.\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilting it,\n // hence we must add it to its parent.\n this.parent.add(this);\n }\n }\n\n /** @inheritdoc */\n onceAdded() {\n this._isDraggable = true;\n this.div.focus();\n }\n\n /** @inheritdoc */\n isEmpty() {\n return !(\n this.#bitmapPromise ||\n this.#bitmap ||\n this.#bitmapUrl ||\n this.#bitmapFile\n );\n }\n\n /** @inheritdoc */\n get isResizable() {\n return true;\n }\n\n /** @inheritdoc */\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n this.div.hidden = true;\n\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n\n if (this.width) {\n // This editor was created in using copy (ctrl+c).\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(\n baseX * parentWidth,\n baseY * parentHeight,\n this.width * parentWidth,\n this.height * parentHeight\n );\n }\n\n return this.div;\n }\n\n #createCanvas() {\n const { div } = this;\n let { width, height } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (\n width > MAX_RATIO * pageWidth ||\n height > MAX_RATIO * pageHeight\n ) {\n // If the the image is too big compared to the page dimensions\n // (more than MAX_RATIO) then we scale it down.\n const factor = Math.min(\n (MAX_RATIO * pageWidth) / width,\n (MAX_RATIO * pageHeight) / height\n );\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(\n (width * parentWidth) / pageWidth,\n (height * parentHeight) / pageHeight\n );\n\n this._uiManager.enableWaiting(false);\n const canvas = (this.#canvas = document.createElement(\"canvas\"));\n div.append(canvas);\n div.hidden = false;\n this.#drawBitmap(width, height);\n this.#createObserver();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n }\n\n /**\n * When the dimensions of the div change the inner canvas must\n * renew its dimensions, hence it must redraw its own contents.\n * @param {number} width - the new width of the div\n * @param {number} height - the new height of the div\n * @returns\n */\n #setDimensions(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setDims(width, height);\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n // When the user is resizing the editor we just use CSS to scale the image\n // to avoid redrawing it too often.\n // And once the user stops resizing the editor we redraw the image in\n // rescaling it correctly (see this.#scaleBitmap).\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap(width, height);\n }, TIME_TO_WAIT);\n }\n\n #scaleBitmap(width, height) {\n const { width: bitmapWidth, height: bitmapHeight } = this.#bitmap;\n\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n\n if (newWidth > 2 * width) {\n // See bug 1820511 (Windows specific bug).\n // TODO: once the above bug is fixed we could revert to:\n // newWidth = Math.ceil(newWidth / 2);\n newWidth =\n newWidth >= 16384\n ? Math.floor(newWidth / 2) - 1\n : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight =\n newHeight >= 16384\n ? Math.floor(newHeight / 2) - 1\n : Math.ceil(newHeight / 2);\n }\n\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(\n bitmap,\n 0,\n 0,\n prevWidth,\n prevHeight,\n 0,\n 0,\n newWidth,\n newHeight\n );\n bitmap = offscreen.transferToImageBitmap();\n }\n\n return bitmap;\n }\n\n #drawBitmap(width, height) {\n width = Math.ceil(width);\n height = Math.ceil(height);\n const canvas = this.#canvas;\n if (!canvas || (canvas.width === width && canvas.height === height)) {\n return;\n }\n canvas.width = width;\n canvas.height = height;\n const bitmap = this.#isSvg\n ? this.#bitmap\n : this.#scaleBitmap(width, height);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(\n bitmap,\n 0,\n 0,\n bitmap.width,\n bitmap.height,\n 0,\n 0,\n width,\n height\n );\n }\n\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n // We convert to a data url because it's sync and the url can live in the\n // clipboard.\n const canvas = document.createElement(\"canvas\");\n ({ width: canvas.width, height: canvas.height } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n\n return canvas.toDataURL();\n }\n\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n // Multiply by PixelsPerInch.PDF_TO_CSS_UNITS in order to increase the\n // image resolution when rasterizing it.\n const width = Math.round(\n this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n const height = Math.round(\n this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(\n this.#bitmap,\n 0,\n 0,\n this.#bitmap.width,\n this.#bitmap.height,\n 0,\n 0,\n width,\n height\n );\n return offscreen.transferToImageBitmap();\n }\n\n return structuredClone(this.#bitmap);\n }\n\n /**\n * Create the resize observer.\n */\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.#setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n }\n\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n if (data instanceof StampAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n const { rect, bitmapUrl, bitmapId, isSvg } = data;\n if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n\n return editor;\n }\n\n /** @inheritdoc */\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n\n const serialized = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n };\n\n if (isForCopying) {\n // We don't know what's the final destination (this pdf or another one)\n // of this annotation and the clipboard doesn't support ImageBitmaps,\n // hence we serialize the bitmap to a data url.\n serialized.bitmapUrl = this.#serializeBitmap(/* toUrl = */ true);\n return serialized;\n }\n\n if (context === null) {\n return serialized;\n }\n\n context.stamps ||= new Map();\n const area = this.#isSvg\n ? (serialized.rect[2] - serialized.rect[0]) *\n (serialized.rect[3] - serialized.rect[1])\n : null;\n if (!context.stamps.has(this.#bitmapId)) {\n // We don't want to have multiple copies of the same bitmap in the\n // annotationMap, hence we only add the bitmap the first time we meet it.\n context.stamps.set(this.#bitmapId, { area, serialized });\n serialized.bitmap = this.#serializeBitmap(/* toUrl = */ false);\n } else if (this.#isSvg) {\n // If we have multiple copies of the same svg but with different sizes,\n // then we want to keep the biggest one.\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(/* toUrl = */ false);\n }\n }\n return serialized;\n }\n}\n\nexport { StampEditor };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").OnProgressParameters} OnProgressParameters */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n/** @typedef {import(\"./display/display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/text_layer\").TextLayerRenderTask} TextLayerRenderTask */\n\nimport {\n AbortException,\n AnnotationEditorParamsType,\n AnnotationEditorType,\n AnnotationMode,\n CMapCompressionType,\n createValidAbsoluteUrl,\n FeatureTest,\n ImageKind,\n InvalidPDFException,\n MissingPDFException,\n normalizeUnicode,\n OPS,\n PasswordResponses,\n PermissionFlag,\n PromiseCapability,\n shadow,\n UnexpectedResponseException,\n Util,\n VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n build,\n getDocument,\n PDFDataRangeTransport,\n PDFWorker,\n SVGGraphics,\n version,\n} from \"./display/api.js\";\nimport {\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n loadScript,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n setLayerDimensions,\n} from \"./display/display_utils.js\";\nimport { renderTextLayer, updateTextLayer } from \"./display/text_layer.js\";\nimport { AnnotationEditorLayer } from \"./display/editor/annotation_editor_layer.js\";\nimport { AnnotationEditorUIManager } from \"./display/editor/tools.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nexport {\n AbortException,\n AnnotationEditorLayer,\n AnnotationEditorParamsType,\n AnnotationEditorType,\n AnnotationEditorUIManager,\n AnnotationLayer,\n AnnotationMode,\n build,\n CMapCompressionType,\n createValidAbsoluteUrl,\n FeatureTest,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n GlobalWorkerOptions,\n ImageKind,\n InvalidPDFException,\n isDataScheme,\n isPdfFile,\n loadScript,\n MissingPDFException,\n normalizeUnicode,\n OPS,\n PasswordResponses,\n PDFDataRangeTransport,\n PDFDateString,\n PDFWorker,\n PermissionFlag,\n PixelsPerInch,\n PromiseCapability,\n RenderingCancelledException,\n renderTextLayer,\n setLayerDimensions,\n shadow,\n SVGGraphics,\n UnexpectedResponseException,\n updateTextLayer,\n Util,\n VerbosityLevel,\n version,\n XfaLayer,\n};\n"],"names":["isNodeJS","process","versions","nw","electron","type","exports","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","MAX_IMAGE_SIZE_TO_CACHE","LINE_FACTOR","LINE_DESCENT_FACTOR","BASELINE_FACTOR","RenderingIntentFlag","ANY","DISPLAY","PRINT","SAVE","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","AnnotationEditorPrefix","AnnotationEditorType","NONE","FREETEXT","STAMP","INK","AnnotationEditorParamsType","RESIZE","CREATE","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","CARET","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","VerbosityLevel","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotation","endAnnotation","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","Number","isInteger","getVerbosityLevel","info","msg","console","log","warn","unreachable","Error","assert","cond","_isValidProtocol","url","protocol","createValidAbsoluteUrl","baseUrl","options","addDefaultProtocol","startsWith","dots","match","length","tryConvertEncoding","stringToUTF8String","absoluteUrl","URL","shadow","obj","prop","value","nonSerializable","Object","defineProperty","enumerable","configurable","writable","BaseException","BaseExceptionClosure","message","name","constructor","prototype","PasswordException","code","UnknownErrorException","details","InvalidPDFException","MissingPDFException","UnexpectedResponseException","status","FormatError","AbortException","bytesToString","bytes","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","i","chunkEnd","Math","min","chunk","subarray","push","join","stringToBytes","str","Uint8Array","charCodeAt","string32","objectSize","keys","objectFromMap","map","create","key","isLittleEndian","buffer8","view32","Uint32Array","buffer","isEvalSupported","Function","FeatureTest","isOffscreenCanvasSupported","OffscreenCanvas","platform","navigator","isWin","isMac","includes","isCSSRoundSupported","globalThis","CSS","supports","hexNumbers","Array","n","toString","padStart","Util","makeHexColor","r","g","b","scaleMinMax","minMax","temp","m1","m2","applyTransform","p","m","xt","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","max","inverseTransform","singularValueDecompose2dScale","transpose","a","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","bezierBoundingBox","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","stringToPDFString","encoding","decoder","TextDecoder","fatal","decode","ex","ii","charAt","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayBuffer","v","byteLength","isArrayEqual","arr1","arr2","getModificationDate","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","PromiseCapability","settled","promise","Promise","resolve","reject","data","reason","NormalizeRegex","NormalizationMap","normalizeUnicode","Map","replaceAll","_","normalize","get","getUuid","crypto","randomUUID","buf","getRandomValues","floor","random","_util","require","_annotation_storage","_display_utils","_font_loader","_displayNode_utils","_canvas","_worker_options","_message_handler","_metadata","_optional_content_config","_transport_stream","_displayFetch_stream","_displayNetwork","_displayNode_stream","_displaySvg","_xfa_text","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DELAYED_CLEANUP_TIMEOUT","DefaultCanvasFactory","NodeCanvasFactory","DOMCanvasFactory","DefaultCMapReaderFactory","NodeCMapReaderFactory","DOMCMapReaderFactory","DefaultFilterFactory","NodeFilterFactory","DOMFilterFactory","DefaultStandardFontDataFactory","NodeStandardFontDataFactory","DOMStandardFontDataFactory","getDocument","src","range","task","PDFDocumentLoadingTask","docId","getUrlProp","getDataProp","httpHeaders","withCredentials","password","rangeTransport","PDFDataRangeTransport","rangeChunkSize","worker","PDFWorker","docBaseUrl","isDataScheme","cMapUrl","cMapPacked","CMapReaderFactory","standardFontDataUrl","StandardFontDataFactory","ignoreErrors","stopAtErrors","maxImageSize","canvasMaxAreaInBytes","disableFontFace","fontExtraProperties","enableXfa","ownerDocument","document","disableRange","disableStream","disableAutoFetch","pdfBug","NaN","useSystemFonts","useWorkerFetch","isValidFetchUrl","baseURI","canvasFactory","filterFactory","styleElement","transportFactory","cMapReaderFactory","isCompressed","standardFontDataFactory","workerParams","port","GlobalWorkerOptions","workerPort","fromPort","_worker","fetchDocParams","apiVersion","evaluatorOptions","transportParams","then","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","PDFDataTransportStream","initialData","progressiveDone","contentDispositionFilename","createPDFNetworkStream","params","PDFNodeStream","PDFFetchStream","PDFNetworkStream","all","workerId","messageHandler","MessageHandler","transport","WorkerTransport","_transport","send","catch","_capability","source","sendWithPromise","val","href","window","location","Buffer","isNaN","onPassword","onProgress","destroy","_pendingDestroy","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","addRangeListener","listener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","begin","onDataProgress","loaded","total","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","end","abort","PDFDocumentProxy","pdfInfo","_pdfInfo","deprecated","getJSActions","js","jsArr","annotationStorage","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","pageNumber","getPageIndex","ref","getDestinations","getDestination","id","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getDocJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","saveDocument","getDownloadInfo","downloadInfoCapability","cleanup","keepLoadedFonts","startCleanup","loadingTask","loadingParams","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","delayedCleanupTimeout","pendingCleanup","pageIndex","pageInfo","_pageIndex","_pageInfo","_stats","StatTimer","_pdfBug","commonObjs","objs","PDFObjects","_maybeCleanupAfterRender","_intentStates","rotate","userUnit","view","getViewport","scale","rotation","offsetX","offsetY","dontFlip","PageViewport","viewBox","getAnnotations","intent","intentArgs","getRenderingIntent","renderingIntent","getPageJSActions","getXfa","children","render","canvasContext","viewport","annotationMode","background","optionalContentConfigPromise","annotationCanvasMap","pageColors","printAnnotationStorage","time","abortDelayedCleanup","intentState","cacheKey","set","streamReaderCancelTimeout","clearTimeout","intentPrint","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","separateAnnots","_pumpOperatorList","complete","error","renderTasks","delete","internalRenderTask","tryCleanup","capability","_abortOperatorList","timeEnd","InternalRenderTask","callback","useRequestAnimationFrame","Set","add","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","getOperatorList","opListReadCapability","opListTask","streamTextContent","includeMarkedContent","disableNormalization","TEXT_CONTENT_CHUNK_SIZE","sendWithStream","highWaterMark","size","textContent","items","getTextContent","xfa","XfaText","readableStream","pump","reader","read","done","assign","styles","getReader","getStructTree","_destroy","waitOn","values","force","completed","cancel","clear","resetStats","success","delayed","setTimeout","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","transfers","streamReader","RenderingCancelledException","delay","extraDelay","curCacheKey","curIntentState","stats","LoopbackPort","listeners","deferred","postMessage","transfer","event","structuredClone","call","addEventListener","removeEventListener","terminate","PDFWorkerUtil","isWorkerDisabled","fallbackWorkerSrc","fakeWorkerId","__non_webpack_require__","pdfjsFilePath","currentScript","replace","isSameOrigin","otherUrl","base","origin","other","createCDNWrapper","wrapper","createObjectURL","Blob","workerPorts","_port","_webWorker","_messageHandler","has","WeakMap","_initializeFromPort","_initialize","on","_mainThreadWorkerMessageHandler","workerSrc","Worker","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","cachedPort","pdfjsWorker","loader","mainWorkerMessageHandler","eval","loadScript","methodPromises","pageCache","pagePromises","passwordCapability","factory","fontLoader","FontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cacheSimpleMethod","cachedPromise","AnnotationStorage","isOpList","SerializableEmpty","PrintAnnotationStorage","serializable","hash","page","hasOwnProperty","resetModified","terminated","cancelAllRequests","sink","getFullReader","evt","onPull","close","ArrayBuffer","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_numPages","htmlForXfa","exception","updatePassword","exportedData","exportedError","inspectFont","FontInspector","enabled","font","fontAdded","FontFaceObject","bind","finally","imageData","pageProxy","bitmap","width","height","fetch","filename","num","gen","results","OptionalContentConfig","metadata","Metadata","cleanupSuccessful","ensureObj","objId","RenderTask","onContinue","form","canvas","canvasInUse","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","StepperManager","stepper","init","nextBreakPoint","getNextBreakPoint","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","version","build","_editor","_murmurhash","freeze","modified","storage","onSetModified","onResetModified","onAnnotationEditor","getValue","defaultValue","getRawValue","remove","AnnotationEditor","setValue","entry","entries","setModified","_type","getAll","setAll","print","MurmurHash3_64","context","hasBitmap","serialized","serialize","update","JSON","stringify","hexdigest","parent","clone","_tools","keepAspectRatio","resizersDiv","boundFocusin","focusin","boundFocusout","focusout","hasBeenClicked","isEditing","isInEditMode","_initialOptions","_uiManager","_focusEventsAllowed","isDraggable","zIndex","_zIndex","_colorManager","ColorManager","parameters","div","uiManager","annotationElementId","_willKeepAspectRatio","isCentered","rawDims","pageWidth","pageHeight","pageX","pageY","pageRotation","viewParameters","pageDimensions","pageTranslation","parentDimensions","x","y","isAttachedToDOM","deleted","_defaultLineColor","getHexCode","deleteAnnotationElement","editor","fakeEditor","FakeEditor","getNextId","addToAnnotationStorage","initialize","_l10n","updateDefaultParams","_value","defaultPropertiesToUpdate","isHandlingMimeForPasting","_mime","paste","item","propertiesToUpdate","_isDraggable","classList","toggle","center","parentRotation","fixAndSetPosition","addCommands","currentLayer","setInBackground","style","setInForeground","setParent","setSelected","target","relatedTarget","closest","preventDefault","isMultipleSelection","commitOrRemove","isEmpty","commit","setAt","tx","ty","screenToPageTranslation","translate","translateInPage","moveInDOM","scrollIntoView","block","drag","parentWidth","parentHeight","getBoundingClientRect","findNewParent","left","toFixed","top","rotatePoint","angle","pageTranslationToScreen","getRotationMatrix","parentScale","realScale","scaledWidth","scaledHeight","round","setDims","fixDims","widthPercent","endsWith","heightPercent","parseFloat","getInitialTranslation","noContextMenu","e","createResizers","createElement","classes","append","resizerPointerdown","prepend","button","ctrlKey","boundResizerPointermove","resizerPointermove","savedDraggable","pointerMoveOptions","passive","capture","savedX","savedY","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","getComputedStyle","pointerUpCallback","newX","newY","newWidth","newHeight","cmd","undo","mustExec","minWidth","MIN_SIZE","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","w","h","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","movementX","movementY","oldDiag","hypot","setAttribute","className","maxWidth","maxHeight","bindEvents","pointerdown","setUpDragSession","isSelected","pointerMoveCallback","dragSelectedEditors","endDragSession","shiftKey","metaKey","toggleSelected","moveEditorInDOM","_setParentAndPosition","changeParent","getRect","shiftX","shiftY","getRectInCurrentCoords","onceAdded","enableEditMode","disableEditMode","shouldGetKeyboardEvents","needsToBeRebuilt","rebuild","_isForCopying","_context","deserialize","removeEditor","isResizable","makeResizable","select","unselect","contains","activeElement","focus","updateParams","disableEditing","enableEditing","enterInEditMode","contentDiv","setActiveEditor","setAspectRatio","aspectRatio","element","names","opacityToHex","opacity","IdManager","getId","ImageManager","baseId","cache","_isSVGFittingCanvas","svg","ctx","getContext","image","Image","drawImage","getImageData","rawData","refCounter","isSvg","response","ok","statusText","blob","file","mustRemoveAspectRatioPromise","fileReader","FileReader","imageElement","imagePromise","onload","svgUrl","result","onerror","readAsDataURL","createImageBitmap","getFromFile","lastModified","getFromUrl","getFromId","getSvgUrl","deleteId","isValidId","CommandManager","commands","locked","maxSize","position","overwriteIfSameType","keepUndo","next","splice","redo","hasSomethingToUndo","hasSomethingToRedo","KeyboardManager","callbacks","allKeys","isMacKey","split","at","altKey","exec","self","bubbles","args","checker","stopPropagation","_colorsMapping","_colors","colors","getColorValues","convert","color","rgb","getRGB","matchMedia","matches","RGB","every","AnnotationEditorUIManager","activeEditor","allEditors","allLayers","commandManager","currentPageIndex","deletedAnnotationsElementIds","draggingEditors","editorTypes","editorsToRescale","eventBus","idManager","isEnabled","isWaiting","lastActiveElement","mode","selectedEditors","boundBlur","blur","boundFocus","boundCopy","copy","boundCut","cut","boundPaste","boundKeydown","keydown","boundOnEditingAction","onEditingAction","boundOnPageChanging","onPageChanging","boundOnScaleChanging","onScaleChanging","boundOnRotationChanging","onRotationChanging","previousStates","hasSelectedEditor","translation","translationTimeoutId","container","viewer","TRANSLATE_SMALL","TRANSLATE_BIG","_keyboardManager","proto","arrowChecker","hasSomethingToControl","small","big","selectAll","unselectAll","translateSelectedEditors","pdfDocument","_on","PixelsPerInch","PDF_TO_CSS_UNITS","removeKeyboardManager","removeFocusManager","_off","layer","hcmFilter","addHCMFilter","foreground","focusMainContainer","findParent","layerX","layerY","disableUserSelect","addShouldRescale","removeShouldRescale","pagesRotation","addFocusManager","hasSelection","lastEditor","once","addKeyboardManager","addCopyPasteListeners","removeCopyPasteListeners","editors","clipboardData","setData","editorType","parse","isArray","newEditors","deserializedEditor","addEditorToLayer","selectEditors","getActive","dispatchUpdateStates","hasChanged","some","dispatch","dispatchUpdateUI","setEditingState","registerEditorTypes","types","getLayer","addLayer","enable","disable","removeLayer","updateMode","editId","disableAll","enableAll","updateToolbar","addNewEditor","enableWaiting","mustWait","disableClick","enableClick","getEditors","getEditor","addEditor","addDeletedAnnotationElement","isDeletedAnnotationElement","removeDeletedAnnotationElement","addOrRebuild","ed","noCommit","totalX","totalY","TIME_TO_WAIT","savedPageIndex","newPageIndex","mustBeAddedInUndoStack","move","isActive","getMode","imageManager","_base_factory","SVG_NS","AnnotationPrefix","PDF","BaseFilterFactory","_cache","_defs","hcmKey","hcmUrl","hcmHighlightFilter","hcmHighlightKey","hcmHighlightUrl","defs","visibility","contain","createElementNS","body","addFilter","maps","tableR","tableG","tableB","mapR","mapG","mapB","bufferR","bufferG","bufferB","filter","createFilter","addTransferMapConversion","fgColor","bgColor","fgRGB","bgRGB","table","addGrayConversion","getSteps","start","arr","addHighlightHCMFilter","newFgColor","newBgColor","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","step","newStart","newStep","prev","k","keepHCM","parentNode","feColorMatrix","appendFeFunc","feComponentTransfer","func","feFunc","rTable","gTable","bTable","getPropertyValue","BaseCanvasFactory","_document","_createCanvas","fetchData","asTypedArray","arrayBuffer","text","request","XMLHttpRequest","open","responseType","onreadystatechange","readyState","DONE","responseText","BaseCMapReaderFactory","_fetchData","compressionType","cMapData","BaseStandardFontDataFactory","DOMSVGFactory","BaseSVGFactory","_createSVG","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","trim","substring","toLowerCase","isPdfFile","test","getFilenameFromUrl","onlyStripPath","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","reURI","reFilename","splitURI","suggestedFilename","started","times","now","outBuf","longest","padEnd","removeScriptElement","script","head","documentElement","pdfDateStringRegex","PDFDateString","toDateObject","input","RegExp","year","parseInt","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","attributes","colorRGB","span","computedColor","getCurrentTransform","f","getTransform","getCurrentTransformInverse","invertSelf","setLayerDimensions","mustFlip","mustRotate","useRound","widthStr","heightStr","reset","canvasAndContext","skipDimensions","SEED","MASK_HIGH","MASK_LOW","seed","h1","h2","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","systemFonts","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","loadSystemFont","loadedName","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","attached","missingFile","systemFontInfo","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","supported","userAgent","completeRequest","otherRequest","shift","_loadTestFont","testFont","atob","int32","offset","spliceString","s","insert","chunk1","chunk2","called","isFontReady","fillText","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","btoa","fontFamily","translatedData","compiledGlyphs","_inspectFont","cssFontInfo","css","weight","fontWeight","italicAngle","mimetype","getPathGenerator","character","cmds","jsBuf","current","fs","readFile","Canvas","createCanvas","_pattern_helper","_image_utils","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","EXECUTION_TIME","EXECUTION_STEPS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","mirrorContextOperations","destCtx","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","setTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","beginPath","ctxSave","ctxRestore","ctxTranslate","ctxScale","ctxTransform","ctxSetTransform","ctxResetTransform","ctxRotate","cp1x","cp1y","cp2x","cp2y","CachedCanvases","getCanvas","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","scaleX","scaleY","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","points","j0","lineSize","pos","elem","mask","count","sum","steps","Int32Array","path","Path2D","p0","pp","drawOutline","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","minX","minY","maxX","maxY","updateRectMinMax","updateScalingPathMinMax","updateCurvePathMinMax","box","getPathBoundingBox","pathType","PathType","xStrokePad","yStrokePad","updateClipFromPath","isEmptyClip","Infinity","getClippedPathBoundingBox","putBinaryImageData","ImageData","putImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","createImageData","srcPos","destPos","dest","thisChunkHeight","elemsInThisChunk","kind","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","srcDiff","kEnd","kEndUnrolled","srcByte","putBinaryImageMask","convertBlackAndWhiteToRGBA","nonBlackColor","copyCtxState","sourceCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","subtype","backdrop","layerOffsetX","layerOffsetY","maskOffsetX","maskOffsetY","hasBackdrop","composeFn","PIXELS_TO_PROCESS","chunkSize","ceil","row","chunkHeight","composeSMask","smask","layerBox","layerWidth","layerHeight","getImageSmoothingEnabled","interpolate","fround","actualScale","devicePixelRatio","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","markedContentStack","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedCanvases","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","argsArrayLen","chunkOperations","endTime","fnId","breakIt","depObjId","objsPool","restoreInitialState","inSMaskMode","HTMLCanvasElement","drawFilter","hcmFilterId","savedFilter","_scaleImage","img","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","tmpCanvas","tmpCtx","clearRect","_createMaskCanvas","isPatternFill","currentTransform","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","cord1","cord2","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","inverse","getPattern","limit","dashArray","dashPhase","flatness","states","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","compose","dirtyBox","old","pop","ops","startX","startY","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","rescaleAndStroke","needRestore","paths","pendingTextPaths","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","typeface","fallbackName","bold","italic","browserFontSize","rise","paintChar","patternTransform","fillStrokeMode","isAddToPathSet","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","pattern","getSinglePixelWidth","isInvalidPDFjsFont","chars","glyph","unicode","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","charWidth","isTextInvisible","spacingLength","charProcOperatorList","operatorListId","transformed","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","IR","canvasGraphicsFactory","createCanvasGraphics","TilingPattern","_getPattern","arguments","matrix","getShadingPattern","SHADING","inv","bbox","group","currentCtx","isolated","knockout","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","canvasWidth","canvasHeight","annotationCanvas","savedCtx","compiled","skewX","skewY","positions","trans","images","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","tag","visible","isVisible","isContentVisible","absDet","normX","normY","getScaleForStroking","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","op","applyBoundingBox","region","BaseShadingPattern","RadialAxialShadingPattern","_bbox","_colorStops","_p0","_p1","_r0","_r1","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","ownerBBox","createPattern","domMatrix","DOMMatrix","drawTriangle","c1","c2","c3","coords","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_figures","_bounds","_background","_createMeshCanvas","combinedScale","backgroundColor","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","matrixScale","temporaryPatternCanvas","DummyShadingPattern","PaintType","COLORED","UNCOLORED","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","clipBbox","realOutputSize","bboxWidth","bboxHeight","cssColor","convertToRGBA","convertRGBToRGBA","inverseDecode","zeroMapping","oneMapping","widthInSource","widthRemainder","len32","src32","s1","s2","s3","jj","grayToRGBA","CallbackKind","UNKNOWN","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","stream","processStreamMessage","action","cbSourceName","cbTargetName","createStreamSink","actionName","handler","ah","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","isCancelled","lastDesiredSize","sinkCapability","streamController","deleteStreamController","allSettled","metadataMap","parsedData","getRaw","INTERNAL","Symbol","OptionalContentGroup","_setVisible","internal","cachedGetHash","groups","initialHash","order","creator","baseState","off","getHash","evaluateVisibilityExpression","array","operator","state","expression","policy","ids","setVisibility","hasInitialVisibility","getOrder","getGroups","getGroup","pdfDataRangeTransport","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","_onReceiveData","_onProgress","_onProgressiveDone","_enqueue","found","_begin","_progressiveDataLength","_loaded","_removeRangeReader","indexOf","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","_stream","_done","_filename","_requests","_headersReady","requestCapability","_end","_queuedChunk","requestsCapability","_network_utils","createFetchOptions","headers","abortController","method","signal","credentials","redirect","createHeaders","Headers","getArrayBuffer","isHttp","_rangeRequestReaders","PDFFetchStreamReader","PDFFetchStreamRangeReader","_reader","_withCredentials","_headersCapability","_disableRange","_rangeChunkSize","_abortController","AbortController","_headers","validateResponseStatus","createResponseStatusError","getResponseHeader","allowRangeRequests","suggestedLength","validateRangeRequestCapabilities","extractFilenameFromHeader","_readCapability","_content_disposition","returnValues","contentEncoding","contentDisposition","getFilenameFromContentDispositionHeader","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","contentDispositionStr","iter","quot","part","parts","quotindex","extvalue","encodingend","langvalue","charset","hex","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","xhr","NetworkManager","currXhrId","pendingRequests","requestRange","requestFull","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","getRequestXhr","isPendingRequest","abortRequest","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_url","_fullRequestId","_headersReceivedCapability","_cachedChunks","_storedError","fullRequestXhrId","fullRequestXhr","lengthComputable","_requestId","_close","fileUriRegex","parseUrl","sourceUrl","parsedUrl","host","isFsUrl","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_readableStream","_error","_setReadableStream","BaseRangeReader","createRequestOptions","auth","hostname","handleResponse","statusCode","_request","http","https","_httpHeaders","Range","lstat","stat","createReadStream","SVG_DEFAULTS","fontStyle","XML_NS","XLINK_NS","contentType","forceDataSchema","digits","b1","b2","b3","d1","d2","d3","d4","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc32","crc","writePngChunk","len","adler32","deflateSync","literals","deflateSyncUncompressed","node","from","output","maxBlockLength","deflateBlocks","idat","pi","adler","encode","isMask","bitDepth","colorType","offsetLiterals","offsetBytes","ihdr","pngLength","SVGExtraState","dependencies","activeClipUrl","clipGroup","maskId","opListToTree","opList","opTree","opListElement","fn","pf","pm","acos","clipCount","maskCount","shadingCount","SVGGraphics","svgFactory","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","loadDependencies","getSVG","svgElement","convertOpList","operatorIdMapping","opTreeElement","lineMatrix","xcoords","ycoords","tspan","setAttributeNS","txtElement","txtgrp","lineWidthScale","_setStrokeAttributes","_ensureTransformGroup","addFontStyle","hasChildNodes","setStrokeAlpha","setFillAlpha","_makeColorN_Pattern","_makeShadingPattern","_makeTilingPattern","tilingId","tx0","ty0","tx1","ty1","xscale","yscale","txstep","tystep","tiling","childNodes","shadingId","colorStops","gradient","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","stop","getAttributeNS","clipId","clipPath","clipElement","cloneNode","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","walk","shouldBuildText","child","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","ascentCache","getCtx","getAscent","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","appendText","geom","textDiv","textDivProperties","hasText","hasEOL","_textDivs","_transform","atan2","fontName","fontHeight","fontAscent","_isOffscreenCanvasSupported","sin","cos","scaleFactorStr","divStyle","_container","_rootContainer","_pageWidth","_pageHeight","dir","_fontInspectorEnabled","dataset","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_isReadableStream","_layoutText","layout","prevFontSize","prevFontFamily","_canceled","textDivs","textDivsLength","TextLayerRenderTask","textContentSource","textContentItemsStr","_textContentSource","_textContentItemsStr","_layoutTextParams","_processItems","styleCache","br","_render","renderTextLayer","textContentStream","scaleFactor","updateTextLayer","mustRescale","_freetext","_ink","_stamp","AnnotationEditorLayer","accessibilityManager","allowClick","annotationLayer","boundPointerup","pointerup","boundPointerdown","hadPointerDown","isCleaningUp","isDisabling","_initialized","l10n","FreeTextEditor","InkEditor","StampEditor","addInkEditorIfNeeded","hidden","isCommitting","createAndAddNewEditor","pointerEvents","annotationElementIds","editables","getEditableAnnotations","editable","hide","hiddenAnnotationIds","getEditableAnnotation","show","currentActive","attach","detach","removePointerInTextLayer","moveElementInDOM","addUndoableEditor","createNewEditor","pasteEditor","getCenterPoint","annotationType","annotationEditorType","innerWidth","innerHeight","_annotation_layer","boundEditorDivBlur","editorDivBlur","boundEditorDivFocus","editorDivFocus","boundEditorDivInput","editorDivInput","boundEditorDivKeydown","editorDivKeydown","content","editorDivId","_freeTextDefaultContent","_l10nPromise","_internalPadding","_defaultColor","_defaultFontSize","_translateEmpty","updateFontSize","updateColor","setFontsize","editorDiv","setEditorDimensions","savedFontsize","savedColor","overlayDiv","contentEditable","removeAttribute","preventScroll","cheatInitialRect","innerText","extractText","divs","savedDisplay","display","savedText","newText","trimEnd","setText","setContent","dblclick","baseX","baseY","posX","posY","replaceChildren","line","createTextNode","FreeTextAnnotationElement","defaultAppearanceData","fontColor","textPosition","isForCopying","padding","hasElementChanged","_scripting_utils","_displayL10n_utils","_xfa_layer","DEFAULT_TAB_INDEX","GetElementsByNameSet","getRectDims","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","hasBorder","isRenderable","ignoreBorder","createQuadrilaterals","linkService","downloadManager","imageResourcesPath","renderForms","enableScripting","_fieldObjects","fieldObjects","_createContainer","_createQuadrilaterals","popupRef","noRotate","setRotation","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","elementWidth","elementHeight","_commonActions","setColor","jsName","styleName","detail","colorArray","ColorConverters","noView","noPrint","userName","title","readonly","disabled","required","_setRequired","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","storedData","eventProxy","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","rectWidth","rectHeight","backgroundImage","_createPopup","popup","titleObj","modificationDate","contentsObj","richText","parentRect","elements","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","querySelector","getElementsByName","getAttribute","maybeShow","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","_editOnDoubleClick","isTooltipOnly","link","isBound","addLinkAttributes","newWindow","_bindNamedAction","attachment","_bindAttachment","setOCGState","bindSetOCGState","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","setInternalLink","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","openOrDownloadData","executeSetOCGState","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","dispatchEvent","Event","alt","l10nId","l10nArgs","alternativeText","showElementAndHideCanvas","previousSibling","nodeName","_getKeyModifier","_setEventListener","baseName","eventName","valueGetter","modifier","_setEventListeners","getter","_setBackgroundColor","_setTextStyle","TEXT_ALIGNMENT","computedFontSize","roundToOneDecimal","multiLine","numberOfLines","lineHeight","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","elementData","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","readOnly","tabIndex","maxLength","defaultFieldValue","blurListener","scrollLeft","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","change","fieldWidth","combWidth","letterSpacing","verticalAlign","checked","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","lastChild","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","option","selected","optionElement","displayValue","removeEmptyEntry","noneOptionElement","isExport","selectedIndex","selectedValues","getItems","multipleSelection","index","findIndex","selectChild","before","indices","changeEx","keyDown","PopupElement","elementIds","dateTimePromise","boundHide","boundShow","boundToggle","pinned","wasVisible","dateObject","toLocaleDateString","toLocaleTimeString","trigger","flatMap","baseColor","outlineColor","BACKGROUND_ENLIGHT","header","localized","XfaLayer","xfaHtml","html","contents","_formatContents","useParentRect","normalizedRect","HORIZONTAL_SPACE_AFTER_ANNOTATION","popupLeft","popupTop","lines","lineSpan","lineCoordinates","square","circle","polyline","containerClassName","svgElementName","coordinate","vertices","polylines","inkList","inkLists","_download","AnnotationLayer","editableAnnotations","NullL10n","appendElement","contentElement","firstChild","annotations","popupToElements","elementParams","noHTML","isPopupAnnotation","rendered","setAnnotationCanvasMap","replaceWith","makeColorComp","scaleAndClamp","CMYK_G","G_CMYK","G_RGB","G_rgb","G_HTML","G","RGB_G","RGB_rgb","RGB_HTML","T_HTML","T_rgb","CMYK_RGB","CMYK_rgb","CMYK_HTML","components","RGB_CMYK","DEFAULT_L10N_STRINGS","of_pages","page_of_pages","document_properties_kb","document_properties_mb","document_properties_date_string","document_properties_page_size_unit_inches","document_properties_page_size_unit_millimeters","document_properties_page_size_orientation_portrait","document_properties_page_size_orientation_landscape","document_properties_page_size_name_a3","document_properties_page_size_name_a4","document_properties_page_size_name_letter","document_properties_page_size_name_legal","document_properties_page_size_dimension_string","document_properties_page_size_dimension_name_string","document_properties_linearized_yes","document_properties_linearized_no","additional_layers","page_landmark","thumb_page_title","thumb_page_canvas","find_reached_top","find_reached_bottom","find_not_found","page_scale_width","page_scale_fit","page_scale_auto","page_scale_actual","page_scale_percent","loading_error","invalid_file_error","missing_file_error","unexpected_response_error","rendering_error","annotation_date_string","printing_not_supported","printing_not_ready","web_fonts_disabled","free_text2_default_content","editor_free_text2_aria_label","editor_ink2_aria_label","editor_ink_canvas_aria_label","print_progress_percent","getL10nFallback","formatL10nValue","getLanguage","getDirection","setupStorage","xfaOn","xfaOff","setAttributes","isHTMLAnchorElement","HTMLAnchorElement","dataId","root","rootHtml","stack","rootDiv","childHtml","xmlns","el","querySelectorAll","baseHeight","baseWidth","boundCanvasContextMenu","canvasContextMenu","boundCanvasPointermove","canvasPointermove","boundCanvasPointerleave","canvasPointerleave","boundCanvasPointerup","canvasPointerup","boundCanvasPointerdown","canvasPointerdown","currentPath2D","hasSomethingToDraw","isCanvasInitialized","observer","realWidth","realHeight","requestFrameCallback","_defaultOpacity","_defaultThickness","thickness","bezierPath2D","allRawPaths","currentPath","translationX","translationY","updateThickness","updateOpacity","savedThickness","fitToContent","redraw","savedOpacity","createObserver","setCanvasDims","disconnect","setDimensions","getInitialBBox","setStroke","startDrawing","drawPoints","draw","lastX","lastY","path2D","makeBezierCurve","lastPoint","stopDrawing","bezier","generateBezierPoints","xy","lastPoints","xMin","xMax","yMin","yMax","prevX","prevY","bezierPoints","control1","control2","updateTransform","ResizeObserver","contentRect","observe","roundedWidth","roundedHeight","setScaleFactor","getPadding","scaleFactorW","scaleFactorH","buildPath2D","toPDFCoordinates","fromPDFCoordinates","serializePaths","p10","p11","p20","p21","p30","p31","p40","p41","getBbox","firstTime","prevTranslationX","prevTranslationY","unscaledPadding","bitmapId","bitmapPromise","bitmapUrl","bitmapFile","resizeTimeoutId","hasBeenAddedInUndoStack","supportedTypes","supportedTypesStr","mime","getAsFile","getBitmapFetched","fromId","getBitmapDone","getBitmap","accept","files","click","MAX_RATIO","factor","drawBitmap","scaleBitmap","bitmapWidth","bitmapHeight","prevWidth","prevHeight","offscreen","transferToImageBitmap","serializeBitmap","toUrl","toDataURL","stamps","area","prevData","_api","_text_layer","_annotation_editor_layer","pdfjsVersion","pdfjsBuild"],"sourceRoot":""}