@knapsack/core 4.71.1 → 4.71.2
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/dist/index.js +30 -30
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js","../../../node_modules/.pnpm/is-arrayish@0.3.2/node_modules/is-arrayish/index.js","../../../node_modules/.pnpm/simple-swizzle@0.2.2/node_modules/simple-swizzle/index.js","../../../node_modules/.pnpm/color-string@1.9.1/node_modules/color-string/index.js","../src/users.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/utils/env.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/utils/errors.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/utils/common.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/utils/plugins.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/core/scope.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/core/finalize.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/core/proxy.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/core/immerClass.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/core/current.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/immer.ts","../../types/src/ui-config.ts","../../types/src/color-config.ts","../../types/src/typography-config.ts","../../types/src/nav-customization-config.ts","../../types/src/app-client-data/design-tokens-types/token-definitions.ts","../../types/src/app-client-data/design-tokens-types/token-data.ts","../../types/src/app-client-data/design-tokens-types/token-src-value-info.ts","../../types/src/app-client-data/design-tokens-types/token-src.ts","../../types/src/app-client-data/design-tokens-types/token-utils.ts","../../types/src/app-client-data/patterns.ts","../../types/src/app-client-data/page.header.ts","../../types/src/app-client-data/index.ts","../../types/src/app-client-data-v3/index.ts","../../types/src/app-client-data-migrations/4.1.7-demos.ts","../../types/src/json-schema.ts","../../types/src/changes.ts","../../types/src/renderer-client-types.ts","../../types/src/git-providers.ts","../../types/src/api/plugins.ts","../../types/src/api/files.ts","../../types/src/user-roles.ts","../src/webhooks.ts","../src/ks-urls.ts","../src/http-headers.ts"],"names":["require_color_name","__commonJSMin","exports","module","require_is_arrayish","__name","obj","require_simple_swizzle","isArrayish","concat","slice","swizzle","args","results","i","len","arg","fn","require_color_string","colorNames","hasOwnProperty","reverseNames","name","cs","string","prefix","val","model","abbr","hex","rgba","per","keyword","rgb","match","hexAlpha","i2","clamp","hsl","alpha","h","s","l","a","hwb","w","b","hexDouble","r","g","hsla","hwba","num","min","max","str","NOTHING","DRAFTABLE","DRAFT_STATE","errors","plugin","thing","data","die","error","e","msg","getPrototypeOf","isDraft","value","isDraftable","isPlainObject","isMap","isSet","objectCtorString","proto","Ctor","each","iter","getArchtype","key","entry","index","state","has","prop","set","propOrOldValue","t","is","x","y","target","latest","shallowCopy","base","strict","isPlain","descriptors","keys","desc","freeze","deep","isFrozen","dontMutateFrozenCollections","plugins","getPlugin","pluginKey","currentScope","getCurrentScope","createScope","parent_","immer_","usePatchesInScope","scope","patchListener","revokeScope","leaveScope","revokeDraft","enterScope","immer","draft","processResult","result","baseDraft","finalize","maybeFreeze","rootScope","path","childValue","finalizeProperty","resultEach","parentState","targetObject","rootPath","targetIsSet","res","createProxyProxy","parent","isArray","traps","objectTraps","arrayTraps","revoke","proxy","source","readPropFromProto","peek","prepareCopy","createProxy","getDescriptorFromProto","current","currentState","markChanged","owner","Immer","config","recipe","defaultBase","self","hasError","p","ip","patches","inversePatches","patch","applyPatchesImpl","currentImpl","copy","produce","setAutoFreeze","setUseStrictShallowCopy","ce","n","ue","isColor","color","colorString","ColorStringStruct","define","ColorConfigStruct","union","type","literal","ColorTokenConfigStruct","HeadingLevels","FontSizeConfigValStruct","object","enums","number","FontFaceWeightStruct","FontFaceSourceFormats","FontFaceFormatsEnumStruct","FontFaceSourceStruct","FontFaceConfigStruct","optional","size","array","TextTransforms","Ge","FontStretches","$e","TypographyLinkConfigStruct","boolean","FontSizeConfigStruct","TypographyConfigStruct","NavCustomizationConfigStruct","PrimaryNavCustomizationConfigStruct","SecondaryNavCustomizationConfigStruct","defaulted","UiConfigV5Struct","UiConfigV7Struct","UiConfigV9Struct","isTokenReference","hasTokenReferences","isNotTokenReference","TokenReferenceStruct","compositeTypesRecord","tokenTypeComposites","singularTypesRecord","tokenTypeSingulars","isTokenTypeComposite","isTokenTypeSingular","expectType","TokenDataBaseStruct","isTokenDataComposite","tokenData","isTokenValueColor","TokenValueColorStruct","TokenDataColorNonRefStruct","TokenDataColorRefStruct","isTokenValueDimension","TokenValueDimensionStruct","TokenDataDimensionNonRefStruct","TokenDataDimensionRefStruct","isTokenValueDuration","TokenValueDurationStruct","TokenDataDurationNonRefStruct","TokenDataDurationRefStruct","isTokenValueFontWeight","TokenValueFontWeightStruct","TokenDataFontWeightNonRefStruct","TokenDataFontWeightRefStruct","TokenValueCubicBezierStruct","v","TokenDataCubicBezierNonRefStruct","TokenDataCubicBezierRefStruct","isTokenValueShadow","isObject","TokenValueShadowStruct","TokenDataShadowNonRefStruct","TokenDataShadowRefStruct","TokenValueStrokeStyleStruct","isTokenValueBorder","TokenValueBorderStruct","TokenDataBorderNonRefStruct","TokenDataBorderRefStruct","isTokenValueTransition","TokenValueTransitionStruct","TokenDataTransitionNonRefStruct","TokenDataTransitionRefStruct","TokenDataStringNonRefStruct","TokenDataStringRefStruct","TokenDataStrokeStyleNonRefStruct","TokenDataStrokeStyleRefStruct","TokenDataNumberNonRefStruct","TokenDataNumberRefStruct","TokenDataBooleanNonRefStruct","TokenDataBooleanRefStruct","assertTokenData","isObjKey","kind","isTokenSrcValueInfoSingular","tokenSrcValueInfo","isTokenSrcValueInfoComposite","isTokenSrcExtensions","extensionsObj","isTokenSrc","tokenObject","isTokenGroup","isTokenTypeVarRef","varRefCollectionInfo","getPrimitiveValue","tokenValue","parseTokenDimensionValue","valueToParse","unit","parseNumberWithUnit","slottedData","isSlottedTemplateDemo","isSlottedTemplateReference","StageLayouts","isDataDemo","demo","isTemplateDemo","PageHeaderSizes","isKsAppClientDataNoMeta","isKsAppClientDataAndMeta","isKsAppClientDataNoMetaV3","isKsAppClientDataAndMetaV3","KsMetaStateStructV3","appClientData","pattern","slotName","slotData","pId","templates","tId","demoIds","PropTypeNames","isStringProp","isNumberProp","isBooleanProp","isOptionsProp","isFunctionProp","isCustomTypeScriptProp","isArrayOfStringsProp","isArrayOfNumbersProp","PatchStructRuntime","PatchStruct","isPatch","PatchesStructRuntime","PatchesStruct","KsRemoteChangeRuntime","KsRemoteChangeStruct","change","KsRemoteChangesStructRuntime","KsRemoteChangesStruct","isKsRemoteChanges","changes","KsRendererClientEvents","ksRendererClientMetaId","GitProviderType","eo","MergeableState","RestActions","TextEncoding","no","plugins_exports","__export","ACTIONS","endpoint","files_exports","Ne","rolesById","roles","RolesEnums","ii","RolesEnumsStruct","canRoleAdmin","role","rolesThatCanManageUsers","canRoleManageUsers","rolesThatCanDelete","canRoleDelete","rolesThatCanEdit","canRoleEdit","rolesThatCanPublish","canRolePublish","rolesThatCanView","canRoleView","isRoleValid","HasuraRoles","HasuraRolesStruct","HasuraClaimsStruct","KsClaimsStruct","record","JwtBaseStruct","HASURA_CLAIMS_NAMESPACE","KNAPSACK_CLAIMS_NAMESPACE","JwtCustomClaimsStruct","JwtWithCustomClaimsStruct","assign","expandSitesByRole","sitesByRole","cur","roleId","siteIds","siteId","defaultAnonymousKsClaims","getKsClaims","claims","ksClaims","siteRoleMap","siteDeployedWebhookEndpoint","gitHubOauthInternalEndpoint","KS_DB_URL","isUrl","dbUrl","dbGqlEndpoint","ksUrls","ksHttpHeaders"],"mappings":"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","file":"index.js","sourcesContent":["'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","/**\n * @file\n *\n * All things involving low-level user JWT parsing, claims, roles.\n */\n\nimport {\n array,\n boolean,\n Describe,\n enums,\n number,\n object,\n optional,\n string,\n type,\n union,\n record,\n assign,\n} from 'superstruct';\nimport { roles, type Role } from '@knapsack/types';\n\n// Superstruct runtime validation for Role\nexport const RolesEnums = enums(roles);\nexport const RolesEnumsStruct: Describe<Role> = RolesEnums;\n\nexport const canRoleAdmin = (role: Role): boolean => role === 'ADMIN';\n\nexport const rolesThatCanManageUsers: Role[] = ['ADMIN', 'MANAGER'];\n\nexport const canRoleManageUsers = (role: Role): boolean =>\n rolesThatCanManageUsers.includes(role);\n\nexport const rolesThatCanDelete: Role[] = [\n ...rolesThatCanManageUsers,\n 'EDITOR',\n];\n\nexport const canRoleDelete = (role: Role): boolean =>\n rolesThatCanDelete.includes(role);\n\nexport const rolesThatCanEdit: Role[] = [...rolesThatCanDelete, 'CONTRIBUTOR'];\n\nexport const canRoleEdit = (role: Role): boolean =>\n rolesThatCanEdit.includes(role);\n\nexport const rolesThatCanPublish: Role[] = ['ADMIN'];\n\nexport const canRolePublish = (role: Role): boolean =>\n rolesThatCanPublish.includes(role);\n\nexport const rolesThatCanView: Role[] = [...rolesThatCanEdit, 'VIEWER'];\n\nexport const canRoleView = (role: Role): boolean =>\n rolesThatCanView.includes(role);\n\nexport const isRoleValid = (role: string): role is Role =>\n RolesEnumsStruct.is(role);\n\n/**\n * Please note that these are not the same as the \"roles\" used on a per-site\n * basis, these are roles for the entire DB.\n */\nexport enum HasuraRoles {\n // yes, `admin` exists but no reason anyone should have it, yet\n user = 'user',\n anonymous = 'anonymous',\n}\nconst HasuraRolesStruct = enums(Object.values(HasuraRoles));\n\nexport type HasuraClaims = {\n 'x-hasura-allowed-roles': HasuraRoles[];\n 'x-hasura-default-role': HasuraRoles;\n 'x-hasura-user-id'?: string;\n};\n// Superstruct runtime validation for HasuraClaims\nexport const HasuraClaimsStruct: Describe<HasuraClaims> = object({\n 'x-hasura-allowed-roles': array(HasuraRolesStruct),\n 'x-hasura-default-role': HasuraRolesStruct,\n 'x-hasura-user-id': optional(string()),\n});\n\n/**\n * The specific Knapsack claims that live at 'https://knapsack.cloud' within JWT\n */\nexport type KnapsackClaims = {\n userId: string;\n /** For email address that end in `knapsack.cloud` */\n isSuperAdmin: boolean;\n /**\n * Keys are roleId, value are array of siteId strings\n * Purposely kept small for JWT payloads. Often expanded.\n * @see {SiteRoleMap}\n * @see {expandSitesByRole}\n * @example\n * {\n * sitesByRole: {\n * EDITOR: ['ks-demo-bootstrap', 'ks-demo-tailwind'],\n * VIEWER: ['site-id-1'],\n * },\n * }\n */\n sitesByRole: {\n [roleId in Role]?: string[];\n };\n};\n// Superstruct runtime validation for KnapsackClaims\nexport const KsClaimsStruct: Describe<KnapsackClaims> = object({\n userId: string(),\n isSuperAdmin: boolean(),\n sitesByRole: record(RolesEnums, array(string())),\n});\n\n/**\n * The easier to work with & expanded version of `sitesByRole` in KsClaims,\n * which is kept as small as possible for JWT payloads.\n * @see {KnapsackClaims}\n */\nexport type SiteRoleMap = {\n [siteId: string]: Role;\n};\n\n/**\n * Base JWT\n */\nexport type JwtBase = {\n /* Token expiration time; usually 1 hour after issued at time (`iat`), in seconds (not ms) */\n exp: number;\n /* Email exists on ID token, but not AUTH token */\n email?: string;\n /* WARNING: email_verified is not guaranteed to exst on SSO tokens, and is boolean or string! */\n email_verified?: string | boolean;\n /* Issued at Time, in seconds (not ms) */\n iat: number;\n /* Issuer */\n iss: string;\n /* Subject (userId) */\n sub: string;\n /* Audience */\n aud: string | string[];\n};\n// Superstruct runtime validation for JwtBase. Use type() to ignore extra keys\nexport const JwtBaseStruct: Describe<JwtBase> = type({\n exp: number(),\n email: optional(string()),\n email_verified: optional(union([string(), boolean()])),\n iat: number(),\n iss: string(),\n sub: string(),\n aud: union([string(), array(string())]),\n});\n\n/**\n * Bring it all together to make a full JWT\n */\nexport const HASURA_CLAIMS_NAMESPACE = 'https://hasura.io/jwt/claims';\nexport const KNAPSACK_CLAIMS_NAMESPACE = 'https://knapsack.cloud';\n\n// Just custom claims\nexport type JwtCustomClaims = {\n [HASURA_CLAIMS_NAMESPACE]: HasuraClaims;\n [KNAPSACK_CLAIMS_NAMESPACE]: KnapsackClaims;\n};\n// Superstruct runtime validation for JwtCustomClaims\nexport const JwtCustomClaimsStruct: Describe<JwtCustomClaims> = object({\n [HASURA_CLAIMS_NAMESPACE]: HasuraClaimsStruct,\n [KNAPSACK_CLAIMS_NAMESPACE]: KsClaimsStruct,\n});\n\n// The entire JWT, custom claims + base root keys\nexport type JwtWithCustomClaims = JwtBase & JwtCustomClaims;\n// Superstruct runtime validation for JwtWithCustomClaims\nexport const JwtWithCustomClaimsStruct: Describe<JwtWithCustomClaims> = assign(\n JwtBaseStruct,\n JwtCustomClaimsStruct,\n);\n\n/**\n * Convert sitesByRole to be a map of siteId to roleId. This is the format we\n * actually use within the app to determine what sites a user can access.\n */\nexport function expandSitesByRole(\n sitesByRole: KnapsackClaims['sitesByRole'],\n): SiteRoleMap {\n return Object.entries(sitesByRole).reduce((cur, [roleId, siteIds]) => {\n if (!isRoleValid(roleId)) return cur;\n siteIds.forEach((siteId) => {\n cur[siteId] = roleId;\n });\n return cur;\n }, {} as SiteRoleMap);\n}\n\nexport type KsClaimsHelper = Omit<KnapsackClaims, 'sitesByRole'> & {\n siteRoleMap: SiteRoleMap;\n /** Get the User's Role for particular site */\n getSiteRole: (siteId: string) => Role;\n};\n\nexport const defaultAnonymousKsClaims: KsClaimsHelper = {\n isSuperAdmin: false,\n userId: '',\n siteRoleMap: {},\n getSiteRole: () => 'ANONYMOUS',\n};\n\n/**\n * Picks off the KsClaims from the JWT (since it has a weird to use\n * `https://knapsack.cloud` namespace) and then also converts the size-conscious\n * `sitesByRole` into the more usable format of `siteRoleMap\n */\nexport const getKsClaims = (claims: unknown): KsClaimsHelper => {\n if (!JwtWithCustomClaimsStruct.is(claims)) {\n return defaultAnonymousKsClaims;\n }\n const { sitesByRole, ...ksClaims } = claims[KNAPSACK_CLAIMS_NAMESPACE];\n const siteRoleMap = expandSitesByRole(sitesByRole);\n return {\n ...ksClaims,\n siteRoleMap,\n getSiteRole: (siteId) => {\n if (ksClaims.isSuperAdmin) return 'ADMIN';\n return siteRoleMap[siteId] || 'ANONYMOUS';\n },\n };\n};\n","// Should be no imports here!\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: unique symbol = Symbol.for(\"immer-nothing\")\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = Symbol.for(\"immer-draftable\")\n\nexport const DRAFT_STATE: unique symbol = Symbol.for(\"immer-state\")\n","export const errors =\n\tprocess.env.NODE_ENV !== \"production\"\n\t\t? [\n\t\t\t\t// All error codes, starting by 0:\n\t\t\t\tfunction(plugin: string) {\n\t\t\t\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t\t\t\t},\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t\t\t\t},\n\t\t\t\t\"This object has been frozen and should not be mutated\",\n\t\t\t\tfunction(data: any) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\t\t\t\tdata\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t\t\t\t\"Immer forbids circular references\",\n\t\t\t\t\"The first or second argument to `produce` must be a function\",\n\t\t\t\t\"The third argument to `produce` must be a function or undefined\",\n\t\t\t\t\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t\t\t\t\"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'current' expects a draft, got: ${thing}`\n\t\t\t\t},\n\t\t\t\t\"Object.defineProperty() cannot be used on an Immer draft\",\n\t\t\t\t\"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t\t\t\t\"Immer only supports deleting array indices\",\n\t\t\t\t\"Immer only supports setting array indices and the 'length' property\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'original' expects a draft, got: ${thing}`\n\t\t\t\t}\n\t\t\t\t// Note: if more errors are added, the errorOffset in Patches.ts should be increased\n\t\t\t\t// See Patches.ts for additional errors\n\t\t ]\n\t\t: []\n\nexport function die(error: number, ...args: any[]): never {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst e = errors[error]\n\t\tconst msg = typeof e === \"function\" ? e.apply(null, args as any) : e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\tArchType,\n\tdie,\n\tStrictMode\n} from \"../internal\"\n\nexport const getPrototypeOf = Object.getPrototypeOf\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original<T>(value: T): T | undefined\nexport function original(value: Drafted<any>): any {\n\tif (!isDraft(value)) die(15, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/**\n * Each iterates a map, set or array.\n * Or, if any other kind of object, all of its own properties.\n * Regardless whether they are enumerable or symbols\n */\nexport function each<T extends Objectish>(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void\n): void\nexport function each(obj: any, iter: any) {\n\tif (getArchtype(obj) === ArchType.Object) {\n\t\tReflect.ownKeys(obj).forEach(key => {\n\t\t\titer(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): ArchType {\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_\n\t\t: Array.isArray(thing)\n\t\t? ArchType.Array\n\t\t: isMap(thing)\n\t\t? ArchType.Map\n\t\t: isSet(thing)\n\t\t? ArchType.Set\n\t\t: ArchType.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === ArchType.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === ArchType.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === ArchType.Map) thing.set(propOrOldValue, value)\n\telse if (t === ArchType.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any, strict: StrictMode) {\n\tif (isMap(base)) {\n\t\treturn new Map(base)\n\t}\n\tif (isSet(base)) {\n\t\treturn new Set(base)\n\t}\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\n\tconst isPlain = isPlainObject(base)\n\n\tif (strict === true || (strict === \"class_only\" && !isPlain)) {\n\t\t// Perform a strict copy\n\t\tconst descriptors = Object.getOwnPropertyDescriptors(base)\n\t\tdelete descriptors[DRAFT_STATE as any]\n\t\tlet keys = Reflect.ownKeys(descriptors)\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key: any = keys[i]\n\t\t\tconst desc = descriptors[key]\n\t\t\tif (desc.writable === false) {\n\t\t\t\tdesc.writable = true\n\t\t\t\tdesc.configurable = true\n\t\t\t}\n\t\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t\t// with libraries that trap values, like mobx or vue\n\t\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\t\tif (desc.get || desc.set)\n\t\t\t\tdescriptors[key] = {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\t\tvalue: base[key]\n\t\t\t\t}\n\t\t}\n\t\treturn Object.create(getPrototypeOf(base), descriptors)\n\t} else {\n\t\t// perform a sloppy copy\n\t\tconst proto = getPrototypeOf(base)\n\t\tif (proto !== null && isPlain) {\n\t\t\treturn {...base} // assumption: better inner class optimization than the assign below\n\t\t}\n\t\tconst obj = Object.create(proto)\n\t\treturn Object.assign(obj, base)\n\t}\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze<T>(obj: T, deep?: boolean): T\nexport function freeze<T>(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep)\n\t\t// See #590, don't recurse into non-enumerable / Symbol properties when freezing\n\t\t// So use Object.entries (only string-like, enumerables) instead of each()\n\t\tObject.entries(obj).forEach(([key, value]) => freeze(value, true))\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tDrafted,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tArchType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_<T>(draft: T, patches: readonly Patch[]): T\n\t}\n\tMapSet?: {\n\t\tproxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): T\n\t\tproxySet_<T extends AnySet>(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin<K extends keyof Plugins>(\n\tpluginKey: K\n): Exclude<Plugins[K], undefined> {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(0, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin<K extends keyof Plugins>(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ArchType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map<any, boolean> | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted<AnyMap, MapState>\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ArchType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map<any, Drafted> // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted<AnySet, SetState>\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tArchType,\n\tgetPlugin\n} from \"../internal\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (state.type_ === ArchType.Object || state.type_ === ArchType.Array)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tArchType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(value, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path)\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result = state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ArchType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath,\n\ttargetIsSet?: boolean\n) {\n\tif (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n\t\tdie(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ArchType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude<ImmerState, SetState>).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// Immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\t// Per #590, we never freeze symbolic properties. Just to make sure don't accidentally interfere\n\t\t// with other frameworks.\n\t\tif (\n\t\t\t(!parentState || !parentState.scope_.parent_) &&\n\t\t\ttypeof prop !== \"symbol\" &&\n\t\t\tObject.prototype.propertyIsEnumerable.call(targetObject, prop)\n\t\t)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tgetPrototypeOf,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tArchType,\n\tImmerScope\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ArchType.Object\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted<AnyObject, ProxyObjectState>\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ArchType.Array\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted<AnyArray, ProxyArrayState>\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy<T extends Objectish>(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted<T, ProxyState> {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ArchType.Array : (ArchType.Object as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler<object | Array<any>> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler<ProxyState> = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(value, state))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\tif (state.copy_) {\n\t\t\tdelete state.copy_[prop]\n\t\t}\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ArchType.Array || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop as any)))\n\t\tdie(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (\n\t\tprocess.env.NODE_ENV !== \"production\" &&\n\t\tprop !== \"length\" &&\n\t\tisNaN(parseInt(prop as any))\n\t)\n\t\tdie(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {\n\tbase_: any\n\tcopy_: any\n\tscope_: ImmerScope\n}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(\n\t\t\tstate.base_,\n\t\t\tstate.scope_.immer_.useStrictShallowCopy_\n\t\t)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport type StrictMode = boolean | \"class_only\";\n\nexport class Immer implements ProducersFns {\n\tautoFreeze_: boolean = true\n\tuseStrictShallowCopy_: StrictMode = false\n\n\tconstructor(config?: {\n\t\tautoFreeze?: boolean\n\t\tuseStrictShallowCopy?: StrictMode\n\t}) {\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t\tif (typeof config?.useStrictShallowCopy === \"boolean\")\n\t\t\tthis.setUseStrictShallowCopy(config!.useStrictShallowCopy)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(1, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft<T extends Objectish>(base: T): Draft<T> {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft<D extends Draft<any>>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft<infer T> ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (!state || !state.isManual_) die(9)\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to enable strict shallow copy.\n\t *\n\t * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n\t */\n\tsetUseStrictShallowCopy(value: StrictMode) {\n\t\tthis.useStrictShallowCopy_ = value\n\t}\n\n\tapplyPatches<T extends Objectish>(base: T, patches: readonly Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy<T extends Objectish>(\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted<T, ImmerState> {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: createProxyProxy(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tisFrozen\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current<T>(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(10, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value) || isFrozen(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tif (state) {\n\t\tif (!state.modified_) return state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_)\n\t} else {\n\t\tcopy = shallowCopy(value, true)\n\t}\n\t// recurse\n\teach(copy, (key, childValue) => {\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\tif (state) {\n\t\tstate.finalized_ = false\n\t}\n\treturn copy\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tWritableDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\tProducer,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze,\n\tObjectish,\n\tStrictMode\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\nexport const setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft<T>(value: T): Draft<T> {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable<T>(value: T): Immutable<T> {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\n","import {\n type,\n Describe,\n literal,\n optional,\n defaulted,\n boolean,\n array,\n object,\n} from 'superstruct';\n\nimport { ExpandRecursively } from '@knapsack/utils';\n\nimport {\n ColorConfig,\n ColorConfigStruct,\n ColorStringStruct,\n} from './color-config';\n\nimport {\n FontFaceConfigStruct,\n FontFaceConfig,\n TypographyConfigStruct,\n TypographyLinkConfigStruct,\n pageElements,\n pageElementsV2,\n} from './typography-config';\n\nimport {\n customizableNavElements,\n NavCustomizationConfigStruct,\n PrimaryNavCustomizationConfigStruct,\n SecondaryNavCustomizationConfigStruct,\n} from './nav-customization-config';\n\nexport type UiConfigV1 = {\n version: 1;\n oldSillySidebarBgColor: string;\n};\n\nexport const UiConfigV1Struct: Describe<UiConfigV1> = object({\n version: literal(1),\n oldSillySidebarBgColor: ColorStringStruct,\n});\n\nexport type UiConfigV2 = {\n version: 2;\n anotherSillySidebarBgColor: string;\n};\n\nexport const UiConfigV2Struct: Describe<UiConfigV2> = object({\n version: literal(2),\n anotherSillySidebarBgColor: ColorStringStruct,\n});\n\nexport type UiConfigV3 = {\n version: 3;\n sidebarBgColor: string;\n};\n\nexport const UiConfigV3Struct: Describe<UiConfigV3> = object({\n version: literal(3),\n sidebarBgColor: ColorStringStruct,\n});\n\nexport type UiConfigV4 = {\n version: 4;\n primaryColor: ColorConfig;\n darkColor: ColorConfig;\n lightColor: ColorConfig;\n enableSidebarIcons?: boolean;\n};\nexport const UiConfigV4Struct: Describe<UiConfigV4> = object({\n version: literal(4),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n});\n\nexport type UiConfigV5 = {\n version: 5;\n primaryColor: ColorConfig;\n darkColor: ColorConfig;\n lightColor: ColorConfig;\n linkColor: ColorConfig;\n enableSidebarIcons: boolean;\n};\nexport const UiConfigV5Struct: Describe<UiConfigV5> = object({\n version: literal(5),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n});\n\nexport interface _UiConfigV6 extends Omit<UiConfigV5, 'version'> {\n version: 6;\n appearance: {\n customFonts?: FontFaceConfig[];\n pageElements: typeof pageElements;\n };\n}\n\n// ExpandRecursively needed to avoid \"Type 'UiConfigV6' is not assignable to type 'Record<string, unknown>'.\" error\nexport type UiConfigV6 = ExpandRecursively<_UiConfigV6>;\n\nexport const UiConfigV6Struct: Describe<UiConfigV6> = object({\n version: literal(6),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV7 extends Omit<UiConfigV6, 'version'> {\n version: 7;\n appearance: {\n navigation?: typeof customizableNavElements;\n customFonts?: UiConfigV6['appearance']['customFonts'];\n pageElements: UiConfigV6['appearance']['pageElements'];\n };\n}\n\n// ExpandRecursively needed to avoid \"Type 'UiConfig7' is not assignable to type 'Record<string, unknown>'.\" error in ui-config.xstate.ts\nexport type UiConfigV7 = ExpandRecursively<_UiConfigV7>;\n\nexport const UiConfigV7Struct: Describe<UiConfigV7> = object({\n version: literal(7),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV8\n extends Omit<UiConfigV7, 'version' | 'enableSidebarIcons'> {\n version: 8;\n}\n\n// ExpandRecursively needed to avoid \"Type 'UiConfig8' is not assignable to type 'Record<string, unknown>'.\" error in ui-config.xstate.ts\n// TODO: move this to @knapsack/types\nexport type UiConfigV8 = ExpandRecursively<_UiConfigV8>;\n\nexport const UiConfigV8Struct: Describe<UiConfigV8> = object({\n version: literal(8),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV9\n extends Omit<\n UiConfigV8,\n 'version' | 'primaryColor' | 'darkColor' | 'lightColor' | 'linkColor'\n > {\n version: 9;\n}\nexport type UiConfigV9 = ExpandRecursively<_UiConfigV9>;\n\nexport const UiConfigV9Struct: Describe<UiConfigV9> = object({\n version: literal(9),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV10 extends Omit<UiConfigV9, 'version'> {\n version: 10;\n appearance: {\n navigation?: UiConfigV9['appearance']['navigation'];\n customFonts?: UiConfigV9['appearance']['customFonts'];\n pageElements: typeof pageElementsV2;\n };\n}\nexport type UiConfigV10 = ExpandRecursively<_UiConfigV10>;\n\nexport const UiConfigV10Struct: Describe<UiConfigV10> = object({\n version: literal(10),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingXLarge: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n headingXSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport type UiConfigVersions =\n | typeof UiConfigV1Struct.TYPE\n | typeof UiConfigV2Struct.TYPE\n | typeof UiConfigV3Struct.TYPE\n | typeof UiConfigV4Struct.TYPE\n | typeof UiConfigV5Struct.TYPE\n | typeof UiConfigV6Struct.TYPE\n | typeof UiConfigV7Struct.TYPE\n | typeof UiConfigV8Struct.TYPE\n | typeof UiConfigV9Struct.TYPE\n | typeof UiConfigV10Struct.TYPE;\n\n// ALIASES FOR LATEST VERSIONS\nexport type UiConfig = UiConfigV10;\nexport const UiConfigStruct: typeof UiConfigV10Struct = UiConfigV10Struct;\n\nexport type NavElementNames = keyof UiConfig['appearance']['navigation'];\n","import colorString from 'color-string';\nimport { define, Describe, literal, string, type, union } from 'superstruct'; // https://docs.superstructjs.org\n\n/** Use `import { isColor } from '@knapsack/color-utils'` if you can, need to duplicate this logic due to dep cycle */\nfunction isColor(color: unknown): color is string {\n if (typeof color !== 'string') return false;\n try {\n return !!colorString.get(color);\n } catch (e) {\n return false;\n }\n}\n\nexport type ColorTokenConfig = {\n type: 'design-token';\n /** Will be **either** `-` (old) or `.` (new) separated */\n tokenName: string;\n};\nexport type ColorConfig =\n | { type: 'value'; colorValue: string }\n | ColorTokenConfig;\n\nexport const ColorStringStruct = define<string>(\n 'ColorStringStruct',\n (value) => typeof value === 'string' && isColor(value),\n);\n\nexport const ColorConfigStruct: Describe<ColorConfig> = union([\n type({\n type: literal('value'),\n colorValue: ColorStringStruct,\n }),\n type({\n type: literal('design-token'),\n tokenName: string(),\n }),\n]);\n\n// so we can check if an object is not just a ColorConfig but specifically a token\nexport const ColorTokenConfigStruct: Describe<ColorTokenConfig> = type({\n type: literal('design-token'),\n tokenName: string(),\n});\n","import {\n Describe,\n string,\n type,\n union,\n number,\n enums,\n optional,\n literal,\n array,\n size,\n boolean,\n object,\n} from 'superstruct'; // https://docs.superstructjs.org\nimport { ColorConfig, ColorConfigStruct } from './color-config';\n\nexport const HeadingLevels = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] as const;\nexport type HeadingLevel = (typeof HeadingLevels)[number];\n\nexport type FontSizeConfigVal = {\n unit: 'px' | 'rem';\n value: number;\n};\n\nexport const FontSizeConfigValStruct: Describe<FontSizeConfigVal> = object({\n unit: enums(['rem', 'px']),\n value: number(),\n});\n\nexport type FontFaceWeight = number | string;\n\nexport const FontFaceWeightStruct: Describe<FontFaceWeight> = union([\n string(),\n number(),\n]);\n\nexport enum FontFaceSourceFormats {\n woff2 = 'woff2',\n woff = 'woff',\n}\n\nexport type FontFaceSource = {\n /**\n * Note: if /when we eventually add 'local' type support, format isn't used!\n */\n format: keyof typeof FontFaceSourceFormats;\n type: 'url';\n path: string;\n};\n\nexport const FontFaceFormatsEnumStruct = enums(['woff2', 'woff']);\n\nexport const FontFaceSourceStruct: Describe<FontFaceSource> = type({\n format: FontFaceFormatsEnumStruct,\n type: literal('url'),\n path: string(),\n});\n\nexport type FontFaceConfig = {\n /**\n * registered name of the custom font\n *\n * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-family @font-face's font-family property}\n */\n family?: string;\n\n /**\n * number between 1 and 1000.\n *\n * note: since two weights are allowed (with variable fonts), this type is an\n * optional array for easy parsing down the road.\n *\n * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-weight @font-face's font-weight property}.\n */\n weight?: FontFaceWeight | FontFaceWeight[];\n\n /**\n * the collection of urls / paths pointing to font files\n *\n * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src @font-face's src property}.\n */\n src?: FontFaceSource[];\n\n /**\n * the style of the custom font (ex. normal or italic)\n *\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-style See MDN docs on font-style}.\n */\n style?: string;\n\n // @todo: implement these later\n // display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n // variationSettings?: string;\n // unicodeRange?: string; // or ideally, URange; //\n // see https://drafts.csswg.org/css-syntax-3/#urange-syntax and\n // https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/unicode-range\n};\n\nexport const FontFaceConfigStruct: Describe<FontFaceConfig> = type({\n family: optional(string()),\n weight: optional(\n union([FontFaceWeightStruct, size(array(FontFaceWeightStruct), 2)]),\n ),\n src: optional(array(FontFaceSourceStruct)),\n style: optional(string()),\n display: optional(enums(['auto', 'block', 'swap', 'fallback', 'optional'])),\n variationSettings: optional(string()),\n unicodeRange: optional(string()),\n});\n\nexport type FontSizeConfig = {\n min: FontSizeConfigVal;\n max?: FontSizeConfigVal;\n};\n\nexport enum TextTransforms {\n inherit = 'As typed',\n capitalize = 'Capitalize',\n lowercase = 'Lowercase',\n uppercase = 'Uppercase',\n}\n\nexport enum FontStretches {\n 'ultra-condensed' = 'Ultra-condensed',\n 'extra-condensed' = 'Extra-condensed',\n condensed = 'Condensed',\n 'semi-condensed' = 'Semi-condensed',\n normal = 'Normal',\n 'semi-expanded' = 'Semi-expanded',\n expanded = 'Expanded',\n 'extra-expanded' = 'Extra-expanded',\n 'ultra-expanded' = 'Ultra-expanded',\n}\n\nexport type TypographyConfig = {\n /**\n * min / max height used to future-proof way of supporting responsive typography\n */\n fontSize?: FontSizeConfig;\n\n /**\n * reminder: line-heights can also be unitless!\n */\n lineHeight?: string | number;\n fontWeight?: FontFaceWeight;\n\n /**\n * note: letter-spacing can't be unitless, unit required!\n */\n letterSpacing?: string;\n\n /**\n * if not specified, Knapsack default font, otherwise should allow for a stack of font strings + fallbacks (including the names of custom registered fonts)\n */\n fontFamily?: string;\n\n textColor?: ColorConfig;\n\n textTransform?: keyof typeof TextTransforms;\n\n fontStretch?: keyof typeof FontStretches;\n};\n\nexport interface TypographyLinkConfig {\n fontWeight?: FontFaceWeight;\n textColor?: ColorConfig;\n hoverColor?: ColorConfig;\n underline?: boolean;\n textTransform?: keyof typeof TextTransforms;\n fontStretch?: keyof typeof FontStretches;\n}\n\nexport const TypographyLinkConfigStruct: Describe<TypographyLinkConfig> = type({\n fontWeight: optional(union([string(), number()])),\n textColor: optional(ColorConfigStruct),\n hoverColor: optional(ColorConfigStruct),\n underline: optional(boolean()),\n textTransform: optional(\n enums(['inherit', 'capitalize', 'lowercase', 'uppercase']),\n ),\n fontStretch: optional(\n enums([\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n ]),\n ),\n});\n\nexport const FontSizeConfigStruct: Describe<FontSizeConfig> = type({\n min: FontSizeConfigValStruct,\n max: optional(FontSizeConfigValStruct),\n});\n\nexport const TypographyConfigStruct: Describe<TypographyConfig> = type({\n fontSize: optional(FontSizeConfigStruct),\n lineHeight: optional(union([string(), number()])),\n fontWeight: optional(union([string(), number()])),\n letterSpacing: optional(string()),\n fontFamily: optional(string()),\n textColor: optional(ColorConfigStruct),\n textTransform: optional(\n enums(['inherit', 'capitalize', 'lowercase', 'uppercase']),\n ),\n fontStretch: optional(\n enums([\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n ]),\n ),\n});\n\nconst pageElementConfig: TypographyConfig = {};\nconst pageLinkElementConfig: TypographyLinkConfig = {};\n\nexport const pageElements = {\n pageTitle: pageElementConfig,\n pageDescription: pageElementConfig,\n headingLarge: pageElementConfig,\n headingMedium: pageElementConfig,\n headingSmall: pageElementConfig,\n bodyText: pageElementConfig,\n link: pageLinkElementConfig,\n} as const;\n\nexport const pageElementsV2 = {\n pageTitle: pageElementConfig,\n pageDescription: pageElementConfig,\n headingXLarge: pageElementConfig,\n headingLarge: pageElementConfig,\n headingMedium: pageElementConfig,\n headingSmall: pageElementConfig,\n headingXSmall: pageElementConfig,\n bodyText: pageElementConfig,\n link: pageLinkElementConfig,\n} as const;\n\nexport type PageElementNames = keyof typeof pageElementsV2;\nexport type PageElementConfig = (typeof pageElementsV2)[PageElementNames];\n","import { Describe, type, union, optional } from 'superstruct'; // https://docs.superstructjs.org\nimport { ColorConfig, ColorConfigStruct } from './color-config';\nimport { TypographyConfig, TypographyConfigStruct } from './typography-config';\n\nexport interface NavCustomizationConfig extends TypographyConfig {\n accentColor?: ColorConfig;\n}\n\nexport interface PrimaryNavCustomizationConfig extends NavCustomizationConfig {\n hoverColor?: ColorConfig;\n backgroundColor?: ColorConfig;\n}\n\nexport type SecondaryNavCustomizationConfig = Omit<\n PrimaryNavCustomizationConfig,\n 'hoverColor'\n>;\n\nexport const NavCustomizationConfigStruct: Describe<NavCustomizationConfig> =\n union([\n TypographyConfigStruct,\n type({\n accentColor: optional(ColorConfigStruct),\n }),\n ]);\n\n// hoverColor: optional(ColorConfigStruct),\nexport const PrimaryNavCustomizationConfigStruct: Describe<PrimaryNavCustomizationConfig> =\n union([\n NavCustomizationConfigStruct,\n type({\n hoverColor: optional(ColorConfigStruct),\n backgroundColor: optional(ColorConfigStruct),\n }),\n ]);\n\nexport const SecondaryNavCustomizationConfigStruct: Describe<SecondaryNavCustomizationConfig> =\n union([\n NavCustomizationConfigStruct,\n type({\n backgroundColor: optional(ColorConfigStruct),\n }),\n ]);\n\nconst navCustomizationConfig: NavCustomizationConfig = {};\nconst secondaryNavCustomizationConfig: SecondaryNavCustomizationConfig = {};\nconst primaryNavCustomizationConfig: PrimaryNavCustomizationConfig = {};\n\nexport const customizableNavElements = {\n primaryNav: primaryNavCustomizationConfig,\n secondaryNav: secondaryNavCustomizationConfig,\n tabs: navCustomizationConfig,\n} as const;\n\nexport type CustomizableNavElementNames = keyof typeof customizableNavElements;\nexport type CustomizableNavElementConfig =\n (typeof customizableNavElements)[CustomizableNavElementNames];\n","import * as s from 'superstruct';\n\nexport const strokeStyleValues = [\n 'solid',\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'ridge',\n 'outset',\n 'inset',\n] as const;\n\n/**\n * Don't use this one, use this instead:\n * @see {@link TokenDefinitionSingular}\n */\ntype TokenDefinitionSingularRaw =\n | { type: 'string'; value: string }\n | { type: 'number'; value: number }\n | { type: 'boolean'; value: boolean }\n | { type: 'color'; value: string }\n | {\n type: 'strokeStyle';\n value: (typeof strokeStyleValues)[number];\n }\n | { type: 'dimension'; value: `${number}${'px' | 'rem' | 'em' | '%'}` }\n | { type: 'duration'; value: `${number}ms` }\n // | { type: 'fontFamily'; value: string | string[] }\n | {\n type: 'fontWeight';\n // @TODO: Include union of possible strings https://tr.designtokens.org/format/#font-weight\n value: string | number;\n }\n | { type: 'cubicBezier'; value: [number, number, number, number] };\n\n/**\n * Definitions for both singular (non-composite) tokens.\n * Use first generic param to get just that type.\n * @example\n * ```ts\n * type TokenDefinitionDimension = TokenDefinitionSingular<'dimension'>\n * ```\n */\nexport type TokenDefinitionSingular<\n TheTokenType extends TokenDefinitionSingularRaw['type'] = TokenDefinitionSingularRaw['type'],\n> = Extract<TokenDefinitionSingularRaw, { type: TheTokenType }>;\n\n/**\n * Don't use this one, use this instead:\n * @see {@link TokenDefinitionComposite}\n */\ntype TokenDefinitionCompositeRaw =\n | {\n type: 'border';\n value: {\n color: { type: 'color' };\n style: { type: 'strokeStyle' };\n width: { type: 'dimension' };\n };\n }\n | {\n type: 'shadow';\n value: {\n color: { type: 'color' };\n offsetX: { type: 'dimension' };\n offsetY: { type: 'dimension' };\n spread: { type: 'dimension' };\n blur: { type: 'dimension' };\n inset: { type: 'boolean' };\n };\n }\n | {\n type: 'transition';\n value: {\n duration: { type: 'duration' };\n delay: { type: 'duration' };\n timingFunction: { type: 'cubicBezier' };\n };\n };\n// | {\n// type: 'gradient';\n// value: {\n// color: { type: 'color' };\n// position: { type: 'dimension' };\n// }[];\n// };\n\n/**\n * Definitions for composite tokens.\n * Use first generic param to get just that type.\n * @example\n * ```ts\n * type TokenDefinitionShadow = TokenDefinitionComposite<'shadow'>\n * ```\n */\nexport type TokenDefinitionComposite<\n TheTokenType extends TokenDefinitionCompositeRaw['type'] = TokenDefinitionCompositeRaw['type'],\n> = Extract<TokenDefinitionCompositeRaw, { type: TheTokenType }>;\n\n/**\n * Definitions for both singular and composite tokens.\n * Use first generic param to get just that type.\n * @example\n * ```ts\n * type TokenDefinitionDimension = TokenDefinition<'dimension'>\n * ```\n */\nexport type TokenDefinition<\n TheTokenType extends\n | TokenDefinitionComposite['type']\n | TokenDefinitionSingular['type'] =\n | TokenDefinitionComposite['type']\n | TokenDefinitionSingular['type'],\n> = Extract<\n TokenDefinitionComposite | TokenDefinitionSingular,\n { type: TheTokenType }\n>;\n\nexport type TokenReference = `{${string}}`;\n/** ensures there is no `{}` */\nexport type NotTokenReference<T> = T extends TokenReference ? never : T;\n\nexport function isTokenReference(val: unknown): val is TokenReference {\n if (typeof val !== 'string') return false;\n // total times `{` appears in `val`\n // Handle situation `{a.b} {c.d}`. Ensure count of `{` and `}` === 1. This\n // guarantees we ONLY support a single reference, ie `{a.b}`\n const totalOpenBrackets = val.split('{').length - 1;\n return totalOpenBrackets === 1 && val.startsWith('{') && val.endsWith('}');\n}\n\nexport function hasTokenReferences(val: unknown): boolean {\n return typeof val === 'string' && val.includes('{');\n}\n\nexport function isNotTokenReference<T>(\n value: T,\n): value is NotTokenReference<T> {\n return !isTokenReference(value);\n}\n\nexport const TokenReferenceStruct = s.define<TokenReference>(\n 'Token Reference',\n (value) => {\n if (typeof value !== 'string') return false;\n if (isNotTokenReference(value)) {\n return 'Must start and end with curly braces';\n }\n return true;\n },\n);\n\nexport type TokenType = TokenDefinition['type'];\nexport type TokenTypeComposite = TokenDefinitionComposite['type'];\nexport type TokenTypeSingular = TokenDefinitionSingular['type'];\nexport type TokenValueSingular = TokenDefinitionSingular['value'];\n\n// We make a Record to ensure we have *every* possible value\n// b/c TS will yell at us if a new one is added but isn't included here\n// then we make an array out of them, so we can be sure we have *every* possible value\nconst compositeTypesRecord: Record<TokenTypeComposite, TokenTypeComposite> = {\n border: 'border',\n shadow: 'shadow',\n transition: 'transition',\n};\nexport const tokenTypeComposites = Object.values(compositeTypesRecord);\nconst singularTypesRecord: Record<TokenTypeSingular, TokenTypeSingular> = {\n string: 'string',\n number: 'number',\n boolean: 'boolean',\n color: 'color',\n dimension: 'dimension',\n duration: 'duration',\n // fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n strokeStyle: 'strokeStyle',\n cubicBezier: 'cubicBezier',\n};\nexport const tokenTypeSingulars = Object.values(singularTypesRecord);\n/**\n * @deprecated You probably want `isTokenDataComposite`\n * @see {isTokenDataComposite}\n */\nexport function isTokenTypeComposite(\n type: TokenType,\n): type is TokenTypeComposite {\n return tokenTypeComposites.includes(type as TokenTypeComposite);\n}\n\nexport function isTokenTypeSingular(\n type: TokenType,\n): type is TokenTypeSingular {\n return tokenTypeSingulars.includes(type as TokenTypeSingular);\n}\n","import { Simplify, expectType, isObjKey, isObject } from '@knapsack/utils';\nimport * as s from 'superstruct';\nimport {\n NotTokenReference,\n TokenDefinition,\n TokenDefinitionComposite,\n TokenDefinitionSingular,\n TokenReference,\n TokenReferenceStruct,\n TokenType,\n hasTokenReferences,\n isTokenTypeComposite,\n} from './token-definitions';\nimport { TokenKsExtensions, TokenOrder } from './token-misc';\nimport { TokenSrcValue } from './token-src';\n\n/** Used for tokens AND groups */\ntype TokenDataBothCommon = {\n id: string;\n description?: string;\n};\n\n// Shows what a fully de-referenced `value` of a composite token would be\ntype CreateDataValueForComposite<\n ValueObj extends Record<string, { type: TokenDefinitionSingular['type'] }>,\n> = {\n [Key in keyof ValueObj]: TokenDefinitionSingular<\n ValueObj[Key]['type']\n >['value'];\n};\n\nexpectType<\n CreateDataValueForComposite<TokenDefinitionComposite<'shadow'>['value']>[]\n>([\n {\n inset: false,\n color: '#000',\n offsetX: '0px',\n offsetY: '0px',\n spread: '0px',\n blur: '0px',\n },\n {\n color: '#000',\n offsetX: '0px',\n offsetY: '0px',\n spread: '0px',\n blur: '0px',\n inset: true,\n },\n]);\n\ntype TokenDataCommon<\n Info extends {\n /** Basically the ID */\n type: TokenDefinition['type'];\n value: unknown;\n },\n> = TokenDataBothCommon & {\n type: Info['type'];\n value: Info['value'];\n /**\n * Extracted from `$extensions['cloud.knapsack'].token`\n */\n tokenConfig?: TokenKsExtensions['token'];\n /**\n * Tokens that are references by this token\n * @todo will need to change for shadow\n * @example\n * ```\n * [\n * ['color.primary', 'color.secondary'],\n * ['spacing.medium']\n * ]\n * ```\n */\n references?: Array<string[]>;\n /**\n * Tokens that use this as a reference token\n * @see {CreateTokenData.references}\n * @example\n * * ```\n * [\n * ['color.primary', 'color.secondary'],\n * ['spacing.medium']\n * ]\n * ```\n */\n // referencedBy?: Array<string[]>;\n};\n\ntype CreateTokenData<\n Info extends {\n type: TokenDefinition['type'];\n value: unknown;\n },\n> =\n | ({\n kind: 'ref';\n /** Has `{}` removed */\n referencedTokenId: string;\n originalValue: TokenReference;\n } & TokenDataCommon<Info>)\n | ({\n kind: 'static';\n originalValue: NotTokenReference<TokenSrcValue<Info['type']>>;\n } & TokenDataCommon<Info>);\n\nconst TokenDataBaseStruct: s.Describe<\n TokenDataBothCommon & {\n references?: Array<string[]>;\n tokenConfig?: TokenKsExtensions['token'];\n }\n> = s.type({\n id: s.string(),\n description: s.optional(s.string()),\n references: s.optional(s.array(s.array(s.string()))),\n tokenConfig: s.optional(\n s.type({\n purpose: s.optional(s.string()),\n }),\n ),\n});\n\ntype TokenDataSingularRaw = {\n // ignore the key, this makes a discriminated union out of the values\n [TokenDef in TokenDefinitionSingular as TokenDef['type']]: Simplify<\n CreateTokenData<TokenDef>\n >;\n}[TokenDefinitionSingular['type']];\n\nexport type TokenDataSingular<\n TT extends TokenDataSingularRaw['type'] = TokenDataSingularRaw['type'],\n> = Extract<TokenDataSingularRaw, { type: TT }>;\n\nexpectType<TokenDataSingular[]>([\n {\n type: 'duration',\n value: '1ms',\n originalValue: '1ms',\n id: '1',\n kind: 'static',\n },\n {\n type: 'duration',\n value: '1ms',\n kind: 'ref',\n id: '1',\n originalValue: '{a.b}',\n referencedTokenId: '1',\n },\n // @ts-expect-error - kind is wrong\n {\n type: 'duration',\n value: '1ms',\n originalValue: '1ms',\n id: '1',\n kind: 'ref',\n },\n // @ts-expect-error - kind is wrong\n {\n type: 'duration',\n value: '1ms',\n kind: 'static',\n id: '1',\n originalValue: '{a.b}',\n referencedTokenId: '1',\n },\n {\n type: 'color',\n value: '#000',\n kind: 'static',\n id: '1',\n originalValue: '#000',\n },\n {\n type: 'color',\n value: '#000',\n kind: 'ref',\n id: '1',\n originalValue: '{c.b}',\n referencedTokenId: 'c.b',\n },\n {\n type: 'cubicBezier',\n kind: 'static',\n value: [0, 0, 0, 1],\n originalValue: [0, 0, 0, 1],\n id: '1',\n },\n]);\n\ntype TokenDataCompositeRaw = {\n [TokenType in TokenDefinitionComposite['type']]: Simplify<\n CreateTokenData<{\n type: TokenType;\n value: Simplify<\n CreateDataValueForComposite<\n TokenDefinitionComposite<TokenType>['value']\n >\n >;\n }>\n >;\n}[TokenDefinitionComposite['type']];\n\nexport type TokenDataComposite<\n TheTokenType extends TokenDataCompositeRaw['type'] = TokenDataCompositeRaw['type'],\n> = Extract<TokenDataCompositeRaw, { type: TheTokenType }>;\n\nexport function isTokenDataComposite(\n tokenData: TokenData,\n): tokenData is TokenDataComposite {\n return isTokenTypeComposite(tokenData.type);\n}\n\nexpectType<TokenDataComposite[]>([\n {\n type: 'border',\n kind: 'static',\n id: '1',\n value: {\n color: '#000',\n style: 'solid',\n width: '1px',\n },\n originalValue: {\n color: '#000',\n style: 'solid',\n width: '1px',\n },\n },\n {\n type: 'border',\n kind: 'ref',\n referencedTokenId: 'a.b',\n id: '1',\n value: {\n color: 'red',\n style: 'dashed',\n width: '2px',\n },\n originalValue: '{a.b}',\n },\n {\n type: 'shadow',\n value: {\n color: '#000',\n offsetX: '1px',\n offsetY: '1px',\n blur: '1px',\n spread: '1px',\n inset: false,\n },\n originalValue: {\n color: '#000',\n offsetX: '{a.a}',\n offsetY: '1px',\n blur: '1px',\n spread: '1px',\n inset: false,\n },\n id: '1',\n kind: 'static',\n },\n {\n type: 'shadow',\n kind: 'ref',\n referencedTokenId: 'a.b',\n value: {\n inset: true,\n color: 'red',\n offsetX: '1px',\n blur: '2px',\n offsetY: '3px',\n spread: '4px',\n },\n originalValue: '{a.b}',\n id: '1',\n },\n {\n type: 'transition',\n value: {\n duration: '100ms',\n delay: '200ms',\n timingFunction: [0, 0, 0, 0],\n },\n originalValue: '{a.b}',\n kind: 'ref',\n referencedTokenId: 'a.b',\n id: '1',\n },\n {\n type: 'transition',\n kind: 'static',\n value: {\n duration: '100ms',\n delay: '200ms',\n timingFunction: [0, 0, 0, 0],\n },\n originalValue: {\n duration: '100ms',\n delay: '{a.c}',\n timingFunction: '{a.c}',\n },\n id: '1',\n },\n {\n type: 'transition',\n kind: 'static',\n value: {\n duration: '100ms',\n delay: '200ms',\n timingFunction: [0, 0, 0, 0],\n },\n originalValue: {\n duration: '100ms',\n delay: '200ms',\n timingFunction: [0, 0, 0, 0],\n },\n id: '1',\n },\n]);\n\nexport type TokenData<\n TheTokenType extends TokenDataSingular['type'] | TokenDataComposite['type'] =\n | TokenDataSingular['type']\n | TokenDataComposite['type'],\n> = Extract<TokenDataSingular | TokenDataComposite, { type: TheTokenType }>;\n\nexport type TokenGroupData = Simplify<\n {\n type?: TokenType;\n /**\n * Extracted from `$extensions['cloud.knapsack'].group`\n */\n groupConfig?: TokenKsExtensions['group'];\n children: TokenOrder;\n } & TokenDataBothCommon\n>;\n\n/**\n * @deprecated Use `TokenValueColorStruct` instead\n */\nexport function isTokenValueColor(\n value: unknown,\n): value is TokenDefinitionSingular<'color'>['value'] {\n return typeof value === 'string' && !hasTokenReferences(value);\n}\n\nexport const TokenValueColorStruct = s.define<TokenData<'color'>['value']>(\n 'Color Value',\n (value) => {\n if (typeof value !== 'string') {\n return 'Value must be a string';\n }\n if (value === '') {\n return 'Value must not be empty';\n }\n if (hasTokenReferences(value)) {\n return 'Value must not contain {} (token references)';\n }\n return true;\n },\n);\n\nconst TokenDataColorNonRefStruct: s.Describe<\n Extract<TokenData<'color'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('color'),\n value: TokenValueColorStruct,\n kind: s.literal('static'),\n originalValue: TokenValueColorStruct,\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataColorRefStruct: s.Describe<\n Extract<TokenData<'color'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('color'),\n value: TokenValueColorStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\n/**\n * @deprecated Use `TokenValueDimensionStruct` instead\n */\nexport function isTokenValueDimension(\n value: unknown,\n): value is TokenDefinitionSingular<'dimension'>['value'] {\n return (\n typeof value === 'string' &&\n (value.endsWith('px') || value.endsWith('rem')) &&\n !hasTokenReferences(value)\n );\n}\n\nexport const TokenValueDimensionStruct = s.define<\n TokenData<'dimension'>['value']\n>('Dimension Value', (value) => {\n if (typeof value !== 'string') {\n return 'Value must be a string';\n }\n if (hasTokenReferences(value)) {\n return 'Value must not contain {} (token references)';\n }\n if (\n !value.endsWith('px') &&\n !value.endsWith('rem') &&\n !value.endsWith('em') &&\n !value.endsWith('%')\n ) {\n return 'Value must end with px, rem, em or %';\n }\n return true;\n});\n\nconst TokenDataDimensionNonRefStruct: s.Describe<\n Extract<TokenData<'dimension'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('dimension'),\n value: TokenValueDimensionStruct,\n kind: s.literal('static'),\n originalValue: TokenValueDimensionStruct,\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataDimensionRefStruct: s.Describe<\n Extract<TokenData<'dimension'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('dimension'),\n value: TokenValueDimensionStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\n/**\n * @deprecated Use `TokenValueDurationStruct` instead\n */\nexport function isTokenValueDuration(\n value: unknown,\n): value is TokenDefinitionSingular<'duration'>['value'] {\n return (\n typeof value === 'string' &&\n value.endsWith('ms') &&\n !hasTokenReferences(value)\n );\n}\n\nexport const TokenValueDurationStruct = s.define<\n TokenData<'duration'>['value']\n>('Duration Value', (value) => {\n if (typeof value !== 'string') {\n return 'Value must be a string';\n }\n if (hasTokenReferences(value)) {\n return 'Value must not contain {} (token references)';\n }\n\n const durationRegex = /^\\d+ms$/;\n if (!durationRegex.test(value)) {\n return 'Value must be a number followed by \"ms\" (e.g., \"100ms\")';\n }\n\n return true;\n});\n\nconst TokenDataDurationNonRefStruct: s.Describe<\n Extract<TokenData<'duration'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('duration'),\n value: TokenValueDurationStruct,\n kind: s.literal('static'),\n originalValue: TokenValueDurationStruct,\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataDurationRefStruct: s.Describe<\n Extract<TokenData<'duration'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('duration'),\n value: TokenValueDurationStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\n/**\n * @deprecated Use `TokenValueFontWeightStruct` instead\n */\nexport function isTokenValueFontWeight(\n value: unknown,\n): value is TokenDefinitionSingular<'fontWeight'>['value'] {\n return (\n (typeof value === 'string' || typeof value === 'number') &&\n !hasTokenReferences(value)\n );\n}\n\nexport const TokenValueFontWeightStruct = s.define<\n TokenData<'fontWeight'>['value']\n>('Font Weight Value', (value) => {\n if (typeof value !== 'string' && typeof value !== 'number') {\n return 'Value must be a string or number';\n }\n if (hasTokenReferences(value)) {\n return 'Value must not contain {} (token references)';\n }\n return true;\n});\n\nconst TokenDataFontWeightNonRefStruct: s.Describe<\n Extract<TokenData<'fontWeight'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('fontWeight'),\n value: TokenValueFontWeightStruct,\n kind: s.literal('static'),\n originalValue: TokenValueFontWeightStruct,\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataFontWeightRefStruct: s.Describe<\n Extract<TokenData<'fontWeight'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('fontWeight'),\n value: TokenValueFontWeightStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\nexport const TokenValueCubicBezierStruct = s.define<\n TokenData<'cubicBezier'>['value']\n>('Cubic Bezier Value', (value) => {\n if (!Array.isArray(value)) {\n return 'Value must be an array';\n }\n if (value.length !== 4) {\n return 'Value must be an array of 4 numbers';\n }\n if (!value.every((v) => typeof v === 'number')) {\n return 'Value must be an array of 4 numbers';\n }\n // check if the first and third values are between 0 and 1\n // cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )\n if (value[0] < 0 || value[0] > 1 || value[2] < 0 || value[2] > 1) {\n return 'The first and third cubicBezier values must be between 0 and 1';\n }\n return true;\n});\n\nconst TokenDataCubicBezierNonRefStruct: s.Describe<\n Extract<TokenData<'cubicBezier'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('cubicBezier'),\n value: TokenValueCubicBezierStruct,\n kind: s.literal('static'),\n originalValue: TokenValueCubicBezierStruct,\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataCubicBezierRefStruct: s.Describe<\n Extract<TokenData<'cubicBezier'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('cubicBezier'),\n value: TokenValueCubicBezierStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\n/**\n * Determines if it's a \"shadow\" token value AND totally de-referenced\n */\nexport function isTokenValueShadow(\n value: unknown,\n): value is Simplify<\n CreateDataValueForComposite<TokenDefinitionComposite<'shadow'>['value']>\n> {\n return (\n isObject(value) &&\n isTokenValueColor(value.color) &&\n isTokenValueDimension(value.offsetX) &&\n isTokenValueDimension(value.offsetY) &&\n isTokenValueDimension(value.blur) &&\n isTokenValueDimension(value.spread)\n );\n}\n\nconst TokenValueShadowStruct = s.define<TokenData<'shadow'>['value']>(\n 'Shadow Value',\n (value) => {\n if (isTokenValueShadow(value)) return true;\n return `Expected a shadow value, got ${JSON.stringify(value)}`;\n },\n);\n\nconst TokenDataShadowNonRefStruct: s.Describe<\n Extract<TokenData<'shadow'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('shadow'),\n value: TokenValueShadowStruct,\n kind: s.literal('static'),\n originalValue: s.type({\n color: s.union([TokenValueColorStruct, TokenReferenceStruct]),\n offsetX: s.union([TokenValueDimensionStruct, TokenReferenceStruct]),\n offsetY: s.union([TokenValueDimensionStruct, TokenReferenceStruct]),\n blur: s.union([TokenValueDimensionStruct, TokenReferenceStruct]),\n spread: s.union([TokenValueDimensionStruct, TokenReferenceStruct]),\n inset: s.union([\n // marking this as optional b/c it could be `undefined` instead of `false`\n s.optional(s.boolean()),\n TokenReferenceStruct,\n ]),\n }),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataShadowRefStruct: s.Describe<\n Extract<TokenData<'shadow'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('shadow'),\n value: TokenValueShadowStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\nexport const TokenValueStrokeStyleStruct = s.union([\n s.literal('solid'),\n s.literal('dashed'),\n s.literal('dotted'),\n s.literal('double'),\n s.literal('groove'),\n s.literal('ridge'),\n s.literal('outset'),\n s.literal('inset'),\n]);\n\n/**\n * Determines if it's a \"border\" token value AND totally de-referenced\n */\nexport function isTokenValueBorder(\n value: unknown,\n): value is Simplify<\n CreateDataValueForComposite<TokenDefinitionComposite<'border'>['value']>\n> {\n return (\n isObject(value) &&\n TokenValueColorStruct.is(value.color) &&\n TokenValueStrokeStyleStruct.is(value.style) &&\n TokenValueDimensionStruct.is(value.width)\n );\n}\n\nconst TokenValueBorderStruct = s.define<TokenData<'border'>['value']>(\n 'Border Value',\n isTokenValueBorder,\n);\n\nconst TokenDataBorderNonRefStruct: s.Describe<\n Extract<TokenData<'border'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('border'),\n value: TokenValueBorderStruct,\n kind: s.literal('static'),\n originalValue: s.type({\n color: s.union([TokenValueColorStruct, TokenReferenceStruct]),\n style: s.union([TokenValueStrokeStyleStruct, TokenReferenceStruct]),\n width: s.union([TokenValueDimensionStruct, TokenReferenceStruct]),\n }),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataBorderRefStruct: s.Describe<\n Extract<TokenData<'border'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('border'),\n value: TokenValueBorderStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\n/**\n * Determines if it's a \"transition\" token value AND totally de-referenced\n */\nexport function isTokenValueTransition(\n value: unknown,\n): value is Simplify<\n CreateDataValueForComposite<TokenDefinitionComposite<'transition'>['value']>\n> {\n return (\n isObject(value) &&\n TokenValueCubicBezierStruct.is(value.timingFunction) &&\n TokenValueDurationStruct.is(value.duration) &&\n TokenValueDurationStruct.is(value.delay)\n );\n}\nconst TokenValueTransitionStruct = s.define<TokenData<'transition'>['value']>(\n 'Transition Value',\n isTokenValueTransition,\n);\n\nconst TokenDataTransitionNonRefStruct: s.Describe<\n Extract<TokenData<'transition'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('transition'),\n value: TokenValueTransitionStruct,\n kind: s.literal('static'),\n originalValue: s.type({\n timingFunction: s.union([\n TokenValueCubicBezierStruct,\n TokenReferenceStruct,\n ]),\n duration: s.union([TokenValueDurationStruct, TokenReferenceStruct]),\n delay: s.union([TokenValueDurationStruct, TokenReferenceStruct]),\n }),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataTransitionRefStruct: s.Describe<\n Extract<TokenData<'transition'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('transition'),\n value: TokenValueTransitionStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataStringNonRefStruct: s.Describe<\n Extract<TokenData<'string'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('string'),\n value: s.string(),\n kind: s.literal('static'),\n originalValue: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataStringRefStruct: s.Describe<\n Extract<TokenData<'string'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('string'),\n value: s.string(),\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataStrokeStyleNonRefStruct: s.Describe<\n Extract<TokenData<'strokeStyle'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('strokeStyle'),\n value: TokenValueStrokeStyleStruct,\n kind: s.literal('static'),\n originalValue: TokenValueStrokeStyleStruct,\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataStrokeStyleRefStruct: s.Describe<\n Extract<TokenData<'strokeStyle'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('strokeStyle'),\n value: TokenValueStrokeStyleStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: TokenValueStrokeStyleStruct,\n }),\n TokenDataBaseStruct,\n);\n// const TokenDataFontFamilyNonRefStruct: s.Describe<\n// Extract<TokenData<'fontFamily'>, { kind: 'static' }>\n// > = s.assign(\n// s.type({\n// type: s.literal('fontFamily'),\n// value: s.union([s.string(), s.array(s.string())]),\n// kind: s.literal('static'),\n// originalValue: s.union([s.string(), s.array(s.string())]),\n// }),\n// TokenDataBaseStruct,\n// );\n\n// const TokenDataFontFamilyRefStruct: s.Describe<\n// Extract<TokenData<'fontFamily'>, { kind: 'ref' }>\n// > = s.assign(\n// s.type({\n// type: s.literal('fontFamily'),\n// value: s.union([s.string(), s.array(s.string())]),\n// kind: s.literal('ref'),\n// originalValue: TokenReferenceStruct,\n// referencedTokenId: s.string(),\n// }),\n// TokenDataBaseStruct,\n// );\n\nconst TokenDataNumberNonRefStruct: s.Describe<\n Extract<TokenData<'number'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('number'),\n value: s.number(),\n kind: s.literal('static'),\n originalValue: s.number(),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataNumberRefStruct: s.Describe<\n Extract<TokenData<'number'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('number'),\n value: s.number(),\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataBooleanNonRefStruct: s.Describe<\n Extract<TokenData<'boolean'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('boolean'),\n value: s.boolean(),\n kind: s.literal('static'),\n originalValue: s.boolean(),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataBooleanRefStruct: s.Describe<\n Extract<TokenData<'boolean'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('boolean'),\n value: s.boolean(),\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\n// Instead of using `s.union` to combine all the token data structs,\n// we first find out what \"type\" the token is\n// then we find out `kind` - which is our 2nd layer of discriminated union\n// and then use the specific struct\n// that way the errors are more specific to the actual declared token \"type\"\n// In a nutshell, `s.union` is not very good at discriminated unions errors\nexport const assertTokenData = (data: unknown): asserts data is TokenData => {\n if (!isObject(data)) {\n throw new Error(\n `Expected token data to be an object, got ${JSON.stringify(data)}`,\n );\n }\n if (!isObjKey('type', data)) {\n throw new Error(\n `Expected token data to have a \"type\" property, got ${JSON.stringify(\n data,\n )}`,\n );\n }\n if (typeof data.type !== 'string') {\n throw new Error(\n `Expected token data \"type\" property to be a string, got ${JSON.stringify(\n data,\n )}`,\n );\n }\n const type = data.type as TokenData['type'];\n const kind = data.kind as TokenData['kind'];\n try {\n switch (type) {\n case 'boolean':\n if (kind === 'ref') {\n TokenDataBooleanRefStruct.assert(data);\n } else {\n TokenDataBooleanNonRefStruct.assert(data);\n }\n return;\n case 'border':\n if (kind === 'ref') {\n TokenDataBorderRefStruct.assert(data);\n } else {\n TokenDataBorderNonRefStruct.assert(data);\n }\n return;\n case 'color':\n if (kind === 'ref') {\n TokenDataColorRefStruct.assert(data);\n } else {\n TokenDataColorNonRefStruct.assert(data);\n }\n return;\n case 'cubicBezier':\n if (kind === 'ref') {\n TokenDataCubicBezierRefStruct.assert(data);\n } else {\n TokenDataCubicBezierNonRefStruct.assert(data);\n }\n return;\n case 'dimension':\n if (kind === 'ref') {\n TokenDataDimensionRefStruct.assert(data);\n } else {\n TokenDataDimensionNonRefStruct.assert(data);\n }\n return;\n case 'duration':\n if (kind === 'ref') {\n TokenDataDurationRefStruct.assert(data);\n } else {\n TokenDataDurationNonRefStruct.assert(data);\n }\n return;\n case 'fontWeight':\n if (kind === 'ref') {\n TokenDataFontWeightRefStruct.assert(data);\n } else {\n TokenDataFontWeightNonRefStruct.assert(data);\n }\n return;\n case 'number':\n if (kind === 'ref') {\n TokenDataNumberRefStruct.assert(data);\n } else {\n TokenDataNumberNonRefStruct.assert(data);\n }\n return;\n case 'shadow':\n if (kind === 'ref') {\n TokenDataShadowRefStruct.assert(data);\n } else {\n TokenDataShadowNonRefStruct.assert(data);\n }\n return;\n case 'string':\n if (kind === 'ref') {\n TokenDataStringRefStruct.assert(data);\n } else {\n TokenDataStringNonRefStruct.assert(data);\n }\n return;\n case 'strokeStyle': // temp implementation\n if (kind === 'ref') {\n TokenDataStrokeStyleRefStruct.assert(data);\n } else {\n TokenDataStrokeStyleNonRefStruct.assert(data);\n }\n return;\n // case 'fontFamily':\n // if (kind === 'ref') {\n // TokenDataFontFamilyRefStruct.assert(data);\n // } else {\n // TokenDataFontFamilyNonRefStruct.assert(data);\n // }\n // return;\n case 'transition':\n if (kind === 'ref') {\n TokenDataTransitionRefStruct.assert(data);\n } else {\n TokenDataTransitionNonRefStruct.assert(data);\n }\n return;\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unknown token data type: ${type}`);\n }\n }\n } catch (error) {\n if (!(error instanceof s.StructError)) throw error;\n throw new Error(\n `Invalid token data for type \"${type}\": ${\n error.message\n }. Received this data: \"${JSON.stringify(data)}\"`,\n );\n }\n};\n","import { Simplify, expectType } from '@knapsack/utils';\nimport {\n TokenType,\n TokenDefinitionSingular,\n TokenDefinitionComposite,\n isTokenTypeComposite,\n isTokenTypeSingular,\n} from './token-definitions';\n\ntype CreateTokenSrcValueInfo<\n T extends {\n type: TokenType;\n value: unknown;\n },\n> =\n | {\n kind: 'ref';\n /** Has `{}` removed */\n referencedTokenId: string;\n isVarRef?: boolean;\n type: T['type'];\n }\n | {\n kind: 'static';\n type: T['type'];\n value: T['value'];\n };\n\ntype TokenSrcValueInfoSingularRaw = {\n // Ignore the key, pay attention to the value\n // The values become the items in the discriminated union\n [TheTokenType in TokenDefinitionSingular as TheTokenType['type']]: Simplify<\n CreateTokenSrcValueInfo<TheTokenType>\n >;\n}[TokenDefinitionSingular['type']];\n\n// This helper allows us to just pass the type string in to get that\n// item out of the discriminated union: `TokenSrcValueInfoSingular<'color'>`\ntype TokenSrcValueInfoSingular<\n TT extends TokenSrcValueInfoSingularRaw['type'] = TokenSrcValueInfoSingularRaw['type'],\n> = Extract<TokenSrcValueInfoSingularRaw, { type: TT }>;\n\nexpectType<TokenSrcValueInfoSingular<'dimension'>[]>([\n {\n type: 'dimension',\n kind: 'static',\n value: '1px',\n },\n {\n type: 'dimension',\n kind: 'ref',\n referencedTokenId: 'a.b',\n },\n]);\n\ntype CreateSrcValueInfoForComposite<\n ValueObj extends Record<string, { type: TokenDefinitionSingular['type'] }>,\n> = {\n [Key in keyof ValueObj]: Simplify<\n CreateTokenSrcValueInfo<{\n type: ValueObj[Key]['type'];\n value: TokenDefinitionSingular<ValueObj[Key]['type']>['value'];\n }>\n >;\n};\n\ntype TokenSrcValueInfoCompositeRaw = {\n [TheTokenType in TokenDefinitionComposite['type']]: Simplify<\n CreateTokenSrcValueInfo<{\n type: TheTokenType;\n value: Simplify<\n CreateSrcValueInfoForComposite<\n TokenDefinitionComposite<TheTokenType>['value']\n >\n >;\n }>\n >;\n}[TokenDefinitionComposite['type']];\n\ntype TokenSrcValueInfoComposite<\n TT extends TokenSrcValueInfoCompositeRaw['type'] = TokenSrcValueInfoCompositeRaw['type'],\n> = Extract<TokenSrcValueInfoCompositeRaw, { type: TT }>;\n\nexpectType<TokenSrcValueInfoComposite<'border'>[]>([\n {\n type: 'border',\n kind: 'ref',\n referencedTokenId: 'a.b',\n },\n {\n type: 'border',\n kind: 'static',\n value: {\n color: {\n kind: 'static',\n type: 'color',\n value: 'red',\n },\n style: {\n kind: 'ref',\n type: 'strokeStyle',\n referencedTokenId: '', // FIX\n },\n width: {\n kind: 'static',\n type: 'dimension',\n value: '2px',\n },\n },\n },\n]);\n\nexpectType<TokenSrcValueInfoComposite<'transition'>[]>([\n {\n type: 'transition',\n kind: 'ref',\n referencedTokenId: 'a.b',\n },\n {\n type: 'transition',\n kind: 'static',\n value: {\n delay: {\n kind: 'static',\n type: 'duration',\n value: '1ms',\n },\n duration: {\n kind: 'ref',\n type: 'duration',\n referencedTokenId: 'animation.slow',\n },\n timingFunction: {\n kind: 'static',\n type: 'cubicBezier',\n value: [0.4, 0.0, 0.2, 1],\n },\n },\n },\n]);\n\nexport type TokenSrcValueInfo<\n TT extends\n | TokenSrcValueInfoComposite['type']\n | TokenSrcValueInfoSingular['type'] =\n | TokenSrcValueInfoComposite['type']\n | TokenSrcValueInfoSingular['type'],\n TheKind extends\n | TokenSrcValueInfoComposite['kind']\n | TokenSrcValueInfoSingular['kind'] =\n | TokenSrcValueInfoComposite['kind']\n | TokenSrcValueInfoSingular['kind'],\n> = Extract<\n TokenSrcValueInfoComposite | TokenSrcValueInfoSingular,\n { type: TT; kind: TheKind }\n>;\n\nexport function isTokenSrcValueInfoSingular(\n tokenSrcValueInfo: TokenSrcValueInfo,\n): tokenSrcValueInfo is TokenSrcValueInfoSingular {\n return isTokenTypeSingular(tokenSrcValueInfo?.type);\n}\nexport function isTokenSrcValueInfoComposite(\n tokenSrcValueInfo: TokenSrcValueInfo,\n): tokenSrcValueInfo is TokenSrcValueInfoComposite {\n return isTokenTypeComposite(tokenSrcValueInfo?.type);\n}\n\nexpectType<TokenSrcValueInfo[]>([\n {\n type: 'dimension',\n kind: 'static',\n value: '1px',\n },\n {\n type: 'transition',\n kind: 'ref',\n referencedTokenId: 'a.b',\n },\n {\n type: 'transition',\n kind: 'ref',\n // @ts-expect-error - with `kind: 'ref'`, `value` is not allowed\n value: '1px',\n },\n {\n kind: 'ref',\n type: 'duration',\n referencedTokenId: 'animation.slow',\n },\n {\n kind: 'static',\n type: 'cubicBezier',\n value: [0.4, 0.0, 0.2, 1],\n },\n {\n type: 'transition',\n kind: 'static',\n value: {\n delay: {\n kind: 'static',\n type: 'duration',\n value: '1ms',\n },\n duration: {\n kind: 'ref',\n type: 'duration',\n referencedTokenId: 'animation.slow',\n },\n timingFunction: {\n kind: 'static',\n type: 'cubicBezier',\n value: [0.4, 0.0, 0.2, 1],\n },\n },\n },\n]);\n\n/**\n * A common object that is used to represent a token in the app.\n * Used in functions for editing communication between UI forms, Xstate,\n * and `@knapsack/design-tokens-utils`.\n */\nexport type TokenInfo<\n TheTokenType extends TokenSrcValueInfo['type'] = TokenSrcValueInfo['type'],\n> = {\n tokenSrcValueInfo: TokenSrcValueInfo<TheTokenType>;\n tokenId: string;\n description?: string;\n};\n","import { Simplify, expectType, isObjKey, isObject } from '@knapsack/utils';\nimport {\n TokenDefinitionComposite,\n TokenDefinitionSingular,\n TokenReference,\n TokenType,\n TokenDefinition,\n} from './token-definitions';\nimport { TokenKsExtensions } from './token-misc';\n\nexport type TokenSrcCommon<TheType extends TokenType = TokenType> = {\n $type?: TokenDefinition<TheType>['type'];\n $description?: string;\n $extensions?: {\n 'cloud.knapsack'?: TokenKsExtensions;\n };\n};\n\nexport function isTokenSrcExtensions(\n extensionsObj: unknown,\n): extensionsObj is TokenSrcCommon['$extensions'] {\n return isObject(extensionsObj) && isObjKey('cloud.knapsack', extensionsObj);\n}\n\ntype CreateSrcValueForComposite<\n ValueObj extends Record<string, { type: TokenDefinitionSingular['type'] }>,\n> = {\n [Key in keyof ValueObj]:\n | TokenReference\n | TokenDefinitionSingular<ValueObj[Key]['type']>['value'];\n};\n\ntype TokenSrcValueCompositeRaw = {\n [TheTokenType in TokenDefinitionComposite['type']]: Simplify<{\n type: TheTokenType;\n value: Simplify<\n CreateSrcValueForComposite<\n TokenDefinitionComposite<TheTokenType>['value']\n >\n >;\n }>;\n}[TokenDefinitionComposite['type']];\n\ntype TokenSrcValueComposite<\n TT extends TokenSrcValueCompositeRaw['type'] = TokenSrcValueCompositeRaw['type'],\n> = Extract<TokenSrcValueCompositeRaw, { type: TT }>;\n\ntype TokenSrcValueRaw = TokenDefinitionSingular | TokenSrcValueComposite;\n\nexport type TokenSrcValue<\n Type extends\n | TokenDefinitionSingular['type']\n | TokenSrcValueComposite['type'] =\n | TokenDefinitionSingular['type']\n | TokenSrcValueComposite['type'],\n> = Extract<TokenSrcValueRaw, { type: Type }>['value'] | TokenReference;\n\nexpectType<TokenSrcValue[]>([\n '#ddd',\n true,\n [83, 1, 1, 1],\n {\n color: '#000',\n style: 'solid',\n width: '1px',\n },\n {\n inset: true,\n color: '#000',\n offsetX: '0px',\n offsetY: '{spacing.medium}',\n spread: '0px',\n blur: '0px',\n },\n {\n timingFunction: '{timing.ease}',\n duration: '{timing.duration.medium}',\n delay: '7ms',\n color: '#000',\n },\n]);\n\nexport type TokenSrc<\n TheType extends\n | TokenDefinitionSingular['type']\n | TokenSrcValueComposite['type'] =\n | TokenDefinitionSingular['type']\n | TokenSrcValueComposite['type'],\n> = Simplify<\n {\n $value: TokenSrcValue<TheType>;\n } & TokenSrcCommon<TheType>\n>;\n\nexport function isTokenSrc(tokenObject: unknown): tokenObject is TokenSrc {\n if (isObject(tokenObject) && isObjKey('$value', tokenObject)) return true;\n return false;\n}\n\nexport type TokenSrcGroup = TokenSrcCommon & {\n [key: string]:\n | TokenSrcGroup\n | TokenSrc\n | TokenSrcCommon\n | TokenSrcCommon['$extensions'];\n};\n\nexport function isTokenGroup(\n tokenObject: unknown,\n): tokenObject is TokenSrcGroup {\n // @todo improve\n return (\n isObject(tokenObject) &&\n !isTokenSrcExtensions(tokenObject) &&\n !isObjKey('$value', tokenObject) &&\n // ensuring we are not in `$extensions` object\n !isObjKey('cloud.knapsack', tokenObject)\n );\n}\n\n// Token VAR references look like TokenSrcGroup\nexport function isTokenTypeVarRef(tokenObject: unknown) {\n // It's at least a TokenSrcGroup\n if (isTokenGroup(tokenObject)) {\n // The specific key within collectionInfo with the var reference\n const varRefCollectionInfo =\n tokenObject.$extensions['cloud.knapsack'].group.collectionInfo;\n if (\n isObjKey('type', varRefCollectionInfo) &&\n isObjKey('referenceId', varRefCollectionInfo)\n ) {\n return true;\n }\n }\n\n return false;\n}\n","import { parseNumberWithUnit } from '@knapsack/utils';\n\nexport function getPrimitiveValue(\n tokenValue: unknown,\n): 'string' | 'number' | 'boolean' {\n const type = typeof tokenValue;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return type;\n }\n throw new Error(\n `Invalid token value type: ${JSON.stringify(\n type,\n )}. Token value is: ${JSON.stringify(tokenValue)}`,\n );\n}\n\nexport type TokenDimensionUnit = 'px' | 'rem' | 'em' | '%';\n\n/**\n * Dimension strings require ending in 'px' or 'rem'\n * @see `libs/types/src/app-client-data/design-tokens-types/token-definitions.ts`\n */\nexport const isDimensionString = (\n value: string,\n): value is `${number}${'px' | 'rem' | 'em' | '%'}` =>\n value.includes('px') ||\n value.includes('rem') ||\n value.includes('em') ||\n value.includes('%');\n\n/**\n * Pass in values like `'12px'` to get detailed info\n * @throws if value is not a number or does not end in supported unit\n */\nexport function parseTokenDimensionValue(valueToParse: string | number): {\n value: number;\n unit?: TokenDimensionUnit;\n} {\n const { value, unit } = parseNumberWithUnit(valueToParse);\n if (!unit) {\n return { value };\n }\n if (unit !== 'px' && unit !== 'rem' && unit !== 'em' && unit !== '%') {\n throw new Error(`Invalid unit \"${unit}\" for value: ${value}`);\n }\n\n return { value, unit };\n}\n","import type { CSSProperties } from 'react';\nimport type { JsonSchemaObject } from '../json-schema';\nimport { RendererId } from '../renderers';\nimport { isObject } from '../type-utils';\nimport type { BlockConfig } from './blocks';\nimport type { Page, PageTab } from './page';\nimport { TokenSrcValueInfo } from './design-tokens-types/token-src-value-info';\n\nexport interface KsStatus {\n id: string;\n title: string;\n color?: string;\n}\n\nexport interface KsStatusSet {\n id: string;\n title: string;\n statuses: KsStatus[];\n}\n\n/**\n * Used by template renderers in addition to `path`\n * Twig: `@components/button.twig`\n * Web Components: `my-button` => `<my-button>`\n * React: a named export of the file if not `default`\n * @todo Replace this with `rendererOptions`\n */\ntype TemplateAlias = string;\n\nexport type SlottedTemplateDemo = {\n type: 'template-demo';\n /** @deprecated */\n patternId: string;\n /** @deprecated */\n templateId: string;\n /**\n * The demo referenced by `demoId` is inlined here before sending to server to\n * render, but is never stored in the json data. If this is present, it is\n * used instead of the demo referenced by `demoId`. This is done to ensure\n * server has all the latest data for a template demo by ensuring it includes\n * it's slotted children's data.\n * @see {inlineDemoData}\n */\n demo?: DataDemo;\n demoId: DemoBase['id'];\n};\n\n/**\n * i.e. Given a React Component, `Button`, this set to null/false would be\n * `<Button>` and set to true it would just be a reference to it: `Button`\n * @see {KsSlotInfo['isTemplateReference']}\n */\nexport type SlottedTemplateReference = {\n type: 'template-reference';\n patternId: string;\n templateId: string;\n};\n\nexport type SlottedText = {\n type: 'text';\n text: string;\n};\n\nexport type SlottedData =\n | SlottedText\n | SlottedTemplateDemo\n | SlottedTemplateReference;\n\n/** @deprecated - just check `type` */\nexport const isSlottedText = (\n slottedData: unknown,\n): slottedData is SlottedText =>\n isObject(slottedData) && slottedData.type === 'text';\n\n/** @deprecated - just check `type` */\nexport function isSlottedTemplateDemo(\n slottedData: unknown,\n): slottedData is SlottedTemplateDemo {\n return isObject(slottedData) && slottedData.type === 'template-demo';\n}\n\n/** @deprecated - just check `type` */\nexport function isSlottedTemplateReference(\n slottedData: unknown,\n): slottedData is SlottedTemplateReference {\n return isObject(slottedData) && slottedData.type === 'template-reference';\n}\n\n/**\n * Collection ID: Mode ID\n */\nexport type ThemeDefinition = {\n [collectionId: string]: string;\n};\n\nexport type SlotOptions = {\n /**\n * @default 'div'\n */\n wrappingElementName?: string;\n cssClasses?: string[];\n align?: {\n value:\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'left'\n | 'center'\n | 'right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n };\n layout?: {\n value: 'horizontal' | 'vertical' | 'wrap';\n };\n gap?: {\n value: TokenSrcValueInfo<'dimension'>;\n };\n paddingHorizontal?: {\n value: TokenSrcValueInfo<'dimension'>[];\n };\n paddingVertical?: {\n value: TokenSrcValueInfo<'dimension'>[];\n };\n /**\n * Collection ID: Mode ID\n */\n theme?: ThemeDefinition;\n};\n\n/**\n * These are created from {SlotOptions}\n * Only available in App Client for rendering - this is NOT saved in App Client Data\n */\nexport type SlotOptionsComputed = {\n styles: CSSProperties;\n cssClasses: string[];\n /**\n * @default 'div'\n */\n wrappingElementName: string;\n /**\n * can't be `style` or `class` or `className`\n */\n attributes: {\n [attributeName: string]: string;\n };\n};\n\nexport type KnapsackTemplateData = {\n /**\n * @todo Ideal would be `{ [key: string]: string | boolean | number }`\n */\n props: {\n [prop: string]: any;\n };\n slots?: {\n [slotName: string]: Array<SlottedData>;\n };\n /**\n * Settings from users are stored here and saved in App Client Data\n * This is used to dynamically create `slotsOptionsComputed`\n */\n slotsOptions?: {\n [slotName: string]: SlotOptions;\n };\n /**\n * Use `slotsOptions` to set & save styles on slotted children\n * Never set nor stored in App Client Data that gets saved\n * This is only inlined in the demo data for rendering so the App Client can\n * apply the styles to the slotted children\n * @see {inlineDemoData}\n */\n slotsOptionsComputed?: {\n [slotName: string]: SlotOptionsComputed;\n };\n};\n\ntype DemoType = 'data' | 'template';\n\ntype DemoBase = {\n id: string;\n title: string;\n description?: string;\n /**\n * Would override what was on the template\n */\n assetSetId?: string;\n width?: number;\n height?: number;\n type: DemoType;\n /** Collection ID: Mode ID */\n theme?: ThemeDefinition;\n};\n\n/**\n * Shows usage\n */\nexport type DataDemo = DemoBase & {\n type: 'data';\n patternId: string;\n templateId: string;\n data: KnapsackTemplateData;\n};\n\n/**\n * Shows source code\n */\nexport type TemplateDemo = DemoBase & {\n type: 'template';\n templateInfo: {\n alias?: TemplateAlias;\n path?: string;\n };\n};\n\nexport type Demo = TemplateDemo | DataDemo;\n\nexport type RenderDataDemo = Demo & {\n inlineStyles?: string;\n bodyAttributes?: Record<string, string>;\n};\n\n/** @deprecated */\nexport enum StageLayouts {\n portrait = 'portrait',\n landscape = 'landscape',\n}\n\nexport function isDataDemo(demo: TemplateDemo | DataDemo): demo is DataDemo {\n return demo?.type === 'data';\n}\n\nexport function isTemplateDemo(demo: Demo): demo is TemplateDemo {\n return demo?.type === 'template';\n}\n\nexport type KsSlotInfo = {\n title: string;\n description?: string;\n disallowText?: boolean;\n isRequired?: boolean;\n allowOnlyOne?: boolean;\n /**\n * i.e. Given a React Component, `Button`, this set to null/false would be\n * `<Button>` and set to true it would just be a reference to it: `Button`\n * @see {SlottedTemplateReference}\n */\n isTemplateReference?: boolean;\n allowedPatternIds?: string[];\n};\n\n/**\n * Supersedes `schema`\n */\nexport type KsTemplateSpec = {\n /**\n * Attempt to create the props & slots spec by reading the source file.\n * Prevents ability to use spec editor.\n *\n * If `true`, then uses the template `alias` & `path` to find the file.\n *\n * If a string, then that file path is used in place of the source file.\n *\n * Scenario: the `path` is used to point to a compiled file w types stripped\n * and this is used to point to either the source file w types or the compiled\n * `.d.ts` file. Currently only React is supported. The file extension\n * determines if TypeScript (ts/tsx) or PropTypes (js/jsx) is used for\n * inference.\n */\n isInferred?: boolean | string;\n /**\n * JSON Schema defining the serializable data passed in\n * The classic, formerly `schema`\n */\n props?: JsonSchemaObject;\n /**\n * Child component slots\n */\n slots?: {\n [name: string]: KsSlotInfo;\n };\n /**\n * @todo evaluate & refine\n */\n // cssProps?: {\n // [name: string]: {\n // title: string;\n // description: string;\n // };\n // };\n hidePropsTable?: boolean;\n hideSlotsTable?: boolean;\n /**\n * Extra Docs are each shown in their own table.\n * Useful for non-traditional spec docs that are more template language specific.\n * Examples: events, methods, etc\n */\n extraDocs?: {\n id: string;\n title: string;\n description?: string;\n tableRows?: {\n [columnTitle: string]: string;\n }[];\n }[];\n};\n\nexport interface KnapsackPatternTemplate {\n id: string;\n title?: string;\n /**\n * Relative file path to the template from the config file it is declared in\n */\n path: string;\n\n alias?: TemplateAlias;\n /**\n * Which template language? i.e. `twig`, `react` Replaces\n * KnapsackTemplateRenderer.test which ran a test on the file path (similar to\n * how WebPack loader `test` works)\n */\n templateLanguageId: RendererId;\n assetSetIds?: string[];\n spec?: KsTemplateSpec;\n /** Array of demo IDs, actual demo data is stored in `db.demos.demosById` */\n demoIds: Demo['id'][];\n /** Array of block IDs, actual block content is stored in db.blocks.blocksById */\n blockIds: BlockConfig['id'][];\n}\n\nexport type KnapsackPattern = Page & {\n $schema?: string;\n statuses?: {\n [statusSetId: string]: string;\n };\n templates?: KnapsackPatternTemplate[];\n subPages?: {\n id: string;\n title: string;\n blockIds: BlockConfig['id'][];\n }[];\n designSrcComponentsById?: Record<\n string,\n {\n id: string;\n title: string;\n componentId: string;\n fileId: string;\n }\n >;\n /** Controls order of `templates` & `subPages` on Pattern Page */\n tabs?: PageTab[];\n\n aliases?: string[];\n /**\n * Prevents pattern from appearing in System Overview and Status Table blocks\n */\n hideFromOverviewBlocks?: boolean;\n /**\n * Prevents pattern from appearing as an option in Component Embed and\n * Component Demo blocks\n */\n hideFromComponentBlocks?: boolean;\n};\n\nexport interface KnapsackPatternTemplateCode {\n html: string;\n data?: Record<string, any>;\n templateSrc: string;\n usage: string;\n language: string;\n}\n\nexport type KnapsackPatternsConfig = {\n $schema?: string;\n statusSets: KsStatusSet[];\n};\n\nexport interface TemplateRendererMeta {\n id: RendererId;\n title: string;\n version?: string;\n aliasTitle?: string;\n aliasDescription?: string;\n aliasUse: 'off' | 'optional' | 'required';\n aliasIsJsNamedExport?: boolean;\n syntaxHighlightingLanguage?: string;\n enableDataDemos: boolean;\n enableTemplateDemos: boolean;\n hasSlotsSupport: boolean;\n hasSlotOptionsSupport?: boolean;\n hasInferSpecSupport: boolean;\n hasTemplateSuggestionsSupport: boolean;\n prototypingTemplate?: {\n path: string;\n alias?: string;\n spec: Pick<KsTemplateSpec, 'props' | 'slots' | 'isInferred'>;\n };\n}\n\nexport type PatternsState = {\n patterns: {\n [id: string]: KnapsackPattern;\n };\n renderers: Partial<\n Record<\n RendererId,\n {\n meta: TemplateRendererMeta;\n }\n >\n >;\n} & KnapsackPatternsConfig;\n","import { ColorConfig } from '../color-config';\n\nexport enum PageHeaderSizes {\n auto = 'auto',\n small = 'small',\n medium = 'medium',\n large = 'large',\n full = 'full',\n}\n\nexport interface PageHeaderSettings {\n size?: `${PageHeaderSizes}`;\n backgroundImage?: string;\n backgroundColor?: ColorConfig;\n backgroundOverlay?: boolean;\n backgroundSize?: 'cover' | 'contain' | 'string';\n backgroundPosition?: 'left' | 'center' | 'right' | 'string';\n backgroundRepeat?: 'no-repeat' | 'repeat-x' | 'repeat-y' | 'repeat';\n hideText?: boolean;\n textColorTitle?: ColorConfig;\n textColorDescription?: ColorConfig;\n}\n","import {\n // type structs validate that a value has a set of properties on it, but it does not assert anything about unspecified properties. This allows you to assert that a particular set of functionality exists without a strict equality check for properties.\n type,\n string,\n Describe,\n boolean,\n optional,\n array,\n number,\n define,\n} from 'superstruct';\nimport { isObjKey, isObject } from '../type-utils';\nimport type { KnapsackAssetSetsData } from './asset-sets';\nimport type { TokenSrcGroup } from './design-tokens-types';\nimport type { MetaState } from './meta';\nimport type { KnapsackNavsConfig } from './nav';\nimport type { KsFiles } from './files';\nimport type { BlockConfig } from './blocks';\nimport type { KnapsackCustomPagesData } from './custom-pages';\nimport type { Demo, PatternsState } from './patterns';\nimport { UiConfig } from '../ui-config';\nimport { PagesSettings } from './page';\nimport { BlocksSettings } from './blocks.settings';\nimport { DesignSrcFile } from '../design-src.types';\n\nexport * from './asset-sets';\nexport * from './blocks';\nexport * from './custom-pages';\nexport * from './design-tokens';\nexport * from './design-tokens-types';\nexport * from './nav';\nexport * from './files';\nexport * from './meta';\nexport * from './patterns';\nexport { PageHeaderSizes } from './page.header';\nexport type { PageHeaderSettings } from './page.header';\nexport type { PageTab, PageType } from './page';\n\nexport interface KsAppClientData {\n patternsState: PatternsState;\n customPagesState: KnapsackCustomPagesData;\n assetSetsState: KnapsackAssetSetsData;\n navsState: KnapsackNavsConfig;\n tokensSrc: TokenSrcGroup;\n metaState?: MetaState;\n filesState: KsFiles;\n db: {\n blocks: {\n byId: Record<string, BlockConfig>;\n settings: BlocksSettings;\n };\n demos: {\n byId: Record<string, Demo>;\n // \"never\" for now until there are actual settings for demos\n settings: Record<string, never>;\n };\n settings: {\n title?: string;\n hideTitleInNavigation?: boolean;\n logoUrl?: string;\n favicon?: `https://${string}`;\n theme?: UiConfig;\n pages?: PagesSettings;\n designSrcs?: {\n files?: DesignSrcFile[];\n };\n tokens?: {\n theming?: {\n /** Which template languages theming controls will show up for next to the components preview stage. */\n enabledRendererIds?: string[];\n };\n };\n prototyping?: {\n patternId: string;\n };\n };\n };\n}\n\nexport type KsAppClientDataNoMeta = Omit<KsAppClientData, 'metaState'>;\nexport type KsAppClientDataAndMeta = Required<KsAppClientData>;\n\nexport function isKsAppClientDataNoMeta(\n data: unknown,\n): data is KsAppClientDataNoMeta {\n if (!isObject(data)) return false;\n // TODO: bring in exhaustive key checking here so all keys are caught\n const requiredKeys: Array<keyof KsAppClientDataNoMeta> = [\n 'assetSetsState',\n 'customPagesState',\n 'navsState',\n 'patternsState',\n 'tokensSrc',\n 'db',\n ];\n if (!requiredKeys.every((key) => isObjKey(key, data))) return false;\n if (!isObjKey('metaState', data)) return true;\n return false;\n}\n\nexport const KsAppClientDataNoMetaStruct = define<KsAppClientDataNoMeta>(\n 'KsAppClientDataNoMeta',\n isKsAppClientDataNoMeta,\n);\n\nexport function isKsAppClientDataAndMeta(\n data: unknown,\n): data is KsAppClientDataAndMeta {\n if (!isObject(data)) return false;\n // TODO: bring in exhaustive key checking here so all keys are caught\n const requiredKeys: Array<keyof KsAppClientDataAndMeta> = [\n 'assetSetsState',\n 'customPagesState',\n 'navsState',\n 'patternsState',\n 'tokensSrc',\n 'metaState',\n 'db',\n ];\n return requiredKeys.every((key) => isObjKey(key, data));\n}\n\nexport const KsAppClientDataAndMetaStruct = define<KsAppClientDataAndMeta>(\n 'KsAppClientDataAndMeta',\n isKsAppClientDataAndMeta,\n);\n\nexport const KsMetaStateStruct: Describe<KsAppClientData['metaState']> = type({\n isLocalDev: boolean(),\n plugins: array(\n type({\n id: string(),\n hasContent: boolean(),\n clientPluginPath: optional(string()),\n cssPath: optional(string()),\n }),\n ),\n meta: optional(\n type({\n version: optional(string()),\n hasKnapsackCloud: boolean(),\n knapsackCloudSiteId: optional(string()),\n serverPort: optional(number()),\n websocketsPort: optional(number()),\n https: optional(boolean()),\n cacheDir: optional(string()),\n ksVersions: type({\n app: string(),\n }),\n }),\n ),\n});\n\nexport const isKsMetaState = KsMetaStateStruct.is;\n","import {\n // type structs validate that a value has a set of properties on it, but it does not assert anything about unspecified properties. This allows you to assert that a particular set of functionality exists without a strict equality check for properties.\n type,\n string,\n Describe,\n boolean,\n optional,\n array,\n number,\n define,\n} from 'superstruct';\nimport { isObjKey, isObject } from '../type-utils';\nimport type { KnapsackAssetSetsData } from './asset-sets';\nimport type { KsDesignTokensState } from './design-tokens';\nimport type { MetaState } from './meta';\nimport type { KnapsackNavsConfig } from './nav';\nimport type { KsFiles } from './files';\nimport type { KnapsackCustomPagesData } from './custom-pages';\nimport type { PatternsState } from './patterns';\nimport type { KnapsackSettings } from './settings';\n\nexport type {\n KsDesignToken,\n KsDesignTokenAttributes,\n KsDesignTokenData,\n KsDesignTokenDataGroup,\n KsDesignTokenSrc,\n KsDesignTokenSrcGroup,\n KsDesignTokensState,\n KsTokenType,\n KsTokenValue,\n KnapsackDesignToken,\n} from './design-tokens';\n\nexport interface KsAppClientDataV3 {\n settingsState: {\n settings: KnapsackSettings;\n };\n patternsState: PatternsState;\n customPagesState: KnapsackCustomPagesData;\n assetSetsState: KnapsackAssetSetsData;\n navsState: KnapsackNavsConfig;\n tokensState: KsDesignTokensState;\n metaState?: MetaState;\n filesState: KsFiles;\n}\n\nexport type KsAppClientDataNoMetaV3 = Omit<KsAppClientDataV3, 'metaState'>;\nexport type KsAppClientDataAndMetaV3 = Required<KsAppClientDataV3>;\n\nexport function isKsAppClientDataNoMetaV3(\n data: unknown,\n): data is KsAppClientDataNoMetaV3 {\n if (!isObject(data)) return false;\n const requiredKeys: Array<keyof KsAppClientDataNoMetaV3> = [\n 'assetSetsState',\n 'customPagesState',\n 'navsState',\n 'patternsState',\n 'settingsState',\n 'tokensState',\n ];\n if (!requiredKeys.every((key) => isObjKey(key, data))) return false;\n if (!isObjKey('metaState', data)) return true;\n return false;\n}\n\nexport const KsAppClientDataNoMetaStructV3 = define<KsAppClientDataNoMetaV3>(\n 'KsAppClientDataNoMeta',\n isKsAppClientDataNoMetaV3,\n);\n\nexport function isKsAppClientDataAndMetaV3(\n data: unknown,\n): data is KsAppClientDataAndMetaV3 {\n if (!isObject(data)) return false;\n const requiredKeys: Array<keyof KsAppClientDataAndMetaV3> = [\n 'assetSetsState',\n 'customPagesState',\n 'navsState',\n 'patternsState',\n 'settingsState',\n 'tokensState',\n 'metaState',\n ];\n return requiredKeys.every((key) => isObjKey(key, data));\n}\n\nexport const KsAppClientDataAndMetaStructV3 = define<KsAppClientDataAndMetaV3>(\n 'KsAppClientDataAndMeta',\n isKsAppClientDataAndMetaV3,\n);\n\nexport const KsMetaStateStructV3: Describe<KsAppClientDataV3['metaState']> =\n type({\n isLocalDev: boolean(),\n plugins: array(\n type({\n id: string(),\n hasContent: boolean(),\n clientPluginPath: optional(string()),\n cssPath: optional(string()),\n }),\n ),\n meta: optional(\n type({\n version: optional(string()),\n hasKnapsackCloud: boolean(),\n knapsackCloudSiteId: optional(string()),\n serverPort: optional(number()),\n websocketsPort: optional(number()),\n https: optional(boolean()),\n cacheDir: optional(string()),\n ksVersions: type({\n app: string(),\n }),\n }),\n ),\n });\n\nexport const isKsMetaStateV3 = KsMetaStateStructV3.is;\n","import { isDraft, type Draft } from 'immer';\nimport { Migration } from './migration.types';\nimport { KnapsackPattern, SlottedData } from '../app-client-data/patterns';\n\ntype Migration417DemosType = {\n version: string;\n checkIfNeeded: (appClientData: any) => boolean;\n migrate: (appClientData: Draft<any>) => void;\n};\n\nexport const migration417Demos: Migration417DemosType = {\n version: '4.1.7',\n checkIfNeeded: (appClientData) => {\n // this one will be tough to check for, so we'll just assume it's needed\n return true;\n },\n // note that `appClientData` is mutable since we're already in Immer\n migrate: (appClientData) => {\n if (!isDraft(appClientData)) {\n throw new Error(\n `Tried to run migrations on appClientData but it is not an Immer Draft`,\n );\n }\n Object.values(appClientData.patternsState.patterns).forEach(\n (\n pattern: Draft<\n KnapsackPattern & {\n demoSize?: string;\n }\n >,\n ) => {\n delete pattern.demoSize;\n },\n );\n\n Object.values(appClientData.db.demos.byId).forEach((demo) => {\n if (demo.type !== 'data') return;\n\n Object.entries(demo.data.slots ?? {}).forEach(([slotName, slotData]) => {\n demo.data.slots[slotName] = slotData.map(\n (slottedData: Draft<SlottedData | string>) => {\n // it used to be just a string\n if (typeof slottedData === 'string') {\n return {\n type: 'text',\n text: slottedData,\n };\n }\n if (\n // not doing anything with these\n slottedData.type === 'template-reference' ||\n // these already were migrated or made by the new editor\n slottedData.type === 'text'\n ) {\n return slottedData;\n }\n // these used to not have a type set\n slottedData.type = 'template-demo';\n return slottedData;\n },\n );\n });\n\n if (demo.patternId && demo.templateId) return;\n\n // using an IIFE so we can stop looping once we find it\n // would use `break` but it's a double loop\n (() => {\n for (const { id: pId, templates = [] } of Object.values(\n appClientData.patternsState.patterns,\n )) {\n for (const { id: tId, demoIds = [] } of templates) {\n if (demoIds.includes(demo.id)) {\n demo.patternId = pId;\n demo.templateId = tId;\n // found it - stop looking\n return;\n }\n }\n }\n })();\n });\n },\n} satisfies Migration;\n","// import { JSONSchema7 } from 'json-schema'; @todo consider using instead; though I'm not seeing it make it's way to the compiled JSON schema themselves via `convert-types-to-json-schmea.js`\n\ntype PropBase<Type = any> = {\n title?: string;\n description?: string;\n default?: Type;\n};\n\nexport enum PropTypeNames {\n 'string' = 'string',\n 'boolean' = 'boolean',\n 'number' = 'number',\n 'object' = 'object',\n 'options' = 'options',\n 'function' = 'function',\n 'customTypeScript' = 'customTypeScript',\n 'array' = 'array',\n 'arrayOfObjects' = 'arrayOfObjects',\n 'arrayOfStrings' = 'arrayOfStrings',\n 'arrayOfNumbers' = 'arrayOfNumbers',\n 'unknown' = 'unknown',\n}\nexport type PropTypeNamesList = keyof typeof PropTypeNames;\n\nexport type StringProp = {\n type: 'string';\n} & PropBase<string>;\n\nexport type BooleanProp = {\n type: 'boolean';\n} & PropBase<boolean>;\n\nexport type NumberProp = {\n type: 'number';\n} & PropBase<number>;\n\nexport type OptionsProp = {\n type: 'string';\n enum: string[];\n enumNames?: string[];\n} & PropBase<string>;\n\nexport type CustomTypeScriptProp = {\n /**\n * TypeScript type\n * @example (name: string) => void\n */\n tsType: string;\n type?: never;\n default?: string;\n} & PropBase<string>;\n\nexport type FunctionProp = {\n typeof: 'function';\n /**\n * TypeScript type\n * @example (name: string) => void\n */\n tsType: string;\n default?: string;\n type?: 'string';\n} & PropBase<string>;\n\nexport type ObjectProp = {\n type: 'object';\n additionalProperties?: boolean;\n required?: string[];\n properties: {\n [prop: string]: PropertyTypes;\n };\n} & PropBase;\n\nexport type ArrayProp = {\n type: 'array';\n items: PropertyTypes;\n} & PropBase<unknown[]>;\n\nexport type ArrayOfStringsProp = {\n type: 'array';\n uniqueItems?: boolean;\n items: StringProp;\n} & PropBase<unknown[]>;\n\nexport type ArrayOfNumbersProp = {\n type: 'array';\n uniqueItems?: boolean;\n items: NumberProp;\n} & PropBase<number[]>;\n\nexport type ArrayOfObjectsProp = {\n type: 'array';\n items: ObjectProp;\n} & PropBase<Array<Record<string, unknown>>>;\n\nexport type PropertyTypes =\n | StringProp\n | BooleanProp\n | NumberProp\n | OptionsProp\n | FunctionProp\n | CustomTypeScriptProp\n | ObjectProp\n | ArrayOfObjectsProp\n | ArrayOfStringsProp\n | ArrayOfNumbersProp\n | ArrayProp;\n\nexport const isStringProp = (prop: PropertyTypes): prop is StringProp =>\n 'type' in prop && prop.type === 'string' && !('enum' in prop);\nexport const isNumberProp = (prop: PropertyTypes): prop is NumberProp =>\n 'type' in prop && prop.type === 'number';\nexport const isBooleanProp = (prop: PropertyTypes): prop is BooleanProp =>\n 'type' in prop && prop.type === 'boolean';\nexport const isOptionsProp = (prop: PropertyTypes): prop is OptionsProp =>\n 'enum' in prop;\nexport const isFunctionProp = (prop: PropertyTypes): prop is FunctionProp =>\n 'typeof' in prop && prop?.typeof === 'function';\nexport const isCustomTypeScriptProp = (\n prop: PropertyTypes,\n): prop is CustomTypeScriptProp => !('typeof' in prop) && 'tsType' in prop;\nexport const isArrayOfObjectsProp = (\n prop: PropertyTypes,\n): prop is ArrayOfObjectsProp =>\n 'type' in prop &&\n prop.type === 'array' &&\n 'items' in prop &&\n prop.items.type === 'object';\nexport const isObjectProp = (prop: PropertyTypes): prop is ObjectProp =>\n 'type' in prop &&\n prop.type === 'object' &&\n 'properties' in prop &&\n Object.keys(prop.properties).length > 0;\nexport const isArrayOfStringsProp = (\n prop: PropertyTypes,\n): prop is ArrayOfStringsProp =>\n 'type' in prop &&\n prop.type === 'array' &&\n 'items' in prop &&\n prop.items.type === 'string';\nexport const isArrayOfNumbersProp = (\n prop: PropertyTypes,\n): prop is ArrayOfNumbersProp =>\n 'type' in prop &&\n prop.type === 'array' &&\n 'items' in prop &&\n prop.items.type === 'number';\n\nexport interface PropTypeDataBase {\n type: any;\n id: string;\n isRequired?: boolean;\n data: any;\n}\n\nexport interface StringPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.string;\n data: StringProp;\n}\n\nexport interface BooleanPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.boolean;\n data: BooleanProp;\n}\n\nexport interface NumberPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.number;\n data: NumberProp;\n}\n\nexport interface OptionsPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.options;\n data: OptionsProp;\n}\n\nexport interface FunctionPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.function;\n data: FunctionProp;\n}\n\nexport interface CustomTypeScriptPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.customTypeScript;\n data: CustomTypeScriptProp;\n}\n\nexport interface ObjectPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.object;\n data: ObjectProp;\n}\n\nexport interface ArrayOfObjectsPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.arrayOfObjects;\n data: ArrayOfObjectsProp;\n}\n\nexport interface ArrayOfStringsPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.arrayOfStrings;\n data: ArrayOfStringsProp;\n}\n\nexport interface ArrayOfNumbersPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.arrayOfNumbers;\n data: ArrayOfNumbersProp;\n}\n\nexport interface ArrayPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.array;\n data: ArrayProp;\n}\n\nexport type PropTypeData =\n | StringPropTypeData\n | BooleanPropTypeData\n | NumberPropTypeData\n | OptionsPropTypeData\n | FunctionPropTypeData\n | CustomTypeScriptPropTypeData\n | ObjectPropTypeData\n | ArrayOfObjectsPropTypeData\n | ArrayOfStringsPropTypeData\n | ArrayOfNumbersPropTypeData;\n\nexport type JsonSchemaObject<PropNames extends string = string> = {\n $schema?: string;\n title?: string;\n description?: string;\n type: 'object';\n required?: PropNames[];\n properties: Record<PropNames, PropertyTypes>;\n examples?: Record<string, unknown>[];\n};\n","import * as s from 'superstruct';\nimport type { Patch } from 'immer';\nimport type { SetOptional } from '@knapsack/utils';\nimport type { UUID, DateString } from './misc';\n\n/**\n * Patch\n */\n\nexport type { Patch };\n\nconst PatchStructRuntime = s.object({\n op: s.union([s.literal('replace'), s.literal('remove'), s.literal('add')]),\n path: s.array(s.union([s.string(), s.number()])),\n value: s.optional(s.any()),\n});\nconst PatchStruct: s.Describe<Patch> = PatchStructRuntime;\n\nexport const isPatch = (patch: unknown): patch is Patch =>\n PatchStruct.is(patch);\n\nconst PatchesStructRuntime = s.array(PatchStructRuntime);\nconst PatchesStruct: s.Describe<Patch[]> = PatchesStructRuntime;\n\nexport const isPatches = (patches: unknown): patches is Patch[] =>\n PatchesStruct.is(patches);\n\n/**\n * KsRemoteChange\n */\nexport type KsChange<Event extends { type: string } = { type: string }> = {\n patches: Patch[];\n inversePatches: Patch[];\n event: Event;\n id: UUID;\n date: DateString;\n};\nexport type KsRemoteChange = SetOptional<KsChange, 'inversePatches' | 'event'>;\n\nconst KsRemoteChangeRuntime = s.type({\n patches: PatchesStructRuntime,\n inversePatches: s.optional(PatchesStructRuntime),\n event: s.optional(s.object({ type: s.string() })),\n id: s.string(),\n date: s.string(),\n userId: s.optional(s.string()),\n});\nconst KsRemoteChangeStruct: s.Describe<KsRemoteChange> = KsRemoteChangeRuntime;\n\nexport const isKsRemoteChange = (change: unknown): change is KsRemoteChange =>\n KsRemoteChangeStruct.is(change);\n\nconst KsRemoteChangesStructRuntime = s.array(KsRemoteChangeRuntime);\nexport const KsRemoteChangesStruct: s.Describe<KsRemoteChange[]> =\n KsRemoteChangesStructRuntime;\n\nexport const isKsRemoteChanges = (\n changes: unknown,\n): changes is KsRemoteChange[] => KsRemoteChangesStruct.is(changes);\n","import type { FeedbackTypes } from './misc';\n\nexport enum KsRendererClientEvents {\n ready = 'ready',\n}\n\n/**\n * Message sent from the renderer client (in the iframe) to the App UI parent window\n * using `window.parent.postMessage()`.\n * Note that this likely will become a union type of all possible messages\n */\nexport type KsRendererClientMsg =\n | {\n /**\n * Sent when a `ResizeObserver` detects a change in the contents height or width.\n */\n type: 'ksRendererClient.contentResized';\n height: number;\n width: number;\n }\n | {\n type: 'ksRendererClient.showToast';\n msg: string;\n feedbackType?: FeedbackTypes;\n };\n\n/**\n * The meta data is stored in a script tag with this id\n * @see {KsRendererClientMeta}\n */\nexport const ksRendererClientMetaId = 'ks-meta';\n\n/**\n * Metadata about the current renderer client demo\n * @see {ksRendererClientMetaId} for the ID of the script tag\n */\nexport interface KsRendererClientMeta {\n patternId: string;\n templateId: string;\n demoId: string;\n assetSetId: string;\n isInIframe: boolean;\n websocketsPort: number;\n}\n","export enum GitProviderType {\n GitHub = 'GitHub',\n GitLab = 'GitLab',\n GitLabRest = 'GitLabRest',\n Bitbucket = 'Bitbucket',\n Azure = 'Azure',\n}\n\nexport type FileAddition = {\n /** base64 */\n contents: string;\n path: string;\n\n /** Action to perform: create, delete, move, update, or chmod. */\n action?: RestActions;\n /** Content of the file. */\n content?: string;\n /** Full path to the file. */\n filePath?: string;\n /** Encoding of the file. Default is text. */\n encoding?: TextEncoding;\n /** Last known file commit ID. */\n lastCommitId?: string;\n /** Original full path to the file being moved. */\n previousPath?: string;\n};\n\nexport type FileDeletion = {\n path: string;\n};\n\nexport enum MergeableState {\n Conflicting = 'CONFLICTING',\n Mergeable = 'MERGEABLE',\n Unknown = 'UNKNOWN',\n}\n\nexport enum RestActions {\n Create = 'CREATE',\n Move = 'MOVE',\n Update = 'UPDATE',\n Chmod = 'CHMOD',\n}\n\nexport enum TextEncoding {\n Base64 = 'BASE64',\n Text = 'TEXT',\n}\n\nexport type FileChanges = {\n /** File to add or change. */\n additions?: FileAddition[];\n\n /** Files to delete. */\n deletions?: FileDeletion[];\n\n /** Last known file commit ID. */\n lastCommitId?: string;\n};\n\nexport type CommitAction = Record<string, unknown>;\n\nexport interface RepoLabel {\n name: string;\n /** ID optional because bitbucket does not provide id. We might be able to generate one if its required, eg. reponame-labelname */\n id?: string;\n}\n\nexport interface RepoInfo {\n id: string;\n url: string;\n name: string;\n ownerName?: string;\n defaultBranch?: any;\n}\n\n// 'BranchInfo' name is currently taken by GitLab generated queries. Thus 'BranchInfoResult'\nexport interface BranchInfoResult {\n sha: string;\n shortSha?: string;\n associatedPullRequests?: Pr[];\n additions?: number;\n commitUrl?: string;\n deletions?: number;\n id?: string; // In GitLab, this is the branch name. Modelled this way to make deleteBranch work.\n default?: boolean;\n}\n\nexport interface PrInfo {\n url: string;\n number: number;\n id: string;\n}\n\nexport interface Pr {\n id: string;\n title: string;\n createdAt: string;\n headRef: {\n id?: string;\n name?: string;\n target: BranchInfoResult;\n };\n mergeable: MergeableState;\n merged: boolean;\n number: number;\n body: string;\n isDraft: boolean;\n url: string;\n author: {\n login: string;\n avatarUrl: string;\n };\n diffHeadSha?: string;\n targetBranch?: string;\n version?: string; // needed for bitbucket merge\n}\n\nexport interface GitProvider {\n type: GitProviderType;\n createBranch: (opt: { branch: string }) => Promise<BranchInfoResult>;\n commitOnBranch: (opt: {\n branch: string;\n message: string;\n fileChanges: FileChanges;\n }) => Promise<Record<string, unknown> | void>;\n getRepoLabels: () => Promise<RepoLabel[]>;\n getRepoInfo: () => Promise<RepoInfo>;\n getBranchInfo: ({ branch }: { branch: string }) => Promise<BranchInfoResult>;\n getPrs: () => Promise<Pr[]>;\n getPr: ({ prNumber }: { prNumber: number }) => Promise<Pr>;\n getTree?: (opt: { branch: string }) => Promise<{\n treeItems: {\n path: string;\n type: 'blob';\n /** SHA-1, use https://www.npmjs.com/package/git-hash-object */\n sha: string;\n url?: string;\n }[];\n }>;\n mergePr: ({ prNumber }: { prNumber: number }) => Promise<boolean>;\n createPr: ({\n siteId,\n branch,\n title,\n body,\n labelIds,\n }: {\n siteId: string;\n branch: string;\n title: string;\n body?: string;\n labelIds?: string[];\n }) => Promise<PrInfo>;\n deleteBranch: ({ id, branch }: { id: string; branch: string }) => Promise<{\n clientMutationId?: string;\n }>;\n getFileInfoOnBranchByPath: (opt: {\n filePath: string;\n branch: string;\n }) => Promise<{ exists: boolean; filePath: string }>;\n}\n","export const endpoint = `/plugins`;\n\nexport enum ACTIONS {\n getContent = 'getContent',\n}\n\nexport interface GetContentRequest {\n type: ACTIONS.getContent;\n pluginId: string;\n}\n\nexport interface GetContentResponse {\n type: ACTIONS.getContent;\n ok: boolean;\n message?: string;\n payload: Record<string, unknown>;\n}\n\nexport type ActionRequests = GetContentRequest;\n\nexport type ActionResponses = GetContentResponse;\n","import type { RendererId } from '../renderers';\n\nexport const endpoint = `/files`;\n\nexport enum ACTIONS {\n verify = 'verify',\n}\n\nexport interface VerifyData {\n type: ACTIONS.verify;\n payload: {\n path: string;\n rendererId: RendererId;\n };\n}\n\nexport interface VerifyDataResponse {\n type: ACTIONS.verify;\n payload: {\n exists: boolean;\n relativePath: string;\n absolutePath: string;\n type: 'absolute' | 'relative' | 'package' | 'unknown';\n };\n}\n\nexport type Actions = VerifyData;\n\nexport type ActionResponses = VerifyDataResponse;\n","/**\n * The roles here are duplicates of the roles in the database.\n * It needs to be here, in the types package, so it can be used in all packages.\n * If we pull it in from `@knapsack/hasura-gql-client`, which is the source, we get a dependency cycle. So we do it this way.\n * If the roles change in the database, we need to change them here too. We will get a build error if we don't (see code in `@knapsack/hasura-gql-client`).\n */\n\nexport const rolesById = {\n ADMIN: 'ADMIN',\n ANONYMOUS: 'ANONYMOUS',\n CONTRIBUTOR: 'CONTRIBUTOR',\n EDITOR: 'EDITOR',\n MANAGER: 'MANAGER',\n VIEWER: 'VIEWER',\n} as const;\nexport const roles = Object.values(rolesById);\nexport type Role = keyof typeof rolesById;\n","import { KsAppClientDataAndMeta } from '@knapsack/types';\n\nexport type SiteDeployedWebhookBody = {\n siteId: string;\n appClientData: KsAppClientDataAndMeta;\n};\n\nexport const siteDeployedWebhookEndpoint = '/site-deployed';\n\nexport const gitHubOauthInternalEndpoint = '/github-auth';\n","import { isUrl } from '@knapsack/utils';\n\nconst { KS_DB_URL } = process.env;\nif (KS_DB_URL && !isUrl(KS_DB_URL)) {\n throw new Error(`KS_DB_URL is not a valid URL: '${KS_DB_URL}'`);\n}\nconst dbUrl = KS_DB_URL || 'https://db.knapsack.cloud';\nconst dbGqlEndpoint = new URL('/v1/graphql', dbUrl).toString();\n\nexport const ksUrls = {\n /**\n * Base URL for Knapsack DB (Hasura)\n * @default 'https://db.knapsack.cloud'\n */\n dbUrl,\n /**\n * App DB GraphQL endpoint for connecting to Hasura GraphQL.\n * @default 'https://db.knapsack.cloud/v1/graphql'\n */\n dbGqlEndpoint,\n};\n","export const ksHttpHeaders = {\n siteId: 'X-KS-Site-ID',\n instanceId: 'X-KS-Instance-Id',\n appClientVersion: 'X-KS-App-Client-Version',\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js","../../../node_modules/.pnpm/is-arrayish@0.3.2/node_modules/is-arrayish/index.js","../../../node_modules/.pnpm/simple-swizzle@0.2.2/node_modules/simple-swizzle/index.js","../../../node_modules/.pnpm/color-string@1.9.1/node_modules/color-string/index.js","../src/users.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/utils/env.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/utils/errors.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/utils/common.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/utils/plugins.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/core/scope.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/core/finalize.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/core/proxy.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/core/immerClass.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/core/current.ts","../../../node_modules/.pnpm/immer@10.1.1/node_modules/immer/src/immer.ts","../../types/src/ui-config.ts","../../types/src/color-config.ts","../../types/src/typography-config.ts","../../types/src/nav-customization-config.ts","../../types/src/app-client-data/design-tokens-types/token-definitions.ts","../../types/src/app-client-data/design-tokens-types/token-data.ts","../../types/src/app-client-data/design-tokens-types/token-src-value-info.ts","../../types/src/app-client-data/design-tokens-types/token-src.ts","../../types/src/app-client-data/design-tokens-types/token-utils.ts","../../types/src/app-client-data/patterns.ts","../../types/src/app-client-data/page.header.ts","../../types/src/app-client-data/index.ts","../../types/src/app-client-data-v3/index.ts","../../types/src/app-client-data-migrations/4.1.7-demos.ts","../../types/src/json-schema.ts","../../types/src/changes.ts","../../types/src/renderer-client-types.ts","../../types/src/git-providers.ts","../../types/src/user-roles.ts","../src/webhooks.ts","../src/ks-urls.ts","../src/http-headers.ts"],"names":["require_color_name","__commonJSMin","exports","module","require_is_arrayish","__name","obj","require_simple_swizzle","isArrayish","concat","slice","swizzle","args","results","i","len","arg","fn","require_color_string","colorNames","hasOwnProperty","reverseNames","name","cs","string","prefix","val","model","abbr","hex","rgba","per","keyword","rgb","match","hexAlpha","i2","clamp","hsl","alpha","h","s","l","a","hwb","w","b","hexDouble","r","g","hsla","hwba","num","min","max","str","NOTHING","DRAFTABLE","DRAFT_STATE","errors","plugin","thing","data","die","error","e","msg","getPrototypeOf","isDraft","value","isDraftable","isPlainObject","isMap","isSet","objectCtorString","proto","Ctor","each","iter","getArchtype","key","entry","index","state","has","prop","set","propOrOldValue","t","is","x","y","target","latest","shallowCopy","base","strict","isPlain","descriptors","keys","desc","freeze","deep","isFrozen","dontMutateFrozenCollections","plugins","getPlugin","pluginKey","currentScope","getCurrentScope","createScope","parent_","immer_","usePatchesInScope","scope","patchListener","revokeScope","leaveScope","revokeDraft","enterScope","immer","draft","processResult","result","baseDraft","finalize","maybeFreeze","rootScope","path","childValue","finalizeProperty","resultEach","parentState","targetObject","rootPath","targetIsSet","res","createProxyProxy","parent","isArray","traps","objectTraps","arrayTraps","revoke","proxy","source","readPropFromProto","peek","prepareCopy","createProxy","getDescriptorFromProto","current","currentState","markChanged","owner","Immer","config","recipe","defaultBase","self","hasError","p","ip","patches","inversePatches","patch","applyPatchesImpl","currentImpl","copy","setUseStrictShallowCopy","applyPatches","Ie","n","isColor","color","colorString","ColorStringStruct","define","ColorConfigStruct","union","type","literal","FontSizeConfigValStruct","object","enums","number","FontFaceWeightStruct","FontFaceSourceFormats","Fe","FontFaceFormatsEnumStruct","FontFaceSourceStruct","FontFaceConfigStruct","optional","size","array","TextTransforms","FontStretches","je","TypographyLinkConfigStruct","boolean","FontSizeConfigStruct","TypographyConfigStruct","NavCustomizationConfigStruct","PrimaryNavCustomizationConfigStruct","SecondaryNavCustomizationConfigStruct","UiConfigV3Struct","UiConfigV4Struct","defaulted","UiConfigV6Struct","UiConfigV7Struct","UiConfigV9Struct","UiConfigV10Struct","isTokenReference","hasTokenReferences","isNotTokenReference","TokenReferenceStruct","ye","compositeTypesRecord","tokenTypeComposites","singularTypesRecord","tokenTypeSingulars","isTokenTypeComposite","isTokenTypeSingular","expectType","TokenDataBaseStruct","isTokenDataComposite","tokenData","isTokenValueColor","TokenValueColorStruct","TokenDataColorNonRefStruct","TokenDataColorRefStruct","isTokenValueDimension","TokenValueDimensionStruct","TokenDataDimensionNonRefStruct","TokenDataDimensionRefStruct","isTokenValueDuration","TokenValueDurationStruct","TokenDataDurationNonRefStruct","TokenDataDurationRefStruct","isTokenValueFontWeight","TokenValueFontWeightStruct","TokenDataFontWeightNonRefStruct","TokenDataFontWeightRefStruct","TokenValueCubicBezierStruct","v","TokenDataCubicBezierNonRefStruct","TokenDataCubicBezierRefStruct","isTokenValueShadow","isObject","TokenValueShadowStruct","TokenDataShadowNonRefStruct","TokenDataShadowRefStruct","TokenValueStrokeStyleStruct","isTokenValueBorder","TokenValueBorderStruct","TokenDataBorderNonRefStruct","TokenDataBorderRefStruct","isTokenValueTransition","TokenValueTransitionStruct","TokenDataTransitionNonRefStruct","TokenDataTransitionRefStruct","TokenDataStringNonRefStruct","TokenDataStringRefStruct","TokenDataStrokeStyleNonRefStruct","TokenDataStrokeStyleRefStruct","TokenDataNumberNonRefStruct","TokenDataNumberRefStruct","TokenDataBooleanNonRefStruct","TokenDataBooleanRefStruct","isObjKey","kind","isTokenSrcValueInfoSingular","tokenSrcValueInfo","isTokenSrcValueInfoComposite","isTokenSrcExtensions","extensionsObj","isTokenSrc","tokenObject","isTokenGroup","isTokenTypeVarRef","varRefCollectionInfo","getPrimitiveValue","tokenValue","parseTokenDimensionValue","valueToParse","unit","parseNumberWithUnit","isSlottedText","slottedData","isSlottedTemplateDemo","isSlottedTemplateReference","StageLayouts","Nt","isDataDemo","demo","isTemplateDemo","PageHeaderSizes","Ce","isKsAppClientDataNoMeta","isKsAppClientDataAndMeta","KsAppClientDataAndMetaStruct","isKsMetaState","isKsAppClientDataNoMetaV3","isKsAppClientDataAndMetaV3","KsAppClientDataAndMetaStructV3","isKsMetaStateV3","appClientData","pattern","slotName","slotData","pId","templates","tId","demoIds","PropTypeNames","Wt","isNumberProp","isBooleanProp","isFunctionProp","isArrayOfObjectsProp","isObjectProp","PatchStructRuntime","PatchStruct","isPatch","PatchesStructRuntime","PatchesStruct","isPatches","KsRemoteChangeRuntime","KsRemoteChangeStruct","change","KsRemoteChangesStructRuntime","KsRemoteChangesStruct","isKsRemoteChanges","changes","KsRendererClientEvents","Jt","GitProviderType","MergeableState","qt","RestActions","Xt","TextEncoding","rolesById","roles","RolesEnums","Xr","RolesEnumsStruct","canRoleAdmin","role","rolesThatCanManageUsers","canRoleManageUsers","rolesThatCanDelete","canRoleDelete","rolesThatCanEdit","canRoleEdit","rolesThatCanPublish","canRolePublish","rolesThatCanView","canRoleView","isRoleValid","HasuraRoles","HasuraRolesStruct","HasuraClaimsStruct","KsClaimsStruct","record","JwtBaseStruct","HASURA_CLAIMS_NAMESPACE","KNAPSACK_CLAIMS_NAMESPACE","JwtCustomClaimsStruct","JwtWithCustomClaimsStruct","assign","expandSitesByRole","sitesByRole","cur","roleId","siteIds","siteId","defaultAnonymousKsClaims","getKsClaims","claims","ksClaims","siteRoleMap","siteDeployedWebhookEndpoint","gitHubOauthInternalEndpoint","KS_DB_URL","isUrl","dbUrl","dbGqlEndpoint","ksUrls","ksHttpHeaders"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,EAAA,CAAA,MAAA,CAAA,MAAA,CAAA,IAAA,EAAA,CAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,CAAA,MAAA,CAAA,wBAAA,CAAA,IAAA,EAAA,CAAA,MAAA,CAAA,mBAAA,CAAA,IAAA,EAAA,CAAA,MAAA,CAAA,cAAA,CAAA,EAAA,CAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,KAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,CAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,UAAA,CAAA,IAAA,IAAA,CAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAAA,EAAAC,CAAAA,EAAAA,CAAA,CAAAC,EAAAA,CAAAC,EAAA,GAAA,CAEAA,EAAO,CAAA,OAAA,CAAU,CAChB,SAAA,CAAa,CAAC,GAAA,CAAK,IAAK,GAAG,CAAA,CAC3B,YAAgB,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC9B,IAAQ,CAAA,CAAC,CAAG,CAAA,GAAA,CAAK,GAAG,CAAA,CACpB,UAAc,CAAA,CAAC,IAAK,GAAK,CAAA,GAAG,CAC5B,CAAA,KAAA,CAAS,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CACvB,CAAA,KAAA,CAAS,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CACvB,CAAA,MAAA,CAAU,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CACxB,KAAS,CAAA,CAAC,CAAG,CAAA,CAAA,CAAG,CAAC,CACjB,CAAA,cAAA,CAAkB,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAChC,CAAA,IAAA,CAAQ,CAAC,CAAG,CAAA,CAAA,CAAG,GAAG,CAAA,CAClB,UAAc,CAAA,CAAC,GAAK,CAAA,EAAA,CAAI,GAAG,CAAA,CAC3B,KAAS,CAAA,CAAC,GAAK,CAAA,EAAA,CAAI,EAAE,CAAA,CACrB,UAAa,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAC3B,CAAA,SAAA,CAAa,CAAC,EAAA,CAAI,GAAK,CAAA,GAAG,CAC1B,CAAA,UAAA,CAAc,CAAC,GAAA,CAAK,GAAK,CAAA,CAAC,EAC1B,SAAa,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,EAAE,CAAA,CAC1B,KAAS,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,EAAE,CAAA,CACtB,cAAkB,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAChC,CAAA,QAAA,CAAY,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAC1B,CAAA,OAAA,CAAW,CAAC,GAAK,CAAA,EAAA,CAAI,EAAE,CAAA,CACvB,IAAQ,CAAA,CAAC,CAAG,CAAA,GAAA,CAAK,GAAG,CACpB,CAAA,QAAA,CAAY,CAAC,CAAA,CAAG,CAAG,CAAA,GAAG,CACtB,CAAA,QAAA,CAAY,CAAC,CAAA,CAAG,GAAK,CAAA,GAAG,CACxB,CAAA,aAAA,CAAiB,CAAC,GAAA,CAAK,IAAK,EAAE,CAAA,CAC9B,QAAY,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC1B,SAAa,CAAA,CAAC,CAAG,CAAA,GAAA,CAAK,CAAC,CAAA,CACvB,QAAY,CAAA,CAAC,IAAK,GAAK,CAAA,GAAG,CAC1B,CAAA,SAAA,CAAa,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAC3B,CAAA,WAAA,CAAe,CAAC,GAAA,CAAK,CAAG,CAAA,GAAG,CAC3B,CAAA,cAAA,CAAkB,CAAC,EAAI,CAAA,GAAA,CAAK,EAAE,CAAA,CAC9B,UAAc,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,CAAC,CAC1B,CAAA,UAAA,CAAc,CAAC,GAAA,CAAK,EAAI,CAAA,GAAG,CAC3B,CAAA,OAAA,CAAW,CAAC,GAAK,CAAA,CAAA,CAAG,CAAC,CAAA,CACrB,UAAc,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC5B,YAAgB,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC9B,cAAiB,CAAC,EAAA,CAAI,EAAI,CAAA,GAAG,CAC7B,CAAA,aAAA,CAAiB,CAAC,EAAA,CAAI,GAAI,EAAE,CAAA,CAC5B,aAAiB,CAAA,CAAC,EAAI,CAAA,EAAA,CAAI,EAAE,CAAA,CAC5B,cAAiB,CAAC,CAAA,CAAG,GAAK,CAAA,GAAG,CAC7B,CAAA,UAAA,CAAc,CAAC,GAAA,CAAK,CAAG,CAAA,GAAG,CAC1B,CAAA,QAAA,CAAY,CAAC,GAAA,CAAK,EAAI,CAAA,GAAG,EACzB,WAAe,CAAA,CAAC,CAAG,CAAA,GAAA,CAAK,GAAG,CAAA,CAC3B,OAAW,CAAA,CAAC,IAAK,GAAK,CAAA,GAAG,CACzB,CAAA,OAAA,CAAW,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,EACzB,UAAc,CAAA,CAAC,EAAI,CAAA,GAAA,CAAK,GAAG,CAAA,CAC3B,SAAa,CAAA,CAAC,GAAK,CAAA,EAAA,CAAI,EAAE,CAAA,CACzB,WAAe,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAC7B,CAAA,WAAA,CAAe,CAAC,EAAA,CAAI,GAAK,CAAA,EAAE,CAC3B,CAAA,OAAA,CAAW,CAAC,GAAA,CAAK,CAAG,CAAA,GAAG,CACvB,CAAA,SAAA,CAAa,CAAC,GAAA,CAAK,IAAK,GAAG,CAAA,CAC3B,UAAc,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC5B,IAAQ,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,CAAC,CAAA,CACpB,SAAa,CAAA,CAAC,IAAK,GAAK,CAAA,EAAE,CAC1B,CAAA,IAAA,CAAQ,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,EACtB,KAAS,CAAA,CAAC,CAAG,CAAA,GAAA,CAAK,CAAC,CAAA,CACnB,WAAe,CAAA,CAAC,IAAK,GAAK,CAAA,EAAE,CAC5B,CAAA,IAAA,CAAQ,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CACtB,CAAA,QAAA,CAAY,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAC1B,CAAA,OAAA,CAAW,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CACzB,SAAa,CAAA,CAAC,GAAK,CAAA,EAAA,CAAI,EAAE,CAAA,CACzB,MAAU,CAAA,CAAC,EAAI,CAAA,CAAA,CAAG,GAAG,CAAA,CACrB,MAAS,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CACvB,CAAA,KAAA,CAAS,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CACvB,CAAA,QAAA,CAAY,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,EAC1B,aAAiB,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC/B,SAAa,CAAA,CAAC,IAAK,GAAK,CAAA,CAAC,CACzB,CAAA,YAAA,CAAgB,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,EAC9B,SAAa,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC3B,UAAc,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC5B,SAAa,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAC3B,CAAA,oBAAA,CAAwB,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CACtC,CAAA,SAAA,CAAa,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAC3B,CAAA,UAAA,CAAc,CAAC,GAAA,CAAK,IAAK,GAAG,CAAA,CAC5B,SAAa,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC3B,SAAa,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC3B,WAAe,CAAA,CAAC,IAAK,GAAK,CAAA,GAAG,CAC7B,CAAA,aAAA,CAAiB,CAAC,EAAA,CAAI,GAAK,CAAA,GAAG,EAC9B,YAAgB,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC9B,cAAkB,CAAA,CAAC,IAAK,GAAK,CAAA,GAAG,CAChC,CAAA,cAAA,CAAkB,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAChC,CAAA,cAAA,CAAkB,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAChC,CAAA,WAAA,CAAe,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC7B,IAAQ,CAAA,CAAC,CAAG,CAAA,GAAA,CAAK,CAAC,CAClB,CAAA,SAAA,CAAa,CAAC,EAAA,CAAI,GAAK,CAAA,EAAE,CACzB,CAAA,KAAA,CAAS,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CACvB,OAAW,CAAA,CAAC,GAAK,CAAA,CAAA,CAAG,GAAG,CAAA,CACvB,MAAU,CAAA,CAAC,GAAK,CAAA,CAAA,CAAG,CAAC,CAAA,CACpB,iBAAoB,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAClC,CAAA,UAAA,CAAc,CAAC,CAAA,CAAG,EAAG,GAAG,CAAA,CACxB,YAAgB,CAAA,CAAC,GAAK,CAAA,EAAA,CAAI,GAAG,CAAA,CAC7B,aAAgB,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAC9B,CAAA,cAAA,CAAkB,CAAC,EAAA,CAAI,GAAK,CAAA,GAAG,CAC/B,CAAA,eAAA,CAAmB,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,EACjC,iBAAqB,CAAA,CAAC,CAAG,CAAA,GAAA,CAAK,GAAG,CAAA,CACjC,eAAmB,CAAA,CAAC,EAAI,CAAA,GAAA,CAAK,GAAG,CAAA,CAChC,eAAmB,CAAA,CAAC,GAAK,CAAA,EAAA,CAAI,GAAG,CAChC,CAAA,YAAA,CAAgB,CAAC,EAAA,CAAI,EAAI,CAAA,GAAG,CAC5B,CAAA,SAAA,CAAa,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAC3B,CAAA,SAAA,CAAa,CAAC,GAAA,CAAK,IAAK,GAAG,CAAA,CAC3B,QAAY,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC1B,YAAe,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAC7B,CAAA,IAAA,CAAQ,CAAC,CAAA,CAAG,EAAG,GAAG,CAAA,CAClB,OAAW,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CACzB,KAAS,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,CAAC,CAAA,CACrB,SAAa,CAAA,CAAC,IAAK,GAAK,CAAA,EAAE,CAC1B,CAAA,MAAA,CAAU,CAAC,GAAA,CAAK,GAAK,CAAA,CAAC,CACtB,CAAA,SAAA,CAAa,CAAC,GAAA,CAAK,EAAI,CAAA,CAAC,CACxB,CAAA,MAAA,CAAU,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CACxB,aAAiB,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC/B,SAAa,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC3B,cAAiB,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAC/B,CAAA,aAAA,CAAiB,CAAC,GAAA,CAAK,IAAK,GAAG,CAAA,CAC/B,UAAc,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC5B,UAAa,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAC3B,CAAA,IAAA,CAAQ,CAAC,GAAA,CAAK,GAAK,CAAA,EAAE,CACrB,CAAA,IAAA,CAAQ,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,EACtB,IAAQ,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CACtB,UAAc,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC5B,MAAU,CAAA,CAAC,GAAK,CAAA,CAAA,CAAG,GAAG,CACtB,CAAA,aAAA,CAAiB,CAAC,GAAA,CAAK,EAAI,CAAA,GAAG,CAC9B,CAAA,GAAA,CAAO,CAAC,GAAA,CAAK,CAAG,CAAA,CAAC,CACjB,CAAA,SAAA,CAAa,CAAC,GAAA,CAAK,IAAK,GAAG,CAAA,CAC3B,SAAa,CAAA,CAAC,EAAI,CAAA,GAAA,CAAK,GAAG,CAAA,CAC1B,YAAe,CAAC,GAAA,CAAK,EAAI,CAAA,EAAE,CAC3B,CAAA,MAAA,CAAU,CAAC,GAAA,CAAK,IAAK,GAAG,CAAA,CACxB,UAAc,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,EAAE,CAAA,CAC3B,QAAY,CAAA,CAAC,EAAI,CAAA,GAAA,CAAK,EAAE,CAAA,CACxB,QAAY,CAAA,CAAC,IAAK,GAAK,CAAA,GAAG,CAC1B,CAAA,MAAA,CAAU,CAAC,GAAA,CAAK,EAAI,CAAA,EAAE,EACtB,MAAU,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CACxB,OAAW,CAAA,CAAC,IAAK,GAAK,CAAA,GAAG,CACzB,CAAA,SAAA,CAAa,CAAC,GAAA,CAAK,EAAI,CAAA,GAAG,CAC1B,CAAA,SAAA,CAAa,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAC3B,CAAA,SAAA,CAAa,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CAC3B,IAAQ,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CACtB,CAAA,WAAA,CAAe,CAAC,CAAA,CAAG,GAAK,CAAA,GAAG,CAC3B,CAAA,SAAA,CAAa,CAAC,EAAI,CAAA,GAAA,CAAK,GAAG,CAAA,CAC1B,GAAO,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CACrB,IAAQ,CAAA,CAAC,CAAG,CAAA,GAAA,CAAK,GAAG,CAAA,CACpB,QAAW,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CACzB,CAAA,MAAA,CAAU,CAAC,GAAA,CAAK,EAAI,CAAA,EAAE,CACtB,CAAA,SAAA,CAAa,CAAC,EAAA,CAAI,GAAK,CAAA,GAAG,EAC1B,MAAU,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CACxB,KAAS,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CAAA,CACvB,KAAS,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,GAAG,CACvB,CAAA,UAAA,CAAc,CAAC,GAAA,CAAK,GAAK,CAAA,GAAG,CAC5B,CAAA,MAAA,CAAU,CAAC,GAAK,CAAA,GAAA,CAAK,CAAC,CAAA,CACtB,WAAe,CAAA,CAAC,GAAK,CAAA,GAAA,CAAK,EAAE,CAC7B,EAAA,CAAA,CAAA,CCvJA,IAAAC,EAAAA,CAAAH,EAAA,CAAA,CAAAC,EAAAC,CAAAA,EAAAA,GAAA,CAAAA,EAAAA,CAAO,OAAUE,CAAAA,CAAAA,CAAA,SAAoBC,CAAAA,CAAK,CACzC,OAAI,CAACA,CAAO,EAAA,OAAOA,CAAQ,EAAA,QAAA,CACnB,CAGDA,CAAAA,CAAAA,CAAAA,YAAe,KAAS,EAAA,KAAA,CAAM,OAAQA,CAAAA,CAAG,CAC9CA,EAAAA,CAAAA,CAAI,MAAU,EAAA,CAAA,GAAMA,CAAI,CAAA,MAAA,YAAkB,UACzC,MAAO,CAAA,wBAAA,CAAyBA,CAAMA,CAAAA,CAAAA,CAAI,MAAS,CAAA,CAAE,CAAKA,EAAAA,CAAAA,CAAI,WAAY,CAAA,IAAA,GAAS,QACvF,CAAA,CAAA,CARiB,YCAjB,EAAA,CAAA,CAAA,CAAA,IAAAC,EAAAN,CAAAA,EAAAA,CAAA,CAAAC,EAAAC,CAAAA,EAAAA,GAAA,CAEA,IAAIK,EAAa,CAAA,EAAA,EAAA,CAEbC,EAAS,CAAA,KAAA,CAAM,UAAU,MACzBC,CAAAA,EAAAA,CAAQ,KAAM,CAAA,SAAA,CAAU,KAExBC,CAAAA,EAAAA,CAAUR,EAAO,CAAA,OAAA,CAAUE,EAAA,SAAiBO,CAAAA,CAAM,CAGrD,IAAA,IAFIC,CAAU,CAAA,EAELC,CAAAA,CAAAA,CAAI,CAAGC,CAAAA,CAAAA,CAAMH,CAAK,CAAA,MAAA,CAAQE,CAAIC,CAAAA,CAAAA,CAAKD,CAAK,EAAA,CAAA,CAChD,IAAIE,CAAMJ,CAAAA,CAAAA,CAAKE,CAAC,CAAA,CAEZN,EAAWQ,CAAAA,CAAG,CAEjBH,CAAAA,CAAAA,CAAUJ,EAAO,CAAA,IAAA,CAAKI,CAASH,CAAAA,EAAAA,CAAM,IAAKM,CAAAA,CAAG,CAAC,CAAA,CAE9CH,EAAQ,IAAKG,CAAAA,CAAG,EAElB,CAEA,OAAOH,CACR,CAf+B,CAAA,SAAA,CAAA,CAiB/BF,EAAQ,CAAA,IAAA,CAAO,SAAUM,CAAAA,CAAI,CAC5B,OAAO,UAAY,CAClB,OAAOA,CAAGN,CAAAA,EAAAA,CAAQ,SAAS,CAAC,CAC7B,CACD,EC5BA,CAAA,CAAA,CAAA,IAAAO,GAAAjB,EAAA,CAAA,CAAAC,EAAAC,CAAAA,EAAAA,GAAA,CACA,IAAIgB,CAAa,CAAA,EAAA,EAAA,CACbR,EAAU,EACVS,EAAAA,CAAAA,EAAAA,CAAiB,MAAO,CAAA,cAAA,CAExBC,EAAe,CAAA,MAAA,CAAO,MAAO,CAAA,IAAI,CAGrC,CAAA,IAASC,EAAQH,IAAAA,CAAAA,CACZC,EAAe,CAAA,IAAA,CAAKD,CAAYG,CAAAA,EAAI,IACvCD,EAAaF,CAAAA,CAAAA,CAAWG,EAAI,CAAC,CAAIA,CAAAA,EAAAA,CAAAA,CAF1B,IAAAA,EAAAA,CAMLC,EAAKpB,EAAO,CAAA,OAAA,CAAU,CACzB,EAAA,CAAI,EAAC,CACL,GAAK,CAAA,EACN,CAEAoB,CAAAA,CAAAA,CAAG,GAAM,CAAA,SAAUC,CAAQ,CAAA,CAC1B,IAAIC,CAAAA,CAASD,CAAO,CAAA,SAAA,CAAU,CAAG,CAAA,CAAC,CAAE,CAAA,WAAA,EAChCE,CAAAA,CAAAA,CACAC,EACJ,OAAQF,CAAAA,EACP,IAAK,KACJC,CAAAA,CAAAA,CAAMH,CAAG,CAAA,GAAA,CAAI,IAAIC,CAAM,CAAA,CACvBG,CAAQ,CAAA,KAAA,CACR,MACD,IAAK,KACJD,CAAAA,CAAAA,CAAMH,EAAG,GAAI,CAAA,GAAA,CAAIC,CAAM,CAAA,CACvBG,CAAQ,CAAA,KAAA,CACR,MACD,QACCD,CAAMH,CAAAA,CAAAA,CAAG,GAAI,CAAA,GAAA,CAAIC,CAAM,CAAA,CACvBG,CAAQ,CAAA,KAAA,CACR,KACF,CAEA,OAAKD,CAIE,CAAA,CAAC,KAAOC,CAAAA,CAAAA,CAAO,KAAOD,CAAAA,CAAG,CAHxB,CAAA,IAIT,CAEAH,CAAAA,CAAAA,CAAG,GAAI,CAAA,GAAA,CAAM,SAAUC,CAAAA,CAAQ,CAC9B,GAAI,CAACA,CACJ,CAAA,OAAO,IAGR,CAAA,IAAII,CAAO,CAAA,qBAAA,CACPC,CAAM,CAAA,iCAAA,CACNC,CAAO,CAAA,8HAAA,CACPC,CAAM,CAAA,sHAAA,CACNC,CAAU,CAAA,SAAA,CAEVC,EAAM,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,CAAC,CAAA,CACjBC,CACApB,CAAAA,CAAAA,CACAqB,EAEJ,GAAID,CAAAA,CAAQV,CAAO,CAAA,KAAA,CAAMK,CAAG,CAAA,CAAG,CAI9B,IAHAM,EAAWD,CAAM,CAAA,CAAC,CAClBA,CAAAA,CAAAA,CAAQA,CAAM,CAAA,CAAC,CAEVpB,CAAAA,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,EAAAA,CAAK,CAEvB,IAAIsB,EAAKtB,CAAAA,CAAAA,CAAI,EACbmB,CAAInB,CAAAA,CAAC,CAAI,CAAA,QAAA,CAASoB,CAAM,CAAA,KAAA,CAAME,EAAIA,CAAAA,EAAAA,CAAK,CAAC,CAAA,CAAG,EAAE,EAC9C,CAEID,CAAAA,GACHF,CAAI,CAAA,CAAC,EAAI,QAASE,CAAAA,CAAAA,CAAU,EAAE,CAAA,CAAI,GAEpC,EAAA,CAAA,KAAA,GAAWD,CAAQV,CAAAA,CAAAA,CAAO,KAAMI,CAAAA,CAAI,CAAG,CAAA,CAItC,IAHAM,CAAAA,CAAQA,CAAM,CAAA,CAAC,EACfC,CAAWD,CAAAA,CAAAA,CAAM,CAAC,CAAA,CAEbpB,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAGA,IAClBmB,CAAInB,CAAAA,CAAC,CAAI,CAAA,QAAA,CAASoB,CAAMpB,CAAAA,CAAC,CAAIoB,CAAAA,CAAAA,CAAMpB,CAAC,CAAG,CAAA,EAAE,CAGtCqB,CAAAA,CAAAA,GACHF,CAAI,CAAA,CAAC,CAAI,CAAA,QAAA,CAASE,CAAWA,CAAAA,CAAAA,CAAU,EAAE,CAAA,CAAI,GAE/C,EAAA,CAAA,KAAA,GAAWD,CAAQV,CAAAA,CAAAA,CAAO,MAAMM,CAAI,CAAA,CAAG,CACtC,IAAKhB,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAGA,CAClBmB,EAAAA,CAAAA,CAAAA,CAAInB,CAAC,CAAA,CAAI,QAASoB,CAAAA,CAAAA,CAAMpB,CAAI,CAAA,CAAC,EAAG,CAAC,CAAA,CAG9BoB,CAAM,CAAA,CAAC,CACNA,GAAAA,CAAAA,CAAM,CAAC,CAAA,CACVD,CAAI,CAAA,CAAC,CAAI,CAAA,UAAA,CAAWC,CAAM,CAAA,CAAC,CAAC,CAAA,CAAI,IAEhCD,CAAI,CAAA,CAAC,CAAI,CAAA,UAAA,CAAWC,CAAM,CAAA,CAAC,CAAC,CAAA,EAG/B,SAAWA,CAAQV,CAAAA,CAAAA,CAAO,KAAMO,CAAAA,CAAG,CAAG,CAAA,CACrC,IAAKjB,CAAAA,CAAI,EAAGA,CAAI,CAAA,CAAA,CAAGA,CAClBmB,EAAAA,CAAAA,CAAAA,CAAInB,CAAC,CAAA,CAAI,IAAK,CAAA,KAAA,CAAM,UAAWoB,CAAAA,CAAAA,CAAMpB,CAAI,CAAA,CAAC,CAAC,CAAA,CAAI,IAAI,CAAA,CAGhDoB,EAAM,CAAC,CAAA,GACNA,CAAM,CAAA,CAAC,CACVD,CAAAA,CAAAA,CAAI,CAAC,CAAA,CAAI,WAAWC,CAAM,CAAA,CAAC,CAAC,CAAA,CAAI,GAEhCD,CAAAA,CAAAA,CAAI,CAAC,CAAA,CAAI,WAAWC,CAAM,CAAA,CAAC,CAAC,CAAA,EAG/B,CAAO,KAAA,OAAA,CAAIA,CAAQV,CAAAA,CAAAA,CAAO,KAAMQ,CAAAA,CAAO,CAClCE,EAAAA,CAAAA,CAAM,CAAC,CAAA,GAAM,aACT,CAAA,CAAC,EAAG,CAAG,CAAA,CAAA,CAAG,CAAC,CAAA,CAGdd,EAAe,CAAA,IAAA,CAAKD,CAAYe,CAAAA,CAAAA,CAAM,CAAC,CAAC,CAAA,EAI7CD,CAAMd,CAAAA,CAAAA,CAAWe,CAAM,CAAA,CAAC,CAAC,CAAA,CACzBD,EAAI,CAAC,CAAA,CAAI,CAEFA,CAAAA,CAAAA,EANC,IAQD,CAAA,IAAA,CAGR,IAAKnB,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,EAAAA,CAClBmB,CAAInB,CAAAA,CAAC,CAAIuB,CAAAA,CAAAA,CAAMJ,EAAInB,CAAC,CAAA,CAAG,CAAG,CAAA,GAAG,CAE9B,CAAA,OAAAmB,CAAI,CAAA,CAAC,CAAII,CAAAA,CAAAA,CAAMJ,CAAI,CAAA,CAAC,CAAG,CAAA,CAAA,CAAG,CAAC,CAAA,CAEpBA,CACR,CAEAV,CAAAA,CAAAA,CAAG,GAAI,CAAA,GAAA,CAAM,SAAUC,CAAAA,CAAQ,CAC9B,GAAI,CAACA,CAAAA,CACJ,OAAO,IAAA,CAGR,IAAIc,CAAAA,CAAM,8KACNJ,CAAAA,CAAAA,CAAQV,EAAO,KAAMc,CAAAA,CAAG,CAE5B,CAAA,GAAIJ,CAAO,CAAA,CACV,IAAIK,CAAAA,CAAQ,WAAWL,CAAM,CAAA,CAAC,CAAC,CAAA,CAC3BM,CAAM,CAAA,CAAA,UAAA,CAAWN,CAAM,CAAA,CAAC,CAAC,CAAI,CAAA,GAAA,CAAO,GAAO,EAAA,GAAA,CAC3CO,CAAIJ,CAAAA,CAAAA,CAAM,UAAWH,CAAAA,CAAAA,CAAM,CAAC,CAAC,CAAG,CAAA,CAAA,CAAG,GAAG,CAAA,CACtCQ,CAAIL,CAAAA,CAAAA,CAAM,WAAWH,CAAM,CAAA,CAAC,CAAC,CAAA,CAAG,CAAG,CAAA,GAAG,CACtCS,CAAAA,CAAAA,CAAIN,CAAM,CAAA,KAAA,CAAME,CAAK,CAAA,CAAI,CAAIA,CAAAA,CAAAA,CAAO,CAAG,CAAA,CAAC,EAE5C,OAAO,CAACC,CAAGC,CAAAA,CAAAA,CAAGC,CAAGC,CAAAA,CAAC,CACnB,CAEA,OAAO,IACR,CAEApB,CAAAA,CAAAA,CAAG,GAAI,CAAA,GAAA,CAAM,SAAUC,CAAAA,CAAQ,CAC9B,GAAI,CAACA,CACJ,CAAA,OAAO,IAGR,CAAA,IAAIoB,CAAM,CAAA,qKAAA,CACNV,EAAQV,CAAO,CAAA,KAAA,CAAMoB,CAAG,CAAA,CAE5B,GAAIV,CAAAA,CAAO,CACV,IAAIK,EAAQ,UAAWL,CAAAA,CAAAA,CAAM,CAAC,CAAC,CAC3BM,CAAAA,CAAAA,CAAAA,CAAM,UAAWN,CAAAA,CAAAA,CAAM,CAAC,CAAC,CAAI,CAAA,GAAA,CAAO,GAAO,EAAA,GAAA,CAC3CW,CAAIR,CAAAA,CAAAA,CAAM,WAAWH,CAAM,CAAA,CAAC,CAAC,CAAA,CAAG,CAAG,CAAA,GAAG,CACtCY,CAAAA,CAAAA,CAAIT,CAAM,CAAA,UAAA,CAAWH,CAAM,CAAA,CAAC,CAAC,CAAA,CAAG,CAAG,CAAA,GAAG,EACtCS,CAAIN,CAAAA,CAAAA,CAAM,KAAME,CAAAA,CAAK,CAAI,CAAA,CAAA,CAAIA,CAAO,CAAA,CAAA,CAAG,CAAC,CAAA,CAC5C,OAAO,CAACC,CAAGK,CAAAA,CAAAA,CAAGC,CAAGH,CAAAA,CAAC,CACnB,CAEA,OAAO,IACR,CAAA,CAEApB,CAAG,CAAA,EAAA,CAAG,GAAM,CAAA,UAAY,CACvB,IAAIO,CAAAA,CAAOnB,CAAQ,CAAA,SAAS,CAE5B,CAAA,OACC,GACAoC,CAAAA,EAAAA,CAAUjB,EAAK,CAAC,CAAC,CACjBiB,CAAAA,EAAAA,CAAUjB,CAAK,CAAA,CAAC,CAAC,CAAA,CACjBiB,EAAUjB,CAAAA,CAAAA,CAAK,CAAC,CAAC,CAChBA,EAAAA,CAAAA,CAAK,CAAC,CAAA,CAAI,EACPiB,EAAU,CAAA,IAAA,CAAK,KAAMjB,CAAAA,CAAAA,CAAK,CAAC,CAAA,CAAI,GAAG,CAAC,EACpC,EAEL,CAAA,CAAA,CAEAP,CAAG,CAAA,EAAA,CAAG,GAAM,CAAA,UAAY,CACvB,IAAIO,EAAOnB,CAAQ,CAAA,SAAS,CAE5B,CAAA,OAAOmB,CAAK,CAAA,MAAA,CAAS,CAAKA,EAAAA,CAAAA,CAAK,CAAC,CAAA,GAAM,CACnC,CAAA,MAAA,CAAS,IAAK,CAAA,KAAA,CAAMA,CAAK,CAAA,CAAC,CAAC,CAAI,CAAA,IAAA,CAAO,IAAK,CAAA,KAAA,CAAMA,CAAK,CAAA,CAAC,CAAC,CAAA,CAAI,KAAO,IAAK,CAAA,KAAA,CAAMA,CAAK,CAAA,CAAC,CAAC,CAAA,CAAI,GACzF,CAAA,OAAA,CAAU,KAAK,KAAMA,CAAAA,CAAAA,CAAK,CAAC,CAAC,CAAI,CAAA,IAAA,CAAO,IAAK,CAAA,KAAA,CAAMA,CAAK,CAAA,CAAC,CAAC,CAAA,CAAI,IAAO,CAAA,IAAA,CAAK,KAAMA,CAAAA,CAAAA,CAAK,CAAC,CAAC,CAAA,CAAI,IAAOA,CAAAA,CAAAA,CAAK,CAAC,CAAA,CAAI,GAC/G,CAAA,CAEAP,CAAG,CAAA,EAAA,CAAG,GAAI,CAAA,OAAA,CAAU,UAAY,CAC/B,IAAIO,CAAAA,CAAOnB,EAAQ,SAAS,CAAA,CAExBqC,CAAI,CAAA,IAAA,CAAK,KAAMlB,CAAAA,CAAAA,CAAK,CAAC,CAAA,CAAI,GAAM,CAAA,GAAG,CAClCmB,CAAAA,CAAAA,CAAI,IAAK,CAAA,KAAA,CAAMnB,CAAK,CAAA,CAAC,EAAI,GAAM,CAAA,GAAG,CAClCgB,CAAAA,CAAAA,CAAI,IAAK,CAAA,KAAA,CAAMhB,CAAK,CAAA,CAAC,EAAI,GAAM,CAAA,GAAG,CAEtC,CAAA,OAAOA,CAAK,CAAA,MAAA,CAAS,CAAKA,EAAAA,CAAAA,CAAK,CAAC,CAAM,GAAA,CAAA,CACnC,MAASkB,CAAAA,CAAAA,CAAI,KAAQC,CAAAA,CAAAA,CAAI,KAAQH,CAAAA,CAAAA,CAAI,IACrC,CAAA,OAAA,CAAUE,CAAI,CAAA,KAAA,CAAQC,CAAI,CAAA,KAAA,CAAQH,CAAI,CAAA,KAAA,CAAQhB,EAAK,CAAC,CAAA,CAAI,GAC5D,CAAA,CAEAP,CAAG,CAAA,EAAA,CAAG,GAAM,CAAA,UAAY,CACvB,IAAI2B,CAAOvC,CAAAA,CAAAA,CAAQ,SAAS,CAAA,CAC5B,OAAOuC,CAAAA,CAAK,OAAS,CAAKA,EAAAA,CAAAA,CAAK,CAAC,CAAA,GAAM,CACnC,CAAA,MAAA,CAASA,CAAK,CAAA,CAAC,CAAI,CAAA,IAAA,CAAOA,CAAK,CAAA,CAAC,CAAI,CAAA,KAAA,CAAQA,CAAK,CAAA,CAAC,EAAI,IACtD,CAAA,OAAA,CAAUA,CAAK,CAAA,CAAC,CAAI,CAAA,IAAA,CAAOA,CAAK,CAAA,CAAC,EAAI,KAAQA,CAAAA,CAAAA,CAAK,CAAC,CAAA,CAAI,KAAQA,CAAAA,CAAAA,CAAK,CAAC,CAAA,CAAI,GAC7E,CAIA3B,CAAAA,CAAAA,CAAG,EAAG,CAAA,GAAA,CAAM,UAAY,CACvB,IAAI4B,CAAAA,CAAOxC,CAAQ,CAAA,SAAS,CAExBgC,CAAAA,CAAAA,CAAI,EACR,CAAA,OAAIQ,CAAK,CAAA,MAAA,EAAU,GAAKA,CAAK,CAAA,CAAC,CAAM,GAAA,CAAA,GACnCR,CAAI,CAAA,IAAA,CAAOQ,CAAK,CAAA,CAAC,CAGX,CAAA,CAAA,MAAA,CAASA,CAAK,CAAA,CAAC,CAAI,CAAA,IAAA,CAAOA,CAAK,CAAA,CAAC,EAAI,KAAQA,CAAAA,CAAAA,CAAK,CAAC,CAAA,CAAI,GAAMR,CAAAA,CAAAA,CAAI,GACxE,CAAA,CAEApB,CAAG,CAAA,EAAA,CAAG,OAAU,CAAA,SAAUU,CAAK,CAAA,CAC9B,OAAOZ,EAAAA,CAAaY,EAAI,KAAM,CAAA,CAAA,CAAG,CAAC,CAAC,CACpC,CAAA,CAGA,SAASI,CAAAA,CAAMe,EAAKC,CAAKC,CAAAA,CAAAA,CAAK,CAC7B,OAAO,IAAK,CAAA,GAAA,CAAI,IAAK,CAAA,GAAA,CAAID,EAAKD,CAAG,CAAA,CAAGE,CAAG,CACxC,CAFSjD,CAAAA,CAAAgC,CAAA,CAAA,OAAA,CAAA,CAIT,SAASU,EAAAA,CAAUK,CAAK,CAAA,CACvB,IAAIG,CAAAA,CAAM,IAAK,CAAA,KAAA,CAAMH,CAAG,CAAE,CAAA,QAAA,CAAS,EAAE,CAAA,CAAE,WAAY,EAAA,CACnD,OAAQG,CAAAA,CAAI,OAAS,CAAK,CAAA,GAAA,CAAMA,CAAMA,CAAAA,CACvC,CAHSlD,CAAAA,CAAA0C,EAAA,CAAA,WAAA,EAAA,CAAA,CAAA,CC3NF,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CCdA,IAAMS,EAAAA,CAAyB,OAAO,GAAI,CAAA,eAAe,CAUnDC,CAAAA,EAAAA,CAA2B,MAAO,CAAA,GAAA,CAAI,iBAAiB,CAAA,CAEvDC,EAA6B,MAAO,CAAA,GAAA,CAAI,aAAa,CAAA,CCjBrDC,EACZ,CAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,GAAa,YACtB,CAAA,CAEA,SAASC,CAAAA,CAAgB,CACxB,OAAO,CAAmBA,gBAAAA,EAAAA,CAAA,mFAAyFA,CAAA,CAAA,wCAAA,CACpH,CACA,CAAA,SAASC,CAAe,CAAA,CACvB,OAAO,CAAA,mJAAA,EAAsJA,CAAA,CAAA,CAAA,CAC9J,CACA,CAAA,uDAAA,CACA,SAASC,CAAAA,CAAW,CACnB,OACC,uHACAA,CAEF,CAAA,CACA,mHACA,CAAA,mCAAA,CACA,8DACA,CAAA,iEAAA,CACA,0FACA,CAAA,2EAAA,CACA,SAASD,CAAAA,CAAe,CACvB,OAAO,CAAmCA,gCAAAA,EAAAA,CAAA,CAC3C,CAAA,CAAA,CACA,2DACA,0DACA,CAAA,4CAAA,CACA,qEACA,CAAA,SAASA,CAAe,CAAA,CACvB,OAAO,CAAA,iCAAA,EAAoCA,CAAA,CAC5C,CAAA,CAGA,CACA,CAAA,EAEG,CAAA,SAASE,CAAIC,CAAAA,CAAAA,CAAAA,GAAkBpD,EAAoB,CACzD,GAAI,OAAQ,CAAA,GAAA,CAAI,QAAa,GAAA,YAAA,CAAc,CAC1C,IAAMqD,CAAIN,CAAAA,EAAAA,CAAOK,CAAK,CAAA,CAChBE,CAAM,CAAA,OAAOD,CAAM,EAAA,UAAA,CAAaA,EAAE,KAAM,CAAA,IAAA,CAAMrD,CAAW,CAAA,CAAIqD,CACnE,CAAA,MAAM,IAAI,KAAA,CAAM,CAAWC,QAAAA,EAAAA,CAAA,CAAK,CAAA,CACjC,CACA,MAAM,IAAI,KAAA,CACT,8BAA8BF,CAAA,CAAA,uCAAA,CAC/B,CACD,CATgB3D,CAAA0D,CAAAA,CAAAA,CAAA,KCxBT,CAAA,CAAA,IAAMI,CAAiB,CAAA,MAAA,CAAO,cAI9B,CAAA,SAASC,CAAQC,CAAAA,CAAAA,CAAqB,CAC5C,OAAO,CAAC,CAACA,CAAAA,EAAS,CAAC,CAACA,CAAMX,CAAAA,CAAW,CACtC,CAFgBrD,EAAA+D,CAAA,CAAA,SAAA,CAAA,CAMT,SAASE,CAAAA,CAAYD,CAAqB,CAAA,CAChD,OAAKA,CAAAA,CAEJE,GAAcF,CAAK,CAAA,EACnB,KAAM,CAAA,OAAA,CAAQA,CAAK,CAAA,EACnB,CAAC,CAACA,CAAMZ,CAAAA,EAAS,CACjB,EAAA,CAAC,CAACY,CAAAA,CAAM,WAAcZ,GAAAA,EAAS,GAC/Be,EAAMH,CAAAA,CAAK,CACXI,EAAAA,EAAAA,CAAMJ,CAAK,CAAA,CAPO,CASpB,CAAA,CAVgBhE,CAAAiE,CAAAA,CAAAA,CAAA,aAYhB,CAAA,CAAA,IAAMI,EAAmB,CAAA,MAAA,CAAO,SAAU,CAAA,WAAA,CAAY,UAE/C,CAAA,SAASH,EAAcF,CAAAA,CAAAA,CAAqB,CAClD,GAAI,CAACA,CAAAA,EAAS,OAAOA,CAAAA,EAAU,QAAU,CAAA,OAAO,CAChD,CAAA,CAAA,IAAMM,CAAQR,CAAAA,CAAAA,CAAeE,CAAK,CAClC,CAAA,GAAIM,CAAU,GAAA,IAAA,CACb,OAAO,CAAA,CAAA,CAER,IAAMC,CAAAA,CACL,OAAO,cAAe,CAAA,IAAA,CAAKD,CAAO,CAAA,aAAa,CAAKA,EAAAA,CAAAA,CAAM,WAE3D,CAAA,OAAIC,IAAS,MAAe,CAAA,CAAA,CAAA,CAG3B,OAAOA,CAAAA,EAAQ,UACf,EAAA,QAAA,CAAS,QAAS,CAAA,IAAA,CAAKA,CAAI,CAAA,GAAMF,EAEnC,CAfgBrE,CAAAkE,CAAAA,EAAAA,CAAA,eAkCT,CAAA,CAAA,SAASM,GAAKvE,CAAUwE,CAAAA,CAAAA,CAAW,CACrCC,EAAAA,CAAYzE,CAAG,CAAA,GAAA,CAClB,CAAA,OAAA,CAAQ,QAAQA,CAAG,CAAA,CAAE,OAAQ0E,CAAAA,CAAAA,EAAO,CACnCF,CAAAA,CAAKE,CAAK1E,CAAAA,CAAAA,CAAI0E,CAAG,CAAG1E,CAAAA,CAAG,EACxB,CAAC,CAEDA,CAAAA,CAAAA,CAAI,OAAQ,CAAA,CAAC2E,CAAYC,CAAAA,CAAAA,GAAeJ,CAAKI,CAAAA,CAAAA,CAAOD,CAAO3E,CAAAA,CAAG,CAAC,EAEjE,CARgBD,CAAAwE,CAAAA,EAAAA,CAAA,MAWT,CAAA,CAAA,SAASE,EAAYlB,CAAAA,CAAAA,CAAsB,CACjD,IAAMsB,EAAgCtB,CAAMH,CAAAA,CAAW,CACvD,CAAA,OAAOyB,CACJA,CAAAA,CAAAA,CAAM,KACN,CAAA,KAAA,CAAM,QAAQtB,CAAK,CAAA,CAAA,CAEnBW,CAAAA,EAAAA,CAAMX,CAAK,CAAA,CAAA,CAEXY,CAAAA,EAAAA,CAAMZ,CAAK,CAAA,CAAA,CAAA,CAAA,CAGf,CAXgBxD,CAAAA,CAAA0E,EAAA,CAAA,aAAA,CAAA,CAcT,SAASK,EAAIvB,CAAAA,CAAAA,CAAYwB,CAA4B,CAAA,CAC3D,OAAON,EAAAA,CAAYlB,CAAK,CAAA,GAAA,CACrBA,CAAAA,CAAAA,CAAM,GAAIwB,CAAAA,CAAI,CACd,CAAA,MAAA,CAAO,SAAU,CAAA,cAAA,CAAe,KAAKxB,CAAOwB,CAAAA,CAAI,CACpD,CAJgBhF,CAAA+E,CAAAA,EAAAA,CAAA,KAaT,CAAA,CAAA,SAASE,EAAIzB,CAAAA,CAAAA,CAAY0B,CAA6BlB,CAAAA,CAAAA,CAAY,CACxE,IAAMmB,CAAIT,CAAAA,EAAAA,CAAYlB,CAAK,CACvB2B,CAAAA,CAAAA,GAAA,CAAoB3B,CAAAA,CAAAA,CAAM,GAAI0B,CAAAA,CAAAA,CAAgBlB,CAAK,CAAA,CAC9CmB,IAAA,CACR3B,CAAAA,CAAAA,CAAM,GAAIQ,CAAAA,CAAK,CACTR,CAAAA,CAAAA,CAAM0B,CAAc,CAAA,CAAIlB,EAChC,CANgBhE,CAAAA,CAAAiF,EAAA,CAAA,KAAA,CAAA,CAST,SAASG,EAAAA,CAAGC,CAAQC,CAAAA,CAAAA,CAAiB,CAE3C,OAAID,CAAMC,GAAAA,CAAAA,CACFD,CAAM,GAAA,CAAA,EAAK,CAAIA,CAAAA,CAAAA,GAAM,EAAIC,CAEzBD,CAAAA,CAAAA,GAAMA,CAAKC,EAAAA,CAAAA,GAAMA,CAE1B,CAPgBtF,CAAAoF,CAAAA,EAAAA,CAAA,IAUT,CAAA,CAAA,SAASjB,EAAMoB,CAAAA,CAAAA,CAA+B,CACpD,OAAOA,CAAkB,YAAA,GAC1B,CAFgBvF,CAAAmE,CAAAA,EAAAA,CAAA,OAKT,CAAA,CAAA,SAASC,EAAMmB,CAAAA,CAAAA,CAA+B,CACpD,OAAOA,CAAkB,YAAA,GAC1B,CAFgBvF,CAAAA,CAAAoE,EAAA,CAAA,OAAA,CAAA,CAIT,SAASoB,CAAAA,CAAOV,EAAwB,CAC9C,OAAOA,CAAM,CAAA,KAAA,EAASA,CAAM,CAAA,KAC7B,CAFgB9E,CAAAA,CAAAwF,EAAA,QAKT,CAAA,CAAA,SAASC,EAAYC,CAAAA,CAAAA,CAAWC,CAAoB,CAAA,CAC1D,GAAIxB,EAAAA,CAAMuB,CAAI,CACb,CAAA,OAAO,IAAI,GAAA,CAAIA,CAAI,CAAA,CAEpB,GAAItB,EAAAA,CAAMsB,CAAI,CAAA,CACb,OAAO,IAAI,GAAIA,CAAAA,CAAI,CAEpB,CAAA,GAAI,MAAM,OAAQA,CAAAA,CAAI,CAAG,CAAA,OAAO,KAAM,CAAA,SAAA,CAAU,KAAM,CAAA,IAAA,CAAKA,CAAI,CAAA,CAE/D,IAAME,CAAAA,CAAU1B,EAAcwB,CAAAA,CAAI,CAElC,CAAA,GAAIC,IAAW,CAASA,CAAAA,EAAAA,CAAAA,GAAW,YAAgB,EAAA,CAACC,CAAU,CAAA,CAE7D,IAAMC,CAAAA,CAAc,MAAO,CAAA,yBAAA,CAA0BH,CAAI,CAAA,CACzD,OAAOG,CAAAA,CAAYxC,CAAkB,CAAA,CACrC,IAAIyC,CAAO,CAAA,OAAA,CAAQ,OAAQD,CAAAA,CAAW,CACtC,CAAA,IAAA,IAASpF,CAAI,CAAA,CAAA,CAAGA,EAAIqF,CAAK,CAAA,MAAA,CAAQrF,CAAK,EAAA,CAAA,CACrC,IAAMkE,CAAAA,CAAWmB,CAAKrF,CAAAA,CAAC,EACjBsF,CAAOF,CAAAA,CAAAA,CAAYlB,CAAG,CAAA,CACxBoB,CAAK,CAAA,QAAA,GAAa,CACrBA,CAAAA,GAAAA,CAAAA,CAAK,QAAW,CAAA,CAAA,CAAA,CAChBA,CAAK,CAAA,YAAA,CAAe,CAKjBA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,GAAOA,EAAAA,CAAAA,CAAK,OACpBF,CAAYlB,CAAAA,CAAG,CAAI,CAAA,CAClB,YAAc,CAAA,CAAA,CAAA,CACd,QAAU,CAAA,CAAA,CAAA,CACV,WAAYoB,CAAK,CAAA,UAAA,CACjB,KAAOL,CAAAA,CAAAA,CAAKf,CAAG,CAChB,CACF,EAAA,CACA,OAAO,MAAO,CAAA,MAAA,CAAOb,CAAe4B,CAAAA,CAAI,CAAGG,CAAAA,CAAW,CACvD,CAAA,KAAO,CAEN,IAAMvB,CAAQR,CAAAA,CAAAA,CAAe4B,CAAI,CAAA,CACjC,GAAIpB,CAAAA,GAAU,MAAQsB,CACrB,CAAA,OAAO,CAAC,GAAGF,CAAI,CAAA,CAEhB,IAAMzF,CAAAA,CAAM,OAAO,MAAOqE,CAAAA,CAAK,CAC/B,CAAA,OAAO,MAAO,CAAA,MAAA,CAAOrE,CAAKyF,CAAAA,CAAI,CAC/B,CACD,CA5CgB1F,CAAAyF,CAAAA,EAAAA,CAAA,aAsDT,CAAA,CAAA,SAASO,EAAU/F,CAAAA,CAAAA,CAAUgG,CAAgB,CAAA,CAAA,CAAA,CAAU,CAC7D,OAAIC,EAASjG,CAAAA,CAAG,CAAK8D,EAAAA,CAAAA,CAAQ9D,CAAG,CAAK,EAAA,CAACgE,CAAYhE,CAAAA,CAAG,CACjDyE,GAAAA,EAAAA,CAAYzE,CAAG,CAAA,CAAI,CACtBA,GAAAA,CAAAA,CAAI,GAAMA,CAAAA,CAAAA,CAAI,GAAMA,CAAAA,CAAAA,CAAI,KAAQA,CAAAA,CAAAA,CAAI,OAASkG,EAE9C,CAAA,CAAA,MAAA,CAAO,MAAOlG,CAAAA,CAAG,CACbgG,CAAAA,CAAAA,EAGH,MAAO,CAAA,OAAA,CAAQhG,CAAG,CAAA,CAAE,OAAQ,CAAA,CAAC,CAAC0E,CAAAA,CAAKX,CAAK,CAAA,GAAMgC,GAAOhC,CAAO,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAC3D/D,CACR,CAXgBD,CAAAgG,CAAAA,EAAAA,CAAA,UAahB,SAASG,EAAAA,EAA8B,CACtCzC,CAAAA,CAAI,CAAC,EACN,CAFS1D,CAAAA,CAAAmG,GAAA,6BAIF,CAAA,CAAA,SAASD,EAASjG,CAAAA,CAAAA,CAAmB,CAC3C,OAAO,MAAO,CAAA,QAAA,CAASA,CAAG,CAC3B,CAFgBD,CAAAA,CAAAkG,EAAA,CAAA,UAAA,CAAA,CC1MhB,IAAME,EAAAA,CAoBF,EAIG,CAAA,SAASC,CACfC,CAAAA,CAAAA,CACiC,CACjC,IAAM/C,CAAS6C,CAAAA,EAAAA,CAAQE,CAAS,CAAA,CAChC,OAAK/C,CAAAA,EACJG,CAAI,CAAA,CAAA,CAAG4C,CAAS,CAAA,CAGV/C,CACR,CATgBvD,CAAAA,CAAAqG,CAAA,CAAA,WAAA,CAAA,CCZhB,IAAIE,CAAAA,CAEG,SAASC,EAAAA,EAAkB,CACjC,OAAOD,CACR,CAFgBvG,CAAAwG,CAAAA,EAAAA,CAAA,iBAIhB,CAAA,CAAA,SAASC,GACRC,CACAC,CAAAA,CAAAA,CACa,CACb,OAAO,CACN,OAAA,CAAS,EAAC,CACV,QAAAD,CACA,CAAA,MAAA,CAAAC,CAGA,CAAA,cAAA,CAAgB,CAChB,CAAA,CAAA,kBAAA,CAAoB,CACrB,CACD,CAbS3G,CAAAyG,CAAAA,EAAAA,CAAA,aAeF,CAAA,CAAA,SAASG,EACfC,CAAAA,CAAAA,CACAC,CACC,CAAA,CACGA,CACHT,GAAAA,CAAAA,CAAU,SAAS,CAAA,CACnBQ,CAAM,CAAA,QAAA,CAAW,EAAC,CAClBA,EAAM,eAAkB,CAAA,EACxBA,CAAAA,CAAAA,CAAM,cAAiBC,CAAAA,CAAAA,EAEzB,CAVgB9G,CAAAA,CAAA4G,EAAA,CAAA,mBAAA,CAAA,CAYT,SAASG,EAAAA,CAAYF,CAAmB,CAAA,CAC9CG,EAAWH,CAAAA,CAAK,EAChBA,CAAM,CAAA,OAAA,CAAQ,OAAQI,CAAAA,EAAW,CAEjCJ,CAAAA,CAAAA,CAAM,OAAU,CAAA,KACjB,CALgB7G,CAAAA,CAAA+G,EAAA,CAAA,aAAA,CAAA,CAOT,SAASC,EAAAA,CAAWH,CAAmB,CAAA,CACzCA,IAAUN,CACbA,GAAAA,CAAAA,CAAeM,CAAM,CAAA,OAAA,EAEvB,CAJgB7G,CAAAA,CAAAgH,EAAA,CAAA,YAAA,CAAA,CAMT,SAASE,EAAWC,CAAAA,CAAAA,CAAc,CACxC,OAAQZ,CAAeE,CAAAA,EAAAA,CAAYF,CAAcY,CAAAA,CAAK,CACvD,CAFgBnH,CAAAA,CAAAkH,EAAA,CAAA,YAAA,CAAA,CAIhB,SAASD,EAAAA,CAAYG,CAAgB,CAAA,CACpC,IAAMtC,CAAAA,CAAoBsC,CAAM/D,CAAAA,CAAW,CACvCyB,CAAAA,CAAAA,CAAM,KAAA,GAAA,CAAA,EAA6BA,EAAM,KAAA,GAAA,CAAA,CAC5CA,CAAM,CAAA,OAAA,EACFA,CAAAA,CAAAA,CAAM,QAAW,CAAA,CAAA,EACvB,CALS9E,CAAAiH,CAAAA,EAAAA,CAAA,aCtDF,CAAA,CAAA,SAASI,EAAcC,CAAAA,CAAAA,CAAaT,CAAmB,CAAA,CAC7DA,EAAM,kBAAqBA,CAAAA,CAAAA,CAAM,OAAQ,CAAA,MAAA,CACzC,IAAMU,CAAAA,CAAYV,CAAM,CAAA,OAAA,CAAS,CAAC,CAAA,CAElC,OADmBS,CAAAA,GAAW,KAAaA,CAAAA,EAAAA,CAAAA,GAAWC,CAEjDA,EAAAA,CAAAA,CAAUlE,CAAW,CAAE,CAAA,SAAA,GAC1B0D,EAAYF,CAAAA,CAAK,CACjBnD,CAAAA,CAAAA,CAAI,CAAC,CAAA,CAAA,CAEFO,EAAYqD,CAAM,CAAA,GAErBA,CAASE,CAAAA,EAAAA,CAASX,CAAOS,CAAAA,CAAM,CAC1BT,CAAAA,CAAAA,CAAM,SAASY,EAAYZ,CAAAA,CAAAA,CAAOS,CAAM,CAAA,CAAA,CAE1CT,CAAM,CAAA,QAAA,EACTR,CAAU,CAAA,SAAS,CAAE,CAAA,2BAAA,CACpBkB,CAAUlE,CAAAA,CAAW,CAAE,CAAA,KAAA,CACvBiE,CACAT,CAAAA,CAAAA,CAAM,SACNA,CAAM,CAAA,eACP,CAIDS,EAAAA,CAAAA,CAASE,EAASX,CAAAA,CAAAA,CAAOU,CAAW,CAAA,EAAE,CAAA,CAEvCR,EAAYF,CAAAA,CAAK,CACbA,CAAAA,CAAAA,CAAM,QACTA,EAAAA,CAAAA,CAAM,eAAgBA,CAAM,CAAA,QAAA,CAAUA,CAAM,CAAA,eAAgB,CAEtDS,CAAAA,CAAAA,GAAWnE,EAAUmE,CAAAA,CAAAA,CAAS,KACtC,CAAA,CA/BgBtH,CAAAqH,CAAAA,EAAAA,CAAA,eAiChB,CAAA,CAAA,SAASG,EAASE,CAAAA,CAAAA,CAAuB1D,EAAY2D,CAAkB,CAAA,CAEtE,GAAIzB,EAAAA,CAASlC,CAAK,CAAA,CAAG,OAAOA,CAAAA,CAE5B,IAAMc,CAAoBd,CAAAA,CAAAA,CAAMX,CAAW,CAAA,CAE3C,GAAI,CAACyB,CACJ,CAAA,OAAAN,GAAKR,CAAO,CAAA,CAACW,CAAKiD,CAAAA,CAAAA,GACjBC,EAAiBH,CAAAA,CAAAA,CAAW5C,CAAOd,CAAAA,CAAAA,CAAOW,CAAKiD,CAAAA,CAAAA,CAAYD,CAAI,CAChE,CACO3D,CAAAA,CAAAA,CAGR,GAAIc,CAAAA,CAAM,SAAW4C,CAAW,CAAA,OAAO1D,CAEvC,CAAA,GAAI,CAACc,CAAAA,CAAM,SACV,CAAA,OAAA2C,EAAYC,CAAAA,CAAAA,CAAW5C,CAAM,CAAA,KAAA,CAAO,CAAI,CAAA,CAAA,CACjCA,CAAM,CAAA,KAAA,CAGd,GAAI,CAACA,CAAAA,CAAM,UAAY,CAAA,CACtBA,CAAM,CAAA,UAAA,CAAa,CACnBA,CAAAA,CAAAA,CAAAA,CAAM,MAAO,CAAA,kBAAA,EAAA,CACb,IAAMwC,CAAAA,CAASxC,CAAM,CAAA,KAAA,CAKjBgD,CAAaR,CAAAA,CAAAA,CACblD,EAAQ,CACRU,CAAAA,CAAAA,CAAAA,CAAM,KAAA,GAAA,CAAA,GACTgD,CAAa,CAAA,IAAI,GAAIR,CAAAA,CAAM,EAC3BA,CAAO,CAAA,KAAA,EACPlD,CAAAA,CAAAA,CAAQ,CAETI,CAAAA,CAAAA,CAAAA,EAAAA,CAAKsD,CAAY,CAAA,CAACnD,EAAKiD,CACtBC,GAAAA,EAAAA,CAAiBH,CAAW5C,CAAAA,CAAAA,CAAOwC,CAAQ3C,CAAAA,CAAAA,CAAKiD,CAAYD,CAAAA,CAAAA,CAAMvD,CAAK,CACxE,CAEAqD,CAAAA,EAAAA,CAAYC,CAAWJ,CAAAA,CAAAA,CAAQ,CAAK,CAAA,CAAA,CAEhCK,GAAQD,CAAU,CAAA,QAAA,EACrBrB,CAAU,CAAA,SAAS,CAAE,CAAA,gBAAA,CACpBvB,CACA6C,CAAAA,CAAAA,CACAD,CAAU,CAAA,QAAA,CACVA,CAAU,CAAA,eACX,EAEF,CACA,OAAO5C,CAAAA,CAAM,KACd,CAnDS9E,CAAAA,CAAAwH,EAAA,CAAA,UAAA,CAAA,CAqDT,SAASK,EAAAA,CACRH,CACAK,CAAAA,CAAAA,CACAC,CACAhD,CAAAA,CAAAA,CACA4C,CACAK,CAAAA,CAAAA,CACAC,CACC,CAAA,CAGD,GAFI,OAAA,CAAQ,IAAI,QAAa,GAAA,YAAA,EAAgBN,CAAeI,GAAAA,CAAAA,EAC3DtE,CAAI,CAAA,CAAC,CACFK,CAAAA,CAAAA,CAAQ6D,CAAU,CAAG,CAAA,CACxB,IAAMD,CAAAA,CACLM,CACAF,EAAAA,CAAAA,EACAA,CAAa,CAAA,KAAA,GAAA,GACb,CAAChD,EAAAA,CAAKgD,CAA8C,CAAA,SAAA,CAAY/C,CAAI,CAAA,CACjEiD,CAAU,CAAA,MAAA,CAAOjD,CAAI,CAAA,CACrB,KAEEmD,CAAAA,CAAAA,CAAAA,CAAMX,EAASE,CAAAA,CAAAA,CAAWE,CAAYD,CAAAA,CAAI,EAIhD,GAHA1C,EAAAA,CAAI+C,CAAchD,CAAAA,CAAAA,CAAMmD,CAAG,CAAA,CAGvBpE,CAAQoE,CAAAA,CAAG,EACdT,CAAU,CAAA,cAAA,CAAiB,CACrB,CAAA,CAAA,KAAA,MACR,CAAWQ,KAAAA,CAAAA,EACVF,CAAa,CAAA,GAAA,CAAIJ,CAAU,CAG5B,CAAA,GAAI3D,CAAY2D,CAAAA,CAAU,CAAK,EAAA,CAAC1B,EAAS0B,CAAAA,CAAU,CAAG,CAAA,CACrD,GAAI,CAACF,CAAU,CAAA,MAAA,CAAO,WAAeA,EAAAA,CAAAA,CAAU,mBAAqB,CAMnE,CAAA,OAEDF,EAASE,CAAAA,CAAAA,CAAWE,CAAU,CAAA,CAAA,CAK5B,CAACG,CAAAA,EAAe,CAACA,CAAY,CAAA,MAAA,CAAO,OACrC,GAAA,OAAO/C,CAAS,EAAA,QAAA,EAChB,MAAO,CAAA,SAAA,CAAU,qBAAqB,IAAKgD,CAAAA,CAAAA,CAAchD,CAAI,CAAA,EAE7DyC,EAAYC,CAAAA,CAAAA,CAAWE,CAAU,EACnC,CACD,CAnDS5H,CAAA6H,CAAAA,EAAAA,CAAA,kBAqDT,CAAA,CAAA,SAASJ,EAAYZ,CAAAA,CAAAA,CAAmB7C,EAAYiC,CAAO,CAAA,CAAA,CAAA,CAAO,CAE7D,CAACY,CAAM,CAAA,OAAA,EAAWA,CAAM,CAAA,MAAA,CAAO,WAAeA,EAAAA,CAAAA,CAAM,cACvDb,EAAAA,EAAAA,CAAOhC,CAAOiC,CAAAA,CAAI,EAEpB,CALSjG,EAAAyH,EAAA,CAAA,aAAA,CAAA,CC5GF,SAASW,EAAAA,CACf1C,CACA2C,CAAAA,CAAAA,CACyB,CACzB,IAAMC,CAAU,CAAA,KAAA,CAAM,OAAQ5C,CAAAA,CAAI,CAC5BZ,CAAAA,CAAAA,CAAoB,CACzB,KAAA,CAAOwD,EAAA,CAAA,CAAA,CAAA,CAEP,MAAQD,CAAAA,CAAAA,CAASA,CAAO,CAAA,MAAA,CAAS7B,EAAgB,EAAA,CAEjD,UAAW,CAEX,CAAA,CAAA,UAAA,CAAY,CAEZ,CAAA,CAAA,SAAA,CAAW,EAAC,CAEZ,OAAS6B,CAAAA,CAAAA,CAET,MAAO3C,CAEP,CAAA,MAAA,CAAQ,IAER,CAAA,KAAA,CAAO,IAEP,CAAA,OAAA,CAAS,IACT,CAAA,SAAA,CAAW,CACZ,CAAA,CAAA,CAQIH,CAAYT,CAAAA,CAAAA,CACZyD,CAA2CC,CAAAA,EAAAA,CAC3CF,CACH/C,GAAAA,CAAAA,CAAS,CAACT,CAAK,CAAA,CACfyD,CAAQE,CAAAA,CAAAA,CAAAA,CAGT,GAAM,CAAC,MAAAC,CAAAA,CAAAA,CAAQ,KAAAC,CAAAA,CAAK,CAAI,CAAA,KAAA,CAAM,SAAUpD,CAAAA,CAAAA,CAAQgD,CAAK,CAAA,CACrD,OAAAzD,CAAM,CAAA,MAAA,CAAS6D,CACf7D,CAAAA,CAAAA,CAAM,OAAU4D,CAAAA,CAAAA,CACTC,CACR,CA7CgB3I,CAAAoI,CAAAA,EAAAA,CAAA,kBAkDT,CAAA,CAAA,IAAMI,EAAwC,CAAA,CACpD,GAAI1D,CAAAA,CAAAA,CAAOE,EAAM,CAChB,GAAIA,CAAS3B,GAAAA,CAAAA,CAAa,OAAOyB,CAAAA,CAEjC,IAAM8D,CAAAA,CAASpD,EAAOV,CAAK,CAAA,CAC3B,GAAI,CAACC,EAAI6D,CAAAA,CAAAA,CAAQ5D,CAAI,CAAA,CAEpB,OAAO6D,EAAkB/D,CAAAA,CAAAA,CAAO8D,CAAQ5D,CAAAA,CAAI,CAE7C,CAAA,IAAMhB,CAAQ4E,CAAAA,CAAAA,CAAO5D,CAAI,CAAA,CACzB,OAAIF,CAAAA,CAAM,UAAc,EAAA,CAACb,CAAYD,CAAAA,CAAK,EAClCA,CAIJA,CAAAA,CAAAA,GAAU8E,EAAKhE,CAAAA,CAAAA,CAAM,KAAOE,CAAAA,CAAI,CACnC+D,EAAAA,EAAAA,CAAYjE,CAAK,CAAA,CACTA,CAAM,CAAA,KAAA,CAAOE,CAAW,CAAA,CAAIgE,EAAYhF,CAAAA,CAAAA,CAAOc,CAAK,CAEtDd,EAAAA,CACR,CACA,CAAA,GAAA,CAAIc,CAAOE,CAAAA,CAAAA,CAAM,CAChB,OAAOA,CAAQQ,IAAAA,CAAAA,CAAOV,CAAK,CAC5B,CACA,CAAA,OAAA,CAAQA,CAAO,CAAA,CACd,OAAO,OAAQ,CAAA,OAAA,CAAQU,CAAOV,CAAAA,CAAK,CAAC,CACrC,CACA,CAAA,GAAA,CACCA,EACAE,CACAhB,CAAAA,CAAAA,CACC,CACD,IAAM+B,CAAOkD,CAAAA,EAAAA,CAAuBzD,CAAOV,CAAAA,CAAK,EAAGE,CAAI,CAAA,CACvD,GAAIe,CAAAA,EAAM,GAGT,CAAA,OAAAA,CAAK,CAAA,GAAA,CAAI,IAAKjB,CAAAA,CAAAA,CAAM,MAAQd,CAAAA,CAAK,CAC1B,CAAA,CAAA,CAAA,CAER,GAAI,CAACc,EAAM,SAAW,CAAA,CAGrB,IAAMoE,CAAAA,CAAUJ,EAAKtD,CAAAA,CAAAA,CAAOV,CAAK,CAAA,CAAGE,CAAI,CAElCmE,CAAAA,CAAAA,CAAiCD,CAAU7F,GAAAA,CAAW,CAC5D,CAAA,GAAI8F,CAAgBA,EAAAA,CAAAA,CAAa,QAAUnF,CAC1C,CAAA,OAAAc,CAAM,CAAA,KAAA,CAAOE,CAAI,CAAA,CAAIhB,CACrBc,CAAAA,CAAAA,CAAM,SAAUE,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAA,CACjB,CAER,CAAA,CAAA,GAAII,EAAGpB,CAAAA,CAAAA,CAAOkF,CAAO,CAAMlF,GAAAA,CAAAA,GAAU,KAAae,CAAAA,EAAAA,EAAAA,CAAID,CAAM,CAAA,KAAA,CAAOE,CAAI,CAAA,CAAA,CACtE,OAAO,CACR+D,CAAAA,CAAAA,EAAAA,CAAYjE,CAAK,CAAA,CACjBsE,EAAYtE,CAAAA,CAAK,EAClB,CAEA,OACEA,CAAM,CAAA,KAAA,CAAOE,CAAI,CAAA,GAAMhB,CAEtBA,GAAAA,CAAAA,GAAU,KAAagB,CAAAA,EAAAA,CAAAA,IAAQF,CAAM,CAAA,KAAA,CAAA,EAEtC,MAAO,CAAA,KAAA,CAAMd,CAAK,CAAA,EAAK,MAAO,CAAA,KAAA,CAAMc,EAAM,KAAOE,CAAAA,CAAI,CAAC,CAAA,GAKxDF,CAAM,CAAA,KAAA,CAAOE,CAAI,CAAA,CAAIhB,CACrBc,CAAAA,CAAAA,CAAM,SAAUE,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAA,CAAA,CACjB,CACR,CAAA,CAAA,CACA,eAAeF,CAAOE,CAAAA,CAAAA,CAAc,CAEnC,OAAI8D,EAAKhE,CAAAA,CAAAA,CAAM,KAAOE,CAAAA,CAAI,CAAM,GAAA,KAAA,CAAA,EAAaA,CAAQF,IAAAA,CAAAA,CAAM,KAC1DA,EAAAA,CAAAA,CAAM,SAAUE,CAAAA,CAAI,EAAI,CACxB+D,CAAAA,CAAAA,EAAAA,CAAYjE,CAAK,CAAA,CACjBsE,EAAYtE,CAAAA,CAAK,CAGjB,EAAA,OAAOA,EAAM,SAAUE,CAAAA,CAAI,CAExBF,CAAAA,CAAAA,CAAM,KACT,EAAA,OAAOA,CAAM,CAAA,KAAA,CAAME,CAAI,CAEjB,CAAA,CAAA,CACR,CAGA,CAAA,wBAAA,CAAyBF,CAAOE,CAAAA,CAAAA,CAAM,CACrC,IAAMqE,CAAQ7D,CAAAA,CAAAA,CAAOV,CAAK,CAAA,CACpBiB,CAAO,CAAA,OAAA,CAAQ,wBAAyBsD,CAAAA,CAAAA,CAAOrE,CAAI,CACzD,CAAA,OAAKe,CACE,EAAA,CACN,QAAU,CAAA,CAAA,CAAA,CACV,YAAcjB,CAAAA,CAAAA,CAAM,KAAA,GAAA,CAAA,EAA4BE,CAAS,GAAA,QAAA,CACzD,UAAYe,CAAAA,CAAAA,CAAK,UACjB,CAAA,KAAA,CAAOsD,EAAMrE,CAAI,CAClB,CACD,CAAA,CACA,cAAiB,EAAA,CAChBtB,CAAI,CAAA,EAAE,EACP,CAAA,CACA,cAAeoB,CAAAA,CAAAA,CAAO,CACrB,OAAOhB,CAAegB,CAAAA,CAAAA,CAAM,KAAK,CAClC,CAAA,CACA,cAAiB,EAAA,CAChBpB,CAAI,CAAA,EAAE,EACP,CACD,EAMM+E,CAA8C,CAAA,EACpDjE,CAAAA,EAAAA,CAAKgE,EAAa,CAAA,CAAC7D,CAAK/D,CAAAA,CAAAA,GAAO,CAE9B6H,CAAW9D,CAAAA,CAAG,CAAI,CAAA,UAAW,CAC5B,OAAA,SAAA,CAAU,CAAC,CAAA,CAAI,SAAU,CAAA,CAAC,CAAE,CAAA,CAAC,CACtB/D,CAAAA,CAAAA,CAAG,KAAM,CAAA,IAAA,CAAM,SAAS,CAChC,EACD,CAAC,CAAA,CACD6H,CAAW,CAAA,cAAA,CAAiB,SAAS3D,CAAAA,CAAOE,CAAM,CAAA,CACjD,OAAI,OAAA,CAAQ,GAAI,CAAA,QAAA,GAAa,YAAgB,EAAA,KAAA,CAAM,SAASA,CAAW,CAAC,CACvEtB,EAAAA,CAAAA,CAAI,EAAE,CAAA,CAEA+E,CAAW,CAAA,GAAA,CAAK,IAAK,CAAA,IAAA,CAAM3D,CAAOE,CAAAA,CAAAA,CAAM,KAAS,CAAA,CACzD,CACAyD,CAAAA,CAAAA,CAAW,IAAM,SAAS3D,CAAAA,CAAOE,CAAMhB,CAAAA,CAAAA,CAAO,CAC7C,OACC,OAAQ,CAAA,GAAA,CAAI,WAAa,YACzBgB,EAAAA,CAAAA,GAAS,QACT,EAAA,KAAA,CAAM,QAASA,CAAAA,CAAW,CAAC,CAAA,EAE3BtB,EAAI,EAAE,CAAA,CACA8E,EAAY,CAAA,GAAA,CAAK,IAAK,CAAA,IAAA,CAAM1D,CAAM,CAAA,CAAC,CAAGE,CAAAA,CAAAA,CAAMhB,CAAOc,CAAAA,CAAAA,CAAM,CAAC,CAAC,CACnE,CAAA,CAGA,SAASgE,EAAK1B,CAAAA,CAAAA,CAAgBpC,CAAmB,CAAA,CAChD,IAAMF,CAAAA,CAAQsC,CAAM/D,CAAAA,CAAW,EAE/B,OADeyB,CAAAA,CAAAA,CAAQU,CAAOV,CAAAA,CAAK,CAAIsC,CAAAA,CAAAA,EACzBpC,CAAI,CACnB,CAJShF,CAAA8I,CAAAA,EAAAA,CAAA,MAMT,CAAA,CAAA,SAASD,EAAkB/D,CAAAA,CAAAA,CAAmB8D,CAAa5D,CAAAA,CAAAA,CAAmB,CAC7E,IAAMe,CAAOkD,CAAAA,EAAAA,CAAuBL,CAAQ5D,CAAAA,CAAI,CAChD,CAAA,OAAOe,EACJ,OAAWA,GAAAA,CAAAA,CACVA,CAAK,CAAA,KAAA,CAGLA,CAAK,CAAA,GAAA,EAAK,IAAKjB,CAAAA,CAAAA,CAAM,MAAM,CAC5B,CAAA,KAAA,CACJ,CATS9E,CAAAA,CAAA6I,EAAA,CAAA,mBAAA,CAAA,CAWT,SAASI,EAAAA,CACRL,EACA5D,CACiC,CAAA,CAEjC,GAAI,EAAEA,CAAQ4D,IAAAA,CAAAA,CAAAA,CAAS,OACvB,IAAItE,CAAQR,CAAAA,CAAAA,CAAe8E,CAAM,CAAA,CACjC,KAAOtE,CAAAA,EAAO,CACb,IAAMyB,EAAO,MAAO,CAAA,wBAAA,CAAyBzB,CAAOU,CAAAA,CAAI,CACxD,CAAA,GAAIe,CAAM,CAAA,OAAOA,CACjBzB,CAAAA,CAAAA,CAAQR,CAAeQ,CAAAA,CAAK,EAC7B,CAED,CAbStE,CAAAA,CAAAiJ,GAAA,wBAeF,CAAA,CAAA,SAASG,EAAYtE,CAAAA,CAAAA,CAAmB,CACzCA,CAAAA,CAAM,SACVA,GAAAA,CAAAA,CAAM,SAAY,CAAA,CAAA,CAAA,CACdA,CAAM,CAAA,OAAA,EACTsE,EAAYtE,CAAAA,CAAAA,CAAM,OAAO,CAAA,EAG5B,CAPgB9E,CAAAoJ,CAAAA,EAAAA,CAAA,aAST,CAAA,CAAA,SAASL,EAAYjE,CAAAA,CAAAA,CAIzB,CACGA,CAAAA,CAAM,QACVA,CAAM,CAAA,KAAA,CAAQW,EACbX,CAAAA,CAAAA,CAAM,KACNA,CAAAA,CAAAA,CAAM,MAAO,CAAA,MAAA,CAAO,qBACrB,CAEF,EAAA,CAXgB9E,CAAA+I,CAAAA,EAAAA,CAAA,aCrPT,CAAA,CAAA,IAAMO,EAAN,CAAA,KAAoC,CAAA,OAAAtJ,CAAA,CAAA,IAAA,CAAA,QAAA,EAAA,CAI1C,WAAYuJ,CAAAA,CAAAA,CAGT,CANH,IAAA,CAAA,YAAuB,CACvB,CAAA,CAAA,IAAA,CAAA,qBAAoC,CAAA,CAAA,CAAA,CA+BpC,IAAA,CAAA,OAAA,CAAoB,CAAC7D,CAAAA,CAAW8D,CAAc1C,CAAAA,CAAAA,GAAwB,CAErE,GAAI,OAAOpB,CAAAA,EAAS,UAAc,EAAA,OAAO8D,GAAW,UAAY,CAAA,CAC/D,IAAMC,CAAAA,CAAcD,CACpBA,CAAAA,CAAAA,CAAS9D,CAET,CAAA,IAAMgE,CAAO,CAAA,IAAA,CACb,OAAO1J,CAAAA,CAAA,SAEN0F,CAAAA,CAAO+D,CACJlJ,CAAAA,GAAAA,CAAAA,CACF,CACD,OAAOmJ,CAAAA,CAAK,OAAQhE,CAAAA,CAAAA,CAAO0B,EAAmBoC,EAAAA,CAAAA,CAAO,IAAK,CAAA,IAAA,CAAMpC,GAAO,GAAG7G,CAAI,CAAC,CAChF,CANO,CAAA,gBAAA,CAOR,CAEI,OAAOiJ,GAAW,UAAY9F,EAAAA,CAAAA,CAAI,CAAC,CAAA,CACnCoD,CAAkB,GAAA,KAAA,CAAA,EAAa,OAAOA,CAAAA,EAAkB,UAC3DpD,EAAAA,CAAAA,CAAI,CAAC,CAAA,CAEN,IAAI4D,CAAAA,CAGJ,GAAIrD,CAAAA,CAAYyB,CAAI,CAAG,CAAA,CACtB,IAAMmB,CAAAA,CAAQK,EAAW,CAAA,IAAI,CACvByB,CAAAA,CAAAA,CAAQK,EAAYtD,CAAAA,CAAAA,CAAM,KAAS,CAAA,CAAA,CACrCiE,CAAW,CAAA,CAAA,CAAA,CACf,GAAI,CACHrC,EAASkC,CAAOb,CAAAA,CAAK,CACrBgB,CAAAA,CAAAA,CAAW,CACZ,EAAA,CAAA,OAAA,CAEKA,CAAAA,CAAU5C,EAAYF,CAAAA,CAAK,CAC1BG,CAAAA,EAAAA,CAAWH,CAAK,EACtB,CACA,OAAAD,GAAkBC,CAAOC,CAAAA,CAAa,CAC/BO,CAAAA,EAAAA,CAAcC,CAAQT,CAAAA,CAAK,CACnC,CAAA,KAAA,GAAW,CAACnB,CAAQ,EAAA,OAAOA,CAAS,EAAA,QAAA,CAAU,CAK7C,GAJA4B,CAASkC,CAAAA,CAAAA,CAAO9D,CAAI,CAChB4B,CAAAA,CAAAA,GAAW,KAAWA,CAAAA,GAAAA,CAAAA,CAAS5B,CAC/B4B,CAAAA,CAAAA,CAAAA,GAAWnE,EAASmE,GAAAA,CAAAA,CAAS,KAC7B,CAAA,CAAA,CAAA,IAAA,CAAK,WAAatB,EAAAA,EAAAA,CAAOsB,CAAQ,CAAA,CAAA,CAAI,CACrCR,CAAAA,CAAAA,CAAe,CAClB,IAAM8C,CAAAA,CAAa,EAAC,CACdC,CAAc,CAAA,EACpBxD,CAAAA,CAAAA,CAAU,SAAS,CAAE,CAAA,2BAAA,CAA4BX,CAAM4B,CAAAA,CAAAA,CAAQsC,CAAGC,CAAAA,CAAE,CACpE/C,CAAAA,CAAAA,CAAc8C,EAAGC,CAAE,EACpB,CACA,OAAOvC,CACR,CAAA,KAAO5D,CAAI,CAAA,CAAA,CAAGgC,CAAI,EACnB,CAEA,CAAA,IAAA,CAAA,kBAA0C,CAAA,CAACA,CAAW8D,CAAAA,CAAAA,GAAsB,CAE3E,GAAI,OAAO9D,CAAS,EAAA,UAAA,CACnB,OAAO,CAACZ,CAAevE,CAAAA,GAAAA,CAAAA,GACtB,KAAK,kBAAmBuE,CAAAA,CAAAA,CAAQsC,CAAe1B,EAAAA,CAAAA,CAAK0B,CAAO,CAAA,GAAG7G,CAAI,CAAC,EAGrE,IAAIuJ,CAAAA,CAAkBC,CAKtB,CAAA,OAAO,CAJQ,IAAA,CAAK,OAAQrE,CAAAA,CAAAA,CAAM8D,CAAQ,CAAA,CAACI,CAAYC,CAAAA,CAAAA,GAAgB,CACtEC,CAAAA,CAAUF,CACVG,CAAAA,CAAAA,CAAiBF,EAClB,CAAC,CAAA,CACeC,CAAUC,CAAAA,CAAe,CAC1C,CAAA,CA1FK,OAAOR,CAAAA,EAAQ,UAAe,EAAA,SAAA,EACjC,IAAK,CAAA,aAAA,CAAcA,CAAQ,CAAA,UAAU,CAClC,CAAA,OAAOA,GAAQ,oBAAyB,EAAA,SAAA,EAC3C,IAAK,CAAA,uBAAA,CAAwBA,CAAQ,CAAA,oBAAoB,EAC3D,CAwFA,WAAiC7D,CAAAA,CAAAA,CAAmB,CAC9CzB,CAAAA,CAAYyB,CAAI,CAAA,EAAGhC,CAAI,CAAA,CAAC,EACzBK,CAAQ2B,CAAAA,CAAI,CAAGA,GAAAA,CAAAA,CAAOwD,EAAQxD,CAAAA,CAAI,CACtC,CAAA,CAAA,IAAMmB,EAAQK,EAAW,CAAA,IAAI,CACvByB,CAAAA,CAAAA,CAAQK,EAAYtD,CAAAA,CAAAA,CAAM,KAAS,CAAA,CAAA,CACzC,OAAAiD,CAAMtF,CAAAA,CAAW,CAAE,CAAA,SAAA,CAAY,CAC/B2D,CAAAA,CAAAA,EAAAA,CAAWH,CAAK,CAAA,CACT8B,CACR,CAEA,WACCvB,CAAAA,CAAAA,CACAN,CACuC,CAAA,CACvC,IAAMhC,CAAAA,CAAoBsC,GAAUA,CAAc/D,CAAAA,CAAW,CACzD,CAAA,CAAA,CAACyB,CAAS,EAAA,CAACA,CAAM,CAAA,SAAA,GAAWpB,CAAI,CAAA,CAAC,CACrC,CAAA,GAAM,CAAC,MAAA,CAAQmD,CAAK,CAAA,CAAI/B,EACxB,OAAA8B,EAAAA,CAAkBC,CAAOC,CAAAA,CAAa,CAC/BO,CAAAA,EAAAA,CAAc,KAAWR,CAAAA,CAAAA,CAAK,CACtC,CAOA,aAAc7C,CAAAA,CAAAA,CAAgB,CAC7B,IAAA,CAAK,WAAcA,CAAAA,EACpB,CAOA,uBAAwBA,CAAAA,CAAAA,CAAmB,CAC1C,IAAA,CAAK,qBAAwBA,CAAAA,EAC9B,CAEA,YAAA,CAAkC0B,EAASoE,CAA8B,CAAA,CAGxE,IAAIrJ,CAAAA,CACJ,IAAKA,CAAAA,CAAIqJ,CAAQ,CAAA,MAAA,CAAS,EAAGrJ,CAAK,EAAA,CAAA,CAAGA,CAAK,EAAA,CAAA,CACzC,IAAMuJ,CAAAA,CAAQF,CAAQrJ,CAAAA,CAAC,CACvB,CAAA,GAAIuJ,CAAM,CAAA,IAAA,CAAK,MAAW,GAAA,CAAA,EAAKA,CAAM,CAAA,EAAA,GAAO,UAAW,CACtDtE,CAAAA,CAAOsE,CAAM,CAAA,KAAA,CACb,KACD,CACD,CAGIvJ,CAAAA,CAAI,CACPqJ,CAAAA,GAAAA,CAAAA,CAAUA,CAAQ,CAAA,KAAA,CAAMrJ,CAAI,CAAA,CAAC,CAG9B,CAAA,CAAA,IAAMwJ,EAAmB5D,CAAU,CAAA,SAAS,CAAE,CAAA,aAAA,CAC9C,OAAItC,CAAAA,CAAQ2B,CAAI,CAAA,CAERuE,CAAiBvE,CAAAA,CAAAA,CAAMoE,CAAO,CAAA,CAG/B,IAAK,CAAA,OAAA,CAAQpE,CAAO0B,CAAAA,CAAAA,EAC1B6C,EAAiB7C,CAAO0C,CAAAA,CAAO,CAChC,CACD,CACD,CAAA,CAEO,SAASd,EAAAA,CACfhF,EACAqE,CACyB,CAAA,CAEzB,IAAMjB,CAAAA,CAAiBjD,EAAMH,CAAAA,CAAK,CAC/BqC,CAAAA,CAAAA,CAAU,QAAQ,CAAE,CAAA,SAAA,CAAUrC,CAAOqE,CAAAA,CAAM,CAC3CjE,CAAAA,EAAAA,CAAMJ,CAAK,CAAA,CACXqC,CAAU,CAAA,QAAQ,CAAE,CAAA,SAAA,CAAUrC,CAAOqE,CAAAA,CAAM,CAC3CD,CAAAA,EAAAA,CAAiBpE,EAAOqE,CAAM,CAAA,CAGjC,OADcA,CAAAA,CAAAA,CAASA,CAAO,CAAA,MAAA,CAAS7B,EAAgB,EAAA,EACjD,QAAQ,IAAKY,CAAAA,CAAK,CACjBA,CAAAA,CACR,CAdgBpH,CAAAA,CAAAgJ,EAAA,CAAA,aAAA,CAAA,CC7LT,SAASE,EAAQlF,CAAAA,CAAAA,CAAiB,CACxC,OAAKD,CAAQC,CAAAA,CAAK,CAAGN,EAAAA,CAAAA,CAAI,EAAIM,CAAAA,CAAK,CAC3BkG,CAAAA,EAAAA,CAAYlG,CAAK,CACzB,CAHgBhE,CAAAA,CAAAkJ,GAAA,SAKhB,CAAA,CAAA,SAASgB,EAAYlG,CAAAA,CAAAA,CAAiB,CACrC,GAAI,CAACC,CAAAA,CAAYD,CAAK,CAAKkC,EAAAA,EAAAA,CAASlC,CAAK,CAAA,CAAG,OAAOA,CAAAA,CACnD,IAAMc,CAAAA,CAAgCd,EAAMX,CAAW,CAAA,CACnD8G,CACJ,CAAA,GAAIrF,CAAO,CAAA,CACV,GAAI,CAACA,CAAM,CAAA,SAAA,CAAW,OAAOA,CAAAA,CAAM,KAEnCA,CAAAA,CAAAA,CAAM,UAAa,CAAA,CAAA,CAAA,CACnBqF,EAAO1E,EAAYzB,CAAAA,CAAAA,CAAOc,CAAM,CAAA,MAAA,CAAO,MAAO,CAAA,qBAAqB,EACpE,CAAA,KACCqF,CAAO1E,CAAAA,EAAAA,CAAYzB,CAAO,CAAA,CAAA,CAAI,CAG/B,CAAA,OAAAQ,EAAK2F,CAAAA,CAAAA,CAAM,CAACxF,CAAKiD,CAAAA,CAAAA,GAAe,CAC/B3C,EAAAA,CAAIkF,CAAMxF,CAAAA,CAAAA,CAAKuF,EAAYtC,CAAAA,CAAU,CAAC,EACvC,CAAC,CAAA,CACG9C,CACHA,GAAAA,CAAAA,CAAM,UAAa,CAAA,CAAA,CAAA,CAAA,CAEbqF,CACR,CApBSnK,CAAAA,CAAAkK,EAAA,CAAA,aAAA,CAAA,CCOH/C,IAAAA,CAAAA,CAAQ,IAAImC,EAAAA,CA2BqCnC,CAAAA,CAAM,kBAAmB,CAAA,IAAA,CAC/EA,CACD,CAAA,CAO6BA,CAAM,CAAA,aAAA,CAAc,IAAKA,CAAAA,CAAK,CAO9CiD,CAA0BjD,CAAM,CAAA,uBAAA,CAAwB,IAAKA,CAAAA,CAAK,CAOlEkD,CAAelD,CAAM,CAAA,YAAA,CAAa,IAAKA,CAAAA,CAAK,EAM9BA,CAAAA,CAAM,WAAY,CAAA,IAAA,CAAKA,CAAK,CAAA,CAU5BA,CAAAA,CAAM,YAAY,IAAKA,CAAAA,CAAK,EC5FvD,IAAAmD,EAAA,CAAA,MAAA,CAAA,cAAAC,CAAAA,CAAAA,CAAAvK,EAAA,CAAA,CAAA,CAAA2C,CAAA2H,GAAAA,EAAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,KAAA,CAAA3H,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CCIA,SAAS6H,EAAAA,CAAQC,EAAiC,CAChD,GAAI,OAAOA,CAAAA,EAAU,QAAU,CAAA,OAAO,CACtC,CAAA,CAAA,GAAI,CACF,OAAO,CAAC,CAACC,EAAAA,CAAAA,OAAY,CAAA,GAAA,CAAID,CAAK,CAChC,MAAY,CACV,OAAO,CACT,CAAA,CACF,CAPSD,CAAAA,CAAAA,EAAAA,CAAAA,IAAAA,CAAAA,CAAAxK,CAAAwK,CAAAA,EAAAA,CAAA,SAAA,CAAA,CAkBIG,IAAAA,EAAAA,CAAoBC,QAC/B,CAAA,mBAAA,CACC5G,GAAU,OAAOA,CAAAA,EAAU,QAAYwG,EAAAA,EAAAA,CAAQxG,CAAK,CACvD,CAEa6G,CAAAA,CAAAA,CAA2CC,OAAM,CAAA,CAC5DC,MAAK,CAAA,CACH,IAAMC,CAAAA,SAAAA,CAAQ,OAAO,CAAA,CACrB,WAAYL,EACd,CAAC,CACDI,CAAAA,MAAAA,CAAK,CACH,IAAA,CAAMC,SAAQ,CAAA,cAAc,CAC5B,CAAA,SAAA,CAAW7J,QAAO,EACpB,CAAC,CACH,CAAC,CAAA,CAGiE4J,MAAK,CAAA,CACrE,IAAMC,CAAAA,SAAAA,CAAQ,cAAc,CAAA,CAC5B,SAAW7J,CAAAA,QAAAA,EACb,CAAC,EC1BM,IAQM8J,EAAAA,CAAuDC,QAAO,CAAA,CACzE,IAAMC,CAAAA,OAAAA,CAAM,CAAC,KAAO,CAAA,IAAI,CAAC,CAAA,CACzB,KAAOC,CAAAA,QAAAA,EACT,CAAC,CAIYC,CAAAA,EAAAA,CAAiDP,OAAM,CAAA,CAClE3J,QAAO,EAAA,CACPiK,QAAO,EACT,CAAC,CAEWE,CAAAA,EAAAA,CAAAA,CAAAA,CACVA,GAAAA,CAAAA,CAAA,KAAQ,CAAA,OAAA,CACRA,CAAA,CAAA,IAAA,CAAO,OAFGA,CAAAC,CAAAA,EAAAA,EAAAA,EAAA,EAAA,CAcCC,CAAAA,EAAAA,CAA4BL,OAAM,CAAA,CAAC,QAAS,MAAM,CAAC,CAEnDM,CAAAA,EAAAA,CAAiDV,MAAK,CAAA,CACjE,MAAQS,CAAAA,EAAAA,CACR,IAAMR,CAAAA,SAAAA,CAAQ,KAAK,CAAA,CACnB,IAAM7J,CAAAA,QAAAA,EACR,CAAC,EA0CYuK,EAAiDX,CAAAA,MAAAA,CAAK,CACjE,MAAA,CAAQY,UAASxK,CAAAA,QAAAA,EAAQ,CAAA,CACzB,OAAQwK,UACNb,CAAAA,OAAAA,CAAM,CAACO,EAAAA,CAAsBO,MAAKC,CAAAA,OAAAA,CAAMR,EAAoB,CAAA,CAAG,CAAC,CAAC,CAAC,CACpE,CAAA,CACA,GAAKM,CAAAA,UAAAA,CAASE,OAAMJ,CAAAA,EAAoB,CAAC,CAAA,CACzC,KAAOE,CAAAA,UAAAA,CAASxK,QAAO,EAAC,CACxB,CAAA,OAAA,CAASwK,WAASR,OAAM,CAAA,CAAC,MAAQ,CAAA,OAAA,CAAS,MAAQ,CAAA,UAAA,CAAY,UAAU,CAAC,CAAC,CAAA,CAC1E,iBAAmBQ,CAAAA,UAAAA,CAASxK,QAAO,EAAC,CACpC,CAAA,YAAA,CAAcwK,WAASxK,QAAAA,EAAQ,CACjC,CAAC,CAOW2K,CAAAA,EAAAA,CAAAA,CAAAA,CACVA,GAAAA,CAAAA,CAAA,OAAU,CAAA,UAAA,CACVA,CAAA,CAAA,UAAA,CAAa,YACbA,CAAAA,CAAAA,CAAA,SAAY,CAAA,WAAA,CACZA,EAAA,SAAY,CAAA,WAAA,CAJFA,CAAAA,CAAAA,EAAAA,EAAAA,EAAA,EAOAC,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,IACVA,CAAA,CAAA,iBAAA,CAAoB,CAAA,iBAAA,CACpBA,CAAA,CAAA,iBAAoB,CAAA,CAAA,iBAAA,CACpBA,EAAA,SAAY,CAAA,WAAA,CACZA,CAAA,CAAA,gBAAmB,CAAA,CAAA,gBAAA,CACnBA,CAAA,CAAA,MAAA,CAAS,QACTA,CAAAA,CAAAA,CAAA,eAAA,CAAA,CAAkB,eAClBA,CAAAA,CAAAA,CAAA,QAAW,CAAA,UAAA,CACXA,EAAA,gBAAA,CAAA,CAAmB,gBACnBA,CAAAA,CAAAA,CAAA,gBAAmB,CAAA,CAAA,gBATTA,CAAAA,CAAAA,CAAAA,EAAAC,EAAA,EAAA,EAAA,CAAA,CAkDCC,EAA6DlB,CAAAA,MAAAA,CAAK,CAC7E,UAAA,CAAYY,WAASb,OAAM,CAAA,CAAC3J,QAAO,EAAA,CAAGiK,QAAO,EAAC,CAAC,CAAC,CAChD,CAAA,SAAA,CAAWO,UAASd,CAAAA,CAAiB,CACrC,CAAA,UAAA,CAAYc,UAASd,CAAAA,CAAiB,EACtC,SAAWc,CAAAA,UAAAA,CAASO,SAAQ,EAAC,CAC7B,CAAA,aAAA,CAAeP,UACbR,CAAAA,OAAAA,CAAM,CAAC,SAAW,CAAA,YAAA,CAAc,WAAa,CAAA,WAAW,CAAC,CAC3D,CACA,CAAA,WAAA,CAAaQ,WACXR,OAAM,CAAA,CACJ,iBACA,CAAA,iBAAA,CACA,WACA,CAAA,gBAAA,CACA,QACA,CAAA,eAAA,CACA,UACA,CAAA,gBAAA,CACA,gBACF,CAAC,CACH,CACF,CAAC,CAAA,CAEYgB,GAAiDpB,MAAK,CAAA,CACjE,GAAKE,CAAAA,EAAAA,CACL,GAAKU,CAAAA,UAAAA,CAASV,EAAuB,CACvC,CAAC,CAAA,CAEYmB,CAAqDrB,CAAAA,MAAAA,CAAK,CACrE,QAAA,CAAUY,UAASQ,CAAAA,EAAoB,EACvC,UAAYR,CAAAA,UAAAA,CAASb,OAAM,CAAA,CAAC3J,QAAAA,EAAAA,CAAUiK,QAAAA,EAAQ,CAAC,CAAC,CAChD,CAAA,UAAA,CAAYO,UAASb,CAAAA,OAAAA,CAAM,CAAC3J,QAAAA,GAAUiK,QAAAA,EAAQ,CAAC,CAAC,CAChD,CAAA,aAAA,CAAeO,UAASxK,CAAAA,QAAAA,EAAQ,CAChC,CAAA,UAAA,CAAYwK,UAASxK,CAAAA,QAAAA,EAAQ,CAAA,CAC7B,SAAWwK,CAAAA,UAAAA,CAASd,CAAiB,CACrC,CAAA,aAAA,CAAec,UACbR,CAAAA,OAAAA,CAAM,CAAC,SAAA,CAAW,YAAc,CAAA,WAAA,CAAa,WAAW,CAAC,CAC3D,CAAA,CACA,WAAaQ,CAAAA,UAAAA,CACXR,OAAM,CAAA,CACJ,kBACA,iBACA,CAAA,WAAA,CACA,gBACA,CAAA,QAAA,CACA,eACA,CAAA,UAAA,CACA,gBACA,CAAA,gBACF,CAAC,CACH,CACF,CAAC,CAAA,CC7MM,IAAMkB,CAAAA,CACXvB,OAAM,CAAA,CACJsB,EACArB,MAAK,CAAA,CACH,WAAaY,CAAAA,UAAAA,CAASd,CAAiB,CACzC,CAAC,CACH,CAAC,CAAA,CAGUyB,EACXxB,CAAAA,OAAAA,CAAM,CACJuB,CAAAA,CACAtB,MAAK,CAAA,CACH,WAAYY,UAASd,CAAAA,CAAiB,CACtC,CAAA,eAAA,CAAiBc,UAASd,CAAAA,CAAiB,CAC7C,CAAC,CACH,CAAC,CAAA,CAEU0B,EACXzB,CAAAA,OAAAA,CAAM,CACJuB,CAAAA,CACAtB,MAAK,CAAA,CACH,gBAAiBY,UAASd,CAAAA,CAAiB,CAC7C,CAAC,CACH,CAAC,CHFI,CAA+CK,QAAAA,CAAO,CAC3D,OAAA,CAASF,SAAQ,CAAA,CAAC,CAClB,CAAA,sBAAA,CAAwBL,EAC1B,CAAC,CAAA,CAOqDO,QAAAA,CAAO,CAC3D,OAAA,CAASF,SAAQ,CAAA,CAAC,CAClB,CAAA,0BAAA,CAA4BL,EAC9B,CAAC,CAOY6B,CAAyCtB,QAAO,CAAA,CAC3D,QAASF,SAAQ,CAAA,CAAC,CAClB,CAAA,cAAA,CAAgBL,EAClB,CAAC,CASY8B,CAAyCvB,QAAO,CAAA,CAC3D,OAASF,CAAAA,SAAAA,CAAQ,CAAC,CAAA,CAClB,YAAcH,CAAAA,CAAAA,CACd,UAAWA,CACX,CAAA,UAAA,CAAYA,CACZ,CAAA,kBAAA,CAAoBc,UAASe,CAAAA,WAAAA,CAAUR,SAAAA,EAAAA,CAAW,EAAI,CAAC,CACzD,CAAC,CAAA,CAUqDhB,QAAAA,CAAO,CAC3D,OAAA,CAASF,UAAQ,CAAC,CAAA,CAClB,YAAcH,CAAAA,CAAAA,CACd,SAAWA,CAAAA,CAAAA,CACX,UAAYA,CAAAA,CAAAA,CACZ,SAAWA,CAAAA,CAAAA,CACX,kBAAoBc,CAAAA,UAAAA,CAASe,WAAUR,CAAAA,SAAAA,EAAW,CAAA,CAAA,CAAI,CAAC,CACzD,CAAC,CAaYS,CAAyCzB,QAAO,CAAA,CAC3D,OAASF,CAAAA,SAAAA,CAAQ,CAAC,CAAA,CAClB,YAAcH,CAAAA,CAAAA,CACd,SAAWA,CAAAA,CAAAA,CACX,UAAYA,CAAAA,CAAAA,CACZ,UAAWA,CACX,CAAA,kBAAA,CAAoBc,UAASe,CAAAA,WAAAA,CAAUR,SAAQ,EAAA,CAAG,CAAI,CAAA,CAAC,CAEvD,CAAA,UAAA,CAAYnB,MAAK,CAAA,CACf,WAAaY,CAAAA,UAAAA,CAASE,OAAMH,CAAAA,EAAoB,CAAC,CACjD,CAAA,YAAA,CAAcX,MAAK,CAAA,CACjB,SAAWY,CAAAA,UAAAA,CAASS,CAAsB,CAAA,CAC1C,gBAAiBT,UAASS,CAAAA,CAAsB,CAChD,CAAA,YAAA,CAAcT,UAASS,CAAAA,CAAsB,CAC7C,CAAA,aAAA,CAAeT,WAASS,CAAsB,CAAA,CAC9C,YAAcT,CAAAA,UAAAA,CAASS,CAAsB,CAAA,CAC7C,QAAUT,CAAAA,UAAAA,CAASS,CAAsB,CAAA,CACzC,IAAMT,CAAAA,UAAAA,CAASM,EAA0B,CAC3C,CAAC,CACH,CAAC,CACH,CAAC,CAcYW,CAAyC1B,QAAO,CAAA,CAC3D,OAASF,CAAAA,SAAAA,CAAQ,CAAC,CAAA,CAClB,YAAcH,CAAAA,CAAAA,CACd,SAAWA,CAAAA,CAAAA,CACX,UAAYA,CAAAA,CAAAA,CACZ,UAAWA,CACX,CAAA,kBAAA,CAAoBc,UAASe,CAAAA,WAAAA,CAAUR,SAAAA,EAAAA,CAAW,CAAI,CAAA,CAAC,CAEvD,CAAA,UAAA,CAAYnB,MAAK,CAAA,CACf,WAAaY,CAAAA,UAAAA,CAASE,OAAMH,CAAAA,EAAoB,CAAC,CACjD,CAAA,UAAA,CAAYC,UACVZ,CAAAA,MAAAA,CAAK,CACH,UAAA,CAAYY,UAASW,CAAAA,EAAmC,EACxD,YAAcX,CAAAA,UAAAA,CAASY,EAAqC,CAAA,CAC5D,IAAMZ,CAAAA,UAAAA,CAASU,CAA4B,CAC7C,CAAC,CACH,CAAA,CACA,YAActB,CAAAA,MAAAA,CAAK,CACjB,SAAA,CAAWY,UAASS,CAAAA,CAAsB,CAC1C,CAAA,eAAA,CAAiBT,UAASS,CAAAA,CAAsB,CAChD,CAAA,YAAA,CAAcT,UAASS,CAAAA,CAAsB,EAC7C,aAAeT,CAAAA,UAAAA,CAASS,CAAsB,CAAA,CAC9C,YAAcT,CAAAA,UAAAA,CAASS,CAAsB,CAAA,CAC7C,SAAUT,UAASS,CAAAA,CAAsB,CACzC,CAAA,IAAA,CAAMT,UAASM,CAAAA,EAA0B,CAC3C,CAAC,CACH,CAAC,CACH,CAAC,CAAA,CAWqDf,QAAAA,CAAO,CAC3D,OAAA,CAASF,SAAQ,CAAA,CAAC,CAClB,CAAA,YAAA,CAAcH,CACd,CAAA,SAAA,CAAWA,CACX,CAAA,UAAA,CAAYA,EACZ,SAAWA,CAAAA,CAAAA,CAEX,UAAYE,CAAAA,MAAAA,CAAK,CACf,WAAA,CAAaY,UAASE,CAAAA,OAAAA,CAAMH,EAAoB,CAAC,CAAA,CACjD,UAAYC,CAAAA,UAAAA,CACVZ,MAAK,CAAA,CACH,UAAYY,CAAAA,UAAAA,CAASW,EAAmC,CACxD,CAAA,YAAA,CAAcX,UAASY,CAAAA,EAAqC,CAC5D,CAAA,IAAA,CAAMZ,UAASU,CAAAA,CAA4B,CAC7C,CAAC,CACH,CAAA,CACA,YAActB,CAAAA,MAAAA,CAAK,CACjB,SAAA,CAAWY,WAASS,CAAsB,CAAA,CAC1C,eAAiBT,CAAAA,UAAAA,CAASS,CAAsB,CAAA,CAChD,YAAcT,CAAAA,UAAAA,CAASS,CAAsB,CAAA,CAC7C,aAAeT,CAAAA,UAAAA,CAASS,CAAsB,CAAA,CAC9C,YAAcT,CAAAA,UAAAA,CAASS,CAAsB,CAC7C,CAAA,QAAA,CAAUT,UAASS,CAAAA,CAAsB,CACzC,CAAA,IAAA,CAAMT,UAASM,CAAAA,EAA0B,CAC3C,CAAC,CACH,CAAC,CACH,CAAC,CAWYY,CAAyC3B,SAAO,CAC3D,OAAA,CAASF,SAAQ,CAAA,CAAC,CAElB,CAAA,UAAA,CAAYD,MAAK,CAAA,CACf,YAAaY,UAASE,CAAAA,OAAAA,CAAMH,EAAoB,CAAC,CACjD,CAAA,UAAA,CAAYC,UACVZ,CAAAA,MAAAA,CAAK,CACH,UAAYY,CAAAA,UAAAA,CAASW,EAAmC,CAAA,CACxD,YAAcX,CAAAA,UAAAA,CAASY,EAAqC,CAAA,CAC5D,IAAMZ,CAAAA,UAAAA,CAASU,CAA4B,CAC7C,CAAC,CACH,CACA,CAAA,YAAA,CAActB,OAAK,CACjB,SAAA,CAAWY,UAASS,CAAAA,CAAsB,CAC1C,CAAA,eAAA,CAAiBT,UAASS,CAAAA,CAAsB,CAChD,CAAA,YAAA,CAAcT,UAASS,CAAAA,CAAsB,CAC7C,CAAA,aAAA,CAAeT,UAASS,CAAAA,CAAsB,EAC9C,YAAcT,CAAAA,UAAAA,CAASS,CAAsB,CAAA,CAC7C,QAAUT,CAAAA,UAAAA,CAASS,CAAsB,CAAA,CACzC,IAAMT,CAAAA,UAAAA,CAASM,EAA0B,CAC3C,CAAC,CACH,CAAC,CACH,CAAC,CAYYa,CAA2C5B,QAAO,CAAA,CAC7D,OAASF,CAAAA,SAAAA,CAAQ,EAAE,CAAA,CAEnB,WAAYD,MAAK,CAAA,CACf,WAAaY,CAAAA,UAAAA,CAASE,OAAMH,CAAAA,EAAoB,CAAC,CAAA,CACjD,WAAYC,UACVZ,CAAAA,MAAAA,CAAK,CACH,UAAA,CAAYY,UAASW,CAAAA,EAAmC,CACxD,CAAA,YAAA,CAAcX,UAASY,CAAAA,EAAqC,CAC5D,CAAA,IAAA,CAAMZ,UAASU,CAAAA,CAA4B,CAC7C,CAAC,CACH,CACA,CAAA,YAAA,CAActB,MAAK,CAAA,CACjB,SAAWY,CAAAA,UAAAA,CAASS,CAAsB,CAAA,CAC1C,eAAiBT,CAAAA,UAAAA,CAASS,CAAsB,CAAA,CAChD,aAAeT,CAAAA,UAAAA,CAASS,CAAsB,CAAA,CAC9C,aAAcT,UAASS,CAAAA,CAAsB,CAC7C,CAAA,aAAA,CAAeT,UAASS,CAAAA,CAAsB,CAC9C,CAAA,YAAA,CAAcT,UAASS,CAAAA,CAAsB,CAC7C,CAAA,aAAA,CAAeT,UAASS,CAAAA,CAAsB,CAC9C,CAAA,QAAA,CAAUT,WAASS,CAAsB,CAAA,CACzC,IAAMT,CAAAA,UAAAA,CAASM,EAA0B,CAC3C,CAAC,CACH,CAAC,CACH,CAAC,EIxJM,SAASc,EAAiB1L,CAAAA,CAAAA,CAAqC,CACpE,OAAI,OAAOA,CAAQ,EAAA,QAAA,CAAiB,CAIVA,CAAAA,CAAAA,CAAAA,CAAI,KAAM,CAAA,GAAG,CAAE,CAAA,MAAA,CAAS,CACrB,GAAA,CAAA,EAAKA,CAAI,CAAA,UAAA,CAAW,GAAG,CAAA,EAAKA,CAAI,CAAA,QAAA,CAAS,GAAG,CAC3E,CAPgB0L,CAAAA,CAAAA,EAAAA,CAAAA,IAAA/M,CAAAA,CAAAA,CAAAA,CAAA+M,EAAA,CAAA,kBAAA,EAST,SAASC,CAAAA,CAAmB3L,CAAuB,CAAA,CACxD,OAAO,OAAOA,CAAQ,EAAA,QAAA,EAAYA,EAAI,QAAS,CAAA,GAAG,CACpD,CAFgB2L,CAAAA,CAAAA,CAAAA,CAAAA,GAAAhN,CAAAA,CAAAA,CAAAA,CAAAgN,CAAA,CAAA,oBAIT,CAAA,CAAA,SAASC,EACdjJ,CAAAA,CAAAA,CAC+B,CAC/B,OAAO,CAAC+I,EAAiB/I,CAAAA,CAAK,CAChC,CAJgBiJ,CAAAA,CAAAA,EAAAA,CAAAA,IAAAjN,CAAAA,CAAAA,CAAAA,CAAAiN,GAAA,qBAAA,CAAA,CAMHC,IAAAA,CAAAA,CAAyBC,YACpC,CAAA,MAAA,CAAA,iBAAA,CACCnJ,CACK,EAAA,OAAOA,GAAU,QAAiB,CAAA,CAAA,CAAA,CAClCiJ,EAAoBjJ,CAAAA,CAAK,CACpB,CAAA,sCAAA,CAEF,CAEX,CAAA,CAAA,CAUMoJ,EAAuE,CAAA,CAC3E,MAAQ,CAAA,QAAA,CACR,MAAQ,CAAA,QAAA,CACR,UAAY,CAAA,YACd,EACaC,EAAsB,CAAA,MAAA,CAAO,MAAOD,CAAAA,EAAoB,CAC/DE,CAAAA,EAAAA,CAAoE,CACxE,MAAA,CAAQ,QACR,CAAA,MAAA,CAAQ,QACR,CAAA,OAAA,CAAS,SACT,CAAA,KAAA,CAAO,OACP,CAAA,SAAA,CAAW,YACX,QAAU,CAAA,UAAA,CAEV,UAAY,CAAA,YAAA,CACZ,WAAa,CAAA,aAAA,CACb,WAAa,CAAA,aACf,CACaC,CAAAA,EAAAA,CAAqB,MAAO,CAAA,MAAA,CAAOD,EAAmB,CAAA,CAK5D,SAASE,EAAAA,CACdzC,EAC4B,CAC5B,OAAOsC,EAAoB,CAAA,QAAA,CAAStC,CAA0B,CAChE,CAJgByC,CAAAA,CAAAA,GAAAA,GAAAxN,CAAAA,CAAAA,CAAAA,CAAAwN,EAAA,CAAA,sBAAA,CAMT,CAAA,SAASC,EACd1C,CAAAA,CAAAA,CAC2B,CAC3B,OAAOwC,EAAAA,CAAmB,QAASxC,CAAAA,CAAyB,CAC9D,CAJgB0C,CAAAA,CAAAA,EAAAA,CAAAA,IAAAzN,CAAAA,CAAAA,CAAAA,CAAAyN,EAAA,CAAA,qBAAA,CC/JhBC,CAAAA,gBAAAA,CAEE,CACA,CACE,MAAO,CACP,CAAA,CAAA,KAAA,CAAO,MACP,CAAA,OAAA,CAAS,KACT,CAAA,OAAA,CAAS,KACT,CAAA,MAAA,CAAQ,KACR,CAAA,IAAA,CAAM,KACR,CAAA,CACA,CACE,KAAA,CAAO,MACP,CAAA,OAAA,CAAS,MACT,OAAS,CAAA,KAAA,CACT,MAAQ,CAAA,KAAA,CACR,IAAM,CAAA,KAAA,CACN,KAAO,CAAA,CAAA,CACT,CACF,CAAC,CA0DD,CAAA,IAAMC,CAKK,CAAAhL,YAAA,CAAA,IAAA,CAAA,CACT,EAAA,CAAMA,qBACN,CAAA,WAAA,CAAeA,YAAkB,CAAA,QAAA,CAAAA,YAAA,CAAA,MAAA,EAAC,CAAA,CAClC,UAAyB,CAAAA,YAAA,CAAA,QAAA,CAAAA,mBAAgBA,YAAA,CAAA,KAAA,CAAAA,YAAA,CAAA,MAAA,EAAQ,CAAC,CAAC,CAAA,CACnD,WAAe,CAAAA,YAAA,CAAA,QAAA,CACNA,kBAAA,CACL,OAAA,CAAsBA,YAAA,CAAA,QAAA,CAAAA,YAAA,CAAA,MAAA,EAAQ,CAChC,CAAC,CACH,CACF,CAAC,CAaD+K,CAAAA,gBAAAA,CAAgC,CAC9B,CACE,IAAM,CAAA,UAAA,CACN,MAAO,KACP,CAAA,aAAA,CAAe,KACf,CAAA,EAAA,CAAI,GACJ,CAAA,IAAA,CAAM,QACR,CAAA,CACA,CACE,IAAA,CAAM,UACN,CAAA,KAAA,CAAO,KACP,CAAA,IAAA,CAAM,KACN,CAAA,EAAA,CAAI,IACJ,aAAe,CAAA,OAAA,CACf,iBAAmB,CAAA,GACrB,CAEA,CAAA,CACE,IAAM,CAAA,UAAA,CACN,KAAO,CAAA,KAAA,CACP,aAAe,CAAA,KAAA,CACf,EAAI,CAAA,GAAA,CACJ,IAAM,CAAA,KACR,EAEA,CACE,IAAA,CAAM,UACN,CAAA,KAAA,CAAO,KACP,CAAA,IAAA,CAAM,QACN,CAAA,EAAA,CAAI,IACJ,aAAe,CAAA,OAAA,CACf,iBAAmB,CAAA,GACrB,CACA,CAAA,CACE,IAAM,CAAA,OAAA,CACN,MAAO,MACP,CAAA,IAAA,CAAM,QACN,CAAA,EAAA,CAAI,GACJ,CAAA,aAAA,CAAe,MACjB,CAAA,CACA,CACE,IAAA,CAAM,OACN,CAAA,KAAA,CAAO,MACP,CAAA,IAAA,CAAM,KACN,CAAA,EAAA,CAAI,IACJ,aAAe,CAAA,OAAA,CACf,iBAAmB,CAAA,KACrB,CACA,CAAA,CACE,IAAM,CAAA,aAAA,CACN,KAAM,QACN,CAAA,KAAA,CAAO,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,CAAC,CAAA,CAClB,cAAe,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,CAAC,CAAA,CAC1B,EAAI,CAAA,GACN,CACF,CAAC,CAmBM,CAAA,SAASE,EACdC,CAAAA,CAAAA,CACiC,CACjC,OAAOL,GAAqBK,CAAU,CAAA,IAAI,CAC5C,CAJgBD,CAAAA,CAAAA,EAAAA,CAAAA,IAAA5N,CAAAA,CAAAA,CAAAA,CAAA4N,GAAA,sBAMhBF,CAAAA,CAAAA,gBAAiC,CAAA,CAC/B,CACE,IAAA,CAAM,QACN,CAAA,IAAA,CAAM,SACN,EAAI,CAAA,GAAA,CACJ,KAAO,CAAA,CACL,KAAO,CAAA,MAAA,CACP,KAAO,CAAA,OAAA,CACP,KAAO,CAAA,KACT,CACA,CAAA,aAAA,CAAe,CACb,KAAA,CAAO,MACP,CAAA,KAAA,CAAO,QACP,KAAO,CAAA,KACT,CACF,CAAA,CACA,CACE,IAAA,CAAM,QACN,CAAA,IAAA,CAAM,KACN,CAAA,iBAAA,CAAmB,KACnB,CAAA,EAAA,CAAI,GACJ,CAAA,KAAA,CAAO,CACL,KAAA,CAAO,MACP,KAAO,CAAA,QAAA,CACP,KAAO,CAAA,KACT,CACA,CAAA,aAAA,CAAe,OACjB,CAAA,CACA,CACE,IAAA,CAAM,QACN,CAAA,KAAA,CAAO,CACL,KAAA,CAAO,MACP,CAAA,OAAA,CAAS,MACT,OAAS,CAAA,KAAA,CACT,IAAM,CAAA,KAAA,CACN,MAAQ,CAAA,KAAA,CACR,KAAO,CAAA,CAAA,CACT,EACA,aAAe,CAAA,CACb,KAAO,CAAA,MAAA,CACP,OAAS,CAAA,OAAA,CACT,OAAS,CAAA,KAAA,CACT,KAAM,KACN,CAAA,MAAA,CAAQ,KACR,CAAA,KAAA,CAAO,CACT,CAAA,CAAA,CACA,EAAI,CAAA,GAAA,CACJ,IAAM,CAAA,QACR,CACA,CAAA,CACE,IAAM,CAAA,QAAA,CACN,IAAM,CAAA,KAAA,CACN,kBAAmB,KACnB,CAAA,KAAA,CAAO,CACL,KAAA,CAAO,CACP,CAAA,CAAA,KAAA,CAAO,KACP,CAAA,OAAA,CAAS,KACT,CAAA,IAAA,CAAM,KACN,CAAA,OAAA,CAAS,KACT,CAAA,MAAA,CAAQ,KACV,CAAA,CACA,cAAe,OACf,CAAA,EAAA,CAAI,GACN,CAAA,CACA,CACE,IAAA,CAAM,YACN,CAAA,KAAA,CAAO,CACL,QAAA,CAAU,OACV,CAAA,KAAA,CAAO,OACP,CAAA,cAAA,CAAgB,CAAC,CAAA,CAAG,EAAG,CAAG,CAAA,CAAC,CAC7B,CAAA,CACA,aAAe,CAAA,OAAA,CACf,IAAM,CAAA,KAAA,CACN,kBAAmB,KACnB,CAAA,EAAA,CAAI,GACN,CAAA,CACA,CACE,IAAA,CAAM,YACN,CAAA,IAAA,CAAM,SACN,KAAO,CAAA,CACL,QAAU,CAAA,OAAA,CACV,KAAO,CAAA,OAAA,CACP,cAAgB,CAAA,CAAC,CAAG,CAAA,CAAA,CAAG,CAAG,CAAA,CAAC,CAC7B,CAAA,CACA,aAAe,CAAA,CACb,SAAU,OACV,CAAA,KAAA,CAAO,OACP,CAAA,cAAA,CAAgB,OAClB,CAAA,CACA,EAAI,CAAA,GACN,CACA,CAAA,CACE,IAAM,CAAA,YAAA,CACN,IAAM,CAAA,QAAA,CACN,KAAO,CAAA,CACL,SAAU,OACV,CAAA,KAAA,CAAO,OACP,CAAA,cAAA,CAAgB,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,CAAC,CAC7B,CACA,CAAA,aAAA,CAAe,CACb,QAAA,CAAU,OACV,CAAA,KAAA,CAAO,QACP,cAAgB,CAAA,CAAC,CAAG,CAAA,CAAA,CAAG,CAAG,CAAA,CAAC,CAC7B,CAAA,CACA,GAAI,GACN,CACF,CAAC,CAAA,CAsBM,SAASI,EAAAA,CACd9J,CACoD,CAAA,CACpD,OAAO,OAAOA,CAAAA,EAAU,QAAY,EAAA,CAACgJ,CAAmBhJ,CAAAA,CAAK,CAC/D,CAJgB8J,CAAAA,CAAAA,EAAAA,CAAAA,IAAA9N,CAAAA,CAAAA,CAAAA,CAAA8N,EAAA,CAAA,mBAMT,CAAA,CAAA,IAAMC,EAA0BpL,YACrC,CAAA,MAAA,CAAA,aAAA,CACCqB,CACK,EAAA,OAAOA,CAAU,EAAA,QAAA,CACZ,wBAELA,CAAAA,CAAAA,GAAU,GACL,yBAELgJ,CAAAA,CAAAA,CAAmBhJ,CAAK,CAAA,CACnB,8CAEF,CAAA,CAAA,CAEX,CAEMgK,CAAAA,EAAAA,CAEArL,oBACGA,YAAA,CAAA,IAAA,CAAA,CACL,IAAgB,CAAAA,YAAA,CAAA,OAAA,CAAA,OAAO,CAAA,CACvB,KAAOoL,CAAAA,CAAAA,CACP,IAAgB,CAAApL,YAAA,CAAA,OAAA,CAAA,QAAQ,CAAA,CACxB,aAAeoL,CAAAA,CACjB,CAAC,CAAA,CACDJ,CACF,CAEMM,CAAAA,EAAAA,CAEAtL,YACG,CAAA,MAAA,CAAAA,YAAA,CAAA,IAAA,CAAA,CACL,IAAA,CAAQA,YAAQ,CAAA,OAAA,CAAA,OAAO,EACvB,KAAOoL,CAAAA,CAAAA,CACP,IAAQ,CAAApL,YAAA,CAAA,OAAA,CAAQ,KAAK,CAAA,CACrB,aAAeuK,CAAAA,CAAAA,CACf,kBAAqBvK,YAAA,CAAA,MAAA,EACvB,CAAC,CAAA,CACDgL,CACF,CAAA,CAKO,SAASO,CAAAA,CACdlK,CACwD,CAAA,CACxD,OACE,OAAOA,CAAU,EAAA,QAAA,GAChBA,CAAM,CAAA,QAAA,CAAS,IAAI,CAAKA,EAAAA,CAAAA,CAAM,QAAS,CAAA,KAAK,CAC7C,CAAA,EAAA,CAACgJ,CAAmBhJ,CAAAA,CAAK,CAE7B,CARgBkK,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,CAAAlO,CAAAkO,CAAAA,CAAAA,CAAA,uBAUT,CAAA,CAAA,IAAMC,CAA8B,CAAAxL,YAAA,CAAA,MAAA,CAEzC,iBAAoBqB,CAAAA,CAAAA,EAChB,OAAOA,CAAAA,EAAU,QACZ,CAAA,wBAAA,CAELgJ,CAAmBhJ,CAAAA,CAAK,CACnB,CAAA,8CAAA,CAGP,CAACA,CAAAA,CAAM,QAAS,CAAA,IAAI,GACpB,CAACA,CAAAA,CAAM,QAAS,CAAA,KAAK,CACrB,EAAA,CAACA,CAAM,CAAA,QAAA,CAAS,IAAI,CACpB,EAAA,CAACA,CAAM,CAAA,QAAA,CAAS,GAAG,CAAA,CAEZ,sCAEF,CAAA,CAAA,CACR,EAEKoK,EAGF,CAAAzL,YAAA,CAAA,MAAA,CAAAA,YAAK,CAAA,IAAA,CAAA,CACL,IAAQ,CAAAA,YAAA,CAAA,OAAA,CAAQ,WAAW,CAAA,CAC3B,KAAOwL,CAAAA,CAAAA,CACP,IAAQ,CAAAxL,YAAA,CAAA,OAAA,CAAQ,QAAQ,CAAA,CACxB,aAAewL,CAAAA,CACjB,CAAC,CACDR,CAAAA,CACF,CAEMU,CAAAA,EAAAA,CAGF1L,YAAA,CAAA,MAAA,CAAAA,YAAA,CAAA,IAAA,CAAK,CACL,IAAA,CAAgBA,YAAA,CAAA,OAAA,CAAA,WAAW,CAC3B,CAAA,KAAA,CAAOwL,CACP,CAAA,IAAA,CAAgBxL,YAAA,CAAA,OAAA,CAAA,KAAK,EACrB,aAAeuK,CAAAA,CAAAA,CACf,iBAAqB,CAAAvK,YAAA,CAAA,MAAA,EACvB,CAAC,CACDgL,CAAAA,CACF,CAKO,CAAA,SAASW,EACdtK,CAAAA,CAAAA,CACuD,CACvD,OACE,OAAOA,CAAAA,EAAU,UACjBA,CAAM,CAAA,QAAA,CAAS,IAAI,CAAA,EACnB,CAACgJ,CAAAA,CAAmBhJ,CAAK,CAE7B,CARgBsK,CAAAA,CAAAA,EAAAA,CAAAA,IAAAtO,CAAAA,CAAAA,CAAAA,CAAAsO,EAAA,CAAA,sBAAA,CAUHC,CAAAA,IAAAA,EAEX5L,YAAA,CAAA,MAAA,CAAA,gBAAA,CAAmBqB,CACf,EAAA,OAAOA,CAAU,EAAA,QAAA,CACZ,wBAELgJ,CAAAA,CAAAA,CAAmBhJ,CAAK,CAAA,CACnB,8CAGa,CAAA,SAAA,CACH,IAAKA,CAAAA,CAAK,CAItB,CAAA,CAAA,CAAA,CAHE,yDAIV,CAEKwK,CAAAA,EAAAA,CAGF7L,YAAA,CAAA,MAAA,CAAAA,YAAA,CAAA,IAAA,CAAK,CACL,IAAA,CAAQA,YAAQ,CAAA,OAAA,CAAA,UAAU,CAC1B,CAAA,KAAA,CAAO4L,CACP,CAAA,IAAA,CAAQ5L,YAAQ,CAAA,OAAA,CAAA,QAAQ,CACxB,CAAA,aAAA,CAAe4L,CACjB,CAAC,CAAA,CACDZ,CACF,CAAA,CAEMc,EAEA,CAAA9L,YAAA,CAAA,MAAA,CACFA,YAAK,CAAA,IAAA,CAAA,CACL,IAAgB,CAAAA,YAAA,CAAA,OAAA,CAAA,UAAU,CAAA,CAC1B,KAAO4L,CAAAA,CAAAA,CACP,IAAgB,CAAA5L,YAAA,CAAA,OAAA,CAAA,KAAK,CACrB,CAAA,aAAA,CAAeuK,CACf,CAAA,iBAAA,CAA4BvK,YAAA,CAAA,MAAA,EAC9B,CAAC,CAAA,CACDgL,CACF,CAKO,CAAA,SAASe,EACd1K,CAAAA,CAAAA,CACyD,CACzD,OAAA,CACG,OAAOA,CAAAA,EAAU,UAAY,OAAOA,CAAAA,EAAU,QAC/C,GAAA,CAACgJ,CAAmBhJ,CAAAA,CAAK,CAE7B,CAPgB0K,CAAAA,CAAAA,EAAAA,CAAAA,IAAA1O,CAAAA,CAAAA,CAAAA,CAAA0O,EAAA,CAAA,wBAST,CAAA,CAAA,IAAMC,GAA+BhM,YAE1C,CAAA,MAAA,CAAA,mBAAA,CAAsBqB,CAClB,EAAA,OAAOA,CAAU,EAAA,QAAA,EAAY,OAAOA,CAAAA,EAAU,SACzC,kCAELgJ,CAAAA,CAAAA,CAAmBhJ,CAAK,CAAA,CACnB,8CAEF,CAAA,CAAA,CACR,CAEK4K,CAAAA,EAAAA,CAEAjM,oBACGA,YAAA,CAAA,IAAA,CAAA,CACL,IAAQ,CAAAA,YAAA,CAAA,OAAA,CAAQ,YAAY,CAAA,CAC5B,KAAOgM,CAAAA,EAAAA,CACP,IAAgB,CAAAhM,YAAA,CAAA,OAAA,CAAA,QAAQ,CAAA,CACxB,aAAegM,CAAAA,EACjB,CAAC,CAAA,CACDhB,CACF,CAEMkB,CAAAA,EAAAA,CAGFlM,YAAA,CAAA,MAAA,CAAAA,YAAA,CAAA,IAAA,CAAK,CACL,IAAA,CAAgBA,YAAA,CAAA,OAAA,CAAA,YAAY,EAC5B,KAAOgM,CAAAA,EAAAA,CACP,IAAQ,CAAAhM,YAAA,CAAA,OAAA,CAAQ,KAAK,CAAA,CACrB,aAAeuK,CAAAA,CAAAA,CACf,kBAAqBvK,YAAA,CAAA,MAAA,EACvB,CAAC,CAAA,CACDgL,CACF,CAAA,CAEamB,CAAgC,CAAAnM,YAAA,CAAA,MAAA,CAE3C,oBAAuBqB,CAAAA,CAAAA,EAClB,KAAM,CAAA,OAAA,CAAQA,CAAK,CAAA,CAGpBA,CAAM,CAAA,MAAA,GAAW,GAGjB,CAACA,CAAAA,CAAM,KAAO+K,CAAAA,CAAAA,EAAM,OAAOA,CAAAA,EAAM,QAAQ,CAAA,CACpC,qCAIL/K,CAAAA,CAAAA,CAAM,CAAC,CAAA,CAAI,CAAKA,EAAAA,CAAAA,CAAM,CAAC,CAAA,CAAI,GAAKA,CAAM,CAAA,CAAC,CAAI,CAAA,CAAA,EAAKA,CAAM,CAAA,CAAC,CAAI,CAAA,CAAA,CACtD,gEAEF,CAAA,CAAA,CAAA,CAbE,wBAcV,CAAA,CAEKgL,EAEA,CAAArM,YAAA,CAAA,MAAA,CACGA,YAAA,CAAA,IAAA,CAAA,CACL,KAAQA,YAAQ,CAAA,OAAA,CAAA,aAAa,CAC7B,CAAA,KAAA,CAAOmM,CACP,CAAA,IAAA,CAAQnM,YAAQ,CAAA,OAAA,CAAA,QAAQ,EACxB,aAAemM,CAAAA,CACjB,CAAC,CAAA,CACDnB,CACF,CAAA,CAEMsB,EAGF,CAAAtM,YAAA,CAAA,MAAA,CAAAA,kBAAK,CACL,IAAA,CAAgBA,YAAA,CAAA,OAAA,CAAA,aAAa,CAC7B,CAAA,KAAA,CAAOmM,CACP,CAAA,IAAA,CAAQnM,YAAQ,CAAA,OAAA,CAAA,KAAK,CACrB,CAAA,aAAA,CAAeuK,CACf,CAAA,iBAAA,CAAqBvK,YAAA,CAAA,MAAA,EACvB,CAAC,CACDgL,CAAAA,CACF,CAKO,CAAA,SAASuB,EACdlL,CAAAA,CAAAA,CAGA,CACA,OACEmL,cAASnL,CAAAA,CAAK,CACd8J,EAAAA,EAAAA,CAAkB9J,CAAM,CAAA,KAAK,CAC7BkK,EAAAA,CAAAA,CAAsBlK,EAAM,OAAO,CAAA,EACnCkK,CAAsBlK,CAAAA,CAAAA,CAAM,OAAO,CAAA,EACnCkK,CAAsBlK,CAAAA,CAAAA,CAAM,IAAI,CAAA,EAChCkK,CAAsBlK,CAAAA,CAAAA,CAAM,MAAM,CAEtC,CAbgBkL,CAAAA,CAAAA,GAAAA,IAAAlP,CAAAA,CAAAA,CAAAA,CAAAkP,EAAA,CAAA,oBAehB,CAAA,CAAA,IAAME,EAA2B,CAAAzM,YAAA,CAAA,MAAA,CAC/B,eACCqB,CACKkL,EAAAA,EAAAA,CAAmBlL,CAAK,CAAA,CAAU,CAC/B,CAAA,CAAA,CAAA,6BAAA,EAAgC,IAAK,CAAA,SAAA,CAAUA,CAAK,CAAC,CAAA,CAEhE,CAEMqL,CAAAA,EAAAA,CAEA1M,YACG,CAAA,MAAA,CAAAA,YAAA,CAAA,IAAA,CAAA,CACL,IAAA,CAAQA,YAAQ,CAAA,OAAA,CAAA,QAAQ,CACxB,CAAA,KAAA,CAAOyM,EACP,CAAA,IAAA,CAAgBzM,YAAA,CAAA,OAAA,CAAA,QAAQ,EACxB,aAAsB,CAAAA,YAAA,CAAA,IAAA,CAAA,CACpB,KAAA,CAASA,YAAM,CAAA,KAAA,CAAA,CAACoL,CAAuBb,CAAAA,CAAoB,CAAC,CAAA,CAC5D,OAAW,CAAAvK,YAAA,CAAA,KAAA,CAAM,CAACwL,CAAAA,CAA2BjB,CAAoB,CAAC,EAClE,OAAiB,CAAAvK,YAAA,CAAA,KAAA,CAAA,CAACwL,CAAAA,CAA2BjB,CAAoB,CAAC,CAClE,CAAA,IAAA,CAAQvK,YAAM,CAAA,KAAA,CAAA,CAACwL,CAA2BjB,CAAAA,CAAoB,CAAC,CAAA,CAC/D,MAAU,CAAAvK,YAAA,CAAA,KAAA,CAAM,CAACwL,CAA2BjB,CAAAA,CAAoB,CAAC,CAAA,CACjE,KAAe,CAAAvK,YAAA,CAAA,KAAA,CAAA,CAEAA,YAAA,CAAA,QAAA,CAAAA,sBAAS,CAAA,CACtBuK,CACF,CAAC,CACH,CAAC,CACH,CAAC,EACDS,CACF,CAAA,CAEM2B,EAEA,CAAA3M,YAAA,CAAA,MAAA,CACGA,YAAA,CAAA,IAAA,CAAA,CACL,IAAQ,CAAAA,YAAA,CAAA,OAAA,CAAQ,QAAQ,CAAA,CACxB,KAAOyM,CAAAA,EAAAA,CACP,IAAQ,CAAAzM,YAAA,CAAA,OAAA,CAAQ,KAAK,CAAA,CACrB,cAAeuK,CACf,CAAA,iBAAA,CAAqBvK,YAAA,CAAA,MAAA,EACvB,CAAC,CAAA,CACDgL,CACF,CAAA,CAEa4B,EAAgC5M,YAAM,CAAA,KAAA,CAAA,CAC/CA,YAAQ,CAAA,OAAA,CAAA,OAAO,CACP,CAAAA,YAAA,CAAA,OAAA,CAAA,QAAQ,CAAA,CAChBA,qBAAQ,QAAQ,CAAA,CACRA,YAAA,CAAA,OAAA,CAAA,QAAQ,CAChB,CAAAA,YAAA,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAChBA,YAAQ,CAAA,OAAA,CAAA,OAAO,CACP,CAAAA,YAAA,CAAA,OAAA,CAAA,QAAQ,CAAA,CAChBA,YAAQ,CAAA,OAAA,CAAA,OAAO,CACnB,CAAC,CAAA,CAKM,SAAS6M,EAAAA,CACdxL,CAGA,CAAA,CACA,OACEmL,cAAAA,CAASnL,CAAK,CACd+J,EAAAA,CAAAA,CAAsB,EAAG/J,CAAAA,CAAAA,CAAM,KAAK,CAAA,EACpCuL,CAA4B,CAAA,EAAA,CAAGvL,EAAM,KAAK,CAAA,EAC1CmK,CAA0B,CAAA,EAAA,CAAGnK,CAAM,CAAA,KAAK,CAE5C,CAXgBwL,CAAAA,CAAAA,EAAAA,CAAAA,IAAAxP,CAAAA,CAAAA,CAAAA,CAAAwP,EAAA,CAAA,oBAahB,CAAA,CAAA,IAAMC,GAA2B9M,YAC/B,CAAA,MAAA,CAAA,cAAA,CACA6M,EACF,CAAA,CAEME,EAGF,CAAA/M,YAAA,CAAA,MAAA,CAAAA,YAAK,CAAA,IAAA,CAAA,CACL,IAAQ,CAAAA,YAAA,CAAA,OAAA,CAAQ,QAAQ,CAAA,CACxB,KAAO8M,CAAAA,EAAAA,CACP,IAAQ,CAAA9M,YAAA,CAAA,OAAA,CAAQ,QAAQ,CACxB,CAAA,aAAA,CAAiBA,YAAK,CAAA,IAAA,CAAA,CACpB,KAAe,CAAAA,YAAA,CAAA,KAAA,CAAA,CAACoL,CAAAA,CAAuBb,CAAoB,CAAC,CAC5D,CAAA,KAAA,CAAevK,YAAA,CAAA,KAAA,CAAA,CAAC4M,CAA6BrC,CAAAA,CAAoB,CAAC,CAClE,CAAA,KAAA,CAASvK,YAAM,CAAA,KAAA,CAAA,CAACwL,CAA2BjB,CAAAA,CAAoB,CAAC,CAClE,CAAC,CACH,CAAC,CACDS,CAAAA,CACF,CAEMgC,CAAAA,EAAAA,CAEAhN,YACG,CAAA,MAAA,CAAAA,YAAA,CAAA,IAAA,CAAA,CACL,IAAQ,CAAAA,YAAA,CAAA,OAAA,CAAQ,QAAQ,CAAA,CACxB,KAAO8M,CAAAA,EAAAA,CACP,IAAQ,CAAA9M,YAAA,CAAA,OAAA,CAAQ,KAAK,CAAA,CACrB,aAAeuK,CAAAA,CAAAA,CACf,iBAA4B,CAAAvK,YAAA,CAAA,MAAA,EAC9B,CAAC,EACDgL,CACF,CAAA,CAKO,SAASiC,EAAAA,CACd5L,CAGA,CAAA,CACA,OACEmL,cAAAA,CAASnL,CAAK,CACd8K,EAAAA,CAAAA,CAA4B,EAAG9K,CAAAA,CAAAA,CAAM,cAAc,CAAA,EACnDuK,CAAyB,CAAA,EAAA,CAAGvK,EAAM,QAAQ,CAAA,EAC1CuK,CAAyB,CAAA,EAAA,CAAGvK,CAAM,CAAA,KAAK,CAE3C,CAXgB4L,CAAAA,CAAAA,EAAAA,CAAAA,IAAA5P,CAAAA,CAAAA,CAAAA,CAAA4P,EAAA,CAAA,wBAYhB,CAAA,CAAA,IAAMC,GAA+BlN,YACnC,CAAA,MAAA,CAAA,kBAAA,CACAiN,EACF,CAAA,CAEME,EAGF,CAAAnN,YAAA,CAAA,MAAA,CAAAA,YAAK,CAAA,IAAA,CAAA,CACL,KAAgBA,YAAA,CAAA,OAAA,CAAA,YAAY,CAC5B,CAAA,KAAA,CAAOkN,EACP,CAAA,IAAA,CAAQlN,YAAQ,CAAA,OAAA,CAAA,QAAQ,EACxB,aAAiB,CAAAA,YAAA,CAAA,IAAA,CAAK,CACpB,cAAA,CAAwBA,YAAA,CAAA,KAAA,CAAA,CACtBmM,CACA5B,CAAAA,CACF,CAAC,CAAA,CACD,QAAkB,CAAAvK,YAAA,CAAA,KAAA,CAAA,CAAC4L,CAAAA,CAA0BrB,CAAoB,CAAC,EAClE,KAAS,CAAAvK,YAAA,CAAA,KAAA,CAAM,CAAC4L,CAAAA,CAA0BrB,CAAoB,CAAC,CACjE,CAAC,CACH,CAAC,CACDS,CAAAA,CACF,CAEMoC,CAAAA,EAAAA,CAEApN,YACG,CAAA,MAAA,CAAAA,YAAA,CAAA,IAAA,CAAA,CACL,IAAQ,CAAAA,YAAA,CAAA,OAAA,CAAQ,YAAY,CAAA,CAC5B,KAAOkN,CAAAA,EAAAA,CACP,IAAQ,CAAAlN,YAAA,CAAA,OAAA,CAAQ,KAAK,CAAA,CACrB,aAAeuK,CAAAA,CAAAA,CACf,iBAA4B,CAAAvK,YAAA,CAAA,MAAA,EAC9B,CAAC,EACDgL,CACF,CAAA,CAEMqC,EAEA,CAAArN,YAAA,CAAA,MAAA,CACGA,YAAA,CAAA,IAAA,CAAA,CACL,IAAQ,CAAAA,YAAA,CAAA,OAAA,CAAQ,QAAQ,CACxB,CAAA,KAAA,CAAgBA,YAAA,CAAA,MAAA,EAAA,CAChB,IAAQ,CAAAA,YAAA,CAAA,OAAA,CAAQ,QAAQ,CAAA,CACxB,cAAiBA,YAAA,CAAA,MAAA,EACnB,CAAC,CAAA,CACDgL,CACF,CAAA,CAEMsC,EAGF,CAAAtN,YAAA,CAAA,MAAA,CAAAA,YAAK,CAAA,IAAA,CAAA,CACL,IAAQ,CAAAA,YAAA,CAAA,OAAA,CAAQ,QAAQ,CAAA,CACxB,KAAS,CAAAA,YAAA,CAAA,MAAA,GACT,IAAgB,CAAAA,YAAA,CAAA,OAAA,CAAA,KAAK,CAAA,CACrB,aAAeuK,CAAAA,CAAAA,CACf,iBAA4B,CAAAvK,YAAA,CAAA,MAAA,EAC9B,CAAC,CAAA,CACDgL,CACF,CAAA,CAEMuC,EAGF,CAAAvN,YAAA,CAAA,MAAA,CAAAA,YAAK,CAAA,IAAA,CAAA,CACL,KAAgBA,YAAA,CAAA,OAAA,CAAA,aAAa,CAC7B,CAAA,KAAA,CAAO4M,CACP,CAAA,IAAA,CAAgB5M,YAAA,CAAA,OAAA,CAAA,QAAQ,CACxB,CAAA,aAAA,CAAe4M,CACjB,CAAC,CACD5B,CAAAA,CACF,CAEMwC,CAAAA,EAAAA,CAEAxN,oBACGA,YAAA,CAAA,IAAA,CAAA,CACL,IAAQ,CAAAA,YAAA,CAAA,OAAA,CAAQ,aAAa,CAAA,CAC7B,KAAO4M,CAAAA,CAAAA,CACP,KAAgB5M,YAAA,CAAA,OAAA,CAAA,KAAK,CACrB,CAAA,aAAA,CAAeuK,CACf,CAAA,iBAAA,CAAmBqC,CACrB,CAAC,EACD5B,CACF,CAAA,CA0BMyC,EAGF,CAAAzN,YAAA,CAAA,MAAA,CAAAA,YAAK,CAAA,IAAA,CAAA,CACL,IAAQ,CAAAA,YAAA,CAAA,OAAA,CAAQ,QAAQ,CAAA,CACxB,KAAS,CAAAA,YAAA,CAAA,MAAA,EACT,CAAA,IAAA,CAAgBA,YAAA,CAAA,OAAA,CAAA,QAAQ,EACxB,aAAwB,CAAAA,YAAA,CAAA,MAAA,EAC1B,CAAC,CACDgL,CAAAA,CACF,CAEM0C,CAAAA,EAAAA,CAGF1N,YAAA,CAAA,MAAA,CAAAA,YAAA,CAAA,IAAA,CAAK,CACL,IAAA,CAAgBA,YAAA,CAAA,OAAA,CAAA,QAAQ,CACxB,CAAA,KAAA,CAAgBA,qBAChB,CAAA,IAAA,CAAQA,YAAQ,CAAA,OAAA,CAAA,KAAK,CACrB,CAAA,aAAA,CAAeuK,CACf,CAAA,iBAAA,CAA4BvK,YAAA,CAAA,MAAA,EAC9B,CAAC,CAAA,CACDgL,CACF,CAAA,CAEM2C,EAEA,CAAA3N,YAAA,CAAA,MAAA,CACGA,kBAAA,CACL,IAAA,CAAQA,YAAQ,CAAA,OAAA,CAAA,SAAS,CACzB,CAAA,KAAA,CAASA,YAAA,CAAA,OAAA,EAAA,CACT,KAAQA,YAAQ,CAAA,OAAA,CAAA,QAAQ,CACxB,CAAA,aAAA,CAAiBA,YAAA,CAAA,OAAA,EACnB,CAAC,CAAA,CACDgL,CACF,CAEM4C,CAAAA,EAAAA,CAGF5N,YAAA,CAAA,MAAA,CAAAA,YAAA,CAAA,IAAA,CAAK,CACL,IAAA,CAAQA,YAAQ,CAAA,OAAA,CAAA,SAAS,CACzB,CAAA,KAAA,CAASA,YAAA,CAAA,OAAA,EAAA,CACT,IAAgB,CAAAA,YAAA,CAAA,OAAA,CAAA,KAAK,CAAA,CACrB,cAAeuK,CACf,CAAA,iBAAA,CAA4BvK,YAAA,CAAA,MAAA,EAC9B,CAAC,CAAA,CACDgL,CACF,CAAA,CAQ+B3N,CAAAA,CAACyD,CAA6C,EAAA,CAC3E,GAAI,CAAC0L,cAAS1L,CAAAA,CAAI,EAChB,MAAM,IAAI,KACR,CAAA,CAAA,yCAAA,EAA4C,IAAK,CAAA,SAAA,CAAUA,CAAI,CAAC,CAClE,CAAA,CAAA,CAEF,GAAI,CAAC+M,cAAS,CAAA,MAAA,CAAQ/M,CAAI,CAAA,CACxB,MAAM,IAAI,KAAA,CACR,CAAsD,mDAAA,EAAA,IAAA,CAAK,SACzDA,CAAAA,CACF,CAAC,CAAA,CACH,EAEF,GAAI,OAAOA,CAAK,CAAA,IAAA,EAAS,QACvB,CAAA,MAAM,IAAI,KAAA,CACR,2DAA2D,IAAK,CAAA,SAAA,CAC9DA,CACF,CAAC,CACH,CAAA,CAAA,CAEF,IAAMsH,CAAAA,CAAOtH,CAAK,CAAA,IAAA,CACZgN,CAAOhN,CAAAA,CAAAA,CAAK,IAClB,CAAA,GAAI,CACF,OAAQsH,GACN,IAAK,SACC0F,CAAAA,CAAAA,GAAS,KACXF,CAAAA,EAAAA,CAA0B,MAAO9M,CAAAA,CAAI,CAErC6M,CAAAA,EAAAA,CAA6B,MAAO7M,CAAAA,CAAI,CAE1C,CAAA,OACF,IAAK,QAAA,CACCgN,IAAS,KACXd,CAAAA,EAAAA,CAAyB,MAAOlM,CAAAA,CAAI,CAEpCiM,CAAAA,EAAAA,CAA4B,MAAOjM,CAAAA,CAAI,CAEzC,CAAA,OACF,IAAK,OAAA,CACCgN,CAAS,GAAA,KAAA,CACXxC,EAAwB,CAAA,MAAA,CAAOxK,CAAI,CAEnCuK,CAAAA,EAAAA,CAA2B,MAAOvK,CAAAA,CAAI,CAExC,CAAA,OACF,IAAK,aAAA,CACCgN,IAAS,KACXxB,CAAAA,EAAAA,CAA8B,MAAOxL,CAAAA,CAAI,CAEzCuL,CAAAA,EAAAA,CAAiC,MAAOvL,CAAAA,CAAI,EAE9C,OACF,IAAK,WACCgN,CAAAA,CAAAA,GAAS,KACXpC,CAAAA,EAAAA,CAA4B,MAAO5K,CAAAA,CAAI,CAEvC2K,CAAAA,EAAAA,CAA+B,MAAO3K,CAAAA,CAAI,CAE5C,CAAA,OACF,IAAK,UAAA,CACCgN,IAAS,KACXhC,CAAAA,EAAAA,CAA2B,MAAOhL,CAAAA,CAAI,CAEtC+K,CAAAA,EAAAA,CAA8B,MAAO/K,CAAAA,CAAI,EAE3C,OACF,IAAK,YACCgN,CAAAA,CAAAA,GAAS,KACX5B,CAAAA,EAAAA,CAA6B,MAAOpL,CAAAA,CAAI,EAExCmL,EAAgC,CAAA,MAAA,CAAOnL,CAAI,CAAA,CAE7C,OACF,IAAK,QACCgN,CAAAA,CAAAA,GAAS,KACXJ,CAAAA,EAAAA,CAAyB,MAAO5M,CAAAA,CAAI,CAEpC2M,CAAAA,EAAAA,CAA4B,MAAO3M,CAAAA,CAAI,EAEzC,OACF,IAAK,QACCgN,CAAAA,CAAAA,GAAS,KACXnB,CAAAA,EAAAA,CAAyB,MAAO7L,CAAAA,CAAI,EAEpC4L,EAA4B,CAAA,MAAA,CAAO5L,CAAI,CAAA,CAEzC,OACF,IAAK,QACCgN,CAAAA,CAAAA,GAAS,MACXR,EAAyB,CAAA,MAAA,CAAOxM,CAAI,CAAA,CAEpCuM,EAA4B,CAAA,MAAA,CAAOvM,CAAI,CAAA,CAEzC,OACF,IAAK,aACCgN,CAAAA,CAAAA,GAAS,KACXN,CAAAA,EAAAA,CAA8B,MAAO1M,CAAAA,CAAI,EAEzCyM,EAAiC,CAAA,MAAA,CAAOzM,CAAI,CAAA,CAE9C,OAQF,IAAK,YACCgN,CAAAA,CAAAA,GAAS,KACXV,CAAAA,EAAAA,CAA6B,MAAOtM,CAAAA,CAAI,CAExCqM,CAAAA,EAAAA,CAAgC,MAAOrM,CAAAA,CAAI,EAE7C,OACF,QAEE,MAAM,IAAI,KAAM,CAAA,CAAA,yBAAA,EAA4BsH,CAAI,CAAA,CAAE,CAEtD,CACF,CAASpH,MAAAA,CAAAA,CAAO,CACd,MAAMA,CAAmB,YAAAhB,YAAA,CAAA,WAAA,CACnB,IAAI,KACR,CAAA,CAAA,6BAAA,EAAgCoI,CAAI,CAAA,GAAA,EAClCpH,CAAM,CAAA,OACR,CAA0B,uBAAA,EAAA,IAAA,CAAK,UAAUF,CAAI,CAAC,CAChD,CAAA,CAAA,CAAA,CAL6CE,CAM/C,CACF,CAhI+B,CAAA,iBCv4B/B,EA0CA+J,gBAAqD,CAAA,CACnD,CACE,IAAA,CAAM,WACN,CAAA,IAAA,CAAM,QACN,CAAA,KAAA,CAAO,KACT,CAAA,CACA,CACE,IAAA,CAAM,WACN,CAAA,IAAA,CAAM,KACN,CAAA,iBAAA,CAAmB,KACrB,CACF,CAAC,CA8BDA,CAAAA,gBAAAA,CAAmD,CACjD,CACE,IAAM,CAAA,QAAA,CACN,IAAM,CAAA,KAAA,CACN,iBAAmB,CAAA,KACrB,CACA,CAAA,CACE,IAAM,CAAA,QAAA,CACN,KAAM,QACN,CAAA,KAAA,CAAO,CACL,KAAA,CAAO,CACL,IAAA,CAAM,QACN,CAAA,IAAA,CAAM,OACN,CAAA,KAAA,CAAO,KACT,CAAA,CACA,KAAO,CAAA,CACL,IAAM,CAAA,KAAA,CACN,KAAM,aACN,CAAA,iBAAA,CAAmB,EACrB,CAAA,CACA,KAAO,CAAA,CACL,IAAM,CAAA,QAAA,CACN,KAAM,WACN,CAAA,KAAA,CAAO,KACT,CACF,CACF,CACF,CAAC,CAAA,CAEDA,iBAAuD,CACrD,CACE,IAAM,CAAA,YAAA,CACN,IAAM,CAAA,KAAA,CACN,iBAAmB,CAAA,KACrB,CACA,CAAA,CACE,IAAM,CAAA,YAAA,CACN,IAAM,CAAA,QAAA,CACN,KAAO,CAAA,CACL,MAAO,CACL,IAAA,CAAM,QACN,CAAA,IAAA,CAAM,UACN,CAAA,KAAA,CAAO,KACT,CAAA,CACA,QAAU,CAAA,CACR,IAAM,CAAA,KAAA,CACN,IAAM,CAAA,UAAA,CACN,iBAAmB,CAAA,gBACrB,EACA,cAAgB,CAAA,CACd,IAAM,CAAA,QAAA,CACN,IAAM,CAAA,aAAA,CACN,KAAO,CAAA,CAAC,EAAK,CAAA,CAAA,CAAK,EAAK,CAAA,CAAC,CAC1B,CACF,CACF,CACF,CAAC,CAkBM,CAAA,SAASgD,EACdC,CAAAA,CAAAA,CACgD,CAChD,OAAOlD,EAAoBkD,CAAAA,CAAAA,EAAmB,IAAI,CACpD,CAJgBD,CAAAA,CAAAA,EAAAA,CAAAA,IAAA1Q,CAAAA,CAAAA,CAAAA,CAAA0Q,EAAA,CAAA,6BAKT,EAAA,SAASE,EAAAA,CACdD,CACiD,CAAA,CACjD,OAAOnD,EAAAA,CAAqBmD,CAAmB,EAAA,IAAI,CACrD,CAJgBC,CAAAA,CAAAA,EAAAA,CAAAA,IAAA5Q,CAAAA,CAAAA,CAAAA,CAAA4Q,EAAA,CAAA,8BAMhBlD,EAAAA,gBAAgC,CAAA,CAC9B,CACE,IAAA,CAAM,WACN,CAAA,IAAA,CAAM,QACN,CAAA,KAAA,CAAO,KACT,CACA,CAAA,CACE,IAAM,CAAA,YAAA,CACN,IAAM,CAAA,KAAA,CACN,iBAAmB,CAAA,KACrB,EACA,CACE,IAAA,CAAM,YACN,CAAA,IAAA,CAAM,KAEN,CAAA,KAAA,CAAO,KACT,CAAA,CACA,CACE,IAAA,CAAM,KACN,CAAA,IAAA,CAAM,UACN,CAAA,iBAAA,CAAmB,gBACrB,CAAA,CACA,CACE,IAAM,CAAA,QAAA,CACN,IAAM,CAAA,aAAA,CACN,KAAO,CAAA,CAAC,EAAK,CAAA,CAAA,CAAK,GAAK,CAAC,CAC1B,CACA,CAAA,CACE,IAAM,CAAA,YAAA,CACN,IAAM,CAAA,QAAA,CACN,MAAO,CACL,KAAA,CAAO,CACL,IAAA,CAAM,QACN,CAAA,IAAA,CAAM,UACN,CAAA,KAAA,CAAO,KACT,CAAA,CACA,QAAU,CAAA,CACR,IAAM,CAAA,KAAA,CACN,IAAM,CAAA,UAAA,CACN,kBAAmB,gBACrB,CAAA,CACA,cAAgB,CAAA,CACd,IAAM,CAAA,QAAA,CACN,IAAM,CAAA,aAAA,CACN,KAAO,CAAA,CAAC,EAAK,CAAA,CAAA,CAAK,EAAK,CAAA,CAAC,CAC1B,CACF,CACF,CACF,CAAC,CCtMM,CAAA,SAASmD,EACdC,CAAAA,CAAAA,CACgD,CAChD,OAAO3B,cAAS2B,CAAAA,CAAa,CAAKN,EAAAA,cAAAA,CAAS,gBAAkBM,CAAAA,CAAa,CAC5E,CAJgBD,EAAAA,EAAAA,CAAAA,IAAAA,CAAAA,CAAA7Q,CAAA6Q,CAAAA,EAAAA,CAAA,sBAuChBnD,CAAAA,CAAAA,gBAA4B,CAAA,CAC1B,OACA,CACA,CAAA,CAAA,CAAC,EAAI,CAAA,CAAA,CAAG,CAAG,CAAA,CAAC,CACZ,CAAA,CACE,MAAO,MACP,CAAA,KAAA,CAAO,OACP,CAAA,KAAA,CAAO,KACT,CAAA,CACA,CACE,KAAA,CAAO,CACP,CAAA,CAAA,KAAA,CAAO,MACP,CAAA,OAAA,CAAS,KACT,CAAA,OAAA,CAAS,kBACT,CAAA,MAAA,CAAQ,MACR,IAAM,CAAA,KACR,CACA,CAAA,CACE,cAAgB,CAAA,eAAA,CAChB,QAAU,CAAA,0BAAA,CACV,KAAO,CAAA,KAAA,CACP,KAAO,CAAA,MACT,CACF,CAAC,CAcM,CAAA,SAASqD,GAAWC,CAA+C,CAAA,CACxE,OAAI,CAAA,EAAA7B,cAAAA,CAAS6B,CAAW,CAAA,EAAKR,cAAS,CAAA,QAAA,CAAUQ,CAAW,CAAA,CAE7D,CAHgBD,CAAAA,CAAAA,EAAAA,CAAAA,IAAAA,CAAAA,CAAA/Q,EAAA+Q,EAAA,CAAA,YAAA,CAaT,CAAA,SAASE,EACdD,CAAAA,CAAAA,CAC8B,CAE9B,OACE7B,eAAS6B,CAAW,CAAA,EACpB,CAACH,EAAAA,CAAqBG,CAAW,CAAA,EACjC,CAACR,cAAAA,CAAS,SAAUQ,CAAW,CAAA,EAE/B,CAACR,cAAAA,CAAS,gBAAkBQ,CAAAA,CAAW,CAE3C,CAXgBC,CAAAA,CAAAA,EAAAA,CAAAA,IAAAjR,CAAAA,CAAAA,CAAAA,CAAAiR,EAAA,CAAA,cAcT,CAAA,CAAA,SAASC,GAAkBF,CAAsB,CAAA,CAEtD,GAAIC,EAAAA,CAAaD,CAAW,CAAA,CAAG,CAE7B,IAAMG,CACJH,CAAAA,CAAAA,CAAY,WAAY,CAAA,gBAAgB,CAAE,CAAA,KAAA,CAAM,cAClD,CAAA,GACER,eAAS,MAAQW,CAAAA,CAAoB,CACrCX,EAAAA,cAAAA,CAAS,aAAeW,CAAAA,CAAoB,CAE5C,CAAA,OAAO,CAEX,CAAA,CAEA,OAAO,CAAA,CACT,CAfgBD,CAAAA,CAAAA,EAAAA,CAAAA,IAAAA,CAAAA,CAAAlR,EAAAkR,EAAA,CAAA,mBAAA,CCvHT,CAAA,SAASE,EACdC,CAAAA,CAAAA,CACiC,CACjC,IAAMtG,EAAO,OAAOsG,CAAAA,CACpB,GAAItG,CAAAA,GAAS,QAAYA,EAAAA,CAAAA,GAAS,QAAYA,EAAAA,CAAAA,GAAS,UACrD,OAAOA,CAAAA,CAET,MAAM,IAAI,KACR,CAAA,CAAA,0BAAA,EAA6B,IAAK,CAAA,SAAA,CAChCA,CACF,CAAC,CAAqB,kBAAA,EAAA,IAAA,CAAK,SAAUsG,CAAAA,CAAU,CAAC,CAAA,CAClD,CACF,CAZgBD,CAAAA,CAAAA,EAAAA,CAAAA,IAAAA,CAAAA,CAAApR,CAAAoR,CAAAA,EAAAA,CAAA,mBAAA,CAAA,CAoBiBpR,CAAAA,CAC/BgE,CAEAA,EAAAA,CAAAA,CAAM,QAAS,CAAA,IAAI,CACnBA,EAAAA,CAAAA,CAAM,SAAS,KAAK,CAAA,EACpBA,CAAM,CAAA,QAAA,CAAS,IAAI,CAAA,EACnBA,CAAM,CAAA,QAAA,CAAS,GAAG,CAAA,CANa,mBAAA,EAY1B,SAASsN,EAAAA,CAAyBC,CAGvC,CAAA,CACA,GAAM,CAAE,KAAA,CAAAvN,CAAO,CAAA,IAAA,CAAAwN,CAAK,CAAA,CAAIC,yBAAoBF,CAAAA,CAAY,EACxD,GAAI,CAACC,CACH,CAAA,OAAO,CAAE,KAAA,CAAAxN,CAAM,CAAA,CAEjB,GAAIwN,CAAS,GAAA,IAAA,EAAQA,CAAS,GAAA,KAAA,EAASA,CAAS,GAAA,IAAA,EAAQA,CAAS,GAAA,GAAA,CAC/D,MAAM,IAAI,KAAM,CAAA,CAAA,cAAA,EAAiBA,CAAI,CAAA,aAAA,EAAgBxN,CAAK,CAAA,CAAE,EAG9D,OAAO,CAAE,KAAAA,CAAAA,CAAAA,CAAO,IAAAwN,CAAAA,CAAK,CACvB,CAbgBF,CAAAA,CAAAA,EAAAA,CAAAA,IAAAtR,CAAAA,CAAAA,CAAAA,CAAAsR,EAAA,CAAA,0BAAA,CCmCHI,CAAgB1R,CAC3B2R,CAAAA,CAAAA,EAEAxC,cAASwC,CAAAA,CAAW,CAAKA,EAAAA,CAAAA,CAAY,IAAS,GAAA,MAAA,CAHnB,eAAA,EAMtB,SAASC,EAAAA,CACdD,CACoC,CAAA,CACpC,OAAOxC,cAAAA,CAASwC,CAAW,CAAKA,EAAAA,CAAAA,CAAY,IAAS,GAAA,eACvD,CAJgBC,CAAAA,CAAAA,EAAAA,CAAAA,IAAAA,CAAAA,CAAA5R,EAAA4R,EAAA,CAAA,uBAAA,CAOT,CAAA,SAASC,EACdF,CAAAA,CAAAA,CACyC,CACzC,OAAOxC,eAASwC,CAAW,CAAA,EAAKA,CAAY,CAAA,IAAA,GAAS,oBACvD,CAJgBE,CAAAA,CAAAA,EAAAA,CAAAA,IAAA7R,CAAAA,CAAAA,CAAAA,CAAA6R,EAAA,CAAA,4BAAA,CA+IJC,CAAAA,IAAAA,EAAAA,CAAAA,CAAAA,CAAAA,GACVA,EAAA,QAAW,CAAA,UAAA,CACXA,CAAA,CAAA,SAAA,CAAY,WAFFA,CAAAA,CAAAA,CAAAA,EAAAC,EAAA,EAAA,EAAA,CAAA,CAKL,SAASC,EAAAA,CAAWC,CAAiD,CAAA,CAC1E,OAAOA,CAAAA,EAAM,OAAS,MACxB,CAFgBD,CAAAA,CAAAA,EAAAA,CAAAA,IAAAhS,CAAAA,CAAAA,CAAAA,CAAAgS,EAAA,CAAA,YAIT,CAAA,CAAA,SAASE,EAAeD,CAAAA,CAAAA,CAAkC,CAC/D,OAAOA,CAAM,EAAA,IAAA,GAAS,UACxB,CAFgBC,CAAAA,CAAAA,EAAAA,CAAAA,IAAAA,CAAAA,CAAAlS,CAAAkS,CAAAA,EAAAA,CAAA,gBAAA,CAAA,CCxOJC,IAAAA,EAAAA,CAAAA,CAAAA,CAAAA,GACVA,CAAA,CAAA,IAAA,CAAO,MACPA,CAAAA,CAAAA,CAAA,KAAQ,CAAA,OAAA,CACRA,EAAA,MAAS,CAAA,QAAA,CACTA,CAAA,CAAA,KAAA,CAAQ,OACRA,CAAAA,CAAAA,CAAA,IAAO,CAAA,MAAA,CALGA,CAAAC,CAAAA,EAAAA,EAAAA,EAAA,EAAA,CCgFL,CAAA,SAASC,EACd5O,CAAAA,CAAAA,CAC+B,CAW/B,OAVI,CAAC0L,cAAS1L,CAAAA,CAAI,CAUd,EAAA,CARqD,CACvD,gBAAA,CACA,kBACA,CAAA,WAAA,CACA,eACA,CAAA,WAAA,CACA,IACF,CAAA,CACkB,KAAOkB,CAAAA,CAAAA,EAAQ6L,eAAS7L,CAAKlB,CAAAA,CAAI,CAAC,CAAA,CAAU,CACzD,CAAA,CAAA,CAAA+M,cAAS,CAAA,WAAA,CAAa/M,CAAI,CAEjC,CAhBgB4O,CAAAA,CAAAA,EAAAA,CAAAA,IAAAA,CAAAA,CAAArS,CAAAqS,CAAAA,EAAAA,CAAA,yBAkBT,CAAA,CAAoCzH,QAAAA,CACzC,uBACAyH,CAAAA,EACF,EAEO,SAASC,GACd7O,CACgC,CAAA,CAChC,OAAK0L,cAAAA,CAAS1L,CAAI,CAAA,CAEwC,CACxD,gBAAA,CACA,mBACA,WACA,CAAA,eAAA,CACA,WACA,CAAA,WAAA,CACA,IACF,CAAA,CACoB,KAAOkB,CAAAA,CAAAA,EAAQ6L,cAAS7L,CAAAA,CAAAA,CAAKlB,CAAI,CAAC,CAX1B,CAAA,CAAA,CAY9B,CAfgB6O,CAAAA,CAAAA,GAAAA,IAAAtS,CAAAA,CAAAA,CAAAA,CAAAsS,EAAA,CAAA,0BAAA,CAiBHC,CAA+B3H,QAAAA,CAC1C,yBACA0H,EACF,CAAA,CAEyEvH,MAAAA,CAAK,CAC5E,UAAA,CAAYmB,SAAQ,EAAA,CACpB,QAASL,OACPd,CAAAA,MAAAA,CAAK,CACH,EAAA,CAAI5J,QAAO,EAAA,CACX,UAAY+K,CAAAA,SAAAA,EACZ,CAAA,gBAAA,CAAkBP,UAASxK,CAAAA,QAAAA,EAAQ,CAAA,CACnC,OAASwK,CAAAA,UAAAA,CAASxK,UAAQ,CAC5B,CAAC,CACH,CACA,CAAA,IAAA,CAAMwK,UACJZ,CAAAA,MAAAA,CAAK,CACH,OAASY,CAAAA,UAAAA,CAASxK,QAAAA,EAAQ,CAC1B,CAAA,gBAAA,CAAkB+K,SAAAA,EAAAA,CAClB,oBAAqBP,UAASxK,CAAAA,QAAAA,EAAQ,CAAA,CACtC,UAAYwK,CAAAA,UAAAA,CAASP,QAAAA,EAAQ,CAC7B,CAAA,cAAA,CAAgBO,UAASP,CAAAA,QAAAA,EAAQ,CAAA,CACjC,KAAOO,CAAAA,UAAAA,CAASO,WAAS,CAAA,CACzB,QAAUP,CAAAA,UAAAA,CAASxK,QAAAA,EAAQ,CAC3B,CAAA,UAAA,CAAY4J,MAAK,CAAA,CACf,GAAK5J,CAAAA,QAAAA,EACP,CAAC,CACH,CAAC,CACH,CACF,CAAC,CAEYqR,CCvGN,SAASC,EAAAA,CACdhP,CACiC,CAAA,CAUjC,OATI,CAAC0L,cAAS1L,CAAAA,CAAI,CASd,EAAA,CARuD,CACzD,gBACA,CAAA,kBAAA,CACA,WACA,CAAA,eAAA,CACA,eACA,CAAA,aACF,CACkB,CAAA,KAAA,CAAOkB,GAAQ6L,cAAS7L,CAAAA,CAAAA,CAAKlB,CAAI,CAAC,CAAU,CAAA,CAAA,CAAA,CACzD,CAAA+M,cAAAA,CAAS,YAAa/M,CAAI,CAEjC,CAfgBgP,CAAAA,CAAAA,EAAAA,CAAAA,IAAAA,CAAAA,CAAAzS,CAAAyS,CAAAA,EAAAA,CAAA,2BAiBT,CAAA,CAAsC7H,QAC3C,CAAA,uBAAA,CACA6H,EACF,EAEO,SAASC,EACdjP,CAAAA,CAAAA,CACkC,CAClC,OAAK0L,cAAS1L,CAAAA,CAAI,CAC0C,CAAA,CAC1D,gBACA,CAAA,kBAAA,CACA,WACA,CAAA,eAAA,CACA,eACA,CAAA,aAAA,CACA,WACF,CAAA,CACoB,MAAOkB,CAAQ6L,EAAAA,cAAAA,CAAS7L,CAAKlB,CAAAA,CAAI,CAAC,CAAA,CAV1B,CAW9B,CAAA,CAdgBiP,CAAAA,CAAAA,EAAAA,CAAAA,IAAA1S,CAAAA,CAAAA,CAAAA,CAAA0S,EAAA,CAAA,4BAAA,CAgBHC,CAAiC/H,QAC5C,CAAA,wBAAA,CACA8H,EACF,CAAA,CAGE3H,MAAAA,CAAK,CACH,UAAA,CAAYmB,WACZ,CAAA,OAAA,CAASL,OACPd,CAAAA,MAAAA,CAAK,CACH,EAAA,CAAI5J,QAAO,EAAA,CACX,WAAY+K,SAAAA,EAAAA,CACZ,gBAAkBP,CAAAA,UAAAA,CAASxK,QAAAA,EAAQ,CACnC,CAAA,OAAA,CAASwK,UAASxK,CAAAA,QAAAA,EAAQ,CAC5B,CAAC,CACH,CACA,CAAA,IAAA,CAAMwK,WACJZ,MAAK,CAAA,CACH,OAASY,CAAAA,UAAAA,CAASxK,QAAAA,EAAQ,CAC1B,CAAA,gBAAA,CAAkB+K,SAAQ,EAAA,CAC1B,mBAAqBP,CAAAA,UAAAA,CAASxK,QAAO,EAAC,CACtC,CAAA,UAAA,CAAYwK,WAASP,QAAAA,EAAQ,CAC7B,CAAA,cAAA,CAAgBO,UAASP,CAAAA,QAAAA,EAAQ,CAAA,CACjC,KAAOO,CAAAA,UAAAA,CAASO,SAAQ,EAAC,CACzB,CAAA,QAAA,CAAUP,UAASxK,CAAAA,QAAAA,EAAQ,CAC3B,CAAA,UAAA,CAAY4J,MAAK,CAAA,CACf,GAAK5J,CAAAA,QAAAA,EACP,CAAC,CACH,CAAC,CACH,CACF,CAAC,CAEUyR,EC9G2C,CACtD,OAAA,CAAS,OACT,CAAA,aAAA,CAAe5S,CAAC6S,CAAAA,CAAAA,EAEP,CAFM,CAAA,CAAA,eAAA,CAKf,CAAA,OAAA,CAAS7S,CAAC6S,CAAAA,CAAAA,EAAkB,CAC1B,GAAI,CAAC9O,CAAAA,CAAQ8O,CAAa,CACxB,CAAA,MAAM,IAAI,KAAA,CACR,uEACF,CAAA,CAEF,MAAO,CAAA,MAAA,CAAOA,EAAc,aAAc,CAAA,QAAQ,CAAE,CAAA,OAAA,CAEhDC,CAKG,EAAA,CACH,OAAOA,CAAAA,CAAQ,SACjB,CACF,CAAA,CAEA,MAAO,CAAA,MAAA,CAAOD,CAAc,CAAA,EAAA,CAAG,KAAM,CAAA,IAAI,CAAE,CAAA,OAAA,CAASZ,CAAS,EAAA,CACvDA,CAAK,CAAA,IAAA,GAAS,MAElB,GAAA,MAAA,CAAO,QAAQA,CAAK,CAAA,IAAA,CAAK,KAAS,EAAA,EAAE,CAAA,CAAE,OAAQ,CAAA,CAAC,CAACc,CAAUC,CAAAA,CAAQ,CAAM,GAAA,CACtEf,CAAK,CAAA,IAAA,CAAK,KAAMc,CAAAA,CAAQ,EAAIC,CAAS,CAAA,GAAA,CAClCrB,CAEK,EAAA,OAAOA,CAAgB,EAAA,QAAA,CAClB,CACL,IAAA,CAAM,MACN,CAAA,IAAA,CAAMA,CACR,CAAA,EAIAA,CAAY,CAAA,IAAA,GAAS,oBAErBA,EAAAA,CAAAA,CAAY,OAAS,MAKvBA,GAAAA,CAAAA,CAAY,IAAO,CAAA,eAAA,CAAA,CACZA,CAEX,CAAA,EACF,CAAC,CAAA,CAEG,EAAAM,CAAAA,CAAK,SAAaA,EAAAA,CAAAA,CAAK,UAI1B,CAAA,EAAA,CAAA,IAAM,CACL,IAAA,GAAW,CAAE,EAAIgB,CAAAA,CAAAA,CAAK,SAAAC,CAAAA,CAAAA,CAAY,EAAG,CAAK,GAAA,MAAA,CAAO,MAC/CL,CAAAA,CAAAA,CAAc,aAAc,CAAA,QAC9B,CACE,CAAA,IAAA,GAAW,CAAE,EAAA,CAAIM,EAAK,OAAAC,CAAAA,CAAAA,CAAU,EAAG,CAAKF,GAAAA,CAAAA,CACtC,GAAIE,CAAAA,CAAQ,SAASnB,CAAK,CAAA,EAAE,CAAG,CAAA,CAC7BA,CAAK,CAAA,SAAA,CAAYgB,CACjBhB,CAAAA,CAAAA,CAAK,WAAakB,CAElB,CAAA,MACF,CAGN,CAAA,GACF,EAAA,CAAC,EACH,CAAA,CAjES,SAkEX,CAAA,GC3EYE,IAAAA,EAAAA,CAAAA,CAAAA,CAAAA,GACVA,CAAA,CAAA,MAAA,CAAW,SACXA,CAAA,CAAA,OAAA,CAAY,SACZA,CAAAA,CAAAA,CAAA,MAAW,CAAA,QAAA,CACXA,CAAA,CAAA,MAAA,CAAW,QACXA,CAAAA,CAAAA,CAAA,OAAY,CAAA,SAAA,CACZA,CAAA,CAAA,QAAA,CAAa,UACbA,CAAAA,CAAAA,CAAA,iBAAqB,kBACrBA,CAAAA,CAAAA,CAAA,KAAU,CAAA,OAAA,CACVA,CAAA,CAAA,cAAA,CAAmB,gBACnBA,CAAAA,CAAAA,CAAA,cAAmB,CAAA,gBAAA,CACnBA,CAAA,CAAA,cAAA,CAAmB,gBACnBA,CAAAA,CAAAA,CAAA,OAAY,CAAA,SAAA,CAZFA,IAAAC,EAAA,EAAA,EAAA,CAAA,CAmGgBtT,CAAAA,CAACgF,CAC3B,EAAA,MAAA,GAAUA,GAAQA,CAAK,CAAA,IAAA,GAAS,QAAY,EAAA,EAAE,MAAUA,GAAAA,CAAAA,CAAAA,CAD9B,cAEfuO,CAAAA,CAAevT,CAACgF,CAAAA,CAAAA,EAC3B,MAAUA,GAAAA,CAAAA,EAAQA,CAAK,CAAA,IAAA,GAAS,QADN,CAAA,cAAA,CAEfwO,CAAgBxT,CAACgF,CAAAA,CAAAA,EAC5B,MAAUA,GAAAA,CAAAA,EAAQA,CAAK,CAAA,IAAA,GAAS,UADL,eAAA,CAAA,CAEAhF,CAAAA,CAACgF,CAC5B,EAAA,MAAA,GAAUA,CADiB,CAAA,eAAA,CAEhByO,CAAiBzT,CAACgF,CAAAA,CAAAA,EAC7B,QAAYA,GAAAA,CAAAA,EAAQA,CAAM,EAAA,MAAA,GAAW,WADT,gBAAA,CAAA,CAEQhF,CAAAA,CACpCgF,CACiC,EAAA,EAAE,QAAYA,GAAAA,CAAAA,CAAAA,EAAS,QAAYA,GAAAA,CAAAA,CAFhC,wBAGzB0O,CAAAA,CAAuB1T,CAAAA,CAClCgF,CAEA,EAAA,MAAA,GAAUA,GACVA,CAAK,CAAA,IAAA,GAAS,OACd,EAAA,OAAA,GAAWA,CACXA,EAAAA,CAAAA,CAAK,KAAM,CAAA,IAAA,GAAS,SANc,sBAOvB2O,CAAAA,CAAe3T,CAAAA,CAACgF,CAC3B,EAAA,MAAA,GAAUA,CACVA,EAAAA,CAAAA,CAAK,OAAS,QACd,EAAA,YAAA,GAAgBA,CAChB,EAAA,MAAA,CAAO,IAAKA,CAAAA,CAAAA,CAAK,UAAU,CAAA,CAAE,MAAS,CAAA,CAAA,CAJZ,cAAA,CAAA,CAKQhF,CAAAA,CAClCgF,CAEA,EAAA,MAAA,GAAUA,GACVA,CAAK,CAAA,IAAA,GAAS,OACd,EAAA,OAAA,GAAWA,CACXA,EAAAA,CAAAA,CAAK,KAAM,CAAA,IAAA,GAAS,SANc,sBAAA,CAAA,CAOAhF,CAAAA,CAClCgF,CAEA,EAAA,MAAA,GAAUA,CACVA,EAAAA,CAAAA,CAAK,OAAS,OACd,EAAA,OAAA,GAAWA,CACXA,EAAAA,CAAAA,CAAK,KAAM,CAAA,IAAA,GAAS,QANc,CAAA,sBAAA,CChI9B4O,KAAAA,EAAAA,CAAuBjR,YAAO,CAAA,MAAA,CAAA,CAClC,EAAY,CAAAA,YAAA,CAAA,KAAA,CAAA,CAAWA,YAAA,CAAA,OAAA,CAAA,SAAS,CAAa,CAAAA,YAAA,CAAA,OAAA,CAAA,QAAQ,CAAA,CAAKA,YAAQ,CAAA,OAAA,CAAA,KAAK,CAAC,CAAC,EACzE,IAAQ,CAAAA,YAAA,CAAA,KAAA,CAAcA,YAAA,CAAA,KAAA,CAAA,CAAUA,YAAA,CAAA,MAAA,EAAA,CAAYA,YAAA,CAAA,MAAA,EAAC,CAAC,CAAC,CAAA,CAC/C,KAAS,CAAAA,YAAA,CAAA,QAAA,CAAeA,YAAA,CAAA,GAAA,EAAC,CAC3B,CAAC,CACKkR,CAAAA,EAAAA,CAAiCD,EAE1BE,CAAU9T,CAACgK,CAAAA,CAAAA,EACtB6J,EAAY,CAAA,EAAA,CAAG7J,CAAK,CADC,CAAA,SAAA,CAGjB+J,KAAAA,EAAAA,CAAyBpR,YAAMiR,CAAAA,KAAAA,CAAAA,EAAkB,CACjDI,CAAAA,EAAAA,CAAqCD,EAE9BE,CAAYjU,CAAC8J,CAAAA,CAAAA,EACxBkK,EAAc,CAAA,EAAA,CAAGlK,CAAO,CAAA,CADD,WAAA,CAenBoK,KAAAA,EAAAA,CAA+BvR,YAAA,CAAA,IAAA,CAAA,CACnC,OAASoR,CAAAA,EAAAA,CACT,cAAkB,CAAApR,YAAA,CAAA,QAAA,CAASoR,EAAoB,CAAA,CAC/C,KAAS,CAAApR,YAAA,CAAA,QAAA,CAAkBA,YAAA,CAAA,MAAA,CAAA,CAAE,IAAQ,CAAAA,YAAA,CAAA,MAAA,EAAS,CAAC,CAAC,CAChD,CAAA,EAAA,CAAaA,YAAA,CAAA,MAAA,EAAA,CACb,IAAQ,CAAAA,YAAA,CAAA,MAAA,GACR,MAAqB,CAAAA,YAAA,CAAA,QAAA,CAAAA,YAAA,CAAA,MAAA,EAAQ,CAC/B,CAAC,CACKwR,CAAAA,EAAAA,CAAmDD,GAEzBlU,CAAAA,CAACoU,CAC/BD,EAAAA,EAAAA,CAAqB,EAAGC,CAAAA,CAAM,CADA,CAAA,kBAG1BC,CAAAA,KAAAA,EAAAA,CAAuCH,YAAAA,CAAAA,KAAAA,CAAAA,EAAqB,CACrDI,CAAAA,EAAAA,CACXD,EAEWE,CAAoBvU,EAC/BwU,CACgCF,EAAAA,EAAAA,CAAsB,EAAGE,CAAAA,CAAO,CAFjC,CAAA,mBAAA,ECtD1B,IAAKC,EACVA,CAAAA,CAAAA,CAAAA,GAAAA,CAAA,CAAA,KAAA,CAAQ,OADEA,CAAAA,CAAAA,CAAAA,EAAAC,EAAA,EAAA,EAAA,CCFL,CAAA,IAAKC,EACVA,CAAAA,CAAAA,CAAAA,GAAAA,CAAA,CAAA,MAAA,CAAS,QACTA,CAAAA,CAAAA,CAAA,MAAS,CAAA,QAAA,CACTA,CAAA,CAAA,UAAA,CAAa,YACbA,CAAAA,CAAAA,CAAA,SAAY,CAAA,WAAA,CACZA,EAAA,KAAQ,CAAA,OAAA,CALEA,CAAAA,CAAAA,EAAAA,EAAAA,EAAA,EA+BAC,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,IACVA,CAAA,CAAA,WAAA,CAAc,aACdA,CAAAA,CAAAA,CAAA,SAAY,CAAA,WAAA,CACZA,CAAA,CAAA,OAAA,CAAU,UAHAA,CAAAC,CAAAA,EAAAA,EAAAA,EAAA,EAAA,CAMAC,CAAAA,EAAAA,CAAAA,CACVA,CAAAA,GAAAA,CAAAA,CAAA,MAAS,CAAA,QAAA,CACTA,CAAA,CAAA,IAAA,CAAO,MACPA,CAAAA,CAAAA,CAAA,MAAS,CAAA,QAAA,CACTA,EAAA,KAAQ,CAAA,OAAA,CAJEA,CAAAC,CAAAA,EAAAA,EAAAA,EAAA,EAAA,CAOAC,CAAAA,EAAAA,CAAAA,CACVA,CAAAA,GAAAA,CAAAA,CAAA,MAAS,CAAA,QAAA,CACTA,CAAA,CAAA,IAAA,CAAO,MAFGA,CAAAA,CAAAA,CAAAA,EAAAA,IAAA,ECrCL,CAAMC,CAAAA,EAAAA,CAAY,CACvB,KAAA,CAAO,OACP,CAAA,SAAA,CAAW,WACX,CAAA,WAAA,CAAa,aACb,CAAA,MAAA,CAAQ,QACR,CAAA,OAAA,CAAS,SACT,CAAA,MAAA,CAAQ,QACV,CACaC,CAAAA,EAAAA,CAAQ,MAAO,CAAA,MAAA,CAAOD,EAAS,CAAA,C7BQ/BE,IAAAA,EAAAA,CAAahK,QAAMiK,EAAK,CAAA,CACxBC,EAAmCF,CAAAA,EAAAA,CAEnCG,EAAetV,CAAAA,CAAAA,CAACuV,CAAwBA,EAAAA,CAAAA,GAAS,QAAlC,cAEfC,CAAAA,CAAAA,EAAAA,CAAkC,CAAC,OAAA,CAAS,SAAS,CAAA,CAErDC,EAAqBzV,CAAAA,CAAAA,CAACuV,CACjCC,EAAAA,EAAAA,CAAwB,QAASD,CAAAA,CAAI,CADL,CAAA,oBAAA,CAAA,CAGrBG,EAA6B,CAAA,CACxC,GAAGF,EACH,CAAA,QACF,CAEaG,CAAAA,EAAAA,CAAgB3V,CAACuV,CAAAA,CAAAA,EAC5BG,EAAmB,CAAA,QAAA,CAASH,CAAI,CADL,CAAA,eAAA,CAAA,CAGhBK,EAA2B,CAAA,CAAC,GAAGF,EAAAA,CAAoB,aAAa,CAAA,CAEhEG,GAAc7V,CAACuV,CAAAA,CAAAA,EAC1BK,EAAiB,CAAA,QAAA,CAASL,CAAI,CAAA,CADL,aAGdO,CAAAA,CAAAA,EAAAA,CAA8B,CAAC,OAAO,CAEtCC,CAAAA,EAAAA,CAAiB/V,CAACuV,CAAAA,CAAAA,EAC7BO,EAAoB,CAAA,QAAA,CAASP,CAAI,CADL,CAAA,gBAAA,CAAA,CAGjBS,EAA2B,CAAA,CAAC,GAAGJ,EAAAA,CAAkB,QAAQ,CAAA,CAEzDK,GAAcjW,CAACuV,CAAAA,CAAAA,EAC1BS,EAAiB,CAAA,QAAA,CAAST,CAAI,CAAA,CADL,aAGdW,CAAAA,CAAAA,EAAAA,CAAclW,EAACuV,CAC1BF,EAAAA,EAAAA,CAAiB,EAAGE,CAAAA,CAAI,CADC,CAAA,aAAA,CAAA,CAOfY,EAEVA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,CAAA,IAAO,CAAA,MAAA,CACPA,CAAA,CAAA,SAAA,CAAY,WAHFA,CAAAA,CAAAA,CAAAA,EAAAA,EAAAA,EAAA,EAKNC,CAAAA,CAAAA,EAAAA,CAAoBjL,QAAM,MAAO,CAAA,MAAA,CAAOgL,EAAW,CAAC,CAQ7CE,CAAAA,EAAAA,CAA6CnL,QAAO,CAAA,CAC/D,wBAA0BW,CAAAA,OAAAA,CAAMuK,EAAiB,CAAA,CACjD,uBAAyBA,CAAAA,EAAAA,CACzB,kBAAoBzK,CAAAA,UAAAA,CAASxK,UAAQ,CACvC,CAAC,CAAA,CA2BYmV,EAA2CpL,CAAAA,QAAAA,CAAO,CAC7D,MAAA,CAAQ/J,QAAO,EAAA,CACf,YAAc+K,CAAAA,SAAAA,EACd,CAAA,WAAA,CAAaqK,QAAOpB,CAAAA,EAAAA,CAAYtJ,QAAM1K,QAAO,EAAC,CAAC,CACjD,CAAC,CAAA,CA+BYqV,EAAmCzL,CAAAA,MAAAA,CAAK,CACnD,GAAKK,CAAAA,QAAAA,EACL,CAAA,KAAA,CAAOO,UAASxK,CAAAA,QAAAA,EAAQ,CAAA,CACxB,eAAgBwK,UAASb,CAAAA,OAAAA,CAAM,CAAC3J,QAAAA,EAAU+K,CAAAA,SAAAA,EAAS,CAAC,CAAC,CAAA,CACrD,GAAKd,CAAAA,QAAAA,EACL,CAAA,GAAA,CAAKjK,QAAO,EAAA,CACZ,IAAKA,QAAO,EAAA,CACZ,GAAK2J,CAAAA,OAAAA,CAAM,CAAC3J,QAAAA,EAAU0K,CAAAA,OAAAA,CAAM1K,UAAQ,CAAC,CAAC,CACxC,CAAC,CAAA,CAKYsV,EAA0B,CAAA,8BAAA,CAC1BC,GAA4B,wBAQ5BC,CAAAA,EAAAA,CAAmDzL,QAAO,CAAA,CACrE,CAACuL,EAAuB,EAAGJ,EAAAA,CAC3B,CAACK,EAAyB,EAAGJ,EAC/B,CAAC,CAAA,CAKYM,EAA2DC,CAAAA,QAAAA,CACtEL,GACAG,EACF,EAMO,SAASG,EAAAA,CACdC,CACa,CAAA,CACb,OAAO,MAAA,CAAO,QAAQA,CAAW,CAAA,CAAE,MAAO,CAAA,CAACC,CAAK,CAAA,CAACC,CAAQC,CAAAA,CAAO,KACzDhB,EAAYe,CAAAA,CAAM,CACvBC,EAAAA,CAAAA,CAAQ,OAASC,CAAAA,CAAAA,EAAW,CAC1BH,CAAAA,CAAIG,CAAM,CAAA,CAAIF,EAChB,CAAC,CACMD,CAAAA,CAAAA,CAAAA,CACN,EAAiB,CACtB,CAVgBhX,CAAAA,CAAA8W,EAAA,CAAA,mBAAA,CAAA,CAkBHM,IAAAA,EAAAA,CAA2C,CACtD,YAAA,CAAc,CACd,CAAA,CAAA,MAAA,CAAQ,EACR,CAAA,WAAA,CAAa,EAAC,CACd,WAAapX,CAAAA,CAAAA,CAAA,IAAM,WAAN,CAAA,aAAA,CACf,CAOaqX,CAAAA,EAAAA,CAAcrX,CAACsX,CAAAA,CAAAA,EAAoC,CAC9D,GAAI,CAACV,EAAAA,CAA0B,EAAGU,CAAAA,CAAM,CACtC,CAAA,OAAOF,EAET,CAAA,GAAM,CAAE,WAAAL,CAAAA,CAAAA,CAAa,GAAGQ,CAAS,CAAID,CAAAA,CAAAA,CAAOZ,EAAyB,CAAA,CAC/Dc,EAAcV,EAAkBC,CAAAA,CAAW,CACjD,CAAA,OAAO,CACL,GAAGQ,CACH,CAAA,WAAA,CAAAC,EACA,WAAaxX,CAAAA,CAAAA,CAACmX,CACRI,EAAAA,CAAAA,CAAS,YAAqB,CAAA,OAAA,CAC3BC,CAAYL,CAAAA,CAAM,CAAK,EAAA,WAAA,CAFnB,aAIf,CAAA,CACF,CAd2B,CAAA,aAAA,E8B5MdM,IAAAA,EAAAA,CAA8B,iBAE9BC,EAA8B,CAAA,eCP3C,GAAM,CAAE,UAAAC,EAAU,CAAA,CAAI,OAAQ,CAAA,GAAA,CAC9B,GAAIA,EAAAA,EAAa,CAACC,WAAAA,CAAMD,EAAS,CAC/B,CAAA,MAAM,IAAI,KAAA,CAAM,CAAkCA,+BAAAA,EAAAA,EAAS,CAAG,CAAA,CAAA,CAAA,CAE1DE,IAAAA,EAAAA,CAAQF,EAAa,EAAA,2BAAA,CACrBG,EAAgB,CAAA,IAAI,GAAI,CAAA,aAAA,CAAeD,EAAK,CAAE,CAAA,QAAA,EAEvCE,CAAAA,EAAAA,CAAS,CAKpB,KAAA,CAAAF,EAKA,CAAA,aAAA,CAAAC,EACF,ECpBO,IAAME,EAAgB,CAAA,CAC3B,MAAQ,CAAA,cAAA,CACR,UAAY,CAAA,kBAAA,CACZ,iBAAkB,yBACpB","file":"index.js","sourcesContent":["'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","/**\n * @file\n *\n * All things involving low-level user JWT parsing, claims, roles.\n */\n\nimport {\n array,\n boolean,\n Describe,\n enums,\n number,\n object,\n optional,\n string,\n type,\n union,\n record,\n assign,\n} from 'superstruct';\nimport { roles, type Role } from '@knapsack/types';\n\n// Superstruct runtime validation for Role\nexport const RolesEnums = enums(roles);\nexport const RolesEnumsStruct: Describe<Role> = RolesEnums;\n\nexport const canRoleAdmin = (role: Role): boolean => role === 'ADMIN';\n\nexport const rolesThatCanManageUsers: Role[] = ['ADMIN', 'MANAGER'];\n\nexport const canRoleManageUsers = (role: Role): boolean =>\n rolesThatCanManageUsers.includes(role);\n\nexport const rolesThatCanDelete: Role[] = [\n ...rolesThatCanManageUsers,\n 'EDITOR',\n];\n\nexport const canRoleDelete = (role: Role): boolean =>\n rolesThatCanDelete.includes(role);\n\nexport const rolesThatCanEdit: Role[] = [...rolesThatCanDelete, 'CONTRIBUTOR'];\n\nexport const canRoleEdit = (role: Role): boolean =>\n rolesThatCanEdit.includes(role);\n\nexport const rolesThatCanPublish: Role[] = ['ADMIN'];\n\nexport const canRolePublish = (role: Role): boolean =>\n rolesThatCanPublish.includes(role);\n\nexport const rolesThatCanView: Role[] = [...rolesThatCanEdit, 'VIEWER'];\n\nexport const canRoleView = (role: Role): boolean =>\n rolesThatCanView.includes(role);\n\nexport const isRoleValid = (role: string): role is Role =>\n RolesEnumsStruct.is(role);\n\n/**\n * Please note that these are not the same as the \"roles\" used on a per-site\n * basis, these are roles for the entire DB.\n */\nexport enum HasuraRoles {\n // yes, `admin` exists but no reason anyone should have it, yet\n user = 'user',\n anonymous = 'anonymous',\n}\nconst HasuraRolesStruct = enums(Object.values(HasuraRoles));\n\nexport type HasuraClaims = {\n 'x-hasura-allowed-roles': HasuraRoles[];\n 'x-hasura-default-role': HasuraRoles;\n 'x-hasura-user-id'?: string;\n};\n// Superstruct runtime validation for HasuraClaims\nexport const HasuraClaimsStruct: Describe<HasuraClaims> = object({\n 'x-hasura-allowed-roles': array(HasuraRolesStruct),\n 'x-hasura-default-role': HasuraRolesStruct,\n 'x-hasura-user-id': optional(string()),\n});\n\n/**\n * The specific Knapsack claims that live at 'https://knapsack.cloud' within JWT\n */\nexport type KnapsackClaims = {\n userId: string;\n /** For email address that end in `knapsack.cloud` */\n isSuperAdmin: boolean;\n /**\n * Keys are roleId, value are array of siteId strings\n * Purposely kept small for JWT payloads. Often expanded.\n * @see {SiteRoleMap}\n * @see {expandSitesByRole}\n * @example\n * {\n * sitesByRole: {\n * EDITOR: ['ks-demo-bootstrap', 'ks-demo-tailwind'],\n * VIEWER: ['site-id-1'],\n * },\n * }\n */\n sitesByRole: {\n [roleId in Role]?: string[];\n };\n};\n// Superstruct runtime validation for KnapsackClaims\nexport const KsClaimsStruct: Describe<KnapsackClaims> = object({\n userId: string(),\n isSuperAdmin: boolean(),\n sitesByRole: record(RolesEnums, array(string())),\n});\n\n/**\n * The easier to work with & expanded version of `sitesByRole` in KsClaims,\n * which is kept as small as possible for JWT payloads.\n * @see {KnapsackClaims}\n */\nexport type SiteRoleMap = {\n [siteId: string]: Role;\n};\n\n/**\n * Base JWT\n */\nexport type JwtBase = {\n /* Token expiration time; usually 1 hour after issued at time (`iat`), in seconds (not ms) */\n exp: number;\n /* Email exists on ID token, but not AUTH token */\n email?: string;\n /* WARNING: email_verified is not guaranteed to exst on SSO tokens, and is boolean or string! */\n email_verified?: string | boolean;\n /* Issued at Time, in seconds (not ms) */\n iat: number;\n /* Issuer */\n iss: string;\n /* Subject (userId) */\n sub: string;\n /* Audience */\n aud: string | string[];\n};\n// Superstruct runtime validation for JwtBase. Use type() to ignore extra keys\nexport const JwtBaseStruct: Describe<JwtBase> = type({\n exp: number(),\n email: optional(string()),\n email_verified: optional(union([string(), boolean()])),\n iat: number(),\n iss: string(),\n sub: string(),\n aud: union([string(), array(string())]),\n});\n\n/**\n * Bring it all together to make a full JWT\n */\nexport const HASURA_CLAIMS_NAMESPACE = 'https://hasura.io/jwt/claims';\nexport const KNAPSACK_CLAIMS_NAMESPACE = 'https://knapsack.cloud';\n\n// Just custom claims\nexport type JwtCustomClaims = {\n [HASURA_CLAIMS_NAMESPACE]: HasuraClaims;\n [KNAPSACK_CLAIMS_NAMESPACE]: KnapsackClaims;\n};\n// Superstruct runtime validation for JwtCustomClaims\nexport const JwtCustomClaimsStruct: Describe<JwtCustomClaims> = object({\n [HASURA_CLAIMS_NAMESPACE]: HasuraClaimsStruct,\n [KNAPSACK_CLAIMS_NAMESPACE]: KsClaimsStruct,\n});\n\n// The entire JWT, custom claims + base root keys\nexport type JwtWithCustomClaims = JwtBase & JwtCustomClaims;\n// Superstruct runtime validation for JwtWithCustomClaims\nexport const JwtWithCustomClaimsStruct: Describe<JwtWithCustomClaims> = assign(\n JwtBaseStruct,\n JwtCustomClaimsStruct,\n);\n\n/**\n * Convert sitesByRole to be a map of siteId to roleId. This is the format we\n * actually use within the app to determine what sites a user can access.\n */\nexport function expandSitesByRole(\n sitesByRole: KnapsackClaims['sitesByRole'],\n): SiteRoleMap {\n return Object.entries(sitesByRole).reduce((cur, [roleId, siteIds]) => {\n if (!isRoleValid(roleId)) return cur;\n siteIds.forEach((siteId) => {\n cur[siteId] = roleId;\n });\n return cur;\n }, {} as SiteRoleMap);\n}\n\nexport type KsClaimsHelper = Omit<KnapsackClaims, 'sitesByRole'> & {\n siteRoleMap: SiteRoleMap;\n /** Get the User's Role for particular site */\n getSiteRole: (siteId: string) => Role;\n};\n\nexport const defaultAnonymousKsClaims: KsClaimsHelper = {\n isSuperAdmin: false,\n userId: '',\n siteRoleMap: {},\n getSiteRole: () => 'ANONYMOUS',\n};\n\n/**\n * Picks off the KsClaims from the JWT (since it has a weird to use\n * `https://knapsack.cloud` namespace) and then also converts the size-conscious\n * `sitesByRole` into the more usable format of `siteRoleMap\n */\nexport const getKsClaims = (claims: unknown): KsClaimsHelper => {\n if (!JwtWithCustomClaimsStruct.is(claims)) {\n return defaultAnonymousKsClaims;\n }\n const { sitesByRole, ...ksClaims } = claims[KNAPSACK_CLAIMS_NAMESPACE];\n const siteRoleMap = expandSitesByRole(sitesByRole);\n return {\n ...ksClaims,\n siteRoleMap,\n getSiteRole: (siteId) => {\n if (ksClaims.isSuperAdmin) return 'ADMIN';\n return siteRoleMap[siteId] || 'ANONYMOUS';\n },\n };\n};\n","// Should be no imports here!\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: unique symbol = Symbol.for(\"immer-nothing\")\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = Symbol.for(\"immer-draftable\")\n\nexport const DRAFT_STATE: unique symbol = Symbol.for(\"immer-state\")\n","export const errors =\n\tprocess.env.NODE_ENV !== \"production\"\n\t\t? [\n\t\t\t\t// All error codes, starting by 0:\n\t\t\t\tfunction(plugin: string) {\n\t\t\t\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t\t\t\t},\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t\t\t\t},\n\t\t\t\t\"This object has been frozen and should not be mutated\",\n\t\t\t\tfunction(data: any) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\t\t\t\tdata\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\t\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t\t\t\t\"Immer forbids circular references\",\n\t\t\t\t\"The first or second argument to `produce` must be a function\",\n\t\t\t\t\"The third argument to `produce` must be a function or undefined\",\n\t\t\t\t\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t\t\t\t\"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'current' expects a draft, got: ${thing}`\n\t\t\t\t},\n\t\t\t\t\"Object.defineProperty() cannot be used on an Immer draft\",\n\t\t\t\t\"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t\t\t\t\"Immer only supports deleting array indices\",\n\t\t\t\t\"Immer only supports setting array indices and the 'length' property\",\n\t\t\t\tfunction(thing: string) {\n\t\t\t\t\treturn `'original' expects a draft, got: ${thing}`\n\t\t\t\t}\n\t\t\t\t// Note: if more errors are added, the errorOffset in Patches.ts should be increased\n\t\t\t\t// See Patches.ts for additional errors\n\t\t ]\n\t\t: []\n\nexport function die(error: number, ...args: any[]): never {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst e = errors[error]\n\t\tconst msg = typeof e === \"function\" ? e.apply(null, args as any) : e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\tArchType,\n\tdie,\n\tStrictMode\n} from \"../internal\"\n\nexport const getPrototypeOf = Object.getPrototypeOf\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original<T>(value: T): T | undefined\nexport function original(value: Drafted<any>): any {\n\tif (!isDraft(value)) die(15, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/**\n * Each iterates a map, set or array.\n * Or, if any other kind of object, all of its own properties.\n * Regardless whether they are enumerable or symbols\n */\nexport function each<T extends Objectish>(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void\n): void\nexport function each(obj: any, iter: any) {\n\tif (getArchtype(obj) === ArchType.Object) {\n\t\tReflect.ownKeys(obj).forEach(key => {\n\t\t\titer(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): ArchType {\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_\n\t\t: Array.isArray(thing)\n\t\t? ArchType.Array\n\t\t: isMap(thing)\n\t\t? ArchType.Map\n\t\t: isSet(thing)\n\t\t? ArchType.Set\n\t\t: ArchType.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === ArchType.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === ArchType.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === ArchType.Map) thing.set(propOrOldValue, value)\n\telse if (t === ArchType.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any, strict: StrictMode) {\n\tif (isMap(base)) {\n\t\treturn new Map(base)\n\t}\n\tif (isSet(base)) {\n\t\treturn new Set(base)\n\t}\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\n\tconst isPlain = isPlainObject(base)\n\n\tif (strict === true || (strict === \"class_only\" && !isPlain)) {\n\t\t// Perform a strict copy\n\t\tconst descriptors = Object.getOwnPropertyDescriptors(base)\n\t\tdelete descriptors[DRAFT_STATE as any]\n\t\tlet keys = Reflect.ownKeys(descriptors)\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key: any = keys[i]\n\t\t\tconst desc = descriptors[key]\n\t\t\tif (desc.writable === false) {\n\t\t\t\tdesc.writable = true\n\t\t\t\tdesc.configurable = true\n\t\t\t}\n\t\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t\t// with libraries that trap values, like mobx or vue\n\t\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\t\tif (desc.get || desc.set)\n\t\t\t\tdescriptors[key] = {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\t\tvalue: base[key]\n\t\t\t\t}\n\t\t}\n\t\treturn Object.create(getPrototypeOf(base), descriptors)\n\t} else {\n\t\t// perform a sloppy copy\n\t\tconst proto = getPrototypeOf(base)\n\t\tif (proto !== null && isPlain) {\n\t\t\treturn {...base} // assumption: better inner class optimization than the assign below\n\t\t}\n\t\tconst obj = Object.create(proto)\n\t\treturn Object.assign(obj, base)\n\t}\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze<T>(obj: T, deep?: boolean): T\nexport function freeze<T>(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep)\n\t\t// See #590, don't recurse into non-enumerable / Symbol properties when freezing\n\t\t// So use Object.entries (only string-like, enumerables) instead of each()\n\t\tObject.entries(obj).forEach(([key, value]) => freeze(value, true))\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tDrafted,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tArchType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_<T>(draft: T, patches: readonly Patch[]): T\n\t}\n\tMapSet?: {\n\t\tproxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): T\n\t\tproxySet_<T extends AnySet>(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin<K extends keyof Plugins>(\n\tpluginKey: K\n): Exclude<Plugins[K], undefined> {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(0, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin<K extends keyof Plugins>(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ArchType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map<any, boolean> | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted<AnyMap, MapState>\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ArchType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map<any, Drafted> // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted<AnySet, SetState>\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tArchType,\n\tgetPlugin\n} from \"../internal\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (state.type_ === ArchType.Object || state.type_ === ArchType.Array)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tArchType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(value, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path)\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result = state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ArchType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath,\n\ttargetIsSet?: boolean\n) {\n\tif (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n\t\tdie(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ArchType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude<ImmerState, SetState>).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// Immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\t// Per #590, we never freeze symbolic properties. Just to make sure don't accidentally interfere\n\t\t// with other frameworks.\n\t\tif (\n\t\t\t(!parentState || !parentState.scope_.parent_) &&\n\t\t\ttypeof prop !== \"symbol\" &&\n\t\t\tObject.prototype.propertyIsEnumerable.call(targetObject, prop)\n\t\t)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tgetPrototypeOf,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tArchType,\n\tImmerScope\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ArchType.Object\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted<AnyObject, ProxyObjectState>\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ArchType.Array\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted<AnyArray, ProxyArrayState>\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy<T extends Objectish>(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted<T, ProxyState> {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ArchType.Array : (ArchType.Object as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler<object | Array<any>> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler<ProxyState> = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(value, state))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\tif (state.copy_) {\n\t\t\tdelete state.copy_[prop]\n\t\t}\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ArchType.Array || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop as any)))\n\t\tdie(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (\n\t\tprocess.env.NODE_ENV !== \"production\" &&\n\t\tprop !== \"length\" &&\n\t\tisNaN(parseInt(prop as any))\n\t)\n\t\tdie(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {\n\tbase_: any\n\tcopy_: any\n\tscope_: ImmerScope\n}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(\n\t\t\tstate.base_,\n\t\t\tstate.scope_.immer_.useStrictShallowCopy_\n\t\t)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport type StrictMode = boolean | \"class_only\";\n\nexport class Immer implements ProducersFns {\n\tautoFreeze_: boolean = true\n\tuseStrictShallowCopy_: StrictMode = false\n\n\tconstructor(config?: {\n\t\tautoFreeze?: boolean\n\t\tuseStrictShallowCopy?: StrictMode\n\t}) {\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t\tif (typeof config?.useStrictShallowCopy === \"boolean\")\n\t\t\tthis.setUseStrictShallowCopy(config!.useStrictShallowCopy)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(1, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft<T extends Objectish>(base: T): Draft<T> {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft<D extends Draft<any>>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft<infer T> ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (!state || !state.isManual_) die(9)\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to enable strict shallow copy.\n\t *\n\t * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n\t */\n\tsetUseStrictShallowCopy(value: StrictMode) {\n\t\tthis.useStrictShallowCopy_ = value\n\t}\n\n\tapplyPatches<T extends Objectish>(base: T, patches: readonly Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy<T extends Objectish>(\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted<T, ImmerState> {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: createProxyProxy(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tisFrozen\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current<T>(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(10, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value) || isFrozen(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tif (state) {\n\t\tif (!state.modified_) return state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_)\n\t} else {\n\t\tcopy = shallowCopy(value, true)\n\t}\n\t// recurse\n\teach(copy, (key, childValue) => {\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\tif (state) {\n\t\tstate.finalized_ = false\n\t}\n\treturn copy\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tWritableDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\tProducer,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze,\n\tObjectish,\n\tStrictMode\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\nexport const setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft<T>(value: T): Draft<T> {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable<T>(value: T): Immutable<T> {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\n","import {\n type,\n Describe,\n literal,\n optional,\n defaulted,\n boolean,\n array,\n object,\n} from 'superstruct';\n\nimport { ExpandRecursively } from '@knapsack/utils';\n\nimport {\n ColorConfig,\n ColorConfigStruct,\n ColorStringStruct,\n} from './color-config';\n\nimport {\n FontFaceConfigStruct,\n FontFaceConfig,\n TypographyConfigStruct,\n TypographyLinkConfigStruct,\n pageElements,\n pageElementsV2,\n} from './typography-config';\n\nimport {\n customizableNavElements,\n NavCustomizationConfigStruct,\n PrimaryNavCustomizationConfigStruct,\n SecondaryNavCustomizationConfigStruct,\n} from './nav-customization-config';\n\nexport type UiConfigV1 = {\n version: 1;\n oldSillySidebarBgColor: string;\n};\n\nexport const UiConfigV1Struct: Describe<UiConfigV1> = object({\n version: literal(1),\n oldSillySidebarBgColor: ColorStringStruct,\n});\n\nexport type UiConfigV2 = {\n version: 2;\n anotherSillySidebarBgColor: string;\n};\n\nexport const UiConfigV2Struct: Describe<UiConfigV2> = object({\n version: literal(2),\n anotherSillySidebarBgColor: ColorStringStruct,\n});\n\nexport type UiConfigV3 = {\n version: 3;\n sidebarBgColor: string;\n};\n\nexport const UiConfigV3Struct: Describe<UiConfigV3> = object({\n version: literal(3),\n sidebarBgColor: ColorStringStruct,\n});\n\nexport type UiConfigV4 = {\n version: 4;\n primaryColor: ColorConfig;\n darkColor: ColorConfig;\n lightColor: ColorConfig;\n enableSidebarIcons?: boolean;\n};\nexport const UiConfigV4Struct: Describe<UiConfigV4> = object({\n version: literal(4),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n});\n\nexport type UiConfigV5 = {\n version: 5;\n primaryColor: ColorConfig;\n darkColor: ColorConfig;\n lightColor: ColorConfig;\n linkColor: ColorConfig;\n enableSidebarIcons: boolean;\n};\nexport const UiConfigV5Struct: Describe<UiConfigV5> = object({\n version: literal(5),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n});\n\nexport interface _UiConfigV6 extends Omit<UiConfigV5, 'version'> {\n version: 6;\n appearance: {\n customFonts?: FontFaceConfig[];\n pageElements: typeof pageElements;\n };\n}\n\n// ExpandRecursively needed to avoid \"Type 'UiConfigV6' is not assignable to type 'Record<string, unknown>'.\" error\nexport type UiConfigV6 = ExpandRecursively<_UiConfigV6>;\n\nexport const UiConfigV6Struct: Describe<UiConfigV6> = object({\n version: literal(6),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV7 extends Omit<UiConfigV6, 'version'> {\n version: 7;\n appearance: {\n navigation?: typeof customizableNavElements;\n customFonts?: UiConfigV6['appearance']['customFonts'];\n pageElements: UiConfigV6['appearance']['pageElements'];\n };\n}\n\n// ExpandRecursively needed to avoid \"Type 'UiConfig7' is not assignable to type 'Record<string, unknown>'.\" error in ui-config.xstate.ts\nexport type UiConfigV7 = ExpandRecursively<_UiConfigV7>;\n\nexport const UiConfigV7Struct: Describe<UiConfigV7> = object({\n version: literal(7),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV8\n extends Omit<UiConfigV7, 'version' | 'enableSidebarIcons'> {\n version: 8;\n}\n\n// ExpandRecursively needed to avoid \"Type 'UiConfig8' is not assignable to type 'Record<string, unknown>'.\" error in ui-config.xstate.ts\n// TODO: move this to @knapsack/types\nexport type UiConfigV8 = ExpandRecursively<_UiConfigV8>;\n\nexport const UiConfigV8Struct: Describe<UiConfigV8> = object({\n version: literal(8),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV9\n extends Omit<\n UiConfigV8,\n 'version' | 'primaryColor' | 'darkColor' | 'lightColor' | 'linkColor'\n > {\n version: 9;\n}\nexport type UiConfigV9 = ExpandRecursively<_UiConfigV9>;\n\nexport const UiConfigV9Struct: Describe<UiConfigV9> = object({\n version: literal(9),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV10 extends Omit<UiConfigV9, 'version'> {\n version: 10;\n appearance: {\n navigation?: UiConfigV9['appearance']['navigation'];\n customFonts?: UiConfigV9['appearance']['customFonts'];\n pageElements: typeof pageElementsV2;\n };\n}\nexport type UiConfigV10 = ExpandRecursively<_UiConfigV10>;\n\nexport const UiConfigV10Struct: Describe<UiConfigV10> = object({\n version: literal(10),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingXLarge: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n headingXSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport type UiConfigVersions =\n | typeof UiConfigV1Struct.TYPE\n | typeof UiConfigV2Struct.TYPE\n | typeof UiConfigV3Struct.TYPE\n | typeof UiConfigV4Struct.TYPE\n | typeof UiConfigV5Struct.TYPE\n | typeof UiConfigV6Struct.TYPE\n | typeof UiConfigV7Struct.TYPE\n | typeof UiConfigV8Struct.TYPE\n | typeof UiConfigV9Struct.TYPE\n | typeof UiConfigV10Struct.TYPE;\n\n// ALIASES FOR LATEST VERSIONS\nexport type UiConfig = UiConfigV10;\nexport const UiConfigStruct: typeof UiConfigV10Struct = UiConfigV10Struct;\n\nexport type NavElementNames = keyof UiConfig['appearance']['navigation'];\n","import colorString from 'color-string';\nimport { define, Describe, literal, string, type, union } from 'superstruct'; // https://docs.superstructjs.org\n\n/** Use `import { isColor } from '@knapsack/color-utils'` if you can, need to duplicate this logic due to dep cycle */\nfunction isColor(color: unknown): color is string {\n if (typeof color !== 'string') return false;\n try {\n return !!colorString.get(color);\n } catch (e) {\n return false;\n }\n}\n\nexport type ColorTokenConfig = {\n type: 'design-token';\n /** Will be **either** `-` (old) or `.` (new) separated */\n tokenName: string;\n};\nexport type ColorConfig =\n | { type: 'value'; colorValue: string }\n | ColorTokenConfig;\n\nexport const ColorStringStruct = define<string>(\n 'ColorStringStruct',\n (value) => typeof value === 'string' && isColor(value),\n);\n\nexport const ColorConfigStruct: Describe<ColorConfig> = union([\n type({\n type: literal('value'),\n colorValue: ColorStringStruct,\n }),\n type({\n type: literal('design-token'),\n tokenName: string(),\n }),\n]);\n\n// so we can check if an object is not just a ColorConfig but specifically a token\nexport const ColorTokenConfigStruct: Describe<ColorTokenConfig> = type({\n type: literal('design-token'),\n tokenName: string(),\n});\n","import {\n Describe,\n string,\n type,\n union,\n number,\n enums,\n optional,\n literal,\n array,\n size,\n boolean,\n object,\n} from 'superstruct'; // https://docs.superstructjs.org\nimport { ColorConfig, ColorConfigStruct } from './color-config';\n\nexport const HeadingLevels = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] as const;\nexport type HeadingLevel = (typeof HeadingLevels)[number];\n\nexport type FontSizeConfigVal = {\n unit: 'px' | 'rem';\n value: number;\n};\n\nexport const FontSizeConfigValStruct: Describe<FontSizeConfigVal> = object({\n unit: enums(['rem', 'px']),\n value: number(),\n});\n\nexport type FontFaceWeight = number | string;\n\nexport const FontFaceWeightStruct: Describe<FontFaceWeight> = union([\n string(),\n number(),\n]);\n\nexport enum FontFaceSourceFormats {\n woff2 = 'woff2',\n woff = 'woff',\n}\n\nexport type FontFaceSource = {\n /**\n * Note: if /when we eventually add 'local' type support, format isn't used!\n */\n format: keyof typeof FontFaceSourceFormats;\n type: 'url';\n path: string;\n};\n\nexport const FontFaceFormatsEnumStruct = enums(['woff2', 'woff']);\n\nexport const FontFaceSourceStruct: Describe<FontFaceSource> = type({\n format: FontFaceFormatsEnumStruct,\n type: literal('url'),\n path: string(),\n});\n\nexport type FontFaceConfig = {\n /**\n * registered name of the custom font\n *\n * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-family @font-face's font-family property}\n */\n family?: string;\n\n /**\n * number between 1 and 1000.\n *\n * note: since two weights are allowed (with variable fonts), this type is an\n * optional array for easy parsing down the road.\n *\n * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-weight @font-face's font-weight property}.\n */\n weight?: FontFaceWeight | FontFaceWeight[];\n\n /**\n * the collection of urls / paths pointing to font files\n *\n * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src @font-face's src property}.\n */\n src?: FontFaceSource[];\n\n /**\n * the style of the custom font (ex. normal or italic)\n *\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-style See MDN docs on font-style}.\n */\n style?: string;\n\n // @todo: implement these later\n // display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n // variationSettings?: string;\n // unicodeRange?: string; // or ideally, URange; //\n // see https://drafts.csswg.org/css-syntax-3/#urange-syntax and\n // https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/unicode-range\n};\n\nexport const FontFaceConfigStruct: Describe<FontFaceConfig> = type({\n family: optional(string()),\n weight: optional(\n union([FontFaceWeightStruct, size(array(FontFaceWeightStruct), 2)]),\n ),\n src: optional(array(FontFaceSourceStruct)),\n style: optional(string()),\n display: optional(enums(['auto', 'block', 'swap', 'fallback', 'optional'])),\n variationSettings: optional(string()),\n unicodeRange: optional(string()),\n});\n\nexport type FontSizeConfig = {\n min: FontSizeConfigVal;\n max?: FontSizeConfigVal;\n};\n\nexport enum TextTransforms {\n inherit = 'As typed',\n capitalize = 'Capitalize',\n lowercase = 'Lowercase',\n uppercase = 'Uppercase',\n}\n\nexport enum FontStretches {\n 'ultra-condensed' = 'Ultra-condensed',\n 'extra-condensed' = 'Extra-condensed',\n condensed = 'Condensed',\n 'semi-condensed' = 'Semi-condensed',\n normal = 'Normal',\n 'semi-expanded' = 'Semi-expanded',\n expanded = 'Expanded',\n 'extra-expanded' = 'Extra-expanded',\n 'ultra-expanded' = 'Ultra-expanded',\n}\n\nexport type TypographyConfig = {\n /**\n * min / max height used to future-proof way of supporting responsive typography\n */\n fontSize?: FontSizeConfig;\n\n /**\n * reminder: line-heights can also be unitless!\n */\n lineHeight?: string | number;\n fontWeight?: FontFaceWeight;\n\n /**\n * note: letter-spacing can't be unitless, unit required!\n */\n letterSpacing?: string;\n\n /**\n * if not specified, Knapsack default font, otherwise should allow for a stack of font strings + fallbacks (including the names of custom registered fonts)\n */\n fontFamily?: string;\n\n textColor?: ColorConfig;\n\n textTransform?: keyof typeof TextTransforms;\n\n fontStretch?: keyof typeof FontStretches;\n};\n\nexport interface TypographyLinkConfig {\n fontWeight?: FontFaceWeight;\n textColor?: ColorConfig;\n hoverColor?: ColorConfig;\n underline?: boolean;\n textTransform?: keyof typeof TextTransforms;\n fontStretch?: keyof typeof FontStretches;\n}\n\nexport const TypographyLinkConfigStruct: Describe<TypographyLinkConfig> = type({\n fontWeight: optional(union([string(), number()])),\n textColor: optional(ColorConfigStruct),\n hoverColor: optional(ColorConfigStruct),\n underline: optional(boolean()),\n textTransform: optional(\n enums(['inherit', 'capitalize', 'lowercase', 'uppercase']),\n ),\n fontStretch: optional(\n enums([\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n ]),\n ),\n});\n\nexport const FontSizeConfigStruct: Describe<FontSizeConfig> = type({\n min: FontSizeConfigValStruct,\n max: optional(FontSizeConfigValStruct),\n});\n\nexport const TypographyConfigStruct: Describe<TypographyConfig> = type({\n fontSize: optional(FontSizeConfigStruct),\n lineHeight: optional(union([string(), number()])),\n fontWeight: optional(union([string(), number()])),\n letterSpacing: optional(string()),\n fontFamily: optional(string()),\n textColor: optional(ColorConfigStruct),\n textTransform: optional(\n enums(['inherit', 'capitalize', 'lowercase', 'uppercase']),\n ),\n fontStretch: optional(\n enums([\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n ]),\n ),\n});\n\nconst pageElementConfig: TypographyConfig = {};\nconst pageLinkElementConfig: TypographyLinkConfig = {};\n\nexport const pageElements = {\n pageTitle: pageElementConfig,\n pageDescription: pageElementConfig,\n headingLarge: pageElementConfig,\n headingMedium: pageElementConfig,\n headingSmall: pageElementConfig,\n bodyText: pageElementConfig,\n link: pageLinkElementConfig,\n} as const;\n\nexport const pageElementsV2 = {\n pageTitle: pageElementConfig,\n pageDescription: pageElementConfig,\n headingXLarge: pageElementConfig,\n headingLarge: pageElementConfig,\n headingMedium: pageElementConfig,\n headingSmall: pageElementConfig,\n headingXSmall: pageElementConfig,\n bodyText: pageElementConfig,\n link: pageLinkElementConfig,\n} as const;\n\nexport type PageElementNames = keyof typeof pageElementsV2;\nexport type PageElementConfig = (typeof pageElementsV2)[PageElementNames];\n","import { Describe, type, union, optional } from 'superstruct'; // https://docs.superstructjs.org\nimport { ColorConfig, ColorConfigStruct } from './color-config';\nimport { TypographyConfig, TypographyConfigStruct } from './typography-config';\n\nexport interface NavCustomizationConfig extends TypographyConfig {\n accentColor?: ColorConfig;\n}\n\nexport interface PrimaryNavCustomizationConfig extends NavCustomizationConfig {\n hoverColor?: ColorConfig;\n backgroundColor?: ColorConfig;\n}\n\nexport type SecondaryNavCustomizationConfig = Omit<\n PrimaryNavCustomizationConfig,\n 'hoverColor'\n>;\n\nexport const NavCustomizationConfigStruct: Describe<NavCustomizationConfig> =\n union([\n TypographyConfigStruct,\n type({\n accentColor: optional(ColorConfigStruct),\n }),\n ]);\n\n// hoverColor: optional(ColorConfigStruct),\nexport const PrimaryNavCustomizationConfigStruct: Describe<PrimaryNavCustomizationConfig> =\n union([\n NavCustomizationConfigStruct,\n type({\n hoverColor: optional(ColorConfigStruct),\n backgroundColor: optional(ColorConfigStruct),\n }),\n ]);\n\nexport const SecondaryNavCustomizationConfigStruct: Describe<SecondaryNavCustomizationConfig> =\n union([\n NavCustomizationConfigStruct,\n type({\n backgroundColor: optional(ColorConfigStruct),\n }),\n ]);\n\nconst navCustomizationConfig: NavCustomizationConfig = {};\nconst secondaryNavCustomizationConfig: SecondaryNavCustomizationConfig = {};\nconst primaryNavCustomizationConfig: PrimaryNavCustomizationConfig = {};\n\nexport const customizableNavElements = {\n primaryNav: primaryNavCustomizationConfig,\n secondaryNav: secondaryNavCustomizationConfig,\n tabs: navCustomizationConfig,\n} as const;\n\nexport type CustomizableNavElementNames = keyof typeof customizableNavElements;\nexport type CustomizableNavElementConfig =\n (typeof customizableNavElements)[CustomizableNavElementNames];\n","import * as s from 'superstruct';\n\nexport const strokeStyleValues = [\n 'solid',\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'ridge',\n 'outset',\n 'inset',\n] as const;\n\n/**\n * Don't use this one, use this instead:\n * @see {@link TokenDefinitionSingular}\n */\ntype TokenDefinitionSingularRaw =\n | { type: 'string'; value: string }\n | { type: 'number'; value: number }\n | { type: 'boolean'; value: boolean }\n | { type: 'color'; value: string }\n | {\n type: 'strokeStyle';\n value: (typeof strokeStyleValues)[number];\n }\n | { type: 'dimension'; value: `${number}${'px' | 'rem' | 'em' | '%'}` }\n | { type: 'duration'; value: `${number}ms` }\n // | { type: 'fontFamily'; value: string | string[] }\n | {\n type: 'fontWeight';\n // @TODO: Include union of possible strings https://tr.designtokens.org/format/#font-weight\n value: string | number;\n }\n | { type: 'cubicBezier'; value: [number, number, number, number] };\n\n/**\n * Definitions for both singular (non-composite) tokens.\n * Use first generic param to get just that type.\n * @example\n * ```ts\n * type TokenDefinitionDimension = TokenDefinitionSingular<'dimension'>\n * ```\n */\nexport type TokenDefinitionSingular<\n TheTokenType extends TokenDefinitionSingularRaw['type'] = TokenDefinitionSingularRaw['type'],\n> = Extract<TokenDefinitionSingularRaw, { type: TheTokenType }>;\n\n/**\n * Don't use this one, use this instead:\n * @see {@link TokenDefinitionComposite}\n */\ntype TokenDefinitionCompositeRaw =\n | {\n type: 'border';\n value: {\n color: { type: 'color' };\n style: { type: 'strokeStyle' };\n width: { type: 'dimension' };\n };\n }\n | {\n type: 'shadow';\n value: {\n color: { type: 'color' };\n offsetX: { type: 'dimension' };\n offsetY: { type: 'dimension' };\n spread: { type: 'dimension' };\n blur: { type: 'dimension' };\n inset: { type: 'boolean' };\n };\n }\n | {\n type: 'transition';\n value: {\n duration: { type: 'duration' };\n delay: { type: 'duration' };\n timingFunction: { type: 'cubicBezier' };\n };\n };\n// | {\n// type: 'gradient';\n// value: {\n// color: { type: 'color' };\n// position: { type: 'dimension' };\n// }[];\n// };\n\n/**\n * Definitions for composite tokens.\n * Use first generic param to get just that type.\n * @example\n * ```ts\n * type TokenDefinitionShadow = TokenDefinitionComposite<'shadow'>\n * ```\n */\nexport type TokenDefinitionComposite<\n TheTokenType extends TokenDefinitionCompositeRaw['type'] = TokenDefinitionCompositeRaw['type'],\n> = Extract<TokenDefinitionCompositeRaw, { type: TheTokenType }>;\n\n/**\n * Definitions for both singular and composite tokens.\n * Use first generic param to get just that type.\n * @example\n * ```ts\n * type TokenDefinitionDimension = TokenDefinition<'dimension'>\n * ```\n */\nexport type TokenDefinition<\n TheTokenType extends\n | TokenDefinitionComposite['type']\n | TokenDefinitionSingular['type'] =\n | TokenDefinitionComposite['type']\n | TokenDefinitionSingular['type'],\n> = Extract<\n TokenDefinitionComposite | TokenDefinitionSingular,\n { type: TheTokenType }\n>;\n\nexport type TokenReference = `{${string}}`;\n/** ensures there is no `{}` */\nexport type NotTokenReference<T> = T extends TokenReference ? never : T;\n\nexport function isTokenReference(val: unknown): val is TokenReference {\n if (typeof val !== 'string') return false;\n // total times `{` appears in `val`\n // Handle situation `{a.b} {c.d}`. Ensure count of `{` and `}` === 1. This\n // guarantees we ONLY support a single reference, ie `{a.b}`\n const totalOpenBrackets = val.split('{').length - 1;\n return totalOpenBrackets === 1 && val.startsWith('{') && val.endsWith('}');\n}\n\nexport function hasTokenReferences(val: unknown): boolean {\n return typeof val === 'string' && val.includes('{');\n}\n\nexport function isNotTokenReference<T>(\n value: T,\n): value is NotTokenReference<T> {\n return !isTokenReference(value);\n}\n\nexport const TokenReferenceStruct = s.define<TokenReference>(\n 'Token Reference',\n (value) => {\n if (typeof value !== 'string') return false;\n if (isNotTokenReference(value)) {\n return 'Must start and end with curly braces';\n }\n return true;\n },\n);\n\nexport type TokenType = TokenDefinition['type'];\nexport type TokenTypeComposite = TokenDefinitionComposite['type'];\nexport type TokenTypeSingular = TokenDefinitionSingular['type'];\nexport type TokenValueSingular = TokenDefinitionSingular['value'];\n\n// We make a Record to ensure we have *every* possible value\n// b/c TS will yell at us if a new one is added but isn't included here\n// then we make an array out of them, so we can be sure we have *every* possible value\nconst compositeTypesRecord: Record<TokenTypeComposite, TokenTypeComposite> = {\n border: 'border',\n shadow: 'shadow',\n transition: 'transition',\n};\nexport const tokenTypeComposites = Object.values(compositeTypesRecord);\nconst singularTypesRecord: Record<TokenTypeSingular, TokenTypeSingular> = {\n string: 'string',\n number: 'number',\n boolean: 'boolean',\n color: 'color',\n dimension: 'dimension',\n duration: 'duration',\n // fontFamily: 'fontFamily',\n fontWeight: 'fontWeight',\n strokeStyle: 'strokeStyle',\n cubicBezier: 'cubicBezier',\n};\nexport const tokenTypeSingulars = Object.values(singularTypesRecord);\n/**\n * @deprecated You probably want `isTokenDataComposite`\n * @see {isTokenDataComposite}\n */\nexport function isTokenTypeComposite(\n type: TokenType,\n): type is TokenTypeComposite {\n return tokenTypeComposites.includes(type as TokenTypeComposite);\n}\n\nexport function isTokenTypeSingular(\n type: TokenType,\n): type is TokenTypeSingular {\n return tokenTypeSingulars.includes(type as TokenTypeSingular);\n}\n","import { Simplify, expectType, isObjKey, isObject } from '@knapsack/utils';\nimport * as s from 'superstruct';\nimport {\n NotTokenReference,\n TokenDefinition,\n TokenDefinitionComposite,\n TokenDefinitionSingular,\n TokenReference,\n TokenReferenceStruct,\n TokenType,\n hasTokenReferences,\n isTokenTypeComposite,\n} from './token-definitions';\nimport { TokenKsExtensions, TokenOrder } from './token-misc';\nimport { TokenSrcValue } from './token-src';\n\n/** Used for tokens AND groups */\ntype TokenDataBothCommon = {\n id: string;\n description?: string;\n};\n\n// Shows what a fully de-referenced `value` of a composite token would be\ntype CreateDataValueForComposite<\n ValueObj extends Record<string, { type: TokenDefinitionSingular['type'] }>,\n> = {\n [Key in keyof ValueObj]: TokenDefinitionSingular<\n ValueObj[Key]['type']\n >['value'];\n};\n\nexpectType<\n CreateDataValueForComposite<TokenDefinitionComposite<'shadow'>['value']>[]\n>([\n {\n inset: false,\n color: '#000',\n offsetX: '0px',\n offsetY: '0px',\n spread: '0px',\n blur: '0px',\n },\n {\n color: '#000',\n offsetX: '0px',\n offsetY: '0px',\n spread: '0px',\n blur: '0px',\n inset: true,\n },\n]);\n\ntype TokenDataCommon<\n Info extends {\n /** Basically the ID */\n type: TokenDefinition['type'];\n value: unknown;\n },\n> = TokenDataBothCommon & {\n type: Info['type'];\n value: Info['value'];\n /**\n * Extracted from `$extensions['cloud.knapsack'].token`\n */\n tokenConfig?: TokenKsExtensions['token'];\n /**\n * Tokens that are references by this token\n * @todo will need to change for shadow\n * @example\n * ```\n * [\n * ['color.primary', 'color.secondary'],\n * ['spacing.medium']\n * ]\n * ```\n */\n references?: Array<string[]>;\n /**\n * Tokens that use this as a reference token\n * @see {CreateTokenData.references}\n * @example\n * * ```\n * [\n * ['color.primary', 'color.secondary'],\n * ['spacing.medium']\n * ]\n * ```\n */\n // referencedBy?: Array<string[]>;\n};\n\ntype CreateTokenData<\n Info extends {\n type: TokenDefinition['type'];\n value: unknown;\n },\n> =\n | ({\n kind: 'ref';\n /** Has `{}` removed */\n referencedTokenId: string;\n originalValue: TokenReference;\n } & TokenDataCommon<Info>)\n | ({\n kind: 'static';\n originalValue: NotTokenReference<TokenSrcValue<Info['type']>>;\n } & TokenDataCommon<Info>);\n\nconst TokenDataBaseStruct: s.Describe<\n TokenDataBothCommon & {\n references?: Array<string[]>;\n tokenConfig?: TokenKsExtensions['token'];\n }\n> = s.type({\n id: s.string(),\n description: s.optional(s.string()),\n references: s.optional(s.array(s.array(s.string()))),\n tokenConfig: s.optional(\n s.type({\n purpose: s.optional(s.string()),\n }),\n ),\n});\n\ntype TokenDataSingularRaw = {\n // ignore the key, this makes a discriminated union out of the values\n [TokenDef in TokenDefinitionSingular as TokenDef['type']]: Simplify<\n CreateTokenData<TokenDef>\n >;\n}[TokenDefinitionSingular['type']];\n\nexport type TokenDataSingular<\n TT extends TokenDataSingularRaw['type'] = TokenDataSingularRaw['type'],\n> = Extract<TokenDataSingularRaw, { type: TT }>;\n\nexpectType<TokenDataSingular[]>([\n {\n type: 'duration',\n value: '1ms',\n originalValue: '1ms',\n id: '1',\n kind: 'static',\n },\n {\n type: 'duration',\n value: '1ms',\n kind: 'ref',\n id: '1',\n originalValue: '{a.b}',\n referencedTokenId: '1',\n },\n // @ts-expect-error - kind is wrong\n {\n type: 'duration',\n value: '1ms',\n originalValue: '1ms',\n id: '1',\n kind: 'ref',\n },\n // @ts-expect-error - kind is wrong\n {\n type: 'duration',\n value: '1ms',\n kind: 'static',\n id: '1',\n originalValue: '{a.b}',\n referencedTokenId: '1',\n },\n {\n type: 'color',\n value: '#000',\n kind: 'static',\n id: '1',\n originalValue: '#000',\n },\n {\n type: 'color',\n value: '#000',\n kind: 'ref',\n id: '1',\n originalValue: '{c.b}',\n referencedTokenId: 'c.b',\n },\n {\n type: 'cubicBezier',\n kind: 'static',\n value: [0, 0, 0, 1],\n originalValue: [0, 0, 0, 1],\n id: '1',\n },\n]);\n\ntype TokenDataCompositeRaw = {\n [TokenType in TokenDefinitionComposite['type']]: Simplify<\n CreateTokenData<{\n type: TokenType;\n value: Simplify<\n CreateDataValueForComposite<\n TokenDefinitionComposite<TokenType>['value']\n >\n >;\n }>\n >;\n}[TokenDefinitionComposite['type']];\n\nexport type TokenDataComposite<\n TheTokenType extends TokenDataCompositeRaw['type'] = TokenDataCompositeRaw['type'],\n> = Extract<TokenDataCompositeRaw, { type: TheTokenType }>;\n\nexport function isTokenDataComposite(\n tokenData: TokenData,\n): tokenData is TokenDataComposite {\n return isTokenTypeComposite(tokenData.type);\n}\n\nexpectType<TokenDataComposite[]>([\n {\n type: 'border',\n kind: 'static',\n id: '1',\n value: {\n color: '#000',\n style: 'solid',\n width: '1px',\n },\n originalValue: {\n color: '#000',\n style: 'solid',\n width: '1px',\n },\n },\n {\n type: 'border',\n kind: 'ref',\n referencedTokenId: 'a.b',\n id: '1',\n value: {\n color: 'red',\n style: 'dashed',\n width: '2px',\n },\n originalValue: '{a.b}',\n },\n {\n type: 'shadow',\n value: {\n color: '#000',\n offsetX: '1px',\n offsetY: '1px',\n blur: '1px',\n spread: '1px',\n inset: false,\n },\n originalValue: {\n color: '#000',\n offsetX: '{a.a}',\n offsetY: '1px',\n blur: '1px',\n spread: '1px',\n inset: false,\n },\n id: '1',\n kind: 'static',\n },\n {\n type: 'shadow',\n kind: 'ref',\n referencedTokenId: 'a.b',\n value: {\n inset: true,\n color: 'red',\n offsetX: '1px',\n blur: '2px',\n offsetY: '3px',\n spread: '4px',\n },\n originalValue: '{a.b}',\n id: '1',\n },\n {\n type: 'transition',\n value: {\n duration: '100ms',\n delay: '200ms',\n timingFunction: [0, 0, 0, 0],\n },\n originalValue: '{a.b}',\n kind: 'ref',\n referencedTokenId: 'a.b',\n id: '1',\n },\n {\n type: 'transition',\n kind: 'static',\n value: {\n duration: '100ms',\n delay: '200ms',\n timingFunction: [0, 0, 0, 0],\n },\n originalValue: {\n duration: '100ms',\n delay: '{a.c}',\n timingFunction: '{a.c}',\n },\n id: '1',\n },\n {\n type: 'transition',\n kind: 'static',\n value: {\n duration: '100ms',\n delay: '200ms',\n timingFunction: [0, 0, 0, 0],\n },\n originalValue: {\n duration: '100ms',\n delay: '200ms',\n timingFunction: [0, 0, 0, 0],\n },\n id: '1',\n },\n]);\n\nexport type TokenData<\n TheTokenType extends TokenDataSingular['type'] | TokenDataComposite['type'] =\n | TokenDataSingular['type']\n | TokenDataComposite['type'],\n> = Extract<TokenDataSingular | TokenDataComposite, { type: TheTokenType }>;\n\nexport type TokenGroupData = Simplify<\n {\n type?: TokenType;\n /**\n * Extracted from `$extensions['cloud.knapsack'].group`\n */\n groupConfig?: TokenKsExtensions['group'];\n children: TokenOrder;\n } & TokenDataBothCommon\n>;\n\n/**\n * @deprecated Use `TokenValueColorStruct` instead\n */\nexport function isTokenValueColor(\n value: unknown,\n): value is TokenDefinitionSingular<'color'>['value'] {\n return typeof value === 'string' && !hasTokenReferences(value);\n}\n\nexport const TokenValueColorStruct = s.define<TokenData<'color'>['value']>(\n 'Color Value',\n (value) => {\n if (typeof value !== 'string') {\n return 'Value must be a string';\n }\n if (value === '') {\n return 'Value must not be empty';\n }\n if (hasTokenReferences(value)) {\n return 'Value must not contain {} (token references)';\n }\n return true;\n },\n);\n\nconst TokenDataColorNonRefStruct: s.Describe<\n Extract<TokenData<'color'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('color'),\n value: TokenValueColorStruct,\n kind: s.literal('static'),\n originalValue: TokenValueColorStruct,\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataColorRefStruct: s.Describe<\n Extract<TokenData<'color'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('color'),\n value: TokenValueColorStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\n/**\n * @deprecated Use `TokenValueDimensionStruct` instead\n */\nexport function isTokenValueDimension(\n value: unknown,\n): value is TokenDefinitionSingular<'dimension'>['value'] {\n return (\n typeof value === 'string' &&\n (value.endsWith('px') || value.endsWith('rem')) &&\n !hasTokenReferences(value)\n );\n}\n\nexport const TokenValueDimensionStruct = s.define<\n TokenData<'dimension'>['value']\n>('Dimension Value', (value) => {\n if (typeof value !== 'string') {\n return 'Value must be a string';\n }\n if (hasTokenReferences(value)) {\n return 'Value must not contain {} (token references)';\n }\n if (\n !value.endsWith('px') &&\n !value.endsWith('rem') &&\n !value.endsWith('em') &&\n !value.endsWith('%')\n ) {\n return 'Value must end with px, rem, em or %';\n }\n return true;\n});\n\nconst TokenDataDimensionNonRefStruct: s.Describe<\n Extract<TokenData<'dimension'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('dimension'),\n value: TokenValueDimensionStruct,\n kind: s.literal('static'),\n originalValue: TokenValueDimensionStruct,\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataDimensionRefStruct: s.Describe<\n Extract<TokenData<'dimension'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('dimension'),\n value: TokenValueDimensionStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\n/**\n * @deprecated Use `TokenValueDurationStruct` instead\n */\nexport function isTokenValueDuration(\n value: unknown,\n): value is TokenDefinitionSingular<'duration'>['value'] {\n return (\n typeof value === 'string' &&\n value.endsWith('ms') &&\n !hasTokenReferences(value)\n );\n}\n\nexport const TokenValueDurationStruct = s.define<\n TokenData<'duration'>['value']\n>('Duration Value', (value) => {\n if (typeof value !== 'string') {\n return 'Value must be a string';\n }\n if (hasTokenReferences(value)) {\n return 'Value must not contain {} (token references)';\n }\n\n const durationRegex = /^\\d+ms$/;\n if (!durationRegex.test(value)) {\n return 'Value must be a number followed by \"ms\" (e.g., \"100ms\")';\n }\n\n return true;\n});\n\nconst TokenDataDurationNonRefStruct: s.Describe<\n Extract<TokenData<'duration'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('duration'),\n value: TokenValueDurationStruct,\n kind: s.literal('static'),\n originalValue: TokenValueDurationStruct,\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataDurationRefStruct: s.Describe<\n Extract<TokenData<'duration'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('duration'),\n value: TokenValueDurationStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\n/**\n * @deprecated Use `TokenValueFontWeightStruct` instead\n */\nexport function isTokenValueFontWeight(\n value: unknown,\n): value is TokenDefinitionSingular<'fontWeight'>['value'] {\n return (\n (typeof value === 'string' || typeof value === 'number') &&\n !hasTokenReferences(value)\n );\n}\n\nexport const TokenValueFontWeightStruct = s.define<\n TokenData<'fontWeight'>['value']\n>('Font Weight Value', (value) => {\n if (typeof value !== 'string' && typeof value !== 'number') {\n return 'Value must be a string or number';\n }\n if (hasTokenReferences(value)) {\n return 'Value must not contain {} (token references)';\n }\n return true;\n});\n\nconst TokenDataFontWeightNonRefStruct: s.Describe<\n Extract<TokenData<'fontWeight'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('fontWeight'),\n value: TokenValueFontWeightStruct,\n kind: s.literal('static'),\n originalValue: TokenValueFontWeightStruct,\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataFontWeightRefStruct: s.Describe<\n Extract<TokenData<'fontWeight'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('fontWeight'),\n value: TokenValueFontWeightStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\nexport const TokenValueCubicBezierStruct = s.define<\n TokenData<'cubicBezier'>['value']\n>('Cubic Bezier Value', (value) => {\n if (!Array.isArray(value)) {\n return 'Value must be an array';\n }\n if (value.length !== 4) {\n return 'Value must be an array of 4 numbers';\n }\n if (!value.every((v) => typeof v === 'number')) {\n return 'Value must be an array of 4 numbers';\n }\n // check if the first and third values are between 0 and 1\n // cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )\n if (value[0] < 0 || value[0] > 1 || value[2] < 0 || value[2] > 1) {\n return 'The first and third cubicBezier values must be between 0 and 1';\n }\n return true;\n});\n\nconst TokenDataCubicBezierNonRefStruct: s.Describe<\n Extract<TokenData<'cubicBezier'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('cubicBezier'),\n value: TokenValueCubicBezierStruct,\n kind: s.literal('static'),\n originalValue: TokenValueCubicBezierStruct,\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataCubicBezierRefStruct: s.Describe<\n Extract<TokenData<'cubicBezier'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('cubicBezier'),\n value: TokenValueCubicBezierStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\n/**\n * Determines if it's a \"shadow\" token value AND totally de-referenced\n */\nexport function isTokenValueShadow(\n value: unknown,\n): value is Simplify<\n CreateDataValueForComposite<TokenDefinitionComposite<'shadow'>['value']>\n> {\n return (\n isObject(value) &&\n isTokenValueColor(value.color) &&\n isTokenValueDimension(value.offsetX) &&\n isTokenValueDimension(value.offsetY) &&\n isTokenValueDimension(value.blur) &&\n isTokenValueDimension(value.spread)\n );\n}\n\nconst TokenValueShadowStruct = s.define<TokenData<'shadow'>['value']>(\n 'Shadow Value',\n (value) => {\n if (isTokenValueShadow(value)) return true;\n return `Expected a shadow value, got ${JSON.stringify(value)}`;\n },\n);\n\nconst TokenDataShadowNonRefStruct: s.Describe<\n Extract<TokenData<'shadow'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('shadow'),\n value: TokenValueShadowStruct,\n kind: s.literal('static'),\n originalValue: s.type({\n color: s.union([TokenValueColorStruct, TokenReferenceStruct]),\n offsetX: s.union([TokenValueDimensionStruct, TokenReferenceStruct]),\n offsetY: s.union([TokenValueDimensionStruct, TokenReferenceStruct]),\n blur: s.union([TokenValueDimensionStruct, TokenReferenceStruct]),\n spread: s.union([TokenValueDimensionStruct, TokenReferenceStruct]),\n inset: s.union([\n // marking this as optional b/c it could be `undefined` instead of `false`\n s.optional(s.boolean()),\n TokenReferenceStruct,\n ]),\n }),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataShadowRefStruct: s.Describe<\n Extract<TokenData<'shadow'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('shadow'),\n value: TokenValueShadowStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\nexport const TokenValueStrokeStyleStruct = s.union([\n s.literal('solid'),\n s.literal('dashed'),\n s.literal('dotted'),\n s.literal('double'),\n s.literal('groove'),\n s.literal('ridge'),\n s.literal('outset'),\n s.literal('inset'),\n]);\n\n/**\n * Determines if it's a \"border\" token value AND totally de-referenced\n */\nexport function isTokenValueBorder(\n value: unknown,\n): value is Simplify<\n CreateDataValueForComposite<TokenDefinitionComposite<'border'>['value']>\n> {\n return (\n isObject(value) &&\n TokenValueColorStruct.is(value.color) &&\n TokenValueStrokeStyleStruct.is(value.style) &&\n TokenValueDimensionStruct.is(value.width)\n );\n}\n\nconst TokenValueBorderStruct = s.define<TokenData<'border'>['value']>(\n 'Border Value',\n isTokenValueBorder,\n);\n\nconst TokenDataBorderNonRefStruct: s.Describe<\n Extract<TokenData<'border'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('border'),\n value: TokenValueBorderStruct,\n kind: s.literal('static'),\n originalValue: s.type({\n color: s.union([TokenValueColorStruct, TokenReferenceStruct]),\n style: s.union([TokenValueStrokeStyleStruct, TokenReferenceStruct]),\n width: s.union([TokenValueDimensionStruct, TokenReferenceStruct]),\n }),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataBorderRefStruct: s.Describe<\n Extract<TokenData<'border'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('border'),\n value: TokenValueBorderStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\n/**\n * Determines if it's a \"transition\" token value AND totally de-referenced\n */\nexport function isTokenValueTransition(\n value: unknown,\n): value is Simplify<\n CreateDataValueForComposite<TokenDefinitionComposite<'transition'>['value']>\n> {\n return (\n isObject(value) &&\n TokenValueCubicBezierStruct.is(value.timingFunction) &&\n TokenValueDurationStruct.is(value.duration) &&\n TokenValueDurationStruct.is(value.delay)\n );\n}\nconst TokenValueTransitionStruct = s.define<TokenData<'transition'>['value']>(\n 'Transition Value',\n isTokenValueTransition,\n);\n\nconst TokenDataTransitionNonRefStruct: s.Describe<\n Extract<TokenData<'transition'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('transition'),\n value: TokenValueTransitionStruct,\n kind: s.literal('static'),\n originalValue: s.type({\n timingFunction: s.union([\n TokenValueCubicBezierStruct,\n TokenReferenceStruct,\n ]),\n duration: s.union([TokenValueDurationStruct, TokenReferenceStruct]),\n delay: s.union([TokenValueDurationStruct, TokenReferenceStruct]),\n }),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataTransitionRefStruct: s.Describe<\n Extract<TokenData<'transition'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('transition'),\n value: TokenValueTransitionStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataStringNonRefStruct: s.Describe<\n Extract<TokenData<'string'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('string'),\n value: s.string(),\n kind: s.literal('static'),\n originalValue: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataStringRefStruct: s.Describe<\n Extract<TokenData<'string'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('string'),\n value: s.string(),\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataStrokeStyleNonRefStruct: s.Describe<\n Extract<TokenData<'strokeStyle'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('strokeStyle'),\n value: TokenValueStrokeStyleStruct,\n kind: s.literal('static'),\n originalValue: TokenValueStrokeStyleStruct,\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataStrokeStyleRefStruct: s.Describe<\n Extract<TokenData<'strokeStyle'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('strokeStyle'),\n value: TokenValueStrokeStyleStruct,\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: TokenValueStrokeStyleStruct,\n }),\n TokenDataBaseStruct,\n);\n// const TokenDataFontFamilyNonRefStruct: s.Describe<\n// Extract<TokenData<'fontFamily'>, { kind: 'static' }>\n// > = s.assign(\n// s.type({\n// type: s.literal('fontFamily'),\n// value: s.union([s.string(), s.array(s.string())]),\n// kind: s.literal('static'),\n// originalValue: s.union([s.string(), s.array(s.string())]),\n// }),\n// TokenDataBaseStruct,\n// );\n\n// const TokenDataFontFamilyRefStruct: s.Describe<\n// Extract<TokenData<'fontFamily'>, { kind: 'ref' }>\n// > = s.assign(\n// s.type({\n// type: s.literal('fontFamily'),\n// value: s.union([s.string(), s.array(s.string())]),\n// kind: s.literal('ref'),\n// originalValue: TokenReferenceStruct,\n// referencedTokenId: s.string(),\n// }),\n// TokenDataBaseStruct,\n// );\n\nconst TokenDataNumberNonRefStruct: s.Describe<\n Extract<TokenData<'number'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('number'),\n value: s.number(),\n kind: s.literal('static'),\n originalValue: s.number(),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataNumberRefStruct: s.Describe<\n Extract<TokenData<'number'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('number'),\n value: s.number(),\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataBooleanNonRefStruct: s.Describe<\n Extract<TokenData<'boolean'>, { kind: 'static' }>\n> = s.assign(\n s.type({\n type: s.literal('boolean'),\n value: s.boolean(),\n kind: s.literal('static'),\n originalValue: s.boolean(),\n }),\n TokenDataBaseStruct,\n);\n\nconst TokenDataBooleanRefStruct: s.Describe<\n Extract<TokenData<'boolean'>, { kind: 'ref' }>\n> = s.assign(\n s.type({\n type: s.literal('boolean'),\n value: s.boolean(),\n kind: s.literal('ref'),\n originalValue: TokenReferenceStruct,\n referencedTokenId: s.string(),\n }),\n TokenDataBaseStruct,\n);\n\n// Instead of using `s.union` to combine all the token data structs,\n// we first find out what \"type\" the token is\n// then we find out `kind` - which is our 2nd layer of discriminated union\n// and then use the specific struct\n// that way the errors are more specific to the actual declared token \"type\"\n// In a nutshell, `s.union` is not very good at discriminated unions errors\nexport const assertTokenData = (data: unknown): asserts data is TokenData => {\n if (!isObject(data)) {\n throw new Error(\n `Expected token data to be an object, got ${JSON.stringify(data)}`,\n );\n }\n if (!isObjKey('type', data)) {\n throw new Error(\n `Expected token data to have a \"type\" property, got ${JSON.stringify(\n data,\n )}`,\n );\n }\n if (typeof data.type !== 'string') {\n throw new Error(\n `Expected token data \"type\" property to be a string, got ${JSON.stringify(\n data,\n )}`,\n );\n }\n const type = data.type as TokenData['type'];\n const kind = data.kind as TokenData['kind'];\n try {\n switch (type) {\n case 'boolean':\n if (kind === 'ref') {\n TokenDataBooleanRefStruct.assert(data);\n } else {\n TokenDataBooleanNonRefStruct.assert(data);\n }\n return;\n case 'border':\n if (kind === 'ref') {\n TokenDataBorderRefStruct.assert(data);\n } else {\n TokenDataBorderNonRefStruct.assert(data);\n }\n return;\n case 'color':\n if (kind === 'ref') {\n TokenDataColorRefStruct.assert(data);\n } else {\n TokenDataColorNonRefStruct.assert(data);\n }\n return;\n case 'cubicBezier':\n if (kind === 'ref') {\n TokenDataCubicBezierRefStruct.assert(data);\n } else {\n TokenDataCubicBezierNonRefStruct.assert(data);\n }\n return;\n case 'dimension':\n if (kind === 'ref') {\n TokenDataDimensionRefStruct.assert(data);\n } else {\n TokenDataDimensionNonRefStruct.assert(data);\n }\n return;\n case 'duration':\n if (kind === 'ref') {\n TokenDataDurationRefStruct.assert(data);\n } else {\n TokenDataDurationNonRefStruct.assert(data);\n }\n return;\n case 'fontWeight':\n if (kind === 'ref') {\n TokenDataFontWeightRefStruct.assert(data);\n } else {\n TokenDataFontWeightNonRefStruct.assert(data);\n }\n return;\n case 'number':\n if (kind === 'ref') {\n TokenDataNumberRefStruct.assert(data);\n } else {\n TokenDataNumberNonRefStruct.assert(data);\n }\n return;\n case 'shadow':\n if (kind === 'ref') {\n TokenDataShadowRefStruct.assert(data);\n } else {\n TokenDataShadowNonRefStruct.assert(data);\n }\n return;\n case 'string':\n if (kind === 'ref') {\n TokenDataStringRefStruct.assert(data);\n } else {\n TokenDataStringNonRefStruct.assert(data);\n }\n return;\n case 'strokeStyle': // temp implementation\n if (kind === 'ref') {\n TokenDataStrokeStyleRefStruct.assert(data);\n } else {\n TokenDataStrokeStyleNonRefStruct.assert(data);\n }\n return;\n // case 'fontFamily':\n // if (kind === 'ref') {\n // TokenDataFontFamilyRefStruct.assert(data);\n // } else {\n // TokenDataFontFamilyNonRefStruct.assert(data);\n // }\n // return;\n case 'transition':\n if (kind === 'ref') {\n TokenDataTransitionRefStruct.assert(data);\n } else {\n TokenDataTransitionNonRefStruct.assert(data);\n }\n return;\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unknown token data type: ${type}`);\n }\n }\n } catch (error) {\n if (!(error instanceof s.StructError)) throw error;\n throw new Error(\n `Invalid token data for type \"${type}\": ${\n error.message\n }. Received this data: \"${JSON.stringify(data)}\"`,\n );\n }\n};\n","import { Simplify, expectType } from '@knapsack/utils';\nimport {\n TokenType,\n TokenDefinitionSingular,\n TokenDefinitionComposite,\n isTokenTypeComposite,\n isTokenTypeSingular,\n} from './token-definitions';\n\ntype CreateTokenSrcValueInfo<\n T extends {\n type: TokenType;\n value: unknown;\n },\n> =\n | {\n kind: 'ref';\n /** Has `{}` removed */\n referencedTokenId: string;\n isVarRef?: boolean;\n type: T['type'];\n }\n | {\n kind: 'static';\n type: T['type'];\n value: T['value'];\n };\n\ntype TokenSrcValueInfoSingularRaw = {\n // Ignore the key, pay attention to the value\n // The values become the items in the discriminated union\n [TheTokenType in TokenDefinitionSingular as TheTokenType['type']]: Simplify<\n CreateTokenSrcValueInfo<TheTokenType>\n >;\n}[TokenDefinitionSingular['type']];\n\n// This helper allows us to just pass the type string in to get that\n// item out of the discriminated union: `TokenSrcValueInfoSingular<'color'>`\ntype TokenSrcValueInfoSingular<\n TT extends TokenSrcValueInfoSingularRaw['type'] = TokenSrcValueInfoSingularRaw['type'],\n> = Extract<TokenSrcValueInfoSingularRaw, { type: TT }>;\n\nexpectType<TokenSrcValueInfoSingular<'dimension'>[]>([\n {\n type: 'dimension',\n kind: 'static',\n value: '1px',\n },\n {\n type: 'dimension',\n kind: 'ref',\n referencedTokenId: 'a.b',\n },\n]);\n\ntype CreateSrcValueInfoForComposite<\n ValueObj extends Record<string, { type: TokenDefinitionSingular['type'] }>,\n> = {\n [Key in keyof ValueObj]: Simplify<\n CreateTokenSrcValueInfo<{\n type: ValueObj[Key]['type'];\n value: TokenDefinitionSingular<ValueObj[Key]['type']>['value'];\n }>\n >;\n};\n\ntype TokenSrcValueInfoCompositeRaw = {\n [TheTokenType in TokenDefinitionComposite['type']]: Simplify<\n CreateTokenSrcValueInfo<{\n type: TheTokenType;\n value: Simplify<\n CreateSrcValueInfoForComposite<\n TokenDefinitionComposite<TheTokenType>['value']\n >\n >;\n }>\n >;\n}[TokenDefinitionComposite['type']];\n\ntype TokenSrcValueInfoComposite<\n TT extends TokenSrcValueInfoCompositeRaw['type'] = TokenSrcValueInfoCompositeRaw['type'],\n> = Extract<TokenSrcValueInfoCompositeRaw, { type: TT }>;\n\nexpectType<TokenSrcValueInfoComposite<'border'>[]>([\n {\n type: 'border',\n kind: 'ref',\n referencedTokenId: 'a.b',\n },\n {\n type: 'border',\n kind: 'static',\n value: {\n color: {\n kind: 'static',\n type: 'color',\n value: 'red',\n },\n style: {\n kind: 'ref',\n type: 'strokeStyle',\n referencedTokenId: '', // FIX\n },\n width: {\n kind: 'static',\n type: 'dimension',\n value: '2px',\n },\n },\n },\n]);\n\nexpectType<TokenSrcValueInfoComposite<'transition'>[]>([\n {\n type: 'transition',\n kind: 'ref',\n referencedTokenId: 'a.b',\n },\n {\n type: 'transition',\n kind: 'static',\n value: {\n delay: {\n kind: 'static',\n type: 'duration',\n value: '1ms',\n },\n duration: {\n kind: 'ref',\n type: 'duration',\n referencedTokenId: 'animation.slow',\n },\n timingFunction: {\n kind: 'static',\n type: 'cubicBezier',\n value: [0.4, 0.0, 0.2, 1],\n },\n },\n },\n]);\n\nexport type TokenSrcValueInfo<\n TT extends\n | TokenSrcValueInfoComposite['type']\n | TokenSrcValueInfoSingular['type'] =\n | TokenSrcValueInfoComposite['type']\n | TokenSrcValueInfoSingular['type'],\n TheKind extends\n | TokenSrcValueInfoComposite['kind']\n | TokenSrcValueInfoSingular['kind'] =\n | TokenSrcValueInfoComposite['kind']\n | TokenSrcValueInfoSingular['kind'],\n> = Extract<\n TokenSrcValueInfoComposite | TokenSrcValueInfoSingular,\n { type: TT; kind: TheKind }\n>;\n\nexport function isTokenSrcValueInfoSingular(\n tokenSrcValueInfo: TokenSrcValueInfo,\n): tokenSrcValueInfo is TokenSrcValueInfoSingular {\n return isTokenTypeSingular(tokenSrcValueInfo?.type);\n}\nexport function isTokenSrcValueInfoComposite(\n tokenSrcValueInfo: TokenSrcValueInfo,\n): tokenSrcValueInfo is TokenSrcValueInfoComposite {\n return isTokenTypeComposite(tokenSrcValueInfo?.type);\n}\n\nexpectType<TokenSrcValueInfo[]>([\n {\n type: 'dimension',\n kind: 'static',\n value: '1px',\n },\n {\n type: 'transition',\n kind: 'ref',\n referencedTokenId: 'a.b',\n },\n {\n type: 'transition',\n kind: 'ref',\n // @ts-expect-error - with `kind: 'ref'`, `value` is not allowed\n value: '1px',\n },\n {\n kind: 'ref',\n type: 'duration',\n referencedTokenId: 'animation.slow',\n },\n {\n kind: 'static',\n type: 'cubicBezier',\n value: [0.4, 0.0, 0.2, 1],\n },\n {\n type: 'transition',\n kind: 'static',\n value: {\n delay: {\n kind: 'static',\n type: 'duration',\n value: '1ms',\n },\n duration: {\n kind: 'ref',\n type: 'duration',\n referencedTokenId: 'animation.slow',\n },\n timingFunction: {\n kind: 'static',\n type: 'cubicBezier',\n value: [0.4, 0.0, 0.2, 1],\n },\n },\n },\n]);\n\n/**\n * A common object that is used to represent a token in the app.\n * Used in functions for editing communication between UI forms, Xstate,\n * and `@knapsack/design-tokens-utils`.\n */\nexport type TokenInfo<\n TheTokenType extends TokenSrcValueInfo['type'] = TokenSrcValueInfo['type'],\n> = {\n tokenSrcValueInfo: TokenSrcValueInfo<TheTokenType>;\n tokenId: string;\n description?: string;\n};\n","import { Simplify, expectType, isObjKey, isObject } from '@knapsack/utils';\nimport {\n TokenDefinitionComposite,\n TokenDefinitionSingular,\n TokenReference,\n TokenType,\n TokenDefinition,\n} from './token-definitions';\nimport { TokenKsExtensions } from './token-misc';\n\nexport type TokenSrcCommon<TheType extends TokenType = TokenType> = {\n $type?: TokenDefinition<TheType>['type'];\n $description?: string;\n $extensions?: {\n 'cloud.knapsack'?: TokenKsExtensions;\n };\n};\n\nexport function isTokenSrcExtensions(\n extensionsObj: unknown,\n): extensionsObj is TokenSrcCommon['$extensions'] {\n return isObject(extensionsObj) && isObjKey('cloud.knapsack', extensionsObj);\n}\n\ntype CreateSrcValueForComposite<\n ValueObj extends Record<string, { type: TokenDefinitionSingular['type'] }>,\n> = {\n [Key in keyof ValueObj]:\n | TokenReference\n | TokenDefinitionSingular<ValueObj[Key]['type']>['value'];\n};\n\ntype TokenSrcValueCompositeRaw = {\n [TheTokenType in TokenDefinitionComposite['type']]: Simplify<{\n type: TheTokenType;\n value: Simplify<\n CreateSrcValueForComposite<\n TokenDefinitionComposite<TheTokenType>['value']\n >\n >;\n }>;\n}[TokenDefinitionComposite['type']];\n\ntype TokenSrcValueComposite<\n TT extends TokenSrcValueCompositeRaw['type'] = TokenSrcValueCompositeRaw['type'],\n> = Extract<TokenSrcValueCompositeRaw, { type: TT }>;\n\ntype TokenSrcValueRaw = TokenDefinitionSingular | TokenSrcValueComposite;\n\nexport type TokenSrcValue<\n Type extends\n | TokenDefinitionSingular['type']\n | TokenSrcValueComposite['type'] =\n | TokenDefinitionSingular['type']\n | TokenSrcValueComposite['type'],\n> = Extract<TokenSrcValueRaw, { type: Type }>['value'] | TokenReference;\n\nexpectType<TokenSrcValue[]>([\n '#ddd',\n true,\n [83, 1, 1, 1],\n {\n color: '#000',\n style: 'solid',\n width: '1px',\n },\n {\n inset: true,\n color: '#000',\n offsetX: '0px',\n offsetY: '{spacing.medium}',\n spread: '0px',\n blur: '0px',\n },\n {\n timingFunction: '{timing.ease}',\n duration: '{timing.duration.medium}',\n delay: '7ms',\n color: '#000',\n },\n]);\n\nexport type TokenSrc<\n TheType extends\n | TokenDefinitionSingular['type']\n | TokenSrcValueComposite['type'] =\n | TokenDefinitionSingular['type']\n | TokenSrcValueComposite['type'],\n> = Simplify<\n {\n $value: TokenSrcValue<TheType>;\n } & TokenSrcCommon<TheType>\n>;\n\nexport function isTokenSrc(tokenObject: unknown): tokenObject is TokenSrc {\n if (isObject(tokenObject) && isObjKey('$value', tokenObject)) return true;\n return false;\n}\n\nexport type TokenSrcGroup = TokenSrcCommon & {\n [key: string]:\n | TokenSrcGroup\n | TokenSrc\n | TokenSrcCommon\n | TokenSrcCommon['$extensions'];\n};\n\nexport function isTokenGroup(\n tokenObject: unknown,\n): tokenObject is TokenSrcGroup {\n // @todo improve\n return (\n isObject(tokenObject) &&\n !isTokenSrcExtensions(tokenObject) &&\n !isObjKey('$value', tokenObject) &&\n // ensuring we are not in `$extensions` object\n !isObjKey('cloud.knapsack', tokenObject)\n );\n}\n\n// Token VAR references look like TokenSrcGroup\nexport function isTokenTypeVarRef(tokenObject: unknown) {\n // It's at least a TokenSrcGroup\n if (isTokenGroup(tokenObject)) {\n // The specific key within collectionInfo with the var reference\n const varRefCollectionInfo =\n tokenObject.$extensions['cloud.knapsack'].group.collectionInfo;\n if (\n isObjKey('type', varRefCollectionInfo) &&\n isObjKey('referenceId', varRefCollectionInfo)\n ) {\n return true;\n }\n }\n\n return false;\n}\n","import { parseNumberWithUnit } from '@knapsack/utils';\n\nexport function getPrimitiveValue(\n tokenValue: unknown,\n): 'string' | 'number' | 'boolean' {\n const type = typeof tokenValue;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return type;\n }\n throw new Error(\n `Invalid token value type: ${JSON.stringify(\n type,\n )}. Token value is: ${JSON.stringify(tokenValue)}`,\n );\n}\n\nexport type TokenDimensionUnit = 'px' | 'rem' | 'em' | '%';\n\n/**\n * Dimension strings require ending in 'px' or 'rem'\n * @see `libs/types/src/app-client-data/design-tokens-types/token-definitions.ts`\n */\nexport const isDimensionString = (\n value: string,\n): value is `${number}${'px' | 'rem' | 'em' | '%'}` =>\n value.includes('px') ||\n value.includes('rem') ||\n value.includes('em') ||\n value.includes('%');\n\n/**\n * Pass in values like `'12px'` to get detailed info\n * @throws if value is not a number or does not end in supported unit\n */\nexport function parseTokenDimensionValue(valueToParse: string | number): {\n value: number;\n unit?: TokenDimensionUnit;\n} {\n const { value, unit } = parseNumberWithUnit(valueToParse);\n if (!unit) {\n return { value };\n }\n if (unit !== 'px' && unit !== 'rem' && unit !== 'em' && unit !== '%') {\n throw new Error(`Invalid unit \"${unit}\" for value: ${value}`);\n }\n\n return { value, unit };\n}\n","import type { CSSProperties } from 'react';\nimport type { JsonSchemaObject } from '../json-schema';\nimport { RendererId } from '../renderers';\nimport { isObject } from '../type-utils';\nimport type { BlockConfig } from './blocks';\nimport type { Page, PageTab } from './page';\nimport { TokenSrcValueInfo } from './design-tokens-types/token-src-value-info';\n\nexport interface KsStatus {\n id: string;\n title: string;\n color?: string;\n}\n\nexport interface KsStatusSet {\n id: string;\n title: string;\n statuses: KsStatus[];\n}\n\n/**\n * Used by template renderers in addition to `path`\n * Twig: `@components/button.twig`\n * Web Components: `my-button` => `<my-button>`\n * React: a named export of the file if not `default`\n * @todo Replace this with `rendererOptions`\n */\ntype TemplateAlias = string;\n\nexport type SlottedTemplateDemo = {\n type: 'template-demo';\n /** @deprecated */\n patternId: string;\n /** @deprecated */\n templateId: string;\n /**\n * The demo referenced by `demoId` is inlined here before sending to server to\n * render, but is never stored in the json data. If this is present, it is\n * used instead of the demo referenced by `demoId`. This is done to ensure\n * server has all the latest data for a template demo by ensuring it includes\n * it's slotted children's data.\n * @see {inlineDemoData}\n */\n demo?: DataDemo;\n demoId: DemoBase['id'];\n};\n\n/**\n * i.e. Given a React Component, `Button`, this set to null/false would be\n * `<Button>` and set to true it would just be a reference to it: `Button`\n * @see {KsSlotInfo['isTemplateReference']}\n */\nexport type SlottedTemplateReference = {\n type: 'template-reference';\n patternId: string;\n templateId: string;\n};\n\nexport type SlottedText = {\n type: 'text';\n text: string;\n};\n\nexport type SlottedData =\n | SlottedText\n | SlottedTemplateDemo\n | SlottedTemplateReference;\n\n/** @deprecated - just check `type` */\nexport const isSlottedText = (\n slottedData: unknown,\n): slottedData is SlottedText =>\n isObject(slottedData) && slottedData.type === 'text';\n\n/** @deprecated - just check `type` */\nexport function isSlottedTemplateDemo(\n slottedData: unknown,\n): slottedData is SlottedTemplateDemo {\n return isObject(slottedData) && slottedData.type === 'template-demo';\n}\n\n/** @deprecated - just check `type` */\nexport function isSlottedTemplateReference(\n slottedData: unknown,\n): slottedData is SlottedTemplateReference {\n return isObject(slottedData) && slottedData.type === 'template-reference';\n}\n\n/**\n * Collection ID: Mode ID\n */\nexport type ThemeDefinition = {\n [collectionId: string]: string;\n};\n\nexport type SlotOptions = {\n /**\n * @default 'div'\n */\n wrappingElementName?: string;\n cssClasses?: string[];\n align?: {\n value:\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'left'\n | 'center'\n | 'right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n };\n layout?: {\n value: 'horizontal' | 'vertical' | 'wrap';\n };\n gap?: {\n value: TokenSrcValueInfo<'dimension'>;\n };\n paddingHorizontal?: {\n value: TokenSrcValueInfo<'dimension'>[];\n };\n paddingVertical?: {\n value: TokenSrcValueInfo<'dimension'>[];\n };\n /**\n * Collection ID: Mode ID\n */\n theme?: ThemeDefinition;\n};\n\n/**\n * These are created from {SlotOptions}\n * Only available in App Client for rendering - this is NOT saved in App Client Data\n */\nexport type SlotOptionsComputed = {\n styles: CSSProperties;\n cssClasses: string[];\n /**\n * @default 'div'\n */\n wrappingElementName: string;\n /**\n * can't be `style` or `class` or `className`\n */\n attributes: {\n [attributeName: string]: string;\n };\n};\n\nexport type KnapsackTemplateData = {\n /**\n * @todo Ideal would be `{ [key: string]: string | boolean | number }`\n */\n props: {\n [prop: string]: any;\n };\n slots?: {\n [slotName: string]: Array<SlottedData>;\n };\n /**\n * Settings from users are stored here and saved in App Client Data\n * This is used to dynamically create `slotsOptionsComputed`\n */\n slotsOptions?: {\n [slotName: string]: SlotOptions;\n };\n /**\n * Use `slotsOptions` to set & save styles on slotted children\n * Never set nor stored in App Client Data that gets saved\n * This is only inlined in the demo data for rendering so the App Client can\n * apply the styles to the slotted children\n * @see {inlineDemoData}\n */\n slotsOptionsComputed?: {\n [slotName: string]: SlotOptionsComputed;\n };\n};\n\ntype DemoType = 'data' | 'template';\n\ntype DemoBase = {\n id: string;\n title: string;\n description?: string;\n /**\n * Would override what was on the template\n */\n assetSetId?: string;\n width?: number;\n height?: number;\n type: DemoType;\n /** Collection ID: Mode ID */\n theme?: ThemeDefinition;\n};\n\n/**\n * Shows usage\n */\nexport type DataDemo = DemoBase & {\n type: 'data';\n patternId: string;\n templateId: string;\n data: KnapsackTemplateData;\n};\n\n/**\n * Shows source code\n */\nexport type TemplateDemo = DemoBase & {\n type: 'template';\n templateInfo: {\n alias?: TemplateAlias;\n path?: string;\n };\n};\n\nexport type Demo = TemplateDemo | DataDemo;\n\nexport type RenderDataDemo = Demo & {\n inlineStyles?: string;\n bodyAttributes?: Record<string, string>;\n};\n\n/** @deprecated */\nexport enum StageLayouts {\n portrait = 'portrait',\n landscape = 'landscape',\n}\n\nexport function isDataDemo(demo: TemplateDemo | DataDemo): demo is DataDemo {\n return demo?.type === 'data';\n}\n\nexport function isTemplateDemo(demo: Demo): demo is TemplateDemo {\n return demo?.type === 'template';\n}\n\nexport type KsSlotInfo = {\n title: string;\n description?: string;\n disallowText?: boolean;\n isRequired?: boolean;\n allowOnlyOne?: boolean;\n /**\n * i.e. Given a React Component, `Button`, this set to null/false would be\n * `<Button>` and set to true it would just be a reference to it: `Button`\n * @see {SlottedTemplateReference}\n */\n isTemplateReference?: boolean;\n allowedPatternIds?: string[];\n};\n\n/**\n * Supersedes `schema`\n */\nexport type KsTemplateSpec = {\n /**\n * Attempt to create the props & slots spec by reading the source file.\n * Prevents ability to use spec editor.\n *\n * If `true`, then uses the template `alias` & `path` to find the file.\n *\n * If a string, then that file path is used in place of the source file.\n *\n * Scenario: the `path` is used to point to a compiled file w types stripped\n * and this is used to point to either the source file w types or the compiled\n * `.d.ts` file. Currently only React is supported. The file extension\n * determines if TypeScript (ts/tsx) or PropTypes (js/jsx) is used for\n * inference.\n */\n isInferred?: boolean | string;\n /**\n * JSON Schema defining the serializable data passed in\n * The classic, formerly `schema`\n */\n props?: JsonSchemaObject;\n /**\n * Child component slots\n */\n slots?: {\n [name: string]: KsSlotInfo;\n };\n /**\n * @todo evaluate & refine\n */\n // cssProps?: {\n // [name: string]: {\n // title: string;\n // description: string;\n // };\n // };\n hidePropsTable?: boolean;\n hideSlotsTable?: boolean;\n /**\n * Extra Docs are each shown in their own table.\n * Useful for non-traditional spec docs that are more template language specific.\n * Examples: events, methods, etc\n */\n extraDocs?: {\n id: string;\n title: string;\n description?: string;\n tableRows?: {\n [columnTitle: string]: string;\n }[];\n }[];\n};\n\nexport interface KnapsackPatternTemplate {\n id: string;\n title?: string;\n /**\n * Relative file path to the template from the config file it is declared in\n */\n path: string;\n\n alias?: TemplateAlias;\n /**\n * Which template language? i.e. `twig`, `react` Replaces\n * KnapsackTemplateRenderer.test which ran a test on the file path (similar to\n * how WebPack loader `test` works)\n */\n templateLanguageId: RendererId;\n assetSetIds?: string[];\n spec?: KsTemplateSpec;\n /** Array of demo IDs, actual demo data is stored in `db.demos.demosById` */\n demoIds: Demo['id'][];\n /** Array of block IDs, actual block content is stored in db.blocks.blocksById */\n blockIds: BlockConfig['id'][];\n}\n\nexport type KnapsackPattern = Page & {\n $schema?: string;\n statuses?: {\n [statusSetId: string]: string;\n };\n templates?: KnapsackPatternTemplate[];\n subPages?: {\n id: string;\n title: string;\n blockIds: BlockConfig['id'][];\n }[];\n designSrcComponentsById?: Record<\n string,\n {\n id: string;\n title: string;\n componentId: string;\n fileId: string;\n }\n >;\n /** Controls order of `templates` & `subPages` on Pattern Page */\n tabs?: PageTab[];\n\n aliases?: string[];\n /**\n * Prevents pattern from appearing in System Overview and Status Table blocks\n */\n hideFromOverviewBlocks?: boolean;\n /**\n * Prevents pattern from appearing as an option in Component Embed and\n * Component Demo blocks\n */\n hideFromComponentBlocks?: boolean;\n};\n\nexport interface KnapsackPatternTemplateCode {\n html: string;\n data?: Record<string, any>;\n templateSrc: string;\n usage: string;\n language: string;\n}\n\nexport type KnapsackPatternsConfig = {\n $schema?: string;\n statusSets: KsStatusSet[];\n};\n\nexport interface TemplateRendererMeta {\n id: RendererId;\n title: string;\n version?: string;\n aliasTitle?: string;\n aliasDescription?: string;\n aliasUse: 'off' | 'optional' | 'required';\n aliasIsJsNamedExport?: boolean;\n syntaxHighlightingLanguage?: string;\n enableDataDemos: boolean;\n enableTemplateDemos: boolean;\n hasSlotsSupport: boolean;\n hasSlotOptionsSupport?: boolean;\n hasInferSpecSupport: boolean;\n hasTemplateSuggestionsSupport: boolean;\n prototypingTemplate?: {\n path: string;\n alias?: string;\n spec: Pick<KsTemplateSpec, 'props' | 'slots' | 'isInferred'>;\n };\n}\n\nexport type PatternsState = {\n patterns: {\n [id: string]: KnapsackPattern;\n };\n renderers: Partial<\n Record<\n RendererId,\n {\n meta: TemplateRendererMeta;\n }\n >\n >;\n} & KnapsackPatternsConfig;\n","import { ColorConfig } from '../color-config';\n\nexport enum PageHeaderSizes {\n auto = 'auto',\n small = 'small',\n medium = 'medium',\n large = 'large',\n full = 'full',\n}\n\nexport interface PageHeaderSettings {\n size?: `${PageHeaderSizes}`;\n backgroundImage?: string;\n backgroundColor?: ColorConfig;\n backgroundOverlay?: boolean;\n backgroundSize?: 'cover' | 'contain' | 'string';\n backgroundPosition?: 'left' | 'center' | 'right' | 'string';\n backgroundRepeat?: 'no-repeat' | 'repeat-x' | 'repeat-y' | 'repeat';\n hideText?: boolean;\n textColorTitle?: ColorConfig;\n textColorDescription?: ColorConfig;\n}\n","import {\n // type structs validate that a value has a set of properties on it, but it does not assert anything about unspecified properties. This allows you to assert that a particular set of functionality exists without a strict equality check for properties.\n type,\n string,\n Describe,\n boolean,\n optional,\n array,\n number,\n define,\n} from 'superstruct';\nimport { isObjKey, isObject } from '../type-utils';\nimport type { KnapsackAssetSetsData } from './asset-sets';\nimport type { TokenSrcGroup } from './design-tokens-types';\nimport type { MetaState } from './meta';\nimport type { KnapsackNavsConfig } from './nav';\nimport type { KsFiles } from './files';\nimport type { BlockConfig } from './blocks';\nimport type { KnapsackCustomPagesData } from './custom-pages';\nimport type { Demo, PatternsState } from './patterns';\nimport { UiConfig } from '../ui-config';\nimport { PagesSettings } from './page';\nimport { BlocksSettings } from './blocks.settings';\nimport { DesignSrcFile } from '../design-src.types';\n\nexport * from './asset-sets';\nexport * from './blocks';\nexport * from './custom-pages';\nexport * from './design-tokens';\nexport * from './design-tokens-types';\nexport * from './nav';\nexport * from './files';\nexport * from './meta';\nexport * from './patterns';\nexport { PageHeaderSizes } from './page.header';\nexport type { PageHeaderSettings } from './page.header';\nexport type { PageTab, PageType } from './page';\n\nexport interface KsAppClientData {\n patternsState: PatternsState;\n customPagesState: KnapsackCustomPagesData;\n assetSetsState: KnapsackAssetSetsData;\n navsState: KnapsackNavsConfig;\n tokensSrc: TokenSrcGroup;\n metaState?: MetaState;\n filesState: KsFiles;\n db: {\n blocks: {\n byId: Record<string, BlockConfig>;\n settings: BlocksSettings;\n };\n demos: {\n byId: Record<string, Demo>;\n // \"never\" for now until there are actual settings for demos\n settings: Record<string, never>;\n };\n settings: {\n title?: string;\n hideTitleInNavigation?: boolean;\n logoUrl?: string;\n favicon?: `https://${string}`;\n theme?: UiConfig;\n pages?: PagesSettings;\n designSrcs?: {\n files?: DesignSrcFile[];\n };\n tokens?: {\n theming?: {\n /** Which template languages theming controls will show up for next to the components preview stage. */\n enabledRendererIds?: string[];\n };\n };\n prototyping?: {\n patternId: string;\n };\n };\n };\n}\n\nexport type KsAppClientDataNoMeta = Omit<KsAppClientData, 'metaState'>;\nexport type KsAppClientDataAndMeta = Required<KsAppClientData>;\n\nexport function isKsAppClientDataNoMeta(\n data: unknown,\n): data is KsAppClientDataNoMeta {\n if (!isObject(data)) return false;\n // TODO: bring in exhaustive key checking here so all keys are caught\n const requiredKeys: Array<keyof KsAppClientDataNoMeta> = [\n 'assetSetsState',\n 'customPagesState',\n 'navsState',\n 'patternsState',\n 'tokensSrc',\n 'db',\n ];\n if (!requiredKeys.every((key) => isObjKey(key, data))) return false;\n if (!isObjKey('metaState', data)) return true;\n return false;\n}\n\nexport const KsAppClientDataNoMetaStruct = define<KsAppClientDataNoMeta>(\n 'KsAppClientDataNoMeta',\n isKsAppClientDataNoMeta,\n);\n\nexport function isKsAppClientDataAndMeta(\n data: unknown,\n): data is KsAppClientDataAndMeta {\n if (!isObject(data)) return false;\n // TODO: bring in exhaustive key checking here so all keys are caught\n const requiredKeys: Array<keyof KsAppClientDataAndMeta> = [\n 'assetSetsState',\n 'customPagesState',\n 'navsState',\n 'patternsState',\n 'tokensSrc',\n 'metaState',\n 'db',\n ];\n return requiredKeys.every((key) => isObjKey(key, data));\n}\n\nexport const KsAppClientDataAndMetaStruct = define<KsAppClientDataAndMeta>(\n 'KsAppClientDataAndMeta',\n isKsAppClientDataAndMeta,\n);\n\nexport const KsMetaStateStruct: Describe<KsAppClientData['metaState']> = type({\n isLocalDev: boolean(),\n plugins: array(\n type({\n id: string(),\n hasContent: boolean(),\n clientPluginPath: optional(string()),\n cssPath: optional(string()),\n }),\n ),\n meta: optional(\n type({\n version: optional(string()),\n hasKnapsackCloud: boolean(),\n knapsackCloudSiteId: optional(string()),\n serverPort: optional(number()),\n websocketsPort: optional(number()),\n https: optional(boolean()),\n cacheDir: optional(string()),\n ksVersions: type({\n app: string(),\n }),\n }),\n ),\n});\n\nexport const isKsMetaState = KsMetaStateStruct.is;\n","import {\n // type structs validate that a value has a set of properties on it, but it does not assert anything about unspecified properties. This allows you to assert that a particular set of functionality exists without a strict equality check for properties.\n type,\n string,\n Describe,\n boolean,\n optional,\n array,\n number,\n define,\n} from 'superstruct';\nimport { isObjKey, isObject } from '../type-utils';\nimport type { KnapsackAssetSetsData } from './asset-sets';\nimport type { KsDesignTokensState } from './design-tokens';\nimport type { MetaState } from './meta';\nimport type { KnapsackNavsConfig } from './nav';\nimport type { KsFiles } from './files';\nimport type { KnapsackCustomPagesData } from './custom-pages';\nimport type { PatternsState } from './patterns';\nimport type { KnapsackSettings } from './settings';\n\nexport type {\n KsDesignToken,\n KsDesignTokenAttributes,\n KsDesignTokenData,\n KsDesignTokenDataGroup,\n KsDesignTokenSrc,\n KsDesignTokenSrcGroup,\n KsDesignTokensState,\n KsTokenType,\n KsTokenValue,\n KnapsackDesignToken,\n} from './design-tokens';\n\nexport interface KsAppClientDataV3 {\n settingsState: {\n settings: KnapsackSettings;\n };\n patternsState: PatternsState;\n customPagesState: KnapsackCustomPagesData;\n assetSetsState: KnapsackAssetSetsData;\n navsState: KnapsackNavsConfig;\n tokensState: KsDesignTokensState;\n metaState?: MetaState;\n filesState: KsFiles;\n}\n\nexport type KsAppClientDataNoMetaV3 = Omit<KsAppClientDataV3, 'metaState'>;\nexport type KsAppClientDataAndMetaV3 = Required<KsAppClientDataV3>;\n\nexport function isKsAppClientDataNoMetaV3(\n data: unknown,\n): data is KsAppClientDataNoMetaV3 {\n if (!isObject(data)) return false;\n const requiredKeys: Array<keyof KsAppClientDataNoMetaV3> = [\n 'assetSetsState',\n 'customPagesState',\n 'navsState',\n 'patternsState',\n 'settingsState',\n 'tokensState',\n ];\n if (!requiredKeys.every((key) => isObjKey(key, data))) return false;\n if (!isObjKey('metaState', data)) return true;\n return false;\n}\n\nexport const KsAppClientDataNoMetaStructV3 = define<KsAppClientDataNoMetaV3>(\n 'KsAppClientDataNoMeta',\n isKsAppClientDataNoMetaV3,\n);\n\nexport function isKsAppClientDataAndMetaV3(\n data: unknown,\n): data is KsAppClientDataAndMetaV3 {\n if (!isObject(data)) return false;\n const requiredKeys: Array<keyof KsAppClientDataAndMetaV3> = [\n 'assetSetsState',\n 'customPagesState',\n 'navsState',\n 'patternsState',\n 'settingsState',\n 'tokensState',\n 'metaState',\n ];\n return requiredKeys.every((key) => isObjKey(key, data));\n}\n\nexport const KsAppClientDataAndMetaStructV3 = define<KsAppClientDataAndMetaV3>(\n 'KsAppClientDataAndMeta',\n isKsAppClientDataAndMetaV3,\n);\n\nexport const KsMetaStateStructV3: Describe<KsAppClientDataV3['metaState']> =\n type({\n isLocalDev: boolean(),\n plugins: array(\n type({\n id: string(),\n hasContent: boolean(),\n clientPluginPath: optional(string()),\n cssPath: optional(string()),\n }),\n ),\n meta: optional(\n type({\n version: optional(string()),\n hasKnapsackCloud: boolean(),\n knapsackCloudSiteId: optional(string()),\n serverPort: optional(number()),\n websocketsPort: optional(number()),\n https: optional(boolean()),\n cacheDir: optional(string()),\n ksVersions: type({\n app: string(),\n }),\n }),\n ),\n });\n\nexport const isKsMetaStateV3 = KsMetaStateStructV3.is;\n","import { isDraft, type Draft } from 'immer';\nimport { Migration } from './migration.types';\nimport { KnapsackPattern, SlottedData } from '../app-client-data/patterns';\n\ntype Migration417DemosType = {\n version: string;\n checkIfNeeded: (appClientData: any) => boolean;\n migrate: (appClientData: Draft<any>) => void;\n};\n\nexport const migration417Demos: Migration417DemosType = {\n version: '4.1.7',\n checkIfNeeded: (appClientData) => {\n // this one will be tough to check for, so we'll just assume it's needed\n return true;\n },\n // note that `appClientData` is mutable since we're already in Immer\n migrate: (appClientData) => {\n if (!isDraft(appClientData)) {\n throw new Error(\n `Tried to run migrations on appClientData but it is not an Immer Draft`,\n );\n }\n Object.values(appClientData.patternsState.patterns).forEach(\n (\n pattern: Draft<\n KnapsackPattern & {\n demoSize?: string;\n }\n >,\n ) => {\n delete pattern.demoSize;\n },\n );\n\n Object.values(appClientData.db.demos.byId).forEach((demo) => {\n if (demo.type !== 'data') return;\n\n Object.entries(demo.data.slots ?? {}).forEach(([slotName, slotData]) => {\n demo.data.slots[slotName] = slotData.map(\n (slottedData: Draft<SlottedData | string>) => {\n // it used to be just a string\n if (typeof slottedData === 'string') {\n return {\n type: 'text',\n text: slottedData,\n };\n }\n if (\n // not doing anything with these\n slottedData.type === 'template-reference' ||\n // these already were migrated or made by the new editor\n slottedData.type === 'text'\n ) {\n return slottedData;\n }\n // these used to not have a type set\n slottedData.type = 'template-demo';\n return slottedData;\n },\n );\n });\n\n if (demo.patternId && demo.templateId) return;\n\n // using an IIFE so we can stop looping once we find it\n // would use `break` but it's a double loop\n (() => {\n for (const { id: pId, templates = [] } of Object.values(\n appClientData.patternsState.patterns,\n )) {\n for (const { id: tId, demoIds = [] } of templates) {\n if (demoIds.includes(demo.id)) {\n demo.patternId = pId;\n demo.templateId = tId;\n // found it - stop looking\n return;\n }\n }\n }\n })();\n });\n },\n} satisfies Migration;\n","// import { JSONSchema7 } from 'json-schema'; @todo consider using instead; though I'm not seeing it make it's way to the compiled JSON schema themselves via `convert-types-to-json-schmea.js`\n\ntype PropBase<Type = any> = {\n title?: string;\n description?: string;\n default?: Type;\n};\n\nexport enum PropTypeNames {\n 'string' = 'string',\n 'boolean' = 'boolean',\n 'number' = 'number',\n 'object' = 'object',\n 'options' = 'options',\n 'function' = 'function',\n 'customTypeScript' = 'customTypeScript',\n 'array' = 'array',\n 'arrayOfObjects' = 'arrayOfObjects',\n 'arrayOfStrings' = 'arrayOfStrings',\n 'arrayOfNumbers' = 'arrayOfNumbers',\n 'unknown' = 'unknown',\n}\nexport type PropTypeNamesList = keyof typeof PropTypeNames;\n\nexport type StringProp = {\n type: 'string';\n} & PropBase<string>;\n\nexport type BooleanProp = {\n type: 'boolean';\n} & PropBase<boolean>;\n\nexport type NumberProp = {\n type: 'number';\n} & PropBase<number>;\n\nexport type OptionsProp = {\n type: 'string';\n enum: string[];\n enumNames?: string[];\n} & PropBase<string>;\n\nexport type CustomTypeScriptProp = {\n /**\n * TypeScript type\n * @example (name: string) => void\n */\n tsType: string;\n type?: never;\n default?: string;\n} & PropBase<string>;\n\nexport type FunctionProp = {\n typeof: 'function';\n /**\n * TypeScript type\n * @example (name: string) => void\n */\n tsType: string;\n default?: string;\n type?: 'string';\n} & PropBase<string>;\n\nexport type ObjectProp = {\n type: 'object';\n additionalProperties?: boolean;\n required?: string[];\n properties: {\n [prop: string]: PropertyTypes;\n };\n} & PropBase;\n\nexport type ArrayProp = {\n type: 'array';\n items: PropertyTypes;\n} & PropBase<unknown[]>;\n\nexport type ArrayOfStringsProp = {\n type: 'array';\n uniqueItems?: boolean;\n items: StringProp;\n} & PropBase<unknown[]>;\n\nexport type ArrayOfNumbersProp = {\n type: 'array';\n uniqueItems?: boolean;\n items: NumberProp;\n} & PropBase<number[]>;\n\nexport type ArrayOfObjectsProp = {\n type: 'array';\n items: ObjectProp;\n} & PropBase<Array<Record<string, unknown>>>;\n\nexport type PropertyTypes =\n | StringProp\n | BooleanProp\n | NumberProp\n | OptionsProp\n | FunctionProp\n | CustomTypeScriptProp\n | ObjectProp\n | ArrayOfObjectsProp\n | ArrayOfStringsProp\n | ArrayOfNumbersProp\n | ArrayProp;\n\nexport const isStringProp = (prop: PropertyTypes): prop is StringProp =>\n 'type' in prop && prop.type === 'string' && !('enum' in prop);\nexport const isNumberProp = (prop: PropertyTypes): prop is NumberProp =>\n 'type' in prop && prop.type === 'number';\nexport const isBooleanProp = (prop: PropertyTypes): prop is BooleanProp =>\n 'type' in prop && prop.type === 'boolean';\nexport const isOptionsProp = (prop: PropertyTypes): prop is OptionsProp =>\n 'enum' in prop;\nexport const isFunctionProp = (prop: PropertyTypes): prop is FunctionProp =>\n 'typeof' in prop && prop?.typeof === 'function';\nexport const isCustomTypeScriptProp = (\n prop: PropertyTypes,\n): prop is CustomTypeScriptProp => !('typeof' in prop) && 'tsType' in prop;\nexport const isArrayOfObjectsProp = (\n prop: PropertyTypes,\n): prop is ArrayOfObjectsProp =>\n 'type' in prop &&\n prop.type === 'array' &&\n 'items' in prop &&\n prop.items.type === 'object';\nexport const isObjectProp = (prop: PropertyTypes): prop is ObjectProp =>\n 'type' in prop &&\n prop.type === 'object' &&\n 'properties' in prop &&\n Object.keys(prop.properties).length > 0;\nexport const isArrayOfStringsProp = (\n prop: PropertyTypes,\n): prop is ArrayOfStringsProp =>\n 'type' in prop &&\n prop.type === 'array' &&\n 'items' in prop &&\n prop.items.type === 'string';\nexport const isArrayOfNumbersProp = (\n prop: PropertyTypes,\n): prop is ArrayOfNumbersProp =>\n 'type' in prop &&\n prop.type === 'array' &&\n 'items' in prop &&\n prop.items.type === 'number';\n\nexport interface PropTypeDataBase {\n type: any;\n id: string;\n isRequired?: boolean;\n data: any;\n}\n\nexport interface StringPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.string;\n data: StringProp;\n}\n\nexport interface BooleanPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.boolean;\n data: BooleanProp;\n}\n\nexport interface NumberPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.number;\n data: NumberProp;\n}\n\nexport interface OptionsPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.options;\n data: OptionsProp;\n}\n\nexport interface FunctionPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.function;\n data: FunctionProp;\n}\n\nexport interface CustomTypeScriptPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.customTypeScript;\n data: CustomTypeScriptProp;\n}\n\nexport interface ObjectPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.object;\n data: ObjectProp;\n}\n\nexport interface ArrayOfObjectsPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.arrayOfObjects;\n data: ArrayOfObjectsProp;\n}\n\nexport interface ArrayOfStringsPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.arrayOfStrings;\n data: ArrayOfStringsProp;\n}\n\nexport interface ArrayOfNumbersPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.arrayOfNumbers;\n data: ArrayOfNumbersProp;\n}\n\nexport interface ArrayPropTypeData extends PropTypeDataBase {\n type: typeof PropTypeNames.array;\n data: ArrayProp;\n}\n\nexport type PropTypeData =\n | StringPropTypeData\n | BooleanPropTypeData\n | NumberPropTypeData\n | OptionsPropTypeData\n | FunctionPropTypeData\n | CustomTypeScriptPropTypeData\n | ObjectPropTypeData\n | ArrayOfObjectsPropTypeData\n | ArrayOfStringsPropTypeData\n | ArrayOfNumbersPropTypeData;\n\nexport type JsonSchemaObject<PropNames extends string = string> = {\n $schema?: string;\n title?: string;\n description?: string;\n type: 'object';\n required?: PropNames[];\n properties: Record<PropNames, PropertyTypes>;\n examples?: Record<string, unknown>[];\n};\n","import * as s from 'superstruct';\nimport type { Patch } from 'immer';\nimport type { SetOptional } from '@knapsack/utils';\nimport type { UUID, DateString } from './misc';\n\n/**\n * Patch\n */\n\nexport type { Patch };\n\nconst PatchStructRuntime = s.object({\n op: s.union([s.literal('replace'), s.literal('remove'), s.literal('add')]),\n path: s.array(s.union([s.string(), s.number()])),\n value: s.optional(s.any()),\n});\nconst PatchStruct: s.Describe<Patch> = PatchStructRuntime;\n\nexport const isPatch = (patch: unknown): patch is Patch =>\n PatchStruct.is(patch);\n\nconst PatchesStructRuntime = s.array(PatchStructRuntime);\nconst PatchesStruct: s.Describe<Patch[]> = PatchesStructRuntime;\n\nexport const isPatches = (patches: unknown): patches is Patch[] =>\n PatchesStruct.is(patches);\n\n/**\n * KsRemoteChange\n */\nexport type KsChange<Event extends { type: string } = { type: string }> = {\n patches: Patch[];\n inversePatches: Patch[];\n event: Event;\n id: UUID;\n date: DateString;\n};\nexport type KsRemoteChange = SetOptional<KsChange, 'inversePatches' | 'event'>;\n\nconst KsRemoteChangeRuntime = s.type({\n patches: PatchesStructRuntime,\n inversePatches: s.optional(PatchesStructRuntime),\n event: s.optional(s.object({ type: s.string() })),\n id: s.string(),\n date: s.string(),\n userId: s.optional(s.string()),\n});\nconst KsRemoteChangeStruct: s.Describe<KsRemoteChange> = KsRemoteChangeRuntime;\n\nexport const isKsRemoteChange = (change: unknown): change is KsRemoteChange =>\n KsRemoteChangeStruct.is(change);\n\nconst KsRemoteChangesStructRuntime = s.array(KsRemoteChangeRuntime);\nexport const KsRemoteChangesStruct: s.Describe<KsRemoteChange[]> =\n KsRemoteChangesStructRuntime;\n\nexport const isKsRemoteChanges = (\n changes: unknown,\n): changes is KsRemoteChange[] => KsRemoteChangesStruct.is(changes);\n","import type { FeedbackTypes } from './misc';\n\nexport enum KsRendererClientEvents {\n ready = 'ready',\n}\n\n/**\n * Message sent from the renderer client (in the iframe) to the App UI parent window\n * using `window.parent.postMessage()`.\n * Note that this likely will become a union type of all possible messages\n */\nexport type KsRendererClientMsg =\n | {\n /**\n * Sent when a `ResizeObserver` detects a change in the contents height or width.\n */\n type: 'ksRendererClient.contentResized';\n height: number;\n width: number;\n }\n | {\n type: 'ksRendererClient.showToast';\n msg: string;\n feedbackType?: FeedbackTypes;\n };\n\n/**\n * The meta data is stored in a script tag with this id\n * @see {KsRendererClientMeta}\n */\nexport const ksRendererClientMetaId = 'ks-meta';\n\n/**\n * Metadata about the current renderer client demo\n * @see {ksRendererClientMetaId} for the ID of the script tag\n */\nexport interface KsRendererClientMeta {\n patternId: string;\n templateId: string;\n demoId: string;\n assetSetId: string;\n isInIframe: boolean;\n websocketsPort: number;\n}\n","export enum GitProviderType {\n GitHub = 'GitHub',\n GitLab = 'GitLab',\n GitLabRest = 'GitLabRest',\n Bitbucket = 'Bitbucket',\n Azure = 'Azure',\n}\n\nexport type FileAddition = {\n /** base64 */\n contents: string;\n path: string;\n\n /** Action to perform: create, delete, move, update, or chmod. */\n action?: RestActions;\n /** Content of the file. */\n content?: string;\n /** Full path to the file. */\n filePath?: string;\n /** Encoding of the file. Default is text. */\n encoding?: TextEncoding;\n /** Last known file commit ID. */\n lastCommitId?: string;\n /** Original full path to the file being moved. */\n previousPath?: string;\n};\n\nexport type FileDeletion = {\n path: string;\n};\n\nexport enum MergeableState {\n Conflicting = 'CONFLICTING',\n Mergeable = 'MERGEABLE',\n Unknown = 'UNKNOWN',\n}\n\nexport enum RestActions {\n Create = 'CREATE',\n Move = 'MOVE',\n Update = 'UPDATE',\n Chmod = 'CHMOD',\n}\n\nexport enum TextEncoding {\n Base64 = 'BASE64',\n Text = 'TEXT',\n}\n\nexport type FileChanges = {\n /** File to add or change. */\n additions?: FileAddition[];\n\n /** Files to delete. */\n deletions?: FileDeletion[];\n\n /** Last known file commit ID. */\n lastCommitId?: string;\n};\n\nexport type CommitAction = Record<string, unknown>;\n\nexport interface RepoLabel {\n name: string;\n /** ID optional because bitbucket does not provide id. We might be able to generate one if its required, eg. reponame-labelname */\n id?: string;\n}\n\nexport interface RepoInfo {\n id: string;\n url: string;\n name: string;\n ownerName?: string;\n defaultBranch?: any;\n}\n\n// 'BranchInfo' name is currently taken by GitLab generated queries. Thus 'BranchInfoResult'\nexport interface BranchInfoResult {\n sha: string;\n shortSha?: string;\n associatedPullRequests?: Pr[];\n additions?: number;\n commitUrl?: string;\n deletions?: number;\n id?: string; // In GitLab, this is the branch name. Modelled this way to make deleteBranch work.\n default?: boolean;\n}\n\nexport interface PrInfo {\n url: string;\n number: number;\n id: string;\n}\n\nexport interface Pr {\n id: string;\n title: string;\n createdAt: string;\n headRef: {\n id?: string;\n name?: string;\n target: BranchInfoResult;\n };\n mergeable: MergeableState;\n merged: boolean;\n number: number;\n body: string;\n isDraft: boolean;\n url: string;\n author: {\n login: string;\n avatarUrl: string;\n };\n diffHeadSha?: string;\n targetBranch?: string;\n version?: string; // needed for bitbucket merge\n}\n\nexport interface GitProvider {\n type: GitProviderType;\n createBranch: (opt: { branch: string }) => Promise<BranchInfoResult>;\n commitOnBranch: (opt: {\n branch: string;\n message: string;\n fileChanges: FileChanges;\n }) => Promise<Record<string, unknown> | void>;\n getRepoLabels: () => Promise<RepoLabel[]>;\n getRepoInfo: () => Promise<RepoInfo>;\n getBranchInfo: ({ branch }: { branch: string }) => Promise<BranchInfoResult>;\n getPrs: () => Promise<Pr[]>;\n getPr: ({ prNumber }: { prNumber: number }) => Promise<Pr>;\n getTree?: (opt: { branch: string }) => Promise<{\n treeItems: {\n path: string;\n type: 'blob';\n /** SHA-1, use https://www.npmjs.com/package/git-hash-object */\n sha: string;\n url?: string;\n }[];\n }>;\n mergePr: ({ prNumber }: { prNumber: number }) => Promise<boolean>;\n createPr: ({\n siteId,\n branch,\n title,\n body,\n labelIds,\n }: {\n siteId: string;\n branch: string;\n title: string;\n body?: string;\n labelIds?: string[];\n }) => Promise<PrInfo>;\n deleteBranch: ({ id, branch }: { id: string; branch: string }) => Promise<{\n clientMutationId?: string;\n }>;\n getFileInfoOnBranchByPath: (opt: {\n filePath: string;\n branch: string;\n }) => Promise<{ exists: boolean; filePath: string }>;\n}\n","/**\n * The roles here are duplicates of the roles in the database.\n * It needs to be here, in the types package, so it can be used in all packages.\n * If we pull it in from `@knapsack/hasura-gql-client`, which is the source, we get a dependency cycle. So we do it this way.\n * If the roles change in the database, we need to change them here too. We will get a build error if we don't (see code in `@knapsack/hasura-gql-client`).\n */\n\nexport const rolesById = {\n ADMIN: 'ADMIN',\n ANONYMOUS: 'ANONYMOUS',\n CONTRIBUTOR: 'CONTRIBUTOR',\n EDITOR: 'EDITOR',\n MANAGER: 'MANAGER',\n VIEWER: 'VIEWER',\n} as const;\nexport const roles = Object.values(rolesById);\nexport type Role = keyof typeof rolesById;\n","import { KsAppClientDataAndMeta } from '@knapsack/types';\n\nexport type SiteDeployedWebhookBody = {\n siteId: string;\n appClientData: KsAppClientDataAndMeta;\n};\n\nexport const siteDeployedWebhookEndpoint = '/site-deployed';\n\nexport const gitHubOauthInternalEndpoint = '/github-auth';\n","import { isUrl } from '@knapsack/utils';\n\nconst { KS_DB_URL } = process.env;\nif (KS_DB_URL && !isUrl(KS_DB_URL)) {\n throw new Error(`KS_DB_URL is not a valid URL: '${KS_DB_URL}'`);\n}\nconst dbUrl = KS_DB_URL || 'https://db.knapsack.cloud';\nconst dbGqlEndpoint = new URL('/v1/graphql', dbUrl).toString();\n\nexport const ksUrls = {\n /**\n * Base URL for Knapsack DB (Hasura)\n * @default 'https://db.knapsack.cloud'\n */\n dbUrl,\n /**\n * App DB GraphQL endpoint for connecting to Hasura GraphQL.\n * @default 'https://db.knapsack.cloud/v1/graphql'\n */\n dbGqlEndpoint,\n};\n","export const ksHttpHeaders = {\n siteId: 'X-KS-Site-ID',\n instanceId: 'X-KS-Instance-Id',\n appClientVersion: 'X-KS-App-Client-Version',\n};\n"]}
|