@ckeditor/ckeditor5-document-outline 38.1.0 → 38.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/document-outline.js +1 -1
- package/package.json +3 -3
- package/src/augmentation.d.ts +27 -27
- package/src/documentoutline/documentoutlineui.d.ts +39 -39
- package/src/documentoutline/documentoutlineui.js +1 -1
- package/src/documentoutline/documentoutlineutils.d.ts +66 -66
- package/src/documentoutline/documentoutlineutils.js +1 -1
- package/src/documentoutline/ui/documentoutlineitemview.d.ts +55 -55
- package/src/documentoutline/ui/documentoutlineitemview.js +1 -1
- package/src/documentoutline/ui/documentoutlineview.d.ts +44 -44
- package/src/documentoutline/ui/documentoutlineview.js +1 -1
- package/src/documentoutline/utils.d.ts +17 -17
- package/src/documentoutline/utils.js +1 -1
- package/src/documentoutline.d.ts +99 -99
- package/src/documentoutline.js +1 -1
- package/src/index.d.ts +19 -19
- package/src/index.js +1 -1
- package/src/tableofcontents/headingid.d.ts +18 -18
- package/src/tableofcontents/headingid.js +1 -1
- package/src/tableofcontents/tableofcontentscommand.d.ts +21 -21
- package/src/tableofcontents/tableofcontentscommand.js +1 -1
- package/src/tableofcontents/tableofcontentsediting.d.ts +37 -37
- package/src/tableofcontents/tableofcontentsediting.js +1 -1
- package/src/tableofcontents/tableofcontentsui.d.ts +27 -27
- package/src/tableofcontents/tableofcontentsui.js +1 -1
- package/src/tableofcontents.d.ts +26 -26
- package/src/tableofcontents.js +1 -1
- package/build/document-outline.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://CKEditor5.documentOutline/./theme/documentoutline.css","webpack://CKEditor5.documentOutline/./theme/tableofcontents.css","webpack://CKEditor5.documentOutline/../node_modules/css-loader/dist/runtime/api.js","webpack://CKEditor5.documentOutline/../node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://CKEditor5.documentOutline/./src/augmentation.ts","webpack://CKEditor5.documentOutline/./src/documentoutline.ts","webpack://CKEditor5.documentOutline/./src/documentoutline/documentoutlineui.ts","webpack://CKEditor5.documentOutline/./src/documentoutline/documentoutlineutils.ts","webpack://CKEditor5.documentOutline/./src/documentoutline/ui/documentoutlineitemview.ts","webpack://CKEditor5.documentOutline/./src/documentoutline/ui/documentoutlineview.ts","webpack://CKEditor5.documentOutline/./src/documentoutline/utils.ts","webpack://CKEditor5.documentOutline/./src/index.ts","webpack://CKEditor5.documentOutline/./src/tableofcontents.ts","webpack://CKEditor5.documentOutline/./src/tableofcontents/headingid.ts","webpack://CKEditor5.documentOutline/./src/tableofcontents/tableofcontentscommand.ts","webpack://CKEditor5.documentOutline/./src/tableofcontents/tableofcontentsediting.ts","webpack://CKEditor5.documentOutline/./src/tableofcontents/tableofcontentsui.ts","webpack://CKEditor5.documentOutline/./theme/icons/table-of-contents.svg","webpack://CKEditor5.documentOutline/./theme/documentoutline.css?7045","webpack://CKEditor5.documentOutline/./theme/tableofcontents.css?3180","webpack://CKEditor5.documentOutline/../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://CKEditor5.documentOutline/delegated \"./src/core.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.documentOutline/delegated \"./src/engine.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.documentOutline/delegated \"./src/ui.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.documentOutline/delegated \"./src/utils.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.documentOutline/delegated \"./src/widget.js\" from dll-reference CKEditor5.dll","webpack://CKEditor5.documentOutline/external var \"CKEditor5.dll\"","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/_Symbol.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/_baseGetTag.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/_baseTrim.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/_freeGlobal.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/_getRawTag.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/_objectToString.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/_root.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/_trimmedEndIndex.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/debounce.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/isObject.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/isObjectLike.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/isSymbol.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/now.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/throttle.js","webpack://CKEditor5.documentOutline/javascript/node_modules/lodash-es/toNumber.js","webpack://CKEditor5.documentOutline/webpack/bootstrap","webpack://CKEditor5.documentOutline/webpack/runtime/compat get default export","webpack://CKEditor5.documentOutline/webpack/runtime/define property getters","webpack://CKEditor5.documentOutline/webpack/runtime/hasOwnProperty shorthand","webpack://CKEditor5.documentOutline/webpack/runtime/make namespace object","webpack://CKEditor5.documentOutline/webpack/runtime/nonce","webpack://CKEditor5.documentOutline/webpack/startup"],"names":["pluginInstance","config","licenseKey","pluginConfig","decodedLicense","disableEditor","editorOrContext","pluginName","counter","i"],"mappings":"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,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,UAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,SAAW;AACxhG,iBAAc,IAAK,IAAI,CAAE,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,UAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,UAAY,YAAY,WAAY,YAAY,WAAY,YAAY,UAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,Y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AY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,WAAY,UAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,WAAY,UAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YA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,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,GAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,WAAY,YAAY,YAAY,WAAY,WAAY,WAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,WAAY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AAa,0GAAG,CAAC,gKAAO;;;;AAIxB,iEAAe,gKAAO,aAAa;;;;;;;;;;;ACZtB;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,KAAwC,GAAG,sBAAiB,GAAG,CAAI;;AAEnF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,qEAAqE,qBAAqB,cAAc;;AAExG;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,yDAAyD;AACzD,IAAI;;AAEJ;;;AAGA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;;AAEA;;AAEA,qBAAqB,6BAA6B;AAClD;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;AC5QA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;ACA8B;;AAE9B;AACA,aAAa,gDAAI;;AAEjB,iEAAe,MAAM,EAAC;;;;;;;;;;;;;;;;;;;ACLY;AACM;AACU;;AAElD;AACA;AACA;;AAEA;AACA,qBAAqB,kDAAM,GAAG,kDAAM;;AAEpC;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,yDAAS;AACf,MAAM,8DAAc;AACpB;;AAEA,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;;AC3B0B;;AAEpD;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,sBAAsB,+DAAe;AACrC;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;AClBxB;AACA;;AAEA,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;;ACHQ;;AAElC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,kDAAM,GAAG,kDAAM;;AAEpC;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA,iEAAe,SAAS,EAAC;;;;;;;;;;;;;;;;AC7CzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA,iEAAe,cAAc,EAAC;;;;;;;;;;;;;;;;;ACrBY;;AAE1C;AACA;;AAEA;AACA,WAAW,sDAAU;;AAErB,iEAAe,IAAI,EAAC;;;;;;;;;;;;;;;;ACRpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iEAAe,eAAe,EAAC;;;;;;;;;;;;;;;;;;;AClBM;AACV;AACU;;AAErC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ,WAAW;AAC9B,WAAW,SAAS;AACpB;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,+CAA+C,iBAAiB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,wDAAQ;AACjB,MAAM,wDAAQ;AACd;AACA;AACA,iCAAiC,wDAAQ;AACzC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,mDAAG;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yDAAyD,mDAAG;AAC5D;;AAEA;AACA,eAAe,mDAAG;AAClB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;AC9LxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;AC9BxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;;AC5Bc;AACG;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,4DAAY,WAAW,0DAAU;AACtC;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;AC5BM;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,SAAS,gDAAI;AACb;;AAEA,iEAAe,GAAG,EAAC;;;;;;;;;;;;;;;;;;ACtBkB;AACA;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ,WAAW;AAC9B,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,mBAAmB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,wDAAQ;AACd;AACA;AACA;AACA,SAAS,wDAAQ;AACjB;AACA;AACA;AACA,GAAG;AACH;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACpEc;AACD;AACA;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wDAAQ;AACd;AACA;AACA,MAAM,wDAAQ;AACd;AACA,YAAY,wDAAQ;AACpB;AACA;AACA;AACA;AACA,UAAU,wDAAQ;AAClB;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;UC/DxB;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;;;;;UCAA;UACA;UACA;UACA","file":"document-outline.js","sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-document-outline-padding:var(--ck-spacing-large);--ck-document-outline-base-font-size:.875em;--ck-document-outline-placeholder-color:var(--ck-color-engine-placeholder-text);--ck-document-outline-indent-level-1:0;--ck-document-outline-indent-level-2:1.5em;--ck-document-outline-indent-level-3:3em;--ck-document-outline-indent-level-4:4.5em;--ck-document-outline-indent-level-5:6em;--ck-document-outline-indent-level-6:7.5em;--ck-document-outline-item-padding:var(--ck-spacing-small);--ck-document-outline-item-active-color:var(--ck-color-base-active);--ck-document-outline-item-default-color:#424242;--ck-document-outline-item-hover-state-color:var(--ck-color-base-text)}.ck.ck-document-outline{font-size:var(--ck-document-outline-base-font-size);padding:var(--ck-document-outline-padding);user-select:none}.ck.ck-document-outline:empty:before{color:var(--ck-document-outline-placeholder-color);content:attr(data-document-outline-empty-placeholder);display:inline-block}.ck.ck-document-outline .ck-document-outline__item{color:var(--ck-document-outline-item-default-color);cursor:pointer;overflow:hidden;padding:var(--ck-document-outline-item-padding);text-overflow:ellipsis;white-space:nowrap}.ck.ck-document-outline .ck-document-outline__item.ck-document-outline__item_empty{font-style:italic}.ck.ck-document-outline .ck-document-outline__item.ck-document-outline__item_empty:hover,.ck.ck-document-outline .ck-document-outline__item:hover{color:var(--ck-document-outline-item-hover-state-color);text-decoration:underline}.ck.ck-document-outline .ck-document-outline__item.ck-document-outline__item_active{color:var(--ck-document-outline-item-active-color)}.ck.ck-document-outline .ck-document-outline__item.ck-document-outline__item_level-1{font-size:1.1em;font-weight:700}.ck.ck-document-outline[dir=ltr] .ck-document-outline__item.ck-document-outline__item_level-1{padding-left:var(--ck-document-outline-indent-level-1)}.ck.ck-document-outline[dir=ltr] .ck-document-outline__item.ck-document-outline__item_level-2{padding-left:var(--ck-document-outline-indent-level-2)}.ck.ck-document-outline[dir=ltr] .ck-document-outline__item.ck-document-outline__item_level-3{padding-left:var(--ck-document-outline-indent-level-3)}.ck.ck-document-outline[dir=ltr] .ck-document-outline__item.ck-document-outline__item_level-4{padding-left:var(--ck-document-outline-indent-level-4)}.ck.ck-document-outline[dir=ltr] .ck-document-outline__item.ck-document-outline__item_level-5{padding-left:var(--ck-document-outline-indent-level-5)}.ck.ck-document-outline[dir=ltr] .ck-document-outline__item.ck-document-outline__item_level-6{padding-left:var(--ck-document-outline-indent-level-6)}.ck.ck-document-outline[dir=rtl] .ck-document-outline__item.ck-document-outline__item_level-1{padding-right:var(--ck-document-outline-indent-level-1)}.ck.ck-document-outline[dir=rtl] .ck-document-outline__item.ck-document-outline__item_level-2{padding-right:var(--ck-document-outline-indent-level-2)}.ck.ck-document-outline[dir=rtl] .ck-document-outline__item.ck-document-outline__item_level-3{padding-right:var(--ck-document-outline-indent-level-3)}.ck.ck-document-outline[dir=rtl] .ck-document-outline__item.ck-document-outline__item_level-4{padding-right:var(--ck-document-outline-indent-level-4)}.ck.ck-document-outline[dir=rtl] .ck-document-outline__item.ck-document-outline__item_level-5{padding-right:var(--ck-document-outline-indent-level-5)}.ck.ck-document-outline[dir=rtl] .ck-document-outline__item.ck-document-outline__item_level-6{padding-right:var(--ck-document-outline-indent-level-6)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./theme/documentoutline.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,qDAAsD,CACtD,2CAA4C,CAC5C,+EAAgF,CAEhF,sCAAuC,CACvC,0CAA2C,CAC3C,wCAAyC,CACzC,0CAA2C,CAC3C,wCAAyC,CACzC,0CAA2C,CAE3C,0DAA2D,CAC3D,mEAAoE,CACpE,gDAAyD,CACzD,sEACD,CAEA,wBAEC,mDAAoD,CADpD,0CAA2C,CAE3C,gBA+CD,CA7CC,qCAGC,kDAAmD,CAFnD,qDAAsD,CACtD,oBAED,CAEA,mDAEC,mDAAoD,CAIpD,cAAe,CADf,eAAgB,CAJhB,+CAAgD,CAGhD,sBAAuB,CADvB,kBAuBD,CAlBC,mFACC,iBACD,CAEA,kJAEC,uDAAwD,CACxD,yBACD,CAEA,oFACC,kDACD,CAEA,qFACC,eAAgB,CAChB,eACD,CAiBD,8FACC,sDACD,CAEA,8FACC,sDACD,CAEA,8FACC,sDACD,CAEA,8FACC,sDACD,CAEA,8FACC,sDACD,CAEA,8FACC,sDACD,CAtBA,8FACC,uDACD,CAEA,8FACC,uDACD,CAEA,8FACC,uDACD,CAEA,8FACC,uDACD,CAEA,8FACC,uDACD,CAEA,8FACC,uDACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-document-outline-padding: var(--ck-spacing-large);\\n\\t--ck-document-outline-base-font-size: .875em;\\n\\t--ck-document-outline-placeholder-color: var(--ck-color-engine-placeholder-text);\\n\\n\\t--ck-document-outline-indent-level-1: 0;\\n\\t--ck-document-outline-indent-level-2: 1.5em;\\n\\t--ck-document-outline-indent-level-3: 3em;\\n\\t--ck-document-outline-indent-level-4: 4.5em;\\n\\t--ck-document-outline-indent-level-5: 6em;\\n\\t--ck-document-outline-indent-level-6: 7.5em;\\n\\n\\t--ck-document-outline-item-padding: var(--ck-spacing-small);\\n\\t--ck-document-outline-item-active-color: var(--ck-color-base-active);\\n\\t--ck-document-outline-item-default-color: hsl(0, 0%, 26%);\\n\\t--ck-document-outline-item-hover-state-color: var(--ck-color-base-text);\\n}\\n\\n.ck.ck-document-outline {\\n\\tpadding: var(--ck-document-outline-padding);\\n\\tfont-size: var(--ck-document-outline-base-font-size);\\n\\tuser-select: none;\\n\\n\\t&:empty::before {\\n\\t\\tcontent: attr(data-document-outline-empty-placeholder);\\n\\t\\tdisplay: inline-block;\\n\\t\\tcolor: var(--ck-document-outline-placeholder-color);\\n\\t}\\n\\n\\t& .ck-document-outline__item {\\n\\t\\tpadding: var(--ck-document-outline-item-padding);\\n\\t\\tcolor: var(--ck-document-outline-item-default-color);\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tcursor: pointer;\\n\\n\\t\\t&.ck-document-outline__item_empty {\\n\\t\\t\\tfont-style: italic;\\n\\t\\t}\\n\\n\\t\\t&.ck-document-outline__item_empty:hover,\\n\\t\\t&:hover {\\n\\t\\t\\tcolor: var(--ck-document-outline-item-hover-state-color);\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\n\\t\\t&.ck-document-outline__item_active {\\n\\t\\t\\tcolor: var(--ck-document-outline-item-active-color);\\n\\t\\t}\\n\\n\\t\\t&.ck-document-outline__item_level-1 {\\n\\t\\t\\tfont-size: 1.1em;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t}\\n\\n\\t&[dir=\\\"ltr\\\"] {\\n\\t\\t& .ck-document-outline__item {\\n\\t\\t\\t@mixin document-outline-level-indents padding-left;\\n\\t\\t}\\n\\t}\\n\\n\\t&[dir=\\\"rtl\\\"] {\\n\\t\\t& .ck-document-outline__item {\\n\\t\\t\\t@mixin document-outline-level-indents padding-right;\\n\\t\\t}\\n\\t}\\n}\\n\\n@define-mixin document-outline-level-indents $padding-property {\\n\\t&.ck-document-outline__item_level-1 {\\n\\t\\t$(padding-property): var(--ck-document-outline-indent-level-1);\\n\\t}\\n\\n\\t&.ck-document-outline__item_level-2 {\\n\\t\\t$(padding-property): var(--ck-document-outline-indent-level-2);\\n\\t}\\n\\n\\t&.ck-document-outline__item_level-3 {\\n\\t\\t$(padding-property): var(--ck-document-outline-indent-level-3);\\n\\t}\\n\\n\\t&.ck-document-outline__item_level-4 {\\n\\t\\t$(padding-property): var(--ck-document-outline-indent-level-4);\\n\\t}\\n\\n\\t&.ck-document-outline__item_level-5 {\\n\\t\\t$(padding-property): var(--ck-document-outline-indent-level-5);\\n\\t}\\n\\n\\t&.ck-document-outline__item_level-6 {\\n\\t\\t$(padding-property): var(--ck-document-outline-indent-level-6);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-table-of-contents-padding:1em;--ck-table-of-contents-line-height:1.5;--ck-table-of-contents-items-start-padding:24px;--ck-table-of-contents-border-color:var(--ck-color-base-border);--ck-table-of-contents-label-background-color:#757575;--ck-table-of-contents-background-color:var(--ck-color-base-foreground)}.ck-content .table-of-contents{margin:.9em auto}.ck-content .table-of-contents.table-of-contents_empty{display:none}.ck-content .table-of-contents .table-of-contents__placeholder{font-style:italic;margin:0;padding:var(--ck-table-of-contents-padding)}.ck-content .table-of-contents>ol{padding:var(--ck-table-of-contents-padding)}.ck-content .table-of-contents ol{line-height:var(--ck-table-of-contents-line-height);list-style-type:none;margin:0}.ck-content .table-of-contents ol ol{padding-inline-start:var(--ck-table-of-contents-items-start-padding)}.ck-content .table-of-contents ol li{cursor:default;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ck-editor__editable .ck-widget.table-of-contents{background-color:var(--ck-table-of-contents-background-color);border:1px solid var(--ck-table-of-contents-border-color);position:relative}.ck-editor__editable .ck-widget.table-of-contents.table-of-contents_empty{display:block}.ck-editor__editable .ck-widget.table-of-contents[data-table-of-contents-label]:after{background-color:var(--ck-table-of-contents-label-background-color);color:#fff;content:attr(data-table-of-contents-label);font-family:var(--ck-font-face);font-size:10px;line-height:16px;padding:var(--ck-spacing-tiny) var(--ck-spacing-medium);position:absolute;right:10px;top:-1px;white-space:nowrap}[dir=rtl] .ck-editor__editable .ck-widget.table-of-contents[data-table-of-contents-label]:after{left:10px;right:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./theme/tableofcontents.css\"],\"names\":[],\"mappings\":\"AAOA,MACC,kCAAmC,CACnC,sCAAuC,CACvC,+CAAgD,CAChD,+DAAgE,CAChE,qDAA8D,CAC9D,uEACD,CAGC,+BACC,gBAgCD,CA9BC,uDACC,YACD,CAEA,+DAGC,iBAAkB,CAFlB,QAAS,CACT,2CAED,CAEA,kCACC,2CACD,CAEA,kCAEC,mDAAoD,CACpD,oBAAqB,CAFrB,QAcD,CAVC,qCACC,oEACD,CAEA,qCAIC,cAAe,CADf,eAAgB,CADhB,sBAAuB,CADvB,kBAID,CAKH,kDAEC,6DAA8D,CAC9D,yDAA0D,CAF1D,iBA4BD,CAxBC,0EACC,aACD,CAEA,sFAOC,mEAAoE,CAKpE,UAAuB,CAXvB,0CAA2C,CAS3C,+BAAgC,CADhC,cAAe,CAEf,gBAAiB,CALjB,uDAAwD,CAHxD,iBAAkB,CAElB,UAAW,CADX,QAAS,CAST,kBAMD,CAnBA,gGAgBE,SAAU,CACV,UAEF\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n:root {\\n\\t--ck-table-of-contents-padding: 1em;\\n\\t--ck-table-of-contents-line-height: 1.5;\\n\\t--ck-table-of-contents-items-start-padding: 24px;\\n\\t--ck-table-of-contents-border-color: var(--ck-color-base-border);\\n\\t--ck-table-of-contents-label-background-color: hsl(0, 0%, 46%);\\n\\t--ck-table-of-contents-background-color: var(--ck-color-base-foreground);\\n}\\n\\n.ck-content {\\n\\t& .table-of-contents {\\n\\t\\tmargin: 0.9em auto;\\n\\n\\t\\t&.table-of-contents_empty {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\\t& .table-of-contents__placeholder {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: var(--ck-table-of-contents-padding);\\n\\t\\t\\tfont-style: italic;\\n\\t\\t}\\n\\n\\t\\t& > ol {\\n\\t\\t\\tpadding: var(--ck-table-of-contents-padding);\\n\\t\\t}\\n\\n\\t\\t& ol {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tline-height: var(--ck-table-of-contents-line-height);\\n\\t\\t\\tlist-style-type: none;\\n\\n\\t\\t\\t& ol {\\n\\t\\t\\t\\tpadding-inline-start: var(--ck-table-of-contents-items-start-padding);\\n\\t\\t\\t}\\n\\n\\t\\t\\t& li {\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\tcursor: default;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck-editor__editable .ck-widget.table-of-contents {\\n\\tposition: relative;\\n\\tbackground-color: var(--ck-table-of-contents-background-color);\\n\\tborder: 1px solid var(--ck-table-of-contents-border-color);\\n\\n\\t&.table-of-contents_empty {\\n\\t\\tdisplay: block;\\n\\t}\\n\\n\\t&[data-table-of-contents-label]::after {\\n\\t\\tcontent: attr(data-table-of-contents-label);\\n\\n\\t\\tposition: absolute;\\n\\t\\ttop: -1px;\\n\\t\\tright: 10px;\\n\\t\\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-medium);\\n\\t\\tbackground-color: var(--ck-table-of-contents-label-background-color);\\n\\n\\t\\tfont-size: 10px;\\n\\t\\tfont-family: var(--ck-font-face);\\n\\t\\tline-height: 16px;\\n\\t\\tcolor: hsl(0, 0%, 100%);\\n\\t\\twhite-space: nowrap;\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tleft: 10px;\\n\\t\\t\\tright: auto;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport type {\n\tDocumentOutline,\n\tDocumentOutlineUtils,\n\tDocumentOutlineConfig,\n\tDocumentOutlineUI,\n\tTableOfContents,\n\tTableOfContentsCommand,\n\tTableOfContentsEditing,\n\tTableOfContentsUI,\n\tHeadingId\n} from './index';\n\ndeclare module '@ckeditor/ckeditor5-core' {\n\tinterface EditorConfig {\n\n\t\t/**\n\t\t * The configuration of the {@link module:document-outline/documentoutline~DocumentOutline} feature.\n\t\t *\n\t\t * Read more in {@link module:document-outline/documentoutline~DocumentOutlineConfig}.\n\t\t */\n\t\tdocumentOutline?: DocumentOutlineConfig;\n\t}\n\n\tinterface PluginsMap {\n\t\t[ DocumentOutline.pluginName ]: DocumentOutline;\n\t\t[ DocumentOutlineUI.pluginName ]: DocumentOutlineUI;\n\t\t[ DocumentOutlineUtils.pluginName ]: DocumentOutlineUtils;\n\t\t[ TableOfContents.pluginName ]: TableOfContents;\n\t\t[ TableOfContentsEditing.pluginName ]: TableOfContentsEditing;\n\t\t[ TableOfContentsUI.pluginName ]: TableOfContentsUI;\n\t\t[ HeadingId.pluginName ]: HeadingId;\n\t}\n\n\tinterface CommandsMap {\n\t\tinsertTableOfContents: TableOfContentsCommand;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module document-outline/documentoutline\n * @publicApi\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport { CKEditorError } from 'ckeditor5/src/utils';\n\nimport DocumentOutlineUtils from './documentoutline/documentoutlineutils';\nimport DocumentOutlineUI from './documentoutline/documentoutlineui';\n\n/**\n * The document outline feature.\n * It allows for an easy access to a predefined list of headings in the document.\n */\nexport default class DocumentOutline extends Plugin {\n\tdeclare public licenseKey: string;\n\n\t/**\n\t * @internal\n\t */\n\tprivate _licenseKeyCheckInterval: ReturnType<typeof setInterval> | null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ DocumentOutlineUtils, DocumentOutlineUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName(): 'DocumentOutline' {\n\t\treturn 'DocumentOutline';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._licenseKeyCheckInterval = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Fake variable to mislead anyone trying to reverse engineer obfuscated code.\n\t\tthis.licenseKey = editor.config.get( 'licenseKey' ) as string;\n\n\t\t// License status handling starts here.\n\t\tconst context = this.editor;\n\n\t\t// Checks the result of license key validation.\n\t\t// Some plugins validates the license key to check if user is allowed to use them.\n\t\t// When key is not valid then core editor function is disabled and special status is set.\n\t\t// Code for checking the result of the validation is placed here to hide the place where validation is\n\t\t// processed to make it more difficult to find it and crack it.\n\t\tthis._licenseKeyCheckInterval = setInterval( () => {\n\t\t\tlet licenseStatus;\n\n\t\t\tfor ( const i in context ) {\n\t\t\t\tconst key = i as keyof typeof context;\n\t\t\t\tconst v = context[ key ];\n\n\t\t\t\tif (\n\t\t\t\t\tv === 'documentOutlineLicenseKeyTrial' ||\n\t\t\t\t\tv === 'documentOutlineLicenseKeyInvalid' ||\n\t\t\t\t\tv === 'documentOutlineLicenseKeyValid' ||\n\t\t\t\t\tv === 'documentOutlineLicenseKeyTrialLimit:operations'\n\t\t\t\t) {\n\t\t\t\t\tdelete context[ key ];\n\n\t\t\t\t\tlicenseStatus = v;\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( licenseStatus === 'documentOutlineLicenseKeyInvalid' ) {\n\t\t\t\tclearInterval( this._licenseKeyCheckInterval! );\n\n\t\t\t\t/**\n\t\t\t\t * Invalid license key. Please contact our customer support at https://ckeditor.com/contact/.\n\t\t\t\t *\n\t\t\t\t * @error document-outline-invalid-license-key\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'document-outline-invalid-license-key', null );\n\t\t\t}\n\n\t\t\tif ( licenseStatus === 'documentOutlineLicenseKeyTrial' ) {\n\t\t\t\tconsole.info(\n\t\t\t\t\t'You are using the trial version of CKEditor 5 document outline plugin with limited usage. ' +\n\t\t\t\t\t'Make sure you will not use it in the production environment.'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( licenseStatus === 'documentOutlineLicenseKeyTrialLimit:operations' ) {\n\t\t\t\tclearInterval( this._licenseKeyCheckInterval! );\n\n\t\t\t\t/**\n\t\t\t\t * You have exhausted the trial usage limit (reason: reached document changes limit). Restart the editor.\n\t\t\t\t *\n\t\t\t\t * Please contact our customer support to get a full access at https://ckeditor.com/contact/.\n\t\t\t\t *\n\t\t\t\t * @error document-outline-trial-license-key-reached-limit-changes\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'document-outline-trial-license-key-reached-limit-changes',\n\t\t\t\t\tnull\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( licenseStatus === 'documentOutlineLicenseKeyValid' ) {\n\t\t\t\tclearInterval( this._licenseKeyCheckInterval! );\n\t\t\t}\n\t\t}, 1000 );\n\t}\n}\n\n/**\n * The configuration of the {@link module:document-outline/documentoutline~DocumentOutline document outline feature}.\n *\n * ```ts\n * ClassicEditor\n * \t.create( editorElement, {\n * \t\tdocumentOutline: ... // Document outline feature configuration.\n * \t} )\n * \t.then( /* ... *\\/ )\n * \t.catch( /* ... *\\/ );\n * ```\n *\n * See {@link module:core/editor/editorconfig~EditorConfig all editor options}.\n */\nexport interface DocumentOutlineConfig {\n\n\t/**\n\t * The container element for the document outline to render. This should be a reference to an existing\n\t * container element in the DOM.\n\t */\n\tcontainer?: HTMLElement;\n\n\t/**\n\t * An array of {@glink framework/architecture/editing-engine#model model} element names considered\n\t * as headings in the document outline.\n\t *\n\t * The index of the heading in the array reflects the heading nesting level. It can be used e.g. for reducing\n\t * the number of visible headings.\n\t *\n\t * ```ts\n\t * ClassicEditor\n\t * \t.create( editorElement, {\n\t * \t\tplugins: [ DocumentOutline, /* ... *\\/ ],\n\t * \t\tdocumentOutline: {\n\t * \t\t\theadings: [ 'heading1', 'heading2', /* ... *\\/ ],\n\t * \t\t\t// ...\n\t * \t\t}\n\t * \t} )\n\t * \t.then( /* ... *\\/ )\n\t * \t.catch( /* ... *\\/ );\n\t * ```\n\t *\n\t * If this configuration is not defined, the feature will use the following defaults instead:\n\t *\n\t * 1. If the {@glink features/headings Headings feature} is loaded, it equals\n\t * * {@link module:heading/headingconfig~HeadingConfig#options `config.heading.options`}.\n\t * * `[ 'heading1', 'heading2', 'heading3' ]` if `config.heading.options` is not defined.\n\t * 2. If the {@glink features/html/general-html-support General HTML Support} feature is loaded, it equals\n\t * `[ 'htmlH1', 'htmlH2', 'htmlH3', 'htmlH4', 'htmlH5', 'htmlH6' ]`.\n\t *\n\t * **Note**: The Headings feature takes precedence over the General HTML Support feature when\n\t * both are loaded.\n\t */\n\theadings?: Array<string>;\n\n\t/**\n\t * Allows you to display a placeholder text: [Empty heading] for empty headings.\n\t *\n\t * By default, the display of a placeholder is disabled. To enable it, set this parameter to true.\n\t *\n\t * **Note**: This setting also affects Table of contents feature.\n\t */\n\tshowEmptyHeadings?: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module document-outline/documentoutline/documentoutlineui\n */\n\nimport {\n\tContext,\n\tPlugin,\n\ttype ContextPlugin,\n\ttype Editor,\n\ttype PluginConstructor\n} from 'ckeditor5/src/core';\nimport { CKEditorError, global, Rect, type EventInfo } from 'ckeditor5/src/utils';\nimport DocumentOutlineView, { type DocumentOutlineViewItemSelectedEvent } from './ui/documentoutlineview';\nimport type {\n\tActiveOutlineItemChangeEvent,\n\tOutlineChangeEvent,\n\tOutlineItemDefinition\n} from './documentoutlineutils';\nimport { throttle, type DebouncedFunc } from 'lodash-es';\nimport type { EditingController } from 'ckeditor5/src/engine';\n\n// @if CK_DEBUG_DOCUMENTOUTLINE // const RectDrawer = require( '@ckeditor/ckeditor5-utils/tests/_utils/rectdrawer' ).default;\n\nimport '../../theme/documentoutline.css';\n\n/**\n * Provides the UI for the document outline feature.\n */\nexport default class DocumentOutlineUI extends Plugin {\n\t/**\n\t * The representation of the document outline view.\n\t */\n\tpublic view: DocumentOutlineView;\n\n\t/**\n\t * An array of all currently known headings in the document with additional metadata.\n\t *\n\t * @internal\n\t */\n\tprivate _currentOutlineDefinitions: Array<OutlineItemDefinition>;\n\n\t/**\n\t * A reference to the function that responds to scroll and resize throttled by lodash.\n\t * Used to cancel the execution when the editor gets destroyed.\n\t *\n\t * @internal\n\t */\n\tprivate _updateActiveDefinitionFromViewportThrottled: DebouncedFunc<() => void>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName(): 'DocumentOutlineUI' {\n\t\treturn 'DocumentOutlineUI';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis.view = new DocumentOutlineView( editor.locale, this.editor.config.get( 'documentOutline.showEmptyHeadings' ) );\n\n\t\tthis._currentOutlineDefinitions = [];\n\t\tthis._updateActiveDefinitionFromViewportThrottled = throttle( this._updateActiveDefinitionOnViewportChange.bind( this ), 100 );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst utilsPlugin = editor.plugins.get( 'DocumentOutlineUtils' );\n\t\tlet skipNextScrollEvent = false;\n\n\t\tthis.view.render();\n\n\t\tif ( !editor.config.get( 'documentOutline.container' ) ) {\n\t\t\t/**\n\t\t\t * A DOM element to inject the document outline is not provided.\n\t\t\t * Please set the `documentOutline.container` configuration option.\n\t\t\t *\n\t\t\t * @error document-outline-container-not-provided\n\t\t\t * @param editor Editor instance related to error.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'document-outline-container-not-provided', { editor } );\n\t\t}\n\n\t\teditor.config.get( 'documentOutline.container' )!.appendChild( this.view.element! );\n\n\t\tutilsPlugin.on<OutlineChangeEvent>( 'change', this._handleOutlineChange.bind( this ) );\n\t\tutilsPlugin.on<ActiveOutlineItemChangeEvent>( 'activeItemIndex', ( evt, { index } ) => this._setActiveViewItem( index ) );\n\n\t\tthis.view.on<DocumentOutlineViewItemSelectedEvent>( 'itemSelected', ( evt, index ) => {\n\t\t\tskipNextScrollEvent = true;\n\n\t\t\tthis._handleItemSelected( index );\n\t\t} );\n\n\t\tthis.view.listenTo<'scroll'>( global.document, 'scroll', () => {\n\t\t\t// When the user clicks an outline item, the window/ancestor elements will scroll to reveal it.\n\t\t\t// But if, for instance, the heading is the last in the document (it cannot be scrolled to the top of the viewport),\n\t\t\t// and the logic that reacts to scrolling reacts right away, it may override the active item by figuring out that a\n\t\t\t// heading that precedes it is the one to be considered active. To avoid this race and make sure it's always the heading\n\t\t\t// the user clicked that gets activated (wherever it lands after scrolling), we skip one scroll event after\n\t\t\t// reacting to `itemSelected`.\n\t\t\tif ( skipNextScrollEvent ) {\n\t\t\t\tskipNextScrollEvent = false;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._updateActiveDefinitionFromViewportThrottled();\n\t\t}, { useCapture: true } );\n\n\t\t// Resizing the viewport (window) may also alter the visibility of headings in the document.\n\t\tthis.view.listenTo<'resize'>( global.window, 'resize', this._updateActiveDefinitionFromViewportThrottled, { useCapture: true } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\t/* LICENSE_CHECKER_CALL_PATTERN_START */\n\n\t\t// Note this weird name is to make it similar to the obfuscated code.\n\t\t// Unfortunately it's not handled by the obfuscator because of https://github.com/cksource/collaboration-features/issues/2287.\n\t\tx8eE( this );\n\n\t\t/* LICENSE_CHECKER_CALL_PATTERN_END */\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.view.destroy();\n\t\tthis._updateActiveDefinitionFromViewportThrottled.cancel();\n\t}\n\n\t/**\n\t * Updates the state of the document outline.\n\t *\n\t * @internal\n\t */\n\tprivate _handleOutlineChange(\n\t\tevt: EventInfo<'change'>,\n\t\t{ outlineDefinitions, activeItemIndex, outlineChanges }: OutlineChangeEvent[ 'args' ][ 0 ]\n\t): void {\n\t\tthis._currentOutlineDefinitions = outlineDefinitions;\n\t\tthis.view.sync( outlineChanges );\n\t}\n\n\t/**\n\t * Updates the active element in the document outline.\n\t *\n\t * @internal\n\t */\n\tprivate _setActiveViewItem( index: number ): void {\n\t\tthis.view.activeItemIndex = index;\n\t}\n\n\t/**\n\t * Scrolls the view to the desired heading.\n\t *\n\t * @internal\n\t */\n\tprivate _handleItemSelected( index: number ): void {\n\t\tconst modelHeading = this._currentOutlineDefinitions[ index ].modelElement;\n\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.setSelection( modelHeading, 0 );\n\t\t} );\n\n\t\tthis.editor.editing.view.scrollToTheSelection( {\n\t\t\talignToTop: true,\n\t\t\tforceScroll: true\n\t\t} );\n\n\t\tthis.editor.editing.view.focus();\n\n\t\t// The UI must be synchronized whenever it gets clicked. Use-case: The user might have clicked an outline item,\n\t\t// scrolled a little bit (the scrolling logic decided another heading is active), then clicked the same\n\t\t// item again. That didn't change the range in the model (DocumentOutlineUtils#activeItemIndex) but the\n\t\t// original item must be marked active again. What the user meant is always top priority.\n\t\tthis._setActiveViewItem( index );\n\t}\n\n\t/**\n\t * Reacts to document (window) scroll and resize DOM events and updates the active outline items accordingly.\n\t *\n\t * The outline item is considered active if it is located above the upper 25% DOM visible root height. Keep in mind\n\t * that the heading can be displayed off the screen. See unit tests to learn more about the use-cases.\n\t *\n\t * ```\n\t * ┌────────────────────────────────────────────────────┐ -------------------------------\n\t * │ DOM root │ ▲\n\t * │ │ │\n\t * │ │ │\n\t * │ │ │\n\t * │ ┌────────────────────────────────────────────┐ │ │\n\t * │ │ Heading A (off screen) │ │ │ The bottom-most heading\n\t * │ └────────────────────────────────────────────┘ │ │ in this range is active\n\t * │ │ │ (\"Heading B\").\n\t * ┌──┼────────────────────────────────────────────────────┼──┬─┐ ---------- │\n\t * │ │ │ │▲│ ▲ │\n\t * │ │ ┌────────────────────────────────────────────┐ │ │ │ │ 25% of the │\n\t * │ │ │ Heading B │ │ │ │ │ visible root │\n\t * │ │ └────────────────────────────────────────────┘ │ │ │ ▼ ▼\n\t * -----------------------------------------------------------------------------------------------------\n\t * │ │ ┌────────────────────────────────────────────┐ │ │ │\n\t * │ │ │ Heading C │ │ │ │\n\t * │ │ └────────────────────────────────────────────┘ │ │█│\n\t * │ │ │ │█│\n\t * │ │ │ │ │\n\t * │ │ │ │ │\n\t * │ │ │ │ │\n\t * │ │ │ │ │\n\t * │ │ │ │ │\n\t * │ │ │ │ │\n\t * │ │ │ │ │\n\t * │ └────────────────────────────────────────────────────┘ │ │\n\t * │ │ │\n\t * │ │ │\n\t * │ │ │\n\t * │ Viewport │▼│\n\t * └──────────────────────────────────────────────────────────┴─┘\n\t * ```\n\t *\n\t * @internal\n\t */\n\tprivate _updateActiveDefinitionOnViewportChange(): void {\n\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // RectDrawer.clear();\n\n\t\tconst editor = this.editor;\n\t\tlet verticalThreshold: number | undefined;\n\n\t\tfor ( const rootName of editor.model.document.getRootNames() ) {\n\t\t\tconst domRoot = editor.editing.view.getDomRoot( rootName )!;\n\t\t\tconst visibleDomRootRect = new Rect( domRoot ).getVisible();\n\n\t\t\t// DOM root at least partially visible in ancestors.\n\t\t\tif ( visibleDomRootRect ) {\n\t\t\t\tconst viewportRect = new Rect( global.window );\n\t\t\t\tconst visibleDomRootViewportIntersectionRect = viewportRect.getIntersection( visibleDomRootRect );\n\n\t\t\t\t// DOM root at least partially visible in the viewport.\n\t\t\t\tif ( visibleDomRootViewportIntersectionRect ) {\n\t\t\t\t\tverticalThreshold = visibleDomRootViewportIntersectionRect.top + .25 * visibleDomRootViewportIntersectionRect.height;\n\n\t\t\t\t\t// Idea: How about `verticalThreshold = Math.max(100px, verticalThreshold)` to improve UX in very short editors?\n\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // RectDrawer.draw( visibleDomRootViewportIntersectionRect, {\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \toutlineWidth: '1px',\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \topacity: '.8'\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // }, 'Visible DOM root' );\n\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // RectDrawer.draw( new Rect( {\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \ttop: viewportRect.top,\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \tleft: viewportRect.left,\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \tright: viewportRect.right,\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \tbottom: verticalThreshold,\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \theight: verticalThreshold,\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \twidth: viewportRect.width\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // } ), {\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \toutlineWidth: '1px',\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \tbackground: 'green',\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \topacity: '.2'\n\t\t\t\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // }, 'Threshold area' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// The logic does not respond if a DOM root is not (at least partially) visible to the user.\n\t\tif ( verticalThreshold === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst activeDefinition = binaryActiveDefinitionSearch( editor.editing, this._currentOutlineDefinitions, verticalThreshold );\n\n\t\t// This can happen in a document with lots of paragraphs and then some heading at the bottom (far past the vertical threshold).\n\t\tif ( !activeDefinition ) {\n\t\t\tthis._setActiveViewItem( -1 );\n\t\t} else {\n\t\t\tthis._setActiveViewItem( this._currentOutlineDefinitions.indexOf( activeDefinition ) );\n\t\t}\n\t}\n}\n\n/**\n * Searches for the heading that is the closest to the vertical threshold so it can be considered\n * the active heading in the outline (see `_updateActiveDefinitionOnViewportChange()` to learn more).\n *\n * The search is recursive and binary to make sure the performance does not suffer (O(log n) instead of O(n))\n * when there are many headings in the document.\n *\n * It returns the active definition or null when none was found.\n */\nfunction binaryActiveDefinitionSearch(\n\tediting: EditingController,\n\tdefinitions: Array<OutlineItemDefinition>,\n\tverticalThreshold: number,\n\tlowDefinitionIndex = 0,\n\thighDefinitionIndex = definitions.length - 1\n): OutlineItemDefinition | null {\n\tconst midIndex = Math.floor( lowDefinitionIndex + ( highDefinitionIndex - lowDefinitionIndex ) / 2 );\n\n\tif ( highDefinitionIndex >= lowDefinitionIndex ) {\n\t\tconst definition = definitions[ midIndex ];\n\t\tconst viewElement = editing.mapper.toViewElement( definition.modelElement )!;\n\t\tconst headingDomElement = editing.view.domConverter.mapViewToDom( viewElement! )!;\n\t\tconst headingRect = new Rect( headingDomElement );\n\n\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // RectDrawer.draw( headingRect, {\n\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \toutlineWidth: '1px',\n\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \tbackground: 'gray',\n\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // \topacity: '.3'\n\t\t// @if CK_DEBUG_DOCUMENTOUTLINE // }, `H ${ definition.text.substring( 0, 20 ) }` );\n\n\t\tif ( headingRect.bottom > verticalThreshold ) {\n\t\t\treturn binaryActiveDefinitionSearch( editing, definitions, verticalThreshold, lowDefinitionIndex, midIndex - 1 );\n\t\t} else {\n\t\t\treturn binaryActiveDefinitionSearch( editing, definitions, verticalThreshold, midIndex + 1, highDefinitionIndex );\n\t\t}\n\t} else {\n\t\t// Null can be returned when, for instance, all headings are past the threshold: a document with lots of paragraphs\n\t\t// and then some heading at the bottom (far past the vertical threshold).\n\t\treturn midIndex < 0 ? null : definitions[ midIndex ];\n\t}\n}\n\n/* LICENSE_CHECKER_DEFINITION_PATTERN_START */\n\n// Scope for checking license key.\n//\n// Please, do not modify this file as its original content is located in the `cksource/ckeditor5-dev-private` repository\n// and all changes can be lost while preparing the CKEditor 5 packages to release.\n//\n// All string occurrences inside this function will be changed to the binary format to make them less readable.\n/* istanbul ignore next -- @preserve */\nfunction x8eE( pluginInstance: Plugin | ContextPlugin ): void {\n\t/* eslint-disable dot-notation, max-len, no-useless-computed-key, no-unexpected-multiline */\n\t/* MASK_STRING */\n\n\t( ( pluginInstance: Plugin | ContextPlugin ) => {\n\t\t/**\n\t\t * @internal\n\t\t */\n\t\tinterface DecodedLicense {\n\n\t\t\t/**\n\t\t\t * A permission mask that keeps the available features.\n\t\t\t */\n\t\t\tallowedPlugins: number;\n\n\t\t\t/**\n\t\t\t * Expiration date represented by a number with the following format: `YYYYMMDD`.\n\t\t\t */\n\t\t\texpirationDate: number;\n\n\t\t\t/**\n\t\t\t * If set to `0`, it represents a trial license. An editor usage is limited to operations or a time limit.\n\t\t\t */\n\t\t\tisTrial: number;\n\n\t\t\t/**\n\t\t\t * If set to `0`, it represents a non-internal license, used outside the CKEditor 5 documentation.\n\t\t\t */\n\t\t\tisInternal: number;\n\t\t}\n\n\t\t/**\n\t\t * @internal\n\t\t */\n\t\tinterface PluginConfig {\n\n\t\t\t/**\n\t\t\t * A unique feature ID. Based on that, a permission mask is generated automatically.\n\t\t\t */\n\t\t\tid: number;\n\n\t\t\t/**\n\t\t\t * A unique feature name. It is not used when securing a plugin.\n\t\t\t */\n\t\t\tfeatureName: string;\n\n\t\t\t/**\n\t\t\t * A unique plugin name where the license mechanism is injected.\n\t\t\t */\n\t\t\tpluginName: string;\n\n\t\t\t/**\n\t\t\t * The license verification mechanism sets an unknown property on an editor or a context\n\t\t\t * instance with a status of a given license key.\n\t\t\t *\n\t\t\t * This property describes a prefix for all messages. See the following examples:\n\t\t\t * \t\t* `licenseKey`: `licenseKeyInvalid`, `licenseKeyValid`, `licenseKeyTrialLimit:time`.\n\t\t\t * \t\t* `paginationLicenseKey`: `paginationLicenseKeyInvalid`, `paginationLicenseKeyValid`, ....\n\t\t\t *\n\t\t\t * These statuses are used in an interval function to display a message to the end-user\n\t\t\t * that a license key is invalid/expired/etc.\n\t\t\t */\n\t\t\tlicenseStatusPrefix: string;\n\n\t\t\t/**\n\t\t\t * A name of a function used to verify if a given license is allowed to enable the `pluginName` plugin.\n\t\t\t *\n\t\t\t * See the body of the `checkLicenseForPlugin()` function.\n\t\t\t */\n\t\t\thandler: string;\n\n\t\t\t/**\n\t\t\t * Generated automatically a permission mask based on the feature id. It is stored in the generated license and enables\n\t\t\t * the `pluginName` plugin in the editor.\n\t\t\t */\n\t\t\tpermissionMask?: number;\n\n\t\t\t/**\n\t\t\t * An optional array containing a configuration of nested features that should also be checked\n\t\t\t * while checking if the `featureName` feature is allowed.\n\t\t\t *\n\t\t\t * Nested features may not have their entry point in the licensing checker procedure\n\t\t\t * so that they may be checked within the scope of another feature. Regardless of how any\n\t\t\t * feature is checked, each can have its licensing handler.\n\t\t\t *\n\t\t\t * @defaultValue []\n\t\t\t */\n\t\t\tcheckAlso?: Array<PluginConfig>;\n\n\t\t\t/**\n\t\t\t * @defaultValue {}\n\t\t\t */\n\t\t\toptions?: {\n\n\t\t\t\t/**\n\t\t\t\t * Full name: \"allowIfWebSocketGatewayIsConnected\".\n\t\t\t\t *\n\t\t\t\t * The license is not checked on a client machine when set to `true`.\n\t\t\t\t * Instead, Cloud Services verifies it when a client sends an operation to the server, e.g., typing in RTC.\n\t\t\t\t *\n\t\t\t\t * @defaultValue false\n\t\t\t\t */\n\t\t\t\taiwsgic?: boolean;\n\n\t\t\t\t/**\n\t\t\t\t * Full name: \"allowIfTrackChangesDataGetterIsLoaded\".\n\t\t\t\t *\n\t\t\t\t * A flag whether to allow the feature even without entering a license key,\n\t\t\t\t * if a special fake `TrackChangesDataGetter` class exists.\n\t\t\t\t *\n\t\t\t\t * @defaultValue false\n\t\t\t\t */\n\t\t\t\taitcdgil?: boolean;\n\t\t\t};\n\t\t}\n\n\t\tfunction getPremiumFeaturesConfig(): Array<PluginConfig> {\n\t\t\t// Computed keys allow obfuscating properties in the configuration object making everything much harder to decrypt.\n\t\t\t// At least, visually.\n\t\t\tconst config = [\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 1,\n\t\t\t\t\t[ 'featureName' ]: 'Comments',\n\t\t\t\t\t[ 'pluginName' ]: 'CommentsRepository',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'licenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense',\n\t\t\t\t\t[ 'checkAlso' ]: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[ 'id' ]: 2,\n\t\t\t\t\t\t\t[ 'featureName' ]: 'Track Changes',\n\t\t\t\t\t\t\t[ 'pluginName' ]: 'TrackChangesEditing',\n\t\t\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'licenseKey',\n\t\t\t\t\t\t\t[ 'handler' ]: 'checkLicenseForTrackChanges',\n\t\t\t\t\t\t\t[ 'options' ]: {\n\t\t\t\t\t\t\t\t[ 'aiwsgic' ]: true,\n\t\t\t\t\t\t\t\t[ 'aitcdgil' ]: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t[ 'options' ]: {\n\t\t\t\t\t\t[ 'aiwsgic' ]: true,\n\t\t\t\t\t\t[ 'aitcdgil' ]: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 3,\n\t\t\t\t\t[ 'featureName' ]: 'Pagination',\n\t\t\t\t\t[ 'pluginName' ]: 'PaginationLookup',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'paginationLicenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 4,\n\t\t\t\t\t[ 'featureName' ]: 'Revision History',\n\t\t\t\t\t[ 'pluginName' ]: 'RevisionsRepository',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'licenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicenseForRevisionHistory',\n\t\t\t\t\t[ 'options' ]: {\n\t\t\t\t\t\t[ 'aiwsgic' ]: true,\n\t\t\t\t\t\t[ 'aitcdgil' ]: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 5,\n\t\t\t\t\t[ 'featureName' ]: 'Document Outline',\n\t\t\t\t\t[ 'pluginName' ]: 'DocumentOutlineUI',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'documentOutlineLicenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 6,\n\t\t\t\t\t[ 'featureName' ]: 'Format Painter',\n\t\t\t\t\t[ 'pluginName' ]: 'FormatPainterUI',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'formatPainterLicenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 7,\n\t\t\t\t\t[ 'featureName' ]: 'Slash Command',\n\t\t\t\t\t[ 'pluginName' ]: 'SlashCommandUI',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'slashCommandLicenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 8,\n\t\t\t\t\t[ 'featureName' ]: 'Table of Contents',\n\t\t\t\t\t[ 'pluginName' ]: 'TableOfContentsEditing',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'tableOfContentsLicenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 9,\n\t\t\t\t\t[ 'featureName' ]: 'Template',\n\t\t\t\t\t[ 'pluginName' ]: 'TemplateUI',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'templateLicenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense'\n\t\t\t\t}\n\t\t\t];\n\n\t\t\taddPermissionMask( config );\n\n\t\t\treturn config;\n\n\t\t\t// Permission mask is a number, which in binary format defines features that are allowed (bit is set) and features that are not allowed\n\t\t\t// (bit is not set). Each feature occupies one bit position. Bit positions are counted from 0 but feature ids are counted from 1.\n\t\t\t// To calculate the permission mask, shift the bit corresponding to the given feature to the left by the appropriate number of places.\n\t\t\tfunction getPermissionMaskForId( id: number ): number {\n\t\t\t\treturn 1 << ( id - 1 );\n\t\t\t}\n\n\t\t\tfunction addPermissionMask( config: Array<PluginConfig> ) {\n\t\t\t\tconfig[ 'forEach' ]( feature => {\n\t\t\t\t\tfeature[ 'permissionMask' ] = getPermissionMaskForId( feature[ 'id' ] );\n\n\t\t\t\t\tif ( feature[ 'checkAlso' ] ) {\n\t\t\t\t\t\taddPermissionMask( feature[ 'checkAlso' ] );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tconst rawAesKey1 = [ 1, 85, 78, 115, 198, 255, 50, 112, 83, 87, 161 ];\n\n\t\tconst rawAesKey3 = [ 127, 34, 6, 211, 167, 86, 146, 199, 132, 160, 18 ];\n\n\t\t// Decrypts license key using raw aes key that is stored in the code (split into the 3 parts).\n\t\t//\n\t\t// License key is a Base64 that contains encrypted data and initialization vector (last 12 characters of the decoded string)\n\t\t// Each license key has its own initialization vector that has been used for the encryption process and needs\n\t\t// to be extracted from the key and used for the decryption process as well.\n\t\tfunction decryptLicenseKey( base64LicenseKey: string ): string {\n\t\t\t// The second part of the raw aes key. Will be used to for decrypting license key.\n\t\t\tconst rawAesKey2 = [ 29, 221, 175, 90, 231, 133, 239, 240, 75, 180 ];\n\n\t\t\t// Concat parts of the raw aes key into one binary array.\n\t\t\tconst rawAesKey = new Uint8Array( [ ...rawAesKey1, ...rawAesKey2, ...rawAesKey3 ] );\n\n\t\t\treturn decrypt( base64LicenseKey, rawAesKey );\n\t\t}\n\n\t\t// Decrypts license key. Returns JSON string with decrypted data.\n\t\tfunction decrypt( licenseKey: string, aesKey: Uint8Array ): string {\n\t\t\tconst encryptedString = getKey( licenseKey );\n\t\t\tconst encryptedArray = Array[ 'from' ]( stringToArray( encryptedString ) );\n\n\t\t\tconst saltByte2 = encryptedArray[ 'pop' ]()!;\n\t\t\tconst saltByte1 = encryptedArray[ 'pop' ]()!;\n\t\t\tconst counterValue = saltByte1 + saltByte2 * 256;\n\n\t\t\tconst jsonArray = aesCtr256( encryptedArray, aesKey, counterValue );\n\n\t\t\treturn arrayToString( jsonArray );\n\t\t}\n\n\t\t// Returns the license keys based on its format.\n\t\t// Read more: https://www.notion.so/Powered-by-CKEditor-e617fbad5a0f4df2a89f23aefc11ab1e.\n\t\tfunction getKey( licenseKey: string ): string {\n\t\t\tconst key = atob( licenseKey );\n\t\t\tconst [ license, date ] = key[ 'split' ]( '-' );\n\n\t\t\ttry {\n\t\t\t\tif ( atob( date ) ) {\n\t\t\t\t\t// New license.\n\t\t\t\t\treturn atob( license );\n\t\t\t\t}\n\t\t\t} catch ( err ) {\n\t\t\t\t// eslint-disable no-empty\n\t\t\t}\n\n\t\t\t// Old license.\n\t\t\treturn key;\n\t\t}\n\n\t\t// This is to verify if a user is allowed to use certain plugin based on license key that contains encoded data as\n\t\t// expiration date or plugin permissions.\n\t\t//\n\t\t// Validation is executed after a delay and a randomly named variable on `editor` is set as the result.\n\t\tconst premiumFeatures = getPremiumFeaturesConfig();\n\n\t\tconst premiumHandlers: Record<string, Function> = {\n\t\t\t[ 'checkLicense' ]: checkLicense,\n\t\t\t[ 'checkLicenseForTrackChanges' ]: checkLicenseForTrackChanges,\n\t\t\t[ 'checkLicenseForRevisionHistory' ]: checkLicenseForRevisionHistory\n\t\t};\n\n\t\tconst pluginName = ( pluginInstance[ 'constructor' ] as PluginConstructor )[ 'pluginName' ];\n\n\t\tconst editorOrContext = 'context' in pluginInstance ?\n\t\t\tpluginInstance.context as Context :\n\t\t\tpluginInstance.editor as Editor;\n\n\t\t// Plugin release date, which is used for validation purpose.\n\t\t// The release date is calculated and inserted automatically by the license injector script.\n\t\t// See \"src/licensing/injector/index.ts\" (`ckeditor5-dev-private`).\n\t\t//\n\t\t// DO NOT CHANGE THE LINE BELOW!\n\t\tconst featureReleaseDate = /* LICENSE_CHECKER_RELEASE_DATE_PATTERN_START */ '40461044'; /* LICENSE_CHECKER_RELEASE_DATE_PATTERN_END */\n\n\t\tconst alphanumericString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n\t\tconst licenseKey = editorOrContext.config.get( 'licenseKey' ) as string;\n\n\t\tconst pluginConfig = premiumFeatures[ 'find' ]( feature => feature[ 'pluginName' ] === pluginName );\n\n\t\t// If the plugin configuration is found, execute its license handler.\n\t\tif ( pluginConfig ) {\n\t\t\tcheckLicenseForPlugin( decodeLicenseKey( licenseKey ), pluginConfig );\n\t\t}\n\n\t\tfunction checkLicenseForPlugin( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): void {\n\t\t\tpremiumHandlers[ pluginConfig[ 'handler' ] ]( decodedLicense, pluginConfig );\n\n\t\t\tif ( pluginConfig[ 'checkAlso' ] ) {\n\t\t\t\tpluginConfig[ 'checkAlso' ]\n\t\t\t\t\t[ 'filter' ]( pluginConfig => hasPlugin( editorOrContext, pluginConfig[ 'pluginName' ] ) )\n\t\t\t\t\t[ 'forEach' ]( pluginConfig => checkLicenseForPlugin( decodedLicense, pluginConfig ) );\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Tries to decode the license.\n\t\t */\n\t\tfunction decodeLicenseKey( licenseKey: string ): DecodedLicense | null {\n\t\t\ttry {\n\t\t\t\tconst decryptedKey = decryptLicenseKey( licenseKey );\n\t\t\t\tconst data = JSON[ 'parse' ]( decryptedKey );\n\t\t\t\tconst expirationDate = parseInt( data[ '1' ] );\n\t\t\t\tconst isTrial = parseInt( data[ '3' ] );\n\t\t\t\tconst allowedPlugins = parseInt( data[ '4' ] ) || 0;\n\t\t\t\tconst isInternal = parseInt( data[ '5' ] ) || 0;\n\n\t\t\t\treturn {\n\t\t\t\t\t[ 'allowedPlugins' ]: allowedPlugins,\n\t\t\t\t\t[ 'expirationDate' ]: expirationDate,\n\t\t\t\t\t[ 'isTrial' ]: isTrial,\n\t\t\t\t\t[ 'isInternal' ]: isInternal\n\t\t\t\t};\n\t\t\t} catch ( e ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tfunction checkLicense( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): void {\n\t\t\tconst licenseStatus = getLicenseStatus( decodedLicense, pluginConfig );\n\n\t\t\thandleLicenseStatus( licenseStatus, pluginConfig );\n\t\t}\n\n\t\tfunction checkLicenseForTrackChanges( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): void {\n\t\t\tconst licenseStatus = getLicenseStatusForTrackChanges( decodedLicense, pluginConfig );\n\n\t\t\thandleLicenseStatus( licenseStatus, pluginConfig );\n\n\t\t\tfunction getLicenseStatusForTrackChanges( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): string {\n\t\t\t\ttry {\n\t\t\t\t\t// Check if subscription does not expire for the TrackChanges plugin.\n\t\t\t\t\tif ( hasPlugin( editorOrContext, 'TrackChangesEditing' ) && decodedLicense ) {\n\t\t\t\t\t\tconst executeSuggestion = getPlugin( editorOrContext, 'TrackChangesEditing' )[ '_executeSuggestion' ];\n\n\t\t\t\t\t\t// Release date is multiplied by 2 to make it less readable.\n\t\t\t\t\t\tif ( ( parseInt( executeSuggestion ) / 2 ) > decodedLicense[ 'expirationDate' ] ) {\n\t\t\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn getLicenseStatus( decodedLicense, pluginConfig );\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction checkLicenseForRevisionHistory( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): void {\n\t\t\tconst lkTrialTimeCheckString = rawAesKey3[ 0 ] * rawAesKey1[ 1 ];\n\t\t\tconst lkTrialRevisionsCheckString = rawAesKey3[ 0 ] * rawAesKey1[ 2 ];\n\t\t\tconst lkWsgCheckString = rawAesKey3[ 2 ] * rawAesKey1[ 2 ];\n\n\t\t\tif ( hasPlugin( editorOrContext, 'WebSocketGateway' ) ) {\n\t\t\t\tif ( getPlugin( editorOrContext, 'WebSocketGateway' )[ 'state' ] == 'connected' ) {\n\t\t\t\t\t( window[ getRandomVariableName() as any ] as any ) = lkWsgCheckString;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst licenseStatus = getLicenseStatusForRevisionHistory( decodedLicense, pluginConfig );\n\n\t\t\thandleLicenseStatusForRevisionHistory( licenseStatus, pluginConfig );\n\n\t\t\tfunction getLicenseStatusForRevisionHistory( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): string {\n\t\t\t\ttry {\n\t\t\t\t\tif ( checkAlreadyEnabled() ) {\n\t\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Valid' );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn getLicenseStatus( decodedLicense, pluginConfig );\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction handleLicenseStatusForRevisionHistory( status: string, pluginConfig: PluginConfig ): void {\n\t\t\t\tconst revisionsLimit = 7; // Initial + current + 5 revisions.\n\n\t\t\t\tif ( status == pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' ) {\n\t\t\t\t\t// Disable the editor.\n\t\t\t\t\tdisableEditor();\n\t\t\t\t} else if ( status == pluginConfig[ 'licenseStatusPrefix' ] + 'Trial' ) {\n\t\t\t\t\tconst isDisabled = checkAlreadyDisabledTrial();\n\n\t\t\t\t\tif ( isDisabled ) {\n\t\t\t\t\t\tdisableTrial( isDisabled, pluginConfig[ 'licenseStatusPrefix' ] );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Time limit.\n\t\t\t\t\tconst time = getTimeLimit();\n\n\t\t\t\t\twindow[ 'setTimeout' ]( () => {\n\t\t\t\t\t\tdisableTrial( 'time', pluginConfig[ 'licenseStatusPrefix' ] );\n\t\t\t\t\t}, time );\n\n\t\t\t\t\t// Revisions limit.\n\t\t\t\t\tconst revisions = getPlugin( editorOrContext, 'RevisionsRepository' )[ '_revisions' ];\n\n\t\t\t\t\tif ( revisions[ 'length' ] >= revisionsLimit ) {\n\t\t\t\t\t\tdisableTrial( 'revisions', pluginConfig[ 'licenseStatusPrefix' ] );\n\t\t\t\t\t} else {\n\t\t\t\t\t\trevisions.on( 'add', () => {\n\t\t\t\t\t\t\tif ( revisions[ 'length' ] >= revisionsLimit ) {\n\t\t\t\t\t\t\t\tdisableTrial( 'revisions', pluginConfig[ 'licenseStatusPrefix' ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction checkAlreadyDisabledTrial(): false | string {\n\t\t\t\tif ( !hasPlugin( editorOrContext, 'RevisionViewer' ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tfor ( const i in window ) {\n\t\t\t\t\t// Prevent accessing iframe by accident. See https://github.com/cksource/collaboration-features/issues/4370.\n\t\t\t\t\t// Frames are under string properties that are consecutive numbers, i.e., '0', '1', '2', etc.\n\t\t\t\t\t// Our \"random property name\" will always have some characters, so it will be `NaN` after converting to a number.\n\t\t\t\t\tif ( !Number.isNaN( Number( i ) ) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( window[ i ] as any === lkTrialTimeCheckString ) {\n\t\t\t\t\t\treturn 'time';\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( window[ i ] as any === lkTrialRevisionsCheckString ) {\n\t\t\t\t\t\treturn 'revisions';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfunction checkAlreadyEnabled(): boolean {\n\t\t\t\tif ( !hasPlugin( editorOrContext, 'RevisionViewer' ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tfor ( const i in window ) {\n\t\t\t\t\t// Prevent accessing iframe by accident. See https://github.com/cksource/collaboration-features/issues/4370.\n\t\t\t\t\tif ( !Number.isNaN( Number( i ) ) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( window[ i ] as any === lkWsgCheckString ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfunction disableTrial( reason: string, prefix: string ): void {\n\t\t\t\tdisableEditor();\n\t\t\t\tgenerateLicenseKeyVariable( prefix + 'TrialLimit:' + reason );\n\n\t\t\t\t( window[ getRandomVariableName() as any ] as any ) = reason === 'time' ? lkTrialTimeCheckString : lkTrialRevisionsCheckString;\n\t\t\t}\n\n\t\t\tfunction getTimeLimit(): number {\n\t\t\t\tlet limit = rawAesKey3[ 6 ] * rawAesKey1[ 8 ] * rawAesKey1[ 6 ]; // 146 * 83 * 50 = 605900 ~ ten minutes.\n\n\t\t\t\tif ( hasPlugin( editorOrContext, 'RevisionViewer' ) ) {\n\t\t\t\t\tlimit = limit / 10; // ~ 1 minute.\n\t\t\t\t}\n\n\t\t\t\treturn limit;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Disables the key editor method and marks the editor as blocked.\n\t\t\t */\n\t\t\tfunction disableEditor(): void {\n\t\t\t\tconst editor = editorOrContext as Editor;\n\n\t\t\t\tif ( editor[ 'state' ] == 'ready' ) {\n\t\t\t\t\t_disable();\n\t\t\t\t} else {\n\t\t\t\t\teditor[ 'once' ]( 'ready', () => {\n\t\t\t\t\t\tif ( hasPlugin( editor, 'RevisionTracker' ) ) {\n\t\t\t\t\t\t\t_disable();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasPlugin( editor, 'RevisionViewer' ) ) {\n\t\t\t\t\t\t\tconst repo = getPlugin( editor, 'RevisionsRepository' );\n\t\t\t\t\t\t\tconst v1 = repo.getRevision( 0 );\n\t\t\t\t\t\t\tconst v2 = repo.getEarlierVisibleRevision( v1[ 'id' ] );\n\n\t\t\t\t\t\t\tgetPlugin( editor, 'RevisionViewer' )[ 'compare' ]( v1[ 'id' ], v2 ? v2[ 'id' ] : null, 1 )\n\t\t\t\t\t\t\t\t.then( () => _disable() );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * @internal\n\t\t\t\t */\n\t\t\t\tfunction _disable(): void {\n\t\t\t\t\tif ( hasPlugin( editor, 'RevisionTracker' ) ) {\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionTracker' )[ 'unbind' ]( 'isEnabled' );\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionTracker' )[ 'isEnabled' ] = false;\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionTracker' )[ 'update' ] = emptyFunc;\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionTracker' )[ 'saveRevision' ] = emptyFunc;\n\n\t\t\t\t\t\teditor[ 'model' ][ 'change' ] = emptyFunc as any;\n\t\t\t\t\t\teditor[ 'model' ][ 'enqueueChange' ] = emptyFunc as any;\n\n\t\t\t\t\t\t// A random, not easy to find lock name.\n\t\t\t\t\t\teditor[ 'enableReadOnlyMode' ]( 'model' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasPlugin( editor, 'RevisionViewer' ) ) {\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionViewer' )[ 'unbind' ]( 'isEnabled' );\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionViewer' )[ 'isEnabled' ] = false;\n\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionViewer' )[ 'compare' ] = emptyFunc;\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionViewer' )[ '_getDiff' ] = emptyFunc;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks if license key is valid, i.e. whether the premium feature is allowed to be used.\n\t\t */\n\t\tfunction getLicenseStatus( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): string {\n\t\t\ttry {\n\t\t\t\t// Check if the feature is allowed even without providing the license key.\n\t\t\t\tif ( isPluginAllowedWithoutLicense( pluginConfig ) ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Valid' );\n\t\t\t\t}\n\n\t\t\t\t// Check if the license has been encoded correctly.\n\t\t\t\tif ( !decodedLicense ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t}\n\n\t\t\t\t// Check if the features used in the build are allowed.\n\t\t\t\tif ( !isPluginAllowedByLicense( decodedLicense[ 'allowedPlugins' ], pluginConfig ) ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t}\n\n\t\t\t\t// Check if the build is used in our internal code and if it is used properly.\n\t\t\t\tif ( decodedLicense[ 'isInternal' ] ) {\n\t\t\t\t\tif ( !( window as any )[ 'open' ][ 'closed' ] ) {\n\t\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Check if subscription does not expire for the Comments plugin.\n\t\t\t\t// Release date is multiplied by 2 to make it less readable.\n\t\t\t\tif ( ( parseInt( featureReleaseDate ) / 2 ) > decodedLicense[ 'expirationDate' ] ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t}\n\n\t\t\t\t// Check if subscription is for a trial.\n\t\t\t\tif ( decodedLicense[ 'isTrial' ] ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Trial' );\n\t\t\t\t}\n\n\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Valid' );\n\t\t\t} catch ( e ) {\n\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t}\n\t\t}\n\n\t\tfunction handleLicenseStatus( status: string, pluginConfig: PluginConfig ): void {\n\t\t\tconst isContext = editorOrContext instanceof Context;\n\n\t\t\tif ( isContext ) {\n\t\t\t\tconst context = editorOrContext;\n\n\t\t\t\t// If we are operating in `Context` then use time to limit how long the editor is operating\n\t\t\t\t// and disable all the editors and `CommentsRepository` at the same time.\n\t\t\t\tif ( status == pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' ) {\n\t\t\t\t\tdisableContext( context );\n\t\t\t\t} else if ( status == pluginConfig[ 'licenseStatusPrefix' ] + 'Trial' ) {\n\t\t\t\t\twindow[ 'setTimeout' ]( () => {\n\t\t\t\t\t\tdisableContext( context );\n\t\t\t\t\t\tgenerateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'TrialLimit:time' );\n\t\t\t\t\t}, rawAesKey3[ 6 ] * rawAesKey1[ 8 ] * rawAesKey1[ 6 ] ); // 146 * 83 * 50 = 605900 ~ ten minutes.\n\t\t\t\t}\n\n\t\t\t\t// When a new editor is added to the context, disable it, if needed.\n\t\t\t\tcontext[ 'editors' ][ 'on' ]( 'add', ( evt, newEditor ) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tstatus == pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' ||\n\t\t\t\t\t\tstatus == pluginConfig[ 'licenseStatusPrefix' ] + 'TrialLimit:time' ||\n\t\t\t\t\t\tstatus == pluginConfig[ 'licenseStatusPrefix' ] + 'TrialLimit:operations'\n\t\t\t\t\t) {\n\t\t\t\t\t\tdisableEditor( newEditor );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tconst editor = editorOrContext;\n\n\t\t\t\tif ( status == pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' ) {\n\t\t\t\t\t// Disable just the editor.\n\t\t\t\t\tdisableEditor( editor );\n\t\t\t\t} else if ( status == pluginConfig[ 'licenseStatusPrefix' ] + 'Trial' ) {\n\t\t\t\t\t// If we are operating in `Editor` then use number of operations to put the editor in the read-only mode.\n\t\t\t\t\teditor[ 'on' ]( 'ready', () => {\n\t\t\t\t\t\tlet operationsCounter = 0;\n\n\t\t\t\t\t\teditor[ 'model' ][ 'on' ]( 'applyOperation', ( evt: any, args: Record<string, any> ) => {\n\t\t\t\t\t\t\tif ( args[ 0 ][ 'isDocumentOperation' ] ) {\n\t\t\t\t\t\t\t\toperationsCounter++;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( operationsCounter === 28 * 18 ) {\n\t\t\t\t\t\t\t\tdisableEditor( editor );\n\t\t\t\t\t\t\t\tgenerateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'TrialLimit:operations' );\n\t\t\t\t\t\t\t\tevt[ 'off' ]();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, { priority: 'highest' } );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction generateLicenseKeyVariable( status: string ): string {\n\t\t\tconst varName = getRandomVariableName();\n\n\t\t\t( editorOrContext as Editor & Record<string, string> )[ varName ] = status;\n\n\t\t\treturn status;\n\t\t}\n\n\t\tfunction getRandomVariableName(): string {\n\t\t\tconst intAsString = String( window[ 'performance' ][ 'now' ]() )[ 'replace' ]( '.', '' );\n\t\t\tlet varName = '';\n\n\t\t\tfor ( let i = 0; i < intAsString[ 'length' ]; i += 2 ) {\n\t\t\t\tlet randomNumber = parseInt( intAsString[ 'substring' ]( i, i + 2 ) );\n\n\t\t\t\tif ( randomNumber >= alphanumericString[ 'length' ] ) {\n\t\t\t\t\trandomNumber -= alphanumericString[ 'length' ];\n\t\t\t\t}\n\n\t\t\t\t// Limit characters only to a-z (65-90) and 0-9 (48-59).\n\t\t\t\tvarName += alphanumericString[ randomNumber ];\n\t\t\t}\n\n\t\t\treturn varName;\n\t\t}\n\n\t\tfunction disableContext( context: Context ): void {\n\t\t\tfor ( const editor of context[ 'editors' ] ) {\n\t\t\t\tdisableEditor( editor );\n\t\t\t}\n\n\t\t\tgetPlugin( context, 'CommentsRepository' )[ 'switchReadOnly' ]( true );\n\t\t\tgetPlugin( context, 'CommentsRepository' )[ 'switchReadOnly' ] = emptyFunc;\n\t\t}\n\n\t\tfunction disableEditor( editor: Editor ): void {\n\t\t\tif ( editor[ 'state' ] == 'ready' ) {\n\t\t\t\t_disable();\n\t\t\t} else {\n\t\t\t\teditor[ 'once' ]( 'ready', () => _disable() );\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * @internal\n\t\t\t */\n\t\t\tfunction _disable(): void {\n\t\t\t\teditor[ 'model' ][ 'change' ] = emptyFunc as any;\n\t\t\t\teditor[ 'model' ][ 'enqueueChange' ] = emptyFunc as any;\n\n\t\t\t\teditor[ 'enableReadOnlyMode' ]( 'model' );\n\t\t\t}\n\t\t}\n\n\t\tfunction emptyFunc(): null {\n\t\t\treturn null;\n\t\t}\n\n\t\tfunction isPluginAllowedByLicense( allowedPluginsMask: number, pluginConfig: PluginConfig ): boolean {\n\t\t\treturn !!( allowedPluginsMask & pluginConfig[ 'permissionMask' ]! );\n\t\t}\n\n\t\tfunction isPluginAllowedWithoutLicense( pluginConfig: PluginConfig ): boolean {\n\t\t\tconst isPluginLoaded = hasPlugin( editorOrContext, pluginConfig[ 'pluginName' ] );\n\n\t\t\tif ( !isPluginLoaded ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst options = pluginConfig[ 'options' ] || {};\n\t\t\tconst v0aiwsgic = options[ 'aiwsgic' ] || false;\n\t\t\tconst v0aitcdgil = options[ 'aitcdgil' ] || false;\n\n\t\t\t// isWebSocketGatewayConnected\n\t\t\tconst x0iswsgc =\n\t\t\t\thasPlugin( editorOrContext, 'WebSocketGateway' ) &&\n\t\t\t\tgetPlugin( editorOrContext, 'WebSocketGateway' )[ 'state' ] == 'connected';\n\n\t\t\t// Do not check the license key when the CS RealTimeCollaborativeEditing is enabled.\n\t\t\tif ( x0iswsgc && v0aiwsgic ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// isTrackChangesDataGetterLoaded\n\t\t\tconst x0itcdgl =\n\t\t\t\thasPlugin( editorOrContext, 'TrackChangesDataGetter' ) &&\n\t\t\t\tgetPlugin( editorOrContext, 'TrackChangesDataGetter' )[ 'result' ] == 'end';\n\n\t\t\t// Do not check the license key when the fake TrackChangesDataGetter plugin is enabled.\n\t\t\t// It is used by a virtual editor of the TrackChangedData plugin.\n\t\t\tif ( x0itcdgl && v0aitcdgil ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction hasPlugin( editorOrContext: Editor | Context, pluginName: string ): boolean {\n\t\t\treturn editorOrContext[ 'plugins' ][ 'has' ]( pluginName );\n\t\t}\n\n\t\tfunction getPlugin( editorOrContext: Editor | Context, pluginName: string ): any {\n\t\t\treturn editorOrContext[ 'plugins' ][ 'get' ]( pluginName );\n\t\t}\n\n\t\t// Converts array with bytes into a `String`.\n\t\tfunction arrayToString( value: Array<number> ): string {\n\t\t\tlet string = '';\n\n\t\t\tfor ( const byte of value ) {\n\t\t\t\tstring += String[ 'fromCharCode' ]( byte );\n\t\t\t}\n\n\t\t\treturn string;\n\t\t}\n\t\t// Converts string into `Uint8Array` containing characters as bytes.\n\t\tfunction stringToArray( value: string ): Uint8Array {\n\t\t\tconst bytes = new Uint8Array( value[ 'length' ] );\n\n\t\t\tfor ( let i = 0; i < value[ 'length' ]; i++ ) {\n\t\t\t\tbytes[ i ] = value[ 'charCodeAt' ]( i );\n\t\t\t}\n\n\t\t\treturn bytes;\n\t\t}\n\t} )( pluginInstance );\n\n\tfunction aesCtr256( messageBytes: Array<number>, aesKey: Uint8Array, counterValue: number ): Array<number> {\n\t\t//\n\t\t// Defining some constants used by AES.\n\t\t//\n\t\tconst AESConstants: Record<string, any> = {};\n\n\t\tAESConstants[ 'numberOfRounds' ] = { 16: 10, 24: 12, 32: 14 };\n\n\t\t/* eslint-disable max-len */\n\n\t\t// Round constant words\n\t\tAESConstants[ 'rcon' ] = [ 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91 ];\n\n\t\t// S-box\n\t\tAESConstants[ 'S' ] = [ 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 ];\n\n\t\t// Transformations for encryption\n\t\tAESConstants[ 'T1' ] = [ 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a ];\n\t\tAESConstants[ 'T2' ] = [ 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616 ];\n\t\tAESConstants[ 'T3' ] = [ 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16 ];\n\t\tAESConstants[ 'T4' ] = [ 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c ];\n\n\t\t// Transformations for decryption key expansion\n\t\tAESConstants[ 'U1' ] = [ 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3 ];\n\t\tAESConstants[ 'U2' ] = [ 0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697 ];\n\t\tAESConstants[ 'U3' ] = [ 0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46 ];\n\t\tAESConstants[ 'U4' ] = [ 0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d ];\n\n\t\t/* eslint-enable max-len */\n\n\t\t//\n\t\t// AES init and encryption algorithm init.\n\t\t//\n\t\tconst counter = new Uint8Array( 16 );\n\n\t\tfor ( let index = 15; index >= 0; --index ) {\n\t\t\tcounter[ index ] = counterValue % 256;\n\n\t\t\tcounterValue = parseInt( ( counterValue / 256 ) as any );\n\t\t}\n\n\t\tlet remainingCounter: Uint8Array | null = null;\n\t\tlet remainingCounterIndex = 16;\n\n\t\tconst key = new Uint8Array( aesKey );\n\t\tconst _Ke: Array<Array<number>> = [];\n\t\tconst _Kd: Array<Array<number>> = [];\n\n\t\tprepareAes();\n\n\t\t//\n\t\t// Actual encryption algorithm.\n\t\t//\n\t\tfor ( let i = 0; i < messageBytes[ 'length' ]; i++ ) {\n\t\t\tif ( remainingCounterIndex === 16 ) {\n\t\t\t\tremainingCounter = encrypt( counter );\n\t\t\t\tremainingCounterIndex = 0;\n\n\t\t\t\tincrementCounter( counter );\n\t\t\t}\n\n\t\t\tmessageBytes[ i ] ^= remainingCounter![ remainingCounterIndex++ ];\n\t\t}\n\n\t\treturn messageBytes;\n\n\t\t//\n\t\t// Defining functions used in the algorithm.\n\t\t//\n\t\tfunction convertToInt32( bytes: Uint8Array ) {\n\t\t\tconst result: Array<any> = [];\n\n\t\t\tfor ( let i = 0; i < bytes[ 'length' ]; i += 4 ) {\n\t\t\t\tresult[ 'push' ](\n\t\t\t\t\t( bytes[ i ] << 24 ) |\n\t\t\t\t\t( bytes[ i + 1 ] << 16 ) |\n\t\t\t\t\t( bytes[ i + 2 ] << 8 ) |\n\t\t\t\t\tbytes[ i + 3 ]\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tfunction incrementCounter( counter: Uint8Array ) {\n\t\t\tfor ( let i = 15; i >= 0; i-- ) {\n\t\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\t\tif ( counter[ i ] === 255 ) {\n\t\t\t\t\tcounter[ i ] = 0;\n\t\t\t\t} else {\n\t\t\t\t\tcounter[ i ]++;\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction encrypt( message: Uint8Array ) {\n\t\t\tconst rounds = _Ke[ 'length' ] - 1;\n\t\t\tconst a = [ 0, 0, 0, 0 ];\n\n\t\t\tlet t = convertToInt32( message );\n\n\t\t\tfor ( let i = 0; i < 4; i++ ) {\n\t\t\t\tt[ i ] ^= _Ke[ 0 ][ i ];\n\t\t\t}\n\n\t\t\tfor ( let r = 1; r < rounds; r++ ) {\n\t\t\t\tfor ( let i = 0; i < 4; i++ ) {\n\t\t\t\t\ta[ i ] = (\n\t\t\t\t\t\tAESConstants[ 'T1' ][ ( t[ i ] >> 24 ) & 0xff ] ^\n\t\t\t\t\t\tAESConstants[ 'T2' ][ ( t[ ( i + 1 ) % 4 ] >> 16 ) & 0xff ] ^\n\t\t\t\t\t\tAESConstants[ 'T3' ][ ( t[ ( i + 2 ) % 4 ] >> 8 ) & 0xff ] ^\n\t\t\t\t\t\tAESConstants[ 'T4' ][ t[ ( i + 3 ) % 4 ] & 0xff ] ^\n\t\t\t\t\t\t_Ke[ r ][ i ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tt = a[ 'slice' ]();\n\t\t\t}\n\n\t\t\tconst result = new Uint8Array( 16 );\n\t\t\tlet tt;\n\n\t\t\tfor ( let i = 0; i < 4; i++ ) {\n\t\t\t\ttt = _Ke[ rounds ][ i ];\n\n\t\t\t\tresult[ 4 * i ] = ( AESConstants[ 'S' ][ ( t[ i ] >> 24 ) & 0xff ] ^ ( tt >> 24 ) ) & 0xff;\n\t\t\t\tresult[ 4 * i + 1 ] = ( AESConstants[ 'S' ][ ( t[ ( i + 1 ) % 4 ] >> 16 ) & 0xff ] ^ ( tt >> 16 ) ) & 0xff;\n\t\t\t\tresult[ 4 * i + 2 ] = ( AESConstants[ 'S' ][ ( t[ ( i + 2 ) % 4 ] >> 8 ) & 0xff ] ^ ( tt >> 8 ) ) & 0xff;\n\t\t\t\tresult[ 4 * i + 3 ] = ( AESConstants[ 'S' ][ t[ ( i + 3 ) % 4 ] & 0xff ] ^ tt ) & 0xff;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\tfunction prepareAes() {\n\t\t\tconst rounds = AESConstants[ 'numberOfRounds' ][ key[ 'length' ] ];\n\n\t\t\tfor ( let i = 0; i <= rounds; i++ ) {\n\t\t\t\t_Ke[ 'push' ]( [ 0, 0, 0, 0 ] );\n\t\t\t\t_Kd[ 'push' ]( [ 0, 0, 0, 0 ] );\n\t\t\t}\n\n\t\t\tconst roundKeyCount = ( rounds + 1 ) * 4;\n\t\t\tconst KC = key[ 'length' ] / 4;\n\n\t\t\tconst tk = convertToInt32( key );\n\n\t\t\tlet index;\n\n\t\t\tfor ( let i = 0; i < KC; i++ ) {\n\t\t\t\tindex = i >> 2;\n\n\t\t\t\t_Ke[ index ][ i % 4 ] = tk[ i ];\n\t\t\t\t_Kd[ rounds - index ][ i % 4 ] = tk[ i ];\n\t\t\t}\n\n\t\t\tlet rconPointer = 0;\n\t\t\tlet t = KC;\n\t\t\tlet tt;\n\n\t\t\twhile ( t < roundKeyCount ) {\n\t\t\t\ttt = tk[ KC - 1 ];\n\n\t\t\t\ttk[ 0 ] ^= (\n\t\t\t\t\t( AESConstants[ 'S' ][ ( tt >> 16 ) & 0xFF ] << 24 ) ^\n\t\t\t\t\t( AESConstants[ 'S' ][ ( tt >> 8 ) & 0xFF ] << 16 ) ^\n\t\t\t\t\t( AESConstants[ 'S' ][ tt & 0xFF ] << 8 ) ^\n\t\t\t\t\t( AESConstants[ 'S' ][ ( tt >> 24 ) & 0xFF ] ) ^\n\t\t\t\t\t( AESConstants[ 'rcon' ][ rconPointer ] << 24 )\n\t\t\t\t);\n\n\t\t\t\trconPointer += 1;\n\n\t\t\t\tfor ( let i = 1; i < ( KC / 2 ); i++ ) {\n\t\t\t\t\ttk[ i ] ^= tk[ i - 1 ];\n\t\t\t\t}\n\n\t\t\t\ttt = tk[ ( KC / 2 ) - 1 ];\n\n\t\t\t\ttk[ KC / 2 ] ^= (\n\t\t\t\t\t( AESConstants[ 'S' ][ tt & 0xFF ] ) ^\n\t\t\t\t\t( AESConstants[ 'S' ][ ( tt >> 8 ) & 0xFF ] << 8 ) ^\n\t\t\t\t\t( AESConstants[ 'S' ][ ( tt >> 16 ) & 0xFF ] << 16 ) ^\n\t\t\t\t\t( AESConstants[ 'S' ][ ( tt >> 24 ) & 0xFF ] << 24 )\n\t\t\t\t);\n\n\t\t\t\tfor ( let i = ( KC / 2 ) + 1; i < KC; i++ ) {\n\t\t\t\t\ttk[ i ] ^= tk[ i - 1 ];\n\t\t\t\t}\n\n\t\t\t\tlet i = 0;\n\t\t\t\tlet r;\n\t\t\t\tlet c;\n\n\t\t\t\twhile ( i < KC && t < roundKeyCount ) {\n\t\t\t\t\tr = t >> 2;\n\t\t\t\t\tc = t % 4;\n\n\t\t\t\t\t_Ke[ r ][ c ] = tk[ i ];\n\t\t\t\t\t_Kd[ rounds - r ][ c ] = tk[ i++ ];\n\n\t\t\t\t\tt++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( let r = 1; r < rounds; r++ ) {\n\t\t\t\tfor ( let c = 0; c < 4; c++ ) {\n\t\t\t\t\ttt = _Kd[ r ][ c ];\n\n\t\t\t\t\t_Kd[ r ][ c ] = (\n\t\t\t\t\t\tAESConstants[ 'U1' ][ ( tt >> 24 ) & 0xFF ] ^\n\t\t\t\t\t\tAESConstants[ 'U2' ][ ( tt >> 16 ) & 0xFF ] ^\n\t\t\t\t\t\tAESConstants[ 'U3' ][ ( tt >> 8 ) & 0xFF ] ^\n\t\t\t\t\t\tAESConstants[ 'U4' ][ tt & 0xFF ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/* MASK_STRING_END */\n\t/* eslint-enable dot-notation, max-len, no-useless-computed-key, no-unexpected-multiline */\n}\n\n/* LICENSE_CHECKER_DEFINITION_PATTERN_END */\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module document-outline/documentoutline/documentoutlineutils\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { debounce } from 'lodash-es';\nimport { TreeWalker, type ViewElement, type Element, type DocumentChangeEvent } from 'ckeditor5/src/engine';\nimport { getElementText, getDefaultFeatureHeadingNames } from './utils';\nimport { diff, diffToChanges } from 'ckeditor5/src/utils';\n\n/**\n * Document outline utilities.\n */\nexport default class DocumentOutlineUtils extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName(): 'DocumentOutlineUtils' {\n\t\treturn 'DocumentOutlineUtils';\n\t}\n\n\t/**\n\t * A list of element names that will be considered as a heading in the document outline.\n\t *\n\t * @internal\n\t */\n\tprivate _headingNames: Array<string> = [];\n\n\t/**\n\t * Starts listening for editor events and handles them on the model document `change` event. This means both\n\t * changes to the structure of the document and changes to the selection are reflected in the outline.\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\tthis._headingNames = this._getHeadingNames();\n\n\t\tlet outlineDefinitions: Array<OutlineItemDefinition> = [];\n\n\t\teditor.model.document.on<DocumentChangeEvent>( 'change', debounce( () => {\n\t\t\tconst previousOutlineDefinitions = outlineDefinitions;\n\t\t\toutlineDefinitions = this._getOutlineDefinitions();\n\n\t\t\tconst outlineDiff = diff( previousOutlineDefinitions, outlineDefinitions, ( a, b ) => {\n\t\t\t\treturn a.level === b.level && a.text === b.text && a.modelElement === b.modelElement;\n\t\t\t} );\n\n\t\t\tconst outlineChanges = diffToChanges( outlineDiff, outlineDefinitions );\n\t\t\tconst activeHeading = this._getActiveHeading();\n\t\t\tconst activeItemIndex = outlineDefinitions.findIndex( outlineItem => outlineItem.modelElement === activeHeading );\n\n\t\t\tif ( outlineChanges.length ) {\n\t\t\t\tthis.fire<OutlineChangeEvent>( 'change', { outlineDefinitions, activeItemIndex, outlineChanges } );\n\t\t\t}\n\n\t\t\tthis.fire<ActiveOutlineItemChangeEvent>( 'activeItemIndex', { index: activeItemIndex } );\n\t\t}, 250, { leading: true, trailing: true } ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tif ( !this._headingNames.length ) {\n\t\t\t// If there's neither Heading or GHS plugin loaded, try to derive heading elements names\n\t\t\t// by upcasting the DOM elements.\n\t\t\tthis._deriveHeadingElementsFromConversion();\n\t\t}\n\t}\n\n\t/**\n\t * Gets an array of outline items.\n\t *\n\t * @internal\n\t */\n\tprivate _getOutlineDefinitions(): Array<OutlineItemDefinition> {\n\t\tconst editor = this.editor;\n\t\tconst outlineItems: Array<OutlineItemDefinition> = [];\n\t\tconst headingNames = this._headingNames;\n\n\t\tfor ( const rootName of editor.model.document.getRootNames() ) {\n\t\t\tscan( editor.model.document.getRoot( rootName )! );\n\t\t}\n\n\t\tfunction scan( element: Element ) {\n\t\t\tfor ( const child of element.getChildren() ) {\n\t\t\t\tif ( child.is( 'element' ) ) {\n\t\t\t\t\tif ( headingNames.includes( child.name ) ) {\n\t\t\t\t\t\toutlineItems.push( {\n\t\t\t\t\t\t\tlevel: headingNames.indexOf( child.name ) + 1,\n\t\t\t\t\t\t\ttext: getElementText( child ),\n\t\t\t\t\t\t\tmodelElement: child\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\tscan( child );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn outlineItems;\n\t}\n\n\t/**\n\t * Gets a heading which is active at the moment.\n\t *\n\t * @internal\n\t */\n\tprivate _getActiveHeading(): Element | undefined {\n\t\tconst model = this.editor.model;\n\t\tconst selectionPosition = model.document.selection.getFirstPosition()!;\n\t\tconst walker = new TreeWalker( {\n\t\t\tdirection: 'backward',\n\t\t\tstartPosition: selectionPosition\n\t\t} );\n\n\t\tfor ( const value of walker ) {\n\t\t\tif ( value.item.is( 'element' ) && this._headingNames.includes( value.item.name ) ) {\n\t\t\t\treturn value.item;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns the list of element names that will be considered as headings.\n\t *\n\t * @internal\n\t */\n\tprivate _getHeadingNames() {\n\t\tconst documentOutlineHeadings = this.editor.config.get( 'documentOutline.headings' );\n\n\t\tif ( documentOutlineHeadings ) {\n\t\t\treturn documentOutlineHeadings;\n\t\t}\n\n\t\treturn getDefaultFeatureHeadingNames( this.editor );\n\t}\n\n\t/**\n\t * Tries to determine the custom model elements that are downcasted to `<h1>`, `<h2>` etc.\n\t * based on reverse engineering — upcasting DOM heading elements.\n\t *\n\t * @internal\n\t */\n\tprivate _deriveHeadingElementsFromConversion(): void {\n\t\tconst editor = this.editor;\n\n\t\tconst searchedElements = [ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' ];\n\t\tconst modelEquivalents: Array<string> = [];\n\n\t\tfor ( const domElementName of searchedElements ) {\n\t\t\tconst viewElement = editor.editing.view.domConverter.domToView( document.createElement( domElementName ) );\n\t\t\tconst modelFragment = editor.data.toModel( viewElement as ViewElement );\n\t\t\tconst headingElement = modelFragment.getChild( 0 );\n\n\t\t\tif ( !headingElement?.is( 'element' ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tmodelEquivalents.push( headingElement.name );\n\t\t}\n\n\t\tthis._headingNames = modelEquivalents;\n\t}\n}\n\n/**\n * The definition of the item in the document outline.\n */\nexport type OutlineItemDefinition = {\n\tlevel: number;\n\ttext: string;\n\tmodelElement: Element;\n};\n\n/**\n * Fired whenever the headings structure in the document changes.\n *\n * @eventName ~DocumentOutlineUtils#change\n * @param outlineDefinitions The list of current outline definitions.\n * @param outlineChanges Describes what changes were applied in the headings structure.\n * @param activeItemIndex The index of the active document outline item.\n */\nexport type OutlineChangeEvent = {\n\tname: 'change';\n\targs: [ {\n\t\toutlineDefinitions: Array<OutlineItemDefinition>;\n\t\toutlineChanges: ReturnType<typeof diffToChanges<OutlineItemDefinition>>;\n\t\tactiveItemIndex: number;\n\t} ];\n};\n\n/**\n * Fired whenever the active document outline item is changed.\n *\n * @eventName ~DocumentOutlineUtils#activeItemIndex\n * @param activeItemIndex The index of the active document outline item.\n */\nexport type ActiveOutlineItemChangeEvent = {\n\tname: 'activeItemIndex';\n\targs: [ { index: number } ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module document-outline/documentoutline/ui/documentoutlineitemview\n */\n\nimport { View } from 'ckeditor5/src/ui';\nimport { type Locale, scrollAncestorsToShowTarget } from 'ckeditor5/src/utils';\n\n/**\n * An item of the document outline.\n */\nexport default class DocumentOutlineItemView extends View {\n\t/**\n\t * The textual content of the item.\n\t *\n\t * @observable\n\t */\n\tdeclare public text: string;\n\n\t/**\n\t * The level of heading nesting in the document.\n\t *\n\t * @observable\n\t */\n\tdeclare public level: number;\n\n\t/**\n\t * Indicates whether the given item is currently active.\n\t *\n\t * @observable\n\t */\n\tdeclare public isActive: boolean;\n\n\t/**\n\t * Indicates whether the heading doesn't have any text.\n\t *\n\t * @observable\n\t */\n\tdeclare public isEmpty: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale: Locale, showEmptyHeadingText = false ) {\n\t\tsuper( locale );\n\n\t\tconst t = locale.t;\n\t\tconst bind = this.bindTemplate;\n\t\tconst emptyHeadingText = showEmptyHeadingText ? `[${ t( 'Empty heading' ) }]` : '';\n\n\t\tthis.set( 'text', '' );\n\t\tthis.set( 'level', 1 );\n\t\tthis.set( 'isActive', false );\n\t\tthis.bind( 'isEmpty' ).to( this, 'text', text => !text );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-reset',\n\t\t\t\t\t'ck-document-outline__item',\n\t\t\t\t\tbind.to( 'level', level => 'ck-document-outline__item_level-' + level ),\n\t\t\t\t\tbind.if( 'isActive', 'ck-document-outline__item_active' ),\n\t\t\t\t\tbind.if( 'isEmpty', 'ck-document-outline__item_empty' )\n\t\t\t\t],\n\t\t\t\ttitle: bind.to( 'text' )\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{ text: bind.to( 'text', text => text || emptyHeadingText ) }\n\t\t\t],\n\t\t\ton: {\n\t\t\t\tclick: bind.to( 'click' )\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Scrolls to this item in the document.\n\t */\n\tpublic scrollTo(): void {\n\t\t// No native DOM scrollIntoView because it breaks scrolling of the editing root (there's a race).\n\t\tscrollAncestorsToShowTarget( this.element!, 20 );\n\t}\n}\n\n/**\n * Fired whenever an item in the document outline is clicked.\n *\n * @eventName ~DocumentOutlineItemView#click\n */\nexport type DocumentOutlineItemViewClickEvent = {\n\tname: 'click';\n\targs: [];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module document-outline/documentoutline/ui/documentoutlineview\n */\n\nimport { View, type ViewCollection } from 'ckeditor5/src/ui';\nimport { type ObservableChangeEvent, type EventInfo, type Locale, type diffToChanges } from 'ckeditor5/src/utils';\nimport type { OutlineItemDefinition } from '../documentoutlineutils';\nimport DocumentOutlineItemView, { type DocumentOutlineItemViewClickEvent } from './documentoutlineitemview';\n\n/**\n * The document outline panel.\n */\nexport default class DocumentOutlineView extends View {\n\t/**\n\t * A collection of document outline items.\n\t */\n\tpublic readonly items: ViewCollection<DocumentOutlineItemView>;\n\n\t/**\n\t * Indicates which item is active at the moment.\n\t *\n\t * @observable\n\t */\n\tdeclare public activeItemIndex: number;\n\n\t/**\n\t * Indicates whether the display of a placeholder for empty heading is enabled in the editor.\n\t *\n\t * @internal\n\t */\n\tprivate showEmptyHeadingText: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale: Locale, showEmptyHeadingText = false ) {\n\t\tsuper( locale );\n\n\t\tconst t = locale.t;\n\n\t\tthis.showEmptyHeadingText = showEmptyHeadingText;\n\n\t\tthis.set( 'activeItemIndex', -1 );\n\n\t\tthis.items = this.createCollection();\n\t\tthis.items.delegate( 'click' ).to( this );\n\n\t\tthis.on<DocumentOutlineItemViewClickEvent>( 'click', this._handleItemClick.bind( this ) );\n\t\tthis.on<ObservableChangeEvent<number>>( 'change:activeItemIndex', ( evt, name, newIndex, oldIndex ) => {\n\t\t\tthis._setActiveItem( oldIndex, newIndex );\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-reset',\n\t\t\t\t\t'ck-document-outline'\n\t\t\t\t],\n\t\t\t\tdir: locale.contentLanguageDirection,\n\t\t\t\t'data-document-outline-empty-placeholder': t( 'Editor headings will appear here as you type.' )\n\t\t\t},\n\t\t\tchildren: this.items\n\t\t} );\n\t}\n\n\t/**\n\t * If a heading was added or deleted in the editor, insert or delete it in the document outline.\n\t */\n\tpublic sync( changesInItems: ReturnType<typeof diffToChanges<OutlineItemDefinition>> ): void {\n\t\tchangesInItems.forEach( change => {\n\t\t\tif ( change.type == 'insert' ) {\n\t\t\t\tthis._insertItem( change.index, ...change.values );\n\t\t\t} else if ( change.type == 'delete' ) {\n\t\t\t\tthis._deleteItem( change.index, change.howMany );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Sets an item as active in the document outline.\n\t *\n\t * @internal\n\t */\n\tprivate _setActiveItem( oldIndex: number, newIndex: number ): void {\n\t\tif ( oldIndex !== -1 ) {\n\t\t\tconst oldActiveItem = this.items.get( oldIndex );\n\n\t\t\tif ( oldActiveItem ) {\n\t\t\t\toldActiveItem.isActive = false;\n\t\t\t}\n\t\t}\n\n\t\tif ( newIndex !== -1 ) {\n\t\t\tthis.items.get( newIndex )!.isActive = true;\n\t\t\tthis.items.get( newIndex )!.scrollTo();\n\t\t}\n\t}\n\n\t/**\n\t * Inserts a new item in the document outline.\n\t *\n\t * @internal\n\t */\n\tprivate _insertItem( index: number, ...items: Array<OutlineItemDefinition> ): void {\n\t\tconst itemViews = items\n\t\t\t.map( ( item, itemIndex ) => {\n\t\t\t\tconst itemView = new DocumentOutlineItemView( this.locale!, this.showEmptyHeadingText );\n\n\t\t\t\t// Empty should disappear but it is not so easy with nth-child in CSS and\n\t\t\t\t// de-syncing the view collection causes problems on changes.\n\t\t\t\titemView.text = item.text;\n\t\t\t\titemView.level = item.level;\n\n\t\t\t\tif ( index + itemIndex === this.activeItemIndex ) {\n\t\t\t\t\titemView.isActive = true;\n\t\t\t\t}\n\n\t\t\t\treturn itemView;\n\t\t\t} );\n\n\t\tthis.items.addMany( itemViews, index );\n\t}\n\n\t/**\n\t * Deletes an item from the document outline.\n\t *\n\t * @internal\n\t */\n\tprivate _deleteItem( index: number, howMany: number ) {\n\t\tdo {\n\t\t\tthis.items.remove( index );\n\t\t} while ( --howMany );\n\t}\n\n\t/**\n\t * Fires an event indicating that a heading of a specific index in the document was clicked\n\t * in the document outline and should be considered active.\n\t *\n\t * @fires itemSelected\n\t * @internal\n\t */\n\tprivate _handleItemClick( evt: EventInfo<'click'> ) {\n\t\tconst itemIndex = this.items.getIndex( evt.source as DocumentOutlineItemView );\n\n\t\tthis.fire<DocumentOutlineViewItemSelectedEvent>( 'itemSelected', itemIndex );\n\t}\n}\n\n/**\n * Fired whenever an item in the document outline is clicked.\n *\n * @eventName ~DocumentOutlineView#itemSelected\n * @param itemIndex Index of selected item.\n */\nexport type DocumentOutlineViewItemSelectedEvent = {\n\tname: 'itemSelected';\n\targs: [ itemIndex: number ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module document-outline/documentoutline/utils\n */\n\nimport { type Element, Text } from 'ckeditor5/src/engine';\nimport { type Editor } from 'ckeditor5/src/core';\nimport type { HeadingOption } from '@ckeditor/ckeditor5-heading';\n\n/**\n * Returns all text contents that are inside the given element and all its children.\n */\nexport function getElementText( element: Element ): string {\n\tlet text = '';\n\n\tfor ( const child of element.getChildren() ) {\n\t\tif ( child instanceof Text ) {\n\t\t\ttext += child.data;\n\t\t}\n\t}\n\n\treturn text;\n}\n\n/**\n * Returns a list of standard headings or GHS headings configured in the editor.\n */\nexport function getDefaultFeatureHeadingNames( editor: Editor ): Array<string> {\n\t// If there are headings defined for heading feature, those should be returned:\n\tconst headingConfig: Array<HeadingOption> = editor.config.get( 'heading.options' )!;\n\n\tif ( headingConfig ) {\n\t\treturn headingConfig.reduce( ( configHeadings: Array<string>, heading ) => {\n\t\t\tif ( heading.model !== 'paragraph' ) {\n\t\t\t\tconfigHeadings.push( heading.model );\n\t\t\t}\n\t\t\treturn configHeadings;\n\t\t}, [] );\n\t}\n\n\t// If the heading plugin is not loaded, but ghs is, ghs default headings should be returned:\n\tif ( editor.plugins.has( 'GeneralHtmlSupport' ) ) {\n\t\treturn [ 'htmlH1', 'htmlH2', 'htmlH3', 'htmlH4', 'htmlH5', 'htmlH6' ];\n\t}\n\n\t// In all other cases an empty array should be returned.\n\treturn [];\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module document-outline\n */\n\nexport { default as DocumentOutline, type DocumentOutlineConfig } from './documentoutline';\nexport { default as DocumentOutlineUI } from './documentoutline/documentoutlineui';\nexport { default as DocumentOutlineUtils } from './documentoutline/documentoutlineutils';\n\nimport tableOfContentsIcon from '../theme/icons/table-of-contents.svg';\n\nexport { default as TableOfContents } from './tableofcontents';\nexport { default as TableOfContentsCommand } from './tableofcontents/tableofcontentscommand';\nexport { default as TableOfContentsEditing } from './tableofcontents/tableofcontentsediting';\nexport { default as TableOfContentsUI } from './tableofcontents/tableofcontentsui';\nexport { default as HeadingId } from '@ckeditor/ckeditor5-document-outline/src/tableofcontents/headingid';\n\nexport const icons = {\n\ttableOfContentsIcon\n};\n\nimport './augmentation';\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module document-outline/tableofcontents\n * @publicApi\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport TableOfContentsEditing from './tableofcontents/tableofcontentsediting';\nimport TableOfContentsUI from './tableofcontents/tableofcontentsui';\n\n/**\n * The table of contents feature.\n *\n * For a detailed overview, check the {@glink features/table-of-contents Table of contents} feature documentation.\n */\nexport default class TableOfContents extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TableOfContentsEditing, TableOfContentsUI ];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName(): 'TableOfContents' {\n\t\treturn 'TableOfContents';\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module document-outline/tableofcontents/headingid\n */\n\nimport type { Element, Writer } from 'ckeditor5/src/engine';\nimport { Plugin } from 'ckeditor5/src/core';\nimport { uid, priorities } from 'ckeditor5/src/utils';\nimport type { HeadingOption } from '@ckeditor/ckeditor5-heading';\n\n/**\n * The heading ID plugin. It adds support for the ID attribute on the heading[1-6] (model) and h[1-6] (data/view) elements.\n */\nexport default class HeadingId extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName(): 'HeadingId' {\n\t\treturn 'HeadingId';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst editor = this.editor;\n\n\t\tif ( editor.config.get( 'headingId.modelAttributeName' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO: Integration with HeadingConfig via ToC config + decoupling of ToC and DocumentOutlineUtils.\n\t\tconst defaultHeadingMapNames = getDefaultHeadingMapNames( this.editor.config.get( 'heading.options' ) );\n\n\t\tdefaultHeadingMapNames.forEach( ( headingModelName: string, headingViewName: string ) => {\n\t\t\tthis._customUpcastHeadingsConversion( headingViewName );\n\t\t\tthis._customDataDowncastHeadingsConversion( headingModelName );\n\n\t\t\tif ( editor.model.schema.isRegistered( headingModelName ) ) {\n\t\t\t\teditor.model.schema.extend( headingModelName, { allowAttributes: 'headingId' } );\n\t\t\t}\n\t\t} );\n\n\t\tthis._registerHeadingIdAttributePostfixer();\n\t}\n\n\t/**\n\t * Custom upcast conversion of headings.\n\t *\n\t * @internal\n\t */\n\tprivate _customUpcastHeadingsConversion( domTagName: string ): void {\n\t\tthis.editor.data.upcastDispatcher.on( `element:${ domTagName }`, ( evt, data, conversionApi ) => {\n\t\t\tconst { consumable, writer } = conversionApi;\n\t\t\tconst id = data.viewItem.getAttribute( 'id' );\n\t\t\tconst headingModelElement = data.modelRange!.getContainedElement();\n\n\t\t\tif ( ( !id || !id.length ) && !headingModelElement.hasAttribute( 'headingId' ) ) {\n\t\t\t\t// The case when id=\"\" - need to be consumed in other case GHS will take it.\n\t\t\t\tconsumable.consume( data.viewItem, { attributes: [ 'id' ] } );\n\t\t\t\twriter.setAttribute( 'headingId', uid(), headingModelElement! );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( consumable.consume( data.viewItem, { attributes: [ 'id' ] } ) ) {\n\t\t\t\twriter.setAttribute( 'headingId', id, headingModelElement! );\n\t\t\t}\n\t\t},\n\t\t// HeadingEditing default (h2, h3, h4...) -> normal\n\t\t// HeadingEditing h1 -> low + 1\n\t\t// **This converter** -> low + 0.5\n\t\t// GHS (HeadingElementSupport) -> low + 1\n\t\t// GHS (generic block attributes) -> low\n\t\t// Paragraph (auto) -> low\n\t\t{ priority: priorities.get( 'low' ) + 0.5 } );\n\t}\n\n\t/**\n\t * Custom data downcast conversion of headings.\n\t *\n\t * @internal\n\t */\n\tprivate _customDataDowncastHeadingsConversion( modelElementName: string ): void {\n\t\tthis.editor.conversion.for( 'downcast' ).add(\n\t\t\tdispatcher => dispatcher.on( `attribute:headingId:${ modelElementName }`, ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst id = data.item.getAttribute( 'headingId' );\n\t\t\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item );\n\n\t\t\t\tconversionApi.writer.setAttribute( 'id', id, viewElement );\n\t\t\t} )\n\t\t);\n\t}\n\n\t/**\n\t * Registers a model post-fixer that takes care of headings without the `headingId` attribute, elements\n\t * that have the `headingId` but they shouldn't, and elements with a duplicated `headingId`.\n\t *\n\t * @internal\n\t */\n\tprivate _registerHeadingIdAttributePostfixer() {\n\t\tconst editor = this.editor;\n\t\tconst knownIds = new Set<string>();\n\t\tconst newSinglePostFixerRunIds = new Set<string>();\n\n\t\teditor.model.document.registerPostFixer( writer => {\n\t\t\tconst changes = editor.model.document.differ.getChanges();\n\t\t\tlet hasChanged = false;\n\n\t\t\tfor ( const entry of changes ) {\n\t\t\t\tif ( entry.type == 'insert' && entry.name ) {\n\t\t\t\t\tif ( isHeading( entry.name ) ) {\n\t\t\t\t\t\tconst id = entry.attributes.get( 'headingId' );\n\n\t\t\t\t\t\tif ( typeof id === 'string' ) {\n\t\t\t\t\t\t\tif ( knownIds.has( id ) ) {\n\t\t\t\t\t\t\t\tsetNewHeadingId( writer, entry.position.nodeAfter! as Element );\n\t\t\t\t\t\t\t\thasChanged = true;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Adding to knownIds would cause infinite loop.\n\t\t\t\t\t\t\t\tnewSinglePostFixerRunIds.add( id );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetNewHeadingId( writer, entry.position.nodeAfter! as Element );\n\t\t\t\t\t\t\thasChanged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst id = entry.attributes.get( 'headingId' );\n\n\t\t\t\t\t\tif ( typeof id === 'string' ) {\n\t\t\t\t\t\t\tremoveHeadingId( writer, entry.position.nodeAfter! as Element );\n\t\t\t\t\t\t\thasChanged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if ( entry.type == 'remove' ) {\n\t\t\t\t\tconst id = entry.attributes.get( 'headingId' );\n\n\t\t\t\t\tif ( typeof id === 'string' ) {\n\t\t\t\t\t\tknownIds.delete( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn hasChanged;\n\t\t} );\n\n\t\teditor.model.document.on( 'change', () => {\n\t\t\t// After the post-fixer is done, we can safely write new discovered/created ids to the global list.\n\t\t\tnewSinglePostFixerRunIds.forEach( newId => knownIds.add( newId ) );\n\t\t\tnewSinglePostFixerRunIds.clear();\n\t\t} );\n\n\t\tfunction setNewHeadingId( writer: Writer, element: Element ) {\n\t\t\tconst id = uid();\n\n\t\t\t// Adding to knownIds would cause infinite loop.\n\t\t\tnewSinglePostFixerRunIds.add( id );\n\n\t\t\twriter.setAttribute( 'headingId', id, element );\n\t\t\treturn id;\n\t\t}\n\n\t\tfunction removeHeadingId( writer: Writer, element: Element ) {\n\t\t\twriter.removeAttribute( 'headingId', element );\n\t\t}\n\t}\n}\n\nfunction isHeading( elementName: string ): boolean {\n\treturn !!elementName.match( /heading\\d/ );\n}\n\n/**\n * Returns a Map of standard headings or GHS headings configured in the editor.\n */\nfunction getDefaultHeadingMapNames( headingConfig: Array<HeadingOption> | undefined ) {\n\tconst headingConfiguration = new Map<string, string>();\n\n\tif ( headingConfig ) {\n\t\theadingConfig.forEach( heading => {\n\t\t\tif ( heading.model !== 'paragraph' ) {\n\t\t\t\theadingConfiguration.set( heading.view as string, heading.model );\n\t\t\t}\n\t\t} );\n\n\t\tif ( !headingConfiguration.get( 'h1' ) ) {\n\t\t\theadingConfiguration.set( 'h1', 'heading1' );\n\t\t}\n\n\t\treturn headingConfiguration;\n\t}\n\n\treturn headingConfiguration;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module document-outline/tableofcontents/tableofcontentscommand\n * @publicApi\n */\nimport { Command } from 'ckeditor5/src/core';\nimport type { Writer } from 'ckeditor5/src/engine';\n\nexport default class TableOfContentsCommand extends Command {\n\t/**\n\t * Executes the command. Inserts the table of content into the model.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tthis.editor.model.change( ( writer: Writer ) => {\n\t\t\tthis.editor.model.insertObject( writer.createElement( 'tableOfContents' ) );\n\t\t} );\n\t}\n\n\t/**\n\t * If the selection is wrong, the command is not enabled.\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst firstPosition = model.document.selection.getFirstPosition();\n\n\t\tthis.isEnabled = ( firstPosition && model.schema.findAllowedParent( firstPosition, 'tableOfContents' ) ) !== null;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module document-outline/tableofcontents/tableofcontentsediting\n */\n\nimport {\n\tContext,\n\tPlugin,\n\ttype ContextPlugin,\n\ttype Editor,\n\ttype PluginConstructor\n} from 'ckeditor5/src/core';\nimport type {\n\tNode,\n\tDowncastWriter,\n\tViewContainerElement,\n\tViewDocumentClickEvent,\n\tMapperViewToModelPositionEvent\n} from 'ckeditor5/src/engine';\nimport { toWidget, Widget } from 'ckeditor5/src/widget';\nimport { type GetCallback } from 'ckeditor5/src/utils';\n\nimport InsertTableOfContentsCommand from './tableofcontentscommand';\nimport '../../theme/tableofcontents.css';\n\nimport { DocumentOutlineUtils } from '@ckeditor/ckeditor5-document-outline';\nimport {\n\ttype OutlineChangeEvent,\n\ttype OutlineItemDefinition\n} from '../documentoutline/documentoutlineutils';\nimport HeadingId from './headingid';\n\n/**\n * The table of contents editing plugin.\n */\nexport default class TableOfContentsEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName(): 'TableOfContentsEditing' {\n\t\treturn 'TableOfContentsEditing';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Widget, DocumentOutlineUtils, HeadingId ];\n\t}\n\n\t/**\n\t * A collection of headings in the document with additional metadata.\n\t *\n\t * @internal\n\t */\n\tprivate _currentOutlineDefinitions: Array<OutlineItemDefinition>;\n\n\t/**\n\t * A collection of table of contents elements in the document.\n\t * For simplicity, their references are kept even after they are deleted.\n\t *\n\t * @internal\n\t */\n\tprivate _tableOfContentsElements: Set<Node>;\n\n\t/**\n\t * TODO\n\t * @internal\n\t */\n\tprivate _headingIdModelAttributeName: string;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._currentOutlineDefinitions = [];\n\t\tthis._tableOfContentsElements = new Set();\n\t\tthis._headingIdModelAttributeName = 'headingId';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\tconst viewDocument = editor.editing.view.document;\n\n\t\tif ( editor.config.get( 'headingId.modelAttributeName' ) ) {\n\t\t\tthis._headingIdModelAttributeName = editor.config.get( 'headingId.modelAttributeName' ) as string;\n\t\t}\n\n\t\tthis.listenTo<ViewDocumentClickEvent>( viewDocument, 'click', ( evt, data ) => {\n\t\t\tif ( !data.target ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst headingIndex = data.target.getCustomProperty( 'tableOfContentsHeadingIndex' ) as number;\n\n\t\t\tif ( Number.isInteger( headingIndex ) ) {\n\t\t\t\tdata.domEvent.preventDefault();\n\n\t\t\t\t// This is (also) an integration with LinkEditing and Ctrl+Click.\n\t\t\t\tevt.stop();\n\n\t\t\t\tthis._handleScrollToHeading( headingIndex );\n\t\t\t}\n\t\t}, {\n\t\t\t// This is executed quicker than the Ctrl+Click listener in LinkEditing.\n\t\t\tpriority: 'high',\n\t\t\tcontext: '$capture'\n\t\t} );\n\n\t\tthis._defineSchema();\n\t\tthis._defineConverters();\n\n\t\teditor.commands.add( 'insertTableOfContents', new InsertTableOfContentsCommand( editor ) );\n\n\t\tconst documentOutlinePlugin = editor.plugins.get( 'DocumentOutlineUtils' );\n\n\t\tdocumentOutlinePlugin.on<OutlineChangeEvent>( 'change', ( evt, data ) => {\n\t\t\tthis._currentOutlineDefinitions = data.outlineDefinitions;\n\t\t\tthis._updateTableOfContentsElements();\n\t\t} );\n\n\t\tthis.listenTo( editor.model.document, 'change', () => {\n\t\t\tthis._trackNewToCElements();\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\t/* LICENSE_CHECKER_CALL_PATTERN_START */\n\n\t\t// Note this weird name is to make it similar to the obfuscated code.\n\t\t// Unfortunately it's not handled by the obfuscator because of https://github.com/cksource/collaboration-features/issues/2287.\n\t\tx8eE( this );\n\n\t\t/* LICENSE_CHECKER_CALL_PATTERN_END */\n\t}\n\n\t/**\n\t * Triggers the reconversion for all tracked table of contents elements.\n\t *\n\t * @internal\n\t */\n\tprivate _updateTableOfContentsElements(): void {\n\t\tthis._tableOfContentsElements.forEach( element => {\n\t\t\t// Skip removed elements.\n\t\t\tif ( element.rootName !== '$graveyard' ) {\n\t\t\t\tthis.editor.editing.reconvertItem( element );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Starts tracking the added table of contents elements.\n\t *\n\t * @internal\n\t */\n\tprivate _trackNewToCElements(): void {\n\t\tfor ( const change of this.editor.model.document.differ.getChanges( { includeChangesInGraveyard: true } ) ) {\n\t\t\tif ( change.type !== 'insert' || change.name !== 'tableOfContents' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._tableOfContentsElements.add( change.position.nodeAfter! );\n\t\t}\n\t}\n\n\t/**\n\t * Defines the model schema for the `tableOfContents` element.\n\t *\n\t * @internal\n\t */\n\tprivate _defineSchema(): void {\n\t\tconst schema = this.editor.model.schema;\n\n\t\tschema.register( 'tableOfContents', {\n\t\t\tinheritAllFrom: '$blockObject'\n\t\t} );\n\t}\n\n\t/**\n\t * Defines the conversion (upcast and downcast) for the table of contents feature.\n\t *\n\t * @internal\n\t */\n\tprivate _defineConverters(): void {\n\t\tconst conversion = this.editor.conversion;\n\t\tconst t = this.editor.t;\n\n\t\tconversion.for( 'upcast' ).elementToElement( {\n\t\t\tmodel: 'tableOfContents',\n\t\t\tview: {\n\t\t\t\tname: 'div',\n\t\t\t\tclasses: 'table-of-contents'\n\t\t\t}\n\t\t} );\n\n\t\tconversion.for( 'dataDowncast' ).elementToStructure( {\n\t\t\tmodel: 'tableOfContents',\n\t\t\tview: ( _, { writer } ) => {\n\t\t\t\treturn this._createTableOfContents( writer, true );\n\t\t\t}\n\t\t} );\n\n\t\tconversion.for( 'editingDowncast' ).elementToStructure( {\n\t\t\tmodel: 'tableOfContents',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tthis._tableOfContentsElements.add( modelElement );\n\n\t\t\t\tconst tableOfContentsView: ViewContainerElement = this._createTableOfContents( writer );\n\n\t\t\t\treturn toWidget( tableOfContentsView, writer, { label: t( 'Table of contents' ) } );\n\t\t\t}\n\t\t} );\n\n\t\t// Register div.table-of-contents as a raw content element so all of it's content will be ignored.\n\t\t// https://github.com/cksource/ckeditor5-internal/issues/3077\n\t\tthis.editor.data.registerRawContentMatcher( {\n\t\t\tname: 'div',\n\t\t\tclasses: 'table-of-contents'\n\t\t} );\n\n\t\t// Redirect the mapper to the `tableOfContents` model element regardless of which part of it was clicked.\n\t\t// See https://github.com/cksource/ckeditor5-internal/issues/2901.\n\t\t// High priority to ensure execution before the list converter throwing an error.\n\t\tthis.editor.editing.mapper.on<MapperViewToModelPositionEvent>(\n\t\t\t'viewToModelPosition', this._redirectMapper(), { priority: 'high' }\n\t\t);\n\t}\n\n\t/**\n\t * Creates a table of contents element based on the currently available heading definitions.\n\t *\n\t * @internal\n\t */\n\tprivate _createTableOfContents( writer: DowncastWriter, isDataDowncast: boolean = false ): ViewContainerElement {\n\t\tconst t = this.editor.t;\n\t\tconst tableOfContents = writer.createContainerElement( 'div', {\n\t\t\tclass: `table-of-contents${ this._currentOutlineDefinitions.length === 0 ? ' table-of-contents_empty' : '' }`,\n\t\t\t...( !isDataDowncast && { 'data-table-of-contents-label': t( 'Table of contents' ) } )\n\t\t} );\n\n\t\tif ( this._currentOutlineDefinitions.length === 0 && isDataDowncast === false ) {\n\t\t\twriter.insert( writer.createPositionAt( tableOfContents, 'end' ), createEmptyTocContent() );\n\t\t}\n\n\t\tconst emptyHeadingPlaceholderText = isDataDowncast ? '' : `[${ t( 'Empty heading' ) }]`;\n\t\tlet lastListItem: ViewContainerElement = tableOfContents;\n\n\t\tthis._currentOutlineDefinitions.forEach( ( definition, index, array ) => {\n\t\t\tconst hasHeadingContent = this.editor.model.hasContent( definition.modelElement, { ignoreWhitespaces: true } );\n\t\t\tconst listItemText = hasHeadingContent ? definition.text : emptyHeadingPlaceholderText;\n\t\t\tconst headingId = definition.modelElement.getAttribute( this._headingIdModelAttributeName );\n\t\t\tconst newListItemText = writer.createContainerElement( 'a', {\n\t\t\t\thref: `#${ headingId }`,\n\n\t\t\t\t// https://github.com/cksource/ckeditor5-internal/issues/3094\n\t\t\t\t...( !isDataDowncast && { tabindex: '-1' } )\n\t\t\t}, [ writer.createText( listItemText ) ] );\n\t\t\tconst emptyHeadingsVisible = this.editor.config.get( 'documentOutline.showEmptyHeadings' );\n\n\t\t\twriter.setCustomProperty( 'tableOfContentsHeadingIndex', index, newListItemText );\n\n\t\t\tconst newListItem = writer.createContainerElement( 'li', null, [\n\t\t\t\t( !hasHeadingContent && ( isDataDowncast || !emptyHeadingsVisible ) ) ? writer.createText( '' ) : newListItemText ] );\n\n\t\t\tconst lastLevel = index ? array[ index - 1 ].level : 0;\n\t\t\tconst levelDifference = Math.abs( definition.level - lastLevel );\n\n\t\t\t// Creates nested lists depending on headings level difference -\n\t\t\t// e.g. Heading 3 after Heading 1 has 2 extra indents, because 3 - 1 = 2.\n\t\t\tif ( definition.level > lastLevel ) {\n\t\t\t\tconst nestedList = wrapInList( newListItem, levelDifference, writer );\n\n\t\t\t\twriter.insert( writer.createPositionAt( lastListItem, 'end' ), nestedList );\n\t\t\t}\n\t\t\t// Heading level is same or lower - find an ancestor of the previously inserted heading.\n\t\t\telse {\n\t\t\t\tconst outerList = getOuterListByLevelDifference( lastListItem, levelDifference );\n\n\t\t\t\twriter.insert( writer.createPositionAt( outerList, 'end' ), newListItem );\n\t\t\t}\n\n\t\t\tlastListItem = newListItem;\n\t\t} );\n\n\t\treturn tableOfContents;\n\n\t\tfunction createEmptyTocContent() {\n\t\t\treturn writer.createContainerElement( 'p', { class: 'table-of-contents__placeholder' }, [\n\t\t\t\twriter.createText( t( 'No headings were found in the document.' ) )\n\t\t\t] );\n\t\t}\n\t}\n\n\t/**\n\t * Scrolls the view to the desired heading.\n\t *\n\t * @internal\n\t */\n\tprivate _handleScrollToHeading( index: number ): void {\n\t\tconst modelHeading = this._currentOutlineDefinitions[ index ].modelElement;\n\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.setSelection( modelHeading, 0 );\n\t\t} );\n\n\t\tthis.editor.editing.view.scrollToTheSelection( {\n\t\t\talignToTop: true,\n\t\t\tforceScroll: true\n\t\t} );\n\t}\n\n\t/**\n\t * Redirects the mapper to the `tableOfContents` model element regardless of which part of it was clicked.\n\t *\n\t * @internal\n\t * @returns Returns a conversion callback.\n\t */\n\tprivate _redirectMapper(): GetCallback<MapperViewToModelPositionEvent> {\n\t\treturn ( evt, data ) => {\n\t\t\tconst mapper = data.mapper;\n\t\t\tconst mappedAncestor = mapper.findMappedViewAncestor( data.viewPosition );\n\t\t\tconst modelElement = mapper.toModelElement( mappedAncestor );\n\n\t\t\tif ( modelElement!.is( 'element', 'tableOfContents' ) ) {\n\t\t\t\tdata.modelPosition = this.editor.model.createPositionAt( modelElement, 0 );\n\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t};\n\t}\n}\n\n/**\n* Creates a nested list where depth depends on the level difference between the current heading and the next heading.\n*\n* @internal\n*/\nfunction wrapInList(\n\tlistItem: ViewContainerElement,\n\tlevelDifference: number,\n\twriter: DowncastWriter\n): ViewContainerElement {\n\tif ( levelDifference === 1 ) {\n\t\treturn writer.createContainerElement( 'ol', null, [ listItem ] );\n\t}\n\n\treturn writer.createContainerElement( 'ol', null, [\n\t\twriter.createContainerElement( 'li', null, [\n\t\t\twrapInList( listItem, levelDifference - 1, writer )\n\t\t] )\n\t] );\n}\n\n/**\n* Returns the parent of the given list element depending on the level difference.\n*\n* @internal\n*/\nfunction getOuterListByLevelDifference( listItem: ViewContainerElement, levelDifference: number ): ViewContainerElement {\n\tconst parents = listItem.getAncestors( { includeSelf: true, parentFirst: true } )\n\t\t.filter( item => item.is( 'element', 'ol' ) ) as Array<ViewContainerElement>;\n\n\treturn parents[ levelDifference ];\n}\n\n/* LICENSE_CHECKER_DEFINITION_PATTERN_START */\n\n// Scope for checking license key.\n//\n// Please, do not modify this file as its original content is located in the `cksource/ckeditor5-dev-private` repository\n// and all changes can be lost while preparing the CKEditor 5 packages to release.\n//\n// All string occurrences inside this function will be changed to the binary format to make them less readable.\n/* istanbul ignore next -- @preserve */\nfunction x8eE( pluginInstance: Plugin | ContextPlugin ): void {\n\t/* eslint-disable dot-notation, max-len, no-useless-computed-key, no-unexpected-multiline */\n\t/* MASK_STRING */\n\n\t( ( pluginInstance: Plugin | ContextPlugin ) => {\n\t\t/**\n\t\t * @internal\n\t\t */\n\t\tinterface DecodedLicense {\n\n\t\t\t/**\n\t\t\t * A permission mask that keeps the available features.\n\t\t\t */\n\t\t\tallowedPlugins: number;\n\n\t\t\t/**\n\t\t\t * Expiration date represented by a number with the following format: `YYYYMMDD`.\n\t\t\t */\n\t\t\texpirationDate: number;\n\n\t\t\t/**\n\t\t\t * If set to `0`, it represents a trial license. An editor usage is limited to operations or a time limit.\n\t\t\t */\n\t\t\tisTrial: number;\n\n\t\t\t/**\n\t\t\t * If set to `0`, it represents a non-internal license, used outside the CKEditor 5 documentation.\n\t\t\t */\n\t\t\tisInternal: number;\n\t\t}\n\n\t\t/**\n\t\t * @internal\n\t\t */\n\t\tinterface PluginConfig {\n\n\t\t\t/**\n\t\t\t * A unique feature ID. Based on that, a permission mask is generated automatically.\n\t\t\t */\n\t\t\tid: number;\n\n\t\t\t/**\n\t\t\t * A unique feature name. It is not used when securing a plugin.\n\t\t\t */\n\t\t\tfeatureName: string;\n\n\t\t\t/**\n\t\t\t * A unique plugin name where the license mechanism is injected.\n\t\t\t */\n\t\t\tpluginName: string;\n\n\t\t\t/**\n\t\t\t * The license verification mechanism sets an unknown property on an editor or a context\n\t\t\t * instance with a status of a given license key.\n\t\t\t *\n\t\t\t * This property describes a prefix for all messages. See the following examples:\n\t\t\t * \t\t* `licenseKey`: `licenseKeyInvalid`, `licenseKeyValid`, `licenseKeyTrialLimit:time`.\n\t\t\t * \t\t* `paginationLicenseKey`: `paginationLicenseKeyInvalid`, `paginationLicenseKeyValid`, ....\n\t\t\t *\n\t\t\t * These statuses are used in an interval function to display a message to the end-user\n\t\t\t * that a license key is invalid/expired/etc.\n\t\t\t */\n\t\t\tlicenseStatusPrefix: string;\n\n\t\t\t/**\n\t\t\t * A name of a function used to verify if a given license is allowed to enable the `pluginName` plugin.\n\t\t\t *\n\t\t\t * See the body of the `checkLicenseForPlugin()` function.\n\t\t\t */\n\t\t\thandler: string;\n\n\t\t\t/**\n\t\t\t * Generated automatically a permission mask based on the feature id. It is stored in the generated license and enables\n\t\t\t * the `pluginName` plugin in the editor.\n\t\t\t */\n\t\t\tpermissionMask?: number;\n\n\t\t\t/**\n\t\t\t * An optional array containing a configuration of nested features that should also be checked\n\t\t\t * while checking if the `featureName` feature is allowed.\n\t\t\t *\n\t\t\t * Nested features may not have their entry point in the licensing checker procedure\n\t\t\t * so that they may be checked within the scope of another feature. Regardless of how any\n\t\t\t * feature is checked, each can have its licensing handler.\n\t\t\t *\n\t\t\t * @defaultValue []\n\t\t\t */\n\t\t\tcheckAlso?: Array<PluginConfig>;\n\n\t\t\t/**\n\t\t\t * @defaultValue {}\n\t\t\t */\n\t\t\toptions?: {\n\n\t\t\t\t/**\n\t\t\t\t * Full name: \"allowIfWebSocketGatewayIsConnected\".\n\t\t\t\t *\n\t\t\t\t * The license is not checked on a client machine when set to `true`.\n\t\t\t\t * Instead, Cloud Services verifies it when a client sends an operation to the server, e.g., typing in RTC.\n\t\t\t\t *\n\t\t\t\t * @defaultValue false\n\t\t\t\t */\n\t\t\t\taiwsgic?: boolean;\n\n\t\t\t\t/**\n\t\t\t\t * Full name: \"allowIfTrackChangesDataGetterIsLoaded\".\n\t\t\t\t *\n\t\t\t\t * A flag whether to allow the feature even without entering a license key,\n\t\t\t\t * if a special fake `TrackChangesDataGetter` class exists.\n\t\t\t\t *\n\t\t\t\t * @defaultValue false\n\t\t\t\t */\n\t\t\t\taitcdgil?: boolean;\n\t\t\t};\n\t\t}\n\n\t\tfunction getPremiumFeaturesConfig(): Array<PluginConfig> {\n\t\t\t// Computed keys allow obfuscating properties in the configuration object making everything much harder to decrypt.\n\t\t\t// At least, visually.\n\t\t\tconst config = [\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 1,\n\t\t\t\t\t[ 'featureName' ]: 'Comments',\n\t\t\t\t\t[ 'pluginName' ]: 'CommentsRepository',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'licenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense',\n\t\t\t\t\t[ 'checkAlso' ]: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[ 'id' ]: 2,\n\t\t\t\t\t\t\t[ 'featureName' ]: 'Track Changes',\n\t\t\t\t\t\t\t[ 'pluginName' ]: 'TrackChangesEditing',\n\t\t\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'licenseKey',\n\t\t\t\t\t\t\t[ 'handler' ]: 'checkLicenseForTrackChanges',\n\t\t\t\t\t\t\t[ 'options' ]: {\n\t\t\t\t\t\t\t\t[ 'aiwsgic' ]: true,\n\t\t\t\t\t\t\t\t[ 'aitcdgil' ]: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t[ 'options' ]: {\n\t\t\t\t\t\t[ 'aiwsgic' ]: true,\n\t\t\t\t\t\t[ 'aitcdgil' ]: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 3,\n\t\t\t\t\t[ 'featureName' ]: 'Pagination',\n\t\t\t\t\t[ 'pluginName' ]: 'PaginationLookup',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'paginationLicenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 4,\n\t\t\t\t\t[ 'featureName' ]: 'Revision History',\n\t\t\t\t\t[ 'pluginName' ]: 'RevisionsRepository',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'licenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicenseForRevisionHistory',\n\t\t\t\t\t[ 'options' ]: {\n\t\t\t\t\t\t[ 'aiwsgic' ]: true,\n\t\t\t\t\t\t[ 'aitcdgil' ]: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 5,\n\t\t\t\t\t[ 'featureName' ]: 'Document Outline',\n\t\t\t\t\t[ 'pluginName' ]: 'DocumentOutlineUI',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'documentOutlineLicenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 6,\n\t\t\t\t\t[ 'featureName' ]: 'Format Painter',\n\t\t\t\t\t[ 'pluginName' ]: 'FormatPainterUI',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'formatPainterLicenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 7,\n\t\t\t\t\t[ 'featureName' ]: 'Slash Command',\n\t\t\t\t\t[ 'pluginName' ]: 'SlashCommandUI',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'slashCommandLicenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 8,\n\t\t\t\t\t[ 'featureName' ]: 'Table of Contents',\n\t\t\t\t\t[ 'pluginName' ]: 'TableOfContentsEditing',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'tableOfContentsLicenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t[ 'id' ]: 9,\n\t\t\t\t\t[ 'featureName' ]: 'Template',\n\t\t\t\t\t[ 'pluginName' ]: 'TemplateUI',\n\t\t\t\t\t[ 'licenseStatusPrefix' ]: 'templateLicenseKey',\n\t\t\t\t\t[ 'handler' ]: 'checkLicense'\n\t\t\t\t}\n\t\t\t];\n\n\t\t\taddPermissionMask( config );\n\n\t\t\treturn config;\n\n\t\t\t// Permission mask is a number, which in binary format defines features that are allowed (bit is set) and features that are not allowed\n\t\t\t// (bit is not set). Each feature occupies one bit position. Bit positions are counted from 0 but feature ids are counted from 1.\n\t\t\t// To calculate the permission mask, shift the bit corresponding to the given feature to the left by the appropriate number of places.\n\t\t\tfunction getPermissionMaskForId( id: number ): number {\n\t\t\t\treturn 1 << ( id - 1 );\n\t\t\t}\n\n\t\t\tfunction addPermissionMask( config: Array<PluginConfig> ) {\n\t\t\t\tconfig[ 'forEach' ]( feature => {\n\t\t\t\t\tfeature[ 'permissionMask' ] = getPermissionMaskForId( feature[ 'id' ] );\n\n\t\t\t\t\tif ( feature[ 'checkAlso' ] ) {\n\t\t\t\t\t\taddPermissionMask( feature[ 'checkAlso' ] );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tconst rawAesKey1 = [ 1, 85, 78, 115, 198, 255, 50, 112, 83, 87, 161 ];\n\n\t\tconst rawAesKey3 = [ 127, 34, 6, 211, 167, 86, 146, 199, 132, 160, 18 ];\n\n\t\t// Decrypts license key using raw aes key that is stored in the code (split into the 3 parts).\n\t\t//\n\t\t// License key is a Base64 that contains encrypted data and initialization vector (last 12 characters of the decoded string)\n\t\t// Each license key has its own initialization vector that has been used for the encryption process and needs\n\t\t// to be extracted from the key and used for the decryption process as well.\n\t\tfunction decryptLicenseKey( base64LicenseKey: string ): string {\n\t\t\t// The second part of the raw aes key. Will be used to for decrypting license key.\n\t\t\tconst rawAesKey2 = [ 29, 221, 175, 90, 231, 133, 239, 240, 75, 180 ];\n\n\t\t\t// Concat parts of the raw aes key into one binary array.\n\t\t\tconst rawAesKey = new Uint8Array( [ ...rawAesKey1, ...rawAesKey2, ...rawAesKey3 ] );\n\n\t\t\treturn decrypt( base64LicenseKey, rawAesKey );\n\t\t}\n\n\t\t// Decrypts license key. Returns JSON string with decrypted data.\n\t\tfunction decrypt( licenseKey: string, aesKey: Uint8Array ): string {\n\t\t\tconst encryptedString = getKey( licenseKey );\n\t\t\tconst encryptedArray = Array[ 'from' ]( stringToArray( encryptedString ) );\n\n\t\t\tconst saltByte2 = encryptedArray[ 'pop' ]()!;\n\t\t\tconst saltByte1 = encryptedArray[ 'pop' ]()!;\n\t\t\tconst counterValue = saltByte1 + saltByte2 * 256;\n\n\t\t\tconst jsonArray = aesCtr256( encryptedArray, aesKey, counterValue );\n\n\t\t\treturn arrayToString( jsonArray );\n\t\t}\n\n\t\t// Returns the license keys based on its format.\n\t\t// Read more: https://www.notion.so/Powered-by-CKEditor-e617fbad5a0f4df2a89f23aefc11ab1e.\n\t\tfunction getKey( licenseKey: string ): string {\n\t\t\tconst key = atob( licenseKey );\n\t\t\tconst [ license, date ] = key[ 'split' ]( '-' );\n\n\t\t\ttry {\n\t\t\t\tif ( atob( date ) ) {\n\t\t\t\t\t// New license.\n\t\t\t\t\treturn atob( license );\n\t\t\t\t}\n\t\t\t} catch ( err ) {\n\t\t\t\t// eslint-disable no-empty\n\t\t\t}\n\n\t\t\t// Old license.\n\t\t\treturn key;\n\t\t}\n\n\t\t// This is to verify if a user is allowed to use certain plugin based on license key that contains encoded data as\n\t\t// expiration date or plugin permissions.\n\t\t//\n\t\t// Validation is executed after a delay and a randomly named variable on `editor` is set as the result.\n\t\tconst premiumFeatures = getPremiumFeaturesConfig();\n\n\t\tconst premiumHandlers: Record<string, Function> = {\n\t\t\t[ 'checkLicense' ]: checkLicense,\n\t\t\t[ 'checkLicenseForTrackChanges' ]: checkLicenseForTrackChanges,\n\t\t\t[ 'checkLicenseForRevisionHistory' ]: checkLicenseForRevisionHistory\n\t\t};\n\n\t\tconst pluginName = ( pluginInstance[ 'constructor' ] as PluginConstructor )[ 'pluginName' ];\n\n\t\tconst editorOrContext = 'context' in pluginInstance ?\n\t\t\tpluginInstance.context as Context :\n\t\t\tpluginInstance.editor as Editor;\n\n\t\t// Plugin release date, which is used for validation purpose.\n\t\t// The release date is calculated and inserted automatically by the license injector script.\n\t\t// See \"src/licensing/injector/index.ts\" (`ckeditor5-dev-private`).\n\t\t//\n\t\t// DO NOT CHANGE THE LINE BELOW!\n\t\tconst featureReleaseDate = /* LICENSE_CHECKER_RELEASE_DATE_PATTERN_START */ '40461044'; /* LICENSE_CHECKER_RELEASE_DATE_PATTERN_END */\n\n\t\tconst alphanumericString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n\t\tconst licenseKey = editorOrContext.config.get( 'licenseKey' ) as string;\n\n\t\tconst pluginConfig = premiumFeatures[ 'find' ]( feature => feature[ 'pluginName' ] === pluginName );\n\n\t\t// If the plugin configuration is found, execute its license handler.\n\t\tif ( pluginConfig ) {\n\t\t\tcheckLicenseForPlugin( decodeLicenseKey( licenseKey ), pluginConfig );\n\t\t}\n\n\t\tfunction checkLicenseForPlugin( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): void {\n\t\t\tpremiumHandlers[ pluginConfig[ 'handler' ] ]( decodedLicense, pluginConfig );\n\n\t\t\tif ( pluginConfig[ 'checkAlso' ] ) {\n\t\t\t\tpluginConfig[ 'checkAlso' ]\n\t\t\t\t\t[ 'filter' ]( pluginConfig => hasPlugin( editorOrContext, pluginConfig[ 'pluginName' ] ) )\n\t\t\t\t\t[ 'forEach' ]( pluginConfig => checkLicenseForPlugin( decodedLicense, pluginConfig ) );\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Tries to decode the license.\n\t\t */\n\t\tfunction decodeLicenseKey( licenseKey: string ): DecodedLicense | null {\n\t\t\ttry {\n\t\t\t\tconst decryptedKey = decryptLicenseKey( licenseKey );\n\t\t\t\tconst data = JSON[ 'parse' ]( decryptedKey );\n\t\t\t\tconst expirationDate = parseInt( data[ '1' ] );\n\t\t\t\tconst isTrial = parseInt( data[ '3' ] );\n\t\t\t\tconst allowedPlugins = parseInt( data[ '4' ] ) || 0;\n\t\t\t\tconst isInternal = parseInt( data[ '5' ] ) || 0;\n\n\t\t\t\treturn {\n\t\t\t\t\t[ 'allowedPlugins' ]: allowedPlugins,\n\t\t\t\t\t[ 'expirationDate' ]: expirationDate,\n\t\t\t\t\t[ 'isTrial' ]: isTrial,\n\t\t\t\t\t[ 'isInternal' ]: isInternal\n\t\t\t\t};\n\t\t\t} catch ( e ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tfunction checkLicense( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): void {\n\t\t\tconst licenseStatus = getLicenseStatus( decodedLicense, pluginConfig );\n\n\t\t\thandleLicenseStatus( licenseStatus, pluginConfig );\n\t\t}\n\n\t\tfunction checkLicenseForTrackChanges( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): void {\n\t\t\tconst licenseStatus = getLicenseStatusForTrackChanges( decodedLicense, pluginConfig );\n\n\t\t\thandleLicenseStatus( licenseStatus, pluginConfig );\n\n\t\t\tfunction getLicenseStatusForTrackChanges( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): string {\n\t\t\t\ttry {\n\t\t\t\t\t// Check if subscription does not expire for the TrackChanges plugin.\n\t\t\t\t\tif ( hasPlugin( editorOrContext, 'TrackChangesEditing' ) && decodedLicense ) {\n\t\t\t\t\t\tconst executeSuggestion = getPlugin( editorOrContext, 'TrackChangesEditing' )[ '_executeSuggestion' ];\n\n\t\t\t\t\t\t// Release date is multiplied by 2 to make it less readable.\n\t\t\t\t\t\tif ( ( parseInt( executeSuggestion ) / 2 ) > decodedLicense[ 'expirationDate' ] ) {\n\t\t\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn getLicenseStatus( decodedLicense, pluginConfig );\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction checkLicenseForRevisionHistory( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): void {\n\t\t\tconst lkTrialTimeCheckString = rawAesKey3[ 0 ] * rawAesKey1[ 1 ];\n\t\t\tconst lkTrialRevisionsCheckString = rawAesKey3[ 0 ] * rawAesKey1[ 2 ];\n\t\t\tconst lkWsgCheckString = rawAesKey3[ 2 ] * rawAesKey1[ 2 ];\n\n\t\t\tif ( hasPlugin( editorOrContext, 'WebSocketGateway' ) ) {\n\t\t\t\tif ( getPlugin( editorOrContext, 'WebSocketGateway' )[ 'state' ] == 'connected' ) {\n\t\t\t\t\t( window[ getRandomVariableName() as any ] as any ) = lkWsgCheckString;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst licenseStatus = getLicenseStatusForRevisionHistory( decodedLicense, pluginConfig );\n\n\t\t\thandleLicenseStatusForRevisionHistory( licenseStatus, pluginConfig );\n\n\t\t\tfunction getLicenseStatusForRevisionHistory( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): string {\n\t\t\t\ttry {\n\t\t\t\t\tif ( checkAlreadyEnabled() ) {\n\t\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Valid' );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn getLicenseStatus( decodedLicense, pluginConfig );\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction handleLicenseStatusForRevisionHistory( status: string, pluginConfig: PluginConfig ): void {\n\t\t\t\tconst revisionsLimit = 7; // Initial + current + 5 revisions.\n\n\t\t\t\tif ( status == pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' ) {\n\t\t\t\t\t// Disable the editor.\n\t\t\t\t\tdisableEditor();\n\t\t\t\t} else if ( status == pluginConfig[ 'licenseStatusPrefix' ] + 'Trial' ) {\n\t\t\t\t\tconst isDisabled = checkAlreadyDisabledTrial();\n\n\t\t\t\t\tif ( isDisabled ) {\n\t\t\t\t\t\tdisableTrial( isDisabled, pluginConfig[ 'licenseStatusPrefix' ] );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Time limit.\n\t\t\t\t\tconst time = getTimeLimit();\n\n\t\t\t\t\twindow[ 'setTimeout' ]( () => {\n\t\t\t\t\t\tdisableTrial( 'time', pluginConfig[ 'licenseStatusPrefix' ] );\n\t\t\t\t\t}, time );\n\n\t\t\t\t\t// Revisions limit.\n\t\t\t\t\tconst revisions = getPlugin( editorOrContext, 'RevisionsRepository' )[ '_revisions' ];\n\n\t\t\t\t\tif ( revisions[ 'length' ] >= revisionsLimit ) {\n\t\t\t\t\t\tdisableTrial( 'revisions', pluginConfig[ 'licenseStatusPrefix' ] );\n\t\t\t\t\t} else {\n\t\t\t\t\t\trevisions.on( 'add', () => {\n\t\t\t\t\t\t\tif ( revisions[ 'length' ] >= revisionsLimit ) {\n\t\t\t\t\t\t\t\tdisableTrial( 'revisions', pluginConfig[ 'licenseStatusPrefix' ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction checkAlreadyDisabledTrial(): false | string {\n\t\t\t\tif ( !hasPlugin( editorOrContext, 'RevisionViewer' ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tfor ( const i in window ) {\n\t\t\t\t\t// Prevent accessing iframe by accident. See https://github.com/cksource/collaboration-features/issues/4370.\n\t\t\t\t\t// Frames are under string properties that are consecutive numbers, i.e., '0', '1', '2', etc.\n\t\t\t\t\t// Our \"random property name\" will always have some characters, so it will be `NaN` after converting to a number.\n\t\t\t\t\tif ( !Number.isNaN( Number( i ) ) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( window[ i ] as any === lkTrialTimeCheckString ) {\n\t\t\t\t\t\treturn 'time';\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( window[ i ] as any === lkTrialRevisionsCheckString ) {\n\t\t\t\t\t\treturn 'revisions';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfunction checkAlreadyEnabled(): boolean {\n\t\t\t\tif ( !hasPlugin( editorOrContext, 'RevisionViewer' ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tfor ( const i in window ) {\n\t\t\t\t\t// Prevent accessing iframe by accident. See https://github.com/cksource/collaboration-features/issues/4370.\n\t\t\t\t\tif ( !Number.isNaN( Number( i ) ) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( window[ i ] as any === lkWsgCheckString ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfunction disableTrial( reason: string, prefix: string ): void {\n\t\t\t\tdisableEditor();\n\t\t\t\tgenerateLicenseKeyVariable( prefix + 'TrialLimit:' + reason );\n\n\t\t\t\t( window[ getRandomVariableName() as any ] as any ) = reason === 'time' ? lkTrialTimeCheckString : lkTrialRevisionsCheckString;\n\t\t\t}\n\n\t\t\tfunction getTimeLimit(): number {\n\t\t\t\tlet limit = rawAesKey3[ 6 ] * rawAesKey1[ 8 ] * rawAesKey1[ 6 ]; // 146 * 83 * 50 = 605900 ~ ten minutes.\n\n\t\t\t\tif ( hasPlugin( editorOrContext, 'RevisionViewer' ) ) {\n\t\t\t\t\tlimit = limit / 10; // ~ 1 minute.\n\t\t\t\t}\n\n\t\t\t\treturn limit;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Disables the key editor method and marks the editor as blocked.\n\t\t\t */\n\t\t\tfunction disableEditor(): void {\n\t\t\t\tconst editor = editorOrContext as Editor;\n\n\t\t\t\tif ( editor[ 'state' ] == 'ready' ) {\n\t\t\t\t\t_disable();\n\t\t\t\t} else {\n\t\t\t\t\teditor[ 'once' ]( 'ready', () => {\n\t\t\t\t\t\tif ( hasPlugin( editor, 'RevisionTracker' ) ) {\n\t\t\t\t\t\t\t_disable();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasPlugin( editor, 'RevisionViewer' ) ) {\n\t\t\t\t\t\t\tconst repo = getPlugin( editor, 'RevisionsRepository' );\n\t\t\t\t\t\t\tconst v1 = repo.getRevision( 0 );\n\t\t\t\t\t\t\tconst v2 = repo.getEarlierVisibleRevision( v1[ 'id' ] );\n\n\t\t\t\t\t\t\tgetPlugin( editor, 'RevisionViewer' )[ 'compare' ]( v1[ 'id' ], v2 ? v2[ 'id' ] : null, 1 )\n\t\t\t\t\t\t\t\t.then( () => _disable() );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * @internal\n\t\t\t\t */\n\t\t\t\tfunction _disable(): void {\n\t\t\t\t\tif ( hasPlugin( editor, 'RevisionTracker' ) ) {\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionTracker' )[ 'unbind' ]( 'isEnabled' );\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionTracker' )[ 'isEnabled' ] = false;\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionTracker' )[ 'update' ] = emptyFunc;\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionTracker' )[ 'saveRevision' ] = emptyFunc;\n\n\t\t\t\t\t\teditor[ 'model' ][ 'change' ] = emptyFunc as any;\n\t\t\t\t\t\teditor[ 'model' ][ 'enqueueChange' ] = emptyFunc as any;\n\n\t\t\t\t\t\t// A random, not easy to find lock name.\n\t\t\t\t\t\teditor[ 'enableReadOnlyMode' ]( 'model' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasPlugin( editor, 'RevisionViewer' ) ) {\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionViewer' )[ 'unbind' ]( 'isEnabled' );\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionViewer' )[ 'isEnabled' ] = false;\n\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionViewer' )[ 'compare' ] = emptyFunc;\n\t\t\t\t\t\tgetPlugin( editor, 'RevisionViewer' )[ '_getDiff' ] = emptyFunc;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Checks if license key is valid, i.e. whether the premium feature is allowed to be used.\n\t\t */\n\t\tfunction getLicenseStatus( decodedLicense: DecodedLicense | null, pluginConfig: PluginConfig ): string {\n\t\t\ttry {\n\t\t\t\t// Check if the feature is allowed even without providing the license key.\n\t\t\t\tif ( isPluginAllowedWithoutLicense( pluginConfig ) ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Valid' );\n\t\t\t\t}\n\n\t\t\t\t// Check if the license has been encoded correctly.\n\t\t\t\tif ( !decodedLicense ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t}\n\n\t\t\t\t// Check if the features used in the build are allowed.\n\t\t\t\tif ( !isPluginAllowedByLicense( decodedLicense[ 'allowedPlugins' ], pluginConfig ) ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t}\n\n\t\t\t\t// Check if the build is used in our internal code and if it is used properly.\n\t\t\t\tif ( decodedLicense[ 'isInternal' ] ) {\n\t\t\t\t\tif ( !( window as any )[ 'open' ][ 'closed' ] ) {\n\t\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Check if subscription does not expire for the Comments plugin.\n\t\t\t\t// Release date is multiplied by 2 to make it less readable.\n\t\t\t\tif ( ( parseInt( featureReleaseDate ) / 2 ) > decodedLicense[ 'expirationDate' ] ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t\t}\n\n\t\t\t\t// Check if subscription is for a trial.\n\t\t\t\tif ( decodedLicense[ 'isTrial' ] ) {\n\t\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Trial' );\n\t\t\t\t}\n\n\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Valid' );\n\t\t\t} catch ( e ) {\n\t\t\t\treturn generateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' );\n\t\t\t}\n\t\t}\n\n\t\tfunction handleLicenseStatus( status: string, pluginConfig: PluginConfig ): void {\n\t\t\tconst isContext = editorOrContext instanceof Context;\n\n\t\t\tif ( isContext ) {\n\t\t\t\tconst context = editorOrContext;\n\n\t\t\t\t// If we are operating in `Context` then use time to limit how long the editor is operating\n\t\t\t\t// and disable all the editors and `CommentsRepository` at the same time.\n\t\t\t\tif ( status == pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' ) {\n\t\t\t\t\tdisableContext( context );\n\t\t\t\t} else if ( status == pluginConfig[ 'licenseStatusPrefix' ] + 'Trial' ) {\n\t\t\t\t\twindow[ 'setTimeout' ]( () => {\n\t\t\t\t\t\tdisableContext( context );\n\t\t\t\t\t\tgenerateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'TrialLimit:time' );\n\t\t\t\t\t}, rawAesKey3[ 6 ] * rawAesKey1[ 8 ] * rawAesKey1[ 6 ] ); // 146 * 83 * 50 = 605900 ~ ten minutes.\n\t\t\t\t}\n\n\t\t\t\t// When a new editor is added to the context, disable it, if needed.\n\t\t\t\tcontext[ 'editors' ][ 'on' ]( 'add', ( evt, newEditor ) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tstatus == pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' ||\n\t\t\t\t\t\tstatus == pluginConfig[ 'licenseStatusPrefix' ] + 'TrialLimit:time' ||\n\t\t\t\t\t\tstatus == pluginConfig[ 'licenseStatusPrefix' ] + 'TrialLimit:operations'\n\t\t\t\t\t) {\n\t\t\t\t\t\tdisableEditor( newEditor );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tconst editor = editorOrContext;\n\n\t\t\t\tif ( status == pluginConfig[ 'licenseStatusPrefix' ] + 'Invalid' ) {\n\t\t\t\t\t// Disable just the editor.\n\t\t\t\t\tdisableEditor( editor );\n\t\t\t\t} else if ( status == pluginConfig[ 'licenseStatusPrefix' ] + 'Trial' ) {\n\t\t\t\t\t// If we are operating in `Editor` then use number of operations to put the editor in the read-only mode.\n\t\t\t\t\teditor[ 'on' ]( 'ready', () => {\n\t\t\t\t\t\tlet operationsCounter = 0;\n\n\t\t\t\t\t\teditor[ 'model' ][ 'on' ]( 'applyOperation', ( evt: any, args: Record<string, any> ) => {\n\t\t\t\t\t\t\tif ( args[ 0 ][ 'isDocumentOperation' ] ) {\n\t\t\t\t\t\t\t\toperationsCounter++;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( operationsCounter === 28 * 18 ) {\n\t\t\t\t\t\t\t\tdisableEditor( editor );\n\t\t\t\t\t\t\t\tgenerateLicenseKeyVariable( pluginConfig[ 'licenseStatusPrefix' ] + 'TrialLimit:operations' );\n\t\t\t\t\t\t\t\tevt[ 'off' ]();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, { priority: 'highest' } );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction generateLicenseKeyVariable( status: string ): string {\n\t\t\tconst varName = getRandomVariableName();\n\n\t\t\t( editorOrContext as Editor & Record<string, string> )[ varName ] = status;\n\n\t\t\treturn status;\n\t\t}\n\n\t\tfunction getRandomVariableName(): string {\n\t\t\tconst intAsString = String( window[ 'performance' ][ 'now' ]() )[ 'replace' ]( '.', '' );\n\t\t\tlet varName = '';\n\n\t\t\tfor ( let i = 0; i < intAsString[ 'length' ]; i += 2 ) {\n\t\t\t\tlet randomNumber = parseInt( intAsString[ 'substring' ]( i, i + 2 ) );\n\n\t\t\t\tif ( randomNumber >= alphanumericString[ 'length' ] ) {\n\t\t\t\t\trandomNumber -= alphanumericString[ 'length' ];\n\t\t\t\t}\n\n\t\t\t\t// Limit characters only to a-z (65-90) and 0-9 (48-59).\n\t\t\t\tvarName += alphanumericString[ randomNumber ];\n\t\t\t}\n\n\t\t\treturn varName;\n\t\t}\n\n\t\tfunction disableContext( context: Context ): void {\n\t\t\tfor ( const editor of context[ 'editors' ] ) {\n\t\t\t\tdisableEditor( editor );\n\t\t\t}\n\n\t\t\tgetPlugin( context, 'CommentsRepository' )[ 'switchReadOnly' ]( true );\n\t\t\tgetPlugin( context, 'CommentsRepository' )[ 'switchReadOnly' ] = emptyFunc;\n\t\t}\n\n\t\tfunction disableEditor( editor: Editor ): void {\n\t\t\tif ( editor[ 'state' ] == 'ready' ) {\n\t\t\t\t_disable();\n\t\t\t} else {\n\t\t\t\teditor[ 'once' ]( 'ready', () => _disable() );\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * @internal\n\t\t\t */\n\t\t\tfunction _disable(): void {\n\t\t\t\teditor[ 'model' ][ 'change' ] = emptyFunc as any;\n\t\t\t\teditor[ 'model' ][ 'enqueueChange' ] = emptyFunc as any;\n\n\t\t\t\teditor[ 'enableReadOnlyMode' ]( 'model' );\n\t\t\t}\n\t\t}\n\n\t\tfunction emptyFunc(): null {\n\t\t\treturn null;\n\t\t}\n\n\t\tfunction isPluginAllowedByLicense( allowedPluginsMask: number, pluginConfig: PluginConfig ): boolean {\n\t\t\treturn !!( allowedPluginsMask & pluginConfig[ 'permissionMask' ]! );\n\t\t}\n\n\t\tfunction isPluginAllowedWithoutLicense( pluginConfig: PluginConfig ): boolean {\n\t\t\tconst isPluginLoaded = hasPlugin( editorOrContext, pluginConfig[ 'pluginName' ] );\n\n\t\t\tif ( !isPluginLoaded ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst options = pluginConfig[ 'options' ] || {};\n\t\t\tconst v0aiwsgic = options[ 'aiwsgic' ] || false;\n\t\t\tconst v0aitcdgil = options[ 'aitcdgil' ] || false;\n\n\t\t\t// isWebSocketGatewayConnected\n\t\t\tconst x0iswsgc =\n\t\t\t\thasPlugin( editorOrContext, 'WebSocketGateway' ) &&\n\t\t\t\tgetPlugin( editorOrContext, 'WebSocketGateway' )[ 'state' ] == 'connected';\n\n\t\t\t// Do not check the license key when the CS RealTimeCollaborativeEditing is enabled.\n\t\t\tif ( x0iswsgc && v0aiwsgic ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// isTrackChangesDataGetterLoaded\n\t\t\tconst x0itcdgl =\n\t\t\t\thasPlugin( editorOrContext, 'TrackChangesDataGetter' ) &&\n\t\t\t\tgetPlugin( editorOrContext, 'TrackChangesDataGetter' )[ 'result' ] == 'end';\n\n\t\t\t// Do not check the license key when the fake TrackChangesDataGetter plugin is enabled.\n\t\t\t// It is used by a virtual editor of the TrackChangedData plugin.\n\t\t\tif ( x0itcdgl && v0aitcdgil ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction hasPlugin( editorOrContext: Editor | Context, pluginName: string ): boolean {\n\t\t\treturn editorOrContext[ 'plugins' ][ 'has' ]( pluginName );\n\t\t}\n\n\t\tfunction getPlugin( editorOrContext: Editor | Context, pluginName: string ): any {\n\t\t\treturn editorOrContext[ 'plugins' ][ 'get' ]( pluginName );\n\t\t}\n\n\t\t// Converts array with bytes into a `String`.\n\t\tfunction arrayToString( value: Array<number> ): string {\n\t\t\tlet string = '';\n\n\t\t\tfor ( const byte of value ) {\n\t\t\t\tstring += String[ 'fromCharCode' ]( byte );\n\t\t\t}\n\n\t\t\treturn string;\n\t\t}\n\t\t// Converts string into `Uint8Array` containing characters as bytes.\n\t\tfunction stringToArray( value: string ): Uint8Array {\n\t\t\tconst bytes = new Uint8Array( value[ 'length' ] );\n\n\t\t\tfor ( let i = 0; i < value[ 'length' ]; i++ ) {\n\t\t\t\tbytes[ i ] = value[ 'charCodeAt' ]( i );\n\t\t\t}\n\n\t\t\treturn bytes;\n\t\t}\n\t} )( pluginInstance );\n\n\tfunction aesCtr256( messageBytes: Array<number>, aesKey: Uint8Array, counterValue: number ): Array<number> {\n\t\t//\n\t\t// Defining some constants used by AES.\n\t\t//\n\t\tconst AESConstants: Record<string, any> = {};\n\n\t\tAESConstants[ 'numberOfRounds' ] = { 16: 10, 24: 12, 32: 14 };\n\n\t\t/* eslint-disable max-len */\n\n\t\t// Round constant words\n\t\tAESConstants[ 'rcon' ] = [ 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91 ];\n\n\t\t// S-box\n\t\tAESConstants[ 'S' ] = [ 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 ];\n\n\t\t// Transformations for encryption\n\t\tAESConstants[ 'T1' ] = [ 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a ];\n\t\tAESConstants[ 'T2' ] = [ 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616 ];\n\t\tAESConstants[ 'T3' ] = [ 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16 ];\n\t\tAESConstants[ 'T4' ] = [ 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c ];\n\n\t\t// Transformations for decryption key expansion\n\t\tAESConstants[ 'U1' ] = [ 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3 ];\n\t\tAESConstants[ 'U2' ] = [ 0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697 ];\n\t\tAESConstants[ 'U3' ] = [ 0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46 ];\n\t\tAESConstants[ 'U4' ] = [ 0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d ];\n\n\t\t/* eslint-enable max-len */\n\n\t\t//\n\t\t// AES init and encryption algorithm init.\n\t\t//\n\t\tconst counter = new Uint8Array( 16 );\n\n\t\tfor ( let index = 15; index >= 0; --index ) {\n\t\t\tcounter[ index ] = counterValue % 256;\n\n\t\t\tcounterValue = parseInt( ( counterValue / 256 ) as any );\n\t\t}\n\n\t\tlet remainingCounter: Uint8Array | null = null;\n\t\tlet remainingCounterIndex = 16;\n\n\t\tconst key = new Uint8Array( aesKey );\n\t\tconst _Ke: Array<Array<number>> = [];\n\t\tconst _Kd: Array<Array<number>> = [];\n\n\t\tprepareAes();\n\n\t\t//\n\t\t// Actual encryption algorithm.\n\t\t//\n\t\tfor ( let i = 0; i < messageBytes[ 'length' ]; i++ ) {\n\t\t\tif ( remainingCounterIndex === 16 ) {\n\t\t\t\tremainingCounter = encrypt( counter );\n\t\t\t\tremainingCounterIndex = 0;\n\n\t\t\t\tincrementCounter( counter );\n\t\t\t}\n\n\t\t\tmessageBytes[ i ] ^= remainingCounter![ remainingCounterIndex++ ];\n\t\t}\n\n\t\treturn messageBytes;\n\n\t\t//\n\t\t// Defining functions used in the algorithm.\n\t\t//\n\t\tfunction convertToInt32( bytes: Uint8Array ) {\n\t\t\tconst result: Array<any> = [];\n\n\t\t\tfor ( let i = 0; i < bytes[ 'length' ]; i += 4 ) {\n\t\t\t\tresult[ 'push' ](\n\t\t\t\t\t( bytes[ i ] << 24 ) |\n\t\t\t\t\t( bytes[ i + 1 ] << 16 ) |\n\t\t\t\t\t( bytes[ i + 2 ] << 8 ) |\n\t\t\t\t\tbytes[ i + 3 ]\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tfunction incrementCounter( counter: Uint8Array ) {\n\t\t\tfor ( let i = 15; i >= 0; i-- ) {\n\t\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\t\tif ( counter[ i ] === 255 ) {\n\t\t\t\t\tcounter[ i ] = 0;\n\t\t\t\t} else {\n\t\t\t\t\tcounter[ i ]++;\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction encrypt( message: Uint8Array ) {\n\t\t\tconst rounds = _Ke[ 'length' ] - 1;\n\t\t\tconst a = [ 0, 0, 0, 0 ];\n\n\t\t\tlet t = convertToInt32( message );\n\n\t\t\tfor ( let i = 0; i < 4; i++ ) {\n\t\t\t\tt[ i ] ^= _Ke[ 0 ][ i ];\n\t\t\t}\n\n\t\t\tfor ( let r = 1; r < rounds; r++ ) {\n\t\t\t\tfor ( let i = 0; i < 4; i++ ) {\n\t\t\t\t\ta[ i ] = (\n\t\t\t\t\t\tAESConstants[ 'T1' ][ ( t[ i ] >> 24 ) & 0xff ] ^\n\t\t\t\t\t\tAESConstants[ 'T2' ][ ( t[ ( i + 1 ) % 4 ] >> 16 ) & 0xff ] ^\n\t\t\t\t\t\tAESConstants[ 'T3' ][ ( t[ ( i + 2 ) % 4 ] >> 8 ) & 0xff ] ^\n\t\t\t\t\t\tAESConstants[ 'T4' ][ t[ ( i + 3 ) % 4 ] & 0xff ] ^\n\t\t\t\t\t\t_Ke[ r ][ i ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tt = a[ 'slice' ]();\n\t\t\t}\n\n\t\t\tconst result = new Uint8Array( 16 );\n\t\t\tlet tt;\n\n\t\t\tfor ( let i = 0; i < 4; i++ ) {\n\t\t\t\ttt = _Ke[ rounds ][ i ];\n\n\t\t\t\tresult[ 4 * i ] = ( AESConstants[ 'S' ][ ( t[ i ] >> 24 ) & 0xff ] ^ ( tt >> 24 ) ) & 0xff;\n\t\t\t\tresult[ 4 * i + 1 ] = ( AESConstants[ 'S' ][ ( t[ ( i + 1 ) % 4 ] >> 16 ) & 0xff ] ^ ( tt >> 16 ) ) & 0xff;\n\t\t\t\tresult[ 4 * i + 2 ] = ( AESConstants[ 'S' ][ ( t[ ( i + 2 ) % 4 ] >> 8 ) & 0xff ] ^ ( tt >> 8 ) ) & 0xff;\n\t\t\t\tresult[ 4 * i + 3 ] = ( AESConstants[ 'S' ][ t[ ( i + 3 ) % 4 ] & 0xff ] ^ tt ) & 0xff;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\tfunction prepareAes() {\n\t\t\tconst rounds = AESConstants[ 'numberOfRounds' ][ key[ 'length' ] ];\n\n\t\t\tfor ( let i = 0; i <= rounds; i++ ) {\n\t\t\t\t_Ke[ 'push' ]( [ 0, 0, 0, 0 ] );\n\t\t\t\t_Kd[ 'push' ]( [ 0, 0, 0, 0 ] );\n\t\t\t}\n\n\t\t\tconst roundKeyCount = ( rounds + 1 ) * 4;\n\t\t\tconst KC = key[ 'length' ] / 4;\n\n\t\t\tconst tk = convertToInt32( key );\n\n\t\t\tlet index;\n\n\t\t\tfor ( let i = 0; i < KC; i++ ) {\n\t\t\t\tindex = i >> 2;\n\n\t\t\t\t_Ke[ index ][ i % 4 ] = tk[ i ];\n\t\t\t\t_Kd[ rounds - index ][ i % 4 ] = tk[ i ];\n\t\t\t}\n\n\t\t\tlet rconPointer = 0;\n\t\t\tlet t = KC;\n\t\t\tlet tt;\n\n\t\t\twhile ( t < roundKeyCount ) {\n\t\t\t\ttt = tk[ KC - 1 ];\n\n\t\t\t\ttk[ 0 ] ^= (\n\t\t\t\t\t( AESConstants[ 'S' ][ ( tt >> 16 ) & 0xFF ] << 24 ) ^\n\t\t\t\t\t( AESConstants[ 'S' ][ ( tt >> 8 ) & 0xFF ] << 16 ) ^\n\t\t\t\t\t( AESConstants[ 'S' ][ tt & 0xFF ] << 8 ) ^\n\t\t\t\t\t( AESConstants[ 'S' ][ ( tt >> 24 ) & 0xFF ] ) ^\n\t\t\t\t\t( AESConstants[ 'rcon' ][ rconPointer ] << 24 )\n\t\t\t\t);\n\n\t\t\t\trconPointer += 1;\n\n\t\t\t\tfor ( let i = 1; i < ( KC / 2 ); i++ ) {\n\t\t\t\t\ttk[ i ] ^= tk[ i - 1 ];\n\t\t\t\t}\n\n\t\t\t\ttt = tk[ ( KC / 2 ) - 1 ];\n\n\t\t\t\ttk[ KC / 2 ] ^= (\n\t\t\t\t\t( AESConstants[ 'S' ][ tt & 0xFF ] ) ^\n\t\t\t\t\t( AESConstants[ 'S' ][ ( tt >> 8 ) & 0xFF ] << 8 ) ^\n\t\t\t\t\t( AESConstants[ 'S' ][ ( tt >> 16 ) & 0xFF ] << 16 ) ^\n\t\t\t\t\t( AESConstants[ 'S' ][ ( tt >> 24 ) & 0xFF ] << 24 )\n\t\t\t\t);\n\n\t\t\t\tfor ( let i = ( KC / 2 ) + 1; i < KC; i++ ) {\n\t\t\t\t\ttk[ i ] ^= tk[ i - 1 ];\n\t\t\t\t}\n\n\t\t\t\tlet i = 0;\n\t\t\t\tlet r;\n\t\t\t\tlet c;\n\n\t\t\t\twhile ( i < KC && t < roundKeyCount ) {\n\t\t\t\t\tr = t >> 2;\n\t\t\t\t\tc = t % 4;\n\n\t\t\t\t\t_Ke[ r ][ c ] = tk[ i ];\n\t\t\t\t\t_Kd[ rounds - r ][ c ] = tk[ i++ ];\n\n\t\t\t\t\tt++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( let r = 1; r < rounds; r++ ) {\n\t\t\t\tfor ( let c = 0; c < 4; c++ ) {\n\t\t\t\t\ttt = _Kd[ r ][ c ];\n\n\t\t\t\t\t_Kd[ r ][ c ] = (\n\t\t\t\t\t\tAESConstants[ 'U1' ][ ( tt >> 24 ) & 0xFF ] ^\n\t\t\t\t\t\tAESConstants[ 'U2' ][ ( tt >> 16 ) & 0xFF ] ^\n\t\t\t\t\t\tAESConstants[ 'U3' ][ ( tt >> 8 ) & 0xFF ] ^\n\t\t\t\t\t\tAESConstants[ 'U4' ][ tt & 0xFF ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/* MASK_STRING_END */\n\t/* eslint-enable dot-notation, max-len, no-useless-computed-key, no-unexpected-multiline */\n}\n\n/* LICENSE_CHECKER_DEFINITION_PATTERN_END */\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module document-outline/tableofcontents/tableofcontentsui\n */\n\nimport { ButtonView } from 'ckeditor5/src/ui';\nimport { CKEditorError, type Locale } from 'ckeditor5/src/utils';\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\n\nimport type TableOfContentsCommand from './tableofcontentscommand';\n\nimport tableOfContentsIcon from '../../theme/icons/table-of-contents.svg';\n\n/**\n * The UI plugin of the table of contents feature.\n */\nexport default class TableOfContentsUI extends Plugin {\n\tdeclare public licenseKey: string;\n\n\t/**\n\t * @internal\n\t */\n\tprivate _licenseKeyCheckInterval: ReturnType<typeof setInterval> | null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName(): 'TableOfContentsUI' {\n\t\treturn 'TableOfContentsUI';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._licenseKeyCheckInterval = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\teditor.ui.componentFactory.add( 'tableOfContents', ( locale: Locale ) => {\n\t\t\tconst command: TableOfContentsCommand = editor.commands.get( 'insertTableOfContents' )!;\n\n\t\t\tconst buttonView = new ButtonView( locale );\n\n\t\t\tbuttonView.set( {\n\t\t\t\tlabel: t( 'Table of contents' ),\n\t\t\t\ticon: tableOfContentsIcon,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tbuttonView.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t\t// Execute the command when the button is clicked (executed).\n\t\t\tthis.listenTo( buttonView, 'execute', () => editor.execute( 'insertTableOfContents' ) );\n\n\t\t\treturn buttonView;\n\t\t} );\n\n\t\t// Fake variable to mislead anyone trying to reverse engineer obfuscated code.\n\t\tthis.licenseKey = editor.config.get( 'licenseKey' ) as string;\n\n\t\t// License status handling starts here.\n\t\tconst context = this.editor;\n\n\t\t// Checks the result of license key validation.\n\t\t// Some plugins validates the license key to check if user is allowed to use them.\n\t\t// When key is not valid then core editor function is disabled and special status is set.\n\t\t// Code for checking the result of the validation is placed here to hide the place where validation is\n\t\t// processed to make it more difficult to find it and crack it.\n\t\t/* istanbul ignore next -- @preserve */\n\t\tthis._licenseKeyCheckInterval = setInterval( () => {\n\t\t\tlet licenseStatus;\n\n\t\t\tfor ( const i in context ) {\n\t\t\t\tconst key = i as keyof typeof context;\n\t\t\t\tconst v = context[ key ];\n\n\t\t\t\tif (\n\t\t\t\t\tv === 'tableOfContentsLicenseKeyTrial' ||\n\t\t\t\t\tv === 'tableOfContentsLicenseKeyInvalid' ||\n\t\t\t\t\tv === 'tableOfContentsLicenseKeyValid' ||\n\t\t\t\t\tv === 'tableOfContentsLicenseKeyTrialLimit:operations'\n\t\t\t\t) {\n\t\t\t\t\tdelete context[ key ];\n\n\t\t\t\t\tlicenseStatus = v;\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( licenseStatus === 'tableOfContentsLicenseKeyInvalid' ) {\n\t\t\t\tclearInterval( this._licenseKeyCheckInterval! );\n\n\t\t\t\t/**\n\t\t\t\t * Invalid license key. Please contact our customer support at https://ckeditor.com/contact/.\n\t\t\t\t *\n\t\t\t\t * @error table-of-contents-invalid-license-key\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'table-of-contents-invalid-license-key', null );\n\t\t\t}\n\n\t\t\tif ( licenseStatus === 'tableOfContentsLicenseKeyTrial' ) {\n\t\t\t\tconsole.info(\n\t\t\t\t\t'You are using the trial version of CKEditor 5 table of contents plugin with limited usage. ' +\n\t\t\t\t\t'Make sure you will not use it in the production environment.'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( licenseStatus === 'tableOfContentsLicenseKeyTrialLimit:operations' ) {\n\t\t\t\tclearInterval( this._licenseKeyCheckInterval! );\n\n\t\t\t\t/**\n\t\t\t\t * You have exhausted the trial usage limit (reason: reached document changes limit). Restart the editor.\n\t\t\t\t *\n\t\t\t\t * Please contact our customer support to get a full access at https://ckeditor.com/contact/.\n\t\t\t\t *\n\t\t\t\t * @error table-of-contents-trial-license-key-reached-limit-changes\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'table-of-contents-trial-license-key-reached-limit-changes',\n\t\t\t\t\tnull\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( licenseStatus === 'tableOfContentsLicenseKeyValid' ) {\n\t\t\t\tclearInterval( this._licenseKeyCheckInterval! );\n\t\t\t}\n\t\t}, 1000 );\n\t}\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3 19a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v8.022a6.47 6.47 0 0 0-1.5-.709V2a.5.5 0 0 0-.5-.5H3a.5.5 0 0 0-.5.5v15a.5.5 0 0 0 .5.5h6.313c.173.534.412 1.037.709 1.5H3Z\\\"/><path d=\\\"M9.174 14a6.489 6.489 0 0 0-.155 1H6v-1h3.174Z\\\"/><path d=\\\"M10.022 12c-.202.316-.378.65-.524 1H4v-1h6.022Z\\\"/><path d=\\\"M12.034 10c-.448.283-.86.62-1.224 1H6v-1h6.034Z\\\"/><path d=\\\"M12 4v1H4V4h8Z\\\"/><path d=\\\"M14 7V6H6v1h8Z\\\"/><path d=\\\"M15 9V8H7v1h8Z\\\"/><path clip-rule=\\\"evenodd\\\" d=\\\"M20 15.5a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0ZM15.5 13a.5.5 0 0 0-.5.5V15h-1.5a.5.5 0 0 0 0 1H15v1.5a.5.5 0 0 0 1 0V16h1.5a.5.5 0 0 0 0-1H16v-1.5a.5.5 0 0 0-.5-.5Z\\\"/></svg>\\n\";","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./documentoutline.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./tableofcontents.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/core.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/engine.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/ui.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/utils.js\");","module.exports = (__webpack_require__(/*! dll-reference CKEditor5.dll */ \"dll-reference CKEditor5.dll\"))(\"./src/widget.js\");","module.exports = CKEditor5.dll;","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_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\tid: moduleId,\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, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/index.ts\");\n"],"sourceRoot":""}
|