{"version":3,"file":"app.d9bc7012bf9c99ef64c7.js","mappings":"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","sources":["webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Util.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Types.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/lib/big.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Numeric.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Decimal.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/BigInt.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Date.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/RegExp.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/String.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Option.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Global.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Native.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Double.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Array.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/List.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Result.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Seq.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/FSharp.Core.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Map.js","webpack:///./.fable-build/Omnicv.Shared.Common/Validation.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/MapUtil.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/MutableSet.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/MutableMap.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Seq2.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Char.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Unicode.13.0.0.js","webpack:///./.fable-build/Omnicv.Shared.Common/TagUtils.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Reflection.js","webpack:///./.fable-build/modules/Omnicv.Diary.Shared/Data.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/AsyncBuilder.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Choice.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Async.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Event.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Timer.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Observable.js","webpack:///./.fable-build/fable_modules/Fable.Elmish.4.2.0/cmd.fs.js","webpack:///./.fable-build/fable_modules/Fable.Elmish.4.2.0/prelude.fs.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Int32.js","webpack:///./.fable-build/fable_modules/Fable.Remoting.Client.7.32.0/Types.fs.js","webpack:///./src/javascript/common.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/System.Text.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/TimeSpan.js","webpack:///./.fable-build/fable_modules/Fable.React.9.4.0/Fable.React.Props.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Common.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Components/Modal.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Box.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Heading.fs.js","webpack:///./.fable-build/fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js","webpack:///./.fable-build/fable_modules/Feliz.2.9.0/Interop.fs.js","webpack:///./.fable-build/Omnicv.Shared.Common/TimeUtils.js","webpack:///./.fable-build/Omnicv.Shared.Common/CoreEventInfo.js","webpack:///./.fable-build/Omnicv.Client.Common/Utils.js","webpack:///./.fable-build/fable_modules/Fable.Remoting.Client.7.32.0/Extensions.fs.js","webpack:///./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/TypeInfo.fs.js","webpack:///./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/TypeInfo.Converter.fs.js","webpack:///./.fable-build/fable_modules/Fable.Remoting.Client.7.32.0/Http.fs.js","webpack:///./.fable-build/fable_modules/Fable.Parsimmon.4.1.0/Parsimmon.js","webpack:///./.fable-build/fable_modules/Fable.Parsimmon.4.1.0/Parsimmon.fs.js","webpack:///./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/Json.fs.js","webpack:///./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/Parser.fs.js","webpack:///./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/SimpleJson.fs.js","webpack:///./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/TypeCheck.fs.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Uri.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Long.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/DateOffset.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/DateOnly.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Guid.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/BitConverter.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Set.js","webpack:///./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/Json.Converter.fs.js","webpack:///./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/isBrowser.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/TimeOnly.js","webpack:///./.fable-build/fable_modules/Fable.SimpleJson.3.24.0/quote.js","webpack:///./.fable-build/fable_modules/Fable.Remoting.Client.7.32.0/Proxy.fs.js","webpack:///./.fable-build/fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js","webpack:///./.fable-build/Omnicv.Shared.Common/ProductDetails.js","webpack:///./.fable-build/modules/Omnicv.Diary.Shared/DiaryAPI.js","webpack:///./.fable-build/modules/Omnicv.Diary.Client/Server.js","webpack:///./.fable-build/Omnicv.Shared/FitnessAPI.js","webpack:///./.fable-build/Omnicv.Shared/API.js","webpack:///./.fable-build/Omnicv.Client.Common/SharedView.js","webpack:///./.fable-build/Omnicv.Client.Common/Extensions.js","webpack:///./.fable-build/Omnicv.Shared/PhysicalAPI.js","webpack:///./.fable-build/Omnicv.Shared/FinancialAPI.js","webpack:///./.fable-build/Omnicv.Shared/ModulesRegistration.js","webpack:///./.fable-build/fable_modules/Fable.Elmish.UrlParser.1.0.2/prelude.fs.js","webpack:///./.fable-build/fable_modules/Fable.Elmish.UrlParser.1.0.2/parser.fs.js","webpack:///./.fable-build/fable_modules/Fable.Elmish.4.2.0/sub.fs.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Range.js","webpack:///./.fable-build/fable_modules/Fable.Elmish.4.2.0/ring.fs.js","webpack:///./.fable-build/fable_modules/Fable.Elmish.4.2.0/program.fs.js","webpack:///./.fable-build/fable_modules/Fable.Elmish.Browser.4.0.3/navigation.fs.js","webpack:///./.fable-build/Omnicv.Client.Common/Router.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Button.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Icon.fs.js","webpack:///./.fable-build/Omnicv.Client.Common/ClientModule.js","webpack:///./.fable-build/modules/Omnicv.Diary.Client/DiaryClientModule.js","webpack:///./.fable-build/PhysicalClientModule.js","webpack:///./.fable-build/FinancialClientModule.js","webpack:///./.fable-build/FitnessClientModule.js","webpack:///./.fable-build/ClientRegistration.js","webpack:///./.fable-build/fable_modules/Feliz.Bulma.3.0.0/ElementBuilders.fs.js","webpack:///./.fable-build/Omnicv.Client.Common/Components/Notification.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Layouts/Container.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Components/Menu.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Tag.fs.js","webpack:///./.fable-build/Omnicv.Client.Common/Components/RatingStars.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Components/Card.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Content.fs.js","webpack:///./.fable-build/fable_modules/Fable.Formatting.Markdown.1.0.1/Range.fs.js","webpack:///./.fable-build/fable_modules/Fable.Formatting.Markdown.1.0.1/Collections.fs.js","webpack:///./.fable-build/fable_modules/Fable.Formatting.Markdown.1.0.1/StringParsing.fs.js","webpack:///./.fable-build/fable_modules/Fable.Formatting.Markdown.1.0.1/MarkdownModel.fs.js","webpack:///./.fable-build/fable_modules/Fable.Formatting.Markdown.1.0.1/MarkdownParser.fs.js","webpack:///./.fable-build/fable_modules/Fable.Formatting.Markdown.1.0.1/MarkdownUtils.fs.js","webpack:///./.fable-build/fable_modules/Fable.Formatting.Markdown.1.0.1/HtmlFormatting.fs.js","webpack:///./.fable-build/fable_modules/Fable.Formatting.Markdown.1.0.1/Markdown.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Layouts/Level.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Components/Message.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Layouts/Columns.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Layouts/Column.fs.js","webpack:///./.fable-build/modules/Omnicv.Diary.Client/DiaryClientUtils.js","webpack:///./.fable-build/Pages/Index.js","webpack:///./.fable-build/Omnicv.Client.Common/CommonServer.js","webpack:///./.fable-build/Pages/About.js","webpack:///./src/javascript/flex-form.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Form/Field.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Form/Label.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Form/Control.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Form/Help.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Form/Textarea.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Form/Input.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Form/Select.fs.js","webpack:///./.fable-build/fable_modules/Fulma.Extensions.Wikiki.Checkradio.3.0.0/Checkradio.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Form/Checkbox.fs.js","webpack:///./.fable-build/fable_modules/Feliz.SelectSearch.3.1.0/SelectSearch.fs.js","webpack:///./.fable-build/Omnicv.Client.Common/MapLiteral.js","webpack:///./.fable-build/fable_modules/Fable.Promise.3.2.0/Promise.fs.js","webpack:///./.fable-build/Omnicv.Client.Common/Components/EventInfoManager.js","webpack:///./.fable-build/Omnicv.Client.Common/Components/FlexForm.js","webpack:///./.fable-build/Pages/ContactForm.js","webpack:///./.fable-build/Pages/Login.js","webpack:///./.fable-build/Pages/StaticPage.js","webpack:///./.fable-build/Pages/MyProfile.js","webpack:///./.fable-build/modules/Omnicv.Diary.Client/Pages/MainDiaryView.js","webpack:///./.fable-build/modules/Omnicv.Diary.Client/Pages/SearchDiaryView.js","webpack:///./.fable-build/Omnicv.Client.Common/Components/AddEditRecordFlexFormBase.js","webpack:///./.fable-build/Omnicv.Client.Common/Components/ViewRecords.js","webpack:///./.fable-build/Omnicv.Client.Common/CurrencyUtils.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Table.fs.js","webpack:///./.fable-build/Pages/Financial/FinancialCommon.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Components/Tabs.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Elements/Form/File.fs.js","webpack:///./.fable-build/Pages/Financial/MainFinancialView.js","webpack:///./.fable-build/Pages/Financial/ViewAsset.js","webpack:///./.fable-build/Pages/Financial/ViewAssetsSummary.js","webpack:///./.fable-build/Pages/Fitness/FitnessCommon.js","webpack:///./.fable-build/Pages/Fitness/MainFitnessView.js","webpack:///./.fable-build/Pages/Fitness/FitnessEntriesView.js","webpack:///./.fable-build/Omnicv.Client.Common/Components/AddEditSimpleFlexFormBase.js","webpack:///./.fable-build/Pages/Fitness/AddEditExerciseRecord.js","webpack:///./.fable-build/fable_modules/fable-library-js.4.24.0/Boolean.js","webpack:///./.fable-build/Components/Navigation.js","webpack:///./.fable-build/modules/Omnicv.Diary.Client/Pages/AddEditDiaryView.js","webpack:///./.fable-build/Pages/Physical/PhysicalCommon.js","webpack:///./.fable-build/Pages/Physical/MainPhysicalView.js","webpack:///./.fable-build/Pages/Physical/AddEditPhysicalView.js","webpack:///./.fable-build/Pages/Fitness/AddEditFitnessView.js","webpack:///./.fable-build/Pages/Fitness/AddEditWorkoutRecord.js","webpack:///./.fable-build/fable_modules/Fable.Elmish.React.4.0.0/common.fs.js","webpack:///./.fable-build/Omnicv.Client.Common/ReactErrorBoundary.js","webpack:///./.fable-build/fable_modules/Fable.Elmish.React.4.0.0/react.fs.js","webpack:///./.fable-build/App.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Layouts/Hero.fs.js","webpack:///./.fable-build/fable_modules/Fable.Elmish.Browser.4.0.3/parser.fs.js","webpack:///./.fable-build/fable_modules/Fulma.3.0.0/Layouts/Footer.fs.js"],"sourcesContent":["export function isArrayLike(x) {\n return Array.isArray(x) || ArrayBuffer.isView(x);\n}\nexport function isIterable(x) {\n return x != null && typeof x === \"object\" && Symbol.iterator in x;\n}\nexport function isEnumerable(x) {\n return x != null && typeof x.GetEnumerator === \"function\";\n}\nexport function isComparer(x) {\n return x != null && typeof x.Compare === \"function\";\n}\nexport function isComparable(x) {\n return x != null && typeof x.CompareTo === \"function\";\n}\nexport function isEquatable(x) {\n return x != null && typeof x.Equals === \"function\";\n}\nexport function isHashable(x) {\n return x != null && typeof x.GetHashCode === \"function\";\n}\nexport function isDisposable(x) {\n return x != null && typeof x.Dispose === \"function\";\n}\nexport function disposeSafe(x) {\n if (isDisposable(x)) {\n x.Dispose();\n }\n}\nexport function defaultOf() {\n return null;\n}\nexport function sameConstructor(x, y) {\n return Object.getPrototypeOf(x)?.constructor === Object.getPrototypeOf(y)?.constructor;\n}\nexport class Enumerable {\n constructor(en) {\n this.en = en;\n }\n GetEnumerator() { return this.en; }\n \"System.Collections.IEnumerable.GetEnumerator\"() { return this.en; }\n [Symbol.iterator]() {\n return this;\n }\n next() {\n const hasNext = this.en[\"System.Collections.IEnumerator.MoveNext\"]();\n const current = hasNext ? this.en[\"System.Collections.Generic.IEnumerator`1.get_Current\"]() : undefined;\n return { done: !hasNext, value: current };\n }\n}\nexport class Enumerator {\n constructor(iter) {\n this.iter = iter;\n this.current = defaultOf();\n }\n [\"System.Collections.Generic.IEnumerator`1.get_Current\"]() {\n return this.current;\n }\n [\"System.Collections.IEnumerator.get_Current\"]() {\n return this.current;\n }\n [\"System.Collections.IEnumerator.MoveNext\"]() {\n const cur = this.iter.next();\n this.current = cur.value;\n return !cur.done;\n }\n [\"System.Collections.IEnumerator.Reset\"]() {\n throw new Error(\"JS iterators cannot be reset\");\n }\n Dispose() {\n return;\n }\n}\nexport function toEnumerable(e) {\n if (isEnumerable(e)) {\n return e;\n }\n else {\n return new Enumerable(new Enumerator(e[Symbol.iterator]()));\n }\n}\nexport function getEnumerator(e) {\n if (isEnumerable(e)) {\n return e.GetEnumerator();\n }\n else {\n return new Enumerator(e[Symbol.iterator]());\n }\n}\nexport function toIterator(en) {\n return {\n next() {\n const hasNext = en[\"System.Collections.IEnumerator.MoveNext\"]();\n const current = hasNext ? en[\"System.Collections.Generic.IEnumerator`1.get_Current\"]() : undefined;\n return { done: !hasNext, value: current };\n },\n };\n}\nexport function enumerableToIterator(e) {\n return toIterator(toEnumerable(e).GetEnumerator());\n}\nexport class Comparer {\n constructor(f) {\n this.Compare = f || compare;\n }\n}\nexport function comparerFromEqualityComparer(comparer) {\n // Sometimes IEqualityComparer also implements IComparer\n if (isComparer(comparer)) {\n return new Comparer(comparer.Compare);\n }\n else {\n return new Comparer((x, y) => {\n const xhash = comparer.GetHashCode(x);\n const yhash = comparer.GetHashCode(y);\n if (xhash === yhash) {\n return comparer.Equals(x, y) ? 0 : -1;\n }\n else {\n return xhash < yhash ? -1 : 1;\n }\n });\n }\n}\nexport function assertEqual(actual, expected, msg) {\n if (!equals(actual, expected)) {\n throw Object.assign(new Error(msg || `Expected: ${expected} - Actual: ${actual}`), {\n actual,\n expected,\n });\n }\n}\nexport function assertNotEqual(actual, expected, msg) {\n if (equals(actual, expected)) {\n throw Object.assign(new Error(msg || `Expected: ${expected} - Actual: ${actual}`), {\n actual,\n expected,\n });\n }\n}\nexport class Lazy {\n constructor(factory) {\n this.factory = factory;\n this.isValueCreated = false;\n }\n get Value() {\n if (!this.isValueCreated) {\n this.createdValue = this.factory();\n this.isValueCreated = true;\n }\n return this.createdValue;\n }\n get IsValueCreated() {\n return this.isValueCreated;\n }\n}\nexport function lazyFromValue(v) {\n return new Lazy(() => v);\n}\nexport function padWithZeros(i, length) {\n return i.toString(10).padStart(length, \"0\");\n}\nexport function padLeftAndRightWithZeros(i, lengthLeft, lengthRight) {\n return i.toString(10).padStart(lengthLeft, \"0\").padEnd(lengthRight, \"0\");\n}\nexport function dateOffset(date) {\n const date1 = date;\n return typeof date1.offset === \"number\"\n ? date1.offset\n : (date.kind === 1 /* DateKind.UTC */\n ? 0 : date.getTimezoneOffset() * -60000);\n}\nexport function int16ToString(i, radix) {\n i = i < 0 && radix != null && radix !== 10 ? 0xFFFF + i + 1 : i;\n return i.toString(radix);\n}\nexport function int32ToString(i, radix) {\n i = i < 0 && radix != null && radix !== 10 ? 0xFFFFFFFF + i + 1 : i;\n return i.toString(radix);\n}\nexport function int64ToString(i, radix) {\n i = i < 0 && radix != null && radix !== 10 ? 0xffffffffffffffffn + i + 1n : i;\n return i.toString(radix);\n}\nexport class ObjectRef {\n static id(o) {\n if (!ObjectRef.idMap.has(o)) {\n ObjectRef.idMap.set(o, ++ObjectRef.count);\n }\n return ObjectRef.idMap.get(o);\n }\n}\nObjectRef.idMap = new WeakMap();\nObjectRef.count = 0;\nexport function stringHash(s) {\n let i = 0;\n let h = 5381;\n const len = s.length;\n while (i < len) {\n h = (h * 33) ^ s.charCodeAt(i++);\n }\n return h;\n}\nexport function numberHash(x) {\n return x * 2654435761 | 0;\n}\nexport function bigintHash(x) {\n return stringHash(x.toString(32));\n}\n// From https://stackoverflow.com/a/37449594\nexport function combineHashCodes(hashes) {\n let h1 = 0;\n const len = hashes.length;\n for (let i = 0; i < len; i++) {\n const h2 = hashes[i];\n h1 = ((h1 << 5) + h1) ^ h2;\n }\n return h1;\n}\nexport function physicalHash(x) {\n if (x == null) {\n return 0;\n }\n switch (typeof x) {\n case \"boolean\":\n return x ? 1 : 0;\n case \"number\":\n return numberHash(x);\n case \"bigint\":\n return bigintHash(x);\n case \"string\":\n return stringHash(x);\n default:\n return numberHash(ObjectRef.id(x));\n }\n}\nexport function identityHash(x) {\n if (isHashable(x)) {\n return x.GetHashCode();\n }\n else {\n return physicalHash(x);\n }\n}\nexport function dateHash(x) {\n return x.getTime();\n}\nexport function arrayHash(x) {\n const len = x.length;\n const hashes = new Array(len);\n for (let i = 0; i < len; i++) {\n hashes[i] = structuralHash(x[i]);\n }\n return combineHashCodes(hashes);\n}\nexport function structuralHash(x) {\n if (x == null) {\n return 0;\n }\n switch (typeof x) {\n case \"boolean\":\n return x ? 1 : 0;\n case \"number\":\n return numberHash(x);\n case \"bigint\":\n return bigintHash(x);\n case \"string\":\n return stringHash(x);\n default: {\n if (isHashable(x)) {\n return x.GetHashCode();\n }\n else if (isArrayLike(x)) {\n return arrayHash(x);\n }\n else if (x instanceof Date) {\n return dateHash(x);\n }\n else if (Object.getPrototypeOf(x)?.constructor === Object) {\n // TODO: check call-stack to prevent cyclic objects?\n const hashes = Object.values(x).map((v) => structuralHash(v));\n return combineHashCodes(hashes);\n }\n else {\n // Classes don't implement GetHashCode by default, but must use identity hashing\n return numberHash(ObjectRef.id(x));\n // return stringHash(String(x));\n }\n }\n }\n}\n// Intended for custom numeric types, like long or decimal\nexport function fastStructuralHash(x) {\n return stringHash(String(x));\n}\n// Intended for declared types that may or may not implement GetHashCode\nexport function safeHash(x) {\n // return x == null ? 0 : isHashable(x) ? x.GetHashCode() : numberHash(ObjectRef.id(x));\n return identityHash(x);\n}\nexport function equalArraysWith(x, y, eq) {\n if (x == null) {\n return y == null;\n }\n if (y == null) {\n return false;\n }\n if (x.length !== y.length) {\n return false;\n }\n for (let i = 0; i < x.length; i++) {\n if (!eq(x[i], y[i])) {\n return false;\n }\n }\n return true;\n}\nexport function equalArrays(x, y) {\n return equalArraysWith(x, y, equals);\n}\nfunction equalObjects(x, y) {\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y);\n if (xKeys.length !== yKeys.length) {\n return false;\n }\n xKeys.sort();\n yKeys.sort();\n for (let i = 0; i < xKeys.length; i++) {\n if (xKeys[i] !== yKeys[i] || !equals(x[xKeys[i]], y[yKeys[i]])) {\n return false;\n }\n }\n return true;\n}\nexport function physicalEquality(x, y) {\n return x === y;\n}\nexport function equals(x, y) {\n if (x === y) {\n return true;\n }\n else if (x == null) {\n return y == null;\n }\n else if (y == null) {\n return false;\n }\n else if (isEquatable(x)) {\n return x.Equals(y);\n }\n else if (isArrayLike(x)) {\n return isArrayLike(y) && equalArrays(x, y);\n }\n else if (typeof x !== \"object\") {\n return false;\n }\n else if (x instanceof Date) {\n return (y instanceof Date) && compareDates(x, y) === 0;\n }\n else {\n return Object.getPrototypeOf(x)?.constructor === Object && equalObjects(x, y);\n }\n}\nexport function compareDates(x, y) {\n let xtime;\n let ytime;\n // DateTimeOffset and DateTime deals with equality differently.\n if (\"offset\" in x && \"offset\" in y) {\n xtime = x.getTime();\n ytime = y.getTime();\n }\n else {\n xtime = x.getTime() + dateOffset(x);\n ytime = y.getTime() + dateOffset(y);\n }\n return xtime === ytime ? 0 : (xtime < ytime ? -1 : 1);\n}\nexport function comparePrimitives(x, y) {\n return x === y ? 0 : (x < y ? -1 : 1);\n}\nexport function compareArraysWith(x, y, comp) {\n if (x == null) {\n return y == null ? 0 : 1;\n }\n if (y == null) {\n return -1;\n }\n if (x.length !== y.length) {\n return x.length < y.length ? -1 : 1;\n }\n for (let i = 0, j = 0; i < x.length; i++) {\n j = comp(x[i], y[i]);\n if (j !== 0) {\n return j;\n }\n }\n return 0;\n}\nexport function compareArrays(x, y) {\n return compareArraysWith(x, y, compare);\n}\nfunction compareObjects(x, y) {\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y);\n if (xKeys.length !== yKeys.length) {\n return xKeys.length < yKeys.length ? -1 : 1;\n }\n xKeys.sort();\n yKeys.sort();\n for (let i = 0, j = 0; i < xKeys.length; i++) {\n const key = xKeys[i];\n if (key !== yKeys[i]) {\n return key < yKeys[i] ? -1 : 1;\n }\n else {\n j = compare(x[key], y[key]);\n if (j !== 0) {\n return j;\n }\n }\n }\n return 0;\n}\nexport function compare(x, y) {\n if (x === y) {\n return 0;\n }\n else if (x == null) {\n return y == null ? 0 : -1;\n }\n else if (y == null) {\n return 1;\n }\n else if (isComparable(x)) {\n return x.CompareTo(y);\n }\n else if (isArrayLike(x)) {\n return isArrayLike(y) ? compareArrays(x, y) : -1;\n }\n else if (typeof x !== \"object\") {\n return x < y ? -1 : 1;\n }\n else if (x instanceof Date) {\n return y instanceof Date ? compareDates(x, y) : -1;\n }\n else {\n return Object.getPrototypeOf(x)?.constructor === Object ? compareObjects(x, y) : -1;\n }\n}\nexport function min(comparer, x, y) {\n return comparer(x, y) < 0 ? x : y;\n}\nexport function max(comparer, x, y) {\n return comparer(x, y) > 0 ? x : y;\n}\nexport function clamp(comparer, value, min, max) {\n return (comparer(value, min) < 0) ? min : (comparer(value, max) > 0) ? max : value;\n}\nexport function createAtom(value) {\n let atom = value;\n return (...args) => {\n if (args.length === 0) {\n return atom;\n }\n else {\n atom = args[0];\n }\n };\n}\nexport function createObj(fields) {\n const obj = {};\n for (const kv of fields) {\n obj[kv[0]] = kv[1];\n }\n return obj;\n}\nexport function jsOptions(mutator) {\n const opts = {};\n mutator(opts);\n return opts;\n}\nexport function round(value, digits = 0) {\n const m = Math.pow(10, digits);\n const n = +(digits ? value * m : value).toFixed(8);\n const i = Math.floor(n);\n const f = n - i;\n const e = 1e-8;\n const r = (f > 0.5 - e && f < 0.5 + e) ? ((i % 2 === 0) ? i : i + 1) : Math.round(n);\n return digits ? r / m : r;\n}\nexport function sign(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n}\nexport function unescapeDataString(s) {\n // https://stackoverflow.com/a/4458580/524236\n return decodeURIComponent((s).replace(/\\+/g, \"%20\"));\n}\nexport function escapeDataString(s) {\n return encodeURIComponent(s).replace(/!/g, \"%21\")\n .replace(/'/g, \"%27\")\n .replace(/\\(/g, \"%28\")\n .replace(/\\)/g, \"%29\")\n .replace(/\\*/g, \"%2A\");\n}\nexport function escapeUriString(s) {\n return encodeURI(s);\n}\n// ICollection.Clear and Count members can be called on Arrays\n// or Dictionaries so we need a runtime check (see #1120)\nexport function count(col) {\n if (isArrayLike(col)) {\n return col.length;\n }\n else {\n let count = 0;\n for (const _ of col) {\n count++;\n }\n return count;\n }\n}\nexport function clear(col) {\n if (isArrayLike(col)) {\n col.splice(0);\n }\n else {\n col.clear();\n }\n}\nconst curried = new WeakMap();\nexport function uncurry2(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2) => f(a1)(a2);\n curried.set(f2, f);\n return f2;\n}\nexport function curry2(f) {\n return curried.get(f) ?? ((a1) => (a2) => f(a1, a2));\n}\nexport function uncurry3(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3) => f(a1)(a2)(a3);\n curried.set(f2, f);\n return f2;\n}\nexport function curry3(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => f(a1, a2, a3));\n}\nexport function uncurry4(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4) => f(a1)(a2)(a3)(a4);\n curried.set(f2, f);\n return f2;\n}\nexport function curry4(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => f(a1, a2, a3, a4));\n}\nexport function uncurry5(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5) => f(a1)(a2)(a3)(a4)(a5);\n curried.set(f2, f);\n return f2;\n}\nexport function curry5(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => f(a1, a2, a3, a4, a5));\n}\nexport function uncurry6(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6) => f(a1)(a2)(a3)(a4)(a5)(a6);\n curried.set(f2, f);\n return f2;\n}\nexport function curry6(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => f(a1, a2, a3, a4, a5, a6));\n}\nexport function uncurry7(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7);\n curried.set(f2, f);\n return f2;\n}\nexport function curry7(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => f(a1, a2, a3, a4, a5, a6, a7));\n}\nexport function uncurry8(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8);\n curried.set(f2, f);\n return f2;\n}\nexport function curry8(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => f(a1, a2, a3, a4, a5, a6, a7, a8));\n}\nexport function uncurry9(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9);\n curried.set(f2, f);\n return f2;\n}\nexport function curry9(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9));\n}\nexport function uncurry10(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10);\n curried.set(f2, f);\n return f2;\n}\nexport function curry10(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10));\n}\nexport function uncurry11(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11);\n curried.set(f2, f);\n return f2;\n}\nexport function curry11(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11));\n}\nexport function uncurry12(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12);\n curried.set(f2, f);\n return f2;\n}\nexport function curry12(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12));\n}\nexport function uncurry13(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13);\n curried.set(f2, f);\n return f2;\n}\nexport function curry13(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13));\n}\nexport function uncurry14(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14);\n curried.set(f2, f);\n return f2;\n}\nexport function curry14(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14));\n}\nexport function uncurry15(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15);\n curried.set(f2, f);\n return f2;\n}\nexport function curry15(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15));\n}\nexport function uncurry16(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16);\n curried.set(f2, f);\n return f2;\n}\nexport function curry16(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16));\n}\nexport function uncurry17(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17);\n curried.set(f2, f);\n return f2;\n}\nexport function curry17(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => (a17) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17));\n}\nexport function uncurry18(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17)(a18);\n curried.set(f2, f);\n return f2;\n}\nexport function curry18(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => (a17) => (a18) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18));\n}\nexport function uncurry19(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17)(a18)(a19);\n curried.set(f2, f);\n return f2;\n}\nexport function curry19(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => (a17) => (a18) => (a19) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19));\n}\nexport function uncurry20(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17)(a18)(a19)(a20);\n curried.set(f2, f);\n return f2;\n}\nexport function curry20(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => (a17) => (a18) => (a19) => (a20) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20));\n}\n// More performant method to copy arrays, see #2352\nexport function copyToArray(source, sourceIndex, target, targetIndex, count) {\n if (ArrayBuffer.isView(source) && ArrayBuffer.isView(target)) {\n target.set(source.subarray(sourceIndex, sourceIndex + count), targetIndex);\n }\n else {\n for (let i = 0; i < count; ++i) {\n target[targetIndex + i] = source[sourceIndex + i];\n }\n }\n}\n","import { combineHashCodes, compare, compareArrays, equalArrays, equals, sameConstructor, numberHash, structuralHash } from \"./Util.js\";\nexport function seqToString(self) {\n let count = 0;\n let str = \"[\";\n for (const x of self) {\n if (count === 0) {\n str += toString(x);\n }\n else if (count === 100) {\n str += \"; ...\";\n break;\n }\n else {\n str += \"; \" + toString(x);\n }\n count++;\n }\n return str + \"]\";\n}\nexport function toString(x, callStack = 0) {\n if (x != null && typeof x === \"object\") {\n if (typeof x.toString === \"function\") {\n return x.toString();\n }\n else if (Symbol.iterator in x) {\n return seqToString(x);\n }\n else { // TODO: Date?\n const cons = Object.getPrototypeOf(x)?.constructor;\n return cons === Object && callStack < 10\n // Same format as recordToString\n ? \"{ \" + Object.entries(x).map(([k, v]) => k + \" = \" + toString(v, callStack + 1)).join(\"\\n \") + \" }\"\n : cons?.name ?? \"\";\n }\n }\n return String(x);\n}\nexport function unionToString(name, fields) {\n if (fields.length === 0) {\n return name;\n }\n else {\n let fieldStr;\n let withParens = true;\n if (fields.length === 1) {\n fieldStr = toString(fields[0]);\n withParens = fieldStr.indexOf(\" \") >= 0;\n }\n else {\n fieldStr = fields.map((x) => toString(x)).join(\", \");\n }\n return name + (withParens ? \" (\" : \" \") + fieldStr + (withParens ? \")\" : \"\");\n }\n}\nexport class Union {\n get name() {\n return this.cases()[this.tag];\n }\n toJSON() {\n return this.fields.length === 0 ? this.name : [this.name].concat(this.fields);\n }\n toString() {\n return unionToString(this.name, this.fields);\n }\n GetHashCode() {\n const hashes = this.fields.map((x) => structuralHash(x));\n hashes.splice(0, 0, numberHash(this.tag));\n return combineHashCodes(hashes);\n }\n Equals(other) {\n if (this === other) {\n return true;\n }\n else if (!sameConstructor(this, other)) {\n return false;\n }\n else if (this.tag === other.tag) {\n return equalArrays(this.fields, other.fields);\n }\n else {\n return false;\n }\n }\n CompareTo(other) {\n if (this === other) {\n return 0;\n }\n else if (!sameConstructor(this, other)) {\n return -1;\n }\n else if (this.tag === other.tag) {\n return compareArrays(this.fields, other.fields);\n }\n else {\n return this.tag < other.tag ? -1 : 1;\n }\n }\n}\nfunction recordToJSON(self) {\n const o = {};\n const keys = Object.keys(self);\n for (let i = 0; i < keys.length; i++) {\n o[keys[i]] = self[keys[i]];\n }\n return o;\n}\nfunction recordToString(self) {\n return \"{ \" + Object.entries(self).map(([k, v]) => k + \" = \" + toString(v)).join(\"\\n \") + \" }\";\n}\nfunction recordGetHashCode(self) {\n const hashes = Object.values(self).map((v) => structuralHash(v));\n return combineHashCodes(hashes);\n}\nfunction recordEquals(self, other) {\n if (self === other) {\n return true;\n }\n else if (!sameConstructor(self, other)) {\n return false;\n }\n else {\n const thisNames = Object.keys(self);\n for (let i = 0; i < thisNames.length; i++) {\n if (!equals(self[thisNames[i]], other[thisNames[i]])) {\n return false;\n }\n }\n return true;\n }\n}\nfunction recordCompareTo(self, other) {\n if (self === other) {\n return 0;\n }\n else if (!sameConstructor(self, other)) {\n return -1;\n }\n else {\n const thisNames = Object.keys(self);\n for (let i = 0; i < thisNames.length; i++) {\n const result = compare(self[thisNames[i]], other[thisNames[i]]);\n if (result !== 0) {\n return result;\n }\n }\n return 0;\n }\n}\nexport class Record {\n toJSON() { return recordToJSON(this); }\n toString() { return recordToString(this); }\n GetHashCode() { return recordGetHashCode(this); }\n Equals(other) { return recordEquals(this, other); }\n CompareTo(other) { return recordCompareTo(this, other); }\n}\nexport class FSharpRef {\n get contents() {\n return this.getter();\n }\n set contents(v) {\n this.setter(v);\n }\n constructor(contentsOrGetter, setter) {\n if (typeof setter === \"function\") {\n this.getter = contentsOrGetter;\n this.setter = setter;\n }\n else {\n this.getter = () => contentsOrGetter;\n this.setter = (v) => { contentsOrGetter = v; };\n }\n }\n}\n// EXCEPTIONS\n// Exception is intentionally not derived from Error, for performance reasons (see #2160)\nexport class Exception {\n constructor(message) {\n this.message = message;\n }\n}\nexport function isException(x) {\n return x instanceof Exception || x instanceof Error;\n}\nexport function isPromise(x) {\n return x instanceof Promise;\n}\nexport function ensureErrorOrException(e) {\n // Exceptionally admitting promises as errors for compatibility with React.suspense (see #3298)\n return (isException(e) || isPromise(e)) ? e : new Error(String(e));\n}\nexport class FSharpException extends Exception {\n toJSON() { return recordToJSON(this); }\n toString() { return recordToString(this); }\n GetHashCode() { return recordGetHashCode(this); }\n Equals(other) { return recordEquals(this, other); }\n CompareTo(other) { return recordCompareTo(this, other); }\n}\nexport class MatchFailureException extends FSharpException {\n constructor(arg1, arg2, arg3) {\n super();\n this.arg1 = arg1;\n this.arg2 = arg2 | 0;\n this.arg3 = arg3 | 0;\n this.message = \"The match cases were incomplete\";\n }\n}\nexport class Attribute {\n}\n","// Adapted from https://github.com/MikeMcl/big.js/blob/0f94dc9110d55c4f324a47ba6a2e832ce23ac589/big.mjs\nvar P = {};\n/*\n * big.js v6.0.3\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\n * Copyright (c) 2020 Michael Mclaughlin\n * https://github.com/MikeMcl/big.js/LICENCE.md\n */\n/************************************** EDITABLE DEFAULTS *****************************************/\n// The default values below must be integers within the stated ranges.\n/*\n * The maximum number of decimal places (DP) of the results of operations involving division:\n * div and sqrt, and pow with negative exponents.\n */\nvar DP = 28, // 0 to MAX_DP\n/*\n * The rounding mode (RM) used when rounding to the above decimal places.\n *\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\n * 3 Away from zero. (ROUND_UP)\n */\nRM = 1, // 0, 1, 2 or 3\n// The maximum value of DP and Big.DP.\nMAX_DP = 1E6, // 0 to 1000000\n// The maximum magnitude of the exponent argument to the pow method.\nMAX_POWER = 1E6, // 1 to 1000000\n/*\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\n * (JavaScript numbers: -7)\n * -1000000 is the minimum recommended exponent value of a Big.\n */\nNE = -29, // 0 to -1000000\n/*\n * The positive exponent (PE) at and above which toString returns exponential notation.\n * (JavaScript numbers: 21)\n * 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.\n */\nPE = 29, // 0 to 1000000\n/*\n * When true, an error will be thrown if a primitive number is passed to the Big constructor,\n * or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a\n * primitive number without a loss of precision.\n */\nSTRICT = false, // true or false\n/**************************************************************************************************/\n// Error messages.\nNAME = '[big.js] ', INVALID = NAME + 'Invalid ', INVALID_DP = INVALID + 'decimal places', INVALID_RM = INVALID + 'rounding mode', DIV_BY_ZERO = NAME + 'Division by zero', UNDEFINED = void 0, NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\n/*\n * Create and return a Big constructor.\n */\nfunction _Big_() {\n /*\n * The Big constructor and exported function.\n * Create and return a new instance of a Big number object.\n *\n * n {number|string|Big} A numeric value.\n */\n function Big(n) {\n var x = this;\n // Enable constructor usage without new.\n if (!(x instanceof Big))\n return n === UNDEFINED ? _Big_() : new Big(n);\n // Duplicate.\n if (n instanceof Big) {\n x.s = n.s;\n x.e = n.e;\n x.c = n.c.slice();\n normalize(x);\n }\n else {\n if (typeof n !== 'string') {\n if (Big.strict === true) {\n throw TypeError(INVALID + 'number');\n }\n // Minus zero?\n n = n === 0 && 1 / n < 0 ? '-0' : String(n);\n }\n parse(x, n);\n }\n // Retain a reference to this Big constructor.\n // Shadow Big.prototype.constructor which points to Object.\n x.constructor = Big;\n }\n Big.prototype = P;\n Big.DP = DP;\n Big.RM = RM;\n Big.NE = NE;\n Big.PE = PE;\n Big.strict = STRICT;\n return Big;\n}\nfunction normalize(x) {\n // x = round(x, DP, 0);\n if (x.c.length > 1 && !x.c[0]) {\n let i = x.c.findIndex(x => x);\n x.c = x.c.slice(i);\n x.e = x.e - i;\n }\n}\n/*\n * Parse the number or string value passed to a Big constructor.\n *\n * x {Big} A Big number instance.\n * n {number|string} A numeric value.\n */\nfunction parse(x, n) {\n var e, i, nl;\n if (!NUMERIC.test(n)) {\n throw Error(INVALID + 'number');\n }\n // Determine sign.\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\n // Decimal point?\n if ((e = n.indexOf('.')) > -1)\n n = n.replace('.', '');\n // Exponential form?\n if ((i = n.search(/e/i)) > 0) {\n // Determine exponent.\n if (e < 0)\n e = i;\n e += +n.slice(i + 1);\n n = n.substring(0, i);\n }\n else if (e < 0) {\n // Integer.\n e = n.length;\n }\n nl = n.length;\n // Determine leading zeros before decimal point.\n for (i = 0; i < e && i < nl && n.charAt(i) == '0';)\n ++i;\n // original version (ignores decimal point).\n // // Determine leading zeros.\n // for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\n if (i == nl) {\n // Zero.\n x.c = [x.e = 0];\n }\n else {\n x.e = e - i - 1;\n x.c = [];\n // Convert string to array of digits without leading zeros\n for (e = 0; i < nl;)\n x.c[e++] = +n.charAt(i++);\n // older version (doesn't keep trailing zeroes).\n // // Determine trailing zeros.\n // for (; nl > 0 && n.charAt(--nl) == '0';);\n // // Convert string to array of digits without leading/trailing zeros.\n // for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\n }\n x = round(x, Big.DP + 1, Big.RM);\n return x;\n}\n/*\n * Round Big x to a maximum of sd significant digits using rounding mode rm.\n *\n * x {Big} The Big to round.\n * sd {number} Significant digits: integer, 0 to MAX_DP inclusive.\n * rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\n * [more] {boolean} Whether the result of division was truncated.\n */\nfunction round(x, sd, rm, more) {\n var xc = x.c;\n if (rm === UNDEFINED)\n rm = Big.RM;\n if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {\n throw Error(INVALID_RM);\n }\n if (sd < 1) {\n more =\n rm === 3 && (more || !!xc[0]) || sd === 0 && (rm === 1 && xc[0] >= 5 ||\n rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED)));\n xc.length = 1;\n if (more) {\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\n x.e = x.e - sd + 1;\n xc[0] = 1;\n }\n else {\n // Zero.\n xc[0] = x.e = 0;\n }\n }\n else if (sd < xc.length) {\n // xc[sd] is the digit after the digit that may be rounded up.\n const isZero = xc.findIndex((xci, idx) => idx >= sd && xci > 0) < 0;\n more =\n rm === 1 && xc[sd] >= 5 ||\n rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&\n (more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||\n rm === 3 && (more || !isZero);\n // Remove any digits after the required precision.\n xc.length = sd--;\n // Round up?\n if (more) {\n // Rounding up may mean the previous digit has to be rounded up.\n for (; ++xc[sd] > 9;) {\n xc[sd] = 0;\n if (!sd--) {\n ++x.e;\n xc.unshift(1);\n }\n }\n }\n // Remove trailing zeros.\n for (sd = xc.length; !xc[--sd];)\n xc.pop();\n }\n return x;\n}\n/*\n * Return a string representing the value of Big x in normal or exponential notation.\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\n */\nfunction stringify(x, doExponential, isNonzero) {\n var e = x.e, s = x.c.join(''), n = s.length;\n // Exponential notation?\n if (doExponential) {\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\n // Normal notation.\n }\n else if (e < 0) {\n for (; ++e;)\n s = '0' + s;\n s = '0.' + s;\n }\n else if (e > 0) {\n if (++e > n) {\n for (e -= n; e--;)\n s += '0';\n }\n else if (e < n) {\n s = s.slice(0, e) + '.' + s.slice(e);\n }\n }\n else if (n > 1) {\n s = s.charAt(0) + '.' + s.slice(1);\n }\n return x.s < 0 && isNonzero ? '-' + s : s;\n}\n// Prototype/instance methods\n/*\n * Return a new Big whose value is the absolute value of this Big.\n */\nP.abs = function () {\n var x = new this.constructor(this);\n x.s = 1;\n return x;\n};\n/*\n * Return 1 if the value of this Big is greater than the value of Big y,\n * -1 if the value of this Big is less than the value of Big y, or\n * 0 if they have the same value.\n */\nP.cmp = function (y) {\n var isneg, Big = this.constructor, x = new Big(this), y = new Big(y), xc = x.c, yc = y.c, i = x.s, j = y.s, k = x.e, l = y.e;\n // Either zero?\n if (!xc[0] || !yc[0])\n return !xc[0] ? !yc[0] ? 0 : -j : i;\n // Signs differ?\n if (i != j)\n return i;\n isneg = i < 0;\n // Compare exponents.\n if (k != l)\n return k > l ^ isneg ? 1 : -1;\n // Compare digit by digit.\n j = Math.max(xc.length, yc.length);\n for (i = 0; i < j; i++) {\n k = i < xc.length ? xc[i] : 0;\n l = i < yc.length ? yc[i] : 0;\n if (k != l)\n return k > l ^ isneg ? 1 : -1;\n }\n return 0;\n // original version (doesn't compare well trailing zeroes, e.g. 1.0 with 1.00)\n // j = (k = xc.length) < (l = yc.length) ? k : l;\n // // Compare digit by digit.\n // for (i = -1; ++i < j;) {\n // if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\n // }\n // // Compare lengths.\n // return k == l ? 0 : k > l ^ isneg ? 1 : -1;\n};\n/*\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\n */\nP.div = function (y) {\n var Big = this.constructor, x = new Big(this), y = new Big(y), a = x.c, // dividend\n b = y.c, // divisor\n k = x.s == y.s ? 1 : -1, dp = Big.DP;\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\n throw Error(INVALID_DP);\n }\n // Divisor is zero?\n if (!b[0]) {\n throw Error(DIV_BY_ZERO);\n }\n // Dividend is 0? Return +-0.\n if (!a[0]) {\n y.s = k;\n y.c = [y.e = 0];\n return y;\n }\n var bl, bt, n, cmp, ri, bz = b.slice(), ai = bl = b.length, al = a.length, r = a.slice(0, bl), // remainder\n rl = r.length, q = y, // quotient\n qc = q.c = [], qi = 0, p = dp + (q.e = x.e - y.e) + 1; // precision of the result\n q.s = k;\n k = p < 0 ? 0 : p;\n // Create version of divisor with leading zero.\n bz.unshift(0);\n // Add zeros to make remainder as long as divisor.\n for (; rl++ < bl;)\n r.push(0);\n do {\n // n is how many times the divisor goes into current remainder.\n for (n = 0; n < 10; n++) {\n // Compare divisor and remainder.\n if (bl != (rl = r.length)) {\n cmp = bl > rl ? 1 : -1;\n }\n else {\n for (ri = -1, cmp = 0; ++ri < bl;) {\n if (b[ri] != r[ri]) {\n cmp = b[ri] > r[ri] ? 1 : -1;\n break;\n }\n }\n }\n // If divisor < remainder, subtract divisor from remainder.\n if (cmp < 0) {\n // Remainder can't be more than 1 digit longer than divisor.\n // Equalise lengths using divisor with extra leading zero?\n for (bt = rl == bl ? b : bz; rl;) {\n if (r[--rl] < bt[rl]) {\n ri = rl;\n for (; ri && !r[--ri];)\n r[ri] = 9;\n --r[ri];\n r[rl] += 10;\n }\n r[rl] -= bt[rl];\n }\n for (; !r[0];)\n r.shift();\n }\n else {\n break;\n }\n }\n // Add the digit n to the result array.\n qc[qi++] = cmp ? n : ++n;\n // Update the remainder.\n if (r[0] && cmp)\n r[rl] = a[ai] || 0;\n else\n r = [a[ai]];\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\n // Leading zero? Do not remove if result is simply zero (qi == 1).\n if (!qc[0] && qi != 1) {\n // There can't be more than one zero.\n qc.shift();\n q.e--;\n p--;\n }\n // Round?\n if (qi > p)\n round(q, p, Big.RM, r[0] !== UNDEFINED);\n return q;\n};\n/*\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\n */\nP.eq = function (y) {\n return this.cmp(y) === 0;\n};\n/*\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\n * false.\n */\nP.gt = function (y) {\n return this.cmp(y) > 0;\n};\n/*\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\n * return false.\n */\nP.gte = function (y) {\n return this.cmp(y) > -1;\n};\n/*\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\n */\nP.lt = function (y) {\n return this.cmp(y) < 0;\n};\n/*\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\n * return false.\n */\nP.lte = function (y) {\n return this.cmp(y) < 1;\n};\n/*\n * Return a new Big whose value is the value of this Big minus the value of Big y.\n */\nP.minus = P.sub = function (y) {\n var i, j, t, xlty, Big = this.constructor, x = new Big(this), y = new Big(y), a = x.s, b = y.s;\n // Signs differ?\n if (a != b) {\n y.s = -b;\n return x.plus(y);\n }\n var xc = x.c.slice(), xe = x.e, yc = y.c, ye = y.e;\n // Either zero?\n if (!xc[0] || !yc[0]) {\n if (yc[0]) {\n y.s = -b;\n }\n else if (xc[0]) {\n y = new Big(x);\n }\n else {\n y.s = 1;\n }\n return y;\n }\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\n if (a = xe - ye) {\n if (xlty = a < 0) {\n a = -a;\n t = xc;\n }\n else {\n ye = xe;\n t = yc;\n }\n t.reverse();\n for (b = a; b--;)\n t.push(0);\n t.reverse();\n }\n else {\n // Exponents equal. Check digit by digit.\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\n for (a = b = 0; b < j; b++) {\n if (xc[b] != yc[b]) {\n xlty = xc[b] < yc[b];\n break;\n }\n }\n }\n // x < y? Point xc to the array of the bigger number.\n if (xlty) {\n t = xc;\n xc = yc;\n yc = t;\n y.s = -y.s;\n }\n /*\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\n * needs to start at yc.length.\n */\n if ((b = (j = yc.length) - (i = xc.length)) > 0)\n for (; b--;)\n xc[i++] = 0;\n // Subtract yc from xc.\n for (b = i; j > a;) {\n if (xc[--j] < yc[j]) {\n for (i = j; i && !xc[--i];)\n xc[i] = 9;\n --xc[i];\n xc[j] += 10;\n }\n xc[j] -= yc[j];\n }\n // Remove trailing zeros.\n for (; xc[--b] === 0;)\n xc.pop();\n // Remove leading zeros and adjust exponent accordingly.\n for (; xc[0] === 0;) {\n xc.shift();\n --ye;\n }\n if (!xc[0]) {\n // n - n = +0\n y.s = 1;\n // Result must be zero.\n xc = [ye = 0];\n }\n y.c = xc;\n y.e = ye;\n return y;\n};\n/*\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\n */\nP.mod = function (y) {\n var ygtx, Big = this.constructor, x = new Big(this), y = new Big(y), a = x.s, b = y.s;\n if (!y.c[0]) {\n throw Error(DIV_BY_ZERO);\n }\n x.s = y.s = 1;\n ygtx = y.cmp(x) == 1;\n x.s = a;\n y.s = b;\n if (ygtx)\n return new Big(x);\n a = Big.DP;\n b = Big.RM;\n Big.DP = Big.RM = 0;\n x = x.div(y);\n Big.DP = a;\n Big.RM = b;\n return this.minus(x.times(y));\n};\n/*\n * Return a new Big whose value is the value of this Big plus the value of Big y.\n */\nP.plus = P.add = function (y) {\n var e, k, t, Big = this.constructor, x = new Big(this), y = new Big(y);\n // Signs differ?\n if (x.s != y.s) {\n y.s = -y.s;\n return x.minus(y);\n }\n var xe = x.e, xc = x.c, ye = y.e, yc = y.c;\n // Either zero?\n if (!xc[0] || !yc[0]) {\n if (!yc[0]) {\n if (xc[0]) {\n y = new Big(x);\n }\n else {\n y.s = x.s;\n }\n }\n return y;\n }\n xc = xc.slice();\n // Prepend zeros to equalise exponents.\n // Note: reverse faster than unshifts.\n if (e = xe - ye) {\n if (e > 0) {\n ye = xe;\n t = yc;\n }\n else {\n e = -e;\n t = xc;\n }\n t.reverse();\n for (; e--;)\n t.push(0);\n t.reverse();\n }\n // Point xc to the longer array.\n if (xc.length - yc.length < 0) {\n t = yc;\n yc = xc;\n xc = t;\n }\n e = yc.length;\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\n for (k = 0; e; xc[e] %= 10)\n k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\n if (k) {\n xc.unshift(k);\n ++ye;\n }\n // Remove trailing zeros.\n for (e = xc.length; xc[--e] === 0;)\n xc.pop();\n y.c = xc;\n y.e = ye;\n return y;\n};\n/*\n * Return a Big whose value is the value of this Big raised to the power n.\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\n * mode Big.RM.\n *\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\n */\nP.pow = function (n) {\n var Big = this.constructor, x = new Big(this), y = new Big('1'), one = new Big('1'), isneg = n < 0;\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {\n throw Error(INVALID + 'exponent');\n }\n if (isneg)\n n = -n;\n for (;;) {\n if (n & 1)\n y = y.times(x);\n n >>= 1;\n if (!n)\n break;\n x = x.times(x);\n }\n return isneg ? one.div(y) : y;\n};\n/*\n * Return a new Big whose value is the value of this Big rounded to a maximum precision of sd\n * significant digits using rounding mode rm, or Big.RM if rm is not specified.\n *\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\n */\nP.prec = function (sd, rm) {\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\n throw Error(INVALID + 'precision');\n }\n return round(new this.constructor(this), sd, rm);\n};\n/*\n * Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places\n * using rounding mode rm, or Big.RM if rm is not specified.\n * If dp is negative, round to an integer which is a multiple of 10**-dp.\n * If dp is not specified, round to 0 decimal places.\n *\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\n */\nP.round = function (dp, rm) {\n if (dp === UNDEFINED)\n dp = 0;\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {\n throw Error(INVALID_DP);\n }\n return round(new this.constructor(this), dp + this.e + 1, rm);\n};\n/*\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\n */\nP.sqrt = function () {\n var r, c, t, Big = this.constructor, x = new Big(this), s = x.s, e = x.e, half = new Big('0.5');\n // Zero?\n if (!x.c[0])\n return new Big(x);\n // Negative?\n if (s < 0) {\n throw Error(NAME + 'No square root');\n }\n // Estimate.\n s = Math.sqrt(x + '');\n // Math.sqrt underflow/overflow?\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\n if (s === 0 || s === 1 / 0) {\n c = x.c.join('');\n if (!(c.length + e & 1))\n c += '0';\n s = Math.sqrt(c);\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\n r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\n }\n else {\n r = new Big(s + '');\n }\n e = r.e + (Big.DP += 4);\n // Newton-Raphson iteration.\n do {\n t = r;\n r = half.times(t.plus(x.div(t)));\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\n return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);\n};\n/*\n * Return a new Big whose value is the value of this Big times the value of Big y.\n */\nP.times = P.mul = function (y) {\n var c, Big = this.constructor, x = new Big(this), y = new Big(y), xc = x.c, yc = y.c, a = xc.length, b = yc.length, i = x.e, j = y.e;\n // Determine sign of result.\n y.s = x.s == y.s ? 1 : -1;\n // Return signed 0 if either 0.\n if (!xc[0] || !yc[0]) {\n y.c = [y.e = 0];\n return y;\n }\n // Initialise exponent of result as x.e + y.e.\n y.e = i + j;\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\n if (a < b) {\n c = xc;\n xc = yc;\n yc = c;\n j = a;\n a = b;\n b = j;\n }\n // Initialise coefficient array of result with zeros.\n for (c = new Array(j = a + b); j--;)\n c[j] = 0;\n // Multiply.\n // i is initially xc.length.\n for (i = b; i--;) {\n b = 0;\n // a is yc.length.\n for (j = a + i; j > i;) {\n // Current sum of products at this digit position, plus carry.\n b = c[j] + yc[i] * xc[j - i - 1] + b;\n c[j--] = b % 10;\n // carry\n b = b / 10 | 0;\n }\n c[j] = b;\n }\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\n if (b)\n ++y.e;\n else\n c.shift();\n // Remove trailing zeros.\n for (i = c.length; !c[--i];)\n c.pop();\n y.c = c;\n return y;\n};\n/*\n * Return a string representing the value of this Big in exponential notation rounded to dp fixed\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\n *\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\n */\nP.toExponential = function (dp, rm) {\n var x = this, n = x.c[0];\n if (dp !== UNDEFINED) {\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\n throw Error(INVALID_DP);\n }\n x = round(new x.constructor(x), ++dp, rm);\n for (; x.c.length < dp;)\n x.c.push(0);\n }\n return stringify(x, true, !!n);\n};\n/*\n * Return a string representing the value of this Big in normal notation rounded to dp fixed\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\n *\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\n *\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\n */\nP.toFixed = function (dp, rm) {\n var x = this, n = x.c[0];\n if (dp !== UNDEFINED) {\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\n throw Error(INVALID_DP);\n }\n x = round(new x.constructor(x), dp + x.e + 1, rm);\n // x.e may have changed if the value is rounded up.\n for (dp = dp + x.e + 1; x.c.length < dp;)\n x.c.push(0);\n }\n return stringify(x, false, !!n);\n};\n/*\n * Return a string representing the value of this Big.\n * Return exponential notation if this Big has a positive exponent equal to or greater than\n * Big.PE, or a negative exponent equal to or less than Big.NE.\n * Omit the sign for negative zero.\n */\nP.toJSON = P.toString = function () {\n var x = this, Big = x.constructor;\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);\n};\n/*\n * Return the value of this Big as a primitve number.\n */\nP.toNumber = function () {\n var n = Number(stringify(this, true, true));\n if (this.constructor.strict === true && !this.eq(n.toString())) {\n throw Error(NAME + 'Imprecise conversion');\n }\n return n;\n};\n/*\n * Return a string representing the value of this Big rounded to sd significant digits using\n * rounding mode rm, or Big.RM if rm is not specified.\n * Use exponential notation if sd is less than the number of digits necessary to represent\n * the integer part of the value in normal notation.\n *\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\n */\nP.toPrecision = function (sd, rm) {\n var x = this, Big = x.constructor, n = x.c[0];\n if (sd !== UNDEFINED) {\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\n throw Error(INVALID + 'precision');\n }\n x = round(new Big(x), sd, rm);\n for (; x.c.length < sd;)\n x.c.push(0);\n }\n return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);\n};\n/*\n * Return a string representing the value of this Big.\n * Return exponential notation if this Big has a positive exponent equal to or greater than\n * Big.PE, or a negative exponent equal to or less than Big.NE.\n * Include the sign for negative zero.\n */\nP.valueOf = function () {\n var x = this, Big = x.constructor;\n if (Big.strict === true) {\n throw Error(NAME + 'valueOf disallowed');\n }\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);\n};\n// Export\n/**\n * @type object\n */\nexport var Big = _Big_();\n/// \nexport default Big;\n","export const symbol = Symbol(\"numeric\");\nexport function isNumeric(x) {\n return typeof x === \"number\" || typeof x === \"bigint\" || x?.[symbol];\n}\nexport function compare(x, y) {\n if (typeof x === \"number\") {\n return x < y ? -1 : (x > y ? 1 : 0);\n }\n else if (typeof x === \"bigint\") {\n return x < y ? -1 : (x > y ? 1 : 0);\n }\n else {\n return x.CompareTo(y);\n }\n}\nexport function multiply(x, y) {\n if (typeof x === \"number\") {\n return x * y;\n }\n else if (typeof x === \"bigint\") {\n return x * BigInt(y);\n }\n else {\n return x[symbol]().multiply(y);\n }\n}\nexport function toFixed(x, dp) {\n if (typeof x === \"number\") {\n return x.toFixed(dp);\n }\n else if (typeof x === \"bigint\") {\n return x;\n }\n else {\n return x[symbol]().toFixed(dp);\n }\n}\nexport function toPrecision(x, sd) {\n if (typeof x === \"number\") {\n return x.toPrecision(sd);\n }\n else if (typeof x === \"bigint\") {\n return x;\n }\n else {\n return x[symbol]().toPrecision(sd);\n }\n}\nexport function toExponential(x, dp) {\n if (typeof x === \"number\") {\n return x.toExponential(dp);\n }\n else if (typeof x === \"bigint\") {\n return x;\n }\n else {\n return x[symbol]().toExponential(dp);\n }\n}\nexport function toHex(x) {\n if (typeof x === \"number\") {\n return (Number(x) >>> 0).toString(16);\n }\n else if (typeof x === \"bigint\") {\n // TODO: properly handle other bit sizes\n return BigInt.asUintN(64, x).toString(16);\n }\n else {\n return x[symbol]().toHex();\n }\n}\n","import Decimal from \"./lib/big.js\";\nimport { symbol } from \"./Numeric.js\";\nimport { FSharpRef } from \"./Types.js\";\nimport { combineHashCodes } from \"./Util.js\";\nDecimal.prototype.GetHashCode = function () {\n return combineHashCodes([this.s, this.e].concat(this.c));\n};\nDecimal.prototype.Equals = function (x) {\n return !this.cmp(x);\n};\nDecimal.prototype.CompareTo = function (x) {\n return this.cmp(x);\n};\nDecimal.prototype[symbol] = function () {\n const _this = this;\n return {\n multiply: (y) => _this.mul(y),\n toPrecision: (sd) => _this.toPrecision(sd),\n toExponential: (dp) => _this.toExponential(dp),\n toFixed: (dp) => _this.toFixed(dp),\n toHex: () => (Number(_this) >>> 0).toString(16),\n };\n};\nexport default Decimal;\nexport const get_Zero = new Decimal(0);\nexport const get_One = new Decimal(1);\nexport const get_MinusOne = new Decimal(-1);\nexport const get_MaxValue = new Decimal(\"79228162514264337593543950335\");\nexport const get_MinValue = new Decimal(\"-79228162514264337593543950335\");\nexport function compare(x, y) {\n return x.cmp(y);\n}\nexport function equals(x, y) {\n return !x.cmp(y);\n}\nexport function abs(x) { return x.abs(); }\nexport function sign(x) { return x.lt(get_Zero) ? -1 : x.gt(get_Zero) ? 1 : 0; }\nexport function max(x, y) { return x.gt(y) ? x : y; }\nexport function min(x, y) { return x.lt(y) ? x : y; }\nexport function maxMagnitude(x, y) { return abs(x).gt(abs(y)) ? x : y; }\nexport function minMagnitude(x, y) { return abs(x).lt(abs(y)) ? x : y; }\nexport function clamp(x, min, max) {\n return x.lt(min) ? min : x.gt(max) ? max : x;\n}\nexport function round(x, digits = 0) {\n return x.round(digits, 2 /* ROUND_HALF_EVEN */);\n}\nexport function truncate(x) {\n return x.round(0, 0 /* ROUND_DOWN */);\n}\nexport function ceiling(x) {\n return x.round(0, x.cmp(0) >= 0 ? 3 /* ROUND_UP */ : 0 /* ROUND_DOWN */);\n}\nexport function floor(x) {\n return x.round(0, x.cmp(0) >= 0 ? 0 /* ROUND_DOWN */ : 3 /* ROUND_UP */);\n}\nexport function pow(x, n) {\n return x.pow(n);\n}\nexport function sqrt(x) {\n return x.sqrt();\n}\nexport function op_Addition(x, y) {\n return x.add(y);\n}\nexport function op_Subtraction(x, y) {\n return x.sub(y);\n}\nexport function op_Multiply(x, y) {\n return x.mul(y);\n}\nexport function op_Division(x, y) {\n return x.div(y);\n}\nexport function op_Modulus(x, y) {\n return x.mod(y);\n}\nexport function op_UnaryNegation(x) {\n const x2 = new Decimal(x);\n x2.s = -x2.s || 0;\n return x2;\n}\nexport function op_UnaryPlus(x) {\n return x;\n}\nexport const add = op_Addition;\nexport const subtract = op_Subtraction;\nexport const multiply = op_Multiply;\nexport const divide = op_Division;\nexport const remainder = op_Modulus;\nexport const negate = op_UnaryNegation;\nexport function toString(x) {\n return x.toString();\n}\nexport function tryParse(str, defValue) {\n try {\n defValue.contents = new Decimal(str.trim());\n return true;\n }\n catch {\n return false;\n }\n}\nexport function parse(str) {\n const defValue = new FSharpRef(get_Zero);\n if (tryParse(str, defValue)) {\n return defValue.contents;\n }\n else {\n throw new Error(`The input string ${str} was not in a correct format.`);\n }\n}\nexport function toNumber(x) {\n return +x;\n}\nfunction decimalToHex(dec, bitSize) {\n const hex = new Uint8Array(bitSize / 4 | 0);\n let hexCount = 1;\n for (let d = 0; d < dec.length; d++) {\n let value = dec[d];\n for (let i = 0; i < hexCount; i++) {\n const digit = hex[i] * 10 + value | 0;\n hex[i] = digit & 0xF;\n value = digit >> 4;\n }\n if (value !== 0) {\n hex[hexCount++] = value;\n }\n }\n return hex.slice(0, hexCount); // digits in reverse order\n}\nfunction hexToDecimal(hex, bitSize) {\n const dec = new Uint8Array(bitSize * 301 / 1000 + 1 | 0);\n let decCount = 1;\n for (let d = hex.length - 1; d >= 0; d--) {\n let carry = hex[d];\n for (let i = 0; i < decCount; i++) {\n const val = dec[i] * 16 + carry | 0;\n dec[i] = (val % 10) | 0;\n carry = (val / 10) | 0;\n }\n while (carry > 0) {\n dec[decCount++] = (carry % 10) | 0;\n carry = (carry / 10) | 0;\n }\n }\n return dec.slice(0, decCount); // digits in reverse order\n}\nfunction setInt32Bits(hexDigits, bits, offset) {\n for (let i = 0; i < 8; i++) {\n hexDigits[offset + i] = (bits >> (i * 4)) & 0xF;\n }\n}\nfunction getInt32Bits(hexDigits, offset) {\n let bits = 0;\n for (let i = 0; i < 8; i++) {\n bits = bits | (hexDigits[offset + i] << (i * 4));\n }\n return bits;\n}\nexport function fromIntArray(bits) {\n return fromInts(bits[0], bits[1], bits[2], bits[3]);\n}\nexport function fromInts(low, mid, high, signExp) {\n const isNegative = signExp < 0;\n const scale = (signExp >> 16) & 0x7F;\n return fromParts(low, mid, high, isNegative, scale);\n}\nexport function fromParts(low, mid, high, isNegative, scale) {\n const bitSize = 96;\n const hexDigits = new Uint8Array(bitSize / 4);\n setInt32Bits(hexDigits, low, 0);\n setInt32Bits(hexDigits, mid, 8);\n setInt32Bits(hexDigits, high, 16);\n const decDigits = hexToDecimal(hexDigits, bitSize);\n scale = scale & 0x7F;\n const big = new Decimal(0);\n big.c = Array.from(decDigits.reverse());\n big.e = decDigits.length - scale - 1;\n big.s = isNegative ? -1 : 1;\n const d = new Decimal(big);\n return d;\n}\nexport function getBits(d) {\n const bitSize = 96;\n const decDigits = Uint8Array.from(d.c);\n const hexDigits = decimalToHex(decDigits, bitSize);\n const low = getInt32Bits(hexDigits, 0);\n const mid = getInt32Bits(hexDigits, 8);\n const high = getInt32Bits(hexDigits, 16);\n const decStr = d.toString();\n const dotPos = decStr.indexOf(\".\");\n const scale = dotPos < 0 ? 0 : decStr.length - dotPos - 1;\n const signExp = ((scale & 0x7F) << 16) | (d.s < 0 ? 0x80000000 : 0);\n return [low, mid, high, signExp];\n}\n// export function makeRangeStepFunction(step: Decimal, last: Decimal) {\n// const stepComparedWithZero = step.cmp(get_Zero);\n// if (stepComparedWithZero === 0) {\n// throw new Error(\"The step of a range cannot be zero\");\n// }\n// const stepGreaterThanZero = stepComparedWithZero > 0;\n// return (x: Decimal) => {\n// const comparedWithLast = x.cmp(last);\n// if ((stepGreaterThanZero && comparedWithLast <= 0)\n// || (!stepGreaterThanZero && comparedWithLast >= 0)) {\n// return [x, op_Addition(x, step)];\n// } else {\n// return undefined;\n// }\n// };\n// }\n","import { fromParts, truncate } from \"./Decimal.js\";\nimport { bigintHash } from \"./Util.js\";\nconst isBigEndian = false;\nBigInt.prototype.toJSON = function () {\n return `${this.toString()}`;\n};\nconst zero = 0n;\nconst one = 1n;\nconst two = 2n;\nconst minusOne = -1n;\nexport function isBigInt(x) {\n return typeof x === \"bigint\";\n}\nexport function hash(x) {\n return bigintHash(x);\n}\nexport function equals(x, y) {\n return x === y;\n}\nexport function compare(x, y) {\n return x < y ? -1 : x > y ? 1 : 0;\n}\nexport function abs(x) { return x < zero ? -x : x; }\nexport function sign(x) { return x < zero ? -1 : x > zero ? 1 : 0; }\nexport function max(x, y) { return x > y ? x : y; }\nexport function min(x, y) { return x < y ? x : y; }\nexport function maxMagnitude(x, y) { return abs(x) > abs(y) ? x : y; }\nexport function minMagnitude(x, y) { return abs(x) < abs(y) ? x : y; }\nexport function clamp(x, min, max) {\n return x < min ? min : x > max ? max : x;\n}\nexport function add(x, y) { return x + y; }\nexport function subtract(x, y) { return x - y; }\nexport function multiply(x, y) { return x * y; }\nexport function divide(x, y) { return x / y; }\nexport function remainder(x, y) { return x % y; }\nexport function negate(x) { return -x; }\nexport function op_UnaryNegation(x) { return -x; }\nexport function op_LogicalNot(x) { return ~x; }\nexport function op_UnaryPlus(x) { return x; }\nexport function op_Addition(x, y) { return x + y; }\nexport function op_Subtraction(x, y) { return x - y; }\nexport function op_Multiply(x, y) { return x * y; }\nexport function op_Division(x, y) { return x / y; }\nexport function op_Modulus(x, y) { return x % y; }\nexport function op_RightShift(x, n) { return x >> BigInt(n); }\nexport function op_LeftShift(x, n) { return x << BigInt(n); }\nexport function op_BitwiseAnd(x, y) { return x & y; }\nexport function op_BitwiseOr(x, y) { return x | y; }\nexport function op_ExclusiveOr(x, y) { return x ^ y; }\nexport function op_LessThan(x, y) { return x < y; }\nexport function op_LessThanOrEqual(x, y) { return x <= y; }\nexport function op_GreaterThan(x, y) { return x > y; }\nexport function op_GreaterThanOrEqual(x, y) { return x >= y; }\nexport function op_Equality(x, y) { return x === y; }\nexport function op_Inequality(x, y) { return x !== y; }\nexport function get_Zero() { return zero; }\nexport function get_One() { return one; }\nexport function get_MinusOne() { return minusOne; }\nexport function get_IsZero(x) { return x === zero; }\nexport function get_IsOne(x) { return x === one; }\nexport function get_IsEven(x) { return isEvenInteger(x); }\nexport function get_IsPowerOfTwo(x) { return isPow2(x); }\nexport function get_Sign(x) { return sign(x); }\nexport function isNegative(x) { return x < zero; }\nexport function isPositive(x) { return x > zero; }\nexport function isEvenInteger(x) { return (x % two) === zero; }\nexport function isOddInteger(x) { return (x % two) !== zero; }\nexport function isPow2(x) { return (x & (x - one)) === zero; }\nexport function fromZero() { return zero; }\nexport function fromOne() { return one; }\nexport function fromInt8(n) { return BigInt(n); }\nexport function fromUInt8(n) { return BigInt(n); }\nexport function fromInt16(n) { return BigInt(n); }\nexport function fromUInt16(n) { return BigInt(n); }\nexport function fromInt32(n) { return BigInt(n); }\nexport function fromUInt32(n) { return BigInt(n); }\nexport function fromInt64(n) { return n; }\nexport function fromUInt64(n) { return n; }\nexport function fromInt128(n) { return n; }\nexport function fromUInt128(n) { return n; }\nexport function fromNativeInt(n) { return n; }\nexport function fromUNativeInt(n) { return n; }\nexport function fromFloat16(n) { return BigInt(Math.trunc(n)); }\nexport function fromFloat32(n) { return BigInt(Math.trunc(n)); }\nexport function fromFloat64(n) { return BigInt(Math.trunc(n)); }\nexport function fromDecimal(d) { return BigInt(truncate(d).toString()); }\nexport function fromBigInt(x) { return x; }\nexport function fromBoolean(b) { return BigInt(b); }\nexport function fromChar(c) { return BigInt(c.charCodeAt(0)); }\nexport function fromString(s) { return BigInt(s); }\nexport function fromByteArray(bytes) {\n return fromSignedBytes(bytes, isBigEndian);\n}\nexport function toByteArray(value) {\n return toSignedBytes(value, isBigEndian);\n}\nexport function toInt8(x) { return Number(BigInt.asIntN(8, x)); }\nexport function toUInt8(x) { return Number(BigInt.asUintN(8, x)); }\nexport function toInt16(x) { return Number(BigInt.asIntN(16, x)); }\nexport function toUInt16(x) { return Number(BigInt.asUintN(16, x)); }\nexport function toInt32(x) { return Number(BigInt.asIntN(32, x)); }\nexport function toUInt32(x) { return Number(BigInt.asUintN(32, x)); }\nexport function toInt64(x) { return BigInt.asIntN(64, x); }\nexport function toUInt64(x) { return BigInt.asUintN(64, x); }\nexport function toInt128(x) { return BigInt.asIntN(128, x); }\nexport function toUInt128(x) { return BigInt.asUintN(128, x); }\nexport function toNativeInt(x) { return BigInt.asIntN(64, x); }\nexport function toUNativeInt(x) { return BigInt.asUintN(64, x); }\nexport function toFloat16(x) { return Number(x); }\nexport function toFloat32(x) { return Number(x); }\nexport function toFloat64(x) { return Number(x); }\nexport function toDecimal(x) {\n const isNegative = x < zero;\n const bits = abs(x);\n const low = Number(BigInt.asUintN(32, bits));\n const mid = Number(BigInt.asUintN(32, bits >> 32n));\n const high = Number(BigInt.asUintN(32, bits >> 64n));\n const scale = 0;\n return fromParts(low, mid, high, isNegative, scale);\n}\nexport function toBigInt(x) { return x; }\nexport function toBoolean(x) { return x !== zero; }\nexport function toChar(x) {\n return String.fromCharCode(toUInt16(x));\n}\nexport function toString(x) { return x.toString(); }\nexport function tryParse(s, res) {\n try {\n res.contents = BigInt(s);\n return true;\n }\n catch (err) {\n return false;\n }\n}\nexport function parse(s) {\n return BigInt(s);\n}\nexport function pow(x, n) {\n return x ** BigInt(n);\n}\nexport function modPow(x, e, m) {\n return (x ** e) % m;\n}\nexport function divRem(x, y, out) {\n const div = x / y;\n const rem = x % y;\n if (out === void 0) {\n return [div, rem];\n }\n else {\n out.contents = rem;\n return div;\n }\n}\nexport function greatestCommonDivisor(x, y) {\n while (y > zero) {\n const q = x / y;\n const r = x - q * y;\n x = y;\n y = r;\n }\n return x;\n}\nexport function getBitLength(x) {\n return fromFloat64(x === zero ? 1 : log2(abs(x)) + 1);\n}\nexport function log2(x) {\n const n = Number(x);\n if (Number.isFinite(n))\n return Math.log2(n); // fast path\n if (x < zero)\n return Number.NaN;\n let shift = one;\n while (x >= (one << shift)) {\n shift = shift << one;\n }\n let log = zero;\n while (shift > one) {\n shift = shift >> one;\n if (x >= (one << shift)) {\n log = log + shift;\n x = x >> shift;\n }\n }\n return Number(log);\n}\nexport function log10(x) {\n return log2(x) * Math.log10(2);\n}\nexport function ln(x) {\n return log2(x) * Math.log(2);\n}\nexport function log(x, base) {\n return log2(x) / Math.log2(base);\n}\nexport function ilog2(x) {\n return BigInt(log2(x));\n}\n// export function copySign\n// export function createChecked\n// export function createSaturating\n// export function createTruncating\n// export function getByteCount\n// export function leadingZeroCount\n// export function popCount\n// export function rotateLeft\n// export function rotateRight\n// export function trailingZeroCount\n// export function tryFormat\n// export function tryWriteBytes\n// -------------------------------------------------\n// Binary serialization\n// -------------------------------------------------\nconst hexCodes = new Uint8Array([48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102]);\nfunction fromHexCode(code) {\n if (48 <= code && code <= 57)\n return code - 48;\n if (97 <= code && code <= 102)\n return code - 97 + 10;\n if (65 <= code && code <= 70)\n return code - 65 + 10;\n throw Error(`Invalid hex code: ${code}`);\n}\nfunction toSignedBytes(x, isBigEndian) {\n const isNeg = x < 0n;\n if (isNeg) {\n const len = log2(-x);\n const bits = len + (8 - len % 8);\n const pow2 = (1n << BigInt(bits));\n x = x + pow2; // two's complement\n }\n const hex = x.toString(16);\n const len = hex.length;\n const odd = len % 2;\n const first = hex.charCodeAt(0);\n const isLow = 48 <= first && first <= 55; // 0..7\n const start = (isNeg && isLow) || (!isNeg && !isLow) ? 1 : 0;\n const bytes = new Uint8Array(start + (len + odd) / 2);\n const inc = isBigEndian ? 1 : -1;\n let pos = isBigEndian ? 0 : bytes.length - 1;\n if (start > 0) {\n bytes[pos] = isNeg ? 255 : 0;\n pos += inc;\n }\n if (odd > 0) {\n bytes[pos] = fromHexCode(first);\n pos += inc;\n }\n for (let i = odd; i < len; i += 2, pos += inc) {\n const a = fromHexCode(hex.charCodeAt(i));\n const b = fromHexCode(hex.charCodeAt(i + 1));\n bytes[pos] = (a << 4) | b;\n }\n return bytes;\n}\nfunction fromSignedBytes(bytes, isBigEndian) {\n if (bytes == null) {\n throw new Error(\"bytes is null\");\n }\n const len = bytes.length;\n const first = isBigEndian ? 0 : len - 1;\n const isNeg = bytes[first] > 127;\n const codes = new Uint16Array(len * 2 + 2);\n codes[0] = 48; // 0\n codes[1] = 120; // x\n const inc = isBigEndian ? 1 : -1;\n let pos = isBigEndian ? 0 : len - 1;\n for (let i = 0; i < bytes.length; i++, pos += inc) {\n const byte = bytes[pos];\n codes[2 * i + 2] = hexCodes[byte >> 4];\n codes[2 * i + 3] = hexCodes[byte & 15];\n }\n const str = String.fromCharCode.apply(null, codes);\n let x = BigInt(str);\n if (isNeg) {\n const bits = len * 8;\n const pow2 = (1n << BigInt(bits));\n x = x - pow2; // two's complement\n }\n return x;\n}\n","/**\n * DateTimeOffset functions.\n *\n * Note: Date instances are always DateObjects in local\n * timezone (because JS dates are all kinds of messed up).\n * A local date returns UTC epoch when `.getTime()` is called.\n *\n * Basically; invariant: date.getTime() always return UTC time.\n */\nimport { toInt64, toFloat64 } from \"./BigInt.js\";\nimport { compareDates, dateOffset, padWithZeros } from \"./Util.js\";\nconst shortDays = [\n \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"\n];\nconst longDays = [\n \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"\n];\nconst shortMonths = [\n \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"\n];\nconst longMonths = [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n];\nfunction parseRepeatToken(format, pos, patternChar) {\n let tokenLength = 0;\n let internalPos = pos;\n while (internalPos < format.length && format[internalPos] === patternChar) {\n internalPos++;\n tokenLength++;\n }\n return tokenLength;\n}\nfunction parseNextChar(format, pos) {\n if (pos >= format.length - 1) {\n return -1;\n }\n return format.charCodeAt(pos + 1);\n}\nfunction parseQuotedString(format, pos) {\n let beginPos = pos;\n // Get the character used to quote the string\n const quoteChar = format[pos];\n let result = \"\";\n let foundQuote = false;\n while (pos < format.length) {\n pos++;\n const currentChar = format[pos];\n if (currentChar === quoteChar) {\n foundQuote = true;\n break;\n }\n else if (currentChar === \"\\\\\") {\n if (pos < format.length) {\n pos++;\n result += format[pos];\n }\n else {\n // This means that '\\' is the last character in the string.\n throw new Error(\"Invalid string format\");\n }\n }\n else {\n result += currentChar;\n }\n }\n if (!foundQuote) {\n // We could not find the matching quote\n throw new Error(`Invalid string format could not find matching quote for ${quoteChar}`);\n }\n return [result, pos - beginPos + 1];\n}\nfunction dateToStringWithCustomFormat(date, format, utc) {\n let cursorPos = 0;\n let tokenLength = 0;\n let result = \"\";\n const localizedDate = utc ? DateTime(date.getTime(), 1 /* DateKind.UTC */) : date;\n while (cursorPos < format.length) {\n const token = format[cursorPos];\n switch (token) {\n case \"d\":\n tokenLength = parseRepeatToken(format, cursorPos, \"d\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += day(localizedDate);\n break;\n case 2:\n result += padWithZeros(day(localizedDate), 2);\n break;\n case 3:\n result += shortDays[dayOfWeek(localizedDate)];\n break;\n case 4:\n result += longDays[dayOfWeek(localizedDate)];\n break;\n default:\n break;\n }\n break;\n case \"f\":\n tokenLength = parseRepeatToken(format, cursorPos, \"f\");\n cursorPos += tokenLength;\n if (tokenLength <= 3) {\n const precision = 10 ** (3 - tokenLength);\n result += padWithZeros(Math.floor(millisecond(localizedDate) / precision), tokenLength);\n }\n else if (tokenLength <= 7) {\n // JavaScript Date only support precision to the millisecond\n // so we fill the rest of the precision with 0 as if the date didn't have\n // milliseconds provided to it.\n // This is to have the same behavior as .NET when doing:\n // DateTime(1, 2, 3, 4, 5, 6, DateTimeKind.Utc).ToString(\"fffff\") => 00000\n result += (\"\" + millisecond(localizedDate)).padEnd(tokenLength, \"0\");\n }\n break;\n case \"F\":\n tokenLength = parseRepeatToken(format, cursorPos, \"F\");\n cursorPos += tokenLength;\n if (tokenLength <= 3) {\n const precision = 10 ** (3 - tokenLength);\n const value = Math.floor(millisecond(localizedDate) / precision);\n if (value != 0) {\n result += padWithZeros(value, tokenLength);\n }\n }\n else if (tokenLength <= 7) {\n // JavaScript Date only support precision to the millisecond\n // so we can't go beyond that.\n // We also need to pad start with 0 if the value is not 0\n const value = millisecond(localizedDate);\n if (value != 0) {\n result += padWithZeros(value, 3);\n }\n }\n break;\n case \"g\":\n tokenLength = parseRepeatToken(format, cursorPos, \"g\");\n cursorPos += tokenLength;\n if (tokenLength <= 2) {\n result += \"A.D.\";\n }\n break;\n case \"h\":\n tokenLength = parseRepeatToken(format, cursorPos, \"h\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += hour(localizedDate) % 12;\n break;\n case 2:\n result += padWithZeros(hour(localizedDate) % 12, 2);\n break;\n default:\n break;\n }\n break;\n case \"H\":\n tokenLength = parseRepeatToken(format, cursorPos, \"H\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += hour(localizedDate);\n break;\n case 2:\n result += padWithZeros(hour(localizedDate), 2);\n break;\n default:\n break;\n }\n break;\n case \"K\":\n tokenLength = parseRepeatToken(format, cursorPos, \"K\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n switch (kind(localizedDate)) {\n case 1 /* DateKind.UTC */:\n result += \"Z\";\n break;\n case 2 /* DateKind.Local */:\n result += dateOffsetToString(localizedDate.getTimezoneOffset() * -60000);\n break;\n case 0 /* DateKind.Unspecified */:\n break;\n }\n break;\n default:\n break;\n }\n break;\n case \"m\":\n tokenLength = parseRepeatToken(format, cursorPos, \"m\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += minute(localizedDate);\n break;\n case 2:\n result += padWithZeros(minute(localizedDate), 2);\n break;\n default:\n break;\n }\n break;\n case \"M\":\n tokenLength = parseRepeatToken(format, cursorPos, \"M\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += month(localizedDate);\n break;\n case 2:\n result += padWithZeros(month(localizedDate), 2);\n break;\n case 3:\n result += shortMonths[month(localizedDate) - 1];\n break;\n case 4:\n result += longMonths[month(localizedDate) - 1];\n break;\n default:\n break;\n }\n break;\n case \"s\":\n tokenLength = parseRepeatToken(format, cursorPos, \"s\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += second(localizedDate);\n break;\n case 2:\n result += padWithZeros(second(localizedDate), 2);\n break;\n default:\n break;\n }\n break;\n case \"t\":\n tokenLength = parseRepeatToken(format, cursorPos, \"t\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += localizedDate.getHours() < 12 ? \"A\" : \"P\";\n break;\n case 2:\n result += localizedDate.getHours() < 12 ? \"AM\" : \"PM\";\n break;\n default:\n break;\n }\n break;\n case \"y\":\n tokenLength = parseRepeatToken(format, cursorPos, \"y\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += localizedDate.getFullYear() % 100;\n break;\n case 2:\n result += padWithZeros(localizedDate.getFullYear() % 100, 2);\n break;\n case 3:\n result += padWithZeros(localizedDate.getFullYear(), 3);\n break;\n case 4:\n result += padWithZeros(localizedDate.getFullYear(), 4);\n break;\n case 5:\n result += padWithZeros(localizedDate.getFullYear(), 5);\n break;\n default:\n break;\n }\n break;\n case \"z\":\n tokenLength = parseRepeatToken(format, cursorPos, \"z\");\n cursorPos += tokenLength;\n let utcOffsetText = \"\";\n switch (kind(localizedDate)) {\n case 1 /* DateKind.UTC */:\n utcOffsetText = \"+00:00\";\n break;\n case 2 /* DateKind.Local */:\n utcOffsetText = dateOffsetToString(localizedDate.getTimezoneOffset() * -60000);\n break;\n case 0 /* DateKind.Unspecified */:\n utcOffsetText = dateOffsetToString(toLocalTime(localizedDate).getTimezoneOffset() * -60000);\n break;\n }\n const sign = utcOffsetText[0] === \"-\" ? \"-\" : \"+\";\n const hours = parseInt(utcOffsetText.substring(1, 3), 10);\n const minutes = parseInt(utcOffsetText.substring(4, 6), 10);\n switch (tokenLength) {\n case 1:\n result += `${sign}${hours}`;\n break;\n case 2:\n result += `${sign}${padWithZeros(hours, 2)}`;\n break;\n default:\n result += `${sign}${padWithZeros(hours, 2)}:${padWithZeros(minutes, 2)}`;\n break;\n }\n break;\n case \":\":\n result += \":\";\n cursorPos++;\n break;\n case \"/\":\n result += \"/\";\n cursorPos++;\n break;\n case \"'\":\n case '\"':\n const [quotedString, quotedStringLenght] = parseQuotedString(format, cursorPos);\n result += quotedString;\n cursorPos += quotedStringLenght;\n break;\n case \"%\":\n const nextChar = parseNextChar(format, cursorPos);\n if (nextChar >= 0 && nextChar !== \"%\".charCodeAt(0)) {\n cursorPos += 2;\n result += dateToStringWithCustomFormat(localizedDate, String.fromCharCode(nextChar), utc);\n }\n else {\n throw new Error(\"Invalid format string\");\n }\n break;\n case \"\\\\\":\n const nextChar2 = parseNextChar(format, cursorPos);\n if (nextChar2 >= 0) {\n cursorPos += 2;\n result += String.fromCharCode(nextChar2);\n }\n else {\n throw new Error(\"Invalid format string\");\n }\n break;\n default:\n cursorPos++;\n result += token;\n break;\n }\n }\n return result;\n}\nexport function kind(value) {\n return value.kind || 0;\n}\nexport function unixEpochMillisecondsToTicks(ms, offset) {\n return toInt64(((BigInt(ms) + 62135596800000n) + BigInt(offset)) * 10000n);\n}\nexport function ticksToUnixEpochMilliseconds(ticks) {\n return Number(((BigInt(ticks) / 10000n) - 62135596800000n));\n}\nexport function dateOffsetToString(offset) {\n const isMinus = offset < 0;\n offset = Math.abs(offset);\n const hours = ~~(offset / 3600000);\n const minutes = (offset % 3600000) / 60000;\n return (isMinus ? \"-\" : \"+\") +\n padWithZeros(hours, 2) + \":\" +\n padWithZeros(minutes, 2);\n}\nexport function dateToHalfUTCString(date, half) {\n const str = date.toISOString();\n return half === \"first\"\n ? str.substring(0, str.indexOf(\"T\"))\n : str.substring(str.indexOf(\"T\") + 1, str.length - 1);\n}\nfunction dateToISOString(d, utc) {\n if (utc) {\n return d.toISOString();\n }\n else {\n // JS Date is always local\n const printOffset = d.kind == null ? true : d.kind === 2 /* DateKind.Local */;\n return padWithZeros(d.getFullYear(), 4) + \"-\" +\n padWithZeros(d.getMonth() + 1, 2) + \"-\" +\n padWithZeros(d.getDate(), 2) + \"T\" +\n padWithZeros(d.getHours(), 2) + \":\" +\n padWithZeros(d.getMinutes(), 2) + \":\" +\n padWithZeros(d.getSeconds(), 2) + \".\" +\n padWithZeros(d.getMilliseconds(), 3) +\n (printOffset ? dateOffsetToString(d.getTimezoneOffset() * -60000) : \"\");\n }\n}\nfunction dateToISOStringWithOffset(dateWithOffset, offset) {\n const str = dateWithOffset.toISOString();\n return str.substring(0, str.length - 1) + dateOffsetToString(offset);\n}\nfunction dateToStringWithOffset(date, format) {\n const d = new Date(date.getTime() + (date.offset ?? 0));\n if (typeof format !== \"string\") {\n return d.toISOString().replace(/\\.\\d+/, \"\").replace(/[A-Z]|\\.\\d+/g, \" \") + dateOffsetToString((date.offset ?? 0));\n }\n else if (format.length === 1) {\n switch (format) {\n case \"D\":\n case \"d\": return dateToHalfUTCString(d, \"first\");\n case \"T\":\n case \"t\": return dateToHalfUTCString(d, \"second\");\n case \"O\":\n case \"o\": return dateToISOStringWithOffset(d, (date.offset ?? 0));\n default: throw new Error(\"Unrecognized Date print format\");\n }\n }\n else {\n return dateToStringWithCustomFormat(d, format, true);\n }\n}\nfunction dateToStringWithKind(date, format) {\n const utc = date.kind === 1 /* DateKind.UTC */;\n if (typeof format !== \"string\") {\n return utc ? date.toUTCString() : date.toLocaleString();\n }\n else if (format.length === 1) {\n switch (format) {\n case \"D\":\n case \"d\":\n return utc ? dateToHalfUTCString(date, \"first\") : date.toLocaleDateString();\n case \"T\":\n case \"t\":\n return utc ? dateToHalfUTCString(date, \"second\") : date.toLocaleTimeString();\n case \"O\":\n case \"o\":\n return dateToISOString(date, utc);\n default:\n throw new Error(\"Unrecognized Date print format\");\n }\n }\n else {\n return dateToStringWithCustomFormat(date, format, utc);\n }\n}\nexport function toString(date, format, _provider) {\n return date.offset != null\n ? dateToStringWithOffset(date, format)\n : dateToStringWithKind(date, format);\n}\nexport function DateTime(value, kind) {\n const d = new Date(value);\n d.kind = (kind == null ? 0 /* DateKind.Unspecified */ : kind) | 0;\n return d;\n}\nexport function fromTicks(ticks, kind) {\n kind = kind != null ? kind : 2 /* DateKind.Local */; // better default than Unspecified\n let date = DateTime(ticksToUnixEpochMilliseconds(ticks), kind);\n // Ticks are local to offset (in this case, either UTC or Local/Unknown).\n // If kind is anything but UTC, that means that the tick number was not\n // in utc, thus getTime() cannot return UTC, and needs to be shifted.\n if (kind !== 1 /* DateKind.UTC */) {\n date = DateTime(date.getTime() - dateOffset(date), kind);\n }\n return date;\n}\nexport function fromDateTimeOffset(date, kind) {\n switch (kind) {\n case 1 /* DateKind.UTC */: return DateTime(date.getTime(), 1 /* DateKind.UTC */);\n case 2 /* DateKind.Local */: return DateTime(date.getTime(), 2 /* DateKind.Local */);\n default:\n const d = DateTime(date.getTime() + (date.offset ?? 0), kind);\n return DateTime(d.getTime() - dateOffset(d), kind);\n }\n}\nexport function getTicks(date) {\n return unixEpochMillisecondsToTicks(date.getTime(), dateOffset(date));\n}\nexport function minValue() {\n // This is \"0001-01-01T00:00:00.000Z\", actual JS min value is -8640000000000000\n return DateTime(-62135596800000, 1 /* DateKind.UTC */);\n}\nexport function maxValue() {\n // This is \"9999-12-31T23:59:59.999Z\", actual JS max value is 8640000000000000\n return DateTime(253402300799999, 1 /* DateKind.UTC */);\n}\nexport function parseRaw(input) {\n function fail() {\n throw new Error(`The string is not a valid Date: ${input}`);\n }\n if (input == null || input.trim() === \"\") {\n fail();\n }\n // ISO dates without TZ are parsed as UTC. Adding time without TZ keeps them local.\n if (input.length === 10 && input[4] === \"-\" && input[7] === \"-\") {\n input += \"T00:00:00\";\n }\n let date = new Date(input);\n let offset = null;\n if (isNaN(date.getTime())) {\n // Try to check strings JS Date cannot parse (see #1045, #1422)\n const m = /^\\s*(\\d+[^\\w\\s:]\\d+[^\\w\\s:]\\d+)?\\s*(\\d+:\\d+(?::\\d+(?:\\.\\d+)?)?)?\\s*([AaPp][Mm])?\\s*(Z|[+-]([01]?\\d):?([0-5]?\\d)?)?\\s*$/.exec(input);\n if (m != null) {\n let baseDate;\n let timeInSeconds = 0;\n if (m[2] != null) {\n const timeParts = m[2].split(\":\");\n const hourPart = parseInt(timeParts[0], 10);\n timeInSeconds =\n hourPart * 3600 +\n parseInt(timeParts[1] || \"0\", 10) * 60 +\n parseFloat(timeParts[2] || \"0\");\n if (m[3] != null && m[3].toUpperCase() === \"PM\" && hourPart < 12) {\n timeInSeconds += 720;\n }\n }\n if (m[4] != null) { // There's an offset, parse as UTC\n if (m[1] != null) {\n baseDate = new Date(m[1] + \" UTC\");\n }\n else {\n const d = new Date();\n baseDate = new Date(d.getUTCFullYear() + \"/\" + (d.getUTCMonth() + 1) + \"/\" + d.getUTCDate());\n }\n if (m[4] === \"Z\") {\n offset = \"Z\";\n }\n else {\n let offsetInMinutes = parseInt(m[5], 10) * 60 + parseInt(m[6] || \"0\", 10);\n if (m[4][0] === \"-\") {\n offsetInMinutes *= -1;\n }\n offset = offsetInMinutes;\n timeInSeconds -= offsetInMinutes * 60;\n }\n }\n else {\n if (m[1] != null) {\n baseDate = new Date(m[1]);\n }\n else {\n const d = new Date();\n baseDate = new Date(d.getFullYear() + \"/\" + (d.getMonth() + 1) + \"/\" + d.getDate());\n }\n }\n date = new Date(baseDate.getTime() + timeInSeconds * 1000);\n // correct for daylight savings time\n date = new Date(date.getTime() + (date.getTimezoneOffset() - baseDate.getTimezoneOffset()) * 60000);\n }\n else {\n fail();\n }\n // Check again the date is valid after transformations, see #2229\n if (isNaN(date.getTime())) {\n fail();\n }\n }\n return [date, offset];\n}\nexport function parse(str, detectUTC = false) {\n const [date, offset] = parseRaw(str);\n // .NET always parses DateTime as Local if there's offset info (even \"Z\")\n // Newtonsoft.Json uses UTC if the offset is \"Z\"\n const kind = offset != null\n ? (detectUTC && offset === \"Z\" ? 1 /* DateKind.UTC */ : 2 /* DateKind.Local */)\n : 0 /* DateKind.Unspecified */;\n return DateTime(date.getTime(), kind);\n}\nexport function tryParse(v, defValue) {\n try {\n defValue.contents = parse(v);\n return true;\n }\n catch (_err) {\n return false;\n }\n}\nexport function create(year, month, day, h = 0, m = 0, s = 0, ms = 0, kind) {\n const date = kind === 1 /* DateKind.UTC */\n ? new Date(Date.UTC(year, month - 1, day, h, m, s, ms))\n : new Date(year, month - 1, day, h, m, s, ms);\n if (year <= 99) {\n if (kind === 1 /* DateKind.UTC */) {\n date.setUTCFullYear(year, month - 1, day);\n }\n else {\n date.setFullYear(year, month - 1, day);\n }\n }\n const dateValue = date.getTime();\n if (isNaN(dateValue)) {\n throw new Error(\"The parameters describe an unrepresentable Date.\");\n }\n return DateTime(dateValue, kind);\n}\nexport function now() {\n return DateTime(Date.now(), 2 /* DateKind.Local */);\n}\nexport function utcNow() {\n return DateTime(Date.now(), 1 /* DateKind.UTC */);\n}\nexport function today() {\n return date(now());\n}\nexport function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\nexport function daysInMonth(year, month) {\n return month === 2\n ? (isLeapYear(year) ? 29 : 28)\n : (month >= 8 ? (month % 2 === 0 ? 31 : 30) : (month % 2 === 0 ? 30 : 31));\n}\nexport function toUniversalTime(date) {\n return date.kind === 1 /* DateKind.UTC */ ? date : DateTime(date.getTime(), 1 /* DateKind.UTC */);\n}\nexport function toLocalTime(date) {\n return date.kind === 2 /* DateKind.Local */ ? date : DateTime(date.getTime(), 2 /* DateKind.Local */);\n}\nexport function specifyKind(d, kind) {\n return create(year(d), month(d), day(d), hour(d), minute(d), second(d), millisecond(d), kind);\n}\nexport function timeOfDay(d) {\n return hour(d) * 3600000\n + minute(d) * 60000\n + second(d) * 1000\n + millisecond(d);\n}\nexport function date(d) {\n return create(year(d), month(d), day(d), 0, 0, 0, 0, d.kind);\n}\nexport function day(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCDate() : d.getDate();\n}\nexport function hour(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCHours() : d.getHours();\n}\nexport function millisecond(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCMilliseconds() : d.getMilliseconds();\n}\nexport function minute(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCMinutes() : d.getMinutes();\n}\nexport function month(d) {\n return (d.kind === 1 /* DateKind.UTC */ ? d.getUTCMonth() : d.getMonth()) + 1;\n}\nexport function second(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCSeconds() : d.getSeconds();\n}\nexport function year(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCFullYear() : d.getFullYear();\n}\nexport function dayOfWeek(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCDay() : d.getDay();\n}\nexport function dayOfYear(d) {\n const _year = year(d);\n const _month = month(d);\n let _day = day(d);\n for (let i = 1; i < _month; i++) {\n _day += daysInMonth(_year, i);\n }\n return _day;\n}\nexport function add(d, ts) {\n const newDate = DateTime(d.getTime() + ts, d.kind);\n if (d.kind !== 1 /* DateKind.UTC */) {\n const oldTzOffset = d.getTimezoneOffset();\n const newTzOffset = newDate.getTimezoneOffset();\n return oldTzOffset !== newTzOffset\n ? DateTime(newDate.getTime() + (newTzOffset - oldTzOffset) * 60000, d.kind)\n : newDate;\n }\n else {\n return newDate;\n }\n}\nexport function addDays(d, v) {\n return add(d, v * 86400000);\n}\nexport function addHours(d, v) {\n return add(d, v * 3600000);\n}\nexport function addMinutes(d, v) {\n return add(d, v * 60000);\n}\nexport function addSeconds(d, v) {\n return add(d, v * 1000);\n}\nexport function addMilliseconds(d, v) {\n return add(d, v);\n}\nexport function addTicks(d, v) {\n return add(d, toFloat64(v / 10000n));\n}\nexport function addYears(d, v) {\n const newMonth = month(d);\n const newYear = year(d) + v;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, day(d));\n return create(newYear, newMonth, newDay, hour(d), minute(d), second(d), millisecond(d), d.kind);\n}\nexport function addMonths(d, v) {\n let newMonth = month(d) + v;\n let newMonth_ = 0;\n let yearOffset = 0;\n if (newMonth > 12) {\n newMonth_ = newMonth % 12;\n yearOffset = Math.floor(newMonth / 12);\n newMonth = newMonth_;\n }\n else if (newMonth < 1) {\n newMonth_ = 12 + newMonth % 12;\n yearOffset = Math.floor(newMonth / 12) + (newMonth_ === 12 ? -1 : 0);\n newMonth = newMonth_;\n }\n const newYear = year(d) + yearOffset;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, day(d));\n return create(newYear, newMonth, newDay, hour(d), minute(d), second(d), millisecond(d), d.kind);\n}\nexport function subtract(d, that) {\n return typeof that === \"number\"\n ? add(d, -that)\n : d.getTime() - that.getTime();\n}\nexport function toLongDateString(d) {\n return d.toDateString();\n}\nexport function toShortDateString(d) {\n return d.toLocaleDateString();\n}\nexport function toLongTimeString(d) {\n return d.toLocaleTimeString();\n}\nexport function toShortTimeString(d) {\n return d.toLocaleTimeString().replace(/:\\d\\d(?!:)/, \"\");\n}\nexport function equals(d1, d2) {\n return d1.getTime() === d2.getTime();\n}\nexport const compare = compareDates;\nexport const compareTo = compareDates;\nexport function op_Addition(x, y) {\n return add(x, y);\n}\nexport function op_Subtraction(x, y) {\n return subtract(x, y);\n}\nexport function isDaylightSavingTime(x) {\n const jan = new Date(x.getFullYear(), 0, 1);\n const jul = new Date(x.getFullYear(), 6, 1);\n return isDST(jan.getTimezoneOffset(), jul.getTimezoneOffset(), x.getTimezoneOffset());\n}\nfunction isDST(janOffset, julOffset, tOffset) {\n return Math.min(janOffset, julOffset) === tOffset;\n}\nexport default DateTime;\n","export function create(pattern, options = 0) {\n // Supported RegexOptions\n // * IgnoreCase: 0x0001\n // * Multiline: 0x0002\n // * Compiled: 0x0008 (ignored)\n // * Singleline: 0x0010\n // * ECMAScript: 0x0100 (ignored)\n if ((options & ~(1 ^ 2 ^ 8 ^ 16 ^ 256)) !== 0) {\n throw new Error(\"RegexOptions only supports: IgnoreCase, Multiline, Compiled, Singleline and ECMAScript\");\n }\n // Set always global and unicode flags for compatibility with dotnet, see #2925\n let flags = \"gu\";\n flags += options & 1 ? \"i\" : \"\"; // 0x0001 RegexOptions.IgnoreCase\n flags += options & 2 ? \"m\" : \"\";\n flags += options & 16 ? \"s\" : \"\";\n return new RegExp(pattern, flags);\n}\n// From http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\nexport function escape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n}\nexport function unescape(str) {\n return str.replace(/\\\\([\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|])/g, \"$1\");\n}\nexport function isMatch(reg, input, startAt = 0) {\n reg.lastIndex = startAt;\n return reg.test(input);\n}\nexport function match(reg, input, startAt = 0) {\n reg.lastIndex = startAt;\n return reg.exec(input);\n}\nexport function matches(reg, input, startAt = 0) {\n if (input == null) {\n throw new Error(\"Input cannot ve null\");\n }\n if (!reg.global) {\n throw new Error(\"Non-global RegExp\"); // Prevent infinite loop\n }\n reg.lastIndex = startAt;\n const matches = [];\n let m;\n let lastMatchIndex = -1;\n while ((m = reg.exec(input)) != null) {\n // It can happen even global regex get stuck, see #2845\n if (m.index === lastMatchIndex) {\n reg.lastIndex++;\n }\n else {\n lastMatchIndex = m.index;\n matches.push(m);\n }\n }\n return matches;\n}\nexport function options(reg) {\n let options = 256; // ECMAScript\n options |= reg.ignoreCase ? 1 : 0;\n options |= reg.multiline ? 2 : 0;\n return options;\n}\nexport function replace(reg, input, replacement, limit, offset = 0) {\n function replacer() {\n let res = arguments[0];\n if (limit) {\n limit--;\n const match = [];\n const len = arguments.length;\n // arguments: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_function_as_a_parameter\n // * match: matched substring\n // * p1, p2, ...: nth capture group string\n // * offset: offset of matched substring\n // * string: whole string examined\n // * groups: named capturing groups\n // ONLY if regex contains a named capture group AND browser supports named groups\n // -> last element can be groups OR input string\n // -> check if last element is string\n const withGroups = typeof arguments[len - 1] !== \"string\";\n let pLast = withGroups ? len - 3 : len - 2;\n for (let i = 0; i < pLast; i++) {\n match.push(arguments[i]);\n }\n match.index = arguments[pLast++];\n match.input = arguments[pLast++];\n if (withGroups) {\n match.groups = arguments[pLast];\n }\n res = replacement(match);\n }\n return res;\n }\n if (typeof reg === \"string\") {\n const tmp = reg;\n reg = create(input, limit ?? 0);\n input = tmp;\n limit = undefined;\n }\n if (typeof replacement === \"function\") {\n limit = limit == null ? -1 : limit;\n return input.substring(0, offset) + input.substring(offset).replace(reg, replacer);\n }\n else {\n replacement =\n replacement\n // $0 doesn't work with JS regex, see #1155\n .replace(/\\$0/g, (_s) => \"$&\")\n // named groups in replacement are `${name}` in .Net, but `$` in JS (in regex: groups are `(?...)` in both)\n .replace(/\\${([^}]+)}/g, \"\\$<$1>\");\n if (limit != null) {\n let m;\n const sub1 = input.substring(offset);\n const _matches = matches(reg, sub1);\n const sub2 = matches.length > limit ? (m = _matches[limit - 1], sub1.substring(0, m.index + m[0].length)) : sub1;\n return input.substring(0, offset) + sub2.replace(reg, replacement)\n + input.substring(offset + sub2.length);\n }\n else {\n return input.replace(reg, replacement);\n }\n }\n}\nexport function split(reg, input, limit, offset = 0) {\n if (typeof reg === \"string\") {\n const tmp = reg;\n reg = create(input, limit ?? 0);\n input = tmp;\n limit = undefined;\n }\n input = input.substring(offset);\n return input.split(reg, limit);\n}\n","import { toString as dateToString } from \"./Date.js\";\nimport { compare as numericCompare, isNumeric, multiply, toExponential, toFixed, toHex, toPrecision } from \"./Numeric.js\";\nimport { escape } from \"./RegExp.js\";\nimport { toString } from \"./Types.js\";\nconst fsFormatRegExp = /(^|[^%])%([0+\\- ]*)(\\*|\\d+)?(?:\\.(\\d+))?(\\w)/g;\nconst interpolateRegExp = /(?:(^|[^%])%([0+\\- ]*)(\\d+)?(?:\\.(\\d+))?(\\w))?%P\\(\\)/g;\nconst formatRegExp = /\\{(\\d+)(,-?\\d+)?(?:\\:([a-zA-Z])(\\d{0,2})|\\:(.+?))?\\}/g;\nfunction isLessThan(x, y) {\n return numericCompare(x, y) < 0;\n}\nfunction cmp(x, y, ic) {\n function isIgnoreCase(i) {\n return i === true ||\n i === 1 /* StringComparison.CurrentCultureIgnoreCase */ ||\n i === 3 /* StringComparison.InvariantCultureIgnoreCase */ ||\n i === 5 /* StringComparison.OrdinalIgnoreCase */;\n }\n function isOrdinal(i) {\n return i === 4 /* StringComparison.Ordinal */ ||\n i === 5 /* StringComparison.OrdinalIgnoreCase */;\n }\n if (x == null) {\n return y == null ? 0 : -1;\n }\n if (y == null) {\n return 1;\n } // everything is bigger than null\n if (isOrdinal(ic)) {\n if (isIgnoreCase(ic)) {\n x = x.toLowerCase();\n y = y.toLowerCase();\n }\n return (x === y) ? 0 : (x < y ? -1 : 1);\n }\n else {\n if (isIgnoreCase(ic)) {\n x = x.toLocaleLowerCase();\n y = y.toLocaleLowerCase();\n }\n return x.localeCompare(y);\n }\n}\nexport function compare(...args) {\n switch (args.length) {\n case 2: return cmp(args[0], args[1], false);\n case 3: return cmp(args[0], args[1], args[2]);\n case 4: return cmp(args[0], args[1], args[2] === true);\n case 5: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), false);\n case 6: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), args[5]);\n case 7: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), args[5] === true);\n default: throw new Error(\"String.compare: Unsupported number of parameters\");\n }\n}\nexport function compareOrdinal(x, y) {\n return cmp(x, y, 4 /* StringComparison.Ordinal */);\n}\nexport function compareTo(x, y) {\n return cmp(x, y, 0 /* StringComparison.CurrentCulture */);\n}\nexport function startsWith(str, pattern, ic) {\n if (ic === 4 /* StringComparison.Ordinal */) { // to avoid substring allocation\n return str.startsWith(pattern);\n }\n if (str.length >= pattern.length) {\n return cmp(str.substr(0, pattern.length), pattern, ic) === 0;\n }\n return false;\n}\nexport function endsWith(str, pattern, ic) {\n if (ic === 4 /* StringComparison.Ordinal */) { // to avoid substring allocation\n return str.endsWith(pattern);\n }\n if (str.length >= pattern.length) {\n return cmp(str.substr(str.length - pattern.length, pattern.length), pattern, ic) === 0;\n }\n return false;\n}\nexport function indexOfAny(str, anyOf, ...args) {\n if (str == null || str === \"\") {\n return -1;\n }\n const startIndex = (args.length > 0) ? args[0] : 0;\n if (startIndex < 0) {\n throw new Error(\"Start index cannot be negative\");\n }\n const length = (args.length > 1) ? args[1] : str.length - startIndex;\n if (length < 0) {\n throw new Error(\"Length cannot be negative\");\n }\n if (startIndex + length > str.length) {\n throw new Error(\"Invalid startIndex and length\");\n }\n const endIndex = startIndex + length;\n const anyOfAsStr = \"\".concat.apply(\"\", anyOf);\n for (let i = startIndex; i < endIndex; i++) {\n if (anyOfAsStr.indexOf(str[i]) > -1) {\n return i;\n }\n }\n return -1;\n}\nexport function printf(input) {\n return {\n input,\n cont: fsFormat(input),\n };\n}\nexport function interpolate(str, values) {\n let valIdx = 0;\n let strIdx = 0;\n let result = \"\";\n interpolateRegExp.lastIndex = 0;\n let match = interpolateRegExp.exec(str);\n while (match) {\n // The first group corresponds to the no-escape char (^|[^%]), the actual pattern starts in the next char\n // Note: we don't use negative lookbehind because some browsers don't support it yet\n const matchIndex = match.index + (match[1] || \"\").length;\n result += str.substring(strIdx, matchIndex).replace(/%%/g, \"%\");\n const [, , flags, padLength, precision, format] = match;\n // Save interpolateRegExp.lastIndex before running formatReplacement because the values\n // may also involve interpolation and make use of interpolateRegExp (see #3078)\n strIdx = interpolateRegExp.lastIndex;\n result += formatReplacement(values[valIdx++], flags, padLength, precision, format);\n // Move interpolateRegExp.lastIndex one char behind to make sure we match the no-escape char next time\n interpolateRegExp.lastIndex = strIdx - 1;\n match = interpolateRegExp.exec(str);\n }\n result += str.substring(strIdx).replace(/%%/g, \"%\");\n return result;\n}\nfunction continuePrint(cont, arg) {\n return typeof arg === \"string\" ? cont(arg) : arg.cont(cont);\n}\nexport function toConsole(arg) {\n // Don't remove the lambda here, see #1357\n return continuePrint((x) => console.log(x), arg);\n}\nexport function toConsoleError(arg) {\n return continuePrint((x) => console.error(x), arg);\n}\nexport function toText(arg) {\n return continuePrint((x) => x, arg);\n}\nexport function toFail(arg) {\n return continuePrint((x) => {\n throw new Error(x);\n }, arg);\n}\nfunction formatReplacement(rep, flags, padLength, precision, format) {\n let sign = \"\";\n flags = flags || \"\";\n format = format || \"\";\n if (isNumeric(rep)) {\n if (format.toLowerCase() !== \"x\") {\n if (isLessThan(rep, 0)) {\n rep = multiply(rep, -1);\n sign = \"-\";\n }\n else {\n if (flags.indexOf(\" \") >= 0) {\n sign = \" \";\n }\n else if (flags.indexOf(\"+\") >= 0) {\n sign = \"+\";\n }\n }\n }\n precision = precision == null ? null : parseInt(precision, 10);\n switch (format) {\n case \"f\":\n case \"F\":\n precision = precision != null ? precision : 6;\n rep = toFixed(rep, precision);\n break;\n case \"g\":\n case \"G\":\n rep = precision != null ? toPrecision(rep, precision) : toPrecision(rep);\n break;\n case \"e\":\n case \"E\":\n rep = precision != null ? toExponential(rep, precision) : toExponential(rep);\n break;\n case \"x\":\n rep = toHex(rep);\n break;\n case \"X\":\n rep = toHex(rep).toUpperCase();\n break;\n default: // AOid\n rep = String(rep);\n break;\n }\n }\n else if (rep instanceof Date) {\n rep = dateToString(rep);\n }\n else {\n rep = toString(rep);\n }\n padLength = typeof padLength === \"number\" ? padLength : parseInt(padLength, 10);\n if (!isNaN(padLength)) {\n const zeroFlag = flags.indexOf(\"0\") >= 0; // Use '0' for left padding\n const minusFlag = flags.indexOf(\"-\") >= 0; // Right padding\n const ch = minusFlag || !zeroFlag ? \" \" : \"0\";\n if (ch === \"0\") {\n rep = pad(rep, padLength - sign.length, ch, minusFlag);\n rep = sign + rep;\n }\n else {\n rep = pad(sign + rep, padLength, ch, minusFlag);\n }\n }\n else {\n rep = sign + rep;\n }\n return rep;\n}\nfunction createPrinter(cont, _strParts, _matches, _result = \"\", padArg = -1) {\n return (...args) => {\n // Make copies of the values passed by reference because the function can be used multiple times\n let result = _result;\n const strParts = _strParts.slice();\n const matches = _matches.slice();\n for (const arg of args) {\n const [, , flags, _padLength, precision, format] = matches[0];\n let padLength = _padLength;\n if (padArg >= 0) {\n padLength = padArg;\n padArg = -1;\n }\n else if (padLength === \"*\") {\n if (arg < 0) {\n throw new Error(\"Non-negative number required\");\n }\n padArg = arg;\n continue;\n }\n result += strParts[0];\n result += formatReplacement(arg, flags, padLength, precision, format);\n strParts.splice(0, 1);\n matches.splice(0, 1);\n }\n if (matches.length === 0) {\n result += strParts[0];\n return cont(result);\n }\n else {\n return createPrinter(cont, strParts, matches, result, padArg);\n }\n };\n}\nexport function fsFormat(str) {\n return (cont) => {\n fsFormatRegExp.lastIndex = 0;\n const strParts = [];\n const matches = [];\n let strIdx = 0;\n let match = fsFormatRegExp.exec(str);\n while (match) {\n // The first group corresponds to the no-escape char (^|[^%]), the actual pattern starts in the next char\n // Note: we don't use negative lookbehind because some browsers don't support it yet\n const matchIndex = match.index + (match[1] || \"\").length;\n strParts.push(str.substring(strIdx, matchIndex).replace(/%%/g, \"%\"));\n matches.push(match);\n strIdx = fsFormatRegExp.lastIndex;\n // Likewise we need to move fsFormatRegExp.lastIndex one char behind to make sure we match the no-escape char next time\n fsFormatRegExp.lastIndex -= 1;\n match = fsFormatRegExp.exec(str);\n }\n if (strParts.length === 0) {\n return cont(str.replace(/%%/g, \"%\"));\n }\n else {\n strParts.push(str.substring(strIdx).replace(/%%/g, \"%\"));\n return createPrinter(cont, strParts, matches);\n }\n };\n}\nexport function format(str, ...args) {\n let str2;\n if (typeof str === \"object\") {\n // Called with culture info\n str2 = String(args[0]);\n args.shift();\n }\n else {\n str2 = str;\n }\n return str2.replace(formatRegExp, (_, idx, padLength, format, precision, pattern) => {\n if (idx < 0 || idx >= args.length) {\n throw new Error(\"Index must be greater or equal to zero and less than the arguments' length.\");\n }\n let rep = args[idx];\n if (isNumeric(rep)) {\n precision = precision == null ? null : parseInt(precision, 10);\n switch (format) {\n case \"f\":\n case \"F\":\n precision = precision != null ? precision : 2;\n rep = toFixed(rep, precision);\n break;\n case \"g\":\n case \"G\":\n rep = precision != null ? toPrecision(rep, precision) : toPrecision(rep);\n break;\n case \"e\":\n case \"E\":\n rep = precision != null ? toExponential(rep, precision) : toExponential(rep);\n break;\n case \"p\":\n case \"P\":\n precision = precision != null ? precision : 2;\n rep = toFixed(multiply(rep, 100), precision) + \" %\";\n break;\n case \"d\":\n case \"D\":\n rep = precision != null ? padLeft(String(rep), precision, \"0\") : String(rep);\n break;\n case \"x\":\n case \"X\":\n rep = precision != null ? padLeft(toHex(rep), precision, \"0\") : toHex(rep);\n if (format === \"X\") {\n rep = rep.toUpperCase();\n }\n break;\n default:\n if (pattern) {\n let sign = \"\";\n rep = pattern.replace(/([0#,]+)(\\.[0#]+)?/, (_, intPart, decimalPart) => {\n if (isLessThan(rep, 0)) {\n rep = multiply(rep, -1);\n sign = \"-\";\n }\n decimalPart = decimalPart == null ? \"\" : decimalPart.substring(1);\n rep = toFixed(rep, Math.max(decimalPart.length, 0));\n let [repInt, repDecimal] = rep.split(\".\");\n repDecimal || (repDecimal = \"\");\n const leftZeroes = intPart.replace(/,/g, \"\").replace(/^#+/, \"\").length;\n repInt = padLeft(repInt, leftZeroes, \"0\");\n const rightZeros = decimalPart.replace(/#+$/, \"\").length;\n if (rightZeros > repDecimal.length) {\n repDecimal = padRight(repDecimal, rightZeros, \"0\");\n }\n else if (rightZeros < repDecimal.length) {\n repDecimal = repDecimal.substring(0, rightZeros) + repDecimal.substring(rightZeros).replace(/0+$/, \"\");\n }\n // Thousands separator\n if (intPart.indexOf(\",\") > 0) {\n const i = repInt.length % 3;\n const thousandGroups = Math.floor(repInt.length / 3);\n let thousands = i > 0 ? repInt.substr(0, i) + (thousandGroups > 0 ? \",\" : \"\") : \"\";\n for (let j = 0; j < thousandGroups; j++) {\n thousands += repInt.substr(i + j * 3, 3) + (j < thousandGroups - 1 ? \",\" : \"\");\n }\n repInt = thousands;\n }\n return repDecimal.length > 0 ? repInt + \".\" + repDecimal : repInt;\n });\n rep = sign + rep;\n }\n }\n }\n else if (rep instanceof Date) {\n rep = dateToString(rep, pattern || format);\n }\n else {\n rep = toString(rep);\n }\n padLength = parseInt((padLength || \" \").substring(1), 10);\n if (!isNaN(padLength)) {\n rep = pad(String(rep), Math.abs(padLength), \" \", padLength < 0);\n }\n return rep;\n });\n}\nexport function initialize(n, f) {\n if (n < 0) {\n throw new Error(\"String length must be non-negative\");\n }\n const xs = new Array(n);\n for (let i = 0; i < n; i++) {\n xs[i] = f(i);\n }\n return xs.join(\"\");\n}\nexport function insert(str, startIndex, value) {\n if (startIndex < 0 || startIndex > str.length) {\n throw new Error(\"startIndex is negative or greater than the length of this instance.\");\n }\n return str.substring(0, startIndex) + value + str.substring(startIndex);\n}\nexport function isNullOrEmpty(str) {\n return typeof str !== \"string\" || str.length === 0;\n}\nexport function isNullOrWhiteSpace(str) {\n return typeof str !== \"string\" || /^\\s*$/.test(str);\n}\nexport function concat(...xs) {\n return xs.map((x) => String(x)).join(\"\");\n}\nexport function join(delimiter, xs) {\n if (Array.isArray(xs)) {\n return xs.join(delimiter);\n }\n else {\n return Array.from(xs).join(delimiter);\n }\n}\nexport function joinWithIndices(delimiter, xs, startIndex, count) {\n const endIndexPlusOne = startIndex + count;\n if (endIndexPlusOne > xs.length) {\n throw new Error(\"Index and count must refer to a location within the buffer.\");\n }\n return xs.slice(startIndex, endIndexPlusOne).join(delimiter);\n}\nfunction notSupported(name) {\n throw new Error(\"The environment doesn't support '\" + name + \"', please use a polyfill.\");\n}\nexport function toBase64String(inArray) {\n let str = \"\";\n for (let i = 0; i < inArray.length; i++) {\n str += String.fromCharCode(inArray[i]);\n }\n return typeof btoa === \"function\" ? btoa(str) : notSupported(\"btoa\");\n}\nexport function fromBase64String(b64Encoded) {\n const binary = typeof atob === \"function\" ? atob(b64Encoded) : notSupported(\"atob\");\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\nfunction pad(str, len, ch, isRight) {\n ch = ch || \" \";\n len = len - str.length;\n for (let i = 0; i < len; i++) {\n str = isRight ? str + ch : ch + str;\n }\n return str;\n}\nexport function padLeft(str, len, ch) {\n return pad(str, len, ch);\n}\nexport function padRight(str, len, ch) {\n return pad(str, len, ch, true);\n}\nexport function remove(str, startIndex, count) {\n if (startIndex >= str.length) {\n throw new Error(\"startIndex must be less than length of string\");\n }\n if (typeof count === \"number\" && (startIndex + count) > str.length) {\n throw new Error(\"Index and count must refer to a location within the string.\");\n }\n return str.slice(0, startIndex) + (typeof count === \"number\" ? str.substr(startIndex + count) : \"\");\n}\nexport function replace(str, search, replace) {\n return str.replace(new RegExp(escape(search), \"g\"), replace);\n}\nexport function replicate(n, x) {\n return initialize(n, () => x);\n}\nexport function getCharAtIndex(input, index) {\n if (index < 0 || index >= input.length) {\n throw new Error(\"Index was outside the bounds of the array.\");\n }\n return input[index];\n}\nexport function split(str, splitters, count, options) {\n count = typeof count === \"number\" ? count : undefined;\n options = typeof options === \"number\" ? options : 0;\n if (count && count < 0) {\n throw new Error(\"Count cannot be less than zero\");\n }\n if (count === 0) {\n return [];\n }\n const removeEmpty = (options & 1) === 1;\n const trim = (options & 2) === 2;\n splitters = splitters || [];\n splitters = splitters.filter(x => x).map(escape);\n splitters = splitters.length > 0 ? splitters : [\"\\\\s\"];\n const splits = [];\n const reg = new RegExp(splitters.join(\"|\"), \"g\");\n let findSplits = true;\n let i = 0;\n do {\n const match = reg.exec(str);\n if (match === null) {\n const candidate = trim ? str.substring(i).trim() : str.substring(i);\n if (!removeEmpty || candidate.length > 0) {\n splits.push(candidate);\n }\n findSplits = false;\n }\n else {\n const candidate = trim ? str.substring(i, match.index).trim() : str.substring(i, match.index);\n if (!removeEmpty || candidate.length > 0) {\n if (count != null && splits.length + 1 === count) {\n splits.push(trim ? str.substring(i).trim() : str.substring(i));\n findSplits = false;\n }\n else {\n splits.push(candidate);\n }\n }\n i = reg.lastIndex;\n }\n } while (findSplits);\n return splits;\n}\nexport function trim(str, ...chars) {\n if (chars.length === 0) {\n return str.trim();\n }\n const pattern = \"[\" + escape(chars.join(\"\")) + \"]+\";\n return str.replace(new RegExp(\"^\" + pattern), \"\").replace(new RegExp(pattern + \"$\"), \"\");\n}\nexport function trimStart(str, ...chars) {\n return chars.length === 0\n ? str.trimStart()\n : str.replace(new RegExp(\"^[\" + escape(chars.join(\"\")) + \"]+\"), \"\");\n}\nexport function trimEnd(str, ...chars) {\n return chars.length === 0\n ? str.trimEnd()\n : str.replace(new RegExp(\"[\" + escape(chars.join(\"\")) + \"]+$\"), \"\");\n}\nexport function filter(pred, x) {\n return x.split(\"\").filter((c) => pred(c)).join(\"\");\n}\nexport function substring(str, startIndex, length) {\n if ((startIndex + (length || 0) > str.length)) {\n throw new Error(\"Invalid startIndex and/or length\");\n }\n return length != null ? str.substr(startIndex, length) : str.substr(startIndex);\n}\nexport function toCharArray2(str, startIndex, length) {\n return substring(str, startIndex, length).split(\"\");\n}\nexport function fmt(strs, ...args) {\n return ({ strs, args });\n}\nexport function fmtWith(fmts) {\n return (strs, ...args) => ({ strs, args, fmts });\n}\nexport function getFormat(s) {\n const strs = s.strs.map((value) => value.replace(/{/g, '{{').replace(/}/g, '}}'));\n return s.fmts\n ? strs\n .reduce((acc, newPart, index) => acc + `{${String(index - 1) + s.fmts[index - 1]}}` + newPart)\n : strs\n .reduce((acc, newPart, index) => acc + `{${index - 1}}` + newPart);\n}\n","import { structuralHash, equals, compare } from \"./Util.js\";\n// Using a class here for better compatibility with TS files importing Some\nexport class Some {\n constructor(value) {\n this.value = value;\n }\n toJSON() {\n return this.value;\n }\n // Don't add \"Some\" for consistency with erased options\n toString() {\n return String(this.value);\n }\n GetHashCode() {\n return structuralHash(this.value);\n }\n Equals(other) {\n if (other == null) {\n return false;\n }\n else {\n return equals(this.value, other instanceof Some ? other.value : other);\n }\n }\n CompareTo(other) {\n if (other == null) {\n return 1;\n }\n else {\n return compare(this.value, other instanceof Some ? other.value : other);\n }\n }\n}\nexport function value(x) {\n if (x == null) {\n throw new Error(\"Option has no value\");\n }\n else {\n return x instanceof Some ? x.value : x;\n }\n}\nexport function unwrap(opt) {\n return opt instanceof Some ? opt.value : opt;\n}\nexport function some(x) {\n return x == null || x instanceof Some ? new Some(x) : x;\n}\nexport function ofNullable(x) {\n // This will fail with unit probably, an alternative would be:\n // return x === null ? undefined : (x === undefined ? new Some(x) : x);\n return x == null ? undefined : x;\n}\nexport function toNullable(x) {\n return x == null ? null : value(x);\n}\nexport function flatten(x) {\n return x == null ? undefined : value(x);\n}\nexport function toArray(opt) {\n return (opt == null) ? [] : [value(opt)];\n}\nexport function defaultArg(opt, defaultValue) {\n return (opt != null) ? value(opt) : defaultValue;\n}\nexport function defaultArgWith(opt, defThunk) {\n return (opt != null) ? value(opt) : defThunk();\n}\nexport function orElse(opt, ifNone) {\n return opt == null ? ifNone : opt;\n}\nexport function orElseWith(opt, ifNoneThunk) {\n return opt == null ? ifNoneThunk() : opt;\n}\nexport function filter(predicate, opt) {\n return (opt != null) ? (predicate(value(opt)) ? opt : undefined) : opt;\n}\nexport function map(mapping, opt) {\n return (opt != null) ? some(mapping(value(opt))) : undefined;\n}\nexport function map2(mapping, opt1, opt2) {\n return (opt1 != null && opt2 != null) ? mapping(value(opt1), value(opt2)) : undefined;\n}\nexport function map3(mapping, opt1, opt2, opt3) {\n return (opt1 != null && opt2 != null && opt3 != null) ? mapping(value(opt1), value(opt2), value(opt3)) : undefined;\n}\nexport function bind(binder, opt) {\n return opt != null ? binder(value(opt)) : undefined;\n}\nexport function tryOp(op, arg) {\n try {\n return some(op(arg));\n }\n catch {\n return undefined;\n }\n}\n","export const SR_indexOutOfBounds = \"The index was outside the range of elements in the collection.\";\nexport const SR_inputWasEmpty = \"Collection was empty.\";\nexport const SR_inputMustBeNonNegative = \"The input must be non-negative.\";\nexport const SR_inputSequenceEmpty = \"The input sequence was empty.\";\nexport const SR_inputSequenceTooLong = \"The input sequence contains more than one element.\";\nexport const SR_keyNotFoundAlt = \"An index satisfying the predicate was not found in the collection.\";\nexport const SR_differentLengths = \"The collections had different lengths.\";\nexport const SR_notEnoughElements = \"The input sequence has an insufficient number of elements.\";\n","export function Helpers_allocateArrayFromCons(cons, len) {\n if ((typeof cons) === \"function\") {\n return new cons(len);\n }\n else {\n return new Array(len);\n }\n}\n","import { FSharpRef } from \"./Types.js\";\nexport function tryParse(str, defValue) {\n // TODO: test if value is valid and in range\n if (str != null && /\\S/.test(str)) {\n const v = +str.replace(\"_\", \"\");\n if (!Number.isNaN(v)) {\n defValue.contents = v;\n return true;\n }\n }\n return false;\n}\nexport function parse(str) {\n const defValue = new FSharpRef(0);\n if (tryParse(str, defValue)) {\n return defValue.contents;\n }\n else {\n throw new Error(`The input string ${str} was not in a correct format.`);\n }\n}\n// JS Number.isFinite function evals false for NaN\nexport function isPositiveInfinity(x) {\n return x === Number.POSITIVE_INFINITY;\n}\nexport function isNegativeInfinity(x) {\n return x === Number.NEGATIVE_INFINITY;\n}\nexport function isInfinity(x) {\n return x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY;\n}\nexport function max(x, y) {\n return x > y ? x : y;\n}\nexport function min(x, y) {\n return x < y ? x : y;\n}\nexport function maxMagnitude(x, y) {\n return Math.abs(x) > Math.abs(y) ? x : y;\n}\nexport function minMagnitude(x, y) {\n return Math.abs(x) < Math.abs(y) ? x : y;\n}\nexport function clamp(x, min, max) {\n return x < min ? min : x > max ? max : x;\n}\n","import { Helpers_allocateArrayFromCons } from \"./Native.js\";\nimport { setItem as setItem_1, item as item_2 } from \"./Array.js\";\nimport { value as value_2, map as map_1, defaultArg, some } from \"./Option.js\";\nimport { min as min_1, max as max_1 } from \"./Double.js\";\nimport { equals as equals_1, disposeSafe, getEnumerator, copyToArray, defaultOf } from \"./Util.js\";\nimport { SR_indexOutOfBounds } from \"./Global.js\";\nfunction indexNotFound() {\n throw new Error(\"An index satisfying the predicate was not found in the collection.\");\n}\nfunction differentLengths() {\n throw new Error(\"Arrays had different lengths\");\n}\nexport function append(array1, array2, cons) {\n const len1 = array1.length | 0;\n const len2 = array2.length | 0;\n const newArray = Helpers_allocateArrayFromCons(cons, len1 + len2);\n for (let i = 0; i <= (len1 - 1); i++) {\n setItem_1(newArray, i, item_2(i, array1));\n }\n for (let i_1 = 0; i_1 <= (len2 - 1); i_1++) {\n setItem_1(newArray, i_1 + len1, item_2(i_1, array2));\n }\n return newArray;\n}\nexport function filter(predicate, array) {\n return array.filter(predicate);\n}\nexport function fill(target, targetIndex, count, value) {\n const start = targetIndex | 0;\n return target.fill(value, start, (start + count));\n}\nexport function getSubArray(array, start, count) {\n const start_1 = start | 0;\n return array.slice(start_1, (start_1 + count));\n}\nexport function last(array) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n }\n return item_2(array.length - 1, array);\n}\nexport function tryLast(array) {\n if (array.length === 0) {\n return undefined;\n }\n else {\n return some(item_2(array.length - 1, array));\n }\n}\nexport function mapIndexed(f, source, cons) {\n const len = source.length | 0;\n const target = Helpers_allocateArrayFromCons(cons, len);\n for (let i = 0; i <= (len - 1); i++) {\n setItem_1(target, i, f(i, item_2(i, source)));\n }\n return target;\n}\nexport function map(f, source, cons) {\n const len = source.length | 0;\n const target = Helpers_allocateArrayFromCons(cons, len);\n for (let i = 0; i <= (len - 1); i++) {\n setItem_1(target, i, f(item_2(i, source)));\n }\n return target;\n}\nexport function mapIndexed2(f, source1, source2, cons) {\n if (source1.length !== source2.length) {\n throw new Error(\"Arrays had different lengths\");\n }\n const result = Helpers_allocateArrayFromCons(cons, source1.length);\n for (let i = 0; i <= (source1.length - 1); i++) {\n setItem_1(result, i, f(i, item_2(i, source1), item_2(i, source2)));\n }\n return result;\n}\nexport function map2(f, source1, source2, cons) {\n if (source1.length !== source2.length) {\n throw new Error(\"Arrays had different lengths\");\n }\n const result = Helpers_allocateArrayFromCons(cons, source1.length);\n for (let i = 0; i <= (source1.length - 1); i++) {\n setItem_1(result, i, f(item_2(i, source1), item_2(i, source2)));\n }\n return result;\n}\nexport function mapIndexed3(f, source1, source2, source3, cons) {\n if ((source1.length !== source2.length) ? true : (source2.length !== source3.length)) {\n throw new Error(\"Arrays had different lengths\");\n }\n const result = Helpers_allocateArrayFromCons(cons, source1.length);\n for (let i = 0; i <= (source1.length - 1); i++) {\n setItem_1(result, i, f(i, item_2(i, source1), item_2(i, source2), item_2(i, source3)));\n }\n return result;\n}\nexport function map3(f, source1, source2, source3, cons) {\n if ((source1.length !== source2.length) ? true : (source2.length !== source3.length)) {\n throw new Error(\"Arrays had different lengths\");\n }\n const result = Helpers_allocateArrayFromCons(cons, source1.length);\n for (let i = 0; i <= (source1.length - 1); i++) {\n setItem_1(result, i, f(item_2(i, source1), item_2(i, source2), item_2(i, source3)));\n }\n return result;\n}\nexport function mapFold(mapping, state, array, cons) {\n const matchValue = array.length | 0;\n if (matchValue === 0) {\n return [[], state];\n }\n else {\n let acc = state;\n const res = Helpers_allocateArrayFromCons(cons, matchValue);\n for (let i = 0; i <= (array.length - 1); i++) {\n const patternInput = mapping(acc, item_2(i, array));\n setItem_1(res, i, patternInput[0]);\n acc = patternInput[1];\n }\n return [res, acc];\n }\n}\nexport function mapFoldBack(mapping, array, state, cons) {\n const matchValue = array.length | 0;\n if (matchValue === 0) {\n return [[], state];\n }\n else {\n let acc = state;\n const res = Helpers_allocateArrayFromCons(cons, matchValue);\n for (let i = array.length - 1; i >= 0; i--) {\n const patternInput = mapping(item_2(i, array), acc);\n setItem_1(res, i, patternInput[0]);\n acc = patternInput[1];\n }\n return [res, acc];\n }\n}\nexport function indexed(source) {\n const len = source.length | 0;\n const target = new Array(len);\n for (let i = 0; i <= (len - 1); i++) {\n setItem_1(target, i, [i, item_2(i, source)]);\n }\n return target;\n}\nexport function truncate(count, array) {\n const count_1 = max_1(0, count) | 0;\n return array.slice(0, (0 + count_1));\n}\nexport function concat(arrays, cons) {\n const arrays_1 = Array.isArray(arrays) ? arrays : (Array.from(arrays));\n const matchValue = arrays_1.length | 0;\n switch (matchValue) {\n case 0:\n return Helpers_allocateArrayFromCons(cons, 0);\n case 1:\n return item_2(0, arrays_1);\n default: {\n let totalIdx = 0;\n let totalLength = 0;\n for (let idx = 0; idx <= (arrays_1.length - 1); idx++) {\n const arr_1 = item_2(idx, arrays_1);\n totalLength = ((totalLength + arr_1.length) | 0);\n }\n const result = Helpers_allocateArrayFromCons(cons, totalLength);\n for (let idx_1 = 0; idx_1 <= (arrays_1.length - 1); idx_1++) {\n const arr_2 = item_2(idx_1, arrays_1);\n for (let j = 0; j <= (arr_2.length - 1); j++) {\n setItem_1(result, totalIdx, item_2(j, arr_2));\n totalIdx = ((totalIdx + 1) | 0);\n }\n }\n return result;\n }\n }\n}\nexport function collect(mapping, array, cons) {\n return concat(map(mapping, array, defaultOf()), cons);\n}\nexport function where(predicate, array) {\n return array.filter(predicate);\n}\nexport function indexOf(array, item_1, start, count, eq) {\n const start_1 = defaultArg(start, 0) | 0;\n const end$0027 = defaultArg(map_1((c) => (start_1 + c), count), array.length) | 0;\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i >= end$0027) {\n return -1;\n }\n else if (eq.Equals(item_1, item_2(i, array))) {\n return i | 0;\n }\n else {\n i_mut = (i + 1);\n continue loop;\n }\n break;\n }\n };\n return loop(start_1) | 0;\n}\nexport function contains(value, array, eq) {\n return indexOf(array, value, undefined, undefined, eq) >= 0;\n}\nexport function empty(cons) {\n return Helpers_allocateArrayFromCons(cons, 0);\n}\nexport function singleton(value, cons) {\n const ar = Helpers_allocateArrayFromCons(cons, 1);\n setItem_1(ar, 0, value);\n return ar;\n}\nexport function initialize(count, initializer, cons) {\n if (count < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n }\n const result = Helpers_allocateArrayFromCons(cons, count);\n for (let i = 0; i <= (count - 1); i++) {\n setItem_1(result, i, initializer(i));\n }\n return result;\n}\nexport function pairwise(array) {\n if (array.length < 2) {\n return [];\n }\n else {\n const count = (array.length - 1) | 0;\n const result = new Array(count);\n for (let i = 0; i <= (count - 1); i++) {\n setItem_1(result, i, [item_2(i, array), item_2(i + 1, array)]);\n }\n return result;\n }\n}\nexport function replicate(count, initial, cons) {\n if (count < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n }\n const result = Helpers_allocateArrayFromCons(cons, count);\n for (let i = 0; i <= (result.length - 1); i++) {\n setItem_1(result, i, initial);\n }\n return result;\n}\nexport function copy(array) {\n return array.slice();\n}\nexport function copyTo(source, sourceIndex, target, targetIndex, count) {\n copyToArray(source, sourceIndex, target, targetIndex, count);\n}\nexport function reverse(array) {\n const array_2 = array.slice();\n return array_2.reverse();\n}\nexport function scan(folder, state, array, cons) {\n const res = Helpers_allocateArrayFromCons(cons, array.length + 1);\n setItem_1(res, 0, state);\n for (let i = 0; i <= (array.length - 1); i++) {\n setItem_1(res, i + 1, folder(item_2(i, res), item_2(i, array)));\n }\n return res;\n}\nexport function scanBack(folder, array, state, cons) {\n const res = Helpers_allocateArrayFromCons(cons, array.length + 1);\n setItem_1(res, array.length, state);\n for (let i = array.length - 1; i >= 0; i--) {\n setItem_1(res, i, folder(item_2(i, array), item_2(i + 1, res)));\n }\n return res;\n}\nexport function skip(count, array, cons) {\n if (count > array.length) {\n throw new Error(\"count is greater than array length\\\\nParameter name: count\");\n }\n if (count === array.length) {\n return Helpers_allocateArrayFromCons(cons, 0);\n }\n else {\n const count_1 = ((count < 0) ? 0 : count) | 0;\n return array.slice(count_1);\n }\n}\nexport function skipWhile(predicate, array, cons) {\n let count = 0;\n while ((count < array.length) && predicate(item_2(count, array))) {\n count = ((count + 1) | 0);\n }\n if (count === array.length) {\n return Helpers_allocateArrayFromCons(cons, 0);\n }\n else {\n const count_1 = count | 0;\n return array.slice(count_1);\n }\n}\nexport function take(count, array, cons) {\n if (count < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n }\n if (count > array.length) {\n throw new Error(\"count is greater than array length\\\\nParameter name: count\");\n }\n if (count === 0) {\n return Helpers_allocateArrayFromCons(cons, 0);\n }\n else {\n return array.slice(0, (0 + count));\n }\n}\nexport function takeWhile(predicate, array, cons) {\n let count = 0;\n while ((count < array.length) && predicate(item_2(count, array))) {\n count = ((count + 1) | 0);\n }\n if (count === 0) {\n return Helpers_allocateArrayFromCons(cons, 0);\n }\n else {\n const count_1 = count | 0;\n return array.slice(0, (0 + count_1));\n }\n}\nexport function addInPlace(x, array) {\n array.push(x);\n}\nexport function addRangeInPlace(range, array) {\n const enumerator = getEnumerator(range);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n addInPlace(enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), array);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n}\nexport function insertRangeInPlace(index, range, array) {\n let index_1;\n let i = index;\n const enumerator = getEnumerator(range);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const x = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n (index_1 = (i | 0), array.splice(index_1, 0, x));\n i = ((i + 1) | 0);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n}\nexport function removeInPlace(item_1, array, eq) {\n const i = indexOf(array, item_1, undefined, undefined, eq) | 0;\n if (i > -1) {\n array.splice(i, 1);\n return true;\n }\n else {\n return false;\n }\n}\nexport function removeAllInPlace(predicate, array) {\n const countRemoveAll = (count) => {\n const i = (array.findIndex(predicate)) | 0;\n if (i > -1) {\n array.splice(i, 1);\n return (countRemoveAll(count) + 1) | 0;\n }\n else {\n return count | 0;\n }\n };\n return countRemoveAll(0) | 0;\n}\nexport function partition(f, source, cons) {\n const len = source.length | 0;\n const res1 = Helpers_allocateArrayFromCons(cons, len);\n const res2 = Helpers_allocateArrayFromCons(cons, len);\n let iTrue = 0;\n let iFalse = 0;\n for (let i = 0; i <= (len - 1); i++) {\n if (f(item_2(i, source))) {\n setItem_1(res1, iTrue, item_2(i, source));\n iTrue = ((iTrue + 1) | 0);\n }\n else {\n setItem_1(res2, iFalse, item_2(i, source));\n iFalse = ((iFalse + 1) | 0);\n }\n }\n return [truncate(iTrue, res1), truncate(iFalse, res2)];\n}\nexport function find(predicate, array) {\n const matchValue = array.find(predicate);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_2(matchValue);\n }\n}\nexport function tryFind(predicate, array) {\n return array.find(predicate);\n}\nexport function findIndex(predicate, array) {\n const matchValue = (array.findIndex(predicate)) | 0;\n if (matchValue > -1) {\n return matchValue | 0;\n }\n else {\n indexNotFound();\n return -1;\n }\n}\nexport function tryFindIndex(predicate, array) {\n const matchValue = (array.findIndex(predicate)) | 0;\n if (matchValue > -1) {\n return matchValue;\n }\n else {\n return undefined;\n }\n}\nexport function pick(chooser, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i >= array.length) {\n return indexNotFound();\n }\n else {\n const matchValue = chooser(item_2(i, array));\n if (matchValue != null) {\n return value_2(matchValue);\n }\n else {\n i_mut = (i + 1);\n continue loop;\n }\n }\n break;\n }\n };\n return loop(0);\n}\nexport function tryPick(chooser, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i >= array.length) {\n return undefined;\n }\n else {\n const matchValue = chooser(item_2(i, array));\n if (matchValue == null) {\n i_mut = (i + 1);\n continue loop;\n }\n else {\n return matchValue;\n }\n }\n break;\n }\n };\n return loop(0);\n}\nexport function findBack(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n return indexNotFound();\n }\n else if (predicate(item_2(i, array))) {\n return item_2(i, array);\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1);\n}\nexport function tryFindBack(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n return undefined;\n }\n else if (predicate(item_2(i, array))) {\n return some(item_2(i, array));\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1);\n}\nexport function findLastIndex(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n return -1;\n }\n else if (predicate(item_2(i, array))) {\n return i | 0;\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1) | 0;\n}\nexport function findIndexBack(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n indexNotFound();\n return -1;\n }\n else if (predicate(item_2(i, array))) {\n return i | 0;\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1) | 0;\n}\nexport function tryFindIndexBack(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n return undefined;\n }\n else if (predicate(item_2(i, array))) {\n return i;\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1);\n}\nexport function choose(chooser, array, cons) {\n const res = [];\n for (let i = 0; i <= (array.length - 1); i++) {\n const matchValue = chooser(item_2(i, array));\n if (matchValue != null) {\n const y = value_2(matchValue);\n res.push(y);\n }\n }\n if (equals_1(cons, defaultOf())) {\n return res;\n }\n else {\n return map((x) => x, res, cons);\n }\n}\nexport function foldIndexed(folder, state, array) {\n return array.reduce(((delegateArg, delegateArg_1, delegateArg_2) => folder(delegateArg_2, delegateArg, delegateArg_1)), state);\n}\nexport function fold(folder, state, array) {\n const folder_1 = folder;\n return array.reduce((folder_1), state);\n}\nexport function iterate(action, array) {\n for (let i = 0; i <= (array.length - 1); i++) {\n action(item_2(i, array));\n }\n}\nexport function iterateIndexed(action, array) {\n for (let i = 0; i <= (array.length - 1); i++) {\n action(i, item_2(i, array));\n }\n}\nexport function iterate2(action, array1, array2) {\n if (array1.length !== array2.length) {\n differentLengths();\n }\n for (let i = 0; i <= (array1.length - 1); i++) {\n action(item_2(i, array1), item_2(i, array2));\n }\n}\nexport function iterateIndexed2(action, array1, array2) {\n if (array1.length !== array2.length) {\n differentLengths();\n }\n for (let i = 0; i <= (array1.length - 1); i++) {\n action(i, item_2(i, array1), item_2(i, array2));\n }\n}\nexport function isEmpty(array) {\n return array.length === 0;\n}\nexport function forAll(predicate, array) {\n return array.every(predicate);\n}\nexport function permute(f, array) {\n const size = array.length | 0;\n const res = array.slice();\n const checkFlags = new Array(size);\n iterateIndexed((i, x) => {\n const j = f(i) | 0;\n if ((j < 0) ? true : (j >= size)) {\n throw new Error(\"Not a valid permutation\");\n }\n setItem_1(res, j, x);\n setItem_1(checkFlags, j, 1);\n }, array);\n if (!(checkFlags.every((y) => (1 === y)))) {\n throw new Error(\"Not a valid permutation\");\n }\n return res;\n}\nexport function setSlice(target, lower, upper, source) {\n const lower_1 = defaultArg(lower, 0) | 0;\n const upper_1 = defaultArg(upper, -1) | 0;\n const length = (((upper_1 >= 0) ? upper_1 : (target.length - 1)) - lower_1) | 0;\n for (let i = 0; i <= length; i++) {\n setItem_1(target, i + lower_1, item_2(i, source));\n }\n}\nexport function sortInPlaceBy(projection, xs, comparer) {\n xs.sort((x, y) => comparer.Compare(projection(x), projection(y)));\n}\nexport function sortInPlace(xs, comparer) {\n xs.sort((x, y) => comparer.Compare(x, y));\n}\nexport function sort(xs, comparer) {\n const xs_1 = xs.slice();\n xs_1.sort((x, y) => comparer.Compare(x, y));\n return xs_1;\n}\nexport function sortBy(projection, xs, comparer) {\n const xs_1 = xs.slice();\n xs_1.sort((x, y) => comparer.Compare(projection(x), projection(y)));\n return xs_1;\n}\nexport function sortDescending(xs, comparer) {\n const xs_1 = xs.slice();\n xs_1.sort((x, y) => (comparer.Compare(x, y) * -1));\n return xs_1;\n}\nexport function sortByDescending(projection, xs, comparer) {\n const xs_1 = xs.slice();\n xs_1.sort((x, y) => (comparer.Compare(projection(x), projection(y)) * -1));\n return xs_1;\n}\nexport function sortWith(comparer, xs) {\n const comparer_1 = comparer;\n const xs_1 = xs.slice();\n xs_1.sort(comparer_1);\n return xs_1;\n}\nexport function allPairs(xs, ys) {\n const len1 = xs.length | 0;\n const len2 = ys.length | 0;\n const res = new Array(len1 * len2);\n for (let i = 0; i <= (xs.length - 1); i++) {\n for (let j = 0; j <= (ys.length - 1); j++) {\n setItem_1(res, (i * len2) + j, [item_2(i, xs), item_2(j, ys)]);\n }\n }\n return res;\n}\nexport function unfold(generator, state) {\n const res = [];\n const loop = (state_1_mut) => {\n loop: while (true) {\n const state_1 = state_1_mut;\n const matchValue = generator(state_1);\n if (matchValue != null) {\n const x = value_2(matchValue)[0];\n const s = value_2(matchValue)[1];\n res.push(x);\n state_1_mut = s;\n continue loop;\n }\n break;\n }\n };\n loop(state);\n return res;\n}\nexport function unzip(array) {\n const len = array.length | 0;\n const res1 = new Array(len);\n const res2 = new Array(len);\n iterateIndexed((i, tupledArg) => {\n setItem_1(res1, i, tupledArg[0]);\n setItem_1(res2, i, tupledArg[1]);\n }, array);\n return [res1, res2];\n}\nexport function unzip3(array) {\n const len = array.length | 0;\n const res1 = new Array(len);\n const res2 = new Array(len);\n const res3 = new Array(len);\n iterateIndexed((i, tupledArg) => {\n setItem_1(res1, i, tupledArg[0]);\n setItem_1(res2, i, tupledArg[1]);\n setItem_1(res3, i, tupledArg[2]);\n }, array);\n return [res1, res2, res3];\n}\nexport function zip(array1, array2) {\n if (array1.length !== array2.length) {\n differentLengths();\n }\n const result = new Array(array1.length);\n for (let i = 0; i <= (array1.length - 1); i++) {\n setItem_1(result, i, [item_2(i, array1), item_2(i, array2)]);\n }\n return result;\n}\nexport function zip3(array1, array2, array3) {\n if ((array1.length !== array2.length) ? true : (array2.length !== array3.length)) {\n differentLengths();\n }\n const result = new Array(array1.length);\n for (let i = 0; i <= (array1.length - 1); i++) {\n setItem_1(result, i, [item_2(i, array1), item_2(i, array2), item_2(i, array3)]);\n }\n return result;\n}\nexport function chunkBySize(chunkSize, array) {\n if (chunkSize < 1) {\n throw new Error(\"The input must be positive.\\\\nParameter name: size\");\n }\n if (array.length === 0) {\n return [[]];\n }\n else {\n const result = [];\n for (let x = 0; x <= (~~Math.ceil(array.length / chunkSize) - 1); x++) {\n let slice;\n const start_1 = (x * chunkSize) | 0;\n slice = (array.slice(start_1, (start_1 + chunkSize)));\n result.push(slice);\n }\n return result;\n }\n}\nexport function splitAt(index, array) {\n if ((index < 0) ? true : (index > array.length)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return [array.slice(0, (0 + index)), array.slice(index)];\n}\nexport function compareWith(comparer, source1, source2) {\n if (source1 == null) {\n if (source2 == null) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (source2 == null) {\n return 1;\n }\n else {\n const len1 = source1.length | 0;\n const len2 = source2.length | 0;\n const len = ((len1 < len2) ? len1 : len2) | 0;\n let i = 0;\n let res = 0;\n while ((res === 0) && (i < len)) {\n res = (comparer(item_2(i, source1), item_2(i, source2)) | 0);\n i = ((i + 1) | 0);\n }\n if (res !== 0) {\n return res | 0;\n }\n else if (len1 > len2) {\n return 1;\n }\n else if (len1 < len2) {\n return -1;\n }\n else {\n return 0;\n }\n }\n}\nexport function compareTo(comparer, source1, source2) {\n if (source1 == null) {\n if (source2 == null) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (source2 == null) {\n return 1;\n }\n else {\n const len1 = source1.length | 0;\n const len2 = source2.length | 0;\n if (len1 > len2) {\n return 1;\n }\n else if (len1 < len2) {\n return -1;\n }\n else {\n let i = 0;\n let res = 0;\n while ((res === 0) && (i < len1)) {\n res = (comparer(item_2(i, source1), item_2(i, source2)) | 0);\n i = ((i + 1) | 0);\n }\n return res | 0;\n }\n }\n}\nexport function equalsWith(equals, array1, array2) {\n if (array1 == null) {\n if (array2 == null) {\n return true;\n }\n else {\n return false;\n }\n }\n else if (array2 == null) {\n return false;\n }\n else {\n let i = 0;\n let result = true;\n const length1 = array1.length | 0;\n const length2 = array2.length | 0;\n if (length1 > length2) {\n return false;\n }\n else if (length1 < length2) {\n return false;\n }\n else {\n while ((i < length1) && result) {\n result = equals(item_2(i, array1), item_2(i, array2));\n i = ((i + 1) | 0);\n }\n return result;\n }\n }\n}\nexport function exactlyOne(array) {\n switch (array.length) {\n case 1:\n return item_2(0, array);\n case 0:\n throw new Error(\"The input sequence was empty\\\\nParameter name: array\");\n default:\n throw new Error(\"Input array too long\\\\nParameter name: array\");\n }\n}\nexport function tryExactlyOne(array) {\n if (array.length === 1) {\n return some(item_2(0, array));\n }\n else {\n return undefined;\n }\n}\nexport function head(array) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n }\n else {\n return item_2(0, array);\n }\n}\nexport function tryHead(array) {\n if (array.length === 0) {\n return undefined;\n }\n else {\n return some(item_2(0, array));\n }\n}\nexport function tail(array) {\n if (array.length === 0) {\n throw new Error(\"Not enough elements\\\\nParameter name: array\");\n }\n return array.slice(1);\n}\nexport function item(index, array) {\n if ((index < 0) ? true : (index >= array.length)) {\n throw new Error(\"Index was outside the bounds of the array.\\\\nParameter name: index\");\n }\n else {\n return array[index];\n }\n}\nexport function setItem(array, index, value) {\n if ((index < 0) ? true : (index >= array.length)) {\n throw new Error(\"Index was outside the bounds of the array.\\\\nParameter name: index\");\n }\n else {\n array[index] = value;\n }\n}\nexport function tryItem(index, array) {\n if ((index < 0) ? true : (index >= array.length)) {\n return undefined;\n }\n else {\n return some(array[index]);\n }\n}\nexport function foldBackIndexed(folder, array, state) {\n return array.reduceRight(((delegateArg, delegateArg_1, delegateArg_2) => folder(delegateArg_2, delegateArg_1, delegateArg)), state);\n}\nexport function foldBack(folder, array, state) {\n return array.reduceRight(((delegateArg, delegateArg_1) => folder(delegateArg_1, delegateArg)), state);\n}\nexport function foldIndexed2(folder, state, array1, array2) {\n let acc = state;\n if (array1.length !== array2.length) {\n throw new Error(\"Arrays have different lengths\");\n }\n for (let i = 0; i <= (array1.length - 1); i++) {\n acc = folder(i, acc, item_2(i, array1), item_2(i, array2));\n }\n return acc;\n}\nexport function fold2(folder, state, array1, array2) {\n return foldIndexed2((_arg, acc, x, y) => folder(acc, x, y), state, array1, array2);\n}\nexport function foldBackIndexed2(folder, array1, array2, state) {\n let acc = state;\n if (array1.length !== array2.length) {\n differentLengths();\n }\n const size = array1.length | 0;\n for (let i = 1; i <= size; i++) {\n acc = folder(i - 1, item_2(size - i, array1), item_2(size - i, array2), acc);\n }\n return acc;\n}\nexport function foldBack2(f, array1, array2, state) {\n return foldBackIndexed2((_arg, x, y, acc) => f(x, y, acc), array1, array2, state);\n}\nexport function reduce(reduction, array) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\");\n }\n const reduction_1 = reduction;\n return array.reduce(reduction_1);\n}\nexport function reduceBack(reduction, array) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\");\n }\n const reduction_1 = reduction;\n return array.reduceRight(reduction_1);\n}\nexport function forAll2(predicate, array1, array2) {\n return fold2((acc, x, y) => (acc && predicate(x, y)), true, array1, array2);\n}\nexport function existsOffset(predicate_mut, array_mut, index_mut) {\n existsOffset: while (true) {\n const predicate = predicate_mut, array = array_mut, index = index_mut;\n if (index === array.length) {\n return false;\n }\n else if (predicate(item_2(index, array))) {\n return true;\n }\n else {\n predicate_mut = predicate;\n array_mut = array;\n index_mut = (index + 1);\n continue existsOffset;\n }\n break;\n }\n}\nexport function exists(predicate, array) {\n return existsOffset(predicate, array, 0);\n}\nexport function existsOffset2(predicate_mut, array1_mut, array2_mut, index_mut) {\n existsOffset2: while (true) {\n const predicate = predicate_mut, array1 = array1_mut, array2 = array2_mut, index = index_mut;\n if (index === array1.length) {\n return false;\n }\n else if (predicate(item_2(index, array1), item_2(index, array2))) {\n return true;\n }\n else {\n predicate_mut = predicate;\n array1_mut = array1;\n array2_mut = array2;\n index_mut = (index + 1);\n continue existsOffset2;\n }\n break;\n }\n}\nexport function exists2(predicate, array1, array2) {\n if (array1.length !== array2.length) {\n differentLengths();\n }\n return existsOffset2(predicate, array1, array2, 0);\n}\nexport function sum(array, adder) {\n let acc = adder.GetZero();\n for (let i = 0; i <= (array.length - 1); i++) {\n acc = adder.Add(acc, item_2(i, array));\n }\n return acc;\n}\nexport function sumBy(projection, array, adder) {\n let acc = adder.GetZero();\n for (let i = 0; i <= (array.length - 1); i++) {\n acc = adder.Add(acc, projection(item_2(i, array)));\n }\n return acc;\n}\nexport function maxBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? y : x), xs);\n}\nexport function max(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? y : x), xs);\n}\nexport function minBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? x : y), xs);\n}\nexport function min(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? x : y), xs);\n}\nexport function average(array, averager) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n }\n let total = averager.GetZero();\n for (let i = 0; i <= (array.length - 1); i++) {\n total = averager.Add(total, item_2(i, array));\n }\n return averager.DivideByInt(total, array.length);\n}\nexport function averageBy(projection, array, averager) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n }\n let total = averager.GetZero();\n for (let i = 0; i <= (array.length - 1); i++) {\n total = averager.Add(total, projection(item_2(i, array)));\n }\n return averager.DivideByInt(total, array.length);\n}\nexport function windowed(windowSize, source) {\n if (windowSize <= 0) {\n throw new Error(\"windowSize must be positive\");\n }\n let res;\n const len = max_1(0, (source.length - windowSize) + 1) | 0;\n res = (new Array(len));\n for (let i = windowSize; i <= source.length; i++) {\n setItem_1(res, i - windowSize, source.slice(i - windowSize, (i - 1) + 1));\n }\n return res;\n}\nexport function splitInto(chunks, array) {\n if (chunks < 1) {\n throw new Error(\"The input must be positive.\\\\nParameter name: chunks\");\n }\n if (array.length === 0) {\n return [[]];\n }\n else {\n const result = [];\n const chunks_1 = min_1(chunks, array.length) | 0;\n const minChunkSize = ~~(array.length / chunks_1) | 0;\n const chunksWithExtraItem = (array.length % chunks_1) | 0;\n for (let i = 0; i <= (chunks_1 - 1); i++) {\n const chunkSize = ((i < chunksWithExtraItem) ? (minChunkSize + 1) : minChunkSize) | 0;\n let slice;\n const start_1 = ((i * minChunkSize) + min_1(chunksWithExtraItem, i)) | 0;\n slice = (array.slice(start_1, (start_1 + chunkSize)));\n result.push(slice);\n }\n return result;\n }\n}\nexport function transpose(arrays, cons) {\n const arrays_1 = Array.isArray(arrays) ? arrays : (Array.from(arrays));\n const len = arrays_1.length | 0;\n if (len === 0) {\n return new Array(0);\n }\n else {\n const firstArray = item_2(0, arrays_1);\n const lenInner = firstArray.length | 0;\n if (!forAll((a) => (a.length === lenInner), arrays_1)) {\n differentLengths();\n }\n const result = new Array(lenInner);\n for (let i = 0; i <= (lenInner - 1); i++) {\n setItem_1(result, i, Helpers_allocateArrayFromCons(cons, len));\n for (let j = 0; j <= (len - 1); j++) {\n item_2(i, result)[j] = item_2(i, item_2(j, arrays_1));\n }\n }\n return result;\n }\n}\nexport function insertAt(index, y, xs, cons) {\n const len = xs.length | 0;\n if ((index < 0) ? true : (index > len)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n const target = Helpers_allocateArrayFromCons(cons, len + 1);\n for (let i = 0; i <= (index - 1); i++) {\n setItem_1(target, i, item_2(i, xs));\n }\n setItem_1(target, index, y);\n for (let i_1 = index; i_1 <= (len - 1); i_1++) {\n setItem_1(target, i_1 + 1, item_2(i_1, xs));\n }\n return target;\n}\nexport function insertManyAt(index, ys, xs, cons) {\n const len = xs.length | 0;\n if ((index < 0) ? true : (index > len)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n const ys_1 = Array.from(ys);\n const len2 = ys_1.length | 0;\n const target = Helpers_allocateArrayFromCons(cons, len + len2);\n for (let i = 0; i <= (index - 1); i++) {\n setItem_1(target, i, item_2(i, xs));\n }\n for (let i_1 = 0; i_1 <= (len2 - 1); i_1++) {\n setItem_1(target, index + i_1, item_2(i_1, ys_1));\n }\n for (let i_2 = index; i_2 <= (len - 1); i_2++) {\n setItem_1(target, i_2 + len2, item_2(i_2, xs));\n }\n return target;\n}\nexport function removeAt(index, xs) {\n if ((index < 0) ? true : (index >= xs.length)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n let i = -1;\n return filter((_arg) => {\n i = ((i + 1) | 0);\n return i !== index;\n }, xs);\n}\nexport function removeManyAt(index, count, xs) {\n let i = -1;\n let status = -1;\n const ys = filter((_arg) => {\n i = ((i + 1) | 0);\n if (i === index) {\n status = 0;\n return false;\n }\n else if (i > index) {\n if (i < (index + count)) {\n return false;\n }\n else {\n status = 1;\n return true;\n }\n }\n else {\n return true;\n }\n }, xs);\n const status_1 = (((status === 0) && ((i + 1) === (index + count))) ? 1 : status) | 0;\n if (status_1 < 1) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + ((status_1 < 0) ? \"index\" : \"count\"));\n }\n return ys;\n}\nexport function updateAt(index, y, xs, cons) {\n const len = xs.length | 0;\n if ((index < 0) ? true : (index >= len)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n const target = Helpers_allocateArrayFromCons(cons, len);\n for (let i = 0; i <= (len - 1); i++) {\n setItem_1(target, i, (i === index) ? y : item_2(i, xs));\n }\n return target;\n}\nexport function resize(xs, newSize, zero, cons) {\n let array, array_1, start_2, count_2;\n if (newSize < 0) {\n throw new Error(\"The input must be non-negative.\\\\nParameter name: newSize\");\n }\n const zero_1 = defaultArg(zero, defaultOf());\n if (xs.contents == null) {\n xs.contents = ((array = Helpers_allocateArrayFromCons(cons, newSize), array.fill(zero_1, 0, (0 + newSize))));\n }\n else {\n const len = xs.contents.length | 0;\n if (newSize < len) {\n xs.contents = ((array_1 = xs.contents, array_1.slice(0, (0 + newSize))));\n }\n else if (newSize > len) {\n const target = Helpers_allocateArrayFromCons(cons, newSize);\n if (len > 0) {\n copyTo(xs.contents, 0, target, 0, len);\n }\n xs.contents = ((start_2 = (len | 0), (count_2 = ((newSize - len) | 0), target.fill(zero_1, start_2, (start_2 + count_2)))));\n }\n }\n}\n","import { join } from \"./String.js\";\nimport { defaultArg, some, value as value_1 } from \"./Option.js\";\nimport { disposeSafe, isArrayLike, defaultOf, toIterator, getEnumerator, compare, structuralHash, equals } from \"./Util.js\";\nimport { Record } from \"./Types.js\";\nimport { class_type, record_type, option_type } from \"./Reflection.js\";\nimport { SR_inputSequenceTooLong, SR_inputSequenceEmpty, SR_inputMustBeNonNegative, SR_notEnoughElements, SR_differentLengths, SR_keyNotFoundAlt, SR_indexOutOfBounds, SR_inputWasEmpty } from \"./Global.js\";\nimport { transpose as transpose_1, splitInto as splitInto_1, windowed as windowed_1, pairwise as pairwise_1, chunkBySize as chunkBySize_1, map as map_1, permute as permute_1, tryFindIndexBack as tryFindIndexBack_1, tryFindBack as tryFindBack_1, scanBack as scanBack_1, item as item_1, foldBack2 as foldBack2_1, foldBack as foldBack_1, setItem, fill } from \"./Array.js\";\nexport class FSharpList extends Record {\n constructor(head, tail) {\n super();\n this.head = head;\n this.tail = tail;\n }\n toString() {\n const xs = this;\n return (\"[\" + join(\"; \", xs)) + \"]\";\n }\n Equals(other) {\n const xs = this;\n if (xs === other) {\n return true;\n }\n else {\n const loop = (xs_1_mut, ys_1_mut) => {\n loop: while (true) {\n const xs_1 = xs_1_mut, ys_1 = ys_1_mut;\n const matchValue = xs_1.tail;\n const matchValue_1 = ys_1.tail;\n if (matchValue != null) {\n if (matchValue_1 != null) {\n const xt = value_1(matchValue);\n const yt = value_1(matchValue_1);\n if (equals(xs_1.head, ys_1.head)) {\n xs_1_mut = xt;\n ys_1_mut = yt;\n continue loop;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n }\n else if (matchValue_1 != null) {\n return false;\n }\n else {\n return true;\n }\n break;\n }\n };\n return loop(xs, other);\n }\n }\n GetHashCode() {\n const xs = this;\n const loop = (i_mut, h_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, h = h_mut, xs_1 = xs_1_mut;\n const matchValue = xs_1.tail;\n if (matchValue != null) {\n const t = value_1(matchValue);\n if (i > 18) {\n return h | 0;\n }\n else {\n i_mut = (i + 1);\n h_mut = (((h << 1) + structuralHash(xs_1.head)) + (631 * i));\n xs_1_mut = t;\n continue loop;\n }\n }\n else {\n return h | 0;\n }\n break;\n }\n };\n return loop(0, 0, xs) | 0;\n }\n toJSON() {\n const this$ = this;\n return Array.from(this$);\n }\n CompareTo(other) {\n const xs = this;\n const loop = (xs_1_mut, ys_1_mut) => {\n loop: while (true) {\n const xs_1 = xs_1_mut, ys_1 = ys_1_mut;\n const matchValue = xs_1.tail;\n const matchValue_1 = ys_1.tail;\n if (matchValue != null) {\n if (matchValue_1 != null) {\n const xt = value_1(matchValue);\n const yt = value_1(matchValue_1);\n const c = compare(xs_1.head, ys_1.head) | 0;\n if (c === 0) {\n xs_1_mut = xt;\n ys_1_mut = yt;\n continue loop;\n }\n else {\n return c | 0;\n }\n }\n else {\n return 1;\n }\n }\n else if (matchValue_1 != null) {\n return -1;\n }\n else {\n return 0;\n }\n break;\n }\n };\n return loop(xs, other) | 0;\n }\n GetEnumerator() {\n const xs = this;\n return ListEnumerator$1_$ctor_3002E699(xs);\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const xs = this;\n return getEnumerator(xs);\n }\n}\nexport function FSharpList_$reflection(gen0) {\n return record_type(\"ListModule.FSharpList\", [gen0], FSharpList, () => [[\"head\", gen0], [\"tail\", option_type(FSharpList_$reflection(gen0))]]);\n}\nexport class ListEnumerator$1 {\n constructor(xs) {\n this.xs = xs;\n this.it = this.xs;\n this.current = defaultOf();\n }\n \"System.Collections.Generic.IEnumerator`1.get_Current\"() {\n const _ = this;\n return _.current;\n }\n \"System.Collections.IEnumerator.get_Current\"() {\n const _ = this;\n return _.current;\n }\n \"System.Collections.IEnumerator.MoveNext\"() {\n const _ = this;\n const matchValue = _.it.tail;\n if (matchValue != null) {\n const t = value_1(matchValue);\n _.current = _.it.head;\n _.it = t;\n return true;\n }\n else {\n return false;\n }\n }\n \"System.Collections.IEnumerator.Reset\"() {\n const _ = this;\n _.it = _.xs;\n _.current = defaultOf();\n }\n Dispose() {\n }\n}\nexport function ListEnumerator$1_$reflection(gen0) {\n return class_type(\"ListModule.ListEnumerator`1\", [gen0], ListEnumerator$1);\n}\nexport function ListEnumerator$1_$ctor_3002E699(xs) {\n return new ListEnumerator$1(xs);\n}\nexport function FSharpList_get_Empty() {\n return new FSharpList(defaultOf(), undefined);\n}\nexport function FSharpList_Cons_305B8EAC(x, xs) {\n return new FSharpList(x, xs);\n}\nexport function FSharpList__get_IsEmpty(xs) {\n return xs.tail == null;\n}\nexport function FSharpList__get_Length(xs) {\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n const matchValue = xs_1.tail;\n if (matchValue != null) {\n i_mut = (i + 1);\n xs_1_mut = value_1(matchValue);\n continue loop;\n }\n else {\n return i | 0;\n }\n break;\n }\n };\n return loop(0, xs) | 0;\n}\nexport function FSharpList__get_Head(xs) {\n const matchValue = xs.tail;\n if (matchValue != null) {\n return xs.head;\n }\n else {\n throw new Error((SR_inputWasEmpty + \"\\\\nParameter name: \") + \"list\");\n }\n}\nexport function FSharpList__get_Tail(xs) {\n const matchValue = xs.tail;\n if (matchValue != null) {\n return value_1(matchValue);\n }\n else {\n throw new Error((SR_inputWasEmpty + \"\\\\nParameter name: \") + \"list\");\n }\n}\nexport function FSharpList__get_Item_Z524259A4(xs, index) {\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n const matchValue = xs_1.tail;\n if (matchValue != null) {\n if (i === index) {\n return xs_1.head;\n }\n else {\n i_mut = (i + 1);\n xs_1_mut = value_1(matchValue);\n continue loop;\n }\n }\n else {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n break;\n }\n };\n return loop(0, xs);\n}\nexport function indexNotFound() {\n throw new Error(SR_keyNotFoundAlt);\n}\nexport function empty() {\n return FSharpList_get_Empty();\n}\nexport function cons(x, xs) {\n return FSharpList_Cons_305B8EAC(x, xs);\n}\nexport function singleton(x) {\n return FSharpList_Cons_305B8EAC(x, FSharpList_get_Empty());\n}\nexport function isEmpty(xs) {\n return FSharpList__get_IsEmpty(xs);\n}\nexport function length(xs) {\n return FSharpList__get_Length(xs);\n}\nexport function head(xs) {\n return FSharpList__get_Head(xs);\n}\nexport function tryHead(xs) {\n if (FSharpList__get_IsEmpty(xs)) {\n return undefined;\n }\n else {\n return some(FSharpList__get_Head(xs));\n }\n}\nexport function tail(xs) {\n return FSharpList__get_Tail(xs);\n}\nexport function tryLast(xs_mut) {\n tryLast: while (true) {\n const xs = xs_mut;\n if (FSharpList__get_IsEmpty(xs)) {\n return undefined;\n }\n else {\n const t = FSharpList__get_Tail(xs);\n if (FSharpList__get_IsEmpty(t)) {\n return some(FSharpList__get_Head(xs));\n }\n else {\n xs_mut = t;\n continue tryLast;\n }\n }\n break;\n }\n}\nexport function last(xs) {\n const matchValue = tryLast(xs);\n if (matchValue == null) {\n throw new Error(SR_inputWasEmpty);\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function compareWith(comparer, xs, ys) {\n const loop = (xs_1_mut, ys_1_mut) => {\n loop: while (true) {\n const xs_1 = xs_1_mut, ys_1 = ys_1_mut;\n const matchValue = FSharpList__get_IsEmpty(xs_1);\n const matchValue_1 = FSharpList__get_IsEmpty(ys_1);\n if (matchValue) {\n if (matchValue_1) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (matchValue_1) {\n return 1;\n }\n else {\n const c = comparer(FSharpList__get_Head(xs_1), FSharpList__get_Head(ys_1)) | 0;\n if (c === 0) {\n xs_1_mut = FSharpList__get_Tail(xs_1);\n ys_1_mut = FSharpList__get_Tail(ys_1);\n continue loop;\n }\n else {\n return c | 0;\n }\n }\n break;\n }\n };\n return loop(xs, ys) | 0;\n}\nexport function toArray(xs) {\n const len = FSharpList__get_Length(xs) | 0;\n const res = fill(new Array(len), 0, len, null);\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n if (!FSharpList__get_IsEmpty(xs_1)) {\n setItem(res, i, FSharpList__get_Head(xs_1));\n i_mut = (i + 1);\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n loop(0, xs);\n return res;\n}\nexport function fold(folder, state, xs) {\n let acc = state;\n let xs_1 = xs;\n while (!FSharpList__get_IsEmpty(xs_1)) {\n acc = folder(acc, head(xs_1));\n xs_1 = FSharpList__get_Tail(xs_1);\n }\n return acc;\n}\nexport function reverse(xs) {\n return fold((acc, x) => FSharpList_Cons_305B8EAC(x, acc), FSharpList_get_Empty(), xs);\n}\nexport function foldBack(folder, xs, state) {\n return foldBack_1(folder, toArray(xs), state);\n}\nexport function foldIndexed(folder, state, xs) {\n const loop = (i_mut, acc_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, acc = acc_mut, xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return acc;\n }\n else {\n i_mut = (i + 1);\n acc_mut = folder(i, acc, FSharpList__get_Head(xs_1));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n return loop(0, state, xs);\n}\nexport function fold2(folder, state, xs, ys) {\n let acc = state;\n let xs_1 = xs;\n let ys_1 = ys;\n while (!FSharpList__get_IsEmpty(xs_1) && !FSharpList__get_IsEmpty(ys_1)) {\n acc = folder(acc, FSharpList__get_Head(xs_1), FSharpList__get_Head(ys_1));\n xs_1 = FSharpList__get_Tail(xs_1);\n ys_1 = FSharpList__get_Tail(ys_1);\n }\n return acc;\n}\nexport function foldBack2(folder, xs, ys, state) {\n return foldBack2_1(folder, toArray(xs), toArray(ys), state);\n}\nexport function unfold(gen, state) {\n const loop = (acc_mut, node_mut) => {\n let t;\n loop: while (true) {\n const acc = acc_mut, node = node_mut;\n const matchValue = gen(acc);\n if (matchValue != null) {\n acc_mut = value_1(matchValue)[1];\n node_mut = ((t = (new FSharpList(value_1(matchValue)[0], undefined)), (node.tail = t, t)));\n continue loop;\n }\n else {\n return node;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node_1 = loop(state, root);\n const t_2 = FSharpList_get_Empty();\n node_1.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function iterate(action, xs) {\n fold((unitVar, x) => {\n action(x);\n }, undefined, xs);\n}\nexport function iterate2(action, xs, ys) {\n fold2((unitVar, x, y) => {\n action(x, y);\n }, undefined, xs, ys);\n}\nexport function iterateIndexed(action, xs) {\n fold((i, x) => {\n action(i, x);\n return (i + 1) | 0;\n }, 0, xs);\n}\nexport function iterateIndexed2(action, xs, ys) {\n fold2((i, x, y) => {\n action(i, x, y);\n return (i + 1) | 0;\n }, 0, xs, ys);\n}\nexport function toSeq(xs) {\n return xs;\n}\nexport function ofArrayWithTail(xs, tail_1) {\n let res = tail_1;\n for (let i = xs.length - 1; i >= 0; i--) {\n res = FSharpList_Cons_305B8EAC(item_1(i, xs), res);\n }\n return res;\n}\nexport function ofArray(xs) {\n return ofArrayWithTail(xs, FSharpList_get_Empty());\n}\nexport function ofSeq(xs) {\n let xs_3, t;\n if (isArrayLike(xs)) {\n return ofArray(xs);\n }\n else if (xs instanceof FSharpList) {\n return xs;\n }\n else {\n const root = FSharpList_get_Empty();\n let node = root;\n const enumerator = getEnumerator(xs);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const x = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n node = ((xs_3 = node, (t = (new FSharpList(x, undefined)), (xs_3.tail = t, t))));\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n const xs_5 = node;\n const t_2 = FSharpList_get_Empty();\n xs_5.tail = t_2;\n return FSharpList__get_Tail(root);\n }\n}\nexport function concat(lists) {\n const root = FSharpList_get_Empty();\n let node = root;\n const action = (xs) => {\n node = fold((acc, x) => {\n const t = new FSharpList(x, undefined);\n acc.tail = t;\n return t;\n }, node, xs);\n };\n if (isArrayLike(lists)) {\n const xs_3 = lists;\n xs_3.forEach(action);\n }\n else if (lists instanceof FSharpList) {\n iterate(action, lists);\n }\n else {\n const enumerator = getEnumerator(lists);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n action(enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n }\n const xs_6 = node;\n const t_2 = FSharpList_get_Empty();\n xs_6.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function scan(folder, state, xs) {\n let xs_4, t_2;\n const root = FSharpList_get_Empty();\n let node;\n const t = new FSharpList(state, undefined);\n root.tail = t;\n node = t;\n let acc = state;\n let xs_3 = xs;\n while (!FSharpList__get_IsEmpty(xs_3)) {\n acc = folder(acc, FSharpList__get_Head(xs_3));\n node = ((xs_4 = node, (t_2 = (new FSharpList(acc, undefined)), (xs_4.tail = t_2, t_2))));\n xs_3 = FSharpList__get_Tail(xs_3);\n }\n const xs_6 = node;\n const t_4 = FSharpList_get_Empty();\n xs_6.tail = t_4;\n return FSharpList__get_Tail(root);\n}\nexport function scanBack(folder, xs, state) {\n return ofArray(scanBack_1(folder, toArray(xs), state));\n}\nexport function append(xs, ys) {\n return fold((acc, x) => FSharpList_Cons_305B8EAC(x, acc), ys, reverse(xs));\n}\nexport function collect(mapping, xs) {\n let xs_1, t;\n const root = FSharpList_get_Empty();\n let node = root;\n let ys = xs;\n while (!FSharpList__get_IsEmpty(ys)) {\n let zs = mapping(FSharpList__get_Head(ys));\n while (!FSharpList__get_IsEmpty(zs)) {\n node = ((xs_1 = node, (t = (new FSharpList(FSharpList__get_Head(zs), undefined)), (xs_1.tail = t, t))));\n zs = FSharpList__get_Tail(zs);\n }\n ys = FSharpList__get_Tail(ys);\n }\n const xs_3 = node;\n const t_2 = FSharpList_get_Empty();\n xs_3.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function mapIndexed(mapping, xs) {\n const root = FSharpList_get_Empty();\n const node = foldIndexed((i, acc, x) => {\n const t = new FSharpList(mapping(i, x), undefined);\n acc.tail = t;\n return t;\n }, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function map(mapping, xs) {\n const root = FSharpList_get_Empty();\n const node = fold((acc, x) => {\n const t = new FSharpList(mapping(x), undefined);\n acc.tail = t;\n return t;\n }, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function indexed(xs) {\n return mapIndexed((i, x) => [i, x], xs);\n}\nexport function map2(mapping, xs, ys) {\n const root = FSharpList_get_Empty();\n const node = fold2((acc, x, y) => {\n const t = new FSharpList(mapping(x, y), undefined);\n acc.tail = t;\n return t;\n }, root, xs, ys);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function mapIndexed2(mapping, xs, ys) {\n const loop = (i_mut, acc_mut, xs_1_mut, ys_1_mut) => {\n let t;\n loop: while (true) {\n const i = i_mut, acc = acc_mut, xs_1 = xs_1_mut, ys_1 = ys_1_mut;\n if (FSharpList__get_IsEmpty(xs_1) ? true : FSharpList__get_IsEmpty(ys_1)) {\n return acc;\n }\n else {\n i_mut = (i + 1);\n acc_mut = ((t = (new FSharpList(mapping(i, FSharpList__get_Head(xs_1), FSharpList__get_Head(ys_1)), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n ys_1_mut = FSharpList__get_Tail(ys_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node_1 = loop(0, root, xs, ys);\n const t_2 = FSharpList_get_Empty();\n node_1.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function map3(mapping, xs, ys, zs) {\n const loop = (acc_mut, xs_1_mut, ys_1_mut, zs_1_mut) => {\n let t;\n loop: while (true) {\n const acc = acc_mut, xs_1 = xs_1_mut, ys_1 = ys_1_mut, zs_1 = zs_1_mut;\n if ((FSharpList__get_IsEmpty(xs_1) ? true : FSharpList__get_IsEmpty(ys_1)) ? true : FSharpList__get_IsEmpty(zs_1)) {\n return acc;\n }\n else {\n acc_mut = ((t = (new FSharpList(mapping(FSharpList__get_Head(xs_1), FSharpList__get_Head(ys_1), FSharpList__get_Head(zs_1)), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n ys_1_mut = FSharpList__get_Tail(ys_1);\n zs_1_mut = FSharpList__get_Tail(zs_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node_1 = loop(root, xs, ys, zs);\n const t_2 = FSharpList_get_Empty();\n node_1.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function mapFold(mapping, state, xs) {\n const root = FSharpList_get_Empty();\n const patternInput_1 = fold((tupledArg, x) => {\n let t;\n const patternInput = mapping(tupledArg[1], x);\n return [(t = (new FSharpList(patternInput[0], undefined)), (tupledArg[0].tail = t, t)), patternInput[1]];\n }, [root, state], xs);\n const t_2 = FSharpList_get_Empty();\n patternInput_1[0].tail = t_2;\n return [FSharpList__get_Tail(root), patternInput_1[1]];\n}\nexport function mapFoldBack(mapping, xs, state) {\n return mapFold((acc, x) => mapping(x, acc), state, reverse(xs));\n}\nexport function tryPick(f, xs) {\n const loop = (xs_1_mut) => {\n loop: while (true) {\n const xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return undefined;\n }\n else {\n const matchValue = f(FSharpList__get_Head(xs_1));\n if (matchValue == null) {\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n else {\n return matchValue;\n }\n }\n break;\n }\n };\n return loop(xs);\n}\nexport function pick(f, xs) {\n const matchValue = tryPick(f, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFind(f, xs) {\n return tryPick((x) => (f(x) ? some(x) : undefined), xs);\n}\nexport function find(f, xs) {\n const matchValue = tryFind(f, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFindBack(f, xs) {\n return tryFindBack_1(f, toArray(xs));\n}\nexport function findBack(f, xs) {\n const matchValue = tryFindBack(f, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFindIndex(f, xs) {\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return undefined;\n }\n else if (f(FSharpList__get_Head(xs_1))) {\n return i;\n }\n else {\n i_mut = (i + 1);\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n return loop(0, xs);\n}\nexport function findIndex(f, xs) {\n const matchValue = tryFindIndex(f, xs);\n if (matchValue == null) {\n indexNotFound();\n return -1;\n }\n else {\n return value_1(matchValue) | 0;\n }\n}\nexport function tryFindIndexBack(f, xs) {\n return tryFindIndexBack_1(f, toArray(xs));\n}\nexport function findIndexBack(f, xs) {\n const matchValue = tryFindIndexBack(f, xs);\n if (matchValue == null) {\n indexNotFound();\n return -1;\n }\n else {\n return value_1(matchValue) | 0;\n }\n}\nexport function tryItem(n, xs) {\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return undefined;\n }\n else if (i === n) {\n return some(FSharpList__get_Head(xs_1));\n }\n else {\n i_mut = (i + 1);\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n return loop(0, xs);\n}\nexport function item(n, xs) {\n return FSharpList__get_Item_Z524259A4(xs, n);\n}\nexport function filter(f, xs) {\n const root = FSharpList_get_Empty();\n const node = fold((acc, x) => {\n if (f(x)) {\n const t = new FSharpList(x, undefined);\n acc.tail = t;\n return t;\n }\n else {\n return acc;\n }\n }, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function partition(f, xs) {\n const matchValue = FSharpList_get_Empty();\n const root2 = FSharpList_get_Empty();\n const root1 = matchValue;\n const patternInput_1 = fold((tupledArg, x) => {\n let t, t_2;\n const lacc = tupledArg[0];\n const racc = tupledArg[1];\n if (f(x)) {\n return [(t = (new FSharpList(x, undefined)), (lacc.tail = t, t)), racc];\n }\n else {\n return [lacc, (t_2 = (new FSharpList(x, undefined)), (racc.tail = t_2, t_2))];\n }\n }, [root1, root2], xs);\n const t_4 = FSharpList_get_Empty();\n patternInput_1[0].tail = t_4;\n const t_5 = FSharpList_get_Empty();\n patternInput_1[1].tail = t_5;\n return [FSharpList__get_Tail(root1), FSharpList__get_Tail(root2)];\n}\nexport function choose(f, xs) {\n const root = FSharpList_get_Empty();\n const node = fold((acc, x) => {\n const matchValue = f(x);\n if (matchValue == null) {\n return acc;\n }\n else {\n const t = new FSharpList(value_1(matchValue), undefined);\n acc.tail = t;\n return t;\n }\n }, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function contains(value, xs, eq) {\n return tryFindIndex((v) => eq.Equals(value, v), xs) != null;\n}\nexport function initialize(n, f) {\n let xs, t;\n const root = FSharpList_get_Empty();\n let node = root;\n for (let i = 0; i <= (n - 1); i++) {\n node = ((xs = node, (t = (new FSharpList(f(i), undefined)), (xs.tail = t, t))));\n }\n const xs_2 = node;\n const t_2 = FSharpList_get_Empty();\n xs_2.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function replicate(n, x) {\n return initialize(n, (_arg) => x);\n}\nexport function reduce(f, xs) {\n if (FSharpList__get_IsEmpty(xs)) {\n throw new Error(SR_inputWasEmpty);\n }\n else {\n return fold(f, head(xs), tail(xs));\n }\n}\nexport function reduceBack(f, xs) {\n if (FSharpList__get_IsEmpty(xs)) {\n throw new Error(SR_inputWasEmpty);\n }\n else {\n return foldBack(f, tail(xs), head(xs));\n }\n}\nexport function forAll(f, xs) {\n return fold((acc, x) => (acc && f(x)), true, xs);\n}\nexport function forAll2(f, xs, ys) {\n return fold2((acc, x, y) => (acc && f(x, y)), true, xs, ys);\n}\nexport function exists(f, xs) {\n return tryFindIndex(f, xs) != null;\n}\nexport function exists2(f_mut, xs_mut, ys_mut) {\n exists2: while (true) {\n const f = f_mut, xs = xs_mut, ys = ys_mut;\n const matchValue = FSharpList__get_IsEmpty(xs);\n const matchValue_1 = FSharpList__get_IsEmpty(ys);\n let matchResult;\n if (matchValue) {\n if (matchValue_1) {\n matchResult = 0;\n }\n else {\n matchResult = 2;\n }\n }\n else if (matchValue_1) {\n matchResult = 2;\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return false;\n case 1:\n if (f(FSharpList__get_Head(xs), FSharpList__get_Head(ys))) {\n return true;\n }\n else {\n f_mut = f;\n xs_mut = FSharpList__get_Tail(xs);\n ys_mut = FSharpList__get_Tail(ys);\n continue exists2;\n }\n default:\n throw new Error((SR_differentLengths + \"\\\\nParameter name: \") + \"list2\");\n }\n break;\n }\n}\nexport function unzip(xs) {\n return foldBack((tupledArg, tupledArg_1) => [FSharpList_Cons_305B8EAC(tupledArg[0], tupledArg_1[0]), FSharpList_Cons_305B8EAC(tupledArg[1], tupledArg_1[1])], xs, [FSharpList_get_Empty(), FSharpList_get_Empty()]);\n}\nexport function unzip3(xs) {\n return foldBack((tupledArg, tupledArg_1) => [FSharpList_Cons_305B8EAC(tupledArg[0], tupledArg_1[0]), FSharpList_Cons_305B8EAC(tupledArg[1], tupledArg_1[1]), FSharpList_Cons_305B8EAC(tupledArg[2], tupledArg_1[2])], xs, [FSharpList_get_Empty(), FSharpList_get_Empty(), FSharpList_get_Empty()]);\n}\nexport function zip(xs, ys) {\n return map2((x, y) => [x, y], xs, ys);\n}\nexport function zip3(xs, ys, zs) {\n return map3((x, y, z) => [x, y, z], xs, ys, zs);\n}\nexport function sortWith(comparer, xs) {\n const arr = toArray(xs);\n arr.sort(comparer);\n return ofArray(arr);\n}\nexport function sort(xs, comparer) {\n return sortWith((x, y) => comparer.Compare(x, y), xs);\n}\nexport function sortBy(projection, xs, comparer) {\n return sortWith((x, y) => comparer.Compare(projection(x), projection(y)), xs);\n}\nexport function sortDescending(xs, comparer) {\n return sortWith((x, y) => (comparer.Compare(x, y) * -1), xs);\n}\nexport function sortByDescending(projection, xs, comparer) {\n return sortWith((x, y) => (comparer.Compare(projection(x), projection(y)) * -1), xs);\n}\nexport function sum(xs, adder) {\n return fold((acc, x) => adder.Add(acc, x), adder.GetZero(), xs);\n}\nexport function sumBy(f, xs, adder) {\n return fold((acc, x) => adder.Add(acc, f(x)), adder.GetZero(), xs);\n}\nexport function maxBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? y : x), xs);\n}\nexport function max(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? y : x), xs);\n}\nexport function minBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? x : y), xs);\n}\nexport function min(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? x : y), xs);\n}\nexport function average(xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count = ((count + 1) | 0);\n return averager.Add(acc, x);\n }, averager.GetZero(), xs);\n return averager.DivideByInt(total, count);\n}\nexport function averageBy(f, xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count = ((count + 1) | 0);\n return averager.Add(acc, f(x));\n }, averager.GetZero(), xs);\n return averager.DivideByInt(total, count);\n}\nexport function permute(f, xs) {\n return ofArray(permute_1(f, toArray(xs)));\n}\nexport function chunkBySize(chunkSize, xs) {\n return ofArray(map_1(ofArray, chunkBySize_1(chunkSize, toArray(xs))));\n}\nexport function allPairs(xs, ys) {\n const root = FSharpList_get_Empty();\n let node = root;\n iterate((x) => {\n iterate((y) => {\n let xs_1, t;\n node = ((xs_1 = node, (t = (new FSharpList([x, y], undefined)), (xs_1.tail = t, t))));\n }, ys);\n }, xs);\n const xs_3 = node;\n const t_2 = FSharpList_get_Empty();\n xs_3.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function skip(count_mut, xs_mut) {\n skip: while (true) {\n const count = count_mut, xs = xs_mut;\n if (count <= 0) {\n return xs;\n }\n else if (FSharpList__get_IsEmpty(xs)) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"list\");\n }\n else {\n count_mut = (count - 1);\n xs_mut = FSharpList__get_Tail(xs);\n continue skip;\n }\n break;\n }\n}\nexport function skipWhile(predicate_mut, xs_mut) {\n skipWhile: while (true) {\n const predicate = predicate_mut, xs = xs_mut;\n if (FSharpList__get_IsEmpty(xs)) {\n return xs;\n }\n else if (!predicate(FSharpList__get_Head(xs))) {\n return xs;\n }\n else {\n predicate_mut = predicate;\n xs_mut = FSharpList__get_Tail(xs);\n continue skipWhile;\n }\n break;\n }\n}\nexport function take(count, xs) {\n if (count < 0) {\n throw new Error((SR_inputMustBeNonNegative + \"\\\\nParameter name: \") + \"count\");\n }\n const loop = (i_mut, acc_mut, xs_1_mut) => {\n let t;\n loop: while (true) {\n const i = i_mut, acc = acc_mut, xs_1 = xs_1_mut;\n if (i <= 0) {\n return acc;\n }\n else if (FSharpList__get_IsEmpty(xs_1)) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"list\");\n }\n else {\n i_mut = (i - 1);\n acc_mut = ((t = (new FSharpList(FSharpList__get_Head(xs_1), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node = loop(count, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function takeWhile(predicate, xs) {\n const loop = (acc_mut, xs_1_mut) => {\n let t;\n loop: while (true) {\n const acc = acc_mut, xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return acc;\n }\n else if (!predicate(FSharpList__get_Head(xs_1))) {\n return acc;\n }\n else {\n acc_mut = ((t = (new FSharpList(FSharpList__get_Head(xs_1), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node = loop(root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function truncate(count, xs) {\n const loop = (i_mut, acc_mut, xs_1_mut) => {\n let t;\n loop: while (true) {\n const i = i_mut, acc = acc_mut, xs_1 = xs_1_mut;\n if (i <= 0) {\n return acc;\n }\n else if (FSharpList__get_IsEmpty(xs_1)) {\n return acc;\n }\n else {\n i_mut = (i - 1);\n acc_mut = ((t = (new FSharpList(FSharpList__get_Head(xs_1), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node = loop(count, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function getSlice(startIndex, endIndex, xs) {\n const len = length(xs) | 0;\n let startIndex_1;\n const index = defaultArg(startIndex, 0) | 0;\n startIndex_1 = ((index < 0) ? 0 : index);\n let endIndex_1;\n const index_1 = defaultArg(endIndex, len - 1) | 0;\n endIndex_1 = ((index_1 >= len) ? (len - 1) : index_1);\n if (endIndex_1 < startIndex_1) {\n return FSharpList_get_Empty();\n }\n else {\n return take((endIndex_1 - startIndex_1) + 1, skip(startIndex_1, xs));\n }\n}\nexport function splitAt(index, xs) {\n if (index < 0) {\n throw new Error((SR_inputMustBeNonNegative + \"\\\\nParameter name: \") + \"index\");\n }\n if (index > FSharpList__get_Length(xs)) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"index\");\n }\n return [take(index, xs), skip(index, xs)];\n}\nexport function exactlyOne(xs) {\n if (FSharpList__get_IsEmpty(xs)) {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"list\");\n }\n else if (FSharpList__get_IsEmpty(FSharpList__get_Tail(xs))) {\n return FSharpList__get_Head(xs);\n }\n else {\n throw new Error((SR_inputSequenceTooLong + \"\\\\nParameter name: \") + \"list\");\n }\n}\nexport function tryExactlyOne(xs) {\n if (!FSharpList__get_IsEmpty(xs) && FSharpList__get_IsEmpty(FSharpList__get_Tail(xs))) {\n return some(FSharpList__get_Head(xs));\n }\n else {\n return undefined;\n }\n}\nexport function where(predicate, xs) {\n return filter(predicate, xs);\n}\nexport function pairwise(xs) {\n return ofArray(pairwise_1(toArray(xs)));\n}\nexport function windowed(windowSize, xs) {\n return ofArray(map_1(ofArray, windowed_1(windowSize, toArray(xs))));\n}\nexport function splitInto(chunks, xs) {\n return ofArray(map_1(ofArray, splitInto_1(chunks, toArray(xs))));\n}\nexport function transpose(lists) {\n return ofArray(map_1(ofArray, transpose_1(map_1(toArray, Array.from(lists)))));\n}\nexport function insertAt(index, y, xs) {\n let i = -1;\n let isDone = false;\n const result = fold((acc, x) => {\n i = ((i + 1) | 0);\n if (i === index) {\n isDone = true;\n return FSharpList_Cons_305B8EAC(x, FSharpList_Cons_305B8EAC(y, acc));\n }\n else {\n return FSharpList_Cons_305B8EAC(x, acc);\n }\n }, FSharpList_get_Empty(), xs);\n return reverse(isDone ? result : (((i + 1) === index) ? FSharpList_Cons_305B8EAC(y, result) : (() => {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n })()));\n}\nexport function insertManyAt(index, ys, xs) {\n let i = -1;\n let isDone = false;\n const ys_1 = ofSeq(ys);\n const result = fold((acc, x) => {\n i = ((i + 1) | 0);\n if (i === index) {\n isDone = true;\n return FSharpList_Cons_305B8EAC(x, append(ys_1, acc));\n }\n else {\n return FSharpList_Cons_305B8EAC(x, acc);\n }\n }, FSharpList_get_Empty(), xs);\n return reverse(isDone ? result : (((i + 1) === index) ? append(ys_1, result) : (() => {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n })()));\n}\nexport function removeAt(index, xs) {\n let i = -1;\n let isDone = false;\n const ys = filter((_arg) => {\n i = ((i + 1) | 0);\n if (i === index) {\n isDone = true;\n return false;\n }\n else {\n return true;\n }\n }, xs);\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return ys;\n}\nexport function removeManyAt(index, count, xs) {\n let i = -1;\n let status = -1;\n const ys = filter((_arg) => {\n i = ((i + 1) | 0);\n if (i === index) {\n status = 0;\n return false;\n }\n else if (i > index) {\n if (i < (index + count)) {\n return false;\n }\n else {\n status = 1;\n return true;\n }\n }\n else {\n return true;\n }\n }, xs);\n const status_1 = (((status === 0) && ((i + 1) === (index + count))) ? 1 : status) | 0;\n if (status_1 < 1) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + ((status_1 < 0) ? \"index\" : \"count\"));\n }\n return ys;\n}\nexport function updateAt(index, y, xs) {\n let isDone = false;\n const ys = mapIndexed((i, x) => {\n if (i === index) {\n isDone = true;\n return y;\n }\n else {\n return x;\n }\n }, xs);\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return ys;\n}\n","import { Union } from \"./Types.js\";\nimport { union_type } from \"./Reflection.js\";\nimport { equals } from \"./Util.js\";\nimport { empty, singleton } from \"./List.js\";\nimport { some } from \"./Option.js\";\nexport function FSharpResult$2_Ok(ResultValue) {\n return new FSharpResult$2(0, [ResultValue]);\n}\nexport function FSharpResult$2_Error(ErrorValue) {\n return new FSharpResult$2(1, [ErrorValue]);\n}\nexport class FSharpResult$2 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Ok\", \"Error\"];\n }\n}\nexport function FSharpResult$2_$reflection(gen0, gen1) {\n return union_type(\"FSharp.Core.FSharpResult`2\", [gen0, gen1], FSharpResult$2, () => [[[\"ResultValue\", gen0]], [[\"ErrorValue\", gen1]]]);\n}\nexport function Result_Map(mapping, result) {\n if (result.tag === /* Ok */ 0) {\n return FSharpResult$2_Ok(mapping(result.fields[0]));\n }\n else {\n return FSharpResult$2_Error(result.fields[0]);\n }\n}\nexport function Result_MapError(mapping, result) {\n if (result.tag === /* Ok */ 0) {\n return FSharpResult$2_Ok(result.fields[0]);\n }\n else {\n return FSharpResult$2_Error(mapping(result.fields[0]));\n }\n}\nexport function Result_Bind(binder, result) {\n if (result.tag === /* Ok */ 0) {\n return binder(result.fields[0]);\n }\n else {\n return FSharpResult$2_Error(result.fields[0]);\n }\n}\nexport function Result_IsOk(result) {\n if (result.tag === /* Ok */ 0) {\n return true;\n }\n else {\n return false;\n }\n}\nexport function Result_IsError(result) {\n if (result.tag === /* Ok */ 0) {\n return false;\n }\n else {\n return true;\n }\n}\nexport function Result_Contains(value, result) {\n if (result.tag === /* Ok */ 0) {\n return equals(result.fields[0], value);\n }\n else {\n return false;\n }\n}\nexport function Result_Count(result) {\n if (result.tag === /* Ok */ 0) {\n return 1;\n }\n else {\n return 0;\n }\n}\nexport function Result_DefaultValue(defaultValue, result) {\n if (result.tag === /* Ok */ 0) {\n return result.fields[0];\n }\n else {\n return defaultValue;\n }\n}\nexport function Result_DefaultWith(defThunk, result) {\n if (result.tag === /* Ok */ 0) {\n return result.fields[0];\n }\n else {\n return defThunk(result.fields[0]);\n }\n}\nexport function Result_Exists(predicate, result) {\n if (result.tag === /* Ok */ 0) {\n return predicate(result.fields[0]);\n }\n else {\n return false;\n }\n}\nexport function Result_Fold(folder, state, result) {\n if (result.tag === /* Ok */ 0) {\n return folder(state, result.fields[0]);\n }\n else {\n return state;\n }\n}\nexport function Result_FoldBack(folder, result, state) {\n if (result.tag === /* Ok */ 0) {\n return folder(result.fields[0], state);\n }\n else {\n return state;\n }\n}\nexport function Result_ForAll(predicate, result) {\n if (result.tag === /* Ok */ 0) {\n return predicate(result.fields[0]);\n }\n else {\n return true;\n }\n}\nexport function Result_Iterate(action, result) {\n if (result.tag === /* Ok */ 0) {\n action(result.fields[0]);\n }\n}\nexport function Result_ToArray(result) {\n if (result.tag === /* Ok */ 0) {\n return [result.fields[0]];\n }\n else {\n return [];\n }\n}\nexport function Result_ToList(result) {\n if (result.tag === /* Ok */ 0) {\n return singleton(result.fields[0]);\n }\n else {\n return empty();\n }\n}\nexport function Result_ToOption(result) {\n if (result.tag === /* Ok */ 0) {\n return some(result.fields[0]);\n }\n else {\n return undefined;\n }\n}\nexport function Result_ToValueOption(result) {\n if (result.tag === /* Ok */ 0) {\n return some(result.fields[0]);\n }\n else {\n return undefined;\n }\n}\n","import { clear, defaultOf, equals, isDisposable, isArrayLike, toIterator, disposeSafe, getEnumerator } from \"./Util.js\";\nimport { toString } from \"./Types.js\";\nimport { class_type } from \"./Reflection.js\";\nimport { some, value as value_1 } from \"./Option.js\";\nimport { Operators_Lock, Operators_NullArg } from \"./FSharp.Core.js\";\nimport { chunkBySize as chunkBySize_1, permute as permute_1, transpose as transpose_1, map as map_1, windowed as windowed_1, splitInto as splitInto_1, pairwise as pairwise_1, scanBack as scanBack_1, reverse as reverse_1, mapFoldBack as mapFoldBack_1, mapFold as mapFold_1, tryItem as tryItem_1, tryHead as tryHead_1, foldBack2 as foldBack2_1, foldBack as foldBack_1, tryFindIndexBack as tryFindIndexBack_1, tryFindBack as tryFindBack_1, singleton as singleton_1 } from \"./Array.js\";\nimport { length as length_1, tryItem as tryItem_2, isEmpty as isEmpty_1, tryHead as tryHead_2, ofSeq as ofSeq_1, ofArray as ofArray_1, toArray as toArray_1, FSharpList } from \"./List.js\";\nimport { SR_indexOutOfBounds } from \"./Global.js\";\nexport const SR_enumerationAlreadyFinished = \"Enumeration already finished.\";\nexport const SR_enumerationNotStarted = \"Enumeration has not started. Call MoveNext.\";\nexport const SR_inputSequenceEmpty = \"The input sequence was empty.\";\nexport const SR_inputSequenceTooLong = \"The input sequence contains more than one element.\";\nexport const SR_keyNotFoundAlt = \"An index satisfying the predicate was not found in the collection.\";\nexport const SR_notEnoughElements = \"The input sequence has an insufficient number of elements.\";\nexport const SR_resetNotSupported = \"Reset is not supported on this enumerator.\";\nexport function Enumerator_noReset() {\n throw new Error(SR_resetNotSupported);\n}\nexport function Enumerator_notStarted() {\n throw new Error(SR_enumerationNotStarted);\n}\nexport function Enumerator_alreadyFinished() {\n throw new Error(SR_enumerationAlreadyFinished);\n}\nexport class Enumerator_Seq {\n constructor(f) {\n this.f = f;\n }\n toString() {\n const xs = this;\n let i = 0;\n let str = \"seq [\";\n const e = getEnumerator(xs);\n try {\n while ((i < 4) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n if (i > 0) {\n str = (str + \"; \");\n }\n str = (str + toString(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()));\n i = ((i + 1) | 0);\n }\n if (i === 4) {\n str = (str + \"; ...\");\n }\n return str + \"]\";\n }\n finally {\n disposeSafe(e);\n }\n }\n GetEnumerator() {\n const x = this;\n return x.f();\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const x = this;\n return x.f();\n }\n}\nexport function Enumerator_Seq_$reflection(gen0) {\n return class_type(\"SeqModule.Enumerator.Seq\", [gen0], Enumerator_Seq);\n}\nexport function Enumerator_Seq_$ctor_673A07F2(f) {\n return new Enumerator_Seq(f);\n}\nexport class Enumerator_FromFunctions$1 {\n constructor(current, next, dispose) {\n this.current = current;\n this.next = next;\n this.dispose = dispose;\n }\n \"System.Collections.Generic.IEnumerator`1.get_Current\"() {\n const _ = this;\n return _.current();\n }\n \"System.Collections.IEnumerator.get_Current\"() {\n const _ = this;\n return _.current();\n }\n \"System.Collections.IEnumerator.MoveNext\"() {\n const _ = this;\n return _.next();\n }\n \"System.Collections.IEnumerator.Reset\"() {\n Enumerator_noReset();\n }\n Dispose() {\n const _ = this;\n _.dispose();\n }\n}\nexport function Enumerator_FromFunctions$1_$reflection(gen0) {\n return class_type(\"SeqModule.Enumerator.FromFunctions`1\", [gen0], Enumerator_FromFunctions$1);\n}\nexport function Enumerator_FromFunctions$1_$ctor_58C54629(current, next, dispose) {\n return new Enumerator_FromFunctions$1(current, next, dispose);\n}\nexport function Enumerator_cast(e) {\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => e[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), () => e[\"System.Collections.IEnumerator.MoveNext\"](), () => {\n disposeSafe(e);\n });\n}\nexport function Enumerator_concat(sources) {\n let outerOpt = undefined;\n let innerOpt = undefined;\n let started = false;\n let finished = false;\n let curr = undefined;\n const finish = () => {\n finished = true;\n if (innerOpt != null) {\n const inner = value_1(innerOpt);\n try {\n disposeSafe(inner);\n }\n finally {\n innerOpt = undefined;\n }\n }\n if (outerOpt != null) {\n const outer = value_1(outerOpt);\n try {\n disposeSafe(outer);\n }\n finally {\n outerOpt = undefined;\n }\n }\n };\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => {\n if (!started) {\n Enumerator_notStarted();\n }\n else if (finished) {\n Enumerator_alreadyFinished();\n }\n if (curr != null) {\n return value_1(curr);\n }\n else {\n return Enumerator_alreadyFinished();\n }\n }, () => {\n let copyOfStruct;\n if (!started) {\n started = true;\n }\n if (finished) {\n return false;\n }\n else {\n let res = undefined;\n while (res == null) {\n const outerOpt_1 = outerOpt;\n const innerOpt_1 = innerOpt;\n if (outerOpt_1 != null) {\n if (innerOpt_1 != null) {\n const inner_1 = value_1(innerOpt_1);\n if (inner_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n curr = some(inner_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n res = true;\n }\n else {\n try {\n disposeSafe(inner_1);\n }\n finally {\n innerOpt = undefined;\n }\n }\n }\n else {\n const outer_1 = value_1(outerOpt_1);\n if (outer_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const ie = outer_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n innerOpt = ((copyOfStruct = ie, getEnumerator(copyOfStruct)));\n }\n else {\n finish();\n res = false;\n }\n }\n }\n else {\n outerOpt = getEnumerator(sources);\n }\n }\n return value_1(res);\n }\n }, () => {\n if (!finished) {\n finish();\n }\n });\n}\nexport function Enumerator_enumerateThenFinally(f, e) {\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => e[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), () => e[\"System.Collections.IEnumerator.MoveNext\"](), () => {\n try {\n disposeSafe(e);\n }\n finally {\n f();\n }\n });\n}\nexport function Enumerator_generateWhileSome(openf, compute, closef) {\n let started = false;\n let curr = undefined;\n let state = some(openf());\n const dispose = () => {\n if (state != null) {\n const x_1 = value_1(state);\n try {\n closef(x_1);\n }\n finally {\n state = undefined;\n }\n }\n };\n const finish = () => {\n try {\n dispose();\n }\n finally {\n curr = undefined;\n }\n };\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => {\n if (!started) {\n Enumerator_notStarted();\n }\n if (curr != null) {\n return value_1(curr);\n }\n else {\n return Enumerator_alreadyFinished();\n }\n }, () => {\n if (!started) {\n started = true;\n }\n if (state != null) {\n const s = value_1(state);\n let matchValue_1;\n try {\n matchValue_1 = compute(s);\n }\n catch (matchValue) {\n finish();\n throw matchValue;\n }\n if (matchValue_1 != null) {\n curr = matchValue_1;\n return true;\n }\n else {\n finish();\n return false;\n }\n }\n else {\n return false;\n }\n }, dispose);\n}\nexport function Enumerator_unfold(f, state) {\n let curr = undefined;\n let acc = state;\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => {\n if (curr != null) {\n const x = value_1(curr)[0];\n const st = value_1(curr)[1];\n return x;\n }\n else {\n return Enumerator_notStarted();\n }\n }, () => {\n curr = f(acc);\n if (curr != null) {\n const x_1 = value_1(curr)[0];\n const st_1 = value_1(curr)[1];\n acc = st_1;\n return true;\n }\n else {\n return false;\n }\n }, () => {\n });\n}\nexport function indexNotFound() {\n throw new Error(SR_keyNotFoundAlt);\n}\nexport function checkNonNull(argName, arg) {\n if (arg == null) {\n Operators_NullArg(argName);\n }\n}\nexport function mkSeq(f) {\n return Enumerator_Seq_$ctor_673A07F2(f);\n}\nexport function ofSeq(xs) {\n checkNonNull(\"source\", xs);\n return getEnumerator(xs);\n}\nexport function delay(generator) {\n return mkSeq(() => getEnumerator(generator()));\n}\nexport function concat(sources) {\n return mkSeq(() => Enumerator_concat(sources));\n}\nexport function unfold(generator, state) {\n return mkSeq(() => Enumerator_unfold(generator, state));\n}\nexport function empty() {\n return delay(() => (new Array(0)));\n}\nexport function singleton(x) {\n return delay(() => singleton_1(x));\n}\nexport function ofArray(arr) {\n return arr;\n}\nexport function toArray(xs) {\n if (xs instanceof FSharpList) {\n const a = xs;\n return toArray_1(a);\n }\n else {\n return Array.from(xs);\n }\n}\nexport function ofList(xs) {\n return xs;\n}\nexport function toList(xs) {\n if (isArrayLike(xs)) {\n return ofArray_1(xs);\n }\n else if (xs instanceof FSharpList) {\n return xs;\n }\n else {\n return ofSeq_1(xs);\n }\n}\nexport function generate(create, compute, dispose) {\n return mkSeq(() => Enumerator_generateWhileSome(create, compute, dispose));\n}\nexport function generateIndexed(create, compute, dispose) {\n return mkSeq(() => {\n let i = -1;\n return Enumerator_generateWhileSome(create, (x) => {\n i = ((i + 1) | 0);\n return compute(i, x);\n }, dispose);\n });\n}\nexport function append(xs, ys) {\n return concat([xs, ys]);\n}\nexport function cast(xs) {\n return mkSeq(() => {\n checkNonNull(\"source\", xs);\n return Enumerator_cast(getEnumerator(xs));\n });\n}\nexport function choose(chooser, xs) {\n return generate(() => ofSeq(xs), (e) => {\n let curr = undefined;\n while ((curr == null) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n curr = chooser(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return curr;\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function compareWith(comparer, xs, ys) {\n const e1 = ofSeq(xs);\n try {\n const e2 = ofSeq(ys);\n try {\n let c = 0;\n let b1 = e1[\"System.Collections.IEnumerator.MoveNext\"]();\n let b2 = e2[\"System.Collections.IEnumerator.MoveNext\"]();\n while (((c === 0) && b1) && b2) {\n c = (comparer(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) | 0);\n if (c === 0) {\n b1 = e1[\"System.Collections.IEnumerator.MoveNext\"]();\n b2 = e2[\"System.Collections.IEnumerator.MoveNext\"]();\n }\n }\n return ((c !== 0) ? c : (b1 ? 1 : (b2 ? -1 : 0))) | 0;\n }\n finally {\n disposeSafe(e2);\n }\n }\n finally {\n disposeSafe(e1);\n }\n}\nexport function contains(value, xs, comparer) {\n const e = ofSeq(xs);\n try {\n let found = false;\n while (!found && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n found = comparer.Equals(value, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return found;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function enumerateFromFunctions(create, moveNext, current) {\n return generate(create, (x) => (moveNext(x) ? some(current(x)) : undefined), (x_1) => {\n const matchValue = x_1;\n if (isDisposable(matchValue)) {\n const id = matchValue;\n disposeSafe(id);\n }\n });\n}\nexport function enumerateThenFinally(source, compensation) {\n const compensation_1 = compensation;\n return mkSeq(() => {\n try {\n return Enumerator_enumerateThenFinally(compensation_1, ofSeq(source));\n }\n catch (matchValue) {\n compensation_1();\n throw matchValue;\n }\n });\n}\nexport function enumerateUsing(resource, source) {\n const compensation = () => {\n if (equals(resource, defaultOf())) {\n }\n else {\n let copyOfStruct = resource;\n disposeSafe(copyOfStruct);\n }\n };\n return mkSeq(() => {\n try {\n return Enumerator_enumerateThenFinally(compensation, ofSeq(source(resource)));\n }\n catch (matchValue_1) {\n compensation();\n throw matchValue_1;\n }\n });\n}\nexport function enumerateWhile(guard, xs) {\n return concat(unfold((i) => (guard() ? [xs, i + 1] : undefined), 0));\n}\nexport function filter(f, xs) {\n return choose((x) => {\n if (f(x)) {\n return some(x);\n }\n else {\n return undefined;\n }\n }, xs);\n}\nexport function exists(predicate, xs) {\n const e = ofSeq(xs);\n try {\n let found = false;\n while (!found && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n found = predicate(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return found;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function exists2(predicate, xs, ys) {\n const e1 = ofSeq(xs);\n try {\n const e2 = ofSeq(ys);\n try {\n let found = false;\n while ((!found && e1[\"System.Collections.IEnumerator.MoveNext\"]()) && e2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n found = predicate(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return found;\n }\n finally {\n disposeSafe(e2);\n }\n }\n finally {\n disposeSafe(e1);\n }\n}\nexport function exactlyOne(xs) {\n const e = ofSeq(xs);\n try {\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const v = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n throw new Error((SR_inputSequenceTooLong + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return v;\n }\n }\n else {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"source\");\n }\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function tryExactlyOne(xs) {\n const e = ofSeq(xs);\n try {\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const v = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? undefined : some(v);\n }\n else {\n return undefined;\n }\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function tryFind(predicate, xs) {\n const e = ofSeq(xs);\n try {\n let res = undefined;\n while ((res == null) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const c = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n if (predicate(c)) {\n res = some(c);\n }\n }\n return res;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function find(predicate, xs) {\n const matchValue = tryFind(predicate, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFindBack(predicate, xs) {\n return tryFindBack_1(predicate, toArray(xs));\n}\nexport function findBack(predicate, xs) {\n const matchValue = tryFindBack(predicate, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFindIndex(predicate, xs) {\n const e = ofSeq(xs);\n try {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n if (predicate(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) {\n return i;\n }\n else {\n i_mut = (i + 1);\n continue loop;\n }\n }\n else {\n return undefined;\n }\n break;\n }\n };\n return loop(0);\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function findIndex(predicate, xs) {\n const matchValue = tryFindIndex(predicate, xs);\n if (matchValue == null) {\n indexNotFound();\n return -1;\n }\n else {\n return value_1(matchValue) | 0;\n }\n}\nexport function tryFindIndexBack(predicate, xs) {\n return tryFindIndexBack_1(predicate, toArray(xs));\n}\nexport function findIndexBack(predicate, xs) {\n const matchValue = tryFindIndexBack(predicate, xs);\n if (matchValue == null) {\n indexNotFound();\n return -1;\n }\n else {\n return value_1(matchValue) | 0;\n }\n}\nexport function fold(folder, state, xs) {\n const e = ofSeq(xs);\n try {\n let acc = state;\n while (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n acc = folder(acc, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return acc;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function foldBack(folder, xs, state) {\n return foldBack_1(folder, toArray(xs), state);\n}\nexport function fold2(folder, state, xs, ys) {\n const e1 = ofSeq(xs);\n try {\n const e2 = ofSeq(ys);\n try {\n let acc = state;\n while (e1[\"System.Collections.IEnumerator.MoveNext\"]() && e2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n acc = folder(acc, e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return acc;\n }\n finally {\n disposeSafe(e2);\n }\n }\n finally {\n disposeSafe(e1);\n }\n}\nexport function foldBack2(folder, xs, ys, state) {\n return foldBack2_1(folder, toArray(xs), toArray(ys), state);\n}\nexport function forAll(predicate, xs) {\n return !exists((x) => !predicate(x), xs);\n}\nexport function forAll2(predicate, xs, ys) {\n return !exists2((x, y) => !predicate(x, y), xs, ys);\n}\nexport function tryHead(xs) {\n if (isArrayLike(xs)) {\n return tryHead_1(xs);\n }\n else if (xs instanceof FSharpList) {\n return tryHead_2(xs);\n }\n else {\n const e = ofSeq(xs);\n try {\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined;\n }\n finally {\n disposeSafe(e);\n }\n }\n}\nexport function head(xs) {\n const matchValue = tryHead(xs);\n if (matchValue == null) {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function initialize(count, f) {\n return unfold((i) => ((i < count) ? [f(i), i + 1] : undefined), 0);\n}\nexport function initializeInfinite(f) {\n return initialize(2147483647, f);\n}\nexport function isEmpty(xs) {\n if (isArrayLike(xs)) {\n const a = xs;\n return a.length === 0;\n }\n else if (xs instanceof FSharpList) {\n return isEmpty_1(xs);\n }\n else {\n const e = ofSeq(xs);\n try {\n return !e[\"System.Collections.IEnumerator.MoveNext\"]();\n }\n finally {\n disposeSafe(e);\n }\n }\n}\nexport function tryItem(index, xs) {\n if (isArrayLike(xs)) {\n return tryItem_1(index, xs);\n }\n else if (xs instanceof FSharpList) {\n return tryItem_2(index, xs);\n }\n else {\n const e = ofSeq(xs);\n try {\n const loop = (index_1_mut) => {\n loop: while (true) {\n const index_1 = index_1_mut;\n if (!e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return undefined;\n }\n else if (index_1 === 0) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n index_1_mut = (index_1 - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(index);\n }\n finally {\n disposeSafe(e);\n }\n }\n}\nexport function item(index, xs) {\n const matchValue = tryItem(index, xs);\n if (matchValue == null) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"index\");\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function iterate(action, xs) {\n fold((unitVar, x) => {\n action(x);\n }, undefined, xs);\n}\nexport function iterate2(action, xs, ys) {\n fold2((unitVar, x, y) => {\n action(x, y);\n }, undefined, xs, ys);\n}\nexport function iterateIndexed(action, xs) {\n fold((i, x) => {\n action(i, x);\n return (i + 1) | 0;\n }, 0, xs);\n}\nexport function iterateIndexed2(action, xs, ys) {\n fold2((i, x, y) => {\n action(i, x, y);\n return (i + 1) | 0;\n }, 0, xs, ys);\n}\nexport function tryLast(xs) {\n const e = ofSeq(xs);\n try {\n const loop = (acc_mut) => {\n loop: while (true) {\n const acc = acc_mut;\n if (!e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return acc;\n }\n else {\n acc_mut = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n continue loop;\n }\n break;\n }\n };\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(loop(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function last(xs) {\n const matchValue = tryLast(xs);\n if (matchValue == null) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function length(xs) {\n if (isArrayLike(xs)) {\n const a = xs;\n return a.length | 0;\n }\n else if (xs instanceof FSharpList) {\n return length_1(xs) | 0;\n }\n else {\n const e = ofSeq(xs);\n try {\n let count = 0;\n while (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n count = ((count + 1) | 0);\n }\n return count | 0;\n }\n finally {\n disposeSafe(e);\n }\n }\n}\nexport function map(mapping, xs) {\n return generate(() => ofSeq(xs), (e) => (e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(mapping(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined), (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function mapIndexed(mapping, xs) {\n return generateIndexed(() => ofSeq(xs), (i, e) => (e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(mapping(i, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined), (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function indexed(xs) {\n return mapIndexed((i, x) => [i, x], xs);\n}\nexport function map2(mapping, xs, ys) {\n return generate(() => [ofSeq(xs), ofSeq(ys)], (tupledArg) => {\n const e1 = tupledArg[0];\n const e2 = tupledArg[1];\n return (e1[\"System.Collections.IEnumerator.MoveNext\"]() && e2[\"System.Collections.IEnumerator.MoveNext\"]()) ? some(mapping(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined;\n }, (tupledArg_1) => {\n try {\n disposeSafe(tupledArg_1[0]);\n }\n finally {\n disposeSafe(tupledArg_1[1]);\n }\n });\n}\nexport function mapIndexed2(mapping, xs, ys) {\n return generateIndexed(() => [ofSeq(xs), ofSeq(ys)], (i, tupledArg) => {\n const e1 = tupledArg[0];\n const e2 = tupledArg[1];\n return (e1[\"System.Collections.IEnumerator.MoveNext\"]() && e2[\"System.Collections.IEnumerator.MoveNext\"]()) ? some(mapping(i, e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined;\n }, (tupledArg_1) => {\n try {\n disposeSafe(tupledArg_1[0]);\n }\n finally {\n disposeSafe(tupledArg_1[1]);\n }\n });\n}\nexport function map3(mapping, xs, ys, zs) {\n return generate(() => [ofSeq(xs), ofSeq(ys), ofSeq(zs)], (tupledArg) => {\n const e1 = tupledArg[0];\n const e2 = tupledArg[1];\n const e3 = tupledArg[2];\n return ((e1[\"System.Collections.IEnumerator.MoveNext\"]() && e2[\"System.Collections.IEnumerator.MoveNext\"]()) && e3[\"System.Collections.IEnumerator.MoveNext\"]()) ? some(mapping(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e3[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined;\n }, (tupledArg_1) => {\n try {\n disposeSafe(tupledArg_1[0]);\n }\n finally {\n try {\n disposeSafe(tupledArg_1[1]);\n }\n finally {\n disposeSafe(tupledArg_1[2]);\n }\n }\n });\n}\nexport function readOnly(xs) {\n checkNonNull(\"source\", xs);\n return map((x) => x, xs);\n}\nexport class CachedSeq$1 {\n constructor(cleanup, res) {\n this.cleanup = cleanup;\n this.res = res;\n }\n Dispose() {\n const _ = this;\n _.cleanup();\n }\n GetEnumerator() {\n const _ = this;\n return getEnumerator(_.res);\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const _ = this;\n return getEnumerator(_.res);\n }\n}\nexport function CachedSeq$1_$reflection(gen0) {\n return class_type(\"SeqModule.CachedSeq`1\", [gen0], CachedSeq$1);\n}\nexport function CachedSeq$1_$ctor_Z7A8347D4(cleanup, res) {\n return new CachedSeq$1(cleanup, res);\n}\nexport function CachedSeq$1__Clear(_) {\n _.cleanup();\n}\nexport function cache(source) {\n checkNonNull(\"source\", source);\n const prefix = [];\n let enumeratorR = undefined;\n return CachedSeq$1_$ctor_Z7A8347D4(() => {\n Operators_Lock(prefix, () => {\n clear(prefix);\n let matchResult, e;\n if (enumeratorR != null) {\n if (value_1(enumeratorR) != null) {\n matchResult = 0;\n e = value_1(value_1(enumeratorR));\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n disposeSafe(e);\n break;\n }\n }\n enumeratorR = undefined;\n });\n }, unfold((i_1) => Operators_Lock(prefix, () => {\n if (i_1 < prefix.length) {\n return [prefix[i_1], i_1 + 1];\n }\n else {\n if (i_1 >= prefix.length) {\n let optEnumerator_2;\n if (enumeratorR != null) {\n optEnumerator_2 = value_1(enumeratorR);\n }\n else {\n const optEnumerator = getEnumerator(source);\n enumeratorR = some(optEnumerator);\n optEnumerator_2 = optEnumerator;\n }\n if (optEnumerator_2 == null) {\n }\n else {\n const enumerator = value_1(optEnumerator_2);\n if (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n void (prefix.push(enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()));\n }\n else {\n disposeSafe(enumerator);\n enumeratorR = some(undefined);\n }\n }\n }\n if (i_1 < prefix.length) {\n return [prefix[i_1], i_1 + 1];\n }\n else {\n return undefined;\n }\n }\n }), 0));\n}\nexport function allPairs(xs, ys) {\n const ysCache = cache(ys);\n return delay(() => concat(map((x) => map((y) => [x, y], ysCache), xs)));\n}\nexport function mapFold(mapping, state, xs) {\n const patternInput = mapFold_1(mapping, state, toArray(xs));\n return [readOnly(patternInput[0]), patternInput[1]];\n}\nexport function mapFoldBack(mapping, xs, state) {\n const patternInput = mapFoldBack_1(mapping, toArray(xs), state);\n return [readOnly(patternInput[0]), patternInput[1]];\n}\nexport function tryPick(chooser, xs) {\n const e = ofSeq(xs);\n try {\n let res = undefined;\n while ((res == null) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n res = chooser(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return res;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function pick(chooser, xs) {\n const matchValue = tryPick(chooser, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function reduce(folder, xs) {\n const e = ofSeq(xs);\n try {\n const loop = (acc_mut) => {\n loop: while (true) {\n const acc = acc_mut;\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n acc_mut = folder(acc, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n continue loop;\n }\n else {\n return acc;\n }\n break;\n }\n };\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return loop(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n throw new Error(SR_inputSequenceEmpty);\n }\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function reduceBack(folder, xs) {\n const arr = toArray(xs);\n if (arr.length > 0) {\n return arr.reduceRight(folder);\n }\n else {\n throw new Error(SR_inputSequenceEmpty);\n }\n}\nexport function replicate(n, x) {\n return initialize(n, (_arg) => x);\n}\nexport function reverse(xs) {\n return delay(() => ofArray(reverse_1(toArray(xs))));\n}\nexport function scan(folder, state, xs) {\n return delay(() => {\n let acc = state;\n return concat([singleton(state), map((x) => {\n acc = folder(acc, x);\n return acc;\n }, xs)]);\n });\n}\nexport function scanBack(folder, xs, state) {\n return delay(() => ofArray(scanBack_1(folder, toArray(xs), state)));\n}\nexport function skip(count, source) {\n return mkSeq(() => {\n const e = ofSeq(source);\n try {\n for (let _ = 1; _ <= count; _++) {\n if (!e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"source\");\n }\n }\n return Enumerator_enumerateThenFinally(() => {\n }, e);\n }\n catch (matchValue) {\n disposeSafe(e);\n throw matchValue;\n }\n });\n}\nexport function skipWhile(predicate, xs) {\n return delay(() => {\n let skipped = true;\n return filter((x) => {\n if (skipped) {\n skipped = predicate(x);\n }\n return !skipped;\n }, xs);\n });\n}\nexport function tail(xs) {\n return skip(1, xs);\n}\nexport function take(count, xs) {\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if (i < count) {\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"source\");\n }\n }\n else {\n return undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function takeWhile(predicate, xs) {\n return generate(() => ofSeq(xs), (e) => ((e[\"System.Collections.IEnumerator.MoveNext\"]() && predicate(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined), (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function truncate(count, xs) {\n return generateIndexed(() => ofSeq(xs), (i, e) => (((i < count) && e[\"System.Collections.IEnumerator.MoveNext\"]()) ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined), (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function zip(xs, ys) {\n return map2((x, y) => [x, y], xs, ys);\n}\nexport function zip3(xs, ys, zs) {\n return map3((x, y, z) => [x, y, z], xs, ys, zs);\n}\nexport function collect(mapping, xs) {\n return delay(() => concat(map(mapping, xs)));\n}\nexport function where(predicate, xs) {\n return filter(predicate, xs);\n}\nexport function pairwise(xs) {\n return delay(() => ofArray(pairwise_1(toArray(xs))));\n}\nexport function splitInto(chunks, xs) {\n return delay(() => ofArray(splitInto_1(chunks, toArray(xs))));\n}\nexport function windowed(windowSize, xs) {\n return delay(() => ofArray(windowed_1(windowSize, toArray(xs))));\n}\nexport function transpose(xss) {\n return delay(() => ofArray(map_1(ofArray, transpose_1(map_1(toArray, toArray(xss))))));\n}\nexport function sortWith(comparer, xs) {\n return delay(() => {\n const arr = toArray(xs);\n arr.sort(comparer);\n return ofArray(arr);\n });\n}\nexport function sort(xs, comparer) {\n return sortWith((x, y) => comparer.Compare(x, y), xs);\n}\nexport function sortBy(projection, xs, comparer) {\n return sortWith((x, y) => comparer.Compare(projection(x), projection(y)), xs);\n}\nexport function sortDescending(xs, comparer) {\n return sortWith((x, y) => (comparer.Compare(x, y) * -1), xs);\n}\nexport function sortByDescending(projection, xs, comparer) {\n return sortWith((x, y) => (comparer.Compare(projection(x), projection(y)) * -1), xs);\n}\nexport function sum(xs, adder) {\n return fold((acc, x) => adder.Add(acc, x), adder.GetZero(), xs);\n}\nexport function sumBy(f, xs, adder) {\n return fold((acc, x) => adder.Add(acc, f(x)), adder.GetZero(), xs);\n}\nexport function maxBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? y : x), xs);\n}\nexport function max(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? y : x), xs);\n}\nexport function minBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? x : y), xs);\n}\nexport function min(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? x : y), xs);\n}\nexport function average(xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count = ((count + 1) | 0);\n return averager.Add(acc, x);\n }, averager.GetZero(), xs);\n if (count === 0) {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return averager.DivideByInt(total, count);\n }\n}\nexport function averageBy(f, xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count = ((count + 1) | 0);\n return averager.Add(acc, f(x));\n }, averager.GetZero(), xs);\n if (count === 0) {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return averager.DivideByInt(total, count);\n }\n}\nexport function permute(f, xs) {\n return delay(() => ofArray(permute_1(f, toArray(xs))));\n}\nexport function chunkBySize(chunkSize, xs) {\n return delay(() => ofArray(chunkBySize_1(chunkSize, toArray(xs))));\n}\nexport function insertAt(index, y, xs) {\n let isDone = false;\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if ((isDone ? true : (i < index)) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else if (i === index) {\n isDone = true;\n return some(y);\n }\n else {\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function insertManyAt(index, ys, xs) {\n let status = -1;\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => [ofSeq(xs), ofSeq(ys)], (i, tupledArg) => {\n const e1 = tupledArg[0];\n const e2 = tupledArg[1];\n if (i === index) {\n status = 0;\n }\n let inserted;\n if (status === 0) {\n if (e2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n inserted = some(e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n status = 1;\n inserted = undefined;\n }\n }\n else {\n inserted = undefined;\n }\n if (inserted == null) {\n if (e1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n if (status < 1) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return undefined;\n }\n }\n else {\n return some(value_1(inserted));\n }\n }, (tupledArg_1) => {\n disposeSafe(tupledArg_1[0]);\n disposeSafe(tupledArg_1[1]);\n });\n}\nexport function removeAt(index, xs) {\n let isDone = false;\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if ((isDone ? true : (i < index)) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else if ((i === index) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n isDone = true;\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined;\n }\n else {\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function removeManyAt(index, count, xs) {\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if (i < index) {\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n }\n else {\n if (i === index) {\n for (let _ = 1; _ <= count; _++) {\n if (!e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"count\");\n }\n }\n }\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function updateAt(index, y, xs) {\n let isDone = false;\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if ((isDone ? true : (i < index)) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else if ((i === index) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n isDone = true;\n return some(y);\n }\n else {\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\n","import { disposeSafe, defaultOf, structuralHash, equals } from \"./Util.js\";\nimport { HashIdentity_Structural, ComparisonIdentity_Structural } from \"./FSharp.Collections.js\";\nimport { StringBuilder__Append_Z721C83C5 } from \"./System.Text.js\";\nexport const LanguagePrimitives_GenericEqualityComparer = {\n \"System.Collections.IEqualityComparer.Equals541DA560\"(x, y) {\n return equals(x, y);\n },\n \"System.Collections.IEqualityComparer.GetHashCode4E60E31B\"(x_1) {\n return structuralHash(x_1);\n },\n};\nexport const LanguagePrimitives_GenericEqualityERComparer = {\n \"System.Collections.IEqualityComparer.Equals541DA560\"(x, y) {\n return equals(x, y);\n },\n \"System.Collections.IEqualityComparer.GetHashCode4E60E31B\"(x_1) {\n return structuralHash(x_1);\n },\n};\nexport function LanguagePrimitives_FastGenericComparer() {\n return ComparisonIdentity_Structural();\n}\nexport function LanguagePrimitives_FastGenericComparerFromTable() {\n return ComparisonIdentity_Structural();\n}\nexport function LanguagePrimitives_FastGenericEqualityComparer() {\n return HashIdentity_Structural();\n}\nexport function LanguagePrimitives_FastGenericEqualityComparerFromTable() {\n return HashIdentity_Structural();\n}\nexport function Operators_Failure(message) {\n return new Error(message);\n}\nexport function Operators_FailurePattern(exn) {\n return exn.message;\n}\nexport function Operators_NullArg(x) {\n throw new Error(x);\n}\nexport function Operators_Using(resource, action) {\n try {\n return action(resource);\n }\n finally {\n if (equals(resource, defaultOf())) {\n }\n else {\n let copyOfStruct = resource;\n disposeSafe(copyOfStruct);\n }\n }\n}\nexport function Operators_Lock(_lockObj, action) {\n return action();\n}\nexport function ExtraTopLevelOperators_LazyPattern(input) {\n return input.Value;\n}\nexport function PrintfModule_PrintFormatToStringBuilderThen(continuation, builder, format) {\n return format.cont((s) => {\n StringBuilder__Append_Z721C83C5(builder, s);\n return continuation();\n });\n}\nexport function PrintfModule_PrintFormatToStringBuilder(builder, format) {\n return PrintfModule_PrintFormatToStringBuilderThen(() => {\n }, builder, format);\n}\n","import { record_type, bool_type, list_type, option_type, class_type } from \"./Reflection.js\";\nimport { some, value as value_1 } from \"./Option.js\";\nimport { structuralHash, compare, toIterator, equals, disposeSafe, getEnumerator, isArrayLike } from \"./Util.js\";\nimport { singleton, ofArrayWithTail, head, tail, isEmpty as isEmpty_1, fold as fold_1, empty as empty_1, FSharpList, cons } from \"./List.js\";\nimport { map as map_2, item, fill, setItem } from \"./Array.js\";\nimport { Record } from \"./Types.js\";\nimport { tryPick as tryPick_1, pick as pick_1, iterate as iterate_1, compareWith, map as map_1, unfold } from \"./Seq.js\";\nimport { format, join } from \"./String.js\";\nexport class MapTreeLeaf$2 {\n constructor(k, v) {\n this.k = k;\n this.v = v;\n }\n}\nexport function MapTreeLeaf$2_$reflection(gen0, gen1) {\n return class_type(\"Map.MapTreeLeaf`2\", [gen0, gen1], MapTreeLeaf$2);\n}\nexport function MapTreeLeaf$2_$ctor_5BDDA1(k, v) {\n return new MapTreeLeaf$2(k, v);\n}\nexport function MapTreeLeaf$2__get_Key(_) {\n return _.k;\n}\nexport function MapTreeLeaf$2__get_Value(_) {\n return _.v;\n}\nexport class MapTreeNode$2 extends MapTreeLeaf$2 {\n constructor(k, v, left, right, h) {\n super(k, v);\n this.left = left;\n this.right = right;\n this.h = (h | 0);\n }\n}\nexport function MapTreeNode$2_$reflection(gen0, gen1) {\n return class_type(\"Map.MapTreeNode`2\", [gen0, gen1], MapTreeNode$2, MapTreeLeaf$2_$reflection(gen0, gen1));\n}\nexport function MapTreeNode$2_$ctor_Z39DE9543(k, v, left, right, h) {\n return new MapTreeNode$2(k, v, left, right, h);\n}\nexport function MapTreeNode$2__get_Left(_) {\n return _.left;\n}\nexport function MapTreeNode$2__get_Right(_) {\n return _.right;\n}\nexport function MapTreeNode$2__get_Height(_) {\n return _.h;\n}\nexport function MapTreeModule_empty() {\n return undefined;\n}\nexport function MapTreeModule_sizeAux(acc_mut, m_mut) {\n MapTreeModule_sizeAux: while (true) {\n const acc = acc_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n acc_mut = MapTreeModule_sizeAux(acc + 1, MapTreeNode$2__get_Left(mn));\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_sizeAux;\n }\n else {\n return (acc + 1) | 0;\n }\n }\n else {\n return acc | 0;\n }\n break;\n }\n}\nexport function MapTreeModule_size(x) {\n return MapTreeModule_sizeAux(0, x);\n}\nexport function MapTreeModule_mk(l, k, v, r) {\n let mn, mn_1;\n let hl;\n const m = l;\n if (m != null) {\n const m2 = value_1(m);\n hl = ((m2 instanceof MapTreeNode$2) ? ((mn = m2, MapTreeNode$2__get_Height(mn))) : 1);\n }\n else {\n hl = 0;\n }\n let hr;\n const m_1 = r;\n if (m_1 != null) {\n const m2_1 = value_1(m_1);\n hr = ((m2_1 instanceof MapTreeNode$2) ? ((mn_1 = m2_1, MapTreeNode$2__get_Height(mn_1))) : 1);\n }\n else {\n hr = 0;\n }\n const m_2 = ((hl < hr) ? hr : hl) | 0;\n if (m_2 === 0) {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, v);\n }\n else {\n return MapTreeNode$2_$ctor_Z39DE9543(k, v, l, r, m_2 + 1);\n }\n}\nexport function MapTreeModule_rebalance(t1, k, v, t2) {\n let mn, mn_1, m_2, m2_2, mn_2, m_3, m2_3, mn_3;\n let t1h;\n const m = t1;\n if (m != null) {\n const m2 = value_1(m);\n t1h = ((m2 instanceof MapTreeNode$2) ? ((mn = m2, MapTreeNode$2__get_Height(mn))) : 1);\n }\n else {\n t1h = 0;\n }\n let t2h;\n const m_1 = t2;\n if (m_1 != null) {\n const m2_1 = value_1(m_1);\n t2h = ((m2_1 instanceof MapTreeNode$2) ? ((mn_1 = m2_1, MapTreeNode$2__get_Height(mn_1))) : 1);\n }\n else {\n t2h = 0;\n }\n if (t2h > (t1h + 2)) {\n const matchValue = value_1(t2);\n if (matchValue instanceof MapTreeNode$2) {\n const t2$0027 = matchValue;\n if (((m_2 = MapTreeNode$2__get_Left(t2$0027), (m_2 != null) ? ((m2_2 = value_1(m_2), (m2_2 instanceof MapTreeNode$2) ? ((mn_2 = m2_2, MapTreeNode$2__get_Height(mn_2))) : 1)) : 0)) > (t1h + 1)) {\n const matchValue_1 = value_1(MapTreeNode$2__get_Left(t2$0027));\n if (matchValue_1 instanceof MapTreeNode$2) {\n const t2l = matchValue_1;\n return MapTreeModule_mk(MapTreeModule_mk(t1, k, v, MapTreeNode$2__get_Left(t2l)), MapTreeLeaf$2__get_Key(t2l), MapTreeLeaf$2__get_Value(t2l), MapTreeModule_mk(MapTreeNode$2__get_Right(t2l), MapTreeLeaf$2__get_Key(t2$0027), MapTreeLeaf$2__get_Value(t2$0027), MapTreeNode$2__get_Right(t2$0027)));\n }\n else {\n throw new Error(\"internal error: Map.rebalance\");\n }\n }\n else {\n return MapTreeModule_mk(MapTreeModule_mk(t1, k, v, MapTreeNode$2__get_Left(t2$0027)), MapTreeLeaf$2__get_Key(t2$0027), MapTreeLeaf$2__get_Value(t2$0027), MapTreeNode$2__get_Right(t2$0027));\n }\n }\n else {\n throw new Error(\"internal error: Map.rebalance\");\n }\n }\n else if (t1h > (t2h + 2)) {\n const matchValue_2 = value_1(t1);\n if (matchValue_2 instanceof MapTreeNode$2) {\n const t1$0027 = matchValue_2;\n if (((m_3 = MapTreeNode$2__get_Right(t1$0027), (m_3 != null) ? ((m2_3 = value_1(m_3), (m2_3 instanceof MapTreeNode$2) ? ((mn_3 = m2_3, MapTreeNode$2__get_Height(mn_3))) : 1)) : 0)) > (t2h + 1)) {\n const matchValue_3 = value_1(MapTreeNode$2__get_Right(t1$0027));\n if (matchValue_3 instanceof MapTreeNode$2) {\n const t1r = matchValue_3;\n return MapTreeModule_mk(MapTreeModule_mk(MapTreeNode$2__get_Left(t1$0027), MapTreeLeaf$2__get_Key(t1$0027), MapTreeLeaf$2__get_Value(t1$0027), MapTreeNode$2__get_Left(t1r)), MapTreeLeaf$2__get_Key(t1r), MapTreeLeaf$2__get_Value(t1r), MapTreeModule_mk(MapTreeNode$2__get_Right(t1r), k, v, t2));\n }\n else {\n throw new Error(\"internal error: Map.rebalance\");\n }\n }\n else {\n return MapTreeModule_mk(MapTreeNode$2__get_Left(t1$0027), MapTreeLeaf$2__get_Key(t1$0027), MapTreeLeaf$2__get_Value(t1$0027), MapTreeModule_mk(MapTreeNode$2__get_Right(t1$0027), k, v, t2));\n }\n }\n else {\n throw new Error(\"internal error: Map.rebalance\");\n }\n }\n else {\n return MapTreeModule_mk(t1, k, v, t2);\n }\n}\nexport function MapTreeModule_add(comparer, k, v, m) {\n if (m != null) {\n const m2 = value_1(m);\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (c < 0) {\n return MapTreeModule_rebalance(MapTreeModule_add(comparer, k, v, MapTreeNode$2__get_Left(mn)), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn));\n }\n else if (c === 0) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, v, MapTreeNode$2__get_Left(mn), MapTreeNode$2__get_Right(mn), MapTreeNode$2__get_Height(mn));\n }\n else {\n return MapTreeModule_rebalance(MapTreeNode$2__get_Left(mn), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeModule_add(comparer, k, v, MapTreeNode$2__get_Right(mn)));\n }\n }\n else if (c < 0) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, v, MapTreeModule_empty(), m, 2);\n }\n else if (c === 0) {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, v);\n }\n else {\n return MapTreeNode$2_$ctor_Z39DE9543(k, v, m, MapTreeModule_empty(), 2);\n }\n }\n else {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, v);\n }\n}\nexport function MapTreeModule_tryFind(comparer_mut, k_mut, m_mut) {\n MapTreeModule_tryFind: while (true) {\n const comparer = comparer_mut, k = k_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (c === 0) {\n return some(MapTreeLeaf$2__get_Value(m2));\n }\n else if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n comparer_mut = comparer;\n k_mut = k;\n m_mut = ((c < 0) ? MapTreeNode$2__get_Left(mn) : MapTreeNode$2__get_Right(mn));\n continue MapTreeModule_tryFind;\n }\n else {\n return undefined;\n }\n }\n else {\n return undefined;\n }\n break;\n }\n}\nexport function MapTreeModule_find(comparer, k, m) {\n const matchValue = MapTreeModule_tryFind(comparer, k, m);\n if (matchValue == null) {\n throw new Error();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function MapTreeModule_partition1(comparer, f, k, v, acc1, acc2) {\n if (f(k, v)) {\n return [MapTreeModule_add(comparer, k, v, acc1), acc2];\n }\n else {\n return [acc1, MapTreeModule_add(comparer, k, v, acc2)];\n }\n}\nexport function MapTreeModule_partitionAux(comparer_mut, f_mut, m_mut, acc__mut, acc__1_mut) {\n MapTreeModule_partitionAux: while (true) {\n const comparer = comparer_mut, f = f_mut, m = m_mut, acc_ = acc__mut, acc__1 = acc__1_mut;\n const acc = [acc_, acc__1];\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const acc_1 = MapTreeModule_partitionAux(comparer, f, MapTreeNode$2__get_Right(mn), acc[0], acc[1]);\n const acc_4 = MapTreeModule_partition1(comparer, f, MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), acc_1[0], acc_1[1]);\n comparer_mut = comparer;\n f_mut = f;\n m_mut = MapTreeNode$2__get_Left(mn);\n acc__mut = acc_4[0];\n acc__1_mut = acc_4[1];\n continue MapTreeModule_partitionAux;\n }\n else {\n return MapTreeModule_partition1(comparer, f, MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), acc[0], acc[1]);\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function MapTreeModule_partition(comparer, f, m) {\n return MapTreeModule_partitionAux(comparer, f, m, MapTreeModule_empty(), MapTreeModule_empty());\n}\nexport function MapTreeModule_filter1(comparer, f, k, v, acc) {\n if (f(k, v)) {\n return MapTreeModule_add(comparer, k, v, acc);\n }\n else {\n return acc;\n }\n}\nexport function MapTreeModule_filterAux(comparer_mut, f_mut, m_mut, acc_mut) {\n MapTreeModule_filterAux: while (true) {\n const comparer = comparer_mut, f = f_mut, m = m_mut, acc = acc_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const acc_1 = MapTreeModule_filterAux(comparer, f, MapTreeNode$2__get_Left(mn), acc);\n const acc_2 = MapTreeModule_filter1(comparer, f, MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), acc_1);\n comparer_mut = comparer;\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n acc_mut = acc_2;\n continue MapTreeModule_filterAux;\n }\n else {\n return MapTreeModule_filter1(comparer, f, MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), acc);\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function MapTreeModule_filter(comparer, f, m) {\n return MapTreeModule_filterAux(comparer, f, m, MapTreeModule_empty());\n}\nexport function MapTreeModule_spliceOutSuccessor(m) {\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (MapTreeNode$2__get_Left(mn) == null) {\n return [MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn)];\n }\n else {\n const patternInput = MapTreeModule_spliceOutSuccessor(MapTreeNode$2__get_Left(mn));\n return [patternInput[0], patternInput[1], MapTreeModule_mk(patternInput[2], MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn))];\n }\n }\n else {\n return [MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), MapTreeModule_empty()];\n }\n }\n else {\n throw new Error(\"internal error: Map.spliceOutSuccessor\");\n }\n}\nexport function MapTreeModule_remove(comparer, k, m) {\n if (m != null) {\n const m2 = value_1(m);\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (c < 0) {\n return MapTreeModule_rebalance(MapTreeModule_remove(comparer, k, MapTreeNode$2__get_Left(mn)), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn));\n }\n else if (c === 0) {\n if (MapTreeNode$2__get_Left(mn) == null) {\n return MapTreeNode$2__get_Right(mn);\n }\n else if (MapTreeNode$2__get_Right(mn) == null) {\n return MapTreeNode$2__get_Left(mn);\n }\n else {\n const patternInput = MapTreeModule_spliceOutSuccessor(MapTreeNode$2__get_Right(mn));\n return MapTreeModule_mk(MapTreeNode$2__get_Left(mn), patternInput[0], patternInput[1], patternInput[2]);\n }\n }\n else {\n return MapTreeModule_rebalance(MapTreeNode$2__get_Left(mn), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeModule_remove(comparer, k, MapTreeNode$2__get_Right(mn)));\n }\n }\n else if (c === 0) {\n return MapTreeModule_empty();\n }\n else {\n return m;\n }\n }\n else {\n return MapTreeModule_empty();\n }\n}\nexport function MapTreeModule_change(comparer, k, u, m) {\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(mn)) | 0;\n if (c < 0) {\n return MapTreeModule_rebalance(MapTreeModule_change(comparer, k, u, MapTreeNode$2__get_Left(mn)), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn));\n }\n else if (c === 0) {\n const matchValue_1 = u(some(MapTreeLeaf$2__get_Value(mn)));\n if (matchValue_1 != null) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, value_1(matchValue_1), MapTreeNode$2__get_Left(mn), MapTreeNode$2__get_Right(mn), MapTreeNode$2__get_Height(mn));\n }\n else if (MapTreeNode$2__get_Left(mn) == null) {\n return MapTreeNode$2__get_Right(mn);\n }\n else if (MapTreeNode$2__get_Right(mn) == null) {\n return MapTreeNode$2__get_Left(mn);\n }\n else {\n const patternInput = MapTreeModule_spliceOutSuccessor(MapTreeNode$2__get_Right(mn));\n return MapTreeModule_mk(MapTreeNode$2__get_Left(mn), patternInput[0], patternInput[1], patternInput[2]);\n }\n }\n else {\n return MapTreeModule_rebalance(MapTreeNode$2__get_Left(mn), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeModule_change(comparer, k, u, MapTreeNode$2__get_Right(mn)));\n }\n }\n else {\n const c_1 = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (c_1 < 0) {\n const matchValue_2 = u(undefined);\n if (matchValue_2 != null) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, value_1(matchValue_2), MapTreeModule_empty(), m, 2);\n }\n else {\n return m;\n }\n }\n else if (c_1 === 0) {\n const matchValue_3 = u(some(MapTreeLeaf$2__get_Value(m2)));\n if (matchValue_3 != null) {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, value_1(matchValue_3));\n }\n else {\n return MapTreeModule_empty();\n }\n }\n else {\n const matchValue_4 = u(undefined);\n if (matchValue_4 != null) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, value_1(matchValue_4), m, MapTreeModule_empty(), 2);\n }\n else {\n return m;\n }\n }\n }\n }\n else {\n const matchValue = u(undefined);\n if (matchValue != null) {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, value_1(matchValue));\n }\n else {\n return m;\n }\n }\n}\nexport function MapTreeModule_mem(comparer_mut, k_mut, m_mut) {\n MapTreeModule_mem: while (true) {\n const comparer = comparer_mut, k = k_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (c < 0) {\n comparer_mut = comparer;\n k_mut = k;\n m_mut = MapTreeNode$2__get_Left(mn);\n continue MapTreeModule_mem;\n }\n else if (c === 0) {\n return true;\n }\n else {\n comparer_mut = comparer;\n k_mut = k;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_mem;\n }\n }\n else {\n return c === 0;\n }\n }\n else {\n return false;\n }\n break;\n }\n}\nexport function MapTreeModule_iterOpt(f_mut, m_mut) {\n MapTreeModule_iterOpt: while (true) {\n const f = f_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n MapTreeModule_iterOpt(f, MapTreeNode$2__get_Left(mn));\n f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn));\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_iterOpt;\n }\n else {\n f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n break;\n }\n}\nexport function MapTreeModule_iter(f, m) {\n MapTreeModule_iterOpt(f, m);\n}\nexport function MapTreeModule_tryPickOpt(f_mut, m_mut) {\n MapTreeModule_tryPickOpt: while (true) {\n const f = f_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const matchValue = MapTreeModule_tryPickOpt(f, MapTreeNode$2__get_Left(mn));\n if (matchValue == null) {\n const matchValue_1 = f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn));\n if (matchValue_1 == null) {\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_tryPickOpt;\n }\n else {\n return matchValue_1;\n }\n }\n else {\n return matchValue;\n }\n }\n else {\n return f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n else {\n return undefined;\n }\n break;\n }\n}\nexport function MapTreeModule_tryPick(f, m) {\n return MapTreeModule_tryPickOpt(f, m);\n}\nexport function MapTreeModule_existsOpt(f_mut, m_mut) {\n MapTreeModule_existsOpt: while (true) {\n const f = f_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (MapTreeModule_existsOpt(f, MapTreeNode$2__get_Left(mn)) ? true : f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn))) {\n return true;\n }\n else {\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_existsOpt;\n }\n }\n else {\n return f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n else {\n return false;\n }\n break;\n }\n}\nexport function MapTreeModule_exists(f, m) {\n return MapTreeModule_existsOpt(f, m);\n}\nexport function MapTreeModule_forallOpt(f_mut, m_mut) {\n MapTreeModule_forallOpt: while (true) {\n const f = f_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (MapTreeModule_forallOpt(f, MapTreeNode$2__get_Left(mn)) && f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn))) {\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_forallOpt;\n }\n else {\n return false;\n }\n }\n else {\n return f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n else {\n return true;\n }\n break;\n }\n}\nexport function MapTreeModule_forall(f, m) {\n return MapTreeModule_forallOpt(f, m);\n}\nexport function MapTreeModule_map(f, m) {\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const l2 = MapTreeModule_map(f, MapTreeNode$2__get_Left(mn));\n const v2 = f(MapTreeLeaf$2__get_Value(mn));\n const r2 = MapTreeModule_map(f, MapTreeNode$2__get_Right(mn));\n return MapTreeNode$2_$ctor_Z39DE9543(MapTreeLeaf$2__get_Key(mn), v2, l2, r2, MapTreeNode$2__get_Height(mn));\n }\n else {\n return MapTreeLeaf$2_$ctor_5BDDA1(MapTreeLeaf$2__get_Key(m2), f(MapTreeLeaf$2__get_Value(m2)));\n }\n }\n else {\n return MapTreeModule_empty();\n }\n}\nexport function MapTreeModule_mapiOpt(f, m) {\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const l2 = MapTreeModule_mapiOpt(f, MapTreeNode$2__get_Left(mn));\n const v2 = f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn));\n const r2 = MapTreeModule_mapiOpt(f, MapTreeNode$2__get_Right(mn));\n return MapTreeNode$2_$ctor_Z39DE9543(MapTreeLeaf$2__get_Key(mn), v2, l2, r2, MapTreeNode$2__get_Height(mn));\n }\n else {\n return MapTreeLeaf$2_$ctor_5BDDA1(MapTreeLeaf$2__get_Key(m2), f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2)));\n }\n }\n else {\n return MapTreeModule_empty();\n }\n}\nexport function MapTreeModule_mapi(f, m) {\n return MapTreeModule_mapiOpt(f, m);\n}\nexport function MapTreeModule_foldBackOpt(f_mut, m_mut, x_mut) {\n MapTreeModule_foldBackOpt: while (true) {\n const f = f_mut, m = m_mut, x = x_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const x_1 = MapTreeModule_foldBackOpt(f, MapTreeNode$2__get_Right(mn), x);\n const x_2 = f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), x_1);\n f_mut = f;\n m_mut = MapTreeNode$2__get_Left(mn);\n x_mut = x_2;\n continue MapTreeModule_foldBackOpt;\n }\n else {\n return f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), x);\n }\n }\n else {\n return x;\n }\n break;\n }\n}\nexport function MapTreeModule_foldBack(f, m, x) {\n return MapTreeModule_foldBackOpt(f, m, x);\n}\nexport function MapTreeModule_foldOpt(f_mut, x_mut, m_mut) {\n MapTreeModule_foldOpt: while (true) {\n const f = f_mut, x = x_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n f_mut = f;\n x_mut = f(MapTreeModule_foldOpt(f, x, MapTreeNode$2__get_Left(mn)), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn));\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_foldOpt;\n }\n else {\n return f(x, MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n else {\n return x;\n }\n break;\n }\n}\nexport function MapTreeModule_fold(f, x, m) {\n return MapTreeModule_foldOpt(f, x, m);\n}\nexport function MapTreeModule_foldSectionOpt(comparer, lo, hi, f, m, x) {\n const foldFromTo = (f_1_mut, m_1_mut, x_1_mut) => {\n foldFromTo: while (true) {\n const f_1 = f_1_mut, m_1 = m_1_mut, x_1 = x_1_mut;\n if (m_1 != null) {\n const m2 = value_1(m_1);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const cLoKey = comparer.Compare(lo, MapTreeLeaf$2__get_Key(mn)) | 0;\n const cKeyHi = comparer.Compare(MapTreeLeaf$2__get_Key(mn), hi) | 0;\n const x_2 = (cLoKey < 0) ? foldFromTo(f_1, MapTreeNode$2__get_Left(mn), x_1) : x_1;\n const x_3 = ((cLoKey <= 0) && (cKeyHi <= 0)) ? f_1(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), x_2) : x_2;\n if (cKeyHi < 0) {\n f_1_mut = f_1;\n m_1_mut = MapTreeNode$2__get_Right(mn);\n x_1_mut = x_3;\n continue foldFromTo;\n }\n else {\n return x_3;\n }\n }\n else if ((comparer.Compare(lo, MapTreeLeaf$2__get_Key(m2)) <= 0) && (comparer.Compare(MapTreeLeaf$2__get_Key(m2), hi) <= 0)) {\n return f_1(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), x_1);\n }\n else {\n return x_1;\n }\n }\n else {\n return x_1;\n }\n break;\n }\n };\n if (comparer.Compare(lo, hi) === 1) {\n return x;\n }\n else {\n return foldFromTo(f, m, x);\n }\n}\nexport function MapTreeModule_foldSection(comparer, lo, hi, f, m, x) {\n return MapTreeModule_foldSectionOpt(comparer, lo, hi, f, m, x);\n}\nexport function MapTreeModule_toList(m) {\n const loop = (m_1_mut, acc_mut) => {\n loop: while (true) {\n const m_1 = m_1_mut, acc = acc_mut;\n if (m_1 != null) {\n const m2 = value_1(m_1);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n m_1_mut = MapTreeNode$2__get_Left(mn);\n acc_mut = cons([MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn)], loop(MapTreeNode$2__get_Right(mn), acc));\n continue loop;\n }\n else {\n return cons([MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2)], acc);\n }\n }\n else {\n return acc;\n }\n break;\n }\n };\n return loop(m, empty_1());\n}\nexport function MapTreeModule_copyToArray(m, arr, i) {\n let j = i;\n MapTreeModule_iter((x, y) => {\n setItem(arr, j, [x, y]);\n j = ((j + 1) | 0);\n }, m);\n}\nexport function MapTreeModule_toArray(m) {\n const n = MapTreeModule_size(m) | 0;\n const res = fill(new Array(n), 0, n, [null, null]);\n MapTreeModule_copyToArray(m, res, 0);\n return res;\n}\nexport function MapTreeModule_ofList(comparer, l) {\n return fold_1((acc, tupledArg) => MapTreeModule_add(comparer, tupledArg[0], tupledArg[1], acc), MapTreeModule_empty(), l);\n}\nexport function MapTreeModule_mkFromEnumerator(comparer_mut, acc_mut, e_mut) {\n MapTreeModule_mkFromEnumerator: while (true) {\n const comparer = comparer_mut, acc = acc_mut, e = e_mut;\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const patternInput = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n comparer_mut = comparer;\n acc_mut = MapTreeModule_add(comparer, patternInput[0], patternInput[1], acc);\n e_mut = e;\n continue MapTreeModule_mkFromEnumerator;\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function MapTreeModule_ofArray(comparer, arr) {\n let res = MapTreeModule_empty();\n for (let idx = 0; idx <= (arr.length - 1); idx++) {\n const forLoopVar = item(idx, arr);\n res = MapTreeModule_add(comparer, forLoopVar[0], forLoopVar[1], res);\n }\n return res;\n}\nexport function MapTreeModule_ofSeq(comparer, c) {\n if (isArrayLike(c)) {\n return MapTreeModule_ofArray(comparer, c);\n }\n else if (c instanceof FSharpList) {\n return MapTreeModule_ofList(comparer, c);\n }\n else {\n const ie = getEnumerator(c);\n try {\n return MapTreeModule_mkFromEnumerator(comparer, MapTreeModule_empty(), ie);\n }\n finally {\n disposeSafe(ie);\n }\n }\n}\nexport class MapTreeModule_MapIterator$2 extends Record {\n constructor(stack, started) {\n super();\n this.stack = stack;\n this.started = started;\n }\n}\nexport function MapTreeModule_MapIterator$2_$reflection(gen0, gen1) {\n return record_type(\"Map.MapTreeModule.MapIterator`2\", [gen0, gen1], MapTreeModule_MapIterator$2, () => [[\"stack\", list_type(option_type(MapTreeLeaf$2_$reflection(gen0, gen1)))], [\"started\", bool_type]]);\n}\nexport function MapTreeModule_collapseLHS(stack_mut) {\n MapTreeModule_collapseLHS: while (true) {\n const stack = stack_mut;\n if (!isEmpty_1(stack)) {\n const rest = tail(stack);\n const m = head(stack);\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n stack_mut = ofArrayWithTail([MapTreeNode$2__get_Left(mn), MapTreeLeaf$2_$ctor_5BDDA1(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn)), MapTreeNode$2__get_Right(mn)], rest);\n continue MapTreeModule_collapseLHS;\n }\n else {\n return stack;\n }\n }\n else {\n stack_mut = rest;\n continue MapTreeModule_collapseLHS;\n }\n }\n else {\n return empty_1();\n }\n break;\n }\n}\nexport function MapTreeModule_mkIterator(m) {\n return new MapTreeModule_MapIterator$2(MapTreeModule_collapseLHS(singleton(m)), false);\n}\nexport function MapTreeModule_notStarted() {\n throw new Error(\"enumeration not started\");\n}\nexport function MapTreeModule_alreadyFinished() {\n throw new Error(\"enumeration already finished\");\n}\nexport function MapTreeModule_current(i) {\n if (i.started) {\n const matchValue = i.stack;\n if (!isEmpty_1(matchValue)) {\n if (head(matchValue) != null) {\n const m = value_1(head(matchValue));\n if (m instanceof MapTreeNode$2) {\n throw new Error(\"Please report error: Map iterator, unexpected stack for current\");\n }\n else {\n return [MapTreeLeaf$2__get_Key(m), MapTreeLeaf$2__get_Value(m)];\n }\n }\n else {\n throw new Error(\"Please report error: Map iterator, unexpected stack for current\");\n }\n }\n else {\n return MapTreeModule_alreadyFinished();\n }\n }\n else {\n return MapTreeModule_notStarted();\n }\n}\nexport function MapTreeModule_moveNext(i) {\n if (i.started) {\n const matchValue = i.stack;\n if (!isEmpty_1(matchValue)) {\n if (head(matchValue) != null) {\n const m = value_1(head(matchValue));\n if (m instanceof MapTreeNode$2) {\n throw new Error(\"Please report error: Map iterator, unexpected stack for moveNext\");\n }\n else {\n i.stack = MapTreeModule_collapseLHS(tail(matchValue));\n return !isEmpty_1(i.stack);\n }\n }\n else {\n throw new Error(\"Please report error: Map iterator, unexpected stack for moveNext\");\n }\n }\n else {\n return false;\n }\n }\n else {\n i.started = true;\n return !isEmpty_1(i.stack);\n }\n}\nexport function MapTreeModule_mkIEnumerator(m) {\n let i = MapTreeModule_mkIterator(m);\n return {\n \"System.Collections.Generic.IEnumerator`1.get_Current\"() {\n return MapTreeModule_current(i);\n },\n \"System.Collections.IEnumerator.get_Current\"() {\n return MapTreeModule_current(i);\n },\n \"System.Collections.IEnumerator.MoveNext\"() {\n return MapTreeModule_moveNext(i);\n },\n \"System.Collections.IEnumerator.Reset\"() {\n i = MapTreeModule_mkIterator(m);\n },\n Dispose() {\n },\n };\n}\nexport function MapTreeModule_toSeq(s) {\n return unfold((en_1) => {\n if (en_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return [en_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), en_1];\n }\n else {\n return undefined;\n }\n }, MapTreeModule_mkIEnumerator(s));\n}\nexport function MapTreeModule_leftmost(m_mut) {\n MapTreeModule_leftmost: while (true) {\n const m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n let matchResult, nd_1;\n if (m2 instanceof MapTreeNode$2) {\n if (MapTreeNode$2__get_Height(m2) > 1) {\n matchResult = 0;\n nd_1 = m2;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n if (MapTreeNode$2__get_Left(nd_1) == null) {\n return [MapTreeLeaf$2__get_Key(nd_1), MapTreeLeaf$2__get_Value(nd_1)];\n }\n else {\n m_mut = MapTreeNode$2__get_Left(nd_1);\n continue MapTreeModule_leftmost;\n }\n default:\n return [MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2)];\n }\n }\n else {\n throw new Error();\n }\n break;\n }\n}\nexport function MapTreeModule_rightmost(m_mut) {\n MapTreeModule_rightmost: while (true) {\n const m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n let matchResult, nd_1;\n if (m2 instanceof MapTreeNode$2) {\n if (MapTreeNode$2__get_Height(m2) > 1) {\n matchResult = 0;\n nd_1 = m2;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n if (MapTreeNode$2__get_Right(nd_1) == null) {\n return [MapTreeLeaf$2__get_Key(nd_1), MapTreeLeaf$2__get_Value(nd_1)];\n }\n else {\n m_mut = MapTreeNode$2__get_Right(nd_1);\n continue MapTreeModule_rightmost;\n }\n default:\n return [MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2)];\n }\n }\n else {\n throw new Error();\n }\n break;\n }\n}\nexport class FSharpMap {\n constructor(comparer, tree) {\n this.comparer = comparer;\n this.tree = tree;\n }\n GetHashCode() {\n const this$ = this;\n return FSharpMap__ComputeHashCode(this$) | 0;\n }\n Equals(that) {\n const this$ = this;\n if (that instanceof FSharpMap) {\n const that_1 = that;\n const e1 = getEnumerator(this$);\n try {\n const e2 = getEnumerator(that_1);\n try {\n const loop = () => {\n const m1 = e1[\"System.Collections.IEnumerator.MoveNext\"]();\n if (m1 === e2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n if (!m1) {\n return true;\n }\n else {\n const e1c = e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n const e2c = e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n if (equals(e1c[0], e2c[0]) && equals(e1c[1], e2c[1])) {\n return loop();\n }\n else {\n return false;\n }\n }\n }\n else {\n return false;\n }\n };\n return loop();\n }\n finally {\n disposeSafe(e2);\n }\n }\n finally {\n disposeSafe(e1);\n }\n }\n else {\n return false;\n }\n }\n toString() {\n const this$ = this;\n return (\"map [\" + join(\"; \", map_1((kv) => format(\"({0}, {1})\", kv[0], kv[1]), this$))) + \"]\";\n }\n get [Symbol.toStringTag]() {\n return \"FSharpMap\";\n }\n toJSON() {\n const this$ = this;\n return Array.from(this$);\n }\n GetEnumerator() {\n const _ = this;\n return MapTreeModule_mkIEnumerator(_.tree);\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const _ = this;\n return MapTreeModule_mkIEnumerator(_.tree);\n }\n CompareTo(obj) {\n const m = this;\n if (obj instanceof FSharpMap) {\n const m2 = obj;\n return compareWith((kvp1, kvp2) => {\n const c = m.comparer.Compare(kvp1[0], kvp2[0]) | 0;\n return ((c !== 0) ? c : compare(kvp1[1], kvp2[1])) | 0;\n }, m, m2) | 0;\n }\n else {\n throw new Error(\"not comparable\\\\nParameter name: obj\");\n }\n }\n \"System.Collections.Generic.ICollection`1.Add2B595\"(x) {\n throw new Error(\"Map cannot be mutated\");\n }\n \"System.Collections.Generic.ICollection`1.Clear\"() {\n throw new Error(\"Map cannot be mutated\");\n }\n \"System.Collections.Generic.ICollection`1.Remove2B595\"(x) {\n throw new Error(\"Map cannot be mutated\");\n }\n \"System.Collections.Generic.ICollection`1.Contains2B595\"(x) {\n const m = this;\n return FSharpMap__ContainsKey(m, x[0]) && equals(FSharpMap__get_Item(m, x[0]), x[1]);\n }\n \"System.Collections.Generic.ICollection`1.CopyToZ3B4C077E\"(arr, i) {\n const m = this;\n MapTreeModule_copyToArray(m.tree, arr, i);\n }\n \"System.Collections.Generic.ICollection`1.get_IsReadOnly\"() {\n return true;\n }\n \"System.Collections.Generic.ICollection`1.get_Count\"() {\n const m = this;\n return FSharpMap__get_Count(m) | 0;\n }\n \"System.Collections.Generic.IReadOnlyCollection`1.get_Count\"() {\n const m = this;\n return FSharpMap__get_Count(m) | 0;\n }\n get size() {\n const m = this;\n return FSharpMap__get_Count(m) | 0;\n }\n clear() {\n throw new Error(\"Map cannot be mutated\");\n }\n delete(_arg) {\n throw new Error(\"Map cannot be mutated\");\n return false;\n }\n entries() {\n const m = this;\n return map_1((p) => [p[0], p[1]], m);\n }\n get(k) {\n const m = this;\n return FSharpMap__get_Item(m, k);\n }\n has(k) {\n const m = this;\n return FSharpMap__ContainsKey(m, k);\n }\n keys() {\n const m = this;\n return map_1((p) => p[0], m);\n }\n set(k, v) {\n const m = this;\n throw new Error(\"Map cannot be mutated\");\n return m;\n }\n values() {\n const m = this;\n return map_1((p) => p[1], m);\n }\n forEach(f, thisArg) {\n const m = this;\n iterate_1((p) => {\n f(p[1], p[0], m);\n }, m);\n }\n}\nexport function FSharpMap_$reflection(gen0, gen1) {\n return class_type(\"Map.FSharpMap\", [gen0, gen1], FSharpMap);\n}\nexport function FSharpMap_$ctor(comparer, tree) {\n return new FSharpMap(comparer, tree);\n}\nexport function FSharpMap_Empty(comparer) {\n return FSharpMap_$ctor(comparer, MapTreeModule_empty());\n}\nexport function FSharpMap__get_Comparer(m) {\n return m.comparer;\n}\nexport function FSharpMap__get_Tree(m) {\n return m.tree;\n}\nexport function FSharpMap__Add(m, key, value) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_add(m.comparer, key, value, m.tree));\n}\nexport function FSharpMap__Change(m, key, f) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_change(m.comparer, key, f, m.tree));\n}\nexport function FSharpMap__get_IsEmpty(m) {\n return m.tree == null;\n}\nexport function FSharpMap__get_Item(m, key) {\n return MapTreeModule_find(m.comparer, key, m.tree);\n}\nexport function FSharpMap__TryPick(m, f) {\n return MapTreeModule_tryPick(f, m.tree);\n}\nexport function FSharpMap__Exists(m, predicate) {\n return MapTreeModule_exists(predicate, m.tree);\n}\nexport function FSharpMap__Filter(m, predicate) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_filter(m.comparer, predicate, m.tree));\n}\nexport function FSharpMap__ForAll(m, predicate) {\n return MapTreeModule_forall(predicate, m.tree);\n}\nexport function FSharpMap__Fold(m, f, acc) {\n return MapTreeModule_foldBack(f, m.tree, acc);\n}\nexport function FSharpMap__FoldSection(m, lo, hi, f, acc) {\n return MapTreeModule_foldSection(m.comparer, lo, hi, f, m.tree, acc);\n}\nexport function FSharpMap__Iterate(m, f) {\n MapTreeModule_iter(f, m.tree);\n}\nexport function FSharpMap__MapRange(m, f) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_map(f, m.tree));\n}\nexport function FSharpMap__Map(m, f) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_mapi(f, m.tree));\n}\nexport function FSharpMap__Partition(m, predicate) {\n const patternInput = MapTreeModule_partition(m.comparer, predicate, m.tree);\n return [FSharpMap_$ctor(m.comparer, patternInput[0]), FSharpMap_$ctor(m.comparer, patternInput[1])];\n}\nexport function FSharpMap__get_Count(m) {\n return MapTreeModule_size(m.tree);\n}\nexport function FSharpMap__ContainsKey(m, key) {\n return MapTreeModule_mem(m.comparer, key, m.tree);\n}\nexport function FSharpMap__Remove(m, key) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_remove(m.comparer, key, m.tree));\n}\nexport function FSharpMap__TryGetValue(_, key, value) {\n const matchValue = MapTreeModule_tryFind(_.comparer, key, _.tree);\n if (matchValue == null) {\n return false;\n }\n else {\n const v = value_1(matchValue);\n value.contents = v;\n return true;\n }\n}\nexport function FSharpMap__get_Keys(_) {\n return map_2((kvp) => kvp[0], MapTreeModule_toArray(_.tree));\n}\nexport function FSharpMap__get_Values(_) {\n return map_2((kvp) => kvp[1], MapTreeModule_toArray(_.tree));\n}\nexport function FSharpMap__get_MinKeyValue(m) {\n return MapTreeModule_leftmost(m.tree);\n}\nexport function FSharpMap__get_MaxKeyValue(m) {\n return MapTreeModule_rightmost(m.tree);\n}\nexport function FSharpMap__TryFind(m, key) {\n return MapTreeModule_tryFind(m.comparer, key, m.tree);\n}\nexport function FSharpMap__ToList(m) {\n return MapTreeModule_toList(m.tree);\n}\nexport function FSharpMap__ToArray(m) {\n return MapTreeModule_toArray(m.tree);\n}\nexport function FSharpMap__ComputeHashCode(this$) {\n const combineHash = (x, y) => (((x << 1) + y) + 631);\n let res = 0;\n const enumerator = getEnumerator(this$);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const activePatternResult = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n res = (combineHash(res, structuralHash(activePatternResult[0])) | 0);\n res = (combineHash(res, structuralHash(activePatternResult[1])) | 0);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return res | 0;\n}\nexport function isEmpty(table) {\n return FSharpMap__get_IsEmpty(table);\n}\nexport function add(key, value, table) {\n return FSharpMap__Add(table, key, value);\n}\nexport function change(key, f, table) {\n return FSharpMap__Change(table, key, f);\n}\nexport function find(key, table) {\n return FSharpMap__get_Item(table, key);\n}\nexport function tryFind(key, table) {\n return FSharpMap__TryFind(table, key);\n}\nexport function remove(key, table) {\n return FSharpMap__Remove(table, key);\n}\nexport function containsKey(key, table) {\n return FSharpMap__ContainsKey(table, key);\n}\nexport function iterate(action, table) {\n FSharpMap__Iterate(table, action);\n}\nexport function tryPick(chooser, table) {\n return FSharpMap__TryPick(table, chooser);\n}\nexport function pick(chooser, table) {\n const matchValue = tryPick(chooser, table);\n if (matchValue != null) {\n return value_1(matchValue);\n }\n else {\n throw new Error();\n }\n}\nexport function exists(predicate, table) {\n return FSharpMap__Exists(table, predicate);\n}\nexport function filter(predicate, table) {\n return FSharpMap__Filter(table, predicate);\n}\nexport function partition(predicate, table) {\n return FSharpMap__Partition(table, predicate);\n}\nexport function forAll(predicate, table) {\n return FSharpMap__ForAll(table, predicate);\n}\nexport function map(mapping, table) {\n return FSharpMap__Map(table, mapping);\n}\nexport function fold(folder, state, table) {\n return MapTreeModule_fold(folder, state, FSharpMap__get_Tree(table));\n}\nexport function foldBack(folder, table, state) {\n return MapTreeModule_foldBack(folder, FSharpMap__get_Tree(table), state);\n}\nexport function toSeq(table) {\n return map_1((kvp) => [kvp[0], kvp[1]], table);\n}\nexport function findKey(predicate, table) {\n return pick_1((kvp) => {\n const k = kvp[0];\n if (predicate(k, kvp[1])) {\n return some(k);\n }\n else {\n return undefined;\n }\n }, table);\n}\nexport function tryFindKey(predicate, table) {\n return tryPick_1((kvp) => {\n const k = kvp[0];\n if (predicate(k, kvp[1])) {\n return some(k);\n }\n else {\n return undefined;\n }\n }, table);\n}\nexport function ofList(elements, comparer) {\n return FSharpMap_$ctor(comparer, MapTreeModule_ofSeq(comparer, elements));\n}\nexport function ofSeq(elements, comparer) {\n return FSharpMap_$ctor(comparer, MapTreeModule_ofSeq(comparer, elements));\n}\nexport function ofArray(elements, comparer) {\n return FSharpMap_$ctor(comparer, MapTreeModule_ofSeq(comparer, elements));\n}\nexport function toList(table) {\n return FSharpMap__ToList(table);\n}\nexport function toArray(table) {\n return FSharpMap__ToArray(table);\n}\nexport function keys(table) {\n return FSharpMap__get_Keys(table);\n}\nexport function values(table) {\n return FSharpMap__get_Values(table);\n}\nexport function minKeyValue(table) {\n return FSharpMap__get_MinKeyValue(table);\n}\nexport function maxKeyValue(table) {\n return FSharpMap__get_MaxKeyValue(table);\n}\nexport function empty(comparer) {\n return FSharpMap_Empty(comparer);\n}\nexport function count(table) {\n return FSharpMap__get_Count(table);\n}\n","import { filter, map, fold } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { FSharpResult$2, Result_Bind } from \"../fable_modules/fable-library-js.4.24.0/Result.js\";\nimport { FSharpMap__get_Count, fold as fold_1, ofList } from \"../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { value as value_2 } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { compare, comparePrimitives } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { match } from \"../fable_modules/fable-library-js.4.24.0/RegExp.js\";\nimport { isNullOrWhiteSpace } from \"../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { exists } from \"../fable_modules/fable-library-js.4.24.0/Seq.js\";\n\nexport function Constraints_applyConstraints(constraints, name, value) {\n return fold((state, constr) => Result_Bind(constr(name), state), new FSharpResult$2(0, [value]), constraints);\n}\n\nexport function Constraints_applyConstraintsGetErrors(constraints, name, value) {\n const result = Constraints_applyConstraints(constraints, name, value);\n if (result.tag === 1) {\n return result.fields[0];\n }\n else {\n return undefined;\n }\n}\n\nexport function Constraints_collectConstraintsErrors(errors) {\n return ofList(map(value_2, filter((option) => (option != null), errors)), {\n Compare: comparePrimitives,\n });\n}\n\nexport function Constraints_regexConstraint(regex, name, value) {\n if (value == null) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' must be not null`]]);\n }\n else if (!(match(regex, value) != null)) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' does not match the pattern: ${regex}`]]);\n }\n else {\n return new FSharpResult$2(0, [value]);\n }\n}\n\nexport function Constraints_minLengthConstraint(minLength, name, value) {\n if (value == null) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' must be not null`]]);\n }\n else if (value.length < minLength) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' must be at least ${minLength} characters long; ${value.length} given`]]);\n }\n else {\n return new FSharpResult$2(0, [value]);\n }\n}\n\nexport function Constraints_maxLengthConstraint(maxLength, name, value) {\n if (value == null) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' must be not null`]]);\n }\n else if (value.length > maxLength) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' must be no more than ${maxLength} characters long; ${value.length} given`]]);\n }\n else {\n return new FSharpResult$2(0, [value]);\n }\n}\n\nexport function Constraints_minMaxLengthConstraint(minLength, maxLength, name, value) {\n return Result_Bind((value_1) => Constraints_maxLengthConstraint(maxLength, name, value_1), Constraints_minLengthConstraint(minLength, name, value));\n}\n\nexport function Constraints_notEmptyOrWhitespaceConstraint(name, value) {\n if (isNullOrWhiteSpace(value)) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' must not be empty`]]);\n }\n else {\n return new FSharpResult$2(0, [value]);\n }\n}\n\nexport function Constraints_minOptLengthConstraint(minLength, name, value) {\n if ((value != null) && (value_2(value).length < minLength)) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' must be at least ${minLength} long; ${value_2(value).length} given`]]);\n }\n else {\n return new FSharpResult$2(0, [value]);\n }\n}\n\nexport function Constraints_maxOptLengthConstraint(maxLength, name, value) {\n if ((value != null) && (value_2(value).length > maxLength)) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' must be no more than ${maxLength} long; ${value_2(value).length} given`]]);\n }\n else {\n return new FSharpResult$2(0, [value]);\n }\n}\n\nexport function Constraints_minMaxOptLengthConstraint(minLength, maxLength, name, value) {\n return Result_Bind((value_1) => Constraints_maxOptLengthConstraint(maxLength, name, value_1), Constraints_minOptLengthConstraint(minLength, name, value));\n}\n\nexport function Constraints_minConstraint(minValue, name, value) {\n if (compare(value, minValue) < 0) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' must be at least ${minValue}, ${value} given`]]);\n }\n else {\n return new FSharpResult$2(0, [value]);\n }\n}\n\nexport function Constraints_minOptConstraint(minValue, name, value) {\n if ((value != null) && (compare(value_2(value), minValue) < 0)) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' must be at least ${minValue}, ${value} given`]]);\n }\n else {\n return new FSharpResult$2(0, [value]);\n }\n}\n\nexport function Constraints_greaterThanConstraint(minValue, name, value) {\n if (compare(value, minValue) <= 0) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' must be greater than ${minValue}, ${value} given`]]);\n }\n else {\n return new FSharpResult$2(0, [value]);\n }\n}\n\nexport function Constraints_isValidCurrency(name, value) {\n if (isNullOrWhiteSpace(value) ? true : (value.length !== 3)) {\n return new FSharpResult$2(1, [[name, `Bad currency code ${value}`]]);\n }\n else if (exists((c) => {\n if (c < \"A\") {\n return true;\n }\n else {\n return c > \"Z\";\n }\n }, value.split(\"\"))) {\n return new FSharpResult$2(1, [[name, `Bad currency code ${value}`]]);\n }\n else {\n return new FSharpResult$2(0, [value]);\n }\n}\n\nexport function Constraints_isValidCurrencyOpt(name, value) {\n if (value == null) {\n return new FSharpResult$2(0, [value]);\n }\n else {\n const matchValue = Constraints_isValidCurrency(name, value_2(value));\n if (matchValue.tag === 1) {\n return new FSharpResult$2(1, [matchValue.fields[0]]);\n }\n else {\n return new FSharpResult$2(0, [matchValue.fields[0]]);\n }\n }\n}\n\nexport function Constraints_maxConstraint(maxValue, name, value) {\n if (compare(value, maxValue) > 0) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' must be no more than ${maxValue}, ${value} given`]]);\n }\n else {\n return new FSharpResult$2(0, [value]);\n }\n}\n\nexport function Constraints_maxOptConstraint(maxValue, name, value) {\n if ((value != null) && (compare(value_2(value), maxValue) > 0)) {\n return new FSharpResult$2(1, [[name, `The value of '${name}' must be no more than ${maxValue}, ${value} given`]]);\n }\n else {\n return new FSharpResult$2(0, [value]);\n }\n}\n\nexport function Constraints_minMaxConstraint(minValue, maxValue, name, value) {\n return Result_Bind((value_1) => Constraints_maxConstraint(maxValue, name, value_1), Constraints_minConstraint(minValue, name, value));\n}\n\nexport function Constraints_minMaxOptConstraint(minValue, maxValue, name, value) {\n return Result_Bind((value_1) => Constraints_maxOptConstraint(maxValue, name, value_1), Constraints_minOptConstraint(minValue, name, value));\n}\n\nexport function Constraints_noneOrSomeTogether(name, mapping) {\n const numTrues = fold_1((count, _arg, value) => (value ? (count + 1) : count), 0, mapping) | 0;\n if ((numTrues === 0) ? true : (numTrues === FSharpMap__get_Count(mapping))) {\n return new FSharpResult$2(0, [mapping]);\n }\n else {\n return new FSharpResult$2(1, [[name, \"All fields must be None or have a value\"]]);\n }\n}\n\nexport function Modifiers_ensureValidTrimmed(value) {\n if (value == null) {\n return \"\";\n }\n else {\n return value.trim();\n }\n}\n\n","import { equals } from \"./Util.js\";\nimport { Union } from \"./Types.js\";\nconst CaseRules = {\n None: 0,\n LowerFirst: 1,\n SnakeCase: 2,\n SnakeCaseAllCaps: 3,\n KebabCase: 4,\n};\nfunction dashify(str, separator) {\n return str.replace(/[a-z]?[A-Z]/g, (m) => m.length === 1\n ? m.toLowerCase()\n : m.charAt(0) + separator + m.charAt(1).toLowerCase());\n}\nfunction changeCase(str, caseRule) {\n switch (caseRule) {\n case CaseRules.LowerFirst:\n return str.charAt(0).toLowerCase() + str.slice(1);\n case CaseRules.SnakeCase:\n return dashify(str, \"_\");\n case CaseRules.SnakeCaseAllCaps:\n return dashify(str, \"_\").toUpperCase();\n case CaseRules.KebabCase:\n return dashify(str, \"-\");\n case CaseRules.None:\n default:\n return str;\n }\n}\nexport function keyValueList(fields, caseRule = CaseRules.None) {\n const obj = {};\n const definedCaseRule = caseRule;\n function fail(kvPair) {\n throw new Error(\"Cannot infer key and value of \" + String(kvPair));\n }\n function assign(key, caseRule, value) {\n key = changeCase(key, caseRule);\n obj[key] = value;\n }\n for (let kvPair of fields) {\n let caseRule = CaseRules.None;\n if (kvPair == null) {\n fail(kvPair);\n }\n // Deflate unions and use the defined case rule\n if (kvPair instanceof Union) {\n const name = kvPair.cases()[kvPair.tag];\n kvPair = kvPair.fields.length === 0 ? name : [name].concat(kvPair.fields);\n caseRule = definedCaseRule;\n }\n if (Array.isArray(kvPair)) {\n switch (kvPair.length) {\n case 0:\n fail(kvPair);\n break;\n case 1:\n assign(kvPair[0], caseRule, true);\n break;\n case 2:\n const value = kvPair[1];\n assign(kvPair[0], caseRule, value);\n break;\n default:\n assign(kvPair[0], caseRule, kvPair.slice(1));\n }\n }\n else if (typeof kvPair === \"string\") {\n assign(kvPair, caseRule, true);\n }\n else {\n fail(kvPair);\n }\n }\n return obj;\n}\n// TODO: Move these methods to Map and Set modules\nexport function containsValue(v, map) {\n for (const kv of map) {\n if (equals(v, kv[1])) {\n return true;\n }\n }\n return false;\n}\nexport function tryGetValue(map, key, defaultValue) {\n if (map.has(key)) {\n defaultValue.contents = map.get(key);\n return true;\n }\n return false;\n}\nexport function addToSet(v, set) {\n if (set.has(v)) {\n return false;\n }\n set.add(v);\n return true;\n}\nexport function tryAddToDict(dict, k, v) {\n if (dict.has(k)) {\n return false;\n }\n dict.set(k, v);\n return true;\n}\nexport function addToDict(dict, k, v) {\n if (dict.has(k)) {\n throw new Error(\"An item with the same key has already been added. Key: \" + k);\n }\n dict.set(k, v);\n}\nexport function getItemFromDict(map, key) {\n if (map.has(key)) {\n return map.get(key);\n }\n else {\n throw new Error(`The given key '${key}' was not present in the dictionary.`);\n }\n}\nexport function getItemFromDictOrCreate(map, key, createValue) {\n if (map.has(key)) {\n return map.get(key);\n }\n const value = createValue(key);\n map.set(key, value);\n return value;\n}\n","import { disposeSafe, defaultOf, toIterator, getEnumerator } from \"./Util.js\";\nimport { iterate, map, iterateIndexed, concat } from \"./Seq.js\";\nimport { setItem } from \"./Array.js\";\nimport { some } from \"./Option.js\";\nimport { FSharpRef } from \"./Types.js\";\nimport { class_type } from \"./Reflection.js\";\nimport { getItemFromDict, tryGetValue } from \"./MapUtil.js\";\nexport class HashSet {\n constructor(items, comparer) {\n const this$ = new FSharpRef(defaultOf());\n this.comparer = comparer;\n this$.contents = this;\n this.hashMap = (new Map([]));\n this[\"init@9\"] = 1;\n const enumerator = getEnumerator(items);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const item = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n HashSet__Add_2B595(this$.contents, item);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n }\n get [Symbol.toStringTag]() {\n return \"HashSet\";\n }\n toJSON() {\n const this$ = this;\n return Array.from(this$);\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const this$ = this;\n return getEnumerator(this$);\n }\n GetEnumerator() {\n const this$ = this;\n return getEnumerator(concat(this$.hashMap.values()));\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.Generic.ICollection`1.Add2B595\"(item) {\n const this$ = this;\n HashSet__Add_2B595(this$, item);\n }\n \"System.Collections.Generic.ICollection`1.Clear\"() {\n const this$ = this;\n HashSet__Clear(this$);\n }\n \"System.Collections.Generic.ICollection`1.Contains2B595\"(item) {\n const this$ = this;\n return HashSet__Contains_2B595(this$, item);\n }\n \"System.Collections.Generic.ICollection`1.CopyToZ3B4C077E\"(array, arrayIndex) {\n const this$ = this;\n iterateIndexed((i, e) => {\n setItem(array, arrayIndex + i, e);\n }, this$);\n }\n \"System.Collections.Generic.ICollection`1.get_Count\"() {\n const this$ = this;\n return HashSet__get_Count(this$) | 0;\n }\n \"System.Collections.Generic.ICollection`1.get_IsReadOnly\"() {\n return false;\n }\n \"System.Collections.Generic.ICollection`1.Remove2B595\"(item) {\n const this$ = this;\n return HashSet__Remove_2B595(this$, item);\n }\n get size() {\n const this$ = this;\n return HashSet__get_Count(this$) | 0;\n }\n add(k) {\n const this$ = this;\n HashSet__Add_2B595(this$, k);\n return this$;\n }\n clear() {\n const this$ = this;\n HashSet__Clear(this$);\n }\n delete(k) {\n const this$ = this;\n return HashSet__Remove_2B595(this$, k);\n }\n has(k) {\n const this$ = this;\n return HashSet__Contains_2B595(this$, k);\n }\n keys() {\n const this$ = this;\n return map((x) => x, this$);\n }\n values() {\n const this$ = this;\n return map((x) => x, this$);\n }\n entries() {\n const this$ = this;\n return map((v) => [v, v], this$);\n }\n forEach(f, thisArg) {\n const this$ = this;\n iterate((x) => {\n f(x, x, this$);\n }, this$);\n }\n}\nexport function HashSet_$reflection(gen0) {\n return class_type(\"Fable.Collections.HashSet\", [gen0], HashSet);\n}\nexport function HashSet_$ctor_Z6150332D(items, comparer) {\n return new HashSet(items, comparer);\n}\nfunction HashSet__TryFindIndex_2B595(this$, k) {\n const h = this$.comparer.GetHashCode(k) | 0;\n let matchValue;\n let outArg = defaultOf();\n matchValue = [tryGetValue(this$.hashMap, h, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return [true, h, matchValue[1].findIndex((v_1) => this$.comparer.Equals(k, v_1))];\n }\n else {\n return [false, h, -1];\n }\n}\nfunction HashSet__TryFind_2B595(this$, k) {\n const matchValue = HashSet__TryFindIndex_2B595(this$, k);\n let matchResult;\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return some(getItemFromDict(this$.hashMap, matchValue[1])[matchValue[2]]);\n default:\n return undefined;\n }\n}\nexport function HashSet__get_Comparer(this$) {\n return this$.comparer;\n}\nexport function HashSet__Clear(this$) {\n this$.hashMap.clear();\n}\nexport function HashSet__get_Count(this$) {\n let count = 0;\n let enumerator = getEnumerator(this$.hashMap.values());\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const items = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n count = ((count + items.length) | 0);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return count | 0;\n}\nexport function HashSet__Add_2B595(this$, k) {\n const matchValue = HashSet__TryFindIndex_2B595(this$, k);\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n return false;\n }\n else {\n const value = void (getItemFromDict(this$.hashMap, matchValue[1]).push(k));\n return true;\n }\n }\n else {\n this$.hashMap.set(matchValue[1], [k]);\n return true;\n }\n}\nexport function HashSet__Contains_2B595(this$, k) {\n const matchValue = HashSet__TryFindIndex_2B595(this$, k);\n let matchResult;\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return true;\n default:\n return false;\n }\n}\nexport function HashSet__Remove_2B595(this$, k) {\n const matchValue = HashSet__TryFindIndex_2B595(this$, k);\n let matchResult;\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n getItemFromDict(this$.hashMap, matchValue[1]).splice(matchValue[2], 1);\n return true;\n }\n default:\n return false;\n }\n}\n","import { disposeSafe, defaultOf, equals, toIterator, getEnumerator } from \"./Util.js\";\nimport { iterate, map, delay, toArray, iterateIndexed, concat } from \"./Seq.js\";\nimport { value as value_1 } from \"./Option.js\";\nimport { setItem } from \"./Array.js\";\nimport { FSharpRef } from \"./Types.js\";\nimport { class_type } from \"./Reflection.js\";\nimport { getItemFromDict, tryGetValue } from \"./MapUtil.js\";\nimport { format } from \"./String.js\";\nexport class Dictionary {\n constructor(pairs, comparer) {\n const this$ = new FSharpRef(defaultOf());\n this.comparer = comparer;\n this$.contents = this;\n this.hashMap = (new Map([]));\n this[\"init@9\"] = 1;\n const enumerator = getEnumerator(pairs);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const pair = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n Dictionary__Add_5BDDA1(this$.contents, pair[0], pair[1]);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n }\n get [Symbol.toStringTag]() {\n return \"Dictionary\";\n }\n toJSON() {\n const this$ = this;\n return Array.from(this$);\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const this$ = this;\n return getEnumerator(this$);\n }\n GetEnumerator() {\n const this$ = this;\n return getEnumerator(concat(this$.hashMap.values()));\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.Generic.ICollection`1.Add2B595\"(item) {\n const this$ = this;\n Dictionary__Add_5BDDA1(this$, item[0], item[1]);\n }\n \"System.Collections.Generic.ICollection`1.Clear\"() {\n const this$ = this;\n Dictionary__Clear(this$);\n }\n \"System.Collections.Generic.ICollection`1.Contains2B595\"(item) {\n const this$ = this;\n const matchValue = Dictionary__TryFind_2B595(this$, item[0]);\n let matchResult, p_1;\n if (matchValue != null) {\n if (equals(value_1(matchValue)[1], item[1])) {\n matchResult = 0;\n p_1 = value_1(matchValue);\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return true;\n default:\n return false;\n }\n }\n \"System.Collections.Generic.ICollection`1.CopyToZ3B4C077E\"(array, arrayIndex) {\n const this$ = this;\n iterateIndexed((i, e) => {\n setItem(array, arrayIndex + i, e);\n }, this$);\n }\n \"System.Collections.Generic.ICollection`1.get_Count\"() {\n const this$ = this;\n return Dictionary__get_Count(this$) | 0;\n }\n \"System.Collections.Generic.ICollection`1.get_IsReadOnly\"() {\n return false;\n }\n \"System.Collections.Generic.ICollection`1.Remove2B595\"(item) {\n const this$ = this;\n const matchValue = Dictionary__TryFind_2B595(this$, item[0]);\n if (matchValue != null) {\n if (equals(value_1(matchValue)[1], item[1])) {\n Dictionary__Remove_2B595(this$, item[0]);\n }\n return true;\n }\n else {\n return false;\n }\n }\n \"System.Collections.Generic.IDictionary`2.Add5BDDA1\"(key, value) {\n const this$ = this;\n Dictionary__Add_5BDDA1(this$, key, value);\n }\n \"System.Collections.Generic.IDictionary`2.ContainsKey2B595\"(key) {\n const this$ = this;\n return Dictionary__ContainsKey_2B595(this$, key);\n }\n \"System.Collections.Generic.IDictionary`2.get_Item2B595\"(key) {\n const this$ = this;\n return Dictionary__get_Item_2B595(this$, key);\n }\n \"System.Collections.Generic.IDictionary`2.set_Item5BDDA1\"(key, v) {\n const this$ = this;\n Dictionary__set_Item_5BDDA1(this$, key, v);\n }\n \"System.Collections.Generic.IDictionary`2.get_Keys\"() {\n const this$ = this;\n return toArray(delay(() => map((pair) => pair[0], this$)));\n }\n \"System.Collections.Generic.IDictionary`2.Remove2B595\"(key) {\n const this$ = this;\n return Dictionary__Remove_2B595(this$, key);\n }\n \"System.Collections.Generic.IDictionary`2.TryGetValue6DC89625\"(key, value) {\n const this$ = this;\n const matchValue = Dictionary__TryFind_2B595(this$, key);\n if (matchValue != null) {\n const pair = value_1(matchValue);\n value.contents = pair[1];\n return true;\n }\n else {\n return false;\n }\n }\n \"System.Collections.Generic.IDictionary`2.get_Values\"() {\n const this$ = this;\n return toArray(delay(() => map((pair) => pair[1], this$)));\n }\n get size() {\n const this$ = this;\n return Dictionary__get_Count(this$) | 0;\n }\n clear() {\n const this$ = this;\n Dictionary__Clear(this$);\n }\n delete(k) {\n const this$ = this;\n return Dictionary__Remove_2B595(this$, k);\n }\n entries() {\n const this$ = this;\n return map((p) => [p[0], p[1]], this$);\n }\n get(k) {\n const this$ = this;\n return Dictionary__get_Item_2B595(this$, k);\n }\n has(k) {\n const this$ = this;\n return Dictionary__ContainsKey_2B595(this$, k);\n }\n keys() {\n const this$ = this;\n return map((p) => p[0], this$);\n }\n set(k, v) {\n const this$ = this;\n Dictionary__set_Item_5BDDA1(this$, k, v);\n return this$;\n }\n values() {\n const this$ = this;\n return map((p) => p[1], this$);\n }\n forEach(f, thisArg) {\n const this$ = this;\n iterate((p) => {\n f(p[1], p[0], this$);\n }, this$);\n }\n}\nexport function Dictionary_$reflection(gen0, gen1) {\n return class_type(\"Fable.Collections.Dictionary\", [gen0, gen1], Dictionary);\n}\nexport function Dictionary_$ctor_6623D9B3(pairs, comparer) {\n return new Dictionary(pairs, comparer);\n}\nfunction Dictionary__TryFindIndex_2B595(this$, k) {\n const h = this$.comparer.GetHashCode(k) | 0;\n let matchValue;\n let outArg = defaultOf();\n matchValue = [tryGetValue(this$.hashMap, h, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return [true, h, matchValue[1].findIndex((pair) => this$.comparer.Equals(k, pair[0]))];\n }\n else {\n return [false, h, -1];\n }\n}\nexport function Dictionary__TryFind_2B595(this$, k) {\n const matchValue = Dictionary__TryFindIndex_2B595(this$, k);\n let matchResult;\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return getItemFromDict(this$.hashMap, matchValue[1])[matchValue[2]];\n default:\n return undefined;\n }\n}\nexport function Dictionary__get_Comparer(this$) {\n return this$.comparer;\n}\nexport function Dictionary__Clear(this$) {\n this$.hashMap.clear();\n}\nexport function Dictionary__get_Count(this$) {\n let count = 0;\n let enumerator = getEnumerator(this$.hashMap.values());\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const pairs = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n count = ((count + pairs.length) | 0);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return count | 0;\n}\nexport function Dictionary__get_Item_2B595(this$, k) {\n const matchValue = Dictionary__TryFind_2B595(this$, k);\n if (matchValue != null) {\n return value_1(matchValue)[1];\n }\n else {\n throw new Error(\"The item was not found in collection\");\n }\n}\nexport function Dictionary__set_Item_5BDDA1(this$, k, v) {\n const matchValue = Dictionary__TryFindIndex_2B595(this$, k);\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n getItemFromDict(this$.hashMap, matchValue[1])[matchValue[2]] = [k, v];\n }\n else {\n const value = void (getItemFromDict(this$.hashMap, matchValue[1]).push([k, v]));\n }\n }\n else {\n this$.hashMap.set(matchValue[1], [[k, v]]);\n }\n}\nexport function Dictionary__Add_5BDDA1(this$, k, v) {\n const matchValue = Dictionary__TryFindIndex_2B595(this$, k);\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n throw new Error(format(\"An item with the same key has already been added. Key: {0}\", k));\n }\n else {\n const value = void (getItemFromDict(this$.hashMap, matchValue[1]).push([k, v]));\n }\n }\n else {\n this$.hashMap.set(matchValue[1], [[k, v]]);\n }\n}\nexport function Dictionary__ContainsKey_2B595(this$, k) {\n const matchValue = Dictionary__TryFindIndex_2B595(this$, k);\n let matchResult;\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return true;\n default:\n return false;\n }\n}\nexport function Dictionary__Remove_2B595(this$, k) {\n const matchValue = Dictionary__TryFindIndex_2B595(this$, k);\n let matchResult;\n if (matchValue[0]) {\n if (matchValue[2] > -1) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n getItemFromDict(this$.hashMap, matchValue[1]).splice(matchValue[2], 1);\n return true;\n }\n default:\n return false;\n }\n}\n","import { toList, toArray, map, filter, delay } from \"./Seq.js\";\nimport { HashSet } from \"./MutableSet.js\";\nimport { defaultOf, disposeSafe, getEnumerator } from \"./Util.js\";\nimport { addToDict, getItemFromDict, tryGetValue, addToSet } from \"./MapUtil.js\";\nimport { Dictionary } from \"./MutableMap.js\";\nimport { FSharpRef } from \"./Types.js\";\nexport function distinct(xs, comparer) {\n return delay(() => {\n const hashSet = new HashSet([], comparer);\n return filter((x) => addToSet(x, hashSet), xs);\n });\n}\nexport function distinctBy(projection, xs, comparer) {\n return delay(() => {\n const hashSet = new HashSet([], comparer);\n return filter((x) => addToSet(projection(x), hashSet), xs);\n });\n}\nexport function except(itemsToExclude, xs, comparer) {\n return delay(() => {\n const hashSet = new HashSet(itemsToExclude, comparer);\n return filter((x) => addToSet(x, hashSet), xs);\n });\n}\nexport function countBy(projection, xs, comparer) {\n return delay(() => {\n const dict = new Dictionary([], comparer);\n const keys = [];\n const enumerator = getEnumerator(xs);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const key = projection(enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n let matchValue;\n let outArg = 0;\n matchValue = [tryGetValue(dict, key, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n if (matchValue[0]) {\n dict.set(key, matchValue[1] + 1);\n }\n else {\n dict.set(key, 1);\n void (keys.push(key));\n }\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return map((key_1) => [key_1, getItemFromDict(dict, key_1)], keys);\n });\n}\nexport function groupBy(projection, xs, comparer) {\n return delay(() => {\n const dict = new Dictionary([], comparer);\n const keys = [];\n const enumerator = getEnumerator(xs);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const x = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n const key = projection(x);\n let matchValue;\n let outArg = defaultOf();\n matchValue = [tryGetValue(dict, key, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n void (matchValue[1].push(x));\n }\n else {\n addToDict(dict, key, [x]);\n void (keys.push(key));\n }\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return map((key_1) => [key_1, getItemFromDict(dict, key_1)], keys);\n });\n}\nexport function Array_distinct(xs, comparer) {\n return toArray(distinct(xs, comparer));\n}\nexport function Array_distinctBy(projection, xs, comparer) {\n return toArray(distinctBy(projection, xs, comparer));\n}\nexport function Array_except(itemsToExclude, xs, comparer) {\n return toArray(except(itemsToExclude, xs, comparer));\n}\nexport function Array_countBy(projection, xs, comparer) {\n return toArray(countBy(projection, xs, comparer));\n}\nexport function Array_groupBy(projection, xs, comparer) {\n return toArray(map((tupledArg) => [tupledArg[0], toArray(tupledArg[1])], groupBy(projection, xs, comparer)));\n}\nexport function List_distinct(xs, comparer) {\n return toList(distinct(xs, comparer));\n}\nexport function List_distinctBy(projection, xs, comparer) {\n return toList(distinctBy(projection, xs, comparer));\n}\nexport function List_except(itemsToExclude, xs, comparer) {\n return toList(except(itemsToExclude, xs, comparer));\n}\nexport function List_countBy(projection, xs, comparer) {\n return toList(countBy(projection, xs, comparer));\n}\nexport function List_groupBy(projection, xs, comparer) {\n return toList(map((tupledArg) => [tupledArg[0], toList(tupledArg[1])], groupBy(projection, xs, comparer)));\n}\n","import * as Unicode from \"./Unicode.13.0.0.js\";\nfunction getCategoryFunc() {\n // unpack Unicode codepoint ranges (delta encoded) and general categories\n const offset = 35; // offsets unprintable characters\n const a1 = [...Unicode.rangeDeltas].map((ch) => (ch.codePointAt(0) ?? 0) - offset);\n const a2 = [...Unicode.categories].map((ch) => (ch.codePointAt(0) ?? 0) - offset);\n const codepoints = new Uint32Array(a1);\n const categories = new Uint8Array(a2);\n for (let i = 1; i < codepoints.length; ++i) {\n codepoints[i] += codepoints[i - 1];\n }\n // binary search in unicode ranges\n return (cp) => {\n let hi = codepoints.length;\n let lo = 0;\n while (hi - lo > 1) {\n const mid = Math.floor((hi + lo) / 2);\n const test = codepoints[mid];\n if (cp < test) {\n hi = mid;\n }\n else if (cp === test) {\n hi = lo = mid;\n break;\n }\n else if (test < cp) {\n lo = mid;\n }\n }\n return categories[lo];\n };\n}\nconst isControlMask = 1 << 14 /* UnicodeCategory.Control */;\nconst isDigitMask = 1 << 8 /* UnicodeCategory.DecimalDigitNumber */;\nconst isLetterMask = 0\n | 1 << 0 /* UnicodeCategory.UppercaseLetter */\n | 1 << 1 /* UnicodeCategory.LowercaseLetter */\n | 1 << 2 /* UnicodeCategory.TitlecaseLetter */\n | 1 << 3 /* UnicodeCategory.ModifierLetter */\n | 1 << 4 /* UnicodeCategory.OtherLetter */;\nconst isLetterOrDigitMask = isLetterMask | isDigitMask;\nconst isUpperMask = 1 << 0 /* UnicodeCategory.UppercaseLetter */;\nconst isLowerMask = 1 << 1 /* UnicodeCategory.LowercaseLetter */;\nconst isNumberMask = 0\n | 1 << 8 /* UnicodeCategory.DecimalDigitNumber */\n | 1 << 9 /* UnicodeCategory.LetterNumber */\n | 1 << 10 /* UnicodeCategory.OtherNumber */;\nconst isPunctuationMask = 0\n | 1 << 18 /* UnicodeCategory.ConnectorPunctuation */\n | 1 << 19 /* UnicodeCategory.DashPunctuation */\n | 1 << 20 /* UnicodeCategory.OpenPunctuation */\n | 1 << 21 /* UnicodeCategory.ClosePunctuation */\n | 1 << 22 /* UnicodeCategory.InitialQuotePunctuation */\n | 1 << 23 /* UnicodeCategory.FinalQuotePunctuation */\n | 1 << 24 /* UnicodeCategory.OtherPunctuation */;\nconst isSeparatorMask = 0\n | 1 << 11 /* UnicodeCategory.SpaceSeparator */\n | 1 << 12 /* UnicodeCategory.LineSeparator */\n | 1 << 13 /* UnicodeCategory.ParagraphSeparator */;\nconst isSymbolMask = 0\n | 1 << 25 /* UnicodeCategory.MathSymbol */\n | 1 << 26 /* UnicodeCategory.CurrencySymbol */\n | 1 << 27 /* UnicodeCategory.ModifierSymbol */\n | 1 << 28 /* UnicodeCategory.OtherSymbol */;\nconst isWhiteSpaceMask = 0\n | 1 << 11 /* UnicodeCategory.SpaceSeparator */\n | 1 << 12 /* UnicodeCategory.LineSeparator */\n | 1 << 13 /* UnicodeCategory.ParagraphSeparator */;\nconst unicodeCategoryFunc = getCategoryFunc();\nfunction charCodeAt(s, index) {\n if (index >= 0 && index < s.length) {\n return s.charCodeAt(index);\n }\n else {\n throw new Error(\"Index out of range.\");\n }\n}\nexport const getUnicodeCategory = (s) => getUnicodeCategory2(s, 0);\nexport const isControl = (s) => isControl2(s, 0);\nexport const isDigit = (s) => isDigit2(s, 0);\nexport const isLetter = (s) => isLetter2(s, 0);\nexport const isLetterOrDigit = (s) => isLetterOrDigit2(s, 0);\nexport const isUpper = (s) => isUpper2(s, 0);\nexport const isLower = (s) => isLower2(s, 0);\nexport const isNumber = (s) => isNumber2(s, 0);\nexport const isPunctuation = (s) => isPunctuation2(s, 0);\nexport const isSeparator = (s) => isSeparator2(s, 0);\nexport const isSymbol = (s) => isSymbol2(s, 0);\nexport const isWhiteSpace = (s) => isWhiteSpace2(s, 0);\nexport const isHighSurrogate = (s) => isHighSurrogate2(s, 0);\nexport const isLowSurrogate = (s) => isLowSurrogate2(s, 0);\nexport const isSurrogate = (s) => isSurrogate2(s, 0);\nexport function getUnicodeCategory2(s, index) {\n const cp = charCodeAt(s, index);\n return unicodeCategoryFunc(cp);\n}\nexport function isControl2(s, index) {\n const test = 1 << getUnicodeCategory2(s, index);\n return (test & isControlMask) !== 0;\n}\nexport function isDigit2(s, index) {\n const test = 1 << getUnicodeCategory2(s, index);\n return (test & isDigitMask) !== 0;\n}\nexport function isLetter2(s, index) {\n const test = 1 << getUnicodeCategory2(s, index);\n return (test & isLetterMask) !== 0;\n}\nexport function isLetterOrDigit2(s, index) {\n const test = 1 << getUnicodeCategory2(s, index);\n return (test & isLetterOrDigitMask) !== 0;\n}\nexport function isUpper2(s, index) {\n const test = 1 << getUnicodeCategory2(s, index);\n return (test & isUpperMask) !== 0;\n}\nexport function isLower2(s, index) {\n const test = 1 << getUnicodeCategory2(s, index);\n return (test & isLowerMask) !== 0;\n}\nexport function isNumber2(s, index) {\n const test = 1 << getUnicodeCategory2(s, index);\n return (test & isNumberMask) !== 0;\n}\nexport function isPunctuation2(s, index) {\n const test = 1 << getUnicodeCategory2(s, index);\n return (test & isPunctuationMask) !== 0;\n}\nexport function isSeparator2(s, index) {\n const test = 1 << getUnicodeCategory2(s, index);\n return (test & isSeparatorMask) !== 0;\n}\nexport function isSymbol2(s, index) {\n const test = 1 << getUnicodeCategory2(s, index);\n return (test & isSymbolMask) !== 0;\n}\nexport function isWhiteSpace2(s, index) {\n const test = 1 << getUnicodeCategory2(s, index);\n if ((test & isWhiteSpaceMask) !== 0) {\n return true;\n }\n const cp = charCodeAt(s, index);\n return (0x09 <= cp && cp <= 0x0D) || cp === 0x85 || cp === 0xA0;\n}\nexport function isHighSurrogate2(s, index) {\n const cp = charCodeAt(s, index);\n return (0xD800 <= cp && cp <= 0xDBFF);\n}\nexport function isLowSurrogate2(s, index) {\n const cp = charCodeAt(s, index);\n return (0xDC00 <= cp && cp <= 0xDFFF);\n}\nexport function isSurrogate2(s, index) {\n const cp = charCodeAt(s, index);\n return (0xD800 <= cp && cp <= 0xDFFF);\n}\nexport function isSurrogatePair(s, index) {\n return typeof index === \"number\"\n ? isHighSurrogate2(s, index) && isLowSurrogate2(s, index + 1)\n : isHighSurrogate(s) && isLowSurrogate(index);\n}\nexport function parse(input) {\n if (input.length === 1) {\n return input[0];\n }\n else {\n throw new Error(\"String must be exactly one character long.\");\n }\n}\n","// Unicode 13.0.0 codepoint ranges (delta encoded) and general categories.\n// Integer delta values are offset by 35 and stored as Unicode characters.\nexport const rangeDeltas = \"#C$&$&$$$$$$%-%&%=$$$$$$=$$$$D$$'$$$$$$$$$$$$%$$%$$$$&$:$*;$+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%$$$$$$$$$$$$$$$%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%$$$$&%$$$%$&%'$%$&&%$%$$$$$%$$%$$%$&$$$%%$$&'$$$$$$$$$$$$$$$$$$$$$$$$%$$$$$$$$$$$$$$$$$%$$$$$&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*%$%%$$'$$$$$$$$h$>5'/1(*$$$4“$$$$$$$$%$&$$'%$$&$$$%$4$,F$%&&$$$$$$$$$$$$$$$$$$$$$$$($$$$$%%VS$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$(%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%$$$$$$$$$$$$%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$I%$)L$$%%$$P$$$%$%$$+>''%.)&%$%%.$$$%C$-8-'%$†$$*$$)%%$'%-&%$1$$$$A>%|.$1-D,%$&$%$%9'$,$&$(%2$<&%$$.X8$5.2$C$Y$$$$&+'$%$*-%%-$$2$%$+%%%9$*$$&'%$$&'%%%%$$+$'%$&%%-%%)$$$$$%%$$)'%%9$*$%$%$%%$$&%'%%&&$*'$$*-%&$$-%$$,$&$9$*$%$(%$$&($%$$%$%$2%%%-$$*$)$$%$+%%%9$*$%$(%$$$$$'%%%%$*%$'%$&%%-$$)-$$$)&&$'&%$$$%&%&&&/'%$%&&$&$%$)$1-&)$$($&$+$&$:$3&$&'$&$'*%$&(%%%-*$*$$$%$+$&$:$-$(%$$$$($$%$%%*%*$$%%%-$%0%%,$&$L%$&'$&$&$$$'&$*&%%-,$)$$%$5&;$,$$%*&$'&&$$$+)-%%$/S$%*'$)$+$-%H%$$$($;$$$-$%,$%($$$)%-%'C$&2$$&%)--$$$$$$$$$$%+$G'1$($%(.$G$+$)$%('%HN%'$)$%%%$-))%%'&$&%*&'0$%%)$$$-&$%I$$($%N$$&Ŭ$'%*$$$'%L$'%D$'%*$$$'%2$\\\\$'%f%&,7&3-)y%)%$ʏ$$4$=$$&n&&+*0$'&.5&%,5%/0$&$%/W%$*+$%.&$&$$$%-)-))$'&$$-)F$X*(%E$$(i-B$&'%&'%$)&'$&%-A%(.O'=)-$&E:%%$%%X$$$*$$$$%+)-%$-)-)*$)%1$%b'$R$$($$($%*'-*-,,&%$A$'%%$&%-O$$%&$$&%+'G++%%&(-&&-A)%,*N%&++&$0$*'$)$%$%$(Ob0$EH]$($$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$,$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$,+)%)%++++)%)%+$$$$$$$$++1%++++++($%'$$$&&$%'$&'%%'$&+(&%&$%'$%$.()%$$$%$$$+$$($,$$'%&$$$.$$$-$($-$$%)&$$$-&$$$0&C30'$&/2%$'$%$&%&$$$%$()$$$$$$'$$'$'$%%%($'$$%$$3F$$'$%'((%'$%$%$*$B%%$$$Bį+$$$$7%*$$t$A'C',7$+$(I((A$$G'+$(MKKq%-)G'G'K+W.$³Ś,9-+»)%$$O$%&$%:$$+:%*B+,S6$%((9)&$=($c['%%3%Q$&$%(''$&$@%&'$,*,*@%$@&C+$?%'(*,Y&*9%+6(+5*'/*slZV0V*)G'+-ʼnB$M$%$%%q@-$+9.'(y8*7:,$$$X2*'7-2&$P&'%%%$'.$%<*-)&G($+$-'$%$+F$%$,%$S&,%'''$$$-$$$&$7.5$<&&%$$%)$d*$$$'$2$-$)R$&+(-)%%$+%%%9$*$%$($%$%$'%%%&%$)$((%%*&(®X&+%&$$'(-%$$$&AS&)$$'%$%%$$+-ÉR&'%'%$%:'%ES&+%$$%&$.-)06N$$$%)$$$*-Y>%&%'$('-%&$ãO&,$%$‡CC-,/+%$%+$%$;)$%%%$$$$$$$&,-i+%J&'%%'$$$$$>$-K)$$'+$+$)%&Q0$%&$(@\\\\Ī,$H$*$)$$$(--6&%A%9$$*$%$%l*$%$I)&$$%$*$$+-))$%$C($%$%$$$$*-ř6%%%Ú$28+'40$ν‰’$(.ç૟ђ$,࿪ɪ⇜ɜ*B$-'%ƒA%($-S*(''$$--$*$8(6˓CC:'ˆn'$$Z*'0c%$$$.%1᠛+ӹM,⌚łT&4'+ƯधŽ(0&,*-%$%$'፿ę-J%_%&&)++%*A'^:e&$½7/z,<ª===*$5==$$%%$%%%'$+'$$$*$.==%$'%+$*$=%$'$($$&*$============?%<$<$)<$<$)<$<$)<$<$)<$<$)$$%UȣZ'U+$1$%(2($2ճ*$4%*$%$(øP&**%-'$$ƓO'-($ԣè%,*LEE*$'-'%̴^$&$'oP$2å'$>$%$$%$$-$'$$$$)$'$$$$$$&$%$$%$$$$$$$$$$%$$%'$*$'$'$$$-$4(&$($4W%ıO'‡/2%2$2$H-0Ä[@0O',*%1)½Ğ(˻+0&0&—/|*/7/'[+-)K+A%%qœ$u$ª/1%(&&(*,<**,&0*L¶$ZH-Щ꜁Eၘ.ā%ᚥ1ᵔూɁ؅፮򮳙$Aƒ£ē︳𐀡%𐀡\";\nexport const categories = \"1.;=;78;<;6;+;<;#7;8>5>$7<8<1.;=?;>?'9<2?>?<->$;>-':-;#<#$<$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$'#$'#%$#%$#%$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#%$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$'$&>&>&>&>&>(#$#$&>#$@&$;#@>#;#@#@#$#@#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$<#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$?(*#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$@#@&;$;6@?=@(6(;(;(;(@'@';@2<;=;?(;2@;'&'(+;'(';'(2?(&(?('+'?';@2'('(@'('@+'(&?;&@(='(&(&(&(@;@'(@;@'@'@'@(2()'()(')()()'('(;+;&'()@'@'@'@'@'@'@(')(@)@)('@)@'@'(@+'=-?=';(@()@'@'@'@'@'@'@'@(@)(@(@(@(@'@'@+('(;@()@'@'@'@'@'@'@(')(@()@)(@'@'(@+;=@'(@()@'@'@'@'@'@'@(')()(@)@)(@()@'@'(@+?'-@('@'@'@'@'@'@'@'@'@'@)()@)@)(@'@)@+-?=?@()('@'@'@'@'()@(@(@(@'@'(@+@;-?'();'@'@'@'@'@(')()@()@)(@)@'@'(@+@'@()'@'@'(')(@)@)('?@')-'(@+-?'@()@'@'@'@'@'@(@)(@(@)@+@);@'('(@='&(;+;@'@'@'@'@'@'('('@'@&@(@+@'@'?;?;?(?+-?(?(?(7878)'@'@()(;('(@(@?(?@?;?;@')()()()('+;')('(')')'('()()(')+)(?#@#@#@$;&$'@'@'@'@'@'@'@'@'@'@'@'@'@'@'@'@(;-@'?@#@$@6'?;'.'78@';,'@'@'(@'(;@'(@'@'@(@'()()()(;&;='(@+@-@;6;(2@+@'&'@'('('@'@'@()()@)()(@?@;+'@'@'@'@+-@?'()(@;')()(@()()()(@(+@+@;&;@(*(@()'()()()()'@+;?(?@()')()()('+'()()()()@;')()(@;+@'+'&;$@#@#;@(;()('('(')('@$&$&$&(@(#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$@#@$#$#$@#@$@#@#@#@#$#$@$%$%$%$@$#%>$>$@$#%>$@$#@>$#>@$@$#%>@.26;9:79:79;/02.;9:;5;<78;<;5;.2@2-&@-<78&-<78@&@=@(*(*(@?#?#?$#$#$?#?<#?#?#?#?#?$#$'$?$#<#$?&'6';&'@'@'@?-?'?@'?@-?-?-?-?-?'?'@'&'@?@'&;'&;'+'@#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$'(*;(;&#$#$#$#$#$#$#$#$#$#$#$#$#$#$&(',(;@>&>#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$&$#$#$#$#$#$#$#$&>#$#$'#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$@#$#$#$@#$'&$'('('(')()?(@-?=?@';@)')(@;+@(';';'(+'(;'()@;'@()'()()();@&+@;'(&'+'@'()()(@'('()@+@;'&'?')()'('('('('('@'&;')();'&)(@'@'@'@'@'@$>&$&>@$')()();)(@+@'@'@'@34'@'@$@$@'('<'@'@'@'@'@'>@'87@'@'@'=?@(;78;@(;657878787878787878;78;5;@;6787878;<6<@;=;@'@'@2@;=;78;<;6;+;<;#7;8>5>$7<8<78;78;'&'&'@'@'@'@'@=<>?=@??@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@+@'@'@'@'@'@'@'@2@2@(@4@4@\";\n","import { replace } from \"../fable_modules/fable-library-js.4.24.0/RegExp.js\";\nimport { countBy, List_distinct, List_distinctBy, Array_distinct, Array_distinctBy } from \"../fable_modules/fable-library-js.4.24.0/Seq2.js\";\nimport { take, item, map } from \"../fable_modules/fable-library-js.4.24.0/Array.js\";\nimport { join, isNullOrWhiteSpace, split } from \"../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { comparePrimitives, stringHash } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { sort, fold, mapIndexed, item as item_1, singleton, append, tryFindIndex, tryFind, exists as exists_1, isEmpty, ofArray, filter, map as map_1, empty } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { collect, ofList, tryFind as tryFind_1, map as map_2, filter as filter_1, tryHead, exists } from \"../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { isLetterOrDigit } from \"../fable_modules/fable-library-js.4.24.0/Char.js\";\nimport { flatten } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { record_type, list_type, string_type, int32_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { ofSeq, toList } from \"../fable_modules/fable-library-js.4.24.0/Map.js\";\n\nconst whiteSpaceReg = /\\s\\s+/gu;\n\nexport const tagsSeparator = \",\";\n\nexport function collapseWhitespaces(str) {\n return replace(whiteSpaceReg, str, \" \");\n}\n\nexport function normaliseTag(tag) {\n return tag.trim().toLowerCase();\n}\n\nfunction splitClientTags(tags) {\n let array;\n if (tags == null) {\n return [];\n }\n else {\n return Array_distinctBy((s) => s.toLocaleLowerCase(), map((tag) => tag.trim(), (array = split(tags, [\",\"], undefined, 0), array.filter((arg) => !isNullOrWhiteSpace(arg)))), {\n Equals: (x, y) => (x === y),\n GetHashCode: stringHash,\n });\n }\n}\n\nexport function splitTagToHierarchicalComponents(tag) {\n return split(tag, [\"/\"], undefined, 0);\n}\n\nexport function concatHierarchicalComponents(components) {\n return join(\"/\", components);\n}\n\nexport function splitServerTags(tags) {\n if (tags == null) {\n return empty();\n }\n else {\n return map_1((tag) => tag.trim(), filter((arg) => !isNullOrWhiteSpace(arg), ofArray(split(tags, [\"#\"], undefined, 0))));\n }\n}\n\nexport function validateTag(tag) {\n if (tag == null) {\n return \"Must not be null\";\n }\n else if (exists((c) => !(((isLetterOrDigit(c) ? true : (c === \"_\")) ? true : (c === \"-\")) ? true : (c === \"/\")), tag.split(\"\"))) {\n return `Tag must contain only letters, numbers and characters '/', '-' and '_', was '${tag}'`;\n }\n else {\n return undefined;\n }\n}\n\nexport function validateTags(tags) {\n return flatten(tryHead(filter_1((option) => (option != null), map_2(validateTag, tags))));\n}\n\nexport function validateClientTags(tags) {\n return validateTags(splitClientTags(tags));\n}\n\nexport function validateServerTags(tags) {\n return validateTags(splitServerTags(tags));\n}\n\nexport function normaliseTags(tags) {\n if (tags == null) {\n return \"\";\n }\n else {\n return join(\", \", Array_distinct(map(normaliseTag, split(tags, [tagsSeparator], undefined, 0)), {\n Equals: (x, y) => (x === y),\n GetHashCode: stringHash,\n }));\n }\n}\n\nexport function toClientView(tags) {\n return join(\", \", splitServerTags(tags));\n}\n\nexport const toClientListView = (arg) => List_distinctBy((s) => s.toLocaleLowerCase(), splitServerTags(arg), {\n Equals: (x, y) => (x === y),\n GetHashCode: stringHash,\n});\n\nexport class TagTreeNode extends Record {\n constructor(Id, Tag, Caption, Children) {\n super();\n this.Id = (Id | 0);\n this.Tag = Tag;\n this.Caption = Caption;\n this.Children = Children;\n }\n}\n\nexport function TagTreeNode_$reflection() {\n return record_type(\"Omnicv.Shared.TagUtils.TagTreeNode\", [], TagTreeNode, () => [[\"Id\", int32_type], [\"Tag\", string_type], [\"Caption\", string_type], [\"Children\", list_type(TagTreeNode_$reflection())]]);\n}\n\nexport function TagTreeNode__get_IsLeaf(this$) {\n return isEmpty(this$.Children);\n}\n\nexport function TagTreeNode__Match_Z721C83C5(this$, query) {\n if ((this$.Tag.indexOf(query) >= 0) ? true : (this$.Caption.indexOf(query) >= 0)) {\n return true;\n }\n else {\n return exists_1((child) => TagTreeNode__Match_Z721C83C5(child, query), this$.Children);\n }\n}\n\nexport function TagTreeNode_Default_Z721C83C5(caption) {\n return new TagTreeNode(0, caption, caption, empty());\n}\n\nexport function tryFindNode(pred, trees) {\n if (isEmpty(trees)) {\n return undefined;\n }\n else {\n const res = tryFind(pred, trees);\n if (res == null) {\n return flatten(tryFind_1((option) => (option != null), map_2((child) => tryFindNode(pred, child.Children), ofList(trees))));\n }\n else {\n return res;\n }\n }\n}\n\nexport function toClientTreeView(tagsMap) {\n let id = 1;\n const addToTree = (tree, newTag, pos) => {\n if (pos >= newTag.length) {\n return tree;\n }\n else {\n const section = item(pos, newTag);\n const matchValue = tryFindIndex((child) => (child.Caption === section), tree.Children);\n if (matchValue == null) {\n const tag = concatHierarchicalComponents(take(pos + 1, newTag));\n id = ((id + 1) | 0);\n return new TagTreeNode(tree.Id, tree.Tag, tree.Caption, append(tree.Children, singleton(addToTree(new TagTreeNode(id, tag, section, empty()), newTag, pos + 1))));\n }\n else {\n const index = matchValue | 0;\n const newNode = addToTree(item_1(index, tree.Children), newTag, pos + 1);\n return new TagTreeNode(tree.Id, tree.Tag, tree.Caption, mapIndexed((i, child_1) => {\n if (i === index) {\n return newNode;\n }\n else {\n return child_1;\n }\n }, tree.Children));\n }\n }\n };\n return fold((tree_1, tag_2) => addToTree(tree_1, tag_2, 0), TagTreeNode_Default_Z721C83C5(\"\"), map_1(splitTagToHierarchicalComponents, List_distinct(sort(map_1((tupledArg) => tupledArg[0], toList(tagsMap)), {\n Compare: comparePrimitives,\n }), {\n Equals: (x_1, y_1) => (x_1 === y_1),\n GetHashCode: stringHash,\n }))).Children;\n}\n\nexport function concatToServer(tags) {\n return (\"#\" + join(\"#\", filter_1((arg) => !isNullOrWhiteSpace(arg), tags))) + \"#\";\n}\n\nexport function addTag(tags, tag) {\n const currentTags = splitServerTags(tags);\n if (exists_1((t) => (t.toLocaleLowerCase() === tag.toLocaleLowerCase()), currentTags)) {\n return tags;\n }\n else {\n return concatToServer(append(currentTags, singleton(tag)));\n }\n}\n\nexport function removeTag(tags, tag) {\n return concatToServer(filter((t) => (t.toLocaleLowerCase() !== tag.toLocaleLowerCase()), splitServerTags(tags)));\n}\n\nexport function fromClientView(tags) {\n return concatToServer(splitClientTags(tags));\n}\n\nexport function tagsToMap(tags) {\n return ofSeq(countBy((x) => x, collect(toClientListView, tags), {\n Equals: (x_1, y) => (x_1 === y),\n GetHashCode: stringHash,\n }), {\n Compare: comparePrimitives,\n });\n}\n\n","import { Record, Union } from \"./Types.js\";\nimport { combineHashCodes, equalArraysWith, stringHash } from \"./Util.js\";\nimport Decimal from \"./Decimal.js\";\nexport class CaseInfo {\n constructor(declaringType, tag, name, fields) {\n this.declaringType = declaringType;\n this.tag = tag;\n this.name = name;\n this.fields = fields;\n }\n}\nexport class MethodInfo {\n constructor(name, parameters, returnType) {\n this.name = name;\n this.parameters = parameters;\n this.returnType = returnType;\n }\n}\nexport class TypeInfo {\n constructor(fullname, generics, construct, parent, fields, cases, enumCases) {\n this.fullname = fullname;\n this.generics = generics;\n this.construct = construct;\n this.parent = parent;\n this.fields = fields;\n this.cases = cases;\n this.enumCases = enumCases;\n }\n toString() {\n return fullName(this);\n }\n GetHashCode() {\n return getHashCode(this);\n }\n Equals(other) {\n return equals(this, other);\n }\n}\nexport class GenericParameter extends TypeInfo {\n constructor(name) {\n super(name);\n }\n}\nexport function getGenerics(t) {\n return t.generics != null ? t.generics : [];\n}\nexport function getHashCode(t) {\n const fullnameHash = stringHash(t.fullname);\n const genHashes = getGenerics(t).map(getHashCode);\n return combineHashCodes([fullnameHash, ...genHashes]);\n}\nexport function equals(t1, t2) {\n if (t1.fullname === \"\") { // Anonymous records\n return t2.fullname === \"\"\n && equalArraysWith(getRecordElements(t1), getRecordElements(t2), ([k1, v1], [k2, v2]) => k1 === k2 && equals(v1, v2));\n }\n else {\n return t1.fullname === t2.fullname\n && equalArraysWith(getGenerics(t1), getGenerics(t2), equals);\n }\n}\nexport function class_type(fullname, generics, construct, parent) {\n return new TypeInfo(fullname, generics, construct, parent);\n}\nexport function record_type(fullname, generics, construct, fields) {\n return new TypeInfo(fullname, generics, construct, undefined, fields);\n}\nexport function anonRecord_type(...fields) {\n return new TypeInfo(\"\", undefined, undefined, undefined, () => fields);\n}\nexport function union_type(fullname, generics, construct, cases) {\n const t = new TypeInfo(fullname, generics, construct, undefined, undefined, () => {\n const caseNames = construct.prototype.cases();\n return cases().map((fields, i) => new CaseInfo(t, i, caseNames[i], fields));\n });\n return t;\n}\nexport function tuple_type(...generics) {\n return new TypeInfo(\"System.Tuple`\" + generics.length, generics);\n}\nexport function delegate_type(...generics) {\n return new TypeInfo(\"System.Func`\" + generics.length, generics);\n}\nexport function lambda_type(argType, returnType) {\n return new TypeInfo(\"Microsoft.FSharp.Core.FSharpFunc`2\", [argType, returnType]);\n}\nexport function option_type(generic) {\n return new TypeInfo(\"Microsoft.FSharp.Core.FSharpOption`1\", [generic]);\n}\nexport function list_type(generic) {\n return new TypeInfo(\"Microsoft.FSharp.Collections.FSharpList`1\", [generic]);\n}\nexport function array_type(generic) {\n return new TypeInfo(\"[]\", [generic]);\n}\nexport function enum_type(fullname, underlyingType, enumCases) {\n return new TypeInfo(fullname, [underlyingType], undefined, undefined, undefined, undefined, enumCases);\n}\nexport function measure_type(fullname) {\n return new TypeInfo(fullname);\n}\nexport function generic_type(name) {\n return new GenericParameter(name);\n}\nexport const obj_type = new TypeInfo(\"System.Object\");\nexport const unit_type = new TypeInfo(\"Microsoft.FSharp.Core.Unit\");\nexport const char_type = new TypeInfo(\"System.Char\");\nexport const string_type = new TypeInfo(\"System.String\");\nexport const bool_type = new TypeInfo(\"System.Boolean\");\nexport const int8_type = new TypeInfo(\"System.SByte\");\nexport const uint8_type = new TypeInfo(\"System.Byte\");\nexport const int16_type = new TypeInfo(\"System.Int16\");\nexport const uint16_type = new TypeInfo(\"System.UInt16\");\nexport const int32_type = new TypeInfo(\"System.Int32\");\nexport const uint32_type = new TypeInfo(\"System.UInt32\");\nexport const int64_type = new TypeInfo(\"System.Int64\");\nexport const uint64_type = new TypeInfo(\"System.UInt64\");\nexport const int128_type = new TypeInfo(\"System.Int128\");\nexport const uint128_type = new TypeInfo(\"System.UInt128\");\nexport const nativeint_type = new TypeInfo(\"System.IntPtr\");\nexport const unativeint_type = new TypeInfo(\"System.UIntPtr\");\nexport const float16_type = new TypeInfo(\"System.Half\");\nexport const float32_type = new TypeInfo(\"System.Single\");\nexport const float64_type = new TypeInfo(\"System.Double\");\nexport const decimal_type = new TypeInfo(\"System.Decimal\");\nexport const bigint_type = new TypeInfo(\"System.Numerics.BigInteger\");\nexport function name(info) {\n if (Array.isArray(info)) {\n return info[0];\n }\n else if (info instanceof TypeInfo) {\n const elemType = getElementType(info);\n if (elemType != null) {\n return name(elemType) + \"[]\";\n }\n else {\n const i = info.fullname.lastIndexOf(\".\");\n return i === -1 ? info.fullname : info.fullname.substr(i + 1);\n }\n }\n else {\n return info.name;\n }\n}\nexport function fullName(t) {\n const elemType = getElementType(t);\n if (elemType != null) {\n return fullName(elemType) + \"[]\";\n }\n else if (t.generics == null || t.generics.length === 0) {\n return t.fullname;\n }\n else {\n return t.fullname + \"[\" + t.generics.map((x) => fullName(x)).join(\",\") + \"]\";\n }\n}\nexport function namespace(t) {\n const elemType = getElementType(t);\n if (elemType != null) {\n return namespace(elemType);\n }\n else {\n const i = t.fullname.lastIndexOf(\".\");\n return i === -1 ? \"\" : t.fullname.substr(0, i);\n }\n}\nexport function isArray(t) {\n return getElementType(t) != null;\n}\nexport function getElementType(t) {\n return t.fullname === \"[]\" && t.generics?.length === 1 ? t.generics[0] : undefined;\n}\nexport function isGenericType(t) {\n return t.generics != null && t.generics.length > 0;\n}\nexport function isGenericParameter(t) {\n return t instanceof GenericParameter;\n}\nexport function isEnum(t) {\n return t.enumCases != null && t.enumCases.length > 0;\n}\nexport function isSubclassOf(t1, t2) {\n return (t2.fullname === obj_type.fullname) || (t1.parent != null && (t1.parent.Equals(t2) || isSubclassOf(t1.parent, t2)));\n}\nfunction isErasedToNumber(t) {\n return isEnum(t) || [\n int8_type.fullname,\n uint8_type.fullname,\n int16_type.fullname,\n uint16_type.fullname,\n int32_type.fullname,\n uint32_type.fullname,\n float16_type.fullname,\n float32_type.fullname,\n float64_type.fullname,\n ].includes(t.fullname);\n}\nfunction isErasedToBigInt(t) {\n return isEnum(t) || [\n int64_type.fullname,\n uint64_type.fullname,\n int128_type.fullname,\n uint128_type.fullname,\n nativeint_type.fullname,\n unativeint_type.fullname,\n bigint_type.fullname,\n ].includes(t.fullname);\n}\nexport function isInstanceOfType(t, o) {\n if (t.fullname === obj_type.fullname)\n return true;\n switch (typeof o) {\n case \"boolean\":\n return t.fullname === bool_type.fullname;\n case \"string\":\n return t.fullname === string_type.fullname;\n case \"function\":\n return isFunction(t);\n case \"number\":\n return isErasedToNumber(t);\n case \"bigint\":\n return isErasedToBigInt(t);\n default:\n return t.construct != null && o instanceof t.construct;\n }\n}\n/**\n * This doesn't replace types for fields (records) or cases (unions)\n * but it should be enough for type comparison purposes\n */\nexport function getGenericTypeDefinition(t) {\n return t.generics == null ? t : new TypeInfo(t.fullname, t.generics.map(() => obj_type));\n}\nexport function getEnumUnderlyingType(t) {\n return t.generics?.[0];\n}\nexport function getEnumValues(t) {\n if (isEnum(t) && t.enumCases != null) {\n return t.enumCases.map((kv) => kv[1]);\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nexport function getEnumNames(t) {\n if (isEnum(t) && t.enumCases != null) {\n return t.enumCases.map((kv) => kv[0]);\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nfunction getEnumCase(t, v) {\n if (t.enumCases != null) {\n if (typeof v === \"string\") {\n for (const kv of t.enumCases) {\n if (kv[0] === v) {\n return kv;\n }\n }\n throw new Error(`'${v}' was not found in ${t.fullname}`);\n }\n else {\n for (const kv of t.enumCases) {\n if (kv[1] === v) {\n return kv;\n }\n }\n // .NET returns the number even if it doesn't match any of the cases\n return [\"\", v];\n }\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nexport function parseEnum(t, str) {\n // TODO: better int parsing here, parseInt ceils floats: \"4.8\" -> 4\n const value = parseInt(str, 10);\n return getEnumCase(t, isNaN(value) ? str : value)[1];\n}\nexport function tryParseEnum(t, str, defValue) {\n try {\n defValue.contents = parseEnum(t, str);\n return true;\n }\n catch {\n return false;\n }\n}\nexport function getEnumName(t, v) {\n return getEnumCase(t, v)[0];\n}\nexport function isEnumDefined(t, v) {\n try {\n const kv = getEnumCase(t, v);\n return kv[0] != null && kv[0] !== \"\";\n }\n catch {\n // supress error\n }\n return false;\n}\n// FSharpType\nexport function getUnionCases(t) {\n if (t.cases != null) {\n return t.cases();\n }\n else {\n throw new Error(`${t.fullname} is not an F# union type`);\n }\n}\nexport function getRecordElements(t) {\n if (t.fields != null) {\n return t.fields();\n }\n else {\n throw new Error(`${t.fullname} is not an F# record type`);\n }\n}\nexport function getTupleElements(t) {\n if (isTuple(t) && t.generics != null) {\n return t.generics;\n }\n else {\n throw new Error(`${t.fullname} is not a tuple type`);\n }\n}\nexport function getFunctionElements(t) {\n if (isFunction(t) && t.generics != null) {\n const gen = t.generics;\n return [gen[0], gen[1]];\n }\n else {\n throw new Error(`${t.fullname} is not an F# function type`);\n }\n}\nexport function isUnion(t) {\n return t instanceof TypeInfo ? t.cases != null : t instanceof Union;\n}\nexport function isRecord(t) {\n return t instanceof TypeInfo ? t.fields != null : t instanceof Record;\n}\nexport function isTuple(t) {\n return t.fullname.startsWith(\"System.Tuple\");\n}\n// In .NET this is false for delegates\nexport function isFunction(t) {\n return t.fullname === \"Microsoft.FSharp.Core.FSharpFunc`2\";\n}\n// FSharpValue\nexport function getUnionFields(v, t) {\n const cases = getUnionCases(t);\n const case_ = cases[v.tag];\n if (case_ == null) {\n throw new Error(`Cannot find case ${v.name} in union type`);\n }\n return [case_, v.fields];\n}\nexport function getUnionCaseFields(uci) {\n return uci.fields == null ? [] : uci.fields;\n}\n// This is used as replacement of `FSharpValue.GetRecordFields`\n// For `FSharpTypes.GetRecordFields` see `getRecordElements`\n// Object.keys returns keys in the order they were added to the object\nexport function getRecordFields(v) {\n return Object.keys(v).map((k) => v[k]);\n}\nexport function getRecordField(v, field) {\n return v[field[0]];\n}\nexport function getTupleFields(v) {\n return v;\n}\nexport function getTupleField(v, i) {\n return v[i];\n}\nexport function makeUnion(uci, values) {\n const expectedLength = (uci.fields || []).length;\n if (values.length !== expectedLength) {\n throw new Error(`Expected an array of length ${expectedLength} but got ${values.length}`);\n }\n const construct = uci.declaringType.construct;\n if (construct == null) {\n return {};\n }\n const isSingleCase = uci.declaringType.cases ? uci.declaringType.cases().length == 1 : false;\n if (isSingleCase) {\n return new construct(...values);\n }\n else {\n return new construct(uci.tag, values);\n }\n}\nexport function makeRecord(t, values) {\n const fields = getRecordElements(t);\n if (fields.length !== values.length) {\n throw new Error(`Expected an array of length ${fields.length} but got ${values.length}`);\n }\n return t.construct != null\n ? new t.construct(...values)\n : fields.reduce((obj, [key, _t], i) => {\n obj[key] = values[i];\n return obj;\n }, {});\n}\nexport function makeTuple(values, _t) {\n return values;\n}\nexport function makeGenericType(t, generics) {\n return new TypeInfo(t.fullname, generics, t.construct, t.parent, t.fields, t.cases);\n}\nexport function createInstance(t, consArgs) {\n // TODO: Check if consArgs length is same as t.construct?\n // (Arg types can still be different)\n if (typeof t.construct === \"function\") {\n return new t.construct(...(consArgs ?? []));\n }\n else if (isErasedToNumber(t)) {\n return 0;\n }\n else if (isErasedToBigInt(t)) {\n return 0n;\n }\n else {\n switch (t.fullname) {\n case obj_type.fullname:\n return {};\n case bool_type.fullname:\n return false;\n case decimal_type.fullname:\n return new Decimal(0);\n case char_type.fullname:\n // Even though char is a value type, it's erased to string, and Unchecked.defaultof is null\n return null;\n default:\n throw new Error(`Cannot access constructor of ${t.fullname}`);\n }\n }\n}\nexport function getValue(propertyInfo, v) {\n return v[propertyInfo[0]];\n}\n// Fable.Core.Reflection\nfunction assertUnion(x) {\n if (!(x instanceof Union)) {\n throw new Error(`Value is not an F# union type`);\n }\n}\nexport function getCaseTag(x) {\n assertUnion(x);\n return x.tag;\n}\nexport function getCaseName(x) {\n assertUnion(x);\n return x.cases()[x.tag];\n}\nexport function getCaseFields(x) {\n assertUnion(x);\n return x.fields;\n}\n","import { Constraints_noneOrSomeTogether, Constraints_minMaxLengthConstraint, Constraints_minMaxOptLengthConstraint, Constraints_minMaxConstraint, Constraints_collectConstraintsErrors, Constraints_applyConstraintsGetErrors, Constraints_maxLengthConstraint, Constraints_minLengthConstraint, Constraints_notEmptyOrWhitespaceConstraint } from \"../../Omnicv.Shared.Common/Validation.js\";\nimport { length, singleton, ofArray } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { ofList, tryFind } from \"../../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { normaliseTags, splitServerTags, validateServerTags } from \"../../Omnicv.Shared.Common/TagUtils.js\";\nimport { FSharpResult$2 } from \"../../fable_modules/fable-library-js.4.24.0/Result.js\";\nimport { List_distinctBy } from \"../../fable_modules/fable-library-js.4.24.0/Seq2.js\";\nimport { comparePrimitives, stringHash } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { Record } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { enum_type, int32_type, uint8_type, record_type, bool_type, option_type, class_type, string_type, int64_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\n\nexport const taglineName = \"Tagline\";\n\nconst taglineConstraints = ofArray([(name) => ((value) => Constraints_notEmptyOrWhitespaceConstraint(name, value)), (name_1) => ((value_1) => Constraints_minLengthConstraint(1, name_1, value_1)), (name_2) => ((value_2) => Constraints_maxLengthConstraint(1024, name_2, value_2))]);\n\nfunction getTaglineErrors(tagline) {\n return Constraints_applyConstraintsGetErrors(taglineConstraints, taglineName, tagline);\n}\n\nexport function validateTagline(notes) {\n return tryFind(taglineName, Constraints_collectConstraintsErrors(singleton(getTaglineErrors(notes))));\n}\n\nconst notesConstraints = ofArray([(name) => ((value) => Constraints_notEmptyOrWhitespaceConstraint(name, value)), (name_1) => ((value_1) => Constraints_minLengthConstraint(10, name_1, value_1)), (name_2) => ((value_2) => Constraints_maxLengthConstraint(100000, name_2, value_2))]);\n\nexport const notesName = \"Notes\";\n\nfunction getNotesErrors(notes) {\n return Constraints_applyConstraintsGetErrors(notesConstraints, notesName, notes);\n}\n\nexport function validateNotes(notes) {\n return tryFind(notesName, Constraints_collectConstraintsErrors(singleton(getNotesErrors(notes))));\n}\n\nfunction getTagsErrors(tags) {\n return Constraints_applyConstraintsGetErrors(ofArray([(name_3) => ((value) => Constraints_maxLengthConstraint(512, name_3, value)), (name_1) => ((tags_1) => {\n const matchValue = validateServerTags(tags_1);\n return (matchValue == null) ? (new FSharpResult$2(0, [tags_1])) : (new FSharpResult$2(1, [[name_1, matchValue]]));\n }), (name_2) => ((tags_2) => {\n const tagsList = splitServerTags(tags_2);\n const distinctCount = length(List_distinctBy((s) => s.toLocaleLowerCase(), tagsList, {\n Equals: (x, y) => (x === y),\n GetHashCode: stringHash,\n })) | 0;\n return (length(tagsList) !== distinctCount) ? (new FSharpResult$2(1, [[name_2, \"Must not contain duplicates\"]])) : (new FSharpResult$2(0, [tags_2]));\n })]), \"Tags\", tags);\n}\n\nexport const tagsName = \"Tags\";\n\nexport function validateTags(tags) {\n return tryFind(tagsName, Constraints_collectConstraintsErrors(singleton(getTagsErrors(tags))));\n}\n\nfunction getRatingErrors(rating) {\n let minValue, maxValue;\n return Constraints_applyConstraintsGetErrors(singleton((minValue = (1 & 0xFF), (maxValue = (10 & 0xFF), (name_1) => ((value) => Constraints_minMaxConstraint(minValue, maxValue, name_1, value))))), \"Rating\", rating);\n}\n\nexport const ratingName = \"Rating\";\n\nexport function validateRating(rating) {\n return tryFind(ratingName, Constraints_collectConstraintsErrors(singleton(getRatingErrors(rating))));\n}\n\nconst followupNotesConstraints = singleton((name) => ((value) => Constraints_minMaxOptLengthConstraint(1, 1000, name, value)));\n\nexport const followupNotesName = \"FollowupNotes\";\n\nexport function getFollowupNotesErrors(followupNotes) {\n return Constraints_applyConstraintsGetErrors(followupNotesConstraints, followupNotesName, followupNotes);\n}\n\nexport function validateFollowupNotes(followupNotes) {\n return tryFind(followupNotesName, Constraints_collectConstraintsErrors(singleton(getFollowupNotesErrors(followupNotes))));\n}\n\nconst InteractionRecordModule_participantsConstraints = singleton((name) => ((value) => Constraints_minMaxLengthConstraint(1, 1000, name, value)));\n\nexport const InteractionRecordModule_participantsName = \"Participants\";\n\nexport function InteractionRecordModule_getParticipantsErrors(participants) {\n return Constraints_applyConstraintsGetErrors(InteractionRecordModule_participantsConstraints, InteractionRecordModule_participantsName, participants);\n}\n\nexport function InteractionRecordModule_validateParticipants(participants) {\n return tryFind(InteractionRecordModule_participantsName, Constraints_collectConstraintsErrors(singleton(InteractionRecordModule_getParticipantsErrors(participants))));\n}\n\nexport class DiaryRecord extends Record {\n constructor(Id, Tagline, Notes, FollowupTime, FollowupNotes, FollowupDismissed, Tags) {\n super();\n this.Id = Id;\n this.Tagline = Tagline;\n this.Notes = Notes;\n this.FollowupTime = FollowupTime;\n this.FollowupNotes = FollowupNotes;\n this.FollowupDismissed = FollowupDismissed;\n this.Tags = Tags;\n }\n}\n\nexport function DiaryRecord_$reflection() {\n return record_type(\"Omnicv.Diary.Shared.Data.DiaryRecord\", [], DiaryRecord, () => [[\"Id\", int64_type], [\"Tagline\", string_type], [\"Notes\", string_type], [\"FollowupTime\", option_type(class_type(\"System.DateTime\"))], [\"FollowupNotes\", option_type(string_type)], [\"FollowupDismissed\", option_type(bool_type)], [\"Tags\", string_type]]);\n}\n\nfunction DiaryRecord_ValidateFollowup_6A4ED0A1(record) {\n return Constraints_applyConstraintsGetErrors(singleton((name) => ((mapping) => Constraints_noneOrSomeTogether(name, mapping))), \"Followup\", ofList(ofArray([[\"FollowupTime\", record.FollowupTime != null], [\"FollowupNotes\", record.FollowupNotes != null]]), {\n Compare: comparePrimitives,\n }));\n}\n\nfunction DiaryRecord_Validator_6A4ED0A1(record) {\n return Constraints_collectConstraintsErrors(ofArray([getTaglineErrors(record.Tagline), getNotesErrors(record.Notes), getTagsErrors(record.Tags), getFollowupNotesErrors(record.FollowupNotes), DiaryRecord_ValidateFollowup_6A4ED0A1(record)]));\n}\n\nexport function DiaryRecord_Default() {\n return new DiaryRecord(0n, \"\", \"\", undefined, undefined, undefined, \"\");\n}\n\nexport function DiaryRecord__GetTags(this$) {\n return normaliseTags(this$.Tags);\n}\n\nexport function DiaryRecord__Validate(this$) {\n return DiaryRecord_Validator_6A4ED0A1(this$);\n}\n\nexport function DiaryRecord__ValidateField_Z721C83C5(this$, name) {\n return tryFind(name, DiaryRecord__Validate(this$));\n}\n\nexport class ReviewRecord extends Record {\n constructor(Id, Tagline, Notes, Tags, Rating) {\n super();\n this.Id = Id;\n this.Tagline = Tagline;\n this.Notes = Notes;\n this.Tags = Tags;\n this.Rating = Rating;\n }\n}\n\nexport function ReviewRecord_$reflection() {\n return record_type(\"Omnicv.Diary.Shared.Data.ReviewRecord\", [], ReviewRecord, () => [[\"Id\", int64_type], [\"Tagline\", string_type], [\"Notes\", string_type], [\"Tags\", string_type], [\"Rating\", uint8_type]]);\n}\n\nfunction ReviewRecord_Validator_Z14ABCC84(record) {\n return Constraints_collectConstraintsErrors(ofArray([getTaglineErrors(record.Tagline), getNotesErrors(record.Notes), getTagsErrors(record.Tags), getRatingErrors(record.Rating)]));\n}\n\nexport function ReviewRecord_Default() {\n return new ReviewRecord(0n, \"\", \"\", \"\", 0 & 0xFF);\n}\n\nexport function ReviewRecord__GetTags(this$) {\n return normaliseTags(this$.Tags);\n}\n\nexport function ReviewRecord__Validate(this$) {\n return ReviewRecord_Validator_Z14ABCC84(this$);\n}\n\nexport function ReviewRecord__ValidateField_Z721C83C5(this$, name) {\n return tryFind(name, ReviewRecord__Validate(this$));\n}\n\nexport const interactionTypes = ofArray([[0, \"Other\"], [1, \"Physical\"], [2, \"Call\"], [3, \"Video call\"], [4, \"Text message\"], [5, \"E-mail\"], [6, \"Postal\"]]);\n\nexport class InteractionRecord extends Record {\n constructor(Id, Tagline, Participants, DurationSec, InteractionType, Notes, FollowupTime, FollowupNotes, FollowupDismissed, Tags) {\n super();\n this.Id = Id;\n this.Tagline = Tagline;\n this.Participants = Participants;\n this.DurationSec = (DurationSec | 0);\n this.InteractionType = (InteractionType | 0);\n this.Notes = Notes;\n this.FollowupTime = FollowupTime;\n this.FollowupNotes = FollowupNotes;\n this.FollowupDismissed = FollowupDismissed;\n this.Tags = Tags;\n }\n}\n\nexport function InteractionRecord_$reflection() {\n return record_type(\"Omnicv.Diary.Shared.Data.InteractionRecord\", [], InteractionRecord, () => [[\"Id\", int64_type], [\"Tagline\", string_type], [\"Participants\", string_type], [\"DurationSec\", int32_type], [\"InteractionType\", enum_type(\"Omnicv.Diary.Shared.Data.InteractionType\", int32_type, [[\"Other\", 0], [\"Physical\", 1], [\"Call\", 2], [\"VideoCall\", 3], [\"TextMessage\", 4], [\"Email\", 5], [\"Postal\", 6]])], [\"Notes\", string_type], [\"FollowupTime\", option_type(class_type(\"System.DateTime\"))], [\"FollowupNotes\", option_type(string_type)], [\"FollowupDismissed\", option_type(bool_type)], [\"Tags\", string_type]]);\n}\n\nfunction InteractionRecord_ValidateFollowup_1BC6EC3C(record) {\n return Constraints_applyConstraintsGetErrors(singleton((name) => ((mapping) => Constraints_noneOrSomeTogether(name, mapping))), \"Followup\", ofList(ofArray([[\"FollowupTime\", record.FollowupTime != null], [\"FollowupNotes\", record.FollowupNotes != null]]), {\n Compare: comparePrimitives,\n }));\n}\n\nfunction InteractionRecord_Validator_1BC6EC3C(record) {\n return Constraints_collectConstraintsErrors(ofArray([getTaglineErrors(record.Tagline), getNotesErrors(record.Notes), getTagsErrors(record.Tags), InteractionRecordModule_getParticipantsErrors(record.Participants), getFollowupNotesErrors(record.FollowupNotes), InteractionRecord_ValidateFollowup_1BC6EC3C(record)]));\n}\n\nexport function InteractionRecord_Default() {\n return new InteractionRecord(0n, \"\", \"\", 0, 0, \"\", undefined, undefined, undefined, \"\");\n}\n\nexport function InteractionRecord__GetTags(this$) {\n return normaliseTags(this$.Tags);\n}\n\nexport function InteractionRecord__Validate(this$) {\n return InteractionRecord_Validator_1BC6EC3C(this$);\n}\n\nexport function InteractionRecord__ValidateField_Z721C83C5(this$, name) {\n return tryFind(name, InteractionRecord__Validate(this$));\n}\n\nexport class ReminderRecord extends Record {\n constructor(Id, Tagline, EventTimestamp, FollowupTime, FollowupNotes, FollowupDismissed) {\n super();\n this.Id = Id;\n this.Tagline = Tagline;\n this.EventTimestamp = EventTimestamp;\n this.FollowupTime = FollowupTime;\n this.FollowupNotes = FollowupNotes;\n this.FollowupDismissed = FollowupDismissed;\n }\n}\n\nexport function ReminderRecord_$reflection() {\n return record_type(\"Omnicv.Diary.Shared.Data.ReminderRecord\", [], ReminderRecord, () => [[\"Id\", int64_type], [\"Tagline\", string_type], [\"EventTimestamp\", class_type(\"System.DateTime\")], [\"FollowupTime\", option_type(class_type(\"System.DateTime\"))], [\"FollowupNotes\", option_type(string_type)], [\"FollowupDismissed\", option_type(bool_type)]]);\n}\n\n","import { ensureErrorOrException } from './Types.js';\nexport class CancellationToken {\n constructor(cancelled = false) {\n this._id = 0;\n this._cancelled = cancelled;\n this._listeners = new Map();\n }\n get isCancelled() {\n return this._cancelled;\n }\n cancel() {\n if (!this._cancelled) {\n this._cancelled = true;\n for (const [, listener] of this._listeners) {\n listener();\n }\n }\n }\n addListener(f) {\n const id = this._id;\n this._listeners.set(this._id++, f);\n return id;\n }\n removeListener(id) {\n return this._listeners.delete(id);\n }\n register(f, state) {\n const $ = this;\n const id = this.addListener(state == null ? f : () => f(state));\n return { Dispose() { $.removeListener(id); } };\n }\n Dispose() {\n // Implement IDisposable for compatibility but do nothing\n // According to docs, calling Dispose does not trigger cancellation\n // https://docs.microsoft.com/en-us/dotnet/api/system.threading.cancellationtokensource.dispose?view=net-6.0\n }\n}\nexport class OperationCanceledError extends Error {\n constructor() {\n super(\"The operation was canceled\");\n Object.setPrototypeOf(this, OperationCanceledError.prototype);\n }\n}\nexport class Trampoline {\n static get maxTrampolineCallCount() {\n return 2000;\n }\n constructor() {\n this.callCount = 0;\n }\n incrementAndCheck() {\n return this.callCount++ > Trampoline.maxTrampolineCallCount;\n }\n hijack(f) {\n this.callCount = 0;\n setTimeout(f, 0);\n }\n}\nexport function protectedCont(f) {\n return (ctx) => {\n if (ctx.cancelToken.isCancelled) {\n ctx.onCancel(new OperationCanceledError());\n }\n else if (ctx.trampoline.incrementAndCheck()) {\n ctx.trampoline.hijack(() => {\n try {\n f(ctx);\n }\n catch (err) {\n ctx.onError(ensureErrorOrException(err));\n }\n });\n }\n else {\n try {\n f(ctx);\n }\n catch (err) {\n ctx.onError(ensureErrorOrException(err));\n }\n }\n };\n}\nexport function protectedBind(computation, binder) {\n return protectedCont((ctx) => {\n computation({\n onSuccess: (x) => {\n try {\n binder(x)(ctx);\n }\n catch (err) {\n ctx.onError(ensureErrorOrException(err));\n }\n },\n onError: ctx.onError,\n onCancel: ctx.onCancel,\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n });\n });\n}\nexport function protectedReturn(value) {\n return protectedCont((ctx) => ctx.onSuccess(value));\n}\nexport class AsyncBuilder {\n Bind(computation, binder) {\n return protectedBind(computation, binder);\n }\n Combine(computation1, computation2) {\n return this.Bind(computation1, () => computation2);\n }\n Delay(generator) {\n return protectedCont((ctx) => generator()(ctx));\n }\n For(sequence, body) {\n const iter = sequence[Symbol.iterator]();\n let cur = iter.next();\n return this.While(() => !cur.done, this.Delay(() => {\n const res = body(cur.value);\n cur = iter.next();\n return res;\n }));\n }\n Return(value) {\n return protectedReturn(value);\n }\n ReturnFrom(computation) {\n return computation;\n }\n TryFinally(computation, compensation) {\n return protectedCont((ctx) => {\n computation({\n onSuccess: (x) => {\n compensation();\n ctx.onSuccess(x);\n },\n onError: (x) => {\n compensation();\n ctx.onError(x);\n },\n onCancel: (x) => {\n compensation();\n ctx.onCancel(x);\n },\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n });\n });\n }\n TryWith(computation, catchHandler) {\n return protectedCont((ctx) => {\n computation({\n onSuccess: ctx.onSuccess,\n onCancel: ctx.onCancel,\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n onError: (ex) => {\n try {\n catchHandler(ex)(ctx);\n }\n catch (err) {\n ctx.onError(ensureErrorOrException(err));\n }\n },\n });\n });\n }\n Using(resource, binder) {\n return this.TryFinally(binder(resource), () => resource.Dispose());\n }\n While(guard, computation) {\n if (guard()) {\n return this.Bind(computation, () => this.While(guard, computation));\n }\n else {\n return this.Return(void 0);\n }\n }\n Zero() {\n return protectedCont((ctx) => ctx.onSuccess(void 0));\n }\n}\nexport const singleton = new AsyncBuilder();\n","import { Union } from \"./Types.js\";\nimport { union_type } from \"./Reflection.js\";\nimport { some } from \"./Option.js\";\nexport function FSharpChoice$2_Choice1Of2(Item) {\n return new FSharpChoice$2(0, [Item]);\n}\nexport function FSharpChoice$2_Choice2Of2(Item) {\n return new FSharpChoice$2(1, [Item]);\n}\nexport class FSharpChoice$2 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Choice1Of2\", \"Choice2Of2\"];\n }\n}\nexport function FSharpChoice$2_$reflection(gen0, gen1) {\n return union_type(\"FSharp.Core.FSharpChoice`2\", [gen0, gen1], FSharpChoice$2, () => [[[\"Item\", gen0]], [[\"Item\", gen1]]]);\n}\nexport function FSharpChoice$3_Choice1Of3(Item) {\n return new FSharpChoice$3(0, [Item]);\n}\nexport function FSharpChoice$3_Choice2Of3(Item) {\n return new FSharpChoice$3(1, [Item]);\n}\nexport function FSharpChoice$3_Choice3Of3(Item) {\n return new FSharpChoice$3(2, [Item]);\n}\nexport class FSharpChoice$3 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Choice1Of3\", \"Choice2Of3\", \"Choice3Of3\"];\n }\n}\nexport function FSharpChoice$3_$reflection(gen0, gen1, gen2) {\n return union_type(\"FSharp.Core.FSharpChoice`3\", [gen0, gen1, gen2], FSharpChoice$3, () => [[[\"Item\", gen0]], [[\"Item\", gen1]], [[\"Item\", gen2]]]);\n}\nexport function FSharpChoice$4_Choice1Of4(Item) {\n return new FSharpChoice$4(0, [Item]);\n}\nexport function FSharpChoice$4_Choice2Of4(Item) {\n return new FSharpChoice$4(1, [Item]);\n}\nexport function FSharpChoice$4_Choice3Of4(Item) {\n return new FSharpChoice$4(2, [Item]);\n}\nexport function FSharpChoice$4_Choice4Of4(Item) {\n return new FSharpChoice$4(3, [Item]);\n}\nexport class FSharpChoice$4 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Choice1Of4\", \"Choice2Of4\", \"Choice3Of4\", \"Choice4Of4\"];\n }\n}\nexport function FSharpChoice$4_$reflection(gen0, gen1, gen2, gen3) {\n return union_type(\"FSharp.Core.FSharpChoice`4\", [gen0, gen1, gen2, gen3], FSharpChoice$4, () => [[[\"Item\", gen0]], [[\"Item\", gen1]], [[\"Item\", gen2]], [[\"Item\", gen3]]]);\n}\nexport function FSharpChoice$5_Choice1Of5(Item) {\n return new FSharpChoice$5(0, [Item]);\n}\nexport function FSharpChoice$5_Choice2Of5(Item) {\n return new FSharpChoice$5(1, [Item]);\n}\nexport function FSharpChoice$5_Choice3Of5(Item) {\n return new FSharpChoice$5(2, [Item]);\n}\nexport function FSharpChoice$5_Choice4Of5(Item) {\n return new FSharpChoice$5(3, [Item]);\n}\nexport function FSharpChoice$5_Choice5Of5(Item) {\n return new FSharpChoice$5(4, [Item]);\n}\nexport class FSharpChoice$5 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Choice1Of5\", \"Choice2Of5\", \"Choice3Of5\", \"Choice4Of5\", \"Choice5Of5\"];\n }\n}\nexport function FSharpChoice$5_$reflection(gen0, gen1, gen2, gen3, gen4) {\n return union_type(\"FSharp.Core.FSharpChoice`5\", [gen0, gen1, gen2, gen3, gen4], FSharpChoice$5, () => [[[\"Item\", gen0]], [[\"Item\", gen1]], [[\"Item\", gen2]], [[\"Item\", gen3]], [[\"Item\", gen4]]]);\n}\nexport function FSharpChoice$6_Choice1Of6(Item) {\n return new FSharpChoice$6(0, [Item]);\n}\nexport function FSharpChoice$6_Choice2Of6(Item) {\n return new FSharpChoice$6(1, [Item]);\n}\nexport function FSharpChoice$6_Choice3Of6(Item) {\n return new FSharpChoice$6(2, [Item]);\n}\nexport function FSharpChoice$6_Choice4Of6(Item) {\n return new FSharpChoice$6(3, [Item]);\n}\nexport function FSharpChoice$6_Choice5Of6(Item) {\n return new FSharpChoice$6(4, [Item]);\n}\nexport function FSharpChoice$6_Choice6Of6(Item) {\n return new FSharpChoice$6(5, [Item]);\n}\nexport class FSharpChoice$6 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Choice1Of6\", \"Choice2Of6\", \"Choice3Of6\", \"Choice4Of6\", \"Choice5Of6\", \"Choice6Of6\"];\n }\n}\nexport function FSharpChoice$6_$reflection(gen0, gen1, gen2, gen3, gen4, gen5) {\n return union_type(\"FSharp.Core.FSharpChoice`6\", [gen0, gen1, gen2, gen3, gen4, gen5], FSharpChoice$6, () => [[[\"Item\", gen0]], [[\"Item\", gen1]], [[\"Item\", gen2]], [[\"Item\", gen3]], [[\"Item\", gen4]], [[\"Item\", gen5]]]);\n}\nexport function FSharpChoice$7_Choice1Of7(Item) {\n return new FSharpChoice$7(0, [Item]);\n}\nexport function FSharpChoice$7_Choice2Of7(Item) {\n return new FSharpChoice$7(1, [Item]);\n}\nexport function FSharpChoice$7_Choice3Of7(Item) {\n return new FSharpChoice$7(2, [Item]);\n}\nexport function FSharpChoice$7_Choice4Of7(Item) {\n return new FSharpChoice$7(3, [Item]);\n}\nexport function FSharpChoice$7_Choice5Of7(Item) {\n return new FSharpChoice$7(4, [Item]);\n}\nexport function FSharpChoice$7_Choice6Of7(Item) {\n return new FSharpChoice$7(5, [Item]);\n}\nexport function FSharpChoice$7_Choice7Of7(Item) {\n return new FSharpChoice$7(6, [Item]);\n}\nexport class FSharpChoice$7 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Choice1Of7\", \"Choice2Of7\", \"Choice3Of7\", \"Choice4Of7\", \"Choice5Of7\", \"Choice6Of7\", \"Choice7Of7\"];\n }\n}\nexport function FSharpChoice$7_$reflection(gen0, gen1, gen2, gen3, gen4, gen5, gen6) {\n return union_type(\"FSharp.Core.FSharpChoice`7\", [gen0, gen1, gen2, gen3, gen4, gen5, gen6], FSharpChoice$7, () => [[[\"Item\", gen0]], [[\"Item\", gen1]], [[\"Item\", gen2]], [[\"Item\", gen3]], [[\"Item\", gen4]], [[\"Item\", gen5]], [[\"Item\", gen6]]]);\n}\nexport function Choice_makeChoice1Of2(x) {\n return FSharpChoice$2_Choice1Of2(x);\n}\nexport function Choice_makeChoice2Of2(x) {\n return FSharpChoice$2_Choice2Of2(x);\n}\nexport function Choice_tryValueIfChoice1Of2(x) {\n if (x.tag === /* Choice1Of2 */ 0) {\n return some(x.fields[0]);\n }\n else {\n return undefined;\n }\n}\nexport function Choice_tryValueIfChoice2Of2(x) {\n if (x.tag === /* Choice2Of2 */ 1) {\n return some(x.fields[0]);\n }\n else {\n return undefined;\n }\n}\n","import { OperationCanceledError, Trampoline } from \"./AsyncBuilder.js\";\nimport { CancellationToken } from \"./AsyncBuilder.js\";\nimport { protectedCont, protectedBind, protectedReturn } from \"./AsyncBuilder.js\";\nimport { Choice_makeChoice1Of2, Choice_makeChoice2Of2 } from \"./Choice.js\";\nimport { TimeoutException } from \"./SystemException.js\";\nfunction emptyContinuation(_x) {\n // NOP\n}\n// see AsyncBuilder.Delay\nfunction delay(generator) {\n return protectedCont((ctx) => generator()(ctx));\n}\n// MakeAsync: body:(AsyncActivation<'T> -> AsyncReturn) -> Async<'T>\nexport function makeAsync(body) {\n return body;\n}\n// Invoke: computation: Async<'T> -> ctxt:AsyncActivation<'T> -> AsyncReturn\nexport function invoke(computation, ctx) {\n return computation(ctx);\n}\n// CallThenInvoke: ctxt:AsyncActivation<'T> -> result1:'U -> part2:('U -> Async<'T>) -> AsyncReturn\nexport function callThenInvoke(ctx, result1, part2) {\n return part2(result1)(ctx);\n}\n// Bind: ctxt:AsyncActivation<'T> -> part1:Async<'U> -> part2:('U -> Async<'T>) -> AsyncReturn\nexport function bind(ctx, part1, part2) {\n return protectedBind(part1, part2)(ctx);\n}\nexport function createCancellationToken(arg) {\n const token = new CancellationToken(typeof arg === \"boolean\" ? arg : false);\n if (typeof arg === \"number\") {\n setTimeout(() => { token.cancel(); }, arg);\n }\n return token;\n}\nexport function cancel(token) {\n token.cancel();\n}\nexport function cancelAfter(token, ms) {\n setTimeout(() => { token.cancel(); }, ms);\n}\nexport function isCancellationRequested(token) {\n return token != null && token.isCancelled;\n}\nexport function throwIfCancellationRequested(token) {\n if (token != null && token.isCancelled) {\n throw new Error(\"Operation is cancelled\");\n }\n}\nfunction throwAfter(millisecondsDueTime) {\n return protectedCont((ctx) => {\n let tokenId;\n const timeoutId = setTimeout(() => {\n ctx.cancelToken.removeListener(tokenId);\n ctx.onError(new TimeoutException());\n }, millisecondsDueTime);\n tokenId = ctx.cancelToken.addListener(() => {\n clearTimeout(timeoutId);\n ctx.onCancel(new OperationCanceledError());\n });\n });\n}\nexport function startChild(computation, ms) {\n if (ms) {\n const computationWithTimeout = protectedBind(parallel2(computation, throwAfter(ms)), xs => protectedReturn(xs[0]));\n return startChild(computationWithTimeout);\n }\n const promise = startAsPromise(computation);\n // JS Promises are hot, computation has already started\n // but we delay returning the result\n return protectedCont((ctx) => protectedReturn(awaitPromise(promise))(ctx));\n}\nexport function awaitPromise(p) {\n return fromContinuations((conts) => p.then(conts[0]).catch((err) => (err instanceof OperationCanceledError\n ? conts[2] : conts[1])(err)));\n}\nexport function cancellationToken() {\n return protectedCont((ctx) => ctx.onSuccess(ctx.cancelToken));\n}\nexport const defaultCancellationToken = new CancellationToken();\nexport function catchAsync(work) {\n return protectedCont((ctx) => {\n work({\n onSuccess: (x) => ctx.onSuccess(Choice_makeChoice1Of2(x)),\n onError: (ex) => ctx.onSuccess(Choice_makeChoice2Of2(ex)),\n onCancel: ctx.onCancel,\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n });\n });\n}\nexport function fromContinuations(f) {\n return protectedCont((ctx) => f([ctx.onSuccess, ctx.onError, ctx.onCancel]));\n}\nexport function ignore(computation) {\n return protectedBind(computation, (_x) => protectedReturn(void 0));\n}\nexport function parallel(computations) {\n return delay(() => awaitPromise(Promise.all(Array.from(computations, (w) => startAsPromise(w)))));\n}\nfunction parallel2(a, b) {\n return delay(() => awaitPromise(Promise.all([startAsPromise(a), startAsPromise(b)])));\n}\nexport function sequential(computations) {\n function _sequential(computations) {\n let pr = Promise.resolve([]);\n for (const c of computations) {\n pr = pr.then(results => startAsPromise(c).then(r => results.concat([r])));\n }\n return pr;\n }\n return delay(() => awaitPromise(_sequential(computations)));\n}\nexport function sleep(millisecondsDueTime) {\n return protectedCont((ctx) => {\n let tokenId;\n const timeoutId = setTimeout(() => {\n ctx.cancelToken.removeListener(tokenId);\n ctx.onSuccess(void 0);\n }, millisecondsDueTime);\n tokenId = ctx.cancelToken.addListener(() => {\n clearTimeout(timeoutId);\n ctx.onCancel(new OperationCanceledError());\n });\n });\n}\nexport function runSynchronously() {\n throw new Error(\"Asynchronous code cannot be run synchronously in JS\");\n}\nexport function start(computation, cancellationToken) {\n return startWithContinuations(computation, cancellationToken);\n}\nexport function startImmediate(computation, cancellationToken) {\n return start(computation, cancellationToken);\n}\nexport function startWithContinuations(computation, continuation, exceptionContinuation, cancellationContinuation, cancelToken) {\n if (typeof continuation !== \"function\") {\n cancelToken = continuation;\n continuation = undefined;\n }\n const trampoline = new Trampoline();\n computation({\n onSuccess: continuation ? continuation : emptyContinuation,\n onError: exceptionContinuation ? exceptionContinuation : emptyContinuation,\n onCancel: cancellationContinuation ? cancellationContinuation : emptyContinuation,\n cancelToken: cancelToken ? cancelToken : defaultCancellationToken,\n trampoline,\n });\n}\nexport function startAsPromise(computation, cancellationToken) {\n return new Promise((resolve, reject) => startWithContinuations(computation, resolve, reject, reject, cancellationToken ? cancellationToken : defaultCancellationToken));\n}\n","import { subscribe } from \"./Observable.js\";\nimport { some, value } from \"./Option.js\";\nimport { Choice_tryValueIfChoice1Of2, Choice_tryValueIfChoice2Of2 } from \"./Choice.js\";\nexport class Event$2 {\n constructor() {\n this.delegates = [];\n }\n _add(d) {\n this.delegates.push(d);\n }\n _remove(d) {\n const index = this.delegates.indexOf(d);\n if (index > -1) {\n this.delegates.splice(index, 1);\n }\n }\n get Publish() {\n return createEvent(h => { this._add(h); }, h => { this._remove(h); });\n }\n Trigger(senderOrValue, valueOrUndefined) {\n let sender = null;\n const value = valueOrUndefined === undefined ? senderOrValue : (sender = senderOrValue, valueOrUndefined);\n this.delegates.forEach(f => { f(sender, value); });\n }\n}\nexport class Event extends Event$2 {\n}\nexport function add(callback, sourceEvent) {\n subscribe(callback, sourceEvent);\n}\nexport function choose(chooser, sourceEvent) {\n const ev = new Event();\n add((t) => {\n const u = chooser(t);\n if (u != null) {\n ev.Trigger(value(u));\n }\n }, sourceEvent);\n return ev.Publish;\n}\nexport function filter(predicate, sourceEvent) {\n return choose((x) => predicate(x) ? some(x) : undefined, sourceEvent);\n}\nexport function map(mapping, sourceEvent) {\n const ev = new Event();\n add((t) => ev.Trigger(mapping(t)), sourceEvent);\n return ev.Publish;\n}\nexport function merge(event1, event2) {\n const ev = new Event();\n const fn = (x) => ev.Trigger(x);\n add(fn, event1);\n add(fn, event2);\n return ev.Publish;\n}\nexport function pairwise(sourceEvent) {\n const ev = new Event();\n let last;\n let haveLast = false;\n add((next) => {\n if (haveLast) {\n ev.Trigger([last, next]);\n }\n last = next;\n haveLast = true;\n }, sourceEvent);\n return ev.Publish;\n}\nexport function partition(predicate, sourceEvent) {\n return [filter(predicate, sourceEvent), filter((x) => !predicate(x), sourceEvent)];\n}\nexport function scan(collector, state, sourceEvent) {\n return map((t) => state = collector(state, t), sourceEvent);\n}\nexport function split(splitter, sourceEvent) {\n return [\n choose((v) => Choice_tryValueIfChoice1Of2(splitter(v)), sourceEvent),\n choose((v) => Choice_tryValueIfChoice2Of2(splitter(v)), sourceEvent),\n ];\n}\nexport function createEvent(addHandler, removeHandler) {\n return {\n AddHandler(h) { addHandler(h); },\n RemoveHandler(h) { removeHandler(h); },\n Subscribe(r) {\n const h = ((_, args) => r.OnNext(args));\n addHandler(h);\n return {\n Dispose() { removeHandler(h); }\n };\n }\n };\n}\n","import { Event } from \"./Event.js\";\nexport class Timer {\n constructor(interval) {\n this._enabled = false;\n this._isDisposed = false;\n this._intervalId = 0;\n this._timeoutId = 0;\n this.Interval = interval && interval > 0 ? interval : 100;\n this.AutoReset = true;\n this._elapsed = new Event();\n }\n Elapsed() {\n return this._elapsed.Publish;\n }\n get Enabled() {\n return this._enabled;\n }\n set Enabled(x) {\n if (!this._isDisposed && this._enabled !== x) {\n this._enabled = x;\n if (this._enabled) {\n if (this.AutoReset) {\n this._intervalId = setInterval(() => {\n if (!this.AutoReset) {\n this.Enabled = false;\n }\n this._elapsed.Trigger(new Date());\n }, this.Interval);\n }\n else {\n this._timeoutId = setTimeout(() => {\n this.Enabled = false;\n this._timeoutId = 0;\n if (this.AutoReset) {\n this.Enabled = true;\n }\n this._elapsed.Trigger(new Date());\n }, this.Interval);\n }\n }\n else {\n if (this._timeoutId) {\n clearTimeout(this._timeoutId);\n this._timeoutId = 0;\n }\n if (this._intervalId) {\n clearInterval(this._intervalId);\n this._intervalId = 0;\n }\n }\n }\n }\n Dispose() {\n this.Enabled = false;\n this._isDisposed = true;\n }\n Close() {\n this.Dispose();\n }\n Start() {\n this.Enabled = true;\n }\n Stop() {\n this.Enabled = false;\n }\n}\nexport default Timer;\n","import { Choice_tryValueIfChoice1Of2, Choice_tryValueIfChoice2Of2 } from \"./Choice.js\";\nimport { value } from \"./Option.js\";\nexport class Observer {\n constructor(onNext, onError, onCompleted) {\n this.OnNext = onNext;\n this.OnError = onError || ((_e) => { return; });\n this.OnCompleted = onCompleted || (() => { return; });\n }\n}\nclass Observable {\n constructor(subscribe) {\n this.Subscribe = subscribe;\n }\n}\nfunction protect(f, succeed, fail) {\n try {\n return succeed(f());\n }\n catch (e) {\n fail(e);\n }\n}\nexport function add(callback, source) {\n source.Subscribe(new Observer(callback));\n}\nexport function choose(chooser, source) {\n return new Observable((observer) => source.Subscribe(new Observer((t) => protect(() => chooser(t), (u) => { if (u != null) {\n observer.OnNext(value(u));\n } }, observer.OnError), observer.OnError, observer.OnCompleted)));\n}\nexport function filter(predicate, source) {\n return choose((x) => predicate(x) ? x : void 0, source);\n}\nexport function map(mapping, source) {\n return new Observable((observer) => source.Subscribe(new Observer((t) => {\n protect(() => mapping(t), observer.OnNext, observer.OnError);\n }, observer.OnError, observer.OnCompleted)));\n}\nexport function merge(source1, source2) {\n return new Observable((observer) => {\n let stopped = false;\n let completed1 = false;\n let completed2 = false;\n const h1 = source1.Subscribe(new Observer((v) => { if (!stopped) {\n observer.OnNext(v);\n } }, (e) => {\n if (!stopped) {\n stopped = true;\n observer.OnError(e);\n }\n }, () => {\n if (!stopped) {\n completed1 = true;\n if (completed2) {\n stopped = true;\n observer.OnCompleted();\n }\n }\n }));\n const h2 = source2.Subscribe(new Observer((v) => { if (!stopped) {\n observer.OnNext(v);\n } }, (e) => {\n if (!stopped) {\n stopped = true;\n observer.OnError(e);\n }\n }, () => {\n if (!stopped) {\n completed2 = true;\n if (completed1) {\n stopped = true;\n observer.OnCompleted();\n }\n }\n }));\n return {\n Dispose() {\n h1.Dispose();\n h2.Dispose();\n },\n };\n });\n}\nexport function pairwise(source) {\n return new Observable((observer) => {\n let last;\n return source.Subscribe(new Observer((next) => {\n if (last != null) {\n observer.OnNext([last, next]);\n }\n last = next;\n }, observer.OnError, observer.OnCompleted));\n });\n}\nexport function partition(predicate, source) {\n return [filter(predicate, source), filter((x) => !predicate(x), source)];\n}\nexport function scan(collector, state, source) {\n return new Observable((observer) => {\n return source.Subscribe(new Observer((t) => {\n protect(() => collector(state, t), (u) => { state = u; observer.OnNext(u); }, observer.OnError);\n }, observer.OnError, observer.OnCompleted));\n });\n}\nexport function split(splitter, source) {\n return [\n choose((v) => Choice_tryValueIfChoice1Of2(splitter(v)), source),\n choose((v) => Choice_tryValueIfChoice2Of2(splitter(v)), source)\n ];\n}\nexport function subscribe(callback, source) {\n return source.Subscribe(new Observer(callback));\n}\n","import { singleton, concat, map, empty, iterate } from \"../fable-library-js.4.24.0/List.js\";\nimport { singleton as singleton_1 } from \"../fable-library-js.4.24.0/AsyncBuilder.js\";\nimport { startImmediate, catchAsync } from \"../fable-library-js.4.24.0/Async.js\";\nimport { Timer_delay } from \"./prelude.fs.js\";\n\n/**\n * Execute the commands using the supplied dispatcher\n */\nexport function Cmd_exec(onError, dispatch, cmd) {\n iterate((call) => {\n try {\n call(dispatch);\n }\n catch (ex) {\n onError(ex);\n }\n }, cmd);\n}\n\n/**\n * None - no commands, also known as `[]`\n */\nexport function Cmd_none() {\n return empty();\n}\n\n/**\n * When emitting the message, map to another type\n */\nexport function Cmd_map(f, cmd) {\n return map((g) => ((arg_1) => {\n g((arg) => {\n arg_1(f(arg));\n });\n }), cmd);\n}\n\n/**\n * Aggregate multiple commands\n */\nexport function Cmd_batch(cmds) {\n return concat(cmds);\n}\n\n/**\n * Command to call the effect\n */\nexport function Cmd_ofEffect(effect) {\n return singleton(effect);\n}\n\n/**\n * Command to evaluate a simple function and map the result\n * into success or error (of exception)\n */\nexport function Cmd_OfFunc_either(task, arg, ofSuccess, ofError) {\n return singleton((dispatch) => {\n try {\n dispatch(ofSuccess(task(arg)));\n }\n catch (x) {\n dispatch(ofError(x));\n }\n });\n}\n\n/**\n * Command to evaluate a simple function and map the success to a message\n * discarding any possible error\n */\nexport function Cmd_OfFunc_perform(task, arg, ofSuccess) {\n return singleton((dispatch) => {\n try {\n dispatch(ofSuccess(task(arg)));\n }\n catch (x) {\n }\n });\n}\n\n/**\n * Command to evaluate a simple function and map the error (in case of exception)\n */\nexport function Cmd_OfFunc_attempt(task, arg, ofError) {\n return singleton((dispatch) => {\n try {\n task(arg);\n }\n catch (x) {\n dispatch(ofError(x));\n }\n });\n}\n\n/**\n * Command that will evaluate an async block and map the result\n * into success or error (of exception)\n */\nexport function Cmd_OfAsyncWith_either(start, task, arg, ofSuccess, ofError) {\n return singleton((arg_1) => {\n start(singleton_1.Delay(() => singleton_1.Bind(catchAsync(task(arg)), (_arg) => {\n const r = _arg;\n arg_1((r.tag === 1) ? ofError(r.fields[0]) : ofSuccess(r.fields[0]));\n return singleton_1.Zero();\n })));\n });\n}\n\n/**\n * Command that will evaluate an async block and map the success\n */\nexport function Cmd_OfAsyncWith_perform(start, task, arg, ofSuccess) {\n return singleton((arg_1) => {\n start(singleton_1.Delay(() => singleton_1.Bind(catchAsync(task(arg)), (_arg) => {\n const r = _arg;\n if (r.tag === 0) {\n arg_1(ofSuccess(r.fields[0]));\n return singleton_1.Zero();\n }\n else {\n return singleton_1.Zero();\n }\n })));\n });\n}\n\n/**\n * Command that will evaluate an async block and map the error (of exception)\n */\nexport function Cmd_OfAsyncWith_attempt(start, task, arg, ofError) {\n return singleton((arg_1) => {\n start(singleton_1.Delay(() => singleton_1.Bind(catchAsync(task(arg)), (_arg) => {\n const r = _arg;\n if (r.tag === 1) {\n arg_1(ofError(r.fields[0]));\n return singleton_1.Zero();\n }\n else {\n return singleton_1.Zero();\n }\n })));\n });\n}\n\nexport function Cmd_OfAsync_start(x) {\n Timer_delay(1, (_arg) => {\n startImmediate(x);\n });\n}\n\n/**\n * Command to call `promise` block and map the results\n */\nexport function Cmd_OfPromise_either(task, arg, ofSuccess, ofError) {\n return singleton((dispatch) => {\n task(arg).then((arg_3) => {\n dispatch(ofSuccess(arg_3));\n }).catch((arg_2) => {\n dispatch(ofError(arg_2));\n });\n });\n}\n\n/**\n * Command to call `promise` block and map the success\n */\nexport function Cmd_OfPromise_perform(task, arg, ofSuccess) {\n return singleton((dispatch) => {\n task(arg).then((arg_1) => dispatch(ofSuccess(arg_1)));\n });\n}\n\n/**\n * Command to call `promise` block and map the error\n */\nexport function Cmd_OfPromise_attempt(task, arg, ofError) {\n return singleton((dispatch) => {\n task(arg).catch((arg_2) => {\n dispatch(ofError(arg_2));\n });\n });\n}\n\n","import { some } from \"../fable-library-js.4.24.0/Option.js\";\nimport Timer from \"../fable-library-js.4.24.0/Timer.js\";\nimport { add } from \"../fable-library-js.4.24.0/Observable.js\";\n\nexport function Log_onError(text, ex) {\n console.error(some(text), ex);\n}\n\nexport function Log_toConsole(text, o) {\n console.log(some(text), o);\n}\n\nexport function Timer_delay(interval, callback) {\n let t;\n let returnVal = new Timer(interval);\n returnVal.AutoReset = false;\n t = returnVal;\n add(callback, t.Elapsed());\n t.Enabled = true;\n t.Start();\n}\n\n","export var NumberStyles;\n(function (NumberStyles) {\n // None = 0x00000000,\n // AllowLeadingWhite = 0x00000001,\n // AllowTrailingWhite = 0x00000002,\n // AllowLeadingSign = 0x00000004,\n // AllowTrailingSign = 0x00000008,\n // AllowParentheses = 0x00000010,\n // AllowDecimalPoint = 0x00000020,\n // AllowThousands = 0x00000040,\n // AllowExponent = 0x00000080,\n // AllowCurrencySymbol = 0x00000100,\n NumberStyles[NumberStyles[\"AllowHexSpecifier\"] = 512] = \"AllowHexSpecifier\";\n // Integer = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign,\n // HexNumber = AllowLeadingWhite | AllowTrailingWhite | AllowHexSpecifier,\n // Number = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign |\n // AllowTrailingSign | AllowDecimalPoint | AllowThousands,\n // Float = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign |\n // AllowDecimalPoint | AllowExponent,\n // Currency = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |\n // AllowParentheses | AllowDecimalPoint | AllowThousands | AllowCurrencySymbol,\n // Any = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |\n // AllowParentheses | AllowDecimalPoint | AllowThousands | AllowCurrencySymbol | AllowExponent,\n})(NumberStyles || (NumberStyles = {}));\nfunction validResponse(regexMatch, radix) {\n const [/*all*/ , sign, prefix, digits] = regexMatch;\n return {\n sign: sign || \"\",\n prefix: prefix || \"\",\n digits,\n radix,\n };\n}\nfunction getRange(unsigned, bitsize) {\n switch (bitsize) {\n case 8: return unsigned ? [0, 255] : [-128, 127];\n case 16: return unsigned ? [0, 65535] : [-32768, 32767];\n case 32: return unsigned ? [0, 4294967295] : [-2147483648, 2147483647];\n default: throw new Error(\"Invalid bit size.\");\n }\n}\nfunction getInvalidDigits(radix) {\n switch (radix) {\n case 2: return /[^0-1]/;\n case 8: return /[^0-7]/;\n case 10: return /[^0-9]/;\n case 16: return /[^0-9a-fA-F]/;\n default:\n throw new Error(\"Invalid Base.\");\n }\n}\nexport function getPrefix(radix) {\n switch (radix) {\n case 2: return \"0b\";\n case 8: return \"0o\";\n case 10: return \"\";\n case 16: return \"0x\";\n default: return \"\";\n }\n}\nexport function getRadix(prefix, style) {\n if (style & NumberStyles.AllowHexSpecifier) {\n return 16;\n }\n else {\n switch (prefix) {\n case \"0b\":\n case \"0B\": return 2;\n case \"0o\":\n case \"0O\": return 8;\n case \"0x\":\n case \"0X\": return 16;\n default: return 10;\n }\n }\n}\nexport function isValid(str, style, radix) {\n const integerRegex = /^\\s*([\\+\\-])?(0[xXoObB])?([0-9a-fA-F]+)\\s*$/;\n const res = integerRegex.exec(str.replace(/_/g, \"\"));\n if (res != null) {\n const [/*all*/ , /*sign*/ , prefix, digits] = res;\n radix = radix || getRadix(prefix, style);\n const invalidDigits = getInvalidDigits(radix);\n if (!invalidDigits.test(digits)) {\n return validResponse(res, radix);\n }\n }\n return null;\n}\nexport function parse(str, style, unsigned, bitsize, radix) {\n const res = isValid(str, style, radix);\n if (res != null) {\n let v = Number.parseInt(res.sign + res.digits, res.radix);\n if (!Number.isNaN(v)) {\n const [umin, umax] = getRange(true, bitsize);\n if (!unsigned && res.radix !== 10 && v >= umin && v <= umax) {\n v = v << (32 - bitsize) >> (32 - bitsize);\n }\n const [min, max] = getRange(unsigned, bitsize);\n if (v >= min && v <= max) {\n return v;\n }\n }\n }\n throw new Error(`The input string ${str} was not in a correct format.`);\n}\nexport function tryParse(str, style, unsigned, bitsize, defValue) {\n try {\n defValue.contents = parse(str, style, unsigned, bitsize);\n return true;\n }\n catch {\n return false;\n }\n}\nexport function op_UnaryNegation_Int8(x) {\n return x === -128 ? x : -x;\n}\nexport function op_UnaryNegation_Int16(x) {\n return x === -32768 ? x : -x;\n}\nexport function op_UnaryNegation_Int32(x) {\n return x === -2147483648 ? x : -x;\n}\nexport function divRem(x, y, out) {\n const div = ~~(x / y);\n const rem = x % y;\n if (out === void 0) {\n return [div, rem];\n }\n else {\n out.contents = rem;\n return div;\n }\n}\n","import { Exception, Record, Union } from \"../fable-library-js.4.24.0/Types.js\";\nimport { obj_type, class_type, lambda_type, option_type, int32_type, record_type, bool_type, list_type, tuple_type, array_type, uint8_type, string_type, union_type } from \"../fable-library-js.4.24.0/Reflection.js\";\n\nexport class HttpMethod extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"GET\", \"POST\"];\n }\n}\n\nexport function HttpMethod_$reflection() {\n return union_type(\"Fable.Remoting.Client.HttpMethod\", [], HttpMethod, () => [[], []]);\n}\n\nexport class RequestBody extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Empty\", \"Json\", \"Binary\"];\n }\n}\n\nexport function RequestBody_$reflection() {\n return union_type(\"Fable.Remoting.Client.RequestBody\", [], RequestBody, () => [[], [[\"Item\", string_type]], [[\"Item\", array_type(uint8_type)]]]);\n}\n\nexport class HttpRequest extends Record {\n constructor(HttpMethod, Url, Headers, RequestBody, WithCredentials) {\n super();\n this.HttpMethod = HttpMethod;\n this.Url = Url;\n this.Headers = Headers;\n this.RequestBody = RequestBody;\n this.WithCredentials = WithCredentials;\n }\n}\n\nexport function HttpRequest_$reflection() {\n return record_type(\"Fable.Remoting.Client.HttpRequest\", [], HttpRequest, () => [[\"HttpMethod\", HttpMethod_$reflection()], [\"Url\", string_type], [\"Headers\", list_type(tuple_type(string_type, string_type))], [\"RequestBody\", RequestBody_$reflection()], [\"WithCredentials\", bool_type]]);\n}\n\nexport class HttpResponse extends Record {\n constructor(StatusCode, ResponseBody) {\n super();\n this.StatusCode = (StatusCode | 0);\n this.ResponseBody = ResponseBody;\n }\n}\n\nexport function HttpResponse_$reflection() {\n return record_type(\"Fable.Remoting.Client.HttpResponse\", [], HttpResponse, () => [[\"StatusCode\", int32_type], [\"ResponseBody\", string_type]]);\n}\n\nexport class RemoteBuilderOptions extends Record {\n constructor(CustomHeaders, BaseUrl, Authorization, WithCredentials, RouteBuilder, CustomResponseSerialization) {\n super();\n this.CustomHeaders = CustomHeaders;\n this.BaseUrl = BaseUrl;\n this.Authorization = Authorization;\n this.WithCredentials = WithCredentials;\n this.RouteBuilder = RouteBuilder;\n this.CustomResponseSerialization = CustomResponseSerialization;\n }\n}\n\nexport function RemoteBuilderOptions_$reflection() {\n return record_type(\"Fable.Remoting.Client.RemoteBuilderOptions\", [], RemoteBuilderOptions, () => [[\"CustomHeaders\", list_type(tuple_type(string_type, string_type))], [\"BaseUrl\", option_type(string_type)], [\"Authorization\", option_type(string_type)], [\"WithCredentials\", bool_type], [\"RouteBuilder\", lambda_type(string_type, lambda_type(string_type, string_type))], [\"CustomResponseSerialization\", option_type(lambda_type(array_type(uint8_type), lambda_type(class_type(\"System.Type\"), obj_type)))]]);\n}\n\nexport class ProxyRequestException extends Exception {\n constructor(response, errorMsg, reponseText) {\n super(errorMsg);\n this.response = response;\n this.reponseText = reponseText;\n }\n}\n\nexport function ProxyRequestException_$reflection() {\n return class_type(\"Fable.Remoting.Client.ProxyRequestException\", undefined, ProxyRequestException, class_type(\"System.Exception\"));\n}\n\nexport function ProxyRequestException_$ctor_76BC5104(response, errorMsg, reponseText) {\n return new ProxyRequestException(response, errorMsg, reponseText);\n}\n\nexport function ProxyRequestException__get_Response(this$) {\n return this$.response;\n}\n\nexport function ProxyRequestException__get_StatusCode(this$) {\n return this$.response.StatusCode;\n}\n\nexport function ProxyRequestException__get_ResponseText(this$) {\n return this$.reponseText;\n}\n\n","import { Loader } from '@googlemaps/js-api-loader';\nimport { DateTime } from \"luxon\";\nimport React from 'react';\nimport {pl} from \"date-fns/locale\";\n\n// function dynamicallyLoadScript(url) {\n// var script = document.createElement(\"script\"); // create a script DOM node\n// script.src = url; // set its src to the provided URL\n// script.async = true;\n// script.type = 'text/javascript';\n// document.body.appendChild(script); // add it to the end of the head section of the page (could change 'head' to 'body' to add it to the end of the body section instead)\n// }\n\n// THIS IS A SPECIAL MAGIC VALUE, DO NOT TOUCH. IT WILL BE UPDATED AUTOMATICALLY BY RELEASE SCRIPT\nconst _releaseVersion = 'omnicv-20241221-320';\n// END OF MAGIC\n\nvar _configuration = undefined;\n\nexport function getConfigVariable(name) {\n if (name === \"RELEASE_VERSION\")\n return _releaseVersion;\n if (_configuration == undefined) {\n return \"\";\n }\n if (_configuration.has(name)) {\n return _configuration.get(name);\n }\n return \"\";\n}\n\nexport function updateConfiguration(configuration) {\n console.info(\"Received configuration\", configuration);\n _configuration = configuration;\n}\n\nexport function getReactVersion() {\n return React.version;\n}\n\nexport function getDayName(date, locale)\n{\n if (locale === \"\")\n locale = undefined;\n return date.toLocaleDateString(locale, { weekday: 'long' });\n}\n\nexport function getNow() {\n return new Date();\n}\n\n\nexport function loadGoogleMapsApi(key) {\n const loader = new Loader({\n apiKey: key,\n version: \"weekly\",\n libraries: [\"places\"]\n });\n\n // TODO fix deprecated API\n // https://github.com/googlemaps/js-api-loader/issues/837\n return loader.load();//importLibrary('places');\n}\n\nexport function registerPlacesAutoComplete(google, inputId, callback) {\n console.log(\"Registering element for Google map search: \" + inputId)\n var elem = document.getElementById(inputId);\n var places = new google.maps.places.Autocomplete(elem);\n // remove all previous events\n google.maps.event.clearInstanceListeners(places);\n\n var placesService = new google.maps.places.PlacesService(elem);\n\n // register new event\n places.addListener('place_changed', () => {\n var place = places.getPlace();\n if (!place.geometry || !place.place_id) {\n return;\n }\n callback(place);\n\n if (!place.utc_offset_minutes) {\n var request = new google.maps.places.PlaceDetailsRequest(place.place_id);\n placesService.getDetails( request, (result, status) => {\n if (result)\n callback(result);\n });\n }\n // var address = place.formatted_address;\n // var latitude = place.geometry.location.A;\n // var longitude = place.geometry.location.F;\n // var mesg = \"Address: \" + address;\n // mesg += \"\\nLatitude: \" + latitude;\n // mesg += \"\\nLongitude: \" + longitude;\n // alert(mesg);\n });\n\n\n\n elem.disabled = false;\n return places;\n}\n\nexport function getPosition(options) {\n return new Promise((resolve, reject) => {\n navigator.geolocation.getCurrentPosition(resolve, reject, options);\n });\n}\n\nexport function createCircle() {\n return new google.maps.Circle({});\n}\n\nconst currencyDisplayNames = new Intl.DisplayNames(undefined, { type: 'currency' });\n\nexport function formatCurrencyName(currency) {\n return currencyDisplayNames.of(currency);\n}\n\nexport function formatCurrencyValue(currency, value) {\n var formatter = new Intl.NumberFormat(undefined, {\n style: 'currency',\n currency: currency,\n\n // These options are needed to round to whole numbers if that's what you want.\n //minimumFractionDigits: 0, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)\n //maximumFractionDigits: 0, // (causes 2500.99 to be printed as $2,501)\n });\n return formatter.format(value);\n}\n\nconst numberFormatter = new Intl.NumberFormat(undefined, {\n maximumSignificantDigits: 2\n});\n\nexport function formatNumericValue(value) {\n return numberFormatter.format(value);\n}\n\nexport function getTimezoneName() {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n}\n\nexport function getTimezoneOffset() {\n var res = new Date().getTimezoneOffset();\n return -res;\n}\n\nfunction _dateToTz(date, tz) {\n return DateTime.fromJSDate(date).setZone(tz);\n}\n\nexport function dateToLuxonTz(date, tz) {\n return _dateToTz(date, tz);\n}\n\nexport function dateToTz(date, tz) {\n return _dateToTz(date, tz).toJSDate();\n}\n\nexport function dateToLuxonUtcOffset(date, utcOffsetMins) {\n var hours = Math.abs(utcOffsetMins) / 60;\n var minutes = Math.abs(utcOffsetMins) - (hours * 60);\n var zone = \"UTC\";\n if (utcOffsetMins > 0)\n zone += \"+\";\n else\n zone += \"-\";\n zone += hours.toString();\n if (minutes > 0)\n zone += \":\" + minutes.toString();\n return dateToLuxonTz(date, zone);\n}\n\nexport function createAudio(path) {\n return new Audio(path);\n}\n\n// export function latLongToLongInt(lat, long)\n// {\n// var buff = new ArrayBuffer(8);\n// var result = new BigInt64Array(buff);\n// var values = new Float32Array(buff);\n// values[0] = lat;\n// values[1] = long;\n// return BigInt(result[0]);\n// }\n\n\n// export function longIntToLatLong(value)\n// {\n// var buff = new ArrayBuffer(8);\n// var input = new BigInt64Array(buff);\n// input[0] = value;\n// var values = new Float32Array(buff);\n// var lat = values[0];\n// var long = values[1];\n// return [lat, long];\n// }\n","import { replace, format, substring, isNullOrEmpty, join } from \"./String.js\";\nimport { class_type } from \"./Reflection.js\";\nimport { clear, int32ToString } from \"./Util.js\";\nimport { toString } from \"./Types.js\";\nexport class StringBuilder {\n constructor(value, capacity) {\n this.buf = [];\n if (!isNullOrEmpty(value)) {\n void (this.buf.push(value));\n }\n }\n toString() {\n const _ = this;\n return join(\"\", _.buf);\n }\n}\nexport function StringBuilder_$reflection() {\n return class_type(\"System.Text.StringBuilder\", undefined, StringBuilder);\n}\nexport function StringBuilder_$ctor_Z18115A39(value, capacity) {\n return new StringBuilder(value, capacity);\n}\nexport function StringBuilder_$ctor_Z524259A4(capacity) {\n return StringBuilder_$ctor_Z18115A39(\"\", capacity);\n}\nexport function StringBuilder_$ctor_Z721C83C5(value) {\n return StringBuilder_$ctor_Z18115A39(value, 16);\n}\nexport function StringBuilder_$ctor() {\n return StringBuilder_$ctor_Z18115A39(\"\", 16);\n}\nexport function StringBuilder__Append_Z721C83C5(x, s) {\n void (x.buf.push(s));\n return x;\n}\nexport function StringBuilder__Append_487EF8FB(x, s, startIndex, count) {\n void (x.buf.push(substring(s, startIndex, count)));\n return x;\n}\nexport function StringBuilder__Append_244C7CD6(x, c) {\n void (x.buf.push(c));\n return x;\n}\nexport function StringBuilder__Append_Z524259A4(x, o) {\n void (x.buf.push(int32ToString(o)));\n return x;\n}\nexport function StringBuilder__Append_5E38073B(x, o) {\n void (x.buf.push(o.toString()));\n return x;\n}\nexport function StringBuilder__Append_Z1FBCCD16(x, o) {\n void (x.buf.push(toString(o)));\n return x;\n}\nexport function StringBuilder__Append_4E60E31B(x, o) {\n void (x.buf.push(toString(o)));\n return x;\n}\nexport function StringBuilder__Append_Z372E4D23(x, cs) {\n void (x.buf.push(cs.join('')));\n return x;\n}\nexport function StringBuilder__Append_43A65C09(x, s) {\n void (x.buf.push(toString(s)));\n return x;\n}\nexport function StringBuilder__AppendFormat_433E080(x, fmt, o) {\n void (x.buf.push(format(fmt, o)));\n return x;\n}\nexport function StringBuilder__AppendFormat_Z3B30EC65(x, fmt, o1, o2) {\n void (x.buf.push(format(fmt, o1, o2)));\n return x;\n}\nexport function StringBuilder__AppendFormat_10D165E0(x, fmt, o1, o2, o3) {\n void (x.buf.push(format(fmt, o1, o2, o3)));\n return x;\n}\nexport function StringBuilder__AppendFormat_Z17053F5(x, fmt, arr) {\n void (x.buf.push(format(fmt, ...arr)));\n return x;\n}\nexport function StringBuilder__AppendFormat_Z696D8D1B(x, provider, fmt, o) {\n void (x.buf.push(format(provider, fmt, o)));\n return x;\n}\nexport function StringBuilder__AppendFormat_26802C9E(x, provider, fmt, o1, o2) {\n void (x.buf.push(format(provider, fmt, o1, o2)));\n return x;\n}\nexport function StringBuilder__AppendFormat_Z471ADCBB(x, provider, fmt, o1, o2, o3) {\n void (x.buf.push(format(provider, fmt, o1, o2, o3)));\n return x;\n}\nexport function StringBuilder__AppendFormat_6C2E3E6E(x, provider, fmt, arr) {\n void (x.buf.push(format(provider, fmt, ...arr)));\n return x;\n}\nexport function StringBuilder__AppendLine(x) {\n void (x.buf.push(\"\\n\"));\n return x;\n}\nexport function StringBuilder__AppendLine_Z721C83C5(x, s) {\n void (x.buf.push(s));\n void (x.buf.push(\"\\n\"));\n return x;\n}\nexport function StringBuilder__Clear(x) {\n clear(x.buf);\n return x;\n}\nexport function StringBuilder__get_Chars_Z524259A4(x, index) {\n let len = 0;\n let i = -1;\n while (((i + 1) < x.buf.length) && (len < index)) {\n i = ((i + 1) | 0);\n len = ((len + x.buf[i].length) | 0);\n }\n if (((index < 0) ? true : (i < 0)) ? true : (i >= x.buf.length)) {\n throw new Error(\"Index was outside the bounds of the array\");\n }\n else {\n const pos = ((len - index) - 1) | 0;\n return x.buf[i][pos];\n }\n}\nexport function StringBuilder__set_Chars_413E0D0A(x, index, value) {\n let len = 0;\n let i = -1;\n while (((i + 1) < x.buf.length) && (len < index)) {\n i = ((i + 1) | 0);\n len = ((len + x.buf[i].length) | 0);\n }\n if (((index < 0) ? true : (i < 0)) ? true : (i >= x.buf.length)) {\n throw new Error(\"Index was outside the bounds of the array\");\n }\n else {\n const pos = ((len - index) - 1) | 0;\n x.buf[i] = ((x.buf[i].slice(0, (pos - 1) + 1) + value) + x.buf[i].slice(pos + 1, x.buf[i].length));\n }\n}\nexport function StringBuilder__Replace_Z766F94C0(x, oldValue, newValue) {\n for (let i = x.buf.length - 1; i >= 0; i--) {\n x.buf[i] = replace(x.buf[i], oldValue, newValue);\n }\n return x;\n}\nexport function StringBuilder__Replace_Z384F8060(x, oldValue, newValue) {\n const str = replace(toString(x), oldValue, newValue);\n return StringBuilder__Append_Z721C83C5(StringBuilder__Clear(x), str);\n}\nexport function StringBuilder__get_Length(x) {\n let len = 0;\n for (let i = x.buf.length - 1; i >= 0; i--) {\n len = ((len + x.buf[i].length) | 0);\n }\n return len | 0;\n}\nexport function StringBuilder__ToString_Z37302880(x, firstIndex, length) {\n return substring(toString(x), firstIndex, length);\n}\n","import { comparePrimitives, padLeftAndRightWithZeros, padWithZeros } from \"./Util.js\";\nimport { toInt64, fromFloat64 } from \"./BigInt.js\";\n/**\n * Calls:\n * - `Math.ceil` if the `value` is **negative**\n * - `Math.floor` if the `value` is **positive**\n * @param value Value to round\n */\nfunction signedRound(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n}\nexport function create(d = 0, h = 0, m = 0, s = 0, ms = 0) {\n switch (arguments.length) {\n case 1:\n // ticks\n return fromTicks(arguments[0]);\n case 3:\n // h,m,s\n d = 0, h = arguments[0], m = arguments[1], s = arguments[2], ms = 0;\n break;\n default:\n // d,h,m,s,ms\n break;\n }\n return d * 86400000 + h * 3600000 + m * 60000 + s * 1000 + ms;\n}\nexport function fromTicks(ticks) {\n return Number(BigInt(ticks) / 10000n);\n}\nexport function fromDays(d) {\n return create(d, 0, 0, 0);\n}\nexport function fromHours(h) {\n return create(h, 0, 0);\n}\nexport function fromMinutes(m) {\n return create(0, m, 0);\n}\nexport function fromSeconds(s) {\n return create(0, 0, s);\n}\nexport function days(ts) {\n return signedRound(ts / 86400000);\n}\nexport function hours(ts) {\n return signedRound(ts % 86400000 / 3600000);\n}\nexport function minutes(ts) {\n return signedRound(ts % 3600000 / 60000);\n}\nexport function seconds(ts) {\n return signedRound(ts % 60000 / 1000);\n}\nexport function milliseconds(ts) {\n return signedRound(ts % 1000);\n}\nexport function ticks(ts) {\n return toInt64(fromFloat64(ts * 10000));\n}\nexport function totalDays(ts) {\n return ts / 86400000;\n}\nexport function totalHours(ts) {\n return ts / 3600000;\n}\nexport function totalMinutes(ts) {\n return ts / 60000;\n}\nexport function totalSeconds(ts) {\n return ts / 1000;\n}\nexport function negate(ts) {\n return ts * -1;\n}\nexport function add(ts1, ts2) {\n return ts1 + ts2;\n}\nexport function subtract(ts1, ts2) {\n return ts1 - ts2;\n}\nexport function multiply(ts, factor) {\n return ts * factor;\n}\nexport function divide(ts, b) {\n return ts / b;\n}\nexport const op_Addition = add;\nexport const op_Subtraction = subtract;\nexport const op_Multiply = multiply;\nexport const op_Division = divide;\nexport const compare = comparePrimitives;\nexport const compareTo = comparePrimitives;\nexport function duration(x) {\n return Math.abs(x);\n}\nexport function toString(ts, format = \"c\", _provider) {\n if ([\"c\", \"g\", \"G\"].indexOf(format) === -1) {\n throw new Error(\"Custom formats are not supported\");\n }\n const d = Math.abs(days(ts));\n const h = Math.abs(hours(ts));\n const m = Math.abs(minutes(ts));\n const s = Math.abs(seconds(ts));\n const ms = Math.abs(milliseconds(ts));\n const sign = ts < 0 ? \"-\" : \"\";\n return `${sign}${d === 0 && (format === \"c\" || format === \"g\") ? \"\" : format === \"c\" ? d + \".\" : d + \":\"}${format === \"g\" ? h : padWithZeros(h, 2)}:${padWithZeros(m, 2)}:${padWithZeros(s, 2)}${ms === 0 && (format === \"c\" || format === \"g\") ? \"\" : format === \"g\" ? \".\" + padWithZeros(ms, 3) : \".\" + padLeftAndRightWithZeros(ms, 3, 7)}`;\n}\nexport function parse(str) {\n const firstDot = str.search(\"\\\\.\");\n const firstColon = str.search(\"\\\\:\");\n if (firstDot === -1 && firstColon === -1) { // There is only a day ex: 4\n const d = parseInt(str, 0);\n if (isNaN(d)) {\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n }\n else {\n return create(d, 0, 0, 0, 0);\n }\n }\n if (firstColon > 0) { // process time part\n // WIP: (-?)(((\\d+)\\.)?([0-9]|0[0-9]|1[0-9]|2[0-3]):(\\d+)(:\\d+(\\.\\d{1,7})?)?|\\d+(?:(?!\\.)))\n const r = /^(-?)((\\d+)\\.)?(?:0*)([0-9]|0[0-9]|1[0-9]|2[0-3]):(?:0*)([0-5][0-9]|[0-9])(:(?:0*)([0-5][0-9]|[0-9]))?\\.?(\\d+)?$/.exec(str);\n if (r != null && r[4] != null && r[5] != null) {\n let d = 0;\n let ms = 0;\n let s = 0;\n const sign = r[1] != null && r[1] === \"-\" ? -1 : 1;\n const h = +r[4];\n const m = +r[5];\n if (r[3] != null) {\n d = +r[3];\n }\n if (r[7] != null) {\n s = +r[7];\n }\n if (r[8] != null) {\n // Depending on the number of decimals passed, we need to adapt the numbers\n switch (r[8].length) {\n case 1:\n ms = +r[8] * 100;\n break;\n case 2:\n ms = +r[8] * 10;\n break;\n case 3:\n ms = +r[8];\n break;\n case 4:\n ms = +r[8] / 10;\n break;\n case 5:\n ms = +r[8] / 100;\n break;\n case 6:\n ms = +r[8] / 1000;\n break;\n case 7:\n ms = +r[8] / 10000;\n break;\n default:\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n }\n }\n return sign * create(d, h, m, s, ms);\n }\n }\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n}\nexport function tryParse(v, defValue) {\n try {\n defValue.contents = parse(v);\n return true;\n }\n catch {\n return false;\n }\n}\n","import { toString, Record, Union } from \"../fable-library-js.4.24.0/Types.js\";\nimport { array_type, float64_type, int32_type, bool_type, obj_type, record_type, option_type, lambda_type, unit_type, class_type, union_type, string_type } from \"../fable-library-js.4.24.0/Reflection.js\";\n\nexport class FragmentProp extends Union {\n constructor(Item) {\n super();\n this.tag = 0;\n this.fields = [Item];\n }\n cases() {\n return [\"Key\"];\n }\n}\n\nexport function FragmentProp_$reflection() {\n return union_type(\"Fable.React.Props.FragmentProp\", [], FragmentProp, () => [[[\"Item\", string_type]]]);\n}\n\nexport class Prop extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Key\", \"Ref\", \"ref\", \"ref\"];\n }\n}\n\nexport function Prop_$reflection() {\n return union_type(\"Fable.React.Props.Prop\", [], Prop, () => [[[\"Item\", string_type]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Element\", undefined), unit_type)]], [[\"Item\", class_type(\"Fable.React.IRefValue`1\", [option_type(class_type(\"Browser.Types.Element\", undefined))])]], [[\"Item\", class_type(\"Fable.React.IRefValue`1\", [option_type(class_type(\"Browser.Types.Element\", undefined))])]]]);\n}\n\nexport class DangerousHtml extends Record {\n constructor(__html) {\n super();\n this.__html = __html;\n }\n}\n\nexport function DangerousHtml_$reflection() {\n return record_type(\"Fable.React.Props.DangerousHtml\", [], DangerousHtml, () => [[\"__html\", string_type]]);\n}\n\nexport class DOMAttr extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"DangerouslySetInnerHTML\", \"OnCut\", \"OnPaste\", \"OnCompositionEnd\", \"OnCompositionStart\", \"OnCopy\", \"OnCompositionUpdate\", \"OnFocus\", \"OnBlur\", \"OnChange\", \"OnInput\", \"OnSubmit\", \"OnReset\", \"OnLoad\", \"OnError\", \"OnKeyDown\", \"OnKeyPress\", \"OnKeyUp\", \"OnAbort\", \"OnCanPlay\", \"OnCanPlayThrough\", \"OnDurationChange\", \"OnEmptied\", \"OnEncrypted\", \"OnEnded\", \"OnLoadedData\", \"OnLoadedMetadata\", \"OnLoadStart\", \"OnPause\", \"OnPlay\", \"OnPlaying\", \"OnProgress\", \"OnRateChange\", \"OnSeeked\", \"OnSeeking\", \"OnStalled\", \"OnSuspend\", \"OnTimeUpdate\", \"OnVolumeChange\", \"OnWaiting\", \"OnClick\", \"OnContextMenu\", \"OnDoubleClick\", \"OnDrag\", \"OnDragEnd\", \"OnDragEnter\", \"OnDragExit\", \"OnDragLeave\", \"OnDragOver\", \"OnDragStart\", \"OnDrop\", \"OnMouseDown\", \"OnMouseEnter\", \"OnMouseLeave\", \"OnMouseMove\", \"OnMouseOut\", \"OnMouseOver\", \"OnMouseUp\", \"OnSelect\", \"OnTouchCancel\", \"OnTouchEnd\", \"OnTouchMove\", \"OnTouchStart\", \"OnScroll\", \"OnWheel\", \"OnAnimationStart\", \"OnAnimationEnd\", \"OnAnimationIteration\", \"OnTransitionEnd\", \"OnPointerDown\", \"OnPointerMove\", \"OnPointerUp\", \"OnPointerCancel\", \"OnPointerEnter\", \"OnPointerLeave\", \"OnPointerOver\", \"OnPointerOut\", \"OnGotPointerCapture\", \"OnLostPointerCapture\", \"Custom\"];\n }\n}\n\nexport function DOMAttr_$reflection() {\n return union_type(\"Fable.React.Props.DOMAttr\", [], DOMAttr, () => [[[\"Item\", DangerousHtml_$reflection()]], [[\"Item\", lambda_type(class_type(\"Browser.Types.ClipboardEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.ClipboardEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.CompositionEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.CompositionEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.ClipboardEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.CompositionEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.FocusEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.FocusEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.KeyboardEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.KeyboardEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.KeyboardEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.MouseEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.MouseEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.MouseEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.DragEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.DragEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.DragEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.DragEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.DragEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.DragEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.DragEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.DragEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.MouseEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.MouseEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.MouseEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.MouseEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.MouseEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.MouseEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.MouseEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.TouchEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.TouchEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.TouchEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.TouchEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.UIEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.WheelEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.AnimationEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.AnimationEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.AnimationEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.TransitionEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.PointerEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.PointerEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.PointerEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.PointerEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.PointerEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.PointerEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.PointerEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.PointerEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.PointerEvent\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.PointerEvent\", undefined), unit_type)]], [[\"Item1\", string_type], [\"Item2\", obj_type]]]);\n}\n\nexport class SVGAttr extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"ClipPath\", \"Cx\", \"Cy\", \"D\", \"Dx\", \"Dy\", \"Fill\", \"FillOpacity\", \"FontFamily\", \"FontSize\", \"Fx\", \"Fy\", \"GradientTransform\", \"GradientUnits\", \"Height\", \"MarkerEnd\", \"MarkerMid\", \"MarkerStart\", \"Offset\", \"Opacity\", \"PatternContentUnits\", \"PatternUnits\", \"Points\", \"PreserveAspectRatio\", \"R\", \"Rx\", \"Ry\", \"SpreadMethod\", \"StopColor\", \"StopOpacity\", \"Stroke\", \"StrokeDasharray\", \"StrokeDashoffset\", \"StrokeLinecap\", \"StrokeMiterlimit\", \"StrokeOpacity\", \"StrokeWidth\", \"TextAnchor\", \"Transform\", \"Version\", \"ViewBox\", \"Width\", \"X1\", \"X2\", \"X\", \"XlinkActuate\", \"XlinkArcrole\", \"XlinkHref\", \"XlinkRole\", \"XlinkShow\", \"XlinkTitle\", \"XlinkType\", \"XmlBase\", \"XmlLang\", \"XmlSpace\", \"Y1\", \"Y2\", \"Y\", \"Custom\"];\n }\n}\n\nexport function SVGAttr_$reflection() {\n return union_type(\"Fable.React.Props.SVGAttr\", [], SVGAttr, () => [[[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item1\", string_type], [\"Item2\", obj_type]]]);\n}\n\nexport class HTMLAttr extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"DefaultChecked\", \"DefaultValue\", \"Accept\", \"AcceptCharset\", \"AccessKey\", \"Action\", \"AllowFullScreen\", \"AllowTransparency\", \"Alt\", \"aria-atomic\", \"aria-busy\", \"aria-checked\", \"aria-colcount\", \"aria-colindex\", \"aria-colspan\", \"aria-controls\", \"aria-current\", \"aria-describedby\", \"aria-details\", \"aria-disabled\", \"aria-errormessage\", \"aria-expanded\", \"aria-flowto\", \"aria-haspopup\", \"aria-hidden\", \"aria-invalid\", \"aria-keyshortcuts\", \"aria-label\", \"aria-labelledby\", \"aria-level\", \"aria-live\", \"aria-modal\", \"aria-multiline\", \"aria-multiselectable\", \"aria-orientation\", \"aria-owns\", \"aria-placeholder\", \"aria-posinset\", \"aria-pressed\", \"aria-readonly\", \"aria-relevant\", \"aria-required\", \"aria-roledescription\", \"aria-rowcount\", \"aria-rowindex\", \"aria-rowspan\", \"aria-selected\", \"aria-setsize\", \"aria-sort\", \"aria-valuemax\", \"aria-valuemin\", \"aria-valuenow\", \"aria-valuetext\", \"Async\", \"AutoComplete\", \"AutoFocus\", \"AutoPlay\", \"Capture\", \"CellPadding\", \"CellSpacing\", \"CharSet\", \"Challenge\", \"Checked\", \"ClassID\", \"ClassName\", \"className\", \"Cols\", \"ColSpan\", \"Content\", \"ContentEditable\", \"ContextMenu\", \"Controls\", \"Coords\", \"CrossOrigin\", \"data-toggle\", \"DateTime\", \"Default\", \"Defer\", \"Dir\", \"Disabled\", \"Download\", \"Draggable\", \"EncType\", \"Form\", \"FormAction\", \"FormEncType\", \"FormMethod\", \"FormNoValidate\", \"FormTarget\", \"FrameBorder\", \"Headers\", \"Height\", \"Hidden\", \"High\", \"Href\", \"HrefLang\", \"HtmlFor\", \"HttpEquiv\", \"Icon\", \"Id\", \"InputMode\", \"Integrity\", \"Is\", \"KeyParams\", \"KeyType\", \"Kind\", \"Label\", \"Lang\", \"List\", \"Loop\", \"Low\", \"Manifest\", \"MarginHeight\", \"MarginWidth\", \"Max\", \"MaxLength\", \"Media\", \"MediaGroup\", \"Method\", \"Min\", \"MinLength\", \"Multiple\", \"Muted\", \"Name\", \"NoValidate\", \"Open\", \"Optimum\", \"Pattern\", \"Placeholder\", \"Poster\", \"Preload\", \"RadioGroup\", \"ReadOnly\", \"Rel\", \"Required\", \"Role\", \"Rows\", \"RowSpan\", \"Sandbox\", \"Scope\", \"Scoped\", \"Scrolling\", \"Seamless\", \"Selected\", \"Shape\", \"Size\", \"Sizes\", \"Span\", \"SpellCheck\", \"Src\", \"SrcDoc\", \"SrcLang\", \"SrcSet\", \"Start\", \"Step\", \"Summary\", \"TabIndex\", \"Target\", \"Title\", \"Type\", \"UseMap\", \"Value\", \"value\", \"Width\", \"Wmode\", \"Wrap\", \"About\", \"Datatype\", \"Inlist\", \"Prefix\", \"Property\", \"Resource\", \"Typeof\", \"Vocab\", \"AutoCapitalize\", \"AutoCorrect\", \"AutoSave\", \"ItemProp\", \"ItemScope\", \"ItemType\", \"ItemID\", \"ItemRef\", \"Results\", \"Security\", \"Unselectable\", \"Custom\"];\n }\n}\n\nexport function HTMLAttr_$reflection() {\n return union_type(\"Fable.React.Props.HTMLAttr\", [], HTMLAttr, () => [[[\"Item\", bool_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", int32_type]], [[\"Item\", int32_type]], [[\"Item\", int32_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", int32_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", int32_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", int32_type]], [[\"Item\", int32_type]], [[\"Item\", int32_type]], [[\"Item\", bool_type]], [[\"Item\", int32_type]], [[\"Item\", string_type]], [[\"Item\", float64_type]], [[\"Item\", float64_type]], [[\"Item\", float64_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", int32_type]], [[\"Item\", int32_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", obj_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", bool_type]], [[\"Item\", float64_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", float64_type]], [[\"Item\", string_type]], [[\"Item\", float64_type]], [[\"Item\", float64_type]], [[\"Item\", obj_type]], [[\"Item\", float64_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", float64_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", float64_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", int32_type]], [[\"Item\", int32_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", float64_type]], [[\"Item\", string_type]], [[\"Item\", float64_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", float64_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", int32_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", array_type(string_type)]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", float64_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item1\", string_type], [\"Item2\", obj_type]]]);\n}\n\nexport class CSSProp extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"AlignContent\", \"AlignItems\", \"AlignSelf\", \"AlignmentAdjust\", \"AlignmentBaseline\", \"All\", \"Animation\", \"AnimationDelay\", \"AnimationDirection\", \"AnimationDuration\", \"AnimationFillMode\", \"AnimationIterationCount\", \"AnimationName\", \"AnimationPlayState\", \"AnimationTimingFunction\", \"Appearance\", \"BackfaceVisibility\", \"Background\", \"BackgroundAttachment\", \"BackgroundBlendMode\", \"BackgroundClip\", \"BackgroundColor\", \"BackgroundComposite\", \"BackgroundImage\", \"BackgroundOrigin\", \"BackgroundPosition\", \"BackgroundPositionX\", \"BackgroundPositionY\", \"BackgroundRepeat\", \"BackgroundSize\", \"BaselineShift\", \"Behavior\", \"BlockSize\", \"Border\", \"BorderBlockEnd\", \"BorderBlockEndColor\", \"BorderBlockEndStyle\", \"BorderBlockEndWidth\", \"BorderBlockStart\", \"BorderBlockStartColor\", \"BorderBlockStartStyle\", \"BorderBlockStartWidth\", \"BorderBottom\", \"BorderBottomColor\", \"BorderBottomLeftRadius\", \"BorderBottomRightRadius\", \"BorderBottomStyle\", \"BorderBottomWidth\", \"BorderCollapse\", \"BorderColor\", \"BorderCornerShape\", \"BorderImage\", \"BorderImageOutset\", \"BorderImageRepeat\", \"BorderImageSlice\", \"BorderImageSource\", \"BorderImageWidth\", \"BorderInlineEnd\", \"BorderInlineEndColor\", \"BorderInlineEndStyle\", \"BorderInlineEndWidth\", \"BorderInlineStart\", \"BorderInlineStartColor\", \"BorderInlineStartStyle\", \"BorderInlineStartWidth\", \"BorderLeft\", \"BorderLeftColor\", \"BorderLeftStyle\", \"BorderLeftWidth\", \"BorderRadius\", \"BorderRight\", \"BorderRightColor\", \"BorderRightStyle\", \"BorderRightWidth\", \"BorderSpacing\", \"BorderStyle\", \"BorderTop\", \"BorderTopColor\", \"BorderTopLeftRadius\", \"BorderTopRightRadius\", \"BorderTopStyle\", \"BorderTopWidth\", \"BorderWidth\", \"Bottom\", \"BoxAlign\", \"BoxDecorationBreak\", \"BoxDirection\", \"BoxFlex\", \"BoxFlexGroup\", \"BoxLineProgression\", \"BoxLines\", \"BoxOrdinalGroup\", \"BoxShadow\", \"BoxSizing\", \"BreakAfter\", \"BreakBefore\", \"BreakInside\", \"CaptionSide\", \"CaretColor\", \"Clear\", \"Clip\", \"ClipPath\", \"ClipRule\", \"Color\", \"ColorInterpolation\", \"ColorInterpolationFilters\", \"ColorProfile\", \"ColorRendering\", \"ColumnCount\", \"ColumnFill\", \"ColumnGap\", \"ColumnRule\", \"ColumnRuleColor\", \"ColumnRuleStyle\", \"ColumnRuleWidth\", \"ColumnSpan\", \"ColumnWidth\", \"Columns\", \"Content\", \"CounterIncrement\", \"CounterReset\", \"Cue\", \"CueAfter\", \"Cursor\", \"Direction\", \"Display\", \"DominantBaseline\", \"EmptyCells\", \"EnableBackground\", \"Fill\", \"FillOpacity\", \"FillRule\", \"Filter\", \"Flex\", \"FlexAlign\", \"FlexBasis\", \"FlexDirection\", \"FlexFlow\", \"FlexGrow\", \"FlexItemAlign\", \"FlexLinePack\", \"FlexOrder\", \"FlexShrink\", \"FlexWrap\", \"Float\", \"FloodColor\", \"FloodOpacity\", \"FlowFrom\", \"Font\", \"FontFamily\", \"FontFeatureSettings\", \"FontKerning\", \"FontLanguageOverride\", \"FontSize\", \"FontSizeAdjust\", \"FontStretch\", \"FontStyle\", \"FontSynthesis\", \"FontVariant\", \"FontVariantAlternates\", \"FontVariantCaps\", \"FontVariantEastAsian\", \"FontVariantLigatures\", \"FontVariantNumeric\", \"FontVariantPosition\", \"FontWeight\", \"GlyphOrientationHorizontal\", \"GlyphOrientationVertical\", \"Grid\", \"GridArea\", \"GridAutoColumns\", \"GridAutoFlow\", \"GridAutoRows\", \"GridColumn\", \"GridColumnEnd\", \"GridColumnGap\", \"GridColumnStart\", \"GridGap\", \"GridRow\", \"GridRowEnd\", \"GridRowGap\", \"GridRowPosition\", \"GridRowSpan\", \"GridRowStart\", \"GridTemplate\", \"GridTemplateAreas\", \"GridTemplateColumns\", \"GridTemplateRows\", \"HangingPunctuation\", \"Height\", \"HyphenateLimitChars\", \"HyphenateLimitLines\", \"HyphenateLimitZone\", \"Hyphens\", \"ImageOrientation\", \"ImageRendering\", \"ImageResolution\", \"ImeMode\", \"InlineSize\", \"Isolation\", \"JustifyContent\", \"JustifySelf\", \"Kerning\", \"LayoutGrid\", \"LayoutGridChar\", \"LayoutGridLine\", \"LayoutGridMode\", \"LayoutGridType\", \"Left\", \"LetterSpacing\", \"LightingColor\", \"LineBreak\", \"LineClamp\", \"LineHeight\", \"ListStyle\", \"ListStyleImage\", \"ListStylePosition\", \"ListStyleType\", \"Margin\", \"MarginBlockEnd\", \"MarginBlockStart\", \"MarginBottom\", \"MarginInlineEnd\", \"MarginInlineStart\", \"MarginLeft\", \"MarginRight\", \"MarginTop\", \"MarkerEnd\", \"MarkerMid\", \"MarkerStart\", \"MarqueeDirection\", \"MarqueeStyle\", \"Mask\", \"MaskBorder\", \"MaskBorderRepeat\", \"MaskBorderSlice\", \"MaskBorderSource\", \"MaskBorderWidth\", \"MaskClip\", \"MaskComposite\", \"MaskImage\", \"MaskMode\", \"MaskOrigin\", \"MaskPosition\", \"MaskRepeat\", \"MaskSize\", \"MaskType\", \"MaxFontSize\", \"MaxHeight\", \"MaxWidth\", \"MinBlockSize\", \"MinHeight\", \"MinInlineSize\", \"MinWidth\", \"MixBlendMode\", \"ObjectFit\", \"ObjectPosition\", \"OffsetBlockEnd\", \"OffsetBlockStart\", \"OffsetInlineEnd\", \"OffsetInlineStart\", \"Opacity\", \"Order\", \"Orphans\", \"Outline\", \"OutlineColor\", \"OutlineOffset\", \"OutlineStyle\", \"OutlineWidth\", \"OverflowStyle\", \"OverflowWrap\", \"OverflowX\", \"OverflowY\", \"Padding\", \"PaddingBlockEnd\", \"PaddingBlockStart\", \"PaddingBottom\", \"PaddingInlineEnd\", \"PaddingInlineStart\", \"PaddingLeft\", \"PaddingRight\", \"PaddingTop\", \"PageBreakAfter\", \"PageBreakBefore\", \"PageBreakInside\", \"Pause\", \"PauseAfter\", \"PauseBefore\", \"Perspective\", \"PerspectiveOrigin\", \"PointerEvents\", \"Position\", \"PunctuationTrim\", \"Quotes\", \"RegionFragment\", \"Resize\", \"RestAfter\", \"RestBefore\", \"Right\", \"RubyAlign\", \"RubyMerge\", \"RubyPosition\", \"ScrollBehavior\", \"ScrollSnapCoordinate\", \"ScrollSnapDestination\", \"ScrollSnapType\", \"ShapeImageThreshold\", \"ShapeInside\", \"ShapeMargin\", \"ShapeOutside\", \"ShapeRendering\", \"Speak\", \"SpeakAs\", \"StopColor\", \"StopOpacity\", \"Stroke\", \"StrokeDasharray\", \"StrokeDashoffset\", \"StrokeLinecap\", \"StrokeLinejoin\", \"StrokeMiterlimit\", \"StrokeOpacity\", \"StrokeWidth\", \"TabSize\", \"TableLayout\", \"TextAlign\", \"TextAlignLast\", \"TextAnchor\", \"TextCombineUpright\", \"TextDecoration\", \"TextDecorationColor\", \"TextDecorationLine\", \"TextDecorationLineThrough\", \"TextDecorationNone\", \"TextDecorationOverline\", \"TextDecorationSkip\", \"TextDecorationStyle\", \"TextDecorationUnderline\", \"TextEmphasis\", \"TextEmphasisColor\", \"TextEmphasisPosition\", \"TextEmphasisStyle\", \"TextHeight\", \"TextIndent\", \"TextJustify\", \"TextJustifyTrim\", \"TextKashidaSpace\", \"TextLineThrough\", \"TextLineThroughColor\", \"TextLineThroughMode\", \"TextLineThroughStyle\", \"TextLineThroughWidth\", \"TextOrientation\", \"TextOverflow\", \"TextOverline\", \"TextOverlineColor\", \"TextOverlineMode\", \"TextOverlineStyle\", \"TextOverlineWidth\", \"TextRendering\", \"TextScript\", \"TextShadow\", \"TextTransform\", \"TextUnderlinePosition\", \"TextUnderlineStyle\", \"Top\", \"TouchAction\", \"Transform\", \"TransformBox\", \"TransformOrigin\", \"TransformOriginZ\", \"TransformStyle\", \"Transition\", \"TransitionDelay\", \"TransitionDuration\", \"TransitionProperty\", \"TransitionTimingFunction\", \"UnicodeBidi\", \"UnicodeRange\", \"UserFocus\", \"UserInput\", \"UserSelect\", \"VerticalAlign\", \"Visibility\", \"VoiceBalance\", \"VoiceDuration\", \"VoiceFamily\", \"VoicePitch\", \"VoiceRange\", \"VoiceRate\", \"VoiceStress\", \"VoiceVolume\", \"WhiteSpace\", \"WhiteSpaceTreatment\", \"Widows\", \"Width\", \"WillChange\", \"WordBreak\", \"WordSpacing\", \"WordWrap\", \"WrapFlow\", \"WrapMargin\", \"WrapOption\", \"WritingMode\", \"ZIndex\", \"Zoom\", \"Custom\"];\n }\n}\n\nexport function CSSProp_$reflection() {\n return union_type(\"Fable.React.Props.CSSProp\", [], CSSProp, () => [[[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", string_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item\", obj_type]], [[\"Item1\", string_type], [\"Item2\", obj_type]]]);\n}\n\n/**\n * Helper to convert Fable StringEnum to string, compatible with .NET\n */\nexport function stringEnum(case$) {\n return toString(case$);\n}\n\nexport function CSSProp_Overflow_27AED5E3(overflow, overflowY) {\n if (overflowY == null) {\n return [\"overflow\", stringEnum(overflow)];\n }\n else {\n const value = overflowY;\n return [\"overflow\", (stringEnum(overflow) + \" \") + stringEnum(value)];\n }\n}\n\n","import { record_type, list_type, class_type, bool_type, string_type, union_type, getCaseTag, getCaseName } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { Record, toString, Union } from \"../fable-library-js.4.24.0/Types.js\";\nimport { stringHash, int32ToString } from \"../fable-library-js.4.24.0/Util.js\";\nimport { join, isNullOrEmpty, printf, toText } from \"../fable-library-js.4.24.0/String.js\";\nimport { defaultArg, some } from \"../fable-library-js.4.24.0/Option.js\";\nimport { isEmpty, filter, append, empty, ofArrayWithTail, contains, cons, fold } from \"../fable-library-js.4.24.0/List.js\";\nimport { HTMLAttr } from \"../Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../fable-library-js.4.24.0/MapUtil.js\";\n\nexport function Reflection_getCaseName(case$) {\n return getCaseName(case$);\n}\n\nexport function Reflection_getCaseTag(case$) {\n return getCaseTag(case$);\n}\n\nexport class Screen extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"All\", \"desktop\", \"tablet\", \"mobile\", \"widescreen\", \"touch\", \"fullhd\"];\n }\n}\n\nexport function Screen_$reflection() {\n return union_type(\"Fulma.Screen\", [], Screen, () => [[], [], [], [], [], [], []]);\n}\n\nexport function Screen_ToString_2D2414B4(screen) {\n switch (screen.tag) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n return \"-\" + Reflection_getCaseName(screen);\n default:\n return \"\";\n }\n}\n\nexport class Color_IColor extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-black\", \"is-dark\", \"is-light\", \"is-white\", \"is-primary\", \"is-info\", \"is-success\", \"is-warning\", \"is-danger\", \"is-link\", \"is-black-bis\", \"is-black-ter\", \"is-grey-darker\", \"is-grey-dark\", \"is-grey\", \"is-grey-light\", \"is-grey-lighter\", \"is-white-ter\", \"is-white-bis\", \"IsCustomColor\", \"NoColor\"];\n }\n}\n\nexport function Color_IColor_$reflection() {\n return union_type(\"Fulma.Color.IColor\", [], Color_IColor, () => [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [[\"Item\", string_type]], []]);\n}\n\nexport function Color_ofColor(level) {\n switch (level.tag) {\n case 19:\n return \"is-\" + level.fields[0];\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n case 16:\n case 17:\n case 18:\n return Reflection_getCaseName(level);\n default:\n return \"\";\n }\n}\n\nexport class Size_ISize extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-small\", \"is-medium\", \"is-large\"];\n }\n}\n\nexport function Size_ISize_$reflection() {\n return union_type(\"Fulma.Size.ISize\", [], Size_ISize, () => [[], [], []]);\n}\n\nexport class TextSize_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Is1\", \"Is2\", \"Is3\", \"Is4\", \"Is5\", \"Is6\", \"Is7\"];\n }\n}\n\nexport function TextSize_Option_$reflection() {\n return union_type(\"Fulma.TextSize.Option\", [], TextSize_Option, () => [[], [], [], [], [], [], []]);\n}\n\nexport function TextSize_Option_ToString_Z2E0B9453(x) {\n return int32ToString(Reflection_getCaseTag(x) + 1);\n}\n\nexport class TextAlignment_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"has-text-centered\", \"has-text-justified\", \"has-text-left\", \"has-text-right\"];\n }\n}\n\nexport function TextAlignment_Option_$reflection() {\n return union_type(\"Fulma.TextAlignment.Option\", [], TextAlignment_Option, () => [[], [], [], []]);\n}\n\nexport class FlexDirection_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-flex-direction-row\", \"is-flex-direction-row-reverse\", \"is-flex-direction-column\", \"is-flex-direction-column-reverse\"];\n }\n}\n\nexport function FlexDirection_Option_$reflection() {\n return union_type(\"Fulma.FlexDirection.Option\", [], FlexDirection_Option, () => [[], [], [], []]);\n}\n\nexport class FlexWrap_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-flex-wrap-nowrap\", \"is-flex-wrap-wrap\", \"is-flex-wrap-wrap-reverse\"];\n }\n}\n\nexport function FlexWrap_Option_$reflection() {\n return union_type(\"Fulma.FlexWrap.Option\", [], FlexWrap_Option, () => [[], [], []]);\n}\n\nexport class FlexJustifyContent_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-justify-content-flex-start\", \"is-justify-content-flex-end\", \"is-justify-content-center\", \"is-justify-content-space-between\", \"is-justify-content-space-around\", \"is-justify-content-space-evenly\", \"is-justify-content-start\", \"is-justify-content-end\", \"is-justify-content-left\", \"is-justify-content-right\"];\n }\n}\n\nexport function FlexJustifyContent_Option_$reflection() {\n return union_type(\"Fulma.FlexJustifyContent.Option\", [], FlexJustifyContent_Option, () => [[], [], [], [], [], [], [], [], [], []]);\n}\n\nexport class FlexAlignContent_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-align-content-flex-start\", \"is-align-content-flex-end\", \"is-align-content-center\", \"is-align-content-space-between\", \"is-align-content-space-around\", \"is-align-content-space-evenly\", \"is-align-content-stretch\", \"is-align-content-start\", \"is-align-content-end\", \"is-align-content-baseline\"];\n }\n}\n\nexport function FlexAlignContent_Option_$reflection() {\n return union_type(\"Fulma.FlexAlignContent.Option\", [], FlexAlignContent_Option, () => [[], [], [], [], [], [], [], [], [], []]);\n}\n\nexport class FlexAlignItems_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-align-items-stretch\", \"is-align-items-flex-start\", \"is-align-items-flex-end\", \"is-align-items-center\", \"is-align-items-baseline\", \"is-align-items-start\", \"is-align-items-end\", \"is-align-items-self-start\", \"is-align-items-self-end\"];\n }\n}\n\nexport function FlexAlignItems_Option_$reflection() {\n return union_type(\"Fulma.FlexAlignItems.Option\", [], FlexAlignItems_Option, () => [[], [], [], [], [], [], [], [], []]);\n}\n\nexport class FlexAlignSelf_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-align-self-auto\", \"is-align-self-flex-start\", \"is-align-self-flex-end\", \"is-align-self-center\", \"is-align-self-baseline\", \"is-align-self-stretch\"];\n }\n}\n\nexport function FlexAlignSelf_Option_$reflection() {\n return union_type(\"Fulma.FlexAlignSelf.Option\", [], FlexAlignSelf_Option, () => [[], [], [], [], [], []]);\n}\n\nexport class FlexGrow_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-flex-grow-0\", \"is-flex-grow-1\", \"is-flex-grow-2\", \"is-flex-grow-3\", \"is-flex-grow-4\", \"is-flex-grow-5\"];\n }\n}\n\nexport function FlexGrow_Option_$reflection() {\n return union_type(\"Fulma.FlexGrow.Option\", [], FlexGrow_Option, () => [[], [], [], [], [], []]);\n}\n\nexport class FlexShrink_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-flex-shrink-0\", \"is-flex-shrink-1\", \"is-flex-shrink-2\", \"is-flex-shrink-3\", \"is-flex-shrink-4\", \"is-flex-shrink-5\"];\n }\n}\n\nexport function FlexShrink_Option_$reflection() {\n return union_type(\"Fulma.FlexShrink.Option\", [], FlexShrink_Option, () => [[], [], [], [], [], []]);\n}\n\nexport class TextWeight_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"has-text-weight-light\", \"has-text-weight-normal\", \"has-text-weight-semibold\", \"has-text-weight-bold\", \"has-text-weight-medium\"];\n }\n}\n\nexport function TextWeight_Option_$reflection() {\n return union_type(\"Fulma.TextWeight.Option\", [], TextWeight_Option, () => [[], [], [], [], []]);\n}\n\nexport class TextTransform_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-capitalized\", \"is-lowercase\", \"is-uppercase\", \"is-italic\", \"is-underlined\"];\n }\n}\n\nexport function TextTransform_Option_$reflection() {\n return union_type(\"Fulma.TextTransform.Option\", [], TextTransform_Option, () => [[], [], [], [], []]);\n}\n\nexport class Display_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"block\", \"flex\", \"inline\", \"inline-block\", \"inline-flex\"];\n }\n}\n\nexport function Display_Option_$reflection() {\n return union_type(\"Fulma.Display.Option\", [], Display_Option, () => [[], [], [], [], []]);\n}\n\nexport function Display_toDisplayClass(screen, display) {\n return (\"is-\" + Reflection_getCaseName(display)) + Screen_ToString_2D2414B4(screen);\n}\n\nexport function Display_toDisplayOnlyClass(screen, display) {\n let arg;\n switch (screen.tag) {\n case 2:\n case 1:\n case 4:\n return ((\"is-\" + Reflection_getCaseName(display)) + Screen_ToString_2D2414B4(screen)) + \"-only\";\n default: {\n console.warn(some((arg = toString(screen), toText(printf(\"Screen `%s` does not support display only.\"))(arg))));\n return \"\";\n }\n }\n}\n\nexport class Spacing_TypeAndDirection extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"m\", \"mt\", \"mr\", \"mb\", \"ml\", \"my\", \"mx\", \"p\", \"pt\", \"pr\", \"pb\", \"pl\", \"py\", \"px\"];\n }\n}\n\nexport function Spacing_TypeAndDirection_$reflection() {\n return union_type(\"Fulma.Spacing.TypeAndDirection\", [], Spacing_TypeAndDirection, () => [[], [], [], [], [], [], [], [], [], [], [], [], [], []]);\n}\n\nexport class Spacing_Amount extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"auto\", \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\"];\n }\n}\n\nexport function Spacing_Amount_$reflection() {\n return union_type(\"Fulma.Spacing.Amount\", [], Spacing_Amount, () => [[], [], [], [], [], [], [], []]);\n}\n\nexport function Spacing_toSpacingClass(typ, amount) {\n return (Reflection_getCaseName(typ) + \"-\") + Reflection_getCaseName(amount);\n}\n\nexport function Modifier_ofBackground(level) {\n switch (level.tag) {\n case 19:\n return \"has-background-\" + level.fields[0];\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n case 16:\n case 17:\n case 18:\n return \"has-background-\" + Reflection_getCaseName(level).slice(3, Reflection_getCaseName(level).length);\n default:\n return \"\";\n }\n}\n\nexport function Modifier_ofText(level) {\n switch (level.tag) {\n case 19:\n return \"has-text-\" + level.fields[0];\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n case 16:\n case 17:\n case 18:\n return \"has-text-\" + Reflection_getCaseName(level).slice(3, Reflection_getCaseName(level).length);\n default:\n return \"\";\n }\n}\n\nexport function Modifier_ofInvisible(screen) {\n return \"is-invisible\" + Screen_ToString_2D2414B4(screen);\n}\n\nexport function Modifier_ofHidden(screen) {\n return \"is-hidden\" + Screen_ToString_2D2414B4(screen);\n}\n\nexport function Modifier_ofInvisibleOnly(screen) {\n let arg;\n switch (screen.tag) {\n case 2:\n case 1:\n case 4:\n return (\"is-invisible\" + Screen_ToString_2D2414B4(screen)) + \"-only\";\n default: {\n console.warn(some((arg = toString(screen), toText(printf(\"Screen `%s` does not support `is-invisible-xxx-only`.\"))(arg))));\n return \"\";\n }\n }\n}\n\nexport function Modifier_ofHiddenOnly(screen) {\n let arg;\n switch (screen.tag) {\n case 2:\n case 1:\n case 4:\n return (\"is-hidden\" + Screen_ToString_2D2414B4(screen)) + \"-only\";\n default: {\n console.warn(some((arg = toString(screen), toText(printf(\"Screen `%s` does not support `is-hidden-xxx-only`.\"))(arg))));\n return \"\";\n }\n }\n}\n\nexport class Modifier_IModifier extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"BackgroundColor\", \"TextColor\", \"TextWeight\", \"TextSize\", \"TextSizeOnly\", \"TextAlignment\", \"TextAlignmentOnly\", \"TextTransform\", \"Display\", \"DisplayOnly\", \"is-clearfix\", \"is-pulled-left\", \"is-pulled-right\", \"is-marginless\", \"is-paddingless\", \"is-overlay\", \"is-clipped\", \"is-radiusless\", \"is-shadowless\", \"is-unselectable\", \"is-clickable\", \"is-relative\", \"is-flex\", \"IsInvisible\", \"IsHidden\", \"IsInvisibleOnly\", \"IsHiddenOnly\", \"IsSrOnly\", \"IsScreenReaderOnly\", \"Spacing\", \"FlexDirection\", \"FlexWrap\", \"FlexJustifyContent\", \"FlexAlignContent\", \"FlexAlignItems\", \"FlexAlignSelf\", \"FlexGrow\", \"FlexShrink\"];\n }\n}\n\nexport function Modifier_IModifier_$reflection() {\n return union_type(\"Fulma.Modifier.IModifier\", [], Modifier_IModifier, () => [[[\"Item\", Color_IColor_$reflection()]], [[\"Item\", Color_IColor_$reflection()]], [[\"Item\", TextWeight_Option_$reflection()]], [[\"Item1\", Screen_$reflection()], [\"Item2\", TextSize_Option_$reflection()]], [[\"Item1\", Screen_$reflection()], [\"Item2\", TextSize_Option_$reflection()]], [[\"Item1\", Screen_$reflection()], [\"Item2\", TextAlignment_Option_$reflection()]], [[\"Item1\", Screen_$reflection()], [\"Item2\", TextAlignment_Option_$reflection()]], [[\"Item\", TextTransform_Option_$reflection()]], [[\"Item1\", Screen_$reflection()], [\"Item2\", Display_Option_$reflection()]], [[\"Item1\", Screen_$reflection()], [\"Item2\", Display_Option_$reflection()]], [], [], [], [], [], [], [], [], [], [], [], [], [], [[\"Item1\", Screen_$reflection()], [\"Item2\", bool_type]], [[\"Item1\", Screen_$reflection()], [\"Item2\", bool_type]], [[\"Item1\", Screen_$reflection()], [\"Item2\", bool_type]], [[\"Item1\", Screen_$reflection()], [\"Item2\", bool_type]], [], [], [[\"Item1\", Spacing_TypeAndDirection_$reflection()], [\"Item2\", Spacing_Amount_$reflection()]], [[\"Item\", FlexDirection_Option_$reflection()]], [[\"Item\", FlexWrap_Option_$reflection()]], [[\"Item\", FlexJustifyContent_Option_$reflection()]], [[\"Item\", FlexAlignContent_Option_$reflection()]], [[\"Item\", FlexAlignItems_Option_$reflection()]], [[\"Item\", FlexAlignSelf_Option_$reflection()]], [[\"Item\", FlexGrow_Option_$reflection()]], [[\"Item\", FlexShrink_Option_$reflection()]]]);\n}\n\nexport function Modifier_parseModifiers(options) {\n return fold((result, option) => {\n let screen_3, arg, screen_7, arg_1;\n switch (option.tag) {\n case 1:\n return cons(Modifier_ofText(option.fields[0]), result);\n case 2:\n return cons(Reflection_getCaseName(option.fields[0]), result);\n case 3:\n return cons((\"is-size-\" + TextSize_Option_ToString_Z2E0B9453(option.fields[1])) + Screen_ToString_2D2414B4(option.fields[0]), result);\n case 4:\n return cons((screen_3 = option.fields[0], (screen_3.tag === 2) ? (((\"is-size-\" + TextSize_Option_ToString_Z2E0B9453(option.fields[1])) + Screen_ToString_2D2414B4(screen_3)) + \"-only\") : ((screen_3.tag === 1) ? (((\"is-size-\" + TextSize_Option_ToString_Z2E0B9453(option.fields[1])) + Screen_ToString_2D2414B4(screen_3)) + \"-only\") : ((screen_3.tag === 4) ? (((\"is-size-\" + TextSize_Option_ToString_Z2E0B9453(option.fields[1])) + Screen_ToString_2D2414B4(screen_3)) + \"-only\") : ((console.warn(some((arg = toString(screen_3), toText(printf(\"Screen `%s` does not support `is-size-xxx-only`.\"))(arg)))), \"\"))))), result);\n case 5:\n return cons(Reflection_getCaseName(option.fields[1]) + Screen_ToString_2D2414B4(option.fields[0]), result);\n case 6:\n return cons((screen_7 = option.fields[0], (screen_7.tag === 2) ? ((Reflection_getCaseName(option.fields[1]) + Screen_ToString_2D2414B4(screen_7)) + \"-only\") : ((screen_7.tag === 1) ? ((Reflection_getCaseName(option.fields[1]) + Screen_ToString_2D2414B4(screen_7)) + \"-only\") : ((screen_7.tag === 4) ? ((Reflection_getCaseName(option.fields[1]) + Screen_ToString_2D2414B4(screen_7)) + \"-only\") : ((console.warn(some((arg_1 = toString(screen_7), toText(printf(\"Screen `%s` does not support `is-size-xxx-only`.\"))(arg_1)))), \"\"))))), result);\n case 7:\n return cons(Reflection_getCaseName(option.fields[0]), result);\n case 8:\n return cons(Display_toDisplayClass(option.fields[0], option.fields[1]), result);\n case 9:\n return cons(Display_toDisplayOnlyClass(option.fields[0], option.fields[1]), result);\n case 23:\n if (option.fields[1]) {\n return cons(Modifier_ofInvisible(option.fields[0]), result);\n }\n else {\n return result;\n }\n case 25:\n if (option.fields[1]) {\n return cons(Modifier_ofInvisibleOnly(option.fields[0]), result);\n }\n else {\n return result;\n }\n case 24:\n if (option.fields[1]) {\n return cons(Modifier_ofHidden(option.fields[0]), result);\n }\n else {\n return result;\n }\n case 26:\n if (option.fields[1]) {\n return cons(Modifier_ofHiddenOnly(option.fields[0]), result);\n }\n else {\n return result;\n }\n case 27:\n case 28:\n return cons(\"is-sr-only\", result);\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n case 16:\n case 17:\n case 18:\n case 20:\n case 19:\n case 22:\n case 21:\n return cons(Reflection_getCaseName(option), result);\n case 29:\n return cons(Spacing_toSpacingClass(option.fields[0], option.fields[1]), result);\n case 30: {\n const direction = option.fields[0];\n if (!contains(\"is-flex\", result, {\n Equals: (x_2, y) => (x_2 === y),\n GetHashCode: stringHash,\n })) {\n return ofArrayWithTail([\"is-flex\", Reflection_getCaseName(direction)], result);\n }\n else {\n return cons(Reflection_getCaseName(direction), result);\n }\n }\n case 31: {\n const option_1 = option.fields[0];\n if (!contains(\"is-flex\", result, {\n Equals: (x_3, y_1) => (x_3 === y_1),\n GetHashCode: stringHash,\n })) {\n return ofArrayWithTail([\"is-flex\", Reflection_getCaseName(option_1)], result);\n }\n else {\n return cons(Reflection_getCaseName(option_1), result);\n }\n }\n case 32: {\n const option_2 = option.fields[0];\n if (!contains(\"is-flex\", result, {\n Equals: (x_4, y_2) => (x_4 === y_2),\n GetHashCode: stringHash,\n })) {\n return ofArrayWithTail([\"is-flex\", Reflection_getCaseName(option_2)], result);\n }\n else {\n return cons(Reflection_getCaseName(option_2), result);\n }\n }\n case 33: {\n const option_3 = option.fields[0];\n if (!contains(\"is-flex\", result, {\n Equals: (x_5, y_3) => (x_5 === y_3),\n GetHashCode: stringHash,\n })) {\n return ofArrayWithTail([\"is-flex\", Reflection_getCaseName(option_3)], result);\n }\n else {\n return cons(Reflection_getCaseName(option_3), result);\n }\n }\n case 34: {\n const option_4 = option.fields[0];\n if (!contains(\"is-flex\", result, {\n Equals: (x_6, y_4) => (x_6 === y_4),\n GetHashCode: stringHash,\n })) {\n return ofArrayWithTail([\"is-flex\", Reflection_getCaseName(option_4)], result);\n }\n else {\n return cons(Reflection_getCaseName(option_4), result);\n }\n }\n case 35:\n return cons(Reflection_getCaseName(option.fields[0]), result);\n case 36:\n return cons(Reflection_getCaseName(option.fields[0]), result);\n case 37:\n return cons(Reflection_getCaseName(option.fields[0]), result);\n default:\n return cons(Modifier_ofBackground(option.fields[0]), result);\n }\n }, empty(), options);\n}\n\nexport class Common_GenericOption extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function Common_GenericOption_$reflection() {\n return union_type(\"Fulma.Common.GenericOption\", [], Common_GenericOption, () => [[[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\nexport class Common_GenericOptions extends Record {\n constructor(Props, Classes, RemovedClasses) {\n super();\n this.Props = Props;\n this.Classes = Classes;\n this.RemovedClasses = RemovedClasses;\n }\n}\n\nexport function Common_GenericOptions_$reflection() {\n return record_type(\"Fulma.Common.GenericOptions\", [], Common_GenericOptions, () => [[\"Props\", list_type(class_type(\"Fable.React.IHTMLProp\"))], [\"Classes\", list_type(string_type)], [\"RemovedClasses\", list_type(string_type)]]);\n}\n\nexport function Common_GenericOptions_get_Empty() {\n return new Common_GenericOptions(empty(), empty(), empty());\n}\n\nexport function Common_GenericOptions_Parse_Z4D1A7726(options, parser, baseClass, baseProps) {\n const result = fold(parser, Common_GenericOptions_get_Empty(), options);\n const result_1 = (baseClass == null) ? result : Common_GenericOptions__AddClass_Z721C83C5(result, baseClass);\n if (baseProps == null) {\n return result_1;\n }\n else {\n return Common_GenericOptions__AddProps_Z4E55E0BD(result_1, baseProps);\n }\n}\n\nexport function Common_GenericOptions__AddProp_ZCC5A61F(this$, prop) {\n return new Common_GenericOptions(cons(prop, this$.Props), this$.Classes, this$.RemovedClasses);\n}\n\nexport function Common_GenericOptions__AddProps_Z4E55E0BD(this$, props) {\n return new Common_GenericOptions(append(props, this$.Props), this$.Classes, this$.RemovedClasses);\n}\n\nexport function Common_GenericOptions__AddClass_Z721C83C5(this$, cl) {\n return new Common_GenericOptions(this$.Props, cons(cl, this$.Classes), this$.RemovedClasses);\n}\n\nexport function Common_GenericOptions__RemoveClass_Z721C83C5(this$, cl) {\n return new Common_GenericOptions(this$.Props, this$.Classes, cons(cl, this$.RemovedClasses));\n}\n\nexport function Common_GenericOptions__AddCaseName_1505(this$, case$) {\n return Common_GenericOptions__AddClass_Z721C83C5(this$, Reflection_getCaseName(case$));\n}\n\nexport function Common_GenericOptions__AddModifiers_Z7C3AFA3(this$, modifiers) {\n return new Common_GenericOptions(this$.Props, append(Modifier_parseModifiers(modifiers), this$.Classes), this$.RemovedClasses);\n}\n\nexport function Common_GenericOptions__ToAttributes(this$) {\n const matchValue = filter((cls) => {\n if (!isNullOrEmpty(cls)) {\n return !contains(cls, this$.RemovedClasses, {\n Equals: (x, y) => (x === y),\n GetHashCode: stringHash,\n });\n }\n else {\n return false;\n }\n }, this$.Classes);\n if (isEmpty(matchValue)) {\n return this$.Props;\n }\n else {\n return cons(new HTMLAttr(64, [join(\" \", matchValue)]), this$.Props);\n }\n}\n\n/**\n * Convert to standard element\n */\nexport function Common_GenericOptions__ToReactElement_4509C2D7(this$, el, children) {\n const children_1 = defaultArg(children, empty());\n return el(Common_GenericOptions__ToAttributes(this$), children_1);\n}\n\n/**\n * Convert to self closing element\n */\nexport function Common_GenericOptions__ToReactElement_Z2B8EEFE(this$, el) {\n return el(Common_GenericOptions__ToAttributes(this$));\n}\n\nexport function Common_parseOptions(result, option) {\n switch (option.tag) {\n case 0:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 2:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n }\n}\n\nexport function Common_Helpers_classes(std, options, booleans) {\n return new HTMLAttr(64, [fold((complete_1, tupledArg) => {\n if (tupledArg[1]) {\n return (complete_1 + \" \") + tupledArg[0];\n }\n else {\n return complete_1;\n }\n }, fold((complete, option) => {\n if (option == null) {\n return complete;\n }\n else {\n return (complete + \" \") + option;\n }\n }, std, options), booleans)]);\n}\n\nexport function Text_p(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions), (props, children_1) => react.createElement(\"p\", keyValueList(props, 1), ...children_1), children);\n}\n\nexport function Text_div(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\nexport function Text_span(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions), (props, children_1) => react.createElement(\"span\", keyValueList(props, 1), ...children_1), children);\n}\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { lambda_type, unit_type, union_type, string_type, bool_type, list_type, class_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport { Common_parseOptions, Common_GenericOptions__AddProp_ZCC5A61F, Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Size_ISize_$reflection, Modifier_IModifier_$reflection } from \"../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\nimport { some } from \"../../fable-library-js.4.24.0/Option.js\";\nimport { Reflection_getCaseName } from \"../Common.fs.js\";\nimport { DOMAttr } from \"../../Fable.React.9.4.0/Fable.React.Props.fs.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Props\", \"is-active\", \"CustomClass\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Modal.Option\", [], Option, () => [[[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\nexport class Close_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Size\", \"OnClick\", \"Props\", \"CustomClass\", \"Modifiers\"];\n }\n}\n\nexport function Close_Option_$reflection() {\n return union_type(\"Fulma.Modal.Close.Option\", [], Close_Option, () => [[[\"Item\", Size_ISize_$reflection()]], [[\"Item\", lambda_type(class_type(\"Browser.Types.MouseEvent\", undefined), unit_type)]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate
\n */\nexport function modal(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 0:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 2:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 3:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n if (option.fields[0]) {\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n else {\n return result;\n }\n }\n }, \"modal\"), (props_1, children_1) => react.createElement(\"div\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n/**\n * Generate \n */\nexport function close(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n let matchResult, size, cb, props, customClass, modifiers;\n switch (option.tag) {\n case 1: {\n matchResult = 2;\n cb = option.fields[0];\n break;\n }\n case 2: {\n matchResult = 3;\n props = option.fields[0];\n break;\n }\n case 3: {\n matchResult = 4;\n customClass = option.fields[0];\n break;\n }\n case 4: {\n matchResult = 5;\n modifiers = option.fields[0];\n break;\n }\n default:\n switch (option.fields[0].tag) {\n case 0:\n case 1: {\n matchResult = 0;\n break;\n }\n default: {\n matchResult = 1;\n size = option.fields[0];\n }\n }\n }\n switch (matchResult) {\n case 0: {\n console.warn(some(\"`is-small` and `is-medium` are not valid sizes for \\'modal close\\'\"));\n return result;\n }\n case 1:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(size));\n case 2:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new DOMAttr(40, [cb]));\n case 3:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, props);\n case 4:\n return Common_GenericOptions__AddClass_Z721C83C5(result, customClass);\n default:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, modifiers);\n }\n }, \"modal-close\"), (props_1, children_1) => react.createElement(\"button\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n/**\n * Generate
\n */\nexport function background(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"modal-background\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
\n */\nexport function content(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"modal-content\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
\n */\nexport function Card_card(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"modal-card\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
\n */\nexport function Card_head(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"modal-card-head\"), (props, children_1) => react.createElement(\"header\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
\n */\nexport function Card_foot(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"modal-card-foot\"), (props, children_1) => react.createElement(\"footer\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
\n */\nexport function Card_title(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"modal-card-title\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
\n */\nexport function Card_body(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"modal-card-body\"), (props, children_1) => react.createElement(\"section\", keyValueList(props, 1), ...children_1), children);\n}\n\n","import { Common_parseOptions, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7 } from \"../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\n\n/**\n * Generate
\n */\nexport function box$0027(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"box\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { union_type, list_type, class_type, string_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport { Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__RemoveClass_Z721C83C5, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection } from \"../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\nimport { cons } from \"../../fable-library-js.4.24.0/List.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-1\", \"is-2\", \"is-3\", \"is-4\", \"is-5\", \"is-6\", \"subtitle\", \"is-spaced\", \"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Heading.Option\", [], Option, () => [[], [], [], [], [], [], [], [], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\nexport function title(element, options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 6:\n return Common_GenericOptions__AddClass_Z721C83C5(Common_GenericOptions__RemoveClass_Z721C83C5(result, \"title\"), \"subtitle\");\n case 9:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 8:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 10:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n }, \"title\"), element, children);\n}\n\n/**\n * Generate

\n * Class can be `subtitle` if you pass `Heading.IsSubtitle`\n */\nexport function h1(options) {\n return (children_3) => title((props, children) => react.createElement(\"h1\", keyValueList(props, 1), ...children), cons(new Option(0, []), options), children_3);\n}\n\n/**\n * Generate

\n * Class can be `subtitle` if you pass `Heading.IsSubtitle`\n */\nexport function h2(options) {\n return (children_3) => title((props, children) => react.createElement(\"h2\", keyValueList(props, 1), ...children), cons(new Option(1, []), options), children_3);\n}\n\n/**\n * Generate

\n * Class can be `subtitle` if you pass `Heading.IsSubtitle`\n */\nexport function h3(options) {\n return (children_3) => title((props, children) => react.createElement(\"h3\", keyValueList(props, 1), ...children), cons(new Option(2, []), options), children_3);\n}\n\n/**\n * Generate

\n * Class can be `subtitle` if you pass `Heading.IsSubtitle`\n */\nexport function h4(options) {\n return (children_3) => title((props, children) => react.createElement(\"h4\", keyValueList(props, 1), ...children), cons(new Option(3, []), options), children_3);\n}\n\n/**\n * Generate
\n * Class can be `subtitle` if you pass `Heading.IsSubtitle`\n */\nexport function h5(options) {\n return (children_3) => title((props, children) => react.createElement(\"h5\", keyValueList(props, 1), ...children), cons(new Option(4, []), options), children_3);\n}\n\n/**\n * Generate
\n * Class can be `subtitle` if you pass `Heading.IsSubtitle`\n */\nexport function h6(options) {\n return (children_3) => title((props, children) => react.createElement(\"h6\", keyValueList(props, 1), ...children), cons(new Option(5, []), options), children_3);\n}\n\n/**\n * Generate

\n * Class can be `subtitle` if you pass `Heading.IsSubtitle`\n */\nexport function p(opts, children) {\n return title((props, children_1) => react.createElement(\"p\", keyValueList(props, 1), ...children_1), opts, children);\n}\n\n","import { cons, ofArray, empty, fold } from \"../fable-library-js.4.24.0/List.js\";\nimport { HTMLAttr } from \"../Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport { Record, Union } from \"../fable-library-js.4.24.0/Types.js\";\nimport { record_type, bool_type, option_type, list_type, class_type, string_type, union_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../fable-library-js.4.24.0/MapUtil.js\";\n\nexport function Helpers_classes(std, options, booleans) {\n return new HTMLAttr(64, [fold((complete_1, tupledArg) => {\n if (tupledArg[1]) {\n return (complete_1 + \" \") + tupledArg[0];\n }\n else {\n return complete_1;\n }\n }, fold((complete, opt) => {\n if (opt == null) {\n return complete;\n }\n else {\n return (complete + \" \") + opt;\n }\n }, std, options), booleans)]);\n}\n\nexport class Fa_ISize extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"FaExtraSmall\", \"FaSmall\", \"FaLarge\", \"Fa2x\", \"Fa3x\", \"Fa4x\", \"Fa5x\", \"Fa6x\", \"Fa7x\", \"Fa8x\", \"Fa9x\", \"Fa10\"];\n }\n}\n\nexport function Fa_ISize_$reflection() {\n return union_type(\"Fable.FontAwesome.Fa.ISize\", [], Fa_ISize, () => [[], [], [], [], [], [], [], [], [], [], [], []]);\n}\n\nexport class Fa_IconOption extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Size\", \"Border\", \"PullLeft\", \"PullRight\", \"Inverse\", \"Rotate90\", \"Rotate180\", \"Rotate270\", \"FlipHorizontal\", \"FlipVertical\", \"IsLi\", \"Icon\", \"Spin\", \"Pulse\", \"Props\", \"CustomClass\", \"FixedWidth\", \"Stack1x\", \"Stack2x\"];\n }\n}\n\nexport function Fa_IconOption_$reflection() {\n return union_type(\"Fable.FontAwesome.Fa.IconOption\", [], Fa_IconOption, () => [[[\"Item\", Fa_ISize_$reflection()]], [], [], [], [], [], [], [], [], [], [], [[\"Item\", string_type]], [], [], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", string_type]], [], [], []]);\n}\n\nexport function Fa_ofSize(size) {\n switch (size.tag) {\n case 1:\n return \"fa-sm\";\n case 2:\n return \"fa-lg\";\n case 3:\n return \"fa-2x\";\n case 4:\n return \"fa-3x\";\n case 5:\n return \"fa-4x\";\n case 6:\n return \"fa-5x\";\n case 7:\n return \"fa-6x\";\n case 8:\n return \"fa-7x\";\n case 9:\n return \"fa-8x\";\n case 10:\n return \"fa-9x\";\n case 11:\n return \"fa-10x\";\n default:\n return \"fa-xs\";\n }\n}\n\nexport class Fa_IconOptions extends Record {\n constructor(Icon, Size, Border, Pull, HaveSpin, HavePulse, Rotation, Flip, IsInverse, Props, FixedWidth, IsLi, StackSize, CustomClass) {\n super();\n this.Icon = Icon;\n this.Size = Size;\n this.Border = Border;\n this.Pull = Pull;\n this.HaveSpin = HaveSpin;\n this.HavePulse = HavePulse;\n this.Rotation = Rotation;\n this.Flip = Flip;\n this.IsInverse = IsInverse;\n this.Props = Props;\n this.FixedWidth = FixedWidth;\n this.IsLi = IsLi;\n this.StackSize = StackSize;\n this.CustomClass = CustomClass;\n }\n}\n\nexport function Fa_IconOptions_$reflection() {\n return record_type(\"Fable.FontAwesome.Fa.IconOptions\", [], Fa_IconOptions, () => [[\"Icon\", option_type(string_type)], [\"Size\", option_type(string_type)], [\"Border\", option_type(string_type)], [\"Pull\", option_type(string_type)], [\"HaveSpin\", bool_type], [\"HavePulse\", bool_type], [\"Rotation\", option_type(string_type)], [\"Flip\", option_type(string_type)], [\"IsInverse\", bool_type], [\"Props\", list_type(class_type(\"Fable.React.IHTMLProp\"))], [\"FixedWidth\", bool_type], [\"IsLi\", bool_type], [\"StackSize\", option_type(string_type)], [\"CustomClass\", option_type(string_type)]]);\n}\n\nexport function Fa_IconOptions_get_Empty() {\n return new Fa_IconOptions(undefined, undefined, undefined, undefined, false, false, undefined, undefined, false, empty(), false, false, undefined, undefined);\n}\n\nexport function Fa_toIconOptions(faOptions) {\n return fold((result, option) => {\n switch (option.tag) {\n case 1:\n return new Fa_IconOptions(result.Icon, result.Size, \"fa-border\", result.Pull, result.HaveSpin, result.HavePulse, result.Rotation, result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n case 2:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, \"fa-pull-left\", result.HaveSpin, result.HavePulse, result.Rotation, result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n case 3:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, \"fa-pull-right\", result.HaveSpin, result.HavePulse, result.Rotation, result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n case 4:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, result.HaveSpin, result.HavePulse, result.Rotation, result.Flip, true, result.Props, result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n case 11:\n return new Fa_IconOptions(option.fields[0], result.Size, result.Border, result.Pull, result.HaveSpin, result.HavePulse, result.Rotation, result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n case 5:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, result.HaveSpin, result.HavePulse, \"fa-rotate-90\", result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n case 6:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, result.HaveSpin, result.HavePulse, \"fa-rotate-180\", result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n case 7:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, result.HaveSpin, result.HavePulse, \"fa-rotate-270\", result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n case 8:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, result.HaveSpin, result.HavePulse, \"fa-flip-horizontal\", result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n case 9:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, result.HaveSpin, result.HavePulse, \"fa-flip-vertical\", result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n case 12:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, true, result.HavePulse, result.Rotation, result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n case 13:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, result.HaveSpin, true, result.Rotation, result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n case 14:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, result.HaveSpin, result.HavePulse, result.Rotation, result.Flip, result.IsInverse, option.fields[0], result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n case 16:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, result.HaveSpin, result.HavePulse, result.Rotation, result.Flip, result.IsInverse, result.Props, true, result.IsLi, result.StackSize, result.CustomClass);\n case 10:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, result.HaveSpin, result.HavePulse, result.Rotation, result.Flip, result.IsInverse, result.Props, result.FixedWidth, true, result.StackSize, result.CustomClass);\n case 15:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, result.HaveSpin, result.HavePulse, result.Rotation, result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, result.StackSize, option.fields[0]);\n case 17:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, result.HaveSpin, result.HavePulse, result.Rotation, result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, \"fa-stack-1x\", result.CustomClass);\n case 18:\n return new Fa_IconOptions(result.Icon, result.Size, result.Border, result.Pull, result.HaveSpin, result.HavePulse, result.Rotation, result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, \"fa-stack-2x\", result.CustomClass);\n default:\n return new Fa_IconOptions(result.Icon, Fa_ofSize(option.fields[0]), result.Border, result.Pull, result.HaveSpin, result.HavePulse, result.Rotation, result.Flip, result.IsInverse, result.Props, result.FixedWidth, result.IsLi, result.StackSize, result.CustomClass);\n }\n }, Fa_IconOptions_get_Empty(), faOptions);\n}\n\n/**\n * Logic used to display one icon alone or as one item in an unordered list:\n */\nexport function Fa_displayIcon(baseElement, baseClass, opts, children) {\n return baseElement(cons(Helpers_classes(baseClass, ofArray([opts.Icon, opts.Size, opts.Border, opts.Pull, opts.Rotation, opts.Flip, opts.CustomClass, opts.StackSize]), ofArray([[\"fa-fw\", opts.FixedWidth], [\"fa-li\", opts.IsLi], [\"fa-pulse\", opts.HavePulse], [\"fa-spin\", opts.HaveSpin], [\"fa-inverse\", opts.IsInverse]])), opts.Props), children);\n}\n\nexport function Fa_ul(props, children) {\n return react.createElement(\"ul\", {\n className: \"fa-ul\",\n }, ...children);\n}\n\nexport function Fa_ol(props, children) {\n return react.createElement(\"ol\", {\n className: \"fa-ul\",\n }, ...children);\n}\n\nexport function Fa_i(faOptions, children) {\n return Fa_displayIcon((props, children_1) => react.createElement(\"i\", keyValueList(props, 1), ...children_1), \"\", Fa_toIconOptions(faOptions), children);\n}\n\nexport function Fa_span(faOptions, children) {\n return Fa_displayIcon((props, children_1) => react.createElement(\"span\", keyValueList(props, 1), ...children_1), \"\", Fa_toIconOptions(faOptions), children);\n}\n\nexport class Fa_Stack_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Size\", \"CustomClass\", \"Props\"];\n }\n}\n\nexport function Fa_Stack_Option_$reflection() {\n return union_type(\"Fable.FontAwesome.Fa.Stack.Option\", [], Fa_Stack_Option, () => [[[\"Item\", Fa_ISize_$reflection()]], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]]]);\n}\n\nexport class Fa_Stack_Options extends Record {\n constructor(Size, Props, CustomClass) {\n super();\n this.Size = Size;\n this.Props = Props;\n this.CustomClass = CustomClass;\n }\n}\n\nexport function Fa_Stack_Options_$reflection() {\n return record_type(\"Fable.FontAwesome.Fa.Stack.Options\", [], Fa_Stack_Options, () => [[\"Size\", option_type(string_type)], [\"Props\", list_type(class_type(\"Fable.React.IHTMLProp\"))], [\"CustomClass\", option_type(string_type)]]);\n}\n\nexport function Fa_Stack_Options_get_Empty() {\n return new Fa_Stack_Options(undefined, empty(), undefined);\n}\n\nexport function Fa_stack(options, children) {\n const opts = fold((result, opt) => {\n switch (opt.tag) {\n case 1:\n return new Fa_Stack_Options(result.Size, result.Props, opt.fields[0]);\n case 2:\n return new Fa_Stack_Options(result.Size, opt.fields[0], result.CustomClass);\n default:\n return new Fa_Stack_Options(Fa_ofSize(opt.fields[0]), result.Props, result.CustomClass);\n }\n }, Fa_Stack_Options_get_Empty(), options);\n const classes = Helpers_classes(\"fa-stack\", ofArray([opts.Size, opts.CustomClass]), empty());\n return react.createElement(\"span\", keyValueList(cons(classes, opts.Props), 1), ...children);\n}\n\n","import react from \"react\";\n\nexport const reactApi = react;\n\n","import { format } from \"../fable_modules/fable-library-js.4.24.0/String.js\";\n\nexport function offsetToUtcZone(utcOffsetMins) {\n if (utcOffsetMins === 0) {\n return \"UTC\";\n }\n else {\n const hours = ~~(Math.abs(utcOffsetMins) / 60) | 0;\n const sign = (utcOffsetMins > 0) ? \"+\" : \"-\";\n const minutes = (Math.abs(utcOffsetMins) - (hours * 60)) | 0;\n if (minutes > 0) {\n return format(\"UTC{0}{1:D2}:{2:D2}\", sign, hours, minutes);\n }\n else {\n return format(\"UTC{0}{1:D2}\", sign, hours);\n }\n }\n}\n\nexport function displayUtcOffsetOpt(utcOffsetOpt) {\n if (utcOffsetOpt == null) {\n return \"N/A\";\n }\n else if (utcOffsetOpt === 0) {\n return \"UTC\";\n }\n else {\n const utcOffsetMins = utcOffsetOpt | 0;\n return offsetToUtcZone(utcOffsetMins);\n }\n}\n\n","import { Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { decimal_type, bool_type, array_type, uint8_type, enum_type, float64_type, option_type, int64_type, record_type, class_type, string_type, int32_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { Constraints_collectConstraintsErrors } from \"./Validation.js\";\nimport { last as last_1, empty } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { tryFind } from \"../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { value as value_1, defaultArg, map } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { offsetToUtcZone } from \"./TimeUtils.js\";\nimport { addDays, utcNow, toUniversalTime } from \"../fable_modules/fable-library-js.4.24.0/Date.js\";\n\nexport class DataModule extends Record {\n constructor(Id, Name, CurrentVersion, CreatedAt, UpdatedAt) {\n super();\n this.Id = (Id | 0);\n this.Name = Name;\n this.CurrentVersion = CurrentVersion;\n this.CreatedAt = CreatedAt;\n this.UpdatedAt = UpdatedAt;\n }\n}\n\nexport function DataModule_$reflection() {\n return record_type(\"Omnicv.DataModule.CoreData.DataModule\", [], DataModule, () => [[\"Id\", int32_type], [\"Name\", string_type], [\"CurrentVersion\", string_type], [\"CreatedAt\", class_type(\"System.DateTime\")], [\"UpdatedAt\", class_type(\"System.DateTime\")]]);\n}\n\nexport class ContentType extends Record {\n constructor(Id, Name, DataModuleId, CreatedAt, UpdatedAt) {\n super();\n this.Id = (Id | 0);\n this.Name = Name;\n this.DataModuleId = (DataModuleId | 0);\n this.CreatedAt = CreatedAt;\n this.UpdatedAt = UpdatedAt;\n }\n}\n\nexport function ContentType_$reflection() {\n return record_type(\"Omnicv.DataModule.CoreData.ContentType\", [], ContentType, () => [[\"Id\", int32_type], [\"Name\", string_type], [\"DataModuleId\", int32_type], [\"CreatedAt\", class_type(\"System.DateTime\")], [\"UpdatedAt\", class_type(\"System.DateTime\")]]);\n}\n\nexport class EventInfo extends Record {\n constructor(Id, ContentTypeId, ProfileId, EventTimestamp, CreatedAt, UpdatedAt, PlaceId, PlaceName, Latitude, Longitude, LocationTz, LocationTzOffsetMin, ClientTz, ClientTzOffsetMin) {\n super();\n this.Id = Id;\n this.ContentTypeId = (ContentTypeId | 0);\n this.ProfileId = (ProfileId | 0);\n this.EventTimestamp = EventTimestamp;\n this.CreatedAt = CreatedAt;\n this.UpdatedAt = UpdatedAt;\n this.PlaceId = PlaceId;\n this.PlaceName = PlaceName;\n this.Latitude = Latitude;\n this.Longitude = Longitude;\n this.LocationTz = LocationTz;\n this.LocationTzOffsetMin = LocationTzOffsetMin;\n this.ClientTz = ClientTz;\n this.ClientTzOffsetMin = ClientTzOffsetMin;\n }\n}\n\nexport function EventInfo_$reflection() {\n return record_type(\"Omnicv.DataModule.CoreData.EventInfo\", [], EventInfo, () => [[\"Id\", int64_type], [\"ContentTypeId\", int32_type], [\"ProfileId\", int32_type], [\"EventTimestamp\", class_type(\"System.DateTime\")], [\"CreatedAt\", class_type(\"System.DateTime\")], [\"UpdatedAt\", class_type(\"System.DateTime\")], [\"PlaceId\", option_type(string_type)], [\"PlaceName\", option_type(string_type)], [\"Latitude\", option_type(float64_type)], [\"Longitude\", option_type(float64_type)], [\"LocationTz\", option_type(string_type)], [\"LocationTzOffsetMin\", option_type(int32_type)], [\"ClientTz\", option_type(string_type)], [\"ClientTzOffsetMin\", option_type(int32_type)]]);\n}\n\nexport class MimeType extends Record {\n constructor(Id, MimeType, Description) {\n super();\n this.Id = (Id | 0);\n this.MimeType = MimeType;\n this.Description = Description;\n }\n}\n\nexport function MimeType_$reflection() {\n return record_type(\"Omnicv.DataModule.CoreData.MimeType\", [], MimeType, () => [[\"Id\", int32_type], [\"MimeType\", string_type], [\"Description\", option_type(string_type)]]);\n}\n\nexport class Attachment extends Record {\n constructor(Id, RecordId, AttachmentType, CreatedAt, UpdatedAt, MimeTypeId, Data, Weight) {\n super();\n this.Id = Id;\n this.RecordId = RecordId;\n this.AttachmentType = (AttachmentType | 0);\n this.CreatedAt = CreatedAt;\n this.UpdatedAt = UpdatedAt;\n this.MimeTypeId = (MimeTypeId | 0);\n this.Data = Data;\n this.Weight = (Weight | 0);\n }\n}\n\nexport function Attachment_$reflection() {\n return record_type(\"Omnicv.DataModule.CoreData.Attachment\", [], Attachment, () => [[\"Id\", int64_type], [\"RecordId\", int64_type], [\"AttachmentType\", enum_type(\"Omnicv.DataModule.CoreData.AttachmentType\", int32_type, [[\"EventInfoAttachment\", 1], [\"FitnessAttachment\", 2]])], [\"CreatedAt\", class_type(\"System.DateTime\")], [\"UpdatedAt\", class_type(\"System.DateTime\")], [\"MimeTypeId\", int32_type], [\"Data\", array_type(uint8_type)], [\"Weight\", int32_type]]);\n}\n\nexport class PageBoundary extends Record {\n constructor(Id, Timestamp) {\n super();\n this.Id = Id;\n this.Timestamp = Timestamp;\n }\n}\n\nexport function PageBoundary_$reflection() {\n return record_type(\"Omnicv.DataModule.CoreData.PageBoundary\", [], PageBoundary, () => [[\"Id\", int64_type], [\"Timestamp\", class_type(\"System.DateTime\")]]);\n}\n\nexport class PagingOptions extends Record {\n constructor(LastBoundary, PageSize, Ascending, From, To) {\n super();\n this.LastBoundary = LastBoundary;\n this.PageSize = (PageSize | 0);\n this.Ascending = Ascending;\n this.From = From;\n this.To = To;\n }\n}\n\nexport function PagingOptions_$reflection() {\n return record_type(\"Omnicv.DataModule.CoreData.PagingOptions\", [], PagingOptions, () => [[\"LastBoundary\", option_type(PageBoundary_$reflection())], [\"PageSize\", int32_type], [\"Ascending\", bool_type], [\"From\", option_type(class_type(\"System.DateTime\"))], [\"To\", option_type(class_type(\"System.DateTime\"))]]);\n}\n\nexport class DataPoint extends Record {\n constructor(Id, Timestamp, Value) {\n super();\n this.Id = Id;\n this.Timestamp = Timestamp;\n this.Value = Value;\n }\n}\n\nexport function DataPoint_$reflection() {\n return record_type(\"Omnicv.DataModule.CoreData.DataPoint\", [], DataPoint, () => [[\"Id\", int64_type], [\"Timestamp\", class_type(\"System.DateTime\")], [\"Value\", decimal_type]]);\n}\n\nexport function EventInfo_Default_7F9DDECF(timestamp) {\n return new EventInfo(0n, 0, 0, timestamp, timestamp, timestamp, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined);\n}\n\nfunction EventInfo_Validator_1505(record) {\n return Constraints_collectConstraintsErrors(empty());\n}\n\nexport function EventInfo__Validate(this$) {\n return EventInfo_Validator_1505(this$);\n}\n\nexport function EventInfo__ValidateField_Z721C83C5(this$, name) {\n return tryFind(name, EventInfo__Validate(this$));\n}\n\nexport function EventInfo__BestLocation(this$) {\n return CoreUtils_bestLocation(this$.PlaceId, this$.PlaceName, this$.Latitude, this$.Longitude);\n}\n\nexport function EventInfo__GetClientTz(this$) {\n if (this$.ClientTz != null) {\n return this$.ClientTz;\n }\n else {\n return map(offsetToUtcZone, this$.ClientTzOffsetMin);\n }\n}\n\nexport function EventInfo__GetLocationTz(this$) {\n if (this$.LocationTz != null) {\n return this$.LocationTz;\n }\n else {\n return map(offsetToUtcZone, this$.LocationTzOffsetMin);\n }\n}\n\nexport function EventInfo__DisplayTimeZone(this$) {\n const getTz = (tz) => defaultArg(tz, \"N/A\");\n const matchValue = EventInfo__GetClientTz(this$);\n const matchValue_1 = EventInfo__GetLocationTz(this$);\n let matchResult, clientTz, locationTz, clientTz_1, locationTz_1;\n if (matchValue == null) {\n if (matchValue_1 == null) {\n matchResult = 1;\n }\n else {\n matchResult = 2;\n clientTz_1 = matchValue;\n locationTz_1 = matchValue_1;\n }\n }\n else if (matchValue_1 != null) {\n matchResult = 0;\n clientTz = matchValue;\n locationTz = matchValue_1;\n }\n else {\n matchResult = 2;\n clientTz_1 = matchValue;\n locationTz_1 = matchValue_1;\n }\n switch (matchResult) {\n case 0:\n if (clientTz === locationTz) {\n return clientTz;\n }\n else {\n return `${clientTz}/${locationTz}`;\n }\n case 1:\n return \"N/A\";\n default:\n return `${getTz(clientTz_1)}/${getTz(locationTz_1)}`;\n }\n}\n\nexport function EventInfo__ClearLocation(this$) {\n return new EventInfo(this$.Id, this$.ContentTypeId, this$.ProfileId, this$.EventTimestamp, this$.CreatedAt, this$.UpdatedAt, undefined, undefined, undefined, undefined, undefined, undefined, this$.ClientTz, this$.ClientTzOffsetMin);\n}\n\nexport function PagingOptionsModule_basicPagingOptions(fromDate, toDate) {\n return new PagingOptions(undefined, 20, false, fromDate, toDate);\n}\n\nexport function PagingOptionsModule_basicPagingOptionsForDays(days) {\n const now = toUniversalTime(utcNow());\n return PagingOptionsModule_basicPagingOptions(addDays(now, -days), now);\n}\n\nexport const PagingOptionsModule_defaultPagingOptions = PagingOptionsModule_basicPagingOptions(undefined, undefined);\n\nexport function PagingOptionsModule_optionsForNextPage(entries, pagingOptions) {\n const last = last_1(entries)[0];\n return new PagingOptions(new PageBoundary(last.Id, last.EventTimestamp), pagingOptions.PageSize, pagingOptions.Ascending, pagingOptions.From, pagingOptions.To);\n}\n\nexport function CoreUtils_bestLocation(placeId, placeName, latitude, longitude) {\n if (placeName != null) {\n return value_1(placeName);\n }\n else if (placeId != null) {\n return value_1(placeId);\n }\n else if ((latitude != null) && (longitude != null)) {\n return `${latitude}/${longitude}`;\n }\n else {\n return \"\";\n }\n}\n\n","import { createElement } from \"react\";\nimport * as react from \"react\";\nimport { ProxyRequestException__get_ResponseText, ProxyRequestException } from \"../fable_modules/Fable.Remoting.Client.7.32.0/Types.fs.js\";\nimport { toString, hour, addHours, minute, addMinutes, date as date_1, equals, kind, create, addDays } from \"../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { tryFind, item, map } from \"../fable_modules/fable-library-js.4.24.0/Array.js\";\nimport { parse } from \"../fable_modules/fable-library-js.4.24.0/Int32.js\";\nimport { join, format, toFail, split } from \"../fable_modules/fable-library-js.4.24.0/String.js\";\nimport * as common from \"../../src/javascript/common.js\";\nimport { StringBuilder__Append_Z721C83C5, StringBuilder_$ctor } from \"../fable_modules/fable-library-js.4.24.0/System.Text.js\";\nimport { formatDistanceToNow } from \"date-fns\";\nimport { toString as toString_1 } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { create as create_1, toString as toString_2, fromSeconds } from \"../fable_modules/fable-library-js.4.24.0/TimeSpan.js\";\nimport { content, background, Option, modal } from \"../fable_modules/Fulma.3.0.0/Components/Modal.fs.js\";\nimport { toArray, cons, map as map_1, ofArray, empty, singleton } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { box$0027 } from \"../fable_modules/Fulma.3.0.0/Elements/Box.fs.js\";\nimport { Common_GenericOption, Modifier_IModifier, TextAlignment_Option, Screen } from \"../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { Option as Option_1, h3 } from \"../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { Fa_ISize, Fa_IconOption, Fa_i } from \"../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { reactApi } from \"../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { singleton as singleton_1 } from \"../fable_modules/fable-library-js.4.24.0/AsyncBuilder.js\";\nimport { Browser_Types_File__File_ReadAsByteArray } from \"../fable_modules/Fable.Remoting.Client.7.32.0/Extensions.fs.js\";\nimport { fold, find } from \"../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { HTMLAttr } from \"../fable_modules/Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport { keyValueList } from \"../fable_modules/fable-library-js.4.24.0/MapUtil.js\";\nimport { defaultArg, orElseWith } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { EventInfo__GetClientTz, EventInfo__GetLocationTz } from \"../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { matches as matches_1 } from \"../fable_modules/fable-library-js.4.24.0/RegExp.js\";\nimport { toNumber, op_Division, op_Multiply, compare, abs, fromParts } from \"../fable_modules/fable-library-js.4.24.0/Decimal.js\";\nimport Decimal from \"../fable_modules/fable-library-js.4.24.0/Decimal.js\";\nimport { round, createObj, int32ToString } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { reactApi as reactApi_1 } from \"../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { LineChart, Line, Tooltip, YAxis, XAxis, CartesianGrid } from \"recharts\";\n\nexport function displayStronglyTypedError(_arg) {\n if (_arg.tag === 1) {\n return createElement(\"div\", {\n children: [_arg.fields[0]],\n });\n }\n else {\n return _arg.fields[0];\n }\n}\n\nexport function exnToDisplayString(error) {\n if (error instanceof ProxyRequestException) {\n const ex = error;\n return ProxyRequestException__get_ResponseText(ex);\n }\n else {\n return error.message;\n }\n}\n\nexport function dateStrToDate(now, value) {\n const matchValue = value.toLocaleLowerCase();\n switch (matchValue) {\n case \"today\":\n case \"now\":\n return now;\n case \"yesterday\":\n return addDays(now, -1);\n default: {\n const other = matchValue;\n const parts = map((part) => parse(part, 511, false, 32), split(other, [\"-\"], undefined, 0), Int32Array);\n if (parts.length !== 3) {\n toFail(`Bad date format: ${other}`);\n }\n return create(item(0, parts), item(1, parts), item(2, parts), 0, 0, 0, 0, kind(now));\n }\n }\n}\n\nexport function dateStrToDateTime(dateStr) {\n const now = common.getNow();\n const date = dateStrToDate(now, dateStr);\n if (!equals(date_1(date), date_1(now))) {\n return addMinutes(addHours(date, hour(now)), minute(now));\n }\n else {\n return now;\n }\n}\n\nexport function dateToStrForDiary(date) {\n return toString(date, \"yyyy-MM-dd\");\n}\n\nexport const timeFormatOptions = (() => {\n const temp = {};\n temp.includeSeconds = false;\n temp.addSuffix = true;\n return temp;\n})();\n\nexport function getBasicEventInfoData(eventInfo) {\n const sb = StringBuilder_$ctor();\n StringBuilder__Append_Z721C83C5(sb, formatDistanceToNow(eventInfo.EventTimestamp, timeFormatOptions));\n if ((eventInfo.PlaceId != null) ? true : (eventInfo.PlaceName != null)) {\n StringBuilder__Append_Z721C83C5(sb, \" 📌\");\n }\n return toString_1(sb);\n}\n\nexport const strictDistanceOptions = (() => {\n const temp = {};\n temp.addSuffix = true;\n return temp;\n})();\n\nexport function secondsToHuman(secs) {\n let copyOfStruct = fromSeconds(secs);\n return toString_2(copyOfStruct);\n}\n\nexport function busyModal(isActive, caption) {\n let children;\n return modal(singleton(new Option(1, [isActive])), ofArray([background(empty(), empty()), content(empty(), singleton(box$0027(singleton(new Common_GenericOption(2, [singleton(new Modifier_IModifier(5, [new Screen(0, []), new TextAlignment_Option(0, [])]))])), ofArray([h3(singleton(new Option_1(7, [])))(singleton(caption)), (children = singleton(Fa_i(ofArray([new Fa_IconOption(11, [\"fas fa-spinner\"]), new Fa_IconOption(12, []), new Fa_IconOption(16, []), new Fa_IconOption(0, [new Fa_ISize(11, [])])]), [])), createElement(\"p\", {\n children: reactApi.Children.toArray(Array.from(children)),\n }))]))))]));\n}\n\nexport function handleFileEventEx(onFileLoadStarted, onAbort, onError, onFileLoaded, fileEvent) {\n const files = fileEvent.target.files;\n if (files.length > 0) {\n const file = files[0];\n const reader = new FileReader();\n reader.onload = ((_arg) => {\n onFileLoaded(reader.result);\n });\n onFileLoadStarted(file.name);\n reader.onabort = onAbort;\n reader.onerror = onError;\n reader.readAsArrayBuffer(file);\n }\n}\n\nexport function handleFileEvent(fileEvent) {\n const files = fileEvent.target.files;\n return singleton_1.Delay(() => singleton_1.Combine((files.length < 1) ? (((() => {\n throw new Error(\"No files selected\");\n })(), singleton_1.Zero())) : singleton_1.Zero(), singleton_1.Delay(() => {\n const file = files[0];\n return singleton_1.Bind(Browser_Types_File__File_ReadAsByteArray(file), (_arg) => singleton_1.Return([_arg, file.name]));\n })));\n}\n\nexport function splitSeconds(durationSecs) {\n const hours = ~~(~~(durationSecs / 60) / 60) | 0;\n return [hours, ~~(durationSecs / 60) - (hours * 60), durationSecs % 60];\n}\n\nexport function stringToEnum(mapping, value) {\n return find((tupledArg) => {\n let copyOfStruct;\n return value === ((copyOfStruct = tupledArg[0], toString_1(copyOfStruct)));\n }, mapping)[0];\n}\n\nexport function valuesToSelectOptions(values, name) {\n const optionsFromChoices = map_1((tupledArg) => {\n let copyOfStruct;\n const props = [new HTMLAttr(161, [(copyOfStruct = tupledArg[0], toString_1(copyOfStruct))])];\n return react.createElement(\"option\", keyValueList(props, 1), tupledArg[1]);\n }, values);\n return cons(react.createElement(\"option\", {\n value: \"\",\n }, `-- Choose ${name} --`), optionsFromChoices);\n}\n\nconst nightStart = create_1(23, 30, 0);\n\nconst nightEnd = create_1(7, 0, 0);\n\nexport function isNightOptTz(eventInfo, tzOpt) {\n if (tzOpt == null) {\n return undefined;\n }\n else {\n let timestampInTz;\n const arg_1 = tzOpt;\n timestampInTz = common.dateToLuxonTz(eventInfo.EventTimestamp, arg_1);\n const time = create_1(timestampInTz.hour, timestampInTz.minute, timestampInTz.second);\n return !((time >= nightEnd) && (time <= nightStart));\n }\n}\n\nexport function isNightOpt(eventInfo) {\n return orElseWith(isNightOptTz(eventInfo, EventInfo__GetLocationTz(eventInfo)), () => isNightOptTz(eventInfo, EventInfo__GetClientTz(eventInfo)));\n}\n\nexport function isNight(eventInfo) {\n const matchValue = isNightOpt(eventInfo);\n let matchResult;\n if (matchValue != null) {\n if (matchValue) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return true;\n default:\n return false;\n }\n}\n\nconst _wordPattern = /[\\p{N}\\p{L}][-_\\p{N}\\p{L}]*/gu;\n\n/**\n * Count words in the given string\n */\nexport function countWords(str) {\n const matches = matches_1(_wordPattern, str);\n return matches.length | 0;\n}\n\nexport function countWordsEx(strs) {\n return fold((acc, str) => (acc + countWords(str)), 0, strs);\n}\n\nconst _suffixes = [[\"\", fromParts(1, 0, 0, false, 0)], [\"K\", fromParts(1000, 0, 0, false, 0)], [\"M\", fromParts(1000000, 0, 0, false, 0)], [\"B\", fromParts(1000000000, 0, 0, false, 0)], [\"T\", fromParts(-727379968, 232, 0, false, 0)]];\n\nexport function formatShortDecimal(value) {\n const absValue = abs(value);\n const _arg_1 = tryFind((tupledArg) => (compare(absValue, op_Multiply(tupledArg[1], fromParts(1000, 0, 0, false, 0))) < 0), _suffixes);\n if (_arg_1 == null) {\n return format('{0:' + \"N0\" + '}', value);\n }\n else {\n const suffix_1 = _arg_1[0];\n const v = op_Division(value, _arg_1[1]);\n if (compare(v, fromParts(1, 0, 0, false, 0)) < 0) {\n return format('{0:' + \"0.##\" + '}', v);\n }\n else {\n return format('{0:' + \"0.#\" + '}', v) + suffix_1;\n }\n }\n}\n\nexport function responsiveChart(name, data) {\n let elements, properties, properties_2;\n const properties_5 = ofArray([[\"data\", toArray(data)], [\"margin\", {\n top: defaultArg(5, 0),\n right: defaultArg(30, 0),\n left: defaultArg(undefined, 0),\n bottom: defaultArg(undefined, 0),\n }], (elements = ofArray([(properties = singleton([\"strokeDasharray\", join(\" \", map(int32ToString, new Int32Array([3, 3])))]), reactApi_1.createElement(CartesianGrid, createObj(properties))), reactApi_1.createElement(XAxis, {\n dataKey: (point) => toString(point.Timestamp, \"yyyy-MM-dd\"),\n }), (properties_2 = ofArray([[\"domain\", [\"auto\", \"auto\"]], [\"padding\", {\n top: defaultArg(undefined, 0),\n right: defaultArg(undefined, 0),\n left: defaultArg(undefined, 0),\n bottom: defaultArg(10, 0),\n }], [\"tickCount\", 10], [\"tickFormatter\", (arg) => formatShortDecimal(new Decimal(arg))]]), reactApi_1.createElement(YAxis, createObj(properties_2))), reactApi_1.createElement(Tooltip, {}), reactApi_1.createElement(Line, {\n type: \"monotone\",\n dataKey: (point_1) => round(toNumber(point_1.Value), 2),\n stroke: \"#8884d8\",\n fill: \"#8884d8\",\n name: name,\n })]), [\"children\", reactApi.Children.toArray(Array.from(elements))])]);\n return reactApi_1.createElement(LineChart, createObj(properties_5));\n}\n\n","import { fromContinuations } from \"../fable-library-js.4.24.0/Async.js\";\nimport { class_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { isNullOrWhiteSpace } from \"../fable-library-js.4.24.0/String.js\";\n\n/**\n * Creates a typed byte array of binary data if it not already typed\n */\nexport function InternalUtilities_toUInt8Array(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else {\n return new Uint8Array(data);\n }\n}\n\n/**\n * Asynchronously reads the File content as byte[]\n */\nexport function Browser_Types_File__File_ReadAsByteArray(instance) {\n return fromContinuations((tupledArg) => {\n const reader = new FileReader();\n reader.onload = ((_arg_2) => {\n if (reader.readyState === 2) {\n tupledArg[0](new Uint8Array(reader.result));\n }\n });\n reader.readAsArrayBuffer(instance);\n });\n}\n\n/**\n * Asynchronously reads the File content as a data url string\n */\nexport function Browser_Types_File__File_ReadAsDataUrl(instance) {\n return fromContinuations((tupledArg) => {\n const reader = new FileReader();\n reader.onload = ((_arg_2) => {\n if (reader.readyState === 2) {\n tupledArg[0](reader.result);\n }\n });\n reader.readAsDataURL(instance);\n });\n}\n\n/**\n * Asynchronously reads the File contents as text\n */\nexport function Browser_Types_File__File_ReadAsText(instance) {\n return fromContinuations((tupledArg) => {\n const reader = new FileReader();\n reader.onload = ((_arg_2) => {\n if (reader.readyState === 2) {\n tupledArg[0](reader.result);\n }\n });\n reader.readAsText(instance);\n });\n}\n\nexport class ByteArrayExtensions {\n constructor() {\n }\n}\n\nexport function ByteArrayExtensions_$reflection() {\n return class_type(\"Fable.Remoting.Client.ByteArrayExtensions\", undefined, ByteArrayExtensions);\n}\n\n/**\n * Saves the binary content as a file using the provided file name.\n */\nexport function ByteArrayExtensions_SaveFileAs_5EF83E14(content, fileName) {\n if (isNullOrWhiteSpace(fileName)) {\n }\n else {\n const binaryData = InternalUtilities_toUInt8Array(content);\n const blob = new Blob([binaryData.buffer], { type: \"application/octet-stream\" });\n const dataUrl = window.URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.style = \"display: none\";\n anchor.href = dataUrl;\n anchor.download = fileName;\n anchor.rel = \"noopener\";\n anchor.click();\n anchor.remove();\n window.setTimeout(() => {\n URL.revokeObjectURL(dataUrl);\n }, 40 * 1000);\n }\n}\n\n/**\n * Saves the binary content as a file using the provided file name.\n */\nexport function ByteArrayExtensions_SaveFileAs_Z4C1C8351(content, fileName, mimeType) {\n if (isNullOrWhiteSpace(fileName)) {\n }\n else {\n const binaryData = InternalUtilities_toUInt8Array(content);\n const blob = new Blob([binaryData.buffer], { type: mimeType });\n const dataUrl = window.URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.style = \"display: none\";\n anchor.href = dataUrl;\n anchor.download = fileName;\n anchor.rel = \"noopener\";\n anchor.click();\n anchor.remove();\n window.setTimeout(() => {\n URL.revokeObjectURL(dataUrl);\n }, 40 * 1000);\n }\n}\n\n/**\n * Converts the binary content into a data url by first converting it to a Blob of type \"application/octet-stream\" and reading it as a data url.\n */\nexport function ByteArrayExtensions_AsDataUrl_Z3F6BC7B1(content) {\n const binaryData = InternalUtilities_toUInt8Array(content);\n const blob = new Blob([binaryData.buffer], { type: \"application/octet-stream\" });\n return window.URL.createObjectURL(blob);\n}\n\n/**\n * Converts the binary content into a data url by first converting it to a Blob of the provided mime-type and reading it as a data url.\n */\nexport function ByteArrayExtensions_AsDataUrl_5EF83E14(content, mimeType) {\n const binaryData = InternalUtilities_toUInt8Array(content);\n const blob = new Blob([binaryData.buffer], { type: mimeType });\n return window.URL.createObjectURL(blob);\n}\n\n","import { Union, Record } from \"../fable-library-js.4.24.0/Types.js\";\nimport { union_type, tuple_type, lambda_type, unit_type, array_type, record_type, class_type, string_type } from \"../fable-library-js.4.24.0/Reflection.js\";\n\nexport class RecordField extends Record {\n constructor(FieldName, FieldType, PropertyInfo) {\n super();\n this.FieldName = FieldName;\n this.FieldType = FieldType;\n this.PropertyInfo = PropertyInfo;\n }\n}\n\nexport function RecordField_$reflection() {\n return record_type(\"Fable.SimpleJson.RecordField\", [], RecordField, () => [[\"FieldName\", string_type], [\"FieldType\", TypeInfo_$reflection()], [\"PropertyInfo\", class_type(\"System.Reflection.PropertyInfo\")]]);\n}\n\nexport class UnionCase extends Record {\n constructor(CaseName, CaseTypes, Info) {\n super();\n this.CaseName = CaseName;\n this.CaseTypes = CaseTypes;\n this.Info = Info;\n }\n}\n\nexport function UnionCase_$reflection() {\n return record_type(\"Fable.SimpleJson.UnionCase\", [], UnionCase, () => [[\"CaseName\", string_type], [\"CaseTypes\", array_type(TypeInfo_$reflection())], [\"Info\", class_type(\"Microsoft.FSharp.Reflection.UnionCaseInfo\")]]);\n}\n\nexport class TypeInfo extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Unit\", \"Char\", \"String\", \"UInt16\", \"UInt32\", \"UInt64\", \"Int32\", \"Bool\", \"Float32\", \"Float\", \"Decimal\", \"Short\", \"Long\", \"Byte\", \"SByte\", \"DateTime\", \"DateTimeOffset\", \"DateOnly\", \"TimeOnly\", \"BigInt\", \"TimeSpan\", \"Guid\", \"Uri\", \"Object\", \"Any\", \"Async\", \"Promise\", \"Option\", \"List\", \"Set\", \"Array\", \"Seq\", \"Tuple\", \"Map\", \"Dictionary\", \"ResizeArray\", \"HashSet\", \"Func\", \"Enum\", \"Record\", \"Union\"];\n }\n}\n\nexport function TypeInfo_$reflection() {\n return union_type(\"Fable.SimpleJson.TypeInfo\", [], TypeInfo, () => [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [[\"Item\", lambda_type(unit_type, class_type(\"System.Type\"))]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, array_type(TypeInfo_$reflection()))]], [[\"Item\", lambda_type(unit_type, tuple_type(TypeInfo_$reflection(), TypeInfo_$reflection()))]], [[\"Item\", lambda_type(unit_type, tuple_type(TypeInfo_$reflection(), TypeInfo_$reflection(), class_type(\"System.Type\")))]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, TypeInfo_$reflection())]], [[\"Item\", lambda_type(unit_type, array_type(TypeInfo_$reflection()))]], [[\"Item\", lambda_type(unit_type, tuple_type(TypeInfo_$reflection(), class_type(\"System.Type\")))]], [[\"Item\", lambda_type(unit_type, tuple_type(array_type(RecordField_$reflection()), class_type(\"System.Type\")))]], [[\"Item\", lambda_type(unit_type, tuple_type(array_type(UnionCase_$reflection()), class_type(\"System.Type\")))]]]);\n}\n\n","import { equals, getEnumUnderlyingType, isEnum, getTupleElements, isTuple, getElementType, isArray, getFunctionElements, isFunction, getUnionCases, getUnionCaseFields, isUnion, getGenerics, getRecordElements, name, isRecord, fullName } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { UnionCase, RecordField, TypeInfo } from \"./TypeInfo.fs.js\";\nimport { item, map } from \"../fable-library-js.4.24.0/Array.js\";\nimport { collect, singleton, append, delay, toArray } from \"../fable-library-js.4.24.0/Seq.js\";\nimport { defaultOf, structuralHash, Lazy } from \"../fable-library-js.4.24.0/Util.js\";\nimport { Dictionary } from \"../fable-library-js.4.24.0/MutableMap.js\";\nimport { tryGetValue } from \"../fable-library-js.4.24.0/MapUtil.js\";\nimport { FSharpRef } from \"../fable-library-js.4.24.0/Types.js\";\nimport { isNullOrEmpty } from \"../fable-library-js.4.24.0/String.js\";\n\nexport function $007CPrimitiveType$007C_$007C(primType) {\n const matchValue = fullName(primType);\n switch (matchValue) {\n case \"System.String\":\n return new TypeInfo(2, []);\n case \"System.Char\":\n return new TypeInfo(1, []);\n case \"System.Int16\":\n return new TypeInfo(11, []);\n case \"System.Int32\":\n return new TypeInfo(6, []);\n case \"Microsoft.FSharp.Core.int64`1\":\n case \"System.Int64\":\n return new TypeInfo(12, []);\n case \"System.UInt16\":\n return new TypeInfo(3, []);\n case \"System.UInt32\":\n return new TypeInfo(4, []);\n case \"System.UInt64\":\n return new TypeInfo(5, []);\n case \"System.DateTime\":\n return new TypeInfo(15, []);\n case \"System.DateOnly\":\n return new TypeInfo(17, []);\n case \"System.TimeOnly\":\n return new TypeInfo(18, []);\n case \"System.TimeSpan\":\n return new TypeInfo(20, []);\n case \"System.DateTimeOffset\":\n return new TypeInfo(16, []);\n case \"System.Boolean\":\n return new TypeInfo(7, []);\n case \"System.Single\":\n return new TypeInfo(8, []);\n case \"System.Double\":\n return new TypeInfo(9, []);\n case \"Microsoft.FSharp.Core.decimal`1\":\n case \"System.Decimal\":\n return new TypeInfo(10, []);\n case \"System.Numerics.BigInteger\":\n return new TypeInfo(19, []);\n case \"Microsoft.FSharp.Core.Unit\":\n return new TypeInfo(0, []);\n case \"System.Guid\":\n return new TypeInfo(21, []);\n case \"System.Byte\":\n return new TypeInfo(13, []);\n case \"System.SByte\":\n return new TypeInfo(14, []);\n case \"System.Object\":\n return new TypeInfo(23, []);\n case \"System.Uri\":\n return new TypeInfo(22, []);\n default:\n return undefined;\n }\n}\n\nexport function $007CRecordType$007C_$007C(t) {\n if (isRecord(t)) {\n return map((field) => [field, name(field), field[1]], getRecordElements(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CSetType$007C_$007C(t) {\n if (fullName(t).startsWith(\"Microsoft.FSharp.Collections.FSharpSet`1\")) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CNullable$007C_$007C(t) {\n if (fullName(t).startsWith(\"System.Nullable`1\")) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CUnionType$007C_$007C(t) {\n if (isUnion(t)) {\n return map((info) => [name(info), info, map((prop) => prop[1], getUnionCaseFields(info))], getUnionCases(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CMapType$007C_$007C(t) {\n if (fullName(t).startsWith(\"Microsoft.FSharp.Collections.FSharpMap`2\")) {\n const genArgs = getGenerics(t);\n return [item(0, genArgs), item(1, genArgs)];\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CListType$007C_$007C(t) {\n if (fullName(t).startsWith(\"Microsoft.FSharp.Collections.FSharpList`1\")) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function flattenFuncTypes(typeDef) {\n return toArray(delay(() => {\n if (isFunction(typeDef)) {\n const patternInput = getFunctionElements(typeDef);\n return append(flattenFuncTypes(patternInput[0]), delay(() => flattenFuncTypes(patternInput[1])));\n }\n else {\n return singleton(typeDef);\n }\n }));\n}\n\nexport function $007CFuncType$007C_$007C(t) {\n if (isFunction(t)) {\n return flattenFuncTypes(t);\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CArrayType$007C_$007C(t) {\n if (isArray(t)) {\n return getElementType(t);\n }\n else {\n return undefined;\n }\n}\n\nexport function $007COptionType$007C_$007C(t) {\n if (fullName(t).startsWith(\"Microsoft.FSharp.Core.FSharpOption`1\")) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CTupleType$007C_$007C(t) {\n if (isTuple(t)) {\n return getTupleElements(t);\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CSeqType$007C_$007C(t) {\n if (fullName(t).startsWith(\"System.Collections.Generic.IEnumerable`1\")) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CDictionaryType$007C_$007C(t) {\n if (fullName(t).startsWith(\"System.Collections.Generic.Dictionary\")) {\n const genArgs = getGenerics(t);\n return [item(0, genArgs), item(1, genArgs)];\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CResizeArrayType$007C_$007C(t) {\n if (fullName(t).startsWith(\"System.Collections.Generic.List\")) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CHashSetType$007C_$007C(t) {\n if (fullName(t).startsWith(\"System.Collections.Generic.HashSet\")) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CAsyncType$007C_$007C(t) {\n if (fullName(t).startsWith(\"Microsoft.FSharp.Control.FSharpAsync`1\")) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CPromiseType$007C_$007C(t) {\n if (fullName(t).startsWith(\"Fable.Core.JS.Promise`1\")) {\n return item(0, getGenerics(t));\n }\n else {\n return undefined;\n }\n}\n\nfunction lazyToDelayed(l, unitVar) {\n return l.Value;\n}\n\nexport function $007CEnumType$007C_$007C(t) {\n if (isEnum(t)) {\n return getEnumUnderlyingType(t);\n }\n else {\n return undefined;\n }\n}\n\nfunction _createTypeInfo(resolvedType) {\n let l, l_3, l_4, l_5, l_6, l_7, l_8, l_9, l_10, l_11, l_12, l_13, l_14, l_15, l_16, l_17;\n const activePatternResult = $007CPrimitiveType$007C_$007C(resolvedType);\n if (activePatternResult != null) {\n const typeInfo = activePatternResult;\n return typeInfo;\n }\n else {\n const activePatternResult_1 = $007CFuncType$007C_$007C(resolvedType);\n if (activePatternResult_1 != null) {\n const types = activePatternResult_1;\n return new TypeInfo(37, [(l = (new Lazy(() => map(createTypeInfo, types))), () => lazyToDelayed(l, undefined))]);\n }\n else {\n const activePatternResult_2 = $007CRecordType$007C_$007C(resolvedType);\n if (activePatternResult_2 != null) {\n const fields = activePatternResult_2;\n const l_1 = new Lazy(() => [toArray(delay(() => collect((matchValue) => singleton(new RecordField(matchValue[1], createTypeInfo(matchValue[2]), matchValue[0])), fields))), resolvedType]);\n return new TypeInfo(39, [() => lazyToDelayed(l_1, undefined)]);\n }\n else {\n const activePatternResult_3 = $007CUnionType$007C_$007C(resolvedType);\n if (activePatternResult_3 != null) {\n const cases = activePatternResult_3;\n const l_2 = new Lazy(() => [toArray(delay(() => collect((matchValue_1) => singleton(new UnionCase(matchValue_1[0], map(createTypeInfo, matchValue_1[2]), matchValue_1[1])), cases))), resolvedType]);\n return new TypeInfo(40, [() => lazyToDelayed(l_2, undefined)]);\n }\n else {\n const activePatternResult_4 = $007CEnumType$007C_$007C(resolvedType);\n if (activePatternResult_4 != null) {\n const elemType = activePatternResult_4;\n return new TypeInfo(38, [(l_3 = (new Lazy(() => [createTypeInfo(elemType), resolvedType])), () => lazyToDelayed(l_3, undefined))]);\n }\n else {\n const activePatternResult_5 = $007CListType$007C_$007C(resolvedType);\n if (activePatternResult_5 != null) {\n const elemType_1 = activePatternResult_5;\n return new TypeInfo(28, [(l_4 = (new Lazy(() => createTypeInfo(elemType_1))), () => lazyToDelayed(l_4, undefined))]);\n }\n else {\n const activePatternResult_6 = $007CResizeArrayType$007C_$007C(resolvedType);\n if (activePatternResult_6 != null) {\n const elemType_2 = activePatternResult_6;\n return new TypeInfo(35, [(l_5 = (new Lazy(() => createTypeInfo(elemType_2))), () => lazyToDelayed(l_5, undefined))]);\n }\n else {\n const activePatternResult_7 = $007CHashSetType$007C_$007C(resolvedType);\n if (activePatternResult_7 != null) {\n const elemType_3 = activePatternResult_7;\n return new TypeInfo(36, [(l_6 = (new Lazy(() => createTypeInfo(elemType_3))), () => lazyToDelayed(l_6, undefined))]);\n }\n else {\n const activePatternResult_8 = $007CArrayType$007C_$007C(resolvedType);\n if (activePatternResult_8 != null) {\n const elemType_4 = activePatternResult_8;\n return new TypeInfo(30, [(l_7 = (new Lazy(() => createTypeInfo(elemType_4))), () => lazyToDelayed(l_7, undefined))]);\n }\n else {\n const activePatternResult_9 = $007CTupleType$007C_$007C(resolvedType);\n if (activePatternResult_9 != null) {\n const types_1 = activePatternResult_9;\n return new TypeInfo(32, [(l_8 = (new Lazy(() => map(createTypeInfo, types_1))), () => lazyToDelayed(l_8, undefined))]);\n }\n else {\n const activePatternResult_10 = $007COptionType$007C_$007C(resolvedType);\n if (activePatternResult_10 != null) {\n const elemType_5 = activePatternResult_10;\n return new TypeInfo(27, [(l_9 = (new Lazy(() => createTypeInfo(elemType_5))), () => lazyToDelayed(l_9, undefined))]);\n }\n else {\n const activePatternResult_11 = $007CNullable$007C_$007C(resolvedType);\n if (activePatternResult_11 != null) {\n const elemType_6 = activePatternResult_11;\n return new TypeInfo(27, [(l_10 = (new Lazy(() => createTypeInfo(elemType_6))), () => lazyToDelayed(l_10, undefined))]);\n }\n else {\n const activePatternResult_12 = $007CSetType$007C_$007C(resolvedType);\n if (activePatternResult_12 != null) {\n const elemType_7 = activePatternResult_12;\n return new TypeInfo(29, [(l_11 = (new Lazy(() => createTypeInfo(elemType_7))), () => lazyToDelayed(l_11, undefined))]);\n }\n else {\n const activePatternResult_13 = $007CMapType$007C_$007C(resolvedType);\n if (activePatternResult_13 != null) {\n const keyType = activePatternResult_13[0];\n const valueType = activePatternResult_13[1];\n return new TypeInfo(33, [(l_12 = (new Lazy(() => [createTypeInfo(keyType), createTypeInfo(valueType)])), () => lazyToDelayed(l_12, undefined))]);\n }\n else {\n const activePatternResult_14 = $007CDictionaryType$007C_$007C(resolvedType);\n if (activePatternResult_14 != null) {\n const keyType_1 = activePatternResult_14[0];\n const valueType_1 = activePatternResult_14[1];\n return new TypeInfo(34, [(l_13 = (new Lazy(() => [createTypeInfo(keyType_1), createTypeInfo(valueType_1), valueType_1])), () => lazyToDelayed(l_13, undefined))]);\n }\n else {\n const activePatternResult_15 = $007CSeqType$007C_$007C(resolvedType);\n if (activePatternResult_15 != null) {\n const elemType_8 = activePatternResult_15;\n return new TypeInfo(31, [(l_14 = (new Lazy(() => createTypeInfo(elemType_8))), () => lazyToDelayed(l_14, undefined))]);\n }\n else {\n const activePatternResult_16 = $007CAsyncType$007C_$007C(resolvedType);\n if (activePatternResult_16 != null) {\n const elemType_9 = activePatternResult_16;\n return new TypeInfo(25, [(l_15 = (new Lazy(() => createTypeInfo(elemType_9))), () => lazyToDelayed(l_15, undefined))]);\n }\n else {\n const activePatternResult_17 = $007CPromiseType$007C_$007C(resolvedType);\n if (activePatternResult_17 != null) {\n const elemType_10 = activePatternResult_17;\n return new TypeInfo(26, [(l_16 = (new Lazy(() => createTypeInfo(elemType_10))), () => lazyToDelayed(l_16, undefined))]);\n }\n else {\n return new TypeInfo(24, [(l_17 = (new Lazy(() => resolvedType)), () => lazyToDelayed(l_17, undefined))]);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}\n\nconst typeInfoCache = new Dictionary([], {\n Equals: equals,\n GetHashCode: structuralHash,\n});\n\nexport function createTypeInfo(resolvedType) {\n let matchValue;\n let outArg = defaultOf();\n matchValue = [tryGetValue(typeInfoCache, resolvedType, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n const ti_1 = _createTypeInfo(resolvedType);\n if ((!isNullOrEmpty(fullName(resolvedType)) && !fullName(resolvedType).endsWith(\"`1[]\")) && !fullName(resolvedType).endsWith(\"`2[]\")) {\n typeInfoCache.set(resolvedType, ti_1);\n return ti_1;\n }\n else {\n return ti_1;\n }\n }\n}\n\n/**\n * returns whether a type is primitive\n */\nexport function isPrimitive(_arg) {\n switch (_arg.tag) {\n case 0:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 15:\n case 16:\n case 17:\n case 18:\n case 19:\n case 21:\n case 27:\n return true;\n default:\n return false;\n }\n}\n\n/**\n * returns whether the discrimiated union type is like a enum\n */\nexport function enumUnion(_arg) {\n if (_arg.tag === 40) {\n const array = _arg.fields[0]()[0];\n return array.every((case$) => (case$.CaseTypes.length === 0));\n }\n else {\n return false;\n }\n}\n\n","import { HttpResponse, HttpRequest, RequestBody, HttpMethod as HttpMethod_1 } from \"./Types.fs.js\";\nimport { empty } from \"../fable-library-js.4.24.0/List.js\";\nimport { singleton } from \"../fable-library-js.4.24.0/AsyncBuilder.js\";\nimport { isCancellationRequested, fromContinuations, cancellationToken } from \"../fable-library-js.4.24.0/Async.js\";\nimport { disposeSafe, getEnumerator } from \"../fable-library-js.4.24.0/Util.js\";\nimport { some } from \"../fable-library-js.4.24.0/Option.js\";\nimport { InternalUtilities_toUInt8Array } from \"./Extensions.fs.js\";\n\nconst defaultRequestConfig = new HttpRequest(new HttpMethod_1(0, []), \"/\", empty(), new RequestBody(0, []), false);\n\n/**\n * Creates a GET request to the specified url\n */\nexport function get$(url) {\n return new HttpRequest(new HttpMethod_1(0, []), url, defaultRequestConfig.Headers, defaultRequestConfig.RequestBody, defaultRequestConfig.WithCredentials);\n}\n\n/**\n * Creates a POST request to the specified url\n */\nexport function post(url) {\n return new HttpRequest(new HttpMethod_1(1, []), url, defaultRequestConfig.Headers, defaultRequestConfig.RequestBody, defaultRequestConfig.WithCredentials);\n}\n\n/**\n * Creates a request using the given method and url\n */\nexport function request(method, url) {\n return new HttpRequest(method, url, defaultRequestConfig.Headers, defaultRequestConfig.RequestBody, defaultRequestConfig.WithCredentials);\n}\n\n/**\n * Appends a request with headers as key-value pairs\n */\nexport function withHeaders(headers, req) {\n return new HttpRequest(req.HttpMethod, req.Url, headers, req.RequestBody, req.WithCredentials);\n}\n\n/**\n * Sets the withCredentials option on the XHR request, useful for CORS requests\n */\nexport function withCredentials(withCredentials_1, req) {\n return new HttpRequest(req.HttpMethod, req.Url, req.Headers, req.RequestBody, withCredentials_1);\n}\n\n/**\n * Appends a request with string body content\n */\nexport function withBody(body, req) {\n return new HttpRequest(req.HttpMethod, req.Url, req.Headers, body, req.WithCredentials);\n}\n\nfunction sendAndRead(preparation, resultMapper, req) {\n return singleton.Delay(() => singleton.Bind(cancellationToken(), (_arg) => {\n const token = _arg;\n const request_1 = fromContinuations((tupledArg) => {\n const xhr = new XMLHttpRequest();\n if (req.HttpMethod.tag === 1) {\n xhr.open(\"POST\", req.Url);\n }\n else {\n xhr.open(\"GET\", req.Url);\n }\n if (preparation != null) {\n preparation(xhr);\n }\n const cancellationTokenRegistration = token.register(() => {\n xhr.abort();\n tupledArg[2](new Error(token));\n });\n const enumerator = getEnumerator(req.Headers);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n xhr.setRequestHeader(forLoopVar[0], forLoopVar[1]);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n xhr.withCredentials = req.WithCredentials;\n xhr.onreadystatechange = (() => {\n const matchValue_1 = xhr.readyState | 0;\n let matchResult;\n if (matchValue_1 === 4) {\n if (!isCancellationRequested(token)) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n disposeSafe(cancellationTokenRegistration);\n tupledArg[0](resultMapper(xhr));\n break;\n }\n case 1: {\n break;\n }\n }\n });\n const matchValue_2 = req.RequestBody;\n switch (matchValue_2.tag) {\n case 1: {\n xhr.send(some(matchValue_2.fields[0]));\n break;\n }\n case 2: {\n xhr.send(some(InternalUtilities_toUInt8Array(matchValue_2.fields[0])));\n break;\n }\n default:\n xhr.send();\n }\n });\n return singleton.ReturnFrom(request_1);\n }));\n}\n\nexport const send = (req) => sendAndRead(undefined, (xhr) => (new HttpResponse(xhr.status, xhr.responseText)), req);\n\nexport const sendAndReadBinary = (req) => sendAndRead((xhr) => {\n xhr.responseType = \"arraybuffer\";\n}, (xhr_1) => [new Uint8Array(xhr_1.response), xhr_1.status], req);\n\n","\"use strict\";\r\n\r\nexport function Parsimmon(action) {\r\n if (!(this instanceof Parsimmon)) {\r\n return new Parsimmon(action);\r\n }\r\n this._ = action;\r\n}\r\n\r\nvar _ = Parsimmon.prototype;\r\n\r\nexport function times(n, f) {\r\n var i = 0;\r\n for (i; i < n; i++) {\r\n f(i);\r\n }\r\n}\r\n\r\nexport function forEach(f, arr) {\r\n times(arr.length, function(i) {\r\n f(arr[i], i, arr);\r\n });\r\n}\r\n\r\nexport function reduce(f, seed, arr) {\r\n forEach(function(elem, i, arr) {\r\n seed = f(seed, elem, i, arr);\r\n }, arr);\r\n return seed;\r\n}\r\n\r\nexport function map(f, arr) {\r\n return reduce(\r\n function(acc, elem, i, a) {\r\n return acc.concat([f(elem, i, a)]);\r\n },\r\n [],\r\n arr\r\n );\r\n}\r\n\r\nexport function lshiftBuffer(input) {\r\n var asTwoBytes = reduce(\r\n function(a, v, i, b) {\r\n return a.concat(\r\n i === b.length - 1\r\n ? Buffer.from([v, 0]).readUInt16BE(0)\r\n : b.readUInt16BE(i)\r\n );\r\n },\r\n [],\r\n input\r\n );\r\n return Buffer.from(\r\n map(function(x) {\r\n return ((x << 1) & 0xffff) >> 8;\r\n }, asTwoBytes)\r\n );\r\n}\r\n\r\nfunction consumeBitsFromBuffer(n, input) {\r\n var state = { v: 0, buf: input };\r\n times(n, function() {\r\n state = {\r\n v: (state.v << 1) | bitPeekBuffer(state.buf),\r\n buf: lshiftBuffer(state.buf)\r\n };\r\n });\r\n return state;\r\n}\r\n\r\nfunction bitPeekBuffer(input) {\r\n return input[0] >> 7;\r\n}\r\n\r\nexport function sum(numArr) {\r\n return reduce(\r\n function(x, y) {\r\n return x + y;\r\n },\r\n 0,\r\n numArr\r\n );\r\n}\r\n\r\nexport function find(pred, arr) {\r\n return reduce(\r\n function(found, elem) {\r\n return found || (pred(elem) ? elem : found);\r\n },\r\n null,\r\n arr\r\n );\r\n}\r\n\r\nfunction bufferExists() {\r\n return typeof Buffer !== \"undefined\";\r\n}\r\n\r\nfunction ensureBuffer() {\r\n if (!bufferExists()) {\r\n throw new Error(\r\n \"Buffer global does not exist; please consider using https://github.com/feross/buffer if you are running Parsimmon in a browser.\"\r\n );\r\n }\r\n}\r\n\r\nfunction bitSeq(alignments) {\r\n ensureBuffer();\r\n var totalBits = sum(alignments);\r\n if (totalBits % 8 !== 0) {\r\n throw new Error(\r\n \"The bits [\" +\r\n alignments.join(\", \") +\r\n \"] add up to \" +\r\n totalBits +\r\n \" which is not an even number of bytes; the total should be divisible by 8\"\r\n );\r\n }\r\n var bytes = totalBits / 8;\r\n\r\n var tooBigRange = find(function(x) {\r\n return x > 48;\r\n }, alignments);\r\n if (tooBigRange) {\r\n throw new Error(\r\n tooBigRange + \" bit range requested exceeds 48 bit (6 byte) Number max.\"\r\n );\r\n }\r\n\r\n return new Parsimmon(function(input, i) {\r\n var newPos = bytes + i;\r\n if (newPos > input.length) {\r\n return makeFailure(i, bytes.toString() + \" bytes\");\r\n }\r\n return makeSuccess(\r\n newPos,\r\n reduce(\r\n function(acc, bits) {\r\n var state = consumeBitsFromBuffer(bits, acc.buf);\r\n return {\r\n coll: acc.coll.concat(state.v),\r\n buf: state.buf\r\n };\r\n },\r\n { coll: [], buf: input.slice(i, newPos) },\r\n alignments\r\n ).coll\r\n );\r\n });\r\n}\r\n\r\nfunction bitSeqObj(namedAlignments) {\r\n ensureBuffer();\r\n var seenKeys = {};\r\n var totalKeys = 0;\r\n var fullAlignments = map(function(item) {\r\n if (isArray(item)) {\r\n var pair = item;\r\n if (pair.length !== 2) {\r\n throw new Error(\r\n \"[\" +\r\n pair.join(\", \") +\r\n \"] should be length 2, got length \" +\r\n pair.length\r\n );\r\n }\r\n assertString(pair[0]);\r\n assertNumber(pair[1]);\r\n if (Object.prototype.hasOwnProperty.call(seenKeys, pair[0])) {\r\n throw new Error(\"duplicate key in bitSeqObj: \" + pair[0]);\r\n }\r\n seenKeys[pair[0]] = true;\r\n totalKeys++;\r\n return pair;\r\n } else {\r\n assertNumber(item);\r\n return [null, item];\r\n }\r\n }, namedAlignments);\r\n if (totalKeys < 1) {\r\n throw new Error(\r\n \"bitSeqObj expects at least one named pair, got [\" +\r\n namedAlignments.join(\", \") +\r\n \"]\"\r\n );\r\n }\r\n var namesOnly = map(function(pair) {\r\n return pair[0];\r\n }, fullAlignments);\r\n var alignmentsOnly = map(function(pair) {\r\n return pair[1];\r\n }, fullAlignments);\r\n\r\n return bitSeq(alignmentsOnly).map(function(parsed) {\r\n var namedParsed = map(function(name, i) {\r\n return [name, parsed[i]];\r\n }, namesOnly);\r\n\r\n return reduce(\r\n function(obj, kv) {\r\n if (kv[0] !== null) {\r\n obj[kv[0]] = kv[1];\r\n }\r\n return obj;\r\n },\r\n {},\r\n namedParsed\r\n );\r\n });\r\n}\r\n\r\nfunction parseBufferFor(other, length) {\r\n ensureBuffer();\r\n return new Parsimmon(function(input, i) {\r\n if (i + length > input.length) {\r\n return makeFailure(i, length + \" bytes for \" + other);\r\n }\r\n return makeSuccess(i + length, input.slice(i, i + length));\r\n });\r\n}\r\n\r\nfunction parseBuffer(length) {\r\n return parseBufferFor(\"buffer\", length).map(function(unsafe) {\r\n return Buffer.from(unsafe);\r\n });\r\n}\r\n\r\nfunction encodedString(encoding, length) {\r\n return parseBufferFor(\"string\", length).map(function(buff) {\r\n return buff.toString(encoding);\r\n });\r\n}\r\n\r\nfunction isInteger(value) {\r\n return typeof value === \"number\" && Math.floor(value) === value;\r\n}\r\n\r\nfunction assertValidIntegerByteLengthFor(who, length) {\r\n if (!isInteger(length) || length < 0 || length > 6) {\r\n throw new Error(who + \" requires integer length in range [0, 6].\");\r\n }\r\n}\r\n\r\nfunction uintBE(length) {\r\n assertValidIntegerByteLengthFor(\"uintBE\", length);\r\n return parseBufferFor(\"uintBE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readUIntBE(0, length);\r\n });\r\n}\r\n\r\nfunction uintLE(length) {\r\n assertValidIntegerByteLengthFor(\"uintLE\", length);\r\n return parseBufferFor(\"uintLE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readUIntLE(0, length);\r\n });\r\n}\r\n\r\nfunction intBE(length) {\r\n assertValidIntegerByteLengthFor(\"intBE\", length);\r\n return parseBufferFor(\"intBE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readIntBE(0, length);\r\n });\r\n}\r\n\r\nfunction intLE(length) {\r\n assertValidIntegerByteLengthFor(\"intLE\", length);\r\n return parseBufferFor(\"intLE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readIntLE(0, length);\r\n });\r\n}\r\n\r\nfunction floatBE() {\r\n return parseBufferFor(\"floatBE\", 4).map(function(buff) {\r\n return buff.readFloatBE(0);\r\n });\r\n}\r\n\r\nfunction floatLE() {\r\n return parseBufferFor(\"floatLE\", 4).map(function(buff) {\r\n return buff.readFloatLE(0);\r\n });\r\n}\r\n\r\nfunction doubleBE() {\r\n return parseBufferFor(\"doubleBE\", 8).map(function(buff) {\r\n return buff.readDoubleBE(0);\r\n });\r\n}\r\n\r\nfunction doubleLE() {\r\n return parseBufferFor(\"doubleLE\", 8).map(function(buff) {\r\n return buff.readDoubleLE(0);\r\n });\r\n}\r\n\r\nfunction toArray(arrLike) {\r\n return Array.prototype.slice.call(arrLike);\r\n}\r\n// -*- Helpers -*-\r\n\r\nfunction isParser(obj) {\r\n return obj instanceof Parsimmon;\r\n}\r\n\r\nfunction isArray(x) {\r\n return {}.toString.call(x) === \"[object Array]\";\r\n}\r\n\r\nfunction isBuffer(x) {\r\n /* global Buffer */\r\n return bufferExists() && Buffer.isBuffer(x);\r\n}\r\n\r\nexport function makeSuccess(index, value) {\r\n return {\r\n status: true,\r\n index: index,\r\n value: value,\r\n furthest: -1,\r\n expected: []\r\n };\r\n}\r\n\r\nexport function makeFailure(index, expected) {\r\n if (!isArray(expected)) {\r\n expected = [expected];\r\n }\r\n return {\r\n status: false,\r\n index: -1,\r\n value: null,\r\n furthest: index,\r\n expected: expected\r\n };\r\n}\r\n\r\nfunction mergeReplies(result, last) {\r\n if (!last) {\r\n return result;\r\n }\r\n if (result.furthest > last.furthest) {\r\n return result;\r\n }\r\n var expected =\r\n result.furthest === last.furthest\r\n ? union(result.expected, last.expected)\r\n : last.expected;\r\n return {\r\n status: result.status,\r\n index: result.index,\r\n value: result.value,\r\n furthest: last.furthest,\r\n expected: expected\r\n };\r\n}\r\n\r\nfunction makeLineColumnIndex(input, i) {\r\n if (isBuffer(input)) {\r\n return {\r\n offset: i,\r\n line: -1,\r\n column: -1\r\n };\r\n }\r\n var lines = input.slice(0, i).split(\"\\n\");\r\n // Note that unlike the character offset, the line and column offsets are\r\n // 1-based.\r\n var lineWeAreUpTo = lines.length;\r\n var columnWeAreUpTo = lines[lines.length - 1].length + 1;\r\n return {\r\n offset: i,\r\n line: lineWeAreUpTo,\r\n column: columnWeAreUpTo\r\n };\r\n}\r\n\r\n// Returns the sorted set union of two arrays of strings\r\nfunction union(xs, ys) {\r\n var obj = {};\r\n for (var i = 0; i < xs.length; i++) {\r\n obj[xs[i]] = true;\r\n }\r\n for (var j = 0; j < ys.length; j++) {\r\n obj[ys[j]] = true;\r\n }\r\n var keys = [];\r\n for (var k in obj) {\r\n if ({}.hasOwnProperty.call(obj, k)) {\r\n keys.push(k);\r\n }\r\n }\r\n keys.sort();\r\n return keys;\r\n}\r\n\r\nfunction assertParser(p) {\r\n if (!isParser(p)) {\r\n throw new Error(\"not a parser: \" + p);\r\n }\r\n}\r\n\r\nfunction get(input, i) {\r\n if (typeof input === \"string\") {\r\n return input.charAt(i);\r\n }\r\n return input[i];\r\n}\r\n\r\n// TODO[ES5]: Switch to Array.isArray eventually.\r\nfunction assertArray(x) {\r\n if (!isArray(x)) {\r\n throw new Error(\"not an array: \" + x);\r\n }\r\n}\r\n\r\nfunction assertNumber(x) {\r\n if (typeof x !== \"number\") {\r\n throw new Error(\"not a number: \" + x);\r\n }\r\n}\r\n\r\nfunction assertRegexp(x) {\r\n if (!(x instanceof RegExp)) {\r\n throw new Error(\"not a regexp: \" + x);\r\n }\r\n var f = flags(x);\r\n for (var i = 0; i < f.length; i++) {\r\n var c = f.charAt(i);\r\n // Only allow regexp flags [imu] for now, since [g] and [y] specifically\r\n // mess up Parsimmon. If more non-stateful regexp flags are added in the\r\n // future, this will need to be revisited.\r\n if (c !== \"i\" && c !== \"m\" && c !== \"u\") {\r\n throw new Error('unsupported regexp flag \"' + c + '\": ' + x);\r\n }\r\n }\r\n}\r\n\r\nfunction assertFunction(x) {\r\n if (typeof x !== \"function\") {\r\n throw new Error(\"not a function: \" + x);\r\n }\r\n}\r\n\r\nfunction assertString(x) {\r\n if (typeof x !== \"string\") {\r\n throw new Error(\"not a string: \" + x);\r\n }\r\n}\r\n\r\n// -*- Error Formatting -*-\r\n\r\nvar linesBeforeStringError = 2;\r\nvar linesAfterStringError = 3;\r\nvar bytesPerLine = 8;\r\nvar bytesBefore = bytesPerLine * 5;\r\nvar bytesAfter = bytesPerLine * 4;\r\nvar defaultLinePrefix = \" \";\r\n\r\nexport function repeat(string, amount) {\r\n return new Array(amount + 1).join(string);\r\n}\r\n\r\nexport function formatExpected(expected) {\r\n if (expected.length === 1) {\r\n return \"Expected:\\n\\n\" + expected[0];\r\n }\r\n return \"Expected one of the following: \\n\\n\" + expected.join(\", \");\r\n}\r\n\r\nexport function leftPad(str, pad, char) {\r\n var add = pad - str.length;\r\n if (add <= 0) {\r\n return str;\r\n }\r\n return repeat(char, add) + str;\r\n}\r\n\r\nfunction toChunks(arr, chunkSize) {\r\n var length = arr.length;\r\n var chunks = [];\r\n var chunkIndex = 0;\r\n\r\n if (length <= chunkSize) {\r\n return [arr.slice()];\r\n }\r\n\r\n for (var i = 0; i < length; i++) {\r\n if (!chunks[chunkIndex]) {\r\n chunks.push([]);\r\n }\r\n\r\n chunks[chunkIndex].push(arr[i]);\r\n\r\n if ((i + 1) % chunkSize === 0) {\r\n chunkIndex++;\r\n }\r\n }\r\n\r\n return chunks;\r\n}\r\n\r\n// Get a range of indexes including `i`-th element and `before` and `after` amount of elements from `arr`.\r\nexport function rangeFromIndexAndOffsets(i, before, after, length) {\r\n return {\r\n // Guard against the negative upper bound for lines included in the output.\r\n from: i - before > 0 ? i - before : 0,\r\n to: i + after > length ? length : i + after\r\n };\r\n}\r\n\r\nexport function byteRangeToRange(byteRange) {\r\n // Exception for inputs smaller than `bytesPerLine`\r\n if (byteRange.from === 0 && byteRange.to === 1) {\r\n return {\r\n from: byteRange.from,\r\n to: byteRange.to\r\n };\r\n }\r\n\r\n return {\r\n from: byteRange.from / bytesPerLine,\r\n // Round `to`, so we don't get float if the amount of bytes is not divisible by `bytesPerLine`\r\n to: Math.floor(byteRange.to / bytesPerLine)\r\n };\r\n}\r\n\r\nexport function formatGot(input, error) {\r\n var index = error.index;\r\n var i = index.offset;\r\n\r\n var verticalMarkerLength = 1;\r\n var column;\r\n var lineWithErrorIndex;\r\n var lines;\r\n var lineRange;\r\n var lastLineNumberLabelLength;\r\n\r\n if (i === input.length) {\r\n return \"Got the end of the input\";\r\n }\r\n\r\n if (isBuffer(input)) {\r\n var byteLineWithErrorIndex = i - (i % bytesPerLine);\r\n var columnByteIndex = i - byteLineWithErrorIndex;\r\n var byteRange = rangeFromIndexAndOffsets(\r\n byteLineWithErrorIndex,\r\n bytesBefore,\r\n bytesAfter + bytesPerLine,\r\n input.length\r\n );\r\n var bytes = input.slice(byteRange.from, byteRange.to);\r\n var bytesInChunks = toChunks(bytes.toJSON().data, bytesPerLine);\r\n\r\n var byteLines = map(function(byteRow) {\r\n return map(function(byteValue) {\r\n // Prefix byte values with a `0` if they are shorter than 2 characters.\r\n return leftPad(byteValue.toString(16), 2, \"0\");\r\n }, byteRow);\r\n }, bytesInChunks);\r\n\r\n lineRange = byteRangeToRange(byteRange);\r\n lineWithErrorIndex = byteLineWithErrorIndex / bytesPerLine;\r\n column = columnByteIndex * 3;\r\n\r\n // Account for an extra space.\r\n if (columnByteIndex >= 4) {\r\n column += 1;\r\n }\r\n\r\n verticalMarkerLength = 2;\r\n lines = map(function(byteLine) {\r\n return byteLine.length <= 4\r\n ? byteLine.join(\" \")\r\n : byteLine.slice(0, 4).join(\" \") + \" \" + byteLine.slice(4).join(\" \");\r\n }, byteLines);\r\n lastLineNumberLabelLength = (\r\n (lineRange.to > 0 ? lineRange.to - 1 : lineRange.to) * 8\r\n ).toString(16).length;\r\n\r\n if (lastLineNumberLabelLength < 2) {\r\n lastLineNumberLabelLength = 2;\r\n }\r\n } else {\r\n var inputLines = input.split(/\\r\\n|[\\n\\r\\u2028\\u2029]/);\r\n column = index.column - 1;\r\n lineWithErrorIndex = index.line - 1;\r\n lineRange = rangeFromIndexAndOffsets(\r\n lineWithErrorIndex,\r\n linesBeforeStringError,\r\n linesAfterStringError,\r\n inputLines.length\r\n );\r\n\r\n lines = inputLines.slice(lineRange.from, lineRange.to);\r\n lastLineNumberLabelLength = lineRange.to.toString().length;\r\n }\r\n\r\n var lineWithErrorCurrentIndex = lineWithErrorIndex - lineRange.from;\r\n\r\n if (isBuffer(input)) {\r\n lastLineNumberLabelLength = (\r\n (lineRange.to > 0 ? lineRange.to - 1 : lineRange.to) * 8\r\n ).toString(16).length;\r\n\r\n if (lastLineNumberLabelLength < 2) {\r\n lastLineNumberLabelLength = 2;\r\n }\r\n }\r\n\r\n var linesWithLineNumbers = reduce(\r\n function(acc, lineSource, index) {\r\n var isLineWithError = index === lineWithErrorCurrentIndex;\r\n var prefix = isLineWithError ? \"> \" : defaultLinePrefix;\r\n var lineNumberLabel;\r\n\r\n if (isBuffer(input)) {\r\n lineNumberLabel = leftPad(\r\n ((lineRange.from + index) * 8).toString(16),\r\n lastLineNumberLabelLength,\r\n \"0\"\r\n );\r\n } else {\r\n lineNumberLabel = leftPad(\r\n (lineRange.from + index + 1).toString(),\r\n lastLineNumberLabelLength,\r\n \" \"\r\n );\r\n }\r\n\r\n return [].concat(\r\n acc,\r\n [prefix + lineNumberLabel + \" | \" + lineSource],\r\n isLineWithError\r\n ? [\r\n defaultLinePrefix +\r\n repeat(\" \", lastLineNumberLabelLength) +\r\n \" | \" +\r\n leftPad(\"\", column, \" \") +\r\n repeat(\"^\", verticalMarkerLength)\r\n ]\r\n : []\r\n );\r\n },\r\n [],\r\n lines\r\n );\r\n\r\n return linesWithLineNumbers.join(\"\\n\");\r\n}\r\n\r\nexport function formatError(input, error) {\r\n return [\r\n \"\\n\",\r\n \"-- PARSING FAILED \" + repeat(\"-\", 50),\r\n \"\\n\\n\",\r\n formatGot(input, error),\r\n \"\\n\\n\",\r\n formatExpected(error.expected),\r\n \"\\n\"\r\n ].join(\"\");\r\n}\r\n\r\nexport function flags(re) {\r\n var s = \"\" + re;\r\n return s.slice(s.lastIndexOf(\"/\") + 1);\r\n}\r\n\r\nexport function anchoredRegexp(re) {\r\n return RegExp(\"^(?:\" + re.source + \")\", flags(re));\r\n}\r\n\r\n// -*- Combinators -*-\r\n\r\nexport function seq() {\r\n var parsers = [].slice.call(arguments);\r\n var numParsers = parsers.length;\r\n for (var j = 0; j < numParsers; j += 1) {\r\n assertParser(parsers[j]);\r\n }\r\n return Parsimmon(function(input, i) {\r\n var result;\r\n var accum = new Array(numParsers);\r\n for (var j = 0; j < numParsers; j += 1) {\r\n result = mergeReplies(parsers[j]._(input, i), result);\r\n if (!result.status) {\r\n return result;\r\n }\r\n accum[j] = result.value;\r\n i = result.index;\r\n }\r\n return mergeReplies(makeSuccess(i, accum), result);\r\n });\r\n}\r\n\r\nexport function seqObj() {\r\n var seenKeys = {};\r\n var totalKeys = 0;\r\n var parsers = toArray(arguments);\r\n var numParsers = parsers.length;\r\n for (var j = 0; j < numParsers; j += 1) {\r\n var p = parsers[j];\r\n if (isParser(p)) {\r\n continue;\r\n }\r\n if (isArray(p)) {\r\n var isWellFormed =\r\n p.length === 2 && typeof p[0] === \"string\" && isParser(p[1]);\r\n if (isWellFormed) {\r\n var key = p[0];\r\n if (Object.prototype.hasOwnProperty.call(seenKeys, key)) {\r\n throw new Error(\"seqObj: duplicate key \" + key);\r\n }\r\n seenKeys[key] = true;\r\n totalKeys++;\r\n continue;\r\n }\r\n }\r\n throw new Error(\r\n \"seqObj arguments must be parsers or [string, parser] array pairs.\"\r\n );\r\n }\r\n if (totalKeys === 0) {\r\n throw new Error(\"seqObj expects at least one named parser, found zero\");\r\n }\r\n return Parsimmon(function(input, i) {\r\n var result;\r\n var accum = {};\r\n for (var j = 0; j < numParsers; j += 1) {\r\n var name;\r\n var parser;\r\n if (isArray(parsers[j])) {\r\n name = parsers[j][0];\r\n parser = parsers[j][1];\r\n } else {\r\n name = null;\r\n parser = parsers[j];\r\n }\r\n result = mergeReplies(parser._(input, i), result);\r\n if (!result.status) {\r\n return result;\r\n }\r\n if (name) {\r\n accum[name] = result.value;\r\n }\r\n i = result.index;\r\n }\r\n return mergeReplies(makeSuccess(i, accum), result);\r\n });\r\n}\r\n\r\nexport function seqMap() {\r\n var args = [].slice.call(arguments);\r\n if (args.length === 0) {\r\n throw new Error(\"seqMap needs at least one argument\");\r\n }\r\n var mapper = args.pop();\r\n assertFunction(mapper);\r\n return seq.apply(null, args).map(function(results) {\r\n return mapper.apply(null, results);\r\n });\r\n}\r\n\r\n// TODO[ES5]: Revisit this with Object.keys and .bind.\r\nexport function createLanguage(parsers) {\r\n var language = {};\r\n for (var key in parsers) {\r\n if ({}.hasOwnProperty.call(parsers, key)) {\r\n (function(key) {\r\n var func = function() {\r\n return parsers[key](language);\r\n };\r\n language[key] = lazy(func);\r\n })(key);\r\n }\r\n }\r\n return language;\r\n}\r\n\r\nexport function alt() {\r\n var parsers = [].slice.call(arguments);\r\n var numParsers = parsers.length;\r\n if (numParsers === 0) {\r\n return fail(\"zero alternates\");\r\n }\r\n for (var j = 0; j < numParsers; j += 1) {\r\n assertParser(parsers[j]);\r\n }\r\n return Parsimmon(function(input, i) {\r\n var result;\r\n for (var j = 0; j < parsers.length; j += 1) {\r\n result = mergeReplies(parsers[j]._(input, i), result);\r\n if (result.status) {\r\n return result;\r\n }\r\n }\r\n return result;\r\n });\r\n}\r\n\r\nexport function sepBy(parser, separator) {\r\n // Argument asserted by sepBy1\r\n return sepBy1(parser, separator).or(succeed([]));\r\n}\r\n\r\nexport function sepBy1(parser, separator) {\r\n assertParser(parser);\r\n assertParser(separator);\r\n var pairs = separator.then(parser).many();\r\n return seqMap(parser, pairs, function(r, rs) {\r\n return [r].concat(rs);\r\n });\r\n}\r\n\r\n// -*- Core Parsing Methods -*-\r\n\r\n_.parse = function(input) {\r\n if (typeof input !== \"string\" && !isBuffer(input)) {\r\n throw new Error(\r\n \".parse must be called with a string or Buffer as its argument\"\r\n );\r\n }\r\n var result = this.skip(eof)._(input, 0);\r\n if (result.status) {\r\n return {\r\n status: true,\r\n value: result.value\r\n };\r\n }\r\n return {\r\n status: false,\r\n index: makeLineColumnIndex(input, result.furthest),\r\n expected: result.expected\r\n };\r\n};\r\n\r\n// -*- Other Methods -*-\r\n\r\n_.tryParse = function(str) {\r\n var result = this.parse(str);\r\n if (result.status) {\r\n return result.value;\r\n } else {\r\n var msg = formatError(str, result);\r\n var err = new Error(msg);\r\n err.type = \"ParsimmonError\";\r\n err.result = result;\r\n throw err;\r\n }\r\n};\r\n\r\n_.or = function(alternative) {\r\n return alt(this, alternative);\r\n};\r\n\r\n_.trim = function(parser) {\r\n return this.wrap(parser, parser);\r\n};\r\n\r\n_.wrap = function(leftParser, rightParser) {\r\n return seqMap(leftParser, this, rightParser, function(left, middle) {\r\n return middle;\r\n });\r\n};\r\n\r\n_.thru = function(wrapper) {\r\n return wrapper(this);\r\n};\r\n\r\n_.then = function(next) {\r\n assertParser(next);\r\n return seq(this, next).map(function(results) {\r\n return results[1];\r\n });\r\n};\r\n\r\n_.many = function() {\r\n var self = this;\r\n\r\n return Parsimmon(function(input, i) {\r\n var accum = [];\r\n var result = undefined;\r\n\r\n for (;;) {\r\n result = mergeReplies(self._(input, i), result);\r\n if (result.status) {\r\n if (i === result.index) {\r\n throw new Error(\r\n \"infinite loop detected in .many() parser --- calling .many() on \" +\r\n \"a parser which can accept zero characters is usually the cause\"\r\n );\r\n }\r\n i = result.index;\r\n accum.push(result.value);\r\n } else {\r\n return mergeReplies(makeSuccess(i, accum), result);\r\n }\r\n }\r\n });\r\n};\r\n\r\n_.tieWith = function(separator) {\r\n assertString(separator);\r\n return this.map(function(args) {\r\n assertArray(args);\r\n if (args.length) {\r\n assertString(args[0]);\r\n var s = args[0];\r\n for (var i = 1; i < args.length; i++) {\r\n assertString(args[i]);\r\n s += separator + args[i];\r\n }\r\n return s;\r\n } else {\r\n return \"\";\r\n }\r\n });\r\n};\r\n\r\n_.tie = function() {\r\n return this.tieWith(\"\");\r\n};\r\n\r\n_.times = function(min, max) {\r\n var self = this;\r\n if (arguments.length < 2) {\r\n max = min;\r\n }\r\n assertNumber(min);\r\n assertNumber(max);\r\n return Parsimmon(function(input, i) {\r\n var accum = [];\r\n var result = undefined;\r\n var prevResult = undefined;\r\n for (var times = 0; times < min; times += 1) {\r\n result = self._(input, i);\r\n prevResult = mergeReplies(result, prevResult);\r\n if (result.status) {\r\n i = result.index;\r\n accum.push(result.value);\r\n } else {\r\n return prevResult;\r\n }\r\n }\r\n for (; times < max; times += 1) {\r\n result = self._(input, i);\r\n prevResult = mergeReplies(result, prevResult);\r\n if (result.status) {\r\n i = result.index;\r\n accum.push(result.value);\r\n } else {\r\n break;\r\n }\r\n }\r\n return mergeReplies(makeSuccess(i, accum), prevResult);\r\n });\r\n};\r\n\r\n_.result = function(res) {\r\n return this.map(function() {\r\n return res;\r\n });\r\n};\r\n\r\n_.atMost = function(n) {\r\n return this.times(0, n);\r\n};\r\n\r\n_.atLeast = function(n) {\r\n return seqMap(this.times(n), this.many(), function(init, rest) {\r\n return init.concat(rest);\r\n });\r\n};\r\n\r\n_.map = function(fn) {\r\n assertFunction(fn);\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var result = self._(input, i);\r\n if (!result.status) {\r\n return result;\r\n }\r\n return mergeReplies(makeSuccess(result.index, fn(result.value)), result);\r\n });\r\n};\r\n\r\n_.contramap = function(fn) {\r\n assertFunction(fn);\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var result = self.parse(fn(input.slice(i)));\r\n if (!result.status) {\r\n return result;\r\n }\r\n return makeSuccess(i + input.length, result.value);\r\n });\r\n};\r\n\r\n_.promap = function(f, g) {\r\n assertFunction(f);\r\n assertFunction(g);\r\n return this.contramap(f).map(g);\r\n};\r\n\r\n_.skip = function(next) {\r\n return seq(this, next).map(function(results) {\r\n return results[0];\r\n });\r\n};\r\n\r\n_.mark = function() {\r\n return seqMap(index, this, index, function(start, value, end) {\r\n return {\r\n start: start,\r\n value: value,\r\n end: end\r\n };\r\n });\r\n};\r\n\r\n_.node = function(name) {\r\n return seqMap(index, this, index, function(start, value, end) {\r\n return {\r\n name: name,\r\n value: value,\r\n start: start,\r\n end: end\r\n };\r\n });\r\n};\r\n\r\n_.sepBy = function(separator) {\r\n return sepBy(this, separator);\r\n};\r\n\r\n_.sepBy1 = function(separator) {\r\n return sepBy1(this, separator);\r\n};\r\n\r\n_.lookahead = function(x) {\r\n return this.skip(lookahead(x));\r\n};\r\n\r\n_.notFollowedBy = function(x) {\r\n return this.skip(notFollowedBy(x));\r\n};\r\n\r\n_.desc = function(expected) {\r\n if (!isArray(expected)) {\r\n expected = [expected];\r\n }\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var reply = self._(input, i);\r\n if (!reply.status) {\r\n reply.expected = expected;\r\n }\r\n return reply;\r\n });\r\n};\r\n\r\n_.fallback = function(result) {\r\n return this.or(succeed(result));\r\n};\r\n\r\n_.ap = function(other) {\r\n return seqMap(other, this, function(f, x) {\r\n return f(x);\r\n });\r\n};\r\n\r\n_.chain = function(f) {\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var result = self._(input, i);\r\n if (!result.status) {\r\n return result;\r\n }\r\n var nextParser = f(result.value);\r\n return mergeReplies(nextParser._(input, result.index), result);\r\n });\r\n};\r\n\r\n// -*- Constructors -*-\r\n\r\nexport function string(str) {\r\n assertString(str);\r\n var expected = \"'\" + str + \"'\";\r\n return Parsimmon(function(input, i) {\r\n var j = i + str.length;\r\n var head = input.slice(i, j);\r\n if (head === str) {\r\n return makeSuccess(j, head);\r\n } else {\r\n return makeFailure(i, expected);\r\n }\r\n });\r\n}\r\n\r\nexport function byte(b) {\r\n ensureBuffer();\r\n assertNumber(b);\r\n if (b > 0xff) {\r\n throw new Error(\r\n \"Value specified to byte constructor (\" +\r\n b +\r\n \"=0x\" +\r\n b.toString(16) +\r\n \") is larger in value than a single byte.\"\r\n );\r\n }\r\n var expected = (b > 0xf ? \"0x\" : \"0x0\") + b.toString(16);\r\n return Parsimmon(function(input, i) {\r\n var head = get(input, i);\r\n if (head === b) {\r\n return makeSuccess(i + 1, head);\r\n } else {\r\n return makeFailure(i, expected);\r\n }\r\n });\r\n}\r\n\r\nexport function regexp(re, group) {\r\n assertRegexp(re);\r\n if (arguments.length >= 2) {\r\n assertNumber(group);\r\n } else {\r\n group = 0;\r\n }\r\n var anchored = anchoredRegexp(re);\r\n var expected = \"\" + re;\r\n return Parsimmon(function(input, i) {\r\n var match = anchored.exec(input.slice(i));\r\n if (match) {\r\n if (0 <= group && group <= match.length) {\r\n var fullMatch = match[0];\r\n var groupMatch = match[group];\r\n return makeSuccess(i + fullMatch.length, groupMatch);\r\n }\r\n var message =\r\n \"valid match group (0 to \" + match.length + \") in \" + expected;\r\n return makeFailure(i, message);\r\n }\r\n return makeFailure(i, expected);\r\n });\r\n}\r\n\r\nexport function succeed(value) {\r\n return Parsimmon(function(input, i) {\r\n return makeSuccess(i, value);\r\n });\r\n}\r\n\r\nexport function fail(expected) {\r\n return Parsimmon(function(input, i) {\r\n return makeFailure(i, expected);\r\n });\r\n}\r\n\r\nexport function lookahead(x) {\r\n if (isParser(x)) {\r\n return Parsimmon(function(input, i) {\r\n var result = x._(input, i);\r\n result.index = i;\r\n result.value = \"\";\r\n return result;\r\n });\r\n } else if (typeof x === \"string\") {\r\n return lookahead(string(x));\r\n } else if (x instanceof RegExp) {\r\n return lookahead(regexp(x));\r\n }\r\n throw new Error(\"not a string, regexp, or parser: \" + x);\r\n}\r\n\r\nexport function notFollowedBy(parser) {\r\n assertParser(parser);\r\n return Parsimmon(function(input, i) {\r\n var result = parser._(input, i);\r\n var text = input.slice(i, result.index);\r\n return result.status\r\n ? makeFailure(i, 'not \"' + text + '\"')\r\n : makeSuccess(i, null);\r\n });\r\n}\r\n\r\nexport function test(predicate) {\r\n assertFunction(predicate);\r\n return Parsimmon(function(input, i) {\r\n var char = get(input, i);\r\n if (i < input.length && predicate(char)) {\r\n return makeSuccess(i + 1, char);\r\n } else {\r\n return makeFailure(i, \"a character/byte matching \" + predicate);\r\n }\r\n });\r\n}\r\n\r\nexport function oneOf(str) {\r\n var expected = str.split(\"\");\r\n for (var idx = 0; idx < expected.length; idx++) {\r\n expected[idx] = \"'\" + expected[idx] + \"'\";\r\n }\r\n return test(function(ch) {\r\n return str.indexOf(ch) >= 0;\r\n }).desc(expected);\r\n}\r\n\r\nexport function noneOf(str) {\r\n return test(function(ch) {\r\n return str.indexOf(ch) < 0;\r\n }).desc(\"none of '\" + str + \"'\");\r\n}\r\n\r\nexport function custom(parsingFunction) {\r\n return Parsimmon(parsingFunction(makeSuccess, makeFailure));\r\n}\r\n\r\n// TODO[ES5]: Improve error message using JSON.stringify eventually.\r\nexport function range(begin, end) {\r\n return test(function(ch) {\r\n return begin <= ch && ch <= end;\r\n }).desc(begin + \"-\" + end);\r\n}\r\n\r\nexport function takeWhile(predicate) {\r\n assertFunction(predicate);\r\n\r\n return Parsimmon(function(input, i) {\r\n var j = i;\r\n while (j < input.length && predicate(get(input, j))) {\r\n j++;\r\n }\r\n return makeSuccess(j, input.slice(i, j));\r\n });\r\n}\r\n\r\nexport function lazy(desc, f) {\r\n if (arguments.length < 2) {\r\n f = desc;\r\n desc = undefined;\r\n }\r\n\r\n var parser = Parsimmon(function(input, i) {\r\n parser._ = f()._;\r\n return parser._(input, i);\r\n });\r\n\r\n if (desc) {\r\n return parser.desc(desc);\r\n } else {\r\n return parser;\r\n }\r\n}\r\n\r\n// -*- Fantasy Land Extras -*-\r\n\r\nfunction empty() {\r\n return fail(\"fantasy-land/empty\");\r\n}\r\n\r\n_.concat = _.or;\r\n_.empty = empty;\r\n_.of = succeed;\r\n_[\"fantasy-land/ap\"] = _.ap;\r\n_[\"fantasy-land/chain\"] = _.chain;\r\n_[\"fantasy-land/concat\"] = _.concat;\r\n_[\"fantasy-land/empty\"] = _.empty;\r\n_[\"fantasy-land/of\"] = _.of;\r\n_[\"fantasy-land/map\"] = _.map;\r\n\r\n// -*- Base Parsers -*-\r\n\r\nexport const index = Parsimmon(function(input, i) {\r\n return makeSuccess(i, makeLineColumnIndex(input, i));\r\n});\r\n\r\nexport const any = Parsimmon(function(input, i) {\r\n if (i >= input.length) {\r\n return makeFailure(i, \"any character/byte\");\r\n }\r\n return makeSuccess(i + 1, get(input, i));\r\n});\r\n\r\nexport const all = Parsimmon(function(input, i) {\r\n return makeSuccess(input.length, input.slice(i));\r\n});\r\n\r\nexport const eof = Parsimmon(function(input, i) {\r\n if (i < input.length) {\r\n return makeFailure(i, \"EOF\");\r\n }\r\n return makeSuccess(i, null);\r\n});\r\n\r\nexport const digit = regexp(/[0-9]/).desc(\"a digit\");\r\nexport const digits = regexp(/[0-9]*/).desc(\"optional digits\");\r\nexport const letter = regexp(/[a-z]/i).desc(\"a letter\");\r\nexport const letters = regexp(/[a-z]*/i).desc(\"optional letters\");\r\nexport const optWhitespace = regexp(/\\s*/).desc(\"optional whitespace\");\r\nexport const whitespace = regexp(/\\s+/).desc(\"whitespace\");\r\nexport const cr = string(\"\\r\");\r\nexport const lf = string(\"\\n\");\r\nexport const crlf = string(\"\\r\\n\");\r\nexport const newline = alt(crlf, lf, cr).desc(\"newline\");\r\nexport const end = alt(newline, eof);","import { Record } from \"../fable-library-js.4.24.0/Types.js\";\nimport { string_type, record_type, int32_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { some } from \"../fable-library-js.4.24.0/Option.js\";\nimport { seq, noneOf, optWhitespace, whitespace, oneOf, string, takeWhile, test, fail, all, any, digit, lookahead, succeed, eof, letters, letter, lazy, index } from \"./Parsimmon.js\";\nimport { join } from \"../fable-library-js.4.24.0/String.js\";\nimport { reduce } from \"../fable-library-js.4.24.0/List.js\";\n\nexport class TokenPosition extends Record {\n constructor(offset, line, column) {\n super();\n this.offset = (offset | 0);\n this.line = (line | 0);\n this.column = (column | 0);\n }\n}\n\nexport function TokenPosition_$reflection() {\n return record_type(\"Fable.Parsimmon.TokenPosition\", [], TokenPosition, () => [[\"offset\", int32_type], [\"line\", int32_type], [\"column\", int32_type]]);\n}\n\nexport class NodeResult$1 extends Record {\n constructor(name, value, start, end) {\n super();\n this.name = name;\n this.value = value;\n this.start = start;\n this.end = end;\n }\n}\n\nexport function NodeResult$1_$reflection(gen0) {\n return record_type(\"Fable.Parsimmon.NodeResult`1\", [gen0], NodeResult$1, () => [[\"name\", string_type], [\"value\", gen0], [\"start\", TokenPosition_$reflection()], [\"end\", TokenPosition_$reflection()]]);\n}\n\nexport function Parsimmon_parseRaw(input, parser) {\n return parser.parse(input);\n}\n\nexport function Parsimmon_parse(input, parser) {\n const result = parser.parse(input);\n if (result.status) {\n return some(result.value);\n }\n else {\n return undefined;\n }\n}\n\nexport const Parsimmon_index = index;\n\n/**\n * Returns a new parser which tries parser, and if it fails uses otherParser. Example:\n */\nexport function Parsimmon_orTry(otherParser, parser) {\n return parser.or(otherParser);\n}\n\n/**\n * Returns a new parser that tries to parse the input exactly `n` times\n */\nexport function Parsimmon_times(n, parser) {\n return parser.times(n);\n}\n\n/**\n * Expects parser at least n times. Yields an array of the results.\n */\nexport function Parsimmon_atLeast(n, parser) {\n return parser.atLeast(n);\n}\n\n/**\n * Expects parser at most n times. Yields an array of the results.\n */\nexport function Parsimmon_atMost(n, parser) {\n return parser.atMost(n);\n}\n\nexport function Parsimmon_skip(skipped, keep) {\n return keep.skip(skipped);\n}\n\nexport function Parsimmon_many(parser) {\n return parser.many();\n}\n\nexport const Parsimmon_ofLazy = lazy;\n\n/**\n * This is the same as Parsimmon.sepBy, but matches the parser at least once.\n */\nexport function Parsimmon_seperateByAtLeastOne(seperator, parser) {\n return parser.sepBy1(seperator);\n}\n\n/**\n * Expects parser \"after\" to follow parser \"before\", and yields the result of \"before\".\n */\nexport function Parsimmon_chain(after, before) {\n return before.then(after);\n}\n\n/**\n * Returns a new parser which tries parser \"p\", and on success calls the function \"f\" with the result of the parse, which is expected to return another parser, which will be tried next. This allows you to dynamically decide how to continue the parse, which is impossible with the other combinators.\n */\nexport function Parsimmon_bind(f, p) {\n return p.chain(f);\n}\n\nexport const Parsimmon_letter = letter;\n\n/**\n * Returns a parser that tries `parser` and succeeds if `parser` is able to parse between `min` and `max` times\n */\nexport function Parsimmon_timesBetween(min, max, parser) {\n return parser.times(min, max);\n}\n\nexport const Parsimmon_letters = letters;\n\nexport const Parsimmon_endOfFile = eof;\n\n/**\n * Returns a parser that looks for anything but whatever \"p\" wants to parse, and does not consume it. Yields the same result as \"before\".\n */\nexport function Parsimmon_notFollowedBy(p, before) {\n return before.notFollowedBy(p);\n}\n\nexport const Parsimmon_succeed = succeed;\n\nexport const Parsimmon_lookahead = lookahead;\n\nexport const Parsimmon_digit = digit;\n\nexport const Parsimmon_digits = Parsimmon_many(Parsimmon_digit);\n\n/**\n * Returns a new parser which tries \"parser\" and, if it fails, yields value without consuming any input.\n */\nexport function Parsimmon_fallback(value, parser) {\n return parser.fallback(value);\n}\n\nexport function Parsimmon_seperateBy(content, others) {\n return others.sepBy(content);\n}\n\nexport function Parsimmon_between(left, right, middle) {\n return Parsimmon_skip(right, Parsimmon_chain(middle, left));\n}\n\n/**\n * Transforms the parsed value of the given parser.\n */\nexport function Parsimmon_map(f, parser) {\n return parser.map(f);\n}\n\n/**\n * Alias of Parsimmon.concat\n */\nexport function Parsimmon_tie(parser) {\n return Parsimmon_map((strings) => join(\"\", strings), parser);\n}\n\nexport const Parsimmon_any = any;\n\n/**\n * Accepts any number of parsers, yielding the value of the first one that succeeds, backtracking in between.\n */\nexport function Parsimmon_choose(ps) {\n return reduce((acc, parser) => (acc.or(parser)), ps);\n}\n\nexport const Parsimmon_all = all;\n\nexport const Parsimmon_fail = fail;\n\nexport const Parsimmon_satisfy = test;\n\nexport const Parsimmon_takeWhile = takeWhile;\n\nexport const Parsimmon_str = string;\n\nexport const Parsimmon_oneOf = oneOf;\n\nexport const Parsimmon_whitespace = whitespace;\n\nexport const Parsimmon_optionalWhitespace = optWhitespace;\n\n/**\n * Returns a parser that succeeds one or more times\n */\nexport function Parsimmon_atLeastOneOrMany(parser) {\n return Parsimmon_atLeast(1, parser);\n}\n\nexport function Parsimmon_stringReturn(input, value) {\n return Parsimmon_map((_arg) => value, Parsimmon_str(input));\n}\n\nexport const Parsimmon_noneOf = noneOf;\n\nexport const Parsimmon_seq2 = seq;\n\nexport function Parsimmon_trim(trimmed, p) {\n return p.trim(trimmed);\n}\n\n/**\n * Equivalent to `parser.map (String.concat \"\")`\n */\nexport function Parsimmon_concat(parser) {\n return parser.map((strings) => join(\"\", strings));\n}\n\nexport const Parsimmon_seq3 = seq;\n\nexport const Parsimmon_seq4 = seq;\n\nexport const Parsimmon_seq5 = seq;\n\n/**\n * Equivalent to `parser.node(\"description\")`\n */\nexport function Parsimmon_node(description, p) {\n return p.node(description);\n}\n\n","import { Union } from \"../fable-library-js.4.24.0/Types.js\";\nimport { union_type, class_type, list_type, bool_type, string_type, float64_type } from \"../fable-library-js.4.24.0/Reflection.js\";\n\nexport class Json extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"JNumber\", \"JString\", \"JBool\", \"JNull\", \"JArray\", \"JObject\"];\n }\n}\n\nexport function Json_$reflection() {\n return union_type(\"Fable.SimpleJson.Json\", [], Json, () => [[[\"Item\", float64_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [], [[\"Item\", list_type(Json_$reflection())]], [[\"Item\", class_type(\"Microsoft.FSharp.Collections.FSharpMap`2\", [string_type, Json_$reflection()])]]]);\n}\n\n","import { Parsimmon_seq3, Parsimmon_seperateBy, Parsimmon_ofLazy, Parsimmon_optionalWhitespace, Parsimmon_between, Parsimmon_satisfy, Parsimmon_orTry, Parsimmon_many, Parsimmon_oneOf, Parsimmon_stringReturn, Parsimmon_choose, Parsimmon_str, Parsimmon_seq2, Parsimmon_map, Parsimmon_digit, Parsimmon_atLeastOneOrMany, Parsimmon_concat } from \"../Fable.Parsimmon.4.1.0/Parsimmon.fs.js\";\nimport { parse } from \"../fable-library-js.4.24.0/Double.js\";\nimport { regexp } from \"../Fable.Parsimmon.4.1.0/Parsimmon.js\";\nimport { map, ofArray } from \"../fable-library-js.4.24.0/List.js\";\nimport { Json } from \"./Json.fs.js\";\nimport { ofList } from \"../fable-library-js.4.24.0/Map.js\";\nimport { Lazy, comparePrimitives } from \"../fable-library-js.4.24.0/Util.js\";\n\nexport const digits = Parsimmon_concat(Parsimmon_atLeastOneOrMany(Parsimmon_digit));\n\nexport const jint = Parsimmon_map(parse, digits);\n\nexport const negJint = Parsimmon_map((tupledArg) => -tupledArg[1], Parsimmon_seq2(Parsimmon_str(\"-\"), jint));\n\nexport const jfloat = Parsimmon_map(parse, Parsimmon_choose(ofArray([regexp(new RegExp(\"-?(0|[1-9][0-9]*)?[.][0-9]+([eE][+-]?[0-9]+)?\")), regexp(new RegExp(\"-?[1-9][0-9]*[eE][+-]?[0-9]+\"))])));\n\nexport const jnumber = Parsimmon_map((Item) => (new Json(0, [Item])), Parsimmon_choose(ofArray([jfloat, jint, negJint])));\n\nexport const jbool = Parsimmon_choose(ofArray([Parsimmon_stringReturn(\"true\", new Json(2, [true])), Parsimmon_stringReturn(\"false\", new Json(2, [false]))]));\n\nexport const jnull = Parsimmon_stringReturn(\"null\", new Json(3, []));\n\nexport const stringLiteral = (() => {\n const escape = Parsimmon_map((_arg) => {\n switch (_arg) {\n case \"b\":\n return \"\\b\";\n case \"f\":\n return \"\\f\";\n case \"n\":\n return \"\\n\";\n case \"r\":\n return \"\\r\";\n case \"t\":\n return \"\\t\";\n default:\n return _arg;\n }\n }, Parsimmon_oneOf(\"\\\"\\\\/bfnrt\"));\n const anyCharSnippet = Parsimmon_concat(Parsimmon_many(Parsimmon_orTry(Parsimmon_map((tuple) => tuple[1], Parsimmon_seq2(Parsimmon_str(\"\\\\\"), escape)), Parsimmon_satisfy((c_1) => ((c_1 !== \"\\\"\") && (c_1 !== \"\\\\\"))))));\n return Parsimmon_between(Parsimmon_str(\"\\\"\"), Parsimmon_str(\"\\\"\"), anyCharSnippet);\n})();\n\nexport const jstring = stringLiteral.map((Item) => (new Json(1, [Item])));\n\nexport function withWhitespace(p) {\n return Parsimmon_between(Parsimmon_optionalWhitespace, Parsimmon_optionalWhitespace, p);\n}\n\nexport const jvalue = Parsimmon_choose(map(withWhitespace, ofArray([jnull, jbool, jnumber, jstring])));\n\nexport const comma = withWhitespace(Parsimmon_str(\",\"));\n\nexport function json$004080() {\n return Parsimmon_ofLazy(() => Parsimmon_choose(ofArray([jvalue, Parsimmon_map((arg) => (new Json(4, [ofArray(arg)])), Parsimmon_between(withWhitespace(Parsimmon_str(\"[\")), withWhitespace(Parsimmon_str(\"]\")), Parsimmon_seperateBy(comma, json$004080$002D1.Value))), Parsimmon_map((arg_2) => (new Json(5, [ofList(ofArray(arg_2), {\n Compare: comparePrimitives,\n })])), Parsimmon_between(withWhitespace(Parsimmon_str(\"{\")), withWhitespace(Parsimmon_str(\"}\")), Parsimmon_seperateBy(comma, Parsimmon_map((tupledArg) => [tupledArg[0], tupledArg[2]], Parsimmon_seq3(withWhitespace(stringLiteral), withWhitespace(Parsimmon_str(\":\")), withWhitespace(json$004080$002D1.Value))))))])));\n}\n\nexport const json$004080$002D1 = new Lazy(json$004080);\n\nexport const json = json$004080$002D1.Value;\n\nexport const jsonParser = withWhitespace(json);\n\n","import { Parsimmon_parse } from \"../Fable.Parsimmon.4.1.0/Parsimmon.fs.js\";\nimport { jsonParser } from \"./Parser.fs.js\";\nimport { join, toText, printf, toFail } from \"../fable-library-js.4.24.0/String.js\";\nimport { head, tail, isEmpty, empty, singleton, concat, ofArray, map as map_1 } from \"../fable-library-js.4.24.0/List.js\";\nimport { tryFind, ofList, toList } from \"../fable-library-js.4.24.0/Map.js\";\nimport { curry2, comparePrimitives, isIterable, defaultOf, disposeSafe, getEnumerator } from \"../fable-library-js.4.24.0/Util.js\";\nimport { toDecimal } from \"../fable-library-js.4.24.0/BigInt.js\";\nimport { toString } from \"../fable-library-js.4.24.0/Date.js\";\nimport { value as value_5, some } from \"../fable-library-js.4.24.0/Option.js\";\nimport { $007CNativeObject$007C_$007C, $007CNativeArray$007C_$007C, $007CNull$007C_$007C, $007CNativeBool$007C_$007C, $007CNativeNumber$007C_$007C, $007CNativeString$007C_$007C } from \"./TypeCheck.fs.js\";\nimport { Json } from \"./Json.fs.js\";\nimport { map as map_2 } from \"../fable-library-js.4.24.0/Array.js\";\nimport { map as map_3, delay, toList as toList_1 } from \"../fable-library-js.4.24.0/Seq.js\";\n\nexport function InteropUtil_isDateOffset(x) {\n if (x instanceof Date) {\n return \"offset\" in x;\n }\n else {\n return false;\n }\n}\n\nexport function InteropUtil_isObjectLiteral(x) {\n return (typeof x) === \"object\";\n}\n\nexport function InteropUtil_isBigInt(x) {\n if ((((!(x == null) && InteropUtil_isObjectLiteral(x)) && (\"signInt\" in x)) && (\"v\" in x)) && (\"digits\" in (x[\"v\"]))) {\n return \"bound\" in (x[\"v\"]);\n }\n else {\n return false;\n }\n}\n\n/**\n * Tries to parse a string into a Json structured JSON data.\n */\nexport function SimpleJson_tryParse(input) {\n return Parsimmon_parse(input, jsonParser);\n}\n\n/**\n * Parses the input string into a structured JSON data. Fails with an exception if parsing fails.\n */\nexport function SimpleJson_parse(input) {\n const matchValue = SimpleJson_tryParse(input);\n if (matchValue == null) {\n return toFail(printf(\"Could not parse the JSON input: %s\"))(input);\n }\n else {\n return matchValue;\n }\n}\n\n/**\n * Stringifies a Json object back to string representation\n */\nexport function SimpleJson_toString(_arg) {\n switch (_arg.tag) {\n case 2:\n if (_arg.fields[0]) {\n return \"true\";\n }\n else {\n return \"false\";\n }\n case 0:\n return _arg.fields[0].toString();\n case 1:\n return toText(printf(\"\\\"%s\\\"\"))(_arg.fields[0]);\n case 4: {\n const arg_1 = join(\",\", map_1(SimpleJson_toString, _arg.fields[0]));\n return toText(printf(\"[%s]\"))(arg_1);\n }\n case 5: {\n const arg_4 = join(\",\", map_1((tupledArg) => {\n const arg_3 = SimpleJson_toString(tupledArg[1]);\n return toText(printf(\"\\\"%s\\\":%s\"))(tupledArg[0])(arg_3);\n }, toList(_arg.fields[0])));\n return toText(printf(\"{%s}\"))(arg_4);\n }\n default:\n return \"null\";\n }\n}\n\nexport function SimpleJson_toPlainObject(input) {\n switch (input.tag) {\n case 2:\n return input.fields[0];\n case 0:\n return input.fields[0];\n case 1:\n return input.fields[0];\n case 4: {\n const array = [];\n const enumerator = getEnumerator(input.fields[0]);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const value_3 = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n void (array.push(SimpleJson_toPlainObject(value_3)));\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return array;\n }\n case 5: {\n const jsObject = ({});\n const enumerator_1 = getEnumerator(toList(input.fields[0]));\n try {\n while (enumerator_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar = enumerator_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n jsObject[forLoopVar[0]] = SimpleJson_toPlainObject(forLoopVar[1]);\n }\n }\n finally {\n disposeSafe(enumerator_1);\n }\n return jsObject;\n }\n default:\n return defaultOf();\n }\n}\n\nexport function SimpleJson_stringify(value) {\n if (value == null) {\n return JSON.stringify(defaultOf());\n }\n else {\n return JSON.stringify(value, (key, jsonValue) => (InteropUtil_isBigInt(jsonValue) ? toDecimal(jsonValue).toString() : ((jsonValue instanceof Date) ? toString(jsonValue, \"o\") : ((typeof jsonValue === \"string\") ? jsonValue : (isIterable(jsonValue) ? (Array.isArray(jsonValue) ? jsonValue : (Array.from(jsonValue))) : (InteropUtil_isBigInt(jsonValue) ? toDecimal(jsonValue).toString() : (InteropUtil_isDateOffset(jsonValue) ? toString(jsonValue, \"O\") : jsonValue)))))), some(0));\n }\n}\n\nexport function SimpleJson_parseNative$0027(x) {\n const activePatternResult = $007CNativeString$007C_$007C(x);\n if (activePatternResult != null) {\n const str = activePatternResult;\n return new Json(1, [str]);\n }\n else {\n const activePatternResult_1 = $007CNativeNumber$007C_$007C(x);\n if (activePatternResult_1 != null) {\n const number = activePatternResult_1;\n return new Json(0, [number]);\n }\n else {\n const activePatternResult_2 = $007CNativeBool$007C_$007C(x);\n if (activePatternResult_2 != null) {\n const value = activePatternResult_2;\n return new Json(2, [value]);\n }\n else if ($007CNull$007C_$007C(x) != null) {\n return new Json(3, []);\n }\n else {\n const activePatternResult_4 = $007CNativeArray$007C_$007C(x);\n if (activePatternResult_4 != null) {\n const arr = activePatternResult_4;\n return new Json(4, [ofArray(map_2(SimpleJson_parseNative$0027, arr))]);\n }\n else {\n const activePatternResult_5 = $007CNativeObject$007C_$007C(x);\n if (activePatternResult_5 != null) {\n const object = value_5(activePatternResult_5);\n return new Json(5, [ofList(toList_1(delay(() => map_3((key) => [key, SimpleJson_parseNative$0027(object[key])], Object.keys(object)))), {\n Compare: comparePrimitives,\n })]);\n }\n else {\n return new Json(3, []);\n }\n }\n }\n }\n }\n}\n\n/**\n * Parses and converts the input string to Json using Javascript's native parsing capabilities\n */\nexport function SimpleJson_parseNative(input) {\n return SimpleJson_parseNative$0027(JSON.parse(input));\n}\n\nexport function SimpleJson_tryParseNative(input) {\n try {\n return SimpleJson_parseNative(input);\n }\n catch (ex) {\n return undefined;\n }\n}\n\n/**\n * Tries to convert an object literal to the Json by calling JSON.stringify on the object first\n */\nexport function SimpleJson_fromObjectLiteral(x) {\n try {\n return SimpleJson_parseNative$0027(x);\n }\n catch (matchValue) {\n return undefined;\n }\n}\n\n/**\n * Transforms all keys of the objects within the Json structure\n */\nexport function SimpleJson_mapKeys(f, _arg) {\n switch (_arg.tag) {\n case 5:\n return new Json(5, [ofList(map_1((tupledArg) => [f(tupledArg[0]), SimpleJson_mapKeys(f, tupledArg[1])], toList(_arg.fields[0])), {\n Compare: comparePrimitives,\n })]);\n case 4:\n return new Json(4, [map_1((_arg_1) => SimpleJson_mapKeys(f, _arg_1), _arg.fields[0])]);\n default:\n return _arg;\n }\n}\n\n/**\n * Transforms object values recursively using function `f` that takes the key and value of the object and returns a new value\n */\nexport function SimpleJson_mapbyKey(f, _arg) {\n switch (_arg.tag) {\n case 5:\n return new Json(5, [ofList(map_1((tupledArg) => {\n const key = tupledArg[0];\n return [key, f(key, tupledArg[1])];\n }, toList(_arg.fields[0])), {\n Compare: comparePrimitives,\n })]);\n case 4:\n return new Json(4, [map_1((_arg_1) => SimpleJson_mapbyKey(f, _arg_1), _arg.fields[0])]);\n default:\n return _arg;\n }\n}\n\n/**\n * Transforms keys of object selectively by path segments\n */\nexport function SimpleJson_mapKeysByPath(f, json) {\n const mapKey = (xs, _arg) => {\n switch (_arg.tag) {\n case 5:\n return new Json(5, [ofList(map_1((tupledArg) => {\n const key = tupledArg[0];\n const value = tupledArg[1];\n const keyPath = concat([xs, singleton(key)]);\n const matchValue = f(keyPath);\n if (matchValue == null) {\n return [key, mapKey(keyPath, value)];\n }\n else {\n return [matchValue, mapKey(keyPath, value)];\n }\n }, toList(_arg.fields[0])), {\n Compare: comparePrimitives,\n })]);\n case 4:\n return new Json(4, [map_1(curry2(mapKey)(xs), _arg.fields[0])]);\n default:\n return _arg;\n }\n };\n return mapKey(empty(), json);\n}\n\nexport function SimpleJson_readPath(keys_mut, input_mut) {\n SimpleJson_readPath:\n while (true) {\n const keys = keys_mut, input = input_mut;\n let matchResult, dict, key, dict_1, firstKey, rest;\n if (!isEmpty(keys)) {\n if (isEmpty(tail(keys))) {\n if (input.tag === 5) {\n matchResult = 1;\n dict = input.fields[0];\n key = head(keys);\n }\n else {\n matchResult = 3;\n }\n }\n else if (input.tag === 5) {\n matchResult = 2;\n dict_1 = input.fields[0];\n firstKey = head(keys);\n rest = tail(keys);\n }\n else {\n matchResult = 3;\n }\n }\n else {\n matchResult = 0;\n }\n switch (matchResult) {\n case 0:\n return undefined;\n case 1:\n return tryFind(key, dict);\n case 2: {\n const matchValue_1 = tryFind(firstKey, dict_1);\n let matchResult_1, nextDict;\n if (matchValue_1 != null) {\n if (matchValue_1.tag === 5) {\n matchResult_1 = 0;\n nextDict = matchValue_1.fields[0];\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n switch (matchResult_1) {\n case 0: {\n keys_mut = rest;\n input_mut = (new Json(5, [nextDict]));\n continue SimpleJson_readPath;\n }\n default:\n return undefined;\n }\n }\n default:\n return undefined;\n }\n break;\n }\n}\n\n","import { some } from \"../fable-library-js.4.24.0/Option.js\";\n\nexport function $007CNativeString$007C_$007C(x) {\n if (typeof (x) === 'string') {\n return x;\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CNativeBool$007C_$007C(x) {\n if (typeof (x) === 'boolean') {\n return x;\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CNativeNumber$007C_$007C(x) {\n if (typeof (x) === 'number') {\n return x;\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CNativeObject$007C_$007C(x) {\n if (typeof (x) === 'object') {\n return some(x);\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CNull$007C_$007C(x) {\n if (x == null) {\n return some(x);\n }\n else {\n return undefined;\n }\n}\n\nexport function $007CNativeArray$007C_$007C(x) {\n if (Array.isArray(x)) {\n return x;\n }\n else {\n return undefined;\n }\n}\n\n","const ok = (value) => ({\n tag: \"ok\",\n value,\n});\nconst error = (error) => ({ tag: \"error\", error });\nexport class Uri {\n constructor(state) {\n this.uri = state;\n }\n static isAbsoluteUri(uri) {\n try {\n new URL(uri);\n return true;\n }\n catch {\n return false;\n }\n }\n static tryCreateWithKind(uri, kind) {\n switch (kind) {\n case 1 /* UriKind.Absolute */:\n return Uri.isAbsoluteUri(uri)\n ? ok(new Uri({ original: uri, value: new URL(uri), kind }))\n : error(\"Invalid URI: The format of the URI could not be determined.\");\n case 2 /* UriKind.Relative */:\n return Uri.isAbsoluteUri(uri)\n ? error(\"URI is not a relative path.\")\n : ok(new Uri({ original: uri, value: uri, kind }));\n case 0 /* UriKind.RelativeOrAbsolute */:\n return Uri.isAbsoluteUri(uri)\n ? ok(new Uri({ original: uri, value: new URL(uri), kind: 1 /* UriKind.Absolute */ }))\n : ok(new Uri({ original: uri, value: uri, kind: 2 /* UriKind.Relative */ }));\n default:\n const never = kind;\n return never;\n }\n }\n static tryCreateWithBase(baseUri, relativeUri) {\n return baseUri.uri.kind !== 1 /* UriKind.Absolute */\n ? error(\"Base URI should have Absolute kind\")\n : typeof relativeUri === \"string\"\n ? ok(new Uri({\n original: new URL(relativeUri, baseUri.uri.value).toString(),\n value: new URL(relativeUri, baseUri.uri.value),\n kind: 1 /* UriKind.Absolute */,\n }))\n : relativeUri.uri.kind === 2 /* UriKind.Relative */\n ? ok(new Uri({\n original: new URL(relativeUri.uri.value, baseUri.uri.value).toString(),\n value: new URL(relativeUri.uri.value, baseUri.uri.value),\n kind: 1 /* UriKind.Absolute */,\n }))\n : ok(baseUri);\n }\n static tryCreateImpl(value, kindOrUri = 1 /* UriKind.Absolute */) {\n return typeof value === \"string\"\n ? typeof kindOrUri !== \"number\"\n ? error(\"Kind must be specified when the baseUri is a string.\")\n : Uri.tryCreateWithKind(value, kindOrUri)\n : typeof kindOrUri === \"number\"\n ? error(\"Kind should not be specified when the baseUri is an absolute Uri.\")\n : Uri.tryCreateWithBase(value, kindOrUri);\n }\n static create(value, kindOrUri = 1 /* UriKind.Absolute */) {\n const result = Uri.tryCreateImpl(value, kindOrUri);\n switch (result.tag) {\n case \"ok\":\n return result.value;\n case \"error\":\n throw new Error(result.error);\n default:\n const never = result;\n return never;\n }\n }\n static tryCreate(value, kindOrUri = 1 /* UriKind.Absolute */, out) {\n const result = Uri.tryCreateImpl(value, kindOrUri);\n switch (result.tag) {\n case \"ok\":\n out.contents = result.value;\n return true;\n case \"error\":\n return false;\n default:\n const never = result;\n return never;\n }\n }\n toString() {\n switch (this.uri.kind) {\n case 1 /* UriKind.Absolute */:\n return decodeURIComponent(this.asUrl().toString());\n case 2 /* UriKind.Relative */:\n return this.uri.value;\n default:\n const never = this.uri;\n return never;\n }\n }\n asUrl() {\n switch (this.uri.kind) {\n case 1 /* UriKind.Absolute */:\n return this.uri.value;\n case 2 /* UriKind.Relative */:\n throw new Error(\"This operation is not supported for a relative URI.\");\n default:\n const never = this.uri;\n return never;\n }\n }\n get isAbsoluteUri() {\n return this.uri.kind === 1 /* UriKind.Absolute */;\n }\n get absoluteUri() {\n return this.asUrl().href;\n }\n get scheme() {\n const protocol = this.asUrl().protocol;\n return protocol.slice(0, protocol.length - 1);\n }\n get host() {\n const host = this.asUrl().host;\n if (host.includes(\":\")) {\n return host.split(\":\")[0];\n }\n else {\n return host;\n }\n }\n get absolutePath() {\n return this.asUrl().pathname;\n }\n get query() {\n return this.asUrl().search;\n }\n get isDefaultPort() {\n return this.port === 80;\n }\n get port() {\n const port = this.asUrl().port;\n if (port === \"\") {\n return 80;\n }\n else {\n return parseInt(port);\n }\n }\n get pathAndQuery() {\n const url = this.asUrl();\n return url.pathname + url.search;\n }\n get fragment() {\n return this.asUrl().hash;\n }\n get originalString() {\n return this.uri.original;\n }\n}\nexport default Uri;\n","import { getPrefix, isValid } from \"./Int32.js\";\nimport { fromString } from \"./BigInt.js\";\nfunction getMaxValue(unsigned, radix, isNegative) {\n switch (radix) {\n case 2: return unsigned ?\n \"1111111111111111111111111111111111111111111111111111111111111111\" :\n (isNegative ? \"1000000000000000000000000000000000000000000000000000000000000000\"\n : \"111111111111111111111111111111111111111111111111111111111111111\");\n case 8: return unsigned ?\n \"1777777777777777777777\" :\n (isNegative ? \"1000000000000000000000\" : \"777777777777777777777\");\n case 10: return unsigned ?\n \"18446744073709551615\" :\n (isNegative ? \"9223372036854775808\" : \"9223372036854775807\");\n case 16: return unsigned ?\n \"FFFFFFFFFFFFFFFF\" :\n (isNegative ? \"8000000000000000\" : \"7FFFFFFFFFFFFFFF\");\n default: throw new Error(\"Invalid radix.\");\n }\n}\nexport function parse(str, style, unsigned, _bitsize, radix) {\n const res = isValid(str, style, radix);\n if (res != null) {\n const lessOrEqual = (x, y) => {\n const len = Math.max(x.length, y.length);\n return x.padStart(len, \"0\") <= y.padStart(len, \"0\");\n };\n const isNegative = res.sign === \"-\";\n const maxValue = getMaxValue(unsigned || res.radix !== 10, res.radix, isNegative);\n if (lessOrEqual(res.digits.toUpperCase(), maxValue)) {\n str = getPrefix(res.radix) + res.digits;\n str = isNegative ? res.sign + str : str;\n return fromString(str);\n }\n }\n throw new Error(`The input string ${str} was not in a correct format.`);\n}\nexport function tryParse(str, style, unsigned, bitsize, defValue) {\n try {\n defValue.contents = parse(str, style, unsigned, bitsize);\n return true;\n }\n catch {\n return false;\n }\n}\n","/**\n * DateTimeOffset functions.\n *\n * Note: DateOffset instances are always DateObjects in local\n * timezone (because JS dates are all kinds of messed up).\n * A local date returns UTC epoch when `.getTime()` is called.\n *\n * However, this means that in order to construct an UTC date\n * from a DateOffset with offset of +5 hours, you first need\n * to subtract those 5 hours, than add the \"local\" offset.\n * As said, all kinds of messed up.\n *\n * Basically; invariant: date.getTime() always return UTC time.\n */\nimport { fromFloat64, toFloat64 } from \"./BigInt.js\";\nimport DateTime, { create as createDate, dateOffsetToString, daysInMonth, parseRaw, ticksToUnixEpochMilliseconds, unixEpochMillisecondsToTicks } from \"./Date.js\";\nimport { compareDates, padWithZeros } from \"./Util.js\";\nexport default function DateTimeOffset(value, offset) {\n checkOffsetInRange(offset);\n const d = new Date(value);\n d.offset = offset != null ? offset : new Date().getTimezoneOffset() * -60000;\n return d;\n}\nexport function offset(value) {\n return value.offset || 0;\n}\nfunction checkOffsetInRange(offset) {\n if (offset != null && offset !== 0) {\n if (offset % 60000 !== 0) {\n throw new Error(\"Offset must be specified in whole minutes.\");\n }\n if (Math.abs(offset / 3600000) > 14) {\n throw new Error(\"Offset must be within plus or minus 14 hours.\");\n }\n }\n}\nexport function fromDate(date, offset) {\n let offset2 = 0;\n switch (date.kind) {\n case 1 /* DateKind.UTC */:\n if (offset != null && offset !== 0) {\n throw new Error(\"The UTC Offset for Utc DateTime instances must be 0.\");\n }\n offset2 = 0;\n break;\n case 2 /* DateKind.Local */:\n offset2 = date.getTimezoneOffset() * -60000;\n if (offset != null && offset !== offset2) {\n throw new Error(\"The UTC Offset of the local dateTime parameter does not match the offset argument.\");\n }\n break;\n case 0 /* DateKind.Unspecified */:\n default:\n if (offset == null) {\n offset2 = date.getTimezoneOffset() * -60000;\n }\n else {\n offset2 = offset;\n }\n break;\n }\n return DateTimeOffset(date.getTime(), offset2);\n}\nexport function fromTicks(ticks, offset) {\n const ms = ticksToUnixEpochMilliseconds(ticks) - offset;\n return DateTimeOffset(ms, offset);\n}\nexport function fromUnixTimeMilliseconds(ms) {\n return DateTimeOffset(toFloat64(ms), 0);\n}\nexport function fromUnixTimeSeconds(seconds) {\n return DateTimeOffset(toFloat64(seconds * 1000n), 0);\n}\nexport function getUtcTicks(date) {\n return unixEpochMillisecondsToTicks(date.getTime(), 0);\n}\nexport function minValue() {\n // This is \"0001-01-01T00:00:00.000Z\", actual JS min value is -8640000000000000\n return DateTimeOffset(-62135596800000, 0);\n}\nexport function maxValue() {\n // This is \"9999-12-31T23:59:59.999Z\", actual JS max value is 8640000000000000\n return DateTimeOffset(253402300799999, 0);\n}\nexport function parse(str) {\n const [date, offsetMatch] = parseRaw(str);\n const offset = offsetMatch == null\n ? date.getTimezoneOffset() * -60000\n : (offsetMatch === \"Z\" ? 0 : offsetMatch * 60000);\n return DateTimeOffset(date.getTime(), offset);\n}\nexport function tryParse(v, defValue) {\n try {\n defValue.contents = parse(v);\n return true;\n }\n catch (_err) {\n return false;\n }\n}\nexport function create(year, month, day, h, m, s, ms, offset) {\n if (offset == null) {\n offset = ms;\n ms = 0;\n }\n checkOffsetInRange(offset);\n let date;\n if (offset === 0) {\n date = new Date(Date.UTC(year, month - 1, day, h, m, s, ms));\n if (year <= 99) {\n date.setUTCFullYear(year, month - 1, day);\n }\n }\n else {\n const str = padWithZeros(year, 4) + \"-\" +\n padWithZeros(month, 2) + \"-\" +\n padWithZeros(day, 2) + \"T\" +\n padWithZeros(h, 2) + \":\" +\n padWithZeros(m, 2) + \":\" +\n padWithZeros(s, 2) + \".\" +\n padWithZeros(ms, 3) +\n dateOffsetToString(offset);\n date = new Date(str);\n }\n const dateValue = date.getTime();\n if (isNaN(dateValue)) {\n throw new Error(\"The parameters describe an unrepresentable Date\");\n }\n return DateTimeOffset(dateValue, offset);\n}\nexport function now() {\n const date = new Date();\n const offset = date.getTimezoneOffset() * -60000;\n return DateTimeOffset(date.getTime(), offset);\n}\nexport function utcNow() {\n const date = now();\n return DateTimeOffset(date.getTime(), 0);\n}\nexport function toUniversalTime(date) {\n return DateTime(date.getTime(), 1 /* DateKind.UTC */);\n}\nexport function toLocalTime(date) {\n return DateTime(date.getTime(), 2 /* DateKind.Local */);\n}\nexport function timeOfDay(d) {\n const d2 = new Date(d.getTime() + (d.offset ?? 0));\n return d2.getUTCHours() * 3600000\n + d2.getUTCMinutes() * 60000\n + d2.getUTCSeconds() * 1000\n + d2.getUTCMilliseconds();\n}\nexport function date(d) {\n const d2 = new Date(d.getTime() + (d.offset ?? 0));\n return createDate(d2.getUTCFullYear(), d2.getUTCMonth() + 1, d2.getUTCDate(), 0, 0, 0, 0);\n}\nexport function day(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCDate();\n}\nexport function hour(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCHours();\n}\nexport function millisecond(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCMilliseconds();\n}\nexport function minute(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCMinutes();\n}\nexport function month(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCMonth() + 1;\n}\nexport function second(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCSeconds();\n}\nexport function year(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCFullYear();\n}\nexport function dayOfWeek(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCDay();\n}\nexport function dayOfYear(d) {\n const d2 = new Date(d.getTime() + (d.offset ?? 0));\n const _year = d2.getUTCFullYear();\n const _month = d2.getUTCMonth() + 1;\n let _day = d2.getUTCDate();\n for (let i = 1; i < _month; i++) {\n _day += daysInMonth(_year, i);\n }\n return _day;\n}\nexport function add(d, ts) {\n return DateTimeOffset(d.getTime() + ts, (d.offset ?? 0));\n}\nexport function addDays(d, v) {\n return add(d, v * 86400000);\n}\nexport function addHours(d, v) {\n return add(d, v * 3600000);\n}\nexport function addMinutes(d, v) {\n return add(d, v * 60000);\n}\nexport function addSeconds(d, v) {\n return add(d, v * 1000);\n}\nexport function addMilliseconds(d, v) {\n return add(d, v);\n}\nexport function addTicks(d, v) {\n return add(d, toFloat64(v / 10000n));\n}\nexport function addYears(d, v) {\n const newMonth = d.getUTCMonth() + 1;\n const newYear = d.getUTCFullYear() + v;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, d.getUTCDate());\n return create(newYear, newMonth, newDay, d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds(), (d.offset ?? 0));\n}\nexport function addMonths(d, v) {\n const d2 = new Date(d.getTime() + (d.offset ?? 0));\n let newMonth = d2.getUTCMonth() + 1 + v;\n let newMonth_ = 0;\n let yearOffset = 0;\n if (newMonth > 12) {\n newMonth_ = newMonth % 12;\n yearOffset = Math.floor(newMonth / 12);\n newMonth = newMonth_;\n }\n else if (newMonth < 1) {\n newMonth_ = 12 + newMonth % 12;\n yearOffset = Math.floor(newMonth / 12) + (newMonth_ === 12 ? -1 : 0);\n newMonth = newMonth_;\n }\n const newYear = d2.getUTCFullYear() + yearOffset;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, d2.getUTCDate());\n return create(newYear, newMonth, newDay, d2.getUTCHours(), d2.getUTCMinutes(), d2.getUTCSeconds(), d2.getUTCMilliseconds(), (d.offset ?? 0));\n}\nexport function subtract(d, that) {\n return typeof that === \"number\"\n ? DateTimeOffset(d.getTime() - that, (d.offset ?? 0))\n : d.getTime() - that.getTime();\n}\nexport function equals(d1, d2) {\n return d1.getTime() === d2.getTime();\n}\nexport function equalsExact(d1, d2) {\n return d1.getTime() === d2.getTime() && d1.offset === d2.offset;\n}\nexport function compare(d1, d2) {\n return compareDates(d1, d2);\n}\nexport const compareTo = compare;\nexport function op_Addition(x, y) {\n return add(x, y);\n}\nexport function op_Subtraction(x, y) {\n return subtract(x, y);\n}\nexport function toOffset(d, offset) {\n return DateTimeOffset(d.getTime(), offset);\n}\nexport function toUnixTimeMilliseconds(d) {\n return fromFloat64(d.getTime());\n}\nexport function toUnixTimeSeconds(d) {\n return fromFloat64(d.getTime() / 1000.0);\n}\n","import { DateTime, getTicks, dayOfYear as Date_dayOfYear, year as Date_year, month as Date_month, day as Date_day, daysInMonth as Date_daysInMonth, ticksToUnixEpochMilliseconds } from \"./Date.js\";\nimport { padWithZeros } from \"./Util.js\";\nexport function fromUnixMilliseconds(value) {\n return DateTime(value, 1 /* DateKind.UTC */);\n}\nexport function create(year, month, day) {\n const d = fromUnixMilliseconds(Date.UTC(year, month - 1, day));\n if (year <= 99) {\n d.setUTCFullYear(year);\n }\n return d;\n}\nexport function maxValue() {\n // This is \"9999-12-31T00:00:00.000Z\"\n return fromUnixMilliseconds(253402214400000);\n}\nexport function minValue() {\n // This is \"0001-01-01T00:00:00.000Z\"\n return fromUnixMilliseconds(-62135596800000);\n}\nexport function dayNumber(d) {\n return Number((getTicks(d) / 864000000000n));\n}\nexport function fromDayNumber(dayNumber) {\n const ticks = 864000000000n * BigInt(dayNumber);\n return fromUnixMilliseconds(ticksToUnixEpochMilliseconds(ticks));\n}\nexport function fromDateTime(d) {\n return create(Date_year(d), Date_month(d), Date_day(d));\n}\nexport function day(d) {\n return d.getUTCDate();\n}\nexport function month(d) {\n return d.getUTCMonth() + 1;\n}\nexport function year(d) {\n return d.getUTCFullYear();\n}\nexport function dayOfWeek(d) {\n return d.getUTCDay();\n}\nexport function dayOfYear(d) {\n return Date_dayOfYear(d);\n}\nexport function toDateTime(d, time, kind = 0 /* DateKind.Unspecified */) {\n return DateTime(d.getTime() + time + (kind !== 1 /* DateKind.UTC */ ? d.getTimezoneOffset() : 0) * 60000, kind);\n}\nexport function toString(d, format = \"d\", _provider) {\n if ([\"d\", \"o\", \"O\"].indexOf(format) === -1) {\n throw new Error(\"Custom formats are not supported\");\n }\n const y = padWithZeros(year(d), 4);\n const m = padWithZeros(month(d), 2);\n const dd = padWithZeros(day(d), 2);\n return format === \"d\" ? `${m}/${dd}/${y}` : `${y}-${m}-${dd}`;\n}\nexport function parse(str) {\n function fail() {\n throw new Error(`String '${str}' was not recognized as a valid DateOnly.`);\n }\n // Allowed separators: . , / -\n // TODO whitespace alone as the separator\n //\n // Whitespace around separators\n //\n // Allowed format types:\n // yyyy/mm/dd\n // mm/dd/yyyy\n // mm/dd\n // mm/yyyy\n // yyyy/mm\n const r = /^\\s*(\\d{1,4})(?:\\s*[.,-\\/]\\s*(\\d{1,2}))?\\s*[.,-\\/]\\s*(\\d{1,4})\\s*$/.exec(str);\n if (r != null) {\n let y = 0;\n let m = 0;\n let d = 1;\n if (r[2] == null) {\n if (r[1].length < 3) {\n if (r[3].length < 3) {\n // 12/30 = December 30, {CurrentYear}\n y = new Date().getFullYear();\n m = +r[1];\n d = +r[3];\n }\n else {\n // 12/2000 = December 1, 2000\n m = +r[1];\n y = +r[3];\n }\n }\n else {\n if (r[3].length > 2)\n fail();\n // 2000/12 = December 1, 2000\n y = +r[1];\n m = +r[3];\n }\n }\n else {\n // 2000/1/30 or 1/30/2000\n const yearFirst = r[1].length > 2;\n const yTmp = r[yearFirst ? 1 : 3];\n y = +yTmp;\n // year 0-29 is 2000-2029, 30-99 is 1930-1999\n if (yTmp.length < 3)\n y += y >= 30 ? 1900 : 2000;\n m = +r[yearFirst ? 2 : 1];\n d = +r[yearFirst ? 3 : 2];\n }\n if (y > 0 && m > 0 && m < 13 && d > 0 && d <= Date_daysInMonth(y, m))\n return create(y, m, d);\n }\n return fail();\n}\nexport function tryParse(v, defValue) {\n try {\n defValue.contents = parse(v);\n return true;\n }\n catch {\n return false;\n }\n}\n","import { trim } from \"./String.js\";\n// RFC 4122 compliant. From https://stackoverflow.com/a/13653180/3922220\n// const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;\n// Relax GUID parsing, see #1637\nconst guidRegex = /^[\\(\\{]{0,2}[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[\\)\\}]{0,2}$/;\nconst guidRegexNoHyphen = /^([0-9a-f]{8})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{12})$/;\nconst guidRegexHex = /^\\{0x[0-9a-f]{8},(0x[0-9a-f]{4},){2}\\{(0x[0-9a-f]{2},){7}0x[0-9a-f]{2}\\}\\}$/;\nconst guidHexCaptures = /^([0-9a-f]{8})-(([0-9a-f]{4})-)(([0-9a-f]{4})-)([0-9a-f]{2})([0-9a-f]{2})-([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/;\nexport function toString(str, format, _provider) {\n if (format && format?.length > 0) {\n switch (format) {\n case \"N\":\n return str.replace(/-/g, '');\n case \"D\":\n return str;\n case \"B\":\n return \"{\" + str + \"}\";\n case \"P\":\n return \"(\" + str + \")\";\n case \"X\":\n return str.replace(guidHexCaptures, \"{0x$1,0x$3,0x$5,{0x$6,0x$7,0x$8,0x$9,0x$10,0x$11,0x$12,0x$13}}\");\n default:\n throw new Error(\"Unrecognized Guid print format\");\n }\n }\n else {\n return str;\n }\n}\n/** Validates UUID as specified in RFC4122 (versions 1-5). */\nexport function parse(str) {\n function hyphenateGuid(str) {\n return str.replace(guidRegexNoHyphen, \"$1-$2-$3-$4-$5\");\n }\n const wsTrimAndLowered = str.trim().toLowerCase();\n if (guidRegex.test(wsTrimAndLowered)) {\n return trim(wsTrimAndLowered, \"{\", \"}\", \"(\", \")\");\n }\n else if (guidRegexNoHyphen.test(wsTrimAndLowered)) {\n return hyphenateGuid(wsTrimAndLowered);\n }\n else if (guidRegexHex.test(wsTrimAndLowered)) {\n return hyphenateGuid(wsTrimAndLowered.replace(/[\\{\\},]|0x/g, ''));\n }\n else {\n throw new Error(\"Guid should contain 32 digits with 4 dashes: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n }\n}\nexport function tryParse(str, defValue) {\n try {\n defValue.contents = parse(str);\n return true;\n }\n catch {\n return false;\n }\n}\n// From https://gist.github.com/LeverOne/1308368\nexport function newGuid() {\n let b = \"\";\n for (let a = 0; a++ < 36;) {\n b += a * 51 & 52\n ? (a ^ 15 ? 8 ^ Math.random() * (a ^ 20 ? 16 : 4) : 4).toString(16)\n : \"-\";\n }\n return b;\n}\n// Maps for number <-> hex string conversion\nlet _convertMapsInitialized = false;\nlet _byteToHex;\nlet _hexToByte;\nfunction initConvertMaps() {\n _byteToHex = new Array(256);\n _hexToByte = {};\n for (let i = 0; i < 256; i++) {\n _byteToHex[i] = (i + 0x100).toString(16).substr(1);\n _hexToByte[_byteToHex[i]] = i;\n }\n _convertMapsInitialized = true;\n}\n/** Parse a UUID into it's component bytes */\n// Adapted from https://github.com/zefferus/uuid-parse\nexport function guidToArray(s) {\n if (!_convertMapsInitialized) {\n initConvertMaps();\n }\n let i = 0;\n const buf = new Uint8Array(16);\n s.toLowerCase().replace(/[0-9a-f]{2}/g, ((oct) => {\n switch (i) {\n // .NET saves first three byte groups with different endianness\n // See https://stackoverflow.com/a/16722909/3922220\n case 0:\n case 1:\n case 2:\n case 3:\n buf[3 - i++] = _hexToByte[oct];\n break;\n case 4:\n case 5:\n buf[9 - i++] = _hexToByte[oct];\n break;\n case 6:\n case 7:\n buf[13 - i++] = _hexToByte[oct];\n break;\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n buf[i++] = _hexToByte[oct];\n break;\n }\n }));\n // Zero out remaining bytes if string was short\n while (i < 16) {\n buf[i++] = 0;\n }\n return buf;\n}\n/** Convert UUID byte array into a string */\nexport function arrayToGuid(buf) {\n if (buf.length !== 16) {\n throw new Error(\"Byte array for GUID must be exactly 16 bytes long\");\n }\n if (!_convertMapsInitialized) {\n initConvertMaps();\n }\n const guid = _byteToHex[buf[3]] + _byteToHex[buf[2]] +\n _byteToHex[buf[1]] + _byteToHex[buf[0]] + \"-\" +\n _byteToHex[buf[5]] + _byteToHex[buf[4]] + \"-\" +\n _byteToHex[buf[7]] + _byteToHex[buf[6]] + \"-\" +\n _byteToHex[buf[8]] + _byteToHex[buf[9]] + \"-\" +\n _byteToHex[buf[10]] + _byteToHex[buf[11]] +\n _byteToHex[buf[12]] + _byteToHex[buf[13]] +\n _byteToHex[buf[14]] + _byteToHex[buf[15]];\n return guid;\n}\n","const littleEndian = true;\nexport function isLittleEndian() {\n return littleEndian;\n}\nexport function getBytesBoolean(value) {\n const bytes = new Uint8Array(1);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint8(0, value ? 1 : 0);\n return bytes;\n}\nexport function getBytesChar(value) {\n const bytes = new Uint8Array(2);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint16(0, value.charCodeAt(0), littleEndian);\n return bytes;\n}\nexport function getBytesInt16(value) {\n const bytes = new Uint8Array(2);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setInt16(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesInt32(value) {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setInt32(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesInt64(value) {\n const bytes = new Uint8Array(8);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setBigInt64(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesUInt16(value) {\n const bytes = new Uint8Array(2);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint16(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesUInt32(value) {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint32(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesUInt64(value) {\n const bytes = new Uint8Array(8);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setBigUint64(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesSingle(value) {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setFloat32(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesDouble(value) {\n const bytes = new Uint8Array(8);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setFloat64(0, value, littleEndian);\n return bytes;\n}\nexport function int64BitsToDouble(value) {\n const buffer = new ArrayBuffer(8);\n const view = new DataView(buffer);\n view.setBigInt64(0, value, littleEndian);\n return view.getFloat64(0, littleEndian);\n}\nexport function doubleToInt64Bits(value) {\n const buffer = new ArrayBuffer(8);\n const view = new DataView(buffer);\n view.setFloat64(0, value, littleEndian);\n return view.getBigInt64(0, littleEndian);\n}\nexport function toBoolean(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getUint8(offset) === 1 ? true : false;\n}\nexport function toChar(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n const code = view.getUint16(offset, littleEndian);\n return String.fromCharCode(code);\n}\nexport function toInt16(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getInt16(offset, littleEndian);\n}\nexport function toInt32(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getInt32(offset, littleEndian);\n}\nexport function toInt64(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getBigInt64(offset, littleEndian);\n}\nexport function toUInt16(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getUint16(offset, littleEndian);\n}\nexport function toUInt32(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getUint32(offset, littleEndian);\n}\nexport function toUInt64(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getBigUint64(offset, littleEndian);\n}\nexport function toSingle(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, littleEndian);\n}\nexport function toDouble(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, littleEndian);\n}\nexport function toString(bytes, offset, count) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n let buffer = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);\n if (offset != null && count != null) {\n buffer = buffer.subarray(offset, offset + count);\n }\n else if (offset != null) {\n buffer = buffer.subarray(offset);\n }\n return Array.from(buffer).map((b) => (\"0\" + b.toString(16)).slice(-2)).join(\"-\");\n}\n","import { record_type, bool_type, list_type, option_type, class_type } from \"./Reflection.js\";\nimport { some, value as value_3 } from \"./Option.js\";\nimport { structuralHash, toIterator, disposeSafe, getEnumerator, isArrayLike } from \"./Util.js\";\nimport { toString, Record } from \"./Types.js\";\nimport { fold as fold_2, cons, singleton as singleton_1, empty as empty_1, ofArrayWithTail, tail, head, isEmpty as isEmpty_1, FSharpList } from \"./List.js\";\nimport { fold as fold_1, fill, setItem } from \"./Array.js\";\nimport { join } from \"./String.js\";\nimport { exists as exists_1, cache, forAll as forAll_1, fold as fold_3, reduce, iterate as iterate_1, map as map_1 } from \"./Seq.js\";\nimport { HashSet__get_Comparer, HashSet_$ctor_Z6150332D, HashSet } from \"./MutableSet.js\";\nexport class SetTreeLeaf$1 {\n constructor(k) {\n this.k = k;\n }\n}\nexport function SetTreeLeaf$1_$reflection(gen0) {\n return class_type(\"Set.SetTreeLeaf`1\", [gen0], SetTreeLeaf$1);\n}\nexport function SetTreeLeaf$1_$ctor_2B595(k) {\n return new SetTreeLeaf$1(k);\n}\nexport function SetTreeLeaf$1__get_Key(_) {\n return _.k;\n}\nexport class SetTreeNode$1 extends SetTreeLeaf$1 {\n constructor(v, left, right, h) {\n super(v);\n this.left = left;\n this.right = right;\n this.h = (h | 0);\n }\n}\nexport function SetTreeNode$1_$reflection(gen0) {\n return class_type(\"Set.SetTreeNode`1\", [gen0], SetTreeNode$1, SetTreeLeaf$1_$reflection(gen0));\n}\nexport function SetTreeNode$1_$ctor_5F465FC9(v, left, right, h) {\n return new SetTreeNode$1(v, left, right, h);\n}\nexport function SetTreeNode$1__get_Left(_) {\n return _.left;\n}\nexport function SetTreeNode$1__get_Right(_) {\n return _.right;\n}\nexport function SetTreeNode$1__get_Height(_) {\n return _.h;\n}\nexport function SetTreeModule_empty() {\n return undefined;\n}\nexport function SetTreeModule_countAux(t_mut, acc_mut) {\n SetTreeModule_countAux: while (true) {\n const t = t_mut, acc = acc_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = SetTreeModule_countAux(SetTreeNode$1__get_Right(tn), acc + 1);\n continue SetTreeModule_countAux;\n }\n else {\n return (acc + 1) | 0;\n }\n }\n else {\n return acc | 0;\n }\n break;\n }\n}\nexport function SetTreeModule_count(s) {\n return SetTreeModule_countAux(s, 0);\n}\nexport function SetTreeModule_mk(l, k, r) {\n let tn, tn_1;\n let hl;\n const t = l;\n if (t != null) {\n const t2 = value_3(t);\n hl = ((t2 instanceof SetTreeNode$1) ? ((tn = t2, SetTreeNode$1__get_Height(tn))) : 1);\n }\n else {\n hl = 0;\n }\n let hr;\n const t_1 = r;\n if (t_1 != null) {\n const t2_1 = value_3(t_1);\n hr = ((t2_1 instanceof SetTreeNode$1) ? ((tn_1 = t2_1, SetTreeNode$1__get_Height(tn_1))) : 1);\n }\n else {\n hr = 0;\n }\n const m = ((hl < hr) ? hr : hl) | 0;\n if (m === 0) {\n return SetTreeLeaf$1_$ctor_2B595(k);\n }\n else {\n return SetTreeNode$1_$ctor_5F465FC9(k, l, r, m + 1);\n }\n}\nexport function SetTreeModule_rebalance(t1, v, t2) {\n let tn, tn_1, t_2, t2_3, tn_2, t_3, t2_4, tn_3;\n let t1h;\n const t = t1;\n if (t != null) {\n const t2_1 = value_3(t);\n t1h = ((t2_1 instanceof SetTreeNode$1) ? ((tn = t2_1, SetTreeNode$1__get_Height(tn))) : 1);\n }\n else {\n t1h = 0;\n }\n let t2h;\n const t_1 = t2;\n if (t_1 != null) {\n const t2_2 = value_3(t_1);\n t2h = ((t2_2 instanceof SetTreeNode$1) ? ((tn_1 = t2_2, SetTreeNode$1__get_Height(tn_1))) : 1);\n }\n else {\n t2h = 0;\n }\n if (t2h > (t1h + 2)) {\n const matchValue = value_3(t2);\n if (matchValue instanceof SetTreeNode$1) {\n const t2$0027 = matchValue;\n if (((t_2 = SetTreeNode$1__get_Left(t2$0027), (t_2 != null) ? ((t2_3 = value_3(t_2), (t2_3 instanceof SetTreeNode$1) ? ((tn_2 = t2_3, SetTreeNode$1__get_Height(tn_2))) : 1)) : 0)) > (t1h + 1)) {\n const matchValue_1 = value_3(SetTreeNode$1__get_Left(t2$0027));\n if (matchValue_1 instanceof SetTreeNode$1) {\n const t2l = matchValue_1;\n return SetTreeModule_mk(SetTreeModule_mk(t1, v, SetTreeNode$1__get_Left(t2l)), SetTreeLeaf$1__get_Key(t2l), SetTreeModule_mk(SetTreeNode$1__get_Right(t2l), SetTreeLeaf$1__get_Key(t2$0027), SetTreeNode$1__get_Right(t2$0027)));\n }\n else {\n throw new Error(\"internal error: Set.rebalance\");\n }\n }\n else {\n return SetTreeModule_mk(SetTreeModule_mk(t1, v, SetTreeNode$1__get_Left(t2$0027)), SetTreeLeaf$1__get_Key(t2$0027), SetTreeNode$1__get_Right(t2$0027));\n }\n }\n else {\n throw new Error(\"internal error: Set.rebalance\");\n }\n }\n else if (t1h > (t2h + 2)) {\n const matchValue_2 = value_3(t1);\n if (matchValue_2 instanceof SetTreeNode$1) {\n const t1$0027 = matchValue_2;\n if (((t_3 = SetTreeNode$1__get_Right(t1$0027), (t_3 != null) ? ((t2_4 = value_3(t_3), (t2_4 instanceof SetTreeNode$1) ? ((tn_3 = t2_4, SetTreeNode$1__get_Height(tn_3))) : 1)) : 0)) > (t2h + 1)) {\n const matchValue_3 = value_3(SetTreeNode$1__get_Right(t1$0027));\n if (matchValue_3 instanceof SetTreeNode$1) {\n const t1r = matchValue_3;\n return SetTreeModule_mk(SetTreeModule_mk(SetTreeNode$1__get_Left(t1$0027), SetTreeLeaf$1__get_Key(t1$0027), SetTreeNode$1__get_Left(t1r)), SetTreeLeaf$1__get_Key(t1r), SetTreeModule_mk(SetTreeNode$1__get_Right(t1r), v, t2));\n }\n else {\n throw new Error(\"internal error: Set.rebalance\");\n }\n }\n else {\n return SetTreeModule_mk(SetTreeNode$1__get_Left(t1$0027), SetTreeLeaf$1__get_Key(t1$0027), SetTreeModule_mk(SetTreeNode$1__get_Right(t1$0027), v, t2));\n }\n }\n else {\n throw new Error(\"internal error: Set.rebalance\");\n }\n }\n else {\n return SetTreeModule_mk(t1, v, t2);\n }\n}\nexport function SetTreeModule_add(comparer, k, t) {\n if (t != null) {\n const t2 = value_3(t);\n const c = comparer.Compare(k, SetTreeLeaf$1__get_Key(t2)) | 0;\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (c < 0) {\n return SetTreeModule_rebalance(SetTreeModule_add(comparer, k, SetTreeNode$1__get_Left(tn)), SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn));\n }\n else if (c === 0) {\n return t;\n }\n else {\n return SetTreeModule_rebalance(SetTreeNode$1__get_Left(tn), SetTreeLeaf$1__get_Key(tn), SetTreeModule_add(comparer, k, SetTreeNode$1__get_Right(tn)));\n }\n }\n else {\n const c_1 = comparer.Compare(k, SetTreeLeaf$1__get_Key(t2)) | 0;\n if (c_1 < 0) {\n return SetTreeNode$1_$ctor_5F465FC9(k, SetTreeModule_empty(), t, 2);\n }\n else if (c_1 === 0) {\n return t;\n }\n else {\n return SetTreeNode$1_$ctor_5F465FC9(k, t, SetTreeModule_empty(), 2);\n }\n }\n }\n else {\n return SetTreeLeaf$1_$ctor_2B595(k);\n }\n}\nexport function SetTreeModule_balance(comparer, t1, k, t2) {\n if (t1 != null) {\n const t1$0027 = value_3(t1);\n if (t2 != null) {\n const t2$0027 = value_3(t2);\n if (t1$0027 instanceof SetTreeNode$1) {\n const t1n = t1$0027;\n if (t2$0027 instanceof SetTreeNode$1) {\n const t2n = t2$0027;\n if ((SetTreeNode$1__get_Height(t1n) + 2) < SetTreeNode$1__get_Height(t2n)) {\n return SetTreeModule_rebalance(SetTreeModule_balance(comparer, t1, k, SetTreeNode$1__get_Left(t2n)), SetTreeLeaf$1__get_Key(t2n), SetTreeNode$1__get_Right(t2n));\n }\n else if ((SetTreeNode$1__get_Height(t2n) + 2) < SetTreeNode$1__get_Height(t1n)) {\n return SetTreeModule_rebalance(SetTreeNode$1__get_Left(t1n), SetTreeLeaf$1__get_Key(t1n), SetTreeModule_balance(comparer, SetTreeNode$1__get_Right(t1n), k, t2));\n }\n else {\n return SetTreeModule_mk(t1, k, t2);\n }\n }\n else {\n return SetTreeModule_add(comparer, k, SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t2$0027), t1));\n }\n }\n else {\n return SetTreeModule_add(comparer, k, SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t1$0027), t2));\n }\n }\n else {\n return SetTreeModule_add(comparer, k, t1);\n }\n }\n else {\n return SetTreeModule_add(comparer, k, t2);\n }\n}\nexport function SetTreeModule_split(comparer, pivot, t) {\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n const c = comparer.Compare(pivot, SetTreeLeaf$1__get_Key(tn)) | 0;\n if (c < 0) {\n const patternInput = SetTreeModule_split(comparer, pivot, SetTreeNode$1__get_Left(tn));\n return [patternInput[0], patternInput[1], SetTreeModule_balance(comparer, patternInput[2], SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn))];\n }\n else if (c === 0) {\n return [SetTreeNode$1__get_Left(tn), true, SetTreeNode$1__get_Right(tn)];\n }\n else {\n const patternInput_1 = SetTreeModule_split(comparer, pivot, SetTreeNode$1__get_Right(tn));\n return [SetTreeModule_balance(comparer, SetTreeNode$1__get_Left(tn), SetTreeLeaf$1__get_Key(tn), patternInput_1[0]), patternInput_1[1], patternInput_1[2]];\n }\n }\n else {\n const c_1 = comparer.Compare(SetTreeLeaf$1__get_Key(t2), pivot) | 0;\n if (c_1 < 0) {\n return [t, false, SetTreeModule_empty()];\n }\n else if (c_1 === 0) {\n return [SetTreeModule_empty(), true, SetTreeModule_empty()];\n }\n else {\n return [SetTreeModule_empty(), false, t];\n }\n }\n }\n else {\n return [SetTreeModule_empty(), false, SetTreeModule_empty()];\n }\n}\nexport function SetTreeModule_spliceOutSuccessor(t) {\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (SetTreeNode$1__get_Left(tn) == null) {\n return [SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn)];\n }\n else {\n const patternInput = SetTreeModule_spliceOutSuccessor(SetTreeNode$1__get_Left(tn));\n return [patternInput[0], SetTreeModule_mk(patternInput[1], SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn))];\n }\n }\n else {\n return [SetTreeLeaf$1__get_Key(t2), SetTreeModule_empty()];\n }\n }\n else {\n throw new Error(\"internal error: Set.spliceOutSuccessor\");\n }\n}\nexport function SetTreeModule_remove(comparer, k, t) {\n if (t != null) {\n const t2 = value_3(t);\n const c = comparer.Compare(k, SetTreeLeaf$1__get_Key(t2)) | 0;\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (c < 0) {\n return SetTreeModule_rebalance(SetTreeModule_remove(comparer, k, SetTreeNode$1__get_Left(tn)), SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn));\n }\n else if (c === 0) {\n if (SetTreeNode$1__get_Left(tn) == null) {\n return SetTreeNode$1__get_Right(tn);\n }\n else if (SetTreeNode$1__get_Right(tn) == null) {\n return SetTreeNode$1__get_Left(tn);\n }\n else {\n const patternInput = SetTreeModule_spliceOutSuccessor(SetTreeNode$1__get_Right(tn));\n return SetTreeModule_mk(SetTreeNode$1__get_Left(tn), patternInput[0], patternInput[1]);\n }\n }\n else {\n return SetTreeModule_rebalance(SetTreeNode$1__get_Left(tn), SetTreeLeaf$1__get_Key(tn), SetTreeModule_remove(comparer, k, SetTreeNode$1__get_Right(tn)));\n }\n }\n else if (c === 0) {\n return SetTreeModule_empty();\n }\n else {\n return t;\n }\n }\n else {\n return t;\n }\n}\nexport function SetTreeModule_mem(comparer_mut, k_mut, t_mut) {\n SetTreeModule_mem: while (true) {\n const comparer = comparer_mut, k = k_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n const c = comparer.Compare(k, SetTreeLeaf$1__get_Key(t2)) | 0;\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (c < 0) {\n comparer_mut = comparer;\n k_mut = k;\n t_mut = SetTreeNode$1__get_Left(tn);\n continue SetTreeModule_mem;\n }\n else if (c === 0) {\n return true;\n }\n else {\n comparer_mut = comparer;\n k_mut = k;\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_mem;\n }\n }\n else {\n return c === 0;\n }\n }\n else {\n return false;\n }\n break;\n }\n}\nexport function SetTreeModule_iter(f_mut, t_mut) {\n SetTreeModule_iter: while (true) {\n const f = f_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n SetTreeModule_iter(f, SetTreeNode$1__get_Left(tn));\n f(SetTreeLeaf$1__get_Key(tn));\n f_mut = f;\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_iter;\n }\n else {\n f(SetTreeLeaf$1__get_Key(t2));\n }\n }\n break;\n }\n}\nexport function SetTreeModule_foldBackOpt(f_mut, t_mut, x_mut) {\n SetTreeModule_foldBackOpt: while (true) {\n const f = f_mut, t = t_mut, x = x_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n f_mut = f;\n t_mut = SetTreeNode$1__get_Left(tn);\n x_mut = f(SetTreeLeaf$1__get_Key(tn), SetTreeModule_foldBackOpt(f, SetTreeNode$1__get_Right(tn), x));\n continue SetTreeModule_foldBackOpt;\n }\n else {\n return f(SetTreeLeaf$1__get_Key(t2), x);\n }\n }\n else {\n return x;\n }\n break;\n }\n}\nexport function SetTreeModule_foldBack(f, m, x) {\n return SetTreeModule_foldBackOpt(f, m, x);\n}\nexport function SetTreeModule_foldOpt(f_mut, x_mut, t_mut) {\n SetTreeModule_foldOpt: while (true) {\n const f = f_mut, x = x_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n f_mut = f;\n x_mut = f(SetTreeModule_foldOpt(f, x, SetTreeNode$1__get_Left(tn)), SetTreeLeaf$1__get_Key(tn));\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_foldOpt;\n }\n else {\n return f(x, SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return x;\n }\n break;\n }\n}\nexport function SetTreeModule_fold(f, x, m) {\n return SetTreeModule_foldOpt(f, x, m);\n}\nexport function SetTreeModule_forall(f_mut, t_mut) {\n SetTreeModule_forall: while (true) {\n const f = f_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (f(SetTreeLeaf$1__get_Key(tn)) && SetTreeModule_forall(f, SetTreeNode$1__get_Left(tn))) {\n f_mut = f;\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_forall;\n }\n else {\n return false;\n }\n }\n else {\n return f(SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return true;\n }\n break;\n }\n}\nexport function SetTreeModule_exists(f_mut, t_mut) {\n SetTreeModule_exists: while (true) {\n const f = f_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (f(SetTreeLeaf$1__get_Key(tn)) ? true : SetTreeModule_exists(f, SetTreeNode$1__get_Left(tn))) {\n return true;\n }\n else {\n f_mut = f;\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_exists;\n }\n }\n else {\n return f(SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return false;\n }\n break;\n }\n}\nexport function SetTreeModule_subset(comparer, a, b) {\n return SetTreeModule_forall((x) => SetTreeModule_mem(comparer, x, b), a);\n}\nexport function SetTreeModule_properSubset(comparer, a, b) {\n if (SetTreeModule_forall((x) => SetTreeModule_mem(comparer, x, b), a)) {\n return SetTreeModule_exists((x_1) => !SetTreeModule_mem(comparer, x_1, a), b);\n }\n else {\n return false;\n }\n}\nexport function SetTreeModule_filterAux(comparer_mut, f_mut, t_mut, acc_mut) {\n SetTreeModule_filterAux: while (true) {\n const comparer = comparer_mut, f = f_mut, t = t_mut, acc = acc_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n const acc_1 = f(SetTreeLeaf$1__get_Key(tn)) ? SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(tn), acc) : acc;\n comparer_mut = comparer;\n f_mut = f;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = SetTreeModule_filterAux(comparer, f, SetTreeNode$1__get_Right(tn), acc_1);\n continue SetTreeModule_filterAux;\n }\n else if (f(SetTreeLeaf$1__get_Key(t2))) {\n return SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t2), acc);\n }\n else {\n return acc;\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_filter(comparer, f, s) {\n return SetTreeModule_filterAux(comparer, f, s, SetTreeModule_empty());\n}\nexport function SetTreeModule_diffAux(comparer_mut, t_mut, acc_mut) {\n SetTreeModule_diffAux: while (true) {\n const comparer = comparer_mut, t = t_mut, acc = acc_mut;\n if (acc == null) {\n return acc;\n }\n else if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n comparer_mut = comparer;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = SetTreeModule_diffAux(comparer, SetTreeNode$1__get_Right(tn), SetTreeModule_remove(comparer, SetTreeLeaf$1__get_Key(tn), acc));\n continue SetTreeModule_diffAux;\n }\n else {\n return SetTreeModule_remove(comparer, SetTreeLeaf$1__get_Key(t2), acc);\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_diff(comparer, a, b) {\n return SetTreeModule_diffAux(comparer, b, a);\n}\nexport function SetTreeModule_union(comparer, t1, t2) {\n if (t1 != null) {\n const t1$0027 = value_3(t1);\n if (t2 != null) {\n const t2$0027 = value_3(t2);\n if (t1$0027 instanceof SetTreeNode$1) {\n const t1n = t1$0027;\n if (t2$0027 instanceof SetTreeNode$1) {\n const t2n = t2$0027;\n if (SetTreeNode$1__get_Height(t1n) > SetTreeNode$1__get_Height(t2n)) {\n const patternInput = SetTreeModule_split(comparer, SetTreeLeaf$1__get_Key(t1n), t2);\n return SetTreeModule_balance(comparer, SetTreeModule_union(comparer, SetTreeNode$1__get_Left(t1n), patternInput[0]), SetTreeLeaf$1__get_Key(t1n), SetTreeModule_union(comparer, SetTreeNode$1__get_Right(t1n), patternInput[2]));\n }\n else {\n const patternInput_1 = SetTreeModule_split(comparer, SetTreeLeaf$1__get_Key(t2n), t1);\n return SetTreeModule_balance(comparer, SetTreeModule_union(comparer, SetTreeNode$1__get_Left(t2n), patternInput_1[0]), SetTreeLeaf$1__get_Key(t2n), SetTreeModule_union(comparer, SetTreeNode$1__get_Right(t2n), patternInput_1[2]));\n }\n }\n else {\n return SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t2$0027), t1);\n }\n }\n else {\n return SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t1$0027), t2);\n }\n }\n else {\n return t1;\n }\n }\n else {\n return t2;\n }\n}\nexport function SetTreeModule_intersectionAux(comparer_mut, b_mut, t_mut, acc_mut) {\n SetTreeModule_intersectionAux: while (true) {\n const comparer = comparer_mut, b = b_mut, t = t_mut, acc = acc_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n const acc_1 = SetTreeModule_intersectionAux(comparer, b, SetTreeNode$1__get_Right(tn), acc);\n const acc_2 = SetTreeModule_mem(comparer, SetTreeLeaf$1__get_Key(tn), b) ? SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(tn), acc_1) : acc_1;\n comparer_mut = comparer;\n b_mut = b;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = acc_2;\n continue SetTreeModule_intersectionAux;\n }\n else if (SetTreeModule_mem(comparer, SetTreeLeaf$1__get_Key(t2), b)) {\n return SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t2), acc);\n }\n else {\n return acc;\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_intersection(comparer, a, b) {\n return SetTreeModule_intersectionAux(comparer, b, a, SetTreeModule_empty());\n}\nexport function SetTreeModule_partition1(comparer, f, k, acc1, acc2) {\n if (f(k)) {\n return [SetTreeModule_add(comparer, k, acc1), acc2];\n }\n else {\n return [acc1, SetTreeModule_add(comparer, k, acc2)];\n }\n}\nexport function SetTreeModule_partitionAux(comparer_mut, f_mut, t_mut, acc__mut, acc__1_mut) {\n SetTreeModule_partitionAux: while (true) {\n const comparer = comparer_mut, f = f_mut, t = t_mut, acc_ = acc__mut, acc__1 = acc__1_mut;\n const acc = [acc_, acc__1];\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n const acc_1 = SetTreeModule_partitionAux(comparer, f, SetTreeNode$1__get_Right(tn), acc[0], acc[1]);\n const acc_4 = SetTreeModule_partition1(comparer, f, SetTreeLeaf$1__get_Key(tn), acc_1[0], acc_1[1]);\n comparer_mut = comparer;\n f_mut = f;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc__mut = acc_4[0];\n acc__1_mut = acc_4[1];\n continue SetTreeModule_partitionAux;\n }\n else {\n return SetTreeModule_partition1(comparer, f, SetTreeLeaf$1__get_Key(t2), acc[0], acc[1]);\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_partition(comparer, f, s) {\n return SetTreeModule_partitionAux(comparer, f, s, SetTreeModule_empty(), SetTreeModule_empty());\n}\nexport function SetTreeModule_minimumElementAux(t_mut, n_mut) {\n SetTreeModule_minimumElementAux: while (true) {\n const t = t_mut, n = n_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n t_mut = SetTreeNode$1__get_Left(tn);\n n_mut = SetTreeLeaf$1__get_Key(tn);\n continue SetTreeModule_minimumElementAux;\n }\n else {\n return SetTreeLeaf$1__get_Key(t2);\n }\n }\n else {\n return n;\n }\n break;\n }\n}\nexport function SetTreeModule_minimumElementOpt(t) {\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n return some(SetTreeModule_minimumElementAux(SetTreeNode$1__get_Left(tn), SetTreeLeaf$1__get_Key(tn)));\n }\n else {\n return some(SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return undefined;\n }\n}\nexport function SetTreeModule_maximumElementAux(t_mut, n_mut) {\n SetTreeModule_maximumElementAux: while (true) {\n const t = t_mut, n = n_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n t_mut = SetTreeNode$1__get_Right(tn);\n n_mut = SetTreeLeaf$1__get_Key(tn);\n continue SetTreeModule_maximumElementAux;\n }\n else {\n return SetTreeLeaf$1__get_Key(t2);\n }\n }\n else {\n return n;\n }\n break;\n }\n}\nexport function SetTreeModule_maximumElementOpt(t) {\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n return some(SetTreeModule_maximumElementAux(SetTreeNode$1__get_Right(tn), SetTreeLeaf$1__get_Key(tn)));\n }\n else {\n return some(SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return undefined;\n }\n}\nexport function SetTreeModule_minimumElement(s) {\n const matchValue = SetTreeModule_minimumElementOpt(s);\n if (matchValue == null) {\n throw new Error(\"Set contains no elements\");\n }\n else {\n return value_3(matchValue);\n }\n}\nexport function SetTreeModule_maximumElement(s) {\n const matchValue = SetTreeModule_maximumElementOpt(s);\n if (matchValue == null) {\n throw new Error(\"Set contains no elements\");\n }\n else {\n return value_3(matchValue);\n }\n}\nexport class SetTreeModule_SetIterator$1 extends Record {\n constructor(stack, started) {\n super();\n this.stack = stack;\n this.started = started;\n }\n}\nexport function SetTreeModule_SetIterator$1_$reflection(gen0) {\n return record_type(\"Set.SetTreeModule.SetIterator`1\", [gen0], SetTreeModule_SetIterator$1, () => [[\"stack\", list_type(option_type(SetTreeLeaf$1_$reflection(gen0)))], [\"started\", bool_type]]);\n}\nexport function SetTreeModule_collapseLHS(stack_mut) {\n SetTreeModule_collapseLHS: while (true) {\n const stack = stack_mut;\n if (!isEmpty_1(stack)) {\n const x = head(stack);\n const rest = tail(stack);\n if (x != null) {\n const x2 = value_3(x);\n if (x2 instanceof SetTreeNode$1) {\n const xn = x2;\n stack_mut = ofArrayWithTail([SetTreeNode$1__get_Left(xn), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(xn)), SetTreeNode$1__get_Right(xn)], rest);\n continue SetTreeModule_collapseLHS;\n }\n else {\n return stack;\n }\n }\n else {\n stack_mut = rest;\n continue SetTreeModule_collapseLHS;\n }\n }\n else {\n return empty_1();\n }\n break;\n }\n}\nexport function SetTreeModule_mkIterator(s) {\n return new SetTreeModule_SetIterator$1(SetTreeModule_collapseLHS(singleton_1(s)), false);\n}\nexport function SetTreeModule_notStarted() {\n throw new Error(\"Enumeration not started\");\n}\nexport function SetTreeModule_alreadyFinished() {\n throw new Error(\"Enumeration already started\");\n}\nexport function SetTreeModule_current(i) {\n if (i.started) {\n const matchValue = i.stack;\n if (isEmpty_1(matchValue)) {\n return SetTreeModule_alreadyFinished();\n }\n else if (head(matchValue) != null) {\n const t = value_3(head(matchValue));\n return SetTreeLeaf$1__get_Key(t);\n }\n else {\n throw new Error(\"Please report error: Set iterator, unexpected stack for current\");\n }\n }\n else {\n return SetTreeModule_notStarted();\n }\n}\nexport function SetTreeModule_moveNext(i) {\n if (i.started) {\n const matchValue = i.stack;\n if (!isEmpty_1(matchValue)) {\n if (head(matchValue) != null) {\n const t = value_3(head(matchValue));\n if (t instanceof SetTreeNode$1) {\n throw new Error(\"Please report error: Set iterator, unexpected stack for moveNext\");\n }\n else {\n i.stack = SetTreeModule_collapseLHS(tail(matchValue));\n return !isEmpty_1(i.stack);\n }\n }\n else {\n throw new Error(\"Please report error: Set iterator, unexpected stack for moveNext\");\n }\n }\n else {\n return false;\n }\n }\n else {\n i.started = true;\n return !isEmpty_1(i.stack);\n }\n}\nexport function SetTreeModule_mkIEnumerator(s) {\n let i = SetTreeModule_mkIterator(s);\n return {\n \"System.Collections.Generic.IEnumerator`1.get_Current\"() {\n return SetTreeModule_current(i);\n },\n \"System.Collections.IEnumerator.get_Current\"() {\n return SetTreeModule_current(i);\n },\n \"System.Collections.IEnumerator.MoveNext\"() {\n return SetTreeModule_moveNext(i);\n },\n \"System.Collections.IEnumerator.Reset\"() {\n i = SetTreeModule_mkIterator(s);\n },\n Dispose() {\n },\n };\n}\n/**\n * Set comparison. Note this can be expensive.\n */\nexport function SetTreeModule_compareStacks(comparer_mut, l1_mut, l2_mut) {\n SetTreeModule_compareStacks: while (true) {\n const comparer = comparer_mut, l1 = l1_mut, l2 = l2_mut;\n if (!isEmpty_1(l1)) {\n if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n if (head(l1) != null) {\n const x1_3 = value_3(head(l1));\n const x2_3 = value_3(head(l2));\n if (x1_3 instanceof SetTreeNode$1) {\n const x1n_2 = x1_3;\n if (SetTreeNode$1__get_Left(x1n_2) == null) {\n if (x2_3 instanceof SetTreeNode$1) {\n const x2n_2 = x2_3;\n if (SetTreeNode$1__get_Left(x2n_2) == null) {\n const c = comparer.Compare(SetTreeLeaf$1__get_Key(x1n_2), SetTreeLeaf$1__get_Key(x2n_2)) | 0;\n if (c !== 0) {\n return c | 0;\n }\n else {\n comparer_mut = comparer;\n l1_mut = cons(SetTreeNode$1__get_Right(x1n_2), tail(l1));\n l2_mut = cons(SetTreeNode$1__get_Right(x2n_2), tail(l2));\n continue SetTreeModule_compareStacks;\n }\n }\n else {\n let matchResult, t1_6, x1_4, t2_6, x2_4;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult = 0;\n t1_6 = tail(l1);\n x1_4 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult = 1;\n t2_6 = tail(l2);\n x2_4 = value_3(head(l2));\n }\n else {\n matchResult = 2;\n }\n }\n else {\n matchResult = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult = 1;\n t2_6 = tail(l2);\n x2_4 = value_3(head(l2));\n }\n else {\n matchResult = 2;\n }\n }\n else {\n matchResult = 2;\n }\n switch (matchResult) {\n case 0:\n if (x1_4 instanceof SetTreeNode$1) {\n const x1n_3 = x1_4;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n_3), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n_3), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n_3), 0)], t1_6);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1_4))], t1_6);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_4 instanceof SetTreeNode$1) {\n const x2n_3 = x2_4;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n_3), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n_3), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n_3), 0)], t2_6);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_4))], t2_6);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n }\n else {\n const c_1 = comparer.Compare(SetTreeLeaf$1__get_Key(x1n_2), SetTreeLeaf$1__get_Key(x2_3)) | 0;\n if (c_1 !== 0) {\n return c_1 | 0;\n }\n else {\n comparer_mut = comparer;\n l1_mut = cons(SetTreeNode$1__get_Right(x1n_2), tail(l1));\n l2_mut = cons(SetTreeModule_empty(), tail(l2));\n continue SetTreeModule_compareStacks;\n }\n }\n }\n else {\n let matchResult_1, t1_7, x1_5, t2_7, x2_5;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult_1 = 0;\n t1_7 = tail(l1);\n x1_5 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_1 = 1;\n t2_7 = tail(l2);\n x2_5 = value_3(head(l2));\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n matchResult_1 = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_1 = 1;\n t2_7 = tail(l2);\n x2_5 = value_3(head(l2));\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n matchResult_1 = 2;\n }\n switch (matchResult_1) {\n case 0:\n if (x1_5 instanceof SetTreeNode$1) {\n const x1n_4 = x1_5;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n_4), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n_4), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n_4), 0)], t1_7);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1_5))], t1_7);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_5 instanceof SetTreeNode$1) {\n const x2n_4 = x2_5;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n_4), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n_4), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n_4), 0)], t2_7);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_5))], t2_7);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n }\n else if (x2_3 instanceof SetTreeNode$1) {\n const x2n_5 = x2_3;\n if (SetTreeNode$1__get_Left(x2n_5) == null) {\n const c_2 = comparer.Compare(SetTreeLeaf$1__get_Key(x1_3), SetTreeLeaf$1__get_Key(x2n_5)) | 0;\n if (c_2 !== 0) {\n return c_2 | 0;\n }\n else {\n comparer_mut = comparer;\n l1_mut = cons(SetTreeModule_empty(), tail(l1));\n l2_mut = cons(SetTreeNode$1__get_Right(x2n_5), tail(l2));\n continue SetTreeModule_compareStacks;\n }\n }\n else {\n let matchResult_2, t1_8, x1_6, t2_8, x2_6;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult_2 = 0;\n t1_8 = tail(l1);\n x1_6 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_2 = 1;\n t2_8 = tail(l2);\n x2_6 = value_3(head(l2));\n }\n else {\n matchResult_2 = 2;\n }\n }\n else {\n matchResult_2 = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_2 = 1;\n t2_8 = tail(l2);\n x2_6 = value_3(head(l2));\n }\n else {\n matchResult_2 = 2;\n }\n }\n else {\n matchResult_2 = 2;\n }\n switch (matchResult_2) {\n case 0:\n if (x1_6 instanceof SetTreeNode$1) {\n const x1n_5 = x1_6;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n_5), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n_5), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n_5), 0)], t1_8);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1_6))], t1_8);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_6 instanceof SetTreeNode$1) {\n const x2n_6 = x2_6;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n_6), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n_6), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n_6), 0)], t2_8);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_6))], t2_8);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n }\n else {\n const c_3 = comparer.Compare(SetTreeLeaf$1__get_Key(x1_3), SetTreeLeaf$1__get_Key(x2_3)) | 0;\n if (c_3 !== 0) {\n return c_3 | 0;\n }\n else {\n comparer_mut = comparer;\n l1_mut = tail(l1);\n l2_mut = tail(l2);\n continue SetTreeModule_compareStacks;\n }\n }\n }\n else {\n const x2 = value_3(head(l2));\n let matchResult_3, t1_2, x1, t2_2, x2_1;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult_3 = 0;\n t1_2 = tail(l1);\n x1 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_3 = 1;\n t2_2 = tail(l2);\n x2_1 = value_3(head(l2));\n }\n else {\n matchResult_3 = 2;\n }\n }\n else {\n matchResult_3 = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_3 = 1;\n t2_2 = tail(l2);\n x2_1 = value_3(head(l2));\n }\n else {\n matchResult_3 = 2;\n }\n }\n else {\n matchResult_3 = 2;\n }\n switch (matchResult_3) {\n case 0:\n if (x1 instanceof SetTreeNode$1) {\n const x1n = x1;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n), 0)], t1_2);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1))], t1_2);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_1 instanceof SetTreeNode$1) {\n const x2n = x2_1;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n), 0)], t2_2);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_1))], t2_2);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n }\n else if (head(l1) != null) {\n const x1_1 = value_3(head(l1));\n let matchResult_4, t1_4, x1_2, t2_4, x2_2;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult_4 = 0;\n t1_4 = tail(l1);\n x1_2 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_4 = 1;\n t2_4 = tail(l2);\n x2_2 = value_3(head(l2));\n }\n else {\n matchResult_4 = 2;\n }\n }\n else {\n matchResult_4 = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_4 = 1;\n t2_4 = tail(l2);\n x2_2 = value_3(head(l2));\n }\n else {\n matchResult_4 = 2;\n }\n }\n else {\n matchResult_4 = 2;\n }\n switch (matchResult_4) {\n case 0:\n if (x1_2 instanceof SetTreeNode$1) {\n const x1n_1 = x1_2;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n_1), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n_1), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n_1), 0)], t1_4);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1_2))], t1_4);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_2 instanceof SetTreeNode$1) {\n const x2n_1 = x2_2;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n_1), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n_1), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n_1), 0)], t2_4);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_2))], t2_4);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n else {\n comparer_mut = comparer;\n l1_mut = tail(l1);\n l2_mut = tail(l2);\n continue SetTreeModule_compareStacks;\n }\n }\n else {\n return 1;\n }\n }\n else if (isEmpty_1(l2)) {\n return 0;\n }\n else {\n return -1;\n }\n break;\n }\n}\nexport function SetTreeModule_compare(comparer, t1, t2) {\n if (t1 == null) {\n if (t2 == null) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (t2 == null) {\n return 1;\n }\n else {\n return SetTreeModule_compareStacks(comparer, singleton_1(t1), singleton_1(t2)) | 0;\n }\n}\nexport function SetTreeModule_choose(s) {\n return SetTreeModule_minimumElement(s);\n}\nexport function SetTreeModule_toList(t) {\n const loop = (t$0027_mut, acc_mut) => {\n loop: while (true) {\n const t$0027 = t$0027_mut, acc = acc_mut;\n if (t$0027 != null) {\n const t2 = value_3(t$0027);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n t$0027_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = cons(SetTreeLeaf$1__get_Key(tn), loop(SetTreeNode$1__get_Right(tn), acc));\n continue loop;\n }\n else {\n return cons(SetTreeLeaf$1__get_Key(t2), acc);\n }\n }\n else {\n return acc;\n }\n break;\n }\n };\n return loop(t, empty_1());\n}\nexport function SetTreeModule_copyToArray(s, arr, i) {\n let j = i;\n SetTreeModule_iter((x) => {\n setItem(arr, j, x);\n j = ((j + 1) | 0);\n }, s);\n}\nexport function SetTreeModule_toArray(s) {\n const n = SetTreeModule_count(s) | 0;\n const res = fill(new Array(n), 0, n, null);\n SetTreeModule_copyToArray(s, res, 0);\n return res;\n}\nexport function SetTreeModule_mkFromEnumerator(comparer_mut, acc_mut, e_mut) {\n SetTreeModule_mkFromEnumerator: while (true) {\n const comparer = comparer_mut, acc = acc_mut, e = e_mut;\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n comparer_mut = comparer;\n acc_mut = SetTreeModule_add(comparer, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), acc);\n e_mut = e;\n continue SetTreeModule_mkFromEnumerator;\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_ofArray(comparer, l) {\n return fold_1((acc, k) => SetTreeModule_add(comparer, k, acc), SetTreeModule_empty(), l);\n}\nexport function SetTreeModule_ofList(comparer, l) {\n return fold_2((acc, k) => SetTreeModule_add(comparer, k, acc), SetTreeModule_empty(), l);\n}\nexport function SetTreeModule_ofSeq(comparer, c) {\n if (isArrayLike(c)) {\n return SetTreeModule_ofArray(comparer, c);\n }\n else if (c instanceof FSharpList) {\n return SetTreeModule_ofList(comparer, c);\n }\n else {\n const ie = getEnumerator(c);\n try {\n return SetTreeModule_mkFromEnumerator(comparer, SetTreeModule_empty(), ie);\n }\n finally {\n disposeSafe(ie);\n }\n }\n}\nexport class FSharpSet {\n constructor(comparer, tree) {\n this.comparer = comparer;\n this.tree = tree;\n }\n GetHashCode() {\n const this$ = this;\n return FSharpSet__ComputeHashCode(this$) | 0;\n }\n Equals(that) {\n let that_1;\n const this$ = this;\n return (that instanceof FSharpSet) && ((that_1 = that, SetTreeModule_compare(FSharpSet__get_Comparer(this$), FSharpSet__get_Tree(this$), FSharpSet__get_Tree(that_1)) === 0));\n }\n toString() {\n const this$ = this;\n return (\"set [\" + join(\"; \", map_1((x) => {\n let copyOfStruct = x;\n return toString(copyOfStruct);\n }, this$))) + \"]\";\n }\n get [Symbol.toStringTag]() {\n return \"FSharpSet\";\n }\n toJSON() {\n const this$ = this;\n return Array.from(this$);\n }\n CompareTo(that) {\n const s = this;\n return SetTreeModule_compare(FSharpSet__get_Comparer(s), FSharpSet__get_Tree(s), FSharpSet__get_Tree(that)) | 0;\n }\n \"System.Collections.Generic.ICollection`1.Add2B595\"(x) {\n throw new Error(\"ReadOnlyCollection\");\n }\n \"System.Collections.Generic.ICollection`1.Clear\"() {\n throw new Error(\"ReadOnlyCollection\");\n }\n \"System.Collections.Generic.ICollection`1.Remove2B595\"(x) {\n throw new Error(\"ReadOnlyCollection\");\n }\n \"System.Collections.Generic.ICollection`1.Contains2B595\"(x) {\n const s = this;\n return SetTreeModule_mem(FSharpSet__get_Comparer(s), x, FSharpSet__get_Tree(s));\n }\n \"System.Collections.Generic.ICollection`1.CopyToZ3B4C077E\"(arr, i) {\n const s = this;\n SetTreeModule_copyToArray(FSharpSet__get_Tree(s), arr, i);\n }\n \"System.Collections.Generic.ICollection`1.get_IsReadOnly\"() {\n return true;\n }\n \"System.Collections.Generic.ICollection`1.get_Count\"() {\n const s = this;\n return FSharpSet__get_Count(s) | 0;\n }\n \"System.Collections.Generic.IReadOnlyCollection`1.get_Count\"() {\n const s = this;\n return FSharpSet__get_Count(s) | 0;\n }\n GetEnumerator() {\n const s = this;\n return SetTreeModule_mkIEnumerator(FSharpSet__get_Tree(s));\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const s = this;\n return SetTreeModule_mkIEnumerator(FSharpSet__get_Tree(s));\n }\n get size() {\n const s = this;\n return FSharpSet__get_Count(s) | 0;\n }\n add(k) {\n const s = this;\n throw new Error(\"Set cannot be mutated\");\n return s;\n }\n clear() {\n throw new Error(\"Set cannot be mutated\");\n }\n delete(k) {\n throw new Error(\"Set cannot be mutated\");\n return false;\n }\n has(k) {\n const s = this;\n return FSharpSet__Contains(s, k);\n }\n keys() {\n const s = this;\n return map_1((x) => x, s);\n }\n values() {\n const s = this;\n return map_1((x) => x, s);\n }\n entries() {\n const s = this;\n return map_1((v) => [v, v], s);\n }\n forEach(f, thisArg) {\n const s = this;\n iterate_1((x) => {\n f(x, x, s);\n }, s);\n }\n}\nexport function FSharpSet_$reflection(gen0) {\n return class_type(\"Set.FSharpSet\", [gen0], FSharpSet);\n}\nexport function FSharpSet_$ctor(comparer, tree) {\n return new FSharpSet(comparer, tree);\n}\nexport function FSharpSet__get_Comparer(set$) {\n return set$.comparer;\n}\nexport function FSharpSet__get_Tree(set$) {\n return set$.tree;\n}\nexport function FSharpSet_Empty(comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_empty());\n}\nexport function FSharpSet__Add(s, value) {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(s), SetTreeModule_add(FSharpSet__get_Comparer(s), value, FSharpSet__get_Tree(s)));\n}\nexport function FSharpSet__Remove(s, value) {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(s), SetTreeModule_remove(FSharpSet__get_Comparer(s), value, FSharpSet__get_Tree(s)));\n}\nexport function FSharpSet__get_Count(s) {\n return SetTreeModule_count(FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__Contains(s, value) {\n return SetTreeModule_mem(FSharpSet__get_Comparer(s), value, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__Iterate(s, x) {\n SetTreeModule_iter(x, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__Fold(s, f, z) {\n const f_1 = f;\n return SetTreeModule_fold((x, z_1) => f_1(z_1, x), z, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__get_IsEmpty(s) {\n return FSharpSet__get_Tree(s) == null;\n}\nexport function FSharpSet__Partition(s, f) {\n if (FSharpSet__get_Tree(s) == null) {\n return [s, s];\n }\n else {\n const patternInput = SetTreeModule_partition(FSharpSet__get_Comparer(s), f, FSharpSet__get_Tree(s));\n return [FSharpSet_$ctor(FSharpSet__get_Comparer(s), patternInput[0]), FSharpSet_$ctor(FSharpSet__get_Comparer(s), patternInput[1])];\n }\n}\nexport function FSharpSet__Filter(s, f) {\n if (FSharpSet__get_Tree(s) == null) {\n return s;\n }\n else {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(s), SetTreeModule_filter(FSharpSet__get_Comparer(s), f, FSharpSet__get_Tree(s)));\n }\n}\nexport function FSharpSet__Map(s, f, comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_fold((acc, k) => SetTreeModule_add(comparer, f(k), acc), SetTreeModule_empty(), FSharpSet__get_Tree(s)));\n}\nexport function FSharpSet__Exists(s, f) {\n return SetTreeModule_exists(f, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__ForAll(s, f) {\n return SetTreeModule_forall(f, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet_op_Subtraction(set1, set2) {\n if (FSharpSet__get_Tree(set1) == null) {\n return set1;\n }\n else if (FSharpSet__get_Tree(set2) == null) {\n return set1;\n }\n else {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(set1), SetTreeModule_diff(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set1), FSharpSet__get_Tree(set2)));\n }\n}\nexport function FSharpSet_op_Addition(set1, set2) {\n if (FSharpSet__get_Tree(set2) == null) {\n return set1;\n }\n else if (FSharpSet__get_Tree(set1) == null) {\n return set2;\n }\n else {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(set1), SetTreeModule_union(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set1), FSharpSet__get_Tree(set2)));\n }\n}\nexport function FSharpSet_Intersection(a, b) {\n if (FSharpSet__get_Tree(b) == null) {\n return b;\n }\n else if (FSharpSet__get_Tree(a) == null) {\n return a;\n }\n else {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(a), SetTreeModule_intersection(FSharpSet__get_Comparer(a), FSharpSet__get_Tree(a), FSharpSet__get_Tree(b)));\n }\n}\nexport function FSharpSet_IntersectionMany(sets) {\n return reduce(FSharpSet_Intersection, sets);\n}\nexport function FSharpSet_Equality(a, b) {\n return SetTreeModule_compare(FSharpSet__get_Comparer(a), FSharpSet__get_Tree(a), FSharpSet__get_Tree(b)) === 0;\n}\nexport function FSharpSet_Compare(a, b) {\n return SetTreeModule_compare(FSharpSet__get_Comparer(a), FSharpSet__get_Tree(a), FSharpSet__get_Tree(b));\n}\nexport function FSharpSet__get_Choose(x) {\n return SetTreeModule_choose(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__get_MinimumElement(x) {\n return SetTreeModule_minimumElement(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__get_MaximumElement(x) {\n return SetTreeModule_maximumElement(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__IsSubsetOf(x, otherSet) {\n return SetTreeModule_subset(FSharpSet__get_Comparer(x), FSharpSet__get_Tree(x), FSharpSet__get_Tree(otherSet));\n}\nexport function FSharpSet__IsSupersetOf(x, otherSet) {\n return SetTreeModule_subset(FSharpSet__get_Comparer(x), FSharpSet__get_Tree(otherSet), FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__IsProperSubsetOf(x, otherSet) {\n return SetTreeModule_properSubset(FSharpSet__get_Comparer(x), FSharpSet__get_Tree(x), FSharpSet__get_Tree(otherSet));\n}\nexport function FSharpSet__IsProperSupersetOf(x, otherSet) {\n return SetTreeModule_properSubset(FSharpSet__get_Comparer(x), FSharpSet__get_Tree(otherSet), FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__ToList(x) {\n return SetTreeModule_toList(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__ToArray(x) {\n return SetTreeModule_toArray(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__ComputeHashCode(this$) {\n let res = 0;\n const enumerator = getEnumerator(this$);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const x_1 = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n res = ((((res << 1) + structuralHash(x_1)) + 631) | 0);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return Math.abs(res) | 0;\n}\nexport function isEmpty(set$) {\n return FSharpSet__get_IsEmpty(set$);\n}\nexport function contains(element, set$) {\n return FSharpSet__Contains(set$, element);\n}\nexport function add(value, set$) {\n return FSharpSet__Add(set$, value);\n}\nexport function singleton(value, comparer) {\n return FSharpSet__Add(FSharpSet_Empty(comparer), value);\n}\nexport function remove(value, set$) {\n return FSharpSet__Remove(set$, value);\n}\nexport function union(set1, set2) {\n return FSharpSet_op_Addition(set1, set2);\n}\nexport function unionMany(sets, comparer) {\n return fold_3(FSharpSet_op_Addition, FSharpSet_Empty(comparer), sets);\n}\nexport function intersect(set1, set2) {\n return FSharpSet_Intersection(set1, set2);\n}\nexport function intersectMany(sets) {\n return FSharpSet_IntersectionMany(sets);\n}\nexport function iterate(action, set$) {\n FSharpSet__Iterate(set$, action);\n}\nexport function empty(comparer) {\n return FSharpSet_Empty(comparer);\n}\nexport function forAll(predicate, set$) {\n return FSharpSet__ForAll(set$, predicate);\n}\nexport function exists(predicate, set$) {\n return FSharpSet__Exists(set$, predicate);\n}\nexport function filter(predicate, set$) {\n return FSharpSet__Filter(set$, predicate);\n}\nexport function partition(predicate, set$) {\n return FSharpSet__Partition(set$, predicate);\n}\nexport function fold(folder, state, set$) {\n return SetTreeModule_fold(folder, state, FSharpSet__get_Tree(set$));\n}\nexport function foldBack(folder, set$, state) {\n return SetTreeModule_foldBack(folder, FSharpSet__get_Tree(set$), state);\n}\nexport function map(mapping, set$, comparer) {\n return FSharpSet__Map(set$, mapping, comparer);\n}\nexport function count(set$) {\n return FSharpSet__get_Count(set$);\n}\nexport function ofList(elements, comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_ofSeq(comparer, elements));\n}\nexport function ofArray(array, comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_ofArray(comparer, array));\n}\nexport function toList(set$) {\n return FSharpSet__ToList(set$);\n}\nexport function toArray(set$) {\n return FSharpSet__ToArray(set$);\n}\nexport function toSeq(set$) {\n return map_1((x) => x, set$);\n}\nexport function ofSeq(elements, comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_ofSeq(comparer, elements));\n}\nexport function difference(set1, set2) {\n return FSharpSet_op_Subtraction(set1, set2);\n}\nexport function isSubset(set1, set2) {\n return SetTreeModule_subset(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set1), FSharpSet__get_Tree(set2));\n}\nexport function isSuperset(set1, set2) {\n return SetTreeModule_subset(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set2), FSharpSet__get_Tree(set1));\n}\nexport function isProperSubset(set1, set2) {\n return SetTreeModule_properSubset(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set1), FSharpSet__get_Tree(set2));\n}\nexport function isProperSuperset(set1, set2) {\n return SetTreeModule_properSubset(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set2), FSharpSet__get_Tree(set1));\n}\nexport function minElement(set$) {\n return FSharpSet__get_MinimumElement(set$);\n}\nexport function maxElement(set$) {\n return FSharpSet__get_MaximumElement(set$);\n}\nexport function unionWith(s1, s2) {\n return fold_3((acc, x) => acc.add(x), s1, s2);\n}\nexport function newMutableSetWith(s1, s2) {\n if (s1 instanceof HashSet) {\n const s1_1 = s1;\n return HashSet_$ctor_Z6150332D(s2, HashSet__get_Comparer(s1_1));\n }\n else {\n return new Set(s2);\n }\n}\nexport function intersectWith(s1, s2) {\n const s2_1 = newMutableSetWith(s1, s2);\n iterate_1((x) => {\n if (!s2_1.has(x)) {\n s1.delete(x);\n }\n }, s1.values());\n}\nexport function exceptWith(s1, s2) {\n iterate_1((x) => {\n s1.delete(x);\n }, s2);\n}\nexport function isSubsetOf(s1, s2) {\n const s2_1 = newMutableSetWith(s1, s2);\n return forAll_1((value) => s2_1.has(value), s1.values());\n}\nexport function isSupersetOf(s1, s2) {\n return forAll_1((value) => s1.has(value), s2);\n}\nexport function isProperSubsetOf(s1, s2) {\n const s2_1 = newMutableSetWith(s1, s2);\n if (s2_1.size > s1.size) {\n return forAll_1((value) => s2_1.has(value), s1.values());\n }\n else {\n return false;\n }\n}\nexport function isProperSupersetOf(s1, s2) {\n const s2_1 = cache(s2);\n if (exists_1((arg) => !s1.has(arg), s2_1)) {\n return forAll_1((value_2) => s1.has(value_2), s2_1);\n }\n else {\n return false;\n }\n}\n","import isBrowser from \"./isBrowser.js\";\nimport { toArray as toArray_2, isEmpty as isEmpty_1, find, count, containsKey, toList as toList_1, tryFind, remove, ofList } from \"../fable-library-js.4.24.0/Map.js\";\nimport { map as map_3, choose, tryFind as tryFind_2, toArray, length, tail as tail_1, head, isEmpty, empty, singleton, ofArray } from \"../fable-library-js.4.24.0/List.js\";\nimport { int64ToString, int32ToString, disposeSafe, getEnumerator, structuralHash, safeHash, compare, equals, defaultOf, comparePrimitives } from \"../fable-library-js.4.24.0/Util.js\";\nimport { toString as toString_2, FSharpRef, Union } from \"../fable-library-js.4.24.0/Types.js\";\nimport { getUnionFields, getRecordField, makeRecord, fullName, makeUnion, name as name_2, union_type, string_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { Json, Json_$reflection } from \"./Json.fs.js\";\nimport { toArray as toArray_1, map as map_4, collect, tryFind as tryFind_3, forAll, empty as empty_1, singleton as singleton_1, append, delay, toList } from \"../fable-library-js.4.24.0/Seq.js\";\nimport { value as value_91, some, map as map_1 } from \"../fable-library-js.4.24.0/Option.js\";\nimport { find as find_1, concat, mapIndexed, equalsWith, zip, map as map_2, tryFind as tryFind_1, item as item_1 } from \"../fable-library-js.4.24.0/Array.js\";\nimport { toText, join, fromBase64String, printf, toFail, substring } from \"../fable-library-js.4.24.0/String.js\";\nimport { parse } from \"../fable-library-js.4.24.0/Double.js\";\nimport { tryParse, parse as parse_1 } from \"../fable-library-js.4.24.0/Int32.js\";\nimport { Uri } from \"../fable-library-js.4.24.0/Uri.js\";\nimport { toString as toString_1 } from \"../fable-library-js.4.24.0/Decimal.js\";\nimport Decimal from \"../fable-library-js.4.24.0/Decimal.js\";\nimport { toString, fromInt32, parse as parse_3, toInt64, fromFloat64, toUInt64 } from \"../fable-library-js.4.24.0/BigInt.js\";\nimport { tryParse as tryParse_1, parse as parse_2 } from \"../fable-library-js.4.24.0/Long.js\";\nimport { SimpleJson_stringify, SimpleJson_parseNative, SimpleJson_parse, SimpleJson_toString, SimpleJson_toPlainObject } from \"./SimpleJson.fs.js\";\nimport { toString as toString_3, parse as parse_4 } from \"../fable-library-js.4.24.0/Date.js\";\nimport { fromUnixTimeSeconds, parse as parse_5 } from \"../fable-library-js.4.24.0/DateOffset.js\";\nimport { dayNumber, fromDayNumber } from \"../fable-library-js.4.24.0/DateOnly.js\";\nimport { fromTicks } from \"../fable-library-js.4.24.0/TimeOnly.js\";\nimport { parse as parse_6 } from \"../fable-library-js.4.24.0/Guid.js\";\nimport { getBytesInt32, toInt64 as toInt64_1 } from \"../fable-library-js.4.24.0/BitConverter.js\";\nimport { ofList as ofList_1 } from \"../fable-library-js.4.24.0/Set.js\";\nimport { TypeInfo } from \"./TypeInfo.fs.js\";\nimport { Dictionary } from \"../fable-library-js.4.24.0/MutableMap.js\";\nimport { addToSet, addToDict } from \"../fable-library-js.4.24.0/MapUtil.js\";\nimport { HashSet } from \"../fable-library-js.4.24.0/MutableSet.js\";\nimport { enumUnion, isPrimitive } from \"./TypeInfo.Converter.fs.js\";\nimport quote from \"./quote.js\";\nimport { ticks } from \"../fable-library-js.4.24.0/TimeSpan.js\";\n\nexport const Convert_isBrowser = isBrowser;\n\nexport const Convert_insideBrowser = Convert_isBrowser();\n\nfunction Convert_isDefined(value) {\n return !((value === undefined));\n}\n\n/**\n * Uses internal representation of F# maps to determine whether we are using Fable 3 or not\n */\nexport function Convert_usingFable3() {\n const map = JSON.parse(JSON.stringify(ofList(ofArray([[1, 1], [2, 2]]), {\n Compare: comparePrimitives,\n })));\n const tree = map[\"tree\"];\n if ((Convert_isDefined(tree) && Convert_isDefined(tree[\"k\"])) && Convert_isDefined(tree[\"v\"])) {\n return Convert_isDefined(tree[\"h\"]);\n }\n else {\n return false;\n }\n}\n\nexport const Convert_isUsingFable3 = Convert_usingFable3();\n\nexport class Convert_InternalMap extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"MapEmpty\", \"MapOne\", \"MapNode\"];\n }\n}\n\nexport function Convert_InternalMap_$reflection() {\n return union_type(\"Fable.SimpleJson.Convert.InternalMap\", [], Convert_InternalMap, () => [[], [[\"Item1\", string_type], [\"Item2\", Json_$reflection()]], [[\"Item1\", string_type], [\"Item2\", Json_$reflection()], [\"Item3\", Convert_InternalMap_$reflection()], [\"Item4\", Convert_InternalMap_$reflection()]]]);\n}\n\nexport function Convert_flattenMap(_arg) {\n switch (_arg.tag) {\n case 1:\n return singleton([_arg.fields[0], _arg.fields[1]]);\n case 2:\n return toList(delay(() => append(Convert_flattenMap(_arg.fields[2]), delay(() => append(Convert_flattenMap(_arg.fields[3]), delay(() => singleton_1([_arg.fields[0], _arg.fields[1]])))))));\n default:\n return empty();\n }\n}\n\nexport function Convert_$007CKeyValue$007C_$007C(key, map) {\n return map_1((value) => [key, value, remove(key, map)], tryFind(key, map));\n}\n\nexport function Convert_$007CNonArray$007C_$007C(_arg) {\n if (_arg.tag === 4) {\n return undefined;\n }\n else {\n return _arg;\n }\n}\n\nexport function Convert_$007CMapEmpty$007C_$007C(json) {\n let matchResult;\n if (json.tag === 1) {\n if (json.fields[0] === \"MapEmpty\") {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return json;\n default:\n return undefined;\n }\n}\n\nexport function Convert_$007CMapKey$007C_$007C(_arg) {\n switch (_arg.tag) {\n case 0:\n return _arg.fields[0].toString();\n case 1:\n return _arg.fields[0];\n default:\n return undefined;\n }\n}\n\nexport function Convert_$007CMapOne$007C_$007C(_arg) {\n let matchResult, key, value;\n if (_arg.tag === 4) {\n if (!isEmpty(_arg.fields[0])) {\n if (head(_arg.fields[0]).tag === 1) {\n if (head(_arg.fields[0]).fields[0] === \"MapOne\") {\n if (!isEmpty(tail_1(_arg.fields[0]))) {\n const activePatternResult = Convert_$007CMapKey$007C_$007C(head(tail_1(_arg.fields[0])));\n if (activePatternResult != null) {\n if (!isEmpty(tail_1(tail_1(_arg.fields[0])))) {\n if (isEmpty(tail_1(tail_1(tail_1(_arg.fields[0]))))) {\n matchResult = 0;\n key = activePatternResult;\n value = head(tail_1(tail_1(_arg.fields[0])));\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return [key, value];\n default:\n return undefined;\n }\n}\n\nexport function Convert_$007CMapNode$007C_$007C(_arg) {\n let matchResult, key, left, right, value;\n if (_arg.tag === 4) {\n if (!isEmpty(_arg.fields[0])) {\n if (head(_arg.fields[0]).tag === 1) {\n if (head(_arg.fields[0]).fields[0] === \"MapNode\") {\n if (!isEmpty(tail_1(_arg.fields[0]))) {\n const activePatternResult = Convert_$007CMapKey$007C_$007C(head(tail_1(_arg.fields[0])));\n if (activePatternResult != null) {\n if (!isEmpty(tail_1(tail_1(_arg.fields[0])))) {\n if (!isEmpty(tail_1(tail_1(tail_1(_arg.fields[0]))))) {\n if (!isEmpty(tail_1(tail_1(tail_1(tail_1(_arg.fields[0])))))) {\n if (!isEmpty(tail_1(tail_1(tail_1(tail_1(tail_1(_arg.fields[0]))))))) {\n if (head(tail_1(tail_1(tail_1(tail_1(tail_1(_arg.fields[0])))))).tag === 0) {\n if (isEmpty(tail_1(tail_1(tail_1(tail_1(tail_1(tail_1(_arg.fields[0])))))))) {\n matchResult = 0;\n key = activePatternResult;\n left = head(tail_1(tail_1(tail_1(_arg.fields[0]))));\n right = head(tail_1(tail_1(tail_1(tail_1(_arg.fields[0])))));\n value = head(tail_1(tail_1(_arg.fields[0])));\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return [key, value, left, right];\n default:\n return undefined;\n }\n}\n\nexport function Convert_generateMap(json) {\n if (Convert_$007CMapEmpty$007C_$007C(json) != null) {\n return new Convert_InternalMap(0, []);\n }\n else {\n const activePatternResult_1 = Convert_$007CMapOne$007C_$007C(json);\n if (activePatternResult_1 != null) {\n const key = activePatternResult_1[0];\n const value = activePatternResult_1[1];\n return new Convert_InternalMap(1, [key, value]);\n }\n else {\n const activePatternResult_2 = Convert_$007CMapNode$007C_$007C(json);\n if (activePatternResult_2 != null) {\n const key_1 = activePatternResult_2[0];\n const left = activePatternResult_2[2];\n const right = activePatternResult_2[3];\n const value_1 = activePatternResult_2[1];\n const matchValue = Convert_generateMap(left);\n const matchValue_1 = Convert_generateMap(right);\n let matchResult, leftMap, rightMap;\n if (matchValue != null) {\n if (matchValue_1 != null) {\n matchResult = 0;\n leftMap = matchValue;\n rightMap = matchValue_1;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return new Convert_InternalMap(2, [key_1, value_1, leftMap, rightMap]);\n default:\n return undefined;\n }\n }\n else {\n return undefined;\n }\n }\n }\n}\n\nexport function Convert_flatteFable3Map(tree) {\n return toList(delay(() => {\n let matchValue, matchValue_1, key, value;\n return append((matchValue = tryFind(\"k\", tree), (matchValue_1 = tryFind(\"v\", tree), (matchValue != null) ? ((matchValue.tag === 1) ? ((matchValue_1 != null) ? ((key = matchValue.fields[0], (value = matchValue_1, singleton_1([key, value])))) : (empty_1())) : (empty_1())) : (empty_1()))), delay(() => {\n let matchValue_3, left;\n return append((matchValue_3 = tryFind(\"left\", tree), (matchValue_3 != null) ? ((matchValue_3.tag === 5) ? ((left = matchValue_3.fields[0], Convert_flatteFable3Map(left))) : (empty_1())) : (empty_1())), delay(() => {\n const matchValue_4 = tryFind(\"right\", tree);\n let matchResult, right;\n if (matchValue_4 != null) {\n if (matchValue_4.tag === 5) {\n matchResult = 0;\n right = matchValue_4.fields[0];\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return Convert_flatteFable3Map(right);\n default: {\n return empty_1();\n }\n }\n }));\n }));\n }));\n}\n\nexport function Convert_flattenFable3Lists(linkedList) {\n return toList(delay(() => {\n let matchValue;\n return append((matchValue = tryFind(\"head\", linkedList), (matchValue == null) ? (empty_1()) : singleton_1(matchValue)), delay(() => {\n const matchValue_1 = tryFind(\"tail\", linkedList);\n let matchResult, tail;\n if (matchValue_1 != null) {\n if (matchValue_1.tag === 5) {\n matchResult = 0;\n tail = matchValue_1.fields[0];\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return Convert_flattenFable3Lists(tail);\n default: {\n return empty_1();\n }\n }\n }));\n }));\n}\n\n/**\n * Returns whether the type information resembles a type of a sequence of elements (including tuples)\n */\nexport function Convert_arrayLike(_arg) {\n switch (_arg.tag) {\n case 30:\n return true;\n case 28:\n return true;\n case 31:\n return true;\n case 32:\n return true;\n case 29:\n return true;\n case 35:\n return true;\n case 36:\n return true;\n default:\n return false;\n }\n}\n\nexport function Convert_isRecord(_arg) {\n if (_arg.tag === 39) {\n return true;\n }\n else {\n return false;\n }\n}\n\nexport function Convert_unionOfRecords(_arg) {\n if (_arg.tag === 40) {\n return forAll((case$) => {\n if (case$.CaseTypes.length === 1) {\n return Convert_isRecord(item_1(0, case$.CaseTypes));\n }\n else {\n return false;\n }\n }, _arg.fields[0]()[0]);\n }\n else {\n return false;\n }\n}\n\nexport function Convert_optional(_arg) {\n if (_arg.tag === 27) {\n return true;\n }\n else {\n return false;\n }\n}\n\nexport function Convert_isQuoted(input) {\n if (input.startsWith(\"\\\"\")) {\n return input.endsWith(\"\\\"\");\n }\n else {\n return false;\n }\n}\n\nexport function Convert_betweenQuotes(input) {\n return (\"\\\"\" + input) + \"\\\"\";\n}\n\nexport function Convert_removeQuotes(input) {\n return substring(input, 1, input.length - 2);\n}\n\nexport function Convert_fromJsonAs(input_mut, typeInfo_mut) {\n let foundCase, foundCase_1, testExpr, values_8, tree, tree_1;\n Convert_fromJsonAs:\n while (true) {\n const input = input_mut, typeInfo = typeInfo_mut;\n let matchResult, value_2, value_3, value_4, value_5, value_6, value_7, value_8, value_9, value_10, value_11, value_12, value_13, value_14, value_15, value_16, value_17, value_18, value_19, value_20, value_21, value_22, value_23, value_24, value_25, value_26, getlElemType, value_27, getElemType, value_28, getElemType_1, value_29, genericJson, value_30, value_31, value_32, value_33, value_34, value_35, value_36, value_37, value_38, value_39, value_40, value_41, value_42, getTypes_1, values, jsonValue_5, optionalTypeDelayed_5, value_49, value_50, dict, caseName_4, getTypes_2, caseName_5, getTypes_3, getFields, serializedRecord, caseValue, getTypes_4, elementTypeDelayed, values_4, elementTypeDelayed_1, values_5, elementTypeDelayed_2, linkedList, elementTypeDelayed_3, values_6, elementTypeDelayed_4, values_7, array_12, tupleTypesDelayed, dict_1, getTypes_5, getTypes_6, tuples, getTypes_7, tuples_1, dict_2, getTypes_8, getType, items, getTypes_9, map, getType_1;\n switch (input.tag) {\n case 1: {\n switch (typeInfo.tag) {\n case 9: {\n if (input.fields[0].toLocaleLowerCase() === \"nan\") {\n matchResult = 1;\n value_3 = input.fields[0];\n }\n else {\n matchResult = 2;\n value_4 = input.fields[0];\n }\n break;\n }\n case 8: {\n if (input.fields[0].toLocaleLowerCase() === \"nan\") {\n matchResult = 4;\n value_6 = input.fields[0];\n }\n else {\n matchResult = 5;\n value_7 = input.fields[0];\n }\n break;\n }\n case 6: {\n matchResult = 8;\n value_10 = input.fields[0];\n break;\n }\n case 1: {\n matchResult = 9;\n value_11 = input.fields[0];\n break;\n }\n case 2: {\n matchResult = 11;\n value_13 = input.fields[0];\n break;\n }\n case 22: {\n matchResult = 13;\n value_15 = input.fields[0];\n break;\n }\n case 10: {\n matchResult = 14;\n value_16 = input.fields[0];\n break;\n }\n case 11: {\n matchResult = 16;\n value_18 = input.fields[0];\n break;\n }\n case 3: {\n matchResult = 19;\n value_21 = input.fields[0];\n break;\n }\n case 4: {\n matchResult = 21;\n value_23 = input.fields[0];\n break;\n }\n case 5: {\n matchResult = 23;\n value_25 = input.fields[0];\n break;\n }\n case 38: {\n matchResult = 25;\n getlElemType = typeInfo.fields[0];\n value_27 = input.fields[0];\n break;\n }\n case 30: {\n matchResult = 27;\n getElemType_1 = typeInfo.fields[0];\n value_29 = input.fields[0];\n break;\n }\n case 23: {\n matchResult = 30;\n genericJson = input;\n break;\n }\n case 12: {\n matchResult = 31;\n value_30 = input.fields[0];\n break;\n }\n case 13: {\n matchResult = 32;\n value_31 = input.fields[0];\n break;\n }\n case 14: {\n matchResult = 35;\n value_34 = input.fields[0];\n break;\n }\n case 19: {\n matchResult = 36;\n value_35 = input.fields[0];\n break;\n }\n case 15: {\n matchResult = 38;\n value_37 = input.fields[0];\n break;\n }\n case 16: {\n matchResult = 39;\n value_38 = input.fields[0];\n break;\n }\n case 17: {\n matchResult = 42;\n value_41 = input.fields[0];\n break;\n }\n case 18: {\n matchResult = 43;\n value_42 = input.fields[0];\n break;\n }\n case 27: {\n if (!equals(input, new Json(3, []))) {\n matchResult = 46;\n jsonValue_5 = input;\n optionalTypeDelayed_5 = typeInfo.fields[0];\n }\n else {\n matchResult = 67;\n }\n break;\n }\n case 21: {\n matchResult = 47;\n value_49 = input.fields[0];\n break;\n }\n case 40: {\n if (Convert_isQuoted(input.fields[0])) {\n matchResult = 50;\n caseName_4 = input.fields[0];\n getTypes_2 = typeInfo.fields[0];\n }\n else {\n matchResult = 51;\n caseName_5 = input.fields[0];\n getTypes_3 = typeInfo.fields[0];\n }\n break;\n }\n case 39: {\n matchResult = 52;\n getFields = typeInfo.fields[0];\n serializedRecord = input.fields[0];\n break;\n }\n case 24: {\n matchResult = 66;\n getType_1 = typeInfo.fields[0];\n break;\n }\n default:\n matchResult = 67;\n }\n break;\n }\n case 2: {\n switch (typeInfo.tag) {\n case 7: {\n matchResult = 7;\n value_9 = input.fields[0];\n break;\n }\n case 23: {\n matchResult = 30;\n genericJson = input;\n break;\n }\n case 27: {\n if (!equals(input, new Json(3, []))) {\n matchResult = 46;\n jsonValue_5 = input;\n optionalTypeDelayed_5 = typeInfo.fields[0];\n }\n else {\n matchResult = 67;\n }\n break;\n }\n case 24: {\n matchResult = 66;\n getType_1 = typeInfo.fields[0];\n break;\n }\n default:\n matchResult = 67;\n }\n break;\n }\n case 3: {\n switch (typeInfo.tag) {\n case 2: {\n matchResult = 28;\n break;\n }\n case 0: {\n matchResult = 29;\n break;\n }\n case 23: {\n matchResult = 30;\n genericJson = input;\n break;\n }\n case 27: {\n matchResult = 45;\n break;\n }\n case 24: {\n matchResult = 66;\n getType_1 = typeInfo.fields[0];\n break;\n }\n default:\n matchResult = 67;\n }\n break;\n }\n case 5: {\n switch (typeInfo.tag) {\n case 23: {\n matchResult = 30;\n genericJson = input;\n break;\n }\n case 40: {\n matchResult = 44;\n getTypes_1 = typeInfo.fields[0];\n values = input.fields[0];\n break;\n }\n case 27: {\n if (!equals(input, new Json(3, []))) {\n matchResult = 46;\n jsonValue_5 = input;\n optionalTypeDelayed_5 = typeInfo.fields[0];\n }\n else {\n matchResult = 67;\n }\n break;\n }\n case 12: {\n matchResult = 49;\n dict = input.fields[0];\n break;\n }\n case 28: {\n matchResult = 56;\n elementTypeDelayed_2 = typeInfo.fields[0];\n linkedList = input.fields[0];\n break;\n }\n case 39: {\n matchResult = 60;\n dict_1 = input.fields[0];\n getTypes_5 = typeInfo.fields[0];\n break;\n }\n case 34: {\n matchResult = 63;\n dict_2 = input.fields[0];\n getTypes_8 = typeInfo.fields[0];\n break;\n }\n case 33: {\n matchResult = 65;\n getTypes_9 = typeInfo.fields[0];\n map = input.fields[0];\n break;\n }\n case 24: {\n matchResult = 66;\n getType_1 = typeInfo.fields[0];\n break;\n }\n default:\n matchResult = 67;\n }\n break;\n }\n case 4: {\n switch (typeInfo.tag) {\n case 23: {\n matchResult = 30;\n genericJson = input;\n break;\n }\n case 27: {\n if (!equals(input, new Json(3, []))) {\n matchResult = 46;\n jsonValue_5 = input;\n optionalTypeDelayed_5 = typeInfo.fields[0];\n }\n else {\n matchResult = 67;\n }\n break;\n }\n case 40: {\n matchResult = 53;\n caseValue = input.fields[0];\n getTypes_4 = typeInfo.fields[0];\n break;\n }\n case 30: {\n matchResult = 54;\n elementTypeDelayed = typeInfo.fields[0];\n values_4 = input.fields[0];\n break;\n }\n case 28: {\n matchResult = 55;\n elementTypeDelayed_1 = typeInfo.fields[0];\n values_5 = input.fields[0];\n break;\n }\n case 29: {\n matchResult = 57;\n elementTypeDelayed_3 = typeInfo.fields[0];\n values_6 = input.fields[0];\n break;\n }\n case 31: {\n matchResult = 58;\n elementTypeDelayed_4 = typeInfo.fields[0];\n values_7 = input.fields[0];\n break;\n }\n case 32: {\n matchResult = 59;\n array_12 = input.fields[0];\n tupleTypesDelayed = typeInfo.fields[0];\n break;\n }\n case 33: {\n matchResult = 61;\n getTypes_6 = typeInfo.fields[0];\n tuples = input.fields[0];\n break;\n }\n case 34: {\n matchResult = 62;\n getTypes_7 = typeInfo.fields[0];\n tuples_1 = input.fields[0];\n break;\n }\n case 36: {\n matchResult = 64;\n getType = typeInfo.fields[0];\n items = input.fields[0];\n break;\n }\n case 24: {\n matchResult = 66;\n getType_1 = typeInfo.fields[0];\n break;\n }\n default:\n matchResult = 67;\n }\n break;\n }\n default:\n switch (typeInfo.tag) {\n case 9: {\n matchResult = 0;\n value_2 = input.fields[0];\n break;\n }\n case 8: {\n matchResult = 3;\n value_5 = input.fields[0];\n break;\n }\n case 6: {\n matchResult = 6;\n value_8 = input.fields[0];\n break;\n }\n case 1: {\n matchResult = 10;\n value_12 = input.fields[0];\n break;\n }\n case 2: {\n matchResult = 12;\n value_14 = input.fields[0];\n break;\n }\n case 10: {\n matchResult = 15;\n value_17 = input.fields[0];\n break;\n }\n case 11: {\n matchResult = 17;\n value_19 = input.fields[0];\n break;\n }\n case 3: {\n matchResult = 18;\n value_20 = input.fields[0];\n break;\n }\n case 4: {\n matchResult = 20;\n value_22 = input.fields[0];\n break;\n }\n case 5: {\n matchResult = 22;\n value_24 = input.fields[0];\n break;\n }\n case 20: {\n matchResult = 24;\n value_26 = input.fields[0];\n break;\n }\n case 38: {\n matchResult = 26;\n getElemType = typeInfo.fields[0];\n value_28 = input.fields[0];\n break;\n }\n case 23: {\n matchResult = 30;\n genericJson = input;\n break;\n }\n case 13: {\n matchResult = 33;\n value_32 = input.fields[0];\n break;\n }\n case 14: {\n matchResult = 34;\n value_33 = input.fields[0];\n break;\n }\n case 19: {\n matchResult = 37;\n value_36 = input.fields[0];\n break;\n }\n case 16: {\n matchResult = 40;\n value_39 = input.fields[0];\n break;\n }\n case 17: {\n matchResult = 41;\n value_40 = input.fields[0];\n break;\n }\n case 27: {\n if (!equals(input, new Json(3, []))) {\n matchResult = 46;\n jsonValue_5 = input;\n optionalTypeDelayed_5 = typeInfo.fields[0];\n }\n else {\n matchResult = 67;\n }\n break;\n }\n case 12: {\n matchResult = 48;\n value_50 = input.fields[0];\n break;\n }\n case 24: {\n matchResult = 66;\n getType_1 = typeInfo.fields[0];\n break;\n }\n default:\n matchResult = 67;\n }\n }\n switch (matchResult) {\n case 0:\n return value_2;\n case 1:\n return NaN;\n case 2:\n return parse(value_4);\n case 3:\n return value_5;\n case 4:\n return NaN;\n case 5:\n return parse(value_7);\n case 6:\n return Math.floor(value_8);\n case 7:\n return value_9;\n case 8:\n return parse_1(value_10, 511, false, 32);\n case 9:\n return value_11;\n case 10:\n return String.fromCharCode(value_12);\n case 11:\n return value_13;\n case 12:\n return value_14.toString();\n case 13:\n return Uri.create(value_15);\n case 14:\n return new Decimal(value_16);\n case 15:\n return new Decimal(value_17);\n case 16:\n return parse_1(value_18, 511, false, 16);\n case 17:\n return (value_19 + 0x8000 & 0xFFFF) - 0x8000;\n case 18:\n return value_20 & 0xFFFF;\n case 19:\n return parse_1(value_21, 511, true, 16);\n case 20:\n return value_22 >>> 0;\n case 21:\n return parse_1(value_23, 511, true, 32);\n case 22:\n return toUInt64(fromFloat64(value_24));\n case 23:\n return toUInt64(parse_2(value_25, 511, true, 64));\n case 24:\n return Math.floor(value_26);\n case 25: {\n const patternInput = getlElemType();\n const underlyingType = patternInput[0];\n const originalType = patternInput[1];\n switch (underlyingType.tag) {\n case 6: {\n let matchValue_1;\n let outArg = 0;\n matchValue_1 = [tryParse(value_27, 511, false, 32, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n if (matchValue_1[0]) {\n return matchValue_1[1];\n }\n else {\n const arg_1 = name_2(originalType);\n return toFail(printf(\"The value \\'%s\\' is not valid for enum of type \\'%s\\'\"))(value_27)(arg_1);\n }\n }\n case 12: {\n let matchValue_2;\n let outArg_1 = 0n;\n matchValue_2 = [tryParse_1(value_27, 511, false, 64, new FSharpRef(() => outArg_1, (v_1) => {\n outArg_1 = v_1;\n })), outArg_1];\n if (matchValue_2[0]) {\n return matchValue_2[1];\n }\n else {\n const arg_3 = name_2(originalType);\n return toFail(printf(\"The value \\'%s\\' is not valid for enum of type \\'%s\\'\"))(value_27)(arg_3);\n }\n }\n default: {\n const arg_5 = name_2(originalType);\n return toFail(printf(\"The value \\'%s\\' cannot be converted to enum of type \\'%s\\'\"))(value_27)(arg_5);\n }\n }\n }\n case 26: {\n const patternInput_1 = getElemType();\n return value_28;\n }\n case 27: {\n const elemType = getElemType_1();\n if (elemType.tag === 13) {\n if ((typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) ? true : Convert_insideBrowser) {\n return fromBase64String(value_29);\n }\n else {\n return Array.prototype.slice.call(Buffer.from(value_29, 'base64'));\n }\n }\n else {\n return toFail(printf(\"Cannot convert arbitrary string \\'%s\\' to %A\"))(value_29)(elemType);\n }\n }\n case 28:\n return defaultOf();\n case 29:\n return undefined;\n case 30:\n return SimpleJson_toPlainObject(genericJson);\n case 31:\n return toInt64(parse_2(value_30, 511, false, 64));\n case 32:\n return parse_1(value_31, 511, true, 8);\n case 33:\n return value_32 & 0xFF;\n case 34:\n return (value_33 + 0x80 & 0xFF) - 0x80;\n case 35:\n return parse_1(value_34, 511, false, 8);\n case 36:\n return parse_3(value_35);\n case 37:\n return fromFloat64(Math.floor(value_36));\n case 38:\n return parse_4(value_37);\n case 39:\n return parse_5(value_38);\n case 40:\n return fromUnixTimeSeconds(toInt64(fromFloat64(Math.floor(value_39))));\n case 41:\n return fromDayNumber(~~value_40);\n case 42:\n return fromDayNumber(parse_1(value_41, 511, false, 32));\n case 43:\n return fromTicks(toInt64(parse_2(value_42, 511, false, 64)));\n case 44: {\n const patternInput_2 = getTypes_1();\n const unionType = patternInput_2[1];\n const cases = patternInput_2[0];\n const matchValue_3 = toList_1(values);\n let matchResult_1, caseName_1, values_1, caseName_2, json;\n if (!isEmpty(matchValue_3)) {\n if (head(matchValue_3)[1].tag === 4) {\n if (isEmpty(tail_1(matchValue_3))) {\n matchResult_1 = 0;\n caseName_1 = head(matchValue_3)[0];\n values_1 = head(matchValue_3)[1].fields[0];\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n const activePatternResult = Convert_$007CNonArray$007C_$007C(head(matchValue_3)[1]);\n if (activePatternResult != null) {\n if (isEmpty(tail_1(matchValue_3))) {\n matchResult_1 = 1;\n caseName_2 = head(matchValue_3)[0];\n json = activePatternResult;\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n matchResult_1 = 2;\n }\n }\n }\n else {\n matchResult_1 = 2;\n }\n switch (matchResult_1) {\n case 0: {\n const _arg = tryFind_1((case$) => (case$.CaseName === caseName_1), cases);\n if (_arg != null) {\n if ((foundCase = _arg, (foundCase.CaseTypes.length === 1) && Convert_arrayLike(item_1(0, foundCase.CaseTypes)))) {\n const foundCase_2 = _arg;\n return makeUnion(foundCase_2.Info, [Convert_fromJsonAs(new Json(4, [values_1]), item_1(0, foundCase_2.CaseTypes))]);\n }\n else if ((foundCase_1 = _arg, (foundCase_1.CaseTypes.length === 1) && Convert_optional(item_1(0, foundCase_1.CaseTypes)))) {\n const foundCase_3 = _arg;\n return makeUnion(foundCase_3.Info, [Convert_fromJsonAs(new Json(4, [values_1]), item_1(0, foundCase_3.CaseTypes))]);\n }\n else {\n const foundCase_4 = _arg;\n if (((foundCase_4.CaseTypes.length === 1) && !Convert_arrayLike(item_1(0, foundCase_4.CaseTypes))) && (foundCase_4.CaseTypes.length !== length(values_1))) {\n const arg_13 = foundCase_4.CaseTypes.length | 0;\n const arg_14 = length(values_1) | 0;\n toFail(printf(\"Expected case \\'%s\\' to have %d argument types but the JSON data only contained %d values\"))(foundCase_4.CaseName)(arg_13)(arg_14);\n }\n return makeUnion(foundCase_4.Info, map_2((tupledArg) => Convert_fromJsonAs(tupledArg[1], tupledArg[0]), zip(foundCase_4.CaseTypes, toArray(values_1))));\n }\n }\n else {\n const expectedCases = join(\", \", map_2((case$_1) => toText(printf(\" \\'%s\\' \"))(case$_1.CaseName), cases));\n const arg_10 = name_2(unionType);\n return toFail(printf(\"Case %s was not valid for type \\'%s\\', expected one of the cases [%s]\"))(caseName_1)(arg_10)(expectedCases);\n }\n }\n case 1: {\n const _arg_1 = tryFind_1((case$_2) => (case$_2.CaseName === caseName_2), cases);\n let matchResult_2, caseInfo, caseName_3, caseType;\n if (_arg_1 != null) {\n if ((testExpr = _arg_1.CaseTypes, !equalsWith(equals, testExpr, defaultOf()) && (testExpr.length === 1))) {\n matchResult_2 = 0;\n caseInfo = _arg_1.Info;\n caseName_3 = _arg_1.CaseName;\n caseType = item_1(0, _arg_1.CaseTypes);\n }\n else {\n matchResult_2 = 1;\n }\n }\n else {\n matchResult_2 = 1;\n }\n switch (matchResult_2) {\n case 0:\n return makeUnion(caseInfo, [((input_1) => ((typeInfo_1) => Convert_fromJsonAs(input_1, typeInfo_1)))(json)(caseType)]);\n default: {\n const expectedCases_1 = join(\", \", map_2((case$_3) => toText(printf(\" \\'%s\\' \"))(case$_3.CaseName), cases));\n const arg_19 = name_2(unionType);\n return toFail(printf(\"Case %s was not valid for type \\'%s\\', expected one of the cases [%s]\"))(caseName_2)(arg_19)(expectedCases_1);\n }\n }\n }\n default:\n if ((containsKey(\"tag\", values) && containsKey(\"fields\", values)) && (count(values) === 2)) {\n const matchValue_4 = tryFind(\"tag\", values);\n const matchValue_5 = tryFind(\"fields\", values);\n let matchResult_3, caseIndex, fieldValues;\n if (matchValue_4 != null) {\n if (matchValue_4.tag === 0) {\n if (matchValue_5 != null) {\n if (matchValue_5.tag === 4) {\n matchResult_3 = 0;\n caseIndex = matchValue_4.fields[0];\n fieldValues = matchValue_5.fields[0];\n }\n else {\n matchResult_3 = 1;\n }\n }\n else {\n matchResult_3 = 1;\n }\n }\n else {\n matchResult_3 = 1;\n }\n }\n else {\n matchResult_3 = 1;\n }\n switch (matchResult_3) {\n case 0: {\n const foundCase_5 = item_1(~~caseIndex, cases);\n return makeUnion(foundCase_5.Info, mapIndexed((index, value_48) => Convert_fromJsonAs(value_48, item_1(index, foundCase_5.CaseTypes)), toArray(fieldValues)));\n }\n default: {\n const arg_21 = SimpleJson_toString(new Json(5, [values]));\n const arg_22 = fullName(unionType);\n return toFail(printf(\"Could not deserialize JSON(%s) into type %s\"))(arg_21)(arg_22);\n }\n }\n }\n else if (Convert_unionOfRecords(typeInfo)) {\n const foundDiscriminatorKey = tryFind_2((keyword) => containsKey(keyword, values), ofArray([\"__typename\", \"$typename\", \"$type\"]));\n if (foundDiscriminatorKey != null) {\n const discriminatorValueJson = find(foundDiscriminatorKey, values);\n if (discriminatorValueJson.tag === 1) {\n const discriminatorValue = discriminatorValueJson.fields[0];\n const foundUnionCase = tryFind_3((case$_4) => (case$_4.CaseName.toUpperCase() === discriminatorValue.toUpperCase()), cases);\n if (foundUnionCase != null) {\n const case$_5 = foundUnionCase;\n return makeUnion(case$_5.Info, [Convert_fromJsonAs(new Json(5, [values]), item_1(0, case$_5.CaseTypes))]);\n }\n else {\n const arg_24 = name_2(unionType);\n return toFail(printf(\"Union of records of type \\'%s\\' does not have a matching case \\'%s\\'\"))(arg_24)(discriminatorValue);\n }\n }\n else {\n const arg_26 = name_2(unionType);\n return toFail(printf(\"Union of records of type \\'%s\\' cannot be deserialized with the value of the discriminator key is not a string to match against a specific union case\"))(arg_26);\n }\n }\n else {\n const arg_23 = name_2(unionType);\n return toFail(printf(\"Could not serialize the JSON object into the union of records of type %s because the JSON did not contain a known discriminator. Expected \\'__typename\\', \\'$typeName\\' or \\'$type\\'\"))(arg_23);\n }\n }\n else {\n const unexpectedJson = JSON.stringify(matchValue_3);\n const expectedType = JSON.stringify(cases);\n return toFail(printf(\"Expected JSON:\\n%s\\nto match the type\\n%s\"))(unexpectedJson)(expectedType);\n }\n }\n }\n case 45:\n return undefined;\n case 46:\n return (some)(Convert_fromJsonAs(jsonValue_5, optionalTypeDelayed_5()));\n case 47:\n return parse_6(value_49);\n case 48:\n return ((value_51) => toInt64(fromInt32(value_51)))(~~value_50);\n case 49: {\n const get$ = (key) => tryFind(key, dict);\n const _arg_2 = choose((x_1) => x_1, ofArray([get$(\"low\"), get$(\"high\"), get$(\"unsigned\")]));\n let matchResult_4, high, low;\n if (!isEmpty(_arg_2)) {\n if (head(_arg_2).tag === 0) {\n if (!isEmpty(tail_1(_arg_2))) {\n if (head(tail_1(_arg_2)).tag === 0) {\n if (!isEmpty(tail_1(tail_1(_arg_2)))) {\n if (head(tail_1(tail_1(_arg_2))).tag === 2) {\n if (isEmpty(tail_1(tail_1(tail_1(_arg_2))))) {\n matchResult_4 = 0;\n high = head(tail_1(_arg_2)).fields[0];\n low = head(_arg_2).fields[0];\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n switch (matchResult_4) {\n case 0:\n return toInt64_1(concat([getBytesInt32(~~low), getBytesInt32(~~high)], Uint8Array), 0);\n default:\n return toFail(printf(\"Unable to construct int64 from object literal { low: int, high: int, unsigned: bool }\"));\n }\n }\n case 50: {\n const patternInput_3 = getTypes_2();\n const caseTypes = patternInput_3[0];\n const _arg_3 = tryFind_1((case$_6) => (case$_6.CaseName === Convert_removeQuotes(caseName_4)), caseTypes);\n if (_arg_3 == null) {\n const expectedCases_2 = join(\", \", map_2((case$_7) => toText(printf(\" \\'%s\\' \"))(case$_7.CaseName), caseTypes));\n const arg_33 = name_2(patternInput_3[1]);\n return toFail(printf(\"Case %s was not valid for type \\'%s\\', expected one of the cases [%s]\"))(caseName_4)(arg_33)(expectedCases_2);\n }\n else {\n return makeUnion(_arg_3.Info, []);\n }\n }\n case 51: {\n const patternInput_4 = getTypes_3();\n const caseTypes_1 = patternInput_4[0];\n const _arg_4 = tryFind_1((case$_8) => (case$_8.CaseName === caseName_5), caseTypes_1);\n if (_arg_4 == null) {\n const expectedCases_3 = join(\", \", map_2((case$_9) => toText(printf(\" \\'%s\\' \"))(case$_9.CaseName), caseTypes_1));\n const arg_37 = name_2(patternInput_4[1]);\n return toFail(printf(\"Case %s was not valid for type \\'%s\\', expected one of the cases [%s]\"))(caseName_5)(arg_37)(expectedCases_3);\n }\n else {\n return makeUnion(_arg_4.Info, []);\n }\n }\n case 52: {\n input_mut = SimpleJson_parse(serializedRecord);\n typeInfo_mut = typeInfo;\n continue Convert_fromJsonAs;\n }\n case 53: {\n const patternInput_5 = getTypes_4();\n const cases_1 = patternInput_5[0];\n let matchResult_5, caseName_6, caseName_8, values_3, otherwise_6;\n if (!isEmpty(caseValue)) {\n if (head(caseValue).tag === 1) {\n if (isEmpty(tail_1(caseValue))) {\n matchResult_5 = 0;\n caseName_6 = head(caseValue).fields[0];\n }\n else {\n matchResult_5 = 1;\n caseName_8 = head(caseValue).fields[0];\n values_3 = tail_1(caseValue);\n }\n }\n else {\n matchResult_5 = 2;\n otherwise_6 = caseValue;\n }\n }\n else {\n matchResult_5 = 2;\n otherwise_6 = caseValue;\n }\n switch (matchResult_5) {\n case 0: {\n const _arg_5 = tryFind_1((case$_10) => (case$_10.CaseName === caseName_6), cases_1);\n if (_arg_5 == null) {\n const expectedCases_4 = join(\", \", map_2((case$_11) => toText(printf(\" \\'%s\\' \"))(case$_11.CaseName), cases_1));\n const arg_41 = name_2(patternInput_5[1]);\n return toFail(printf(\"Case \\'%s\\' was not valid for type \\'%s\\', expected one of the cases [%s]\"))(caseName_6)(arg_41)(expectedCases_4);\n }\n else {\n const caseName_7 = _arg_5.CaseName;\n const caseInfoTypes = _arg_5.CaseTypes;\n return makeUnion(_arg_5.Info, []);\n }\n }\n case 1: {\n const _arg_6 = tryFind_1((case$_12) => (case$_12.CaseName === caseName_8), cases_1);\n if (_arg_6 != null) {\n const types = _arg_6.CaseTypes;\n const foundCaseName = _arg_6.CaseName;\n const caseInfo_4 = _arg_6.Info;\n if (types.length !== length(values_3)) {\n toFail(printf(\"The number of union case parameters for \\'%s\\' is different\"))(foundCaseName);\n }\n return makeUnion(caseInfo_4, map_2((tupledArg_1) => Convert_fromJsonAs(tupledArg_1[1], tupledArg_1[0]), zip(types, toArray(values_3))));\n }\n else {\n const expectedCases_5 = join(\", \", map_2((_arg_7) => _arg_7.CaseName, cases_1));\n return toFail(printf(\"Case %s was not valid, expected one of [%s]\"))(caseName_8)(expectedCases_5);\n }\n }\n default: {\n const unexpectedJson_1 = JSON.stringify(otherwise_6);\n const expectedType_1 = JSON.stringify(cases_1);\n return toFail(printf(\"Expected JSON:\\n%s\\nto match the type\\n%s\"))(unexpectedJson_1)(expectedType_1);\n }\n }\n }\n case 54: {\n const elementType = elementTypeDelayed();\n return toArray(map_3((value_55) => Convert_fromJsonAs(value_55, elementType), values_4));\n }\n case 55: {\n const elementType_1 = elementTypeDelayed_1();\n return map_3((value_57) => Convert_fromJsonAs(value_57, elementType_1), values_5);\n }\n case 56: {\n const elementType_2 = elementTypeDelayed_2();\n return map_3((value_59) => Convert_fromJsonAs(value_59, elementType_2), Convert_flattenFable3Lists(linkedList));\n }\n case 57: {\n const elementType_3 = elementTypeDelayed_3();\n return ofList_1(map_3((value_61) => Convert_fromJsonAs(value_61, elementType_3), values_6), {\n Compare: compare,\n });\n }\n case 58: {\n const elementType_4 = elementTypeDelayed_4();\n return map_3((value_63) => Convert_fromJsonAs(value_63, elementType_4), values_7);\n }\n case 59:\n return map_2((tupledArg_2) => Convert_fromJsonAs(tupledArg_2[1], tupledArg_2[0]), zip(tupleTypesDelayed(), toArray(array_12)));\n case 60: {\n const patternInput_6 = getTypes_5();\n const recordType = patternInput_6[1];\n const fields = patternInput_6[0];\n return makeRecord(recordType, (values_8 = toList_1(dict_1), map_2((_arg_8) => {\n let list_10, f2, clo_48;\n const fieldType = _arg_8.FieldType;\n const fieldName = _arg_8.FieldName;\n const _arg_9 = tryFind_2((tupledArg_3) => (fieldName === tupledArg_3[0]), values_8);\n if (_arg_9 == null) {\n if (fieldType.tag === 27) {\n return undefined;\n }\n else {\n let dictKeys;\n const arg_50 = join(\", \", (list_10 = toList_1(dict_1), map_3((f2 = ((clo_48 = toText(printf(\"\\'%s\\'\")), clo_48)), (arg_49) => f2(arg_49[0])), list_10)));\n dictKeys = toText(printf(\"[ %s ]\"))(arg_50);\n let recordFields;\n const arg_53 = join(\", \", map_2((_arg_10) => {\n const name_1 = _arg_10.FieldName;\n if (_arg_10.FieldType.tag === 27) {\n return toText(printf(\"optional(\\'%s\\')\"))(name_1);\n }\n else {\n return toText(printf(\"required(\\'%s\\')\"))(name_1);\n }\n }, fields));\n recordFields = toText(printf(\"[ %s ]\"))(arg_53);\n const arg_56 = name_2(recordType);\n return toFail(printf(\"Could not find the required key \\'%s\\' in the JSON object literal with keys %s to match with record type \\'%s\\' that has fields %s\"))(fieldName)(dictKeys)(arg_56)(recordFields);\n }\n }\n else {\n const key_2 = _arg_9[0];\n return Convert_fromJsonAs(_arg_9[1], fieldType);\n }\n }, fields)));\n }\n case 61: {\n const patternInput_7 = getTypes_6();\n const keyType = patternInput_7[0];\n const pairs = toList(delay(() => collect((keyValuePair) => {\n let a;\n return singleton_1(Convert_fromJsonAs(keyValuePair, new TypeInfo(32, [(a = [keyType, patternInput_7[1]], () => a)])));\n }, tuples)));\n switch (keyType.tag) {\n case 6:\n case 2:\n case 7:\n return ofList(pairs, {\n Compare: comparePrimitives,\n });\n default:\n return ofList(pairs, {\n Compare: compare,\n });\n }\n }\n case 62: {\n const patternInput_8 = getTypes_7();\n const keyType_1 = patternInput_8[0];\n const pairs_1 = toList(delay(() => collect((keyValuePair_1) => singleton_1(Convert_fromJsonAs(keyValuePair_1, new TypeInfo(32, [() => [keyType_1, patternInput_8[1]]]))), tuples_1)));\n const output = (keyType_1.tag === 40) ? (new Dictionary([], {\n Equals: equals,\n GetHashCode: safeHash,\n })) : ((keyType_1.tag === 39) ? (new Dictionary([], {\n Equals: equals,\n GetHashCode: structuralHash,\n })) : (new Dictionary([], {\n Equals: equals,\n GetHashCode: structuralHash,\n })));\n const enumerator = getEnumerator(pairs_1);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n addToDict(output, forLoopVar[0], forLoopVar[1]);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return output;\n }\n case 63: {\n const patternInput_9 = getTypes_8();\n const keyType_2 = patternInput_9[0];\n const pairs_2 = map_3((tupledArg_4) => [Convert_fromJsonAs(new Json(1, [tupledArg_4[0]]), keyType_2), Convert_fromJsonAs(tupledArg_4[1], patternInput_9[1])], toList_1(dict_2));\n const output_1 = (keyType_2.tag === 40) ? (new Dictionary([], {\n Equals: equals,\n GetHashCode: safeHash,\n })) : ((keyType_2.tag === 39) ? (new Dictionary([], {\n Equals: equals,\n GetHashCode: structuralHash,\n })) : (new Dictionary([], {\n Equals: equals,\n GetHashCode: structuralHash,\n })));\n const enumerator_1 = getEnumerator(pairs_2);\n try {\n while (enumerator_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar_1 = enumerator_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n addToDict(output_1, forLoopVar_1[0], forLoopVar_1[1]);\n }\n }\n finally {\n disposeSafe(enumerator_1);\n }\n return output_1;\n }\n case 64: {\n const elemType_1 = getType();\n const hashset = (elemType_1.tag === 40) ? (new HashSet([], {\n Equals: equals,\n GetHashCode: safeHash,\n })) : ((elemType_1.tag === 39) ? (new HashSet([], {\n Equals: equals,\n GetHashCode: structuralHash,\n })) : (new HashSet([], {\n Equals: equals,\n GetHashCode: structuralHash,\n })));\n const enumerator_2 = getEnumerator(items);\n try {\n while (enumerator_2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n addToSet(Convert_fromJsonAs(enumerator_2[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), elemType_1), hashset);\n }\n }\n finally {\n disposeSafe(enumerator_2);\n }\n return hashset;\n }\n case 65: {\n const patternInput_10 = getTypes_9();\n const valueType_5 = patternInput_10[1];\n const keyType_3 = patternInput_10[0];\n const matchValue_7 = tryFind(\"comparer\", map);\n const matchValue_8 = tryFind(\"tree\", map);\n let matchResult_6, comparer_2, tree_2, comparer_3, tree_3;\n if (matchValue_7 != null) {\n if (matchValue_7.tag === 5) {\n if (matchValue_8 != null) {\n switch (matchValue_8.tag) {\n case 4: {\n if ((tree = matchValue_8.fields[0], isEmpty_1(matchValue_7.fields[0]))) {\n matchResult_6 = 0;\n comparer_2 = matchValue_7.fields[0];\n tree_2 = matchValue_8.fields[0];\n }\n else {\n matchResult_6 = 2;\n }\n break;\n }\n case 5: {\n if ((tree_1 = matchValue_8.fields[0], isEmpty_1(matchValue_7.fields[0]))) {\n matchResult_6 = 1;\n comparer_3 = matchValue_7.fields[0];\n tree_3 = matchValue_8.fields[0];\n }\n else {\n matchResult_6 = 2;\n }\n break;\n }\n default:\n matchResult_6 = 2;\n }\n }\n else {\n matchResult_6 = 2;\n }\n }\n else {\n matchResult_6 = 2;\n }\n }\n else {\n matchResult_6 = 2;\n }\n switch (matchResult_6) {\n case 0: {\n const matchValue_10 = Convert_generateMap(new Json(4, [tree_2]));\n if (matchValue_10 == null) {\n const inputJson = SimpleJson_toString(new Json(4, [tree_2]));\n return toFail(printf(\"Could not generate map from JSON\\n %s\"))(inputJson);\n }\n else {\n const pairs_3 = map_3((tupledArg_5) => {\n const key_6 = tupledArg_5[0];\n return [!Convert_isQuoted(key_6) ? Convert_fromJsonAs(new Json(1, [key_6]), keyType_3) : Convert_fromJsonAs(SimpleJson_parseNative(key_6), keyType_3), Convert_fromJsonAs(tupledArg_5[1], valueType_5)];\n }, Convert_flattenMap(matchValue_10));\n switch (keyType_3.tag) {\n case 6:\n case 2:\n case 7:\n return ofList(pairs_3, {\n Compare: comparePrimitives,\n });\n default:\n return ofList(pairs_3, {\n Compare: compare,\n });\n }\n }\n }\n case 1: {\n input_mut = (new Json(5, [ofList(Convert_flatteFable3Map(tree_3), {\n Compare: comparePrimitives,\n })]));\n typeInfo_mut = typeInfo;\n continue Convert_fromJsonAs;\n }\n default: {\n const pairs_4 = map_3((tupledArg_6) => {\n const key_7 = tupledArg_6[0];\n return [!Convert_isQuoted(key_7) ? ((isPrimitive(keyType_3) ? true : enumUnion(keyType_3)) ? Convert_fromJsonAs(new Json(1, [key_7]), keyType_3) : Convert_fromJsonAs(SimpleJson_parseNative(key_7), keyType_3)) : Convert_fromJsonAs(SimpleJson_parseNative(key_7), keyType_3), Convert_fromJsonAs(tupledArg_6[1], valueType_5)];\n }, toList_1(map));\n switch (keyType_3.tag) {\n case 6:\n case 2:\n case 7:\n return ofList(pairs_4, {\n Compare: comparePrimitives,\n });\n default:\n return ofList(pairs_4, {\n Compare: compare,\n });\n }\n }\n }\n }\n case 66: {\n const unknownType = getType_1();\n const arg_59 = SimpleJson_toString(input);\n const arg_60 = fullName(unknownType);\n return toFail(printf(\"Cannot convert %s to %s\"))(arg_59)(arg_60);\n }\n default: {\n const arg_61 = SimpleJson_toString(input);\n const arg_62 = JSON.stringify(typeInfo);\n return toFail(printf(\"Cannot convert %s to %s\"))(arg_61)(arg_62);\n }\n }\n break;\n }\n}\n\nexport function Convert_fromJson(json, typeInfo) {\n return Convert_fromJsonAs(json, typeInfo);\n}\n\nexport const Convert_quoteText = quote;\n\nexport function Convert_serialize(value_mut, typeInfo_mut) {\n let copyOfStruct;\n Convert_serialize:\n while (true) {\n const value = value_mut, typeInfo = typeInfo_mut;\n switch (typeInfo.tag) {\n case 2: {\n const content = value;\n if (content == null) {\n return \"null\";\n }\n else {\n return Convert_quoteText(content);\n }\n }\n case 0:\n return \"null\";\n case 9:\n case 8:\n if (Number.isNaN(value)) {\n return Convert_quoteText(\"NaN\");\n }\n else {\n return value.toString();\n }\n case 1:\n return Convert_quoteText(value);\n case 13:\n case 14:\n case 3:\n case 4:\n case 11:\n case 38:\n case 20:\n case 6:\n return int32ToString(value);\n case 5:\n case 12:\n return Convert_betweenQuotes(int64ToString(value));\n case 19:\n return Convert_betweenQuotes(toString(value));\n case 10:\n return Convert_betweenQuotes(toString_1(value));\n case 7:\n if (value) {\n return \"true\";\n }\n else {\n return \"false\";\n }\n case 21:\n return Convert_betweenQuotes((copyOfStruct = value, copyOfStruct));\n case 22:\n return Convert_betweenQuotes(toString_2(value));\n case 15:\n return Convert_betweenQuotes(toString_3(value, \"O\"));\n case 16:\n return Convert_betweenQuotes(toString_3(value, \"O\"));\n case 17:\n return int32ToString(dayNumber(value));\n case 18:\n return Convert_betweenQuotes(int64ToString(ticks(value)));\n case 39:\n return (\"{\" + join(\", \", map_2((field) => {\n const arg_1 = Convert_serialize(getRecordField(value, field.PropertyInfo), field.FieldType);\n return toText(printf(\"\\\"%s\\\": %s\"))(field.FieldName)(arg_1);\n }, typeInfo.fields[0]()[0]))) + \"}\";\n case 35: {\n const elementType = typeInfo.fields[0]();\n return (\"[\" + join(\", \", map_4((element) => Convert_serialize(element, elementType), value))) + \"]\";\n }\n case 36: {\n const elementType_1 = typeInfo.fields[0]();\n return (\"[\" + join(\", \", map_4((element_1) => Convert_serialize(element_1, elementType_1), value))) + \"]\";\n }\n case 29: {\n const elementType_2 = typeInfo.fields[0]();\n return (\"[\" + join(\", \", map_4((element_2) => Convert_serialize(element_2, elementType_2), value))) + \"]\";\n }\n case 30: {\n const elementType_3 = typeInfo.fields[0]();\n return (\"[\" + join(\", \", map_2((element_3) => Convert_serialize(element_3, elementType_3), value))) + \"]\";\n }\n case 28: {\n const elementType_4 = typeInfo.fields[0]();\n return (\"[\" + join(\", \", map_3((element_4) => Convert_serialize(element_4, elementType_4), value))) + \"]\";\n }\n case 31: {\n const elementType_5 = typeInfo.fields[0]();\n return (\"[\" + join(\", \", map_2((element_5) => Convert_serialize(element_5, elementType_5), toArray_1(value)))) + \"]\";\n }\n case 27: {\n const matchValue = value;\n if (matchValue != null) {\n value_mut = value_91(matchValue);\n typeInfo_mut = typeInfo.fields[0]();\n continue Convert_serialize;\n }\n else {\n return \"null\";\n }\n }\n case 40: {\n const patternInput_1 = typeInfo.fields[0]();\n const patternInput_2 = getUnionFields(value, patternInput_1[1]);\n const usedCase = patternInput_2[0];\n const fields = patternInput_2[1];\n const caseTypes = find_1((case$) => (case$.CaseName === name_2(usedCase)), patternInput_1[0]).CaseTypes;\n if (enumUnion(typeInfo) ? true : (caseTypes.length === 0)) {\n return Convert_betweenQuotes(name_2(usedCase));\n }\n else if (caseTypes.length === 1) {\n return (((\"{\" + Convert_betweenQuotes(name_2(usedCase))) + \": \") + Convert_serialize(item_1(0, fields), item_1(0, caseTypes))) + \"}\";\n }\n else {\n const serializedFields_1 = join(\", \", mapIndexed((index, caseType) => Convert_serialize(item_1(index, fields), caseType), caseTypes));\n return ((((\"{\" + Convert_betweenQuotes(name_2(usedCase))) + \": \") + \"[\") + serializedFields_1) + \"] }\";\n }\n }\n case 33: {\n const patternInput_3 = typeInfo.fields[0]();\n const keyType = patternInput_3[0];\n const serializedValues = join(\", \", map_2((tupledArg) => {\n const serializedKey = Convert_serialize(tupledArg[0], keyType);\n const serializedValue = Convert_serialize(tupledArg[1], patternInput_3[1]);\n if (isPrimitive(keyType) ? true : enumUnion(keyType)) {\n if (!Convert_isQuoted(serializedKey)) {\n return (Convert_quoteText(serializedKey) + \": \") + serializedValue;\n }\n else {\n return (serializedKey + \": \") + serializedValue;\n }\n }\n else {\n return (((\"[\" + serializedKey) + \", \") + serializedValue) + \"]\";\n }\n }, toArray_2(value)));\n if (isPrimitive(keyType) ? true : enumUnion(keyType)) {\n return (\"{\" + serializedValues) + \"}\";\n }\n else {\n return (\"[\" + serializedValues) + \"]\";\n }\n }\n case 34: {\n const patternInput_4 = typeInfo.fields[0]();\n const keyType_1 = patternInput_4[0];\n const serializedValues_1 = join(\", \", map_4((pair) => {\n const serializedKey_1 = Convert_serialize(pair[0], keyType_1);\n const serializedValue_1 = Convert_serialize(pair[1], patternInput_4[1]);\n if (isPrimitive(keyType_1) ? true : enumUnion(keyType_1)) {\n if (!Convert_isQuoted(serializedKey_1)) {\n return (Convert_betweenQuotes(serializedKey_1) + \": \") + serializedValue_1;\n }\n else {\n return (serializedKey_1 + \": \") + serializedValue_1;\n }\n }\n else {\n return (((\"[\" + serializedKey_1) + \", \") + serializedValue_1) + \"]\";\n }\n }, value));\n if (isPrimitive(keyType_1) ? true : enumUnion(keyType_1)) {\n return (\"{\" + serializedValues_1) + \"}\";\n }\n else {\n return (\"[\" + serializedValues_1) + \"]\";\n }\n }\n case 32: {\n const tupleTypes = typeInfo.fields[0]();\n if (tupleTypes.length === 1) {\n return (\"[\" + Convert_serialize(value, item_1(0, tupleTypes))) + \"]\";\n }\n else {\n return (\"[\" + join(\", \", mapIndexed((index_1, element_6) => Convert_serialize(element_6, item_1(index_1, tupleTypes)), value))) + \"]\";\n }\n }\n case 23:\n return SimpleJson_stringify(value);\n case 24:\n return SimpleJson_stringify(value);\n default:\n return \"null\";\n }\n break;\n }\n}\n\n/**\n * Serialized the input value object into JSON, uses built-in JSON.stringify and should be used with Fable 2.x or earlier\n */\nexport function Fable_SimpleJson_Json__Json_stringify_Static_4E60E31B(value) {\n if (Convert_isUsingFable3) {\n console.warn(some(\"It looks like you using the function Json.stringify from Fable.SimpleJson while also using Fable 3 (nagareyama). Please use Json.serialize instead which supports both Fable 3 and Fable 2.x\"));\n }\n return SimpleJson_stringify(value);\n}\n\n","export default function isBrowser() {\n return typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n}","import { hours, minutes, seconds, milliseconds } from \"./TimeSpan.js\";\nimport { padWithZeros } from \"./Util.js\";\nconst millisecondsPerDay = 86400000;\nexport function create(h = 0, m = 0, s = 0, ms = 0) {\n if (h < 0 || m < 0 || s < 0 || ms < 0)\n throw new Error(\"The parameters describe an unrepresentable TimeOnly.\");\n return h * 3600000 + m * 60000 + s * 1000 + ms;\n}\nexport function fromTicks(ticks) {\n return Number(BigInt(ticks) / 10000n);\n}\nexport function fromTimeSpan(timeSpan) {\n if (timeSpan < 0 || timeSpan >= millisecondsPerDay)\n throw new Error(\"The TimeSpan describes an unrepresentable TimeOnly.\");\n return timeSpan;\n}\nexport function fromDateTime(d) {\n return d.kind === 1 /* DateKind.UTC */\n ? create(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds())\n : create(d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n}\nexport function maxValue() {\n // This is \"23:59:59.999\"\n return millisecondsPerDay - 1;\n}\nexport function add(t, ts, wrappedDays) {\n if (wrappedDays === undefined) {\n const t2 = (t + ts) % millisecondsPerDay;\n return t2 < 0 ? millisecondsPerDay + t2 : t2;\n }\n wrappedDays.contents = ts / millisecondsPerDay;\n let newMs = t + ts % millisecondsPerDay;\n if (newMs < 0) {\n wrappedDays.contents--;\n newMs += millisecondsPerDay;\n }\n else {\n if (newMs >= millisecondsPerDay) {\n wrappedDays.contents++;\n newMs -= millisecondsPerDay;\n }\n }\n return newMs;\n}\nexport function addHours(t, h) {\n return add(t, h * 3600000);\n}\nexport function addMinutes(t, m) {\n return add(t, m * 60000);\n}\nexport function isBetween(t, start, end) {\n return start <= end\n ? (start <= t && end > t)\n : (start <= t || end > t);\n}\nexport function toString(t, format = \"t\", _provider) {\n if ([\"r\", \"R\", \"o\", \"O\", \"t\", \"T\"].indexOf(format) === -1) {\n throw new Error(\"Custom formats are not supported\");\n }\n const base = `${padWithZeros(hours(t), 2)}:${padWithZeros(minutes(t), 2)}`;\n if (format === \"t\")\n return base;\n const s = padWithZeros(seconds(t), 2);\n // We're limited to millisecond precision, so the last 4 digits will always be 0\n return `${base}${format === \"o\" || format === \"O\" ? `:${s}.${padWithZeros(milliseconds(t), 3)}0000` : `:${s}`}`;\n}\nexport function parse(str) {\n // Allowed format types:\n // hh:mm\n // hh:mm:ss\n // hh:mm:ss.fffffff\n const r = /^\\s*([0-1]?\\d|2[0-3])\\s*:\\s*([0-5]?\\d)(\\s*:\\s*([0-5]?\\d)(\\.(\\d+))?)?\\s*$/.exec(str);\n if (r != null && r[1] != null && r[2] != null) {\n let ms = 0;\n let s = 0;\n const h = +r[1];\n const m = +r[2];\n if (r[4] != null) {\n s = +r[4];\n }\n if (r[6] != null) {\n // Depending on the number of decimals passed, we need to adapt the numbers\n switch (r[6].length) {\n case 1:\n ms = +r[6] * 100;\n break;\n case 2:\n ms = +r[6] * 10;\n break;\n case 3:\n ms = +r[6];\n break;\n case 4:\n ms = +r[6] / 10;\n break;\n case 5:\n ms = +r[6] / 100;\n break;\n case 6:\n ms = +r[6] / 1000;\n break;\n default:\n ms = +r[6].substring(0, 7) / 10000;\n break;\n }\n }\n return create(h, m, s, Math.trunc(ms));\n }\n throw new Error(`String '${str}' was not recognized as a valid TimeOnly.`);\n}\nexport function tryParse(v, defValue) {\n try {\n defValue.contents = parse(v);\n return true;\n }\n catch {\n return false;\n }\n}\nexport function op_Subtraction(left, right) {\n return add(left, -right);\n}\n","export default function quote(inputText) {\n var escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n var meta = {\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n }\n\n escapable.lastIndex = 0;\n return escapable.test(inputText) ?\n '\"' + inputText.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' :\n '\"' + inputText + '\"';\n}","import { fromContinuations } from \"../fable-library-js.4.24.0/Async.js\";\nimport { toFail, printf, toText, trimEnd } from \"../fable-library-js.4.24.0/String.js\";\nimport { fullName, getGenerics, isGenericType, getFunctionElements, isFunction } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { tryHead, take, item, equalsWith, last, head } from \"../fable-library-js.4.24.0/Array.js\";\nimport { curry2, defaultOf, equals } from \"../fable-library-js.4.24.0/Util.js\";\nimport { empty, singleton, append, delay, toList } from \"../fable-library-js.4.24.0/Seq.js\";\nimport { defaultArg, map } from \"../fable-library-js.4.24.0/Option.js\";\nimport { singleton as singleton_1 } from \"../fable-library-js.4.24.0/AsyncBuilder.js\";\nimport { send, get$, post, withBody, withHeaders, withCredentials as withCredentials_4, sendAndReadBinary } from \"./Http.fs.js\";\nimport { RequestBody, ProxyRequestException_$ctor_76BC5104, HttpResponse } from \"./Types.fs.js\";\nimport { createTypeInfo } from \"../Fable.SimpleJson.3.24.0/TypeInfo.Converter.fs.js\";\nimport { SimpleJson_parseNative } from \"../Fable.SimpleJson.3.24.0/SimpleJson.fs.js\";\nimport { Convert_serialize, Convert_arrayLike, Convert_fromJsonAs } from \"../Fable.SimpleJson.3.24.0/Json.Converter.fs.js\";\nimport { TypeInfo } from \"../Fable.SimpleJson.3.24.0/TypeInfo.fs.js\";\n\n/**\n * Asynchronously reads the blob data content as string\n */\nexport function Blob_readBlobAsText(blob) {\n return fromContinuations((tupledArg) => {\n const reader = new FileReader();\n reader.onload = ((_arg_2) => {\n if (reader.readyState === 2) {\n tupledArg[0](reader.result);\n }\n });\n reader.readAsText(blob);\n });\n}\n\nexport function Proxy_combineRouteWithBaseUrl(route, baseUrl) {\n if (baseUrl != null) {\n const arg = trimEnd(baseUrl, \"/\");\n return toText(printf(\"%s%s\"))(arg)(route);\n }\n else {\n return route;\n }\n}\n\nexport function Proxy_isByteArray(_arg) {\n if (_arg.tag === 30) {\n if (_arg.fields[0]().tag === 13) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n}\n\nexport function Proxy_isAsyncOfByteArray(_arg) {\n if (_arg.tag === 25) {\n const matchValue = _arg.fields[0]();\n if (matchValue.tag === 30) {\n if (matchValue.fields[0]().tag === 13) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n}\n\nexport function Proxy_getReturnType(typ_mut) {\n Proxy_getReturnType:\n while (true) {\n const typ = typ_mut;\n if (isFunction(typ)) {\n typ_mut = getFunctionElements(typ)[1];\n continue Proxy_getReturnType;\n }\n else if (isGenericType(typ)) {\n return head(getGenerics(typ));\n }\n else {\n return typ;\n }\n break;\n }\n}\n\nexport function Proxy_proxyFetch(options, typeName, func, fieldType) {\n let funcArgs;\n const matchValue = func.FieldType;\n funcArgs = ((matchValue.tag === 25) ? [func.FieldType] : ((matchValue.tag === 26) ? [func.FieldType] : ((matchValue.tag === 37) ? matchValue.fields[0]() : toFail(printf(\"Field %s does not have a valid definiton\"))(func.FieldName))));\n const argumentCount = (funcArgs.length - 1) | 0;\n const returnTypeAsync = last(funcArgs);\n let binaryInput;\n const matchValue_1 = func.FieldType;\n if (matchValue_1.tag === 37) {\n const matchValue_2 = matchValue_1.fields[0]();\n if (!equalsWith(equals, matchValue_2, defaultOf()) && (matchValue_2.length === 2)) {\n const output = item(1, matchValue_2);\n binaryInput = Proxy_isByteArray(item(0, matchValue_2));\n }\n else {\n binaryInput = false;\n }\n }\n else {\n binaryInput = false;\n }\n const url = Proxy_combineRouteWithBaseUrl(options.RouteBuilder(typeName, func.FieldName), options.BaseUrl);\n const funcNeedParameters = (!equalsWith(equals, funcArgs, defaultOf()) && (funcArgs.length === 1)) ? ((item(0, funcArgs).tag === 25) ? false : (!(item(0, funcArgs).tag === 26))) : ((!equalsWith(equals, funcArgs, defaultOf()) && (funcArgs.length === 2)) ? ((item(0, funcArgs).tag === 0) ? (!(item(1, funcArgs).tag === 25)) : true) : true);\n const contentType = binaryInput ? \"application/octet-stream\" : \"application/json; charset=utf-8\";\n const inputArgumentTypes = take(argumentCount, funcArgs);\n const headers = toList(delay(() => append(singleton([\"Content-Type\", contentType]), delay(() => append(singleton([\"x-remoting-proxy\", \"true\"]), delay(() => append(options.CustomHeaders, delay(() => {\n const matchValue_3 = options.Authorization;\n if (matchValue_3 == null) {\n return empty();\n }\n else {\n return singleton([\"Authorization\", matchValue_3]);\n }\n }))))))));\n let executeRequest;\n if ((options.CustomResponseSerialization != null) ? true : Proxy_isAsyncOfByteArray(returnTypeAsync)) {\n let onOk;\n const matchValue_4 = options.CustomResponseSerialization;\n if (matchValue_4 != null) {\n const serializer = map(curry2, matchValue_4);\n const returnType = Proxy_getReturnType(fieldType);\n onOk = ((response) => serializer(response)(returnType));\n }\n else {\n onOk = ((value) => value);\n }\n executeRequest = ((requestBody) => singleton_1.Delay(() => singleton_1.Bind(funcNeedParameters ? sendAndReadBinary(withCredentials_4(options.WithCredentials, withHeaders(headers, withBody(requestBody, post(url))))) : sendAndReadBinary(withCredentials_4(options.WithCredentials, withHeaders(headers, get$(url)))), (_arg) => {\n const statusCode = _arg[1] | 0;\n const response_1 = _arg[0];\n if (statusCode === 200) {\n return singleton_1.Return(onOk(response_1));\n }\n else {\n const n = statusCode | 0;\n const responseAsBlob = new Blob([response_1.buffer], { type: 'text/plain' });\n return singleton_1.Bind(Blob_readBlobAsText(responseAsBlob), (_arg_1) => {\n const response_2 = new HttpResponse(statusCode, _arg_1);\n const errorMsg = (n === 500) ? toText(printf(\"Internal server error (500) while making request to %s\"))(url) : toText(printf(\"Http error (%d) while making request to %s\"))(n)(url);\n return singleton_1.ReturnFrom((() => {\n throw ProxyRequestException_$ctor_76BC5104(response_2, errorMsg, response_2.ResponseBody);\n })());\n });\n }\n })));\n }\n else {\n let returnType_1;\n switch (returnTypeAsync.tag) {\n case 25: {\n returnType_1 = returnTypeAsync.fields[0]();\n break;\n }\n case 26: {\n returnType_1 = returnTypeAsync.fields[0]();\n break;\n }\n case 24: {\n const t = returnTypeAsync.fields[0]();\n returnType_1 = (fullName(t).startsWith(\"System.Threading.Tasks.Task`1\") ? createTypeInfo(item(0, getGenerics(t))) : toFail(printf(\"Expected field %s to have a return type of Async<\\'t> or Task<\\'t>\"))(func.FieldName));\n break;\n }\n default:\n returnType_1 = toFail(printf(\"Expected field %s to have a return type of Async<\\'t> or Task<\\'t>\"))(func.FieldName);\n }\n executeRequest = ((requestBody_1) => singleton_1.Delay(() => singleton_1.Bind(funcNeedParameters ? send(withCredentials_4(options.WithCredentials, withHeaders(headers, withBody(requestBody_1, post(url))))) : send(withCredentials_4(options.WithCredentials, withHeaders(headers, get$(url)))), (_arg_2) => {\n const response_3 = _arg_2;\n const matchValue_5 = response_3.StatusCode | 0;\n switch (matchValue_5) {\n case 200: {\n const parsedJson = SimpleJson_parseNative(response_3.ResponseBody);\n return singleton_1.Return(Convert_fromJsonAs(parsedJson, returnType_1));\n }\n case 500:\n return singleton_1.ReturnFrom((() => {\n throw ProxyRequestException_$ctor_76BC5104(response_3, toText(printf(\"Internal server error (500) while making request to %s\"))(url), response_3.ResponseBody);\n })());\n default:\n return singleton_1.ReturnFrom((() => {\n throw ProxyRequestException_$ctor_76BC5104(response_3, toText(printf(\"Http error (%d) from server occured while making request to %s\"))(matchValue_5)(url), response_3.ResponseBody);\n })());\n }\n })));\n }\n return (arg0) => ((arg1) => ((arg2) => ((arg3) => ((arg4) => ((arg5) => ((arg6) => ((arg7) => {\n let matchValue_6;\n const inputArguments = funcNeedParameters ? take(argumentCount, [arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7]) : [];\n return executeRequest(binaryInput ? (new RequestBody(2, [arg0])) : ((matchValue_6 = (inputArgumentTypes.length | 0), (matchValue_6 === 1) ? (!Convert_arrayLike(item(0, inputArgumentTypes)) ? (new RequestBody(1, [defaultArg(map((arg_9) => Convert_serialize(arg_9, new TypeInfo(32, [() => inputArgumentTypes])), tryHead(inputArguments)), \"{}\")])) : (new RequestBody(1, [Convert_serialize([item(0, inputArguments)], new TypeInfo(30, [() => item(0, inputArgumentTypes)]))]))) : (new RequestBody(1, [Convert_serialize(inputArguments, new TypeInfo(32, [() => inputArgumentTypes]))])))));\n })))))));\n}\n\n","import { empty } from \"../fable-library-js.4.24.0/List.js\";\nimport { defaultOf, uncurry2 } from \"../fable-library-js.4.24.0/Util.js\";\nimport { toFail, printf, toText } from \"../fable-library-js.4.24.0/String.js\";\nimport { RemoteBuilderOptions } from \"./Types.fs.js\";\nimport { Reader_$ctor_Z3F6BC7B1, Reader__Read_24524716 } from \"../Fable.Remoting.MsgPack.1.24.0/Read.fs.js\";\nimport { fullName, makeRecord, getRecordElements, name as name_1, class_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { createTypeInfo } from \"../Fable.SimpleJson.3.24.0/TypeInfo.Converter.fs.js\";\nimport { pick, map } from \"../fable-library-js.4.24.0/Array.js\";\nimport { singleton, collect, delay, toArray } from \"../fable-library-js.4.24.0/Seq.js\";\nimport { Proxy_proxyFetch } from \"./Proxy.fs.js\";\n\n/**\n * Starts with default configuration for building a proxy\n */\nexport function RemotingModule_createApi() {\n let clo;\n return new RemoteBuilderOptions(empty(), undefined, undefined, false, uncurry2((clo = toText(printf(\"/%s/%s\")), (arg) => {\n const clo_1 = clo(arg);\n return clo_1;\n })), undefined);\n}\n\n/**\n * Defines how routes are built using the type name and method name. By default, the generated routes are of the form `/typeName/methodName`.\n */\nexport function RemotingModule_withRouteBuilder(builder, options) {\n return new RemoteBuilderOptions(options.CustomHeaders, options.BaseUrl, options.Authorization, options.WithCredentials, builder, options.CustomResponseSerialization);\n}\n\n/**\n * Sets the base url for the request. Useful if you are making cross-domain requests\n */\nexport function RemotingModule_withBaseUrl(url, options) {\n return new RemoteBuilderOptions(options.CustomHeaders, url, options.Authorization, options.WithCredentials, options.RouteBuilder, options.CustomResponseSerialization);\n}\n\n/**\n * Adds custom headers to each request of the proxy\n */\nexport function RemotingModule_withCustomHeader(headers, options) {\n return new RemoteBuilderOptions(headers, options.BaseUrl, options.Authorization, options.WithCredentials, options.RouteBuilder, options.CustomResponseSerialization);\n}\n\n/**\n * Sets the authorization header of every request from the proxy\n */\nexport function RemotingModule_withAuthorizationHeader(token, options) {\n return new RemoteBuilderOptions(options.CustomHeaders, options.BaseUrl, token, options.WithCredentials, options.RouteBuilder, options.CustomResponseSerialization);\n}\n\n/**\n * Sets the withCredentials option on the XHR request, which is useful for CORS scenarios\n */\nexport function RemotingModule_withCredentials(withCredentials, options) {\n return new RemoteBuilderOptions(options.CustomHeaders, options.BaseUrl, options.Authorization, withCredentials, options.RouteBuilder, options.CustomResponseSerialization);\n}\n\n/**\n * Specifies that the API uses binary serialization for responses\n */\nexport function RemotingModule_withBinarySerialization(options) {\n return new RemoteBuilderOptions(options.CustomHeaders, options.BaseUrl, options.Authorization, options.WithCredentials, options.RouteBuilder, (response, returnType) => Reader__Read_24524716(Reader_$ctor_Z3F6BC7B1(response), returnType));\n}\n\nexport class Remoting {\n constructor() {\n }\n}\n\nexport function Remoting_$reflection() {\n return class_type(\"Fable.Remoting.Client.Remoting\", undefined, Remoting);\n}\n\nexport function Remoting_$ctor() {\n return new Remoting();\n}\n\n/**\n * For internal library use only.\n */\nexport function Remoting_buildProxy_64DC51C(options, resolvedType) {\n const schemaType = createTypeInfo(resolvedType);\n if (schemaType.tag === 39) {\n const patternInput = schemaType.fields[0]();\n const recordType = patternInput[1];\n const fieldTypes = map((prop) => [name_1(prop), prop[1]], getRecordElements(recordType));\n return makeRecord(recordType, toArray(delay(() => collect((field) => {\n let n, matchValue, fieldType, fn;\n return singleton((n = (((matchValue = field.FieldType, (matchValue.tag === 25) ? 0 : ((matchValue.tag === 26) ? 0 : ((matchValue.tag === 37) ? (matchValue.fields[0]().length - 1) : 0)))) | 0), (fieldType = pick((tupledArg) => {\n if (tupledArg[0] === field.FieldName) {\n return tupledArg[1];\n }\n else {\n return undefined;\n }\n }, fieldTypes), (fn = Proxy_proxyFetch(options, name_1(recordType), field, fieldType), (n === 0) ? fn(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf()) : ((n === 1) ? ((a) => fn(a)(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())) : ((n === 2) ? ((delegateArg, delegateArg_1) => fn(delegateArg)(delegateArg_1)(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())) : ((n === 3) ? ((delegateArg_2, delegateArg_3, delegateArg_4) => fn(delegateArg_2)(delegateArg_3)(delegateArg_4)(defaultOf())(defaultOf())(defaultOf())(defaultOf())(defaultOf())) : ((n === 4) ? ((delegateArg_5, delegateArg_6, delegateArg_7, delegateArg_8) => fn(delegateArg_5)(delegateArg_6)(delegateArg_7)(delegateArg_8)(defaultOf())(defaultOf())(defaultOf())(defaultOf())) : ((n === 5) ? ((delegateArg_9, delegateArg_10, delegateArg_11, delegateArg_12, delegateArg_13) => fn(delegateArg_9)(delegateArg_10)(delegateArg_11)(delegateArg_12)(delegateArg_13)(defaultOf())(defaultOf())(defaultOf())) : ((n === 6) ? ((delegateArg_14, delegateArg_15, delegateArg_16, delegateArg_17, delegateArg_18, delegateArg_19) => fn(delegateArg_14)(delegateArg_15)(delegateArg_16)(delegateArg_17)(delegateArg_18)(delegateArg_19)(defaultOf())(defaultOf())) : ((n === 7) ? ((delegateArg_20, delegateArg_21, delegateArg_22, delegateArg_23, delegateArg_24, delegateArg_25, delegateArg_26) => fn(delegateArg_20)(delegateArg_21)(delegateArg_22)(delegateArg_23)(delegateArg_24)(delegateArg_25)(delegateArg_26)(defaultOf())) : ((n === 8) ? ((delegateArg_27, delegateArg_28, delegateArg_29, delegateArg_30, delegateArg_31, delegateArg_32, delegateArg_33, delegateArg_34) => fn(delegateArg_27)(delegateArg_28)(delegateArg_29)(delegateArg_30)(delegateArg_31)(delegateArg_32)(delegateArg_33)(delegateArg_34)) : toFail(printf(\"Cannot generate proxy function for %s. Only up to 8 arguments are supported. Consider using a record type as input\"))(field.FieldName)))))))))))));\n }, patternInput[0]))));\n }\n else {\n const arg_1 = fullName(resolvedType);\n return toFail(printf(\"Cannot build proxy. Exepected type %s to be a valid protocol definition which is a record of functions\"))(arg_1);\n }\n}\n\n","import { Record, Union } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { list_type, array_type, uint8_type, record_type, option_type, uint32_type, union_type, string_type, class_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { printf, toText } from \"../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { Uri } from \"../fable_modules/fable-library-js.4.24.0/Uri.js\";\nimport { ofArray } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\n\nexport class ContactType extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Url\", \"Email\", \"Phone\"];\n }\n}\n\nexport function ContactType_$reflection() {\n return union_type(\"Omnicv.DataModule.ProductDetails.ContactType\", [], ContactType, () => [[[\"Item\", class_type(\"System.Uri\")]], [[\"Item\", string_type]], [[\"Item1\", string_type], [\"Item2\", string_type]]]);\n}\n\nexport class Version extends Record {\n constructor(Major, Minor, Patch, Build) {\n super();\n this.Major = Major;\n this.Minor = Minor;\n this.Patch = Patch;\n this.Build = Build;\n }\n toString() {\n const this$ = this;\n const matchValue = this$.Build;\n if (matchValue == null) {\n return toText(printf(\"%d.%d.%d\"))(this$.Major)(this$.Minor)(this$.Patch);\n }\n else {\n const build = matchValue;\n return toText(printf(\"%d.%d.%d-%s\"))(this$.Major)(this$.Minor)(this$.Patch)(build);\n }\n }\n}\n\nexport function Version_$reflection() {\n return record_type(\"Omnicv.DataModule.ProductDetails.Version\", [], Version, () => [[\"Major\", uint32_type], [\"Minor\", uint32_type], [\"Patch\", uint32_type], [\"Build\", option_type(string_type)]]);\n}\n\nexport class ChangelogEntry extends Record {\n constructor(Date$, Version, Details) {\n super();\n this.Date = Date$;\n this.Version = Version;\n this.Details = Details;\n }\n}\n\nexport function ChangelogEntry_$reflection() {\n return record_type(\"Omnicv.DataModule.ProductDetails.ChangelogEntry\", [], ChangelogEntry, () => [[\"Date\", class_type(\"System.DateTime\")], [\"Version\", Version_$reflection()], [\"Details\", string_type]]);\n}\n\nexport class Graphics extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Image\", \"Video\", \"VideoLink\"];\n }\n}\n\nexport function Graphics_$reflection() {\n return union_type(\"Omnicv.DataModule.ProductDetails.Graphics\", [], Graphics, () => [[[\"Item1\", array_type(uint8_type)], [\"Item2\", string_type]], [[\"Item1\", array_type(uint8_type)], [\"Item2\", string_type]], [[\"Item\", class_type(\"System.Uri\")]]]);\n}\n\nexport class Changelog extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Text\", \"Entries\"];\n }\n}\n\nexport function Changelog_$reflection() {\n return union_type(\"Omnicv.DataModule.ProductDetails.Changelog\", [], Changelog, () => [[[\"Item\", string_type]], [[\"Item\", list_type(ChangelogEntry_$reflection())]]]);\n}\n\nexport class ProductInformation extends Record {\n constructor(Name, CreatedAt, LastUpdatedAt, Title, Description, Graphics, Version, Authors, Contacts, WebSite, UserGuide, Support, ChangeLog) {\n super();\n this.Name = Name;\n this.CreatedAt = CreatedAt;\n this.LastUpdatedAt = LastUpdatedAt;\n this.Title = Title;\n this.Description = Description;\n this.Graphics = Graphics;\n this.Version = Version;\n this.Authors = Authors;\n this.Contacts = Contacts;\n this.WebSite = WebSite;\n this.UserGuide = UserGuide;\n this.Support = Support;\n this.ChangeLog = ChangeLog;\n }\n}\n\nexport function ProductInformation_$reflection() {\n return record_type(\"Omnicv.DataModule.ProductDetails.ProductInformation\", [], ProductInformation, () => [[\"Name\", string_type], [\"CreatedAt\", class_type(\"System.DateTime\")], [\"LastUpdatedAt\", class_type(\"System.DateTime\")], [\"Title\", string_type], [\"Description\", string_type], [\"Graphics\", list_type(Graphics_$reflection())], [\"Version\", Version_$reflection()], [\"Authors\", list_type(string_type)], [\"Contacts\", list_type(ContactType_$reflection())], [\"WebSite\", class_type(\"System.Uri\")], [\"UserGuide\", option_type(class_type(\"System.Uri\"))], [\"Support\", option_type(string_type)], [\"ChangeLog\", Changelog_$reflection()]]);\n}\n\nexport const defaultWeb = Uri.create(\"https://www.omnicv.com\");\n\nexport const defaultAuthors = \"OMNICV.COM\";\n\nexport const defaultContacts = ofArray([new ContactType(0, [defaultWeb]), new ContactType(1, [\"info@omnicv.com\"])]);\n\n","import { Record, Union } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { ReminderRecord_$reflection, InteractionRecord_$reflection, ReviewRecord_$reflection, DiaryRecord_$reflection } from \"./Data.js\";\nimport { unit_type, int64_type, lambda_type, record_type, list_type, tuple_type, class_type, int32_type, string_type, union_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { PagingOptions_$reflection, EventInfo_$reflection } from \"../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { head, ofArray, singleton, empty, ofSeq } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { FSharpMap__get_Keys } from \"../../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { printf, toText } from \"../../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { ChangelogEntry, Version, ProductInformation, Changelog, defaultWeb, defaultContacts, defaultAuthors } from \"../../Omnicv.Shared.Common/ProductDetails.js\";\nimport { parse } from \"../../fable_modules/fable-library-js.4.24.0/Date.js\";\n\nexport class UnifiedRecord extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Diary\", \"Review\", \"Interaction\"];\n }\n}\n\nexport function UnifiedRecord_$reflection() {\n return union_type(\"Omnicv.Diary.Shared.DiaryAPI.UnifiedRecord\", [], UnifiedRecord, () => [[[\"Item\", DiaryRecord_$reflection()]], [[\"Item\", ReviewRecord_$reflection()]], [[\"Item\", InteractionRecord_$reflection()]]]);\n}\n\nexport class EditHelperData$1 extends Record {\n constructor(FrequentTags, RecentRecords) {\n super();\n this.FrequentTags = FrequentTags;\n this.RecentRecords = RecentRecords;\n }\n}\n\nexport function EditHelperData$1_$reflection(gen0) {\n return record_type(\"Omnicv.Diary.Shared.DiaryAPI.EditHelperData`1\", [gen0], EditHelperData$1, () => [[\"FrequentTags\", class_type(\"Microsoft.FSharp.Collections.FSharpMap`2\", [string_type, int32_type])], [\"RecentRecords\", list_type(tuple_type(EventInfo_$reflection(), gen0))]]);\n}\n\nexport function EditHelperData$1__GetFrequentTags(this$) {\n return ofSeq(FSharpMap__get_Keys(this$.FrequentTags));\n}\n\nexport class RecordService$1 extends Record {\n constructor(Add, Edit, GetRecord, GetRecords, SearchGeneral, SearchByTags, GetEditHelperData) {\n super();\n this.Add = Add;\n this.Edit = Edit;\n this.GetRecord = GetRecord;\n this.GetRecords = GetRecords;\n this.SearchGeneral = SearchGeneral;\n this.SearchByTags = SearchByTags;\n this.GetEditHelperData = GetEditHelperData;\n }\n}\n\nexport function RecordService$1_$reflection(gen0) {\n return record_type(\"Omnicv.Diary.Shared.DiaryAPI.RecordService`1\", [gen0], RecordService$1, () => [[\"Add\", lambda_type(EventInfo_$reflection(), lambda_type(gen0, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [EventInfo_$reflection()])))], [\"Edit\", lambda_type(EventInfo_$reflection(), lambda_type(gen0, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [EventInfo_$reflection()])))], [\"GetRecord\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [tuple_type(EventInfo_$reflection(), gen0)])))], [\"GetRecords\", lambda_type(int32_type, lambda_type(class_type(\"System.DateTime\"), lambda_type(string_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), gen0))]))))], [\"SearchGeneral\", lambda_type(int32_type, lambda_type(string_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), gen0))])))], [\"SearchByTags\", lambda_type(int32_type, lambda_type(string_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), gen0))])))], [\"GetEditHelperData\", lambda_type(int32_type, lambda_type(PagingOptions_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [EditHelperData$1_$reflection(gen0)])))]]);\n}\n\nexport class UnifiedService extends Record {\n constructor(GetRecord, GetRecords, SearchGeneral, SearchByTags, GetFrequentTags) {\n super();\n this.GetRecord = GetRecord;\n this.GetRecords = GetRecords;\n this.SearchGeneral = SearchGeneral;\n this.SearchByTags = SearchByTags;\n this.GetFrequentTags = GetFrequentTags;\n }\n}\n\nexport function UnifiedService_$reflection() {\n return record_type(\"Omnicv.Diary.Shared.DiaryAPI.UnifiedService\", [], UnifiedService, () => [[\"GetRecord\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [tuple_type(EventInfo_$reflection(), UnifiedRecord_$reflection())])))], [\"GetRecords\", lambda_type(int32_type, lambda_type(class_type(\"System.DateTime\"), lambda_type(string_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), UnifiedRecord_$reflection()))]))))], [\"SearchGeneral\", lambda_type(int32_type, lambda_type(string_type, lambda_type(PagingOptions_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), UnifiedRecord_$reflection()))]))))], [\"SearchByTags\", lambda_type(int32_type, lambda_type(string_type, lambda_type(PagingOptions_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), UnifiedRecord_$reflection()))]))))], [\"GetFrequentTags\", lambda_type(int32_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [class_type(\"Microsoft.FSharp.Collections.FSharpMap`2\", [string_type, int32_type])]))]]);\n}\n\nexport function UnifiedService_RouteBuilder(_arg, m) {\n return toText(printf(\"/api/auth/modules/dm/unified/%s\"))(m);\n}\n\nexport class ReminderService extends Record {\n constructor(GetReminders, MarkReminderDismissed) {\n super();\n this.GetReminders = GetReminders;\n this.MarkReminderDismissed = MarkReminderDismissed;\n }\n}\n\nexport function ReminderService_$reflection() {\n return record_type(\"Omnicv.Diary.Shared.DiaryAPI.ReminderService\", [], ReminderService, () => [[\"GetReminders\", lambda_type(int32_type, lambda_type(class_type(\"System.DateTime\"), lambda_type(string_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(ReminderRecord_$reflection())]))))], [\"MarkReminderDismissed\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))]]);\n}\n\nexport function ReminderService_RouteBuilder(_arg, m) {\n return toText(printf(\"/api/auth/modules/dm/remind/%s\"))(m);\n}\n\nexport class DiaryModule {\n constructor() {\n this.initialTimestamp = parse(\"2021-04-16T22:06:00\");\n this.latestTimestamp = this.initialTimestamp;\n }\n get Details() {\n const this$ = this;\n return new ProductInformation(\"Omnicv.Diary\", this$.initialTimestamp, this$.latestTimestamp, \"Diary\", \"A diary module, where you can record your private thoughts, observations and ideas\", empty(), DiaryModule__get_CurrentVersion(this$), singleton(defaultAuthors), defaultContacts, defaultWeb, undefined, undefined, new Changelog(1, [DiaryModule__get_Changelog(this$)]));\n }\n RegisteredTypes() {\n return ofArray([DiaryRecord_$reflection(), ReviewRecord_$reflection(), InteractionRecord_$reflection()]);\n }\n}\n\nexport function DiaryModule_$reflection() {\n return class_type(\"Omnicv.Diary.Shared.DiaryAPI.DiaryModule\", undefined, DiaryModule);\n}\n\nexport function DiaryModule_$ctor() {\n return new DiaryModule();\n}\n\nexport function DiaryModule__get_Changelog(this$) {\n return singleton(new ChangelogEntry(this$.initialTimestamp, new Version(0, 0, 1, undefined), \"Initial release\"));\n}\n\nexport function DiaryModule__get_CurrentVersion(this$) {\n return head(DiaryModule__get_Changelog(this$)).Version;\n}\n\n","import { Remoting_buildProxy_64DC51C } from \"../../fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js\";\nimport { RemotingModule_createApi, RemotingModule_withRouteBuilder } from \"../../fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js\";\nimport { printf, toText } from \"../../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { InteractionRecord_$reflection, ReviewRecord_$reflection, DiaryRecord_$reflection } from \"../Omnicv.Diary.Shared/Data.js\";\nimport { ReminderService_$reflection, ReminderService_RouteBuilder, UnifiedService_$reflection, UnifiedService_RouteBuilder, RecordService$1_$reflection } from \"../Omnicv.Diary.Shared/DiaryAPI.js\";\n\nexport const diaryService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/modules/dm/%s/%s\"))(\"DiaryRecord\")(m), RemotingModule_createApi()), RecordService$1_$reflection(DiaryRecord_$reflection()));\n\nexport const reviewService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/modules/dm/%s/%s\"))(\"ReviewRecord\")(m), RemotingModule_createApi()), RecordService$1_$reflection(ReviewRecord_$reflection()));\n\nexport const interactionService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/modules/dm/%s/%s\"))(\"InteractionRecord\")(m), RemotingModule_createApi()), RecordService$1_$reflection(InteractionRecord_$reflection()));\n\nexport const unifiedService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder(UnifiedService_RouteBuilder, RemotingModule_createApi()), UnifiedService_$reflection());\n\nexport const reminderService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder(ReminderService_RouteBuilder, RemotingModule_createApi()), ReminderService_$reflection());\n\n","import { Constraints_minConstraint, Constraints_minMaxConstraint, Constraints_minMaxOptLengthConstraint, Constraints_collectConstraintsErrors, Constraints_applyConstraintsGetErrors, Constraints_minMaxLengthConstraint } from \"../Omnicv.Shared.Common/Validation.js\";\nimport { head, empty, isEmpty, ofSeq, ofArray, singleton } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { FSharpMap__get_Keys, tryFind } from \"../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { Union, Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { union_type, enum_type, unit_type, lambda_type, list_type, tuple_type, int32_type, record_type, string_type, option_type, class_type, float64_type, int64_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { parse, addSeconds, compare } from \"../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { compare as compare_1, round } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { PagingOptions_$reflection, EventInfo_$reflection } from \"../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { ChangelogEntry, Version, ProductInformation, Changelog, defaultWeb, defaultContacts, defaultAuthors } from \"../Omnicv.Shared.Common/ProductDetails.js\";\n\nexport const MaxWorkoutDurationSec = (3 * 60) * 60;\n\nconst nameConstraints = singleton((name) => ((value) => Constraints_minMaxLengthConstraint(1, 256, name, value)));\n\nexport const nameName = \"Name\";\n\nfunction getNameErrors(name) {\n return Constraints_applyConstraintsGetErrors(nameConstraints, nameName, name);\n}\n\nexport function validateName(name) {\n return tryFind(nameName, Constraints_collectConstraintsErrors(singleton(getNameErrors(name))));\n}\n\nconst descriptionConstraints = singleton((name) => ((value) => Constraints_minMaxLengthConstraint(5, 1000, name, value)));\n\nexport const descriptionName = \"Description\";\n\nfunction getDescriptionErrors(description) {\n return Constraints_applyConstraintsGetErrors(descriptionConstraints, descriptionName, description);\n}\n\nexport function validateDescription(description) {\n return tryFind(descriptionName, Constraints_collectConstraintsErrors(singleton(getDescriptionErrors(description))));\n}\n\nconst instructionsConstraints = singleton((name) => ((value) => Constraints_minMaxLengthConstraint(5, 1000, name, value)));\n\nexport const instructionsName = \"Instructions\";\n\nfunction getInstructionsErrors(instructions) {\n return Constraints_applyConstraintsGetErrors(instructionsConstraints, instructionsName, instructions);\n}\n\nexport function validateInstructions(instructions) {\n return tryFind(instructionsName, Constraints_collectConstraintsErrors(singleton(getInstructionsErrors(instructions))));\n}\n\nconst notesConstraints = singleton((name) => ((value) => Constraints_minMaxOptLengthConstraint(5, 1000, name, value)));\n\nexport const notesName = \"Notes\";\n\nfunction getNotesErrors(notes) {\n return Constraints_applyConstraintsGetErrors(notesConstraints, notesName, notes);\n}\n\nexport function validateNotes(notes) {\n return tryFind(notesName, Constraints_collectConstraintsErrors(singleton(getNotesErrors(notes))));\n}\n\nconst weightConstraints = singleton((name) => ((value) => Constraints_minMaxConstraint(0.1, 10000, name, value)));\n\nexport const weightName = \"Weight\";\n\nfunction getWeightErrors(weight) {\n return Constraints_applyConstraintsGetErrors(weightConstraints, weightName, weight);\n}\n\nexport function validateWeight(weight) {\n return tryFind(weightName, Constraints_collectConstraintsErrors(singleton(getWeightErrors(weight))));\n}\n\nconst repetitionsConstraints = singleton((name) => ((value) => Constraints_minConstraint(1, name, value)));\n\nexport const repetitionsName = \"Repetitions\";\n\nfunction getRepetitionsErrors(repetitions) {\n return Constraints_applyConstraintsGetErrors(repetitionsConstraints, repetitionsName, repetitions);\n}\n\nexport function validateRepetitions(repetitions) {\n return tryFind(repetitionsName, Constraints_collectConstraintsErrors(singleton(getRepetitionsErrors(repetitions))));\n}\n\nexport class WorkoutRecord extends Record {\n constructor(Id, WorkoutId, Progress, FinishTime, Notes) {\n super();\n this.Id = Id;\n this.WorkoutId = WorkoutId;\n this.Progress = Progress;\n this.FinishTime = FinishTime;\n this.Notes = Notes;\n }\n}\n\nexport function WorkoutRecord_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.WorkoutRecord\", [], WorkoutRecord, () => [[\"Id\", int64_type], [\"WorkoutId\", int64_type], [\"Progress\", float64_type], [\"FinishTime\", option_type(class_type(\"System.DateTime\"))], [\"Notes\", option_type(string_type)]]);\n}\n\nexport function WorkoutRecord_Default_Z524259C1(workoutId) {\n return new WorkoutRecord(0n, workoutId, 0, undefined, undefined);\n}\n\nfunction WorkoutRecord_Validator_42A60C18(record) {\n return Constraints_collectConstraintsErrors(singleton(getNotesErrors(record.Notes)));\n}\n\nexport function WorkoutRecord__Validate(this$) {\n return WorkoutRecord_Validator_42A60C18(this$);\n}\n\nexport function WorkoutRecord__IsActive(this$, eventInfo, now) {\n if (this$.FinishTime == null) {\n return compare(addSeconds(eventInfo.EventTimestamp, MaxWorkoutDurationSec), now) >= 0;\n }\n else {\n return false;\n }\n}\n\nexport class RepsWithWeightRecord extends Record {\n constructor(Id, ExerciseId, WorkoutRecordId, Repetitions, Weight, Notes) {\n super();\n this.Id = Id;\n this.ExerciseId = ExerciseId;\n this.WorkoutRecordId = WorkoutRecordId;\n this.Repetitions = (Repetitions | 0);\n this.Weight = Weight;\n this.Notes = Notes;\n }\n}\n\nexport function RepsWithWeightRecord_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.RepsWithWeightRecord\", [], RepsWithWeightRecord, () => [[\"Id\", int64_type], [\"ExerciseId\", int64_type], [\"WorkoutRecordId\", option_type(int64_type)], [\"Repetitions\", int32_type], [\"Weight\", float64_type], [\"Notes\", option_type(string_type)]]);\n}\n\nexport function RepsWithWeightRecord_Default_Z524259C1(exerciseId) {\n return new RepsWithWeightRecord(0n, exerciseId, undefined, 0, 0, undefined);\n}\n\nfunction RepsWithWeightRecord_Validator_Z37655B9F(record) {\n return Constraints_collectConstraintsErrors(ofArray([getRepetitionsErrors(record.Repetitions), getNotesErrors(record.Notes), getWeightErrors(record.Weight)]));\n}\n\nexport function RepsWithWeightRecord__Validate(this$) {\n return RepsWithWeightRecord_Validator_Z37655B9F(this$);\n}\n\nexport function RepsWithWeightRecord__E1RM(this$) {\n return this$.Weight + ((this$.Weight * this$.Repetitions) / 30);\n}\n\nexport function RepsWithWeightRecord__E1RMDisplay(this$) {\n const value = RepsWithWeightRecord__E1RM(this$);\n if (value >= 10) {\n return round(value);\n }\n else {\n return round(value, 2);\n }\n}\n\nexport class RepsWithBodyWeightRecord extends Record {\n constructor(Id, ExerciseId, WorkoutRecordId, Repetitions, Notes) {\n super();\n this.Id = Id;\n this.ExerciseId = ExerciseId;\n this.WorkoutRecordId = WorkoutRecordId;\n this.Repetitions = (Repetitions | 0);\n this.Notes = Notes;\n }\n}\n\nexport function RepsWithBodyWeightRecord_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.RepsWithBodyWeightRecord\", [], RepsWithBodyWeightRecord, () => [[\"Id\", int64_type], [\"ExerciseId\", int64_type], [\"WorkoutRecordId\", option_type(int64_type)], [\"Repetitions\", int32_type], [\"Notes\", option_type(string_type)]]);\n}\n\nexport function RepsWithBodyWeightRecord_Default_Z524259C1(exerciseId) {\n return new RepsWithBodyWeightRecord(0n, exerciseId, undefined, 0, undefined);\n}\n\nexport class EnduranceRecord extends Record {\n constructor(Id, ExerciseId, WorkoutRecordId, DurationSec, DistanceKm, Calories, Notes) {\n super();\n this.Id = Id;\n this.ExerciseId = ExerciseId;\n this.WorkoutRecordId = WorkoutRecordId;\n this.DurationSec = (DurationSec | 0);\n this.DistanceKm = DistanceKm;\n this.Calories = Calories;\n this.Notes = Notes;\n }\n}\n\nexport function EnduranceRecord_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.EnduranceRecord\", [], EnduranceRecord, () => [[\"Id\", int64_type], [\"ExerciseId\", int64_type], [\"WorkoutRecordId\", option_type(int64_type)], [\"DurationSec\", int32_type], [\"DistanceKm\", float64_type], [\"Calories\", option_type(int32_type)], [\"Notes\", option_type(string_type)]]);\n}\n\nexport function EnduranceRecord_Default_Z524259C1(exerciseId) {\n return new EnduranceRecord(0n, exerciseId, undefined, 0, 0, undefined, undefined);\n}\n\nexport class IntervalsDurationRecord extends Record {\n constructor(Id, ExerciseId, WorkoutRecordId, NumExercises, WorkDurationSec, RestDurationSec, Notes) {\n super();\n this.Id = Id;\n this.ExerciseId = ExerciseId;\n this.WorkoutRecordId = WorkoutRecordId;\n this.NumExercises = (NumExercises | 0);\n this.WorkDurationSec = (WorkDurationSec | 0);\n this.RestDurationSec = (RestDurationSec | 0);\n this.Notes = Notes;\n }\n}\n\nexport function IntervalsDurationRecord_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.IntervalsDurationRecord\", [], IntervalsDurationRecord, () => [[\"Id\", int64_type], [\"ExerciseId\", int64_type], [\"WorkoutRecordId\", option_type(int64_type)], [\"NumExercises\", int32_type], [\"WorkDurationSec\", int32_type], [\"RestDurationSec\", int32_type], [\"Notes\", option_type(string_type)]]);\n}\n\nexport function IntervalsDurationRecord_Default_Z524259C1(exerciseId) {\n return new IntervalsDurationRecord(0n, exerciseId, undefined, 0, 0, 0, undefined);\n}\n\nexport class IntervalsRepsRecord extends Record {\n constructor(Id, ExerciseId, WorkoutRecordId, NumExercises, WorkRepetitions, RestDurationSec, Notes) {\n super();\n this.Id = Id;\n this.ExerciseId = ExerciseId;\n this.WorkoutRecordId = WorkoutRecordId;\n this.NumExercises = (NumExercises | 0);\n this.WorkRepetitions = (WorkRepetitions | 0);\n this.RestDurationSec = (RestDurationSec | 0);\n this.Notes = Notes;\n }\n}\n\nexport function IntervalsRepsRecord_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.IntervalsRepsRecord\", [], IntervalsRepsRecord, () => [[\"Id\", int64_type], [\"ExerciseId\", int64_type], [\"WorkoutRecordId\", option_type(int64_type)], [\"NumExercises\", int32_type], [\"WorkRepetitions\", int32_type], [\"RestDurationSec\", int32_type], [\"Notes\", option_type(string_type)]]);\n}\n\nexport function IntervalsRepsRecord_Default_Z524259C1(exerciseId) {\n return new IntervalsRepsRecord(0n, exerciseId, undefined, 0, 0, 0, undefined);\n}\n\nexport class FitnessSearchOptions extends Record {\n constructor(DateFrom, DateTo, Notes) {\n super();\n this.DateFrom = DateFrom;\n this.DateTo = DateTo;\n this.Notes = Notes;\n }\n}\n\nexport function FitnessSearchOptions_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.FitnessSearchOptions\", [], FitnessSearchOptions, () => [[\"DateFrom\", option_type(class_type(\"System.DateTime\"))], [\"DateTo\", option_type(class_type(\"System.DateTime\"))], [\"Notes\", option_type(string_type)]]);\n}\n\nexport function FitnessSearchOptions__Validate(this$) {\n if (((this$.DateFrom == null) && (this$.DateTo == null)) && (this$.Notes == null)) {\n return \"At least one parameter must be populated\";\n }\n else if (((this$.DateFrom != null) && (this$.DateTo != null)) && (compare_1(this$.DateFrom, this$.DateTo) >= 0)) {\n return \"From must be smaller than To\";\n }\n else {\n return undefined;\n }\n}\n\nexport class FitnessEditHelperData extends Record {\n constructor(FrequentTags) {\n super();\n this.FrequentTags = FrequentTags;\n }\n}\n\nexport function FitnessEditHelperData_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.FitnessEditHelperData\", [], FitnessEditHelperData, () => [[\"FrequentTags\", class_type(\"Microsoft.FSharp.Collections.FSharpMap`2\", [string_type, int32_type])]]);\n}\n\nexport function FitnessEditHelperData__GetFrequentTags(this$) {\n return ofSeq(FSharpMap__get_Keys(this$.FrequentTags));\n}\n\nexport class Exercise extends Record {\n constructor(Id, ProfileId, Name, Description, Instructions, ContentTypeId, CreatedAt, UpdatedAt, Categories) {\n super();\n this.Id = Id;\n this.ProfileId = ProfileId;\n this.Name = Name;\n this.Description = Description;\n this.Instructions = Instructions;\n this.ContentTypeId = (ContentTypeId | 0);\n this.CreatedAt = CreatedAt;\n this.UpdatedAt = UpdatedAt;\n this.Categories = Categories;\n }\n}\n\nexport function Exercise_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.Exercise\", [], Exercise, () => [[\"Id\", int64_type], [\"ProfileId\", option_type(int32_type)], [\"Name\", string_type], [\"Description\", string_type], [\"Instructions\", string_type], [\"ContentTypeId\", int32_type], [\"CreatedAt\", class_type(\"System.DateTime\")], [\"UpdatedAt\", class_type(\"System.DateTime\")], [\"Categories\", string_type]]);\n}\n\nfunction Exercise_Validator_7CDB074C(record) {\n return Constraints_collectConstraintsErrors(ofArray([getNameErrors(record.Name), getDescriptionErrors(record.Description), getInstructionsErrors(record.Instructions)]));\n}\n\nexport function Exercise__Validate(this$) {\n return Exercise_Validator_7CDB074C(this$);\n}\n\nexport function Exercise_Default_7F9DDECF(timestamp) {\n return new Exercise(0n, 0, \"\", \"\", \"\", 0, timestamp, timestamp, \"\");\n}\n\nexport class ExerciseRecordAddingInfo$1 extends Record {\n constructor(ExerciseRecords, Exercise) {\n super();\n this.ExerciseRecords = ExerciseRecords;\n this.Exercise = Exercise;\n }\n}\n\nexport function ExerciseRecordAddingInfo$1_$reflection(gen0) {\n return record_type(\"Omnicv.Shared.FitnessAPI.ExerciseRecordAddingInfo`1\", [gen0], ExerciseRecordAddingInfo$1, () => [[\"ExerciseRecords\", list_type(tuple_type(EventInfo_$reflection(), gen0))], [\"Exercise\", Exercise_$reflection()]]);\n}\n\nexport class RecordService$1 extends Record {\n constructor(Add, AddMany, Edit, GetRecord, GetRecords, GetExerciseRecords, GetExerciseRecordAddingInfo, SearchRecords) {\n super();\n this.Add = Add;\n this.AddMany = AddMany;\n this.Edit = Edit;\n this.GetRecord = GetRecord;\n this.GetRecords = GetRecords;\n this.GetExerciseRecords = GetExerciseRecords;\n this.GetExerciseRecordAddingInfo = GetExerciseRecordAddingInfo;\n this.SearchRecords = SearchRecords;\n }\n}\n\nexport function RecordService$1_$reflection(gen0) {\n return record_type(\"Omnicv.Shared.FitnessAPI.RecordService`1\", [gen0], RecordService$1, () => [[\"Add\", lambda_type(EventInfo_$reflection(), lambda_type(gen0, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [EventInfo_$reflection()])))], [\"AddMany\", lambda_type(EventInfo_$reflection(), lambda_type(list_type(gen0), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))], [\"Edit\", lambda_type(EventInfo_$reflection(), lambda_type(gen0, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [EventInfo_$reflection()])))], [\"GetRecord\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [tuple_type(EventInfo_$reflection(), gen0)])))], [\"GetRecords\", lambda_type(int32_type, lambda_type(PagingOptions_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), gen0))])))], [\"GetExerciseRecords\", lambda_type(int32_type, lambda_type(int64_type, lambda_type(PagingOptions_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), gen0))]))))], [\"GetExerciseRecordAddingInfo\", lambda_type(int32_type, lambda_type(int64_type, lambda_type(PagingOptions_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [ExerciseRecordAddingInfo$1_$reflection(gen0)]))))], [\"SearchRecords\", lambda_type(int32_type, lambda_type(FitnessSearchOptions_$reflection(), lambda_type(PagingOptions_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), gen0))]))))]]);\n}\n\nexport class Workout extends Record {\n constructor(Id, ProfileId, Name, WorkoutType, Description, Schedule, CreatedAt, UpdatedAt, Categories) {\n super();\n this.Id = Id;\n this.ProfileId = ProfileId;\n this.Name = Name;\n this.WorkoutType = (WorkoutType | 0);\n this.Description = Description;\n this.Schedule = Schedule;\n this.CreatedAt = CreatedAt;\n this.UpdatedAt = UpdatedAt;\n this.Categories = Categories;\n }\n}\n\nexport function Workout_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.Workout\", [], Workout, () => [[\"Id\", int64_type], [\"ProfileId\", option_type(int32_type)], [\"Name\", string_type], [\"WorkoutType\", enum_type(\"Omnicv.Shared.FitnessAPI.WorkoutType\", int32_type, [[\"Regular\", 1], [\"Circuit\", 2]])], [\"Description\", string_type], [\"Schedule\", option_type(string_type)], [\"CreatedAt\", class_type(\"System.DateTime\")], [\"UpdatedAt\", class_type(\"System.DateTime\")], [\"Categories\", string_type]]);\n}\n\nfunction Workout_Validator_Z4E1030EB(record) {\n return Constraints_collectConstraintsErrors(ofArray([getNameErrors(record.Name), getDescriptionErrors(record.Description)]));\n}\n\nexport function Workout__Validate(this$) {\n return Workout_Validator_Z4E1030EB(this$);\n}\n\nexport function Workout_Default_7F9DDECF(timestamp) {\n return new Workout(0n, 0, \"\", 1, \"\", undefined, timestamp, timestamp, \"\");\n}\n\nexport class TrainingPlan extends Record {\n constructor(Id, ProfileId, Name, Description, CreatedAt, UpdatedAt, Categories) {\n super();\n this.Id = Id;\n this.ProfileId = ProfileId;\n this.Name = Name;\n this.Description = Description;\n this.CreatedAt = CreatedAt;\n this.UpdatedAt = UpdatedAt;\n this.Categories = Categories;\n }\n}\n\nexport function TrainingPlan_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.TrainingPlan\", [], TrainingPlan, () => [[\"Id\", int64_type], [\"ProfileId\", option_type(int32_type)], [\"Name\", string_type], [\"Description\", string_type], [\"CreatedAt\", class_type(\"System.DateTime\")], [\"UpdatedAt\", class_type(\"System.DateTime\")], [\"Categories\", string_type]]);\n}\n\nexport function TrainingPlan_Default_7F9DDECF(timestamp) {\n return new TrainingPlan(0n, 0, \"\", \"\", timestamp, timestamp, \"\");\n}\n\nfunction TrainingPlan_Validator_Z1F153657(record) {\n return Constraints_collectConstraintsErrors(ofArray([getNameErrors(record.Name), getDescriptionErrors(record.Description)]));\n}\n\nexport function TrainingPlan__Validate(this$) {\n return TrainingPlan_Validator_Z1F153657(this$);\n}\n\nexport class ExerciseRecord extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RepsWithWeight\", \"RepsWithBodyWeight\", \"Endurance\", \"IntervalsDuration\", \"IntervalsReps\"];\n }\n}\n\nexport function ExerciseRecord_$reflection() {\n return union_type(\"Omnicv.Shared.FitnessAPI.ExerciseRecord\", [], ExerciseRecord, () => [[[\"Item\", RepsWithWeightRecord_$reflection()]], [[\"Item\", RepsWithBodyWeightRecord_$reflection()]], [[\"Item\", EnduranceRecord_$reflection()]], [[\"Item\", IntervalsDurationRecord_$reflection()]], [[\"Item\", IntervalsRepsRecord_$reflection()]]]);\n}\n\nexport function getWorkoutId(record_, record__1) {\n const matchValue = record__1;\n switch (matchValue.tag) {\n case 1:\n return matchValue.fields[0].WorkoutRecordId;\n case 2:\n return matchValue.fields[0].WorkoutRecordId;\n case 3:\n return matchValue.fields[0].WorkoutRecordId;\n case 4:\n return matchValue.fields[0].WorkoutRecordId;\n default:\n return matchValue.fields[0].WorkoutRecordId;\n }\n}\n\nexport function getExerciseId(record_, record__1) {\n const matchValue = record__1;\n switch (matchValue.tag) {\n case 1:\n return matchValue.fields[0].ExerciseId;\n case 2:\n return matchValue.fields[0].ExerciseId;\n case 3:\n return matchValue.fields[0].ExerciseId;\n case 4:\n return matchValue.fields[0].ExerciseId;\n default:\n return matchValue.fields[0].ExerciseId;\n }\n}\n\nexport class WorkoutLog extends Record {\n constructor(Workouts, Exercises, RecentWorkoutRecords, RecentExerciseRecords) {\n super();\n this.Workouts = Workouts;\n this.Exercises = Exercises;\n this.RecentWorkoutRecords = RecentWorkoutRecords;\n this.RecentExerciseRecords = RecentExerciseRecords;\n }\n}\n\nexport function WorkoutLog_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.WorkoutLog\", [], WorkoutLog, () => [[\"Workouts\", list_type(Workout_$reflection())], [\"Exercises\", list_type(Exercise_$reflection())], [\"RecentWorkoutRecords\", list_type(tuple_type(EventInfo_$reflection(), WorkoutRecord_$reflection()))], [\"RecentExerciseRecords\", list_type(tuple_type(EventInfo_$reflection(), ExerciseRecord_$reflection()))]]);\n}\n\nexport function WorkoutLog__IsEmpty(this$) {\n if (isEmpty(this$.RecentExerciseRecords)) {\n return isEmpty(this$.RecentWorkoutRecords);\n }\n else {\n return false;\n }\n}\n\nexport class FitnessHierarchy extends Record {\n constructor(Favourites, TrainingPlans, WorkoutLog) {\n super();\n this.Favourites = Favourites;\n this.TrainingPlans = TrainingPlans;\n this.WorkoutLog = WorkoutLog;\n }\n}\n\nexport function FitnessHierarchy_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.FitnessHierarchy\", [], FitnessHierarchy, () => [[\"Favourites\", list_type(tuple_type(int64_type, Favourite_$reflection()))], [\"TrainingPlans\", list_type(TrainingPlanData_$reflection())], [\"WorkoutLog\", WorkoutLog_$reflection()]]);\n}\n\nexport class Favourite extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Exercise\", \"Workout\", \"TrainingPlan\"];\n }\n}\n\nexport function Favourite_$reflection() {\n return union_type(\"Omnicv.Shared.FitnessAPI.Favourite\", [], Favourite, () => [[[\"Item\", Exercise_$reflection()]], [[\"Item\", Workout_$reflection()]], [[\"Item\", TrainingPlan_$reflection()]]]);\n}\n\nexport class TrainingPlanData extends Record {\n constructor(TrainingPlan, Workouts) {\n super();\n this.TrainingPlan = TrainingPlan;\n this.Workouts = Workouts;\n }\n}\n\nexport function TrainingPlanData_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.TrainingPlanData\", [], TrainingPlanData, () => [[\"TrainingPlan\", TrainingPlan_$reflection()], [\"Workouts\", list_type(WorkoutData_$reflection())]]);\n}\n\nexport class WorkoutData extends Record {\n constructor(Workout, Exercises) {\n super();\n this.Workout = Workout;\n this.Exercises = Exercises;\n }\n}\n\nexport function WorkoutData_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.WorkoutData\", [], WorkoutData, () => [[\"Workout\", Workout_$reflection()], [\"Exercises\", list_type(Exercise_$reflection())]]);\n}\n\nexport class WorkoutCircuitData extends Record {\n constructor(Workout, Exercises, WorkoutRecords, ExerciseRecords) {\n super();\n this.Workout = Workout;\n this.Exercises = Exercises;\n this.WorkoutRecords = WorkoutRecords;\n this.ExerciseRecords = ExerciseRecords;\n }\n}\n\nexport function WorkoutCircuitData_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.WorkoutCircuitData\", [], WorkoutCircuitData, () => [[\"Workout\", Workout_$reflection()], [\"Exercises\", list_type(Exercise_$reflection())], [\"WorkoutRecords\", list_type(tuple_type(EventInfo_$reflection(), WorkoutRecord_$reflection()))], [\"ExerciseRecords\", list_type(tuple_type(EventInfo_$reflection(), ExerciseRecord_$reflection()))]]);\n}\n\nexport class TrainingPlanWorkoutRecords extends Record {\n constructor(TrainingPlan, WorkoutRecords) {\n super();\n this.TrainingPlan = TrainingPlan;\n this.WorkoutRecords = WorkoutRecords;\n }\n}\n\nexport function TrainingPlanWorkoutRecords_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.TrainingPlanWorkoutRecords\", [], TrainingPlanWorkoutRecords, () => [[\"TrainingPlan\", TrainingPlan_$reflection()], [\"WorkoutRecords\", list_type(tuple_type(EventInfo_$reflection(), WorkoutRecord_$reflection()))]]);\n}\n\nexport class WorkoutRecords extends Record {\n constructor(Workout, WorkoutRecords) {\n super();\n this.Workout = Workout;\n this.WorkoutRecords = WorkoutRecords;\n }\n}\n\nexport function WorkoutRecords_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.WorkoutRecords\", [], WorkoutRecords, () => [[\"Workout\", Workout_$reflection()], [\"WorkoutRecords\", list_type(tuple_type(EventInfo_$reflection(), WorkoutRecord_$reflection()))]]);\n}\n\nexport class WorkoutRecordType extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Active\", \"NewForWorkout\", \"None\"];\n }\n}\n\nexport function WorkoutRecordType_$reflection() {\n return union_type(\"Omnicv.Shared.FitnessAPI.WorkoutRecordType\", [], WorkoutRecordType, () => [[], [[\"Item\", int64_type]], []]);\n}\n\nexport class FitnessService extends Record {\n constructor(GetHierarchy, GetExercise, GetExercises, AddExercise, EditExercise, DeleteExercise, StartActiveWorkoutRecord, ConcludeActiveWorkoutRecord, DeleteActiveWorkoutRecord, DeleteWorkoutRecord, EditWorkoutRecord, GetWorkoutRecord, AddExerciseRecords, GetExerciseRecords, GetExerciseRecord, MarkExerciseFavourite, GetWorkout, GetWorkouts, AddWorkout, EditWorkout, DeleteWorkout, SetExercisesForWorkout, RemoveExerciseFromWorkout, GetWorkoutExercises, GetWorkoutExercisesCandidates, MarkWorkoutFavourite, GetWorkoutCircuitData, GetWorkoutRecords, GetTrainingPlan, GetTrainingPlans, AddTrainingPlan, EditTrainingPlan, DeleteTrainingPlan, SetWorkoutsForTrainingPlan, RemoveWorkoutFromTrainingPlan, GetTrainingPlanWorkouts, GetTrainingPlanWorkoutsCandidates, MarkTrainingPlanFavourite, GetTrainingPlanWorkoutRecords, DeleteFavourite, GetFitnessEditHelperDataTrainingPlan, GetFitnessEditHelperDataWorkout, GetFitnessEditHelperDataExercise) {\n super();\n this.GetHierarchy = GetHierarchy;\n this.GetExercise = GetExercise;\n this.GetExercises = GetExercises;\n this.AddExercise = AddExercise;\n this.EditExercise = EditExercise;\n this.DeleteExercise = DeleteExercise;\n this.StartActiveWorkoutRecord = StartActiveWorkoutRecord;\n this.ConcludeActiveWorkoutRecord = ConcludeActiveWorkoutRecord;\n this.DeleteActiveWorkoutRecord = DeleteActiveWorkoutRecord;\n this.DeleteWorkoutRecord = DeleteWorkoutRecord;\n this.EditWorkoutRecord = EditWorkoutRecord;\n this.GetWorkoutRecord = GetWorkoutRecord;\n this.AddExerciseRecords = AddExerciseRecords;\n this.GetExerciseRecords = GetExerciseRecords;\n this.GetExerciseRecord = GetExerciseRecord;\n this.MarkExerciseFavourite = MarkExerciseFavourite;\n this.GetWorkout = GetWorkout;\n this.GetWorkouts = GetWorkouts;\n this.AddWorkout = AddWorkout;\n this.EditWorkout = EditWorkout;\n this.DeleteWorkout = DeleteWorkout;\n this.SetExercisesForWorkout = SetExercisesForWorkout;\n this.RemoveExerciseFromWorkout = RemoveExerciseFromWorkout;\n this.GetWorkoutExercises = GetWorkoutExercises;\n this.GetWorkoutExercisesCandidates = GetWorkoutExercisesCandidates;\n this.MarkWorkoutFavourite = MarkWorkoutFavourite;\n this.GetWorkoutCircuitData = GetWorkoutCircuitData;\n this.GetWorkoutRecords = GetWorkoutRecords;\n this.GetTrainingPlan = GetTrainingPlan;\n this.GetTrainingPlans = GetTrainingPlans;\n this.AddTrainingPlan = AddTrainingPlan;\n this.EditTrainingPlan = EditTrainingPlan;\n this.DeleteTrainingPlan = DeleteTrainingPlan;\n this.SetWorkoutsForTrainingPlan = SetWorkoutsForTrainingPlan;\n this.RemoveWorkoutFromTrainingPlan = RemoveWorkoutFromTrainingPlan;\n this.GetTrainingPlanWorkouts = GetTrainingPlanWorkouts;\n this.GetTrainingPlanWorkoutsCandidates = GetTrainingPlanWorkoutsCandidates;\n this.MarkTrainingPlanFavourite = MarkTrainingPlanFavourite;\n this.GetTrainingPlanWorkoutRecords = GetTrainingPlanWorkoutRecords;\n this.DeleteFavourite = DeleteFavourite;\n this.GetFitnessEditHelperDataTrainingPlan = GetFitnessEditHelperDataTrainingPlan;\n this.GetFitnessEditHelperDataWorkout = GetFitnessEditHelperDataWorkout;\n this.GetFitnessEditHelperDataExercise = GetFitnessEditHelperDataExercise;\n }\n}\n\nexport function FitnessService_$reflection() {\n return record_type(\"Omnicv.Shared.FitnessAPI.FitnessService\", [], FitnessService, () => [[\"GetHierarchy\", lambda_type(int32_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [FitnessHierarchy_$reflection()]))], [\"GetExercise\", lambda_type(option_type(int32_type), lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [Exercise_$reflection()])))], [\"GetExercises\", lambda_type(int32_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(Exercise_$reflection())]))], [\"AddExercise\", lambda_type(Exercise_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [int64_type]))], [\"EditExercise\", lambda_type(Exercise_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))], [\"DeleteExercise\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))], [\"StartActiveWorkoutRecord\", lambda_type(EventInfo_$reflection(), lambda_type(WorkoutRecord_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [tuple_type(EventInfo_$reflection(), WorkoutRecord_$reflection())])))], [\"ConcludeActiveWorkoutRecord\", lambda_type(int32_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))], [\"DeleteActiveWorkoutRecord\", lambda_type(int32_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))], [\"DeleteWorkoutRecord\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))], [\"EditWorkoutRecord\", lambda_type(EventInfo_$reflection(), lambda_type(WorkoutRecord_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [EventInfo_$reflection()])))], [\"GetWorkoutRecord\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [tuple_type(EventInfo_$reflection(), WorkoutRecord_$reflection())])))], [\"AddExerciseRecords\", lambda_type(WorkoutRecordType_$reflection(), lambda_type(EventInfo_$reflection(), lambda_type(list_type(ExerciseRecord_$reflection()), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))))], [\"GetExerciseRecords\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), ExerciseRecord_$reflection()))])))], [\"GetExerciseRecord\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [tuple_type(EventInfo_$reflection(), ExerciseRecord_$reflection())])))], [\"MarkExerciseFavourite\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))], [\"GetWorkout\", lambda_type(option_type(int32_type), lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [Workout_$reflection()])))], [\"GetWorkouts\", lambda_type(int32_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(Workout_$reflection())]))], [\"AddWorkout\", lambda_type(Workout_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [int64_type]))], [\"EditWorkout\", lambda_type(Workout_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))], [\"DeleteWorkout\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))], [\"SetExercisesForWorkout\", lambda_type(int32_type, lambda_type(int64_type, lambda_type(list_type(int64_type), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))))], [\"RemoveExerciseFromWorkout\", lambda_type(int32_type, lambda_type(int64_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))))], [\"GetWorkoutExercises\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(Exercise_$reflection())])))], [\"GetWorkoutExercisesCandidates\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(Exercise_$reflection())])))], [\"MarkWorkoutFavourite\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))], [\"GetWorkoutCircuitData\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [WorkoutCircuitData_$reflection()])))], [\"GetWorkoutRecords\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [WorkoutRecords_$reflection()])))], [\"GetTrainingPlan\", lambda_type(option_type(int32_type), lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [TrainingPlan_$reflection()])))], [\"GetTrainingPlans\", lambda_type(int32_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(TrainingPlan_$reflection())]))], [\"AddTrainingPlan\", lambda_type(TrainingPlan_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [int64_type]))], [\"EditTrainingPlan\", lambda_type(TrainingPlan_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))], [\"DeleteTrainingPlan\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))], [\"SetWorkoutsForTrainingPlan\", lambda_type(int32_type, lambda_type(int64_type, lambda_type(list_type(int64_type), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))))], [\"RemoveWorkoutFromTrainingPlan\", lambda_type(int32_type, lambda_type(int64_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))))], [\"GetTrainingPlanWorkouts\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(Workout_$reflection())])))], [\"GetTrainingPlanWorkoutsCandidates\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(Workout_$reflection())])))], [\"MarkTrainingPlanFavourite\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))], [\"GetTrainingPlanWorkoutRecords\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [TrainingPlanWorkoutRecords_$reflection()])))], [\"DeleteFavourite\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))], [\"GetFitnessEditHelperDataTrainingPlan\", lambda_type(int32_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [FitnessEditHelperData_$reflection()]))], [\"GetFitnessEditHelperDataWorkout\", lambda_type(int32_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [FitnessEditHelperData_$reflection()]))], [\"GetFitnessEditHelperDataExercise\", lambda_type(int32_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [FitnessEditHelperData_$reflection()]))]]);\n}\n\nexport const fitnessModuleName = \"Omnicv.Fitness\";\n\nexport class FitnessModule {\n constructor() {\n this.initialTimestamp = parse(\"2022-01-14T20:50:00\");\n this.latestTimestamp = this.initialTimestamp;\n }\n get Details() {\n const this$ = this;\n return new ProductInformation(fitnessModuleName, this$.initialTimestamp, this$.latestTimestamp, \"Fitness\", \"Track your fitness performance\", empty(), FitnessModule__get_CurrentVersion(this$), singleton(defaultAuthors), defaultContacts, defaultWeb, undefined, undefined, new Changelog(1, [FitnessModule__get_Changelog(this$)]));\n }\n RegisteredTypes() {\n return ofArray([RepsWithWeightRecord_$reflection(), RepsWithBodyWeightRecord_$reflection(), EnduranceRecord_$reflection(), IntervalsDurationRecord_$reflection(), IntervalsRepsRecord_$reflection(), WorkoutRecord_$reflection()]);\n }\n}\n\nexport function FitnessModule_$reflection() {\n return class_type(\"Omnicv.Shared.FitnessAPI.FitnessModule\", undefined, FitnessModule);\n}\n\nexport function FitnessModule_$ctor() {\n return new FitnessModule();\n}\n\nexport function FitnessModule__get_Changelog(this$) {\n return singleton(new ChangelogEntry(this$.initialTimestamp, new Version(1, 0, 1, undefined), \"Initial release\"));\n}\n\nexport function FitnessModule__get_CurrentVersion(this$) {\n return head(FitnessModule__get_Changelog(this$)).Version;\n}\n\n","import { Union, Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { int64_type, lambda_type, unit_type, uint32_type, tuple_type, enum_type, class_type, option_type, int32_type, list_type, union_type, record_type, bool_type, string_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { printf, toText, split, isNullOrWhiteSpace } from \"../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { Constraints_collectConstraintsErrors, Constraints_applyConstraintsGetErrors, Constraints_regexConstraint, Constraints_minMaxLengthConstraint } from \"../Omnicv.Shared.Common/Validation.js\";\nimport { singleton, ofArray } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { tryFind } from \"../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { utcNow, compare } from \"../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { FSharpResult$2 } from \"../fable_modules/fable-library-js.4.24.0/Result.js\";\nimport { EventInfo_$reflection } from \"../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { WorkoutRecord_$reflection } from \"./FitnessAPI.js\";\nimport { item } from \"../fable_modules/fable-library-js.4.24.0/Array.js\";\n\nexport class Request_Login extends Record {\n constructor(Username, Password, IsPersistent) {\n super();\n this.Username = Username;\n this.Password = Password;\n this.IsPersistent = IsPersistent;\n }\n}\n\nexport function Request_Login_$reflection() {\n return record_type(\"Omnicv.Shared.API.Request.Login\", [], Request_Login, () => [[\"Username\", string_type], [\"Password\", string_type], [\"IsPersistent\", bool_type]]);\n}\n\nexport function Request_Login__IsComplete(this$) {\n return !(isNullOrWhiteSpace(this$.Username) ? true : isNullOrWhiteSpace(this$.Password));\n}\n\nexport class Request_ExternalAuthScheme extends Union {\n constructor() {\n super();\n this.tag = 0;\n this.fields = [];\n }\n cases() {\n return [\"Google\"];\n }\n}\n\nexport function Request_ExternalAuthScheme_$reflection() {\n return union_type(\"Omnicv.Shared.API.Request.ExternalAuthScheme\", [], Request_ExternalAuthScheme, () => [[]]);\n}\n\nexport class Response_JwtToken extends Record {\n constructor(Token) {\n super();\n this.Token = Token;\n }\n}\n\nexport function Response_JwtToken_$reflection() {\n return record_type(\"Omnicv.Shared.API.Response.JwtToken\", [], Response_JwtToken, () => [[\"Token\", string_type]]);\n}\n\nexport class Response_SiteSettings extends Record {\n constructor(FitnessContentTypes) {\n super();\n this.FitnessContentTypes = FitnessContentTypes;\n }\n}\n\nexport function Response_SiteSettings_$reflection() {\n return record_type(\"Omnicv.Shared.API.Response.SiteSettings\", [], Response_SiteSettings, () => [[\"FitnessContentTypes\", list_type(Response_ContentTypeDescriptor_$reflection())]]);\n}\n\nexport class Response_ContentTypeDescriptor extends Record {\n constructor(Id, Name, Description) {\n super();\n this.Id = (Id | 0);\n this.Name = Name;\n this.Description = Description;\n }\n}\n\nexport function Response_ContentTypeDescriptor_$reflection() {\n return record_type(\"Omnicv.Shared.API.Response.ContentTypeDescriptor\", [], Response_ContentTypeDescriptor, () => [[\"Id\", int32_type], [\"Name\", string_type], [\"Description\", option_type(string_type)]]);\n}\n\nconst Response_fullNameConstraints = ofArray([(name) => ((value) => Constraints_minMaxLengthConstraint(2, 256, name, value)), (name_1) => ((value_1) => Constraints_regexConstraint(/^\\p{L}[\\p{L} ,.'-]*\\p{L}$/gu, name_1, value_1))]);\n\nexport const Response_fullNameName = \"FullName\";\n\nfunction Response_getFullNameErrors(fullName) {\n return Constraints_applyConstraintsGetErrors(Response_fullNameConstraints, Response_fullNameName, fullName);\n}\n\nexport function Response_validateFullName(fullName) {\n return tryFind(Response_fullNameName, Constraints_collectConstraintsErrors(singleton(Response_getFullNameErrors(fullName))));\n}\n\nfunction Response_notInTheFuture(name, date) {\n if (compare(date, utcNow()) >= 0) {\n return new FSharpResult$2(1, [[name, `Date ${date} is in the future`]]);\n }\n else {\n return new FSharpResult$2(0, [date]);\n }\n}\n\nfunction Response_dateOfBirthConstraints() {\n return singleton((name) => ((date) => Response_notInTheFuture(name, date)));\n}\n\nexport const Response_dateOfBirthName = \"DateOfBirth\";\n\nfunction Response_getDateOfBirthErrors(dateOfBirth) {\n return Constraints_applyConstraintsGetErrors(Response_dateOfBirthConstraints(), Response_dateOfBirthName, dateOfBirth);\n}\n\nexport function Response_validateDateOfBirth(dateOfBirth) {\n return tryFind(Response_dateOfBirthName, Constraints_collectConstraintsErrors(singleton(Response_getDateOfBirthErrors(dateOfBirth))));\n}\n\nexport class Response_ProfileInfo extends Record {\n constructor(Id, IsPrimary, FullName, DateOfBirth, Gender, Country_IsoCode, ActiveWorkout) {\n super();\n this.Id = (Id | 0);\n this.IsPrimary = IsPrimary;\n this.FullName = FullName;\n this.DateOfBirth = DateOfBirth;\n this.Gender = (Gender | 0);\n this.Country_IsoCode = Country_IsoCode;\n this.ActiveWorkout = ActiveWorkout;\n }\n}\n\nexport function Response_ProfileInfo_$reflection() {\n return record_type(\"Omnicv.Shared.API.Response.ProfileInfo\", [], Response_ProfileInfo, () => [[\"Id\", int32_type], [\"IsPrimary\", bool_type], [\"FullName\", string_type], [\"DateOfBirth\", class_type(\"System.DateTime\")], [\"Gender\", enum_type(\"Omnicv.Common.Identity.Gender\", int32_type, [[\"Male\", 0], [\"Female\", 1], [\"Other\", 2]])], [\"Country_IsoCode\", string_type], [\"ActiveWorkout\", option_type(tuple_type(EventInfo_$reflection(), WorkoutRecord_$reflection()))]]);\n}\n\nexport function Response_ProfileInfo_Default() {\n return new Response_ProfileInfo(0, false, \"\", utcNow(), 0, \"\", undefined);\n}\n\nfunction Response_ProfileInfo_Validator_Z1C27483E(record) {\n return Constraints_collectConstraintsErrors(ofArray([Response_getFullNameErrors(record.FullName), Response_getDateOfBirthErrors(record.DateOfBirth)]));\n}\n\nexport function Response_ProfileInfo__Validate(this$) {\n return Response_ProfileInfo_Validator_Z1C27483E(this$);\n}\n\nexport function Response_ProfileInfo__DisplayName(this$) {\n return item(0, split(this$.FullName, [\" \"], undefined, 0));\n}\n\nexport class Response_UserInfo extends Record {\n constructor(Id, Name, Email, ReadOnly, Profiles, SiteSettings, ServerVersion, ClientConfigVariables) {\n super();\n this.Id = (Id | 0);\n this.Name = Name;\n this.Email = Email;\n this.ReadOnly = ReadOnly;\n this.Profiles = Profiles;\n this.SiteSettings = SiteSettings;\n this.ServerVersion = ServerVersion;\n this.ClientConfigVariables = ClientConfigVariables;\n }\n}\n\nexport function Response_UserInfo_$reflection() {\n return record_type(\"Omnicv.Shared.API.Response.UserInfo\", [], Response_UserInfo, () => [[\"Id\", int32_type], [\"Name\", string_type], [\"Email\", string_type], [\"ReadOnly\", bool_type], [\"Profiles\", list_type(Response_ProfileInfo_$reflection())], [\"SiteSettings\", Response_SiteSettings_$reflection()], [\"ServerVersion\", string_type], [\"ClientConfigVariables\", class_type(\"Microsoft.FSharp.Collections.FSharpMap`2\", [string_type, string_type])]]);\n}\n\nexport class Response_AdminUserList extends Record {\n constructor(Users, Page) {\n super();\n this.Users = Users;\n this.Page = Page;\n }\n}\n\nexport function Response_AdminUserList_$reflection() {\n return record_type(\"Omnicv.Shared.API.Response.AdminUserList\", [], Response_AdminUserList, () => [[\"Users\", list_type(Response_UserInfo_$reflection())], [\"Page\", uint32_type]]);\n}\n\nexport class Response_AnonymousData extends Record {\n constructor(ClientConfigVariables) {\n super();\n this.ClientConfigVariables = ClientConfigVariables;\n }\n}\n\nexport function Response_AnonymousData_$reflection() {\n return record_type(\"Omnicv.Shared.API.Response.AnonymousData\", [], Response_AnonymousData, () => [[\"ClientConfigVariables\", class_type(\"Microsoft.FSharp.Collections.FSharpMap`2\", [string_type, string_type])]]);\n}\n\nexport class Response_AvailableUserInfo extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Anonumous\", \"Authenticated\"];\n }\n}\n\nexport function Response_AvailableUserInfo_$reflection() {\n return union_type(\"Omnicv.Shared.API.Response.AvailableUserInfo\", [], Response_AvailableUserInfo, () => [[[\"Item\", Response_AnonymousData_$reflection()]], [[\"Item\", Response_UserInfo_$reflection()]]]);\n}\n\nexport class PageFormat extends Union {\n constructor() {\n super();\n this.tag = 0;\n this.fields = [];\n }\n cases() {\n return [\"Markdown\"];\n }\n}\n\nexport function PageFormat_$reflection() {\n return union_type(\"Omnicv.Shared.API.PageFormat\", [], PageFormat, () => [[]]);\n}\n\nexport class StaticPage extends Record {\n constructor(Format, Title, Body, Language) {\n super();\n this.Format = Format;\n this.Title = Title;\n this.Body = Body;\n this.Language = Language;\n }\n}\n\nexport function StaticPage_$reflection() {\n return record_type(\"Omnicv.Shared.API.StaticPage\", [], StaticPage, () => [[\"Format\", PageFormat_$reflection()], [\"Title\", string_type], [\"Body\", string_type], [\"Language\", string_type]]);\n}\n\nexport class ContactData extends Record {\n constructor(Name, Email, Subject, Url, Message) {\n super();\n this.Name = Name;\n this.Email = Email;\n this.Subject = Subject;\n this.Url = Url;\n this.Message = Message;\n }\n}\n\nexport function ContactData_$reflection() {\n return record_type(\"Omnicv.Shared.API.ContactData\", [], ContactData, () => [[\"Name\", string_type], [\"Email\", string_type], [\"Subject\", string_type], [\"Url\", option_type(string_type)], [\"Message\", string_type]]);\n}\n\nexport class AnonymousService extends Record {\n constructor(Contact, GetStaticPage, About, Login, GetAvailableUserInfo) {\n super();\n this.Contact = Contact;\n this.GetStaticPage = GetStaticPage;\n this.About = About;\n this.Login = Login;\n this.GetAvailableUserInfo = GetAvailableUserInfo;\n }\n}\n\nexport function AnonymousService_$reflection() {\n return record_type(\"Omnicv.Shared.API.AnonymousService\", [], AnonymousService, () => [[\"Contact\", lambda_type(ContactData_$reflection(), lambda_type(option_type(string_type), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))], [\"GetStaticPage\", lambda_type(string_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [StaticPage_$reflection()]))], [\"About\", lambda_type(unit_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [string_type]))], [\"Login\", lambda_type(Request_Login_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [Response_UserInfo_$reflection()]))], [\"GetAvailableUserInfo\", lambda_type(unit_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [Response_AvailableUserInfo_$reflection()]))]]);\n}\n\nexport function AnonymousService_RouteBuilder(_arg, m) {\n return toText(printf(\"/api/public/%s\"))(m);\n}\n\nexport class SummaryEntry extends Record {\n constructor(Caption, ContentType, ContentTypeId, Count) {\n super();\n this.Caption = Caption;\n this.ContentType = ContentType;\n this.ContentTypeId = (ContentTypeId | 0);\n this.Count = (Count | 0);\n }\n}\n\nexport function SummaryEntry_$reflection() {\n return record_type(\"Omnicv.Shared.API.SummaryEntry\", [], SummaryEntry, () => [[\"Caption\", string_type], [\"ContentType\", string_type], [\"ContentTypeId\", int32_type], [\"Count\", int32_type]]);\n}\n\nexport class CommonAuthService extends Record {\n constructor(Logout, GetUserInfo, UpdateEventTimestamp, DeleteRecord, GetProfile, AddProfile, EditProfile, DeleteProfile, GetContentSummary) {\n super();\n this.Logout = Logout;\n this.GetUserInfo = GetUserInfo;\n this.UpdateEventTimestamp = UpdateEventTimestamp;\n this.DeleteRecord = DeleteRecord;\n this.GetProfile = GetProfile;\n this.AddProfile = AddProfile;\n this.EditProfile = EditProfile;\n this.DeleteProfile = DeleteProfile;\n this.GetContentSummary = GetContentSummary;\n }\n}\n\nexport function CommonAuthService_$reflection() {\n return record_type(\"Omnicv.Shared.API.CommonAuthService\", [], CommonAuthService, () => [[\"Logout\", lambda_type(unit_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [string_type]))], [\"GetUserInfo\", lambda_type(unit_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [Response_UserInfo_$reflection()]))], [\"UpdateEventTimestamp\", lambda_type(int32_type, lambda_type(int64_type, lambda_type(class_type(\"System.DateTime\"), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [string_type]))))], [\"DeleteRecord\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [string_type])))], [\"GetProfile\", lambda_type(int32_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [Response_ProfileInfo_$reflection()]))], [\"AddProfile\", lambda_type(Response_ProfileInfo_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [int32_type]))], [\"EditProfile\", lambda_type(Response_ProfileInfo_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))], [\"DeleteProfile\", lambda_type(int32_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))], [\"GetContentSummary\", lambda_type(int32_type, lambda_type(enum_type(\"Omnicv.Shared.API.SummaryGroupByDate\", int32_type, [[\"None\", 0], [\"Year\", 1], [\"Quarter\", 2], [\"Month\", 3]]), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(SummaryEntry_$reflection())])))]]);\n}\n\nexport function CommonAuthService_RouteBuilder(_arg, m) {\n return toText(printf(\"/api/auth/common/%s\"))(m);\n}\n\nexport class AdminAuthService extends Record {\n constructor(GetUsers) {\n super();\n this.GetUsers = GetUsers;\n }\n}\n\nexport function AdminAuthService_$reflection() {\n return record_type(\"Omnicv.Shared.API.AdminAuthService\", [], AdminAuthService, () => [[\"GetUsers\", lambda_type(option_type(uint32_type), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [Response_AdminUserList_$reflection()]))]]);\n}\n\nexport function AdminAuthService_RouteBuilder(_arg, m) {\n return toText(printf(\"/api/auth/admin/%s\"))(m);\n}\n\n","import { Fa_IconOption, Fa_i, Fa_stack } from \"../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { cons, filter, tryFind, head, find, ofArray, empty } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Record, Union } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { record_type, int32_type, option_type, bool_type, union_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { Response_UserInfo, Response_ProfileInfo, Response_ProfileInfo__DisplayName, Response_UserInfo_$reflection } from \"../Omnicv.Shared/API.js\";\nimport { isNullOrWhiteSpace } from \"../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { parse } from \"../fable_modules/fable-library-js.4.24.0/Int32.js\";\nimport { int32ToString } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { value as value_1, map } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\n\nexport function stack2FaIcons(first, second) {\n return Fa_stack(empty(), [Fa_i(ofArray([first, new Fa_IconOption(18, [])]), []), Fa_i(ofArray([second, new Fa_IconOption(17, []), new Fa_IconOption(4, [])]), [])]);\n}\n\nexport class Icons extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Add\", \"Copy\", \"Delete\", \"Unlink\", \"Edit\", \"Reload\", \"ReloadSpinning\", \"Search\", \"Settings\", \"Login\", \"Logout\", \"Tick\", \"Details\", \"View\", \"Up\", \"Down\", \"Top\", \"Bottom\", \"Favourite\", \"Stop\"];\n }\n}\n\nexport function Icons_$reflection() {\n return union_type(\"Omnicv.Client.SharedView.Icons\", [], Icons, () => [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]);\n}\n\nexport function Icons__ToIcon(this$) {\n switch (this$.tag) {\n case 1:\n return new Fa_IconOption(11, [\"fas fa-copy\"]);\n case 2:\n return new Fa_IconOption(11, [\"fas fa-trash-alt\"]);\n case 3:\n return new Fa_IconOption(11, [\"fas fa-unlink\"]);\n case 4:\n return new Fa_IconOption(11, [\"fas fa-edit\"]);\n case 5:\n return new Fa_IconOption(11, [\"fas fa-sync-alt\"]);\n case 6:\n return new Fa_IconOption(11, [\"fas fa-spinner\"]);\n case 7:\n return new Fa_IconOption(11, [\"fas fa-search\"]);\n case 8:\n return new Fa_IconOption(11, [\"fas fa-cog\"]);\n case 9:\n return new Fa_IconOption(11, [\"fas fa-sign-in-alt\"]);\n case 10:\n return new Fa_IconOption(11, [\"fas fa-sign-out-alt\"]);\n case 11:\n return new Fa_IconOption(11, [\"fas fa-check\"]);\n case 12:\n return new Fa_IconOption(11, [\"fas fa-info\"]);\n case 13:\n return new Fa_IconOption(11, [\"fas fa-eye\"]);\n case 14:\n return new Fa_IconOption(11, [\"fas fa-arrow-up\"]);\n case 15:\n return new Fa_IconOption(11, [\"fas fa-arrow-down\"]);\n case 16:\n return new Fa_IconOption(11, [\"fas fa-arrow-alt-circle-up\"]);\n case 17:\n return new Fa_IconOption(11, [\"fas fa-arrow-alt-circle-down\"]);\n case 18:\n return new Fa_IconOption(11, [\"fas fa-bookmark\"]);\n case 19:\n return new Fa_IconOption(11, [\"fas fa-stop\"]);\n default:\n return new Fa_IconOption(11, [\"fas fa-plus\"]);\n }\n}\n\nexport class CompositeIcons extends Union {\n constructor() {\n super();\n this.tag = 0;\n this.fields = [];\n }\n cases() {\n return [\"RemoveFavourite\"];\n }\n}\n\nexport function CompositeIcons_$reflection() {\n return union_type(\"Omnicv.Client.SharedView.CompositeIcons\", [], CompositeIcons, () => [[]]);\n}\n\nexport function CompositeIcons__ToElement(this$) {\n return stack2FaIcons(new Fa_IconOption(11, [\"fas fa-bookmark\"]), new Fa_IconOption(11, [\"fas fa-tint-slash\"]));\n}\n\nconst lastProfileIdKey = \"lastProfileId\";\n\nexport class Session extends Record {\n constructor(LoggedIn, UserInfo, CurrentProfile) {\n super();\n this.LoggedIn = LoggedIn;\n this.UserInfo = UserInfo;\n this.CurrentProfile = CurrentProfile;\n }\n}\n\nexport function Session_$reflection() {\n return record_type(\"Omnicv.Client.SharedView.Session\", [], Session, () => [[\"LoggedIn\", bool_type], [\"UserInfo\", option_type(Response_UserInfo_$reflection())], [\"CurrentProfile\", option_type(int32_type)]]);\n}\n\nexport function Session_get_Default() {\n return new Session(false, undefined, undefined);\n}\n\nexport function Session__GetCurrentName(this$) {\n const matchValue = this$.UserInfo;\n if (matchValue == null) {\n return \"\";\n }\n else {\n const userInfo = matchValue;\n const profileId = Session__GetCurrentProfileId(this$) | 0;\n return Response_ProfileInfo__DisplayName(find((pr) => (pr.Id === profileId), userInfo.Profiles));\n }\n}\n\nexport function Session__GetCurrentProfile(this$) {\n const matchValue = this$.UserInfo;\n if (matchValue == null) {\n return undefined;\n }\n else {\n const userInfo = matchValue;\n const matchValue_1 = this$.CurrentProfile;\n if (matchValue_1 == null) {\n return head(userInfo.Profiles);\n }\n else {\n const profileId = matchValue_1 | 0;\n return tryFind((p) => (p.Id === profileId), userInfo.Profiles);\n }\n }\n}\n\nexport function Session__GetCurrentProfileId(this$) {\n const matchValue = Session__GetCurrentProfile(this$);\n if (matchValue == null) {\n const result = localStorage.getItem(lastProfileIdKey);\n if (isNullOrWhiteSpace(result)) {\n return -1;\n }\n else {\n return parse(result, 511, false, 32) | 0;\n }\n }\n else {\n return matchValue.Id | 0;\n }\n}\n\nexport function Session__UpdateCurrentProvile(this$) {\n const matchValue = this$.UserInfo;\n if (matchValue == null) {\n }\n else {\n const userInfo = matchValue;\n localStorage.setItem(lastProfileIdKey, int32ToString(Session__GetCurrentProfileId(this$)));\n }\n}\n\nexport function Session__GetActiveWorkoutRecord(this$) {\n const matchValue = Session__GetCurrentProfile(this$);\n if (matchValue == null) {\n return undefined;\n }\n else {\n return matchValue.ActiveWorkout;\n }\n}\n\nexport function Session__GetActiveWorkoutId(this$) {\n return map((record) => record.Id, map((tuple) => tuple[1], Session__GetActiveWorkoutRecord(this$)));\n}\n\nexport function Session__SetActiveWorkoutRecord_Z2D8A2414(this$, activeRecord) {\n let bind$0040;\n let newProfile;\n const matchValue = Session__GetCurrentProfile(this$);\n if (matchValue == null) {\n throw new Error(\"No current profile\");\n }\n else {\n const profile = matchValue;\n newProfile = (new Response_ProfileInfo(profile.Id, profile.IsPrimary, profile.FullName, profile.DateOfBirth, profile.Gender, profile.Country_IsoCode, activeRecord));\n }\n const newProfiles = filter((profile_1) => (newProfile.Id === profile_1.Id), value_1(this$.UserInfo).Profiles);\n return new Session(this$.LoggedIn, (bind$0040 = value_1(this$.UserInfo), new Response_UserInfo(bind$0040.Id, bind$0040.Name, bind$0040.Email, bind$0040.ReadOnly, cons(newProfile, newProfiles), bind$0040.SiteSettings, bind$0040.ServerVersion, bind$0040.ClientConfigVariables)), this$.CurrentProfile);\n}\n\nexport function Session__GetDisplayCurrency(this$) {\n return \"USD\";\n}\n\nexport function Session__SiteSettings(this$) {\n return value_1(this$.UserInfo).SiteSettings;\n}\n\n","import { value, some } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport * as common from \"../../src/javascript/common.js\";\n\nexport const isDevelopment = false;\n\n/**\n * Logs error to the console during development\n */\nexport function Log_developmentError(error) {\n if (isDevelopment) {\n console.error(some(error));\n }\n}\n\nexport const Config_placeLookupId = \"placeLookupInput\";\n\nexport function Config_variable(name) {\n return common.getConfigVariable(name);\n}\n\nfunction Config_demoUsers() {\n return Config_variable(\"DEMO_USER\");\n}\n\nexport function Config_releaseVersion() {\n return Config_variable(\"RELEASE_VERSION\");\n}\n\nexport function Config_isDemoUser(session) {\n const username = value(session.UserInfo).Name;\n return Config_demoUsers() === username;\n}\n\nexport const Config_defaultDateForNow = \"now\";\n\nexport function Config_getDefaultDiaryDate(session) {\n if (Config_isDemoUser(session)) {\n const fromDate = Config_variable(\"DEMO_USER_RANGE_FROM\");\n if (fromDate.length > 0) {\n return fromDate;\n }\n else {\n const toDate = Config_variable(\"DEMO_USER_RANGE_TO\");\n if (toDate.length > 0) {\n return toDate;\n }\n else {\n return Config_defaultDateForNow;\n }\n }\n }\n else {\n return Config_defaultDateForNow;\n }\n}\n\nexport function Config_getUserTimeZone(session) {\n if (Config_isDemoUser(session)) {\n return \"UTC\";\n }\n else {\n return common.getTimezoneName();\n }\n}\n\n","import { Constraints_minMaxConstraint, Constraints_collectConstraintsErrors, Constraints_applyConstraintsGetErrors, Constraints_minMaxOptLengthConstraint } from \"../Omnicv.Shared.Common/Validation.js\";\nimport { head, empty, ofArray, singleton } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { tryFind } from \"../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { Union, Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { list_type, tuple_type, lambda_type, union_type, class_type, bool_type, uint8_type, enum_type, int32_type, record_type, option_type, string_type, float64_type, int64_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { compare } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { PagingOptions_$reflection, EventInfo_$reflection } from \"../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { printf, toText } from \"../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { ChangelogEntry, Version, ProductInformation, Changelog, defaultWeb, defaultContacts, defaultAuthors } from \"../Omnicv.Shared.Common/ProductDetails.js\";\nimport { parse } from \"../fable_modules/fable-library-js.4.24.0/Date.js\";\n\nconst notesConstraints = singleton((name) => ((value) => Constraints_minMaxOptLengthConstraint(5, 1000, name, value)));\n\nexport const notesName = \"Notes\";\n\nfunction getNotesErrors(notes) {\n return Constraints_applyConstraintsGetErrors(notesConstraints, notesName, notes);\n}\n\nexport function validateNotes(notes) {\n return tryFind(notesName, Constraints_collectConstraintsErrors(singleton(getNotesErrors(notes))));\n}\n\nconst weightConstraints = singleton((name) => ((value) => Constraints_minMaxConstraint(1, 500, name, value)));\n\nexport const weightName = \"Weight\";\n\nfunction getWeightErrors(weight) {\n return Constraints_applyConstraintsGetErrors(weightConstraints, weightName, weight);\n}\n\nexport function validateWeight(weight) {\n return tryFind(weightName, Constraints_collectConstraintsErrors(singleton(getWeightErrors(weight))));\n}\n\nconst temperatureConstraints = singleton((name) => ((value) => Constraints_minMaxConstraint(1, 50, name, value)));\n\nexport const temperatureName = \"Temperature\";\n\nfunction getTemperatureErrors(temperature) {\n return Constraints_applyConstraintsGetErrors(temperatureConstraints, temperatureName, temperature);\n}\n\nexport function validateTemperature(temperature) {\n return tryFind(temperatureName, Constraints_collectConstraintsErrors(singleton(getTemperatureErrors(temperature))));\n}\n\nconst pressureConstraints = singleton((name) => ((value) => Constraints_minMaxConstraint(1, 500, name, value)));\n\nexport const systolicName = \"Systolic\";\n\nexport const diastolicName = \"Diastolic\";\n\nfunction getPressureErrors(name, pressure) {\n return Constraints_applyConstraintsGetErrors(pressureConstraints, name, pressure);\n}\n\nexport function validateSystolic(pressure) {\n return tryFind(systolicName, Constraints_collectConstraintsErrors(singleton(getPressureErrors(systolicName, pressure))));\n}\n\nexport function validateDiastolic(pressure) {\n return tryFind(diastolicName, Constraints_collectConstraintsErrors(singleton(getPressureErrors(diastolicName, pressure))));\n}\n\nfunction getRatingErrors(rating) {\n return Constraints_applyConstraintsGetErrors(singleton((name_1) => ((value) => Constraints_minMaxConstraint(1, 10, name_1, value))), \"Rating\", rating);\n}\n\nexport class WeightRecord extends Record {\n constructor(Id, Weight, Notes) {\n super();\n this.Id = Id;\n this.Weight = Weight;\n this.Notes = Notes;\n }\n}\n\nexport function WeightRecord_$reflection() {\n return record_type(\"Omnicv.Shared.PhysicalAPI.WeightRecord\", [], WeightRecord, () => [[\"Id\", int64_type], [\"Weight\", float64_type], [\"Notes\", option_type(string_type)]]);\n}\n\nfunction WeightRecord_Validator_Z880D0EE(record) {\n return Constraints_collectConstraintsErrors(ofArray([getWeightErrors(record.Weight), getNotesErrors(record.Notes)]));\n}\n\nexport function WeightRecord_Default() {\n return new WeightRecord(0n, 0, undefined);\n}\n\nexport function WeightRecord__Validate(this$) {\n return WeightRecord_Validator_Z880D0EE(this$);\n}\n\nexport function WeightRecord__ValidateField_Z721C83C5(this$, name) {\n return tryFind(name, WeightRecord__Validate(this$));\n}\n\nexport class TemperatureRecord extends Record {\n constructor(Id, Temperature, Notes) {\n super();\n this.Id = Id;\n this.Temperature = Temperature;\n this.Notes = Notes;\n }\n}\n\nexport function TemperatureRecord_$reflection() {\n return record_type(\"Omnicv.Shared.PhysicalAPI.TemperatureRecord\", [], TemperatureRecord, () => [[\"Id\", int64_type], [\"Temperature\", float64_type], [\"Notes\", option_type(string_type)]]);\n}\n\nfunction TemperatureRecord_Validator_Z70227002(record) {\n return Constraints_collectConstraintsErrors(ofArray([getTemperatureErrors(record.Temperature), getNotesErrors(record.Notes)]));\n}\n\nexport function TemperatureRecord_Default() {\n return new TemperatureRecord(0n, 0, undefined);\n}\n\nexport function TemperatureRecord__Validate(this$) {\n return TemperatureRecord_Validator_Z70227002(this$);\n}\n\nexport function TemperatureRecord__ValidateField_Z721C83C5(this$, name) {\n return tryFind(name, TemperatureRecord__Validate(this$));\n}\n\nexport class BloodPressureRecord extends Record {\n constructor(Id, Systolic, Diastolic, Notes) {\n super();\n this.Id = Id;\n this.Systolic = Systolic;\n this.Diastolic = Diastolic;\n this.Notes = Notes;\n }\n}\n\nexport function BloodPressureRecord_$reflection() {\n return record_type(\"Omnicv.Shared.PhysicalAPI.BloodPressureRecord\", [], BloodPressureRecord, () => [[\"Id\", int64_type], [\"Systolic\", float64_type], [\"Diastolic\", float64_type], [\"Notes\", option_type(string_type)]]);\n}\n\nfunction BloodPressureRecord_Validator_21088E9D(record) {\n const rangeNotInverted = (record.Systolic <= record.Diastolic) ? [systolicName, `Systolic [${record.Systolic} must be greater than diastolic [${record.Diastolic}`] : undefined;\n return Constraints_collectConstraintsErrors(ofArray([getPressureErrors(systolicName, record.Systolic), getPressureErrors(diastolicName, record.Diastolic), getNotesErrors(record.Notes), rangeNotInverted]));\n}\n\nexport function BloodPressureRecord_Default() {\n return new BloodPressureRecord(0n, 0, 0, undefined);\n}\n\nexport function BloodPressureRecord__Validate(this$) {\n return BloodPressureRecord_Validator_21088E9D(this$);\n}\n\nexport function BloodPressureRecord__ValidateField_Z721C83C5(this$, name) {\n return tryFind(name, BloodPressureRecord__Validate(this$));\n}\n\nexport const bodilyFunctions = ofArray([[1, \"Number 1\"], [2, \"Number 2\"]]);\n\nexport const duringSleepOptions = ofArray([[undefined, \"Auto\"], [true, \"During sleep\"], [false, \"When awake\"]]);\n\nexport const bodilyFunctionsEmojis = ofArray([[1, \"🌊\"], [2, \"💩\"]]);\n\nexport class BodilyFunctionsRecord extends Record {\n constructor(Id, FunctionType, DurationSec, Rating, DuringSleep, Notes) {\n super();\n this.Id = Id;\n this.FunctionType = (FunctionType | 0);\n this.DurationSec = (DurationSec | 0);\n this.Rating = Rating;\n this.DuringSleep = DuringSleep;\n this.Notes = Notes;\n }\n}\n\nexport function BodilyFunctionsRecord_$reflection() {\n return record_type(\"Omnicv.Shared.PhysicalAPI.BodilyFunctionsRecord\", [], BodilyFunctionsRecord, () => [[\"Id\", int64_type], [\"FunctionType\", enum_type(\"Omnicv.Shared.PhysicalAPI.BodilyFunctions\", int32_type, [[\"Urination\", 1], [\"Defecation\", 2]])], [\"DurationSec\", int32_type], [\"Rating\", uint8_type], [\"DuringSleep\", option_type(bool_type)], [\"Notes\", option_type(string_type)]]);\n}\n\nfunction BodilyFunctionsRecord_Validator_5C9DD176(record) {\n return Constraints_collectConstraintsErrors(ofArray([getRatingErrors(~~record.Rating), getNotesErrors(record.Notes)]));\n}\n\nexport function BodilyFunctionsRecord_Default() {\n return new BodilyFunctionsRecord(0n, 1, 60, 0 & 0xFF, undefined, undefined);\n}\n\nexport function BodilyFunctionsRecord__Validate(this$) {\n return BodilyFunctionsRecord_Validator_5C9DD176(this$);\n}\n\nexport function BodilyFunctionsRecord__ValidateField_Z721C83C5(this$, name) {\n return tryFind(name, BodilyFunctionsRecord__Validate(this$));\n}\n\nexport class PhysicalSearchOptions extends Record {\n constructor(DateFrom, DateTo, Notes) {\n super();\n this.DateFrom = DateFrom;\n this.DateTo = DateTo;\n this.Notes = Notes;\n }\n}\n\nexport function PhysicalSearchOptions_$reflection() {\n return record_type(\"Omnicv.Shared.PhysicalAPI.PhysicalSearchOptions\", [], PhysicalSearchOptions, () => [[\"DateFrom\", option_type(class_type(\"System.DateTime\"))], [\"DateTo\", option_type(class_type(\"System.DateTime\"))], [\"Notes\", option_type(string_type)]]);\n}\n\nexport function PhysicalSearchOptions__Validate(this$) {\n if (((this$.DateFrom == null) && (this$.DateTo == null)) && (this$.Notes == null)) {\n return \"At least one parameter must be populated\";\n }\n else if (((this$.DateFrom != null) && (this$.DateTo != null)) && (compare(this$.DateFrom, this$.DateTo) >= 0)) {\n return \"From must be smaller than To\";\n }\n else {\n return undefined;\n }\n}\n\nexport class UnifiedRecord extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Weight\", \"BloodPressure\", \"BodilyFunctions\", \"Temperature\"];\n }\n}\n\nexport function UnifiedRecord_$reflection() {\n return union_type(\"Omnicv.Shared.PhysicalAPI.UnifiedRecord\", [], UnifiedRecord, () => [[[\"Item\", WeightRecord_$reflection()]], [[\"Item\", BloodPressureRecord_$reflection()]], [[\"Item\", BodilyFunctionsRecord_$reflection()]], [[\"Item\", TemperatureRecord_$reflection()]]]);\n}\n\nexport class RecordService$1 extends Record {\n constructor(Add, Edit, GetRecord, GetRecords, SearchRecords) {\n super();\n this.Add = Add;\n this.Edit = Edit;\n this.GetRecord = GetRecord;\n this.GetRecords = GetRecords;\n this.SearchRecords = SearchRecords;\n }\n}\n\nexport function RecordService$1_$reflection(gen0) {\n return record_type(\"Omnicv.Shared.PhysicalAPI.RecordService`1\", [gen0], RecordService$1, () => [[\"Add\", lambda_type(EventInfo_$reflection(), lambda_type(gen0, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [EventInfo_$reflection()])))], [\"Edit\", lambda_type(EventInfo_$reflection(), lambda_type(gen0, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [EventInfo_$reflection()])))], [\"GetRecord\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [tuple_type(EventInfo_$reflection(), gen0)])))], [\"GetRecords\", lambda_type(int32_type, lambda_type(PagingOptions_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), gen0))])))], [\"SearchRecords\", lambda_type(int32_type, lambda_type(PhysicalSearchOptions_$reflection(), lambda_type(PagingOptions_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), gen0))]))))]]);\n}\n\nexport class UnifiedService extends Record {\n constructor(GetRecords) {\n super();\n this.GetRecords = GetRecords;\n }\n}\n\nexport function UnifiedService_$reflection() {\n return record_type(\"Omnicv.Shared.PhysicalAPI.UnifiedService\", [], UnifiedService, () => [[\"GetRecords\", lambda_type(int32_type, lambda_type(PagingOptions_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), UnifiedRecord_$reflection()))])))]]);\n}\n\nexport function UnifiedService_RouteBuilder(_arg, m) {\n return toText(printf(\"/api/auth/mod/phys/unified/%s\"))(m);\n}\n\nexport class PhysicalModule {\n constructor() {\n this.initialTimestamp = parse(\"2021-11-13T19:53:00\");\n this.latestTimestamp = this.initialTimestamp;\n }\n get Details() {\n const this$ = this;\n const Description = \"Physical, body and well-being tracking module. Log your weight, height, blood pressure and other physical parameters and activities\";\n return new ProductInformation(\"Omnicv.Physical\", this$.initialTimestamp, this$.latestTimestamp, \"Physical\", Description, empty(), PhysicalModule__get_CurrentVersion(this$), singleton(defaultAuthors), defaultContacts, defaultWeb, undefined, undefined, new Changelog(1, [PhysicalModule__get_Changelog(this$)]));\n }\n RegisteredTypes() {\n return ofArray([WeightRecord_$reflection(), BloodPressureRecord_$reflection(), BodilyFunctionsRecord_$reflection(), TemperatureRecord_$reflection()]);\n }\n}\n\nexport function PhysicalModule_$reflection() {\n return class_type(\"Omnicv.Shared.PhysicalAPI.PhysicalModule\", undefined, PhysicalModule);\n}\n\nexport function PhysicalModule_$ctor() {\n return new PhysicalModule();\n}\n\nexport function PhysicalModule__get_Changelog(this$) {\n return singleton(new ChangelogEntry(this$.initialTimestamp, new Version(1, 0, 1, undefined), \"Initial release\"));\n}\n\nexport function PhysicalModule__get_CurrentVersion(this$) {\n return head(PhysicalModule__get_Changelog(this$)).Version;\n}\n\n","import { Constraints_isValidCurrencyOpt, Constraints_isValidCurrency, Constraints_greaterThanConstraint, Constraints_minConstraint, Constraints_minMaxOptConstraint, Constraints_minMaxOptLengthConstraint, Constraints_collectConstraintsErrors, Constraints_applyConstraintsGetErrors, Constraints_minMaxLengthConstraint } from \"../Omnicv.Shared.Common/Validation.js\";\nimport { head, isEmpty, append, sum, filter as filter_2, map, forAll, empty, ofArray, singleton } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { FSharpMap__get_Count, FSharpMap__ContainsKey, FSharpMap__get_Item, ofList, tryFind } from \"../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { op_Addition, get_MinusOne, get_One, op_Division, op_Multiply, op_UnaryNegation, get_Zero, fromParts } from \"../fable_modules/fable-library-js.4.24.0/Decimal.js\";\nimport Decimal from \"../fable_modules/fable-library-js.4.24.0/Decimal.js\";\nimport { parse, compare } from \"../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { defaultArg, value as value_10 } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Union, Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { array_type, uint8_type, union_type, unit_type, list_type, tuple_type, lambda_type, bool_type, class_type, option_type, enum_type, int32_type, int64_type, record_type, decimal_type, string_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { printf, toFail } from \"../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { curry2, bigintHash, compare as compare_1, structuralHash, equals, comparePrimitives, compareArrays } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { DataPoint_$reflection, PagingOptions_$reflection, EventInfo_$reflection } from \"../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { exists } from \"../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { List_groupBy } from \"../fable_modules/fable-library-js.4.24.0/Seq2.js\";\nimport { compare as compare_2, equals as equals_1 } from \"../fable_modules/fable-library-js.4.24.0/BigInt.js\";\nimport { ChangelogEntry, Version, ProductInformation, Changelog, defaultWeb, defaultContacts, defaultAuthors } from \"../Omnicv.Shared.Common/ProductDetails.js\";\n\nconst nameConstraints = singleton((name) => ((value) => Constraints_minMaxLengthConstraint(1, 256, name, value)));\n\nexport const nameName = \"Name\";\n\nfunction getNameErrors(name) {\n return Constraints_applyConstraintsGetErrors(nameConstraints, nameName, name);\n}\n\nexport function validateName(name) {\n return tryFind(nameName, Constraints_collectConstraintsErrors(singleton(getNameErrors(name))));\n}\n\nconst notesConstraints = singleton((name) => ((value) => Constraints_minMaxOptLengthConstraint(5, 1000, name, value)));\n\nexport const notesName = \"Notes\";\n\nfunction getNotesErrors(notes) {\n return Constraints_applyConstraintsGetErrors(notesConstraints, notesName, notes);\n}\n\nexport function validateNotes(notes) {\n return tryFind(notesName, Constraints_collectConstraintsErrors(singleton(getNotesErrors(notes))));\n}\n\nconst instrumentConstraints = singleton((name) => ((value) => Constraints_minMaxOptLengthConstraint(1, 50, name, value)));\n\nexport const instrumentName = \"Instrument\";\n\nfunction getInstrumentErrors(instrument) {\n return Constraints_applyConstraintsGetErrors(instrumentConstraints, instrumentName, instrument);\n}\n\nexport function validateInstrument(instrument) {\n return tryFind(instrumentName, Constraints_collectConstraintsErrors(singleton(getInstrumentErrors(instrument))));\n}\n\nconst interestRateConstraints = singleton((() => {\n const minValue = fromParts(1000, 0, 0, true, 0);\n const maxValue = fromParts(1000, 0, 0, false, 0);\n return (name) => ((value) => Constraints_minMaxOptConstraint(minValue, maxValue, name, value));\n})());\n\nexport const interestRateName = \"InterestRate\";\n\nfunction getInterestRateErrors(interestRate) {\n return Constraints_applyConstraintsGetErrors(interestRateConstraints, interestRateName, interestRate);\n}\n\nexport function validateInterestRate(interestRate) {\n return tryFind(interestRateName, Constraints_collectConstraintsErrors(singleton(getInterestRateErrors(interestRate))));\n}\n\nconst identifierConstraints = singleton((name) => ((value) => Constraints_minMaxOptLengthConstraint(1, 256, name, value)));\n\nexport const identifierName = \"Identifier\";\n\nfunction getIdentifierErrors(identifier) {\n return Constraints_applyConstraintsGetErrors(identifierConstraints, identifierName, identifier);\n}\n\nexport function validateIdentifier(identifier) {\n return tryFind(identifierName, Constraints_collectConstraintsErrors(singleton(getIdentifierErrors(identifier))));\n}\n\nconst quantityConstraints = singleton((name) => ((value) => Constraints_minConstraint(get_Zero, name, value)));\n\nexport const quantityName = \"Quantity\";\n\nfunction getQuantityErrors(quantity) {\n return Constraints_applyConstraintsGetErrors(quantityConstraints, quantityName, quantity);\n}\n\nexport function validateQuantity(quantity) {\n return tryFind(quantityName, Constraints_collectConstraintsErrors(singleton(getQuantityErrors(quantity))));\n}\n\nconst unitPriceConstraints = singleton((name) => ((value) => Constraints_greaterThanConstraint(get_Zero, name, value)));\n\nexport const unitPriceName = \"UnitPrice\";\n\nfunction getUnitPriceErrors(unitPrice) {\n return Constraints_applyConstraintsGetErrors(unitPriceConstraints, unitPriceName, unitPrice);\n}\n\nexport function validateUnitPrice(unitPrice) {\n return tryFind(unitPriceName, Constraints_collectConstraintsErrors(singleton(getUnitPriceErrors(unitPrice))));\n}\n\nconst currencyConstraints = singleton((name) => ((value) => Constraints_isValidCurrency(name, value)));\n\nexport const currencyName = \"Currency\";\n\nfunction getCurrencyErrors(currency) {\n return Constraints_applyConstraintsGetErrors(currencyConstraints, currencyName, currency);\n}\n\nexport function validateCurrency(currency) {\n return tryFind(currencyName, Constraints_collectConstraintsErrors(singleton(getCurrencyErrors(currency))));\n}\n\nconst displayCurrencyConstraints = singleton((name) => ((value) => Constraints_isValidCurrencyOpt(name, value)));\n\nexport const displayCurrencyName = \"DisplayCurrency\";\n\nfunction getDisplayCurrencyErrors(displayCurrency) {\n return Constraints_applyConstraintsGetErrors(displayCurrencyConstraints, displayCurrencyName, displayCurrency);\n}\n\nexport function validateDisplayCurrency(displayCurrency) {\n return tryFind(displayCurrencyName, Constraints_collectConstraintsErrors(singleton(getDisplayCurrencyErrors(displayCurrency))));\n}\n\nexport function isActive(activeFrom, activeTo, date) {\n if ((activeFrom != null) && (compare(value_10(activeFrom), date) > 0)) {\n return false;\n }\n else {\n return !((activeTo != null) && (compare(value_10(activeTo), date) < 0));\n }\n}\n\nexport class CurrencyValue extends Record {\n constructor(Currency, Value) {\n super();\n this.Currency = Currency;\n this.Value = Value;\n }\n}\n\nexport function CurrencyValue_$reflection() {\n return record_type(\"Omnicv.Shared.FinancialAPI.CurrencyValue\", [], CurrencyValue, () => [[\"Currency\", string_type], [\"Value\", decimal_type]]);\n}\n\nexport function CurrencyValue_op_UnaryNegation_4EF17D2F(value) {\n return new CurrencyValue(value.Currency, op_UnaryNegation(value.Value));\n}\n\nexport function CurrencyValue_op_Multiply_1FE6124A(value, other) {\n return new CurrencyValue(value.Currency, op_Multiply(value.Value, other));\n}\n\nexport class Group extends Record {\n constructor(Id, GroupType, ProfileId, ParentId, CreatedAt, UpdatedAt, Name, Notes, Weight, DisplayCurrency) {\n super();\n this.Id = Id;\n this.GroupType = (GroupType | 0);\n this.ProfileId = (ProfileId | 0);\n this.ParentId = ParentId;\n this.CreatedAt = CreatedAt;\n this.UpdatedAt = UpdatedAt;\n this.Name = Name;\n this.Notes = Notes;\n this.Weight = (Weight | 0);\n this.DisplayCurrency = DisplayCurrency;\n }\n}\n\nexport function Group_$reflection() {\n return record_type(\"Omnicv.Shared.FinancialAPI.Group\", [], Group, () => [[\"Id\", int64_type], [\"GroupType\", enum_type(\"Omnicv.Shared.FinancialAPI.GroupType\", int32_type, [[\"Assets\", 1], [\"Cashflows\", 2]])], [\"ProfileId\", int32_type], [\"ParentId\", option_type(int64_type)], [\"CreatedAt\", class_type(\"System.DateTime\")], [\"UpdatedAt\", class_type(\"System.DateTime\")], [\"Name\", string_type], [\"Notes\", option_type(string_type)], [\"Weight\", int32_type], [\"DisplayCurrency\", option_type(string_type)]]);\n}\n\nexport function Group_Default_7F9DDECF(timestamp) {\n return new Group(0n, 1, 0, undefined, timestamp, timestamp, \"\", undefined, 0, undefined);\n}\n\nfunction Group_Validator_4FDF7BFC(record) {\n return Constraints_collectConstraintsErrors(ofArray([getNameErrors(record.Name), getNotesErrors(record.Notes), getDisplayCurrencyErrors(record.DisplayCurrency)]));\n}\n\nexport function Group__Validate(this$) {\n return Group_Validator_4FDF7BFC(this$);\n}\n\nexport function needsUnitPrice(assetType) {\n return assetType === 2;\n}\n\nexport function isLiability(assetType) {\n switch (assetType) {\n case 0:\n case 1:\n case 2:\n case 7:\n case 9:\n return false;\n case 100:\n return true;\n default:\n return toFail(printf(\"Unknown account type %A\"))(assetType);\n }\n}\n\nconst frequencyFactors = ofList(ofArray([[[1, 5], fromParts(3650, 0, 0, false, 1)], [[2, 5], op_Division(fromParts(3650, 0, 0, false, 1), fromParts(70, 0, 0, false, 1))], [[3, 5], fromParts(120, 0, 0, false, 1)], [[4, 5], fromParts(40, 0, 0, false, 1)], [[5, 5], get_One]]), {\n Compare: compareArrays,\n});\n\nexport function getConversionFactor(this$, other) {\n if (this$ === other) {\n return get_One;\n }\n else if (this$ === 5) {\n return op_Division(get_One, FSharpMap__get_Item(frequencyFactors, [other, this$]));\n }\n else if (other === 5) {\n return FSharpMap__get_Item(frequencyFactors, [this$, other]);\n }\n else {\n return op_Multiply(getConversionFactor(this$, 5), getConversionFactor(5, other));\n }\n}\n\nexport function valueToFrequency(value, this$, other) {\n return CurrencyValue_op_Multiply_1FE6124A(value, getConversionFactor(this$, other));\n}\n\nexport function adjustForFrequency(value, this$, other) {\n return valueToFrequency(value, this$, other);\n}\n\nexport class AssetValueRecord extends Record {\n constructor(Id, AssetId, Quantity, UnitPrice, Notes) {\n super();\n this.Id = Id;\n this.AssetId = AssetId;\n this.Quantity = Quantity;\n this.UnitPrice = UnitPrice;\n this.Notes = Notes;\n }\n}\n\nexport function AssetValueRecord_$reflection() {\n return record_type(\"Omnicv.Shared.FinancialAPI.AssetValueRecord\", [], AssetValueRecord, () => [[\"Id\", int64_type], [\"AssetId\", int64_type], [\"Quantity\", decimal_type], [\"UnitPrice\", decimal_type], [\"Notes\", option_type(string_type)]]);\n}\n\nfunction AssetValueRecord_Validator_47F190F5(record) {\n return Constraints_collectConstraintsErrors(ofArray([getQuantityErrors(record.Quantity), getUnitPriceErrors(record.UnitPrice), getNotesErrors(record.Notes)]));\n}\n\nexport function AssetValueRecord_Default() {\n return new AssetValueRecord(0n, 0n, get_Zero, get_Zero, undefined);\n}\n\nexport function AssetValueRecord__Validate(this$) {\n return AssetValueRecord_Validator_47F190F5(this$);\n}\n\nexport class AssetValueService extends Record {\n constructor(Add, Edit, GetRecord, GetRecords, GetRecordsForChart, DeleteRecord) {\n super();\n this.Add = Add;\n this.Edit = Edit;\n this.GetRecord = GetRecord;\n this.GetRecords = GetRecords;\n this.GetRecordsForChart = GetRecordsForChart;\n this.DeleteRecord = DeleteRecord;\n }\n}\n\nexport function AssetValueService_$reflection() {\n return record_type(\"Omnicv.Shared.FinancialAPI.AssetValueService\", [], AssetValueService, () => [[\"Add\", lambda_type(EventInfo_$reflection(), lambda_type(AssetValueRecord_$reflection(), lambda_type(bool_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [EventInfo_$reflection()]))))], [\"Edit\", lambda_type(EventInfo_$reflection(), lambda_type(AssetValueRecord_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [EventInfo_$reflection()])))], [\"GetRecord\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [tuple_type(EventInfo_$reflection(), AssetValueRecord_$reflection())])))], [\"GetRecords\", lambda_type(int32_type, lambda_type(int64_type, lambda_type(PagingOptions_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), AssetValueRecord_$reflection()))]))))], [\"GetRecordsForChart\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(DataPoint_$reflection())])))], [\"DeleteRecord\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))]]);\n}\n\nexport class AutomaticCashflow extends Record {\n constructor(Name, CashflowType, Quantity, Frequency, AssetId, ActiveFrom, ActiveTo, InterestRate, Currency) {\n super();\n this.Name = Name;\n this.CashflowType = (CashflowType | 0);\n this.Quantity = Quantity;\n this.Frequency = (Frequency | 0);\n this.AssetId = AssetId;\n this.ActiveFrom = ActiveFrom;\n this.ActiveTo = ActiveTo;\n this.InterestRate = InterestRate;\n this.Currency = Currency;\n }\n}\n\nexport function AutomaticCashflow_$reflection() {\n return record_type(\"Omnicv.Shared.FinancialAPI.AutomaticCashflow\", [], AutomaticCashflow, () => [[\"Name\", string_type], [\"CashflowType\", enum_type(\"Omnicv.Shared.FinancialAPI.CashflowType\", int32_type, [[\"Income\", 1], [\"Expense\", 2]])], [\"Quantity\", decimal_type], [\"Frequency\", enum_type(\"Omnicv.Shared.FinancialAPI.Frequency\", int32_type, [[\"Daily\", 1], [\"Weekly\", 2], [\"Monthly\", 3], [\"Quarterly\", 4], [\"Yearly\", 5]])], [\"AssetId\", option_type(int64_type)], [\"ActiveFrom\", option_type(class_type(\"System.DateTime\"))], [\"ActiveTo\", option_type(class_type(\"System.DateTime\"))], [\"InterestRate\", option_type(decimal_type)], [\"Currency\", string_type]]);\n}\n\nexport function AutomaticCashflow__GetValue_7F9DDECF(this$, date) {\n const value = new CurrencyValue(this$.Currency, this$.Quantity);\n const matchValue = this$.CashflowType | 0;\n switch (matchValue) {\n case 1:\n return value;\n case 2:\n return CurrencyValue_op_UnaryNegation_4EF17D2F(value);\n default:\n throw new Error(\"Unsupported cashflow type\");\n }\n}\n\nexport function AutomaticCashflow__IsActive_7F9DDECF(this$, date) {\n return isActive(this$.ActiveFrom, this$.ActiveTo, date);\n}\n\nexport class AssetInfo extends Record {\n constructor(Id, ProfileId, GroupId, AssetType, CreatedAt, UpdatedAt, Name, Notes, Weight, Identifier, LatestAssetValueId, Currency, Instrument, InterestRate, ActiveFrom, ActiveTo) {\n super();\n this.Id = Id;\n this.ProfileId = (ProfileId | 0);\n this.GroupId = GroupId;\n this.AssetType = (AssetType | 0);\n this.CreatedAt = CreatedAt;\n this.UpdatedAt = UpdatedAt;\n this.Name = Name;\n this.Notes = Notes;\n this.Weight = (Weight | 0);\n this.Identifier = Identifier;\n this.LatestAssetValueId = LatestAssetValueId;\n this.Currency = Currency;\n this.Instrument = Instrument;\n this.InterestRate = InterestRate;\n this.ActiveFrom = ActiveFrom;\n this.ActiveTo = ActiveTo;\n }\n}\n\nexport function AssetInfo_$reflection() {\n return record_type(\"Omnicv.Shared.FinancialAPI.AssetInfo\", [], AssetInfo, () => [[\"Id\", int64_type], [\"ProfileId\", int32_type], [\"GroupId\", int64_type], [\"AssetType\", enum_type(\"Omnicv.Shared.FinancialAPI.AssetType\", int32_type, [[\"Cash\", 0], [\"CashAccount\", 1], [\"FinancialInstrument\", 2], [\"RealEstate\", 7], [\"Loan\", 9], [\"Debt\", 100]])], [\"CreatedAt\", class_type(\"System.DateTime\")], [\"UpdatedAt\", class_type(\"System.DateTime\")], [\"Name\", string_type], [\"Notes\", option_type(string_type)], [\"Weight\", int32_type], [\"Identifier\", option_type(string_type)], [\"LatestAssetValueId\", option_type(int64_type)], [\"Currency\", string_type], [\"Instrument\", option_type(string_type)], [\"InterestRate\", option_type(decimal_type)], [\"ActiveFrom\", option_type(class_type(\"System.DateTime\"))], [\"ActiveTo\", option_type(class_type(\"System.DateTime\"))]]);\n}\n\nexport function AssetInfo_Default_7F9DDECF(timestamp) {\n return new AssetInfo(0n, 0, 0n, 0, timestamp, timestamp, \"\", undefined, 0, undefined, undefined, \"\", undefined, undefined, undefined, undefined);\n}\n\nfunction AssetInfo_Validator_Z6FD9FBA3(record) {\n return Constraints_collectConstraintsErrors(ofArray([getNameErrors(record.Name), getNotesErrors(record.Notes), getInstrumentErrors(record.Instrument), getInterestRateErrors(record.InterestRate), getIdentifierErrors(record.Identifier), getCurrencyErrors(record.Currency)]));\n}\n\nexport function AssetInfo__Validate(this$) {\n return AssetInfo_Validator_Z6FD9FBA3(this$);\n}\n\nexport function AssetInfo__ValidateField_Z721C83C5(this$, name) {\n return tryFind(name, AssetInfo__Validate(this$));\n}\n\nexport function AssetInfo__GetValue_Z33CCF5CA(this$, value) {\n if (value == null) {\n return new CurrencyValue(this$.Currency, get_Zero);\n }\n else {\n const value_1 = value[1];\n return new CurrencyValue(this$.Currency, op_Multiply(op_Multiply(isLiability(this$.AssetType) ? get_MinusOne : get_One, value_1.Quantity), value_1.UnitPrice));\n }\n}\n\nexport function AssetInfo__GetAutomaticCashflows_Z33CCF5CA(this$, value) {\n if (value == null) {\n return empty();\n }\n else {\n const value_1 = value[1];\n const date = value[0];\n const matchValue = this$.AssetType | 0;\n switch (matchValue) {\n case 1:\n return singleton(new AutomaticCashflow(`Cashflow from ${this$.Name}`, 1, value_1.Quantity, 3, this$.Id, date, this$.ActiveTo, this$.InterestRate, this$.Currency));\n case 9:\n return empty();\n case 100:\n return empty();\n default:\n return empty();\n }\n }\n}\n\nexport class CashflowInfo extends Record {\n constructor(Id, ProfileId, CashflowType, GroupId, CreatedAt, UpdatedAt, Name, Notes, Weight, Currency, Quantity, Frequency, AssetId, ActiveFrom, ActiveTo) {\n super();\n this.Id = Id;\n this.ProfileId = (ProfileId | 0);\n this.CashflowType = (CashflowType | 0);\n this.GroupId = GroupId;\n this.CreatedAt = CreatedAt;\n this.UpdatedAt = UpdatedAt;\n this.Name = Name;\n this.Notes = Notes;\n this.Weight = (Weight | 0);\n this.Currency = Currency;\n this.Quantity = Quantity;\n this.Frequency = (Frequency | 0);\n this.AssetId = AssetId;\n this.ActiveFrom = ActiveFrom;\n this.ActiveTo = ActiveTo;\n }\n}\n\nexport function CashflowInfo_$reflection() {\n return record_type(\"Omnicv.Shared.FinancialAPI.CashflowInfo\", [], CashflowInfo, () => [[\"Id\", int64_type], [\"ProfileId\", int32_type], [\"CashflowType\", enum_type(\"Omnicv.Shared.FinancialAPI.CashflowType\", int32_type, [[\"Income\", 1], [\"Expense\", 2]])], [\"GroupId\", int64_type], [\"CreatedAt\", class_type(\"System.DateTime\")], [\"UpdatedAt\", class_type(\"System.DateTime\")], [\"Name\", string_type], [\"Notes\", option_type(string_type)], [\"Weight\", int32_type], [\"Currency\", string_type], [\"Quantity\", decimal_type], [\"Frequency\", enum_type(\"Omnicv.Shared.FinancialAPI.Frequency\", int32_type, [[\"Daily\", 1], [\"Weekly\", 2], [\"Monthly\", 3], [\"Quarterly\", 4], [\"Yearly\", 5]])], [\"AssetId\", option_type(int64_type)], [\"ActiveFrom\", option_type(class_type(\"System.DateTime\"))], [\"ActiveTo\", option_type(class_type(\"System.DateTime\"))]]);\n}\n\nexport function CashflowInfo_Default_7F9DDECF(timestamp) {\n return new CashflowInfo(0n, 0, 1, 0n, timestamp, timestamp, \"\", undefined, 0, \"\", get_Zero, 3, undefined, undefined, undefined);\n}\n\nfunction CashflowInfo_Validator_13C44C26(record) {\n return Constraints_collectConstraintsErrors(ofArray([getNameErrors(record.Name), getNotesErrors(record.Notes), getCurrencyErrors(record.Currency)]));\n}\n\nexport function CashflowInfo__Validate(this$) {\n return CashflowInfo_Validator_13C44C26(this$);\n}\n\nexport function CashflowInfo__GetValue(this$) {\n const value = new CurrencyValue(this$.Currency, this$.Quantity);\n const matchValue = this$.CashflowType | 0;\n switch (matchValue) {\n case 1:\n return value;\n case 2:\n return CurrencyValue_op_UnaryNegation_4EF17D2F(value);\n default:\n throw new Error(\"Unsupported cashflow type\");\n }\n}\n\nexport function CashflowInfo__IsActive_7F9DDECF(this$, date) {\n return isActive(this$.ActiveFrom, this$.ActiveTo, date);\n}\n\nexport class GroupNode extends Record {\n constructor(Data, Children) {\n super();\n this.Data = Data;\n this.Children = Children;\n }\n}\n\nexport function GroupNode_$reflection() {\n return record_type(\"Omnicv.Shared.FinancialAPI.GroupNode\", [], GroupNode, () => [[\"Data\", Group_$reflection()], [\"Children\", list_type(ChildNode$_$reflection())]]);\n}\n\nexport class ChildNode$ extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Group\", \"Asset\", \"Cashflow\"];\n }\n}\n\nexport function ChildNode$_$reflection() {\n return union_type(\"Omnicv.Shared.FinancialAPI.ChildNode\", [], ChildNode$, () => [[[\"Item1\", GroupNode_$reflection()], [\"Item2\", CurrencyValue_$reflection()]], [[\"Item1\", AssetInfo_$reflection()], [\"Item2\", CurrencyValue_$reflection()]], [[\"Item1\", Cashflow_$reflection()], [\"Item2\", CurrencyValue_$reflection()]]]);\n}\n\nexport class Cashflow extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Standard\", \"Automatic\"];\n }\n}\n\nexport function Cashflow_$reflection() {\n return union_type(\"Omnicv.Shared.FinancialAPI.Cashflow\", [], Cashflow, () => [[[\"Item\", CashflowInfo_$reflection()]], [[\"Item\", AutomaticCashflow_$reflection()]]]);\n}\n\nfunction noneOrPred(pred, value) {\n if (value == null) {\n return true;\n }\n else {\n return pred(value_10(value));\n }\n}\n\nfunction stringFilter(str, filter) {\n return noneOrPred((value) => (str.toLocaleLowerCase().indexOf(value.toLocaleLowerCase()) >= 0), filter);\n}\n\nfunction stringsFilter(strs, filter) {\n return exists((str) => stringFilter(str, filter), strs);\n}\n\nexport class EntryFilter extends Record {\n constructor(Currency, Content, AssetType, CashflowType) {\n super();\n this.Currency = Currency;\n this.Content = Content;\n this.AssetType = AssetType;\n this.CashflowType = CashflowType;\n }\n}\n\nexport function EntryFilter_$reflection() {\n return record_type(\"Omnicv.Shared.FinancialAPI.EntryFilter\", [], EntryFilter, () => [[\"Currency\", option_type(string_type)], [\"Content\", option_type(string_type)], [\"AssetType\", option_type(enum_type(\"Omnicv.Shared.FinancialAPI.AssetType\", int32_type, [[\"Cash\", 0], [\"CashAccount\", 1], [\"FinancialInstrument\", 2], [\"RealEstate\", 7], [\"Loan\", 9], [\"Debt\", 100]]))], [\"CashflowType\", option_type(enum_type(\"Omnicv.Shared.FinancialAPI.CashflowType\", int32_type, [[\"Income\", 1], [\"Expense\", 2]]))]]);\n}\n\nexport function EntryFilter_get_Empty() {\n return new EntryFilter(undefined, undefined, undefined, undefined);\n}\n\nexport function EntryFilter__Match_4FDF7BFC(this$, node) {\n return forAll((x) => x, singleton(stringsFilter([node.Name, defaultArg(node.Notes, \"\")], this$.Content)));\n}\n\nexport function EntryFilter__Match_Z1534E064(this$, node) {\n return EntryFilter__Match_4FDF7BFC(this$, node.Data);\n}\n\nexport function EntryFilter__Match_Z6FD9FBA3(this$, asset) {\n return forAll((x) => x, ofArray([stringFilter(asset.Currency, this$.Currency), stringsFilter([asset.Name, defaultArg(asset.Notes, \"\")], this$.Content), noneOrPred((value_1) => (value_1 === asset.AssetType), this$.AssetType)]));\n}\n\nexport function EntryFilter__Match_13C44C26(this$, cashflow) {\n return forAll((x) => x, ofArray([stringFilter(cashflow.Currency, this$.Currency), stringsFilter([cashflow.Name, defaultArg(cashflow.Notes, \"\")], this$.Content), noneOrPred((value_1) => (value_1 === cashflow.CashflowType), this$.CashflowType)]));\n}\n\nexport function EntryFilter__Match_Z2451782B(this$, cashflow) {\n return forAll((x) => x, ofArray([stringFilter(cashflow.Currency, this$.Currency), stringFilter(cashflow.Name, this$.Content), noneOrPred((value) => (value === cashflow.CashflowType), this$.CashflowType)]));\n}\n\nexport function EntryFilter__Match_6E47A7A8(this$, cashflow) {\n if (cashflow.tag === 1) {\n return EntryFilter__Match_Z2451782B(this$, cashflow.fields[0]);\n }\n else {\n return EntryFilter__Match_13C44C26(this$, cashflow.fields[0]);\n }\n}\n\nexport class FinancialHierarchy extends Record {\n constructor(Groups, Assets, Cashflows, LatestValues, FxRates, DisplayCurrency) {\n super();\n this.Groups = Groups;\n this.Assets = Assets;\n this.Cashflows = Cashflows;\n this.LatestValues = LatestValues;\n this.FxRates = FxRates;\n this.DisplayCurrency = DisplayCurrency;\n }\n}\n\nexport function FinancialHierarchy_$reflection() {\n return record_type(\"Omnicv.Shared.FinancialAPI.FinancialHierarchy\", [], FinancialHierarchy, () => [[\"Groups\", list_type(Group_$reflection())], [\"Assets\", list_type(AssetInfo_$reflection())], [\"Cashflows\", list_type(CashflowInfo_$reflection())], [\"LatestValues\", class_type(\"Microsoft.FSharp.Collections.FSharpMap`2\", [int64_type, tuple_type(class_type(\"System.DateTime\"), AssetValueRecord_$reflection())])], [\"FxRates\", class_type(\"Microsoft.FSharp.Collections.FSharpMap`2\", [tuple_type(string_type, string_type), decimal_type])], [\"DisplayCurrency\", string_type]]);\n}\n\nexport function FinancialHierarchy__BuildMapTree_Z59A20369(this$, filter) {\n return ofList(map((t) => [t, FinancialHierarchy__BuildTree(this$, t, filter)], ofArray([1, 2])), {\n Compare: comparePrimitives,\n });\n}\n\nexport function FinancialHierarchy__BuildTree(this$, groupType, filter) {\n const hasFilter = !equals(filter, EntryFilter_get_Empty());\n const groupMapping = ofList(List_groupBy((group_1) => group_1.ParentId, filter_2((cashflow) => EntryFilter__Match_4FDF7BFC(filter, cashflow), filter_2((group) => (group.GroupType === groupType), this$.Groups)), {\n Equals: equals,\n GetHashCode: structuralHash,\n }), {\n Compare: compare_1,\n });\n const assetMappings = ofList(List_groupBy((asset) => asset.GroupId, filter_2((cashflow_1) => EntryFilter__Match_Z6FD9FBA3(filter, cashflow_1), this$.Assets), {\n Equals: equals_1,\n GetHashCode: bigintHash,\n }), {\n Compare: compare_2,\n });\n const cashflowMappings = ofList(List_groupBy((cashflow_3) => cashflow_3.GroupId, filter_2((cashflow_2) => EntryFilter__Match_13C44C26(filter, cashflow_2), this$.Cashflows), {\n Equals: equals_1,\n GetHashCode: bigintHash,\n }), {\n Compare: compare_2,\n });\n const sumCurrencyValues = (targetCurrency, values) => sum(map((value) => {\n if (targetCurrency === value.Currency) {\n return value.Value;\n }\n else {\n return op_Multiply(value.Value, FSharpMap__get_Item(this$.FxRates, [value.Currency, targetCurrency]));\n }\n }, values), {\n GetZero: () => (new Decimal(\"0\")),\n Add: op_Addition,\n });\n const build = (parentDisplayCurrency, groupNode) => {\n let group_2, matchValue, list_12;\n const group_3 = groupNode.Data;\n const displayCurrency = defaultArg(group_3.DisplayCurrency, parentDisplayCurrency);\n const children = append((group_2 = group_3, (matchValue = (group_2.GroupType | 0), (matchValue === 1) ? map((asset_1) => (new ChildNode$(1, [asset_1, AssetInfo__GetValue_Z33CCF5CA(asset_1, tryFind(asset_1.Id, this$.LatestValues))])), FSharpMap__ContainsKey(assetMappings, group_2.Id) ? FSharpMap__get_Item(assetMappings, group_2.Id) : empty()) : ((matchValue === 2) ? map((cashflow_4) => (new ChildNode$(2, [new Cashflow(0, [cashflow_4]), adjustForFrequency(CashflowInfo__GetValue(cashflow_4), cashflow_4.Frequency, 3)])), FSharpMap__ContainsKey(cashflowMappings, group_2.Id) ? FSharpMap__get_Item(cashflowMappings, group_2.Id) : empty()) : toFail(printf(\"Unsupported group type %A\"))(matchValue)))), map((tupledArg_1) => (new ChildNode$(0, [tupledArg_1[0], tupledArg_1[1]])), filter_2((tupledArg) => !(isEmpty(tupledArg[0].Children) && hasFilter), (list_12 = map((group_4) => (new GroupNode(group_4, empty())), FSharpMap__ContainsKey(groupMapping, group_3.Id) ? FSharpMap__get_Item(groupMapping, group_3.Id) : empty()), map(curry2(build)(displayCurrency), list_12)))));\n return [new GroupNode(groupNode.Data, children), new CurrencyValue(displayCurrency, sumCurrencyValues(displayCurrency, map((child) => {\n switch (child.tag) {\n case 1:\n return child.fields[1];\n case 2:\n return child.fields[1];\n default:\n return child.fields[1];\n }\n }, children)))];\n };\n let finalTL;\n const list_17 = map((group_5) => (new GroupNode(group_5, empty())), (FSharpMap__get_Count(groupMapping) > 0) ? FSharpMap__get_Item(groupMapping, undefined) : empty());\n finalTL = map(curry2(build)(this$.DisplayCurrency), list_17);\n return [finalTL, new CurrencyValue(this$.DisplayCurrency, sumCurrencyValues(this$.DisplayCurrency, map((tuple) => tuple[1], finalTL)))];\n}\n\nexport class FinancialService extends Record {\n constructor(GetHierarchy, ImportHierarchyData, GetAssetValuesForChart, AddGroup, EditGroup, DeleteGroup, AddAsset, EditAsset, DeleteAsset, GetAsset, AddCashflow, EditCashflow, DeleteCashflow) {\n super();\n this.GetHierarchy = GetHierarchy;\n this.ImportHierarchyData = ImportHierarchyData;\n this.GetAssetValuesForChart = GetAssetValuesForChart;\n this.AddGroup = AddGroup;\n this.EditGroup = EditGroup;\n this.DeleteGroup = DeleteGroup;\n this.AddAsset = AddAsset;\n this.EditAsset = EditAsset;\n this.DeleteAsset = DeleteAsset;\n this.GetAsset = GetAsset;\n this.AddCashflow = AddCashflow;\n this.EditCashflow = EditCashflow;\n this.DeleteCashflow = DeleteCashflow;\n }\n}\n\nexport function FinancialService_$reflection() {\n return record_type(\"Omnicv.Shared.FinancialAPI.FinancialService\", [], FinancialService, () => [[\"GetHierarchy\", lambda_type(int32_type, lambda_type(string_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [FinancialHierarchy_$reflection()])))], [\"ImportHierarchyData\", lambda_type(int32_type, lambda_type(array_type(uint8_type), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))], [\"GetAssetValuesForChart\", lambda_type(int32_type, lambda_type(string_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(DataPoint_$reflection())])))], [\"AddGroup\", lambda_type(Group_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [int64_type]))], [\"EditGroup\", lambda_type(Group_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [Group_$reflection()]))], [\"DeleteGroup\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))], [\"AddAsset\", lambda_type(AssetInfo_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [int64_type]))], [\"EditAsset\", lambda_type(AssetInfo_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [AssetInfo_$reflection()]))], [\"DeleteAsset\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))], [\"GetAsset\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [AssetInfo_$reflection()])))], [\"AddCashflow\", lambda_type(CashflowInfo_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [int64_type]))], [\"EditCashflow\", lambda_type(CashflowInfo_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [CashflowInfo_$reflection()]))], [\"DeleteCashflow\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type])))]]);\n}\n\nexport class FinancialModule {\n constructor() {\n this.initialTimestamp = parse(\"2021-12-14T21:51:00\");\n this.latestTimestamp = this.initialTimestamp;\n }\n get Details() {\n const this$ = this;\n return new ProductInformation(\"Omnicv.Financial\", this$.initialTimestamp, this$.latestTimestamp, \"Financial\", \"Track your financial data: expenses, wealth, pensions etc.\", empty(), FinancialModule__get_CurrentVersion(this$), singleton(defaultAuthors), defaultContacts, defaultWeb, undefined, undefined, new Changelog(1, [FinancialModule__get_Changelog(this$)]));\n }\n RegisteredTypes() {\n return singleton(AssetValueRecord_$reflection());\n }\n}\n\nexport function FinancialModule_$reflection() {\n return class_type(\"Omnicv.Shared.FinancialAPI.FinancialModule\", undefined, FinancialModule);\n}\n\nexport function FinancialModule_$ctor() {\n return new FinancialModule();\n}\n\nexport function FinancialModule__get_Changelog(this$) {\n return singleton(new ChangelogEntry(this$.initialTimestamp, new Version(1, 0, 1, undefined), \"Initial release\"));\n}\n\nexport function FinancialModule__get_CurrentVersion(this$) {\n return head(FinancialModule__get_Changelog(this$)).Version;\n}\n\n","import { tryFind, ofList } from \"../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { ofArray, partition, find, length as length_1, map } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { comparePrimitives } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { class_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { length } from \"../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { ofList as ofList_1 } from \"../fable_modules/fable-library-js.4.24.0/Set.js\";\nimport { FSharpResult$2 } from \"../fable_modules/fable-library-js.4.24.0/Result.js\";\nimport { value } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { DiaryModule_$ctor } from \"../modules/Omnicv.Diary.Shared/DiaryAPI.js\";\nimport { PhysicalModule_$ctor } from \"./PhysicalAPI.js\";\nimport { FinancialModule_$ctor } from \"./FinancialAPI.js\";\nimport { FitnessModule_$ctor } from \"./FitnessAPI.js\";\n\nexport class Registry$1 {\n constructor(init) {\n this.modules = init;\n this.lookup = ofList(map((m) => {\n let copyOfStruct;\n return [((copyOfStruct = m, copyOfStruct.Details)).Name, m];\n }, init), {\n Compare: comparePrimitives,\n });\n }\n}\n\nexport function Registry$1_$reflection(gen0) {\n return class_type(\"Omnicv.Shared.Registration.Registry`1\", [gen0], Registry$1);\n}\n\nexport function Registry$1_$ctor_Z1FA48BC9(init) {\n return new Registry$1(init);\n}\n\nexport function Registry$1__get_Modules(this$) {\n return this$.modules;\n}\n\nexport function Registry$1__get_Validate(this$) {\n if (length(ofList_1(map((m) => m.Details.Name.toLowerCase(), this$.modules), {\n Compare: comparePrimitives,\n })) !== length_1(this$.modules)) {\n return new FSharpResult$2(1, [\"There are duplicate modules\"]);\n }\n else {\n return new FSharpResult$2(0, [undefined]);\n }\n}\n\nexport function Registry$1__GetModule_Z721C83C5(this$, name) {\n return find((m) => {\n let copyOfStruct;\n return ((copyOfStruct = m, copyOfStruct.Details)).Name === name;\n }, Registry$1__get_Modules(this$));\n}\n\nexport function Registry$1__MatchModules_7F866359(this$, modules) {\n const patternInput = partition((tupledArg) => (tupledArg[1] != null), map((m) => [m, tryFind(m, this$.lookup)], modules));\n return [map((tupledArg_1) => value(tupledArg_1[1]), patternInput[0]), map((tupledArg_2) => tupledArg_2[0], patternInput[1])];\n}\n\nexport const sharedRegistry = Registry$1_$ctor_Z1FA48BC9(ofArray([DiaryModule_$ctor(), PhysicalModule_$ctor(), FinancialModule_$ctor(), FitnessModule_$ctor()]));\n\n","import { some, value } from \"../fable-library-js.4.24.0/Option.js\";\n\nexport function tuple(a, b) {\n let matchResult, a_1, b_1;\n if (a != null) {\n if (b != null) {\n matchResult = 0;\n a_1 = value(a);\n b_1 = value(b);\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return [a_1, b_1];\n default:\n return undefined;\n }\n}\n\nexport function ofFunc(f, arg) {\n try {\n return some(f(arg));\n }\n catch (matchValue) {\n return undefined;\n }\n}\n\n","import { FSharpRef, Record } from \"../fable-library-js.4.24.0/Types.js\";\nimport { record_type, class_type, list_type, string_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { ofArray, collect, map as map_1, concat, singleton, tail, cons, empty, head, isEmpty } from \"../fable-library-js.4.24.0/List.js\";\nimport { FSharpResult$2 } from \"../fable-library-js.4.24.0/Result.js\";\nimport { tryParse } from \"../fable-library-js.4.24.0/Int32.js\";\nimport { substring, isNullOrEmpty, split, join } from \"../fable-library-js.4.24.0/String.js\";\nimport { ofSeq, empty as empty_1, tryFind } from \"../fable-library-js.4.24.0/Map.js\";\nimport { some, bind } from \"../fable-library-js.4.24.0/Option.js\";\nimport { equalsWith, item } from \"../fable-library-js.4.24.0/Array.js\";\nimport { ofFunc, tuple } from \"./prelude.fs.js\";\nimport { comparePrimitives, defaultOf } from \"../fable-library-js.4.24.0/Util.js\";\nimport { map as map_2, choose } from \"../fable-library-js.4.24.0/Seq.js\";\n\nexport class State$1 extends Record {\n constructor(visited, unvisited, args, value) {\n super();\n this.visited = visited;\n this.unvisited = unvisited;\n this.args = args;\n this.value = value;\n }\n}\n\nexport function State$1_$reflection(gen0) {\n return record_type(\"Elmish.UrlParser.State`1\", [gen0], State$1, () => [[\"visited\", list_type(string_type)], [\"unvisited\", list_type(string_type)], [\"args\", class_type(\"Microsoft.FSharp.Collections.FSharpMap`2\", [string_type, string_type])], [\"value\", gen0]]);\n}\n\nexport function StateModule_mkState(visited, unvisited, args, value) {\n return new State$1(visited, unvisited, args, value);\n}\n\nexport function StateModule_map(f, _arg) {\n return new State$1(_arg.visited, _arg.unvisited, _arg.args, f(_arg.value));\n}\n\nexport function custom(tipe, stringToSomething) {\n return (_arg) => {\n const unvisited = _arg.unvisited;\n if (!isEmpty(unvisited)) {\n const next = head(unvisited);\n const matchValue = stringToSomething(next);\n if (matchValue.tag === 1) {\n return empty();\n }\n else {\n return singleton(StateModule_mkState(cons(next, _arg.visited), tail(unvisited), _arg.args, _arg.value(matchValue.fields[0])));\n }\n }\n else {\n return empty();\n }\n };\n}\n\nexport function str(state) {\n return custom(\"string\", (ResultValue) => (new FSharpResult$2(0, [ResultValue])))(state);\n}\n\nexport function i32(state) {\n return custom(\"i32\", (arg_1) => {\n let _arg;\n let outArg = 0;\n _arg = [tryParse(arg_1, 511, false, 32, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n return _arg[0] ? (new FSharpResult$2(0, [_arg[1]])) : (new FSharpResult$2(1, [\"Can\\'t parse int\"]));\n })(state);\n}\n\nexport function s(str_1) {\n return (_arg) => {\n const unvisited = _arg.unvisited;\n if (!isEmpty(unvisited)) {\n const next = head(unvisited);\n if (next === str_1) {\n return singleton(StateModule_mkState(cons(next, _arg.visited), tail(unvisited), _arg.args, _arg.value));\n }\n else {\n return empty();\n }\n }\n else {\n return empty();\n }\n };\n}\n\nexport function remaining(s_1) {\n return singleton(StateModule_mkState(concat([s_1.visited, s_1.unvisited]), empty(), s_1.args, s_1.value(join(\"/\", s_1.unvisited))));\n}\n\nexport function map(subValue, parse_1) {\n return (_arg) => map_1((arg10$0040) => StateModule_map(_arg.value, arg10$0040), parse_1(new State$1(_arg.visited, _arg.unvisited, _arg.args, subValue)));\n}\n\nexport function oneOf(parsers, state) {\n return collect((parser) => parser(state), parsers);\n}\n\nexport function top(state) {\n return singleton(state);\n}\n\nexport function customParam(key, func) {\n return (_arg) => {\n const args = _arg.args;\n return singleton(StateModule_mkState(_arg.visited, _arg.unvisited, args, _arg.value(func(tryFind(key, args)))));\n };\n}\n\nexport function stringParam(name) {\n return customParam(name, (x) => x);\n}\n\nexport const intParamHelp = (option) => bind((value) => {\n let matchValue;\n let outArg = 0;\n matchValue = [tryParse(value, 511, false, 32, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n return undefined;\n }\n}, option);\n\nexport function intParam(name) {\n return customParam(name, intParamHelp);\n}\n\nexport function parseHelp(states_mut) {\n parseHelp:\n while (true) {\n const states = states_mut;\n if (!isEmpty(states)) {\n const state = head(states);\n const matchValue = state.unvisited;\n let matchResult;\n if (!isEmpty(matchValue)) {\n if (head(matchValue) === \"\") {\n if (isEmpty(tail(matchValue))) {\n matchResult = 1;\n }\n else {\n matchResult = 2;\n }\n }\n else {\n matchResult = 2;\n }\n }\n else {\n matchResult = 0;\n }\n switch (matchResult) {\n case 0:\n return some(state.value);\n case 1:\n return some(state.value);\n default: {\n states_mut = tail(states);\n continue parseHelp;\n }\n }\n }\n else {\n return undefined;\n }\n break;\n }\n}\n\nexport function splitUrl(url) {\n const matchValue = ofArray(url.split(\"/\"));\n let matchResult, segments, segments_1;\n if (!isEmpty(matchValue)) {\n if (head(matchValue) === \"\") {\n matchResult = 0;\n segments = tail(matchValue);\n }\n else {\n matchResult = 1;\n segments_1 = matchValue;\n }\n }\n else {\n matchResult = 1;\n segments_1 = matchValue;\n }\n switch (matchResult) {\n case 0:\n return segments;\n default:\n return segments_1;\n }\n}\n\n/**\n * parse a given part of the location\n */\nexport function parse(parser, url, args) {\n return parseHelp(parser(new State$1(empty(), splitUrl(url), args, (x) => x)));\n}\n\nexport function toKeyValuePair(segment) {\n let key;\n const matchValue = split(segment, [\"=\"], undefined, 0);\n let matchResult;\n if (!equalsWith((x, y) => (x === y), matchValue, defaultOf()) && (matchValue.length === 2)) {\n matchResult = 0;\n }\n else if (!equalsWith((x_1, y_1) => (x_1 === y_1), matchValue, defaultOf()) && (matchValue.length === 1)) {\n if ((key = item(0, matchValue), segment.startsWith(key))) {\n matchResult = 1;\n }\n else {\n matchResult = 2;\n }\n }\n else {\n matchResult = 2;\n }\n switch (matchResult) {\n case 0: {\n const value = item(1, matchValue);\n return tuple(ofFunc(decodeURIComponent, item(0, matchValue)), ofFunc(decodeURIComponent, value));\n }\n case 1:\n return tuple(ofFunc(decodeURIComponent, item(0, matchValue)), \"\");\n default:\n return undefined;\n }\n}\n\nexport function parseParams(querystring) {\n if (isNullOrEmpty(querystring)) {\n return empty_1({\n Compare: comparePrimitives,\n });\n }\n else {\n return ofSeq(choose((x_1) => x_1, map_2(toKeyValuePair, split(querystring.startsWith(\"?\") ? substring(querystring, 1) : querystring, [\"&\"], undefined, 0))), {\n Compare: comparePrimitives,\n });\n }\n}\n\nexport function parseUrl(parser, url) {\n const pos = url.indexOf(\"?\") | 0;\n if (pos >= 0) {\n return parse(parser, substring(url, 0, pos), parseParams(substring(url, pos + 1)));\n }\n else {\n return parse(parser, url, empty_1({\n Compare: comparePrimitives,\n }));\n }\n}\n\n","import { filter, partition, foldBack, choose, append, iterate, cons, map, concat, empty } from \"../fable-library-js.4.24.0/List.js\";\nimport { join } from \"../fable-library-js.4.24.0/String.js\";\nimport { compare, disposeSafe } from \"../fable-library-js.4.24.0/Util.js\";\nimport { ofList, add, contains, empty as empty_1 } from \"../fable-library-js.4.24.0/Set.js\";\n\n/**\n * None - no subscriptions, also known as `[]`\n */\nexport function Sub_none() {\n return empty();\n}\n\n/**\n * Aggregate multiple subscriptions\n */\nexport function Sub_batch(subs) {\n return concat(subs);\n}\n\n/**\n * When emitting the message, map to another type.\n * To avoid ID conflicts with other components, scope SubIds with a prefix.\n */\nexport function Sub_map(idPrefix, f, sub) {\n return map((tupledArg) => [cons(idPrefix, tupledArg[0]), (dispatch) => tupledArg[1]((arg) => {\n dispatch(f(arg));\n })], sub);\n}\n\nexport function Sub_Internal_SubId_toString(subId) {\n return join(\"/\", subId);\n}\n\nexport function Sub_Internal_Fx_warnDupe(onError, subId) {\n const ex = new Error(\"Duplicate SubId\");\n return onError([\"Duplicate SubId: \" + Sub_Internal_SubId_toString(subId), ex]);\n}\n\nexport function Sub_Internal_Fx_tryStop(onError, subId, sub) {\n try {\n disposeSafe(sub);\n }\n catch (ex) {\n onError([\"Error stopping subscription: \" + Sub_Internal_SubId_toString(subId), ex]);\n }\n}\n\nexport function Sub_Internal_Fx_tryStart(onError, dispatch, subId, start) {\n try {\n return [subId, start(dispatch)];\n }\n catch (ex) {\n onError([\"Error starting subscription: \" + Sub_Internal_SubId_toString(subId), ex]);\n return undefined;\n }\n}\n\nexport function Sub_Internal_Fx_stop(onError, subs) {\n iterate((tupledArg) => {\n Sub_Internal_Fx_tryStop(onError, tupledArg[0], tupledArg[1]);\n }, subs);\n}\n\nexport function Sub_Internal_Fx_change(onError, dispatch, dupes, toStop, toKeep, toStart) {\n iterate((subId) => {\n Sub_Internal_Fx_warnDupe(onError, subId);\n }, dupes);\n iterate((tupledArg) => {\n Sub_Internal_Fx_tryStop(onError, tupledArg[0], tupledArg[1]);\n }, toStop);\n return append(toKeep, choose((tupledArg_1) => Sub_Internal_Fx_tryStart(onError, dispatch, tupledArg_1[0], tupledArg_1[1]), toStart));\n}\n\nexport function Sub_Internal_NewSubs_init() {\n return [empty(), empty_1({\n Compare: compare,\n }), empty()];\n}\n\nexport function Sub_Internal_NewSubs__newSubs() {\n return Sub_Internal_NewSubs_init()[2];\n}\n\nexport function Sub_Internal_NewSubs__newKeys() {\n return Sub_Internal_NewSubs_init()[1];\n}\n\nexport function Sub_Internal_NewSubs__dupes() {\n return Sub_Internal_NewSubs_init()[0];\n}\n\nexport function Sub_Internal_NewSubs_update(subId, start, dupes, newKeys, newSubs) {\n if (contains(subId, newKeys)) {\n return [cons(subId, dupes), newKeys, newSubs];\n }\n else {\n return [dupes, add(subId, newKeys), cons([subId, start], newSubs)];\n }\n}\n\nexport function Sub_Internal_NewSubs_calculate(subs) {\n return foldBack((tupledArg, tupledArg_1) => Sub_Internal_NewSubs_update(tupledArg[0], tupledArg[1], tupledArg_1[0], tupledArg_1[1], tupledArg_1[2]), subs, Sub_Internal_NewSubs_init());\n}\n\nexport const Sub_Internal_empty = empty();\n\nexport function Sub_Internal_diff(activeSubs, sub) {\n const keys = ofList(map((tuple) => tuple[0], activeSubs), {\n Compare: compare,\n });\n const patternInput = Sub_Internal_NewSubs_calculate(sub);\n const newKeys = patternInput[1];\n const dupes = patternInput[0];\n if (keys.Equals(newKeys)) {\n return [dupes, empty(), activeSubs, empty()];\n }\n else {\n const patternInput_1 = partition((tupledArg) => contains(tupledArg[0], newKeys), activeSubs);\n return [dupes, patternInput_1[1], patternInput_1[0], filter((tupledArg_1) => !contains(tupledArg_1[0], keys), patternInput[2])];\n }\n}\n\n","import { compare } from \"./Util.js\";\nimport { unfold, delay } from \"./Seq.js\";\nimport { toUInt64, toInt64, op_Addition, fromZero } from \"./BigInt.js\";\nimport { op_Addition as op_Addition_1, fromParts } from \"./Decimal.js\";\nexport function makeRangeStepFunction(step, stop, zero, add) {\n const stepComparedWithZero = compare(step, zero) | 0;\n if (stepComparedWithZero === 0) {\n throw new Error(\"The step of a range cannot be zero\");\n }\n const stepGreaterThanZero = stepComparedWithZero > 0;\n return (x) => {\n const comparedWithLast = compare(x, stop) | 0;\n return ((stepGreaterThanZero && (comparedWithLast <= 0)) ? true : (!stepGreaterThanZero && (comparedWithLast >= 0))) ? [x, add(x, step)] : undefined;\n };\n}\nexport function integralRangeStep(start, step, stop, zero, add) {\n const stepFn = makeRangeStepFunction(step, stop, zero, add);\n return delay(() => unfold(stepFn, start));\n}\nexport function rangeBigInt(start, step, stop) {\n return integralRangeStep(start, step, stop, fromZero(), op_Addition);\n}\nexport function rangeDecimal(start, step, stop) {\n return integralRangeStep(start, step, stop, fromParts(0, 0, 0, false, 0), op_Addition_1);\n}\nexport function rangeDouble(start, step, stop) {\n return integralRangeStep(start, step, stop, 0, (x, y) => (x + y));\n}\nexport function rangeInt64(start, step, stop) {\n return integralRangeStep(start, step, stop, 0n, (x, y) => toInt64(op_Addition(x, y)));\n}\nexport function rangeUInt64(start, step, stop) {\n return integralRangeStep(start, step, stop, 0n, (x, y) => toUInt64(op_Addition(x, y)));\n}\nexport function rangeChar(start, stop) {\n const intStop = ~~stop.charCodeAt(0) | 0;\n return delay(() => unfold((c) => {\n if (c <= intStop) {\n return [String.fromCharCode(c), c + 1];\n }\n else {\n return undefined;\n }\n }, ~~start.charCodeAt(0)));\n}\n","import { Union } from \"../fable-library-js.4.24.0/Types.js\";\nimport { class_type, union_type, int32_type, array_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { setItem, item as item_1, fill } from \"../fable-library-js.4.24.0/Array.js\";\nimport { max } from \"../fable-library-js.4.24.0/Double.js\";\nimport { some } from \"../fable-library-js.4.24.0/Option.js\";\nimport { singleton, collect, take, skip, append, delay } from \"../fable-library-js.4.24.0/Seq.js\";\nimport { defaultOf } from \"../fable-library-js.4.24.0/Util.js\";\nimport { rangeDouble } from \"../fable-library-js.4.24.0/Range.js\";\n\nexport class RingState$1 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Writable\", \"ReadWritable\"];\n }\n}\n\nexport function RingState$1_$reflection(gen0) {\n return union_type(\"Elmish.RingState`1\", [gen0], RingState$1, () => [[[\"wx\", array_type(gen0)], [\"ix\", int32_type]], [[\"rw\", array_type(gen0)], [\"wix\", int32_type], [\"rix\", int32_type]]]);\n}\n\nexport class RingBuffer$1 {\n constructor(size) {\n this.state = (new RingState$1(0, [fill(new Array(max(size, 10)), 0, max(size, 10), null), 0]));\n }\n}\n\nexport function RingBuffer$1_$reflection(gen0) {\n return class_type(\"Elmish.RingBuffer`1\", [gen0], RingBuffer$1);\n}\n\nexport function RingBuffer$1_$ctor_Z524259A4(size) {\n return new RingBuffer$1(size);\n}\n\nexport function RingBuffer$1__Pop(__) {\n const matchValue = __.state;\n if (matchValue.tag === 1) {\n const wix = matchValue.fields[1] | 0;\n const rix = matchValue.fields[2] | 0;\n const items = matchValue.fields[0];\n const rix$0027 = ((rix + 1) % items.length) | 0;\n if (rix$0027 === wix) {\n __.state = (new RingState$1(0, [items, wix]));\n }\n else {\n __.state = (new RingState$1(1, [items, wix, rix$0027]));\n }\n return some(item_1(rix, items));\n }\n else {\n return undefined;\n }\n}\n\nexport function RingBuffer$1__Push_2B595(__, item) {\n const matchValue = __.state;\n if (matchValue.tag === 1) {\n const wix_1 = matchValue.fields[1] | 0;\n const rix = matchValue.fields[2] | 0;\n const items_1 = matchValue.fields[0];\n setItem(items_1, wix_1, item);\n const wix$0027 = ((wix_1 + 1) % items_1.length) | 0;\n if (wix$0027 === rix) {\n __.state = (new RingState$1(1, [RingBuffer$1__doubleSize(__, rix, items_1), items_1.length, 0]));\n }\n else {\n __.state = (new RingState$1(1, [items_1, wix$0027, rix]));\n }\n }\n else {\n const ix = matchValue.fields[1] | 0;\n const items = matchValue.fields[0];\n setItem(items, ix, item);\n const wix = ((ix + 1) % items.length) | 0;\n __.state = (new RingState$1(1, [items, wix, ix]));\n }\n}\n\nexport function RingBuffer$1__doubleSize(this$, ix, items) {\n return Array.from(delay(() => append(skip(ix, items), delay(() => append(take(ix, items), delay(() => collect((matchValue) => singleton(defaultOf()), rangeDouble(0, 1, items.length))))))));\n}\n\n","import { Record } from \"../fable-library-js.4.24.0/Types.js\";\nimport { record_type, bool_type, class_type, string_type, tuple_type, list_type, lambda_type, unit_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { Sub_Internal_Fx_change, Sub_Internal_diff, Sub_Internal_Fx_stop, Sub_Internal_empty, Sub_none } from \"./sub.fs.js\";\nimport { curry3, curry2, uncurry2 } from \"../fable-library-js.4.24.0/Util.js\";\nimport { Log_toConsole, Log_onError } from \"./prelude.fs.js\";\nimport { Cmd_exec, Cmd_none } from \"./cmd.fs.js\";\nimport { map as map_1 } from \"../fable-library-js.4.24.0/List.js\";\nimport { RingBuffer$1__Pop, RingBuffer$1__Push_2B595, RingBuffer$1_$ctor_Z524259A4 } from \"./ring.fs.js\";\nimport { value as value_2 } from \"../fable-library-js.4.24.0/Option.js\";\nimport { printf, toText } from \"../fable-library-js.4.24.0/String.js\";\n\nexport class Program$4 extends Record {\n constructor(init, update, subscribe, view, setState, onError, termination) {\n super();\n this.init = init;\n this.update = update;\n this.subscribe = subscribe;\n this.view = view;\n this.setState = setState;\n this.onError = onError;\n this.termination = termination;\n }\n}\n\nexport function Program$4_$reflection(gen0, gen1, gen2, gen3) {\n return record_type(\"Elmish.Program`4\", [gen0, gen1, gen2, gen3], Program$4, () => [[\"init\", lambda_type(gen0, tuple_type(gen1, list_type(lambda_type(lambda_type(gen2, unit_type), unit_type))))], [\"update\", lambda_type(gen2, lambda_type(gen1, tuple_type(gen1, list_type(lambda_type(lambda_type(gen2, unit_type), unit_type)))))], [\"subscribe\", lambda_type(gen1, list_type(tuple_type(list_type(string_type), lambda_type(lambda_type(gen2, unit_type), class_type(\"System.IDisposable\")))))], [\"view\", lambda_type(gen1, lambda_type(lambda_type(gen2, unit_type), gen3))], [\"setState\", lambda_type(gen1, lambda_type(lambda_type(gen2, unit_type), unit_type))], [\"onError\", lambda_type(tuple_type(string_type, class_type(\"System.Exception\")), unit_type)], [\"termination\", tuple_type(lambda_type(gen2, bool_type), lambda_type(gen1, unit_type))]]);\n}\n\n/**\n * Typical program, new commands are produced by `init` and `update` along with the new state.\n */\nexport function ProgramModule_mkProgram(init, update, view) {\n return new Program$4(init, update, (_arg) => Sub_none(), view, uncurry2((model) => {\n const f1 = curry2(view)(model);\n return (arg) => {\n f1(arg);\n };\n }), (tupledArg) => {\n Log_onError(tupledArg[0], tupledArg[1]);\n }, [(_arg_1) => false, (value_1) => {\n }]);\n}\n\n/**\n * Simple program that produces only new state with `init` and `update`.\n */\nexport function ProgramModule_mkSimple(init, update, view) {\n return new Program$4((arg) => [init(arg), Cmd_none()], uncurry2((msg) => {\n const f1_1 = curry2(update)(msg);\n return (arg_1) => [f1_1(arg_1), Cmd_none()];\n }), (_arg) => Sub_none(), view, uncurry2((model) => {\n const f1_2 = curry2(view)(model);\n return (arg_2) => {\n f1_2(arg_2);\n };\n }), (tupledArg) => {\n Log_onError(tupledArg[0], tupledArg[1]);\n }, [(_arg_1) => false, (value_1) => {\n }]);\n}\n\n/**\n * Subscribe to external source of events, overrides existing subscription.\n * Return the subscriptions that should be active based on the current model.\n * Subscriptions will be started or stopped automatically to match.\n */\nexport function ProgramModule_withSubscription(subscribe, program) {\n return new Program$4(program.init, program.update, subscribe, program.view, program.setState, program.onError, program.termination);\n}\n\n/**\n * Map existing subscription to external source of events.\n */\nexport function ProgramModule_mapSubscription(map, program) {\n return new Program$4(program.init, program.update, curry2(map)(program.subscribe), program.view, program.setState, program.onError, program.termination);\n}\n\n/**\n * Trace all the updates to the console\n */\nexport function ProgramModule_withConsoleTrace(program) {\n return new Program$4((arg) => {\n const patternInput = program.init(arg);\n const initModel = patternInput[0];\n Log_toConsole(\"Initial state:\", initModel);\n return [initModel, patternInput[1]];\n }, (msg, model) => {\n Log_toConsole(\"New message:\", msg);\n const patternInput_1 = program.update(msg, model);\n const newModel = patternInput_1[0];\n Log_toConsole(\"Updated state:\", newModel);\n return [newModel, patternInput_1[1]];\n }, (model_1) => {\n const sub = program.subscribe(model_1);\n Log_toConsole(\"Updated subs:\", map_1((tuple) => tuple[0], sub));\n return sub;\n }, program.view, program.setState, program.onError, program.termination);\n}\n\n/**\n * Trace all the messages as they update the model and subscriptions\n */\nexport function ProgramModule_withTrace(trace, program) {\n return new Program$4(program.init, (msg, model) => {\n const patternInput = program.update(msg, model);\n const state = patternInput[0];\n trace(msg, state, map_1((tuple) => tuple[0], program.subscribe(state)));\n return [state, patternInput[1]];\n }, program.subscribe, program.view, program.setState, program.onError, program.termination);\n}\n\n/**\n * Handle dispatch loop exceptions\n */\nexport function ProgramModule_withErrorHandler(onError, program) {\n return new Program$4(program.init, program.update, program.subscribe, program.view, program.setState, onError, program.termination);\n}\n\n/**\n * Exit criteria and the handler, overrides existing.\n */\nexport function ProgramModule_withTermination(predicate, terminate, program) {\n return new Program$4(program.init, program.update, program.subscribe, program.view, program.setState, program.onError, [predicate, terminate]);\n}\n\n/**\n * Map existing criteria and the handler.\n */\nexport function ProgramModule_mapTermination(map, program) {\n return new Program$4(program.init, program.update, program.subscribe, program.view, program.setState, program.onError, map(program.termination));\n}\n\n/**\n * Map existing error handler and return new `Program`\n */\nexport function ProgramModule_mapErrorHandler(map, program) {\n return new Program$4(program.init, program.update, program.subscribe, program.view, program.setState, curry2(map)(program.onError), program.termination);\n}\n\n/**\n * Get the current error handler\n */\nexport function ProgramModule_onError(program) {\n return program.onError;\n}\n\n/**\n * Function to render the view with the latest state\n */\nexport function ProgramModule_withSetState(setState, program) {\n return new Program$4(program.init, program.update, program.subscribe, program.view, setState, program.onError, program.termination);\n}\n\n/**\n * Return the function to render the state\n */\nexport function ProgramModule_setState(program) {\n return curry2(program.setState);\n}\n\n/**\n * Return the view function\n */\nexport function ProgramModule_view(program) {\n return curry2(program.view);\n}\n\n/**\n * Return the init function\n */\nexport function ProgramModule_init(program) {\n return program.init;\n}\n\n/**\n * Return the update function\n */\nexport function ProgramModule_update(program) {\n return curry2(program.update);\n}\n\n/**\n * Map the program type\n */\nexport function ProgramModule_map(mapInit, mapUpdate, mapView, mapSetState, mapSubscribe, mapTermination, program) {\n const init = curry2(mapInit)(program.init);\n const update = curry3(mapUpdate)(curry2(program.update));\n const view = curry3(mapView)(curry2(program.view));\n const setState = curry3(mapSetState)(curry2(program.setState));\n return new Program$4(init, uncurry2(update), curry2(mapSubscribe)(program.subscribe), uncurry2(view), uncurry2(setState), program.onError, mapTermination(program.termination));\n}\n\n/**\n * Start the program loop.\n * syncDispatch: specify how to serialize dispatch calls.\n * arg: argument to pass to the init() function.\n * program: program created with 'mkSimple' or 'mkProgram'.\n */\nexport function ProgramModule_runWithDispatch(syncDispatch, arg, program) {\n let tupledArg_1;\n const patternInput = program.init(arg);\n const model = patternInput[0];\n const sub = program.subscribe(model);\n const patternInput_1 = program.termination;\n const rb = RingBuffer$1_$ctor_Z524259A4(10);\n let reentered = false;\n let state = model;\n let activeSubs = Sub_Internal_empty;\n let terminated = false;\n const dispatch = (msg) => {\n if (!terminated) {\n RingBuffer$1__Push_2B595(rb, msg);\n if (!reentered) {\n reentered = true;\n processMsgs();\n reentered = false;\n }\n }\n };\n const dispatch$0027 = curry2(syncDispatch)(dispatch);\n const processMsgs = () => {\n let tupledArg;\n let nextMsg = RingBuffer$1__Pop(rb);\n while (!terminated && (nextMsg != null)) {\n const msg_1 = value_2(nextMsg);\n try {\n if (patternInput_1[0](msg_1)) {\n Sub_Internal_Fx_stop(program.onError, activeSubs);\n patternInput_1[1](state);\n terminated = true;\n }\n else {\n const patternInput_2 = program.update(msg_1, state);\n const model$0027 = patternInput_2[0];\n const sub$0027 = program.subscribe(model$0027);\n program.setState(model$0027, dispatch$0027);\n activeSubs = ((tupledArg = Sub_Internal_diff(activeSubs, sub$0027), Sub_Internal_Fx_change(program.onError, dispatch$0027, tupledArg[0], tupledArg[1], tupledArg[2], tupledArg[3])));\n Cmd_exec((ex) => {\n program.onError([toText(printf(\"Error handling the message: %A\"))(msg_1), ex]);\n }, dispatch$0027, patternInput_2[1]);\n state = model$0027;\n }\n }\n catch (ex_1) {\n program.onError([toText(printf(\"Unable to process the message: %A\"))(msg_1), ex_1]);\n }\n nextMsg = RingBuffer$1__Pop(rb);\n }\n };\n reentered = true;\n program.setState(model, dispatch$0027);\n activeSubs = ((tupledArg_1 = Sub_Internal_diff(activeSubs, sub), Sub_Internal_Fx_change(program.onError, dispatch$0027, tupledArg_1[0], tupledArg_1[1], tupledArg_1[2], tupledArg_1[3])));\n Cmd_exec((ex_2) => {\n program.onError([toText(printf(\"Error intitializing:\")), ex_2]);\n }, dispatch$0027, patternInput[1]);\n processMsgs();\n reentered = false;\n}\n\n/**\n * Start the single-threaded dispatch loop.\n * arg: argument to pass to the 'init' function.\n * program: program created with 'mkSimple' or 'mkProgram'.\n */\nexport function ProgramModule_runWith(arg, program) {\n ProgramModule_runWithDispatch(uncurry2((x) => x), arg, program);\n}\n\n/**\n * Start the dispatch loop with `unit` for the init() function.\n */\nexport function ProgramModule_run(program) {\n ProgramModule_runWith(undefined, program);\n}\n\n","import { FSharpRef, Union } from \"../fable-library-js.4.24.0/Types.js\";\nimport { union_type, class_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { ofArray, singleton } from \"../fable-library-js.4.24.0/List.js\";\nimport { Cmd_map } from \"../Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { ProgramModule_map } from \"../Fable.Elmish.4.2.0/program.fs.js\";\nimport { Sub_map, Sub_batch } from \"../Fable.Elmish.4.2.0/sub.fs.js\";\n\nexport class Navigable$1 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Change\", \"UserMsg\"];\n }\n}\n\nexport function Navigable$1_$reflection(gen0) {\n return union_type(\"Elmish.Navigation.Navigable`1\", [gen0], Navigable$1, () => [[[\"Item\", class_type(\"Browser.Types.Location\", undefined)]], [[\"Item\", gen0]]]);\n}\n\n/**\n * Modify current location\n */\nexport function Navigation_modifyUrl(newUrl) {\n return singleton((_arg) => {\n history.replaceState(undefined, \"\", newUrl);\n });\n}\n\n/**\n * Push new location into history and navigate there\n */\nexport function Navigation_newUrl(newUrl) {\n return singleton((_arg) => {\n history.pushState(undefined, \"\", newUrl);\n const ev = new CustomEvent(\"NavigatedEvent\");\n window.dispatchEvent(ev);\n });\n}\n\n/**\n * Jump to some point in history (positve=forward, nagative=backward)\n */\nexport function Navigation_jump(n) {\n return singleton((_arg) => {\n history.go(n);\n });\n}\n\n/**\n * Add the navigation to a program made with `mkProgram` or `mkSimple`.\n * urlUpdate: similar to `update` function, but receives parsed url instead of message as an input.\n */\nexport function ProgramModule_toNavigable(parser, urlUpdate, program) {\n const onChangeRef = new FSharpRef((_arg) => {\n throw new Error(\"`onChangeRef` has not been initialized.\\nThis should not happen, please open an issue if the problem persist\");\n });\n const map = (tupledArg) => [tupledArg[0], Cmd_map((Item) => (new Navigable$1(1, [Item])), tupledArg[1])];\n return ProgramModule_map((userInit, unitVar_1) => map(userInit(parser(window.location))), (userUpdate, msg, model_1) => map((msg.tag === 1) ? userUpdate(msg.fields[0])(model_1) : urlUpdate(parser(msg.fields[0]), model_1)), (userView, model_4, dispatch_2) => userView(model_4)((arg_1) => {\n dispatch_2(new Navigable$1(1, [arg_1]));\n }), (userSetState, model_3, dispatch_1) => {\n userSetState(model_3)((arg) => {\n dispatch_1(new Navigable$1(1, [arg]));\n });\n }, (userSubscribe, model_2) => Sub_batch(ofArray([singleton([singleton(\"onLocationChange\"), (dispatch) => {\n let lastLocation = undefined;\n onChangeRef.contents = ((_arg_1) => {\n let matchResult_1, href_1;\n if (lastLocation != null) {\n if (lastLocation === window.location.href) {\n matchResult_1 = 0;\n href_1 = lastLocation;\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n switch (matchResult_1) {\n case 0: {\n break;\n }\n case 1: {\n lastLocation = window.location.href;\n dispatch(new Navigable$1(0, [window.location]));\n break;\n }\n }\n });\n window.addEventListener(\"popstate\", onChangeRef.contents);\n window.addEventListener(\"hashchange\", onChangeRef.contents);\n window.addEventListener(\"NavigatedEvent\", onChangeRef.contents);\n return {\n Dispose() {\n window.removeEventListener(\"popstate\", onChangeRef.contents);\n window.removeEventListener(\"hashchange\", onChangeRef.contents);\n window.removeEventListener(\"NavigatedEvent\", onChangeRef.contents);\n },\n };\n }]), Sub_map(\"user\", (Item_1) => (new Navigable$1(1, [Item_1])), userSubscribe(model_2))])), (tupledArg_1) => [(_arg_2) => {\n if (_arg_2.tag === 1) {\n return tupledArg_1[0](_arg_2.fields[0]);\n }\n else {\n return false;\n }\n }, (model_5) => {\n window.removeEventListener(\"popstate\", onChangeRef.contents);\n window.removeEventListener(\"hashchange\", onChangeRef.contents);\n window.removeEventListener(\"NavigatedEvent\", onChangeRef.contents);\n tupledArg_1[1](model_5);\n }], program);\n}\n\n","import { FSharpRef, Union } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { union_type, option_type, int64_type, string_type, int32_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { oneOf, top, stringParam, remaining, str, i32, s as s_1, map, custom } from \"../fable_modules/Fable.Elmish.UrlParser.1.0.2/parser.fs.js\";\nimport { tryParse } from \"../fable_modules/fable-library-js.4.24.0/Long.js\";\nimport { FSharpResult$2 } from \"../fable_modules/fable-library-js.4.24.0/Result.js\";\nimport { ofArray, collect } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Navigation_newUrl, Navigation_modifyUrl } from \"../fable_modules/Fable.Elmish.Browser.4.0.3/navigation.fs.js\";\n\nexport class Route extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Index\", \"NotFound\", \"About\", \"Login\", \"MyProfile\", \"AddProfile\", \"EditProfile\", \"StaticPublicPage\", \"Contact\", \"ViewDiary\", \"AddDiary\", \"EditDiary\", \"AddReview\", \"EditReview\", \"AddInteraction\", \"EditInteraction\", \"SearchDiaryByTags\", \"SearchDiary\", \"ViewPhysical\", \"ViewBodilyFunctions\", \"ViewWeight\", \"AddWeight\", \"EditWeight\", \"AddBodilyFunctions\", \"EditBodilyFunctions\", \"AddBloodPressure\", \"EditBloodPressure\", \"AddTemperature\", \"EditTemperature\", \"ViewFinancial\", \"ViewAsset\", \"ViewAssetsSummary\", \"ViewFitness\", \"AddTrainingPlan\", \"EditTrainingPlan\", \"ViewTrainingPlan\", \"AddWorkout\", \"EditWorkout\", \"ViewWorkout\", \"ViewWorkouts\", \"AddExercise\", \"EditExercise\", \"ViewExercise\", \"ViewExercises\", \"ViewExerciseRecord\", \"AddExerciseRecord\", \"EditExerciseRecord\", \"AddAllWorkoutExerciseRecords\", \"StartWorkoutRecord\", \"EditWorkoutRecord\"];\n }\n}\n\nexport function Route_$reflection() {\n return union_type(\"Omnicv.Client.Router.Route\", [], Route, () => [[], [], [], [], [], [], [[\"Item\", int32_type]], [[\"Item\", string_type]], [], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", int64_type]], [[\"Item\", string_type]], [[\"Item\", int64_type]], [[\"Item\", string_type]], [[\"Item\", int64_type]], [[\"Item\", string_type]], [], [], [], [], [], [[\"Item\", int64_type]], [], [[\"Item\", int64_type]], [], [[\"Item\", int64_type]], [], [[\"Item\", int64_type]], [], [[\"Item\", int64_type]], [], [], [], [[\"Item\", int64_type]], [[\"Item\", int64_type]], [], [[\"Item\", int64_type]], [[\"Item\", int64_type]], [], [], [[\"Item\", int64_type]], [[\"Item\", int64_type]], [], [[\"Item1\", int32_type], [\"Item2\", int64_type]], [[\"Item1\", int32_type], [\"Item2\", int64_type], [\"Item3\", option_type(string_type)]], [[\"Item1\", int32_type], [\"Item2\", int64_type]], [[\"Item\", int64_type]], [[\"Item\", int64_type]], [[\"Item\", int64_type]]]);\n}\n\nexport const RouteModule_defaultRoute = new Route(0, []);\n\nexport function RouteModule_i64(state) {\n return custom(\"i64\", (arg_1) => {\n let _arg;\n let outArg = 0n;\n _arg = [tryParse(arg_1, 511, false, 64, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n return _arg[0] ? (new FSharpResult$2(0, [_arg[1]])) : (new FSharpResult$2(1, [\"Can\\'t parse int64\"]));\n })(state);\n}\n\nfunction RouteModule_curry2(f, x, y) {\n return f([x, y]);\n}\n\nfunction RouteModule_curry3(f, x, y, z) {\n return f([x, y, z]);\n}\n\nexport function RouteModule_toHash(route) {\n let param_1;\n return \"#\" + ((route.tag === 1) ? \"not-found\" : ((route.tag === 2) ? \"about\" : ((route.tag === 3) ? \"login\" : ((route.tag === 4) ? \"profile\" : ((route.tag === 5) ? \"add/profile\" : ((route.tag === 6) ? (`edit/profile/${route.fields[0]}`) : ((route.tag === 8) ? \"contact\" : ((route.tag === 7) ? (`page/${route.fields[0]}`) : ((route.tag === 9) ? (`diary/view/${route.fields[0]}`) : ((route.tag === 10) ? (`diary/add/${route.fields[0]}`) : ((route.tag === 11) ? (`diary/edit/${route.fields[0]}`) : ((route.tag === 12) ? (`review/add/${route.fields[0]}`) : ((route.tag === 13) ? (`review/edit/${route.fields[0]}`) : ((route.tag === 14) ? (`inter/add/${route.fields[0]}`) : ((route.tag === 15) ? (`inter/edit/${route.fields[0]}`) : ((route.tag === 16) ? (`diary/search-tags/${route.fields[0]}`) : ((route.tag === 17) ? \"diary/search\" : ((route.tag === 18) ? \"phys/view\" : ((route.tag === 19) ? \"phys/view/bf\" : ((route.tag === 20) ? \"phys/view/weight\" : ((route.tag === 21) ? \"phys/add/weight\" : ((route.tag === 22) ? (`phys/edit/weight/${route.fields[0]}`) : ((route.tag === 25) ? \"phys/add/bp\" : ((route.tag === 26) ? (`phys/edit/bp/${route.fields[0]}`) : ((route.tag === 23) ? \"phys/add/bf\" : ((route.tag === 24) ? (`phys/edit/bf/${route.fields[0]}`) : ((route.tag === 27) ? \"phys/add/temp\" : ((route.tag === 28) ? (`phys/edit/temp/${route.fields[0]}`) : ((route.tag === 29) ? \"fin/view\" : ((route.tag === 30) ? (`fin/asset/${route.fields[0]}`) : ((route.tag === 31) ? \"fin/summary\" : ((route.tag === 32) ? \"fit/view\" : ((route.tag === 33) ? \"fit/add/plan\" : ((route.tag === 34) ? (`fit/edit/plan/${route.fields[0]}`) : ((route.tag === 35) ? (`fit/view/plan/${route.fields[0]}`) : ((route.tag === 39) ? \"fit/workouts\" : ((route.tag === 36) ? \"fit/add/workout\" : ((route.tag === 37) ? (`fit/edit/workout/${route.fields[0]}`) : ((route.tag === 38) ? (`fit/view/workout/${route.fields[0]}`) : ((route.tag === 40) ? \"fit/add/exercise\" : ((route.tag === 41) ? (`fit/edit/exercise/${route.fields[0]}`) : ((route.tag === 42) ? (`fit/view/exercise/${route.fields[0]}`) : ((route.tag === 43) ? \"fit/exercises\" : ((route.tag === 44) ? (`fit/exercise-rec/view/${route.fields[0]}/${route.fields[1]}`) : ((route.tag === 45) ? ((param_1 = route.fields[2], `fit/exercise-rec/add/${route.fields[0]}/${route.fields[1]}?${(param_1 == null) ? \"\" : (`workout=${param_1}`)}`)) : ((route.tag === 46) ? (`fit/exercise-rec/edit/${route.fields[0]}/${route.fields[1]}`) : ((route.tag === 47) ? (`fit/workout/add-all/${route.fields[0]}`) : ((route.tag === 48) ? (`fit/workout/start/${route.fields[0]}`) : ((route.tag === 49) ? (`fit/workout/edit/${route.fields[0]}`) : \"home\")))))))))))))))))))))))))))))))))))))))))))))))));\n}\n\nexport const RouteModule_routeParser = (() => {\n let parseBefore, parseAfter, parseBefore_4, parseBefore_2, parseAfter_2, parseBefore_6, parseBefore_10, parseBefore_8, parseAfter_8, parseBefore_14, parseBefore_12, parseAfter_12, parseBefore_18, parseBefore_16, parseAfter_16, parseBefore_22, parseBefore_20, parseAfter_20, parseBefore_26, parseBefore_24, parseAfter_24, parseBefore_30, parseBefore_28, parseAfter_28, parseBefore_34, parseBefore_32, parseAfter_32, parseBefore_38, parseBefore_36, parseAfter_36, parseBefore_40, parseAfter_40, parseBefore_42, parseAfter_42, parseBefore_46, parseBefore_44, parseAfter_44, parseAfter_46, parseBefore_50, parseBefore_48, parseAfter_48, parseAfter_50, parseBefore_54, parseBefore_52, parseAfter_52, parseAfter_54, parseBefore_60, parseBefore_58, parseBefore_56, parseAfter_56, parseAfter_58, parseBefore_64, parseBefore_62, parseAfter_62, parseAfter_64, parseBefore_70, parseBefore_68, parseBefore_66, parseAfter_66, parseAfter_68, parseBefore_74, parseBefore_72, parseAfter_72, parseAfter_74, parseBefore_80, parseBefore_78, parseBefore_76, parseAfter_76, parseAfter_78, parseBefore_84, parseBefore_82, parseAfter_82, parseAfter_84, parseBefore_90, parseBefore_88, parseBefore_86, parseAfter_86, parseAfter_88, parseBefore_92, parseAfter_92, parseBefore_96, parseBefore_94, parseAfter_94, parseBefore_98, parseAfter_98, parseBefore_100, parseAfter_100, parseBefore_104, parseBefore_102, parseAfter_102, parseAfter_104, parseBefore_110, parseBefore_108, parseBefore_106, parseAfter_106, parseAfter_108, parseBefore_116, parseBefore_114, parseBefore_112, parseAfter_112, parseAfter_114, parseBefore_120, parseBefore_118, parseAfter_118, parseAfter_120, parseBefore_126, parseBefore_124, parseBefore_122, parseAfter_122, parseAfter_124, parseBefore_132, parseBefore_130, parseBefore_128, parseAfter_128, parseAfter_130, parseBefore_134, parseAfter_134, parseBefore_138, parseBefore_136, parseAfter_136, parseAfter_138, parseBefore_144, parseBefore_142, parseBefore_140, parseAfter_140, parseAfter_142, parseBefore_150, parseBefore_148, parseBefore_146, parseAfter_146, parseAfter_148, parseBefore_152, parseAfter_152, parseBefore_160, parseBefore_158, parseBefore_156, parseBefore_154, parseAfter_154, parseAfter_156, parser, parseBefore_168, parseBefore_166, parseBefore_164, parseBefore_162, parseAfter_162, parseAfter_164, queryParser, parseBefore_176, parseBefore_174, parseBefore_172, parseBefore_170, parseAfter_170, parseAfter_172, parseBefore_182, parseBefore_180, parseBefore_178, parseAfter_178, parseAfter_180, parseBefore_188, parseBefore_186, parseBefore_184, parseAfter_184, parseAfter_186, parseBefore_194, parseBefore_192, parseBefore_190, parseAfter_190, parseAfter_192;\n const values = ofArray([map(new Route(0, []), s_1(\"home\")), map(new Route(1, []), s_1(\"not-found\")), map(new Route(2, []), s_1(\"about\")), map(new Route(3, []), s_1(\"login\")), map(new Route(4, []), s_1(\"profile\")), map(new Route(5, []), (parseBefore = s_1(\"add\"), (parseAfter = s_1(\"profile\"), (state) => collect(parseAfter, parseBefore(state))))), map((Item) => (new Route(6, [Item])), (parseBefore_4 = ((parseBefore_2 = s_1(\"edit\"), (parseAfter_2 = s_1(\"profile\"), (state_2) => collect(parseAfter_2, parseBefore_2(state_2))))), (state_5) => collect(i32, parseBefore_4(state_5)))), map(new Route(8, []), s_1(\"contact\")), map((Item_1) => (new Route(7, [Item_1])), (parseBefore_6 = s_1(\"page\"), (state_8) => collect(str, parseBefore_6(state_8)))), map((Item_2) => (new Route(9, [Item_2])), (parseBefore_10 = ((parseBefore_8 = s_1(\"diary\"), (parseAfter_8 = s_1(\"view\"), (state_10) => collect(parseAfter_8, parseBefore_8(state_10))))), (state_13) => collect(str, parseBefore_10(state_13)))), map((Item_3) => (new Route(10, [Item_3])), (parseBefore_14 = ((parseBefore_12 = s_1(\"diary\"), (parseAfter_12 = s_1(\"add\"), (state_15) => collect(parseAfter_12, parseBefore_12(state_15))))), (state_18) => collect(str, parseBefore_14(state_18)))), map((Item_4) => (new Route(11, [Item_4])), (parseBefore_18 = ((parseBefore_16 = s_1(\"diary\"), (parseAfter_16 = s_1(\"edit\"), (state_20) => collect(parseAfter_16, parseBefore_16(state_20))))), (state_23) => collect(RouteModule_i64, parseBefore_18(state_23)))), map((Item_5) => (new Route(12, [Item_5])), (parseBefore_22 = ((parseBefore_20 = s_1(\"review\"), (parseAfter_20 = s_1(\"add\"), (state_25) => collect(parseAfter_20, parseBefore_20(state_25))))), (state_28) => collect(str, parseBefore_22(state_28)))), map((Item_6) => (new Route(13, [Item_6])), (parseBefore_26 = ((parseBefore_24 = s_1(\"review\"), (parseAfter_24 = s_1(\"edit\"), (state_30) => collect(parseAfter_24, parseBefore_24(state_30))))), (state_33) => collect(RouteModule_i64, parseBefore_26(state_33)))), map((Item_7) => (new Route(14, [Item_7])), (parseBefore_30 = ((parseBefore_28 = s_1(\"inter\"), (parseAfter_28 = s_1(\"add\"), (state_35) => collect(parseAfter_28, parseBefore_28(state_35))))), (state_38) => collect(str, parseBefore_30(state_38)))), map((Item_8) => (new Route(15, [Item_8])), (parseBefore_34 = ((parseBefore_32 = s_1(\"inter\"), (parseAfter_32 = s_1(\"edit\"), (state_40) => collect(parseAfter_32, parseBefore_32(state_40))))), (state_43) => collect(RouteModule_i64, parseBefore_34(state_43)))), map((Item_9) => (new Route(16, [Item_9])), (parseBefore_38 = ((parseBefore_36 = s_1(\"diary\"), (parseAfter_36 = s_1(\"search-tags\"), (state_45) => collect(parseAfter_36, parseBefore_36(state_45))))), (state_47) => collect(remaining, parseBefore_38(state_47)))), map(new Route(17, []), (parseBefore_40 = s_1(\"diary\"), (parseAfter_40 = s_1(\"search\"), (state_49) => collect(parseAfter_40, parseBefore_40(state_49))))), map(new Route(18, []), (parseBefore_42 = s_1(\"phys\"), (parseAfter_42 = s_1(\"view\"), (state_51) => collect(parseAfter_42, parseBefore_42(state_51))))), map(new Route(19, []), (parseBefore_46 = ((parseBefore_44 = s_1(\"phys\"), (parseAfter_44 = s_1(\"view\"), (state_53) => collect(parseAfter_44, parseBefore_44(state_53))))), (parseAfter_46 = s_1(\"bf\"), (state_55) => collect(parseAfter_46, parseBefore_46(state_55))))), map(new Route(20, []), (parseBefore_50 = ((parseBefore_48 = s_1(\"phys\"), (parseAfter_48 = s_1(\"view\"), (state_57) => collect(parseAfter_48, parseBefore_48(state_57))))), (parseAfter_50 = s_1(\"weight\"), (state_59) => collect(parseAfter_50, parseBefore_50(state_59))))), map(new Route(21, []), (parseBefore_54 = ((parseBefore_52 = s_1(\"phys\"), (parseAfter_52 = s_1(\"add\"), (state_61) => collect(parseAfter_52, parseBefore_52(state_61))))), (parseAfter_54 = s_1(\"weight\"), (state_63) => collect(parseAfter_54, parseBefore_54(state_63))))), map((Item_10) => (new Route(22, [Item_10])), (parseBefore_60 = ((parseBefore_58 = ((parseBefore_56 = s_1(\"phys\"), (parseAfter_56 = s_1(\"edit\"), (state_65) => collect(parseAfter_56, parseBefore_56(state_65))))), (parseAfter_58 = s_1(\"weight\"), (state_67) => collect(parseAfter_58, parseBefore_58(state_67))))), (state_70) => collect(RouteModule_i64, parseBefore_60(state_70)))), map(new Route(25, []), (parseBefore_64 = ((parseBefore_62 = s_1(\"phys\"), (parseAfter_62 = s_1(\"add\"), (state_72) => collect(parseAfter_62, parseBefore_62(state_72))))), (parseAfter_64 = s_1(\"bp\"), (state_74) => collect(parseAfter_64, parseBefore_64(state_74))))), map((Item_11) => (new Route(26, [Item_11])), (parseBefore_70 = ((parseBefore_68 = ((parseBefore_66 = s_1(\"phys\"), (parseAfter_66 = s_1(\"edit\"), (state_76) => collect(parseAfter_66, parseBefore_66(state_76))))), (parseAfter_68 = s_1(\"bp\"), (state_78) => collect(parseAfter_68, parseBefore_68(state_78))))), (state_81) => collect(RouteModule_i64, parseBefore_70(state_81)))), map(new Route(23, []), (parseBefore_74 = ((parseBefore_72 = s_1(\"phys\"), (parseAfter_72 = s_1(\"add\"), (state_83) => collect(parseAfter_72, parseBefore_72(state_83))))), (parseAfter_74 = s_1(\"bf\"), (state_85) => collect(parseAfter_74, parseBefore_74(state_85))))), map((Item_12) => (new Route(24, [Item_12])), (parseBefore_80 = ((parseBefore_78 = ((parseBefore_76 = s_1(\"phys\"), (parseAfter_76 = s_1(\"edit\"), (state_87) => collect(parseAfter_76, parseBefore_76(state_87))))), (parseAfter_78 = s_1(\"bf\"), (state_89) => collect(parseAfter_78, parseBefore_78(state_89))))), (state_92) => collect(RouteModule_i64, parseBefore_80(state_92)))), map(new Route(27, []), (parseBefore_84 = ((parseBefore_82 = s_1(\"phys\"), (parseAfter_82 = s_1(\"add\"), (state_94) => collect(parseAfter_82, parseBefore_82(state_94))))), (parseAfter_84 = s_1(\"temp\"), (state_96) => collect(parseAfter_84, parseBefore_84(state_96))))), map((Item_13) => (new Route(28, [Item_13])), (parseBefore_90 = ((parseBefore_88 = ((parseBefore_86 = s_1(\"phys\"), (parseAfter_86 = s_1(\"edit\"), (state_98) => collect(parseAfter_86, parseBefore_86(state_98))))), (parseAfter_88 = s_1(\"temp\"), (state_100) => collect(parseAfter_88, parseBefore_88(state_100))))), (state_103) => collect(RouteModule_i64, parseBefore_90(state_103)))), map(new Route(29, []), (parseBefore_92 = s_1(\"fin\"), (parseAfter_92 = s_1(\"view\"), (state_105) => collect(parseAfter_92, parseBefore_92(state_105))))), map((Item_14) => (new Route(30, [Item_14])), (parseBefore_96 = ((parseBefore_94 = s_1(\"fin\"), (parseAfter_94 = s_1(\"asset\"), (state_107) => collect(parseAfter_94, parseBefore_94(state_107))))), (state_110) => collect(RouteModule_i64, parseBefore_96(state_110)))), map(new Route(31, []), (parseBefore_98 = s_1(\"fin\"), (parseAfter_98 = s_1(\"summary\"), (state_112) => collect(parseAfter_98, parseBefore_98(state_112))))), map(new Route(32, []), (parseBefore_100 = s_1(\"fit\"), (parseAfter_100 = s_1(\"view\"), (state_114) => collect(parseAfter_100, parseBefore_100(state_114))))), map(new Route(33, []), (parseBefore_104 = ((parseBefore_102 = s_1(\"fit\"), (parseAfter_102 = s_1(\"add\"), (state_116) => collect(parseAfter_102, parseBefore_102(state_116))))), (parseAfter_104 = s_1(\"plan\"), (state_118) => collect(parseAfter_104, parseBefore_104(state_118))))), map((Item_15) => (new Route(34, [Item_15])), (parseBefore_110 = ((parseBefore_108 = ((parseBefore_106 = s_1(\"fit\"), (parseAfter_106 = s_1(\"edit\"), (state_120) => collect(parseAfter_106, parseBefore_106(state_120))))), (parseAfter_108 = s_1(\"plan\"), (state_122) => collect(parseAfter_108, parseBefore_108(state_122))))), (state_125) => collect(RouteModule_i64, parseBefore_110(state_125)))), map((Item_16) => (new Route(35, [Item_16])), (parseBefore_116 = ((parseBefore_114 = ((parseBefore_112 = s_1(\"fit\"), (parseAfter_112 = s_1(\"view\"), (state_127) => collect(parseAfter_112, parseBefore_112(state_127))))), (parseAfter_114 = s_1(\"plan\"), (state_129) => collect(parseAfter_114, parseBefore_114(state_129))))), (state_132) => collect(RouteModule_i64, parseBefore_116(state_132)))), map(new Route(36, []), (parseBefore_120 = ((parseBefore_118 = s_1(\"fit\"), (parseAfter_118 = s_1(\"add\"), (state_134) => collect(parseAfter_118, parseBefore_118(state_134))))), (parseAfter_120 = s_1(\"workout\"), (state_136) => collect(parseAfter_120, parseBefore_120(state_136))))), map((Item_17) => (new Route(37, [Item_17])), (parseBefore_126 = ((parseBefore_124 = ((parseBefore_122 = s_1(\"fit\"), (parseAfter_122 = s_1(\"edit\"), (state_138) => collect(parseAfter_122, parseBefore_122(state_138))))), (parseAfter_124 = s_1(\"workout\"), (state_140) => collect(parseAfter_124, parseBefore_124(state_140))))), (state_143) => collect(RouteModule_i64, parseBefore_126(state_143)))), map((Item_18) => (new Route(38, [Item_18])), (parseBefore_132 = ((parseBefore_130 = ((parseBefore_128 = s_1(\"fit\"), (parseAfter_128 = s_1(\"view\"), (state_145) => collect(parseAfter_128, parseBefore_128(state_145))))), (parseAfter_130 = s_1(\"workout\"), (state_147) => collect(parseAfter_130, parseBefore_130(state_147))))), (state_150) => collect(RouteModule_i64, parseBefore_132(state_150)))), map(new Route(39, []), (parseBefore_134 = s_1(\"fit\"), (parseAfter_134 = s_1(\"workouts\"), (state_152) => collect(parseAfter_134, parseBefore_134(state_152))))), map(new Route(40, []), (parseBefore_138 = ((parseBefore_136 = s_1(\"fit\"), (parseAfter_136 = s_1(\"add\"), (state_154) => collect(parseAfter_136, parseBefore_136(state_154))))), (parseAfter_138 = s_1(\"exercise\"), (state_156) => collect(parseAfter_138, parseBefore_138(state_156))))), map((Item_19) => (new Route(41, [Item_19])), (parseBefore_144 = ((parseBefore_142 = ((parseBefore_140 = s_1(\"fit\"), (parseAfter_140 = s_1(\"edit\"), (state_158) => collect(parseAfter_140, parseBefore_140(state_158))))), (parseAfter_142 = s_1(\"exercise\"), (state_160) => collect(parseAfter_142, parseBefore_142(state_160))))), (state_163) => collect(RouteModule_i64, parseBefore_144(state_163)))), map((Item_20) => (new Route(42, [Item_20])), (parseBefore_150 = ((parseBefore_148 = ((parseBefore_146 = s_1(\"fit\"), (parseAfter_146 = s_1(\"view\"), (state_165) => collect(parseAfter_146, parseBefore_146(state_165))))), (parseAfter_148 = s_1(\"exercise\"), (state_167) => collect(parseAfter_148, parseBefore_148(state_167))))), (state_170) => collect(RouteModule_i64, parseBefore_150(state_170)))), map(new Route(43, []), (parseBefore_152 = s_1(\"fit\"), (parseAfter_152 = s_1(\"exercises\"), (state_172) => collect(parseAfter_152, parseBefore_152(state_172))))), map((x) => ((y) => RouteModule_curry2((tupledArg) => (new Route(44, [tupledArg[0], tupledArg[1]])), x, y)), (parseBefore_160 = ((parseBefore_158 = ((parseBefore_156 = ((parseBefore_154 = s_1(\"fit\"), (parseAfter_154 = s_1(\"exercise-rec\"), (state_174) => collect(parseAfter_154, parseBefore_154(state_174))))), (parseAfter_156 = s_1(\"view\"), (state_176) => collect(parseAfter_156, parseBefore_156(state_176))))), (state_179) => collect(i32, parseBefore_158(state_179)))), (state_182) => collect(RouteModule_i64, parseBefore_160(state_182)))), map((x_1) => ((y_1) => ((z) => RouteModule_curry3((tupledArg_1) => (new Route(45, [tupledArg_1[0], tupledArg_1[1], tupledArg_1[2]])), x_1, y_1, z))), (parser = ((parseBefore_168 = ((parseBefore_166 = ((parseBefore_164 = ((parseBefore_162 = s_1(\"fit\"), (parseAfter_162 = s_1(\"exercise-rec\"), (state_184) => collect(parseAfter_162, parseBefore_162(state_184))))), (parseAfter_164 = s_1(\"add\"), (state_186) => collect(parseAfter_164, parseBefore_164(state_186))))), (state_189) => collect(i32, parseBefore_166(state_189)))), (state_192) => collect(RouteModule_i64, parseBefore_168(state_192)))), (queryParser = stringParam(\"workout\"), (state_194) => collect(queryParser, parser(state_194))))), map((x_2) => ((y_2) => RouteModule_curry2((tupledArg_2) => (new Route(46, [tupledArg_2[0], tupledArg_2[1]])), x_2, y_2)), (parseBefore_176 = ((parseBefore_174 = ((parseBefore_172 = ((parseBefore_170 = s_1(\"fit\"), (parseAfter_170 = s_1(\"exercise-rec\"), (state_196) => collect(parseAfter_170, parseBefore_170(state_196))))), (parseAfter_172 = s_1(\"edit\"), (state_198) => collect(parseAfter_172, parseBefore_172(state_198))))), (state_201) => collect(i32, parseBefore_174(state_201)))), (state_204) => collect(RouteModule_i64, parseBefore_176(state_204)))), map((Item_28) => (new Route(47, [Item_28])), (parseBefore_182 = ((parseBefore_180 = ((parseBefore_178 = s_1(\"fit\"), (parseAfter_178 = s_1(\"workout\"), (state_206) => collect(parseAfter_178, parseBefore_178(state_206))))), (parseAfter_180 = s_1(\"add-all\"), (state_208) => collect(parseAfter_180, parseBefore_180(state_208))))), (state_211) => collect(RouteModule_i64, parseBefore_182(state_211)))), map((Item_29) => (new Route(48, [Item_29])), (parseBefore_188 = ((parseBefore_186 = ((parseBefore_184 = s_1(\"fit\"), (parseAfter_184 = s_1(\"workout\"), (state_213) => collect(parseAfter_184, parseBefore_184(state_213))))), (parseAfter_186 = s_1(\"start\"), (state_215) => collect(parseAfter_186, parseBefore_186(state_215))))), (state_218) => collect(RouteModule_i64, parseBefore_188(state_218)))), map((Item_30) => (new Route(49, [Item_30])), (parseBefore_194 = ((parseBefore_192 = ((parseBefore_190 = s_1(\"fit\"), (parseAfter_190 = s_1(\"workout\"), (state_220) => collect(parseAfter_190, parseBefore_190(state_220))))), (parseAfter_192 = s_1(\"edit\"), (state_222) => collect(parseAfter_192, parseBefore_192(state_222))))), (state_225) => collect(RouteModule_i64, parseBefore_194(state_225)))), map(new Route(0, []), top), map(new Route(0, []), s_1(\"index\"))]);\n return (state_228) => oneOf(values, state_228);\n})();\n\nexport function Router_href(route) {\n return [\"href\", RouteModule_toHash(route)];\n}\n\nexport function Router_modifyUrl(route) {\n return Navigation_modifyUrl(RouteModule_toHash(route));\n}\n\nexport function Router_newUrl(route) {\n return Navigation_newUrl(RouteModule_toHash(route));\n}\n\nexport function Router_modifyLocation(route) {\n window.location.href = RouteModule_toHash(route);\n}\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__AddProp_ZCC5A61F, Common_GenericOptions__AddCaseName_1505, Color_ofColor, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection, Size_ISize_$reflection, Color_IColor_$reflection } from \"../Common.fs.js\";\nimport { union_type, string_type, lambda_type, unit_type, list_type, class_type, bool_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport { Reflection_getCaseName } from \"../Common.fs.js\";\nimport { DOMAttr, HTMLAttr } from \"../../Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\nimport { singleton, empty, cons, map, exists } from \"../../fable-library-js.4.24.0/List.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Color\", \"Size\", \"is-fullwidth\", \"is-link\", \"is-outlined\", \"is-inverted\", \"is-text\", \"is-ghost\", \"is-rounded\", \"is-expanded\", \"is-hovered\", \"is-focused\", \"is-active\", \"is-loading\", \"is-static\", \"is-light\", \"Disabled\", \"Props\", \"OnClick\", \"CustomClass\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Button.Option\", [], Option, () => [[[\"Item\", Color_IColor_$reflection()]], [[\"Item\", Size_ISize_$reflection()]], [], [], [], [], [], [], [], [], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [], [[\"Item\", bool_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", lambda_type(class_type(\"Browser.Types.MouseEvent\", undefined), unit_type)]], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\nexport function btnView(element, options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n let matchResult, state;\n switch (option.tag) {\n case 1: {\n matchResult = 1;\n break;\n }\n case 3:\n case 2:\n case 4:\n case 5:\n case 6:\n case 8:\n case 9:\n case 7:\n case 15: {\n matchResult = 2;\n break;\n }\n case 16: {\n matchResult = 4;\n break;\n }\n case 18: {\n matchResult = 5;\n break;\n }\n case 17: {\n matchResult = 6;\n break;\n }\n case 19: {\n matchResult = 7;\n break;\n }\n case 20: {\n matchResult = 8;\n break;\n }\n case 10: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n case 11: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n case 12: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n case 13: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n case 14: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n default:\n matchResult = 0;\n }\n switch (matchResult) {\n case 0:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Color_ofColor(option.fields[0]));\n case 1:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(option.fields[0]));\n case 2:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n case 3:\n if (state) {\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n else {\n return result;\n }\n case 4:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(79, [option.fields[0]]));\n case 5:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new DOMAttr(40, [option.fields[0]]));\n case 6:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 7:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n }\n }, \"button\"), element, children);\n}\n\n/**\n * Generate \n */\nexport function button(options, children) {\n return btnView((props, children_1) => react.createElement(\"button\", keyValueList(props, 1), ...children_1), options, children);\n}\n\n/**\n * Generate \n */\nexport function span(options, children) {\n return btnView((props, children_1) => react.createElement(\"span\", keyValueList(props, 1), ...children_1), options, children);\n}\n\n/**\n * Generate \n */\nexport function a(options, children) {\n return btnView((props, children_1) => react.createElement(\"a\", keyValueList(props, 1), ...children_1), options, children);\n}\n\nexport function Input_btnInput(typ, options) {\n if (exists((opts) => {\n if (opts.tag === 17) {\n return true;\n }\n else {\n return false;\n }\n }, options)) {\n return btnView((options_1, _arg) => react.createElement(\"input\", keyValueList(options_1, 1)), map((opts_1) => {\n if (opts_1.tag === 17) {\n return new Option(17, [cons(new HTMLAttr(159, [typ]), opts_1.fields[0])]);\n }\n else {\n return opts_1;\n }\n }, options), empty());\n }\n else {\n return btnView((options_2, _arg_1) => react.createElement(\"input\", keyValueList(options_2, 1)), cons(new Option(17, [singleton(new HTMLAttr(159, [typ]))]), options), empty());\n }\n}\n\n/**\n * Generate \n */\nexport function Input_reset(options) {\n return Input_btnInput(\"reset\", options);\n}\n\n/**\n * Generate \n */\nexport function Input_submit(options) {\n return Input_btnInput(\"submit\", options);\n}\n\nexport class List_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"has-addons\", \"is-centered\", \"is-right\", \"are-small\", \"are-medium\", \"are-large\", \"Props\", \"CustomClass\", \"Modifiers\"];\n }\n}\n\nexport function List_Option_$reflection() {\n return union_type(\"Fulma.Button.List.Option\", [], List_Option, () => [[], [], [], [], [], [], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate
\n */\nexport function list(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 6:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 7:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 8:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n }, \"buttons\"), (props_1, children_1) => react.createElement(\"div\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { Common_parseOptions, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__AddCaseName_1505, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection, Size_ISize_$reflection } from \"../Common.fs.js\";\nimport { union_type, list_type, class_type, string_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\nimport { Reflection_getCaseName } from \"../Common.fs.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Size\", \"is-left\", \"is-right\", \"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Icon.Option\", [], Option, () => [[[\"Item\", Size_ISize_$reflection()]], [], [], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate \n */\nexport function icon(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 1:\n case 2:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n case 4:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 3:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 5:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(option.fields[0]));\n }\n }, \"icon\"), (props_1, children_1) => react.createElement(\"span\", keyValueList(props_1, 1), ...children_1), children);\n}\n\nexport function Text_span(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"icon-text\"), (props, children_1) => react.createElement(\"span\", keyValueList(props, 1), ...children_1), children);\n}\n\nexport function Text_div(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"icon-text\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n","import { Union, Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { Router_modifyLocation, Route_$reflection } from \"./Router.js\";\nimport { bool_type, union_type, record_type, int64_type, lambda_type, string_type, option_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { Fa_i, Fa_IconOption_$reflection } from \"../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { filter, map, empty, ofArray, singleton } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Session_$reflection } from \"./SharedView.js\";\nimport { list as list_3, Option, button } from \"../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { Color_IColor, Size_ISize } from \"../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { icon as icon_1 } from \"../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport * as react from \"react\";\nimport { defaultOf } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { value as value_1 } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\n\nexport class Actions extends Record {\n constructor(NewNow, NewDate, Edit, View, ViewAll) {\n super();\n this.NewNow = NewNow;\n this.NewDate = NewDate;\n this.Edit = Edit;\n this.View = View;\n this.ViewAll = ViewAll;\n }\n}\n\nexport function Actions_$reflection() {\n return record_type(\"Omnicv.Client.Common.ClientModule.Actions\", [], Actions, () => [[\"NewNow\", option_type(Route_$reflection())], [\"NewDate\", option_type(lambda_type(string_type, Route_$reflection()))], [\"Edit\", option_type(lambda_type(int64_type, Route_$reflection()))], [\"View\", option_type(lambda_type(int64_type, Route_$reflection()))], [\"ViewAll\", option_type(Route_$reflection())]]);\n}\n\nexport class IconType extends Union {\n constructor(Item) {\n super();\n this.tag = 0;\n this.fields = [Item];\n }\n cases() {\n return [\"FontAwesome\"];\n }\n}\n\nexport function IconType_$reflection() {\n return union_type(\"Omnicv.Client.Common.ClientModule.IconType\", [], IconType, () => [[[\"Item\", Fa_IconOption_$reflection()]]]);\n}\n\nexport function IconType__ToIcon(this$) {\n return Fa_i(singleton(this$.fields[0]), []);\n}\n\nexport class ModuleDescriptor extends Record {\n constructor(Icon, View) {\n super();\n this.Icon = Icon;\n this.View = View;\n }\n}\n\nexport function ModuleDescriptor_$reflection() {\n return record_type(\"Omnicv.Client.Common.ClientModule.ModuleDescriptor\", [], ModuleDescriptor, () => [[\"Icon\", IconType_$reflection()], [\"View\", option_type(lambda_type(Session_$reflection(), Route_$reflection()))]]);\n}\n\nexport class EntryDescriptor extends Record {\n constructor(Name, Caption, Details, Icon, Actions, IsFavourite) {\n super();\n this.Name = Name;\n this.Caption = Caption;\n this.Details = Details;\n this.Icon = Icon;\n this.Actions = Actions;\n this.IsFavourite = IsFavourite;\n }\n}\n\nexport function EntryDescriptor_$reflection() {\n return record_type(\"Omnicv.Client.Common.ClientModule.EntryDescriptor\", [], EntryDescriptor, () => [[\"Name\", string_type], [\"Caption\", string_type], [\"Details\", string_type], [\"Icon\", IconType_$reflection()], [\"Actions\", Actions_$reflection()], [\"IsFavourite\", bool_type]]);\n}\n\nexport function EntryDescriptor__GetButton(this$, colour, isDisabled, onClick) {\n let children;\n const children_4 = [(children = [button(ofArray([new Option(0, [colour]), new Option(16, [isDisabled]), new Option(18, [onClick]), new Option(1, [new Size_ISize(2, [])])]), singleton(icon_1(empty(), singleton(IconType__ToIcon(this$.Icon)))))], react.createElement(\"div\", {}, ...children)), react.createElement(\"div\", {\n className: \"button-caption\",\n }, this$.Caption)];\n return react.createElement(\"div\", {\n className: \"button-wrapper\",\n }, ...children_4);\n}\n\nexport function EntryDescriptor__GetNewDateButton(this$, isDisabled, param) {\n const matchValue = this$.Actions.NewDate;\n if (matchValue != null) {\n const route = matchValue;\n return EntryDescriptor__GetButton(this$, new Color_IColor(6, []), isDisabled, (_arg) => {\n Router_modifyLocation(route(param));\n });\n }\n else {\n return defaultOf();\n }\n}\n\nexport function EntryDescriptor__GetNewNowButton_Z1FBCCD16(this$, isDisabled) {\n const matchValue = this$.Actions.NewNow;\n if (matchValue != null) {\n const route = matchValue;\n return EntryDescriptor__GetButton(this$, new Color_IColor(6, []), isDisabled, (_arg) => {\n Router_modifyLocation(route);\n });\n }\n else {\n return defaultOf();\n }\n}\n\nexport function getModuleNewDateButtons(clientModule, isDisabled, param) {\n const children = [list_3(empty(), map((des) => EntryDescriptor__GetNewDateButton(des, isDisabled, param), clientModule.EntryDescriptors()))];\n return react.createElement(\"div\", {\n className: \"block\",\n }, ...children);\n}\n\nexport function getModuleNewNowButtons(clientModule, isDisabled) {\n const children = [list_3(empty(), map((des) => EntryDescriptor__GetNewNowButton_Z1FBCCD16(des, isDisabled), clientModule.EntryDescriptors()))];\n return react.createElement(\"div\", {\n className: \"block\",\n }, ...children);\n}\n\nexport function getModuleViewAllButtons(clientModule, isDisabled) {\n const children = [list_3(empty(), map(value_1, filter((option) => (option != null), map((des) => {\n const matchValue = des.Actions.ViewAll;\n if (matchValue != null) {\n const route = matchValue;\n return EntryDescriptor__GetButton(des, new Color_IColor(5, []), isDisabled, (_arg) => {\n Router_modifyLocation(route);\n });\n }\n else {\n return undefined;\n }\n }, clientModule.EntryDescriptors()))))];\n return react.createElement(\"div\", {\n className: \"block\",\n }, ...children);\n}\n\n","import { Fa_IconOption } from \"../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { EntryDescriptor, Actions, ModuleDescriptor, IconType } from \"../../Omnicv.Client.Common/ClientModule.js\";\nimport { Config_defaultDateForNow, Config_getDefaultDiaryDate } from \"../../Omnicv.Client.Common/Extensions.js\";\nimport { Route } from \"../../Omnicv.Client.Common/Router.js\";\nimport { ofArray } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { DiaryModule_$reflection, DiaryModule } from \"../Omnicv.Diary.Shared/DiaryAPI.js\";\nimport { class_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\n\nexport class DiaryClientModule extends DiaryModule {\n constructor() {\n super();\n }\n Descriptor() {\n return new ModuleDescriptor(new IconType(new Fa_IconOption(11, [\"fas fa-journal-whills\"])), (session) => (new Route(9, [Config_getDefaultDiaryDate(session)])));\n }\n EntryDescriptors() {\n return ofArray([new EntryDescriptor(\"DiaryRecord\", \"Diary\", \"Diary entries\", new IconType(new Fa_IconOption(11, [\"fas fa-journal-whills\"])), new Actions(new Route(10, [Config_defaultDateForNow]), (Item) => (new Route(10, [Item])), (Item_1) => (new Route(11, [Item_1])), undefined, undefined), true), new EntryDescriptor(\"ReviewRecord\", \"Review\", \"Review your experiences\", new IconType(new Fa_IconOption(11, [\"fas fa-star-half-alt\"])), new Actions(new Route(12, [Config_defaultDateForNow]), (Item_2) => (new Route(12, [Item_2])), (Item_3) => (new Route(13, [Item_3])), undefined, undefined), false), new EntryDescriptor(\"InteractionRecord\", \"Interaction\", \"Track your interactions with others\", new IconType(new Fa_IconOption(11, [\"fas fa-phone-alt\"])), new Actions(new Route(14, [Config_defaultDateForNow]), (Item_4) => (new Route(14, [Item_4])), (Item_5) => (new Route(15, [Item_5])), undefined, undefined), false)]);\n }\n}\n\nexport function DiaryClientModule_$reflection() {\n return class_type(\"Omnicv.Client.Diary.DiaryClientModule\", undefined, DiaryClientModule, DiaryModule_$reflection());\n}\n\nexport function DiaryClientModule_$ctor() {\n return new DiaryClientModule();\n}\n\n","import { Fa_IconOption } from \"./fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { EntryDescriptor, Actions, ModuleDescriptor, IconType } from \"./Omnicv.Client.Common/ClientModule.js\";\nimport { Route } from \"./Omnicv.Client.Common/Router.js\";\nimport { ofArray } from \"./fable_modules/fable-library-js.4.24.0/List.js\";\nimport { PhysicalModule_$reflection, PhysicalModule } from \"./Omnicv.Shared/PhysicalAPI.js\";\nimport { class_type } from \"./fable_modules/fable-library-js.4.24.0/Reflection.js\";\n\nexport class PhysicalClientModule extends PhysicalModule {\n constructor() {\n super();\n }\n Descriptor() {\n return new ModuleDescriptor(new IconType(new Fa_IconOption(11, [\"fas fa-ambulance\"])), (_arg) => (new Route(18, [])));\n }\n EntryDescriptors() {\n return ofArray([new EntryDescriptor(\"WeightRecord\", \"Weight\", \"Track your weight\", new IconType(new Fa_IconOption(11, [\"fas fa-balance-scale-left\"])), new Actions(new Route(21, []), undefined, (Item) => (new Route(22, [Item])), undefined, new Route(20, [])), false), new EntryDescriptor(\"BloodPressureRecord\", \"Blood Pressure\", \"Track your blood pressure\", new IconType(new Fa_IconOption(11, [\"fas fa-heartbeat\"])), new Actions(new Route(25, []), undefined, (Item_1) => (new Route(26, [Item_1])), undefined, undefined), false), new EntryDescriptor(\"BodilyFunctionsRecord\", \"Elimination\", \"Track your bodily functions\", new IconType(new Fa_IconOption(11, [\"fas fa-toilet\"])), new Actions(new Route(23, []), undefined, (Item_2) => (new Route(24, [Item_2])), undefined, new Route(19, [])), true), new EntryDescriptor(\"TemperatureRecord\", \"Temperature\", \"Track your temperature\", new IconType(new Fa_IconOption(11, [\"fas fa-temperature-high\"])), new Actions(new Route(27, []), undefined, (Item_3) => (new Route(28, [Item_3])), undefined, undefined), false)]);\n }\n}\n\nexport function PhysicalClientModule_$reflection() {\n return class_type(\"Omnicv.Client.Physical.PhysicalClientModule\", undefined, PhysicalClientModule, PhysicalModule_$reflection());\n}\n\nexport function PhysicalClientModule_$ctor() {\n return new PhysicalClientModule();\n}\n\n","import { Fa_IconOption } from \"./fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { EntryDescriptor, Actions, ModuleDescriptor, IconType } from \"./Omnicv.Client.Common/ClientModule.js\";\nimport { Route } from \"./Omnicv.Client.Common/Router.js\";\nimport { singleton } from \"./fable_modules/fable-library-js.4.24.0/List.js\";\nimport { FinancialModule_$reflection, FinancialModule } from \"./Omnicv.Shared/FinancialAPI.js\";\nimport { class_type } from \"./fable_modules/fable-library-js.4.24.0/Reflection.js\";\n\nexport class FinancialClientModule extends FinancialModule {\n constructor() {\n super();\n }\n Descriptor() {\n return new ModuleDescriptor(new IconType(new Fa_IconOption(11, [\"fas fa-money-bill\"])), (_arg) => (new Route(29, [])));\n }\n EntryDescriptors() {\n return singleton(new EntryDescriptor(\"AssetValueRecord\", \"Asset value\", \"Record the value of your assets\", new IconType(new Fa_IconOption(11, [\"fas fa-balance-scale-left\"])), new Actions(undefined, undefined, undefined, undefined, undefined), false));\n }\n}\n\nexport function FinancialClientModule_$reflection() {\n return class_type(\"Omnicv.Client.Financial.FinancialClientModule\", undefined, FinancialClientModule, FinancialModule_$reflection());\n}\n\nexport function FinancialClientModule_$ctor() {\n return new FinancialClientModule();\n}\n\n","import { Fa_IconOption } from \"./fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { EntryDescriptor, Actions, ModuleDescriptor, IconType } from \"./Omnicv.Client.Common/ClientModule.js\";\nimport { Route } from \"./Omnicv.Client.Common/Router.js\";\nimport { ofArray } from \"./fable_modules/fable-library-js.4.24.0/List.js\";\nimport { FitnessModule_$reflection, FitnessModule } from \"./Omnicv.Shared/FitnessAPI.js\";\nimport { class_type } from \"./fable_modules/fable-library-js.4.24.0/Reflection.js\";\n\nexport class FitnessClientModule extends FitnessModule {\n constructor() {\n super();\n }\n Descriptor() {\n return new ModuleDescriptor(new IconType(new Fa_IconOption(11, [\"fas fa-running\"])), (_arg) => (new Route(32, [])));\n }\n EntryDescriptors() {\n return ofArray([new EntryDescriptor(\"RepsWithWeightRecord\", \"Reps with weight\", \"Record reps of weight lifting exercises\", new IconType(new Fa_IconOption(11, [\"fas fa-dumbbell\"])), new Actions(undefined, undefined, undefined, undefined, undefined), false), new EntryDescriptor(\"RepsWithBodyWeightRecord\", \"Reps with body weight\", \"Record reps of body weight exercises\", new IconType(new Fa_IconOption(11, [\"fas fa-walking\"])), new Actions(undefined, undefined, undefined, undefined, undefined), false), new EntryDescriptor(\"EnduranceRecord\", \"Endurance exercises\", \"Record workouts for endurance exercises\", new IconType(new Fa_IconOption(11, [\"fas fa-swimmer\"])), new Actions(undefined, undefined, undefined, undefined, undefined), false), new EntryDescriptor(\"IntervalsDurationRecord\", \"Interval/HIIT duration exercises\", \"Record workouts for time-based interval/circuit/HIIT exercises\", new IconType(new Fa_IconOption(11, [\"fas fa-stopwatch\"])), new Actions(undefined, undefined, undefined, undefined, undefined), false), new EntryDescriptor(\"IntervalsRepsRecord\", \"Interval/HIIT reps exercises\", \"Record workouts for reps-based interval/circuit/HIIT exercises\", new IconType(new Fa_IconOption(11, [\"fas fa-digital-tachograph\"])), new Actions(undefined, undefined, undefined, undefined, undefined), false), new EntryDescriptor(\"WorkoutRecord\", \"Record a complete workout\", \"Record all exercises for a single workout\", new IconType(new Fa_IconOption(11, [\"fas fa-dumbbell\"])), new Actions(undefined, undefined, undefined, undefined, undefined), false)]);\n }\n}\n\nexport function FitnessClientModule_$reflection() {\n return class_type(\"Omnicv.Client.Fitness.FitnessClientModule\", undefined, FitnessClientModule, FitnessModule_$reflection());\n}\n\nexport function FitnessClientModule_$ctor() {\n return new FitnessClientModule();\n}\n\n","import { Registry$1_$ctor_Z1FA48BC9 } from \"./Omnicv.Shared/ModulesRegistration.js\";\nimport { DiaryClientModule_$ctor } from \"./modules/Omnicv.Diary.Client/DiaryClientModule.js\";\nimport { PhysicalClientModule_$ctor } from \"./PhysicalClientModule.js\";\nimport { FinancialClientModule_$ctor } from \"./FinancialClientModule.js\";\nimport { FitnessClientModule_$ctor } from \"./FitnessClientModule.js\";\nimport { ofArray } from \"./fable_modules/fable-library-js.4.24.0/List.js\";\n\nexport const clientModuleRegistry = Registry$1_$ctor_Z1FA48BC9(ofArray([DiaryClientModule_$ctor(), PhysicalClientModule_$ctor(), FinancialClientModule_$ctor(), FitnessClientModule_$ctor()]));\n\n","import { reverse, empty, cons, fold } from \"../fable-library-js.4.24.0/List.js\";\nimport { toString } from \"../fable-library-js.4.24.0/Types.js\";\nimport { join } from \"../fable-library-js.4.24.0/String.js\";\n\nexport function Helpers_extractClasses(xs) {\n return fold((tupledArg, x) => {\n const classes = tupledArg[0];\n const props = tupledArg[1];\n const matchValue = x;\n if (matchValue[0] === \"className\") {\n return [cons(toString(matchValue[1]), classes), props];\n }\n else {\n return [classes, cons(x, props)];\n }\n }, [empty(), empty()], reverse(xs));\n}\n\nexport function Helpers_combineClasses(cn, xs) {\n const tupledArg = Helpers_extractClasses(xs);\n return cons([\"className\", join(\" \", cons(cn, tupledArg[0]))], tupledArg[1]);\n}\n\n","import { toString, Union } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { union_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { newGuid } from \"../../fable_modules/fable-library-js.4.24.0/Guid.js\";\nimport { createElement } from \"react\";\nimport { createObj } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { Helpers_combineClasses } from \"../../fable_modules/Feliz.Bulma.3.0.0/ElementBuilders.fs.js\";\nimport { ofArray } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { reactApi } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\n\nexport class Class extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Link\", \"Info\", \"Success\", \"Warning\", \"Danger\"];\n }\n}\n\nexport function Class_$reflection() {\n return union_type(\"Omnicv.Client.Components.Notification.Class\", [], Class, () => [[], [], [], [], []]);\n}\n\nexport function Class__get_ToClassName(this$) {\n return \"is-\" + toString(this$).toLocaleLowerCase();\n}\n\nfunction closeById(id) {\n const contentElement = document.getElementById(id);\n contentElement.hidden = true;\n}\n\nexport function closeable(text, notificationClass) {\n let elems;\n let id;\n let copyOfStruct = newGuid();\n id = copyOfStruct;\n return createElement(\"div\", createObj(ofArray([[\"id\", id], [\"className\", \"notification \" + Class__get_ToClassName(notificationClass)], (elems = [createElement(\"button\", createObj(Helpers_combineClasses(\"button\", ofArray([[\"className\", \"delete\"], [\"onClick\", (_arg) => {\n closeById(id);\n }]])))), text], [\"children\", reactApi.Children.toArray(Array.from(elems))])])));\n}\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { union_type, string_type, list_type, class_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport { Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection } from \"../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-fluid\", \"is-widescreen\", \"is-fullhd\", \"Props\", \"CustomClass\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Container.Option\", [], Option, () => [[], [], [], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate
\n */\nexport function container(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 3:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 4:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 5:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n }, \"container\"), (props_1, children_1) => react.createElement(\"div\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n","import { Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__AddProp_ZCC5A61F, Modifier_IModifier_$reflection, Common_parseOptions, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7 } from \"../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\nimport { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { union_type, lambda_type, unit_type, string_type, list_type, class_type, bool_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport { HTMLAttr, DOMAttr } from \"../../Fable.React.9.4.0/Fable.React.Props.fs.js\";\n\n/**\n * Generate \n */\nexport function menu(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"menu\"), (props, children_1) => react.createElement(\"aside\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate

\n */\nexport function label(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"menu-label\"), (props, children_1) => react.createElement(\"p\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
\n */\nexport function list(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"menu-list\"), (props, children_1) => react.createElement(\"ul\", keyValueList(props, 1), ...children_1), children);\n}\n\nexport class Item_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-active\", \"Props\", \"CustomClass\", \"OnClick\", \"Href\", \"Modifiers\"];\n }\n}\n\nexport function Item_Option_$reflection() {\n return union_type(\"Fulma.Menu.Item.Option\", [], Item_Option, () => [[[\"Item\", bool_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", string_type]], [[\"Item\", lambda_type(class_type(\"Browser.Types.MouseEvent\", undefined), unit_type)]], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\nfunction Item_generateAnchor(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 3:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new DOMAttr(40, [option.fields[0]]));\n case 4:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(94, [option.fields[0]]));\n case 1:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 2:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 5:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n if (option.fields[0]) {\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n else {\n return result;\n }\n }\n }), (props_1, children_1) => react.createElement(\"a\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n/**\n * Generate
  • \n * You control the `a` element\n */\nexport function Item_li(options, children) {\n const children_1 = [Item_generateAnchor(options, children)];\n return react.createElement(\"li\", {}, ...children_1);\n}\n\n/**\n * Generate \n */\nexport function Item_a(options, children) {\n return Item_generateAnchor(options, children);\n}\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddProps_Z4E55E0BD, Color_ofColor, Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection, Color_IColor_$reflection, Size_ISize_$reflection } from \"../Common.fs.js\";\nimport { union_type, string_type, list_type, class_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\nimport { some } from \"../../fable-library-js.4.24.0/Option.js\";\nimport { Reflection_getCaseName } from \"../Common.fs.js\";\nimport { cons } from \"../../fable-library-js.4.24.0/List.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Size\", \"Color\", \"is-delete\", \"is-light\", \"Props\", \"CustomClass\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Tag.Option\", [], Option, () => [[[\"Item\", Size_ISize_$reflection()]], [[\"Item\", Color_IColor_$reflection()]], [], [], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate \n */\nexport function tag(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n let matchResult, size, color, props, customClass, modifiers;\n switch (option.tag) {\n case 2:\n case 3: {\n matchResult = 2;\n break;\n }\n case 1: {\n matchResult = 3;\n color = option.fields[0];\n break;\n }\n case 4: {\n matchResult = 4;\n props = option.fields[0];\n break;\n }\n case 5: {\n matchResult = 5;\n customClass = option.fields[0];\n break;\n }\n case 6: {\n matchResult = 6;\n modifiers = option.fields[0];\n break;\n }\n default:\n if (option.fields[0].tag === 0) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n size = option.fields[0];\n }\n }\n switch (matchResult) {\n case 0: {\n console.warn(some(\"`is-small` is not a valid size for the tag element\"));\n return result;\n }\n case 1:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(size));\n case 2:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n case 3:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Color_ofColor(color));\n case 4:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, props);\n case 5:\n return Common_GenericOptions__AddClass_Z721C83C5(result, customClass);\n default:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, modifiers);\n }\n }, \"tag\"), (props_1, children_1) => react.createElement(\"span\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n/**\n * Generate \n */\nexport function delete$(options, children) {\n return tag(cons(new Option(2, []), options), children);\n}\n\nexport class List_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"has-addons\", \"is-centered\", \"is-right\", \"are-small\", \"are-medium\", \"are-large\", \"Props\", \"CustomClass\", \"Modifiers\"];\n }\n}\n\nexport function List_Option_$reflection() {\n return union_type(\"Fulma.Tag.List.Option\", [], List_Option, () => [[], [], [], [], [], [], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate
    \n */\nexport function list(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 6:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 7:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 8:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n }, \"tags\"), (props_1, children_1) => react.createElement(\"div\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n","import { Union } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { union_type, lambda_type, unit_type, float64_type, bool_type, int32_type, string_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { keyValueList } from \"../../fable_modules/fable-library-js.4.24.0/MapUtil.js\";\nimport * as react from \"react\";\nimport react_rating_stars_component from \"react-rating-stars-component\";\n\nexport class RatingStarsProps extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"ActiveColor\", \"Count\", \"Edit\", \"IsHalf\", \"Size\", \"Value\", \"OnChange\"];\n }\n}\n\nexport function RatingStarsProps_$reflection() {\n return union_type(\"Omnicv.Client.Components.RatingStars.RatingStarsProps\", [], RatingStarsProps, () => [[[\"Item\", string_type]], [[\"Item\", int32_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", int32_type]], [[\"Item\", float64_type]], [[\"Item\", lambda_type(float64_type, unit_type)]]]);\n}\n\nexport function ratingStars(props) {\n const props_1 = keyValueList(props, 1);\n return react.createElement(react_rating_stars_component, props_1);\n}\n\n","import { Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions__AddProps_Z4E55E0BD, Modifier_IModifier_$reflection, Common_parseOptions, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7 } from \"../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\nimport { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { union_type, string_type, list_type, class_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\n\n/**\n * Generate
    \n */\nexport function card(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"card\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
    \n */\nexport function header(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"card-header\"), (props, children_1) => react.createElement(\"header\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
    \n */\nexport function content(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"card-content\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
    \n */\nexport function footer(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"card-footer\"), (props, children_1) => react.createElement(\"footer\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
    \n */\nexport function image(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"card-image\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\nexport class Header_Title_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-centered\", \"Props\", \"CustomClass\", \"Modifiers\"];\n }\n}\n\nexport function Header_Title_Option_$reflection() {\n return union_type(\"Fulma.Card.Header.Title.Option\", [], Header_Title_Option, () => [[], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate \n */\nexport function Header_icon(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"card-header-icon\"), (props, children_1) => react.createElement(\"a\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate

    \n */\nexport function Header_title(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 1:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 2:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 3:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n }, \"card-header-title\"), (props_1, children_1) => react.createElement(\"p\", keyValueList(props_1, 1), ...children_1), children);\n}\n\nexport function Footer_itemView(element, options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"card-footer-item\"), element, children);\n}\n\n/**\n * Generate \n */\nexport function Footer_div(x, y) {\n return Footer_itemView((props, children) => react.createElement(\"div\", keyValueList(props, 1), ...children), x, y);\n}\n\n/**\n * Generate \n */\nexport function Footer_p(x, y) {\n return Footer_itemView((props, children) => react.createElement(\"p\", keyValueList(props, 1), ...children), x, y);\n}\n\n/**\n * Generate \n */\nexport function Footer_a(x, y) {\n return Footer_itemView((props, children) => react.createElement(\"a\", keyValueList(props, 1), ...children), x, y);\n}\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection, Size_ISize_$reflection } from \"../Common.fs.js\";\nimport { union_type, list_type, class_type, string_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\nimport { Reflection_getCaseName } from \"../Common.fs.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Size\", \"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Content.Option\", [], Option, () => [[[\"Item\", Size_ISize_$reflection()]], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate
    \n */\nexport function content(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 2:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 1:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 3:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(option.fields[0]));\n }\n }, \"content\"), (props_1, children_1) => react.createElement(\"div\", keyValueList(props_1, 1), ...children_1), children);\n}\n\nexport class Ol_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-lower-roman\", \"is-upper-roman\", \"is-lower-alpha\", \"is-upper-alpha\", \"CustomClass\", \"Modifiers\", \"Props\"];\n }\n}\n\nexport function Ol_Option_$reflection() {\n return union_type(\"Fulma.Content.Ol.Option\", [], Ol_Option, () => [[], [], [], [], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]]]);\n}\n\n/**\n * Generate
      \n */\nexport function Ol_ol(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 6:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 4:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 5:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n }), (props_1, children_1) => react.createElement(\"ol\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n","import { Record } from \"../fable-library-js.4.24.0/Types.js\";\nimport { record_type, int32_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { maxBy, minBy } from \"../fable-library-js.4.24.0/List.js\";\nimport { compareArrays } from \"../fable-library-js.4.24.0/Util.js\";\n\nexport class MarkdownRange extends Record {\n constructor(StartLine, StartColumn, EndLine, EndColumn) {\n super();\n this.StartLine = (StartLine | 0);\n this.StartColumn = (StartColumn | 0);\n this.EndLine = (EndLine | 0);\n this.EndColumn = (EndColumn | 0);\n }\n}\n\nexport function MarkdownRange_$reflection() {\n return record_type(\"Fable.Formatting.Markdown.MarkdownRange\", [], MarkdownRange, () => [[\"StartLine\", int32_type], [\"StartColumn\", int32_type], [\"EndLine\", int32_type], [\"EndColumn\", int32_type]]);\n}\n\nexport const MarkdownRangeModule_zero = new MarkdownRange(0, 0, 0, 0);\n\nexport function MarkdownRangeModule_mergeRanges(ranges) {\n const startRange = minBy((r) => [r.StartLine, r.StartColumn], ranges, {\n Compare: compareArrays,\n });\n const endRange = maxBy((r_1) => [r_1.EndLine, r_1.EndColumn], ranges, {\n Compare: compareArrays,\n });\n return new MarkdownRange(startRange.StartLine, startRange.StartColumn, endRange.EndLine, endRange.EndColumn);\n}\n\n","import { ofSeq, empty, tail as tail_6, head, isEmpty, reverse, cons } from \"../fable-library-js.4.24.0/List.js\";\nimport { compare, equals } from \"../fable-library-js.4.24.0/Util.js\";\nimport { singleton, map, append, empty as empty_1, delay } from \"../fable-library-js.4.24.0/Seq.js\";\nimport { Union } from \"../fable-library-js.4.24.0/Types.js\";\nimport { union_type, list_type } from \"../fable-library-js.4.24.0/Reflection.js\";\n\n/**\n * Partitions list into an initial sequence (while the\n * specified predicate returns true) and a rest of the list.\n */\nexport function List_partitionWhile(p, input) {\n const loop = (acc_mut, _arg_mut) => {\n loop:\n while (true) {\n const acc = acc_mut, _arg = _arg_mut;\n let matchResult, hd_1, tl_1, rest;\n if (!isEmpty(_arg)) {\n if (p(head(_arg))) {\n matchResult = 0;\n hd_1 = head(_arg);\n tl_1 = tail_6(_arg);\n }\n else {\n matchResult = 1;\n rest = _arg;\n }\n }\n else {\n matchResult = 1;\n rest = _arg;\n }\n switch (matchResult) {\n case 0: {\n acc_mut = cons(hd_1, acc);\n _arg_mut = tl_1;\n continue loop;\n }\n default:\n return [reverse(acc), rest];\n }\n break;\n }\n };\n return loop(empty(), input);\n}\n\n/**\n * Partitions list into an initial sequence (while the specified predicate\n * returns true) and a rest of the list. The predicate gets the entire\n * tail of the list and can perform lookahead.\n */\nexport function List_partitionWhileLookahead(p, input) {\n const loop = (acc_mut, _arg_mut) => {\n loop:\n while (true) {\n const acc = acc_mut, _arg = _arg_mut;\n let matchResult, hd_1, tl_1, rest;\n if (!isEmpty(_arg)) {\n if (p(cons(head(_arg), tail_6(_arg)))) {\n matchResult = 0;\n hd_1 = head(_arg);\n tl_1 = tail_6(_arg);\n }\n else {\n matchResult = 1;\n rest = _arg;\n }\n }\n else {\n matchResult = 1;\n rest = _arg;\n }\n switch (matchResult) {\n case 0: {\n acc_mut = cons(hd_1, acc);\n _arg_mut = tl_1;\n continue loop;\n }\n default:\n return [reverse(acc), rest];\n }\n break;\n }\n };\n return loop(empty(), input);\n}\n\n/**\n * Partitions list into an initial sequence (while the\n * specified predicate returns 'false') and a rest of the list.\n */\nexport function List_partitionUntil(p, input) {\n return List_partitionWhile((arg) => !p(arg), input);\n}\n\n/**\n * Partitions list into an initial sequence (while the\n * specified predicate returns 'false') and a rest of the list.\n */\nexport function List_partitionUntilLookahead(p, input) {\n return List_partitionWhileLookahead((arg) => !p(arg), input);\n}\n\n/**\n * Iterates over the elements of the list and calls the first function for\n * every element. Between each two elements, the second function is called.\n */\nexport function List_iterInterleaved(f_mut, g_mut, input_mut) {\n List_iterInterleaved:\n while (true) {\n const f = f_mut, g = g_mut, input = input_mut;\n if (isEmpty(input)) {\n }\n else if (isEmpty(tail_6(input))) {\n f(head(input));\n }\n else {\n f(head(input));\n g();\n f_mut = f;\n g_mut = g;\n input_mut = cons(head(tail_6(input)), tail_6(tail_6(input)));\n continue List_iterInterleaved;\n }\n break;\n }\n}\n\n/**\n * Partitions the input list into two parts - the break is added\n * at a point where the list starts with the specified sub-list.\n */\nexport function List_partitionUntilEquals(endl, input) {\n const loop = (acc_mut, _arg_mut) => {\n let loop_1;\n loop:\n while (true) {\n const acc = acc_mut, _arg = _arg_mut;\n if ((loop_1 = ((start_1_mut, list_1_mut) => {\n loop_1:\n while (true) {\n const start_1 = start_1_mut, list_1 = list_1_mut;\n let matchResult, x_1, xs_1, y_1, ys_1;\n if (isEmpty(start_1)) {\n matchResult = 1;\n }\n else if (!isEmpty(list_1)) {\n if (equals(head(start_1), head(list_1))) {\n matchResult = 0;\n x_1 = head(start_1);\n xs_1 = tail_6(start_1);\n y_1 = head(list_1);\n ys_1 = tail_6(list_1);\n }\n else {\n matchResult = 2;\n }\n }\n else {\n matchResult = 2;\n }\n switch (matchResult) {\n case 0: {\n start_1_mut = xs_1;\n list_1_mut = ys_1;\n continue loop_1;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_1(endl, _arg))) {\n return [reverse(acc), _arg];\n }\n else if (isEmpty(_arg)) {\n return undefined;\n }\n else {\n acc_mut = cons(head(_arg), acc);\n _arg_mut = tail_6(_arg);\n continue loop;\n }\n break;\n }\n };\n return loop(empty(), input);\n}\n\n/**\n * A function that nests items of the input sequence\n * that do not match a specified predicate under the\n * last item that matches the predicate.\n */\nexport function List_nestUnderLastMatching(f, input) {\n const loop = (input_1) => delay(() => {\n const patternInput = List_partitionUntil(f, input_1);\n const other = patternInput[1];\n const matchValue = reverse(patternInput[0]);\n if (isEmpty(matchValue)) {\n if (equals(other, empty())) {\n return empty_1();\n }\n else {\n throw new Error(\"Should start with true\\\\nParameter name: \");\n return empty_1();\n }\n }\n else {\n return append(map((p) => [p, empty()], reverse(tail_6(matchValue))), delay(() => {\n const patternInput_1 = List_partitionUntil((arg) => !f(arg), other);\n return append(singleton([head(matchValue), patternInput_1[0]]), delay(() => loop(patternInput_1[1])));\n }));\n }\n });\n return ofSeq(loop(input));\n}\n\nexport class Tree$1 extends Union {\n constructor(Item1, Item2) {\n super();\n this.tag = 0;\n this.fields = [Item1, Item2];\n }\n cases() {\n return [\"Node\"];\n }\n}\n\nexport function Tree$1_$reflection(gen0) {\n return union_type(\"Fable.Formatting.Collections.Tree`1\", [gen0], Tree$1, () => [[[\"Item1\", gen0], [\"Item2\", list_type(Tree$1_$reflection(gen0))]]]);\n}\n\nfunction Tree_takeAtLevel(indent, tail) {\n let matchResult, i_1, tail_2, value_1, tail_5;\n if (!isEmpty(tail)) {\n if (compare(head(tail)[0], indent) >= 0) {\n matchResult = 0;\n i_1 = head(tail)[0];\n tail_2 = tail_6(tail);\n value_1 = head(tail)[1];\n }\n else {\n matchResult = 1;\n tail_5 = tail;\n }\n }\n else {\n matchResult = 1;\n tail_5 = tail;\n }\n switch (matchResult) {\n case 0: {\n const patternInput = Tree_takeDeeperThan(i_1, tail_2);\n const patternInput_1 = Tree_takeAtLevel(indent, patternInput[1]);\n return [cons(new Tree$1(value_1, patternInput[0]), patternInput_1[0]), patternInput_1[1]];\n }\n default:\n return [empty(), tail_5];\n }\n}\n\nfunction Tree_takeDeeperThan(indent, tail) {\n let matchResult, i_1, tail_2, value_1, tail_5;\n if (!isEmpty(tail)) {\n if (compare(head(tail)[0], indent) > 0) {\n matchResult = 0;\n i_1 = head(tail)[0];\n tail_2 = tail_6(tail);\n value_1 = head(tail)[1];\n }\n else {\n matchResult = 1;\n tail_5 = tail;\n }\n }\n else {\n matchResult = 1;\n tail_5 = tail;\n }\n switch (matchResult) {\n case 0: {\n const patternInput = Tree_takeDeeperThan(i_1, tail_2);\n const patternInput_1 = Tree_takeAtLevel(i_1, patternInput[1]);\n return [cons(new Tree$1(value_1, patternInput[0]), patternInput_1[0]), patternInput_1[1]];\n }\n default:\n return [empty(), tail_5];\n }\n}\n\n/**\n * Turns a list of items with an indentation specified by an integer\n * into a tree where indented items are children.\n */\nexport function Tree_ofIndentedList(input) {\n const patternInput = Tree_takeAtLevel(0, input);\n if (!equals(patternInput[1], empty())) {\n throw new Error(\"Wrong indentation\");\n }\n return patternInput[0];\n}\n\n","import { split, replace, trimStart, trimEnd, substring, isNullOrWhiteSpace } from \"../fable-library-js.4.24.0/String.js\";\nimport { some } from \"../fable-library-js.4.24.0/Option.js\";\nimport { takeWhile as takeWhile_1, skipWhile, toArray, empty, reverse, cons, map as map_1, ofArray, tail, head, isEmpty } from \"../fable-library-js.4.24.0/List.js\";\nimport { forAll, empty as empty_1, singleton, collect, delay, toList, windowed, exists, min, isEmpty as isEmpty_1, filter, takeWhile, length, map } from \"../fable-library-js.4.24.0/Seq.js\";\nimport { isLetter, isWhiteSpace } from \"../fable-library-js.4.24.0/Char.js\";\nimport { defaultOf, equals, comparePrimitives } from \"../fable-library-js.4.24.0/Util.js\";\nimport { MarkdownRange } from \"./Range.fs.js\";\nimport { List_partitionWhile } from \"./Collections.fs.js\";\nimport { item } from \"../fable-library-js.4.24.0/Array.js\";\nimport { tryGetValue } from \"../fable-library-js.4.24.0/MapUtil.js\";\nimport { FSharpRef } from \"../fable-library-js.4.24.0/Types.js\";\n\nexport function Log_warn(s) {\n console.log(s);\n}\n\n/**\n * Matches when a string is a whitespace or null\n */\nexport function String_$007CWhiteSpace$007C_$007C(s) {\n if (isNullOrWhiteSpace(s)) {\n return some(undefined);\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Returns a string trimmed from both start and end\n */\nexport function String_$007CTrimBoth$007C(text) {\n return text.trim();\n}\n\n/**\n * Matches when a string starts with the specified sub-string\n */\nexport function String_$007CStartsWith$007C_$007C(start, text) {\n if (text.startsWith(start)) {\n return substring(text, start.length);\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Matches when a string starts with the specified sub-string\n * The matched string is trimmed from all whitespace.\n */\nexport function String_$007CStartsWithTrim$007C_$007C(start, text) {\n if (text.startsWith(start)) {\n return substring(text, start.length).trim();\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Matches when a string starts with the given value and ends\n * with a given value (and returns the rest of it)\n */\nexport function String_$007CStartsAndEndsWith$007C_$007C(starts, ends, s) {\n if ((s.startsWith(starts) && s.endsWith(ends)) && (s.length >= (starts.length + ends.length))) {\n return substring(s, starts.length, (s.length - starts.length) - ends.length);\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Matches when a string starts with the given value and ends\n * with a given value (and returns trimmed body)\n */\nexport function String_$007CStartsAndEndsWithTrim$007C_$007C(args_, args__1, _arg) {\n let activePatternResult;\n const tupledArg = [args_, args__1];\n activePatternResult = String_$007CStartsAndEndsWith$007C_$007C(tupledArg[0], tupledArg[1], _arg);\n if (activePatternResult != null) {\n const activePatternResult_1 = String_$007CTrimBoth$007C(activePatternResult);\n return activePatternResult_1;\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Matches when a string starts with a sub-string wrapped using the\n * opening and closing sub-string specified in the parameter.\n * For example \"[aa]bc\" is wrapped in [ and ] pair. Returns the wrapped\n * text together with the rest.\n */\nexport function String_$007CStartsWithWrapped$007C_$007C(starts, ends, text) {\n if (text.startsWith(starts)) {\n const id = text.indexOf(ends, starts.length) | 0;\n if (id >= 0) {\n return [substring(text, starts.length, id - starts.length), substring(text, id + ends.length, (text.length - id) - ends.length)];\n }\n else {\n return undefined;\n }\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Ignores everything until a end-line character is detected, returns the remaining string.\n */\nexport function String_$007CSkipSingleLine$007C(text) {\n const tryEol = (eolList_mut) => {\n tryEol:\n while (true) {\n const eolList = eolList_mut;\n if (!isEmpty(eolList)) {\n const h = head(eolList);\n const matchValue = text.indexOf(h) | 0;\n if (matchValue < 0) {\n eolList_mut = tail(eolList);\n continue tryEol;\n }\n else {\n return substring(text, matchValue + h.length);\n }\n }\n else {\n return text;\n }\n break;\n }\n };\n const result = tryEol(ofArray([\"\\r\\n\", \"\\n\"]));\n const skipped = substring(text, 0, text.length - result.length);\n if (!isNullOrWhiteSpace(skipped)) {\n Log_warn(`skipped '${skipped}' which contains non-whitespace character!`);\n }\n if (result === text) {\n Log_warn(`could not skip a line of ${text}, because no line-ending character was found!`);\n }\n return result;\n}\n\n/**\n * Given a list of lines indented with certan number of whitespace\n * characters (spaces), remove the spaces from the beginning of each line\n * and return the string as a list of lines\n */\nexport function String_removeSpaces(lines) {\n let spaces;\n const xs = map((line) => length(takeWhile(isWhiteSpace, line.split(\"\"))), filter((arg) => !isNullOrWhiteSpace(arg), lines));\n spaces = (isEmpty_1(xs) ? 0 : min(xs, {\n Compare: comparePrimitives,\n }));\n return map_1((line_1) => {\n if (isNullOrWhiteSpace(line_1)) {\n return \"\";\n }\n else {\n return substring(line_1, spaces);\n }\n }, lines);\n}\n\n/**\n * Matches when a string is a whitespace or null\n */\nexport function StringPosition_$007CWhiteSpace$007C_$007C(s, _n) {\n if (isNullOrWhiteSpace(s)) {\n return some(undefined);\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Matches when a string does starts with non-whitespace\n */\nexport function StringPosition_$007CUnindented$007C_$007C(s, _n) {\n if (!isNullOrWhiteSpace(s) && (s.trimStart() === s)) {\n return some(undefined);\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Returns a string trimmed from both start and end\n */\nexport function StringPosition_$007CTrimBoth$007C(text, n) {\n let inputRecord;\n const trimmedStart = text.trimStart();\n const trimmed = trimmedStart.trimEnd();\n return [trimmed, (inputRecord = n, new MarkdownRange(inputRecord.StartLine, (n.StartColumn + text.length) - trimmedStart.length, inputRecord.EndLine, (n.EndColumn - trimmedStart.length) + trimmed.length))];\n}\n\n/**\n * Returns a string trimmed from the end\n */\nexport function StringPosition_$007CTrimEnd$007C(text, n) {\n let inputRecord;\n const trimmed = text.trimEnd();\n return [trimmed, (inputRecord = n, new MarkdownRange(inputRecord.StartLine, inputRecord.StartColumn, inputRecord.EndLine, (n.EndColumn - text.length) + trimmed.length))];\n}\n\n/**\n * Returns a string trimmed from the start\n */\nexport function StringPosition_$007CTrimStart$007C(text, n) {\n let inputRecord;\n const trimmed = text.trimStart();\n return [trimmed, (inputRecord = n, new MarkdownRange(inputRecord.StartLine, (n.StartColumn + text.length) - trimmed.length, inputRecord.EndLine, inputRecord.EndColumn))];\n}\n\n/**\n * Returns a string trimmed from the end using characters given as a parameter\n */\nexport function StringPosition_$007CTrimEndUsing$007C(chars, text, n) {\n let inputRecord;\n const trimmed = trimEnd(text, ...Array.from(chars));\n return [trimmed, (inputRecord = n, new MarkdownRange(inputRecord.StartLine, inputRecord.StartColumn, inputRecord.EndLine, (n.EndColumn - text.length) + trimmed.length))];\n}\n\n/**\n * Returns a string trimmed from the start together with\n * the number of skipped whitespace characters\n */\nexport function StringPosition_$007CTrimStartAndCount$007C(text, n) {\n let inputRecord;\n const trimmed = trimStart(text, \" \", \"\\t\");\n const len = (text.length - trimmed.length) | 0;\n return [len, replace(substring(text, 0, len), \"\\t\", \" \").length, [trimmed, (inputRecord = n, new MarkdownRange(inputRecord.StartLine, (n.StartColumn + text.length) - trimmed.length, inputRecord.EndLine, inputRecord.EndColumn))]];\n}\n\n/**\n * Matches when a string starts with any of the specified sub-strings\n */\nexport function StringPosition_$007CStartsWithAny$007C_$007C(starts, text, _n) {\n if (exists((value) => text.startsWith(value), starts)) {\n return some(undefined);\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Matches when a string starts with the specified sub-string\n */\nexport function StringPosition_$007CStartsWith$007C_$007C(start, text, n) {\n let inputRecord;\n if (text.startsWith(start)) {\n return [substring(text, start.length), (inputRecord = n, new MarkdownRange(inputRecord.StartLine, (n.StartColumn + text.length) - start.length, inputRecord.EndLine, inputRecord.EndColumn))];\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Matches when a string starts with the specified sub-string\n * The matched string is trimmed from all whitespace.\n */\nexport function StringPosition_$007CStartsWithTrim$007C_$007C(start, text, n) {\n let inputRecord;\n if (text.startsWith(start)) {\n return [substring(text, start.length).trim(), (inputRecord = n, new MarkdownRange(inputRecord.StartLine, (n.StartColumn + text.length) - start.length, inputRecord.EndLine, inputRecord.EndColumn))];\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Matches when a string starts with the specified sub-string (ignoring whitespace at the start)\n * The matched string is trimmed from all whitespace.\n */\nexport function StringPosition_$007CStartsWithNTimesTrimIgnoreStartWhitespace$007C_$007C(start, text, _n) {\n if (text.indexOf(start) >= 0) {\n const beforeStart = substring(text, 0, text.indexOf(start));\n if (isNullOrWhiteSpace(beforeStart)) {\n const startAndRest = substring(text, beforeStart.length);\n const startNum = length(takeWhile((y) => (start === y), map((chars) => (chars.join('')), windowed(start.length, startAndRest.split(\"\"))))) | 0;\n return [startNum, beforeStart.length, substring(text, beforeStart.length + (start.length * startNum)).trim()];\n }\n else {\n return undefined;\n }\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Matches when a string starts with the given value and ends\n * with a given value (and returns the rest of it)\n */\nexport function StringPosition_$007CStartsAndEndsWith$007C_$007C(starts, ends, s, n) {\n let inputRecord;\n if ((s.startsWith(starts) && s.endsWith(ends)) && (s.length >= (starts.length + ends.length))) {\n return [substring(s, starts.length, (s.length - starts.length) - ends.length), (inputRecord = n, new MarkdownRange(inputRecord.StartLine, (n.StartColumn + s.length) - starts.length, inputRecord.EndLine, (n.EndColumn - s.length) + ends.length))];\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Matches when a string starts with the given value and ends\n * with a given value (and returns trimmed body)\n */\nexport function StringPosition_$007CStartsAndEndsWithTrim$007C_$007C(args_, args__1, _arg1_, _arg1__1) {\n const _arg = [_arg1_, _arg1__1];\n let activePatternResult;\n const tupledArg = [args_, args__1];\n activePatternResult = StringPosition_$007CStartsAndEndsWith$007C_$007C(tupledArg[0], tupledArg[1], _arg[0], _arg[1]);\n if (activePatternResult != null) {\n let activePatternResult_1;\n const tupledArg_1 = activePatternResult;\n activePatternResult_1 = StringPosition_$007CTrimBoth$007C(tupledArg_1[0], tupledArg_1[1]);\n return activePatternResult_1;\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Matches when a string starts with a non-zero number of complete\n * repetitions of the specified parameter (and returns the number\n * of repetitions, together with the rest of the string)\n * \n * let (StartsWithRepeated \"/\\\" (2, \" abc\")) = \"/\\/\\ abc\"\n */\nexport function StringPosition_$007CStartsWithRepeated$007C_$007C(repeated, text, ln) {\n let inputRecord;\n const loop = (i_mut) => {\n loop:\n while (true) {\n const i = i_mut;\n if (i === text.length) {\n return i | 0;\n }\n else if (text[i] !== repeated[i % repeated.length]) {\n return i | 0;\n }\n else {\n i_mut = (i + 1);\n continue loop;\n }\n break;\n }\n };\n const n = loop(0) | 0;\n if ((n === 0) ? true : ((n % repeated.length) !== 0)) {\n return undefined;\n }\n else {\n return [~~(n / repeated.length), [substring(text, n, text.length - n), (inputRecord = ln, new MarkdownRange(inputRecord.StartLine, n, inputRecord.EndLine, inputRecord.EndColumn))]];\n }\n}\n\n/**\n * Matches when a string starts with a sub-string wrapped using the\n * opening and closing sub-string specified in the parameter.\n * For example \"[aa]bc\" is wrapped in [ and ] pair. Returns the wrapped\n * text together with the rest.\n */\nexport function StringPosition_$007CStartsWithWrapped$007C_$007C(starts, ends, text, n) {\n let inputRecord;\n if (text.startsWith(starts)) {\n const id = text.indexOf(ends, starts.length) | 0;\n if (id >= 0) {\n return [substring(text, starts.length, id - starts.length), [substring(text, id + ends.length, (text.length - id) - ends.length), (inputRecord = n, new MarkdownRange(inputRecord.StartLine, id + ends.length, inputRecord.EndLine, inputRecord.EndColumn))]];\n }\n else {\n return undefined;\n }\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Matches when a string consists of some number of\n * complete repetitions of a specified sub-string.\n */\nexport function StringPosition_$007CEqualsRepeated$007C_$007C(repeated, _n, _arg1_, _arg1__1) {\n const _arg = [_arg1_, _arg1__1];\n let matchResult, _n_1;\n const activePatternResult = StringPosition_$007CStartsWithRepeated$007C_$007C(repeated, _arg[0], _arg[1]);\n if (activePatternResult != null) {\n if (activePatternResult[1][0] === \"\") {\n matchResult = 0;\n _n_1 = activePatternResult[0];\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return some(undefined);\n default:\n return undefined;\n }\n}\n\n/**\n * Matches a list if it starts with a bracketed list. Nested brackets\n * are skipped (by counting opening and closing brackets) and can be\n * escaped using the '\\' symbol.\n */\nexport function List_$007CBracketDelimited$007C_$007C(startc, endc, input) {\n const loop = (acc_mut, count_mut, _arg_mut) => {\n loop:\n while (true) {\n const acc = acc_mut, count = count_mut, _arg = _arg_mut;\n let matchResult, x_10, xs_10, x_11, xs_11, x_12, xs_12, x_13, xs_13, x_14, xs_14;\n if (isEmpty(_arg)) {\n matchResult = 5;\n }\n else if (head(_arg) === \"\\\\\") {\n if (!isEmpty(tail(_arg))) {\n if (head(tail(_arg)) === endc) {\n matchResult = 0;\n x_10 = head(tail(_arg));\n xs_10 = tail(tail(_arg));\n }\n else if ((head(_arg) === endc) && (count === 0)) {\n matchResult = 1;\n x_11 = head(_arg);\n xs_11 = tail(_arg);\n }\n else if (head(_arg) === endc) {\n matchResult = 2;\n x_12 = head(_arg);\n xs_12 = tail(_arg);\n }\n else if (head(_arg) === startc) {\n matchResult = 3;\n x_13 = head(_arg);\n xs_13 = tail(_arg);\n }\n else {\n matchResult = 4;\n x_14 = head(_arg);\n xs_14 = tail(_arg);\n }\n }\n else if ((head(_arg) === endc) && (count === 0)) {\n matchResult = 1;\n x_11 = head(_arg);\n xs_11 = tail(_arg);\n }\n else if (head(_arg) === endc) {\n matchResult = 2;\n x_12 = head(_arg);\n xs_12 = tail(_arg);\n }\n else if (head(_arg) === startc) {\n matchResult = 3;\n x_13 = head(_arg);\n xs_13 = tail(_arg);\n }\n else {\n matchResult = 4;\n x_14 = head(_arg);\n xs_14 = tail(_arg);\n }\n }\n else if ((head(_arg) === endc) && (count === 0)) {\n matchResult = 1;\n x_11 = head(_arg);\n xs_11 = tail(_arg);\n }\n else if (head(_arg) === endc) {\n matchResult = 2;\n x_12 = head(_arg);\n xs_12 = tail(_arg);\n }\n else if (head(_arg) === startc) {\n matchResult = 3;\n x_13 = head(_arg);\n xs_13 = tail(_arg);\n }\n else {\n matchResult = 4;\n x_14 = head(_arg);\n xs_14 = tail(_arg);\n }\n switch (matchResult) {\n case 0: {\n acc_mut = cons(x_10, acc);\n count_mut = count;\n _arg_mut = xs_10;\n continue loop;\n }\n case 1:\n return [reverse(acc), xs_11];\n case 2: {\n acc_mut = cons(x_12, acc);\n count_mut = (count - 1);\n _arg_mut = xs_12;\n continue loop;\n }\n case 3: {\n acc_mut = cons(x_13, acc);\n count_mut = (count + 1);\n _arg_mut = xs_13;\n continue loop;\n }\n case 4: {\n acc_mut = cons(x_14, acc);\n count_mut = count;\n _arg_mut = xs_14;\n continue loop;\n }\n default:\n return undefined;\n }\n break;\n }\n };\n let matchResult_1, x_16, xs_16;\n if (!isEmpty(input)) {\n if (head(input) === startc) {\n matchResult_1 = 0;\n x_16 = head(input);\n xs_16 = tail(input);\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n switch (matchResult_1) {\n case 0:\n return loop(empty(), 0, xs_16);\n default:\n return undefined;\n }\n}\n\n/**\n * Returns a list of characters as a string.\n */\nexport function List_$007CAsString$007C(chars) {\n return toArray(chars).join('');\n}\n\n/**\n * Removes blank lines from the start and the end of a list\n */\nexport function Lines_$007CTrimBlank$007C(lines) {\n return reverse(skipWhile((tupledArg_1) => isNullOrWhiteSpace(tupledArg_1[0]), reverse(skipWhile((tupledArg) => isNullOrWhiteSpace(tupledArg[0]), lines))));\n}\n\n/**\n * Matches when there are some lines at the beginning that are\n * either empty (or whitespace) or start with the specified string.\n * Returns all such lines from the beginning until a different line.\n */\nexport function Lines_$007CTakeStartingWithOrBlank$007C_$007C(start, input) {\n const matchValue = List_partitionWhile((s) => {\n if (isNullOrWhiteSpace(s)) {\n return true;\n }\n else {\n return s.startsWith(start);\n }\n }, input);\n if (!equals(matchValue[0], empty())) {\n return [matchValue[0], matchValue[1]];\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Matches when there are some lines at the beginning that are\n * either empty (or whitespace) or start with at least 4 spaces (a tab counts as 4 spaces here).\n * Returns all such lines from the beginning until a different line and\n * the number of spaces the first line started with.\n */\nexport function Lines_$007CTakeCodeBlock$007C_$007C(input) {\n const matchValue = List_partitionWhile((tupledArg) => {\n const s_1 = tupledArg[0];\n if (isNullOrWhiteSpace(s_1)) {\n return true;\n }\n else {\n const normalized = replace(s_1, \"\\t\", \" \");\n return (normalized.length >= 4) && (substring(normalized, 0, 4) === (Array(4 + 1).join(\" \")));\n }\n }, input);\n if (!equals(matchValue[0], empty()) && (4 >= 4)) {\n return [4, matchValue[0], matchValue[1]];\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Removes whitespace lines from the beginning of the list\n */\nexport function Lines_$007CTrimBlankStart$007C(lines) {\n return [takeWhile_1((tupledArg) => isNullOrWhiteSpace(tupledArg[0]), lines), skipWhile((tupledArg_1) => isNullOrWhiteSpace(tupledArg_1[0]), lines)];\n}\n\n/**\n * Trims all lines of the current paragraph\n */\nexport function Lines_$007CTrimParagraphLines$007C(lines) {\n return map_1((tupledArg_1) => {\n let inputRecord;\n const s = tupledArg_1[0];\n const n_1 = tupledArg_1[1];\n const endsWithTwoSpaces = s.endsWith(\" \");\n const trimmed = trimEnd(s, \" \") + (endsWithTwoSpaces ? \" \" : \"\");\n return [trimmed, (inputRecord = n_1, new MarkdownRange(inputRecord.StartLine, inputRecord.StartColumn, inputRecord.EndLine, (n_1.EndColumn - s.length) + trimmed.length))];\n }, map_1((tupledArg) => StringPosition_$007CTrimStart$007C(tupledArg[0], tupledArg[1]), lines));\n}\n\n/**\n * Parameterized pattern that assigns the specified value to the\n * first component of a tuple. Usage:\n * \n * match str with\n * | Let 1 (n, \"one\") | Let 2 (n, \"two\") -> n\n */\nexport function $007CLet$007C(a, b) {\n return [a, b];\n}\n\n/**\n * Utility for parsing commands. Commands can be used in different places. We\n * recognize `key1=value, key2=value` and also `key1:value, key2:value`\n * The key of the command should be identifier with just\n * characters in it - otherwise, the parsing fails.\n */\nexport function $007CParseCommands$007C_$007C(str) {\n const kvs = toList(delay(() => collect((cmd) => {\n const kv = split(cmd, [\"=\", \":\"]);\n return (kv.length === 2) ? singleton([item(0, kv).trim(), item(1, kv).trim()]) : ((kv.length === 1) ? singleton([item(0, kv).trim(), \"\"]) : empty_1());\n }, split(str, [\",\"], undefined, 0))));\n if (forAll((arg) => forAll((c) => {\n if (isLetter(c) ? true : (c === \"_\")) {\n return true;\n }\n else {\n return c === \"-\";\n }\n }, arg[0].split(\"\")), kvs) && !equals(kvs, empty())) {\n return new Map(kvs);\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Utility for parsing commands - this deals with a single command.\n * The key of the command should be identifier with just\n * characters in it - otherwise, the parsing fails.\n */\nexport function $007CParseCommand$007C_$007C(cmd) {\n const kv = split(cmd, [\"=\", \":\"]);\n if ((kv.length >= 1) && !forAll(isLetter, item(0, kv).split(\"\"))) {\n return undefined;\n }\n else {\n switch (kv.length) {\n case 2:\n return [item(0, kv).trim(), item(1, kv).trim()];\n case 1:\n return [item(0, kv).trim(), \"\"];\n default:\n return undefined;\n }\n }\n}\n\n/**\n * Lookup in a dictionary\n */\nexport function $007CCommand$007C_$007C(k, d) {\n let matchValue;\n let outArg = defaultOf();\n matchValue = [tryGetValue(d, k, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return some(matchValue[1]);\n }\n else {\n return undefined;\n }\n}\n\n","import { Union } from \"../fable-library-js.4.24.0/Types.js\";\nimport { tuple_type, char_type, int32_type, class_type, list_type, option_type, string_type, union_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { MarkdownRange_$reflection } from \"./Range.fs.js\";\nimport { tail, head, empty, reverse, length, cons, concat, singleton, isEmpty } from \"../fable-library-js.4.24.0/List.js\";\nimport { FSharpChoice$3, FSharpChoice$2 } from \"../fable-library-js.4.24.0/Choice.js\";\n\nexport class MarkdownListKind extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Ordered\", \"Unordered\"];\n }\n}\n\nexport function MarkdownListKind_$reflection() {\n return union_type(\"Fable.Formatting.Markdown.MarkdownListKind\", [], MarkdownListKind, () => [[], []]);\n}\n\nexport class MarkdownColumnAlignment extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"AlignLeft\", \"AlignRight\", \"AlignCenter\", \"AlignDefault\"];\n }\n}\n\nexport function MarkdownColumnAlignment_$reflection() {\n return union_type(\"Fable.Formatting.Markdown.MarkdownColumnAlignment\", [], MarkdownColumnAlignment, () => [[], [], [], []]);\n}\n\nexport class MarkdownSpan extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Literal\", \"InlineCode\", \"Strong\", \"Emphasis\", \"AnchorLink\", \"DirectLink\", \"IndirectLink\", \"DirectImage\", \"IndirectImage\", \"HardLineBreak\", \"LatexInlineMath\", \"LatexDisplayMath\", \"EmbedSpans\"];\n }\n}\n\nexport function MarkdownSpan_$reflection() {\n return union_type(\"Fable.Formatting.Markdown.MarkdownSpan\", [], MarkdownSpan, () => [[[\"text\", string_type], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"code\", string_type], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"body\", list_type(MarkdownSpan_$reflection())], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"body\", list_type(MarkdownSpan_$reflection())], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"link\", string_type], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"body\", list_type(MarkdownSpan_$reflection())], [\"link\", string_type], [\"title\", option_type(string_type)], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"body\", list_type(MarkdownSpan_$reflection())], [\"original\", string_type], [\"key\", string_type], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"body\", string_type], [\"link\", string_type], [\"title\", option_type(string_type)], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"body\", string_type], [\"link\", string_type], [\"key\", string_type], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"range\", option_type(MarkdownRange_$reflection())]], [[\"code\", string_type], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"code\", string_type], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"customSpans\", class_type(\"Fable.Formatting.Markdown.MarkdownEmbedSpans\")], [\"range\", option_type(MarkdownRange_$reflection())]]]);\n}\n\nexport class MarkdownParagraph extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Heading\", \"Paragraph\", \"CodeBlock\", \"InlineHtmlBlock\", \"ListBlock\", \"QuotedBlock\", \"Span\", \"LatexBlock\", \"HorizontalRule\", \"TableBlock\", \"OtherBlock\", \"EmbedParagraphs\", \"YamlFrontmatter\", \"OutputBlock\"];\n }\n}\n\nexport function MarkdownParagraph_$reflection() {\n return union_type(\"Fable.Formatting.Markdown.MarkdownParagraph\", [], MarkdownParagraph, () => [[[\"size\", int32_type], [\"body\", list_type(MarkdownSpan_$reflection())], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"body\", list_type(MarkdownSpan_$reflection())], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"code\", string_type], [\"executionCount\", option_type(int32_type)], [\"language\", string_type], [\"ignoredLine\", string_type], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"code\", string_type], [\"executionCount\", option_type(int32_type)], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"kind\", MarkdownListKind_$reflection()], [\"items\", list_type(list_type(MarkdownParagraph_$reflection()))], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"paragraphs\", list_type(MarkdownParagraph_$reflection())], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"body\", list_type(MarkdownSpan_$reflection())], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"env\", string_type], [\"body\", list_type(string_type)], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"character\", char_type], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"headers\", option_type(list_type(list_type(MarkdownParagraph_$reflection())))], [\"alignments\", list_type(MarkdownColumnAlignment_$reflection())], [\"rows\", list_type(list_type(list_type(MarkdownParagraph_$reflection())))], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"lines\", list_type(tuple_type(string_type, MarkdownRange_$reflection()))], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"customParagraphs\", class_type(\"Fable.Formatting.Markdown.MarkdownEmbedParagraphs\")], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"yaml\", list_type(string_type)], [\"range\", option_type(MarkdownRange_$reflection())]], [[\"output\", string_type], [\"kind\", string_type], [\"executionCount\", option_type(int32_type)]]]);\n}\n\nexport function Dsl_$0023(value) {\n return new MarkdownParagraph(0, [1, value, undefined]);\n}\n\nexport function Dsl_$0023$0023(value) {\n return new MarkdownParagraph(0, [2, value, undefined]);\n}\n\nexport function Dsl_$0023$0023$0023(value) {\n return new MarkdownParagraph(0, [3, value, undefined]);\n}\n\nexport function Dsl_$0023$0023$0023$0023(value) {\n return new MarkdownParagraph(0, [4, value, undefined]);\n}\n\nexport function Dsl_$0023$0023$0023$0023$0023(value) {\n return new MarkdownParagraph(0, [5, value, undefined]);\n}\n\nexport function Dsl_strong(value) {\n return new MarkdownSpan(2, [value, undefined]);\n}\n\nexport function Dsl_p(value) {\n return new MarkdownParagraph(1, [value, undefined]);\n}\n\nexport function Dsl_span(value) {\n return new MarkdownParagraph(6, [value, undefined]);\n}\n\nexport function Dsl_op_BangBang(value) {\n return new MarkdownSpan(0, [value, undefined]);\n}\n\nexport function Dsl_link(content, url) {\n return new MarkdownSpan(5, [content, url, undefined, undefined]);\n}\n\nexport function Dsl_ul(value) {\n return new MarkdownParagraph(4, [new MarkdownListKind(1, []), value, undefined]);\n}\n\nexport function Dsl_ol(value) {\n return new MarkdownParagraph(4, [new MarkdownListKind(0, []), value, undefined]);\n}\n\nexport function Dsl_table(headers, alignments, rows) {\n return new MarkdownParagraph(9, [isEmpty(headers) ? undefined : headers, alignments, rows, undefined]);\n}\n\nexport function Dsl_img(body, link) {\n return new MarkdownSpan(7, [body, link, undefined, undefined]);\n}\n\nexport class MarkdownPatterns_SpanLeafInfo extends Union {\n constructor(Item) {\n super();\n this.tag = 0;\n this.fields = [Item];\n }\n cases() {\n return [\"SL\"];\n }\n}\n\nexport function MarkdownPatterns_SpanLeafInfo_$reflection() {\n return union_type(\"Fable.Formatting.Markdown.MarkdownPatterns.SpanLeafInfo\", [], MarkdownPatterns_SpanLeafInfo, () => [[[\"Item\", MarkdownSpan_$reflection()]]]);\n}\n\nexport class MarkdownPatterns_SpanNodeInfo extends Union {\n constructor(Item) {\n super();\n this.tag = 0;\n this.fields = [Item];\n }\n cases() {\n return [\"SN\"];\n }\n}\n\nexport function MarkdownPatterns_SpanNodeInfo_$reflection() {\n return union_type(\"Fable.Formatting.Markdown.MarkdownPatterns.SpanNodeInfo\", [], MarkdownPatterns_SpanNodeInfo, () => [[[\"Item\", MarkdownSpan_$reflection()]]]);\n}\n\nexport class MarkdownPatterns_ParagraphSpansInfo extends Union {\n constructor(Item) {\n super();\n this.tag = 0;\n this.fields = [Item];\n }\n cases() {\n return [\"PS\"];\n }\n}\n\nexport function MarkdownPatterns_ParagraphSpansInfo_$reflection() {\n return union_type(\"Fable.Formatting.Markdown.MarkdownPatterns.ParagraphSpansInfo\", [], MarkdownPatterns_ParagraphSpansInfo, () => [[[\"Item\", MarkdownParagraph_$reflection()]]]);\n}\n\nexport class MarkdownPatterns_ParagraphLeafInfo extends Union {\n constructor(Item) {\n super();\n this.tag = 0;\n this.fields = [Item];\n }\n cases() {\n return [\"PL\"];\n }\n}\n\nexport function MarkdownPatterns_ParagraphLeafInfo_$reflection() {\n return union_type(\"Fable.Formatting.Markdown.MarkdownPatterns.ParagraphLeafInfo\", [], MarkdownPatterns_ParagraphLeafInfo, () => [[[\"Item\", MarkdownParagraph_$reflection()]]]);\n}\n\nexport class MarkdownPatterns_ParagraphNestedInfo extends Union {\n constructor(Item) {\n super();\n this.tag = 0;\n this.fields = [Item];\n }\n cases() {\n return [\"PN\"];\n }\n}\n\nexport function MarkdownPatterns_ParagraphNestedInfo_$reflection() {\n return union_type(\"Fable.Formatting.Markdown.MarkdownPatterns.ParagraphNestedInfo\", [], MarkdownPatterns_ParagraphNestedInfo, () => [[[\"Item\", MarkdownParagraph_$reflection()]]]);\n}\n\nexport function MarkdownPatterns_$007CSpanLeaf$007CSpanNode$007C(span) {\n let matchResult, spans;\n switch (span.tag) {\n case 2: {\n matchResult = 1;\n spans = span.fields[0];\n break;\n }\n case 3: {\n matchResult = 1;\n spans = span.fields[0];\n break;\n }\n case 5: {\n matchResult = 1;\n spans = span.fields[0];\n break;\n }\n case 6: {\n matchResult = 1;\n spans = span.fields[0];\n break;\n }\n default:\n matchResult = 0;\n }\n switch (matchResult) {\n case 0:\n return new FSharpChoice$2(0, [new MarkdownPatterns_SpanLeafInfo(span)]);\n default:\n return new FSharpChoice$2(1, [[new MarkdownPatterns_SpanNodeInfo(span), spans]]);\n }\n}\n\nexport function MarkdownPatterns_SpanLeaf(_arg) {\n return _arg.fields[0];\n}\n\nexport function MarkdownPatterns_SpanNode(_arg, spans) {\n const span = _arg.fields[0];\n switch (span.tag) {\n case 2:\n return new MarkdownSpan(2, [spans, span.fields[1]]);\n case 3:\n return new MarkdownSpan(3, [spans, span.fields[1]]);\n case 5:\n return new MarkdownSpan(5, [spans, span.fields[1], span.fields[2], span.fields[3]]);\n case 6:\n return new MarkdownSpan(6, [spans, span.fields[1], span.fields[2], span.fields[3]]);\n default:\n throw new Error(\"Incorrect SpanNodeInfo\\\\nParameter name: \");\n }\n}\n\nexport function MarkdownPatterns_$007CParagraphLeaf$007CParagraphNested$007CParagraphSpans$007C(par) {\n let matchResult, spans;\n switch (par.tag) {\n case 10:\n case 13:\n case 2:\n case 3:\n case 11:\n case 7:\n case 12:\n case 8: {\n matchResult = 1;\n break;\n }\n case 4: {\n matchResult = 2;\n break;\n }\n case 5: {\n matchResult = 3;\n break;\n }\n case 9: {\n matchResult = 4;\n break;\n }\n case 1: {\n matchResult = 0;\n spans = par.fields[0];\n break;\n }\n case 6: {\n matchResult = 0;\n spans = par.fields[0];\n break;\n }\n default: {\n matchResult = 0;\n spans = par.fields[1];\n }\n }\n switch (matchResult) {\n case 0:\n return new FSharpChoice$3(2, [[new MarkdownPatterns_ParagraphSpansInfo(par), spans]]);\n case 1:\n return new FSharpChoice$3(0, [new MarkdownPatterns_ParagraphLeafInfo(par)]);\n case 2:\n return new FSharpChoice$3(1, [[new MarkdownPatterns_ParagraphNestedInfo(par), par.fields[1]]]);\n case 3:\n return new FSharpChoice$3(1, [[new MarkdownPatterns_ParagraphNestedInfo(par), singleton(par.fields[0])]]);\n default: {\n const rows = par.fields[2];\n const headers = par.fields[0];\n if (headers != null) {\n return new FSharpChoice$3(1, [[new MarkdownPatterns_ParagraphNestedInfo(par), concat(cons(headers, rows))]]);\n }\n else {\n return new FSharpChoice$3(1, [[new MarkdownPatterns_ParagraphNestedInfo(par), concat(rows)]]);\n }\n }\n }\n}\n\nexport function MarkdownPatterns_ParagraphSpans(_arg, spans) {\n const par = _arg.fields[0];\n switch (par.tag) {\n case 0:\n return new MarkdownParagraph(0, [par.fields[0], spans, par.fields[2]]);\n case 1:\n return new MarkdownParagraph(1, [spans, par.fields[1]]);\n case 6:\n return new MarkdownParagraph(6, [spans, par.fields[1]]);\n default:\n throw new Error(\"Incorrect ParagraphSpansInfo.\\\\nParameter name: \");\n }\n}\n\nexport function MarkdownPatterns_ParagraphLeaf(_arg) {\n return _arg.fields[0];\n}\n\nexport function MarkdownPatterns_ParagraphNested(_arg, pars) {\n const par = _arg.fields[0];\n switch (par.tag) {\n case 4:\n return new MarkdownParagraph(4, [par.fields[0], pars, par.fields[2]]);\n case 5:\n return new MarkdownParagraph(5, [concat(pars), par.fields[1]]);\n case 9: {\n const r_2 = par.fields[3];\n const alignments = par.fields[1];\n let rows;\n const n = length(alignments) | 0;\n const loop = (n_1_mut, left_mut, ansList_mut, curList_mut, items_mut) => {\n loop:\n while (true) {\n const n_1 = n_1_mut, left = left_mut, ansList = ansList_mut, curList = curList_mut, items = items_mut;\n if (isEmpty(items) && isEmpty(curList)) {\n return reverse(ansList);\n }\n else if ((left === 0) ? true : isEmpty(items)) {\n n_1_mut = n_1;\n left_mut = n_1;\n ansList_mut = cons(reverse(curList), ansList);\n curList_mut = empty();\n items_mut = items;\n continue loop;\n }\n else {\n n_1_mut = n_1;\n left_mut = (left - 1);\n ansList_mut = ansList;\n curList_mut = cons(head(items), curList);\n items_mut = tail(items);\n continue loop;\n }\n break;\n }\n };\n rows = loop(n, n, empty(), empty(), pars);\n if (isEmpty(rows) ? true : (par.fields[0] == null)) {\n return new MarkdownParagraph(9, [undefined, alignments, rows, r_2]);\n }\n else {\n return new MarkdownParagraph(9, [head(rows), alignments, tail(rows), r_2]);\n }\n }\n default:\n throw new Error(\"Incorrect ParagraphNestedInfo.\\\\nParameter name: \");\n }\n}\n\n","import { Lines_$007CTrimParagraphLines$007C, StringPosition_$007CStartsWithWrapped$007C_$007C, Lines_$007CTrimBlankStart$007C, StringPosition_$007CStartsWith$007C_$007C, StringPosition_$007CStartsAndEndsWith$007C_$007C, StringPosition_$007CUnindented$007C_$007C, StringPosition_$007CWhiteSpace$007C_$007C, StringPosition_$007CStartsWithAny$007C_$007C, StringPosition_$007CTrimStartAndCount$007C, $007CLet$007C, StringPosition_$007CStartsWithNTimesTrimIgnoreStartWhitespace$007C_$007C, Lines_$007CTrimBlank$007C, Lines_$007CTakeCodeBlock$007C_$007C, StringPosition_$007CEqualsRepeated$007C_$007C, StringPosition_$007CTrimEnd$007C, StringPosition_$007CStartsWithRepeated$007C_$007C, List_$007CAsString$007C, List_$007CBracketDelimited$007C_$007C, StringPosition_$007CTrimBoth$007C } from \"./StringParsing.fs.js\";\nimport { printf, toFail, join, split, isNullOrWhiteSpace, replicate, getCharAtIndex, isNullOrEmpty, trimStart, trimEnd, substring } from \"../fable-library-js.4.24.0/String.js\";\nimport { zip, replicate as replicate_1, forAll as forAll_1, choose, skipWhile, map, takeWhile, initialize, ofSeq, append as append_1, splitAt, toArray, singleton, ofArray, length, skip, empty, cons, reverse, ofArrayWithTail, tail, head, isEmpty } from \"../fable-library-js.4.24.0/List.js\";\nimport { exists, empty as empty_1, toArray as toArray_1, take, tryFind, collect, toList, forAll, singleton as singleton_1, append, delay, tryPick } from \"../fable-library-js.4.24.0/Seq.js\";\nimport { List_nestUnderLastMatching, Tree$1, Tree_ofIndentedList, List_partitionWhileLookahead, List_partitionUntilLookahead, List_partitionUntil, List_partitionWhile, List_partitionUntilEquals } from \"./Collections.fs.js\";\nimport { MarkdownParagraph, MarkdownColumnAlignment, MarkdownListKind, MarkdownSpan } from \"./MarkdownModel.fs.js\";\nimport { create, match } from \"../fable-library-js.4.24.0/RegExp.js\";\nimport { Record } from \"../fable-library-js.4.24.0/Types.js\";\nimport { record_type, enum_type, int32_type, bool_type, class_type, tuple_type, option_type, string_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { MarkdownRangeModule_mergeRanges, MarkdownRangeModule_zero, MarkdownRange, MarkdownRange_$reflection } from \"./Range.fs.js\";\nimport { equals, Lazy } from \"../fable-library-js.4.24.0/Util.js\";\nimport { isDigit, isWhiteSpace } from \"../fable-library-js.4.24.0/Char.js\";\nimport { item as item_2, map as map_1 } from \"../fable-library-js.4.24.0/Array.js\";\nimport { some, value as value_14 } from \"../fable-library-js.4.24.0/Option.js\";\nimport { rangeDouble } from \"../fable-library-js.4.24.0/Range.js\";\nimport { addToDict } from \"../fable-library-js.4.24.0/MapUtil.js\";\n\n/**\n * Splits a link formatted as `http://link \"title\"` into a link part\n * and an optional title part (may be wrapped using quote or double-quotes)\n */\nexport function getLinkAndTitle(_arg1_, _arg1__1) {\n const _arg = [_arg1_, _arg1__1];\n const input = StringPosition_$007CTrimBoth$007C(_arg[0], _arg[1])[0];\n let patternInput;\n if (input.length === 0) {\n patternInput = [\"\", undefined];\n }\n else {\n const c = input[input.length - 1];\n if ((c === \"\\'\") ? true : (c === \"\\\"\")) {\n const start = input.indexOf(c) | 0;\n patternInput = [substring(input, 0, start).trim(), substring(input, start + 1, (input.length - 2) - start).trim()];\n }\n else {\n patternInput = [input, undefined];\n }\n }\n return [trimEnd(trimStart(patternInput[0], \"<\"), \">\"), patternInput[1]];\n}\n\n/**\n * Matches a list if it starts with a sub-list that is delimited\n * using the specified delimiters. Returns a wrapped list and the rest.\n * \n * This is similar to `List.Delimited`, but it skips over escaped characters.\n */\nexport function $007CDelimitedMarkdown$007C_$007C(bracket, input) {\n let loop_2;\n const loop = (acc_mut, _arg_mut) => {\n let loop_1;\n loop:\n while (true) {\n const acc = acc_mut, _arg = _arg_mut;\n let activePatternResult;\n const input_1 = _arg;\n let matchResult, c, rest;\n if (!isEmpty(input_1)) {\n if (head(input_1) === \"\\\\\") {\n if (!isEmpty(tail(input_1))) {\n switch (head(tail(input_1))) {\n case \"!\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"#\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"$\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"(\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \")\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"*\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"+\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"-\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \".\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \">\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"[\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"\\\\\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"]\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"_\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"`\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"{\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"}\": {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n default:\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n activePatternResult = [c, rest];\n break;\n }\n default:\n activePatternResult = undefined;\n }\n if (activePatternResult != null) {\n const x_2 = activePatternResult[0];\n const xs_2 = activePatternResult[1];\n acc_mut = ofArrayWithTail([x_2, \"\\\\\"], acc);\n _arg_mut = xs_2;\n continue loop;\n }\n else if ((loop_1 = ((start_1_mut, list_1_mut) => {\n loop_1:\n while (true) {\n const start_1 = start_1_mut, list_1 = list_1_mut;\n let matchResult_1, x_1, xs_1, y_1, ys_1;\n if (isEmpty(start_1)) {\n matchResult_1 = 1;\n }\n else if (!isEmpty(list_1)) {\n if (head(start_1) === head(list_1)) {\n matchResult_1 = 0;\n x_1 = head(start_1);\n xs_1 = tail(start_1);\n y_1 = head(list_1);\n ys_1 = tail(list_1);\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n matchResult_1 = 2;\n }\n switch (matchResult_1) {\n case 0: {\n start_1_mut = xs_1;\n list_1_mut = ys_1;\n continue loop_1;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_1(bracket, _arg))) {\n return [reverse(acc), _arg];\n }\n else if (isEmpty(_arg)) {\n return undefined;\n }\n else {\n acc_mut = cons(head(_arg), acc);\n _arg_mut = tail(_arg);\n continue loop;\n }\n break;\n }\n };\n if ((loop_2 = ((start_1_1_mut, list_1_1_mut) => {\n loop_2:\n while (true) {\n const start_1_1 = start_1_1_mut, list_1_1 = list_1_1_mut;\n let matchResult_2, x_1_1, xs_1_1, y_1_1, ys_1_1;\n if (isEmpty(start_1_1)) {\n matchResult_2 = 1;\n }\n else if (!isEmpty(list_1_1)) {\n if (head(start_1_1) === head(list_1_1)) {\n matchResult_2 = 0;\n x_1_1 = head(start_1_1);\n xs_1_1 = tail(start_1_1);\n y_1_1 = head(list_1_1);\n ys_1_1 = tail(list_1_1);\n }\n else {\n matchResult_2 = 2;\n }\n }\n else {\n matchResult_2 = 2;\n }\n switch (matchResult_2) {\n case 0: {\n start_1_1_mut = xs_1_1;\n list_1_1_mut = ys_1_1;\n continue loop_2;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_2(bracket, input))) {\n const matchValue_2 = loop(empty(), skip(length(bracket), input));\n if (matchValue_2 == null) {\n return undefined;\n }\n else {\n const post = matchValue_2[1];\n return [matchValue_2[0], skip(length(bracket), post)];\n }\n }\n else {\n return undefined;\n }\n}\n\n/**\n * This is similar to `List.Delimited`, but it skips over Latex inline math characters.\n */\nexport function $007CDelimitedLatexDisplayMath$007C_$007C(bracket, input) {\n let loop_2;\n const loop = (acc_mut, _arg_mut) => {\n let loop_1;\n loop:\n while (true) {\n const acc = acc_mut, _arg = _arg_mut;\n let activePatternResult;\n const input_1 = _arg;\n let matchResult, c, rest;\n if (!isEmpty(input_1)) {\n if (head(input_1) === \"\\\\\") {\n if (!isEmpty(tail(input_1))) {\n if (head(tail(input_1)) === \"$\") {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n activePatternResult = [c, rest];\n break;\n }\n default:\n activePatternResult = undefined;\n }\n if (activePatternResult != null) {\n const x_2 = activePatternResult[0];\n const xs_2 = activePatternResult[1];\n acc_mut = ofArrayWithTail([x_2, \"\\\\\"], acc);\n _arg_mut = xs_2;\n continue loop;\n }\n else if ((loop_1 = ((start_1_mut, list_1_mut) => {\n loop_1:\n while (true) {\n const start_1 = start_1_mut, list_1 = list_1_mut;\n let matchResult_1, x_1, xs_1, y_1, ys_1;\n if (isEmpty(start_1)) {\n matchResult_1 = 1;\n }\n else if (!isEmpty(list_1)) {\n if (head(start_1) === head(list_1)) {\n matchResult_1 = 0;\n x_1 = head(start_1);\n xs_1 = tail(start_1);\n y_1 = head(list_1);\n ys_1 = tail(list_1);\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n matchResult_1 = 2;\n }\n switch (matchResult_1) {\n case 0: {\n start_1_mut = xs_1;\n list_1_mut = ys_1;\n continue loop_1;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_1(bracket, _arg))) {\n return [reverse(acc), _arg];\n }\n else if (isEmpty(_arg)) {\n return undefined;\n }\n else {\n acc_mut = cons(head(_arg), acc);\n _arg_mut = tail(_arg);\n continue loop;\n }\n break;\n }\n };\n if ((loop_2 = ((start_1_1_mut, list_1_1_mut) => {\n loop_2:\n while (true) {\n const start_1_1 = start_1_1_mut, list_1_1 = list_1_1_mut;\n let matchResult_2, x_1_1, xs_1_1, y_1_1, ys_1_1;\n if (isEmpty(start_1_1)) {\n matchResult_2 = 1;\n }\n else if (!isEmpty(list_1_1)) {\n if (head(start_1_1) === head(list_1_1)) {\n matchResult_2 = 0;\n x_1_1 = head(start_1_1);\n xs_1_1 = tail(start_1_1);\n y_1_1 = head(list_1_1);\n ys_1_1 = tail(list_1_1);\n }\n else {\n matchResult_2 = 2;\n }\n }\n else {\n matchResult_2 = 2;\n }\n switch (matchResult_2) {\n case 0: {\n start_1_1_mut = xs_1_1;\n list_1_1_mut = ys_1_1;\n continue loop_2;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_2(bracket, input))) {\n const matchValue_2 = loop(empty(), skip(length(bracket), input));\n if (matchValue_2 == null) {\n return undefined;\n }\n else {\n const post = matchValue_2[1];\n return [matchValue_2[0], skip(length(bracket), post)];\n }\n }\n else {\n return undefined;\n }\n}\n\n/**\n * This is similar to `List.Delimited`, but it skips over Latex inline math characters.\n */\nexport function $007CDelimitedLatexInlineMath$007C_$007C(bracket, input) {\n let loop_2;\n const loop = (acc_mut, _arg_mut) => {\n let loop_1;\n loop:\n while (true) {\n const acc = acc_mut, _arg = _arg_mut;\n let activePatternResult;\n const input_1 = _arg;\n let matchResult, c, rest;\n if (!isEmpty(input_1)) {\n if (head(input_1) === \"\\\\\") {\n if (!isEmpty(tail(input_1))) {\n if (head(tail(input_1)) === \"$\") {\n matchResult = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n activePatternResult = [c, rest];\n break;\n }\n default:\n activePatternResult = undefined;\n }\n if (activePatternResult != null) {\n const x_2 = activePatternResult[0];\n const xs_2 = activePatternResult[1];\n acc_mut = ofArrayWithTail([x_2, \"\\\\\"], acc);\n _arg_mut = xs_2;\n continue loop;\n }\n else if ((loop_1 = ((start_1_mut, list_1_mut) => {\n loop_1:\n while (true) {\n const start_1 = start_1_mut, list_1 = list_1_mut;\n let matchResult_1, x_1, xs_1, y_1, ys_1;\n if (isEmpty(start_1)) {\n matchResult_1 = 1;\n }\n else if (!isEmpty(list_1)) {\n if (head(start_1) === head(list_1)) {\n matchResult_1 = 0;\n x_1 = head(start_1);\n xs_1 = tail(start_1);\n y_1 = head(list_1);\n ys_1 = tail(list_1);\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n matchResult_1 = 2;\n }\n switch (matchResult_1) {\n case 0: {\n start_1_mut = xs_1;\n list_1_mut = ys_1;\n continue loop_1;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_1(bracket, _arg))) {\n return [reverse(acc), _arg];\n }\n else if (isEmpty(_arg)) {\n return undefined;\n }\n else {\n acc_mut = cons(head(_arg), acc);\n _arg_mut = tail(_arg);\n continue loop;\n }\n break;\n }\n };\n if ((loop_2 = ((start_1_1_mut, list_1_1_mut) => {\n loop_2:\n while (true) {\n const start_1_1 = start_1_1_mut, list_1_1 = list_1_1_mut;\n let matchResult_2, x_1_1, xs_1_1, y_1_1, ys_1_1;\n if (isEmpty(start_1_1)) {\n matchResult_2 = 1;\n }\n else if (!isEmpty(list_1_1)) {\n if (head(start_1_1) === head(list_1_1)) {\n matchResult_2 = 0;\n x_1_1 = head(start_1_1);\n xs_1_1 = tail(start_1_1);\n y_1_1 = head(list_1_1);\n ys_1_1 = tail(list_1_1);\n }\n else {\n matchResult_2 = 2;\n }\n }\n else {\n matchResult_2 = 2;\n }\n switch (matchResult_2) {\n case 0: {\n start_1_1_mut = xs_1_1;\n list_1_1_mut = ys_1_1;\n continue loop_2;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_2(bracket, input))) {\n const matchValue_2 = loop(empty(), skip(length(bracket), input));\n if (matchValue_2 == null) {\n return undefined;\n }\n else {\n const post = matchValue_2[1];\n return [matchValue_2[0], skip(length(bracket), post)];\n }\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Recognizes an indirect link written using `[body][key]` or just `[key]`\n * The key can be preceeded by a space or other single whitespace thing.\n */\nexport function $007CIndirectLink$007C_$007C(_arg) {\n let matchResult, body, link, rest;\n const activePatternResult = List_$007CBracketDelimited$007C_$007C(\"[\", \"]\", _arg);\n if (activePatternResult != null) {\n if (!isEmpty(activePatternResult[1])) {\n if (head(activePatternResult[1]) === \"\\r\") {\n if (!isEmpty(tail(activePatternResult[1]))) {\n if (head(tail(activePatternResult[1])) === \"\\n\") {\n const activePatternResult_1 = List_$007CBracketDelimited$007C_$007C(\"[\", \"]\", tail(tail(activePatternResult[1])));\n if (activePatternResult_1 != null) {\n const activePatternResult_2 = List_$007CAsString$007C(activePatternResult_1[0]);\n matchResult = 0;\n body = activePatternResult[0];\n link = activePatternResult_2;\n rest = activePatternResult_1[1];\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return [body, link, (\"\\r\\n[\" + link) + \"]\", rest];\n default: {\n let matchResult_1, body_1, c, link_1, rest_1;\n const activePatternResult_3 = List_$007CBracketDelimited$007C_$007C(\"[\", \"]\", _arg);\n if (activePatternResult_3 != null) {\n if (!isEmpty(activePatternResult_3[1])) {\n switch (head(activePatternResult_3[1])) {\n case \"\\n\": {\n const activePatternResult_4 = List_$007CBracketDelimited$007C_$007C(\"[\", \"]\", tail(activePatternResult_3[1]));\n if (activePatternResult_4 != null) {\n const activePatternResult_5 = List_$007CAsString$007C(activePatternResult_4[0]);\n matchResult_1 = 0;\n body_1 = activePatternResult_3[0];\n c = head(activePatternResult_3[1]);\n link_1 = activePatternResult_5;\n rest_1 = activePatternResult_4[1];\n }\n else {\n matchResult_1 = 1;\n }\n break;\n }\n case \" \": {\n const activePatternResult_6 = List_$007CBracketDelimited$007C_$007C(\"[\", \"]\", tail(activePatternResult_3[1]));\n if (activePatternResult_6 != null) {\n const activePatternResult_7 = List_$007CAsString$007C(activePatternResult_6[0]);\n matchResult_1 = 0;\n body_1 = activePatternResult_3[0];\n c = head(activePatternResult_3[1]);\n link_1 = activePatternResult_7;\n rest_1 = activePatternResult_6[1];\n }\n else {\n matchResult_1 = 1;\n }\n break;\n }\n default:\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n switch (matchResult_1) {\n case 0:\n return [body_1, link_1, ((c + \"[\") + link_1) + \"]\", rest_1];\n default: {\n let matchResult_2, body_2, link_2, rest_2;\n const activePatternResult_8 = List_$007CBracketDelimited$007C_$007C(\"[\", \"]\", _arg);\n if (activePatternResult_8 != null) {\n const activePatternResult_9 = List_$007CBracketDelimited$007C_$007C(\"[\", \"]\", activePatternResult_8[1]);\n if (activePatternResult_9 != null) {\n const activePatternResult_10 = List_$007CAsString$007C(activePatternResult_9[0]);\n matchResult_2 = 0;\n body_2 = activePatternResult_8[0];\n link_2 = activePatternResult_10;\n rest_2 = activePatternResult_9[1];\n }\n else {\n matchResult_2 = 1;\n }\n }\n else {\n matchResult_2 = 1;\n }\n switch (matchResult_2) {\n case 0:\n return [body_2, link_2, (\"[\" + link_2) + \"]\", rest_2];\n default: {\n const activePatternResult_11 = List_$007CBracketDelimited$007C_$007C(\"[\", \"]\", _arg);\n if (activePatternResult_11 != null) {\n const body_3 = activePatternResult_11[0];\n const rest_3 = activePatternResult_11[1];\n return [body_3, \"\", \"\", rest_3];\n }\n else {\n return undefined;\n }\n }\n }\n }\n }\n }\n }\n}\n\n/**\n * Recognize a direct link written using `[body](http://url \"with title\")`\n */\nexport function $007CDirectLink$007C_$007C(_arg) {\n let matchResult, body, link, rest;\n const activePatternResult = List_$007CBracketDelimited$007C_$007C(\"[\", \"]\", _arg);\n if (activePatternResult != null) {\n const activePatternResult_1 = List_$007CBracketDelimited$007C_$007C(\"(\", \")\", activePatternResult[1]);\n if (activePatternResult_1 != null) {\n matchResult = 0;\n body = activePatternResult[0];\n link = activePatternResult_1[0];\n rest = activePatternResult_1[1];\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return [body, link, rest];\n default:\n return undefined;\n }\n}\n\n/**\n * Recognizes an automatic link written using `http://url` or `https://url`\n */\nexport function $007CAutoLink$007C_$007C(input) {\n return tryPick((scheme) => {\n let loop, loop_1;\n const prefix = ofArray(scheme.split(\"\"));\n let activePatternResult;\n const startl = prefix;\n const endl = singleton(\" \");\n const input_1 = input;\n if ((loop = ((start_1_mut, list_1_mut) => {\n loop:\n while (true) {\n const start_1 = start_1_mut, list_1 = list_1_mut;\n let matchResult, x_1, xs_1, y_1, ys_1;\n if (isEmpty(start_1)) {\n matchResult = 1;\n }\n else if (!isEmpty(list_1)) {\n if (head(start_1) === head(list_1)) {\n matchResult = 0;\n x_1 = head(start_1);\n xs_1 = tail(start_1);\n y_1 = head(list_1);\n ys_1 = tail(list_1);\n }\n else {\n matchResult = 2;\n }\n }\n else {\n matchResult = 2;\n }\n switch (matchResult) {\n case 0: {\n start_1_mut = xs_1;\n list_1_mut = ys_1;\n continue loop;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop(startl, input_1))) {\n const matchValue_1 = List_partitionUntilEquals(endl, skip(length(startl), input_1));\n if (matchValue_1 == null) {\n activePatternResult = undefined;\n }\n else {\n const post = matchValue_1[1];\n activePatternResult = [matchValue_1[0], skip(length(endl), post), length(startl), length(endl)];\n }\n }\n else {\n activePatternResult = undefined;\n }\n if (activePatternResult != null) {\n const activePatternResult_1 = List_$007CAsString$007C(activePatternResult[0]);\n const _e = activePatternResult[3] | 0;\n const _s = activePatternResult[2] | 0;\n const rest = activePatternResult[1];\n return [scheme + activePatternResult_1, cons(\" \", rest)];\n }\n else {\n let activePatternResult_2;\n const input_2 = input;\n activePatternResult_2 = (((loop_1 = ((start_1_1_mut, list_1_1_mut) => {\n loop_1:\n while (true) {\n const start_1_1 = start_1_1_mut, list_1_1 = list_1_1_mut;\n let matchResult_1, x_1_1, xs_1_1, y_1_1, ys_1_1;\n if (isEmpty(start_1_1)) {\n matchResult_1 = 1;\n }\n else if (!isEmpty(list_1_1)) {\n if (head(start_1_1) === head(list_1_1)) {\n matchResult_1 = 0;\n x_1_1 = head(start_1_1);\n xs_1_1 = tail(start_1_1);\n y_1_1 = head(list_1_1);\n ys_1_1 = tail(list_1_1);\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n matchResult_1 = 2;\n }\n switch (matchResult_1) {\n case 0: {\n start_1_1_mut = xs_1_1;\n list_1_1_mut = ys_1_1;\n continue loop_1;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_1(prefix, input_2))) ? input_2 : undefined);\n if (activePatternResult_2 != null) {\n const activePatternResult_3 = List_$007CAsString$007C(activePatternResult_2);\n return [activePatternResult_3, empty()];\n }\n else {\n return undefined;\n }\n }\n }, [\"http://\", \"https://\"]);\n}\n\n/**\n * Recognizes some form of emphasis using `**bold**` or `*italic*`\n * (both can be also marked using underscore).\n * TODO: This does not handle nested emphasis well.\n */\nexport function $007CEmphasised$007C_$007C(_arg) {\n let matchResult, _tail, input;\n if (!isEmpty(_arg)) {\n switch (head(_arg)) {\n case \"*\": {\n matchResult = 0;\n _tail = tail(_arg);\n input = _arg;\n break;\n }\n case \"_\": {\n matchResult = 0;\n _tail = tail(_arg);\n input = _arg;\n break;\n }\n default:\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n let matchResult_1, body, rest;\n const activePatternResult = $007CDelimitedMarkdown$007C_$007C(ofArray([\"_\", \"_\", \"_\"]), input);\n if (activePatternResult != null) {\n matchResult_1 = 0;\n body = activePatternResult[0];\n rest = activePatternResult[1];\n }\n else {\n const activePatternResult_1 = $007CDelimitedMarkdown$007C_$007C(ofArray([\"*\", \"*\", \"*\"]), input);\n if (activePatternResult_1 != null) {\n matchResult_1 = 0;\n body = activePatternResult_1[0];\n rest = activePatternResult_1[1];\n }\n else {\n matchResult_1 = 1;\n }\n }\n switch (matchResult_1) {\n case 0:\n return [body, (arg_1) => {\n let tupledArg;\n return new MarkdownSpan(2, [singleton((tupledArg = arg_1, new MarkdownSpan(3, [tupledArg[0], tupledArg[1]]))), undefined]);\n }, rest];\n default: {\n let matchResult_2, body_2, rest_1;\n const activePatternResult_2 = $007CDelimitedMarkdown$007C_$007C(ofArray([\"_\", \"_\"]), input);\n if (activePatternResult_2 != null) {\n matchResult_2 = 0;\n body_2 = activePatternResult_2[0];\n rest_1 = activePatternResult_2[1];\n }\n else {\n const activePatternResult_3 = $007CDelimitedMarkdown$007C_$007C(ofArray([\"*\", \"*\"]), input);\n if (activePatternResult_3 != null) {\n matchResult_2 = 0;\n body_2 = activePatternResult_3[0];\n rest_1 = activePatternResult_3[1];\n }\n else {\n matchResult_2 = 1;\n }\n }\n switch (matchResult_2) {\n case 0:\n return [body_2, (tupledArg_1) => (new MarkdownSpan(2, [tupledArg_1[0], tupledArg_1[1]])), rest_1];\n default: {\n let matchResult_3, body_4, rest_2;\n const activePatternResult_4 = $007CDelimitedMarkdown$007C_$007C(singleton(\"_\"), input);\n if (activePatternResult_4 != null) {\n matchResult_3 = 0;\n body_4 = activePatternResult_4[0];\n rest_2 = activePatternResult_4[1];\n }\n else {\n const activePatternResult_5 = $007CDelimitedMarkdown$007C_$007C(singleton(\"*\"), input);\n if (activePatternResult_5 != null) {\n matchResult_3 = 0;\n body_4 = activePatternResult_5[0];\n rest_2 = activePatternResult_5[1];\n }\n else {\n matchResult_3 = 1;\n }\n }\n switch (matchResult_3) {\n case 0:\n return [body_4, (tupledArg_2) => (new MarkdownSpan(3, [tupledArg_2[0], tupledArg_2[1]])), rest_2];\n default:\n return undefined;\n }\n }\n }\n }\n }\n }\n default:\n return undefined;\n }\n}\n\nexport function $007CHtmlEntity$007C_$007C(input) {\n let value;\n let matchResult;\n if (!isEmpty(input)) {\n if (head(input) === \"&\") {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n const match$0027 = match(create(\"^&(?:#x[a-f0-9]{1,8}|#[0-9]{1,8}|[a-z][a-z0-9]{1,31});\"), (value = toArray(input), value.join('')));\n if (match$0027 != null) {\n const entity = match$0027[0];\n return [entity, splitAt(entity.length, input)[1]];\n }\n else {\n return undefined;\n }\n }\n default:\n return undefined;\n }\n}\n\nexport class ParsingContext extends Record {\n constructor(Links, Newline, IsFirst, CurrentRange, ParseOptions) {\n super();\n this.Links = Links;\n this.Newline = Newline;\n this.IsFirst = IsFirst;\n this.CurrentRange = CurrentRange;\n this.ParseOptions = (ParseOptions | 0);\n }\n}\n\nexport function ParsingContext_$reflection() {\n return record_type(\"Fable.Formatting.Markdown.Parser.ParsingContext\", [], ParsingContext, () => [[\"Links\", class_type(\"System.Collections.Generic.Dictionary`2\", [string_type, tuple_type(string_type, option_type(string_type))])], [\"Newline\", string_type], [\"IsFirst\", bool_type], [\"CurrentRange\", option_type(MarkdownRange_$reflection())], [\"ParseOptions\", enum_type(\"Fable.Formatting.Markdown.MarkdownParseOptions\", int32_type, [[\"None\", 0], [\"ParseCodeAsOther\", 1], [\"ParseNonCodeAsOther\", 2], [\"AllowYamlFrontMatter\", 4]])]]);\n}\n\nexport function ParsingContext__get_ParseCodeAsOther(x) {\n return (x.ParseOptions & 1) !== 0;\n}\n\nexport function ParsingContext__get_ParseNonCodeAsOther(x) {\n return (x.ParseOptions & 2) !== 0;\n}\n\nexport function ParsingContext__get_AllowYamlFrontMatter(x) {\n return (x.ParseOptions & 4) !== 0;\n}\n\n/**\n * Parses a body of a paragraph and recognizes all inline tags.\n */\nexport function parseChars(acc, input, ctx) {\n return delay(() => {\n let matchValue_30, n_3, inputRecord_3, loop_13, loop_12, rest_11, link, _s, _e, loop, str_1, loop_2, str_3, loop_4, str_5, loop_6, str_7, loop_8, str_9, loop_10, str_11;\n const accLiterals = new Lazy(() => {\n let inputRecord, matchValue_1, n_1, inputRecord_1;\n if (isEmpty(acc)) {\n return [empty(), ctx];\n }\n else {\n let range;\n const matchValue = ctx.CurrentRange;\n if (matchValue == null) {\n range = undefined;\n }\n else {\n const n = matchValue;\n range = ((inputRecord = n, new MarkdownRange(inputRecord.StartLine, inputRecord.StartColumn, inputRecord.EndLine, n.StartColumn + length(acc))));\n }\n const ctx_1 = new ParsingContext(ctx.Links, ctx.Newline, ctx.IsFirst, (matchValue_1 = ctx.CurrentRange, (matchValue_1 == null) ? undefined : ((n_1 = matchValue_1, (inputRecord_1 = n_1, new MarkdownRange(inputRecord_1.StartLine, n_1.StartColumn + length(acc), inputRecord_1.EndLine, inputRecord_1.EndColumn))))), ctx.ParseOptions);\n return [singleton(new MarkdownSpan(0, [toArray(reverse(acc)).join(''), range])), ctx_1];\n }\n });\n const matchValue_2 = input;\n let matchResult, rest_6, entity, rest_7, rest_8, c_6, rest_9, body, e, rest_10, s;\n if (!isEmpty(matchValue_2)) {\n switch (head(matchValue_2)) {\n case \" \": {\n if (!isEmpty(tail(matchValue_2))) {\n if (head(tail(matchValue_2)) === \" \") {\n if (!isEmpty(tail(tail(matchValue_2)))) {\n switch (head(tail(tail(matchValue_2)))) {\n case \"\\n\": {\n matchResult = 0;\n rest_6 = tail(tail(tail(matchValue_2)));\n break;\n }\n case \"\\r\": {\n if (!isEmpty(tail(tail(tail(matchValue_2))))) {\n if (head(tail(tail(tail(matchValue_2)))) === \"\\n\") {\n matchResult = 0;\n rest_6 = tail(tail(tail(tail(matchValue_2))));\n }\n else {\n matchResult = 0;\n rest_6 = tail(tail(tail(matchValue_2)));\n }\n }\n else {\n matchResult = 0;\n rest_6 = tail(tail(tail(matchValue_2)));\n }\n break;\n }\n default: {\n const activePatternResult = $007CHtmlEntity$007C_$007C(matchValue_2);\n if (activePatternResult != null) {\n matchResult = 1;\n entity = activePatternResult[0];\n rest_7 = activePatternResult[1];\n }\n else {\n let activePatternResult_1;\n const input_1 = matchValue_2;\n let matchResult_5, c, rest;\n if (!isEmpty(input_1)) {\n if (head(input_1) === \"\\\\\") {\n if (!isEmpty(tail(input_1))) {\n switch (head(tail(input_1))) {\n case \"!\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"#\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"$\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"(\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \")\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"*\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"+\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"-\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \".\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \">\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"[\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"\\\\\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"]\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"_\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"`\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"{\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n case \"}\": {\n matchResult_5 = 0;\n c = head(tail(input_1));\n rest = tail(tail(input_1));\n break;\n }\n default:\n matchResult_5 = 1;\n }\n }\n else {\n matchResult_5 = 1;\n }\n }\n else {\n matchResult_5 = 1;\n }\n }\n else {\n matchResult_5 = 1;\n }\n switch (matchResult_5) {\n case 0: {\n activePatternResult_1 = [c, rest];\n break;\n }\n default:\n activePatternResult_1 = undefined;\n }\n if (activePatternResult_1 != null) {\n matchResult = 3;\n c_6 = activePatternResult_1[0];\n rest_9 = activePatternResult_1[1];\n }\n else {\n let activePatternResult_2;\n const startl = ofArray([\"`\", \" \"]);\n const endl = ofArray([\" \", \"`\"]);\n const input_2 = matchValue_2;\n if ((loop = ((start_1_mut, list_1_1_mut) => {\n loop:\n while (true) {\n const start_1 = start_1_mut, list_1_1 = list_1_1_mut;\n let matchResult_6, x_1, xs_1, y_1, ys_1;\n if (isEmpty(start_1)) {\n matchResult_6 = 1;\n }\n else if (!isEmpty(list_1_1)) {\n if (head(start_1) === head(list_1_1)) {\n matchResult_6 = 0;\n x_1 = head(start_1);\n xs_1 = tail(start_1);\n y_1 = head(list_1_1);\n ys_1 = tail(list_1_1);\n }\n else {\n matchResult_6 = 2;\n }\n }\n else {\n matchResult_6 = 2;\n }\n switch (matchResult_6) {\n case 0: {\n start_1_mut = xs_1;\n list_1_1_mut = ys_1;\n continue loop;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop(startl, input_2))) {\n const matchValue_4 = List_partitionUntilEquals(endl, skip(length(startl), input_2));\n if (matchValue_4 == null) {\n activePatternResult_2 = undefined;\n }\n else {\n const post = matchValue_4[1];\n activePatternResult_2 = [matchValue_4[0], skip(length(endl), post), length(startl), length(endl)];\n }\n }\n else {\n activePatternResult_2 = undefined;\n }\n if (activePatternResult_2 != null) {\n matchResult = 4;\n body = activePatternResult_2[0];\n e = activePatternResult_2[3];\n rest_10 = activePatternResult_2[1];\n s = activePatternResult_2[2];\n }\n else {\n let activePatternResult_3;\n const input_3 = matchValue_2;\n const strs = List_partitionWhile((i) => (i === \"`\"), input_3)[0];\n activePatternResult_3 = (!isEmpty(strs) ? ((str_1 = initialize(length(strs), (_arg) => \"`\"), (input_4) => {\n let loop_1;\n const startl_1 = str_1;\n const endl_1 = str_1;\n const input_5 = input_4;\n if ((loop_1 = ((start_1_1_mut, list_1_2_mut) => {\n loop_1:\n while (true) {\n const start_1_1 = start_1_1_mut, list_1_2 = list_1_2_mut;\n let matchResult_7, x_1_1, xs_1_1, y_1_1, ys_1_1;\n if (isEmpty(start_1_1)) {\n matchResult_7 = 1;\n }\n else if (!isEmpty(list_1_2)) {\n if (head(start_1_1) === head(list_1_2)) {\n matchResult_7 = 0;\n x_1_1 = head(start_1_1);\n xs_1_1 = tail(start_1_1);\n y_1_1 = head(list_1_2);\n ys_1_1 = tail(list_1_2);\n }\n else {\n matchResult_7 = 2;\n }\n }\n else {\n matchResult_7 = 2;\n }\n switch (matchResult_7) {\n case 0: {\n start_1_1_mut = xs_1_1;\n list_1_2_mut = ys_1_1;\n continue loop_1;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_1(startl_1, input_5))) {\n const matchValue_6 = List_partitionUntilEquals(endl_1, skip(length(startl_1), input_5));\n if (matchValue_6 == null) {\n return undefined;\n }\n else {\n const post_1 = matchValue_6[1];\n return [matchValue_6[0], skip(length(endl_1), post_1), length(startl_1), length(endl_1)];\n }\n }\n else {\n return undefined;\n }\n }))(input_3) : undefined);\n if (activePatternResult_3 != null) {\n matchResult = 4;\n body = activePatternResult_3[0];\n e = activePatternResult_3[3];\n rest_10 = activePatternResult_3[1];\n s = activePatternResult_3[2];\n }\n else {\n matchResult = 5;\n }\n }\n }\n }\n }\n }\n }\n else {\n const activePatternResult_4 = $007CHtmlEntity$007C_$007C(matchValue_2);\n if (activePatternResult_4 != null) {\n matchResult = 1;\n entity = activePatternResult_4[0];\n rest_7 = activePatternResult_4[1];\n }\n else {\n let activePatternResult_5;\n const input_6 = matchValue_2;\n let matchResult_8, c_1, rest_1;\n if (!isEmpty(input_6)) {\n if (head(input_6) === \"\\\\\") {\n if (!isEmpty(tail(input_6))) {\n switch (head(tail(input_6))) {\n case \"!\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \"#\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \"$\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \"(\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \")\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \"*\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \"+\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \"-\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \".\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \">\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \"[\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \"\\\\\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \"]\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \"_\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \"`\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \"{\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n case \"}\": {\n matchResult_8 = 0;\n c_1 = head(tail(input_6));\n rest_1 = tail(tail(input_6));\n break;\n }\n default:\n matchResult_8 = 1;\n }\n }\n else {\n matchResult_8 = 1;\n }\n }\n else {\n matchResult_8 = 1;\n }\n }\n else {\n matchResult_8 = 1;\n }\n switch (matchResult_8) {\n case 0: {\n activePatternResult_5 = [c_1, rest_1];\n break;\n }\n default:\n activePatternResult_5 = undefined;\n }\n if (activePatternResult_5 != null) {\n matchResult = 3;\n c_6 = activePatternResult_5[0];\n rest_9 = activePatternResult_5[1];\n }\n else {\n let activePatternResult_6;\n const startl_2 = ofArray([\"`\", \" \"]);\n const endl_2 = ofArray([\" \", \"`\"]);\n const input_7 = matchValue_2;\n if ((loop_2 = ((start_1_2_mut, list_1_3_mut) => {\n loop_2:\n while (true) {\n const start_1_2 = start_1_2_mut, list_1_3 = list_1_3_mut;\n let matchResult_9, x_1_2, xs_1_2, y_1_2, ys_1_2;\n if (isEmpty(start_1_2)) {\n matchResult_9 = 1;\n }\n else if (!isEmpty(list_1_3)) {\n if (head(start_1_2) === head(list_1_3)) {\n matchResult_9 = 0;\n x_1_2 = head(start_1_2);\n xs_1_2 = tail(start_1_2);\n y_1_2 = head(list_1_3);\n ys_1_2 = tail(list_1_3);\n }\n else {\n matchResult_9 = 2;\n }\n }\n else {\n matchResult_9 = 2;\n }\n switch (matchResult_9) {\n case 0: {\n start_1_2_mut = xs_1_2;\n list_1_3_mut = ys_1_2;\n continue loop_2;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_2(startl_2, input_7))) {\n const matchValue_8 = List_partitionUntilEquals(endl_2, skip(length(startl_2), input_7));\n if (matchValue_8 == null) {\n activePatternResult_6 = undefined;\n }\n else {\n const post_2 = matchValue_8[1];\n activePatternResult_6 = [matchValue_8[0], skip(length(endl_2), post_2), length(startl_2), length(endl_2)];\n }\n }\n else {\n activePatternResult_6 = undefined;\n }\n if (activePatternResult_6 != null) {\n matchResult = 4;\n body = activePatternResult_6[0];\n e = activePatternResult_6[3];\n rest_10 = activePatternResult_6[1];\n s = activePatternResult_6[2];\n }\n else {\n let activePatternResult_7;\n const input_8 = matchValue_2;\n const strs_1 = List_partitionWhile((i_1) => (i_1 === \"`\"), input_8)[0];\n activePatternResult_7 = (!isEmpty(strs_1) ? ((str_3 = initialize(length(strs_1), (_arg_1) => \"`\"), (input_9) => {\n let loop_3;\n const startl_3 = str_3;\n const endl_3 = str_3;\n const input_10 = input_9;\n if ((loop_3 = ((start_1_3_mut, list_1_4_mut) => {\n loop_3:\n while (true) {\n const start_1_3 = start_1_3_mut, list_1_4 = list_1_4_mut;\n let matchResult_10, x_1_3, xs_1_3, y_1_3, ys_1_3;\n if (isEmpty(start_1_3)) {\n matchResult_10 = 1;\n }\n else if (!isEmpty(list_1_4)) {\n if (head(start_1_3) === head(list_1_4)) {\n matchResult_10 = 0;\n x_1_3 = head(start_1_3);\n xs_1_3 = tail(start_1_3);\n y_1_3 = head(list_1_4);\n ys_1_3 = tail(list_1_4);\n }\n else {\n matchResult_10 = 2;\n }\n }\n else {\n matchResult_10 = 2;\n }\n switch (matchResult_10) {\n case 0: {\n start_1_3_mut = xs_1_3;\n list_1_4_mut = ys_1_3;\n continue loop_3;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_3(startl_3, input_10))) {\n const matchValue_10 = List_partitionUntilEquals(endl_3, skip(length(startl_3), input_10));\n if (matchValue_10 == null) {\n return undefined;\n }\n else {\n const post_3 = matchValue_10[1];\n return [matchValue_10[0], skip(length(endl_3), post_3), length(startl_3), length(endl_3)];\n }\n }\n else {\n return undefined;\n }\n }))(input_8) : undefined);\n if (activePatternResult_7 != null) {\n matchResult = 4;\n body = activePatternResult_7[0];\n e = activePatternResult_7[3];\n rest_10 = activePatternResult_7[1];\n s = activePatternResult_7[2];\n }\n else {\n matchResult = 5;\n }\n }\n }\n }\n }\n }\n else {\n const activePatternResult_8 = $007CHtmlEntity$007C_$007C(matchValue_2);\n if (activePatternResult_8 != null) {\n matchResult = 1;\n entity = activePatternResult_8[0];\n rest_7 = activePatternResult_8[1];\n }\n else {\n let activePatternResult_9;\n const input_11 = matchValue_2;\n let matchResult_11, c_2, rest_2;\n if (!isEmpty(input_11)) {\n if (head(input_11) === \"\\\\\") {\n if (!isEmpty(tail(input_11))) {\n switch (head(tail(input_11))) {\n case \"!\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \"#\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \"$\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \"(\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \")\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \"*\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \"+\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \"-\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \".\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \">\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \"[\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \"\\\\\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \"]\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \"_\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \"`\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \"{\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n case \"}\": {\n matchResult_11 = 0;\n c_2 = head(tail(input_11));\n rest_2 = tail(tail(input_11));\n break;\n }\n default:\n matchResult_11 = 1;\n }\n }\n else {\n matchResult_11 = 1;\n }\n }\n else {\n matchResult_11 = 1;\n }\n }\n else {\n matchResult_11 = 1;\n }\n switch (matchResult_11) {\n case 0: {\n activePatternResult_9 = [c_2, rest_2];\n break;\n }\n default:\n activePatternResult_9 = undefined;\n }\n if (activePatternResult_9 != null) {\n matchResult = 3;\n c_6 = activePatternResult_9[0];\n rest_9 = activePatternResult_9[1];\n }\n else {\n let activePatternResult_10;\n const startl_4 = ofArray([\"`\", \" \"]);\n const endl_4 = ofArray([\" \", \"`\"]);\n const input_12 = matchValue_2;\n if ((loop_4 = ((start_1_4_mut, list_1_5_mut) => {\n loop_4:\n while (true) {\n const start_1_4 = start_1_4_mut, list_1_5 = list_1_5_mut;\n let matchResult_12, x_1_4, xs_1_4, y_1_4, ys_1_4;\n if (isEmpty(start_1_4)) {\n matchResult_12 = 1;\n }\n else if (!isEmpty(list_1_5)) {\n if (head(start_1_4) === head(list_1_5)) {\n matchResult_12 = 0;\n x_1_4 = head(start_1_4);\n xs_1_4 = tail(start_1_4);\n y_1_4 = head(list_1_5);\n ys_1_4 = tail(list_1_5);\n }\n else {\n matchResult_12 = 2;\n }\n }\n else {\n matchResult_12 = 2;\n }\n switch (matchResult_12) {\n case 0: {\n start_1_4_mut = xs_1_4;\n list_1_5_mut = ys_1_4;\n continue loop_4;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_4(startl_4, input_12))) {\n const matchValue_12 = List_partitionUntilEquals(endl_4, skip(length(startl_4), input_12));\n if (matchValue_12 == null) {\n activePatternResult_10 = undefined;\n }\n else {\n const post_4 = matchValue_12[1];\n activePatternResult_10 = [matchValue_12[0], skip(length(endl_4), post_4), length(startl_4), length(endl_4)];\n }\n }\n else {\n activePatternResult_10 = undefined;\n }\n if (activePatternResult_10 != null) {\n matchResult = 4;\n body = activePatternResult_10[0];\n e = activePatternResult_10[3];\n rest_10 = activePatternResult_10[1];\n s = activePatternResult_10[2];\n }\n else {\n let activePatternResult_11;\n const input_13 = matchValue_2;\n const strs_2 = List_partitionWhile((i_2) => (i_2 === \"`\"), input_13)[0];\n activePatternResult_11 = (!isEmpty(strs_2) ? ((str_5 = initialize(length(strs_2), (_arg_2) => \"`\"), (input_14) => {\n let loop_5;\n const startl_5 = str_5;\n const endl_5 = str_5;\n const input_15 = input_14;\n if ((loop_5 = ((start_1_5_mut, list_1_6_mut) => {\n loop_5:\n while (true) {\n const start_1_5 = start_1_5_mut, list_1_6 = list_1_6_mut;\n let matchResult_13, x_1_5, xs_1_5, y_1_5, ys_1_5;\n if (isEmpty(start_1_5)) {\n matchResult_13 = 1;\n }\n else if (!isEmpty(list_1_6)) {\n if (head(start_1_5) === head(list_1_6)) {\n matchResult_13 = 0;\n x_1_5 = head(start_1_5);\n xs_1_5 = tail(start_1_5);\n y_1_5 = head(list_1_6);\n ys_1_5 = tail(list_1_6);\n }\n else {\n matchResult_13 = 2;\n }\n }\n else {\n matchResult_13 = 2;\n }\n switch (matchResult_13) {\n case 0: {\n start_1_5_mut = xs_1_5;\n list_1_6_mut = ys_1_5;\n continue loop_5;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_5(startl_5, input_15))) {\n const matchValue_14 = List_partitionUntilEquals(endl_5, skip(length(startl_5), input_15));\n if (matchValue_14 == null) {\n return undefined;\n }\n else {\n const post_5 = matchValue_14[1];\n return [matchValue_14[0], skip(length(endl_5), post_5), length(startl_5), length(endl_5)];\n }\n }\n else {\n return undefined;\n }\n }))(input_13) : undefined);\n if (activePatternResult_11 != null) {\n matchResult = 4;\n body = activePatternResult_11[0];\n e = activePatternResult_11[3];\n rest_10 = activePatternResult_11[1];\n s = activePatternResult_11[2];\n }\n else {\n matchResult = 5;\n }\n }\n }\n }\n }\n }\n else {\n const activePatternResult_12 = $007CHtmlEntity$007C_$007C(matchValue_2);\n if (activePatternResult_12 != null) {\n matchResult = 1;\n entity = activePatternResult_12[0];\n rest_7 = activePatternResult_12[1];\n }\n else {\n let activePatternResult_13;\n const input_16 = matchValue_2;\n let matchResult_14, c_3, rest_3;\n if (!isEmpty(input_16)) {\n if (head(input_16) === \"\\\\\") {\n if (!isEmpty(tail(input_16))) {\n switch (head(tail(input_16))) {\n case \"!\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \"#\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \"$\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \"(\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \")\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \"*\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \"+\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \"-\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \".\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \">\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \"[\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \"\\\\\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \"]\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \"_\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \"`\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \"{\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n case \"}\": {\n matchResult_14 = 0;\n c_3 = head(tail(input_16));\n rest_3 = tail(tail(input_16));\n break;\n }\n default:\n matchResult_14 = 1;\n }\n }\n else {\n matchResult_14 = 1;\n }\n }\n else {\n matchResult_14 = 1;\n }\n }\n else {\n matchResult_14 = 1;\n }\n switch (matchResult_14) {\n case 0: {\n activePatternResult_13 = [c_3, rest_3];\n break;\n }\n default:\n activePatternResult_13 = undefined;\n }\n if (activePatternResult_13 != null) {\n matchResult = 3;\n c_6 = activePatternResult_13[0];\n rest_9 = activePatternResult_13[1];\n }\n else {\n let activePatternResult_14;\n const startl_6 = ofArray([\"`\", \" \"]);\n const endl_6 = ofArray([\" \", \"`\"]);\n const input_17 = matchValue_2;\n if ((loop_6 = ((start_1_6_mut, list_1_7_mut) => {\n loop_6:\n while (true) {\n const start_1_6 = start_1_6_mut, list_1_7 = list_1_7_mut;\n let matchResult_15, x_1_6, xs_1_6, y_1_6, ys_1_6;\n if (isEmpty(start_1_6)) {\n matchResult_15 = 1;\n }\n else if (!isEmpty(list_1_7)) {\n if (head(start_1_6) === head(list_1_7)) {\n matchResult_15 = 0;\n x_1_6 = head(start_1_6);\n xs_1_6 = tail(start_1_6);\n y_1_6 = head(list_1_7);\n ys_1_6 = tail(list_1_7);\n }\n else {\n matchResult_15 = 2;\n }\n }\n else {\n matchResult_15 = 2;\n }\n switch (matchResult_15) {\n case 0: {\n start_1_6_mut = xs_1_6;\n list_1_7_mut = ys_1_6;\n continue loop_6;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_6(startl_6, input_17))) {\n const matchValue_16 = List_partitionUntilEquals(endl_6, skip(length(startl_6), input_17));\n if (matchValue_16 == null) {\n activePatternResult_14 = undefined;\n }\n else {\n const post_6 = matchValue_16[1];\n activePatternResult_14 = [matchValue_16[0], skip(length(endl_6), post_6), length(startl_6), length(endl_6)];\n }\n }\n else {\n activePatternResult_14 = undefined;\n }\n if (activePatternResult_14 != null) {\n matchResult = 4;\n body = activePatternResult_14[0];\n e = activePatternResult_14[3];\n rest_10 = activePatternResult_14[1];\n s = activePatternResult_14[2];\n }\n else {\n let activePatternResult_15;\n const input_18 = matchValue_2;\n const strs_3 = List_partitionWhile((i_3) => (i_3 === \"`\"), input_18)[0];\n activePatternResult_15 = (!isEmpty(strs_3) ? ((str_7 = initialize(length(strs_3), (_arg_3) => \"`\"), (input_19) => {\n let loop_7;\n const startl_7 = str_7;\n const endl_7 = str_7;\n const input_20 = input_19;\n if ((loop_7 = ((start_1_7_mut, list_1_8_mut) => {\n loop_7:\n while (true) {\n const start_1_7 = start_1_7_mut, list_1_8 = list_1_8_mut;\n let matchResult_16, x_1_7, xs_1_7, y_1_7, ys_1_7;\n if (isEmpty(start_1_7)) {\n matchResult_16 = 1;\n }\n else if (!isEmpty(list_1_8)) {\n if (head(start_1_7) === head(list_1_8)) {\n matchResult_16 = 0;\n x_1_7 = head(start_1_7);\n xs_1_7 = tail(start_1_7);\n y_1_7 = head(list_1_8);\n ys_1_7 = tail(list_1_8);\n }\n else {\n matchResult_16 = 2;\n }\n }\n else {\n matchResult_16 = 2;\n }\n switch (matchResult_16) {\n case 0: {\n start_1_7_mut = xs_1_7;\n list_1_8_mut = ys_1_7;\n continue loop_7;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_7(startl_7, input_20))) {\n const matchValue_18 = List_partitionUntilEquals(endl_7, skip(length(startl_7), input_20));\n if (matchValue_18 == null) {\n return undefined;\n }\n else {\n const post_7 = matchValue_18[1];\n return [matchValue_18[0], skip(length(endl_7), post_7), length(startl_7), length(endl_7)];\n }\n }\n else {\n return undefined;\n }\n }))(input_18) : undefined);\n if (activePatternResult_15 != null) {\n matchResult = 4;\n body = activePatternResult_15[0];\n e = activePatternResult_15[3];\n rest_10 = activePatternResult_15[1];\n s = activePatternResult_15[2];\n }\n else {\n matchResult = 5;\n }\n }\n }\n }\n }\n break;\n }\n case \"&\": {\n const activePatternResult_16 = $007CHtmlEntity$007C_$007C(matchValue_2);\n if (activePatternResult_16 != null) {\n matchResult = 1;\n entity = activePatternResult_16[0];\n rest_7 = activePatternResult_16[1];\n }\n else {\n matchResult = 2;\n rest_8 = tail(matchValue_2);\n }\n break;\n }\n default: {\n const activePatternResult_17 = $007CHtmlEntity$007C_$007C(matchValue_2);\n if (activePatternResult_17 != null) {\n matchResult = 1;\n entity = activePatternResult_17[0];\n rest_7 = activePatternResult_17[1];\n }\n else {\n let activePatternResult_18;\n const input_21 = matchValue_2;\n let matchResult_17, c_4, rest_4;\n if (!isEmpty(input_21)) {\n if (head(input_21) === \"\\\\\") {\n if (!isEmpty(tail(input_21))) {\n switch (head(tail(input_21))) {\n case \"!\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \"#\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \"$\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \"(\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \")\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \"*\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \"+\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \"-\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \".\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \">\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \"[\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \"\\\\\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \"]\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \"_\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \"`\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \"{\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n case \"}\": {\n matchResult_17 = 0;\n c_4 = head(tail(input_21));\n rest_4 = tail(tail(input_21));\n break;\n }\n default:\n matchResult_17 = 1;\n }\n }\n else {\n matchResult_17 = 1;\n }\n }\n else {\n matchResult_17 = 1;\n }\n }\n else {\n matchResult_17 = 1;\n }\n switch (matchResult_17) {\n case 0: {\n activePatternResult_18 = [c_4, rest_4];\n break;\n }\n default:\n activePatternResult_18 = undefined;\n }\n if (activePatternResult_18 != null) {\n matchResult = 3;\n c_6 = activePatternResult_18[0];\n rest_9 = activePatternResult_18[1];\n }\n else {\n let activePatternResult_19;\n const startl_8 = ofArray([\"`\", \" \"]);\n const endl_8 = ofArray([\" \", \"`\"]);\n const input_22 = matchValue_2;\n if ((loop_8 = ((start_1_8_mut, list_1_9_mut) => {\n loop_8:\n while (true) {\n const start_1_8 = start_1_8_mut, list_1_9 = list_1_9_mut;\n let matchResult_18, x_1_8, xs_1_8, y_1_8, ys_1_8;\n if (isEmpty(start_1_8)) {\n matchResult_18 = 1;\n }\n else if (!isEmpty(list_1_9)) {\n if (head(start_1_8) === head(list_1_9)) {\n matchResult_18 = 0;\n x_1_8 = head(start_1_8);\n xs_1_8 = tail(start_1_8);\n y_1_8 = head(list_1_9);\n ys_1_8 = tail(list_1_9);\n }\n else {\n matchResult_18 = 2;\n }\n }\n else {\n matchResult_18 = 2;\n }\n switch (matchResult_18) {\n case 0: {\n start_1_8_mut = xs_1_8;\n list_1_9_mut = ys_1_8;\n continue loop_8;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_8(startl_8, input_22))) {\n const matchValue_20 = List_partitionUntilEquals(endl_8, skip(length(startl_8), input_22));\n if (matchValue_20 == null) {\n activePatternResult_19 = undefined;\n }\n else {\n const post_8 = matchValue_20[1];\n activePatternResult_19 = [matchValue_20[0], skip(length(endl_8), post_8), length(startl_8), length(endl_8)];\n }\n }\n else {\n activePatternResult_19 = undefined;\n }\n if (activePatternResult_19 != null) {\n matchResult = 4;\n body = activePatternResult_19[0];\n e = activePatternResult_19[3];\n rest_10 = activePatternResult_19[1];\n s = activePatternResult_19[2];\n }\n else {\n let activePatternResult_20;\n const input_23 = matchValue_2;\n const strs_4 = List_partitionWhile((i_4) => (i_4 === \"`\"), input_23)[0];\n activePatternResult_20 = (!isEmpty(strs_4) ? ((str_9 = initialize(length(strs_4), (_arg_4) => \"`\"), (input_24) => {\n let loop_9;\n const startl_9 = str_9;\n const endl_9 = str_9;\n const input_25 = input_24;\n if ((loop_9 = ((start_1_9_mut, list_1_10_mut) => {\n loop_9:\n while (true) {\n const start_1_9 = start_1_9_mut, list_1_10 = list_1_10_mut;\n let matchResult_19, x_1_9, xs_1_9, y_1_9, ys_1_9;\n if (isEmpty(start_1_9)) {\n matchResult_19 = 1;\n }\n else if (!isEmpty(list_1_10)) {\n if (head(start_1_9) === head(list_1_10)) {\n matchResult_19 = 0;\n x_1_9 = head(start_1_9);\n xs_1_9 = tail(start_1_9);\n y_1_9 = head(list_1_10);\n ys_1_9 = tail(list_1_10);\n }\n else {\n matchResult_19 = 2;\n }\n }\n else {\n matchResult_19 = 2;\n }\n switch (matchResult_19) {\n case 0: {\n start_1_9_mut = xs_1_9;\n list_1_10_mut = ys_1_9;\n continue loop_9;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_9(startl_9, input_25))) {\n const matchValue_22 = List_partitionUntilEquals(endl_9, skip(length(startl_9), input_25));\n if (matchValue_22 == null) {\n return undefined;\n }\n else {\n const post_9 = matchValue_22[1];\n return [matchValue_22[0], skip(length(endl_9), post_9), length(startl_9), length(endl_9)];\n }\n }\n else {\n return undefined;\n }\n }))(input_23) : undefined);\n if (activePatternResult_20 != null) {\n matchResult = 4;\n body = activePatternResult_20[0];\n e = activePatternResult_20[3];\n rest_10 = activePatternResult_20[1];\n s = activePatternResult_20[2];\n }\n else {\n matchResult = 5;\n }\n }\n }\n }\n }\n }\n }\n else {\n const activePatternResult_21 = $007CHtmlEntity$007C_$007C(matchValue_2);\n if (activePatternResult_21 != null) {\n matchResult = 1;\n entity = activePatternResult_21[0];\n rest_7 = activePatternResult_21[1];\n }\n else {\n let activePatternResult_22;\n const input_26 = matchValue_2;\n let matchResult_20, c_5, rest_5;\n if (!isEmpty(input_26)) {\n if (head(input_26) === \"\\\\\") {\n if (!isEmpty(tail(input_26))) {\n switch (head(tail(input_26))) {\n case \"!\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \"#\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \"$\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \"(\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \")\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \"*\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \"+\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \"-\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \".\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \">\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \"[\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \"\\\\\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \"]\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \"_\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \"`\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \"{\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n case \"}\": {\n matchResult_20 = 0;\n c_5 = head(tail(input_26));\n rest_5 = tail(tail(input_26));\n break;\n }\n default:\n matchResult_20 = 1;\n }\n }\n else {\n matchResult_20 = 1;\n }\n }\n else {\n matchResult_20 = 1;\n }\n }\n else {\n matchResult_20 = 1;\n }\n switch (matchResult_20) {\n case 0: {\n activePatternResult_22 = [c_5, rest_5];\n break;\n }\n default:\n activePatternResult_22 = undefined;\n }\n if (activePatternResult_22 != null) {\n matchResult = 3;\n c_6 = activePatternResult_22[0];\n rest_9 = activePatternResult_22[1];\n }\n else {\n let activePatternResult_23;\n const startl_10 = ofArray([\"`\", \" \"]);\n const endl_10 = ofArray([\" \", \"`\"]);\n const input_27 = matchValue_2;\n if ((loop_10 = ((start_1_10_mut, list_1_11_mut) => {\n loop_10:\n while (true) {\n const start_1_10 = start_1_10_mut, list_1_11 = list_1_11_mut;\n let matchResult_21, x_1_10, xs_1_10, y_1_10, ys_1_10;\n if (isEmpty(start_1_10)) {\n matchResult_21 = 1;\n }\n else if (!isEmpty(list_1_11)) {\n if (head(start_1_10) === head(list_1_11)) {\n matchResult_21 = 0;\n x_1_10 = head(start_1_10);\n xs_1_10 = tail(start_1_10);\n y_1_10 = head(list_1_11);\n ys_1_10 = tail(list_1_11);\n }\n else {\n matchResult_21 = 2;\n }\n }\n else {\n matchResult_21 = 2;\n }\n switch (matchResult_21) {\n case 0: {\n start_1_10_mut = xs_1_10;\n list_1_11_mut = ys_1_10;\n continue loop_10;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_10(startl_10, input_27))) {\n const matchValue_24 = List_partitionUntilEquals(endl_10, skip(length(startl_10), input_27));\n if (matchValue_24 == null) {\n activePatternResult_23 = undefined;\n }\n else {\n const post_10 = matchValue_24[1];\n activePatternResult_23 = [matchValue_24[0], skip(length(endl_10), post_10), length(startl_10), length(endl_10)];\n }\n }\n else {\n activePatternResult_23 = undefined;\n }\n if (activePatternResult_23 != null) {\n matchResult = 4;\n body = activePatternResult_23[0];\n e = activePatternResult_23[3];\n rest_10 = activePatternResult_23[1];\n s = activePatternResult_23[2];\n }\n else {\n let activePatternResult_24;\n const input_28 = matchValue_2;\n const strs_5 = List_partitionWhile((i_5) => (i_5 === \"`\"), input_28)[0];\n activePatternResult_24 = (!isEmpty(strs_5) ? ((str_11 = initialize(length(strs_5), (_arg_5) => \"`\"), (input_29) => {\n let loop_11;\n const startl_11 = str_11;\n const endl_11 = str_11;\n const input_30 = input_29;\n if ((loop_11 = ((start_1_11_mut, list_1_12_mut) => {\n loop_11:\n while (true) {\n const start_1_11 = start_1_11_mut, list_1_12 = list_1_12_mut;\n let matchResult_22, x_1_11, xs_1_11, y_1_11, ys_1_11;\n if (isEmpty(start_1_11)) {\n matchResult_22 = 1;\n }\n else if (!isEmpty(list_1_12)) {\n if (head(start_1_11) === head(list_1_12)) {\n matchResult_22 = 0;\n x_1_11 = head(start_1_11);\n xs_1_11 = tail(start_1_11);\n y_1_11 = head(list_1_12);\n ys_1_11 = tail(list_1_12);\n }\n else {\n matchResult_22 = 2;\n }\n }\n else {\n matchResult_22 = 2;\n }\n switch (matchResult_22) {\n case 0: {\n start_1_11_mut = xs_1_11;\n list_1_12_mut = ys_1_11;\n continue loop_11;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_11(startl_11, input_30))) {\n const matchValue_26 = List_partitionUntilEquals(endl_11, skip(length(startl_11), input_30));\n if (matchValue_26 == null) {\n return undefined;\n }\n else {\n const post_11 = matchValue_26[1];\n return [matchValue_26[0], skip(length(endl_11), post_11), length(startl_11), length(endl_11)];\n }\n }\n else {\n return undefined;\n }\n }))(input_28) : undefined);\n if (activePatternResult_24 != null) {\n matchResult = 4;\n body = activePatternResult_24[0];\n e = activePatternResult_24[3];\n rest_10 = activePatternResult_24[1];\n s = activePatternResult_24[2];\n }\n else {\n matchResult = 5;\n }\n }\n }\n }\n }\n switch (matchResult) {\n case 0: {\n const patternInput_6 = accLiterals.Value;\n const ctx_2 = patternInput_6[1];\n return append(patternInput_6[0], delay(() => append(singleton_1(new MarkdownSpan(9, [ctx_2.CurrentRange])), delay(() => parseChars(empty(), rest_6, ctx_2)))));\n }\n case 1: {\n const patternInput_7 = accLiterals.Value;\n const ctx_3 = patternInput_7[1];\n return append(patternInput_7[0], delay(() => append(singleton_1(new MarkdownSpan(0, [entity, ctx_3.CurrentRange])), delay(() => parseChars(empty(), rest_7, ctx_3)))));\n }\n case 2:\n return parseChars(ofArrayWithTail([\";\", \"p\", \"m\", \"a\", \"&\"], acc), rest_8, ctx);\n case 3:\n return parseChars(cons(c_6, acc), rest_9, ctx);\n case 4: {\n const patternInput_8 = accLiterals.Value;\n const ctx_4 = patternInput_8[1];\n return append(patternInput_8[0], delay(() => {\n let inputRecord_2;\n let rng;\n const matchValue_27 = ctx_4.CurrentRange;\n if (matchValue_27 == null) {\n rng = undefined;\n }\n else {\n const n_2 = matchValue_27;\n rng = ((inputRecord_2 = n_2, new MarkdownRange(inputRecord_2.StartLine, n_2.StartColumn + s, inputRecord_2.EndLine, n_2.EndColumn - e)));\n }\n return append(singleton_1(new MarkdownSpan(1, [(toArray(body).join('')).trim(), rng])), delay(() => parseChars(empty(), rest_10, ctx_4)));\n }));\n }\n default: {\n let matchResult_1, body_1, rest_12, body_2, rest_13, _e_1, _s_1, link_1, rest_14;\n const activePatternResult_25 = $007CDelimitedLatexDisplayMath$007C_$007C(ofArray([\"$\", \"$\"]), matchValue_2);\n if (activePatternResult_25 != null) {\n matchResult_1 = 0;\n body_1 = activePatternResult_25[0];\n rest_12 = activePatternResult_25[1];\n }\n else {\n const activePatternResult_26 = $007CDelimitedLatexInlineMath$007C_$007C(singleton(\"$\"), matchValue_2);\n if (activePatternResult_26 != null) {\n matchResult_1 = 1;\n body_2 = activePatternResult_26[0];\n rest_13 = activePatternResult_26[1];\n }\n else {\n let activePatternResult_27;\n const startl_12 = singleton(\"<\");\n const endl_12 = singleton(\">\");\n const input_31 = matchValue_2;\n if ((loop_12 = ((start_1_12_mut, list_1_13_mut) => {\n loop_12:\n while (true) {\n const start_1_12 = start_1_12_mut, list_1_13 = list_1_13_mut;\n let matchResult_4, x_1_12, xs_1_12, y_1_12, ys_1_12;\n if (isEmpty(start_1_12)) {\n matchResult_4 = 1;\n }\n else if (!isEmpty(list_1_13)) {\n if (head(start_1_12) === head(list_1_13)) {\n matchResult_4 = 0;\n x_1_12 = head(start_1_12);\n xs_1_12 = tail(start_1_12);\n y_1_12 = head(list_1_13);\n ys_1_12 = tail(list_1_13);\n }\n else {\n matchResult_4 = 2;\n }\n }\n else {\n matchResult_4 = 2;\n }\n switch (matchResult_4) {\n case 0: {\n start_1_12_mut = xs_1_12;\n list_1_13_mut = ys_1_12;\n continue loop_12;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_12(startl_12, input_31))) {\n const matchValue_29 = List_partitionUntilEquals(endl_12, skip(length(startl_12), input_31));\n if (matchValue_29 == null) {\n activePatternResult_27 = undefined;\n }\n else {\n const post_12 = matchValue_29[1];\n activePatternResult_27 = [matchValue_29[0], skip(length(endl_12), post_12), length(startl_12), length(endl_12)];\n }\n }\n else {\n activePatternResult_27 = undefined;\n }\n if (activePatternResult_27 != null) {\n const activePatternResult_28 = List_$007CAsString$007C(activePatternResult_27[0]);\n if ((rest_11 = activePatternResult_27[1], (link = activePatternResult_28, (_s = (activePatternResult_27[2] | 0), (_e = (activePatternResult_27[3] | 0), forAll((arg) => !isWhiteSpace(arg), link.split(\"\")) && ((link.indexOf(\"@\") >= 0) ? true : (link.indexOf(\"://\") >= 0))))))) {\n matchResult_1 = 2;\n _e_1 = activePatternResult_27[3];\n _s_1 = activePatternResult_27[2];\n link_1 = activePatternResult_28;\n rest_14 = activePatternResult_27[1];\n }\n else {\n matchResult_1 = 3;\n }\n }\n else {\n matchResult_1 = 3;\n }\n }\n }\n switch (matchResult_1) {\n case 0: {\n const patternInput_9 = accLiterals.Value;\n const ctx_5 = patternInput_9[1];\n return append(patternInput_9[0], delay(() => append(singleton_1(new MarkdownSpan(11, [(toArray(body_1).join('')).trim(), ctx_5.CurrentRange])), delay(() => parseChars(empty(), rest_12, ctx_5)))));\n }\n case 1: {\n const patternInput_10 = accLiterals.Value;\n const ctx_6 = patternInput_10[1];\n const ctx_7 = new ParsingContext(ctx_6.Links, ctx_6.Newline, ctx_6.IsFirst, (matchValue_30 = ctx_6.CurrentRange, (matchValue_30 == null) ? undefined : ((n_3 = matchValue_30, (inputRecord_3 = n_3, new MarkdownRange(inputRecord_3.StartLine, n_3.StartColumn + 1, inputRecord_3.EndLine, inputRecord_3.EndColumn))))), ctx_6.ParseOptions);\n return append(patternInput_10[0], delay(() => {\n let matchValue_31, n_4, inputRecord_4;\n const code = (toArray(body_2).join('')).trim();\n return append(singleton_1(new MarkdownSpan(10, [code, (matchValue_31 = ctx_7.CurrentRange, (matchValue_31 == null) ? undefined : ((n_4 = matchValue_31, (inputRecord_4 = n_4, new MarkdownRange(inputRecord_4.StartLine, inputRecord_4.StartColumn, inputRecord_4.EndLine, n_4.StartColumn + code.length)))))])), delay(() => parseChars(empty(), rest_13, ctx_7)));\n }));\n }\n case 2: {\n const patternInput_11 = accLiterals.Value;\n const ctx_8 = patternInput_11[1];\n return append(patternInput_11[0], delay(() => append(singleton_1(new MarkdownSpan(5, [singleton(new MarkdownSpan(0, [link_1, ctx_8.CurrentRange])), link_1, undefined, ctx_8.CurrentRange])), delay(() => parseChars(empty(), rest_14, ctx_8)))));\n }\n default: {\n let matchResult_2, _e_2, _s_2, rest_15, tag, body_3, link_2, rest_16, body_4, link_4, original, rest_17, link_5, rest_18, body_5, link_6, rest_19, body_6, link_8, original_1, rest_20, body_7, f, rest_21, rest_22, rest_23, x_15, xs_15;\n let activePatternResult_29;\n const startl_13 = singleton(\"<\");\n const endl_13 = singleton(\">\");\n const input_32 = matchValue_2;\n if ((loop_13 = ((start_1_13_mut, list_1_14_mut) => {\n loop_13:\n while (true) {\n const start_1_13 = start_1_13_mut, list_1_14 = list_1_14_mut;\n let matchResult_3, x_1_13, xs_1_13, y_1_13, ys_1_13;\n if (isEmpty(start_1_13)) {\n matchResult_3 = 1;\n }\n else if (!isEmpty(list_1_14)) {\n if (head(start_1_13) === head(list_1_14)) {\n matchResult_3 = 0;\n x_1_13 = head(start_1_13);\n xs_1_13 = tail(start_1_13);\n y_1_13 = head(list_1_14);\n ys_1_13 = tail(list_1_14);\n }\n else {\n matchResult_3 = 2;\n }\n }\n else {\n matchResult_3 = 2;\n }\n switch (matchResult_3) {\n case 0: {\n start_1_13_mut = xs_1_13;\n list_1_14_mut = ys_1_13;\n continue loop_13;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_13(startl_13, input_32))) {\n const matchValue_33 = List_partitionUntilEquals(endl_13, skip(length(startl_13), input_32));\n if (matchValue_33 == null) {\n activePatternResult_29 = undefined;\n }\n else {\n const post_13 = matchValue_33[1];\n activePatternResult_29 = [matchValue_33[0], skip(length(endl_13), post_13), length(startl_13), length(endl_13)];\n }\n }\n else {\n activePatternResult_29 = undefined;\n }\n if (activePatternResult_29 != null) {\n matchResult_2 = 0;\n _e_2 = activePatternResult_29[3];\n _s_2 = activePatternResult_29[2];\n rest_15 = activePatternResult_29[1];\n tag = activePatternResult_29[0];\n }\n else {\n const activePatternResult_30 = $007CDirectLink$007C_$007C(matchValue_2);\n if (activePatternResult_30 != null) {\n matchResult_2 = 1;\n body_3 = activePatternResult_30[0];\n link_2 = activePatternResult_30[1];\n rest_16 = activePatternResult_30[2];\n }\n else {\n const activePatternResult_31 = $007CIndirectLink$007C_$007C(matchValue_2);\n if (activePatternResult_31 != null) {\n matchResult_2 = 2;\n body_4 = activePatternResult_31[0];\n link_4 = activePatternResult_31[1];\n original = activePatternResult_31[2];\n rest_17 = activePatternResult_31[3];\n }\n else {\n const activePatternResult_32 = $007CAutoLink$007C_$007C(matchValue_2);\n if (activePatternResult_32 != null) {\n matchResult_2 = 3;\n link_5 = activePatternResult_32[0];\n rest_18 = activePatternResult_32[1];\n }\n else if (isEmpty(matchValue_2)) {\n const activePatternResult_33 = $007CEmphasised$007C_$007C(matchValue_2);\n if (activePatternResult_33 != null) {\n matchResult_2 = 6;\n body_7 = activePatternResult_33[0];\n f = activePatternResult_33[1];\n rest_21 = activePatternResult_33[2];\n }\n else {\n matchResult_2 = 10;\n }\n }\n else {\n switch (head(matchValue_2)) {\n case \"!\": {\n const activePatternResult_34 = $007CDirectLink$007C_$007C(tail(matchValue_2));\n if (activePatternResult_34 != null) {\n matchResult_2 = 4;\n body_5 = activePatternResult_34[0];\n link_6 = activePatternResult_34[1];\n rest_19 = activePatternResult_34[2];\n }\n else {\n const activePatternResult_35 = $007CIndirectLink$007C_$007C(tail(matchValue_2));\n if (activePatternResult_35 != null) {\n matchResult_2 = 5;\n body_6 = activePatternResult_35[0];\n link_8 = activePatternResult_35[1];\n original_1 = activePatternResult_35[2];\n rest_20 = activePatternResult_35[3];\n }\n else {\n const activePatternResult_36 = $007CEmphasised$007C_$007C(matchValue_2);\n if (activePatternResult_36 != null) {\n matchResult_2 = 6;\n body_7 = activePatternResult_36[0];\n f = activePatternResult_36[1];\n rest_21 = activePatternResult_36[2];\n }\n else {\n matchResult_2 = 9;\n x_15 = head(matchValue_2);\n xs_15 = tail(matchValue_2);\n }\n }\n }\n break;\n }\n case \"<\": {\n const activePatternResult_37 = $007CEmphasised$007C_$007C(matchValue_2);\n if (activePatternResult_37 != null) {\n matchResult_2 = 6;\n body_7 = activePatternResult_37[0];\n f = activePatternResult_37[1];\n rest_21 = activePatternResult_37[2];\n }\n else {\n matchResult_2 = 7;\n rest_22 = tail(matchValue_2);\n }\n break;\n }\n case \">\": {\n const activePatternResult_38 = $007CEmphasised$007C_$007C(matchValue_2);\n if (activePatternResult_38 != null) {\n matchResult_2 = 6;\n body_7 = activePatternResult_38[0];\n f = activePatternResult_38[1];\n rest_21 = activePatternResult_38[2];\n }\n else {\n matchResult_2 = 8;\n rest_23 = tail(matchValue_2);\n }\n break;\n }\n default: {\n const activePatternResult_39 = $007CEmphasised$007C_$007C(matchValue_2);\n if (activePatternResult_39 != null) {\n matchResult_2 = 6;\n body_7 = activePatternResult_39[0];\n f = activePatternResult_39[1];\n rest_21 = activePatternResult_39[2];\n }\n else {\n matchResult_2 = 9;\n x_15 = head(matchValue_2);\n xs_15 = tail(matchValue_2);\n }\n }\n }\n }\n }\n }\n }\n switch (matchResult_2) {\n case 0:\n return parseChars(append_1(cons(\">\", reverse(tag)), cons(\"<\", acc)), rest_15, ctx);\n case 1: {\n const patternInput_12 = accLiterals.Value;\n const ctx_9 = patternInput_12[1];\n return append(patternInput_12[0], delay(() => {\n const patternInput_13 = getLinkAndTitle(toArray(link_2).join(''), MarkdownRangeModule_zero);\n return append(singleton_1(new MarkdownSpan(5, [ofSeq(parseChars(empty(), body_3, ctx_9)), patternInput_13[0], patternInput_13[1], ctx_9.CurrentRange])), delay(() => parseChars(empty(), rest_16, ctx_9)));\n }));\n }\n case 2: {\n const patternInput_14 = accLiterals.Value;\n const ctx_10 = patternInput_14[1];\n return append(patternInput_14[0], delay(() => {\n const key = isNullOrEmpty(link_4) ? (Array.from(body_4).join('')) : link_4;\n return append(singleton_1(new MarkdownSpan(6, [ofSeq(parseChars(empty(), body_4, ctx_10)), original, key, ctx_10.CurrentRange])), delay(() => parseChars(empty(), rest_17, ctx_10)));\n }));\n }\n case 3: {\n const patternInput_15 = accLiterals.Value;\n const ctx_11 = patternInput_15[1];\n return append(patternInput_15[0], delay(() => append(singleton_1(new MarkdownSpan(5, [singleton(new MarkdownSpan(0, [link_5, ctx_11.CurrentRange])), link_5, undefined, ctx_11.CurrentRange])), delay(() => parseChars(empty(), rest_18, ctx_11)))));\n }\n case 4: {\n const patternInput_16 = accLiterals.Value;\n const ctx_12 = patternInput_16[1];\n return append(patternInput_16[0], delay(() => {\n const patternInput_17 = getLinkAndTitle(toArray(link_6).join(''), MarkdownRangeModule_zero);\n return append(singleton_1(new MarkdownSpan(7, [toArray(body_5).join(''), patternInput_17[0], patternInput_17[1], ctx_12.CurrentRange])), delay(() => parseChars(empty(), rest_19, ctx_12)));\n }));\n }\n case 5: {\n const patternInput_18 = accLiterals.Value;\n const ctx_13 = patternInput_18[1];\n return append(patternInput_18[0], delay(() => {\n const key_1 = isNullOrEmpty(link_8) ? (Array.from(body_6).join('')) : link_8;\n return append(singleton_1(new MarkdownSpan(8, [toArray(body_6).join(''), original_1, key_1, ctx_13.CurrentRange])), delay(() => parseChars(empty(), rest_20, ctx_13)));\n }));\n }\n case 6: {\n const patternInput_19 = accLiterals.Value;\n const ctx_14 = patternInput_19[1];\n return append(patternInput_19[0], delay(() => append(singleton_1(f([ofSeq(parseChars(empty(), body_7, ctx_14)), ctx_14.CurrentRange])), delay(() => parseChars(empty(), rest_21, ctx_14)))));\n }\n case 7:\n return parseChars(ofArrayWithTail([\";\", \"t\", \"l\", \"&\"], acc), rest_22, ctx);\n case 8:\n return parseChars(ofArrayWithTail([\";\", \"t\", \"g\", \"&\"], acc), rest_23, ctx);\n case 9:\n return parseChars(cons(x_15, acc), xs_15, ctx);\n default:\n return accLiterals.Value[0];\n }\n }\n }\n }\n }\n });\n}\n\n/**\n * Parse body of a paragraph into a list of Markdown inline spans\n */\nexport function parseSpans(_arg1_, _arg1__1, ctx) {\n const _arg = [_arg1_, _arg1__1];\n const activePatternResult = StringPosition_$007CTrimBoth$007C(_arg[0], _arg[1]);\n const ctx_1 = new ParsingContext(ctx.Links, ctx.Newline, ctx.IsFirst, activePatternResult[1], ctx.ParseOptions);\n return ofSeq(parseChars(empty(), ofArray(activePatternResult[0].split(\"\")), ctx_1));\n}\n\nexport function trimSpaces(numSpaces_mut, s_mut) {\n trimSpaces:\n while (true) {\n const numSpaces = numSpaces_mut, s = s_mut;\n if (numSpaces <= 0) {\n return s;\n }\n else if (s.startsWith(\" \")) {\n numSpaces_mut = (numSpaces - 1);\n s_mut = substring(s, 1);\n continue trimSpaces;\n }\n else if (s.startsWith(\"\\t\")) {\n numSpaces_mut = (numSpaces - 4);\n s_mut = substring(s, 1);\n continue trimSpaces;\n }\n else {\n return s;\n }\n break;\n }\n}\n\n/**\n * Recognizes heading, either prefixed with #s or followed by === or --- line\n */\nexport function $007CHeading$007C_$007C(lines) {\n let noHash, tupledArg_5, tupledArg_2;\n let matchResult, header, line1, line2, rest;\n if (!isEmpty(lines)) {\n let activePatternResult;\n const tupledArg = head(lines);\n activePatternResult = StringPosition_$007CTrimBoth$007C(tupledArg[0], tupledArg[1]);\n if (!isEmpty(tail(lines))) {\n let activePatternResult_1;\n const tupledArg_1 = head(tail(lines));\n activePatternResult_1 = StringPosition_$007CTrimEnd$007C(tupledArg_1[0], tupledArg_1[1]);\n if (((tupledArg_2 = [\"=\", MarkdownRangeModule_zero], StringPosition_$007CEqualsRepeated$007C_$007C(tupledArg_2[0], tupledArg_2[1], activePatternResult_1[0], activePatternResult_1[1]))) != null) {\n matchResult = 0;\n header = activePatternResult;\n line1 = head(lines);\n line2 = head(tail(lines));\n rest = tail(tail(lines));\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return [1, header, ofArray([line1, line2]), rest];\n default: {\n let matchResult_1, header_1, line1_1, line2_1, rest_1;\n if (!isEmpty(lines)) {\n let activePatternResult_3;\n const tupledArg_3 = head(lines);\n activePatternResult_3 = StringPosition_$007CTrimBoth$007C(tupledArg_3[0], tupledArg_3[1]);\n if (!isEmpty(tail(lines))) {\n let activePatternResult_4;\n const tupledArg_4 = head(tail(lines));\n activePatternResult_4 = StringPosition_$007CTrimEnd$007C(tupledArg_4[0], tupledArg_4[1]);\n if (((tupledArg_5 = [\"-\", MarkdownRangeModule_zero], StringPosition_$007CEqualsRepeated$007C_$007C(tupledArg_5[0], tupledArg_5[1], activePatternResult_4[0], activePatternResult_4[1]))) != null) {\n matchResult_1 = 0;\n header_1 = activePatternResult_3;\n line1_1 = head(lines);\n line2_1 = head(tail(lines));\n rest_1 = tail(tail(lines));\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n switch (matchResult_1) {\n case 0:\n return [2, header_1, ofArray([line1_1, line2_1]), rest_1];\n default: {\n let matchResult_2, header_2, line1_2, ln_1, n_5, rest_2;\n if (!isEmpty(lines)) {\n let activePatternResult_6;\n const tupledArg_6 = head(lines);\n activePatternResult_6 = StringPosition_$007CStartsWithRepeated$007C_$007C(\"#\", tupledArg_6[0], tupledArg_6[1]);\n if (activePatternResult_6 != null) {\n let activePatternResult_7;\n const tupledArg_7 = activePatternResult_6[1];\n activePatternResult_7 = StringPosition_$007CTrimBoth$007C(tupledArg_7[0], tupledArg_7[1]);\n matchResult_2 = 0;\n header_2 = activePatternResult_7[0];\n line1_2 = head(lines);\n ln_1 = activePatternResult_7[1];\n n_5 = activePatternResult_6[0];\n rest_2 = tail(lines);\n }\n else {\n matchResult_2 = 1;\n }\n }\n else {\n matchResult_2 = 1;\n }\n switch (matchResult_2) {\n case 0:\n return [n_5, [header_2.endsWith(\"#\") ? ((noHash = trimEnd(header_2, \"#\"), ((noHash.length > 0) && isWhiteSpace(getCharAtIndex(noHash, noHash.length - 1))) ? noHash : header_2)) : header_2, ln_1], singleton(line1_2), rest_2];\n default:\n return undefined;\n }\n }\n }\n }\n }\n}\n\nexport function $007CYamlFrontmatter$007C_$007C(lines) {\n let matchResult, p, rest;\n if (!isEmpty(lines)) {\n if (head(lines)[0] === \"---\") {\n matchResult = 0;\n p = head(lines)[1];\n rest = tail(lines);\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n const yaml = takeWhile((tupledArg) => (tupledArg[0] !== \"---\"), rest);\n const yamlTextLines = map((tuple) => tuple[0], yaml);\n let rest_1;\n const _arg_2 = skipWhile((tupledArg_1) => (tupledArg_1[0] !== \"---\"), rest);\n let matchResult_1, t, l_2;\n if (!isEmpty(_arg_2)) {\n if (head(_arg_2)[0] === \"---\") {\n matchResult_1 = 0;\n t = tail(_arg_2);\n }\n else {\n matchResult_1 = 1;\n l_2 = _arg_2;\n }\n }\n else {\n matchResult_1 = 1;\n l_2 = _arg_2;\n }\n switch (matchResult_1) {\n case 0: {\n rest_1 = t;\n break;\n }\n default:\n rest_1 = l_2;\n }\n return [yamlTextLines, MarkdownRangeModule_mergeRanges(cons(p, map((tuple_1) => tuple_1[1], yaml))), rest_1];\n }\n default:\n return undefined;\n }\n}\n\n/**\n * Recognizes a horizontal rule written using *, _ or -\n */\nexport function $007CHorizontalRule$007C_$007C(line, _n) {\n const loop = (arg_mut, i_mut) => {\n loop:\n while (true) {\n const arg = arg_mut, i = i_mut;\n const arg_1 = arg;\n const u = arg_1[2] | 0;\n const h = arg_1[0] | 0;\n const a = arg_1[1] | 0;\n if ((((h >= 3) ? true : (a >= 3)) ? true : (u >= 3)) && (i === line.length)) {\n return line[0];\n }\n else if (i === line.length) {\n return undefined;\n }\n else if (isWhiteSpace(line[i])) {\n arg_mut = arg_1;\n i_mut = (i + 1);\n continue loop;\n }\n else if (((line[i] === \"-\") && (a === 0)) && (u === 0)) {\n arg_mut = [h + 1, a, u];\n i_mut = (i + 1);\n continue loop;\n }\n else if (((line[i] === \"*\") && (h === 0)) && (u === 0)) {\n arg_mut = [h, a + 1, u];\n i_mut = (i + 1);\n continue loop;\n }\n else if (((line[i] === \"_\") && (a === 0)) && (h === 0)) {\n arg_mut = [h, a, u + 1];\n i_mut = (i + 1);\n continue loop;\n }\n else {\n return undefined;\n }\n break;\n }\n };\n return loop([0, 0, 0], 0);\n}\n\n/**\n * Recognizes a code block - lines starting with four spaces (including blank)\n */\nexport function $007CNestedCodeBlock$007C_$007C(lines) {\n let takenLines, rest, _numspaces;\n let matchResult, _numspaces_1, lines_2, rest_1, takenLines_1;\n const activePatternResult = Lines_$007CTakeCodeBlock$007C_$007C(lines);\n if (activePatternResult != null) {\n const activePatternResult_1 = Lines_$007CTrimBlank$007C(activePatternResult[1]);\n if ((takenLines = activePatternResult[1], (rest = activePatternResult[2], (_numspaces = (activePatternResult[0] | 0), !equals(activePatternResult_1, empty()))))) {\n matchResult = 0;\n _numspaces_1 = activePatternResult[0];\n lines_2 = activePatternResult_1;\n rest_1 = activePatternResult[2];\n takenLines_1 = activePatternResult[1];\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return [append_1(toList(delay(() => collect((matchValue) => {\n const l = matchValue[0];\n return singleton_1(isNullOrEmpty(l) ? \"\" : trimSpaces(4, l));\n }, lines_2))), singleton(\"\")), takenLines_1, rest_1, \"\", \"\"];\n default:\n return undefined;\n }\n}\n\n/**\n * Recognizes a fenced code block - starting and ending with at least ``` or ~~~\n */\nexport function $007CFencedCodeBlock$007C_$007C(lines) {\n let indent, header, indent_1, header_1, indent_2, header_2;\n let matchResult, header_3, indent_3, lines_4, num_3, start_6, takenLine_3;\n if (!isEmpty(lines)) {\n let activePatternResult;\n const tupledArg = head(lines);\n activePatternResult = StringPosition_$007CStartsWithNTimesTrimIgnoreStartWhitespace$007C_$007C(\"~\", tupledArg[0], tupledArg[1]);\n if (activePatternResult != null) {\n const activePatternResult_1 = $007CLet$007C(\"~\", activePatternResult[0]);\n if ((indent = (activePatternResult[1] | 0), (header = activePatternResult[2], activePatternResult_1[1] > 2))) {\n matchResult = 0;\n header_3 = activePatternResult[2];\n indent_3 = activePatternResult[1];\n lines_4 = tail(lines);\n num_3 = activePatternResult_1[1];\n start_6 = activePatternResult_1[0];\n takenLine_3 = head(lines);\n }\n else {\n let activePatternResult_2;\n const tupledArg_1 = head(lines);\n activePatternResult_2 = StringPosition_$007CStartsWithNTimesTrimIgnoreStartWhitespace$007C_$007C(\"`\", tupledArg_1[0], tupledArg_1[1]);\n if (activePatternResult_2 != null) {\n const activePatternResult_3 = $007CLet$007C(\"`\", activePatternResult_2[0]);\n if ((indent_1 = (activePatternResult_2[1] | 0), (header_1 = activePatternResult_2[2], activePatternResult_3[1] > 2))) {\n matchResult = 0;\n header_3 = activePatternResult_2[2];\n indent_3 = activePatternResult_2[1];\n lines_4 = tail(lines);\n num_3 = activePatternResult_3[1];\n start_6 = activePatternResult_3[0];\n takenLine_3 = head(lines);\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n }\n else {\n let activePatternResult_4;\n const tupledArg_2 = head(lines);\n activePatternResult_4 = StringPosition_$007CStartsWithNTimesTrimIgnoreStartWhitespace$007C_$007C(\"`\", tupledArg_2[0], tupledArg_2[1]);\n if (activePatternResult_4 != null) {\n const activePatternResult_5 = $007CLet$007C(\"`\", activePatternResult_4[0]);\n if ((indent_2 = (activePatternResult_4[1] | 0), (header_2 = activePatternResult_4[2], activePatternResult_5[1] > 2))) {\n matchResult = 0;\n header_3 = activePatternResult_4[2];\n indent_3 = activePatternResult_4[1];\n lines_4 = tail(lines);\n num_3 = activePatternResult_5[1];\n start_6 = activePatternResult_5[0];\n takenLine_3 = head(lines);\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n let endStr = replicate(num_3, start_6);\n if (header_3.indexOf(start_6) >= 0) {\n return undefined;\n }\n else {\n const patternInput = List_partitionUntil((line) => {\n const matchValue = singleton(line);\n let matchResult_1, h_1, i_1, n_1;\n if (!isEmpty(matchValue)) {\n let activePatternResult_6;\n const tupledArg_3 = head(matchValue);\n activePatternResult_6 = StringPosition_$007CStartsWithNTimesTrimIgnoreStartWhitespace$007C_$007C(start_6, tupledArg_3[0], tupledArg_3[1]);\n if (activePatternResult_6 != null) {\n if (((activePatternResult_6[0] >= num_3) && (activePatternResult_6[1] < 4)) && isNullOrWhiteSpace(activePatternResult_6[2])) {\n matchResult_1 = 0;\n h_1 = activePatternResult_6[2];\n i_1 = activePatternResult_6[1];\n n_1 = activePatternResult_6[0];\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n switch (matchResult_1) {\n case 0: {\n endStr = replicate(n_1, start_6);\n return true;\n }\n default:\n return false;\n }\n }, lines_4);\n const rest = patternInput[1];\n const codeLines = patternInput[0];\n const codeWithoutIndent = toList(delay(() => collect((matchValue_1) => {\n let l;\n return singleton_1((l = matchValue_1[0], ((l.length <= indent_3) && isNullOrWhiteSpace(l)) ? \"\" : (((l.length > indent_3) && isNullOrWhiteSpace(substring(l, 0, indent_3))) ? substring(l, indent_3, l.length - indent_3) : l.trimStart())));\n }, codeLines)));\n let patternInput_1;\n if (isNullOrWhiteSpace(header_3)) {\n patternInput_1 = [\"\", \"\"];\n }\n else {\n const matchValue_2 = tryFind((_arg) => true, split(header_3, [\" \"], undefined, 1));\n if (matchValue_2 != null) {\n const langString = matchValue_2;\n const ignoredString = substring(header_3, header_3.indexOf(langString) + langString.length);\n patternInput_1 = [langString, isNullOrWhiteSpace(ignoredString) ? \"\" : ignoredString];\n }\n else {\n patternInput_1 = [\"\", \"\"];\n }\n }\n let patternInput_2;\n if (!isEmpty(rest)) {\n const tl = tail(rest);\n const takenLine2 = head(rest);\n const hd = head(rest)[0];\n const idx = hd.indexOf(endStr) | 0;\n if ((idx > -1) && ((idx + endStr.length) <= hd.length)) {\n const _pre = substring(hd, 0, idx);\n const after = substring(hd, idx + endStr.length);\n patternInput_2 = [singleton(takenLine2), append_1(codeWithoutIndent, singleton(\"\")), isNullOrWhiteSpace(after) ? tl : cons([after, head(rest)[1]], tl)];\n }\n else {\n patternInput_2 = [singleton(takenLine2), append_1(codeWithoutIndent, singleton(\"\")), tl];\n }\n }\n else {\n patternInput_2 = [empty(), codeWithoutIndent, rest];\n }\n return [patternInput_2[1], append_1(cons(takenLine_3, codeLines), patternInput_2[0]), patternInput_2[2], patternInput_1[0], patternInput_1[1]];\n }\n }\n default:\n return undefined;\n }\n}\n\n/**\n * Matches when the input starts with a number. Returns the\n * rest of the input, following the last number.\n */\nexport function $007CSkipSomeNumbers$007C_$007C(input, _n) {\n const matchValue = ofSeq(input.split(\"\"));\n let matchResult, x_1, xs_1;\n if (!isEmpty(matchValue)) {\n if (isDigit(head(matchValue))) {\n matchResult = 0;\n x_1 = head(matchValue);\n xs_1 = tail(matchValue);\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n const rest = List_partitionUntil((arg) => !isDigit(arg), xs_1)[1];\n return [input.length - length(rest), rest];\n }\n default:\n return undefined;\n }\n}\n\n/**\n * Recognizes a staring of a list (either 1. or +, *, -).\n * Returns the rest of the line, together with the indent.\n */\nexport function $007CListStart$007C_$007C(_arg1_, _arg1__1) {\n let tupledArg, inputRecord;\n const _arg = [_arg1_, _arg1__1];\n const activePatternResult = StringPosition_$007CTrimStartAndCount$007C(_arg[0], _arg[1]);\n if (((tupledArg = activePatternResult[2], StringPosition_$007CStartsWithAny$007C_$007C([\"+ \", \"* \", \"- \"], tupledArg[0], tupledArg[1]))) != null) {\n const range = activePatternResult[2][1];\n const li = [substring(activePatternResult[2][0], 2), (inputRecord = range, new MarkdownRange(inputRecord.StartLine, range.StartColumn + 2, inputRecord.EndLine, inputRecord.EndColumn))];\n const startIndent2 = StringPosition_$007CTrimStartAndCount$007C(li[0], li[1])[0] | 0;\n return [new MarkdownListKind(1, []), activePatternResult[0], (activePatternResult[0] + 2) + ((startIndent2 >= 5) ? 1 : startIndent2), li];\n }\n else {\n let matchResult, _spaces_1, item_1, skipNumCount, startIndent_1;\n const activePatternResult_3 = StringPosition_$007CTrimStartAndCount$007C(_arg[0], _arg[1]);\n let activePatternResult_4;\n const tupledArg_1 = activePatternResult_3[2];\n activePatternResult_4 = $007CSkipSomeNumbers$007C_$007C(tupledArg_1[0], tupledArg_1[1]);\n if (activePatternResult_4 != null) {\n if (!isEmpty(activePatternResult_4[1])) {\n if (head(activePatternResult_4[1]) === \".\") {\n if (!isEmpty(tail(activePatternResult_4[1]))) {\n if (head(tail(activePatternResult_4[1])) === \" \") {\n const activePatternResult_5 = List_$007CAsString$007C(tail(tail(activePatternResult_4[1])));\n matchResult = 0;\n _spaces_1 = activePatternResult_3[1];\n item_1 = activePatternResult_5;\n skipNumCount = activePatternResult_4[0];\n startIndent_1 = activePatternResult_3[0];\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n const startIndent2_1 = StringPosition_$007CTrimStartAndCount$007C(item_1, MarkdownRangeModule_zero)[0] | 0;\n return [new MarkdownListKind(0, []), startIndent_1, ((startIndent_1 + 2) + skipNumCount) + ((startIndent2_1 >= 5) ? 1 : startIndent2_1), [item_1, MarkdownRangeModule_zero]];\n }\n default:\n return undefined;\n }\n }\n}\n\n/**\n * Splits input into lines until whitespace or starting of a list and the rest.\n */\nexport function $007CLinesUntilListOrWhite$007C(lines) {\n return List_partitionUntil((_arg) => {\n let matchResult;\n if ($007CListStart$007C_$007C(_arg[0], _arg[1]) != null) {\n matchResult = 0;\n }\n else if (StringPosition_$007CWhiteSpace$007C_$007C(_arg[0], _arg[1]) != null) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return true;\n default:\n return false;\n }\n }, lines);\n}\n\n/**\n * Splits input into lines until not-indented line or starting of a list and the rest.\n */\nexport function $007CLinesUntilListOrUnindented$007C(lines) {\n return List_partitionUntilLookahead((_arg) => {\n let tupledArg, tupledArg_1, tupledArg_2, tupledArg_3;\n let matchResult;\n if (!isEmpty(_arg)) {\n if (((tupledArg = head(_arg), $007CListStart$007C_$007C(tupledArg[0], tupledArg[1]))) != null) {\n matchResult = 0;\n }\n else if (((tupledArg_1 = head(_arg), StringPosition_$007CUnindented$007C_$007C(tupledArg_1[0], tupledArg_1[1]))) != null) {\n matchResult = 0;\n }\n else if (((tupledArg_2 = head(_arg), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_2[0], tupledArg_2[1]))) != null) {\n if (!isEmpty(tail(_arg))) {\n if (((tupledArg_3 = head(tail(_arg)), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_3[0], tupledArg_3[1]))) != null) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return true;\n default:\n return false;\n }\n }, lines);\n}\n\n/**\n * Recognizes a list item until the next list item (possibly nested) or end of a list.\n * The parameter specifies whether the previous line was simple (single-line not\n * separated by a white line - simple items are not wrapped in

      )\n */\nexport function $007CListItem$007C_$007C(prevSimple, lines) {\n let activePatternResult_3, tupledArg_1, tupledArg_2, tupledArg_3, tupledArg_4, tupledArg_5, tupledArg_6, tupledArg_7;\n let matchResult, continued, endIndent, item, kind, more, next, rest, startIndent, takenLine;\n if (!isEmpty(lines)) {\n let activePatternResult;\n const tupledArg = head(lines);\n activePatternResult = $007CListStart$007C_$007C(tupledArg[0], tupledArg[1]);\n if (activePatternResult != null) {\n const activePatternResult_1 = $007CLinesUntilListOrWhite$007C(tail(lines));\n const activePatternResult_2 = $007CLinesUntilListOrUnindented$007C(activePatternResult_1[1]);\n matchResult = 0;\n continued = activePatternResult_1[0];\n endIndent = activePatternResult[2];\n item = activePatternResult[3];\n kind = activePatternResult[0];\n more = activePatternResult_2[0];\n next = activePatternResult_1[1];\n rest = activePatternResult_2[1];\n startIndent = activePatternResult[1];\n takenLine = head(lines);\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return [startIndent, [(activePatternResult_3 = StringPosition_$007CTrimStartAndCount$007C(item[0], item[1]), (activePatternResult_3[1] >= 4) ? false : (!isEmpty(next) ? ((((tupledArg_1 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_1[0], tupledArg_1[1]))) != null) ? (!isEmpty(rest) ? ((((tupledArg_2 = head(rest), $007CListStart$007C_$007C(tupledArg_2[0], tupledArg_2[1]))) != null) ? false : (isEmpty(next) ? true : ((((tupledArg_3 = head(next), $007CListStart$007C_$007C(tupledArg_3[0], tupledArg_3[1]))) != null) ? true : ((((tupledArg_4 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_4[0], tupledArg_4[1]))) != null) ? (isEmpty(tail(next)) ? true : (!isEmpty(next) ? ((((tupledArg_5 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_5[0], tupledArg_5[1]))) != null) ? (!isEmpty(tail(next)) ? ((((tupledArg_6 = head(tail(next)), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_6[0], tupledArg_6[1]))) != null) ? true : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple)))) : (!isEmpty(next) ? ((((tupledArg_5 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_5[0], tupledArg_5[1]))) != null) ? (!isEmpty(tail(next)) ? ((((tupledArg_6 = head(tail(next)), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_6[0], tupledArg_6[1]))) != null) ? true : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))))))) : (isEmpty(next) ? true : ((((tupledArg_3 = head(next), $007CListStart$007C_$007C(tupledArg_3[0], tupledArg_3[1]))) != null) ? true : ((((tupledArg_4 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_4[0], tupledArg_4[1]))) != null) ? (isEmpty(tail(next)) ? true : (!isEmpty(next) ? ((((tupledArg_5 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_5[0], tupledArg_5[1]))) != null) ? (!isEmpty(tail(next)) ? ((((tupledArg_6 = head(tail(next)), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_6[0], tupledArg_6[1]))) != null) ? true : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple)))) : (!isEmpty(next) ? ((((tupledArg_5 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_5[0], tupledArg_5[1]))) != null) ? (!isEmpty(tail(next)) ? ((((tupledArg_6 = head(tail(next)), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_6[0], tupledArg_6[1]))) != null) ? true : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))))))) : (isEmpty(next) ? true : ((((tupledArg_3 = head(next), $007CListStart$007C_$007C(tupledArg_3[0], tupledArg_3[1]))) != null) ? true : ((((tupledArg_4 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_4[0], tupledArg_4[1]))) != null) ? (isEmpty(tail(next)) ? true : (!isEmpty(next) ? ((((tupledArg_5 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_5[0], tupledArg_5[1]))) != null) ? (!isEmpty(tail(next)) ? ((((tupledArg_6 = head(tail(next)), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_6[0], tupledArg_6[1]))) != null) ? true : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple)))) : (!isEmpty(next) ? ((((tupledArg_5 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_5[0], tupledArg_5[1]))) != null) ? (!isEmpty(tail(next)) ? ((((tupledArg_6 = head(tail(next)), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_6[0], tupledArg_6[1]))) != null) ? true : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))))))) : (isEmpty(next) ? true : ((((tupledArg_3 = head(next), $007CListStart$007C_$007C(tupledArg_3[0], tupledArg_3[1]))) != null) ? true : ((((tupledArg_4 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_4[0], tupledArg_4[1]))) != null) ? (isEmpty(tail(next)) ? true : (!isEmpty(next) ? ((((tupledArg_5 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_5[0], tupledArg_5[1]))) != null) ? (!isEmpty(tail(next)) ? ((((tupledArg_6 = head(tail(next)), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_6[0], tupledArg_6[1]))) != null) ? true : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple)))) : (!isEmpty(next) ? ((((tupledArg_5 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_5[0], tupledArg_5[1]))) != null) ? (!isEmpty(tail(next)) ? ((((tupledArg_6 = head(tail(next)), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_6[0], tupledArg_6[1]))) != null) ? true : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple))) : (!isEmpty(rest) && ((((tupledArg_7 = head(rest), StringPosition_$007CUnindented$007C_$007C(tupledArg_7[0], tupledArg_7[1]))) != null) && prevSimple)))))))), kind, toList(delay(() => append(singleton_1(item), delay(() => append(collect((matchValue_1) => singleton_1([matchValue_1[0].trim(), matchValue_1[1]]), continued), delay(() => collect((matchValue_2) => {\n let inputRecord;\n const n_2 = matchValue_2[1];\n const line_1 = matchValue_2[0];\n const trimmed = trimSpaces(endIndent, line_1);\n return singleton_1([trimmed, (inputRecord = n_2, new MarkdownRange(inputRecord.StartLine, (n_2.StartColumn + line_1.length) - trimmed.length, inputRecord.EndLine, inputRecord.EndColumn))]);\n }, more)))))))], append_1(cons(takenLine, continued), more), rest];\n default:\n return undefined;\n }\n}\n\n/**\n * Recognizes a list - returns list items with information about\n * their indents - these need to be turned into a tree structure later.\n */\nexport function $007CListItems$007C_$007C(prevSimple, lines) {\n let tupledArg;\n const activePatternResult = $007CListItem$007C_$007C(prevSimple, lines);\n if (activePatternResult != null) {\n const indent = activePatternResult[0] | 0;\n const info = activePatternResult[1];\n const nextSimple = activePatternResult[1][0];\n const rest = activePatternResult[3];\n const takenLines = activePatternResult[2];\n let matchResult, takenLine2, items, rest_1, takenLines2;\n if (!isEmpty(rest)) {\n if (((tupledArg = head(rest), $007CHorizontalRule$007C_$007C(tupledArg[0], tupledArg[1]))) != null) {\n matchResult = 0;\n takenLine2 = head(rest);\n }\n else {\n const activePatternResult_2 = $007CListItems$007C_$007C(nextSimple, rest);\n if (activePatternResult_2 != null) {\n matchResult = 1;\n items = activePatternResult_2[0];\n rest_1 = activePatternResult_2[2];\n takenLines2 = activePatternResult_2[1];\n }\n else {\n matchResult = 2;\n }\n }\n }\n else {\n const activePatternResult_3 = $007CListItems$007C_$007C(nextSimple, rest);\n if (activePatternResult_3 != null) {\n matchResult = 1;\n items = activePatternResult_3[0];\n rest_1 = activePatternResult_3[2];\n takenLines2 = activePatternResult_3[1];\n }\n else {\n matchResult = 2;\n }\n }\n switch (matchResult) {\n case 0:\n return [singleton([indent, info]), append_1(takenLines, singleton(takenLine2)), rest];\n case 1:\n return [cons([indent, info], items), append_1(takenLines, takenLines2), rest_1];\n default:\n return [singleton([indent, info]), takenLines, rest];\n }\n }\n else {\n return undefined;\n }\n}\n\nexport function pipeTableFindSplits(delim, line) {\n let _x;\n const cLstToStr = (x) => join(\"\", toArray(x));\n const ptfs = (delim_1_mut, line_1_mut) => {\n let loop, str_1;\n ptfs:\n while (true) {\n const delim_1 = delim_1_mut, line_1 = line_1_mut;\n let matchResult, _body, rest_1, _body_1, rest_2, _body_2, _e, _s, rest_3, _body_3, _e_1, _s_1, rest_4, rest_5, x_5, rest_6;\n const activePatternResult = $007CDelimitedLatexDisplayMath$007C_$007C(ofArray([\"$\", \"$\"]), line_1);\n if (activePatternResult != null) {\n matchResult = 0;\n _body = activePatternResult[0];\n rest_1 = activePatternResult[1];\n }\n else {\n const activePatternResult_1 = $007CDelimitedLatexInlineMath$007C_$007C(singleton(\"$\"), line_1);\n if (activePatternResult_1 != null) {\n matchResult = 1;\n _body_1 = activePatternResult_1[0];\n rest_2 = activePatternResult_1[1];\n }\n else {\n let activePatternResult_2;\n const startl = ofArray([\"`\", \" \"]);\n const endl = ofArray([\" \", \"`\"]);\n const input = line_1;\n if ((loop = ((start_1_mut, list_1_1_mut) => {\n loop:\n while (true) {\n const start_1 = start_1_mut, list_1_1 = list_1_1_mut;\n let matchResult_1, x_1, xs_1, y_1, ys_1;\n if (isEmpty(start_1)) {\n matchResult_1 = 1;\n }\n else if (!isEmpty(list_1_1)) {\n if (head(start_1) === head(list_1_1)) {\n matchResult_1 = 0;\n x_1 = head(start_1);\n xs_1 = tail(start_1);\n y_1 = head(list_1_1);\n ys_1 = tail(list_1_1);\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n matchResult_1 = 2;\n }\n switch (matchResult_1) {\n case 0: {\n start_1_mut = xs_1;\n list_1_1_mut = ys_1;\n continue loop;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop(startl, input))) {\n const matchValue_1 = List_partitionUntilEquals(endl, skip(length(startl), input));\n if (matchValue_1 == null) {\n activePatternResult_2 = undefined;\n }\n else {\n const post = matchValue_1[1];\n activePatternResult_2 = [matchValue_1[0], skip(length(endl), post), length(startl), length(endl)];\n }\n }\n else {\n activePatternResult_2 = undefined;\n }\n if (activePatternResult_2 != null) {\n matchResult = 2;\n _body_2 = activePatternResult_2[0];\n _e = activePatternResult_2[3];\n _s = activePatternResult_2[2];\n rest_3 = activePatternResult_2[1];\n }\n else {\n let activePatternResult_3;\n const input_1 = line_1;\n const strs = List_partitionWhile((i) => (i === \"`\"), input_1)[0];\n activePatternResult_3 = (!isEmpty(strs) ? ((str_1 = initialize(length(strs), (_arg) => \"`\"), (input_2) => {\n let loop_1;\n const startl_1 = str_1;\n const endl_1 = str_1;\n const input_3 = input_2;\n if ((loop_1 = ((start_1_1_mut, list_1_2_mut) => {\n loop_1:\n while (true) {\n const start_1_1 = start_1_1_mut, list_1_2 = list_1_2_mut;\n let matchResult_2, x_1_1, xs_1_1, y_1_1, ys_1_1;\n if (isEmpty(start_1_1)) {\n matchResult_2 = 1;\n }\n else if (!isEmpty(list_1_2)) {\n if (head(start_1_1) === head(list_1_2)) {\n matchResult_2 = 0;\n x_1_1 = head(start_1_1);\n xs_1_1 = tail(start_1_1);\n y_1_1 = head(list_1_2);\n ys_1_1 = tail(list_1_2);\n }\n else {\n matchResult_2 = 2;\n }\n }\n else {\n matchResult_2 = 2;\n }\n switch (matchResult_2) {\n case 0: {\n start_1_1_mut = xs_1_1;\n list_1_2_mut = ys_1_1;\n continue loop_1;\n }\n case 1:\n return true;\n default:\n return false;\n }\n break;\n }\n }), loop_1(startl_1, input_3))) {\n const matchValue_3 = List_partitionUntilEquals(endl_1, skip(length(startl_1), input_3));\n if (matchValue_3 == null) {\n return undefined;\n }\n else {\n const post_1 = matchValue_3[1];\n return [matchValue_3[0], skip(length(endl_1), post_1), length(startl_1), length(endl_1)];\n }\n }\n else {\n return undefined;\n }\n }))(input_1) : undefined);\n if (activePatternResult_3 != null) {\n matchResult = 3;\n _body_3 = activePatternResult_3[0];\n _e_1 = activePatternResult_3[3];\n _s_1 = activePatternResult_3[2];\n rest_4 = activePatternResult_3[1];\n }\n else if (isEmpty(line_1)) {\n matchResult = 6;\n }\n else if (delim_1.some((y_3) => (head(line_1) === y_3))) {\n matchResult = 4;\n rest_5 = tail(line_1);\n x_5 = head(line_1);\n }\n else if (head(line_1) === \"\\\\\") {\n if (!isEmpty(tail(line_1))) {\n matchResult = 5;\n rest_6 = tail(tail(line_1));\n }\n else {\n matchResult = 5;\n rest_6 = tail(line_1);\n }\n }\n else {\n matchResult = 5;\n rest_6 = tail(line_1);\n }\n }\n }\n }\n switch (matchResult) {\n case 0: {\n delim_1_mut = delim_1;\n line_1_mut = rest_1;\n continue ptfs;\n }\n case 1: {\n delim_1_mut = delim_1;\n line_1_mut = rest_2;\n continue ptfs;\n }\n case 2: {\n delim_1_mut = delim_1;\n line_1_mut = rest_3;\n continue ptfs;\n }\n case 3: {\n delim_1_mut = delim_1;\n line_1_mut = rest_4;\n continue ptfs;\n }\n case 4:\n return rest_5;\n case 5: {\n delim_1_mut = delim_1;\n line_1_mut = rest_6;\n continue ptfs;\n }\n default:\n return undefined;\n }\n break;\n }\n };\n const rest_7 = ptfs(delim, line);\n if (rest_7 != null) {\n if ((_x = rest_7, equals(line, empty()))) {\n const _x_1 = rest_7;\n return singleton(\"\");\n }\n else {\n const x_6 = rest_7;\n return cons(cLstToStr(toList(take((length(line) - length(x_6)) - 1, line))), pipeTableFindSplits(delim, x_6));\n }\n }\n else {\n return singleton(cLstToStr(line));\n }\n}\n\n/**\n * Recognizes alignment specified in the passed separator line.\n */\nexport function $007CTableCellSeparator$007C_$007C(_arg1_, _arg1__1) {\n let tupledArg_8, tupledArg_6, tupledArg_7, tupledArg_3, tupledArg_4, tupledArg_1, tupledArg_2;\n const _arg = [_arg1_, _arg1__1];\n let matchResult;\n let activePatternResult;\n const tupledArg = [\":\", \":\"];\n activePatternResult = StringPosition_$007CStartsAndEndsWith$007C_$007C(tupledArg[0], tupledArg[1], _arg[0], _arg[1]);\n if (activePatternResult != null) {\n if (((tupledArg_1 = [\"-\", MarkdownRangeModule_zero], (tupledArg_2 = activePatternResult, StringPosition_$007CEqualsRepeated$007C_$007C(tupledArg_1[0], tupledArg_1[1], tupledArg_2[0], tupledArg_2[1])))) != null) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return new MarkdownColumnAlignment(2, []);\n default: {\n let matchResult_1;\n const activePatternResult_2 = StringPosition_$007CStartsWith$007C_$007C(\":\", _arg[0], _arg[1]);\n if (activePatternResult_2 != null) {\n if (((tupledArg_3 = [\"-\", MarkdownRangeModule_zero], (tupledArg_4 = activePatternResult_2, StringPosition_$007CEqualsRepeated$007C_$007C(tupledArg_3[0], tupledArg_3[1], tupledArg_4[0], tupledArg_4[1])))) != null) {\n matchResult_1 = 0;\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n switch (matchResult_1) {\n case 0:\n return new MarkdownColumnAlignment(0, []);\n default: {\n let matchResult_2;\n let activePatternResult_4;\n const tupledArg_5 = [\"\", \":\"];\n activePatternResult_4 = StringPosition_$007CStartsAndEndsWith$007C_$007C(tupledArg_5[0], tupledArg_5[1], _arg[0], _arg[1]);\n if (activePatternResult_4 != null) {\n if (((tupledArg_6 = [\"-\", MarkdownRangeModule_zero], (tupledArg_7 = activePatternResult_4, StringPosition_$007CEqualsRepeated$007C_$007C(tupledArg_6[0], tupledArg_6[1], tupledArg_7[0], tupledArg_7[1])))) != null) {\n matchResult_2 = 0;\n }\n else {\n matchResult_2 = 1;\n }\n }\n else {\n matchResult_2 = 1;\n }\n switch (matchResult_2) {\n case 0:\n return new MarkdownColumnAlignment(1, []);\n default:\n if (((tupledArg_8 = [\"-\", MarkdownRangeModule_zero], StringPosition_$007CEqualsRepeated$007C_$007C(tupledArg_8[0], tupledArg_8[1], _arg[0], _arg[1]))) != null) {\n return new MarkdownColumnAlignment(3, []);\n }\n else {\n return undefined;\n }\n }\n }\n }\n }\n }\n}\n\n/**\n * Recognizes row of pipe table.\n * The function takes number of expected columns and array of delimiters.\n * Returns list of strings between delimiters.\n */\nexport function $007CPipeTableRow$007C_$007C(size, delimiters, line, n) {\n const parts = map_1((s) => [s.trim(), n], toArray(pipeTableFindSplits(delimiters, ofArray(line.split(\"\")))));\n const n_1 = parts.length | 0;\n const m = ((size == null) ? 1 : value_14(size)) | 0;\n const x = ((isNullOrEmpty(item_2(0, parts)[0]) && (n_1 > m)) ? 1 : 0) | 0;\n const y = ((isNullOrEmpty(item_2(n_1 - 1, parts)[0]) && ((n_1 - x) > m)) ? (n_1 - 2) : (n_1 - 1)) | 0;\n if ((n_1 === 1) ? true : ((size != null) && (((y - x) + 1) !== m))) {\n return undefined;\n }\n else {\n return ofArray(parts.slice(x, y + 1));\n }\n}\n\n/**\n * Recognizes separator row of pipe table.\n * Returns list of alignments.\n */\nexport function $007CPipeSeparatorRow$007C_$007C(size, _arg1_, _arg1__1) {\n const _arg = [_arg1_, _arg1__1];\n const activePatternResult = $007CPipeTableRow$007C_$007C(size, [\"|\", \"+\"], _arg[0], _arg[1]);\n if (activePatternResult != null) {\n const parts = activePatternResult;\n const alignments = choose((tupledArg) => $007CTableCellSeparator$007C_$007C(tupledArg[0], tupledArg[1]), parts);\n if (length(parts) !== length(alignments)) {\n return undefined;\n }\n else {\n return alignments;\n }\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Recognizes pipe table\n */\nexport function $007CPipeTableBlock$007C_$007C(input) {\n const getTableRows = (size_mut, acc_mut, takenLinesAcc_mut, lines_mut) => {\n getTableRows:\n while (true) {\n const size = size_mut, acc = acc_mut, takenLinesAcc = takenLinesAcc_mut, lines = lines_mut;\n let matchResult, columns, rest, takenLine, rest_1;\n if (!isEmpty(lines)) {\n let activePatternResult;\n const tupledArg = head(lines);\n activePatternResult = $007CPipeTableRow$007C_$007C(size, [\"|\"], tupledArg[0], tupledArg[1]);\n if (activePatternResult != null) {\n matchResult = 0;\n columns = activePatternResult;\n rest = tail(lines);\n takenLine = head(lines);\n }\n else {\n matchResult = 1;\n rest_1 = lines;\n }\n }\n else {\n matchResult = 1;\n rest_1 = lines;\n }\n switch (matchResult) {\n case 0: {\n size_mut = size;\n acc_mut = cons(map(singleton, columns), acc);\n takenLinesAcc_mut = cons(takenLine, takenLinesAcc);\n lines_mut = rest;\n continue getTableRows;\n }\n default:\n return [reverse(acc), reverse(takenLinesAcc), rest_1];\n }\n break;\n }\n };\n let matchResult_1, alignments, rest_2, takenLine_1, headers, rest_3, takenLine_2;\n if (!isEmpty(input)) {\n let activePatternResult_1;\n const tupledArg_1 = head(input);\n activePatternResult_1 = $007CPipeSeparatorRow$007C_$007C(undefined, tupledArg_1[0], tupledArg_1[1]);\n if (activePatternResult_1 != null) {\n matchResult_1 = 0;\n alignments = activePatternResult_1;\n rest_2 = tail(input);\n takenLine_1 = head(input);\n }\n else {\n let activePatternResult_2;\n const tupledArg_2 = head(input);\n activePatternResult_2 = $007CPipeTableRow$007C_$007C(undefined, [\"|\"], tupledArg_2[0], tupledArg_2[1]);\n if (activePatternResult_2 != null) {\n matchResult_1 = 1;\n headers = activePatternResult_2;\n rest_3 = tail(input);\n takenLine_2 = head(input);\n }\n else {\n matchResult_1 = 2;\n }\n }\n }\n else {\n matchResult_1 = 2;\n }\n switch (matchResult_1) {\n case 0: {\n const patternInput = getTableRows(length(alignments), empty(), empty(), rest_2);\n return [[undefined, alignments, patternInput[0]], cons(takenLine_1, patternInput[1]), patternInput[2]];\n }\n case 1: {\n let matchResult_2, alignments_1, rest_4, takenLine2;\n if (!isEmpty(rest_3)) {\n let activePatternResult_3;\n const tupledArg_3 = head(rest_3);\n activePatternResult_3 = $007CPipeSeparatorRow$007C_$007C(length(headers), tupledArg_3[0], tupledArg_3[1]);\n if (activePatternResult_3 != null) {\n matchResult_2 = 0;\n alignments_1 = activePatternResult_3;\n rest_4 = tail(rest_3);\n takenLine2 = head(rest_3);\n }\n else {\n matchResult_2 = 1;\n }\n }\n else {\n matchResult_2 = 1;\n }\n switch (matchResult_2) {\n case 0: {\n const patternInput_1 = getTableRows(length(headers), empty(), empty(), rest_4);\n return [[map(singleton, headers), alignments_1, patternInput_1[0]], ofArrayWithTail([takenLine_2, takenLine2], patternInput_1[1]), patternInput_1[2]];\n }\n default:\n return undefined;\n }\n }\n default:\n return undefined;\n }\n}\n\n/**\n * Recognizes one line of emacs table. It can be line with content or separator line.\n * The function takes positions of grid columns (if known) and expected grid separator.\n * Passed function is used to check whether all parts within grid are valid.\n * Retuns tuple (position of grid columns, text between grid columns).\n */\nexport function $007CEmacsTableLine$007C_$007C(grid, c, check, line, _n) {\n let p;\n if (grid != null) {\n p = value_14(grid);\n }\n else {\n const array = toArray_1(rangeDouble(0, 1, line.length - 1));\n p = array.filter((i) => (line[i] === c));\n }\n const n = (p.length - 1) | 0;\n if (((n < 2) ? true : (line.length <= item_2(n, p))) ? true : p.some((i_1) => (line[i_1] !== c))) {\n return undefined;\n }\n else {\n const parts = map((i_2) => {\n const rng = new MarkdownRange(n, 0, n, (item_2(i_2, p) - item_2(i_2 - 1, p)) - 1);\n return [substring(line, item_2(i_2 - 1, p) + 1, (item_2(i_2, p) - item_2(i_2 - 1, p)) - 1), rng];\n }, toList(rangeDouble(1, 1, n)));\n if (forAll_1(check, parts)) {\n return [p, parts];\n }\n else {\n return undefined;\n }\n }\n}\n\n/**\n * Recognizes emacs table\n */\nexport function $007CEmacsTableBlock$007C_$007C(lines) {\n let matchResult, grid_1, parts, rest, takenLine;\n if (!isEmpty(lines)) {\n let activePatternResult;\n const tupledArg_4 = head(lines);\n activePatternResult = $007CEmacsTableLine$007C_$007C(undefined, \"+\", (arg_1) => {\n let tupledArg_1;\n return ((tupledArg_1 = arg_1, $007CTableCellSeparator$007C_$007C(tupledArg_1[0], tupledArg_1[1]))) != null;\n }, tupledArg_4[0], tupledArg_4[1]);\n if (activePatternResult != null) {\n matchResult = 0;\n grid_1 = activePatternResult[0];\n parts = activePatternResult[1];\n rest = tail(lines);\n takenLine = head(lines);\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n const alignments = choose((tupledArg_5) => $007CTableCellSeparator$007C_$007C(tupledArg_5[0], tupledArg_5[1]), parts);\n const emptyCur = replicate_1(grid_1.length - 1, empty());\n const loop = (flag_mut, takenLines2_mut, headers_mut, prevRows_mut, cur_mut, lines_1_mut) => {\n let tupledArg_7, tupledArg_8;\n loop:\n while (true) {\n const flag = flag_mut, takenLines2 = takenLines2_mut, headers = headers_mut, prevRows = prevRows_mut, cur = cur_mut, lines_1 = lines_1_mut;\n let matchResult_1, others_1, parts_1, takenLine2_1, others_2, takenLine2_2, others_3, takenLine2_3;\n if (!isEmpty(lines_1)) {\n let activePatternResult_1;\n const tupledArg_6 = head(lines_1);\n activePatternResult_1 = $007CEmacsTableLine$007C_$007C(grid_1, \"|\", (tupledArg_3) => true, tupledArg_6[0], tupledArg_6[1]);\n if (activePatternResult_1 != null) {\n matchResult_1 = 0;\n others_1 = tail(lines_1);\n parts_1 = activePatternResult_1[1];\n takenLine2_1 = head(lines_1);\n }\n else if (((tupledArg_7 = head(lines_1), $007CEmacsTableLine$007C_$007C(grid_1, \"+\", (arg) => {\n let tupledArg;\n return ((tupledArg = arg, StringPosition_$007CEqualsRepeated$007C_$007C(\"-\", MarkdownRangeModule_zero, tupledArg[0], tupledArg[1]))) != null;\n }, tupledArg_7[0], tupledArg_7[1]))) != null) {\n matchResult_1 = 1;\n others_2 = tail(lines_1);\n takenLine2_2 = head(lines_1);\n }\n else if (((tupledArg_8 = head(lines_1), $007CEmacsTableLine$007C_$007C(grid_1, \"+\", (arg_2) => {\n let tupledArg_2;\n return ((tupledArg_2 = arg_2, StringPosition_$007CEqualsRepeated$007C_$007C(\"=\", MarkdownRangeModule_zero, tupledArg_2[0], tupledArg_2[1]))) != null;\n }, tupledArg_8[0], tupledArg_8[1]))) != null) {\n if (headers == null) {\n matchResult_1 = 2;\n others_3 = tail(lines_1);\n takenLine2_3 = head(lines_1);\n }\n else {\n matchResult_1 = 3;\n }\n }\n else {\n matchResult_1 = 3;\n }\n }\n else {\n matchResult_1 = 3;\n }\n switch (matchResult_1) {\n case 0: {\n flag_mut = false;\n takenLines2_mut = cons(takenLine2_1, takenLines2);\n headers_mut = headers;\n prevRows_mut = prevRows;\n cur_mut = map((tupledArg_9) => {\n const _arg = tupledArg_9[0];\n return cons([_arg[0].trimEnd(), _arg[1]], tupledArg_9[1]);\n }, zip(parts_1, cur));\n lines_1_mut = others_1;\n continue loop;\n }\n case 1: {\n flag_mut = true;\n takenLines2_mut = cons(takenLine2_2, takenLines2);\n headers_mut = headers;\n prevRows_mut = cons(map(reverse, cur), prevRows);\n cur_mut = emptyCur;\n lines_1_mut = others_2;\n continue loop;\n }\n case 2: {\n flag_mut = true;\n takenLines2_mut = cons(takenLine2_3, takenLines2);\n headers_mut = map(reverse, cur);\n prevRows_mut = prevRows;\n cur_mut = emptyCur;\n lines_1_mut = others_3;\n continue loop;\n }\n default:\n if (flag) {\n return [[headers, alignments, reverse(prevRows)], cons(takenLine, reverse(takenLines2)), lines_1];\n }\n else {\n return undefined;\n }\n }\n break;\n }\n };\n return loop(true, empty(), undefined, empty(), emptyCur, rest);\n }\n default:\n return undefined;\n }\n}\n\n/**\n * Recognizes a start of a blockquote\n */\nexport function $007CBlockquoteStart$007C_$007C(line, n) {\n let inputRecord;\n const match$0027 = match(create(\"(^ {0,3})>(\\\\s?)(.*)\"), line);\n if (match$0027 != null) {\n const group = match$0027[3];\n const index = (match$0027[1].length + match$0027[2].length) | 0;\n return [group || \"\", (inputRecord = n, new MarkdownRange(inputRecord.StartLine, n.StartColumn + index, inputRecord.EndLine, (n.StartColumn + index) + group.length))];\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Takes lines that belong to a continuing paragraph until\n * a white line or start of other paragraph-item is found\n */\nexport function $007CTakeParagraphLines$007C_$007C(input) {\n const matchValue = List_partitionWhileLookahead((_arg) => {\n let tupledArg, tupledArg_1;\n return ($007CHeading$007C_$007C(_arg) != null) ? false : (($007CFencedCodeBlock$007C_$007C(_arg) != null) ? false : (!isEmpty(_arg) ? ((((tupledArg = head(_arg), $007CBlockquoteStart$007C_$007C(tupledArg[0], tupledArg[1]))) != null) ? false : (!(((tupledArg_1 = head(_arg), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_1[0], tupledArg_1[1]))) != null))) : true));\n }, input);\n if (!equals(matchValue[0], empty())) {\n return [matchValue[0], matchValue[1]];\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Recognize nested HTML block\n * TODO: This is too simple - takes paragraph that starts with <\n */\nexport function $007CHtmlBlock$007C_$007C(lines) {\n let rest, html;\n let matchResult, _n_1, first_1, html_1, rest_1, takenLine_1;\n if (!isEmpty(lines)) {\n const activePatternResult = $007CTakeParagraphLines$007C_$007C(lines);\n if (activePatternResult != null) {\n if ((rest = activePatternResult[1], (html = activePatternResult[0], head(lines)[0].startsWith(\"<\")))) {\n matchResult = 0;\n _n_1 = head(lines)[1];\n first_1 = head(lines)[0];\n html_1 = activePatternResult[0];\n rest_1 = activePatternResult[1];\n takenLine_1 = head(lines);\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return [html_1, cons(takenLine_1, html_1), rest_1];\n default:\n return undefined;\n }\n}\n\n/**\n * \"Markdown allows you to be lazy and only put the > before the first line of a hard-wrapped paragraph\"\n */\nexport function $007CLinesUntilBlockquoteEnds$007C(input) {\n return List_partitionUntilLookahead((next) => {\n let tupledArg, tupledArg_1;\n let matchResult;\n if (!isEmpty(next)) {\n if (((tupledArg = head(next), $007CBlockquoteStart$007C_$007C(tupledArg[0], tupledArg[1]))) != null) {\n matchResult = 0;\n }\n else if ($007CHeading$007C_$007C(next) != null) {\n matchResult = 1;\n }\n else if (((tupledArg_1 = head(next), StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_1[0], tupledArg_1[1]))) != null) {\n matchResult = 2;\n }\n else {\n matchResult = 3;\n }\n }\n else if ($007CHeading$007C_$007C(next) != null) {\n matchResult = 1;\n }\n else {\n matchResult = 3;\n }\n switch (matchResult) {\n case 0:\n return true;\n case 1:\n return true;\n case 2:\n return true;\n default:\n return false;\n }\n }, input);\n}\n\n/**\n * Recognizes blockquote - continues taking paragraphs\n * starting with '>' until there is something else\n */\nexport function $007CBlockquote$007C_$007C(lines) {\n let activePatternResult_5, lines_1, rest_2, takenLines_1;\n const activePatternResult = $007CEmptyBlockquote$007C_$007C(lines);\n if (activePatternResult != null) {\n const activePatternResult_1 = Lines_$007CTrimBlankStart$007C(activePatternResult[1]);\n const takenLines = activePatternResult[0];\n return [singleton([\"\", MarkdownRangeModule_zero]), append_1(takenLines, activePatternResult_1[0]), activePatternResult_1[1]];\n }\n else {\n let matchResult, continued, quoteLine, rest_1, takenLine, takenLines2_1;\n if (!isEmpty(lines)) {\n let activePatternResult_2;\n const tupledArg = head(lines);\n activePatternResult_2 = $007CBlockquoteStart$007C_$007C(tupledArg[0], tupledArg[1]);\n if (activePatternResult_2 != null) {\n const activePatternResult_3 = $007CLinesUntilBlockquoteEnds$007C(tail(lines));\n const activePatternResult_4 = Lines_$007CTrimBlankStart$007C(activePatternResult_3[1]);\n matchResult = 0;\n continued = activePatternResult_3[0];\n quoteLine = activePatternResult_2;\n rest_1 = activePatternResult_4[1];\n takenLine = head(lines);\n takenLines2_1 = activePatternResult_4[0];\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n const patternInput = (activePatternResult_5 = $007CBlockquote$007C_$007C(rest_1), (activePatternResult_5 != null) ? ((lines_1 = activePatternResult_5[0], (rest_2 = activePatternResult_5[2], (takenLines_1 = activePatternResult_5[1], [lines_1, takenLines_1, rest_2])))) : [empty(), empty(), rest_1]);\n return [append_1(cons(quoteLine, continued), patternInput[0]), append_1(cons(takenLine, continued), append_1(takenLines2_1, patternInput[1])), patternInput[2]];\n }\n default:\n return undefined;\n }\n }\n}\n\n/**\n * Recognizes a special case: an empty blockquote line should terminate\n * the blockquote if the next line is not a blockquote\n */\nexport function $007CEmptyBlockquote$007C_$007C(lines) {\n let tupledArg_3, tupledArg_1;\n let matchResult;\n if (!isEmpty(lines)) {\n let activePatternResult;\n const tupledArg = head(lines);\n activePatternResult = $007CBlockquoteStart$007C_$007C(tupledArg[0], tupledArg[1]);\n if (activePatternResult != null) {\n if (((tupledArg_1 = activePatternResult, StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_1[0], tupledArg_1[1]))) != null) {\n if ($007CBlockquote$007C_$007C(tail(lines)) != null) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return undefined;\n default: {\n let matchResult_1, rest, takenLine;\n if (!isEmpty(lines)) {\n let activePatternResult_3;\n const tupledArg_2 = head(lines);\n activePatternResult_3 = $007CBlockquoteStart$007C_$007C(tupledArg_2[0], tupledArg_2[1]);\n if (activePatternResult_3 != null) {\n if (((tupledArg_3 = activePatternResult_3, StringPosition_$007CWhiteSpace$007C_$007C(tupledArg_3[0], tupledArg_3[1]))) != null) {\n matchResult_1 = 0;\n rest = tail(lines);\n takenLine = head(lines);\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n switch (matchResult_1) {\n case 0:\n return [singleton(takenLine), rest];\n default:\n return undefined;\n }\n }\n }\n}\n\n/**\n * Recognizes Latex block\n * 1. indented paragraph starting with \"$$$\". This is F#-literate-specific, not part of the usual\n * ipynb way of putting latex in markdown. The \"raw markdown\" version of this (takenLines) has\n * a \\begin{equation} \\end{equation} wrapping instead of \"$$$\"\n * \n * 2. Single line latex starting with `$$`.\n * \n * 3. Block delimited by \\begin{equation} \\end{equation}.\n * \n * 4. Block delimited by \\begin{align} \\end{align}.\n * \n * See formats accepted at https://stackoverflow.com/questions/13208286/how-to-write-latex-in-ipython-notebook\n */\nexport function $007CLatexBlock$007C_$007C(lines) {\n let first_1;\n let matchResult, _takenLine1_1, first_4, n_2, rest_4, first_5, n_3, rest_6, takenLine_3, _n_2, first_6, rest_7, takenLine_4, _n_3, first_7, rest_9, takenLine_5;\n if (!isEmpty(lines)) {\n if (head(lines)[0].trimEnd() === \"$$$\") {\n matchResult = 0;\n _takenLine1_1 = head(lines);\n first_4 = head(lines)[0];\n n_2 = head(lines)[1];\n rest_4 = tail(lines);\n }\n else if ((first_1 = head(lines)[0], (first_1.trimEnd().startsWith(\"$$\") && first_1.trimEnd().endsWith(\"$$\")) && (first_1.trimEnd().length >= 4))) {\n matchResult = 1;\n first_5 = head(lines)[0];\n n_3 = head(lines)[1];\n rest_6 = tail(lines);\n takenLine_3 = head(lines);\n }\n else if (head(lines)[0].trimEnd() === \"\\\\begin{equation}\") {\n matchResult = 2;\n _n_2 = head(lines)[1];\n first_6 = head(lines)[0];\n rest_7 = tail(lines);\n takenLine_4 = head(lines);\n }\n else if (head(lines)[0].trimEnd() === \"\\\\begin{align}\") {\n matchResult = 3;\n _n_3 = head(lines)[1];\n first_7 = head(lines)[0];\n rest_9 = tail(lines);\n takenLine_5 = head(lines);\n }\n else {\n matchResult = 4;\n }\n }\n else {\n matchResult = 4;\n }\n switch (matchResult) {\n case 0: {\n const activePatternResult = $007CTakeParagraphLines$007C_$007C(rest_4);\n if (activePatternResult != null) {\n const body = activePatternResult[0];\n const rest_5 = activePatternResult[1];\n return [\"equation\", body, append_1(cons([\"\\\\begin{equation}\", n_2], body), singleton([\"\\\\end{equation}\", n_2])), rest_5];\n }\n else {\n return undefined;\n }\n }\n case 1: {\n const text = first_5.trimEnd();\n return [\"equation\", singleton([text.slice(2, (text.length - 3) + 1), n_3]), singleton(takenLine_3), rest_6];\n }\n case 2: {\n const body_1 = takeWhile((s) => (s[0] !== \"\\\\end{equation}\"), rest_7);\n const res = skipWhile((s_1) => (s_1[0] !== \"\\\\end{equation}\"), rest_7);\n if (isEmpty(res)) {\n return undefined;\n }\n else {\n return [\"equation\", body_1, cons(takenLine_4, body_1), tail(res)];\n }\n }\n case 3: {\n const body_2 = takeWhile((s_2) => (s_2[0] !== \"\\\\end{align}\"), rest_9);\n const res_1 = skipWhile((s_3) => (s_3[0] !== \"\\\\end{align}\"), rest_9);\n if (isEmpty(res_1)) {\n return undefined;\n }\n else {\n return [\"align\", body_2, cons(takenLine_5, body_2), tail(res_1)];\n }\n }\n default:\n return undefined;\n }\n}\n\n/**\n * Recognize a definition of a link as in `[key]: http://url ...`\n */\nexport function $007CLinkDefinition$007C_$007C(s) {\n let matchResult, line, link, rest, wrapped;\n if (!isEmpty(s)) {\n let activePatternResult;\n const tupledArg = [\"[\", \"]:\"];\n const tupledArg_1 = head(s);\n activePatternResult = StringPosition_$007CStartsWithWrapped$007C_$007C(tupledArg[0], tupledArg[1], tupledArg_1[0], tupledArg_1[1]);\n if (activePatternResult != null) {\n let activePatternResult_1;\n const tupledArg_2 = activePatternResult[1];\n activePatternResult_1 = StringPosition_$007CTrimBoth$007C(tupledArg_2[0], tupledArg_2[1]);\n matchResult = 0;\n line = head(s);\n link = activePatternResult_1;\n rest = tail(s);\n wrapped = activePatternResult[0];\n }\n else {\n let activePatternResult_2;\n const tupledArg_3 = [\" [\", \"]:\"];\n const tupledArg_4 = head(s);\n activePatternResult_2 = StringPosition_$007CStartsWithWrapped$007C_$007C(tupledArg_3[0], tupledArg_3[1], tupledArg_4[0], tupledArg_4[1]);\n if (activePatternResult_2 != null) {\n let activePatternResult_3;\n const tupledArg_5 = activePatternResult_2[1];\n activePatternResult_3 = StringPosition_$007CTrimBoth$007C(tupledArg_5[0], tupledArg_5[1]);\n matchResult = 0;\n line = head(s);\n link = activePatternResult_3;\n rest = tail(s);\n wrapped = activePatternResult_2[0];\n }\n else {\n let activePatternResult_4;\n const tupledArg_6 = [\" [\", \"]:\"];\n const tupledArg_7 = head(s);\n activePatternResult_4 = StringPosition_$007CStartsWithWrapped$007C_$007C(tupledArg_6[0], tupledArg_6[1], tupledArg_7[0], tupledArg_7[1]);\n if (activePatternResult_4 != null) {\n let activePatternResult_5;\n const tupledArg_8 = activePatternResult_4[1];\n activePatternResult_5 = StringPosition_$007CTrimBoth$007C(tupledArg_8[0], tupledArg_8[1]);\n matchResult = 0;\n line = head(s);\n link = activePatternResult_5;\n rest = tail(s);\n wrapped = activePatternResult_4[0];\n }\n else {\n let activePatternResult_6;\n const tupledArg_9 = [\" [\", \"]:\"];\n const tupledArg_10 = head(s);\n activePatternResult_6 = StringPosition_$007CStartsWithWrapped$007C_$007C(tupledArg_9[0], tupledArg_9[1], tupledArg_10[0], tupledArg_10[1]);\n if (activePatternResult_6 != null) {\n let activePatternResult_7;\n const tupledArg_11 = activePatternResult_6[1];\n activePatternResult_7 = StringPosition_$007CTrimBoth$007C(tupledArg_11[0], tupledArg_11[1]);\n matchResult = 0;\n line = head(s);\n link = activePatternResult_7;\n rest = tail(s);\n wrapped = activePatternResult_6[0];\n }\n else {\n matchResult = 1;\n }\n }\n }\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return [[wrapped, link], singleton(line), rest];\n default:\n return undefined;\n }\n}\n\nexport function updateCurrentRange(lines) {\n if (!isEmpty(lines)) {\n return some(head(lines)[1]);\n }\n else {\n return undefined;\n }\n}\n\n/**\n * Parse a list of lines into a sequence of markdown paragraphs\n */\nexport function parseParagraphs(ctx, lines) {\n return delay(() => {\n let activePatternResult, loc, rest, yaml, matchValue;\n const ctx_1 = new ParsingContext(ctx.Links, ctx.Newline, ctx.IsFirst, updateCurrentRange(lines), ctx.ParseOptions);\n const patternInput = (ctx_1.IsFirst && ParsingContext__get_AllowYamlFrontMatter(ctx_1)) ? ((activePatternResult = $007CYamlFrontmatter$007C_$007C(lines), (activePatternResult != null) ? ((loc = activePatternResult[1], (rest = activePatternResult[2], (yaml = activePatternResult[0], [new MarkdownParagraph(12, [yaml, loc]), rest])))) : [undefined, lines])) : [undefined, lines];\n const moreLines = Lines_$007CTrimBlankStart$007C(patternInput[1])[1];\n return append((matchValue = patternInput[0], (matchValue != null) ? singleton_1(matchValue) : (empty_1())), delay(() => {\n let tree, nestUnmatchingItems, formatTree, unifySimpleProperty, takenLines_7, all;\n const ctx_2 = new ParsingContext(ctx_1.Links, ctx_1.Newline, ctx_1.IsFirst, updateCurrentRange(moreLines), ctx_1.ParseOptions);\n const ctx_3 = new ParsingContext(ctx_2.Links, ctx_2.Newline, false, ctx_2.CurrentRange, ctx_2.ParseOptions);\n const matchValue_1 = moreLines;\n const activePatternResult_2 = $007CLinkDefinition$007C_$007C(matchValue_1);\n if (activePatternResult_2 != null) {\n const activePatternResult_3 = Lines_$007CTrimBlankStart$007C(activePatternResult_2[2]);\n const key = activePatternResult_2[0][0];\n const link = activePatternResult_2[0][1];\n const takenLines = activePatternResult_2[1];\n return append(ParsingContext__get_ParseNonCodeAsOther(ctx_3) ? singleton_1(new MarkdownParagraph(10, [append_1(takenLines, activePatternResult_3[0]), ctx_3.CurrentRange])) : append(ctx_3.Links.has(key) ? ((toFail(printf(\"Cannot define a link to the reference %s twice.\"))(key), empty_1())) : empty_1(), delay(() => {\n addToDict(ctx_3.Links, key, getLinkAndTitle(link[0], link[1]));\n return empty_1();\n })), delay(() => parseParagraphs(ctx_3, activePatternResult_3[1])));\n }\n else {\n let matchResult, code, ignoredLine, langString, lines_2, takenLines_1, takenLines2_1;\n const activePatternResult_4 = $007CNestedCodeBlock$007C_$007C(matchValue_1);\n if (activePatternResult_4 != null) {\n const activePatternResult_5 = Lines_$007CTrimBlankStart$007C(activePatternResult_4[2]);\n matchResult = 0;\n code = activePatternResult_4[0];\n ignoredLine = activePatternResult_4[4];\n langString = activePatternResult_4[3];\n lines_2 = activePatternResult_5[1];\n takenLines_1 = activePatternResult_4[1];\n takenLines2_1 = activePatternResult_5[0];\n }\n else {\n const activePatternResult_6 = $007CFencedCodeBlock$007C_$007C(matchValue_1);\n if (activePatternResult_6 != null) {\n const activePatternResult_7 = Lines_$007CTrimBlankStart$007C(activePatternResult_6[2]);\n matchResult = 0;\n code = activePatternResult_6[0];\n ignoredLine = activePatternResult_6[4];\n langString = activePatternResult_6[3];\n lines_2 = activePatternResult_7[1];\n takenLines_1 = activePatternResult_6[1];\n takenLines2_1 = activePatternResult_7[0];\n }\n else {\n matchResult = 1;\n }\n }\n switch (matchResult) {\n case 0:\n return append(ParsingContext__get_ParseCodeAsOther(ctx_3) ? singleton_1(new MarkdownParagraph(10, [append_1(takenLines_1, takenLines2_1), ctx_3.CurrentRange])) : singleton_1(new MarkdownParagraph(2, [join(ctx_3.Newline, code), undefined, langString, ignoredLine, ctx_3.CurrentRange])), delay(() => parseParagraphs(ctx_3, lines_2)));\n default: {\n const activePatternResult_8 = $007CBlockquote$007C_$007C(matchValue_1);\n if (activePatternResult_8 != null) {\n const activePatternResult_9 = Lines_$007CTrimBlankStart$007C(activePatternResult_8[2]);\n const body = activePatternResult_8[0];\n const takenLines_2 = activePatternResult_8[1];\n return append(ParsingContext__get_ParseNonCodeAsOther(ctx_3) ? singleton_1(new MarkdownParagraph(10, [append_1(takenLines_2, activePatternResult_9[0]), ctx_3.CurrentRange])) : singleton_1(new MarkdownParagraph(5, [ofSeq(parseParagraphs(ctx_3, append_1(body, singleton([\"\", MarkdownRangeModule_zero])))), ctx_3.CurrentRange])), delay(() => parseParagraphs(ctx_3, activePatternResult_9[1])));\n }\n else {\n let matchResult_1, alignments, headers, rest_2, rows, takenLines_3, takenLines2_3;\n const activePatternResult_10 = $007CEmacsTableBlock$007C_$007C(matchValue_1);\n if (activePatternResult_10 != null) {\n const activePatternResult_11 = Lines_$007CTrimBlankStart$007C(activePatternResult_10[2]);\n matchResult_1 = 0;\n alignments = activePatternResult_10[0][1];\n headers = activePatternResult_10[0][0];\n rest_2 = activePatternResult_11[1];\n rows = activePatternResult_10[0][2];\n takenLines_3 = activePatternResult_10[1];\n takenLines2_3 = activePatternResult_11[0];\n }\n else {\n const activePatternResult_12 = $007CPipeTableBlock$007C_$007C(matchValue_1);\n if (activePatternResult_12 != null) {\n const activePatternResult_13 = Lines_$007CTrimBlankStart$007C(activePatternResult_12[2]);\n matchResult_1 = 0;\n alignments = activePatternResult_12[0][1];\n headers = activePatternResult_12[0][0];\n rest_2 = activePatternResult_13[1];\n rows = activePatternResult_12[0][2];\n takenLines_3 = activePatternResult_12[1];\n takenLines2_3 = activePatternResult_13[0];\n }\n else {\n matchResult_1 = 1;\n }\n }\n switch (matchResult_1) {\n case 0:\n return append(ParsingContext__get_ParseNonCodeAsOther(ctx_3) ? singleton_1(new MarkdownParagraph(10, [append_1(takenLines_3, takenLines2_3), ctx_3.CurrentRange])) : singleton_1(new MarkdownParagraph(9, [(headers == null) ? undefined : map((i) => ofSeq(parseParagraphs(ctx_3, i)), value_14(headers)), alignments, map((list_1) => map((i_1) => ofSeq(parseParagraphs(ctx_3, i_1)), list_1), rows), ctx_3.CurrentRange])), delay(() => parseParagraphs(ctx_3, rest_2)));\n default: {\n let matchResult_2, c, lines_3, takenLine, takenLines2_4;\n if (!isEmpty(matchValue_1)) {\n let activePatternResult_14;\n const tupledArg = head(matchValue_1);\n activePatternResult_14 = $007CHorizontalRule$007C_$007C(tupledArg[0], tupledArg[1]);\n if (activePatternResult_14 != null) {\n const activePatternResult_15 = Lines_$007CTrimBlankStart$007C(tail(matchValue_1));\n matchResult_2 = 0;\n c = activePatternResult_14;\n lines_3 = activePatternResult_15[1];\n takenLine = head(matchValue_1);\n takenLines2_4 = activePatternResult_15[0];\n }\n else {\n matchResult_2 = 1;\n }\n }\n else {\n matchResult_2 = 1;\n }\n switch (matchResult_2) {\n case 0:\n return append(ParsingContext__get_ParseNonCodeAsOther(ctx_3) ? singleton_1(new MarkdownParagraph(10, [cons(takenLine, takenLines2_4), ctx_3.CurrentRange])) : singleton_1(new MarkdownParagraph(8, [c, ctx_3.CurrentRange])), delay(() => parseParagraphs(ctx_3, lines_3)));\n default: {\n const activePatternResult_16 = $007CLatexBlock$007C_$007C(matchValue_1);\n if (activePatternResult_16 != null) {\n const activePatternResult_17 = Lines_$007CTrimBlankStart$007C(activePatternResult_16[3]);\n const body_1 = activePatternResult_16[1];\n const env = activePatternResult_16[0];\n const takenLines_4 = activePatternResult_16[2];\n return append(ParsingContext__get_ParseNonCodeAsOther(ctx_3) ? singleton_1(new MarkdownParagraph(10, [append_1(takenLines_4, activePatternResult_17[0]), ctx_3.CurrentRange])) : singleton_1(new MarkdownParagraph(7, [env, map((tuple) => tuple[0], body_1), ctx_3.CurrentRange])), delay(() => parseParagraphs(ctx_3, activePatternResult_17[1])));\n }\n else {\n const activePatternResult_18 = $007CListItems$007C_$007C(true, matchValue_1);\n if (activePatternResult_18 != null) {\n const activePatternResult_19 = Lines_$007CTrimBlankStart$007C(activePatternResult_18[2]);\n const items = activePatternResult_18[0];\n const takenLines_5 = activePatternResult_18[1];\n return append(ParsingContext__get_ParseNonCodeAsOther(ctx_3) ? singleton_1(new MarkdownParagraph(10, [append_1(takenLines_5, activePatternResult_19[0]), ctx_3.CurrentRange])) : ((tree = Tree_ofIndentedList(items), (nestUnmatchingItems = ((items_1) => {\n if (isEmpty(items_1)) {\n return empty();\n }\n else {\n return map((tupledArg_1) => {\n const _arg_1 = tupledArg_1[0];\n return new Tree$1(_arg_1.fields[0], append_1(nestUnmatchingItems(_arg_1.fields[1]), tupledArg_1[1]));\n }, List_nestUnderLastMatching((_arg) => equals(_arg.fields[0][1], head(items_1).fields[0][1]), items_1));\n }\n }), (formatTree = ((nodes) => (new MarkdownParagraph(4, [!isEmpty(nodes) ? head(nodes).fields[0][1] : (new MarkdownListKind(1, [])), toList(delay(() => collect((matchValue_2) => {\n const nested_1 = matchValue_2.fields[1];\n const body_2 = matchValue_2.fields[0][2];\n return singleton_1(toList(delay(() => {\n const rng = MarkdownRangeModule_mergeRanges(map((tuple_1) => tuple_1[1], body_2));\n return append(!matchValue_2.fields[0][0] ? parseParagraphs(ctx_3, body_2) : singleton_1(new MarkdownParagraph(6, [parseSpans(join(ctx_3.Newline, map((tuple_2) => tuple_2[0], body_2)), rng, ctx_3), ctx_3.CurrentRange])), delay(() => (!equals(nested_1, empty()) ? singleton_1(formatTree(nested_1)) : empty_1())));\n })));\n }, nodes))), ctx_3.CurrentRange]))), (unifySimpleProperty = ((nodes_1) => {\n if (exists((_arg_2) => {\n if (_arg_2.fields[0][0]) {\n return false;\n }\n else {\n return true;\n }\n }, tree)) {\n return map((_arg_3) => (new Tree$1([false, _arg_3.fields[0][1], _arg_3.fields[0][2]], unifySimpleProperty(_arg_3.fields[1]))), nodes_1);\n }\n else {\n return nodes_1;\n }\n }), singleton_1(formatTree(unifySimpleProperty(tree)))))))), delay(() => parseParagraphs(ctx_3, activePatternResult_19[1])));\n }\n else {\n const activePatternResult_20 = $007CHeading$007C_$007C(matchValue_1);\n if (activePatternResult_20 != null) {\n const activePatternResult_21 = Lines_$007CTrimBlankStart$007C(activePatternResult_20[3]);\n const body_3 = activePatternResult_20[1];\n const n = activePatternResult_20[0] | 0;\n const takenLines_6 = activePatternResult_20[2];\n return append(ParsingContext__get_ParseNonCodeAsOther(ctx_3) ? singleton_1(new MarkdownParagraph(10, [append_1(takenLines_6, activePatternResult_21[0]), ctx_3.CurrentRange])) : singleton_1(new MarkdownParagraph(0, [n, parseSpans(body_3[0], body_3[1], ctx_3), ctx_3.CurrentRange])), delay(() => parseParagraphs(ctx_3, activePatternResult_21[1])));\n }\n else {\n let matchResult_3, code_3, lines_6, takenLines_8, takenLines2_9;\n const activePatternResult_22 = $007CHtmlBlock$007C_$007C(matchValue_1);\n if (activePatternResult_22 != null) {\n const activePatternResult_23 = Lines_$007CTrimBlankStart$007C(activePatternResult_22[2]);\n if ((takenLines_7 = activePatternResult_22[1], (all = join(ctx_3.Newline, map((tuple_3) => tuple_3[0], activePatternResult_22[0])), (!all.startsWith(\"= 0)))) {\n matchResult_3 = 0;\n code_3 = activePatternResult_22[0];\n lines_6 = activePatternResult_23[1];\n takenLines_8 = activePatternResult_22[1];\n takenLines2_9 = activePatternResult_23[0];\n }\n else {\n matchResult_3 = 1;\n }\n }\n else {\n matchResult_3 = 1;\n }\n switch (matchResult_3) {\n case 0:\n return append(ParsingContext__get_ParseNonCodeAsOther(ctx_3) ? singleton_1(new MarkdownParagraph(10, [append_1(takenLines_8, takenLines2_9), ctx_3.CurrentRange])) : singleton_1(new MarkdownParagraph(3, [join(ctx_3.Newline, map((tuple_4) => tuple_4[0], code_3)), undefined, ctx_3.CurrentRange])), delay(() => parseParagraphs(ctx_3, lines_6)));\n default: {\n const activePatternResult_24 = $007CTakeParagraphLines$007C_$007C(matchValue_1);\n if (activePatternResult_24 != null) {\n const activePatternResult_25 = Lines_$007CTrimParagraphLines$007C(activePatternResult_24[0]);\n const activePatternResult_26 = Lines_$007CTrimBlankStart$007C(activePatternResult_24[1]);\n const takenLines_9 = activePatternResult_24[0];\n return append(ParsingContext__get_ParseNonCodeAsOther(ctx_3) ? singleton_1(new MarkdownParagraph(10, [append_1(takenLines_9, activePatternResult_26[0]), ctx_3.CurrentRange])) : singleton_1(new MarkdownParagraph(1, [parseSpans(join(ctx_3.Newline, map((tuple_5) => tuple_5[0], activePatternResult_25)), MarkdownRangeModule_mergeRanges(map((tuple_6) => tuple_6[1], activePatternResult_25)), ctx_3), ctx_3.CurrentRange])), delay(() => parseParagraphs(ctx_3, activePatternResult_26[1])));\n }\n else {\n const activePatternResult_27 = Lines_$007CTrimBlankStart$007C(matchValue_1);\n if (isEmpty(activePatternResult_27[1])) {\n return empty_1();\n }\n else {\n toFail(printf(\"Unexpectedly stopped!\\n%A\"))(moreLines);\n return empty_1();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }));\n });\n}\n\n","import { record_type, lambda_type, list_type, tuple_type, option_type, union_type, string_type, class_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { FSharpRef, Record, Union } from \"../fable-library-js.4.24.0/Types.js\";\nimport { singleton as singleton_1, ofArray, filter, collect, skipWhile, takeWhile, map, getSlice, item, tryFindIndex } from \"../fable-library-js.4.24.0/List.js\";\nimport { FSharpChoice$2 } from \"../fable-library-js.4.24.0/Choice.js\";\nimport { choose, collect as collect_1, empty, map as map_1, singleton, append, delay, toList, tryPick } from \"../fable-library-js.4.24.0/Seq.js\";\nimport { curry2, defaultOf } from \"../fable-library-js.4.24.0/Util.js\";\nimport { tryGetValue } from \"../fable-library-js.4.24.0/MapUtil.js\";\nimport { map as map_2, some } from \"../fable-library-js.4.24.0/Option.js\";\nimport { split, replicate, join, printf, toText, replace } from \"../fable-library-js.4.24.0/String.js\";\nimport { MarkdownParagraph, MarkdownSpan } from \"./MarkdownModel.fs.js\";\n\nexport class FableTextWriter {\n constructor() {\n this.buffer = \"\";\n }\n toString() {\n const _ = this;\n return _.buffer;\n }\n Dispose() {\n }\n}\n\nexport function FableTextWriter_$reflection() {\n return class_type(\"Fable.Formatting.Markdown.FableTextWriter\", undefined, FableTextWriter);\n}\n\nexport function FableTextWriter_$ctor() {\n return new FableTextWriter();\n}\n\nexport class ParamKey extends Union {\n constructor(Item) {\n super();\n this.tag = 0;\n this.fields = [Item];\n }\n cases() {\n return [\"ParamKey\"];\n }\n toString() {\n const x = this;\n return x.fields[0];\n }\n}\n\nexport function ParamKey_$reflection() {\n return union_type(\"Fable.Formatting.Markdown.ParamKey\", [], ParamKey, () => [[[\"Item\", string_type]]]);\n}\n\nexport function FableTextWriter__Write_Z721C83C5(_, s) {\n _.buffer = (_.buffer + s);\n}\n\nexport class MarkdownUtils_FormattingContext extends Record {\n constructor(Links, Newline, Substitutions, ResolveApiDocReference, DefineSymbol) {\n super();\n this.Links = Links;\n this.Newline = Newline;\n this.Substitutions = Substitutions;\n this.ResolveApiDocReference = ResolveApiDocReference;\n this.DefineSymbol = DefineSymbol;\n }\n}\n\nexport function MarkdownUtils_FormattingContext_$reflection() {\n return record_type(\"Fable.Formatting.Markdown.MarkdownUtils.FormattingContext\", [], MarkdownUtils_FormattingContext, () => [[\"Links\", class_type(\"System.Collections.Generic.IDictionary`2\", [string_type, tuple_type(string_type, option_type(string_type))])], [\"Newline\", string_type], [\"Substitutions\", list_type(tuple_type(ParamKey_$reflection(), string_type))], [\"ResolveApiDocReference\", lambda_type(string_type, option_type(tuple_type(string_type, string_type)))], [\"DefineSymbol\", string_type]]);\n}\n\nexport function MarkdownUtils_isCode(_arg) {\n switch (_arg.tag) {\n case 2:\n case 3:\n return true;\n default:\n return false;\n }\n}\n\nexport function MarkdownUtils_isCodeOutput(_arg) {\n if (_arg.tag === 13) {\n return true;\n }\n else {\n return false;\n }\n}\n\nexport function MarkdownUtils_getExecutionCount(_arg) {\n let matchResult, executionCount;\n switch (_arg.tag) {\n case 2: {\n matchResult = 0;\n executionCount = _arg.fields[1];\n break;\n }\n case 3: {\n matchResult = 0;\n executionCount = _arg.fields[1];\n break;\n }\n default:\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return executionCount;\n default:\n return undefined;\n }\n}\n\nexport function MarkdownUtils_getCode(_arg) {\n switch (_arg.tag) {\n case 2:\n return _arg.fields[0];\n case 3:\n return _arg.fields[0];\n default:\n throw new Error(\"unreachable\");\n }\n}\n\nexport function MarkdownUtils_getCodeOutput(_arg) {\n if (_arg.tag === 13) {\n return [_arg.fields[0], _arg.fields[1]];\n }\n else {\n throw new Error(\"unreachable\");\n }\n}\n\nexport function MarkdownUtils_splitParagraphs(paragraphs) {\n const firstCode = tryFindIndex(MarkdownUtils_isCode, paragraphs);\n let matchResult;\n if (firstCode == null) {\n matchResult = 1;\n }\n else if (firstCode === 0) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n const code = item(0, paragraphs);\n const codeLines = MarkdownUtils_getCode(code);\n const otherParagraphs = getSlice(1, undefined, paragraphs);\n const codeOutput = map(MarkdownUtils_getCodeOutput, takeWhile(MarkdownUtils_isCodeOutput, otherParagraphs));\n const otherParagraphs_1 = skipWhile(MarkdownUtils_isCodeOutput, otherParagraphs);\n return [new FSharpChoice$2(0, [[codeLines, codeOutput, MarkdownUtils_getExecutionCount(code)]]), otherParagraphs_1];\n }\n default:\n return [new FSharpChoice$2(1, [takeWhile((arg) => !MarkdownUtils_isCode(arg), paragraphs)]), skipWhile((arg_1) => !MarkdownUtils_isCode(arg_1), paragraphs)];\n }\n}\n\n/**\n * Lookup a specified key in a dictionary, possibly\n * ignoring newlines or spaces in the key.\n */\nexport function MarkdownUtils_$007CLookupKey$007C_$007C(dict, key) {\n return tryPick((key_1) => {\n let matchValue;\n let outArg = defaultOf();\n matchValue = [tryGetValue(dict, key_1, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return some(matchValue[1]);\n }\n else {\n return undefined;\n }\n }, [key, replace(key, \"\\r\\n\", \"\"), replace(key, \"\\r\\n\", \" \"), replace(key, \"\\n\", \"\"), replace(key, \"\\n\", \" \")]);\n}\n\n/**\n * Format a MarkdownSpan\n */\nexport function MarkdownUtils_formatSpan(ctx, span) {\n let matchResult, body, body_1, cmd, str, body_2, link;\n switch (span.tag) {\n case 10: {\n matchResult = 0;\n body = span.fields[0];\n break;\n }\n case 11: {\n matchResult = 1;\n body_1 = span.fields[0];\n break;\n }\n case 12: {\n matchResult = 2;\n cmd = span.fields[0];\n break;\n }\n case 0: {\n matchResult = 3;\n str = span.fields[0];\n break;\n }\n case 9: {\n matchResult = 4;\n break;\n }\n case 4: {\n matchResult = 5;\n break;\n }\n case 6: {\n const activePatternResult = MarkdownUtils_$007CLookupKey$007C_$007C(ctx.Links, span.fields[2]);\n if (activePatternResult != null) {\n matchResult = 6;\n body_2 = span.fields[0];\n link = activePatternResult[0];\n }\n else {\n matchResult = 6;\n body_2 = span.fields[0];\n link = span.fields[1];\n }\n break;\n }\n case 5: {\n matchResult = 6;\n body_2 = span.fields[0];\n link = span.fields[1];\n break;\n }\n default:\n matchResult = 7;\n }\n switch (matchResult) {\n case 0:\n return toText(printf(\"$%s$\"))(body);\n case 1:\n return toText(printf(\"$$%s$$\"))(body_1);\n case 2:\n return MarkdownUtils_formatSpans(ctx, cmd.Render());\n case 3:\n return str;\n case 4:\n return \"\\n\";\n case 5:\n return \"\";\n case 6:\n return (((\"[\" + MarkdownUtils_formatSpans(ctx, body_2)) + \"](\") + link) + \")\";\n default: {\n let matchResult_1, _body, _link;\n if (span.tag === 8) {\n const activePatternResult_1 = MarkdownUtils_$007CLookupKey$007C_$007C(ctx.Links, span.fields[2]);\n if (activePatternResult_1 != null) {\n matchResult_1 = 0;\n _body = span.fields[0];\n _link = activePatternResult_1[0];\n }\n else {\n matchResult_1 = 0;\n _body = span.fields[0];\n _link = span.fields[1];\n }\n }\n else {\n matchResult_1 = 1;\n }\n switch (matchResult_1) {\n case 0:\n throw new Error(\"tbd - IndirectImage\");\n default:\n switch (span.tag) {\n case 7:\n return toText(printf(\"![%s](%s)\"))(span.fields[0])(span.fields[1]);\n case 2:\n return (\"**\" + MarkdownUtils_formatSpans(ctx, span.fields[0])) + \"**\";\n case 1:\n return (\"`\" + span.fields[0]) + \"`\";\n case 3:\n return (\"**\" + MarkdownUtils_formatSpans(ctx, span.fields[0])) + \"**\";\n default:\n throw new Error(\"Match failure: Fable.Formatting.Markdown.MarkdownSpan\");\n }\n }\n }\n }\n}\n\n/**\n * Format a list of MarkdownSpan\n */\nexport function MarkdownUtils_formatSpans(ctx, spans) {\n return join(\"\", map((span) => MarkdownUtils_formatSpan(ctx, span), spans));\n}\n\n/**\n * Format a MarkdownParagraph\n */\nexport function MarkdownUtils_formatParagraph(ctx, paragraph) {\n return toList(delay(() => {\n let matchValue;\n return (paragraph.tag === 7) ? append(singleton(toText(printf(\"\\\\begin{%s}\"))(paragraph.fields[0])), delay(() => append(map_1((line) => line, paragraph.fields[1]), delay(() => append(singleton(toText(printf(\"\\\\end{%s}\"))(paragraph.fields[0])), delay(() => singleton(\"\"))))))) : ((paragraph.tag === 0) ? append(singleton((replicate(paragraph.fields[0], \"#\") + \" \") + MarkdownUtils_formatSpans(ctx, paragraph.fields[1])), delay(() => singleton(\"\"))) : ((paragraph.tag === 1) ? append(singleton(join(\"\", toList(delay(() => map_1((span) => MarkdownUtils_formatSpan(ctx, span), paragraph.fields[0]))))), delay(() => singleton(\"\"))) : ((paragraph.tag === 8) ? append(singleton(\"-----------------------\"), delay(() => singleton(\"\"))) : ((paragraph.tag === 2) ? append(singleton(paragraph.fields[0]), delay(() => singleton(\"\"))) : ((paragraph.tag === 4) ? ((paragraph.fields[0].tag === 1) ? singleton(join(\"\\n\", collect((ps) => toList(delay(() => map_1((p) => join(\"\", MarkdownUtils_formatParagraph(ctx, p)), ps))), paragraph.fields[1]))) : append(singleton(toText(printf(\"// can\\'t yet format %0A to pynb markdown\"))(paragraph)), delay(() => singleton(\"\")))) : ((paragraph.tag === 9) ? append((matchValue = paragraph.fields[0], (matchValue == null) ? (empty()) : singleton(join(\" | \", collect((hs) => toList(delay(() => map_1((h) => join(\"\", MarkdownUtils_formatParagraph(ctx, h)), hs))), matchValue)))), delay(() => append(singleton(join(\" | \", toList(delay(() => map_1((a) => ((a.tag === 2) ? \":---:\" : ((a.tag === 1) ? \"---:\" : ((a.tag === 3) ? \"---\" : \":---\"))), paragraph.fields[1]))))), delay(() => {\n const replaceEmptyWith = (x, s) => {\n let matchResult;\n if (s === \"\") {\n matchResult = 0;\n }\n else if (s === defaultOf()) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return x;\n default:\n return s;\n }\n };\n return append(singleton(join(\"\\n\", toList(delay(() => map_1((r) => {\n let source_2;\n return join(\" | \", (source_2 = toList(delay(() => collect_1((ps_1) => {\n const x_1 = toList(delay(() => map_1((p_1) => {\n let source;\n return join(\"\", (source = MarkdownUtils_formatParagraph(ctx, p_1), choose(curry2(replaceEmptyWith)(\"\"), source)));\n }, ps_1)));\n return singleton(join(\"
      \", choose(curry2(replaceEmptyWith)(\"\"), x_1)));\n }, r))), choose(curry2(replaceEmptyWith)(\" \"), source_2)));\n }, paragraph.fields[2]))))), delay(() => singleton(\"\\n\")));\n })))) : ((paragraph.tag === 13) ? ((paragraph.fields[1] === \"text/html\") ? append(singleton(paragraph.fields[0].trim()), delay(() => singleton(\"\"))) : append(singleton(\"```\"), delay(() => append(singleton(paragraph.fields[0]), delay(() => append(singleton(\"```\"), delay(() => singleton(\"\")))))))) : ((paragraph.tag === 10) ? map((tuple) => tuple[0], paragraph.fields[0]) : append(singleton(toText(printf(\"// can\\'t yet format %0A to pynb markdown\"))(paragraph)), delay(() => singleton(\"\")))))))))));\n }));\n}\n\nexport function MarkdownUtils_formatFsxCode(ctx, code) {\n const sym = ctx.DefineSymbol;\n const sym1 = toText(printf(\"#if %s\"))(sym);\n const sym2 = toText(printf(\"#endif // %s\"))(sym);\n return join(ctx.Newline, filter((line) => {\n if (line.trim() !== sym1) {\n return line.trim() !== sym2;\n }\n else {\n return false;\n }\n }, ofArray(split(replace(code, \"\\r\\n\", \"\\n\"), [\"\\n\"], undefined, 0))));\n}\n\nexport function MarkdownUtils_applySubstitutionsInText(ctx, text) {\n return text;\n}\n\nexport function MarkdownUtils_applyCodeReferenceResolver(ctx, code, range) {\n const matchValue = ctx.ResolveApiDocReference(code);\n if (matchValue != null) {\n return new MarkdownSpan(5, [singleton_1(new MarkdownSpan(0, [matchValue[0], range])), matchValue[1], undefined, range]);\n }\n else {\n return new MarkdownSpan(1, [code, range]);\n }\n}\n\nexport function MarkdownUtils_mapText(f, _arg, text) {\n return f(text);\n}\n\nexport function MarkdownUtils_mapInlineCode(_arg, f, code, range) {\n return f([code, range]);\n}\n\nexport function MarkdownUtils_mapSpans(f_, f__1, md) {\n const f = [f_, f__1];\n return map((_arg) => {\n switch (_arg.tag) {\n case 2:\n return new MarkdownSpan(2, [MarkdownUtils_mapSpans(f[0], f[1], _arg.fields[0]), _arg.fields[1]]);\n case 3:\n return new MarkdownSpan(3, [MarkdownUtils_mapSpans(f[0], f[1], _arg.fields[0]), _arg.fields[1]]);\n case 4:\n return new MarkdownSpan(4, [MarkdownUtils_mapText(f[0], f[1], _arg.fields[0]), _arg.fields[1]]);\n case 5:\n return new MarkdownSpan(5, [MarkdownUtils_mapSpans(f[0], f[1], _arg.fields[0]), MarkdownUtils_mapText(f[0], f[1], _arg.fields[1]), map_2((text_1) => MarkdownUtils_mapText(f[0], f[1], text_1), _arg.fields[2]), _arg.fields[3]]);\n case 6:\n return new MarkdownSpan(6, [MarkdownUtils_mapSpans(f[0], f[1], _arg.fields[0]), _arg.fields[1], _arg.fields[2], _arg.fields[3]]);\n case 7:\n return new MarkdownSpan(7, [MarkdownUtils_mapText(f[0], f[1], _arg.fields[0]), MarkdownUtils_mapText(f[0], f[1], _arg.fields[1]), map_2((text_2) => MarkdownUtils_mapText(f[0], f[1], text_2), _arg.fields[2]), _arg.fields[3]]);\n case 8:\n return new MarkdownSpan(8, [MarkdownUtils_mapText(f[0], f[1], _arg.fields[0]), _arg.fields[1], _arg.fields[2], _arg.fields[3]]);\n case 9:\n return new MarkdownSpan(9, [_arg.fields[0]]);\n case 1:\n return MarkdownUtils_mapInlineCode(f[0], f[1], _arg.fields[0], _arg.fields[1]);\n case 10:\n return new MarkdownSpan(10, [_arg.fields[0], _arg.fields[1]]);\n case 11:\n return new MarkdownSpan(11, [_arg.fields[0], _arg.fields[1]]);\n case 12:\n return new MarkdownSpan(12, [_arg.fields[0], _arg.fields[1]]);\n default:\n return new MarkdownSpan(0, [MarkdownUtils_mapText(f[0], f[1], _arg.fields[0]), _arg.fields[1]]);\n }\n }, md);\n}\n\nexport function MarkdownUtils_mapParagraphs(f_, f__1, md) {\n const f = [f_, f__1];\n return map((_arg) => {\n switch (_arg.tag) {\n case 1:\n return new MarkdownParagraph(1, [MarkdownUtils_mapSpans(f[0], f[1], _arg.fields[0]), _arg.fields[1]]);\n case 2:\n return new MarkdownParagraph(2, [MarkdownUtils_mapText(f[0], f[1], _arg.fields[0]), _arg.fields[1], _arg.fields[2], _arg.fields[3], _arg.fields[4]]);\n case 13:\n return new MarkdownParagraph(13, [_arg.fields[0], _arg.fields[1], _arg.fields[2]]);\n case 4:\n return new MarkdownParagraph(4, [_arg.fields[0], map((md_1) => MarkdownUtils_mapParagraphs(f[0], f[1], md_1), _arg.fields[1]), _arg.fields[2]]);\n case 5:\n return new MarkdownParagraph(5, [MarkdownUtils_mapParagraphs(f[0], f[1], _arg.fields[0]), _arg.fields[1]]);\n case 6:\n return new MarkdownParagraph(6, [MarkdownUtils_mapSpans(f[0], f[1], _arg.fields[0]), _arg.fields[1]]);\n case 7:\n return new MarkdownParagraph(7, [_arg.fields[0], map((text) => MarkdownUtils_mapText(f[0], f[1], text), _arg.fields[1]), _arg.fields[2]]);\n case 8:\n return new MarkdownParagraph(8, [_arg.fields[0], _arg.fields[1]]);\n case 12:\n return new MarkdownParagraph(12, [map((text_1) => MarkdownUtils_mapText(f[0], f[1], text_1), _arg.fields[0]), _arg.fields[1]]);\n case 9:\n return new MarkdownParagraph(9, [map_2((list) => map((md_2) => MarkdownUtils_mapParagraphs(f[0], f[1], md_2), list), _arg.fields[0]), _arg.fields[1], map((list_1) => map((md_3) => MarkdownUtils_mapParagraphs(f[0], f[1], md_3), list_1), _arg.fields[2]), _arg.fields[3]]);\n case 10:\n return new MarkdownParagraph(10, [map((tupledArg) => [MarkdownUtils_mapText(f[0], f[1], tupledArg[0]), tupledArg[1]], _arg.fields[0]), _arg.fields[1]]);\n case 3:\n return new MarkdownParagraph(3, [MarkdownUtils_mapText(f[0], f[1], _arg.fields[0]), _arg.fields[1], _arg.fields[2]]);\n case 11:\n return new MarkdownParagraph(11, [_arg.fields[0], _arg.fields[1]]);\n default:\n return new MarkdownParagraph(0, [_arg.fields[0], MarkdownUtils_mapSpans(f[0], f[1], _arg.fields[1]), _arg.fields[2]]);\n }\n }, md);\n}\n\nexport function MarkdownUtils_applySubstitutionsInMarkdown(ctx, md) {\n return MarkdownUtils_mapParagraphs((text) => MarkdownUtils_applySubstitutionsInText(ctx, text), (tupledArg) => MarkdownUtils_applyCodeReferenceResolver(ctx, tupledArg[0], tupledArg[1]), md);\n}\n\n","import { isNullOrWhiteSpace, join, printf, toText, replace } from \"../fable-library-js.4.24.0/String.js\";\nimport { mapIndexed as mapIndexed_1, zip, collect, empty, map, delay, tryPick } from \"../fable-library-js.4.24.0/Seq.js\";\nimport { equals, getEnumerator, int32ToString, disposeSafe, defaultOf } from \"../fable-library-js.4.24.0/Util.js\";\nimport { tryGetValue } from \"../fable-library-js.4.24.0/MapUtil.js\";\nimport { toString, Record, FSharpRef } from \"../fable-library-js.4.24.0/Types.js\";\nimport { value as value_2, some } from \"../fable-library-js.4.24.0/Option.js\";\nimport { record_type, bool_type, tuple_type, option_type, string_type, lambda_type, unit_type, class_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { MarkdownUtils_FormattingContext, MarkdownUtils_applySubstitutionsInMarkdown, FableTextWriter_$ctor, FableTextWriter__Write_Z721C83C5, FableTextWriter_$reflection } from \"./MarkdownUtils.fs.js\";\nimport { length as length_1, tail, head, isEmpty, mapIndexed, map as map_1, iterate } from \"../fable-library-js.4.24.0/List.js\";\nimport { matches } from \"../fable-library-js.4.24.0/RegExp.js\";\nimport { MarkdownListKind } from \"./MarkdownModel.fs.js\";\nimport { List_iterInterleaved } from \"./Collections.fs.js\";\n\n/**\n * Basic escaping as done by Markdown\n */\nexport function htmlEncode(code) {\n return replace(replace(replace(code, \"&\", \"&\"), \"<\", \"<\"), \">\", \">\");\n}\n\n/**\n * Basic escaping as done by Markdown including quotes\n */\nexport function htmlEncodeQuotes(code) {\n return replace(htmlEncode(code), \"\\\"\", \""\");\n}\n\n/**\n * Lookup a specified key in a dictionary, possibly\n * ignoring newlines or spaces in the key.\n */\nexport function $007CLookupKey$007C_$007C(dict, key) {\n return tryPick((key_1) => {\n let matchValue;\n let outArg = defaultOf();\n matchValue = [tryGetValue(dict, key_1, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return some(matchValue[1]);\n }\n else {\n return undefined;\n }\n }, [key, replace(key, \"\\r\\n\", \"\"), replace(key, \"\\r\\n\", \" \"), replace(key, \"\\n\", \"\"), replace(key, \"\\n\", \" \")]);\n}\n\nexport class UniqueNameGenerator {\n constructor() {\n this.generated = (new Map([]));\n }\n}\n\nexport function UniqueNameGenerator_$reflection() {\n return class_type(\"Fable.Formatting.Markdown.HtmlFormatting.UniqueNameGenerator\", undefined, UniqueNameGenerator);\n}\n\nexport function UniqueNameGenerator_$ctor() {\n return new UniqueNameGenerator();\n}\n\nexport function UniqueNameGenerator__GetName_Z721C83C5(__, name) {\n let patternInput;\n let outArg = 0;\n patternInput = [tryGetValue(__.generated, name, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n const i = patternInput[1] | 0;\n if (patternInput[0]) {\n __.generated.set(name, i + 1);\n return toText(printf(\"%s-%d\"))(name)(i);\n }\n else {\n __.generated.set(name, 1);\n return name;\n }\n}\n\nexport class FormattingContext extends Record {\n constructor(LineBreak, Newline, Writer, Links, WrapCodeSnippets, GenerateHeaderAnchors, UniqueNameGenerator, ParagraphIndent) {\n super();\n this.LineBreak = LineBreak;\n this.Newline = Newline;\n this.Writer = Writer;\n this.Links = Links;\n this.WrapCodeSnippets = WrapCodeSnippets;\n this.GenerateHeaderAnchors = GenerateHeaderAnchors;\n this.UniqueNameGenerator = UniqueNameGenerator;\n this.ParagraphIndent = ParagraphIndent;\n }\n}\n\nexport function FormattingContext_$reflection() {\n return record_type(\"Fable.Formatting.Markdown.HtmlFormatting.FormattingContext\", [], FormattingContext, () => [[\"LineBreak\", lambda_type(unit_type, unit_type)], [\"Newline\", string_type], [\"Writer\", FableTextWriter_$reflection()], [\"Links\", class_type(\"System.Collections.Generic.IDictionary`2\", [string_type, tuple_type(string_type, option_type(string_type))])], [\"WrapCodeSnippets\", bool_type], [\"GenerateHeaderAnchors\", bool_type], [\"UniqueNameGenerator\", UniqueNameGenerator_$reflection()], [\"ParagraphIndent\", lambda_type(unit_type, unit_type)]]);\n}\n\nexport function bigBreak(ctx, unitVar) {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, ctx.Newline);\n}\n\nexport function smallBreak(ctx, unitVar) {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, ctx.Newline);\n}\n\nexport function noBreak(_ctx, unitVar) {\n}\n\n/**\n * Write MarkdownSpan value to a TextWriter\n */\nexport function formatSpan(ctx, span) {\n let matchResult, body, body_1, id, cmd, str, body_2, link, title;\n switch (span.tag) {\n case 11: {\n matchResult = 0;\n body = span.fields[0];\n break;\n }\n case 10: {\n matchResult = 1;\n body_1 = span.fields[0];\n break;\n }\n case 4: {\n matchResult = 2;\n id = span.fields[0];\n break;\n }\n case 12: {\n matchResult = 3;\n cmd = span.fields[0];\n break;\n }\n case 0: {\n matchResult = 4;\n str = span.fields[0];\n break;\n }\n case 9: {\n matchResult = 5;\n break;\n }\n case 6: {\n const activePatternResult = $007CLookupKey$007C_$007C(ctx.Links, span.fields[2]);\n if (activePatternResult != null) {\n matchResult = 6;\n body_2 = span.fields[0];\n link = activePatternResult[0];\n title = activePatternResult[1];\n }\n else {\n matchResult = 7;\n }\n break;\n }\n case 5: {\n matchResult = 6;\n body_2 = span.fields[0];\n link = span.fields[1];\n title = span.fields[2];\n break;\n }\n default:\n matchResult = 7;\n }\n switch (matchResult) {\n case 0: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, (\"\\\\[\" + htmlEncode(body)) + \"\\\\]\");\n break;\n }\n case 1: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, (\"\\\\(\" + htmlEncode(body_1)) + \"\\\\)\");\n break;\n }\n case 2: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, (\" \");\n break;\n }\n case 3: {\n formatSpans(ctx)(cmd.Render());\n break;\n }\n case 4: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, str);\n break;\n }\n case 5: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
      \" + ctx.Newline);\n break;\n }\n case 6: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\");\n formatSpans(ctx)(body_2);\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\");\n break;\n }\n case 7: {\n let matchResult_1, body_3, original, body_4, link_1, title_2;\n switch (span.tag) {\n case 6: {\n matchResult_1 = 0;\n body_3 = span.fields[0];\n original = span.fields[1];\n break;\n }\n case 8: {\n const activePatternResult_1 = $007CLookupKey$007C_$007C(ctx.Links, span.fields[2]);\n if (activePatternResult_1 != null) {\n matchResult_1 = 1;\n body_4 = span.fields[0];\n link_1 = activePatternResult_1[0];\n title_2 = activePatternResult_1[1];\n }\n else {\n matchResult_1 = 2;\n }\n break;\n }\n case 7: {\n matchResult_1 = 1;\n body_4 = span.fields[0];\n link_1 = span.fields[1];\n title_2 = span.fields[2];\n break;\n }\n default:\n matchResult_1 = 2;\n }\n switch (matchResult_1) {\n case 0: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"[\");\n formatSpans(ctx)(body_3);\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"]\");\n FableTextWriter__Write_Z721C83C5(ctx.Writer, original);\n break;\n }\n case 1: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\\\"\");\n\");\n break;\n }\n case 2: {\n switch (span.tag) {\n case 8: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"[\");\n FableTextWriter__Write_Z721C83C5(ctx.Writer, span.fields[0]);\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"]\");\n FableTextWriter__Write_Z721C83C5(ctx.Writer, span.fields[1]);\n break;\n }\n case 2: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\");\n formatSpans(ctx)(span.fields[0]);\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\");\n break;\n }\n case 1: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\");\n FableTextWriter__Write_Z721C83C5(ctx.Writer, htmlEncode(span.fields[0]));\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\");\n break;\n }\n case 3: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\");\n formatSpans(ctx)(span.fields[0]);\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\");\n break;\n }\n default:\n throw new Error(\"Match failure: Fable.Formatting.Markdown.MarkdownSpan\");\n }\n break;\n }\n }\n break;\n }\n }\n}\n\n/**\n * Write list of MarkdownSpan values to a TextWriter\n */\nexport function formatSpans(ctx) {\n return (list) => {\n iterate((span) => {\n formatSpan(ctx, span);\n }, list);\n };\n}\n\n/**\n * generate anchor name from Markdown text\n */\nexport function formatAnchor(ctx, spans) {\n let name;\n const gather = (span) => delay(() => {\n switch (span.tag) {\n case 0:\n return map((m) => m[0], matches(/\\w+/gu, span.fields[0]));\n case 2:\n return gathers(span.fields[0]);\n case 3:\n return gathers(span.fields[0]);\n case 5:\n return gathers(span.fields[0]);\n default: {\n return empty();\n }\n }\n });\n const gathers = (spans_1) => collect(gather, spans_1);\n return UniqueNameGenerator__GetName_Z721C83C5(ctx.UniqueNameGenerator, (name = join(\"-\", gathers(spans)), isNullOrWhiteSpace(name) ? \"header\" : name));\n}\n\nexport function withInner(ctx, f) {\n const sb = FableTextWriter_$ctor();\n try {\n f(new FormattingContext(ctx.LineBreak, ctx.Newline, sb, ctx.Links, ctx.WrapCodeSnippets, ctx.GenerateHeaderAnchors, ctx.UniqueNameGenerator, ctx.ParagraphIndent));\n return toString(sb);\n }\n finally {\n disposeSafe(sb);\n }\n}\n\n/**\n * Write a MarkdownParagraph value to a TextWriter as HTML\n */\nexport function formatParagraph(ctx, paragraph) {\n switch (paragraph.tag) {\n case 11: {\n formatParagraphs(ctx, paragraph.fields[0].Render());\n break;\n }\n case 0: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, (\"\");\n if (ctx.GenerateHeaderAnchors) {\n const anchorName = formatAnchor(ctx, paragraph.fields[1]);\n FableTextWriter__Write_Z721C83C5(ctx.Writer, toText(printf(\"\"))(anchorName)(anchorName));\n formatSpans(ctx)(paragraph.fields[1]);\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\");\n }\n else {\n formatSpans(ctx)(paragraph.fields[1]);\n }\n FableTextWriter__Write_Z721C83C5(ctx.Writer, (\"\");\n break;\n }\n case 1: {\n ctx.ParagraphIndent();\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"

      \");\n const enumerator = getEnumerator(paragraph.fields[0]);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n formatSpan(ctx, enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"

      \");\n break;\n }\n case 8: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
      \");\n break;\n }\n case 2: {\n if (ctx.WrapCodeSnippets) {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
      \");\n }\n if (isNullOrWhiteSpace(paragraph.fields[2])) {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, toText(printf(\"
      \")));\n            }\n            else {\n                const langCode = toText(printf(\"language-%s\"))(paragraph.fields[2]);\n                FableTextWriter__Write_Z721C83C5(ctx.Writer, toText(printf(\"
      \"))(langCode));\n            }\n            FableTextWriter__Write_Z721C83C5(ctx.Writer, htmlEncode(paragraph.fields[0]));\n            FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
      \");\n if (ctx.WrapCodeSnippets) {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
      \");\n }\n break;\n }\n case 13: {\n if (paragraph.fields[1] === \"text/html\") {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, paragraph.fields[0]);\n }\n else {\n if (ctx.WrapCodeSnippets) {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
      \");\n }\n FableTextWriter__Write_Z721C83C5(ctx.Writer, toText(printf(\"
      \")));\n                FableTextWriter__Write_Z721C83C5(ctx.Writer, htmlEncode(paragraph.fields[0]));\n                FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
      \");\n if (ctx.WrapCodeSnippets) {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
      \");\n }\n }\n break;\n }\n case 9: {\n const aligns = map_1((_arg) => {\n switch (_arg.tag) {\n case 1:\n return \" align=\\\"right\\\"\";\n case 2:\n return \" align=\\\"center\\\"\";\n case 3:\n return \"\";\n default:\n return \" align=\\\"left\\\"\";\n }\n }, paragraph.fields[1]);\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\");\n FableTextWriter__Write_Z721C83C5(ctx.Writer, ctx.Newline);\n if (paragraph.fields[0] != null) {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, ((\"\" + ctx.Newline) + \"\") + ctx.Newline);\n const enumerator_1 = getEnumerator(zip(value_2(paragraph.fields[0]), aligns));\n try {\n while (enumerator_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar = enumerator_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n FableTextWriter__Write_Z721C83C5(ctx.Writer, (\"\");\n const enumerator_2 = getEnumerator(forLoopVar[0]);\n try {\n while (enumerator_2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n formatParagraph(new FormattingContext(() => {\n noBreak(ctx, undefined);\n }, ctx.Newline, ctx.Writer, ctx.Links, ctx.WrapCodeSnippets, ctx.GenerateHeaderAnchors, ctx.UniqueNameGenerator, ctx.ParagraphIndent), enumerator_2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n }\n finally {\n disposeSafe(enumerator_2);\n }\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\" + ctx.Newline);\n }\n }\n finally {\n disposeSafe(enumerator_1);\n }\n FableTextWriter__Write_Z721C83C5(ctx.Writer, ((\"\" + ctx.Newline) + \"\") + ctx.Newline);\n }\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\" + ctx.Newline);\n const enumerator_3 = getEnumerator(mapIndexed((i, r) => [i + 1, r], paragraph.fields[2]));\n try {\n while (enumerator_3[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar_1 = enumerator_3[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n FableTextWriter__Write_Z721C83C5(ctx.Writer, ((\"\") + ctx.Newline);\n const enumerator_4 = getEnumerator(zip(forLoopVar_1[1], aligns));\n try {\n while (enumerator_4[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar_2 = enumerator_4[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n FableTextWriter__Write_Z721C83C5(ctx.Writer, (\"\");\n const enumerator_5 = getEnumerator(forLoopVar_2[0]);\n try {\n while (enumerator_5[\"System.Collections.IEnumerator.MoveNext\"]()) {\n formatParagraph(new FormattingContext(() => {\n noBreak(ctx, undefined);\n }, ctx.Newline, ctx.Writer, ctx.Links, ctx.WrapCodeSnippets, ctx.GenerateHeaderAnchors, ctx.UniqueNameGenerator, ctx.ParagraphIndent), enumerator_5[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n }\n finally {\n disposeSafe(enumerator_5);\n }\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\" + ctx.Newline);\n }\n }\n finally {\n disposeSafe(enumerator_4);\n }\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\" + ctx.Newline);\n }\n }\n finally {\n disposeSafe(enumerator_3);\n }\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"\" + ctx.Newline);\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
      \");\n FableTextWriter__Write_Z721C83C5(ctx.Writer, ctx.Newline);\n break;\n }\n case 4: {\n const tag = equals(paragraph.fields[0], new MarkdownListKind(0, [])) ? \"ol\" : \"ul\";\n FableTextWriter__Write_Z721C83C5(ctx.Writer, ((\"<\" + tag) + \">\") + ctx.Newline);\n const enumerator_6 = getEnumerator(paragraph.fields[1]);\n try {\n while (enumerator_6[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const body_1 = enumerator_6[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
    1. \");\n let matchResult, s_1;\n if (!isEmpty(body_1)) {\n if (head(body_1).tag === 1) {\n if (!isEmpty(head(body_1).fields[0])) {\n if (head(head(body_1).fields[0]).tag === 0) {\n if (isEmpty(tail(head(body_1).fields[0]))) {\n if (isEmpty(tail(body_1))) {\n if (!(head(head(body_1).fields[0]).fields[0].indexOf(ctx.Newline) >= 0)) {\n matchResult = 0;\n s_1 = head(head(body_1).fields[0]).fields[0];\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, s_1);\n break;\n }\n case 1: {\n const inner = withInner(ctx, (ctx_1) => {\n let ctx_2;\n List_iterInterleaved((ctx_2 = (new FormattingContext(() => {\n noBreak(ctx_1, undefined);\n }, ctx_1.Newline, ctx_1.Writer, ctx_1.Links, ctx_1.WrapCodeSnippets, ctx_1.GenerateHeaderAnchors, ctx_1.UniqueNameGenerator, ctx_1.ParagraphIndent)), (paragraph_3) => {\n formatParagraph(ctx_2, paragraph_3);\n }), () => {\n FableTextWriter__Write_Z721C83C5(ctx_1.Writer, ctx_1.Newline);\n }, body_1);\n });\n FableTextWriter__Write_Z721C83C5(ctx.Writer, (inner.indexOf(ctx.Newline) >= 0) ? ((ctx.Newline + inner) + ctx.Newline) : inner);\n break;\n }\n }\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
    2. \" + ctx.Newline);\n }\n }\n finally {\n disposeSafe(enumerator_6);\n }\n FableTextWriter__Write_Z721C83C5(ctx.Writer, (\"\");\n break;\n }\n case 5: {\n ctx.ParagraphIndent();\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
      \" + ctx.Newline);\n formatParagraphs(new FormattingContext(ctx.LineBreak, ctx.Newline, ctx.Writer, ctx.Links, ctx.WrapCodeSnippets, ctx.GenerateHeaderAnchors, ctx.UniqueNameGenerator, () => {\n ctx.ParagraphIndent();\n }), paragraph.fields[0]);\n ctx.ParagraphIndent();\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
      \");\n break;\n }\n case 6: {\n formatSpans(ctx)(paragraph.fields[0]);\n break;\n }\n case 3: {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, paragraph.fields[0]);\n break;\n }\n case 10: {\n if (ctx.WrapCodeSnippets) {\n FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
      \");\n }\n FableTextWriter__Write_Z721C83C5(ctx.Writer, toText(printf(\"
      \")));\n            const enumerator_7 = getEnumerator(paragraph.fields[0]);\n            try {\n                while (enumerator_7[\"System.Collections.IEnumerator.MoveNext\"]()) {\n                    FableTextWriter__Write_Z721C83C5(ctx.Writer, htmlEncode(enumerator_7[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()[0]));\n                }\n            }\n            finally {\n                disposeSafe(enumerator_7);\n            }\n            FableTextWriter__Write_Z721C83C5(ctx.Writer, \"
      \");\n break;\n }\n case 12: {\n break;\n }\n default:\n FableTextWriter__Write_Z721C83C5(ctx.Writer, (\"

      \\\\[\" + htmlEncode(join(ctx.Newline, paragraph.fields[1]))) + \"\\\\]

      \");\n }\n ctx.LineBreak();\n}\n\n/**\n * Write a list of MarkdownParagraph values to a TextWriter\n */\nexport function formatParagraphs(ctx, paragraphs) {\n const length = length_1(paragraphs) | 0;\n const smallCtx = new FormattingContext(() => {\n smallBreak(ctx, undefined);\n }, ctx.Newline, ctx.Writer, ctx.Links, ctx.WrapCodeSnippets, ctx.GenerateHeaderAnchors, ctx.UniqueNameGenerator, ctx.ParagraphIndent);\n const bigCtx = new FormattingContext(() => {\n bigBreak(ctx, undefined);\n }, ctx.Newline, ctx.Writer, ctx.Links, ctx.WrapCodeSnippets, ctx.GenerateHeaderAnchors, ctx.UniqueNameGenerator, ctx.ParagraphIndent);\n const enumerator = getEnumerator(mapIndexed_1((i, v) => [i === (length - 1), v], paragraphs));\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n formatParagraph(forLoopVar[0] ? smallCtx : bigCtx, forLoopVar[1]);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n}\n\n/**\n * Format Markdown document and write the result to\n * a specified TextWriter. Parameters specify newline character\n * and a dictionary with link keys defined in the document.\n */\nexport function formatMarkdown(writer, generateAnchors, wrap, links, substitutions, newline, crefResolver, paragraphs) {\n const paragraphs_1 = MarkdownUtils_applySubstitutionsInMarkdown(new MarkdownUtils_FormattingContext(links, newline, substitutions, crefResolver, \"HTML\"), paragraphs);\n formatParagraphs(new FormattingContext(() => {\n }, newline, writer, links, wrap, generateAnchors, UniqueNameGenerator_$ctor(), () => {\n }), paragraphs_1);\n}\n\n","import { class_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { unwrap, defaultArg } from \"../fable-library-js.4.24.0/Option.js\";\nimport { toList } from \"../fable-library-js.4.24.0/Seq.js\";\nimport { mapIndexed } from \"../fable-library-js.4.24.0/Array.js\";\nimport { MarkdownRangeModule_zero, MarkdownRange } from \"./Range.fs.js\";\nimport { isNullOrWhiteSpace, replace, split } from \"../fable-library-js.4.24.0/String.js\";\nimport { empty, skipWhile, ofSeq } from \"../fable-library-js.4.24.0/List.js\";\nimport { ParsingContext, parseParagraphs } from \"./MarkdownParser.fs.js\";\nimport { formatMarkdown } from \"./HtmlFormatting.fs.js\";\nimport { FableTextWriter_$ctor } from \"./MarkdownUtils.fs.js\";\nimport { disposeSafe } from \"../fable-library-js.4.24.0/Util.js\";\nimport { toString } from \"../fable-library-js.4.24.0/Types.js\";\nimport { formatAsMd } from \"./MarkdownFormatting.fs.js\";\n\nexport class MarkdownDocument {\n constructor(paragraphs, links) {\n this.paragraphs = paragraphs;\n this.links = links;\n }\n}\n\nexport function MarkdownDocument_$reflection() {\n return class_type(\"Fable.Formatting.Markdown.MarkdownDocument\", undefined, MarkdownDocument);\n}\n\nexport function MarkdownDocument_$ctor_Z7AE59E28(paragraphs, links) {\n return new MarkdownDocument(paragraphs, links);\n}\n\n/**\n * Returns a list of paragraphs in the document\n */\nexport function MarkdownDocument__get_Paragraphs(x) {\n return x.paragraphs;\n}\n\n/**\n * Returns a dictionary containing explicitly defined links\n */\nexport function MarkdownDocument__get_DefinedLinks(x) {\n return x.links;\n}\n\nexport class Markdown {\n constructor() {\n }\n}\n\nexport function Markdown_$reflection() {\n return class_type(\"Fable.Formatting.Markdown.Markdown\", undefined, Markdown);\n}\n\nexport function Markdown_$ctor() {\n return new Markdown();\n}\n\n/**\n * Parse the specified text into a MarkdownDocument. Line breaks in the\n * inline HTML (etc.) will be stored using the specified string.\n */\nexport function Markdown_Parse_7B74E5F5(text, newline, parseOptions) {\n const newline_1 = defaultArg(newline, \"\\n\");\n const parseOptions_1 = defaultArg(parseOptions, 0) | 0;\n const lines = toList(mapIndexed((i, s) => [s, new MarkdownRange(i + 1, 0, i + 1, s.length)], split(replace(text, \"\\r\\n\", \"\\n\"), [\"\\n\", \"\\r\"])));\n const links = new Map([]);\n return MarkdownDocument_$ctor_Z7AE59E28(ofSeq(parseParagraphs(new ParsingContext(links, newline_1, true, MarkdownRangeModule_zero, parseOptions_1), skipWhile((tupledArg) => isNullOrWhiteSpace(tupledArg[0]), lines))), links);\n}\n\n/**\n * Transform the provided MarkdownDocument into HTML\n * format and write the result to a given writer.\n */\nexport function Markdown_WriteHtml_27D81AD6(doc, writer, newline, substitutions, crefResolver) {\n const newline_1 = defaultArg(newline, \"\\n\");\n const substitutions_1 = defaultArg(substitutions, empty());\n const crefResolver_1 = defaultArg(crefResolver, (_arg) => undefined);\n formatMarkdown(writer, false, false, MarkdownDocument__get_DefinedLinks(doc), substitutions_1, newline_1, crefResolver_1, MarkdownDocument__get_Paragraphs(doc));\n}\n\n/**\n * Transform Markdown text into HTML format. The result\n * will be written to the provided TextWriter.\n */\nexport function Markdown_WriteHtml_Z7FF308E(markdownText, writer, newline, substitutions, crefResolver) {\n Markdown_WriteHtml_27D81AD6(Markdown_Parse_7B74E5F5(markdownText, unwrap(newline)), writer, unwrap(newline), unwrap(substitutions), unwrap(crefResolver));\n}\n\n/**\n * Transform the provided MarkdownDocument into HTML\n * format and return the result as a string.\n */\nexport function Markdown_ToHtml_1A9D76FF(doc, newline, substitutions, crefResolver) {\n const wr = FableTextWriter_$ctor();\n try {\n Markdown_WriteHtml_27D81AD6(doc, wr, unwrap(newline), unwrap(substitutions), unwrap(crefResolver));\n return toString(wr);\n }\n finally {\n disposeSafe(wr);\n }\n}\n\n/**\n * Transform Markdown document into HTML format.\n * The result will be returned as a string.\n */\nexport function Markdown_ToHtml_1BFEAEDB(markdownText, newline, substitutions, crefResolver) {\n return Markdown_ToHtml_1A9D76FF(Markdown_Parse_7B74E5F5(markdownText, unwrap(newline)), unwrap(newline), unwrap(substitutions), unwrap(crefResolver));\n}\n\n/**\n * Transform the provided MarkdownDocument into Md and return the result as a string.\n */\nexport function Markdown_ToMd_1A9D76FF(doc, newline, substitutions, crefResolver) {\n const newline_1 = defaultArg(newline, \"\\n\");\n const substitutions_1 = defaultArg(substitutions, empty());\n const crefResolver_1 = defaultArg(crefResolver, (_arg) => undefined);\n return formatAsMd(MarkdownDocument__get_DefinedLinks(doc), substitutions_1, newline_1, crefResolver_1, MarkdownDocument__get_Paragraphs(doc));\n}\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { union_type, string_type, list_type, class_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport { Common_parseOptions, Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection } from \"../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\n\nexport class Level_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Props\", \"is-mobile\", \"CustomClass\", \"Modifiers\"];\n }\n}\n\nexport function Level_Option_$reflection() {\n return union_type(\"Fulma.Level.Level.Option\", [], Level_Option, () => [[[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\nexport class Item_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Props\", \"has-text-centered\", \"CustomClass\", \"Modifiers\"];\n }\n}\n\nexport function Item_Option_$reflection() {\n return union_type(\"Fulma.Level.Item.Option\", [], Item_Option, () => [[[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate \n */\nexport function level(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 0:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 2:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 3:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n }, \"level\"), (props_1, children_1) => react.createElement(\"nav\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n/**\n * Generate
      \n */\nexport function left(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"level-left\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
      \n */\nexport function right(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"level-right\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
      \n */\nexport function item(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 0:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 2:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 3:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n }, \"level-item\"), (props_1, children_1) => react.createElement(\"div\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n/**\n * Generate

      \n */\nexport function heading(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"heading\"), (props, children_1) => react.createElement(\"p\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate

      \n */\nexport function title(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"title\"), (props, children_1) => react.createElement(\"p\", keyValueList(props, 1), ...children_1), children);\n}\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { Common_parseOptions, Color_ofColor, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection, Size_ISize_$reflection, Color_IColor_$reflection } from \"../Common.fs.js\";\nimport { union_type, string_type, list_type, class_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\nimport { Reflection_getCaseName } from \"../Common.fs.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Color\", \"Size\", \"Props\", \"CustomClass\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Message.Option\", [], Option, () => [[[\"Item\", Color_IColor_$reflection()]], [[\"Item\", Size_ISize_$reflection()]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate
      \n */\nexport function message(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 1:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(option.fields[0]));\n case 2:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 3:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 4:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Color_ofColor(option.fields[0]));\n }\n }, \"message\"), (props_1, children_1) => react.createElement(\"article\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n/**\n * Generate
      \n */\nexport function header(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"message-header\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
      \n */\nexport function body(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"message-body\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { list_type, class_type, string_type, union_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport { Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddProps_Z4E55E0BD, Screen_ToString_2D2414B4, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection, Screen_$reflection, Reflection_getCaseName } from \"../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\nimport { contains } from \"../../fable-library-js.4.24.0/List.js\";\nimport { stringHash } from \"../../fable-library-js.4.24.0/Util.js\";\nimport { printf, toText } from \"../../fable-library-js.4.24.0/String.js\";\nimport { some } from \"../../fable-library-js.4.24.0/Option.js\";\n\nexport class ISize extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-1\", \"is-2\", \"is-3\", \"is-4\", \"is-5\", \"is-6\", \"is-7\", \"is-8\"];\n }\n}\n\nexport function ISize_$reflection() {\n return union_type(\"Fulma.Columns.ISize\", [], ISize, () => [[], [], [], [], [], [], [], []]);\n}\n\nexport function ISize_ToString_2283FB3F(x) {\n return Reflection_getCaseName(x);\n}\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-centered\", \"is-vcentered\", \"is-multiline\", \"is-gapless\", \"is-mobile\", \"is-desktop\", \"IsGap\", \"IsGapOnly\", \"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Columns.Option\", [], Option, () => [[], [], [], [], [], [], [[\"Item1\", Screen_$reflection()], [\"Item2\", ISize_$reflection()]], [[\"Item1\", Screen_$reflection()], [\"Item2\", ISize_$reflection()]], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate
      \n */\nexport function columns(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n let screen_4, size_4, x_2, msg, arg, arg_1, arg_2, screen_5, size_5, x_3, msg_1, arg_3, arg_1_1, arg_2_1;\n switch (option.tag) {\n case 6: {\n const size = option.fields[1];\n const screen = option.fields[0];\n if (!contains(\"is-variable\", result.Classes, {\n Equals: (x, y) => (x === y),\n GetHashCode: stringHash,\n })) {\n return Common_GenericOptions__AddClass_Z721C83C5(Common_GenericOptions__AddClass_Z721C83C5(result, \"is-variable\"), ISize_ToString_2283FB3F(size) + Screen_ToString_2D2414B4(screen));\n }\n else {\n return Common_GenericOptions__AddClass_Z721C83C5(result, ISize_ToString_2283FB3F(size) + Screen_ToString_2D2414B4(screen));\n }\n }\n case 7: {\n const size_3 = option.fields[1];\n const screen_3 = option.fields[0];\n if (!contains(\"is-variable\", result.Classes, {\n Equals: (x_1, y_1) => (x_1 === y_1),\n GetHashCode: stringHash,\n })) {\n return Common_GenericOptions__AddClass_Z721C83C5(Common_GenericOptions__AddClass_Z721C83C5(result, \"is-variable\"), (screen_4 = screen_3, (size_4 = size_3, (screen_4.tag === 2) ? ((ISize_ToString_2283FB3F(size_4) + Screen_ToString_2D2414B4(screen_4)) + \"-only\") : ((screen_4.tag === 1) ? ((ISize_ToString_2283FB3F(size_4) + Screen_ToString_2D2414B4(screen_4)) + \"-only\") : ((screen_4.tag === 4) ? ((ISize_ToString_2283FB3F(size_4) + Screen_ToString_2D2414B4(screen_4)) + \"-only\") : ((x_2 = screen_4, (msg = ((arg = Screen_ToString_2D2414B4(x_2), (arg_1 = ISize_ToString_2283FB3F(size_4), (arg_2 = Screen_ToString_2D2414B4(x_2), toText(printf(\"Screen `%s` does not support `is-%s-%s-only`.\"))(arg)(arg_1)(arg_2))))), (console.warn(some(msg)), \"\")))))))));\n }\n else {\n return Common_GenericOptions__AddClass_Z721C83C5(result, (screen_5 = screen_3, (size_5 = size_3, (screen_5.tag === 2) ? ((ISize_ToString_2283FB3F(size_5) + Screen_ToString_2D2414B4(screen_5)) + \"-only\") : ((screen_5.tag === 1) ? ((ISize_ToString_2283FB3F(size_5) + Screen_ToString_2D2414B4(screen_5)) + \"-only\") : ((screen_5.tag === 4) ? ((ISize_ToString_2283FB3F(size_5) + Screen_ToString_2D2414B4(screen_5)) + \"-only\") : ((x_3 = screen_5, (msg_1 = ((arg_3 = Screen_ToString_2D2414B4(x_3), (arg_1_1 = ISize_ToString_2283FB3F(size_5), (arg_2_1 = Screen_ToString_2D2414B4(x_3), toText(printf(\"Screen `%s` does not support `is-%s-%s-only`.\"))(arg_3)(arg_1_1)(arg_2_1))))), (console.warn(some(msg_1)), \"\")))))))));\n }\n }\n case 9:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 8:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 10:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n }, \"columns\"), (props_1, children_1) => react.createElement(\"div\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { list_type, class_type, string_type, union_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport { Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Reflection_getCaseName, Modifier_IModifier_$reflection, Screen_$reflection } from \"../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\n\nexport class ISize extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-one-quarter\", \"is-one-third\", \"is-half\", \"is-two-thirds\", \"is-three-quarters\", \"is-1\", \"is-2\", \"is-3\", \"is-4\", \"is-5\", \"is-6\", \"is-7\", \"is-8\", \"is-9\", \"is-10\", \"is-11\", \"is-12\", \"is-narrow\", \"is-full\", \"is-one-fifth\", \"is-two-fifths\", \"is-three-fifths\", \"is-four-fifths\"];\n }\n}\n\nexport function ISize_$reflection() {\n return union_type(\"Fulma.Column.ISize\", [], ISize, () => [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]);\n}\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Width\", \"Offset\", \"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Column.Option\", [], Option, () => [[[\"Item1\", Screen_$reflection()], [\"Item2\", ISize_$reflection()]], [[\"Item1\", Screen_$reflection()], [\"Item2\", ISize_$reflection()]], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\nfunction suffix(_arg) {\n switch (_arg.tag) {\n case 1:\n return \"-desktop\";\n case 2:\n return \"-tablet\";\n case 3:\n return \"-mobile\";\n case 4:\n return \"-widescreen\";\n case 6:\n return \"-fullhd\";\n case 5:\n return \"-touch\";\n default:\n return \"\";\n }\n}\n\nexport function ofWidth(screen, size) {\n return Reflection_getCaseName(size) + suffix(screen);\n}\n\nexport function ofOffset(screen, offset) {\n const className = Reflection_getCaseName(offset);\n return (\"is-offset-\" + className.slice(3, className.length)) + suffix(screen);\n}\n\n/**\n * Generate
      \n */\nexport function column(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 1:\n return Common_GenericOptions__AddClass_Z721C83C5(result, ofOffset(option.fields[0], option.fields[1]));\n case 2:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 3:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 4:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddClass_Z721C83C5(result, ofWidth(option.fields[0], option.fields[1]));\n }\n }, \"column\"), (props_1, children_1) => react.createElement(\"div\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n","import { DiaryClientModule_$ctor } from \"./DiaryClientModule.js\";\nimport { toString, Record } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { enum_type, int32_type, getEnumName, record_type, bool_type, list_type, class_type, string_type, lambda_type, int64_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { Router_modifyLocation, Route, Route_$reflection } from \"../../Omnicv.Client.Common/Router.js\";\nimport { dateToStrForDiary, secondsToHuman, countWordsEx } from \"../../Omnicv.Client.Common/Utils.js\";\nimport { value as value_2, defaultArg } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Fa_ISize, Fa_IconOption, Fa_i } from \"../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { length, last as last_1, head, singleton as singleton_1, isEmpty, empty, map, ofArray } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { empty as empty_1, map as map_1, singleton, append, delay, toList } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { list as list_1, label, menu, Item_a, Item_li, Item_Option } from \"../../fable_modules/Fulma.3.0.0/Components/Menu.fs.js\";\nimport { contains } from \"../../fable_modules/fable-library-js.4.24.0/Set.js\";\nimport { toClientListView, TagTreeNode__get_IsLeaf } from \"../../Omnicv.Shared.Common/TagUtils.js\";\nimport { createElement } from \"react\";\nimport * as react from \"react\";\nimport { reactApi } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { Option, tag as tag_5 } from \"../../fable_modules/Fulma.3.0.0/Elements/Tag.fs.js\";\nimport { Common_GenericOption, Modifier_IModifier, TextSize_Option, Screen, Text_span, Size_ISize, Color_IColor } from \"../../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { createObj } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { Router_href } from \"../../Omnicv.Client.Common/Router.js\";\nimport { RatingStarsProps, ratingStars as ratingStars_1 } from \"../../Omnicv.Client.Common/Components/RatingStars.js\";\nimport { EventInfo__BestLocation, EventInfo__GetLocationTz, EventInfo__DisplayTimeZone } from \"../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport * as common from \"../../../src/javascript/common.js\";\nimport { isNullOrWhiteSpace } from \"../../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { Footer_p, Footer_div, footer, content as content_1, Header_icon, Header_Title_Option, Header_title, header, card } from \"../../fable_modules/Fulma.3.0.0/Components/Card.fs.js\";\nimport { Option as Option_1, button } from \"../../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { Option as Option_2, icon } from \"../../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport { Fa_i as Fa_i_1 } from \"../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { Icons__ToIcon } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { Icons } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { content as content_2 } from \"../../fable_modules/Fulma.3.0.0/Elements/Content.fs.js\";\nimport { Markdown_ToHtml_1BFEAEDB } from \"../../fable_modules/Fable.Formatting.Markdown.1.0.1/Markdown.fs.js\";\nimport { title as title_1, heading, Item_Option as Item_Option_1, item, level } from \"../../fable_modules/Fulma.3.0.0/Layouts/Level.fs.js\";\nimport { body, header as header_1, Option as Option_3, message } from \"../../fable_modules/Fulma.3.0.0/Components/Message.fs.js\";\nimport { Option as Option_4, columns } from \"../../fable_modules/Fulma.3.0.0/Layouts/Columns.fs.js\";\nimport { Option as Option_5, column } from \"../../fable_modules/Fulma.3.0.0/Layouts/Column.fs.js\";\nimport { defaultOf } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { days } from \"../../fable_modules/fable-library-js.4.24.0/TimeSpan.js\";\nimport { compare, date as date_1, op_Subtraction } from \"../../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { Class, closeable } from \"../../Omnicv.Client.Common/Components/Notification.js\";\nimport { formatDistance } from \"date-fns\";\nimport { box$0027 } from \"../../fable_modules/Fulma.3.0.0/Elements/Box.fs.js\";\nimport { Option as Option_6, h4, h3 } from \"../../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\n\nexport const diaryModule = DiaryClientModule_$ctor();\n\nexport class DisplayRecordData$1 extends Record {\n constructor(EditFun, TaglineFun, TagsFun, DisplayFun, AddDayLink) {\n super();\n this.EditFun = EditFun;\n this.TaglineFun = TaglineFun;\n this.TagsFun = TagsFun;\n this.DisplayFun = DisplayFun;\n this.AddDayLink = AddDayLink;\n }\n}\n\nexport function DisplayRecordData$1_$reflection(gen0) {\n return record_type(\"Omnicv.Client.Diary.ClientUtils.DisplayRecordData`1\", [gen0], DisplayRecordData$1, () => [[\"EditFun\", lambda_type(int64_type, Route_$reflection())], [\"TaglineFun\", lambda_type(gen0, string_type)], [\"TagsFun\", lambda_type(gen0, string_type)], [\"DisplayFun\", lambda_type(gen0, list_type(class_type(\"Fable.React.ReactElement\", undefined)))], [\"AddDayLink\", bool_type]]);\n}\n\nfunction countDiaryWords(record) {\n return countWordsEx([record.Tagline, record.Notes]);\n}\n\nfunction countReviewWords(record) {\n return countWordsEx([record.Tagline, record.Notes]);\n}\n\nfunction countInteractionWords(record) {\n return countWordsEx([record.Tagline, record.Notes, record.Participants, defaultArg(record.FollowupNotes, \"\")]);\n}\n\nexport function countWordsInRecord(record) {\n switch (record.tag) {\n case 1:\n return countReviewWords(record.fields[0]) | 0;\n case 2:\n return countInteractionWords(record.fields[0]) | 0;\n default:\n return countDiaryWords(record.fields[0]) | 0;\n }\n}\n\nexport function renderTagTree(onClick, input, currentTags) {\n const leafIcon = Fa_i(ofArray([new Fa_IconOption(11, [\"fas fa-tag\"]), new Fa_IconOption(0, [new Fa_ISize(0, [])])]), []);\n const parentIcon = Fa_i(ofArray([new Fa_IconOption(11, [\"fas fa-tags\"]), new Fa_IconOption(0, [new Fa_ISize(0, [])])]), []);\n const options = (tag, isActive) => toList(delay(() => append(singleton(new Item_Option(0, [isActive])), delay(() => (contains(tag, currentTags) ? singleton(new Item_Option(2, [\"tag-menu-chosen\"])) : singleton(new Item_Option(3, [(_arg) => {\n onClick(tag);\n }])))))));\n const treeToMenu = (tree) => {\n if (TagTreeNode__get_IsLeaf(tree)) {\n return Item_li(options(tree.Tag, false), ofArray([createElement(\"span\", {\n children: reactApi.Children.toArray([leafIcon]),\n }), \" \" + tree.Caption]));\n }\n else {\n const arg_3 = map(treeToMenu, tree.Children);\n return ((caption_1) => ((isActive_2) => ((children_2) => {\n const children_7 = [Item_a(options(tree.Tag, isActive_2), ofArray([createElement(\"span\", {\n children: reactApi.Children.toArray([parentIcon]),\n }), \" \", caption_1])), react.createElement(\"ul\", {}, ...children_2)];\n return react.createElement(\"li\", {}, ...children_7);\n })))(tree.Caption)(false)(arg_3);\n }\n };\n return menu(empty(), ofArray([label(empty(), singleton_1(isEmpty(input) ? \"No frequent tags yet\" : \"Frequently used tags\")), list_1(empty(), toList(delay(() => map_1(treeToMenu, input))))]));\n}\n\nexport function renderTag(tag) {\n return tag_5(ofArray([new Option(1, [new Color_IColor(6, [])]), new Option(3, []), new Option(0, [new Size_ISize(2, [])])]), singleton_1(createElement(\"a\", createObj(ofArray([[\"children\", tag], Router_href(new Route(16, [tag]))])))));\n}\n\nexport function ratingStars(value, callback) {\n return ratingStars_1(ofArray([new RatingStarsProps(1, [5]), new RatingStarsProps(4, [24]), new RatingStarsProps(5, [value / 2]), new RatingStarsProps(3, [true]), new RatingStarsProps(2, [callback != null]), new RatingStarsProps(6, [(newValue) => {\n if (callback == null) {\n }\n else {\n callback(~~(newValue * 2));\n }\n }])]));\n}\n\nexport function displayEntry(editFun, deleteFun, eventInfo, record, tagline, tags, displayContent, wordCount) {\n let arg_1;\n let timestamp;\n const temp = `${eventInfo.EventTimestamp} | ${EventInfo__DisplayTimeZone(eventInfo)}`;\n const currentTz = common.getTimezoneName();\n const locationTz = EventInfo__GetLocationTz(eventInfo);\n timestamp = (((locationTz != null) && (value_2(locationTz) !== currentTz)) ? (temp + (` | ${((arg_1 = value_2(locationTz), common.dateToLuxonTz(eventInfo.EventTimestamp, arg_1))).toRFC2822()}`)) : temp);\n let patternInput;\n const wordCountInfo = `Words: ${wordCount}`;\n patternInput = (isNullOrWhiteSpace(tagline) ? [timestamp, wordCountInfo] : [tagline, (wordCountInfo + \" | \") + timestamp]);\n return card(empty(), toList(delay(() => append(singleton(header(empty(), singleton_1(Header_title(singleton_1(new Header_Title_Option(0, [])), singleton_1(patternInput[0]))))), delay(() => {\n const location = EventInfo__BestLocation(eventInfo);\n return append((location !== \"\") ? singleton(header(empty(), ofArray([Header_icon(empty(), singleton_1(Fa_i(singleton_1(new Fa_IconOption(11, [\"fas fa-map-marker-alt\"])), []))), Header_title(empty(), singleton_1(location))]))) : empty_1(), delay(() => append(singleton(content_1(empty(), displayContent(record))), delay(() => append(singleton(footer(empty(), singleton_1(Footer_div(empty(), singleton_1(Text_span(singleton_1(new Common_GenericOption(2, [singleton_1(new Modifier_IModifier(3, [new Screen(0, []), new TextSize_Option(6, [])]))])), singleton_1(patternInput[1]))))))), delay(() => singleton(footer(empty(), toList(delay(() => {\n let children;\n return append(singleton(Footer_p(empty(), singleton_1((children = map(renderTag, toClientListView(tags)), react.createElement(\"div\", {\n className: \"tags\",\n }, ...children))))), delay(() => singleton(Footer_div(empty(), ofArray([button(ofArray([new Option_1(0, [new Color_IColor(4, [])]), new Option_1(5, []), new Option_1(18, [(_arg) => {\n Router_modifyLocation(editFun(eventInfo.Id));\n }])]), singleton_1(icon(singleton_1(new Option_2(0, [new Size_ISize(0, [])])), singleton_1(Fa_i_1(singleton_1(Icons__ToIcon(new Icons(4, []))), []))))), button(ofArray([new Option_1(0, [new Color_IColor(8, [])]), new Option_1(5, []), new Option_1(18, [(_arg_1) => {\n if (window.confirm(`${\"Confirm deletion\"}:\n${\"Are you sure you want to delete this diary entry\"}`)) {\n (() => {\n deleteFun(eventInfo.Id);\n })();\n }\n }])]), singleton_1(icon(singleton_1(new Option_2(0, [new Size_ISize(0, [])])), singleton_1(Fa_i_1(singleton_1(Icons__ToIcon(new Icons(2, []))), [])))))])))));\n }))))))))));\n })))));\n}\n\nexport function displayDiaryContent(record) {\n return singleton_1(content_2(empty(), singleton_1(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(record.Notes),\n },\n }))));\n}\n\nexport function displayReviewContent(record) {\n return ofArray([content_2(empty(), singleton_1(ratingStars(~~record.Rating, undefined))), content_2(empty(), singleton_1(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(record.Notes),\n },\n })))]);\n}\n\nexport function displayInteractionContent(record) {\n return toList(delay(() => {\n let children, children_2;\n return append(singleton(content_2(empty(), ofArray([level(empty(), ofArray([item(singleton_1(new Item_Option_1(1, [])), singleton_1((children = ofArray([heading(empty(), singleton_1(\"Type\")), title_1(empty(), singleton_1(getEnumName(enum_type(\"Omnicv.Diary.Shared.Data.InteractionType\", int32_type, [[\"Other\", 0], [\"Physical\", 1], [\"Call\", 2], [\"VideoCall\", 3], [\"TextMessage\", 4], [\"Email\", 5], [\"Postal\", 6]]), record.InteractionType)))]), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n })))), item(singleton_1(new Item_Option_1(1, [])), singleton_1((children_2 = ofArray([heading(empty(), singleton_1(\"Duration\")), title_1(empty(), singleton_1(secondsToHuman(record.DurationSec)))]), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_2)),\n }))))])), message(ofArray([new Option_3(0, [new Color_IColor(5, [])]), new Option_3(1, [new Size_ISize(0, [])])]), ofArray([header_1(empty(), singleton_1(\"Participants\")), body(empty(), singleton_1(record.Participants))])), message(empty(), singleton_1(body(empty(), singleton_1(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(record.Notes),\n },\n })))))]))), delay(() => ((record.FollowupTime != null) ? singleton(content_2(empty(), toList(delay(() => append(singleton(columns(empty(), ofArray([column(empty(), singleton_1(\"Follow up:\")), column(empty(), toList(delay(() => {\n let copyOfStruct;\n return append(singleton((copyOfStruct = value_2(record.FollowupTime), toString(copyOfStruct))), delay(() => {\n const matchValue = record.FollowupDismissed;\n let matchResult;\n if (matchValue != null) {\n if (matchValue) {\n matchResult = 0;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return append(singleton(icon(ofArray([new Option_2(0, [new Size_ISize(0, [])]), new Option_2(2, [])]), singleton_1(Fa_i_1(singleton_1(Icons__ToIcon(new Icons(11, []))), [])))), delay(() => singleton(\" [Done]\")));\n default:\n return singleton(defaultOf());\n }\n }));\n })))]))), delay(() => ((record.FollowupNotes != null) ? singleton(columns(empty(), singleton_1(column(empty(), singleton_1(value_2(record.FollowupNotes)))))) : empty_1()))))))) : empty_1())));\n }));\n}\n\nexport function displayDiaryEntry(deleteFun, eventInfo, record, wordCount) {\n return displayEntry((Item) => (new Route(11, [Item])), deleteFun, eventInfo, record, record.Tagline, record.Tags, displayDiaryContent, wordCount);\n}\n\nexport function displayReviewEntry(deleteFun, eventInfo, record, wordCount) {\n return displayEntry((Item) => (new Route(13, [Item])), deleteFun, eventInfo, record, record.Tagline, record.Tags, displayReviewContent, wordCount);\n}\n\nexport function displayInteractionEntry(deleteFun, eventInfo, record, wordCount) {\n return displayEntry((Item) => (new Route(15, [Item])), deleteFun, eventInfo, record, record.Tagline, record.Tags, displayInteractionContent, wordCount);\n}\n\nconst diaryRecordData = new DisplayRecordData$1((Item) => (new Route(11, [Item])), (record) => record.Tagline, (record_1) => record_1.Tags, displayDiaryContent, false);\n\nconst reviewRecordData = new DisplayRecordData$1((Item) => (new Route(11, [Item])), (record) => record.Tagline, (record_1) => record_1.Tags, displayReviewContent, false);\n\nconst interactionRecordData = new DisplayRecordData$1((Item) => (new Route(11, [Item])), (record) => record.Tagline, (record_1) => record_1.Tags, displayInteractionContent, false);\n\nexport function displayUnifiedEntries(entries, disabled, deleteFun) {\n let isMultiDayList;\n if (isEmpty(entries)) {\n isMultiDayList = false;\n }\n else {\n const first = head(entries)[0];\n isMultiDayList = (days(op_Subtraction(date_1(last_1(entries)[0].EventTimestamp), first.EventTimestamp)) > 1);\n }\n return toList(delay(() => {\n let children;\n return append(singleton((children = toList(delay(() => ((isEmpty(entries) && !disabled) ? singleton(closeable(\"No entries found\", new Class(1, []))) : empty_1()))), react.createElement(\"div\", {}, ...children))), delay(() => {\n let children_2;\n return !isEmpty(entries) ? singleton((children_2 = map((entry) => {\n const wordCount = countWordsInRecord(entry[1]) | 0;\n switch (entry[1].tag) {\n case 0:\n return displayDiaryEntry(deleteFun, entry[0], entry[1].fields[0], wordCount);\n case 2:\n return displayInteractionEntry(deleteFun, entry[0], entry[1].fields[0], wordCount);\n default:\n return displayReviewEntry(deleteFun, entry[0], entry[1].fields[0], wordCount);\n }\n }, entries), react.createElement(\"div\", {\n disabled: disabled,\n }, ...children_2))) : singleton(defaultOf());\n }));\n }));\n}\n\nfunction displayReminder(markDismissedFun, reminder) {\n return columns(singleton_1(new Option_4(3, [])), toList(delay(() => {\n const now = common.getNow();\n let patternInput;\n const followupDate = value_2(reminder.FollowupTime);\n const time = formatDistance(followupDate, now, {});\n patternInput = ((compare(followupDate, now) >= 0) ? [time + \" in the future\", \"\"] : [time + \" overdue\", \"overdue-reminder\"]);\n return append(singleton(column(singleton_1(new Option_5(2, [patternInput[1]])), ofArray([reminder.Tagline, \": \", patternInput[0]]))), delay(() => append(singleton(column(singleton_1(new Option_5(4, [singleton_1(new Modifier_IModifier(3, [new Screen(0, []), new TextSize_Option(6, [])]))])), singleton_1(value_2(reminder.FollowupNotes)))), delay(() => singleton(column(empty(), ofArray([button(ofArray([new Option_1(0, [new Color_IColor(4, [])]), new Option_1(5, []), new Option_1(18, [(_arg) => {\n Router_modifyLocation(new Route(9, [dateToStrForDiary(reminder.EventTimestamp)]));\n }])]), singleton_1(icon(singleton_1(new Option_2(0, [new Size_ISize(0, [])])), singleton_1(Fa_i_1(singleton_1(Icons__ToIcon(new Icons(12, []))), []))))), button(ofArray([new Option_1(0, [new Color_IColor(5, [])]), new Option_1(5, []), new Option_1(18, [(_arg_1) => {\n if (window.confirm(`${\"Confirm dismissal\"}:\n${\"Dismiss this reminder?\"}`)) {\n (() => {\n markDismissedFun(reminder.Id);\n })();\n }\n }])]), singleton_1(icon(singleton_1(new Option_2(0, [new Size_ISize(0, [])])), singleton_1(Fa_i_1(singleton_1(Icons__ToIcon(new Icons(11, []))), [])))))])))))));\n })));\n}\n\nexport function displayReminders(entries, disabled, markDismissedFun) {\n return toList(delay(() => {\n let children;\n return !isEmpty(entries) ? singleton(box$0027(empty(), ofArray([h3(empty())(singleton_1(\"Reminders\")), h4(singleton_1(new Option_6(6, [])))(singleton_1(`Total ${length(entries)} reminders`)), (children = map((reminder) => displayReminder(markDismissedFun, reminder), entries), react.createElement(\"div\", {\n disabled: disabled,\n }, ...children))]))) : singleton(defaultOf());\n }));\n}\n\n","import { Union, Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { ReminderRecord_$reflection } from \"../modules/Omnicv.Diary.Shared/Data.js\";\nimport { union_type, unit_type, int64_type, class_type, record_type, bool_type, option_type, string_type, list_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { map, ofArray, singleton, empty } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Cmd_none } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { exnToDisplayString } from \"../Omnicv.Client.Common/Utils.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { createObj, curry3, curry2 } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { reminderService } from \"../modules/Omnicv.Diary.Client/Server.js\";\nimport { Session__GetCurrentProfileId } from \"../Omnicv.Client.Common/SharedView.js\";\nimport { addDays } from \"../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport * as common from \"../../src/javascript/common.js\";\nimport { Config_variable, Config_getUserTimeZone } from \"../Omnicv.Client.Common/Extensions.js\";\nimport { Registry$1__get_Modules } from \"../Omnicv.Shared/ModulesRegistration.js\";\nimport { clientModuleRegistry } from \"../ClientRegistration.js\";\nimport { body, hero } from \"../fable_modules/Fulma.3.0.0/Layouts/Hero.fs.js\";\nimport { collect, empty as empty_1, singleton as singleton_1, append, delay, toList } from \"../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { box$0027 } from \"../fable_modules/Fulma.3.0.0/Elements/Box.fs.js\";\nimport { Option, h2, h1 } from \"../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { Class, closeable } from \"../Omnicv.Client.Common/Components/Notification.js\";\nimport { defaultOf } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { container } from \"../fable_modules/Fulma.3.0.0/Layouts/Container.fs.js\";\nimport { displayReminders } from \"../modules/Omnicv.Diary.Client/DiaryClientUtils.js\";\nimport { createElement } from \"react\";\nimport * as react from \"react\";\nimport { isNullOrWhiteSpace } from \"../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { content as content_2, Header_title, Header_icon, header, card } from \"../fable_modules/Fulma.3.0.0/Components/Card.fs.js\";\nimport { Fa_IconOption, Fa_i } from \"../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { content as content_3 } from \"../fable_modules/Fulma.3.0.0/Elements/Content.fs.js\";\nimport { getModuleNewNowButtons, IconType__ToIcon } from \"../Omnicv.Client.Common/ClientModule.js\";\nimport { Router_href } from \"../Omnicv.Client.Common/Router.js\";\nimport { value as value_5 } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Markdown_ToHtml_1BFEAEDB } from \"../fable_modules/Fable.Formatting.Markdown.1.0.1/Markdown.fs.js\";\n\nexport class Model extends Record {\n constructor(Reminders, Error$, InProgress) {\n super();\n this.Reminders = Reminders;\n this.Error = Error$;\n this.InProgress = InProgress;\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Index.Component.Model\", [], Model, () => [[\"Reminders\", list_type(ReminderRecord_$reflection())], [\"Error\", option_type(string_type)], [\"InProgress\", bool_type]]);\n}\n\nexport function Model_Default() {\n return new Model(empty(), undefined, false);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RequestFetch\", \"RemindersFetchSucceeded\", \"FetchFailed\", \"MarkDismissed\", \"MarkDismissedSucceeded\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Index.Component.Msg\", [], Msg, () => [[], [[\"Item\", list_type(ReminderRecord_$reflection())]], [[\"Item\", class_type(\"System.Exception\")]], [[\"Item\", int64_type]], [[\"Item\", unit_type]]]);\n}\n\nexport function init(session) {\n const model = Model_Default();\n if (session.LoggedIn) {\n return [model, singleton((dispatch) => {\n dispatch(new Msg(0, []));\n })];\n }\n else {\n return [model, Cmd_none()];\n }\n}\n\nfunction demoText(user, password) {\n return `\nWelcome to OmniCV demo site! To access most of the functionality, please log in. You have two options:\n\n
        \n
      • Log in with your Google account here. Then you can use all the features of the demo
      • \n\n
      • Log in as a demo user. The account is read only. It is populated with entries from the diary of the 17th century\nEnglish civil servant Samuel Pepys. He rubbed shoulders with most of the important people of Britain of his time and\nwrote about the events in his journal for ten years. Feel free to browse his notes, that luckily survived to this day.\nUse these credentials to log in:\n\n
          \n
        • User name: ${user}
        • \n
        • Password: ${password}
        • \n
        \n
      • \n
      \n\nAs always, feel free to get in touch if you have any problems, questions, suggestions or general thoughts.\n`;\n}\n\nexport function update(session, msg, model) {\n switch (msg.tag) {\n case 1:\n return [new Model(msg.fields[0], model.Error, false), Cmd_none()];\n case 2:\n return [new Model(model.Reminders, exnToDisplayString(msg.fields[0]), false), Cmd_none()];\n case 3:\n return [new Model(model.Reminders, model.Error, true), Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, curry2(reminderService.MarkReminderDismissed)(Session__GetCurrentProfileId(session)), msg.fields[0], () => (new Msg(4, [undefined])), (Item_3) => (new Msg(2, [Item_3])))];\n case 4:\n return [new Model(model.Reminders, model.Error, false), singleton((dispatch) => {\n dispatch(new Msg(0, []));\n })];\n default: {\n const profileId = Session__GetCurrentProfileId(session) | 0;\n const targetDate = addDays(common.getNow(), 2);\n const timezone = Config_getUserTimeZone(session);\n return [new Model(model.Reminders, model.Error, true), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry3(reminderService.GetReminders)(profileId)(targetDate), timezone, (Item) => (new Msg(1, [Item])), (Item_1) => (new Msg(2, [Item_1])))];\n }\n }\n}\n\nexport function view(session, model, dispatch) {\n const modules = Registry$1__get_Modules(clientModuleRegistry);\n return hero(empty(), singleton(body(empty(), toList(delay(() => append(singleton_1(box$0027(empty(), ofArray([h1(empty())(singleton(\"OmniCV\")), h2(singleton(new Option(6, [])))(singleton(\"Nulla dies sine linea\"))]))), delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't fetch information: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => singleton_1(container(empty(), toList(delay(() => {\n let children;\n return append(singleton_1((children = displayReminders(model.Reminders, model.InProgress, (arg) => {\n dispatch(new Msg(3, [arg]));\n }), react.createElement(\"div\", {}, ...children))), delay(() => {\n let demoPassword, text;\n const demoUser = Config_variable(\"DEMO_USER\");\n return append(!isNullOrWhiteSpace(demoUser) ? ((demoPassword = Config_variable(\"DEMO_USER_PASSWORD\"), (text = demoText(demoUser, demoPassword).trim(), singleton_1(card(empty(), ofArray([header(empty(), ofArray([Header_icon(empty(), singleton(Fa_i(singleton(new Fa_IconOption(11, [\"fas fa-film\"])), []))), Header_title(empty(), singleton(\"Welcome to the demo site!\"))])), content_2(empty(), singleton(content_3(empty(), singleton(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: text,\n },\n })))))])))))) : empty_1(), delay(() => collect((clientModule) => {\n const descriptor = clientModule.Descriptor();\n return singleton_1(card(empty(), ofArray([header(empty(), ofArray([Header_icon(empty(), singleton(IconType__ToIcon(descriptor.Icon))), Header_title(empty(), toList(delay(() => ((session.LoggedIn && (descriptor.View != null)) ? singleton_1(createElement(\"a\", createObj(ofArray([[\"children\", clientModule.Details.Title], Router_href(value_5(descriptor.View)(session))])))) : singleton_1(clientModule.Details.Title)))))])), header(empty(), singleton(Header_title(empty(), singleton(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(clientModule.Details.Description),\n },\n }))))), content_2(empty(), session.LoggedIn ? singleton(getModuleNewNowButtons(clientModule, value_5(session.UserInfo).ReadOnly)) : map((des) => container(empty(), singleton(des.Caption)), clientModule.EntryDescriptors()))])));\n }, modules)));\n }));\n }))))));\n })))))));\n}\n\n","import { Remoting_buildProxy_64DC51C } from \"../fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js\";\nimport { RemotingModule_createApi, RemotingModule_withRouteBuilder } from \"../fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js\";\nimport { CommonAuthService_$reflection, CommonAuthService_RouteBuilder, AnonymousService_$reflection, AnonymousService_RouteBuilder } from \"../Omnicv.Shared/API.js\";\nimport { ProxyRequestException__get_Response, ProxyRequestException__get_StatusCode, ProxyRequestException } from \"../fable_modules/Fable.Remoting.Client.7.32.0/Types.fs.js\";\nimport { ServerError_$reflection, ServerError } from \"../Omnicv.Shared.Common/Errors.js\";\nimport { SimpleJson_tryParse } from \"../fable_modules/Fable.SimpleJson.3.24.0/SimpleJson.fs.js\";\nimport { Convert_fromJson } from \"../fable_modules/Fable.SimpleJson.3.24.0/Json.Converter.fs.js\";\nimport { createTypeInfo } from \"../fable_modules/Fable.SimpleJson.3.24.0/TypeInfo.Converter.fs.js\";\nimport { anonRecord_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\n\nexport const anonService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder(AnonymousService_RouteBuilder, RemotingModule_createApi()), AnonymousService_$reflection());\n\nexport const commonAuthService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder(CommonAuthService_RouteBuilder, RemotingModule_createApi()), CommonAuthService_$reflection());\n\nexport function exnToError(e) {\n let matchValue;\n if (e instanceof ProxyRequestException) {\n const ex = e;\n try {\n return ((matchValue = SimpleJson_tryParse(ProxyRequestException__get_Response(ex).ResponseBody), (matchValue != null) ? Convert_fromJson(matchValue, createTypeInfo(anonRecord_type([\"error\", ServerError_$reflection()]))) : (() => {\n throw new Error(\"Couldn\\'t parse the input JSON string because it seems to be invalid\");\n })())).error;\n }\n catch (matchValue_1) {\n return (ProxyRequestException__get_StatusCode(ex) === 401) ? (new ServerError(1, [ProxyRequestException__get_Response(ex).ResponseBody])) : (new ServerError(0, [e.message]));\n }\n }\n else {\n return new ServerError(0, [e.message]);\n }\n}\n\n","import { Union, Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { union_type, class_type, record_type, bool_type, list_type, option_type, string_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { SummaryEntry_$reflection } from \"../Omnicv.Shared/API.js\";\nimport { map, isEmpty, ofArray, cons, singleton, empty } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Cmd_none, Cmd_batch } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { commonAuthService, anonService } from \"../Omnicv.Client.Common/CommonServer.js\";\nimport { int32ToString, curry2 } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { Session__GetCurrentProfileId } from \"../Omnicv.Client.Common/SharedView.js\";\nimport { exnToDisplayString } from \"../Omnicv.Client.Common/Utils.js\";\nimport { Option, columns } from \"../fable_modules/Fulma.3.0.0/Layouts/Columns.fs.js\";\nimport { column } from \"../fable_modules/Fulma.3.0.0/Layouts/Column.fs.js\";\nimport { empty as empty_1, singleton as singleton_1, append, delay, toList } from \"../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { h3, h1 } from \"../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { Config_releaseVersion } from \"../Omnicv.Client.Common/Extensions.js\";\nimport * as common from \"../../src/javascript/common.js\";\nimport { Class, closeable } from \"../Omnicv.Client.Common/Components/Notification.js\";\nimport { defaultOf } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { content as content_1, card } from \"../fable_modules/Fulma.3.0.0/Components/Card.fs.js\";\nimport { content as content_2 } from \"../fable_modules/Fulma.3.0.0/Elements/Content.fs.js\";\nimport { createElement } from \"react\";\nimport { Markdown_ToHtml_1BFEAEDB } from \"../fable_modules/Fable.Formatting.Markdown.1.0.1/Markdown.fs.js\";\nimport { reactApi } from \"../fable_modules/Feliz.2.9.0/Interop.fs.js\";\n\nexport class Model extends Record {\n constructor(Information, Summaries, Error$, InProgress) {\n super();\n this.Information = Information;\n this.Summaries = Summaries;\n this.Error = Error$;\n this.InProgress = InProgress;\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.About.Component.Model\", [], Model, () => [[\"Information\", option_type(string_type)], [\"Summaries\", list_type(SummaryEntry_$reflection())], [\"Error\", option_type(string_type)], [\"InProgress\", bool_type]]);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Succeeded\", \"SucceededSummaries\", \"Failed\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.About.Component.Msg\", [], Msg, () => [[[\"Item\", string_type]], [[\"Item\", list_type(SummaryEntry_$reflection())]], [[\"Item\", class_type(\"System.Exception\")]]]);\n}\n\nexport function init(session) {\n return [new Model(undefined, empty(), undefined, false), Cmd_batch(cons(Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, anonService.About, undefined, (Item) => (new Msg(0, [Item])), (Item_1) => (new Msg(2, [Item_1]))), session.LoggedIn ? singleton(Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, curry2(commonAuthService.GetContentSummary)(Session__GetCurrentProfileId(session)), 1, (Item_2) => (new Msg(1, [Item_2])), (Item_3) => (new Msg(2, [Item_3])))) : empty()))];\n}\n\nexport function update(msg, model) {\n switch (msg.tag) {\n case 1:\n return [new Model(model.Information, msg.fields[0], model.Error, false), Cmd_none()];\n case 2:\n return [new Model(undefined, model.Summaries, exnToDisplayString(msg.fields[0]), false), Cmd_none()];\n default:\n return [new Model(msg.fields[0], model.Summaries, model.Error, false), Cmd_none()];\n }\n}\n\nfunction displaySummary(summary) {\n return columns(singleton(new Option(4, [])), ofArray([column(empty(), singleton(summary.Caption)), column(empty(), singleton(summary.ContentType)), column(empty(), singleton(int32ToString(summary.Count)))]));\n}\n\nexport function view(model, dispatch) {\n const children_4 = toList(delay(() => append(singleton_1(h1(empty())(singleton(\"About\"))), delay(() => append(singleton_1(columns(empty(), ofArray([column(empty(), singleton(\"Client version\")), column(empty(), singleton(Config_releaseVersion()))]))), delay(() => append(singleton_1(columns(empty(), ofArray([column(empty(), singleton(\"React version\")), column(empty(), singleton(common.getReactVersion()))]))), delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't fetch information: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => {\n let children_2;\n const matchValue_1 = model.Information;\n if (matchValue_1 != null) {\n const value = matchValue_1;\n return singleton_1((children_2 = toList(delay(() => append(singleton_1(card(empty(), singleton(content_1(empty(), singleton(content_2(empty(), singleton(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(value),\n },\n })))))))), delay(() => (!isEmpty(model.Summaries) ? append(singleton_1(h3(empty())(singleton(\"Summaries\"))), delay(() => {\n let children;\n return singleton_1((children = map(displaySummary, model.Summaries), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n })));\n })) : empty_1()))))), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_2)),\n })));\n }\n else {\n return singleton_1(createElement(\"i\", {\n children: [\"Not loaded\"],\n }));\n }\n }));\n }))))))));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_4)),\n });\n}\n\n","export function objectFieldGetter(name, obj) {\n return obj[name];\n}\n\nexport function objectFieldSetter(name, obj, newValue) {\n var cloneObj = {...obj};\n cloneObj[name] = newValue;\n return cloneObj;\n}\n\nfunction resolveProperty(obj, name) {\n if (obj.hasOwnProperty(name)) {\n return obj[name];\n }\n else if (obj.hasOwnProperty(\"fields\")) {\n return resolveProperty(obj[\"fields\"], name);\n }\n else if (Array.isArray(obj)) {\n return resolveProperty(obj[0], name);\n }\n else {\n return null;\n }\n}\n\nexport function getId(obj) {\n return obj.Id;\n}\n\nexport function getExerciseId(obj) {\n return resolveProperty(obj, \"ExerciseId\");\n}\n\nexport function getName(obj) {\n return resolveProperty(obj, \"Name\");\n}\n\nexport function getProperties(obj) {\n if (obj.hasOwnProperty(\"fields\")) {\n return getProperties(obj[\"fields\"]);\n }\n else if (Array.isArray(obj)) {\n return getProperties(obj[0]);\n }\n\n var names = Array();\n var values = Array();\n for (var name in obj) {\n if (obj.hasOwnProperty(name)) {\n var value = obj[name];\n names.push(name);\n if (value != null)\n values.push(value.toString());\n else\n values.push(null)\n }\n }\n var result = {\n \"Names\": names,\n \"Values\": values\n };\n return result;\n}","import { Union } from \"../../../fable-library-js.4.24.0/Types.js\";\nimport { union_type, list_type, class_type, string_type } from \"../../../fable-library-js.4.24.0/Reflection.js\";\nimport { Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__AddCaseName_1505, Common_parseOptions, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Size_ISize_$reflection, Modifier_IModifier_$reflection } from \"../../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../../fable-library-js.4.24.0/MapUtil.js\";\nimport { Reflection_getCaseName } from \"../../Common.fs.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"has-addons\", \"has-addons-centered\", \"has-addons-right\", \"has-addons-fullwidth\", \"is-grouped\", \"is-grouped-centered\", \"is-grouped-right\", \"is-grouped-multiline\", \"is-horizontal\", \"is-expanded\", \"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Field.Option\", [], Option, () => [[], [], [], [], [], [], [], [], [], [], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\nexport class Label_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Size\", \"is-normal\", \"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function Label_Option_$reflection() {\n return union_type(\"Fulma.Field.Label.Option\", [], Label_Option, () => [[[\"Item\", Size_ISize_$reflection()]], [], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate
      \n */\nexport function body(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"field-body\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
      \n */\nexport function label(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 1:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n case 3:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 2:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 4:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(option.fields[0]));\n }\n }, \"field-label\"), (props_1, children_1) => react.createElement(\"div\", keyValueList(props_1, 1), ...children_1), children);\n}\n\nexport function fieldView(element, options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 2:\n return Common_GenericOptions__AddCaseName_1505(Common_GenericOptions__AddClass_Z721C83C5(result, \"has-addons\"), option);\n case 3:\n return Common_GenericOptions__AddCaseName_1505(Common_GenericOptions__AddClass_Z721C83C5(result, \"has-addons\"), option);\n case 5:\n return Common_GenericOptions__AddCaseName_1505(Common_GenericOptions__AddClass_Z721C83C5(result, \"is-grouped\"), option);\n case 6:\n return Common_GenericOptions__AddCaseName_1505(Common_GenericOptions__AddClass_Z721C83C5(result, \"is-grouped\"), option);\n case 7:\n return Common_GenericOptions__AddCaseName_1505(Common_GenericOptions__AddClass_Z721C83C5(result, \"is-grouped\"), option);\n case 0:\n case 4:\n case 8:\n case 9:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n case 11:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 10:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 12:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(Common_GenericOptions__AddClass_Z721C83C5(result, \"has-addons\"), option);\n }\n }, \"field\"), element, children);\n}\n\n/**\n * Generate
      \n */\nexport function div(x, y) {\n return fieldView((props, children) => react.createElement(\"div\", keyValueList(props, 1), ...children), x, y);\n}\n\n/**\n * Generate

      \n */\nexport function p(x, y) {\n return fieldView((props, children) => react.createElement(\"p\", keyValueList(props, 1), ...children), x, y);\n}\n\n","import { Union } from \"../../../fable-library-js.4.24.0/Types.js\";\nimport { Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__AddProp_ZCC5A61F, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection, Size_ISize_$reflection } from \"../../Common.fs.js\";\nimport { union_type, list_type, class_type, string_type } from \"../../../fable-library-js.4.24.0/Reflection.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../../fable-library-js.4.24.0/MapUtil.js\";\nimport { HTMLAttr } from \"../../../Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport { Reflection_getCaseName } from \"../../Common.fs.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Size\", \"For\", \"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Label.Option\", [], Option, () => [[[\"Item\", Size_ISize_$reflection()]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate \n */\nexport function label(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 1:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(96, [option.fields[0]]));\n case 3:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 2:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 4:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(option.fields[0]));\n }\n }, \"label\"), (props_1, children_1) => react.createElement(\"label\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n","import { Union } from \"../../../fable-library-js.4.24.0/Types.js\";\nimport { union_type, list_type, class_type, string_type, bool_type } from \"../../../fable-library-js.4.24.0/Reflection.js\";\nimport { Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__AddCaseName_1505, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection } from \"../../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../../fable-library-js.4.24.0/MapUtil.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"has-icons-right\", \"has-icons-left\", \"is-loading\", \"is-expanded\", \"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Control.Option\", [], Option, () => [[], [], [[\"Item\", bool_type]], [], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\nexport function controlView(element, options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 2:\n if (option.fields[0]) {\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n else {\n return result;\n }\n case 5:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 4:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 6:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n }, \"control\"), element, children);\n}\n\n/**\n * Generate
      \n */\nexport function div(x, y) {\n return controlView((props, children) => react.createElement(\"div\", keyValueList(props, 1), ...children), x, y);\n}\n\n/**\n * Generate

      \n */\nexport function p(x, y) {\n return controlView((props, children) => react.createElement(\"p\", keyValueList(props, 1), ...children), x, y);\n}\n\n","import { Union } from \"../../../fable-library-js.4.24.0/Types.js\";\nimport { union_type, list_type, class_type, string_type } from \"../../../fable-library-js.4.24.0/Reflection.js\";\nimport { Color_ofColor, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection, Color_IColor_$reflection } from \"../../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../../fable-library-js.4.24.0/MapUtil.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"CustomClass\", \"Props\", \"Color\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Help.Option\", [], Option, () => [[[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", Color_IColor_$reflection()]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate

      \n */\nexport function help(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 1:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 0:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 3:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Color_ofColor(option.fields[0]));\n }\n }, \"help\"), (props_1, children_1) => react.createElement(\"p\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n","import { Union } from \"../../../fable-library-js.4.24.0/Types.js\";\nimport { Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__AddProp_ZCC5A61F, Common_GenericOptions__AddCaseName_1505, Color_ofColor, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection, Color_IColor_$reflection, Size_ISize_$reflection } from \"../../Common.fs.js\";\nimport { union_type, lambda_type, unit_type, list_type, class_type, string_type, bool_type } from \"../../../fable-library-js.4.24.0/Reflection.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../../fable-library-js.4.24.0/MapUtil.js\";\nimport { Reflection_getCaseName } from \"../../Common.fs.js\";\nimport { DOMAttr, Prop, HTMLAttr } from \"../../../Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport { equals } from \"../../../fable-library-js.4.24.0/Util.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Size\", \"is-fullwidth\", \"is-inline\", \"is-loading\", \"is-focused\", \"is-active\", \"IsReadOnly\", \"Color\", \"Id\", \"Disabled\", \"Value\", \"DefaultValue\", \"ValueOrDefault\", \"Placeholder\", \"Props\", \"OnChange\", \"Ref\", \"CustomClass\", \"has-fixed-size\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Textarea.Option\", [], Option, () => [[[\"Item\", Size_ISize_$reflection()]], [], [], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", Color_IColor_$reflection()]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Element\", undefined), unit_type)]], [[\"Item\", string_type]], [], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate \n */\nexport function textarea(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n let matchResult, state;\n switch (option.tag) {\n case 7: {\n matchResult = 1;\n break;\n }\n case 1:\n case 18:\n case 2: {\n matchResult = 2;\n break;\n }\n case 8: {\n matchResult = 4;\n break;\n }\n case 9: {\n matchResult = 5;\n break;\n }\n case 6: {\n matchResult = 6;\n break;\n }\n case 10: {\n matchResult = 7;\n break;\n }\n case 11: {\n matchResult = 8;\n break;\n }\n case 12: {\n matchResult = 9;\n break;\n }\n case 13: {\n matchResult = 10;\n break;\n }\n case 15: {\n matchResult = 11;\n break;\n }\n case 16: {\n matchResult = 12;\n break;\n }\n case 14: {\n matchResult = 13;\n break;\n }\n case 17: {\n matchResult = 14;\n break;\n }\n case 19: {\n matchResult = 15;\n break;\n }\n case 3: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n case 4: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n case 5: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n default:\n matchResult = 0;\n }\n switch (matchResult) {\n case 0:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(option.fields[0]));\n case 1:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Color_ofColor(option.fields[0]));\n case 2:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n case 3:\n if (state) {\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n else {\n return result;\n }\n case 4:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(99, [option.fields[0]]));\n case 5:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(79, [option.fields[0]]));\n case 6:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(132, [option.fields[0]]));\n case 7:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(161, [option.fields[0]]));\n case 8:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(1, [option.fields[0]]));\n case 9: {\n const valueOrDefault = option.fields[0];\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new Prop(1, [(e) => {\n if (!(e == null) && !equals(e.value, valueOrDefault)) {\n e.value = valueOrDefault;\n }\n }]));\n }\n case 10:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(128, [option.fields[0]]));\n case 11:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new DOMAttr(9, [option.fields[0]]));\n case 12:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new Prop(1, [option.fields[0]]));\n case 13:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 14:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n }\n }, \"textarea\"), (props_1, children_1) => react.createElement(\"textarea\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n","import { Union } from \"../../../fable-library-js.4.24.0/Types.js\";\nimport { list_type, lambda_type, unit_type, class_type, bool_type, string_type, union_type } from \"../../../fable-library-js.4.24.0/Reflection.js\";\nimport { Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__AddProp_ZCC5A61F, Color_ofColor, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions__AddCaseName_1505, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_Z2B8EEFE, Modifier_IModifier_$reflection, Color_IColor_$reflection, Size_ISize_$reflection } from \"../../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../../fable-library-js.4.24.0/MapUtil.js\";\nimport { Reflection_getCaseName } from \"../../Common.fs.js\";\nimport { DOMAttr, Prop, HTMLAttr } from \"../../../Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport { equals } from \"../../../fable-library-js.4.24.0/Util.js\";\n\nexport class IInputType extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Text\", \"Password\", \"DatetimeLocal\", \"Date\", \"Month\", \"Time\", \"Week\", \"Number\", \"Email\", \"Url\", \"Search\", \"Tel\", \"ColorType\"];\n }\n}\n\nexport function IInputType_$reflection() {\n return union_type(\"Fulma.Input.IInputType\", [], IInputType, () => [[], [], [], [], [], [], [], [], [], [], [], [], []]);\n}\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Size\", \"Type\", \"Color\", \"Id\", \"Disabled\", \"IsReadOnly\", \"is-static\", \"is-rounded\", \"Value\", \"Key\", \"DefaultValue\", \"ValueOrDefault\", \"Placeholder\", \"OnChange\", \"Ref\", \"Props\", \"CustomClass\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Input.Option\", [], Option, () => [[[\"Item\", Size_ISize_$reflection()]], [[\"Item\", IInputType_$reflection()]], [[\"Item\", Color_IColor_$reflection()]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Element\", undefined), unit_type)]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\nfunction ofType(typ) {\n switch (typ.tag) {\n case 1:\n return \"password\";\n case 2:\n return \"datetime-local\";\n case 3:\n return \"date\";\n case 4:\n return \"month\";\n case 5:\n return \"time\";\n case 6:\n return \"week\";\n case 7:\n return \"number\";\n case 8:\n return \"email\";\n case 9:\n return \"url\";\n case 10:\n return \"search\";\n case 11:\n return \"tel\";\n case 12:\n return \"color\";\n default:\n return \"text\";\n }\n}\n\n/**\n * Generate \n */\nexport function input(options) {\n return Common_GenericOptions__ToReactElement_Z2B8EEFE(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 7:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n case 0:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(option.fields[0]));\n case 2:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Color_ofColor(option.fields[0]));\n case 1:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(159, [ofType(option.fields[0])]));\n case 3:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(99, [option.fields[0]]));\n case 4:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(79, [option.fields[0]]));\n case 5:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(132, [option.fields[0]]));\n case 8:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(161, [option.fields[0]]));\n case 10:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(1, [option.fields[0]]));\n case 11: {\n const valueOrDefault = option.fields[0];\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new Prop(1, [(e) => {\n if (!(e == null) && !equals(e.value, valueOrDefault)) {\n e.value = valueOrDefault;\n }\n }]));\n }\n case 12:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(128, [option.fields[0]]));\n case 13:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new DOMAttr(9, [option.fields[0]]));\n case 14:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new Prop(1, [option.fields[0]]));\n case 15:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 16:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 17:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n case 9:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new Prop(0, [option.fields[0]]));\n default:\n if (option.fields[0]) {\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n else {\n return result;\n }\n }\n }, \"input\"), (props_1) => react.createElement(\"input\", keyValueList(props_1, 1)));\n}\n\n","import { Union } from \"../../../fable-library-js.4.24.0/Types.js\";\nimport { Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__AddCaseName_1505, Color_ofColor, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection, Color_IColor_$reflection, Size_ISize_$reflection } from \"../../Common.fs.js\";\nimport { union_type, string_type, list_type, class_type, bool_type } from \"../../../fable-library-js.4.24.0/Reflection.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../../fable-library-js.4.24.0/MapUtil.js\";\nimport { Reflection_getCaseName } from \"../../Common.fs.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Size\", \"is-fullwidth\", \"is-inline\", \"is-loading\", \"is-focused\", \"is-active\", \"Disabled\", \"Color\", \"is-rounded\", \"is-multiple\", \"Props\", \"CustomClass\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Select.Option\", [], Option, () => [[[\"Item\", Size_ISize_$reflection()]], [], [], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", Color_IColor_$reflection()]], [], [], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", string_type]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate
      \n */\nexport function select(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n let matchResult, state;\n switch (option.tag) {\n case 7: {\n matchResult = 1;\n break;\n }\n case 1:\n case 2:\n case 9:\n case 8: {\n matchResult = 2;\n break;\n }\n case 10: {\n matchResult = 4;\n break;\n }\n case 11: {\n matchResult = 5;\n break;\n }\n case 12: {\n matchResult = 6;\n break;\n }\n case 3: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n case 4: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n case 5: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n case 6: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n default:\n matchResult = 0;\n }\n switch (matchResult) {\n case 0:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(option.fields[0]));\n case 1:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Color_ofColor(option.fields[0]));\n case 2:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n case 3:\n if (state) {\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n else {\n return result;\n }\n case 4:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 5:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n }\n }, \"select\"), (props_1, children_1) => react.createElement(\"div\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n","import { Union } from \"../fable-library-js.4.24.0/Types.js\";\nimport { Common_GenericOption, TextWeight_Option, Modifier_IModifier, Color_IColor, Text_span, Common_GenericOptions__ToReactElement_4509C2D7, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_Z2B8EEFE, Color_ofColor, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__AddProp_ZCC5A61F, Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddClass_Z721C83C5, Size_ISize_$reflection, Color_IColor_$reflection } from \"../Fulma.3.0.0/Common.fs.js\";\nimport { union_type, string_type, lambda_type, unit_type, list_type, class_type, bool_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { Reflection_getCaseName } from \"../Fulma.3.0.0/Common.fs.js\";\nimport { DOMAttr, HTMLAttr } from \"../Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport { empty, ofArray, singleton, tryPick } from \"../fable-library-js.4.24.0/List.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../fable-library-js.4.24.0/MapUtil.js\";\nimport { div } from \"../Fulma.3.0.0/Elements/Form/Field.fs.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Color\", \"Size\", \"is-rtl\", \"has-no-border\", \"has-background-color\", \"is-circle\", \"Checked\", \"Disabled\", \"is-block\", \"LabelProps\", \"InputProps\", \"OnChange\", \"CustomClass\", \"Id\", \"Name\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Extensions.Wikiki.Checkradio.Option\", [], Option, () => [[[\"Item\", Color_IColor_$reflection()]], [[\"Item\", Size_ISize_$reflection()]], [], [], [], [], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", lambda_type(class_type(\"Browser.Types.Event\", undefined), unit_type)]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]]]);\n}\n\nfunction parseOptionsForInput(result, option) {\n switch (option.tag) {\n case 1:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(option.fields[0]));\n case 5:\n case 2:\n case 3:\n case 4:\n case 8:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n case 6:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(62, [option.fields[0]]));\n case 7:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(79, [option.fields[0]]));\n case 14:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(123, [option.fields[0]]));\n case 10:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 11:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new DOMAttr(9, [option.fields[0]]));\n case 13:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(99, [option.fields[0]]));\n case 12:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 9:\n return result;\n default:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Color_ofColor(option.fields[0]));\n }\n}\n\nfunction parseOptionsForLabel(result, option) {\n switch (option.tag) {\n case 13:\n return Common_GenericOptions__AddProp_ZCC5A61F(result, new HTMLAttr(96, [option.fields[0]]));\n case 9:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n default:\n return result;\n }\n}\n\nfunction hasId(options) {\n return tryPick((option) => {\n if (option.tag === 13) {\n return true;\n }\n else {\n return undefined;\n }\n }, options) != null;\n}\n\nfunction genericElement(inputType, baseClass, options, children) {\n if (hasId(options)) {\n const inputElement = Common_GenericOptions__ToReactElement_Z2B8EEFE(Common_GenericOptions_Parse_Z4D1A7726(options, parseOptionsForInput, baseClass, singleton(new HTMLAttr(159, [inputType]))), (props) => react.createElement(\"input\", keyValueList(props, 1)));\n const labelElement = Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, parseOptionsForLabel), (props_3, children_1) => react.createElement(\"label\", keyValueList(props_3, 1), ...children_1), children);\n return react.createElement(react.Fragment, {}, inputElement, labelElement);\n }\n else {\n return Text_span(singleton(new Common_GenericOption(2, [ofArray([new Modifier_IModifier(1, [new Color_IColor(8, [])]), new Modifier_IModifier(2, [new TextWeight_Option(3, [])])])])), singleton(\"You need to set an Id value for your Checkradio \"));\n }\n}\n\n/**\n * Generate\n * \n * \n * \n * \n */\nexport function checkboxInline(options, children) {\n return genericElement(\"checkbox\", \"is-checkradio\", options, children);\n}\n\n/**\n * Generate\n *
      \n * \n * \n * \n * \n *
      \n */\nexport function checkbox(options, children) {\n return div(empty(), singleton(checkboxInline(options, children)));\n}\n\n/**\n * Generate\n * \n * \n * \n * \n */\nexport function radioInline(options, children) {\n return genericElement(\"radio\", \"is-checkradio\", options, children);\n}\n\n/**\n * Generate\n *
      \n * \n * \n * \n * \n *
      \n */\nexport function radio(options, children) {\n return div(empty(), singleton(radioInline(options, children)));\n}\n\n","import { Common_GenericOptions__ToReactElement_Z2B8EEFE, Common_parseOptions, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7 } from \"../../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../../fable-library-js.4.24.0/MapUtil.js\";\nimport { HTMLAttr } from \"../../../Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport { singleton } from \"../../../fable-library-js.4.24.0/List.js\";\n\n/**\n * Generate \n */\nexport function checkbox(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"checkbox\"), (props, children_1) => react.createElement(\"label\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate \n */\nexport function input(options) {\n return Common_GenericOptions__ToReactElement_Z2B8EEFE(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"checkbox\", singleton(new HTMLAttr(159, [\"checkbox\"]))), (props) => react.createElement(\"input\", keyValueList(props, 1)));\n}\n\n","import { Union, Record } from \"../fable-library-js.4.24.0/Types.js\";\nimport { class_type, union_type, list_type, record_type, bool_type, string_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { isNullOrWhiteSpace } from \"../fable-library-js.4.24.0/String.js\";\nimport { map } from \"../fable-library-js.4.24.0/Array.js\";\nimport { map as map_1, delay, toArray } from \"../fable-library-js.4.24.0/Seq.js\";\nimport \"./SelectSearch.css\";\n\nexport class SelectItem extends Record {\n constructor(value, name, disabled) {\n super();\n this.value = value;\n this.name = name;\n this.disabled = disabled;\n }\n}\n\nexport function SelectItem_$reflection() {\n return record_type(\"Feliz.SelectSearch.SelectItem\", [], SelectItem, () => [[\"value\", string_type], [\"name\", string_type], [\"disabled\", bool_type]]);\n}\n\nexport class SelectGroup extends Record {\n constructor(name, items) {\n super();\n this.name = name;\n this.items = items;\n }\n}\n\nexport function SelectGroup_$reflection() {\n return record_type(\"Feliz.SelectSearch.SelectGroup\", [], SelectGroup, () => [[\"name\", string_type], [\"items\", list_type(SelectItem_$reflection())]]);\n}\n\nexport class SelectOption extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Item\", \"Group\"];\n }\n}\n\nexport function SelectOption_$reflection() {\n return union_type(\"Feliz.SelectSearch.SelectOption\", [], SelectOption, () => [[[\"Item\", SelectItem_$reflection()]], [[\"Item\", SelectGroup_$reflection()]]]);\n}\n\nexport function Interop_createDefaultFilter(predicate) {\n return (selectItems) => ((searchQuery) => (isNullOrWhiteSpace(searchQuery) ? selectItems : map((jsItem_1) => {\n if (jsItem_1.type === \"group\") {\n let filteredItems;\n const array_1 = jsItem_1.items;\n filteredItems = array_1.filter((groupItem) => {\n let name_1;\n return predicate((name_1 = groupItem.name, new SelectItem(groupItem.value, name_1, groupItem.disabled)), searchQuery);\n });\n return Object.assign({}, jsItem_1, {\n items: filteredItems,\n });\n }\n else {\n return jsItem_1;\n }\n }, selectItems.filter((jsItem) => {\n let name;\n if (jsItem.type === \"group\") {\n return true;\n }\n else {\n return predicate((name = jsItem.name, new SelectItem(jsItem.value, name, jsItem.disabled)), searchQuery);\n }\n }))));\n}\n\nexport const Interop_defaultProps = {\n filterOptions: Interop_createDefaultFilter((item, query) => (item.name.toLocaleLowerCase().indexOf(query.trim().toLocaleLowerCase()) >= 0)),\n};\n\nexport class OptionRendererProps extends Record {\n constructor(attributes, className, option, selected, highlighted) {\n super();\n this.attributes = attributes;\n this.className = className;\n this.option = option;\n this.selected = selected;\n this.highlighted = highlighted;\n }\n}\n\nexport function OptionRendererProps_$reflection() {\n return record_type(\"Feliz.SelectSearch.OptionRendererProps\", [], OptionRendererProps, () => [[\"attributes\", class_type(\"System.Collections.Generic.IEnumerable`1\", [class_type(\"Feliz.IReactProperty\")])], [\"className\", string_type], [\"option\", SelectItem_$reflection()], [\"selected\", bool_type], [\"highlighted\", bool_type]]);\n}\n\nexport class ValueRendererProps extends Record {\n constructor(attributes, focus, disabled, fetching, search, displayValue, values) {\n super();\n this.attributes = attributes;\n this.focus = focus;\n this.disabled = disabled;\n this.fetching = fetching;\n this.search = search;\n this.displayValue = displayValue;\n this.values = values;\n }\n}\n\nexport function ValueRendererProps_$reflection() {\n return record_type(\"Feliz.SelectSearch.ValueRendererProps\", [], ValueRendererProps, () => [[\"attributes\", class_type(\"System.Collections.Generic.IEnumerable`1\", [class_type(\"Feliz.IReactProperty\")])], [\"focus\", bool_type], [\"disabled\", bool_type], [\"fetching\", bool_type], [\"search\", string_type], [\"displayValue\", string_type], [\"values\", list_type(string_type)]]);\n}\n\nexport class selectSearch {\n constructor() {\n }\n}\n\nexport function selectSearch_$reflection() {\n return class_type(\"Feliz.SelectSearch.selectSearch\", undefined, selectSearch);\n}\n\n/**\n * Sets the options of the select control\n */\nexport function selectSearch_options_3A40D30D(items) {\n return [\"options\", toArray(delay(() => map_1((item) => ({\n value: item.value,\n name: item.name,\n disabled: item.disabled,\n }), items)))];\n}\n\n/**\n * Sets the options of the select control\n */\nexport function selectSearch_options_626B3067(groups) {\n return [\"options\", toArray(delay(() => map_1((group) => ({\n type: \"group\",\n name: group.name,\n items: toArray(delay(() => map_1((item) => ({\n value: item.value,\n name: item.name,\n }), group.items))),\n }), groups)))];\n}\n\n/**\n * Sets the options of the select control\n */\nexport function selectSearch_options_113CE11B(mixedOptions) {\n return [\"options\", toArray(delay(() => map_1((option) => {\n if (option.tag === 1) {\n const group = option.fields[0];\n return {\n type: \"group\",\n name: group.name,\n items: toArray(delay(() => map_1((item_1) => ({\n value: item_1.value,\n name: item_1.name,\n disabled: item_1.disabled,\n }), group.items))),\n };\n }\n else {\n const item = option.fields[0];\n return {\n value: item.value,\n name: item.name,\n disabled: item.disabled,\n };\n }\n }, mixedOptions)))];\n}\n\n/**\n * When search is enabled, this function allows to define how items are filtered.\n * By default, the built-in filtering checks whether the name of the select item contains input query (case-insensitive)\n */\nexport function selectSearch_filterOptions_Z7A2530AD(predicate) {\n return [\"filterOptions\", Interop_createDefaultFilter(predicate)];\n}\n\n\nexport class selectSearchModule_printOptions {\n constructor() {\n }\n}\n\nexport function selectSearchModule_printOptions_$reflection() {\n return class_type(\"Feliz.SelectSearch.selectSearchModule.printOptions\", undefined, selectSearchModule_printOptions);\n}\n\nexport class selectSearchModule_autoComplete {\n constructor() {\n }\n}\n\nexport function selectSearchModule_autoComplete_$reflection() {\n return class_type(\"Feliz.SelectSearch.selectSearchModule.autoComplete\", undefined, selectSearchModule_autoComplete);\n}\n\n","import * as common from \"../../src/javascript/common.js\";\nimport { value } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { record_type, int32_type, option_type, float64_type, class_type, string_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\n\nexport function createLatLng(lat, lng) {\n return {\n lat: lat,\n lng: lng,\n };\n}\n\nexport function createLatLngBounds(north, east, south, west) {\n return {\n north: north,\n east: east,\n south: south,\n west: west,\n };\n}\n\nexport function createCircleLiteral(center, radius) {\n return {\n center: center,\n radius: radius,\n };\n}\n\nexport function createCircle(center, radius) {\n const circle = common.createCircle();\n circle.setRadius(radius);\n circle.setCenter(center);\n return circle;\n}\n\nexport function createCoords(lat, lng) {\n return {\n accuracy: 10,\n heading: 0,\n latitude: lat,\n longitude: lng,\n speed: 0,\n };\n}\n\nexport function createPosition(lat, lng) {\n return {\n coords: createCoords(lat, lng),\n timestamp: 0,\n };\n}\n\nexport function toPosition(lat, lng) {\n let matchResult, latValue, lngValue;\n if (lat != null) {\n if (lng != null) {\n matchResult = 0;\n latValue = value(lat);\n lngValue = value(lng);\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return createPosition(latValue, lngValue);\n default:\n return undefined;\n }\n}\n\nexport class LocationDescriptor extends Record {\n constructor(PlaceId, Name, Position, DistanceFromCurrent, UtcOffsetMin) {\n super();\n this.PlaceId = PlaceId;\n this.Name = Name;\n this.Position = Position;\n this.DistanceFromCurrent = DistanceFromCurrent;\n this.UtcOffsetMin = UtcOffsetMin;\n }\n}\n\nexport function LocationDescriptor_$reflection() {\n return record_type(\"Omnicv.Client.MapLiteral.LocationDescriptor\", [], LocationDescriptor, () => [[\"PlaceId\", string_type], [\"Name\", string_type], [\"Position\", class_type(\"Browser.Types.Position\")], [\"DistanceFromCurrent\", option_type(float64_type)], [\"UtcOffsetMin\", option_type(int32_type)]]);\n}\n\nconst earthRadius = 6371071;\n\nexport function distanceInMeters(lat1, long1, lat2, long2) {\n const rLat1 = lat1 * (3.141592653589793 / 180);\n const rLat2 = lat2 * (3.141592653589793 / 180);\n const diffLat = rLat2 - rLat1;\n const diffLon = (long2 - long1) * (3.141592653589793 / 180);\n return (2 * earthRadius) * Math.asin(Math.sqrt((Math.sin(diffLat / 2) * Math.sin(diffLat / 2)) + (((Math.cos(rLat1) * Math.cos(rLat2)) * Math.sin(diffLon / 2)) * Math.sin(diffLon / 2))));\n}\n\nexport function distanceInMetersBetweenPositions(pos1, pos2) {\n return distanceInMeters(pos1.coords.latitude, pos1.coords.longitude, pos2.coords.latitude, pos2.coords.longitude);\n}\n\n","import { Result_MapError, Result_Map, FSharpResult$2 } from \"../fable-library-js.4.24.0/Result.js\";\nimport { class_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { disposeSafe, getEnumerator } from \"../fable-library-js.4.24.0/Util.js\";\n\n/**\n * This is an identity function, it calls the given function and return the promise value untouched.\n * \n * \n * fetchUser ()\n * |> Promise.tap (fun user ->\n * // Do something\n * console.log \"The user has been received\"\n * )\n * |> Promise.map (fun user ->\n * // user value is available here untouched\n * )\n * \n * \n */\nexport function tap(fn, a) {\n return a.then((x) => {\n fn(x);\n return x;\n });\n}\n\n/**\n * Map the Promise result into a Result type.\n * \n * \n * Success example\n * Promise.lift 42\n * |> Promise.result\n * |> Promise.map (fun value ->\n * // value = Ok 42\n * )\n * \n * // Fail example\n * Promise.reject \"Invalid value\"\n * |> Promise.result\n * |> Promise.map (fun value ->\n * // value = Error \"Invalid value\"\n * )\n * \n * \n */\nexport function result(a) {\n return a.then((ResultValue) => (new FSharpResult$2(0, [ResultValue]))).catch((ErrorValue) => (new FSharpResult$2(1, [ErrorValue])));\n}\n\n/**\n * Evaluates to `myPromise |> Promise.map (Result.map fn)`\n * \n * \n * Promise.lift 42\n * |> Promise.result\n * |> Promise.mapResult (fun value ->\n * value + 10\n * )\n * |> Promise.map (fun value ->\n * // value = Ok 52\n * )\n * \n * \n */\nexport function mapResult(fn, a) {\n return a.then((result_1) => Result_Map(fn, result_1));\n}\n\n/**\n * Transform the success part of a result promise into another promise.\n * \n * \n * let multiplyBy2 (value : int) =\n * Promise.create (fun resolve reject ->\n * resolve (value * 2)\n * )\n * \n * Promise.lift 42\n * |> Promise.result\n * |> Promise.bindResult (fun value ->\n * multiplyBy2 value\n * )\n * |> Promise.map (fun value ->\n * // value = Ok 84\n * )\n * \n * \n */\nexport function bindResult(fn, a) {\n return a.then((a_1) => {\n if (a_1.tag === 1) {\n return Promise.resolve(new FSharpResult$2(1, [a_1.fields[0]]));\n }\n else {\n const pr = fn(a_1.fields[0]);\n return pr.then((ResultValue) => (new FSharpResult$2(0, [ResultValue])));\n }\n });\n}\n\n/**\n * Evaluates to myPromise |> Promise.map (Result.map fn)\n * \n * \n * Promise.reject -1\n * |> Promise.result\n * |> Promise.mapResultError (fun value ->\n * $\"%s{value} is not a valid value\"\n * )\n * |> Promise.map (fun value ->\n * // value = Error \"-1 is not a valid value\"\n * )\n * \n * \n */\nexport function mapResultError(fn, a) {\n return a.then((result_1) => Result_MapError(fn, result_1));\n}\n\nexport class PromiseBuilder {\n constructor() {\n }\n}\n\nexport function PromiseBuilder_$reflection() {\n return class_type(\"Promise.PromiseBuilder\", undefined, PromiseBuilder);\n}\n\nexport function PromiseBuilder_$ctor() {\n return new PromiseBuilder();\n}\n\nexport function PromiseBuilder__For_1565554B(_, seq, body) {\n let pr;\n let p = Promise.resolve(undefined);\n const enumerator = getEnumerator(seq);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const a = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n p = ((pr = p, pr.then(() => body(a))));\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return p;\n}\n\nexport function PromiseBuilder__While_2044D34(this$, guard, p) {\n if (guard()) {\n return p.then(() => PromiseBuilder__While_2044D34(this$, guard, p));\n }\n else {\n return Promise.resolve(undefined);\n }\n}\n\nexport function PromiseBuilder__TryFinally_7D49A2FD(_, p, compensation) {\n return p.then((x) => {\n compensation();\n return x;\n }).catch((er) => {\n compensation();\n throw er;\n });\n}\n\nexport function PromiseBuilder__Delay_62FBFDE1(_, generator) {\n return {\n then: (onSuccess, onError) => {\n try {\n return generator().then(onSuccess, onError);\n }\n catch (er) {\n if (onError == null) {\n return Promise.reject(er);\n }\n else {\n try {\n const a = onError(er);\n return Promise.resolve(a);\n }\n catch (er_1) {\n return Promise.reject(er_1);\n }\n }\n }\n },\n catch: (onError_1) => {\n try {\n return generator().catch(onError_1);\n }\n catch (er_2) {\n try {\n const a_1 = onError_1(er_2);\n return Promise.resolve(a_1);\n }\n catch (er_3) {\n return Promise.reject(er_3);\n }\n }\n },\n };\n}\n\nexport function PromiseBuilder__Run_212F1D4B(_, p) {\n return p.then((x) => x);\n}\n\nexport function PromiseBuilder__Using_74F7E79D(this$, resource, binder) {\n return PromiseBuilder__TryFinally_7D49A2FD(this$, binder(resource), () => {\n let copyOfStruct = resource;\n disposeSafe(copyOfStruct);\n });\n}\n\n","import { toPosition, createLatLng, createCircle, LocationDescriptor, LocationDescriptor_$reflection, createPosition } from \"../MapLiteral.js\";\nimport { some, map, defaultArg, value as value_2 } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Union, Record } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { EventInfo_Default_7F9DDECF, EventInfo, EventInfo_$reflection } from \"../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { union_type, record_type, bool_type, option_type, class_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport * as common from \"../../../src/javascript/common.js\";\nimport { Session__GetCurrentProfileId } from \"../SharedView.js\";\nimport { toUniversalTime } from \"../../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { Event as Event$ } from \"../../fable_modules/fable-library-js.4.24.0/Event.js\";\nimport { compare, defaultOf, equals } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { Config_variable, Config_placeLookupId } from \"../Extensions.js\";\nimport { item } from \"../../fable_modules/fable-library-js.4.24.0/Array.js\";\nimport { max, min } from \"../../fable_modules/fable-library-js.4.24.0/Double.js\";\nimport { PromiseBuilder__Delay_62FBFDE1, PromiseBuilder__Run_212F1D4B } from \"../../fable_modules/Fable.Promise.3.2.0/Promise.fs.js\";\nimport { promise } from \"../../fable_modules/Fable.Promise.3.2.0/PromiseImpl.fs.js\";\nimport { Cmd_none, Cmd_batch, Cmd_OfPromise_attempt } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { head, length, sortBy, singleton } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { exnToDisplayString, dateStrToDateTime } from \"../Utils.js\";\nimport { add } from \"../../fable_modules/fable-library-js.4.24.0/Observable.js\";\n\nconst zeroPosition = createPosition(0, 0);\n\nexport function getOrElse(opt, elseValue) {\n if (opt == null) {\n return elseValue;\n }\n else {\n return value_2(opt);\n }\n}\n\nexport class Model extends Record {\n constructor(EventInfo, AutocompleteService, Position, StrictBounds) {\n super();\n this.EventInfo = EventInfo;\n this.AutocompleteService = AutocompleteService;\n this.Position = Position;\n this.StrictBounds = StrictBounds;\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"Omnicv.Client.Components.EventInfoManager.Model\", [], Model, () => [[\"EventInfo\", EventInfo_$reflection()], [\"AutocompleteService\", option_type(class_type(\"GoogleMapsApi.Google.Maps.Places.Autocomplete\"))], [\"Position\", option_type(class_type(\"Browser.Types.Position\"))], [\"StrictBounds\", bool_type]]);\n}\n\nexport function Model__UpdateEventInfo_Z45EFA9A8(this$, newEventInfo) {\n return new Model(newEventInfo, this$.AutocompleteService, this$.Position, this$.StrictBounds);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Loaded\", \"UpdateLocation\", \"UpdatePosition\", \"GeoLocationUpdated\", \"UpdateAutocomplete\", \"AutocompleteFailure\", \"SetStrictBounds\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.Components.EventInfoManager.Msg\", [], Msg, () => [[[\"Item\", EventInfo_$reflection()]], [[\"Item\", option_type(LocationDescriptor_$reflection())]], [[\"Item\", class_type(\"Browser.Types.Position\")]], [], [[\"Item\", class_type(\"GoogleMapsApi.Google.Maps.Places.Autocomplete\")]], [[\"Item\", class_type(\"System.Exception\")]], [[\"Item\", bool_type]]]);\n}\n\nexport function prepareEventInfoForSubmit(session, model) {\n const source = model.EventInfo;\n const clientTz = defaultArg(source.ClientTz, common.getTimezoneName());\n const clientTzOffsetMin = defaultArg(source.ClientTzOffsetMin, common.getTimezoneOffset()) | 0;\n return new EventInfo(source.Id, source.ContentTypeId, Session__GetCurrentProfileId(session), toUniversalTime(source.EventTimestamp), source.CreatedAt, source.UpdatedAt, source.PlaceId, source.PlaceName, source.Latitude, source.Longitude, source.LocationTz, source.LocationTzOffsetMin, clientTz, clientTzOffsetMin);\n}\n\nconst eventPublisher = new Event$();\n\nexport function triggerUpdateLocation(result) {\n eventPublisher.Trigger(new Msg(1, [result]));\n}\n\nfunction updateLocation(place) {\n const placeId = place.place_id;\n let newPosition;\n if ((place.geometry != null) && (value_2(place.geometry).location != null)) {\n const location = value_2(value_2(place.geometry).location);\n newPosition = createPosition(location.lat(), location.lng());\n }\n else {\n newPosition = zeroPosition;\n }\n let placeName;\n const name = getOrElse(place.name, \"\");\n const address = getOrElse(place.formatted_address, \"\");\n placeName = (address.startsWith(name) ? address : ((name + \", \") + address));\n triggerUpdateLocation((placeId != null) ? (new LocationDescriptor(value_2(placeId), placeName, newPosition, undefined, map((value) => ~~value, place.utc_offset_minutes))) : undefined);\n}\n\nconst registerPlacesAutoCompleteImpDelays = new Int32Array([1, 2, 4, 8, 16, 32]);\n\nfunction registerPlacesAutoComplete() {\n const waitForElementPromise = (iteration, totalDelay, next) => {\n if (equals(document.getElementById(Config_placeLookupId), defaultOf())) {\n const delay = item(min(iteration, registerPlacesAutoCompleteImpDelays.length - 1), registerPlacesAutoCompleteImpDelays) | 0;\n const delayMs = (delay * 1000) | 0;\n console.log(some(`Will be waiting ${delay}sec after ${iteration} iterations and ${totalDelay}sec to get the Google map entry element`));\n const pr = new Promise(resolve => setTimeout(resolve, delayMs));\n return pr.then(() => waitForElementPromise(iteration + 1, totalDelay + delay, next));\n }\n else {\n console.log(some(`Went through ${iteration} iterations and waited ${totalDelay}sec to get the Google map entry element`));\n return next();\n }\n };\n console.log(some(\"Loading Google map library\"));\n let pr_2;\n const pr_1 = common.loadGoogleMapsApi(Config_variable(\"GOOGLE_MAPS_API_KEY\"));\n pr_2 = (pr_1.then((google_2) => {\n console.log(some(`Google map library loaded: ${google_2.maps.version}`));\n return waitForElementPromise(0, 0, () => PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let placesAutoComplete;\n return Promise.resolve((console.log(some(\"Google map library loaded, attaching element\")), (placesAutoComplete = common.registerPlacesAutoComplete(google_2, Config_placeLookupId, (place) => {\n updateLocation(place);\n }), eventPublisher.Trigger(new Msg(4, [placesAutoComplete])))));\n })));\n }));\n return pr_2.catch((ex) => {\n console.error(some(`Failed to load Google map library: ${ex.message}`));\n });\n}\n\nconst commonInitCmds = singleton(Cmd_OfPromise_attempt(registerPlacesAutoComplete, undefined, (Item) => (new Msg(5, [Item]))));\n\nexport function initCommon(eventInfo) {\n if (navigator.geolocation != null) {\n const geoLocation = value_2(navigator.geolocation);\n geoLocation.getCurrentPosition((arg_1) => {\n eventPublisher.Trigger(new Msg(2, [arg_1]));\n }, (error) => {\n console.error(some(`Failed to get position: ${error.code} ${error.message}`));\n });\n }\n return [new Model(eventInfo, undefined, undefined, true), Cmd_batch(commonInitCmds)];\n}\n\nexport function initCommonNoRegistration(eventInfo) {\n return [new Model(eventInfo, undefined, undefined, true), Cmd_none()];\n}\n\nexport function initNew(dateStr) {\n return initCommon(EventInfo_Default_7F9DDECF(dateStrToDateTime(dateStr)));\n}\n\nexport function initEdit(id) {\n let bind$0040;\n return initCommon((bind$0040 = EventInfo_Default_7F9DDECF(common.getNow()), new EventInfo(id, bind$0040.ContentTypeId, bind$0040.ProfileId, bind$0040.EventTimestamp, bind$0040.CreatedAt, bind$0040.UpdatedAt, bind$0040.PlaceId, bind$0040.PlaceName, bind$0040.Latitude, bind$0040.Longitude, bind$0040.LocationTz, bind$0040.LocationTzOffsetMin, bind$0040.ClientTz, bind$0040.ClientTzOffsetMin)));\n}\n\nfunction updateAutocompleteService(model) {\n const matchValue = model.AutocompleteService;\n const matchValue_1 = model.EventInfo.Latitude;\n const matchValue_2 = model.EventInfo.Longitude;\n let matchResult, lat, lng, service;\n if (matchValue != null) {\n if (matchValue_1 != null) {\n if (matchValue_2 != null) {\n matchResult = 0;\n lat = matchValue_1;\n lng = matchValue_2;\n service = matchValue;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n const circle = createCircle(createLatLng(lat, lng), 21000);\n const bounds = value_2(circle.getBounds());\n const options_1 = {\n bounds: bounds,\n strictBounds: model.StrictBounds,\n };\n service.setOptions(options_1);\n break;\n }\n case 1: {\n break;\n }\n }\n}\n\nexport function eventInfoCoordinatesToPosition(eventInfo) {\n return toPosition(eventInfo.Latitude, eventInfo.Longitude);\n}\n\nexport function eventInfoCoordinatesToPositionOrDefault(eventInfo) {\n const matchValue = eventInfoCoordinatesToPosition(eventInfo);\n if (matchValue != null) {\n return matchValue;\n }\n else {\n return zeroPosition;\n }\n}\n\nexport function tryUpdateLocationFromSuggestions(suggestionsFunc, model) {\n const eventInfo = model.EventInfo;\n const matchValue = model.Position;\n let matchResult, currentPosition;\n if (matchValue != null) {\n if (eventInfo.PlaceId == null) {\n if (eventInfo.PlaceName == null) {\n matchResult = 0;\n currentPosition = matchValue;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n const candidates = sortBy((value) => value.DistanceFromCurrent, suggestionsFunc(), {\n Compare: compare,\n });\n if (length(candidates) > 0) {\n const best = head(candidates);\n const accuracy = max(100, min(currentPosition.coords.accuracy, 500));\n if ((best.DistanceFromCurrent != null) && (value_2(best.DistanceFromCurrent) <= accuracy)) {\n console.log(some(`Setting location to ${best}`));\n triggerUpdateLocation(best);\n }\n }\n break;\n }\n case 1: {\n break;\n }\n }\n}\n\nexport function update(msg, model) {\n let bind$0040_1, bind$0040, bind$0040_2, position, msg_1;\n switch (msg.tag) {\n case 1:\n if (msg.fields[0] == null) {\n return [new Model((bind$0040_1 = model.EventInfo, new EventInfo(bind$0040_1.Id, bind$0040_1.ContentTypeId, bind$0040_1.ProfileId, bind$0040_1.EventTimestamp, bind$0040_1.CreatedAt, bind$0040_1.UpdatedAt, undefined, undefined, undefined, undefined, bind$0040_1.LocationTz, bind$0040_1.LocationTzOffsetMin, bind$0040_1.ClientTz, bind$0040_1.ClientTzOffsetMin)), model.AutocompleteService, model.Position, model.StrictBounds), Cmd_none()];\n }\n else {\n const descriptor = msg.fields[0];\n return [new Model((bind$0040 = model.EventInfo, new EventInfo(bind$0040.Id, bind$0040.ContentTypeId, bind$0040.ProfileId, bind$0040.EventTimestamp, bind$0040.CreatedAt, bind$0040.UpdatedAt, descriptor.PlaceId, descriptor.Name.trim(), descriptor.Position.coords.latitude, descriptor.Position.coords.longitude, bind$0040.LocationTz, descriptor.UtcOffsetMin, bind$0040.ClientTz, bind$0040.ClientTzOffsetMin)), model.AutocompleteService, model.Position, model.StrictBounds), Cmd_none()];\n }\n case 2: {\n console.log(some(`New coordinates: ${msg.fields[0].coords.latitude} / ${msg.fields[0].coords.longitude}; accuracy=${msg.fields[0].coords.accuracy}`));\n const newModel = new Model((bind$0040_2 = model.EventInfo, new EventInfo(bind$0040_2.Id, bind$0040_2.ContentTypeId, bind$0040_2.ProfileId, bind$0040_2.EventTimestamp, bind$0040_2.CreatedAt, bind$0040_2.UpdatedAt, bind$0040_2.PlaceId, bind$0040_2.PlaceName, msg.fields[0].coords.latitude, msg.fields[0].coords.longitude, bind$0040_2.LocationTz, bind$0040_2.LocationTzOffsetMin, bind$0040_2.ClientTz, bind$0040_2.ClientTzOffsetMin)), model.AutocompleteService, msg.fields[0], model.StrictBounds);\n updateAutocompleteService(newModel);\n return [newModel, singleton((dispatch_1) => {\n dispatch_1(new Msg(3, []));\n })];\n }\n case 3:\n return [model, Cmd_none()];\n case 4: {\n const newModel_1 = new Model(model.EventInfo, msg.fields[0], model.Position, model.StrictBounds);\n updateAutocompleteService(newModel_1);\n return [newModel_1, Cmd_none()];\n }\n case 5: {\n console.log(some(exnToDisplayString(msg.fields[0])));\n return [model, Cmd_none()];\n }\n case 6: {\n const newModel_2 = new Model(model.EventInfo, model.AutocompleteService, model.Position, msg.fields[0]);\n updateAutocompleteService(newModel_2);\n return [newModel_2, Cmd_none()];\n }\n default:\n return [new Model(msg.fields[0], model.AutocompleteService, model.Position, model.StrictBounds), (position = eventInfoCoordinatesToPosition(msg.fields[0]), (position != null) ? ((msg_1 = (new Msg(2, [value_2(position)])), singleton((dispatch) => {\n dispatch(msg_1);\n }))) : Cmd_none())];\n }\n}\n\nexport function subscribeLocation(dispatch) {\n add((msg) => {\n dispatch(msg);\n }, eventPublisher.Publish);\n}\n\n","import * as flex_form from \"../../../src/javascript/flex-form.js\";\nimport { format, substring, isNullOrWhiteSpace, replace } from \"../../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { Record, toString, FSharpRef, Union } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { record_type, lambda_type, tuple_type, uint8_type, bool_type, decimal_type, float64_type, int32_type, option_type, class_type, union_type, string_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { FlexWrap_Option, TextTransform_Option, TextWeight_Option, TextSize_Option, Text_span, Spacing_Amount, Spacing_TypeAndDirection, Common_GenericOption, Modifier_IModifier, Size_ISize, Screen, Color_IColor } from \"../../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { safeHash, stringHash, createObj, compare, comparePrimitives, int32ToString, curry2, uncurry2, defaultOf as defaultOf_1, equals } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { collect, map as map_2, head, empty as empty_1, singleton, append, delay, toList, fold } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { some, map, defaultArg, value as value_15, unwrap } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { filter, sortBy, ofSeq as ofSeq_1, tryFind, exists as exists_1, map as map_1, isEmpty, ofArray, append as append_1, cons, singleton as singleton_1, empty } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { body, label as label_2, Option as Option_10, div } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Field.fs.js\";\nimport { Option, label as label_1 } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Label.fs.js\";\nimport { Option as Option_1, div as div_1 } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Control.fs.js\";\nimport { Option as Option_2, help as help_2 } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Help.fs.js\";\nimport { defaultOf } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { Option as Option_3, textarea } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Textarea.fs.js\";\nimport { input as input_1 } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Input.fs.js\";\nimport { Option as Option_4, IInputType } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Input.fs.js\";\nimport { column, Option as Option_5, ISize } from \"../../fable_modules/Fulma.3.0.0/Layouts/Column.fs.js\";\nimport { list as list_5, Option as Option_6, button } from \"../../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { Option as Option_7, icon as icon_1 } from \"../../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport { Fa_IconOption, Fa_i } from \"../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { Option as Option_8, columns } from \"../../fable_modules/Fulma.3.0.0/Layouts/Columns.fs.js\";\nimport { ofSeq, empty as empty_2, contains, FSharpSet__get_Count } from \"../../fable_modules/fable-library-js.4.24.0/Set.js\";\nimport { tryParse } from \"../../fable_modules/fable-library-js.4.24.0/Int32.js\";\nimport { Result_Map, FSharpResult$2 } from \"../../fable_modules/fable-library-js.4.24.0/Result.js\";\nimport { tryParse as tryParse_1 } from \"../../fable_modules/fable-library-js.4.24.0/Double.js\";\nimport { compare as compare_1, toString as toString_1 } from \"../../fable_modules/fable-library-js.4.24.0/Decimal.js\";\nimport Decimal from \"../../fable_modules/fable-library-js.4.24.0/Decimal.js\";\nimport { second, minute, hour, parse, day, month, year, create, now as now_1, toUniversalTime, tryParse as tryParse_2, minValue, toLocalTime, toString as toString_2 } from \"../../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { stringToEnum, valuesToSelectOptions, splitSeconds } from \"../Utils.js\";\nimport { DOMAttr, HTMLAttr } from \"../../fable_modules/Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport { Config_placeLookupId } from \"../Extensions.js\";\nimport { createElement } from \"react\";\nimport * as react from \"react\";\nimport { reactApi } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { Option as Option_9, select } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Select.fs.js\";\nimport { keyValueList } from \"../../fable_modules/fable-library-js.4.24.0/MapUtil.js\";\nimport { Option as Option_11, radioInline } from \"../../fable_modules/Fulma.Extensions.Wikiki.Checkradio.3.0.0/Checkradio.fs.js\";\nimport { input as input_2, checkbox } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Checkbox.fs.js\";\nimport { concatToServer, toClientListView } from \"../../Omnicv.Shared.Common/TagUtils.js\";\nimport { selectSearch_filterOptions_Z7A2530AD, SelectOption, SelectItem, selectSearch_options_113CE11B } from \"../../fable_modules/Feliz.SelectSearch.3.1.0/SelectSearch.fs.js\";\nimport { List_distinct, List_except } from \"../../fable_modules/fable-library-js.4.24.0/Seq2.js\";\nimport { reactApi as reactApi_1 } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport react_select_search from \"react-select-search\";\nimport { Interop_defaultProps } from \"../../fable_modules/Feliz.SelectSearch.3.1.0/SelectSearch.fs.js\";\nimport { Helpers_combineClasses } from \"../../fable_modules/Feliz.Bulma.3.0.0/ElementBuilders.fs.js\";\nimport { RatingStarsProps, ratingStars } from \"./RatingStars.js\";\nimport { FSharpChoice$2 } from \"../../fable_modules/fable-library-js.4.24.0/Choice.js\";\nimport { Option as Option_12, container } from \"../../fable_modules/Fulma.3.0.0/Layouts/Container.fs.js\";\nimport { EventInfo__GetLocationTz, EventInfo__GetClientTz, EventInfo__DisplayTimeZone } from \"../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport * as common from \"../../../src/javascript/common.js\";\nimport { StringBuilder__get_Length, StringBuilder__Append_Z721C83C5, StringBuilder_$ctor } from \"../../fable_modules/fable-library-js.4.24.0/System.Text.js\";\nimport { eventInfoCoordinatesToPositionOrDefault, triggerUpdateLocation } from \"./EventInfoManager.js\";\nimport { LocationDescriptor, distanceInMetersBetweenPositions } from \"../MapLiteral.js\";\n\nfunction convert(object) {\n return object;\n}\n\nfunction objectFieldGetter(fieldName, object) {\n return convert(flex_form.objectFieldGetter(fieldName, object));\n}\n\nfunction objectFieldSetter(fieldName, object, newValue) {\n return convert(flex_form.objectFieldSetter(fieldName, object, newValue));\n}\n\nexport function setWorkoutRecordId(record, newId) {\n return objectFieldSetter(\"WorkoutRecordId\", record, newId);\n}\n\nexport function setId(record, newId) {\n return objectFieldSetter(\"Id\", record, newId);\n}\n\nexport function setProfileId(record, profileId) {\n return objectFieldSetter(\"ProfileId\", record, profileId);\n}\n\nexport function clearId(record) {\n return setId(record, 0n);\n}\n\nfunction slugify(name) {\n return replace(name, \" \", \"-\");\n}\n\nexport class FieldValidationResult extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Ok\", \"Warning\", \"Error\"];\n }\n}\n\nexport function FieldValidationResult_$reflection() {\n return union_type(\"Omnicv.Client.Common.Components.FlexForm.FieldValidationResult\", [], FieldValidationResult, () => [[], [[\"Item\", string_type]], [[\"Item\", string_type]]]);\n}\n\nexport function FieldValidationResult__ToColour_Z5463E381(this$, defaultColour) {\n switch (this$.tag) {\n case 1:\n return new Color_IColor(7, []);\n case 2:\n return new Color_IColor(8, []);\n default:\n return defaultColour;\n }\n}\n\nexport function FieldValidationResult__IsValid(this$) {\n return equals(this$, new FieldValidationResult(0, []));\n}\n\nexport function FieldValidationResult__IsErrorResult(this$) {\n if (this$.tag === 2) {\n return true;\n }\n else {\n return false;\n }\n}\n\nexport function FieldValidationResult__Merge_30561432(this$, other) {\n let matchResult, right, left, msg1, msg2, msg1_1, msg2_1, msg1_2, msg2_2, msg1_3, msg2_3;\n switch (this$.tag) {\n case 2: {\n switch (other.tag) {\n case 2: {\n matchResult = 2;\n msg1 = this$.fields[0];\n msg2 = other.fields[0];\n break;\n }\n case 1: {\n matchResult = 3;\n msg1_1 = this$.fields[0];\n msg2_1 = other.fields[0];\n break;\n }\n default: {\n matchResult = 1;\n left = this$;\n }\n }\n break;\n }\n case 1: {\n switch (other.tag) {\n case 2: {\n matchResult = 4;\n msg1_2 = this$.fields[0];\n msg2_2 = other.fields[0];\n break;\n }\n case 1: {\n matchResult = 5;\n msg1_3 = this$.fields[0];\n msg2_3 = other.fields[0];\n break;\n }\n default: {\n matchResult = 1;\n left = this$;\n }\n }\n break;\n }\n default: {\n matchResult = 0;\n right = other;\n }\n }\n switch (matchResult) {\n case 0:\n return right;\n case 1:\n return left;\n case 2:\n return new FieldValidationResult(2, [(msg1 + \"; \") + msg2]);\n case 3:\n return new FieldValidationResult(2, [(msg1_1 + \"; \") + msg2_1]);\n case 4:\n return new FieldValidationResult(2, [(msg1_2 + \"; \") + msg2_2]);\n default:\n return new FieldValidationResult(1, [(msg1_3 + \"; \") + msg2_3]);\n }\n}\n\nfunction mergeResults(results) {\n return fold((state, result) => FieldValidationResult__Merge_30561432(result, state), new FieldValidationResult(0, []), results);\n}\n\nexport class CustomField$1 {\n constructor(name, customRender) {\n this.name = name;\n this.customRender = customRender;\n this[\"Details@\"] = undefined;\n this[\"Help@\"] = undefined;\n this[\"IsRequired@\"] = true;\n }\n get Details() {\n const __ = this;\n return unwrap(__[\"Details@\"]);\n }\n set Details(v) {\n const __ = this;\n __[\"Details@\"] = v;\n }\n get Help() {\n const __ = this;\n return unwrap(__[\"Help@\"]);\n }\n set Help(v) {\n const __ = this;\n __[\"Help@\"] = v;\n }\n get IsRequired() {\n const __ = this;\n return __[\"IsRequired@\"];\n }\n set IsRequired(v) {\n const __ = this;\n __[\"IsRequired@\"] = v;\n }\n get Name() {\n const this$ = this;\n return this$.name;\n }\n Render(isDisabled, value) {\n const this$ = this;\n return this$.customRender(isDisabled, value);\n }\n OnChange(value) {\n }\n Validate(_value) {\n return new FieldValidationResult(0, []);\n }\n}\n\nexport function CustomField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.CustomField`1\", [gen0], CustomField$1);\n}\n\nexport function CustomField$1_$ctor_693A43B3(name, customRender) {\n return new CustomField$1(name, customRender);\n}\n\nexport class BaseField$1 {\n constructor(name) {\n this.name = name;\n this[\"Details@\"] = undefined;\n this[\"Help@\"] = undefined;\n this[\"IsRequired@\"] = true;\n }\n get Details() {\n const __ = this;\n return unwrap(__[\"Details@\"]);\n }\n set Details(v) {\n const __ = this;\n __[\"Details@\"] = v;\n }\n get Help() {\n const __ = this;\n return unwrap(__[\"Help@\"]);\n }\n set Help(v) {\n const __ = this;\n __[\"Help@\"] = v;\n }\n get IsRequired() {\n const __ = this;\n return __[\"IsRequired@\"];\n }\n set IsRequired(v) {\n const __ = this;\n __[\"IsRequired@\"] = v;\n }\n get Name() {\n const this$ = this;\n return this$.name;\n }\n Render(isDisabled, value) {\n const this$ = this;\n return this$[\"Omnicv.Client.Common.Components.FlexForm.BaseField`1.Render\"](isDisabled, value);\n }\n OnChange(value) {\n const this$ = this;\n this$[\"Omnicv.Client.Common.Components.FlexForm.BaseField`1.OnChange2B595\"](value);\n }\n Validate(value) {\n const this$ = this;\n return this$[\"Omnicv.Client.Common.Components.FlexForm.BaseField`1.Validate2B595\"](value);\n }\n}\n\nexport function BaseField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.BaseField`1\", [gen0], BaseField$1);\n}\n\nexport function BaseField$1_$ctor_Z721C83C5(name) {\n return new BaseField$1(name);\n}\n\nexport class GetterSetterBaseField$2 extends BaseField$1 {\n constructor(name, getter, setter, validate, onChange) {\n super(name);\n this.name_1 = name;\n this.getter = getter;\n this.setter = setter;\n this.validate = validate;\n this.onChange = onChange;\n }\n \"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.ControlModifiers\"() {\n return empty();\n }\n \"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.ControlExtras2B595\"(_arg) {\n return empty();\n }\n \"Omnicv.Client.Common.Components.FlexForm.BaseField`1.Render\"(isDisabled, object) {\n const this$ = this;\n const value = this$.getter(object);\n const error = GetterSetterBaseField$2__get_Field(this$).Validate(object);\n return div(empty(), toList(delay(() => append(singleton(label_1(singleton_1(new Option(2, [\"is-normal\"])), singleton_1(GetterSetterBaseField$2__get_Field(this$).Name))), delay(() => {\n let temp;\n return append(singleton(div_1((temp = this$[\"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.ControlModifiers\"](), isDisabled ? cons(new Option_1(2, [true]), temp) : temp), append_1(singleton_1(this$[\"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.RenderValue\"](isDisabled, error, object, value)), this$[\"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.ControlExtras2B595\"](object)))), delay(() => append((GetterSetterBaseField$2__get_Field(this$).Help != null) ? singleton(help_2(singleton_1(new Option_2(2, [new Color_IColor(6, [])])), singleton_1(value_15(GetterSetterBaseField$2__get_Field(this$).Help)))) : empty_1(), delay(() => {\n const matchValue = error;\n return (matchValue.tag === 1) ? singleton(help_2(singleton_1(new Option_2(2, [new Color_IColor(7, [])])), singleton_1(matchValue.fields[0]))) : ((matchValue.tag === 0) ? singleton(defaultOf()) : singleton(help_2(singleton_1(new Option_2(2, [new Color_IColor(8, [])])), singleton_1(matchValue.fields[0]))));\n }))));\n })))));\n }\n \"Omnicv.Client.Common.Components.FlexForm.BaseField`1.OnChange2B595\"(object) {\n const this$ = this;\n this$.onChange(object);\n }\n \"Omnicv.Client.Common.Components.FlexForm.BaseField`1.Validate2B595\"(object) {\n const this$ = this;\n const result = this$.validate(GetterSetterBaseField$2__GetValue_2B595(this$, object));\n return (result == null) ? (new FieldValidationResult(0, [])) : (new FieldValidationResult(2, [value_15(result)]));\n }\n}\n\nexport function GetterSetterBaseField$2_$reflection(gen0, gen1) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2\", [gen0, gen1], GetterSetterBaseField$2, BaseField$1_$reflection(gen0));\n}\n\nexport function GetterSetterBaseField$2_$ctor_4CAD41BD(name, getter, setter, validate, onChange) {\n return new GetterSetterBaseField$2(name, getter, setter, validate, onChange);\n}\n\nexport function GetterSetterBaseField$2__CallOnChange(this$, object, newValue) {\n const newObject = this$.setter(object, newValue);\n this$[\"Omnicv.Client.Common.Components.FlexForm.BaseField`1.OnChange2B595\"](newObject);\n}\n\nexport function GetterSetterBaseField$2__get_Field(this$) {\n return this$;\n}\n\nexport function GetterSetterBaseField$2__get_Placeholder(this$) {\n return defaultArg(GetterSetterBaseField$2__get_Field(this$).Details, this$.name_1);\n}\n\nexport function GetterSetterBaseField$2__GetValue_2B595(this$, object) {\n return this$.getter(object);\n}\n\nexport class JsGetterSetterBaseField$2 extends GetterSetterBaseField$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, (object) => objectFieldGetter(fieldName, object), (object_1, newValue) => objectFieldSetter(fieldName, object_1, newValue), validate, onChange);\n }\n}\n\nexport function JsGetterSetterBaseField$2_$reflection(gen0, gen1) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.JsGetterSetterBaseField`2\", [gen0, gen1], JsGetterSetterBaseField$2, GetterSetterBaseField$2_$reflection(gen0, gen1));\n}\n\nexport function JsGetterSetterBaseField$2_$ctor_3195DDE5(name, fieldName, validate, onChange) {\n return new JsGetterSetterBaseField$2(name, fieldName, validate, onChange);\n}\n\nexport class TextFieldBase$2 extends JsGetterSetterBaseField$2 {\n constructor(isTextArea, name, fieldName, fromValue, toValue, validate, onChange) {\n super(name, fieldName, validate, onChange);\n this.isTextArea = isTextArea;\n this.fromValue = fromValue;\n this.toValue = toValue;\n }\n \"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.RenderValue\"(isDisabled, error, object, value) {\n const this$ = this;\n return this$.isTextArea ? textarea(ofArray([new Option_3(7, [FieldValidationResult__ToColour_Z5463E381(error, new Color_IColor(4, []))]), new Option_3(13, [GetterSetterBaseField$2__get_Placeholder(this$)]), new Option_3(10, [this$.fromValue(value)]), new Option_3(15, [(event) => {\n TextFieldBase$2__ProcessOnChange(this$, object, event);\n }]), new Option_3(9, [isDisabled])]), empty()) : input_1(ofArray([new Option_4(1, [new IInputType(0, [])]), new Option_4(2, [FieldValidationResult__ToColour_Z5463E381(error, new Color_IColor(4, []))]), new Option_4(12, [GetterSetterBaseField$2__get_Placeholder(this$)]), new Option_4(8, [this$.fromValue(value)]), new Option_4(13, [(event_1) => {\n TextFieldBase$2__ProcessOnChange(this$, object, event_1);\n }]), new Option_4(4, [isDisabled])]));\n }\n}\n\nexport function TextFieldBase$2_$reflection(gen0, gen1) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.TextFieldBase`2\", [gen0, gen1], TextFieldBase$2, JsGetterSetterBaseField$2_$reflection(gen0, gen1));\n}\n\nexport function TextFieldBase$2_$ctor_Z52490B1(isTextArea, name, fieldName, fromValue, toValue, validate, onChange) {\n return new TextFieldBase$2(isTextArea, name, fieldName, fromValue, toValue, validate, onChange);\n}\n\nfunction TextFieldBase$2__ProcessOnChange(this$, object, event) {\n let elem, elem_1;\n GetterSetterBaseField$2__CallOnChange(this$, object, this$.toValue(this$.isTextArea ? ((elem = event.target, elem.value)) : ((elem_1 = event.target, elem_1.value))));\n}\n\nexport class TextField$1 extends TextFieldBase$2 {\n constructor(name, fieldName, validate, onChange) {\n super(false, name, fieldName, (x) => x, (x_1) => x_1, validate, onChange);\n }\n}\n\nexport function TextField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.TextField`1\", [gen0], TextField$1, TextFieldBase$2_$reflection(gen0, string_type));\n}\n\nexport function TextField$1_$ctor_7EE3C92A(name, fieldName, validate, onChange) {\n return new TextField$1(name, fieldName, validate, onChange);\n}\n\nexport class TextAreaField$1 extends TextFieldBase$2 {\n constructor(name, fieldName, validate, onChange) {\n super(true, name, fieldName, (x) => x, (x_1) => x_1, validate, onChange);\n }\n}\n\nexport function TextAreaField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.TextAreaField`1\", [gen0], TextAreaField$1, TextFieldBase$2_$reflection(gen0, string_type));\n}\n\nexport function TextAreaField$1_$ctor_7EE3C92A(name, fieldName, validate, onChange) {\n return new TextAreaField$1(name, fieldName, validate, onChange);\n}\n\nfunction stringToOpt(s) {\n if (isNullOrWhiteSpace(s)) {\n return undefined;\n }\n else {\n return s;\n }\n}\n\nexport class TextFieldOpt$1 extends TextFieldBase$2 {\n constructor(name, fieldName, validate, onChange) {\n super(false, name, fieldName, (option) => defaultArg(option, \"\"), stringToOpt, validate, onChange);\n const this$ = new FSharpRef(defaultOf_1());\n this$.contents = this;\n this[\"init@275\"] = 1;\n GetterSetterBaseField$2__get_Field(this$.contents).IsRequired = false;\n }\n}\n\nexport function TextFieldOpt$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.TextFieldOpt`1\", [gen0], TextFieldOpt$1, TextFieldBase$2_$reflection(gen0, option_type(string_type)));\n}\n\nexport function TextFieldOpt$1_$ctor_773DF4C9(name, fieldName, validate, onChange) {\n return new TextFieldOpt$1(name, fieldName, validate, onChange);\n}\n\nexport class TextAreaFieldOpt$1 extends TextFieldBase$2 {\n constructor(name, fieldName, validate, onChange) {\n super(true, name, fieldName, (option) => defaultArg(option, \"\"), stringToOpt, validate, onChange);\n const this$ = new FSharpRef(defaultOf_1());\n this$.contents = this;\n this[\"init@283-1\"] = 1;\n GetterSetterBaseField$2__get_Field(this$.contents).IsRequired = false;\n }\n}\n\nexport function TextAreaFieldOpt$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.TextAreaFieldOpt`1\", [gen0], TextAreaFieldOpt$1, TextFieldBase$2_$reflection(gen0, option_type(string_type)));\n}\n\nexport function TextAreaFieldOpt$1_$ctor_773DF4C9(name, fieldName, validate, onChange) {\n return new TextAreaFieldOpt$1(name, fieldName, validate, onChange);\n}\n\nexport class PasswordField$1 extends JsGetterSetterBaseField$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, validate, onChange);\n }\n \"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.RenderValue\"(isDisabled, error, object, value) {\n const this$ = this;\n return input_1(ofArray([new Option_4(1, [new IInputType(1, [])]), new Option_4(2, [FieldValidationResult__ToColour_Z5463E381(error, new Color_IColor(4, []))]), new Option_4(12, [GetterSetterBaseField$2__get_Placeholder(this$)]), new Option_4(8, [value]), new Option_4(13, [(event) => {\n PasswordField$1__ProcessOnChange(this$, object, event);\n }]), new Option_4(4, [isDisabled])]));\n }\n}\n\nexport function PasswordField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.PasswordField`1\", [gen0], PasswordField$1, JsGetterSetterBaseField$2_$reflection(gen0, string_type));\n}\n\nexport function PasswordField$1_$ctor_7EE3C92A(name, fieldName, validate, onChange) {\n return new PasswordField$1(name, fieldName, validate, onChange);\n}\n\nfunction PasswordField$1__ProcessOnChange(this$, object, event) {\n let elem;\n GetterSetterBaseField$2__CallOnChange(this$, object, (elem = event.target, elem.value));\n}\n\nfunction inputWithButtons(isDisabled, incrementFunc, isValueEmpty, callOnChange, input, object, value) {\n const controlColumnDetails = singleton_1(new Option_5(0, [new Screen(0, []), new ISize(5, [])]));\n const getButton = (increment, icon) => button(ofArray([new Option_6(16, [isDisabled ? true : isValueEmpty(value)]), new Option_6(5, []), new Option_6(1, [new Size_ISize(0, [])]), new Option_6(18, [(event) => {\n event.preventDefault();\n const newValue = incrementFunc(increment, value);\n if (!isValueEmpty(newValue)) {\n callOnChange(object, newValue);\n }\n }])]), singleton_1(icon_1(singleton_1(new Option_7(0, [new Size_ISize(0, [])])), singleton_1(Fa_i(singleton_1(icon), [])))));\n return columns(singleton_1(new Option_8(4, [])), ofArray([column(controlColumnDetails, singleton_1(getButton(-1, new Fa_IconOption(11, [\"fas fa-minus\"])))), column(empty(), singleton_1(input)), column(controlColumnDetails, singleton_1(getButton(1, new Fa_IconOption(11, [\"fas fa-plus\"]))))]));\n}\n\nexport class NumericFieldBase$2 extends JsGetterSetterBaseField$2 {\n constructor(name, fieldName, fromValue, toValue, validate, onChange, emptyValues, incrementFunc) {\n super(name, fieldName, validate, onChange);\n this.fromValue = fromValue;\n this.toValue = toValue;\n this.emptyValues = emptyValues;\n this.incrementFunc = incrementFunc;\n this.withButtons = (this.incrementFunc != null);\n }\n \"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.RenderValue\"(isDisabled, error, object, value) {\n const this$ = this;\n const strValue = NumericFieldBase$2__IsValueEmpty_2B594(this$, value) ? \"\" : this$.fromValue(value);\n const input = input_1(ofArray([new Option_4(1, [new IInputType(7, [])]), new Option_4(2, [FieldValidationResult__ToColour_Z5463E381(error, new Color_IColor(4, []))]), new Option_4(12, [GetterSetterBaseField$2__get_Placeholder(this$)]), new Option_4(8, [strValue]), new Option_4(13, [(event) => {\n NumericFieldBase$2__ProcessOnChange(this$, object, value, event);\n }]), new Option_4(4, [isDisabled])]));\n return this$.withButtons ? inputWithButtons(isDisabled, uncurry2(value_15(map(curry2, this$.incrementFunc))), (value_1) => NumericFieldBase$2__IsValueEmpty_2B594(this$, value_1), (object_2, newValue) => {\n GetterSetterBaseField$2__CallOnChange(this$, object_2, newValue);\n }, input, object, value) : input;\n }\n}\n\nexport function NumericFieldBase$2_$reflection(gen0, gen1) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.NumericFieldBase`2\", [gen0, gen1], NumericFieldBase$2, JsGetterSetterBaseField$2_$reflection(gen0, gen1));\n}\n\nexport function NumericFieldBase$2_$ctor_73961A4A(name, fieldName, fromValue, toValue, validate, onChange, emptyValues, incrementFunc) {\n return new NumericFieldBase$2(name, fieldName, fromValue, toValue, validate, onChange, emptyValues, incrementFunc);\n}\n\nfunction NumericFieldBase$2__ProcessOnChangeEx(this$, object, currentValue, event, valueModifier) {\n const elem = event.target;\n if (isNullOrWhiteSpace(elem.value) && (FSharpSet__get_Count(this$.emptyValues) === 1)) {\n GetterSetterBaseField$2__CallOnChange(this$, object, head(this$.emptyValues));\n }\n else {\n const matchValue = this$.toValue(elem.value);\n if (matchValue.tag === 1) {\n }\n else {\n const finalValue = valueModifier(matchValue.fields[0]);\n if (!equals(finalValue, currentValue)) {\n GetterSetterBaseField$2__CallOnChange(this$, object, finalValue);\n }\n }\n }\n}\n\nfunction NumericFieldBase$2__ProcessOnChange(this$, object, currentValue, event) {\n event.preventDefault();\n NumericFieldBase$2__ProcessOnChangeEx(this$, object, currentValue, event, (x) => x);\n}\n\nfunction NumericFieldBase$2__IsValueEmpty_2B594(this$, value) {\n return contains(value, this$.emptyValues);\n}\n\nconst tryParseInt = (arg_1) => {\n let _arg;\n let outArg = 0;\n _arg = [tryParse(arg_1, 511, false, 32, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n return _arg[0] ? (new FSharpResult$2(0, [_arg[1]])) : (new FSharpResult$2(1, [\"Can\\'t parse int\"]));\n};\n\nconst tryParseIntOpt = (arg_1) => {\n let _arg;\n let outArg = 0;\n _arg = [tryParse(arg_1, 511, false, 32, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n return _arg[0] ? (new FSharpResult$2(0, [_arg[1]])) : (new FSharpResult$2(1, [\"Can\\'t parse int\"]));\n};\n\nconst tryParseDouble = (arg_1) => {\n let _arg;\n let outArg = 0;\n _arg = [tryParse_1(arg_1, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n return _arg[0] ? (new FSharpResult$2(0, [_arg[1]])) : (new FSharpResult$2(1, [\"Can\\'t parse double\"]));\n};\n\nconst tryParseDecimal = (arg_1) => {\n let _arg;\n let outArg = 0;\n _arg = [tryParse_1(arg_1, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n return _arg[0] ? (new FSharpResult$2(0, [new Decimal(_arg[1])])) : (new FSharpResult$2(1, [\"Can\\'t parse decimal\"]));\n};\n\nexport class IntField$1 extends NumericFieldBase$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, int32ToString, tryParseInt, validate, onChange, empty_2({\n Compare: comparePrimitives,\n }), undefined);\n }\n}\n\nexport function IntField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.IntField`1\", [gen0], IntField$1, NumericFieldBase$2_$reflection(gen0, int32_type));\n}\n\nexport function IntField$1_$ctor_1CFD88AD(name, fieldName, validate, onChange) {\n return new IntField$1(name, fieldName, validate, onChange);\n}\n\nexport class PositiveIntField$1 extends NumericFieldBase$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, int32ToString, tryParseInt, validate, onChange, ofSeq([0], {\n Compare: comparePrimitives,\n }), (step, value_1) => (value_1 + step));\n }\n}\n\nexport function PositiveIntField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.PositiveIntField`1\", [gen0], PositiveIntField$1, NumericFieldBase$2_$reflection(gen0, int32_type));\n}\n\nexport function PositiveIntField$1_$ctor_1CFD88AD(name, fieldName, validate, onChange) {\n return new PositiveIntField$1(name, fieldName, validate, onChange);\n}\n\nexport class PositiveIntOptField$1 extends NumericFieldBase$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, toString, tryParseIntOpt, validate, onChange, ofSeq([0], {\n Compare: compare,\n }), (step, option) => map((x_1) => (x_1 + step), option));\n }\n}\n\nexport function PositiveIntOptField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.PositiveIntOptField`1\", [gen0], PositiveIntOptField$1, NumericFieldBase$2_$reflection(gen0, option_type(int32_type)));\n}\n\nexport function PositiveIntOptField$1_$ctor_Z7DEF6452(name, fieldName, validate, onChange) {\n return new PositiveIntOptField$1(name, fieldName, validate, onChange);\n}\n\nfunction optToString(value) {\n if (value == null) {\n return \"\";\n }\n else {\n let copyOfStruct = value_15(value);\n return toString(copyOfStruct);\n }\n}\n\nfunction stringToOptInt(s) {\n if (isNullOrWhiteSpace(s)) {\n return new FSharpResult$2(0, [undefined]);\n }\n else {\n return Result_Map((Value) => Value, tryParseInt(s));\n }\n}\n\nexport class IntFieldOpt$1 extends NumericFieldBase$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, optToString, stringToOptInt, validate, onChange, empty_2({\n Compare: compare,\n }), undefined);\n const this$ = new FSharpRef(defaultOf_1());\n this$.contents = this;\n this[\"init@468-2\"] = 1;\n GetterSetterBaseField$2__get_Field(this$.contents).IsRequired = false;\n }\n}\n\nexport function IntFieldOpt$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.IntFieldOpt`1\", [gen0], IntFieldOpt$1, NumericFieldBase$2_$reflection(gen0, option_type(int32_type)));\n}\n\nexport function IntFieldOpt$1_$ctor_Z7DEF6452(name, fieldName, validate, onChange) {\n return new IntFieldOpt$1(name, fieldName, validate, onChange);\n}\n\nexport class FloatField$1 extends NumericFieldBase$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, (value) => value.toString(), tryParseDouble, validate, onChange, empty_2({\n Compare: comparePrimitives,\n }), undefined);\n }\n}\n\nexport function FloatField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.FloatField`1\", [gen0], FloatField$1, NumericFieldBase$2_$reflection(gen0, float64_type));\n}\n\nexport function FloatField$1_$ctor_Z618923D6(name, fieldName, validate, onChange) {\n return new FloatField$1(name, fieldName, validate, onChange);\n}\n\nexport class PositiveFloatField$1 extends NumericFieldBase$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, (value) => value.toString(), tryParseDouble, validate, onChange, ofSeq([0], {\n Compare: comparePrimitives,\n }), (step, value_1) => (value_1 + (step * 1)));\n }\n}\n\nexport function PositiveFloatField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.PositiveFloatField`1\", [gen0], PositiveFloatField$1, NumericFieldBase$2_$reflection(gen0, float64_type));\n}\n\nexport function PositiveFloatField$1_$ctor_Z618923D6(name, fieldName, validate, onChange) {\n return new PositiveFloatField$1(name, fieldName, validate, onChange);\n}\n\nfunction stringToOptDecimal(s) {\n if (isNullOrWhiteSpace(s)) {\n return new FSharpResult$2(0, [undefined]);\n }\n else {\n return Result_Map((Value) => Value, tryParseDecimal(s));\n }\n}\n\nexport class DecimalField$1 extends NumericFieldBase$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, toString_1, tryParseDecimal, validate, onChange, empty_2({\n Compare: compare_1,\n }), undefined);\n }\n}\n\nexport function DecimalField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.DecimalField`1\", [gen0], DecimalField$1, NumericFieldBase$2_$reflection(gen0, decimal_type));\n}\n\nexport function DecimalField$1_$ctor_Z1A3DC0EC(name, fieldName, validate, onChange) {\n return new DecimalField$1(name, fieldName, validate, onChange);\n}\n\nexport class DecimalFieldOpt$1 extends NumericFieldBase$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, toString, stringToOptDecimal, validate, onChange, empty_2({\n Compare: compare,\n }), undefined);\n }\n}\n\nexport function DecimalFieldOpt$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.DecimalFieldOpt`1\", [gen0], DecimalFieldOpt$1, NumericFieldBase$2_$reflection(gen0, option_type(decimal_type)));\n}\n\nexport function DecimalFieldOpt$1_$ctor_6EECF8B7(name, fieldName, validate, onChange) {\n return new DecimalFieldOpt$1(name, fieldName, validate, onChange);\n}\n\nexport class BaseDateTimeField$2 extends JsGetterSetterBaseField$2 {\n constructor(name, fieldName, convertToDate, convertFromDate, isSet, validate, onChange, formatString, inputFunc) {\n super(name, fieldName, validate, onChange);\n this.convertToDate = convertToDate;\n this.convertFromDate = convertFromDate;\n this.isSet = isSet;\n this.formatString = formatString;\n this.inputFunc = inputFunc;\n }\n \"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.RenderValue\"(isDisabled, error, object, date) {\n const this$ = this;\n const value = this$.isSet(date) ? singleton_1(new Option_4(8, [toString_2(toLocalTime(this$.convertToDate(date)), this$.formatString)])) : empty();\n return this$.inputFunc(append_1(ofArray([new Option_4(2, [FieldValidationResult__ToColour_Z5463E381(error, new Color_IColor(4, []))]), new Option_4(12, [GetterSetterBaseField$2__get_Placeholder(this$)]), new Option_4(13, [(event) => {\n BaseDateTimeField$2__ProcessOnChange(this$, object, event);\n }]), new Option_4(4, [isDisabled])]), value));\n }\n}\n\nexport function BaseDateTimeField$2_$reflection(gen0, gen1) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.BaseDateTimeField`2\", [gen0, gen1], BaseDateTimeField$2, JsGetterSetterBaseField$2_$reflection(gen0, gen1));\n}\n\nexport function BaseDateTimeField$2_$ctor_Z3AB08EEA(name, fieldName, convertToDate, convertFromDate, isSet, validate, onChange, formatString, inputFunc) {\n return new BaseDateTimeField$2(name, fieldName, convertToDate, convertFromDate, isSet, validate, onChange, formatString, inputFunc);\n}\n\nfunction BaseDateTimeField$2__ProcessOnChange(this$, object, event) {\n const elem = event.target;\n let parsed = minValue();\n if (!isNullOrWhiteSpace(elem.value) && tryParse_2(elem.value, new FSharpRef(() => parsed, (v) => {\n parsed = v;\n }))) {\n GetterSetterBaseField$2__CallOnChange(this$, object, this$.convertFromDate(toUniversalTime(parsed)));\n }\n else {\n console.log(some(`DATE change ignored: ${elem.value}; ${elem.valueAsDate}`));\n }\n}\n\nconst dateTimeFormatString = \"yyyy-MM-ddTHH:mm\";\n\nexport class DateTimeField$1 extends BaseDateTimeField$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, (x) => x, (x_1) => x_1, (_arg) => true, validate, onChange, dateTimeFormatString, (options) => input_1(cons(new Option_4(1, [new IInputType(2, [])]), options)));\n }\n}\n\nexport function DateTimeField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.DateTimeField`1\", [gen0], DateTimeField$1, BaseDateTimeField$2_$reflection(gen0, class_type(\"System.DateTime\")));\n}\n\nexport function DateTimeField$1_$ctor_4797505E(name, fieldName, validate, onChange) {\n return new DateTimeField$1(name, fieldName, validate, onChange);\n}\n\nexport class DateTimeOptField$1 extends BaseDateTimeField$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, value_15, (Value) => Value, (option_1) => (option_1 != null), validate, onChange, dateTimeFormatString, (options) => input_1(cons(new Option_4(1, [new IInputType(2, [])]), options)));\n }\n}\n\nexport function DateTimeOptField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.DateTimeOptField`1\", [gen0], DateTimeOptField$1, BaseDateTimeField$2_$reflection(gen0, option_type(class_type(\"System.DateTime\"))));\n}\n\nexport function DateTimeOptField$1_$ctor_86BCFBD(name, fieldName, validate, onChange) {\n return new DateTimeOptField$1(name, fieldName, validate, onChange);\n}\n\nexport class DateField$1 extends BaseDateTimeField$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, (x) => x, (x_1) => x_1, (_arg) => true, validate, onChange, \"yyyy-MM-dd\", (options) => input_1(cons(new Option_4(1, [new IInputType(3, [])]), options)));\n }\n}\n\nexport function DateField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.DateField`1\", [gen0], DateField$1, BaseDateTimeField$2_$reflection(gen0, class_type(\"System.DateTime\")));\n}\n\nexport function DateField$1_$ctor_4797505E(name, fieldName, validate, onChange) {\n return new DateField$1(name, fieldName, validate, onChange);\n}\n\nexport class DurationSecsFieldBase$1 extends JsGetterSetterBaseField$2 {\n constructor(name, fieldName, validate, onChange, withSeconds) {\n super(name, fieldName, validate, onChange);\n this.withSeconds = withSeconds;\n }\n \"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.RenderValue\"(isDisabled, error, object, durationSecs) {\n const this$ = this;\n const patternInput = splitSeconds(durationSecs);\n const now = toLocalTime(now_1());\n const dateStr = toString_2(toLocalTime(create(year(now), month(now), day(now), patternInput[0], patternInput[1], patternInput[2], 0, 2)), \"HH:mm:ss\");\n return inputWithButtons(isDisabled, (increment, oldValue) => DurationSecsFieldBase$1__incrementFunc(this$, increment, oldValue), (value) => DurationSecsFieldBase$1__isValueEmpty_Z524259A4(this$, value), (object_2, newValue) => {\n GetterSetterBaseField$2__CallOnChange(this$, object_2, newValue);\n }, input_1(cons(new Option_4(1, [new IInputType(5, [])]), toList(delay(() => append(singleton(new Option_4(2, [FieldValidationResult__ToColour_Z5463E381(error, new Color_IColor(4, []))])), delay(() => append(singleton(new Option_4(12, [GetterSetterBaseField$2__get_Placeholder(this$)])), delay(() => append(singleton(new Option_4(8, [dateStr])), delay(() => append(singleton(new Option_4(13, [(event) => {\n DurationSecsFieldBase$1__ProcessOnChange(this$, object, event);\n }])), delay(() => append(singleton(new Option_4(4, [isDisabled])), delay(() => (this$.withSeconds ? singleton(new Option_4(15, [singleton_1(new HTMLAttr(154, [1]))])) : empty_1()))))))))))))))), object, durationSecs);\n }\n}\n\nexport function DurationSecsFieldBase$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.DurationSecsFieldBase`1\", [gen0], DurationSecsFieldBase$1, JsGetterSetterBaseField$2_$reflection(gen0, int32_type));\n}\n\nexport function DurationSecsFieldBase$1_$ctor_5CEDACA7(name, fieldName, validate, onChange, withSeconds) {\n return new DurationSecsFieldBase$1(name, fieldName, validate, onChange, withSeconds);\n}\n\nfunction DurationSecsFieldBase$1__ProcessOnChange(this$, object, event) {\n const elem = event.target;\n if (!isNullOrWhiteSpace(elem.value) && !(elem.valueAsDate == null)) {\n const newDate = parse(elem.value);\n GetterSetterBaseField$2__CallOnChange(this$, object, (((hour(newDate) * 60) + minute(newDate)) * 60) + second(newDate));\n }\n}\n\nexport function DurationSecsFieldBase$1__incrementFunc(this$, increment, oldValue) {\n return oldValue + ((this$.withSeconds ? 15 : 60) * increment);\n}\n\nexport function DurationSecsFieldBase$1__isValueEmpty_Z524259A4(this$, value) {\n return value < 0;\n}\n\nexport class DurationSecsField$1 extends DurationSecsFieldBase$1 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, validate, onChange, false);\n }\n}\n\nexport function DurationSecsField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.DurationSecsField`1\", [gen0], DurationSecsField$1, DurationSecsFieldBase$1_$reflection(gen0));\n}\n\nexport function DurationSecsField$1_$ctor_1CFD88AD(name, fieldName, validate, onChange) {\n return new DurationSecsField$1(name, fieldName, validate, onChange);\n}\n\nexport class DurationSecsFieldWithSeconds$1 extends DurationSecsFieldBase$1 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, validate, onChange, true);\n }\n}\n\nexport function DurationSecsFieldWithSeconds$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.DurationSecsFieldWithSeconds`1\", [gen0], DurationSecsFieldWithSeconds$1, DurationSecsFieldBase$1_$reflection(gen0));\n}\n\nexport function DurationSecsFieldWithSeconds$1_$ctor_1CFD88AD(name, fieldName, validate, onChange) {\n return new DurationSecsFieldWithSeconds$1(name, fieldName, validate, onChange);\n}\n\nexport class LocationField$1 extends JsGetterSetterBaseField$2 {\n constructor(name, fieldName, suggestions, onSuggestionChosen, validate, onChange) {\n super(name, fieldName, validate, onChange);\n this.suggestions = suggestions;\n this.onSuggestionChosen = onSuggestionChosen;\n this.maxNameLength = 20;\n }\n \"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.RenderValue\"(isDisabled, error, object, location) {\n const this$ = this;\n const currentLocation = defaultArg(location, \"\");\n const children = toList(delay(() => append(singleton(input_1(ofArray([new Option_4(1, [new IInputType(0, [])]), new Option_4(3, [Config_placeLookupId]), new Option_4(2, [FieldValidationResult__ToColour_Z5463E381(error, new Color_IColor(4, []))]), new Option_4(12, [GetterSetterBaseField$2__get_Placeholder(this$)]), new Option_4(8, [currentLocation]), new Option_4(13, [(event) => {\n LocationField$1__ProcessOnChange(this$, object, event);\n }]), new Option_4(4, [isDisabled])]))), delay(() => (!isEmpty(this$.suggestions) ? singleton(list_5(empty(), map_1((suggestion) => LocationField$1__RenderSuggestion(this$, isDisabled, currentLocation, suggestion), this$.suggestions))) : empty_1())))));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n }\n \"Omnicv.Client.Common.Components.FlexForm.BaseField`1.Validate2B595\"(object) {\n const this$ = this;\n return FieldValidationResult__Merge_30561432((GetterSetterBaseField$2__GetValue_2B595(this$, object) == null) ? (new FieldValidationResult(1, [\"Location value is not set\"])) : (new FieldValidationResult(0, [])), super[\"Omnicv.Client.Common.Components.FlexForm.BaseField`1.Validate2B595\"](object));\n }\n}\n\nexport function LocationField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.LocationField`1\", [gen0], LocationField$1, JsGetterSetterBaseField$2_$reflection(gen0, option_type(string_type)));\n}\n\nexport function LocationField$1_$ctor_455E8BE1(name, fieldName, suggestions, onSuggestionChosen, validate, onChange) {\n return new LocationField$1(name, fieldName, suggestions, onSuggestionChosen, validate, onChange);\n}\n\nfunction LocationField$1__ProcessOnChange(this$, object, event) {\n let value;\n const elem = event.target;\n GetterSetterBaseField$2__CallOnChange(this$, object, (value = elem.value, isNullOrWhiteSpace(value) ? undefined : value));\n}\n\nfunction LocationField$1__RenderSuggestion(this$, isDisabled, currentLocation, suggestion) {\n const name = suggestion.Name;\n if (currentLocation !== name) {\n let distance;\n if (suggestion.DistanceFromCurrent != null) {\n const dist = ~~value_15(suggestion.DistanceFromCurrent) | 0;\n distance = ((dist > 1000) ? \": >1km\" : (`: ${dist}m`));\n }\n else {\n distance = \"\";\n }\n return button(ofArray([new Option_6(0, [isDisabled ? (new Color_IColor(14, [])) : (new Color_IColor(4, []))]), new Option_6(1, [new Size_ISize(0, [])]), new Option_6(16, [isDisabled]), new Option_6(18, [(event) => {\n event.preventDefault();\n this$.onSuggestionChosen(suggestion);\n }])]), singleton_1(`${(name.length > this$.maxNameLength) ? (substring(name, 0, 20) + \"…\") : name}${distance}`));\n }\n else {\n return defaultOf();\n }\n}\n\nfunction validateChoice(choices, nextValidate, value) {\n if (!exists_1((pair) => equals(value, pair[0]), choices)) {\n return `Value ${value} is not a valid choice`;\n }\n else {\n return nextValidate(value);\n }\n}\n\nexport class SelectField$2 extends JsGetterSetterBaseField$2 {\n constructor(name, fieldName, choices, convert_1, validate, onChange) {\n super(name, fieldName, (value) => validateChoice(choices, validate, value), onChange);\n this.name_2 = name;\n this.choices = choices;\n this.convert = convert_1;\n }\n \"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.RenderValue\"(isDisabled, error, object, value) {\n let props, copyOfStruct;\n const this$ = this;\n const options = valuesToSelectOptions(this$.choices, this$.name_2);\n return select(ofArray([new Option_9(7, [FieldValidationResult__ToColour_Z5463E381(error, new Color_IColor(4, []))]), new Option_9(6, [isDisabled])]), singleton_1((props = [new DOMAttr(9, [(event) => {\n SelectField$2__ProcessOnChange(this$, object, event);\n }]), new HTMLAttr(161, [(copyOfStruct = value, toString(copyOfStruct))])], react.createElement(\"select\", keyValueList(props, 1), ...options))));\n }\n}\n\nexport function SelectField$2_$reflection(gen0, gen1) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.SelectField`2\", [gen0, gen1], SelectField$2, JsGetterSetterBaseField$2_$reflection(gen0, gen1));\n}\n\nexport function SelectField$2_$ctor_Z7732D262(name, fieldName, choices, convert_1, validate, onChange) {\n return new SelectField$2(name, fieldName, choices, convert_1, validate, onChange);\n}\n\nfunction SelectField$2__ProcessOnChange(this$, object, event) {\n const elem = event.target;\n GetterSetterBaseField$2__CallOnChange(this$, object, this$.convert(elem.value));\n}\n\nexport class RadioField$2 extends JsGetterSetterBaseField$2 {\n constructor(name, fieldName, choices, validate, onChange) {\n super(name, fieldName, (value) => validateChoice(choices, validate, value), onChange);\n this.choices = choices;\n }\n \"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.RenderValue\"(isDisabled, error, object, value) {\n const this$ = this;\n const y = map_1((tupledArg) => RadioField$2__RenderChoice(this$, isDisabled, object, value, tupledArg[0], tupledArg[1]), this$.choices);\n return div(singleton_1(new Option_10(12, [singleton_1(new Modifier_IModifier(1, [FieldValidationResult__ToColour_Z5463E381(error, new Color_IColor(0, []))]))])), y);\n }\n}\n\nexport function RadioField$2_$reflection(gen0, gen1) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.RadioField`2\", [gen0, gen1], RadioField$2, JsGetterSetterBaseField$2_$reflection(gen0, gen1));\n}\n\nexport function RadioField$2_$ctor_14949C87(name, fieldName, choices, validate, onChange) {\n return new RadioField$2(name, fieldName, choices, validate, onChange);\n}\n\nfunction RadioField$2__ProcessOnChange(this$, object, newValue, _event) {\n GetterSetterBaseField$2__CallOnChange(this$, object, newValue);\n}\n\nfunction RadioField$2__RenderChoice(this$, isDisabled, object, currentValue, optionValue, caption) {\n let copyOfStruct;\n return radioInline(ofArray([new Option_11(6, [equals(currentValue, optionValue)]), new Option_11(14, [(copyOfStruct = optionValue, toString(copyOfStruct))]), new Option_11(13, [`radio-${optionValue}`]), new Option_11(11, [(_event) => {\n RadioField$2__ProcessOnChange(this$, object, optionValue, _event);\n }]), new Option_11(7, [isDisabled])]), singleton_1(` ${caption} `));\n}\n\nexport class CheckboxField$1 extends JsGetterSetterBaseField$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, validate, onChange);\n }\n \"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.RenderValue\"(isDisabled, _error, object, value) {\n const this$ = this;\n return checkbox(empty(), ofArray([input_2(singleton_1(new Common_GenericOption(1, [ofArray([new HTMLAttr(62, [value]), new DOMAttr(9, [(event) => {\n CheckboxField$1__ProcessOnChange(this$, object, event);\n }]), new HTMLAttr(79, [isDisabled])])]))), \"\"]));\n }\n}\n\nexport function CheckboxField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.CheckboxField`1\", [gen0], CheckboxField$1, JsGetterSetterBaseField$2_$reflection(gen0, bool_type));\n}\n\nexport function CheckboxField$1_$ctor_Z387AD5E5(name, fieldName, validate, onChange) {\n return new CheckboxField$1(name, fieldName, validate, onChange);\n}\n\nfunction CheckboxField$1__ProcessOnChange(this$, object, event) {\n const elem = event.target;\n GetterSetterBaseField$2__CallOnChange(this$, object, elem.checked);\n}\n\nexport class TagsField$1 extends JsGetterSetterBaseField$2 {\n constructor(name, fieldName, tagsPredictionValues, validate, onChange) {\n super(name, fieldName, validate, onChange);\n this.tagsPredictionValues = tagsPredictionValues;\n }\n \"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.RenderValue\"(_isDisabled, _error, object, rawValue) {\n let elems_1;\n const this$ = this;\n const tags = toClientListView(rawValue);\n const onNewValue = (newTag) => {\n const matchValue = tryFind((x_2) => (x_2 === newTag), tags);\n if (matchValue == null) {\n GetterSetterBaseField$2__CallOnChange(this$, object, concatToServer(append_1(tags, singleton_1(newTag))));\n }\n };\n let autocompleteInput;\n const inputProperties = createObj(ofArray([[\"placeholder\", \"Search for a tag\"], [\"onChange\", onNewValue], selectSearch_options_113CE11B(map_1((x_1) => (new SelectOption(0, [new SelectItem(x_1, x_1, false)])), List_except(tags, this$.tagsPredictionValues, {\n Equals: (x, y) => (x === y),\n GetHashCode: stringHash,\n }))), [\"search\", true], selectSearch_filterOptions_Z7A2530AD((item, input) => {\n if (!(item.value.toLocaleLowerCase().indexOf(input.toLocaleLowerCase()) >= 0)) {\n if (input.endsWith(\",\")) {\n onNewValue(substring(input, 0, input.length - 1));\n return false;\n }\n else {\n return false;\n }\n }\n else {\n return true;\n }\n })]));\n autocompleteInput = reactApi_1.createElement(react_select_search, Object.assign({}, Interop_defaultProps, inputProperties));\n const headerTag = div_1(empty(), singleton_1(createElement(\"div\", createObj(Helpers_combineClasses(\"tags\", singleton_1((elems_1 = [createElement(\"span\", createObj(Helpers_combineClasses(\"tag\", ofArray([[\"className\", \"is-warning\"], [\"children\", \"Tags\"]]))))], [\"children\", reactApi.Children.toArray(Array.from(elems_1))])))))));\n const children = toList(delay(() => append(singleton(autocompleteInput), delay(() => (!isEmpty(tags) ? singleton(div(ofArray([new Option_10(4, []), new Option_10(7, []), new Option_10(12, [singleton_1(new Modifier_IModifier(29, [new Spacing_TypeAndDirection(1, []), new Spacing_Amount(3, [])]))])]), cons(headerTag, map_1((tag) => {\n let elems;\n return div_1(empty(), singleton_1(createElement(\"div\", createObj(Helpers_combineClasses(\"tags\", ofArray([[\"className\", \"has-addons\"], (elems = [createElement(\"span\", createObj(Helpers_combineClasses(\"tag\", ofArray([[\"className\", \"is-info\"], [\"children\", tag]])))), createElement(\"span\", createObj(Helpers_combineClasses(\"tag\", ofArray([[\"className\", \"is-delete\"], [\"onClick\", (event) => {\n event.preventDefault();\n GetterSetterBaseField$2__CallOnChange(this$, object, concatToServer(List_except([tag], tags, {\n Equals: (x_3, y_1) => (x_3 === y_1),\n GetHashCode: stringHash,\n })));\n }]]))))], [\"children\", reactApi.Children.toArray(Array.from(elems))])]))))));\n }, tags)))) : empty_1())))));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n }\n}\n\nexport function TagsField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.TagsField`1\", [gen0], TagsField$1, JsGetterSetterBaseField$2_$reflection(gen0, string_type));\n}\n\nexport function TagsField$1_$ctor_32D33D73(name, fieldName, tagsPredictionValues, validate, onChange) {\n return new TagsField$1(name, fieldName, tagsPredictionValues, validate, onChange);\n}\n\nexport class RatingField$1 extends JsGetterSetterBaseField$2 {\n constructor(name, fieldName, validate, onChange) {\n super(name, fieldName, validate, onChange);\n }\n \"Omnicv.Client.Common.Components.FlexForm.GetterSetterBaseField`2.RenderValue\"(isDisabled, _error, object, rawValue) {\n const this$ = this;\n const converted = rawValue / 2;\n return ratingStars(append_1(ofArray([new RatingStarsProps(1, [5]), new RatingStarsProps(4, [24]), new RatingStarsProps(3, [true]), new RatingStarsProps(2, [!isDisabled]), new RatingStarsProps(6, [(newValue) => {\n GetterSetterBaseField$2__CallOnChange(this$, object, (newValue * 2) & 0xFF);\n }])]), (converted > 0) ? singleton_1(new RatingStarsProps(5, [converted])) : empty()));\n }\n}\n\nexport function RatingField$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.RatingField`1\", [gen0], RatingField$1, JsGetterSetterBaseField$2_$reflection(gen0, uint8_type));\n}\n\nexport function RatingField$1_$ctor_B10D3B5(name, fieldName, validate, onChange) {\n return new RatingField$1(name, fieldName, validate, onChange);\n}\n\nexport class FlexFormFields$1 {\n constructor(onChange, callbackOnFieldAdd) {\n this.onChange = onChange;\n this.callbackOnFieldAdd = callbackOnFieldAdd;\n this.fields = [];\n }\n}\n\nexport function FlexFormFields$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.FlexFormFields`1\", [gen0], FlexFormFields$1);\n}\n\nexport function FlexFormFields$1_$ctor_Z63A200CD(onChange, callbackOnFieldAdd) {\n return new FlexFormFields$1(onChange, callbackOnFieldAdd);\n}\n\nexport class FlexFormFieldsGroup$1 extends FlexFormFields$1 {\n constructor(onChange, label) {\n super(onChange);\n this.label = label;\n }\n Render(isDisabled, object) {\n const this$ = this;\n return div(singleton_1(new Option_10(8, [])), toList(delay(() => append((this$.label != null) ? singleton(label_2(empty(), singleton_1(value_15(this$.label)))) : empty_1(), delay(() => singleton(body(empty(), FlexFormFields$1__Render(this$, isDisabled, object))))))));\n }\n Validate(object) {\n const this$ = this;\n return FlexFormFields$1__ValidateAll_2B595(this$, object);\n }\n}\n\nexport function FlexFormFieldsGroup$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.FlexFormFieldsGroup`1\", [gen0], FlexFormFieldsGroup$1, FlexFormFields$1_$reflection(gen0));\n}\n\nexport function FlexFormFieldsGroup$1_$ctor_38CD3B67(onChange, label) {\n return new FlexFormFieldsGroup$1(onChange, label);\n}\n\nfunction FlexFormFields$1__AddField_6235DF45(this$, field) {\n if (this$.callbackOnFieldAdd != null) {\n value_15(this$.callbackOnFieldAdd)(field);\n }\n void (this$.fields.push(field));\n}\n\nexport function FlexFormFields$1__ValidateAll_2B595(this$, value) {\n return mergeResults(map_2((field) => field.Validate(value), this$.fields));\n}\n\nexport function FlexFormFields$1__CanSubmit_2B595(this$, value) {\n return mergeResults(map_2((field) => field.Validate(value), this$.fields));\n}\n\nfunction FlexFormFields$1__BuildAddField(this$, fieldBuilder, fieldName, validate, caption0, onChange0, help, required) {\n const field = fieldBuilder(defaultArg(caption0, fieldName), fieldName, validate, defaultArg(onChange0, this$.onChange));\n if (help != null) {\n field.Help = help;\n }\n if (required != null) {\n field.IsRequired = value_15(required);\n }\n FlexFormFields$1__AddField_6235DF45(this$, field);\n return this$;\n}\n\nexport function FlexFormFields$1__AddCustom_693A43B3(this$, fieldName, customRender) {\n FlexFormFields$1__AddField_6235DF45(this$, CustomField$1_$ctor_693A43B3(fieldName, customRender));\n return this$;\n}\n\nexport function FlexFormFields$1__AddText_Z44011C05(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, TextField$1_$ctor_7EE3C92A, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddTextOpt_Z44636648(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, TextFieldOpt$1_$ctor_773DF4C9, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddTextArea_Z44011C05(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, TextAreaField$1_$ctor_7EE3C92A, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddTextAreaOpt_Z44636648(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, TextAreaFieldOpt$1_$ctor_773DF4C9, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddPassword_Z44011C05(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, PasswordField$1_$ctor_7EE3C92A, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddInt_ZAAC24(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, IntField$1_$ctor_1CFD88AD, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddPositiveInt_ZAAC24(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, PositiveIntField$1_$ctor_1CFD88AD, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddPositiveIntOpt_414042FF(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, PositiveIntOptField$1_$ctor_Z7DEF6452, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddIntOpt_414042FF(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, IntFieldOpt$1_$ctor_Z7DEF6452, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddFloat_1D6F52FB(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, FloatField$1_$ctor_Z618923D6, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddDecimal_7B82A45(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, DecimalField$1_$ctor_Z1A3DC0EC, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddDecimalOpt_Z2D27E1FA(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, DecimalFieldOpt$1_$ctor_6EECF8B7, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddPositiveFloat_1D6F52FB(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, PositiveFloatField$1_$ctor_Z618923D6, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddDateTime_2636DDCF(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, DateTimeField$1_$ctor_4797505E, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddDateTimeOpt_C9F34CC(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, DateTimeOptField$1_$ctor_86BCFBD, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddDate_2636DDCF(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, DateField$1_$ctor_4797505E, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddRating_Z716E223C(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, RatingField$1_$ctor_B10D3B5, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddDurationSecs_ZAAC24(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, DurationSecsField$1_$ctor_1CFD88AD, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddDurationSecsWithSeconds_ZAAC24(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, DurationSecsFieldWithSeconds$1_$ctor_1CFD88AD, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddTags_Z63D88B1E(this$, fieldName, validate, tagsPredictionValues, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, (caption, fieldName_1, validate_1, onChange) => TagsField$1_$ctor_32D33D73(caption, fieldName_1, tagsPredictionValues, validate_1, onChange), fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddLocation_Z52938230(this$, fieldName, validate, suggestions, onSuggestionChosen, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, (caption, fieldName_1, validate_1, onChange) => LocationField$1_$ctor_455E8BE1(caption, fieldName_1, suggestions, onSuggestionChosen, validate_1, onChange), fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddSelection_158231B6(this$, fieldName, choices, convert_1, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, (caption, fieldName_1, validate_1, onChange) => SelectField$2_$ctor_Z7732D262(caption, fieldName_1, choices, convert_1, validate_1, onChange), fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddSelection_Z70244BEA(this$, fieldName, choices, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, (caption, fieldName_1, validate_1, onChange) => SelectField$2_$ctor_Z7732D262(caption, fieldName_1, choices, (value) => stringToEnum(choices, value), validate_1, onChange), fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddRadiosInline_Z70244BEA(this$, fieldName, choices, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, (caption, fieldName_1, validate_1, onChange) => RadioField$2_$ctor_14949C87(caption, fieldName_1, choices, validate_1, onChange), fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddCheckbox_264AA22A(this$, fieldName, validate, caption0, onChange0, help, required) {\n return FlexFormFields$1__BuildAddField(this$, CheckboxField$1_$ctor_Z387AD5E5, fieldName, validate, caption0, onChange0, help, required);\n}\n\nexport function FlexFormFields$1__AddGroup_6DFDD678(this$, label) {\n const group = FlexFormFieldsGroup$1_$ctor_38CD3B67(this$.onChange, label);\n FlexFormFields$1__AddField_6235DF45(this$, group);\n return group;\n}\n\nexport function FlexFormFields$1__Render(this$, isDisabled, value) {\n return ofSeq_1(map_2((field) => field.Render(isDisabled, value), this$.fields));\n}\n\nexport class FlexFormState extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Idle\", \"Loading\", \"Error\", \"Success\"];\n }\n}\n\nexport function FlexFormState_$reflection() {\n return union_type(\"Omnicv.Client.Common.Components.FlexForm.FlexFormState\", [], FlexFormState, () => [[], [], [[\"Item\", string_type]], [[\"Item\", string_type]]]);\n}\n\nexport function FlexFormState__CanSubmit(this$) {\n switch (this$.tag) {\n case 0:\n case 2:\n return true;\n default:\n return false;\n }\n}\n\nexport function FlexFormState__IsInProgress(this$) {\n if (this$.tag === 1) {\n return true;\n }\n else {\n return false;\n }\n}\n\nexport class FlexFormBase$1 {\n constructor(submit, cancel) {\n this.submit = submit;\n this.cancel = cancel;\n this[\"State@\"] = (new FlexFormState(0, []));\n this[\"SubmitCaption@\"] = \"Submit\";\n this[\"CancelCaption@\"] = \"Cancel\";\n }\n}\n\nexport function FlexFormBase$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.FlexFormBase`1\", [gen0], FlexFormBase$1);\n}\n\nexport function FlexFormBase$1_$ctor_Z285F6596(submit, cancel) {\n return new FlexFormBase$1(submit, cancel);\n}\n\nexport function FlexFormBase$1__get_State(__) {\n return __[\"State@\"];\n}\n\nexport function FlexFormBase$1__set_State_Z3615493C(__, v) {\n __[\"State@\"] = v;\n}\n\nexport function FlexFormBase$1__get_SubmitCaption(__) {\n return __[\"SubmitCaption@\"];\n}\n\nexport function FlexFormBase$1__set_SubmitCaption_Z721C83C5(__, v) {\n __[\"SubmitCaption@\"] = v;\n}\n\nexport function FlexFormBase$1__get_CancelCaption(__) {\n return __[\"CancelCaption@\"];\n}\n\nexport function FlexFormBase$1__set_CancelCaption_Z721C83C5(__, v) {\n __[\"CancelCaption@\"] = v;\n}\n\nexport function FlexFormBase$1__TriggerSubmit_2B595(this$, value) {\n const matchValue = this$[\"Omnicv.Client.Common.Components.FlexForm.FlexFormBase`1.CanSubmit2B595\"](value);\n switch (matchValue.tag) {\n case 2: {\n break;\n }\n case 1: {\n if (window.confirm(`Are you sure you want to submit? Warnings:\n${matchValue.fields[0]}`)) {\n this$.submit(value);\n }\n break;\n }\n default:\n this$.submit(value);\n }\n}\n\nexport function FlexFormBase$1__SetState(this$, isLoading, errorOpt) {\n if (isLoading) {\n FlexFormBase$1__set_State_Z3615493C(this$, new FlexFormState(1, []));\n }\n else {\n FlexFormBase$1__SetErrorOpt_6DFDD678(this$, errorOpt);\n }\n}\n\nexport function FlexFormBase$1__SetErrorOpt_6DFDD678(this$, value) {\n if (value == null) {\n }\n else {\n FlexFormBase$1__set_State_Z3615493C(this$, new FlexFormState(2, [value]));\n }\n}\n\nexport function FlexFormBase$1__Render_2B595(this$, value) {\n const isInProgress = FlexFormState__IsInProgress(FlexFormBase$1__get_State(this$));\n const buttons = toList(delay(() => {\n const cannotSubmit = FieldValidationResult__IsErrorResult(this$[\"Omnicv.Client.Common.Components.FlexForm.FlexFormBase`1.CanSubmit2B595\"](value));\n return singleton(div(singleton_1(new Option_10(4, [])), toList(delay(() => append(singleton(div_1(empty(), singleton_1(button(ofArray([new Option_6(0, [new Color_IColor(4, [])]), new Option_6(16, [cannotSubmit ? true : isInProgress]), new Option_6(18, [(arg_1) => {\n ((event) => {\n event.preventDefault();\n FlexFormBase$1__TriggerSubmit_2B595(this$, value);\n })(arg_1);\n }])]), singleton_1(FlexFormBase$1__get_SubmitCaption(this$)))))), delay(() => ((this$.cancel != null) ? singleton(div_1(empty(), singleton_1(button(ofArray([new Option_6(0, [new Color_IColor(9, [])]), new Option_6(16, [isInProgress]), new Option_6(18, [(arg_2) => {\n arg_2.preventDefault();\n value_15(this$.cancel)();\n }])]), singleton_1(FlexFormBase$1__get_CancelCaption(this$)))))) : empty_1())))))));\n }));\n const children = append_1(this$[\"Omnicv.Client.Common.Components.FlexForm.FlexFormBase`1.RenderFields\"](isInProgress, value), buttons);\n return react.createElement(\"form\", {}, ...children);\n}\n\nexport class FlexForm$1 extends FlexFormBase$1 {\n constructor(onChange, submit, cancel) {\n super(submit, cancel);\n this[\"Fields@\"] = FlexFormFields$1_$ctor_Z63A200CD(onChange);\n }\n \"Omnicv.Client.Common.Components.FlexForm.FlexFormBase`1.RenderFields\"(isDisabled, value) {\n const this$ = this;\n return FlexFormFields$1__Render(FlexForm$1__get_Fields(this$), isDisabled, value);\n }\n \"Omnicv.Client.Common.Components.FlexForm.FlexFormBase`1.CanSubmit2B595\"(value) {\n const this$ = this;\n return !FlexFormState__CanSubmit(FlexFormBase$1__get_State(this$)) ? (new FieldValidationResult(2, [`State ${FlexFormBase$1__get_State(this$)} does not allow submit`])) : FlexFormFields$1__CanSubmit_2B595(FlexForm$1__get_Fields(this$), value);\n }\n}\n\nexport function FlexForm$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.FlexForm`1\", [gen0], FlexForm$1, FlexFormBase$1_$reflection(gen0));\n}\n\nexport function FlexForm$1_$ctor_2ABDDB55(onChange, submit, cancel) {\n return new FlexForm$1(onChange, submit, cancel);\n}\n\nexport function FlexForm$1__get_Fields(__) {\n return __[\"Fields@\"];\n}\n\nexport class FlexFormTuple$2 extends FlexFormBase$1 {\n constructor(onChangeFst, onChangeSnd, submit, cancel) {\n super(submit, cancel);\n let f2, objectArg, f2_1, objectArg_1;\n this.allFields = [];\n this[\"FieldsFst@\"] = FlexFormFields$1_$ctor_Z63A200CD(onChangeFst, (f2 = ((objectArg = this.allFields, (item) => {\n void (objectArg.push(item));\n })), (arg) => {\n f2(new FSharpChoice$2(0, [arg]));\n }));\n this[\"FieldsSnd@\"] = FlexFormFields$1_$ctor_Z63A200CD(onChangeSnd, (f2_1 = ((objectArg_1 = this.allFields, (item_1) => {\n void (objectArg_1.push(item_1));\n })), (arg_1) => {\n f2_1(new FSharpChoice$2(1, [arg_1]));\n }));\n }\n \"Omnicv.Client.Common.Components.FlexForm.FlexFormBase`1.RenderFields\"(isDisabled, value) {\n const this$ = this;\n return ofSeq_1(map_2((field) => {\n if (field.tag === 1) {\n return field.fields[0].Render(isDisabled, value[1]);\n }\n else {\n return field.fields[0].Render(isDisabled, value[0]);\n }\n }, this$.allFields));\n }\n \"Omnicv.Client.Common.Components.FlexForm.FlexFormBase`1.CanSubmit2B595\"(value) {\n const this$ = this;\n return !FlexFormState__CanSubmit(FlexFormBase$1__get_State(this$)) ? (new FieldValidationResult(2, [`State ${FlexFormBase$1__get_State(this$)} does not allow submit`])) : FieldValidationResult__Merge_30561432(FlexFormFields$1__CanSubmit_2B595(FlexFormTuple$2__get_FieldsFst(this$), value[0]), FlexFormFields$1__CanSubmit_2B595(FlexFormTuple$2__get_FieldsSnd(this$), value[1]));\n }\n}\n\nexport function FlexFormTuple$2_$reflection(gen0, gen1) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.FlexFormTuple`2\", [gen0, gen1], FlexFormTuple$2, FlexFormBase$1_$reflection(tuple_type(gen0, gen1)));\n}\n\nexport function FlexFormTuple$2_$ctor_5AE4FFF0(onChangeFst, onChangeSnd, submit, cancel) {\n return new FlexFormTuple$2(onChangeFst, onChangeSnd, submit, cancel);\n}\n\nexport function FlexFormTuple$2__get_FieldsFst(__) {\n return __[\"FieldsFst@\"];\n}\n\nexport function FlexFormTuple$2__get_FieldsSnd(__) {\n return __[\"FieldsSnd@\"];\n}\n\nexport function noValidation(_arg) {\n return undefined;\n}\n\nfunction renderCurrentEventInfoDetails(_arg, eventInfo) {\n const smallText = (isBold, text) => Text_span(singleton_1(new Common_GenericOption(2, [toList(delay(() => append(singleton(new Modifier_IModifier(3, [new Screen(0, []), new TextSize_Option(6, [])])), delay(() => (isBold ? singleton(new Modifier_IModifier(2, [new TextWeight_Option(3, [])])) : singleton(new Modifier_IModifier(7, [new TextTransform_Option(3, [])])))))))])), singleton_1(text));\n const space = () => Text_span(empty(), singleton_1(\" \"));\n return container(singleton_1(new Option_12(5, [singleton_1(new Modifier_IModifier(31, [new FlexWrap_Option(1, [])]))])), toList(delay(() => append(singleton(smallText(true, \"TZ\")), delay(() => append(singleton(space()), delay(() => append(singleton(smallText(false, EventInfo__DisplayTimeZone(eventInfo))), delay(() => append(singleton(space()), delay(() => {\n let clientDate;\n const currentTz = common.getTimezoneName();\n const clientTz = EventInfo__GetClientTz(eventInfo);\n let result;\n if ((clientTz != null) && (currentTz !== value_15(clientTz))) {\n const arg_1 = value_15(clientTz);\n result = common.dateToLuxonTz(eventInfo.EventTimestamp, arg_1);\n }\n else {\n result = common.dateToLuxonTz(eventInfo.EventTimestamp, currentTz);\n }\n clientDate = result.toRFC2822();\n let locationDate;\n const locationTz = EventInfo__GetLocationTz(eventInfo);\n if (locationTz != null) {\n let result_1;\n const arg_5 = value_15(locationTz);\n result_1 = common.dateToLuxonTz(eventInfo.EventTimestamp, arg_5);\n locationDate = result_1.toRFC2822();\n }\n else {\n locationDate = undefined;\n }\n return append((clientDate != null) ? append(singleton(smallText(false, value_15(clientDate))), delay(() => singleton(space()))) : empty_1(), delay(() => append((!equals(locationDate, clientDate) && (locationDate != null)) ? append((clientDate != null) ? append(singleton(smallText(false, \"/\")), delay(() => singleton(space()))) : empty_1(), delay(() => append(singleton(smallText(false, value_15(locationDate))), delay(() => singleton(space()))))) : empty_1(), delay(() => append(singleton(smallText(true, \"Loc\")), delay(() => append(singleton(space()), delay(() => {\n const location = StringBuilder_$ctor();\n return append((eventInfo.PlaceName != null) ? ((void StringBuilder__Append_Z721C83C5(location, value_15(eventInfo.PlaceName)), empty_1())) : empty_1(), delay(() => append(((eventInfo.Latitude != null) && (eventInfo.Longitude != null)) ? append((StringBuilder__get_Length(location) > 0) ? ((void StringBuilder__Append_Z721C83C5(location, \" | \"), empty_1())) : empty_1(), delay(() => {\n StringBuilder__Append_Z721C83C5(StringBuilder__Append_Z721C83C5(location, format(\"Lat: {0:0.######}\", value_15(eventInfo.Latitude))), format(\", long: {0:0.######}\", value_15(eventInfo.Longitude)));\n return empty_1();\n })) : empty_1(), delay(() => singleton(smallText(false, toString(location)))))));\n }))))))));\n })))))))))));\n}\n\nfunction renderSetStrictBounds(isDisabled, current, onChange) {\n const children_2 = toList(delay(() => append(singleton(createElement(\"strong\", {\n children: reactApi.Children.toArray([\"Strict bounds: \"]),\n })), delay(() => collect((b) => singleton(radioInline(ofArray([new Option_11(6, [current === b]), new Option_11(14, [`StrictBoundsLocation${b}`]), new Option_11(13, [`radio-StrictBoundsLocation${b}`]), new Option_11(11, [(_arg) => {\n onChange(!current);\n }]), new Option_11(7, [isDisabled])]), singleton_1(` ${b} `))), [true, false])))));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_2)),\n });\n}\n\nexport function addEventInfoToFlexForm(form, eventInfo, suggestions) {\n FlexFormFields$1__AddLocation_Z52938230(FlexFormFields$1__AddDateTime_2636DDCF(FlexFormFields$1__AddGroup_6DFDD678(FlexFormTuple$2__get_FieldsFst(form)), \"EventTimestamp\", noValidation, \"Timestamp\"), \"PlaceName\", noValidation, suggestions, (suggestion) => {\n triggerUpdateLocation(suggestion);\n }, \"Location\");\n FlexFormFields$1__AddCustom_693A43B3(FlexFormTuple$2__get_FieldsFst(form), \"Details\", renderCurrentEventInfoDetails);\n}\n\nexport function addEventInfoToFlexFormEim(form, eimModel, onStrictBoundsChange, suggestions) {\n addEventInfoToFlexForm(form, eimModel.EventInfo, suggestions);\n FlexFormFields$1__AddCustom_693A43B3(FlexFormTuple$2__get_FieldsFst(form), \"Strict boundaries\", (isDisabled, _arg) => renderSetStrictBounds(isDisabled, eimModel.StrictBounds, onStrictBoundsChange));\n}\n\nexport function getSuggestions(current, data) {\n return sortBy((value_1) => value_1.DistanceFromCurrent, List_distinct(filter((value) => {\n if (value.Name !== \"\") {\n return value.PlaceId !== \"\";\n }\n else {\n return false;\n }\n }, map_1((eventInfo) => {\n const position = eventInfoCoordinatesToPositionOrDefault(eventInfo);\n const distance = map((pos) => distanceInMetersBetweenPositions(position, pos), current);\n return new LocationDescriptor(defaultArg(eventInfo.PlaceId, \"\"), defaultArg(eventInfo.PlaceName, \"\"), position, distance, eventInfo.LocationTzOffsetMin);\n }, map_1((tuple) => tuple[0], data))), {\n Equals: equals,\n GetHashCode: safeHash,\n }), {\n Compare: compare,\n });\n}\n\nexport function addEventInfoWithSuggestionsToFlexForm(form, eventInfo, current, data) {\n addEventInfoToFlexForm(form, eventInfo, getSuggestions(current, data));\n}\n\nexport function addEventInfoWithOptSuggestionsToFlexForm(form, eventInfo, current, data) {\n addEventInfoWithSuggestionsToFlexForm(form, eventInfo, current, defaultArg(data, empty()));\n}\n\nexport class Formlet$1 extends Record {\n constructor(Render, CanSubmit) {\n super();\n this.Render = Render;\n this.CanSubmit = CanSubmit;\n }\n}\n\nexport function Formlet$1_$reflection(gen0) {\n return record_type(\"Omnicv.Client.Common.Components.FlexForm.Formlet`1\", [gen0], Formlet$1, () => [[\"Render\", lambda_type(bool_type, lambda_type(gen0, class_type(\"Fable.React.ReactElement\", undefined)))], [\"CanSubmit\", lambda_type(gen0, FieldValidationResult_$reflection())]]);\n}\n\nexport class FlexFormWithFormlets$1 extends FlexFormBase$1 {\n constructor(formlets, submit, cancel) {\n super(submit, cancel);\n this.formlets = formlets;\n }\n \"Omnicv.Client.Common.Components.FlexForm.FlexFormBase`1.RenderFields\"(isDisabled, value) {\n const this$ = this;\n return map_1((formlet) => formlet.Render(isDisabled, value), this$.formlets);\n }\n \"Omnicv.Client.Common.Components.FlexForm.FlexFormBase`1.CanSubmit2B595\"(value) {\n const this$ = this;\n return !FlexFormState__CanSubmit(FlexFormBase$1__get_State(this$)) ? (new FieldValidationResult(2, [`State ${FlexFormBase$1__get_State(this$)} does not allow submit`])) : mergeResults(map_1((formlet) => formlet.CanSubmit(value), this$.formlets));\n }\n}\n\nexport function FlexFormWithFormlets$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Common.Components.FlexForm.FlexFormWithFormlets`1\", [gen0], FlexFormWithFormlets$1, FlexFormBase$1_$reflection(gen0));\n}\n\nexport function FlexFormWithFormlets$1_$ctor_Z7DF2018A(formlets, submit, cancel) {\n return new FlexFormWithFormlets$1(formlets, submit, cancel);\n}\n\n","import { Union, Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { ContactData as ContactData_1, ContactData_$reflection } from \"../Omnicv.Shared/API.js\";\nimport { union_type, class_type, unit_type, record_type, bool_type, option_type, string_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { value as value_3 } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Cmd_OfPromise_either, Cmd_none } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { curry2 } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { anonService } from \"../Omnicv.Client.Common/CommonServer.js\";\nimport { Config_variable } from \"../Omnicv.Client.Common/Extensions.js\";\nimport { exnToDisplayString } from \"../Omnicv.Client.Common/Utils.js\";\nimport { isNullOrWhiteSpace } from \"../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { FlexFormBase$1__Render_2B595, FlexFormBase$1__SetState, FlexFormFields$1__AddTextArea_Z44011C05, FlexForm$1__get_Fields, FlexFormFields$1__AddText_Z44011C05, FlexForm$1_$ctor_2ABDDB55 } from \"../Omnicv.Client.Common/Components/FlexForm.js\";\nimport { createElement } from \"react\";\nimport { ofArray } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { reactApi } from \"../fable_modules/Feliz.2.9.0/Interop.fs.js\";\n\nexport class Model extends Record {\n constructor(ContactData, RecaptchaToken, IsRecaptchaReady, LoggedIn, Error$, ContactSent, IsLoading) {\n super();\n this.ContactData = ContactData;\n this.RecaptchaToken = RecaptchaToken;\n this.IsRecaptchaReady = IsRecaptchaReady;\n this.LoggedIn = LoggedIn;\n this.Error = Error$;\n this.ContactSent = ContactSent;\n this.IsLoading = IsLoading;\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.ContactForm.Component.Model\", [], Model, () => [[\"ContactData\", ContactData_$reflection()], [\"RecaptchaToken\", option_type(string_type)], [\"IsRecaptchaReady\", bool_type], [\"LoggedIn\", bool_type], [\"Error\", option_type(string_type)], [\"ContactSent\", bool_type], [\"IsLoading\", bool_type]]);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RecordUpdated\", \"RecaptchaReady\", \"Submitted\", \"RecaptchaSucceeded\", \"Succeeded\", \"Failed\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.ContactForm.Component.Msg\", [], Msg, () => [[[\"Item\", ContactData_$reflection()]], [], [], [[\"Item\", string_type]], [[\"Item\", unit_type]], [[\"Item\", class_type(\"System.Exception\")]]]);\n}\n\nexport function init(session) {\n return [new Model(new ContactData_1(\"\", (session.UserInfo != null) ? value_3(session.UserInfo).Email : \"\", \"\", undefined, \"\"), undefined, false, session.LoggedIn, undefined, false, false), Cmd_none()];\n}\n\nexport function update(session, msg, model) {\n const cmdSubmit = (model_1) => Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry2(anonService.Contact)(model_1.ContactData), model_1.RecaptchaToken, () => (new Msg(4, [undefined])), (Item_1) => (new Msg(5, [Item_1])));\n switch (msg.tag) {\n case 2:\n return [new Model(model.ContactData, model.RecaptchaToken, model.IsRecaptchaReady, model.LoggedIn, model.Error, model.ContactSent, true), session.LoggedIn ? cmdSubmit(model) : Cmd_OfPromise_either(() => {\n const action = {\n action: \"submit\",\n };\n const key = Config_variable(\"GOOGLE_RECAPTCHA_SITE_KEY\");\n return grecaptcha.execute(key, action);\n }, undefined, (Item_2) => (new Msg(3, [Item_2])), (Item_3) => (new Msg(5, [Item_3])))];\n case 1:\n return [new Model(model.ContactData, model.RecaptchaToken, true, model.LoggedIn, model.Error, model.ContactSent, model.IsLoading), Cmd_none()];\n case 3: {\n const newModel = new Model(model.ContactData, msg.fields[0], model.IsRecaptchaReady, model.LoggedIn, model.Error, model.ContactSent, model.IsLoading);\n return [newModel, cmdSubmit(newModel)];\n }\n case 4:\n return [new Model(model.ContactData, model.RecaptchaToken, model.IsRecaptchaReady, model.LoggedIn, undefined, true, model.IsLoading), Cmd_none()];\n case 5:\n return [new Model(model.ContactData, model.RecaptchaToken, model.IsRecaptchaReady, model.LoggedIn, exnToDisplayString(msg.fields[0]), false, false), Cmd_none()];\n default:\n return [new Model(msg.fields[0], model.RecaptchaToken, model.IsRecaptchaReady, model.LoggedIn, model.Error, model.ContactSent, model.IsLoading), Cmd_none()];\n }\n}\n\nfunction _nonEmpty(query) {\n if (isNullOrWhiteSpace(query) ? true : (query.trim().length < 3)) {\n return \"Search query too short\";\n }\n else {\n return undefined;\n }\n}\n\nfunction viewForm(model, dispatch) {\n const form = FlexForm$1_$ctor_2ABDDB55((arg) => {\n dispatch(new Msg(0, [arg]));\n }, (_arg) => {\n dispatch(new Msg(2, []));\n }, undefined);\n FlexFormFields$1__AddText_Z44011C05(FlexForm$1__get_Fields(form), \"Name\", _nonEmpty, \"User name\");\n if (!model.LoggedIn) {\n FlexFormFields$1__AddText_Z44011C05(FlexForm$1__get_Fields(form), \"Email\", _nonEmpty, \"Password\");\n }\n FlexFormFields$1__AddTextArea_Z44011C05(FlexFormFields$1__AddText_Z44011C05(FlexForm$1__get_Fields(form), \"Subject\", _nonEmpty, \"Remember me?\"), \"Message\", _nonEmpty, \"Remember me?\");\n FlexFormBase$1__SetState(form, model.IsLoading ? true : !model.IsRecaptchaReady, model.Error);\n return FlexFormBase$1__Render_2B595(form, model.ContactData);\n}\n\nexport function view(model, dispatch) {\n if (!model.IsRecaptchaReady) {\n grecaptcha.ready(() => {\n dispatch(new Msg(1, []));\n });\n }\n if (model.ContactSent) {\n return \"Thank you for contacting us!\";\n }\n else {\n const children = ofArray([createElement(\"p\", {\n children: \"Use this form to send us any questions, comments, bug reports or suggestions you might have\",\n }), viewForm(model, dispatch)]);\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n }\n}\n\n","import { toString, Union, Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { AnonymousService_RouteBuilder, Request_ExternalAuthScheme, Request_Login, Response_UserInfo_$reflection, Request_Login_$reflection } from \"../Omnicv.Shared/API.js\";\nimport { union_type, class_type, record_type, string_type, bool_type, option_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { Cmd_none } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { anonService } from \"../Omnicv.Client.Common/CommonServer.js\";\nimport { RouteModule_toHash, Route, Router_newUrl } from \"../Omnicv.Client.Common/Router.js\";\nimport { exnToDisplayString } from \"../Omnicv.Client.Common/Utils.js\";\nimport { isNullOrWhiteSpace } from \"../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { FlexFormBase$1__Render_2B595, FlexFormBase$1__SetErrorOpt_6DFDD678, FlexForm$1__get_Fields, FlexFormFields$1__AddText_Z44011C05, FlexFormFields$1__AddPassword_Z44011C05, noValidation, FlexFormFields$1__AddCheckbox_264AA22A, FlexForm$1_$ctor_2ABDDB55 } from \"../Omnicv.Client.Common/Components/FlexForm.js\";\nimport { empty as empty_1, singleton, append, delay, toList } from \"../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Config_variable } from \"../Omnicv.Client.Common/Extensions.js\";\nimport { Option, button } from \"../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { Size_ISize, Color_IColor } from \"../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { singleton as singleton_1, empty, ofArray } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { icon } from \"../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport { Fa_IconOption, Fa_i } from \"../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { createElement } from \"react\";\nimport { reactApi } from \"../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { h2 } from \"../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\n\nexport class Model extends Record {\n constructor(Request, Response, IsLoading, Error$) {\n super();\n this.Request = Request;\n this.Response = Response;\n this.IsLoading = IsLoading;\n this.Error = Error$;\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Login.Component.Model\", [], Model, () => [[\"Request\", Request_Login_$reflection()], [\"Response\", option_type(Response_UserInfo_$reflection())], [\"IsLoading\", bool_type], [\"Error\", option_type(string_type)]]);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RecordUpdated\", \"LogInSubmitted\", \"LogInSucceeded\", \"LogInFailed\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Login.Component.Msg\", [], Msg, () => [[[\"Item\", Request_Login_$reflection()]], [], [[\"Item\", Response_UserInfo_$reflection()]], [[\"Item\", class_type(\"System.Exception\")]]]);\n}\n\nexport function init() {\n return [new Model(new Request_Login(\"\", \"\", false), undefined, false, undefined), Cmd_none()];\n}\n\nexport function update(msg, model) {\n switch (msg.tag) {\n case 1:\n return [new Model(model.Request, model.Response, true, model.Error), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, anonService.Login, model.Request, (Item) => (new Msg(2, [Item])), (Item_1) => (new Msg(3, [Item_1])))];\n case 2:\n return [new Model(model.Request, msg.fields[0], false, model.Error), Router_newUrl(new Route(0, []))];\n case 3:\n return [new Model(model.Request, undefined, false, exnToDisplayString(msg.fields[0])), Cmd_none()];\n default:\n return [new Model(msg.fields[0], model.Response, model.IsLoading, model.Error), Cmd_none()];\n }\n}\n\nfunction _nonEmpty(query) {\n if (isNullOrWhiteSpace(query) ? true : (query.trim().length < 3)) {\n return \"Search query too short\";\n }\n else {\n return undefined;\n }\n}\n\nfunction viewForm(model, dispatch) {\n const form = FlexForm$1_$ctor_2ABDDB55((arg) => {\n dispatch(new Msg(0, [arg]));\n }, (_arg) => {\n dispatch(new Msg(1, []));\n }, undefined);\n FlexFormFields$1__AddCheckbox_264AA22A(FlexFormFields$1__AddPassword_Z44011C05(FlexFormFields$1__AddText_Z44011C05(FlexForm$1__get_Fields(form), \"Username\", _nonEmpty, \"User name\"), \"Password\", _nonEmpty, \"Password\"), \"IsPersistent\", noValidation, \"Remember me?\");\n FlexFormBase$1__SetErrorOpt_6DFDD678(form, model.Error);\n return FlexFormBase$1__Render_2B595(form, model.Request);\n}\n\nexport function view(model, dispatch) {\n if (model.Response != null) {\n return \"Already logged in\";\n }\n else {\n const children_2 = toList(delay(() => append(!(Config_variable(\"NO_GOOGLE_AUTH\") === \"true\") ? append(singleton(button(ofArray([new Option(0, [new Color_IColor(3, [])]), new Option(16, [false]), new Option(18, [(_arg) => {\n const scheme = toString(new Request_ExternalAuthScheme());\n const location = window.location;\n const baseUrl = `${location.protocol}//${location.hostname}:${location.port}`;\n const path_2 = AnonymousService_RouteBuilder(\"\", `LoginExt?scheme=${scheme}&next=${encodeURIComponent(`${baseUrl}${AnonymousService_RouteBuilder(\"\", `OnLoginExt?final=${`${baseUrl}${RouteModule_toHash(new Route(4, []))}`}`)}`)}`);\n location.href = (`${baseUrl}${path_2}`);\n }]), new Option(1, [new Size_ISize(2, [])])]), ofArray([icon(empty(), singleton_1(Fa_i(singleton_1(new Fa_IconOption(11, [\"fab fa-google\"])), []))), createElement(\"span\", {\n children: reactApi.Children.toArray([\"Login with Google\"]),\n })]))), delay(() => append(singleton(createElement(\"hr\", {})), delay(() => singleton(h2(empty())(singleton_1(\"Login with password\"))))))) : empty_1(), delay(() => singleton(viewForm(model, dispatch))))));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_2)),\n });\n }\n}\n\n","import { Union, Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { StaticPage_$reflection } from \"../Omnicv.Shared/API.js\";\nimport { union_type, class_type, record_type, bool_type, string_type, option_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { anonService } from \"../Omnicv.Client.Common/CommonServer.js\";\nimport { exnToDisplayString } from \"../Omnicv.Client.Common/Utils.js\";\nimport { Cmd_none } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { singleton, append, delay, toList } from \"../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Class, closeable } from \"../Omnicv.Client.Common/Components/Notification.js\";\nimport { defaultOf } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { h1 } from \"../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { singleton as singleton_1, empty } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { content as content_1, card } from \"../fable_modules/Fulma.3.0.0/Components/Card.fs.js\";\nimport { content as content_2 } from \"../fable_modules/Fulma.3.0.0/Elements/Content.fs.js\";\nimport { createElement } from \"react\";\nimport { Markdown_ToHtml_1BFEAEDB } from \"../fable_modules/Fable.Formatting.Markdown.1.0.1/Markdown.fs.js\";\nimport { reactApi } from \"../fable_modules/Feliz.2.9.0/Interop.fs.js\";\n\nexport class Model extends Record {\n constructor(Page, Error$, InProgress) {\n super();\n this.Page = Page;\n this.Error = Error$;\n this.InProgress = InProgress;\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.StaticPage.Component.Model\", [], Model, () => [[\"Page\", option_type(StaticPage_$reflection())], [\"Error\", option_type(string_type)], [\"InProgress\", bool_type]]);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Succeeded\", \"Failed\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.StaticPage.Component.Msg\", [], Msg, () => [[[\"Item\", StaticPage_$reflection()]], [[\"Item\", class_type(\"System.Exception\")]]]);\n}\n\nexport function init(path) {\n return [new Model(undefined, undefined, false), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, anonService.GetStaticPage, path, (Item) => (new Msg(0, [Item])), (Item_1) => (new Msg(1, [Item_1])))];\n}\n\nexport function update(msg, model) {\n if (msg.tag === 1) {\n return [new Model(undefined, exnToDisplayString(msg.fields[0]), false), Cmd_none()];\n }\n else {\n return [new Model(msg.fields[0], model.Error, false), Cmd_none()];\n }\n}\n\nexport function view(model, dispatch) {\n const children = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton(closeable(`Can't fetch information: ${matchValue}`, new Class(4, []))) : singleton(defaultOf())), delay(() => {\n const matchValue_1 = model.Page;\n if (matchValue_1 != null) {\n const value = matchValue_1;\n return append(singleton(h1(empty())(singleton_1(value.Title))), delay(() => singleton(card(empty(), singleton_1(content_1(empty(), singleton_1(content_2(empty(), singleton_1(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(value.Body),\n },\n }))))))))));\n }\n else {\n return singleton(createElement(\"i\", {\n children: [\"Loading...\"],\n }));\n }\n }));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\n","import { toString, Union, Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { Response_validateFullName, Response_validateDateOfBirth, Response_ProfileInfo_Default, Response_ProfileInfo_$reflection, Response_UserInfo_$reflection } from \"../Omnicv.Shared/API.js\";\nimport { union_type, unit_type, int32_type, class_type, record_type, bool_type, string_type, option_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { Cmd_none } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { commonAuthService } from \"../Omnicv.Client.Common/CommonServer.js\";\nimport { ofArray, empty, singleton } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { stringToEnum, exnToDisplayString } from \"../Omnicv.Client.Common/Utils.js\";\nimport { empty as empty_1, map, singleton as singleton_1, append, delay, toList } from \"../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Class, closeable } from \"../Omnicv.Client.Common/Components/Notification.js\";\nimport { defaultOf } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { Icons, Session__GetCurrentProfileId } from \"../Omnicv.Client.Common/SharedView.js\";\nimport { Option, h2, h1 } from \"../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { Footer_div, footer, content, Header_icon, Header_Title_Option, Header_title, header, card } from \"../fable_modules/Fulma.3.0.0/Components/Card.fs.js\";\nimport { Fa_IconOption, Fa_i } from \"../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { content as content_1 } from \"../fable_modules/Fulma.3.0.0/Elements/Content.fs.js\";\nimport { columns } from \"../fable_modules/Fulma.3.0.0/Layouts/Columns.fs.js\";\nimport { column } from \"../fable_modules/Fulma.3.0.0/Layouts/Column.fs.js\";\nimport { int32ToString } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { toString as toString_1, fromDateTime } from \"../fable_modules/fable-library-js.4.24.0/DateOnly.js\";\nimport { Option as Option_1, button, list } from \"../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { Size_ISize, Color_IColor } from \"../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { Option as Option_2, icon } from \"../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport { Fa_i as Fa_i_1 } from \"../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { Icons__ToIcon } from \"../Omnicv.Client.Common/SharedView.js\";\nimport { Router_newUrl, Route, Router_modifyLocation } from \"../Omnicv.Client.Common/Router.js\";\nimport { createElement } from \"react\";\nimport { reactApi } from \"../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { value as value_2 } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { FlexFormBase$1__Render_2B595, FlexForm$1__get_Fields, FlexFormFields$1__AddDate_2636DDCF, FlexFormFields$1__AddSelection_158231B6, FlexFormFields$1__AddCheckbox_264AA22A, FlexFormFields$1__AddText_Z44011C05, FlexForm$1_$ctor_2ABDDB55 } from \"../Omnicv.Client.Common/Components/FlexForm.js\";\n\nexport class ViewProfile_Model extends Record {\n constructor(UserInfo, Error$, InProgress) {\n super();\n this.UserInfo = UserInfo;\n this.Error = Error$;\n this.InProgress = InProgress;\n }\n}\n\nexport function ViewProfile_Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.MyProfile.Component.ViewProfile.Model\", [], ViewProfile_Model, () => [[\"UserInfo\", option_type(Response_UserInfo_$reflection())], [\"Error\", option_type(string_type)], [\"InProgress\", bool_type]]);\n}\n\nexport class ViewProfile_Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"ReloadClicked\", \"Succeeded\", \"Failed\", \"Delete\", \"DeleteSucceeded\", \"SetCurrentProfile\"];\n }\n}\n\nexport function ViewProfile_Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.MyProfile.Component.ViewProfile.Msg\", [], ViewProfile_Msg, () => [[], [[\"Item\", Response_UserInfo_$reflection()]], [[\"Item\", class_type(\"System.Exception\")]], [[\"Item\", int32_type]], [[\"Item\", unit_type]], [[\"Item\", int32_type]]]);\n}\n\nexport function ViewProfile_init(session) {\n return [new ViewProfile_Model(session.UserInfo, undefined, false), Cmd_none()];\n}\n\nexport function ViewProfile_update(msg, model) {\n switch (msg.tag) {\n case 1:\n return [new ViewProfile_Model(msg.fields[0], model.Error, false), Cmd_none()];\n case 3:\n return [new ViewProfile_Model(model.UserInfo, model.Error, true), Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, commonAuthService.DeleteProfile, msg.fields[0], () => (new ViewProfile_Msg(4, [undefined])), (Item_3) => (new ViewProfile_Msg(2, [Item_3])))];\n case 4:\n return [new ViewProfile_Model(model.UserInfo, model.Error, true), singleton((dispatch) => {\n dispatch(new ViewProfile_Msg(0, []));\n })];\n case 5:\n return [model, Cmd_none()];\n case 2:\n return [new ViewProfile_Model(undefined, exnToDisplayString(msg.fields[0]), false), Cmd_none()];\n default:\n return [new ViewProfile_Model(model.UserInfo, model.Error, true), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, commonAuthService.GetUserInfo, undefined, (Item) => (new ViewProfile_Msg(1, [Item])), (Item_1) => (new ViewProfile_Msg(2, [Item_1])))];\n }\n}\n\nexport function ViewProfile_view(session, model, dispatch) {\n const children_8 = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't fetch profile ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => {\n let matchValue_1, userInfo, currentProfileId;\n return append((matchValue_1 = model.UserInfo, (matchValue_1 != null) ? ((userInfo = matchValue_1, (currentProfileId = (Session__GetCurrentProfileId(session) | 0), append(singleton_1(h1(empty())(singleton(\"Your profile\"))), delay(() => append(singleton_1(h2(singleton(new Option(6, [])))(singleton(userInfo.Name))), delay(() => append(singleton_1(card(empty(), ofArray([header(empty(), singleton(Header_title(singleton(new Header_Title_Option(0, [])), singleton(\"Main user info\")))), header(empty(), ofArray([Header_icon(empty(), singleton(Fa_i(singleton(new Fa_IconOption(11, [\"fas fa-user-alt\"])), []))), Header_title(empty(), singleton(userInfo.Name))])), content(empty(), singleton(content_1(empty(), ofArray([columns(empty(), ofArray([column(empty(), singleton(\"Id:\")), column(empty(), singleton(int32ToString(userInfo.Id)))])), columns(empty(), ofArray([column(empty(), singleton(\"Email:\")), column(empty(), singleton(userInfo.Email))]))]))))]))), delay(() => map((profile) => {\n let copyOfStruct;\n return card(empty(), ofArray([header(empty(), ofArray([Header_icon(empty(), singleton(Fa_i(singleton(new Fa_IconOption(11, [\"fas fa-user-friends\"])), []))), Header_title(singleton(new Header_Title_Option(0, [])), singleton(`Profile ${profile.FullName}`))])), content(empty(), singleton(content_1(empty(), ofArray([columns(empty(), ofArray([column(empty(), singleton(\"Id:\")), column(empty(), singleton(int32ToString(profile.Id)))])), columns(empty(), ofArray([column(empty(), singleton(\"Primary:\")), column(empty(), singleton(toString(profile.IsPrimary)))])), columns(empty(), ofArray([column(empty(), singleton(\"Date of birth:\")), column(empty(), singleton((copyOfStruct = fromDateTime(profile.DateOfBirth), toString_1(copyOfStruct))))]))])))), footer(empty(), singleton(Footer_div(empty(), singleton(list(empty(), toList(delay(() => append((currentProfileId !== profile.Id) ? singleton_1(button(ofArray([new Option_1(0, [new Color_IColor(5, [])]), new Option_1(16, [model.InProgress]), new Option_1(5, []), new Option_1(18, [(_arg) => {\n dispatch(new ViewProfile_Msg(5, [profile.Id]));\n }])]), singleton(icon(singleton(new Option_2(0, [new Size_ISize(0, [])])), singleton(Fa_i_1(singleton(Icons__ToIcon(new Icons(11, []))), [])))))) : empty_1(), delay(() => append(singleton_1(button(ofArray([new Option_1(0, [new Color_IColor(4, [])]), new Option_1(16, [model.InProgress]), new Option_1(5, []), new Option_1(18, [(_arg_1) => {\n Router_modifyLocation(new Route(6, [profile.Id]));\n }])]), singleton(icon(singleton(new Option_2(0, [new Size_ISize(0, [])])), singleton(Fa_i_1(singleton(Icons__ToIcon(new Icons(4, []))), [])))))), delay(() => singleton_1(button(ofArray([new Option_1(0, [new Color_IColor(8, [])]), new Option_1(16, [model.InProgress]), new Option_1(5, []), new Option_1(18, [(_arg_2) => {\n if (window.confirm(`${\"Confirm deletion\"}:\n${\"Are you sure you want to delete this profile?\"}`)) {\n (() => {\n dispatch(new ViewProfile_Msg(3, [profile.Id]));\n })();\n }\n }])]), singleton(icon(singleton(new Option_2(0, [new Size_ISize(0, [])])), singleton(Fa_i_1(singleton(Icons__ToIcon(new Icons(2, []))), [])))))))))))))))))]));\n }, userInfo.Profiles)))))))))) : singleton_1(createElement(\"i\", {\n children: [\"Not loaded\"],\n }))), delay(() => singleton_1(list(empty(), ofArray([button(ofArray([new Option_1(0, [new Color_IColor(6, [])]), new Option_1(16, [model.InProgress]), new Option_1(18, [(_arg_3) => {\n dispatch(new ViewProfile_Msg(0, []));\n }])]), toList(delay(() => (model.InProgress ? singleton_1(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Loading...\"]),\n })) : singleton_1(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Reload\"]),\n })))))), button(ofArray([new Option_1(0, [new Color_IColor(9, [])]), new Option_1(16, [model.InProgress]), new Option_1(18, [(_arg_4) => {\n Router_modifyLocation(new Route(5, []));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"New profile\"]),\n }))), button(ofArray([new Option_1(0, [new Color_IColor(9, [])]), new Option_1(16, [model.InProgress])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Edit user information\"]),\n })))])))));\n }));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_8)),\n });\n}\n\nexport class AddEditProfile_Model extends Record {\n constructor(ProfileInfo, Error$, InProgress) {\n super();\n this.ProfileInfo = ProfileInfo;\n this.Error = Error$;\n this.InProgress = InProgress;\n }\n}\n\nexport function AddEditProfile_Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.MyProfile.Component.AddEditProfile.Model\", [], AddEditProfile_Model, () => [[\"ProfileInfo\", option_type(Response_ProfileInfo_$reflection())], [\"Error\", option_type(string_type)], [\"InProgress\", bool_type]]);\n}\n\nexport class AddEditProfile_Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Request\", \"RequestSucceeded\", \"RecordUpdated\", \"AddSucceeded\", \"EditSucceeded\", \"Submit\", \"Failure\"];\n }\n}\n\nexport function AddEditProfile_Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.MyProfile.Component.AddEditProfile.Msg\", [], AddEditProfile_Msg, () => [[[\"Item\", int32_type]], [[\"Item\", Response_ProfileInfo_$reflection()]], [[\"Item\", Response_ProfileInfo_$reflection()]], [[\"Item\", int32_type]], [[\"Item\", unit_type]], [], [[\"Item\", class_type(\"System.Exception\")]]]);\n}\n\nexport function AddEditProfile_initNew() {\n return [new AddEditProfile_Model(Response_ProfileInfo_Default(), undefined, false), Cmd_none()];\n}\n\nexport function AddEditProfile_initEdit(id) {\n return [new AddEditProfile_Model(undefined, undefined, false), singleton((dispatch) => {\n dispatch(new AddEditProfile_Msg(0, [id]));\n })];\n}\n\nexport function AddEditProfile_update(msg, model) {\n switch (msg.tag) {\n case 0:\n return [new AddEditProfile_Model(model.ProfileInfo, model.Error, true), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, commonAuthService.GetProfile, msg.fields[0], (Item) => (new AddEditProfile_Msg(1, [Item])), (Item_1) => (new AddEditProfile_Msg(6, [Item_1])))];\n case 1:\n return [new AddEditProfile_Model(msg.fields[0], model.Error, false), Cmd_none()];\n case 5: {\n const profile = value_2(model.ProfileInfo);\n return [new AddEditProfile_Model(model.ProfileInfo, model.Error, true), (profile.Id > 0) ? Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, commonAuthService.EditProfile, profile, () => (new AddEditProfile_Msg(4, [undefined])), (Item_3) => (new AddEditProfile_Msg(6, [Item_3]))) : Cmd_OfAsyncWith_either((x_2) => {\n Cmd_OfAsync_start(x_2);\n }, commonAuthService.AddProfile, profile, (Item_4) => (new AddEditProfile_Msg(3, [Item_4])), (Item_5) => (new AddEditProfile_Msg(6, [Item_5])))];\n }\n case 3:\n return [new AddEditProfile_Model(model.ProfileInfo, model.Error, false), Router_newUrl(new Route(4, []))];\n case 4:\n return [new AddEditProfile_Model(model.ProfileInfo, model.Error, false), Router_newUrl(new Route(4, []))];\n case 6:\n return [new AddEditProfile_Model(model.ProfileInfo, exnToDisplayString(msg.fields[0]), false), Cmd_none()];\n default:\n return [new AddEditProfile_Model(msg.fields[0], model.Error, model.InProgress), Cmd_none()];\n }\n}\n\nfunction AddEditProfile_noValidation(_arg) {\n return undefined;\n}\n\nconst AddEditProfile_genders = ofArray([[0, \"Male\"], [1, \"Female\"], [2, \"Other\"]]);\n\nconst AddEditProfile_stringToGender = (value) => stringToEnum(AddEditProfile_genders, value);\n\nexport function AddEditProfile_view(model, dispatch) {\n const children = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't manage profile ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => {\n if (model.ProfileInfo != null) {\n const profile = value_2(model.ProfileInfo);\n const form = FlexForm$1_$ctor_2ABDDB55((arg) => {\n dispatch(new AddEditProfile_Msg(2, [arg]));\n }, (_arg_1) => {\n dispatch(new AddEditProfile_Msg(5, []));\n }, () => {\n Router_modifyLocation(new Route(4, []));\n });\n FlexFormFields$1__AddText_Z44011C05(FlexFormFields$1__AddCheckbox_264AA22A(FlexFormFields$1__AddSelection_158231B6(FlexFormFields$1__AddDate_2636DDCF(FlexFormFields$1__AddText_Z44011C05(FlexForm$1__get_Fields(form), \"FullName\", Response_validateFullName, \"Full name\"), \"DateOfBirth\", Response_validateDateOfBirth, \"DOB\"), \"Gender\", AddEditProfile_genders, AddEditProfile_stringToGender, AddEditProfile_noValidation), \"IsPrimary\", AddEditProfile_noValidation, \"Primary?\"), \"Country_IsoCode\", AddEditProfile_noValidation, \"Country\");\n return singleton_1(FlexFormBase$1__Render_2B595(form, profile));\n }\n else {\n return singleton_1(\"Loading...\");\n }\n }));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\n","import { Union, Record } from \"../../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { union_type, unit_type, int64_type, record_type, int32_type, option_type, string_type, list_type, tuple_type, class_type } from \"../../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { EventInfo_$reflection } from \"../../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { UnifiedRecord_$reflection } from \"../../Omnicv.Diary.Shared/DiaryAPI.js\";\nimport { ReminderRecord_$reflection } from \"../../Omnicv.Diary.Shared/Data.js\";\nimport { length, ofArray, singleton, empty, map, sum } from \"../../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { displayUnifiedEntries, displayReminders, diaryModule, countWordsInRecord } from \"../DiaryClientUtils.js\";\nimport { dateToStrForDiary, dateStrToDate, exnToDisplayString } from \"../../../Omnicv.Client.Common/Utils.js\";\nimport { Route, Router_newUrl, Route_$reflection } from \"../../../Omnicv.Client.Common/Router.js\";\nimport * as common from \"../../../../src/javascript/common.js\";\nimport { addDays, op_Subtraction, date as date_3, toLongDateString, compare } from \"../../../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { FSharpResult$2 } from \"../../../fable_modules/fable-library-js.4.24.0/Result.js\";\nimport { Cmd_batch, Cmd_none } from \"../../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { Icons, Session__GetCurrentProfileId } from \"../../../Omnicv.Client.Common/SharedView.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { curry3, curry2 } from \"../../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { commonAuthService } from \"../../../Omnicv.Client.Common/CommonServer.js\";\nimport { unifiedService, reminderService } from \"../Server.js\";\nimport { Config_getUserTimeZone } from \"../../../Omnicv.Client.Common/Extensions.js\";\nimport { days } from \"../../../fable_modules/fable-library-js.4.24.0/TimeSpan.js\";\nimport { formatDistance } from \"date-fns\";\nimport { empty as empty_1, singleton as singleton_1, append, delay, toList } from \"../../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Class, closeable } from \"../../../Omnicv.Client.Common/Components/Notification.js\";\nimport { defaultOf } from \"../../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { getModuleNewDateButtons } from \"../../../Omnicv.Client.Common/ClientModule.js\";\nimport { value as value_1 } from \"../../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Option, button } from \"../../../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { Screen, Size_ISize, Color_IColor } from \"../../../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { Option as Option_3, icon } from \"../../../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport { Fa_i } from \"../../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { Icons__ToIcon } from \"../../../Omnicv.Client.Common/SharedView.js\";\nimport { Fa_i as Fa_i_1, Fa_IconOption } from \"../../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { createElement } from \"react\";\nimport * as react from \"react\";\nimport { reactApi } from \"../../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { Option as Option_1, div } from \"../../../fable_modules/Fulma.3.0.0/Elements/Form/Control.fs.js\";\nimport { input } from \"../../../fable_modules/Fulma.3.0.0/Elements/Form/Input.fs.js\";\nimport { Option as Option_2, IInputType } from \"../../../fable_modules/Fulma.3.0.0/Elements/Form/Input.fs.js\";\nimport { Option as Option_4, columns } from \"../../../fable_modules/Fulma.3.0.0/Layouts/Columns.fs.js\";\nimport { Option as Option_5, ISize, column } from \"../../../fable_modules/Fulma.3.0.0/Layouts/Column.fs.js\";\nimport { Option as Option_6, h3, h4 } from \"../../../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\n\nexport class Model extends Record {\n constructor(Date$, Records, Reminders, Error$, PendingRequests) {\n super();\n this.Date = Date$;\n this.Records = Records;\n this.Reminders = Reminders;\n this.Error = Error$;\n this.PendingRequests = (PendingRequests | 0);\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Diary.MainDiaryView.Component.Model\", [], Model, () => [[\"Date\", class_type(\"System.DateTime\")], [\"Records\", list_type(tuple_type(EventInfo_$reflection(), UnifiedRecord_$reflection()))], [\"Reminders\", list_type(ReminderRecord_$reflection())], [\"Error\", option_type(string_type)], [\"PendingRequests\", int32_type]]);\n}\n\nexport function Model__IsLoading(this$) {\n return this$.PendingRequests > 0;\n}\n\nexport function Model__get_WordCount(this$) {\n return sum(map((tupledArg) => countWordsInRecord(tupledArg[1]), this$.Records), {\n GetZero: () => 0,\n Add: (x, y) => (x + y),\n });\n}\n\nfunction addPendingRequest(model, requestsOpt) {\n return new Model(model.Date, model.Records, model.Reminders, model.Error, model.PendingRequests + ((requestsOpt == null) ? 1 : requestsOpt));\n}\n\nfunction pendingRequestDone(model, result) {\n return new Model(model.Date, model.Records, model.Reminders, (result.tag === 1) ? exnToDisplayString(result.fields[0]) : undefined, model.PendingRequests - 1);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RequestFetch\", \"FetchSucceeded\", \"RemindersFetchSucceeded\", \"FetchFailed\", \"Delete\", \"DeleteSucceeded\", \"MarkDismissed\", \"MarkDismissedSucceeded\", \"NavigateTo\", \"MoveToDate\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Diary.MainDiaryView.Component.Msg\", [], Msg, () => [[], [[\"Item\", list_type(tuple_type(EventInfo_$reflection(), UnifiedRecord_$reflection()))]], [[\"Item\", list_type(ReminderRecord_$reflection())]], [[\"Item\", class_type(\"System.Exception\")]], [[\"Item\", int64_type]], [[\"Item\", string_type]], [[\"Item\", int64_type]], [[\"Item\", unit_type]], [[\"Item\", Route_$reflection()]], [[\"Item\", string_type]]]);\n}\n\nexport function init(date) {\n let converted;\n const now = common.getNow();\n return [new Model((date == null) ? now : ((converted = dateStrToDate(now, date), (compare(converted, now) > 0) ? now : converted)), empty(), empty(), undefined, 0), singleton((dispatch) => {\n dispatch(new Msg(0, []));\n })];\n}\n\nexport function update(session, msg, model) {\n switch (msg.tag) {\n case 1:\n return [pendingRequestDone(new Model(model.Date, msg.fields[0], model.Reminders, model.Error, model.PendingRequests), new FSharpResult$2(0, [undefined])), Cmd_none()];\n case 2:\n return [pendingRequestDone(new Model(model.Date, model.Records, msg.fields[0], model.Error, model.PendingRequests), new FSharpResult$2(0, [undefined])), Cmd_none()];\n case 4: {\n const profileId_1 = Session__GetCurrentProfileId(session) | 0;\n return [addPendingRequest(model, undefined), Cmd_OfAsyncWith_either((x_2) => {\n Cmd_OfAsync_start(x_2);\n }, curry2(commonAuthService.DeleteRecord)(profileId_1), msg.fields[0], (Item_4) => (new Msg(5, [Item_4])), (Item_5) => (new Msg(3, [Item_5])))];\n }\n case 6: {\n const profileId_2 = Session__GetCurrentProfileId(session) | 0;\n return [addPendingRequest(model, undefined), Cmd_OfAsyncWith_either((x_3) => {\n Cmd_OfAsync_start(x_3);\n }, curry2(reminderService.MarkReminderDismissed)(profileId_2), msg.fields[0], () => (new Msg(7, [undefined])), (Item_7) => (new Msg(3, [Item_7])))];\n }\n case 5:\n case 7:\n return [pendingRequestDone(model, new FSharpResult$2(0, [undefined])), singleton((dispatch) => {\n dispatch(new Msg(0, []));\n })];\n case 3:\n return [pendingRequestDone(model, new FSharpResult$2(1, [msg.fields[0]])), Cmd_none()];\n case 8:\n return [model, Router_newUrl(msg.fields[0])];\n case 9:\n return [model, Router_newUrl(new Route(9, [msg.fields[0]]))];\n default: {\n const profileId = Session__GetCurrentProfileId(session) | 0;\n const timezone = Config_getUserTimeZone(session);\n return [addPendingRequest(model, 2), Cmd_batch(ofArray([Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry3(unifiedService.GetRecords)(profileId)(model.Date), timezone, (Item) => (new Msg(1, [Item])), (Item_1) => (new Msg(3, [Item_1]))), Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, curry3(reminderService.GetReminders)(profileId)(model.Date), timezone, (Item_2) => (new Msg(2, [Item_2])), (Item_3) => (new Msg(3, [Item_3])))]))];\n }\n }\n}\n\nexport function view(session, model, dispatch) {\n const now = common.getNow();\n const dateStr = toLongDateString(date_3(model.Date));\n const diff = days(op_Subtraction(date_3(now), date_3(model.Date))) | 0;\n const isLoading = Model__IsLoading(model);\n let countStr;\n if (isLoading) {\n countStr = \"\";\n }\n else {\n const wordCount = Model__get_WordCount(model) | 0;\n countStr = (` | ${length(model.Records)} entry(ies) | ${wordCount} words`);\n }\n const patternInput = (diff === 0) ? [\"Today\", dateStr, false] : ((diff === 1) ? [\"Yesterday\", dateStr, true] : ((diff < 0) ? [dateStr, \"Future\", false] : [dateStr, formatDistance(date_3(now), model.Date, {}), true]));\n const hasNext = patternInput[2];\n const prevDate = dateToStrForDiary(addDays(model.Date, -1));\n const nextDate = dateToStrForDiary(addDays(model.Date, 1));\n const children_10 = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't fetch diary data ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => {\n let children_4;\n const date_1 = dateToStrForDiary(model.Date);\n return append(singleton_1((children_4 = toList(delay(() => append(singleton_1(getModuleNewDateButtons(diaryModule, isLoading ? true : value_1(session.UserInfo).ReadOnly, date_1)), delay(() => append(singleton_1(button(ofArray([new Option(0, [new Color_IColor(7, [])]), new Option(16, [isLoading]), new Option(18, [(_arg) => {\n dispatch(new Msg(8, [new Route(17, [])]));\n }])]), singleton(icon(empty(), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(7, []))), [])))))), delay(() => {\n let children;\n return append(singleton_1(button(ofArray([new Option(0, [new Color_IColor(5, [])]), new Option(16, [isLoading]), new Option(18, [(_arg_1) => {\n dispatch(new Msg(0, []));\n }])]), ofArray([icon(empty(), toList(delay(() => (isLoading ? singleton_1(Fa_i(ofArray([Icons__ToIcon(new Icons(6, [])), new Fa_IconOption(12, [])]), [])) : singleton_1(Fa_i(singleton(Icons__ToIcon(new Icons(5, []))), [])))))), (children = toList(delay(() => (isLoading ? singleton_1(\"Loading...\") : singleton_1(\"Reload\")))), createElement(\"span\", {\n children: reactApi.Children.toArray(Array.from(children)),\n }))]))), delay(() => append(hasNext ? singleton_1(button(ofArray([new Option(0, [new Color_IColor(6, [])]), new Option(16, [isLoading]), new Option(18, [(_arg_2) => {\n dispatch(new Msg(9, [\"today\"]));\n }])]), ofArray([icon(empty(), singleton(Fa_i_1(singleton(new Fa_IconOption(11, [\"fas fa-calendar-check\"])), []))), createElement(\"span\", {\n children: reactApi.Children.toArray([\"Today\"]),\n })]))) : empty_1(), delay(() => singleton_1(div(ofArray([new Option_1(1, []), new Option_1(4, [\"archive-calendar\"])]), ofArray([input(ofArray([new Option_2(1, [new IInputType(3, [])]), new Option_2(12, [\"Go to date\"]), new Option_2(8, [dateToStrForDiary(model.Date)]), new Option_2(4, [isLoading]), new Option_2(13, [(event) => {\n const elem = event.target;\n const date_2 = elem.valueAsDate;\n if (!(date_2 == null) && (compare(date_3(now), date_3(date_2)) >= 0)) {\n dispatch(new Msg(9, [elem.value]));\n }\n }])])), icon(ofArray([new Option_3(0, [new Size_ISize(0, [])]), new Option_3(1, [])]), singleton(Fa_i_1(singleton(new Fa_IconOption(11, [\"fas fa-archive\"])), [])))])))))));\n })))))), react.createElement(\"div\", {\n className: \"block\",\n disabled: isLoading,\n }, ...children_4))), delay(() => append(singleton_1(columns(ofArray([new Option_4(4, []), new Option_4(1, [])]), ofArray([column(empty(), singleton(button(ofArray([new Option(0, [new Color_IColor(6, [])]), new Option(16, [isLoading]), new Option(18, [(_arg_3) => {\n dispatch(new Msg(9, [prevDate]));\n }])]), singleton(icon(empty(), singleton(Fa_i_1(singleton(new Fa_IconOption(11, [\"fas fa-angle-double-left\"])), []))))))), column(singleton(new Option_5(0, [new Screen(0, []), new ISize(21, [])])), singleton(h4(empty())(singleton(patternInput[0])))), column(empty(), singleton(button(ofArray([new Option(0, [new Color_IColor(6, [])]), new Option(16, [isLoading ? true : !hasNext]), new Option(18, [(_arg_4) => {\n dispatch(new Msg(9, [nextDate]));\n }])]), singleton(icon(empty(), singleton(Fa_i_1(singleton(new Fa_IconOption(11, [\"fas fa-angle-double-right\"])), [])))))))]))), delay(() => append(singleton_1(h3(singleton(new Option_6(6, [])))(singleton(patternInput[1] + countStr))), delay(() => {\n let children_6;\n return append(singleton_1((children_6 = displayReminders(model.Reminders, isLoading, (arg_1) => {\n dispatch(new Msg(6, [arg_1]));\n }), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_6)),\n }))), delay(() => {\n let children_8;\n return singleton_1((children_8 = displayUnifiedEntries(model.Records, isLoading, (arg) => {\n dispatch(new Msg(4, [arg]));\n }), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_8)),\n })));\n }));\n }))))));\n }));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_10)),\n });\n}\n\n","import { PageBoundary, PagingOptions_$reflection, EventInfo_$reflection, PagingOptions } from \"../../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { Record, Union } from \"../../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { class_type, option_type, int32_type, bool_type, list_type, tuple_type, record_type, union_type, string_type } from \"../../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { UnifiedRecord_$reflection } from \"../../Omnicv.Diary.Shared/DiaryAPI.js\";\nimport { curry3 } from \"../../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { unifiedService } from \"../Server.js\";\nimport { isEmpty, ofArray, singleton as singleton_1, last as last_1, empty, length } from \"../../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Cmd_none } from \"../../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { Icons, Session__GetCurrentProfileId } from \"../../../Omnicv.Client.Common/SharedView.js\";\nimport { exnToDisplayString } from \"../../../Omnicv.Client.Common/Utils.js\";\nimport { isNullOrWhiteSpace } from \"../../../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { FlexFormBase$1__Render_2B595, FlexFormBase$1__SetState, FlexForm$1__get_Fields, FlexFormFields$1__AddText_Z44011C05, FlexForm$1_$ctor_2ABDDB55 } from \"../../../Omnicv.Client.Common/Components/FlexForm.js\";\nimport { empty as empty_1, singleton, append, delay, toList } from \"../../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Option, h3, h1 } from \"../../../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { Option as Option_1, button, list } from \"../../../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { Color_IColor } from \"../../../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { icon } from \"../../../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport { Fa_i } from \"../../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { Icons__ToIcon } from \"../../../Omnicv.Client.Common/SharedView.js\";\nimport { createElement } from \"react\";\nimport { reactApi } from \"../../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { defaultOf } from \"../../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { displayUnifiedEntries } from \"../DiaryClientUtils.js\";\n\nconst pageSize = 30;\n\nconst initPagingOptions = new PagingOptions(undefined, pageSize, false, undefined, undefined);\n\nexport class SearchType extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"ByTags\", \"General\"];\n }\n}\n\nexport function SearchType_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Diary.SearchDiaryView.Component.SearchType\", [], SearchType, () => [[[\"Item\", string_type]], []]);\n}\n\nexport class SearchQuery extends Record {\n constructor(Query) {\n super();\n this.Query = Query;\n }\n}\n\nexport function SearchQuery_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Diary.SearchDiaryView.Component.SearchQuery\", [], SearchQuery, () => [[\"Query\", string_type]]);\n}\n\nexport class Model extends Record {\n constructor(SearchType, SearchQuery, SearchResults, IsLoading, PagingOptions, TotalCount, Error$) {\n super();\n this.SearchType = SearchType;\n this.SearchQuery = SearchQuery;\n this.SearchResults = SearchResults;\n this.IsLoading = IsLoading;\n this.PagingOptions = PagingOptions;\n this.TotalCount = (TotalCount | 0);\n this.Error = Error$;\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Diary.SearchDiaryView.Component.Model\", [], Model, () => [[\"SearchType\", SearchType_$reflection()], [\"SearchQuery\", SearchQuery_$reflection()], [\"SearchResults\", list_type(tuple_type(EventInfo_$reflection(), UnifiedRecord_$reflection()))], [\"IsLoading\", bool_type], [\"PagingOptions\", PagingOptions_$reflection()], [\"TotalCount\", int32_type], [\"Error\", option_type(string_type)]]);\n}\n\nexport function Model__FetchFunc_Z524259A4(this$, profileId) {\n const matchValue = this$.SearchType;\n if (matchValue.tag === 0) {\n return curry3(unifiedService.SearchByTags)(profileId)(matchValue.fields[0]);\n }\n else {\n return curry3(unifiedService.SearchGeneral)(profileId)(this$.SearchQuery.Query);\n }\n}\n\nexport function Model__CanLoadMore(this$) {\n if (length(this$.SearchResults) > 0) {\n return length(this$.SearchResults) === this$.PagingOptions.PageSize;\n }\n else {\n return false;\n }\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RecordUpdated\", \"Submit\", \"Reload\", \"LoadMore\", \"Success\", \"SuccessMore\", \"Failure\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Diary.SearchDiaryView.Component.Msg\", [], Msg, () => [[[\"Item\", SearchQuery_$reflection()]], [], [], [], [[\"Item\", list_type(tuple_type(EventInfo_$reflection(), UnifiedRecord_$reflection()))]], [[\"Item\", list_type(tuple_type(EventInfo_$reflection(), UnifiedRecord_$reflection()))]], [[\"Item\", class_type(\"System.Exception\")]]]);\n}\n\nexport function init(session, searchType) {\n if (searchType.tag === 1) {\n return [new Model(searchType, new SearchQuery(\"\"), empty(), false, initPagingOptions, 0, undefined), Cmd_none()];\n }\n else {\n const model = new Model(searchType, new SearchQuery(\"\"), empty(), true, initPagingOptions, 0, undefined);\n return [model, Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, Model__FetchFunc_Z524259A4(model, Session__GetCurrentProfileId(session)), model.PagingOptions, (Item) => (new Msg(4, [Item])), (Item_1) => (new Msg(6, [Item_1])))];\n }\n}\n\nexport function update(session, msg, model) {\n const processSuccess = (finalRecords) => [new Model(model.SearchType, model.SearchQuery, finalRecords, false, model.PagingOptions, model.TotalCount + length(finalRecords), undefined), Cmd_none()];\n switch (msg.tag) {\n case 1: {\n const updatedModel = new Model(model.SearchType, model.SearchQuery, model.SearchResults, true, initPagingOptions, 0, model.Error);\n return [updatedModel, Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, Model__FetchFunc_Z524259A4(updatedModel, Session__GetCurrentProfileId(session)), updatedModel.PagingOptions, (Item) => (new Msg(4, [Item])), (Item_1) => (new Msg(6, [Item_1])))];\n }\n case 3: {\n const profileId_1 = Session__GetCurrentProfileId(session) | 0;\n const last = last_1(model.SearchResults)[0];\n let pagingOptions;\n const bind$0040 = model.PagingOptions;\n pagingOptions = (new PagingOptions(new PageBoundary(last.Id, last.EventTimestamp), bind$0040.PageSize, bind$0040.Ascending, bind$0040.From, bind$0040.To));\n return [new Model(model.SearchType, model.SearchQuery, model.SearchResults, true, pagingOptions, model.TotalCount, model.Error), Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, Model__FetchFunc_Z524259A4(model, profileId_1), pagingOptions, (Item_2) => (new Msg(5, [Item_2])), (Item_3) => (new Msg(6, [Item_3])))];\n }\n case 2:\n return [new Model(model.SearchType, model.SearchQuery, model.SearchResults, true, initPagingOptions, 0, undefined), Cmd_OfAsyncWith_either((x_2) => {\n Cmd_OfAsync_start(x_2);\n }, Model__FetchFunc_Z524259A4(model, Session__GetCurrentProfileId(session)), initPagingOptions, (Item_4) => (new Msg(4, [Item_4])), (Item_5) => (new Msg(6, [Item_5])))];\n case 4:\n return processSuccess(msg.fields[0]);\n case 5:\n return processSuccess(msg.fields[0]);\n case 6:\n return [new Model(model.SearchType, model.SearchQuery, model.SearchResults, false, model.PagingOptions, model.TotalCount, exnToDisplayString(msg.fields[0])), Cmd_none()];\n default:\n return [new Model(model.SearchType, msg.fields[0], model.SearchResults, model.IsLoading, model.PagingOptions, model.TotalCount, model.Error), Cmd_none()];\n }\n}\n\nfunction _validateSearchQuery(query) {\n if (isNullOrWhiteSpace(query) ? true : (query.trim().length < 3)) {\n return \"Search query too short\";\n }\n else {\n return undefined;\n }\n}\n\nfunction viewForm(model, dispatch) {\n const form = FlexForm$1_$ctor_2ABDDB55((arg) => {\n dispatch(new Msg(0, [arg]));\n }, (_arg) => {\n dispatch(new Msg(1, []));\n }, undefined);\n FlexFormFields$1__AddText_Z44011C05(FlexForm$1__get_Fields(form), \"Query\", _validateSearchQuery, \"Search query\");\n FlexFormBase$1__SetState(form, model.IsLoading, model.Error);\n return FlexFormBase$1__Render_2B595(form, model.SearchQuery);\n}\n\nexport function view(model, dispatch) {\n const elms = toList(delay(() => append((model.TotalCount > 0) ? append(singleton(h1(empty())(singleton_1(\"Search results\"))), delay(() => append(singleton(h3(singleton_1(new Option(6, [])))(singleton_1(`${length(model.SearchResults)} of ${model.TotalCount} records loaded`))), delay(() => singleton(list(empty(), toList(delay(() => append(Model__CanLoadMore(model) ? singleton(button(ofArray([new Option_1(0, [new Color_IColor(5, [])]), new Option_1(16, [model.IsLoading]), new Option_1(18, [(_arg) => {\n dispatch(new Msg(3, []));\n }])]), ofArray([icon(empty(), singleton_1(Fa_i(singleton_1(Icons__ToIcon(new Icons(7, []))), []))), createElement(\"span\", {\n children: reactApi.Children.toArray([\"Load more\"]),\n })]))) : empty_1(), delay(() => (!isEmpty(model.SearchResults) ? singleton(button(ofArray([new Option_1(0, [new Color_IColor(4, [])]), new Option_1(16, [model.IsLoading]), new Option_1(18, [(_arg_1) => {\n dispatch(new Msg(2, []));\n }])]), ofArray([icon(empty(), singleton_1(Fa_i(singleton_1(Icons__ToIcon(new Icons(5, []))), []))), createElement(\"span\", {\n children: reactApi.Children.toArray([\"Reload\"]),\n })]))) : empty_1()))))))))))) : empty_1(), delay(() => append((model.SearchType.tag === 1) ? singleton(viewForm(model, dispatch)) : singleton(defaultOf()), delay(() => {\n let children_4;\n return singleton((children_4 = displayUnifiedEntries(model.SearchResults, model.IsLoading, (value) => {\n }), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_4)),\n })));\n }))))));\n return createElement(\"div\", {\n className: \"container\",\n children: reactApi.Children.toArray(Array.from(elms)),\n });\n}\n\n","import { Record, Union } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { class_type, record_type, list_type, string_type, bool_type, option_type, union_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { update as update_1, prepareEventInfoForSubmit, Model__UpdateEventInfo_Z45EFA9A8, initCommon as initCommon_1, Msg_$reflection, Model_$reflection } from \"./EventInfoManager.js\";\nimport { empty, cons, ofArray, singleton, forAll } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { fromInt32, toInt64, compare } from \"../../fable_modules/fable-library-js.4.24.0/BigInt.js\";\nimport { EventInfo_Default_7F9DDECF, EventInfo_$reflection } from \"../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { utcNow } from \"../../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { Cmd_none, Cmd_batch, Cmd_map } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { some } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { curry2 } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { exnToDisplayString } from \"../Utils.js\";\nimport { FlexFormBase$1__Render_2B595, FlexFormBase$1__SetState } from \"./FlexForm.js\";\nimport { div } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Control.fs.js\";\nimport { singleton as singleton_1, append, delay, toList } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Class, closeable } from \"./Notification.js\";\nimport { defaultOf } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { container } from \"../../fable_modules/Fulma.3.0.0/Layouts/Container.fs.js\";\nimport { h1 } from \"../../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { createElement } from \"react\";\n\nexport class DataExpected extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Record\", \"EditHelper\"];\n }\n}\n\nexport function DataExpected_$reflection() {\n return union_type(\"Omnicv.Client.Components.AddEditRecordFlexForm.DataExpected\", [], DataExpected, () => [[], []]);\n}\n\nexport class Model$2 extends Record {\n constructor(EIMModel, Record, EditHelperData, InProgress, Error$, DataExpected) {\n super();\n this.EIMModel = EIMModel;\n this.Record = Record;\n this.EditHelperData = EditHelperData;\n this.InProgress = InProgress;\n this.Error = Error$;\n this.DataExpected = DataExpected;\n }\n}\n\nexport function Model$2_$reflection(gen0, gen1) {\n return record_type(\"Omnicv.Client.Components.AddEditRecordFlexForm.Model`2\", [gen0, gen1], Model$2, () => [[\"EIMModel\", Model_$reflection()], [\"Record\", gen0], [\"EditHelperData\", option_type(gen1)], [\"InProgress\", bool_type], [\"Error\", option_type(string_type)], [\"DataExpected\", list_type(DataExpected_$reflection())]]);\n}\n\nfunction Model$2__IsItemReady_149A13CF(this$, dataExpectedItem) {\n if (dataExpectedItem.tag === 1) {\n return this$.EditHelperData != null;\n }\n else {\n return Model$2__IsEditing(this$);\n }\n}\n\nexport function Model$2__IsReady(this$) {\n return forAll((dataExpectedItem) => Model$2__IsItemReady_149A13CF(this$, dataExpectedItem), this$.DataExpected);\n}\n\nexport function Model$2__IsEditing(this$) {\n return compare(this$.EIMModel.EventInfo.Id, toInt64(fromInt32(0))) > 0;\n}\n\nexport class Msg$2 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RecordAUpdated\", \"RecordBUpdated\", \"FetchSuccess\", \"FetchEditHelperDataSuccess\", \"Failure\", \"Submit\", \"SubmitSuccess\", \"EIMMsg\"];\n }\n}\n\nexport function Msg$2_$reflection(gen0, gen1) {\n return union_type(\"Omnicv.Client.Components.AddEditRecordFlexForm.Msg`2\", [gen0, gen1], Msg$2, () => [[[\"Item\", EventInfo_$reflection()]], [[\"Item\", gen0]], [[\"Item1\", EventInfo_$reflection()], [\"Item2\", gen0]], [[\"Item\", gen1]], [[\"Item\", class_type(\"System.Exception\")]], [], [[\"Item\", EventInfo_$reflection()]], [[\"Item\", Msg_$reflection()]]]);\n}\n\nfunction initCommon(id, defaultValue, dataExpected) {\n const patternInput = initCommon_1(EventInfo_Default_7F9DDECF(utcNow()));\n return [new Model$2(patternInput[0], defaultValue, undefined, id != null, undefined, dataExpected), Cmd_map((Item) => (new Msg$2(7, [Item])), patternInput[1])];\n}\n\nexport function initNew(defaultValue, fetchAction) {\n const patternInput = initCommon(undefined, defaultValue, singleton(new DataExpected(1, [])));\n const newModel = patternInput[0];\n return [new Model$2(newModel.EIMModel, newModel.Record, newModel.EditHelperData, true, newModel.Error, newModel.DataExpected), Cmd_batch(ofArray([patternInput[1], Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, fetchAction, undefined, (Item) => (new Msg$2(3, [Item])), (Item_1) => (new Msg$2(4, [Item_1])))]))];\n}\n\nexport function initEdit(recordId, defaultValue, fetchAction) {\n const patternInput = initCommon(recordId, defaultValue, singleton(new DataExpected(0, [])));\n const newModel = patternInput[0];\n return [new Model$2(newModel.EIMModel, newModel.Record, newModel.EditHelperData, true, newModel.Error, newModel.DataExpected), Cmd_batch(ofArray([patternInput[1], Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, fetchAction, recordId, (tupledArg) => (new Msg$2(2, [tupledArg[0], tupledArg[1]])), (Item_2) => (new Msg$2(4, [Item_2])))]))];\n}\n\nexport function initEditWithHelperData(recordId, defaultValue, fetchAction, fetchHelperDataAction) {\n const patternInput = initEdit(recordId, defaultValue, fetchAction);\n const newModel = patternInput[0];\n return [new Model$2(newModel.EIMModel, newModel.Record, newModel.EditHelperData, true, newModel.Error, cons(new DataExpected(1, []), newModel.DataExpected)), Cmd_batch(ofArray([patternInput[1], Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, fetchHelperDataAction, undefined, (Item) => (new Msg$2(3, [Item])), (Item_1) => (new Msg$2(4, [Item_1])))]))];\n}\n\nexport function update(session, submitAction, successAction, msg, model) {\n switch (msg.tag) {\n case 0:\n return [new Model$2(Model__UpdateEventInfo_Z45EFA9A8(model.EIMModel, msg.fields[0]), model.Record, model.EditHelperData, model.InProgress, model.Error, model.DataExpected), Cmd_none()];\n case 1:\n return [new Model$2(model.EIMModel, msg.fields[0], model.EditHelperData, model.InProgress, model.Error, model.DataExpected), Cmd_none()];\n case 2:\n return [new Model$2(Model__UpdateEventInfo_Z45EFA9A8(model.EIMModel, msg.fields[0]), msg.fields[1], model.EditHelperData, false, model.Error, model.DataExpected), Cmd_none()];\n case 3:\n return [new Model$2(model.EIMModel, model.Record, some(msg.fields[0]), false, model.Error, model.DataExpected), Cmd_none()];\n case 5:\n return [new Model$2(model.EIMModel, model.Record, model.EditHelperData, true, model.Error, model.DataExpected), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry2(submitAction)(prepareEventInfoForSubmit(session, model.EIMModel)), model.Record, (Item_1) => (new Msg$2(6, [Item_1])), (Item_2) => (new Msg$2(4, [Item_2])))];\n case 6:\n return [new Model$2(model.EIMModel, model.Record, model.EditHelperData, false, model.Error, model.DataExpected), successAction()];\n case 4:\n return [new Model$2(model.EIMModel, model.Record, model.EditHelperData, false, exnToDisplayString(msg.fields[0]), model.DataExpected), Cmd_none()];\n default: {\n const patternInput = update_1(msg.fields[0], model.EIMModel);\n return [new Model$2(patternInput[0], model.Record, model.EditHelperData, model.InProgress, model.Error, model.DataExpected), Cmd_map((Item) => (new Msg$2(7, [Item])), patternInput[1])];\n }\n }\n}\n\nexport function view(buildForm, title, model, dispatch) {\n let form_1;\n const form = buildForm(model, dispatch);\n FlexFormBase$1__SetState(form, model.InProgress, model.Error);\n form_1 = form;\n return div(empty(), toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Error: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => append(singleton_1(container(empty(), singleton(h1(empty())(singleton(title))))), delay(() => (!Model$2__IsReady(model) ? singleton_1(createElement(\"p\", {\n children: \"Loading...\",\n })) : singleton_1(FlexFormBase$1__Render_2B595(form_1, [model.EIMModel.EventInfo, model.Record])))))));\n })));\n}\n\n","import { Union, Record } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { union_type, int64_type, string_type, option_type, bool_type, record_type, lambda_type, class_type, list_type, tuple_type, int32_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { PagingOptionsModule_optionsForNextPage, PagingOptions, PagingOptionsModule_defaultPagingOptions, PagingOptionsModule_basicPagingOptions, EventInfo_$reflection, PagingOptions_$reflection } from \"../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { Router_newUrl, Route_$reflection } from \"../Router.js\";\nimport { length, append, singleton, empty } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Cmd_none } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { curry2 } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { commonAuthService } from \"../CommonServer.js\";\nimport { Session__GetCurrentProfileId } from \"../SharedView.js\";\nimport { exnToDisplayString } from \"../Utils.js\";\n\nexport class Actions$1 extends Record {\n constructor(GetRecords) {\n super();\n this.GetRecords = GetRecords;\n }\n}\n\nexport function Actions$1_$reflection(gen0) {\n return record_type(\"Omnicv.Client.Components.ViewRecords.Actions`1\", [gen0], Actions$1, () => [[\"GetRecords\", lambda_type(int32_type, lambda_type(PagingOptions_$reflection(), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(tuple_type(EventInfo_$reflection(), gen0))])))]]);\n}\n\nexport class Model$1 extends Record {\n constructor(PageSize, Ascending, DateRange, LastFetchSize, Records, Actions, Error$, InProgress, LastPagingOptions) {\n super();\n this.PageSize = (PageSize | 0);\n this.Ascending = Ascending;\n this.DateRange = DateRange;\n this.LastFetchSize = LastFetchSize;\n this.Records = Records;\n this.Actions = Actions;\n this.Error = Error$;\n this.InProgress = InProgress;\n this.LastPagingOptions = LastPagingOptions;\n }\n}\n\nexport function Model$1_$reflection(gen0) {\n return record_type(\"Omnicv.Client.Components.ViewRecords.Model`1\", [gen0], Model$1, () => [[\"PageSize\", int32_type], [\"Ascending\", bool_type], [\"DateRange\", option_type(tuple_type(class_type(\"System.DateTime\"), class_type(\"System.DateTime\")))], [\"LastFetchSize\", option_type(int32_type)], [\"Records\", list_type(tuple_type(EventInfo_$reflection(), gen0))], [\"Actions\", Actions$1_$reflection(gen0)], [\"Error\", option_type(string_type)], [\"InProgress\", bool_type], [\"LastPagingOptions\", option_type(PagingOptions_$reflection())]]);\n}\n\nexport function Model$1__CanFetchMore(this$) {\n const matchValue = this$.LastFetchSize;\n if (matchValue != null) {\n return this$.PageSize <= matchValue;\n }\n else {\n return true;\n }\n}\n\nexport class Msg$1 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RequestFetch\", \"RequestReload\", \"UpdateDateRange\", \"FetchSucceeded\", \"FetchFailed\", \"Delete\", \"DeleteSucceeded\", \"NavigateTo\"];\n }\n}\n\nexport function Msg$1_$reflection(gen0) {\n return union_type(\"Omnicv.Client.Components.ViewRecords.Msg`1\", [gen0], Msg$1, () => [[], [], [[\"Item1\", class_type(\"System.DateTime\")], [\"Item2\", class_type(\"System.DateTime\")]], [[\"Item\", list_type(tuple_type(EventInfo_$reflection(), gen0))]], [[\"Item\", class_type(\"System.Exception\")]], [[\"Item\", int64_type]], [[\"Item\", string_type]], [[\"Item\", Route_$reflection()]]]);\n}\n\nfunction initCommon(actions, pageSize, ascending, dateRange) {\n return [new Model$1(pageSize, ascending, dateRange, undefined, empty(), actions, undefined, false, undefined), singleton((dispatch) => {\n dispatch(new Msg$1(0, []));\n })];\n}\n\nexport function init(actions, pageSize, ascending) {\n return initCommon(actions, pageSize, ascending, undefined);\n}\n\nexport function initDateRange(actions, ascending, dateRange_, dateRange__1) {\n return initCommon(actions, 150, ascending, [dateRange_, dateRange__1]);\n}\n\nexport function update(session, msg, model) {\n switch (msg.tag) {\n case 3: {\n const result = msg.fields[0];\n let newModel;\n const Records = append(model.Records, result);\n newModel = (new Model$1(model.PageSize, model.Ascending, model.DateRange, length(result), Records, model.Actions, model.Error, false, model.LastPagingOptions));\n if ((model.DateRange != null) && Model$1__CanFetchMore(newModel)) {\n return [new Model$1(newModel.PageSize, newModel.Ascending, newModel.DateRange, newModel.LastFetchSize, newModel.Records, newModel.Actions, newModel.Error, true, newModel.LastPagingOptions), singleton((dispatch) => {\n dispatch(new Msg$1(0, []));\n })];\n }\n else {\n return [newModel, Cmd_none()];\n }\n }\n case 1:\n return [new Model$1(model.PageSize, model.Ascending, model.DateRange, undefined, empty(), model.Actions, model.Error, true, undefined), singleton((dispatch_1) => {\n dispatch_1(new Msg$1(0, []));\n })];\n case 2:\n return [new Model$1(model.PageSize, model.Ascending, [msg.fields[0], msg.fields[1]], undefined, empty(), model.Actions, model.Error, true, undefined), singleton((dispatch_2) => {\n dispatch_2(new Msg$1(0, []));\n })];\n case 5:\n return [model, Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, curry2(commonAuthService.DeleteRecord)(Session__GetCurrentProfileId(session)), msg.fields[0], (Item_2) => (new Msg$1(6, [Item_2])), (Item_3) => (new Msg$1(4, [Item_3])))];\n case 6:\n return [new Model$1(model.PageSize, model.Ascending, model.DateRange, model.LastFetchSize, empty(), model.Actions, model.Error, model.InProgress, model.LastPagingOptions), singleton((dispatch_3) => {\n dispatch_3(new Msg$1(0, []));\n })];\n case 4:\n return [new Model$1(model.PageSize, model.Ascending, model.DateRange, model.LastFetchSize, model.Records, model.Actions, exnToDisplayString(msg.fields[0]), false, model.LastPagingOptions), Cmd_none()];\n case 7:\n return [model, Router_newUrl(msg.fields[0])];\n default: {\n let pagingOptions;\n const matchValue = model.LastPagingOptions;\n if (matchValue == null) {\n let basePagingOptions;\n const matchValue_1 = model.DateRange;\n basePagingOptions = ((matchValue_1 != null) ? PagingOptionsModule_basicPagingOptions(matchValue_1[0], matchValue_1[1]) : PagingOptionsModule_defaultPagingOptions);\n pagingOptions = (new PagingOptions(basePagingOptions.LastBoundary, model.PageSize, model.Ascending, basePagingOptions.From, basePagingOptions.To));\n }\n else {\n pagingOptions = PagingOptionsModule_optionsForNextPage(model.Records, matchValue);\n }\n return [new Model$1(model.PageSize, model.Ascending, model.DateRange, model.LastFetchSize, model.Records, model.Actions, model.Error, true, pagingOptions), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry2(model.Actions.GetRecords)(Session__GetCurrentProfileId(session)), pagingOptions, (Item) => (new Msg$1(3, [Item])), (Item_1) => (new Msg$1(4, [Item_1])))];\n }\n }\n}\n\n","import { Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { class_type, record_type, int32_type, string_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { Convert_fromJson } from \"../fable_modules/Fable.SimpleJson.3.24.0/Json.Converter.fs.js\";\nimport { SimpleJson_parse, SimpleJson_mapKeys } from \"../fable_modules/Fable.SimpleJson.3.24.0/SimpleJson.fs.js\";\nimport { createTypeInfo } from \"../fable_modules/Fable.SimpleJson.3.24.0/TypeInfo.Converter.fs.js\";\nimport { singleton, append, map as map_1, ofArray, ofSeq, sort } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { map } from \"../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { comparePrimitives, compareArrays } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { ofSeq as ofSeq_1 } from \"../fable_modules/fable-library-js.4.24.0/Set.js\";\nimport { getItemFromDict } from \"../fable_modules/fable-library-js.4.24.0/MapUtil.js\";\nimport { valuesToSelectOptions } from \"./Utils.js\";\n\nexport class CurrencyDetails extends Record {\n constructor(Code, Symbol$, Name, SymbolNative, DecimalDigits) {\n super();\n this.Code = Code;\n this.Symbol = Symbol$;\n this.Name = Name;\n this.SymbolNative = SymbolNative;\n this.DecimalDigits = (DecimalDigits | 0);\n }\n}\n\nexport function CurrencyDetails_$reflection() {\n return record_type(\"Omnicv.Client.Common.CurrencyUtils.CurrencyDetails\", [], CurrencyDetails, () => [[\"Code\", string_type], [\"Symbol\", string_type], [\"Name\", string_type], [\"SymbolNative\", string_type], [\"DecimalDigits\", int32_type]]);\n}\n\nexport const currencyDetails = Convert_fromJson(SimpleJson_mapKeys((_arg) => {\n switch (_arg) {\n case \"symbol_native\":\n return \"SymbolNative\";\n case \"decimal_digits\":\n return \"DecimalDigits\";\n case \"name\":\n return \"Name\";\n case \"code\":\n return \"Code\";\n case \"symbol\":\n return \"Symbol\";\n default:\n return _arg;\n }\n}, (() => {\n const input = \"\\n{\\n\\t\\\"USD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"$\\\",\\n\\t\\t\\\"name\\\": \\\"US Dollar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"USD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"US dollars\\\"\\n\\t},\\n\\t\\\"CAD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"CA$\\\",\\n\\t\\t\\\"name\\\": \\\"Canadian Dollar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"CAD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Canadian dollars\\\"\\n\\t},\\n\\t\\\"EUR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"€\\\",\\n\\t\\t\\\"name\\\": \\\"Euro\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"€\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"EUR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"euros\\\"\\n\\t},\\n\\t\\\"AED\\\": {\\n\\t\\t\\\"symbol\\\": \\\"AED\\\",\\n\\t\\t\\\"name\\\": \\\"United Arab Emirates Dirham\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"د.إ.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"AED\\\",\\n\\t\\t\\\"name_plural\\\": \\\"UAE dirhams\\\"\\n\\t},\\n\\t\\\"AFN\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Af\\\",\\n\\t\\t\\\"name\\\": \\\"Afghan Afghani\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"؋\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"AFN\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Afghan Afghanis\\\"\\n\\t},\\n\\t\\\"ALL\\\": {\\n\\t\\t\\\"symbol\\\": \\\"ALL\\\",\\n\\t\\t\\\"name\\\": \\\"Albanian Lek\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Lek\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"ALL\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Albanian lekë\\\"\\n\\t},\\n\\t\\\"AMD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"AMD\\\",\\n\\t\\t\\\"name\\\": \\\"Armenian Dram\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"դր.\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"AMD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Armenian drams\\\"\\n\\t},\\n\\t\\\"ARS\\\": {\\n\\t\\t\\\"symbol\\\": \\\"AR$\\\",\\n\\t\\t\\\"name\\\": \\\"Argentine Peso\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"ARS\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Argentine pesos\\\"\\n\\t},\\n\\t\\\"AUD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"AU$\\\",\\n\\t\\t\\\"name\\\": \\\"Australian Dollar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"AUD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Australian dollars\\\"\\n\\t},\\n\\t\\\"AZN\\\": {\\n\\t\\t\\\"symbol\\\": \\\"man.\\\",\\n\\t\\t\\\"name\\\": \\\"Azerbaijani Manat\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"ман.\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"AZN\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Azerbaijani manats\\\"\\n\\t},\\n\\t\\\"BAM\\\": {\\n\\t\\t\\\"symbol\\\": \\\"KM\\\",\\n\\t\\t\\\"name\\\": \\\"Bosnia-Herzegovina Convertible Mark\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"KM\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"BAM\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Bosnia-Herzegovina convertible marks\\\"\\n\\t},\\n\\t\\\"BDT\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Tk\\\",\\n\\t\\t\\\"name\\\": \\\"Bangladeshi Taka\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"৳\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"BDT\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Bangladeshi takas\\\"\\n\\t},\\n\\t\\\"BGN\\\": {\\n\\t\\t\\\"symbol\\\": \\\"BGN\\\",\\n\\t\\t\\\"name\\\": \\\"Bulgarian Lev\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"лв.\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"BGN\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Bulgarian leva\\\"\\n\\t},\\n\\t\\\"BHD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"BD\\\",\\n\\t\\t\\\"name\\\": \\\"Bahraini Dinar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"د.ب.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 3,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"BHD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Bahraini dinars\\\"\\n\\t},\\n\\t\\\"BIF\\\": {\\n\\t\\t\\\"symbol\\\": \\\"FBu\\\",\\n\\t\\t\\\"name\\\": \\\"Burundian Franc\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"FBu\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"BIF\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Burundian francs\\\"\\n\\t},\\n\\t\\\"BND\\\": {\\n\\t\\t\\\"symbol\\\": \\\"BN$\\\",\\n\\t\\t\\\"name\\\": \\\"Brunei Dollar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"BND\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Brunei dollars\\\"\\n\\t},\\n\\t\\\"BOB\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Bs\\\",\\n\\t\\t\\\"name\\\": \\\"Bolivian Boliviano\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Bs\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"BOB\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Bolivian bolivianos\\\"\\n\\t},\\n\\t\\\"BRL\\\": {\\n\\t\\t\\\"symbol\\\": \\\"R$\\\",\\n\\t\\t\\\"name\\\": \\\"Brazilian Real\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"R$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"BRL\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Brazilian reals\\\"\\n\\t},\\n\\t\\\"BWP\\\": {\\n\\t\\t\\\"symbol\\\": \\\"BWP\\\",\\n\\t\\t\\\"name\\\": \\\"Botswanan Pula\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"P\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"BWP\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Botswanan pulas\\\"\\n\\t},\\n\\t\\\"BYN\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Br\\\",\\n\\t\\t\\\"name\\\": \\\"Belarusian Ruble\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"руб.\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"BYN\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Belarusian rubles\\\"\\n\\t},\\n\\t\\\"BZD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"BZ$\\\",\\n\\t\\t\\\"name\\\": \\\"Belize Dollar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"BZD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Belize dollars\\\"\\n\\t},\\n\\t\\\"CDF\\\": {\\n\\t\\t\\\"symbol\\\": \\\"CDF\\\",\\n\\t\\t\\\"name\\\": \\\"Congolese Franc\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"FrCD\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"CDF\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Congolese francs\\\"\\n\\t},\\n\\t\\\"CHF\\\": {\\n\\t\\t\\\"symbol\\\": \\\"CHF\\\",\\n\\t\\t\\\"name\\\": \\\"Swiss Franc\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"CHF\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0.05,\\n\\t\\t\\\"code\\\": \\\"CHF\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Swiss francs\\\"\\n\\t},\\n\\t\\\"CLP\\\": {\\n\\t\\t\\\"symbol\\\": \\\"CL$\\\",\\n\\t\\t\\\"name\\\": \\\"Chilean Peso\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"CLP\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Chilean pesos\\\"\\n\\t},\\n\\t\\\"CNY\\\": {\\n\\t\\t\\\"symbol\\\": \\\"CN¥\\\",\\n\\t\\t\\\"name\\\": \\\"Chinese Yuan\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"CN¥\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"CNY\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Chinese yuan\\\"\\n\\t},\\n\\t\\\"COP\\\": {\\n\\t\\t\\\"symbol\\\": \\\"CO$\\\",\\n\\t\\t\\\"name\\\": \\\"Colombian Peso\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"COP\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Colombian pesos\\\"\\n\\t},\\n\\t\\\"CRC\\\": {\\n\\t\\t\\\"symbol\\\": \\\"₡\\\",\\n\\t\\t\\\"name\\\": \\\"Costa Rican Colón\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"₡\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"CRC\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Costa Rican colóns\\\"\\n\\t},\\n\\t\\\"CVE\\\": {\\n\\t\\t\\\"symbol\\\": \\\"CV$\\\",\\n\\t\\t\\\"name\\\": \\\"Cape Verdean Escudo\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"CV$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"CVE\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Cape Verdean escudos\\\"\\n\\t},\\n\\t\\\"CZK\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Kč\\\",\\n\\t\\t\\\"name\\\": \\\"Czech Republic Koruna\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Kč\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"CZK\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Czech Republic korunas\\\"\\n\\t},\\n\\t\\\"DJF\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Fdj\\\",\\n\\t\\t\\\"name\\\": \\\"Djiboutian Franc\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Fdj\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"DJF\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Djiboutian francs\\\"\\n\\t},\\n\\t\\\"DKK\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Dkr\\\",\\n\\t\\t\\\"name\\\": \\\"Danish Krone\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"kr\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"DKK\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Danish kroner\\\"\\n\\t},\\n\\t\\\"DOP\\\": {\\n\\t\\t\\\"symbol\\\": \\\"RD$\\\",\\n\\t\\t\\\"name\\\": \\\"Dominican Peso\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"RD$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"DOP\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Dominican pesos\\\"\\n\\t},\\n\\t\\\"DZD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"DA\\\",\\n\\t\\t\\\"name\\\": \\\"Algerian Dinar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"د.ج.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"DZD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Algerian dinars\\\"\\n\\t},\\n\\t\\\"EEK\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Ekr\\\",\\n\\t\\t\\\"name\\\": \\\"Estonian Kroon\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"kr\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"EEK\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Estonian kroons\\\"\\n\\t},\\n\\t\\\"EGP\\\": {\\n\\t\\t\\\"symbol\\\": \\\"EGP\\\",\\n\\t\\t\\\"name\\\": \\\"Egyptian Pound\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"ج.م.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"EGP\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Egyptian pounds\\\"\\n\\t},\\n\\t\\\"ERN\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Nfk\\\",\\n\\t\\t\\\"name\\\": \\\"Eritrean Nakfa\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Nfk\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"ERN\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Eritrean nakfas\\\"\\n\\t},\\n\\t\\\"ETB\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Br\\\",\\n\\t\\t\\\"name\\\": \\\"Ethiopian Birr\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Br\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"ETB\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Ethiopian birrs\\\"\\n\\t},\\n\\t\\\"GBP\\\": {\\n\\t\\t\\\"symbol\\\": \\\"£\\\",\\n\\t\\t\\\"name\\\": \\\"British Pound Sterling\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"£\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"GBP\\\",\\n\\t\\t\\\"name_plural\\\": \\\"British pounds sterling\\\"\\n\\t},\\n\\t\\\"GEL\\\": {\\n\\t\\t\\\"symbol\\\": \\\"GEL\\\",\\n\\t\\t\\\"name\\\": \\\"Georgian Lari\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"GEL\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"GEL\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Georgian laris\\\"\\n\\t},\\n\\t\\\"GHS\\\": {\\n\\t\\t\\\"symbol\\\": \\\"GH₵\\\",\\n\\t\\t\\\"name\\\": \\\"Ghanaian Cedi\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"GH₵\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"GHS\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Ghanaian cedis\\\"\\n\\t},\\n\\t\\\"GNF\\\": {\\n\\t\\t\\\"symbol\\\": \\\"FG\\\",\\n\\t\\t\\\"name\\\": \\\"Guinean Franc\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"FG\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"GNF\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Guinean francs\\\"\\n\\t},\\n\\t\\\"GTQ\\\": {\\n\\t\\t\\\"symbol\\\": \\\"GTQ\\\",\\n\\t\\t\\\"name\\\": \\\"Guatemalan Quetzal\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Q\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"GTQ\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Guatemalan quetzals\\\"\\n\\t},\\n\\t\\\"HKD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"HK$\\\",\\n\\t\\t\\\"name\\\": \\\"Hong Kong Dollar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"HKD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Hong Kong dollars\\\"\\n\\t},\\n\\t\\\"HNL\\\": {\\n\\t\\t\\\"symbol\\\": \\\"HNL\\\",\\n\\t\\t\\\"name\\\": \\\"Honduran Lempira\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"L\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"HNL\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Honduran lempiras\\\"\\n\\t},\\n\\t\\\"HRK\\\": {\\n\\t\\t\\\"symbol\\\": \\\"kn\\\",\\n\\t\\t\\\"name\\\": \\\"Croatian Kuna\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"kn\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"HRK\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Croatian kunas\\\"\\n\\t},\\n\\t\\\"HUF\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Ft\\\",\\n\\t\\t\\\"name\\\": \\\"Hungarian Forint\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Ft\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"HUF\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Hungarian forints\\\"\\n\\t},\\n\\t\\\"IDR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Rp\\\",\\n\\t\\t\\\"name\\\": \\\"Indonesian Rupiah\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Rp\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"IDR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Indonesian rupiahs\\\"\\n\\t},\\n\\t\\\"ILS\\\": {\\n\\t\\t\\\"symbol\\\": \\\"₪\\\",\\n\\t\\t\\\"name\\\": \\\"Israeli New Sheqel\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"₪\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"ILS\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Israeli new sheqels\\\"\\n\\t},\\n\\t\\\"INR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Rs\\\",\\n\\t\\t\\\"name\\\": \\\"Indian Rupee\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"টকা\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"INR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Indian rupees\\\"\\n\\t},\\n\\t\\\"IQD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"IQD\\\",\\n\\t\\t\\\"name\\\": \\\"Iraqi Dinar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"د.ع.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"IQD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Iraqi dinars\\\"\\n\\t},\\n\\t\\\"IRR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"IRR\\\",\\n\\t\\t\\\"name\\\": \\\"Iranian Rial\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"﷼\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"IRR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Iranian rials\\\"\\n\\t},\\n\\t\\\"ISK\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Ikr\\\",\\n\\t\\t\\\"name\\\": \\\"Icelandic Króna\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"kr\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"ISK\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Icelandic krónur\\\"\\n\\t},\\n\\t\\\"JMD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"J$\\\",\\n\\t\\t\\\"name\\\": \\\"Jamaican Dollar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"JMD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Jamaican dollars\\\"\\n\\t},\\n\\t\\\"JOD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"JD\\\",\\n\\t\\t\\\"name\\\": \\\"Jordanian Dinar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"د.أ.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 3,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"JOD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Jordanian dinars\\\"\\n\\t},\\n\\t\\\"JPY\\\": {\\n\\t\\t\\\"symbol\\\": \\\"¥\\\",\\n\\t\\t\\\"name\\\": \\\"Japanese Yen\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"¥\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"JPY\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Japanese yen\\\"\\n\\t},\\n\\t\\\"KES\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Ksh\\\",\\n\\t\\t\\\"name\\\": \\\"Kenyan Shilling\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Ksh\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"KES\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Kenyan shillings\\\"\\n\\t},\\n\\t\\\"KHR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"KHR\\\",\\n\\t\\t\\\"name\\\": \\\"Cambodian Riel\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"៛\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"KHR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Cambodian riels\\\"\\n\\t},\\n\\t\\\"KMF\\\": {\\n\\t\\t\\\"symbol\\\": \\\"CF\\\",\\n\\t\\t\\\"name\\\": \\\"Comorian Franc\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"FC\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"KMF\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Comorian francs\\\"\\n\\t},\\n\\t\\\"KRW\\\": {\\n\\t\\t\\\"symbol\\\": \\\"₩\\\",\\n\\t\\t\\\"name\\\": \\\"South Korean Won\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"₩\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"KRW\\\",\\n\\t\\t\\\"name_plural\\\": \\\"South Korean won\\\"\\n\\t},\\n\\t\\\"KWD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"KD\\\",\\n\\t\\t\\\"name\\\": \\\"Kuwaiti Dinar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"د.ك.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 3,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"KWD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Kuwaiti dinars\\\"\\n\\t},\\n\\t\\\"KZT\\\": {\\n\\t\\t\\\"symbol\\\": \\\"KZT\\\",\\n\\t\\t\\\"name\\\": \\\"Kazakhstani Tenge\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"тңг.\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"KZT\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Kazakhstani tenges\\\"\\n\\t},\\n\\t\\\"LBP\\\": {\\n\\t\\t\\\"symbol\\\": \\\"LB£\\\",\\n\\t\\t\\\"name\\\": \\\"Lebanese Pound\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"ل.ل.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"LBP\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Lebanese pounds\\\"\\n\\t},\\n\\t\\\"LKR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"SLRs\\\",\\n\\t\\t\\\"name\\\": \\\"Sri Lankan Rupee\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"SL Re\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"LKR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Sri Lankan rupees\\\"\\n\\t},\\n\\t\\\"LTL\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Lt\\\",\\n\\t\\t\\\"name\\\": \\\"Lithuanian Litas\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Lt\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"LTL\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Lithuanian litai\\\"\\n\\t},\\n\\t\\\"LVL\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Ls\\\",\\n\\t\\t\\\"name\\\": \\\"Latvian Lats\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Ls\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"LVL\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Latvian lati\\\"\\n\\t},\\n\\t\\\"LYD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"LD\\\",\\n\\t\\t\\\"name\\\": \\\"Libyan Dinar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"د.ل.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 3,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"LYD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Libyan dinars\\\"\\n\\t},\\n\\t\\\"MAD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"MAD\\\",\\n\\t\\t\\\"name\\\": \\\"Moroccan Dirham\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"د.م.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"MAD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Moroccan dirhams\\\"\\n\\t},\\n\\t\\\"MDL\\\": {\\n\\t\\t\\\"symbol\\\": \\\"MDL\\\",\\n\\t\\t\\\"name\\\": \\\"Moldovan Leu\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"MDL\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"MDL\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Moldovan lei\\\"\\n\\t},\\n\\t\\\"MGA\\\": {\\n\\t\\t\\\"symbol\\\": \\\"MGA\\\",\\n\\t\\t\\\"name\\\": \\\"Malagasy Ariary\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"MGA\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"MGA\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Malagasy Ariaries\\\"\\n\\t},\\n\\t\\\"MKD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"MKD\\\",\\n\\t\\t\\\"name\\\": \\\"Macedonian Denar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"MKD\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"MKD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Macedonian denari\\\"\\n\\t},\\n\\t\\\"MMK\\\": {\\n\\t\\t\\\"symbol\\\": \\\"MMK\\\",\\n\\t\\t\\\"name\\\": \\\"Myanma Kyat\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"K\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"MMK\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Myanma kyats\\\"\\n\\t},\\n\\t\\\"MOP\\\": {\\n\\t\\t\\\"symbol\\\": \\\"MOP$\\\",\\n\\t\\t\\\"name\\\": \\\"Macanese Pataca\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"MOP$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"MOP\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Macanese patacas\\\"\\n\\t},\\n\\t\\\"MUR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"MURs\\\",\\n\\t\\t\\\"name\\\": \\\"Mauritian Rupee\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"MURs\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"MUR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Mauritian rupees\\\"\\n\\t},\\n\\t\\\"MXN\\\": {\\n\\t\\t\\\"symbol\\\": \\\"MX$\\\",\\n\\t\\t\\\"name\\\": \\\"Mexican Peso\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"MXN\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Mexican pesos\\\"\\n\\t},\\n\\t\\\"MYR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"RM\\\",\\n\\t\\t\\\"name\\\": \\\"Malaysian Ringgit\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"RM\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"MYR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Malaysian ringgits\\\"\\n\\t},\\n\\t\\\"MZN\\\": {\\n\\t\\t\\\"symbol\\\": \\\"MTn\\\",\\n\\t\\t\\\"name\\\": \\\"Mozambican Metical\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"MTn\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"MZN\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Mozambican meticals\\\"\\n\\t},\\n\\t\\\"NAD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"N$\\\",\\n\\t\\t\\\"name\\\": \\\"Namibian Dollar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"N$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"NAD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Namibian dollars\\\"\\n\\t},\\n\\t\\\"NGN\\\": {\\n\\t\\t\\\"symbol\\\": \\\"₦\\\",\\n\\t\\t\\\"name\\\": \\\"Nigerian Naira\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"₦\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"NGN\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Nigerian nairas\\\"\\n\\t},\\n\\t\\\"NIO\\\": {\\n\\t\\t\\\"symbol\\\": \\\"C$\\\",\\n\\t\\t\\\"name\\\": \\\"Nicaraguan Córdoba\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"C$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"NIO\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Nicaraguan córdobas\\\"\\n\\t},\\n\\t\\\"NOK\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Nkr\\\",\\n\\t\\t\\\"name\\\": \\\"Norwegian Krone\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"kr\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"NOK\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Norwegian kroner\\\"\\n\\t},\\n\\t\\\"NPR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"NPRs\\\",\\n\\t\\t\\\"name\\\": \\\"Nepalese Rupee\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"नेरू\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"NPR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Nepalese rupees\\\"\\n\\t},\\n\\t\\\"NZD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"NZ$\\\",\\n\\t\\t\\\"name\\\": \\\"New Zealand Dollar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"NZD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"New Zealand dollars\\\"\\n\\t},\\n\\t\\\"OMR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"OMR\\\",\\n\\t\\t\\\"name\\\": \\\"Omani Rial\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"ر.ع.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 3,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"OMR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Omani rials\\\"\\n\\t},\\n\\t\\\"PAB\\\": {\\n\\t\\t\\\"symbol\\\": \\\"B/.\\\",\\n\\t\\t\\\"name\\\": \\\"Panamanian Balboa\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"B/.\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"PAB\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Panamanian balboas\\\"\\n\\t},\\n\\t\\\"PEN\\\": {\\n\\t\\t\\\"symbol\\\": \\\"S/.\\\",\\n\\t\\t\\\"name\\\": \\\"Peruvian Nuevo Sol\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"S/.\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"PEN\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Peruvian nuevos soles\\\"\\n\\t},\\n\\t\\\"PHP\\\": {\\n\\t\\t\\\"symbol\\\": \\\"₱\\\",\\n\\t\\t\\\"name\\\": \\\"Philippine Peso\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"₱\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"PHP\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Philippine pesos\\\"\\n\\t},\\n\\t\\\"PKR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"PKRs\\\",\\n\\t\\t\\\"name\\\": \\\"Pakistani Rupee\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"₨\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"PKR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Pakistani rupees\\\"\\n\\t},\\n\\t\\\"PLN\\\": {\\n\\t\\t\\\"symbol\\\": \\\"zł\\\",\\n\\t\\t\\\"name\\\": \\\"Polish Zloty\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"zł\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"PLN\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Polish zlotys\\\"\\n\\t},\\n\\t\\\"PYG\\\": {\\n\\t\\t\\\"symbol\\\": \\\"₲\\\",\\n\\t\\t\\\"name\\\": \\\"Paraguayan Guarani\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"₲\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"PYG\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Paraguayan guaranis\\\"\\n\\t},\\n\\t\\\"QAR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"QR\\\",\\n\\t\\t\\\"name\\\": \\\"Qatari Rial\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"ر.ق.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"QAR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Qatari rials\\\"\\n\\t},\\n\\t\\\"RON\\\": {\\n\\t\\t\\\"symbol\\\": \\\"RON\\\",\\n\\t\\t\\\"name\\\": \\\"Romanian Leu\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"RON\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"RON\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Romanian lei\\\"\\n\\t},\\n\\t\\\"RSD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"din.\\\",\\n\\t\\t\\\"name\\\": \\\"Serbian Dinar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"дин.\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"RSD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Serbian dinars\\\"\\n\\t},\\n\\t\\\"RUB\\\": {\\n\\t\\t\\\"symbol\\\": \\\"RUB\\\",\\n\\t\\t\\\"name\\\": \\\"Russian Ruble\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"₽.\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"RUB\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Russian rubles\\\"\\n\\t},\\n\\t\\\"RWF\\\": {\\n\\t\\t\\\"symbol\\\": \\\"RWF\\\",\\n\\t\\t\\\"name\\\": \\\"Rwandan Franc\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"FR\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"RWF\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Rwandan francs\\\"\\n\\t},\\n\\t\\\"SAR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"SR\\\",\\n\\t\\t\\\"name\\\": \\\"Saudi Riyal\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"ر.س.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"SAR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Saudi riyals\\\"\\n\\t},\\n\\t\\\"SDG\\\": {\\n\\t\\t\\\"symbol\\\": \\\"SDG\\\",\\n\\t\\t\\\"name\\\": \\\"Sudanese Pound\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"SDG\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"SDG\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Sudanese pounds\\\"\\n\\t},\\n\\t\\\"SEK\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Skr\\\",\\n\\t\\t\\\"name\\\": \\\"Swedish Krona\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"kr\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"SEK\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Swedish kronor\\\"\\n\\t},\\n\\t\\\"SGD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"S$\\\",\\n\\t\\t\\\"name\\\": \\\"Singapore Dollar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"SGD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Singapore dollars\\\"\\n\\t},\\n\\t\\\"SOS\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Ssh\\\",\\n\\t\\t\\\"name\\\": \\\"Somali Shilling\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Ssh\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"SOS\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Somali shillings\\\"\\n\\t},\\n\\t\\\"SYP\\\": {\\n\\t\\t\\\"symbol\\\": \\\"SY£\\\",\\n\\t\\t\\\"name\\\": \\\"Syrian Pound\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"ل.س.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"SYP\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Syrian pounds\\\"\\n\\t},\\n\\t\\\"THB\\\": {\\n\\t\\t\\\"symbol\\\": \\\"฿\\\",\\n\\t\\t\\\"name\\\": \\\"Thai Baht\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"฿\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"THB\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Thai baht\\\"\\n\\t},\\n\\t\\\"TND\\\": {\\n\\t\\t\\\"symbol\\\": \\\"DT\\\",\\n\\t\\t\\\"name\\\": \\\"Tunisian Dinar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"د.ت.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 3,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"TND\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Tunisian dinars\\\"\\n\\t},\\n\\t\\\"TOP\\\": {\\n\\t\\t\\\"symbol\\\": \\\"T$\\\",\\n\\t\\t\\\"name\\\": \\\"Tongan Paʻanga\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"T$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"TOP\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Tongan paʻanga\\\"\\n\\t},\\n\\t\\\"TRY\\\": {\\n\\t\\t\\\"symbol\\\": \\\"TL\\\",\\n\\t\\t\\\"name\\\": \\\"Turkish Lira\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"TL\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"TRY\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Turkish Lira\\\"\\n\\t},\\n\\t\\\"TTD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"TT$\\\",\\n\\t\\t\\\"name\\\": \\\"Trinidad and Tobago Dollar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"TTD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Trinidad and Tobago dollars\\\"\\n\\t},\\n\\t\\\"TWD\\\": {\\n\\t\\t\\\"symbol\\\": \\\"NT$\\\",\\n\\t\\t\\\"name\\\": \\\"New Taiwan Dollar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"NT$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"TWD\\\",\\n\\t\\t\\\"name_plural\\\": \\\"New Taiwan dollars\\\"\\n\\t},\\n\\t\\\"TZS\\\": {\\n\\t\\t\\\"symbol\\\": \\\"TSh\\\",\\n\\t\\t\\\"name\\\": \\\"Tanzanian Shilling\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"TSh\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"TZS\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Tanzanian shillings\\\"\\n\\t},\\n\\t\\\"UAH\\\": {\\n\\t\\t\\\"symbol\\\": \\\"₴\\\",\\n\\t\\t\\\"name\\\": \\\"Ukrainian Hryvnia\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"₴\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"UAH\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Ukrainian hryvnias\\\"\\n\\t},\\n\\t\\\"UGX\\\": {\\n\\t\\t\\\"symbol\\\": \\\"USh\\\",\\n\\t\\t\\\"name\\\": \\\"Ugandan Shilling\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"USh\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"UGX\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Ugandan shillings\\\"\\n\\t},\\n\\t\\\"UYU\\\": {\\n\\t\\t\\\"symbol\\\": \\\"$U\\\",\\n\\t\\t\\\"name\\\": \\\"Uruguayan Peso\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"$\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"UYU\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Uruguayan pesos\\\"\\n\\t},\\n\\t\\\"UZS\\\": {\\n\\t\\t\\\"symbol\\\": \\\"UZS\\\",\\n\\t\\t\\\"name\\\": \\\"Uzbekistan Som\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"UZS\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"UZS\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Uzbekistan som\\\"\\n\\t},\\n\\t\\\"VEF\\\": {\\n\\t\\t\\\"symbol\\\": \\\"Bs.F.\\\",\\n\\t\\t\\\"name\\\": \\\"Venezuelan Bolívar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"Bs.F.\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"VEF\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Venezuelan bolívars\\\"\\n\\t},\\n\\t\\\"VND\\\": {\\n\\t\\t\\\"symbol\\\": \\\"₫\\\",\\n\\t\\t\\\"name\\\": \\\"Vietnamese Dong\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"₫\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"VND\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Vietnamese dong\\\"\\n\\t},\\n\\t\\\"XAF\\\": {\\n\\t\\t\\\"symbol\\\": \\\"FCFA\\\",\\n\\t\\t\\\"name\\\": \\\"CFA Franc BEAC\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"FCFA\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"XAF\\\",\\n\\t\\t\\\"name_plural\\\": \\\"CFA francs BEAC\\\"\\n\\t},\\n\\t\\\"XOF\\\": {\\n\\t\\t\\\"symbol\\\": \\\"CFA\\\",\\n\\t\\t\\\"name\\\": \\\"CFA Franc BCEAO\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"CFA\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"XOF\\\",\\n\\t\\t\\\"name_plural\\\": \\\"CFA francs BCEAO\\\"\\n\\t},\\n\\t\\\"YER\\\": {\\n\\t\\t\\\"symbol\\\": \\\"YR\\\",\\n\\t\\t\\\"name\\\": \\\"Yemeni Rial\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"ر.ي.‏\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"YER\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Yemeni rials\\\"\\n\\t},\\n\\t\\\"ZAR\\\": {\\n\\t\\t\\\"symbol\\\": \\\"R\\\",\\n\\t\\t\\\"name\\\": \\\"South African Rand\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"R\\\",\\n\\t\\t\\\"decimal_digits\\\": 2,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"ZAR\\\",\\n\\t\\t\\\"name_plural\\\": \\\"South African rand\\\"\\n\\t},\\n\\t\\\"ZMK\\\": {\\n\\t\\t\\\"symbol\\\": \\\"ZK\\\",\\n\\t\\t\\\"name\\\": \\\"Zambian Kwacha\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"ZK\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"ZMK\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Zambian kwachas\\\"\\n\\t},\\n\\t\\\"ZWL\\\": {\\n\\t\\t\\\"symbol\\\": \\\"ZWL$\\\",\\n\\t\\t\\\"name\\\": \\\"Zimbabwean Dollar\\\",\\n\\t\\t\\\"symbol_native\\\": \\\"ZWL$\\\",\\n\\t\\t\\\"decimal_digits\\\": 0,\\n\\t\\t\\\"rounding\\\": 0,\\n\\t\\t\\\"code\\\": \\\"ZWL\\\",\\n\\t\\t\\\"name_plural\\\": \\\"Zimbabwean Dollar\\\"\\n\\t}\\n}\\n\";\n return SimpleJson_parse(input);\n})()), createTypeInfo(class_type(\"System.Collections.Generic.Dictionary`2\", [string_type, CurrencyDetails_$reflection()])));\n\nfunction getCurrencyCaption(ccy) {\n return [ccy.Code, `${ccy.Symbol} - ${ccy.Name}`];\n}\n\nexport const currenciesOptions = sort(ofSeq(map(getCurrencyCaption, currencyDetails.values())), {\n Compare: compareArrays,\n});\n\nexport const allCurrencies = ofSeq_1(currencyDetails.keys(), {\n Compare: comparePrimitives,\n});\n\nexport const popularCurrencies = ofArray([\"USD\", \"EUR\", \"CAD\", \"HKD\", \"AUD\", \"JPY\", \"GBP\"]);\n\nexport const popularCurrenciesOptions = map_1((ccy) => getCurrencyCaption(getItemFromDict(currencyDetails, ccy)), popularCurrencies);\n\nexport const supportedCurrenciesForEditing = append(singleton([\"---\", \"--- Popular currencies ---\"]), append(popularCurrenciesOptions, append(singleton([\"---\", \"--- All currencies ---\"]), currenciesOptions)));\n\nexport function supportedCurrenciesForEditingOptions(name) {\n return valuesToSelectOptions(supportedCurrenciesForEditing, name);\n}\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { union_type, list_type, class_type, string_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport { Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection } from \"../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\n\nexport class TableOption extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-bordered\", \"is-striped\", \"is-fullwidth\", \"is-narrow\", \"is-hoverable\", \"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function TableOption_$reflection() {\n return union_type(\"Fulma.Table.TableOption\", [], TableOption, () => [[], [], [], [], [], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate
      \n */\nexport function table(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 6:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 5:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 7:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n }, \"table\"), (props_1, children_1) => react.createElement(\"table\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n","import { FinancialClientModule_$ctor } from \"../../FinancialClientModule.js\";\nimport { Remoting_buildProxy_64DC51C } from \"../../fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js\";\nimport { RemotingModule_createApi, RemotingModule_withRouteBuilder } from \"../../fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js\";\nimport { printf, toText } from \"../../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { FinancialService_$reflection, AssetValueService_$reflection } from \"../../Omnicv.Shared/FinancialAPI.js\";\nimport { reverse, singleton as singleton_1, ofArray, map } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { empty, singleton, append, delay, toList } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { formatDistanceToNow } from \"date-fns\";\nimport { timeFormatOptions } from \"../../Omnicv.Client.Common/Utils.js\";\nimport * as react from \"react\";\nimport * as common from \"../../../src/javascript/common.js\";\nimport { Option, button } from \"../../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { Size_ISize, Color_IColor } from \"../../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { value as value_1 } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Option as Option_1, icon } from \"../../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport { Fa_i } from \"../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { Icons__ToIcon } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { Icons } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { TableOption, table } from \"../../fable_modules/Fulma.3.0.0/Elements/Table.fs.js\";\n\nexport const financialModule = FinancialClientModule_$ctor();\n\nexport const assetValueService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/mod/fin-val/%s\"))(m), RemotingModule_createApi()), AssetValueService_$reflection());\n\nexport const financialService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/mod/fin-hi/%s\"))(m), RemotingModule_createApi()), FinancialService_$reflection());\n\nexport function valuesToTable(targetCurrency, data, deleteEntry) {\n let children_14, children_12;\n const rows = map((value) => {\n const children_6 = toList(delay(() => {\n let children;\n return append(singleton((children = [formatDistanceToNow(value.Timestamp, timeFormatOptions)], react.createElement(\"td\", {}, ...children))), delay(() => {\n let children_2;\n return append(singleton((children_2 = [common.formatCurrencyValue(targetCurrency, value.Value)], react.createElement(\"td\", {}, ...children_2))), delay(() => {\n let children_4;\n return (deleteEntry != null) ? singleton((children_4 = [button(ofArray([new Option(0, [new Color_IColor(8, [])]), new Option(5, []), new Option(18, [(_arg) => {\n if (window.confirm(`${\"Confirm delete\"}:\n${\"Are you sure you want to delete this entry?\"}`)) {\n (() => {\n value_1(deleteEntry)(value.Id);\n })();\n }\n }])]), singleton_1(icon(singleton_1(new Option_1(0, [new Size_ISize(0, [])])), singleton_1(Fa_i(singleton_1(Icons__ToIcon(new Icons(2, []))), [])))))], react.createElement(\"td\", {}, ...children_4))) : empty();\n }));\n }));\n }));\n return react.createElement(\"tr\", {}, ...children_6);\n }, reverse(data));\n return table(ofArray([new TableOption(2, []), new TableOption(1, [])]), ofArray([(children_14 = [(children_12 = [react.createElement(\"th\", {}, \"Date\"), react.createElement(\"th\", {}, \"Value\")], react.createElement(\"tr\", {}, ...children_12))], react.createElement(\"thead\", {}, ...children_14)), react.createElement(\"tbody\", {}, ...rows)]));\n}\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddProps_Z4E55E0BD, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection, Size_ISize_$reflection } from \"../Common.fs.js\";\nimport { bool_type, union_type, list_type, class_type, string_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\nimport { singleton } from \"../../fable-library-js.4.24.0/List.js\";\nimport { Reflection_getCaseName } from \"../Common.fs.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Size\", \"is-centered\", \"is-right\", \"is-boxed\", \"is-toggle\", \"is-toggle-rounded\", \"is-fullwidth\", \"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Tabs.Option\", [], Option, () => [[[\"Item\", Size_ISize_$reflection()]], [], [], [], [], [], [], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\nexport class Tab_Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-active\", \"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function Tab_Option_$reflection() {\n return union_type(\"Fulma.Tabs.Tab.Option\", [], Tab_Option, () => [[[\"Item\", bool_type]], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate
        \n */\nexport function tabs(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 0:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(option.fields[0]));\n case 8:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 7:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 9:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n }, \"tabs\"), (props_1, children_1) => react.createElement(\"div\", keyValueList(props_1, 1), ...children_1), singleton(react.createElement(\"ul\", {}, ...children)));\n}\n\n/**\n * Generate
      • \n */\nexport function tab(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 2:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 1:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 3:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n if (option.fields[0]) {\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n else {\n return result;\n }\n }\n }), (props_1, children_1) => react.createElement(\"li\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n","import { Union } from \"../../../fable-library-js.4.24.0/Types.js\";\nimport { union_type, bool_type, list_type, class_type, string_type } from \"../../../fable-library-js.4.24.0/Reflection.js\";\nimport { Common_parseOptions, Common_GenericOptions__ToReactElement_Z2B8EEFE, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddProps_Z4E55E0BD, Color_ofColor, Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection, Color_IColor_$reflection, Size_ISize_$reflection } from \"../../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../../fable-library-js.4.24.0/MapUtil.js\";\nimport { Reflection_getCaseName } from \"../../Common.fs.js\";\nimport { HTMLAttr } from \"../../../Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport { singleton } from \"../../../fable-library-js.4.24.0/List.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"CustomClass\", \"Props\", \"Size\", \"is-focused\", \"is-active\", \"is-hovered\", \"is-fullwidth\", \"is-centered\", \"is-right\", \"is-boxed\", \"has-name\", \"is-empty\", \"Color\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.File.Option\", [], Option, () => [[[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", Size_ISize_$reflection()]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [[\"Item\", bool_type]], [], [], [], [], [], [[\"Item\", bool_type]], [[\"Item\", Color_IColor_$reflection()]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate
        \n */\nexport function file(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n let matchResult, state;\n switch (option.tag) {\n case 6:\n case 7:\n case 8:\n case 9:\n case 10: {\n matchResult = 1;\n break;\n }\n case 12: {\n matchResult = 2;\n break;\n }\n case 1: {\n matchResult = 4;\n break;\n }\n case 0: {\n matchResult = 5;\n break;\n }\n case 13: {\n matchResult = 6;\n break;\n }\n case 3: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n case 4: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n case 5: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n case 11: {\n matchResult = 3;\n state = option.fields[0];\n break;\n }\n default:\n matchResult = 0;\n }\n switch (matchResult) {\n case 0:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Reflection_getCaseName(option.fields[0]));\n case 1:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n case 2:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Color_ofColor(option.fields[0]));\n case 3:\n if (state) {\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n else {\n return result;\n }\n case 4:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 5:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n }\n }, \"file\"), (props_1, children_1) => react.createElement(\"div\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n/**\n * Generate \n */\nexport function input(options) {\n return Common_GenericOptions__ToReactElement_Z2B8EEFE(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"file-input\", singleton(new HTMLAttr(159, [\"file\"]))), (props) => react.createElement(\"input\", keyValueList(props, 1)));\n}\n\n/**\n * Generate \n */\nexport function cta(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"file-cta\"), (props, children_1) => react.createElement(\"span\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate \n */\nexport function name(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"file-name\"), (props, children_1) => react.createElement(\"span\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate \n */\nexport function icon(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"file-icon\"), (props, children_1) => react.createElement(\"span\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate \n */\nexport function Label_span(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"file-label\"), (props, children_1) => react.createElement(\"span\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate \n */\nexport function Label_label(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"file-label\"), (props, children_1) => react.createElement(\"label\", keyValueList(props, 1), ...children_1), children);\n}\n\n","import * as common from \"../../../src/javascript/common.js\";\nimport { Union, Record } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { unit_type, list_type, tuple_type, enum_type, int32_type, union_type, int64_type, bool_type, array_type, uint8_type, record_type, class_type, option_type, string_type, decimal_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { FinancialHierarchy__BuildMapTree_Z59A20369, EntryFilter, CashflowInfo__IsActive_7F9DDECF, AutomaticCashflow__IsActive_7F9DDECF, CashflowInfo, CashflowInfo_Default_7F9DDECF, AssetInfo, AssetInfo_Default_7F9DDECF, Group, Group_Default_7F9DDECF, AssetValueRecord, AssetValueRecord_Default, validateInstrument, validateIdentifier, validateInterestRate, validateCurrency, validateUnitPrice, needsUnitPrice, validateQuantity, validateName, validateDisplayCurrency, validateNotes, EntryFilter_get_Empty, CurrencyValue_$reflection, GroupNode_$reflection, FinancialHierarchy_$reflection, CashflowInfo_$reflection, AssetInfo_$reflection, Group_$reflection, EntryFilter_$reflection } from \"../../Omnicv.Shared/FinancialAPI.js\";\nimport { length, tryFind, isEmpty, cons, collect, append as append_1, singleton as singleton_1, empty, map, ofArray } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { empty as empty_2, tryFind as tryFind_1, FSharpMap__get_Item, ofList } from \"../../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { curry2, createObj, int32ToString, equals, comparePrimitives } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { supportedCurrenciesForEditingOptions, supportedCurrenciesForEditing } from \"../../Omnicv.Client.Common/CurrencyUtils.js\";\nimport { defaultArg, map as map_1, value as value_6, defaultArgWith } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Icons, Session__GetCurrentProfileId, Session__GetDisplayCurrency } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { fromInt32, toInt64, compare } from \"../../fable_modules/fable-library-js.4.24.0/BigInt.js\";\nimport { FlexFormFields$1__AddTextOpt_Z44636648, FlexFormFields$1__AddDecimalOpt_Z2D27E1FA, noValidation, FlexFormFields$1__AddDateTime_2636DDCF, FlexFormFields$1__AddDecimal_7B82A45, FlexFormBase$1__Render_2B595, FlexFormBase$1__SetState, FlexForm$1__get_Fields, FlexFormFields$1__AddText_Z44011C05, FlexFormFields$1__AddSelection_Z70244BEA, FlexFormFields$1__AddTextAreaOpt_Z44636648, FlexForm$1_$ctor_2ABDDB55 } from \"../../Omnicv.Client.Common/Components/FlexForm.js\";\nimport { Option as Option_4, div } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Control.fs.js\";\nimport { container } from \"../../fable_modules/Fulma.3.0.0/Layouts/Container.fs.js\";\nimport { h6, h5, h4, h3, Option, h2, h1 } from \"../../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { empty as empty_1, append, singleton, delay, toList } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { assetValueService, financialService } from \"./FinancialCommon.js\";\nimport { Cmd_map, Cmd_none } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { handleFileEvent, busyModal, valuesToSelectOptions, exnToDisplayString } from \"../../Omnicv.Client.Common/Utils.js\";\nimport { EventInfo, EventInfo_Default_7F9DDECF } from \"../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { singleton as singleton_2 } from \"../../fable_modules/fable-library-js.4.24.0/AsyncBuilder.js\";\nimport { get_Zero, get_One } from \"../../fable_modules/fable-library-js.4.24.0/Decimal.js\";\nimport { utcNow } from \"../../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { List_Option, list as list_3, Option as Option_1, button } from \"../../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { Size_ISize, Common_GenericOption, TextTransform_Option, Modifier_IModifier, Screen, Color_IColor } from \"../../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { FSharpChoice$2 } from \"../../fable_modules/fable-library-js.4.24.0/Choice.js\";\nimport { Option as Option_6, icon } from \"../../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport { Fa_i } from \"../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { Icons__ToIcon } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { createElement } from \"react\";\nimport * as react from \"react\";\nimport { box$0027 } from \"../../fable_modules/Fulma.3.0.0/Elements/Box.fs.js\";\nimport { Fa_IconOption, Fa_i as Fa_i_1 } from \"../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { reactApi } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { isNullOrWhiteSpace, replicate } from \"../../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { Option as Option_2, columns } from \"../../fable_modules/Fulma.3.0.0/Layouts/Columns.fs.js\";\nimport { Option as Option_3, ISize, column } from \"../../fable_modules/Fulma.3.0.0/Layouts/Column.fs.js\";\nimport { Route, Router_modifyLocation } from \"../../Omnicv.Client.Common/Router.js\";\nimport { defaultOf } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { content } from \"../../fable_modules/Fulma.3.0.0/Elements/Content.fs.js\";\nimport { HTMLAttr, DOMAttr } from \"../../fable_modules/Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport { tab, Option as Option_7, tabs, Tab_Option } from \"../../fable_modules/Fulma.3.0.0/Components/Tabs.fs.js\";\nimport { input } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Input.fs.js\";\nimport { Option as Option_5, IInputType } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Input.fs.js\";\nimport { select } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Select.fs.js\";\nimport { keyValueList } from \"../../fable_modules/fable-library-js.4.24.0/MapUtil.js\";\nimport { Option as Option_8, div as div_1 } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Field.fs.js\";\nimport { name as name_12, icon as icon_1, cta, input as input_1, Label_label, Option as Option_9, file as file_1 } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/File.fs.js\";\nimport { Class, closeable } from \"../../Omnicv.Client.Common/Components/Notification.js\";\n\nexport function Omnicv_Shared_FinancialAPI_CurrencyValue__CurrencyValue_ToDisplayString(this$) {\n return common.formatCurrencyValue(this$.Currency, this$.Value);\n}\n\nexport class AssetValueData extends Record {\n constructor(Quantity, UnitPrice, Notes, EventTimestamp) {\n super();\n this.Quantity = Quantity;\n this.UnitPrice = UnitPrice;\n this.Notes = Notes;\n this.EventTimestamp = EventTimestamp;\n }\n}\n\nexport function AssetValueData_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Financial.MainFinancialView.Component.AssetValueData\", [], AssetValueData, () => [[\"Quantity\", decimal_type], [\"UnitPrice\", decimal_type], [\"Notes\", option_type(string_type)], [\"EventTimestamp\", class_type(\"System.DateTime\")]]);\n}\n\nexport class FileUploadData extends Record {\n constructor(CurrentFileName, Data, InProgress, Error$) {\n super();\n this.CurrentFileName = CurrentFileName;\n this.Data = Data;\n this.InProgress = InProgress;\n this.Error = Error$;\n }\n}\n\nexport function FileUploadData_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Financial.MainFinancialView.Component.FileUploadData\", [], FileUploadData, () => [[\"CurrentFileName\", option_type(string_type)], [\"Data\", option_type(array_type(uint8_type))], [\"InProgress\", bool_type], [\"Error\", option_type(string_type)]]);\n}\n\nexport function FileUploadData_Default() {\n return new FileUploadData(undefined, undefined, false, undefined);\n}\n\nexport function FileUploadData__CanSubmit(this$) {\n if (this$.Data != null) {\n return !this$.InProgress;\n }\n else {\n return false;\n }\n}\n\nexport class EditModel$1 extends Record {\n constructor(Data, IsLoading, Error$) {\n super();\n this.Data = Data;\n this.IsLoading = IsLoading;\n this.Error = Error$;\n }\n}\n\nexport function EditModel$1_$reflection(gen0) {\n return record_type(\"Omnicv.Client.Pages.Financial.MainFinancialView.Component.EditModel`1\", [gen0], EditModel$1, () => [[\"Data\", gen0], [\"IsLoading\", bool_type], [\"Error\", option_type(string_type)]]);\n}\n\nfunction createEditModel(data) {\n return new EditModel$1(data, false, undefined);\n}\n\nexport class EditMsg$1 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RecordUpdated\", \"Submit\", \"SuccessAdd\", \"SuccessEdit\", \"Failure\"];\n }\n}\n\nexport function EditMsg$1_$reflection(gen0) {\n return union_type(\"Omnicv.Client.Pages.Financial.MainFinancialView.Component.EditMsg`1\", [gen0], EditMsg$1, () => [[[\"Item\", gen0]], [], [[\"Item\", int64_type]], [[\"Item\", gen0]], [[\"Item\", class_type(\"System.Exception\")]]]);\n}\n\nexport class State extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"DisplayAssets\", \"DisplayCashflows\", \"AddEditGroup\", \"AddEditAsset\", \"AddEditCashflow\", \"AddValue\", \"ChooseAdd\", \"ImportData\"];\n }\n}\n\nexport function State_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Financial.MainFinancialView.Component.State\", [], State, () => [[[\"Item\", EntryFilter_$reflection()]], [[\"Item\", EntryFilter_$reflection()]], [[\"Item\", EditModel$1_$reflection(Group_$reflection())]], [[\"Item\", EditModel$1_$reflection(AssetInfo_$reflection())]], [[\"Item\", EditModel$1_$reflection(CashflowInfo_$reflection())]], [[\"Item1\", AssetInfo_$reflection()], [\"Item2\", EditModel$1_$reflection(AssetValueData_$reflection())]], [[\"Item\", Group_$reflection()]], [[\"Item\", FileUploadData_$reflection()]]]);\n}\n\nexport class Model extends Record {\n constructor(FinancialHierarchy, FinancialTree, State, InProgress, Error$, DisplayCurrency) {\n super();\n this.FinancialHierarchy = FinancialHierarchy;\n this.FinancialTree = FinancialTree;\n this.State = State;\n this.InProgress = InProgress;\n this.Error = Error$;\n this.DisplayCurrency = DisplayCurrency;\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Financial.MainFinancialView.Component.Model\", [], Model, () => [[\"FinancialHierarchy\", option_type(FinancialHierarchy_$reflection())], [\"FinancialTree\", class_type(\"Microsoft.FSharp.Collections.FSharpMap`2\", [enum_type(\"Omnicv.Shared.FinancialAPI.GroupType\", int32_type, [[\"Assets\", 1], [\"Cashflows\", 2]]), tuple_type(list_type(tuple_type(GroupNode_$reflection(), CurrencyValue_$reflection())), CurrencyValue_$reflection())])], [\"State\", State_$reflection()], [\"InProgress\", bool_type], [\"Error\", option_type(string_type)], [\"DisplayCurrency\", option_type(string_type)]]);\n}\n\nexport function Model__GetCurrentFilters(this$) {\n const matchValue = this$.State;\n switch (matchValue.tag) {\n case 0:\n return matchValue.fields[0];\n case 1:\n return matchValue.fields[0];\n default:\n return EntryFilter_get_Empty();\n }\n}\n\nexport class FileUploadMsg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"StartLoadFile\", \"LoadSuccess\", \"UploadFile\", \"UploadSuccess\", \"Failure\"];\n }\n}\n\nexport function FileUploadMsg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Financial.MainFinancialView.Component.FileUploadMsg\", [], FileUploadMsg, () => [[[\"Item\", class_type(\"Browser.Types.Event\", undefined)]], [[\"Item1\", array_type(uint8_type)], [\"Item2\", string_type]], [[\"Item\", array_type(uint8_type)]], [[\"Item\", unit_type]], [[\"Item\", class_type(\"System.Exception\")]]]);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RequestHierarchy\", \"HierarchySuccess\", \"SetState\", \"AddSuccess\", \"Failure\", \"GroupMsg\", \"AssetMsg\", \"AssetValueMsg\", \"CashflowMsg\", \"FileUploadMsg\", \"UpdateDisplayCurrency\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Financial.MainFinancialView.Component.Msg\", [], Msg, () => [[], [[\"Item\", FinancialHierarchy_$reflection()]], [[\"Item\", State_$reflection()]], [[\"Item\", unit_type]], [[\"Item\", class_type(\"System.Exception\")]], [[\"Item\", EditMsg$1_$reflection(Group_$reflection())]], [[\"Item\", EditMsg$1_$reflection(AssetInfo_$reflection())]], [[\"Item\", EditMsg$1_$reflection(AssetValueData_$reflection())]], [[\"Item\", EditMsg$1_$reflection(CashflowInfo_$reflection())]], [[\"Item\", FileUploadMsg_$reflection()]], [[\"Item\", option_type(string_type)]]]);\n}\n\nconst assetTypes = ofArray([[0, \"Physical cash\"], [1, \"Account\"], [2, \"Financial instrument\"], [7, \"Real estate\"], [9, \"Loan\"], [100, \"Other debt\"]]);\n\nconst assetTypesLookup = ofList(assetTypes, {\n Compare: comparePrimitives,\n});\n\nconst cashflowTypes = ofArray([[1, \"Income\"], [2, \"Expense\"]]);\n\nconst cashflowTypesLookup = ofList(cashflowTypes, {\n Compare: comparePrimitives,\n});\n\nconst frequencies = ofArray([[1, \"Daily\"], [2, \"Weekly\"], [3, \"Monthly\"], [4, \"Quarterly\"], [5, \"Yearly\"]]);\n\nconst optionalCurrencyChoices = map((x) => [x[0], x[1]], supportedCurrenciesForEditing);\n\nfunction getDisplayCurrency(session, model) {\n return defaultArgWith(model.DisplayCurrency, () => Session__GetDisplayCurrency(session));\n}\n\nfunction _commonOnCancel(dispatch) {\n return (_arg_1) => {\n dispatch(new Msg(2, [new State(0, [EntryFilter_get_Empty()])]));\n };\n}\n\nfunction _commonOnCancelCF(dispatch) {\n return (_arg_1) => {\n dispatch(new Msg(2, [new State(1, [EntryFilter_get_Empty()])]));\n };\n}\n\nexport function Groups_viewForAddEdit(model, dispatch) {\n const editing = compare(model.Data.Id, toInt64(fromInt32(0))) > 0;\n const form = FlexForm$1_$ctor_2ABDDB55((arg_1) => {\n dispatch(new Msg(5, [new EditMsg$1(0, [arg_1])]));\n }, (_arg) => {\n dispatch(new Msg(5, [new EditMsg$1(1, [])]));\n }, _commonOnCancel(dispatch));\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddSelection_Z70244BEA(FlexFormFields$1__AddText_Z44011C05(FlexForm$1__get_Fields(form), \"Name\", validateName, \"Group name\"), \"DisplayCurrency\", optionalCurrencyChoices, validateDisplayCurrency, \"Display currency\"), \"Notes\", validateNotes, \"Notes\");\n FlexFormBase$1__SetState(form, model.IsLoading, model.Error);\n return div(empty(), ofArray([container(empty(), singleton_1(h1(empty())(toList(delay(() => (editing ? singleton(\"Edit group\") : singleton(\"Add group\"))))))), FlexFormBase$1__Render_2B595(form, model.Data)]));\n}\n\nexport function Groups_update(session, msg, model) {\n switch (msg.tag) {\n case 1:\n return [new EditModel$1(model.Data, true, model.Error), (compare(model.Data.Id, toInt64(fromInt32(0))) > 0) ? Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, financialService.EditGroup, model.Data, (Item) => (new EditMsg$1(3, [Item])), (Item_1) => (new EditMsg$1(4, [Item_1]))) : Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, financialService.AddGroup, model.Data, (Item_2) => (new EditMsg$1(2, [Item_2])), (Item_3) => (new EditMsg$1(4, [Item_3])))];\n case 2:\n case 3:\n return [new EditModel$1(model.Data, false, undefined), Cmd_none()];\n case 4:\n return [new EditModel$1(model.Data, false, exnToDisplayString(msg.fields[0])), Cmd_none()];\n default:\n return [new EditModel$1(msg.fields[0], model.IsLoading, model.Error), Cmd_none()];\n }\n}\n\nexport function Assets_viewAddValue(asset, model, dispatch) {\n const form = FlexForm$1_$ctor_2ABDDB55((arg_1) => {\n dispatch(new Msg(7, [new EditMsg$1(0, [arg_1])]));\n }, (_arg) => {\n dispatch(new Msg(7, [new EditMsg$1(1, [])]));\n }, _commonOnCancel(dispatch));\n FlexFormFields$1__AddDecimal_7B82A45(FlexForm$1__get_Fields(form), \"Quantity\", validateQuantity, \"Quantity\");\n if (needsUnitPrice(asset.AssetType)) {\n FlexFormFields$1__AddDecimal_7B82A45(FlexForm$1__get_Fields(form), \"UnitPrice\", validateUnitPrice, \"Unit price\");\n }\n FlexFormFields$1__AddDateTime_2636DDCF(FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexForm$1__get_Fields(form), \"Notes\", validateNotes, \"Notes\"), \"EventTimestamp\", noValidation, \"Timestamp\");\n FlexFormBase$1__SetState(form, model.IsLoading, model.Error);\n return div(empty(), ofArray([container(empty(), ofArray([h1(empty())(singleton_1(\"Add value to asset\")), h2(singleton_1(new Option(6, [])))(singleton_1(asset.Name))])), FlexFormBase$1__Render_2B595(form, model.Data)]));\n}\n\nexport function Assets_viewForAddEdit(model, dispatch) {\n const editing = compare(model.Data.Id, toInt64(fromInt32(0))) > 0;\n const form = FlexForm$1_$ctor_2ABDDB55((arg_1) => {\n dispatch(new Msg(6, [new EditMsg$1(0, [arg_1])]));\n }, (_arg) => {\n dispatch(new Msg(6, [new EditMsg$1(1, [])]));\n }, _commonOnCancel(dispatch));\n FlexFormFields$1__AddSelection_Z70244BEA(FlexFormFields$1__AddText_Z44011C05(FlexForm$1__get_Fields(form), \"Name\", validateName, \"Name\"), \"Currency\", supportedCurrenciesForEditing, validateCurrency, \"Currency\");\n FlexFormBase$1__SetState(form, model.IsLoading, model.Error);\n const matchValue = model.Data.AssetType | 0;\n switch (matchValue) {\n case 0:\n case 7: {\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexForm$1__get_Fields(form), \"Notes\", validateNotes, \"Notes\");\n break;\n }\n case 1:\n case 9:\n case 100: {\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddDecimalOpt_Z2D27E1FA(FlexFormFields$1__AddTextOpt_Z44636648(FlexForm$1__get_Fields(form), \"Identifier\", validateIdentifier, \"Identifier\"), \"InterestRate\", validateInterestRate, \"Interest rate\"), \"Notes\", validateNotes, \"Notes\");\n break;\n }\n case 2: {\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddTextOpt_Z44636648(FlexFormFields$1__AddTextOpt_Z44636648(FlexForm$1__get_Fields(form), \"Identifier\", validateIdentifier, \"Identifier\"), \"Instrument\", validateInstrument, \"Instrument\"), \"Notes\", validateNotes, \"Notes\");\n break;\n }\n default:\n throw new Error(\"Asset type not supported\");\n }\n return div(empty(), ofArray([container(empty(), singleton_1(h1(empty())(toList(delay(() => (editing ? singleton(\"Edit asset\") : singleton(\"Add asset\"))))))), FlexFormBase$1__Render_2B595(form, model.Data)]));\n}\n\nexport function Assets_update(session, msg, model) {\n switch (msg.tag) {\n case 1:\n return [new EditModel$1(model.Data, true, model.Error), (compare(model.Data.Id, toInt64(fromInt32(0))) > 0) ? Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, financialService.EditAsset, model.Data, (Item) => (new EditMsg$1(3, [Item])), (Item_1) => (new EditMsg$1(4, [Item_1]))) : Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, financialService.AddAsset, model.Data, (Item_2) => (new EditMsg$1(2, [Item_2])), (Item_3) => (new EditMsg$1(4, [Item_3])))];\n case 2:\n case 3:\n return [new EditModel$1(model.Data, false, undefined), Cmd_none()];\n case 4:\n return [new EditModel$1(model.Data, false, exnToDisplayString(msg.fields[0])), Cmd_none()];\n default:\n return [new EditModel$1(msg.fields[0], model.IsLoading, model.Error), Cmd_none()];\n }\n}\n\nexport function Assets_updateValue(session, msg, asset, model) {\n switch (msg.tag) {\n case 1: {\n let eventInfo;\n const bind$0040 = EventInfo_Default_7F9DDECF(model.Data.EventTimestamp);\n eventInfo = (new EventInfo(bind$0040.Id, bind$0040.ContentTypeId, Session__GetCurrentProfileId(session), bind$0040.EventTimestamp, bind$0040.CreatedAt, bind$0040.UpdatedAt, bind$0040.PlaceId, bind$0040.PlaceName, bind$0040.Latitude, bind$0040.Longitude, bind$0040.LocationTz, bind$0040.LocationTzOffsetMin, bind$0040.ClientTz, bind$0040.ClientTzOffsetMin));\n return [new EditModel$1(model.Data, true, model.Error), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, (isLatest) => singleton_2.Delay(() => {\n const unitPrice = needsUnitPrice(asset.AssetType) ? model.Data.UnitPrice : get_One;\n const assetValueRecord = new AssetValueRecord(AssetValueRecord_Default().Id, asset.Id, model.Data.Quantity, unitPrice, model.Data.Notes);\n return singleton_2.Bind(assetValueService.Add(eventInfo, assetValueRecord, isLatest), (_arg) => singleton_2.Return(_arg.Id));\n }), true, (Item) => (new EditMsg$1(2, [Item])), (Item_1) => (new EditMsg$1(4, [Item_1])))];\n }\n case 2:\n case 3:\n return [new EditModel$1(model.Data, false, undefined), Cmd_none()];\n case 4:\n return [new EditModel$1(model.Data, false, exnToDisplayString(msg.fields[0])), Cmd_none()];\n default:\n return [new EditModel$1(msg.fields[0], model.IsLoading, model.Error), Cmd_none()];\n }\n}\n\nexport function Cashflows_viewForAddEdit(model, dispatch) {\n const form = FlexForm$1_$ctor_2ABDDB55((arg_1) => {\n dispatch(new Msg(8, [new EditMsg$1(0, [arg_1])]));\n }, (_arg) => {\n dispatch(new Msg(8, [new EditMsg$1(1, [])]));\n }, _commonOnCancelCF(dispatch));\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddDecimal_7B82A45(FlexFormFields$1__AddSelection_Z70244BEA(FlexFormFields$1__AddSelection_Z70244BEA(FlexFormFields$1__AddSelection_Z70244BEA(FlexFormFields$1__AddText_Z44011C05(FlexForm$1__get_Fields(form), \"Name\", validateName, \"Cashflow name\"), \"CashflowType\", cashflowTypes, noValidation, \"Cashflow type\"), \"Frequency\", frequencies, noValidation, \"Frequency\"), \"Currency\", supportedCurrenciesForEditing, validateCurrency, \"Currency\"), \"Quantity\", validateQuantity, \"Quantity\"), \"Notes\", validateNotes, \"Notes\");\n FlexFormBase$1__SetState(form, model.IsLoading, model.Error);\n return div(empty(), ofArray([container(empty(), singleton_1(h1(empty())(singleton_1(\"Add cashflow\")))), FlexFormBase$1__Render_2B595(form, model.Data)]));\n}\n\nexport function Cashflows_update(_session, msg, model) {\n switch (msg.tag) {\n case 1:\n return [new EditModel$1(model.Data, true, model.Error), (compare(model.Data.Id, toInt64(fromInt32(0))) > 0) ? Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, financialService.EditCashflow, model.Data, (Item) => (new EditMsg$1(3, [Item])), (Item_1) => (new EditMsg$1(4, [Item_1]))) : Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, financialService.AddCashflow, model.Data, (Item_2) => (new EditMsg$1(2, [Item_2])), (Item_3) => (new EditMsg$1(4, [Item_3])))];\n case 2:\n case 3:\n return [new EditModel$1(model.Data, false, undefined), Cmd_none()];\n case 4:\n return [new EditModel$1(model.Data, false, exnToDisplayString(msg.fields[0])), Cmd_none()];\n default:\n return [new EditModel$1(msg.fields[0], model.IsLoading, model.Error), Cmd_none()];\n }\n}\n\nfunction DisplayHierarchy_addGroup(session, dispatch, parentOrType, _arg) {\n let newGroup;\n const start = Group_Default_7F9DDECF(utcNow());\n if (parentOrType.tag === 1) {\n newGroup = (new Group(start.Id, parentOrType.fields[0], start.ProfileId, start.ParentId, start.CreatedAt, start.UpdatedAt, start.Name, start.Notes, start.Weight, start.DisplayCurrency));\n }\n else {\n const parent = parentOrType.fields[0];\n newGroup = (new Group(start.Id, parent.GroupType, start.ProfileId, parent.Id, start.CreatedAt, start.UpdatedAt, start.Name, start.Notes, start.Weight, start.DisplayCurrency));\n }\n dispatch(new Msg(2, [new State(2, [createEditModel(new Group(newGroup.Id, newGroup.GroupType, Session__GetCurrentProfileId(session), newGroup.ParentId, newGroup.CreatedAt, newGroup.UpdatedAt, newGroup.Name, newGroup.Notes, newGroup.Weight, newGroup.DisplayCurrency))])]));\n}\n\nexport function DisplayHierarchy_groupTypeToState(groupType, filter) {\n switch (groupType) {\n case 1:\n return new State(0, [filter]);\n case 2:\n return new State(1, [filter]);\n default:\n throw new Error(`Bad group type ${groupType}`);\n }\n}\n\nfunction DisplayHierarchy_viewByGroupType(targetGroupType, dispatch) {\n dispatch(new Msg(2, [DisplayHierarchy_groupTypeToState(targetGroupType, EntryFilter_get_Empty())]));\n}\n\nexport function DisplayHierarchy_viewSelectAdd(session, group, dispatch) {\n let states;\n const matchValue = group.GroupType | 0;\n switch (matchValue) {\n case 1: {\n states = map((t) => {\n let patternInput;\n const tupledArg = t;\n const model = AssetInfo_Default_7F9DDECF(utcNow());\n patternInput = [createEditModel(new AssetInfo(model.Id, group.ProfileId, group.Id, tupledArg[0], model.CreatedAt, model.UpdatedAt, model.Name, model.Notes, model.Weight, model.Identifier, model.LatestAssetValueId, (group.DisplayCurrency == null) ? \"\" : value_6(group.DisplayCurrency), model.Instrument, model.InterestRate, model.ActiveFrom, model.ActiveTo)), tupledArg[1]];\n return [new State(3, [patternInput[0]]), patternInput[1]];\n }, assetTypes);\n break;\n }\n case 2: {\n states = map((t_1) => {\n let patternInput_1;\n const tupledArg_1 = t_1;\n const model_1 = CashflowInfo_Default_7F9DDECF(utcNow());\n patternInput_1 = [createEditModel(new CashflowInfo(model_1.Id, group.ProfileId, tupledArg_1[0], group.Id, model_1.CreatedAt, model_1.UpdatedAt, model_1.Name, model_1.Notes, model_1.Weight, (group.DisplayCurrency == null) ? \"\" : value_6(group.DisplayCurrency), model_1.Quantity, model_1.Frequency, model_1.AssetId, model_1.ActiveFrom, model_1.ActiveTo)), tupledArg_1[1]];\n return [new State(4, [patternInput_1[0]]), patternInput_1[1]];\n }, cashflowTypes);\n break;\n }\n default:\n throw new Error(\"Unsupported group type\");\n }\n const children = toList(delay(() => {\n const coreButtons = singleton_1(button(ofArray([new Option_1(0, [new Color_IColor(5, [])]), new Option_1(18, [(arg30$0040) => {\n DisplayHierarchy_addGroup(session, dispatch, new FSharpChoice$2(0, [group]), arg30$0040);\n }])]), ofArray([icon(empty(), singleton_1(Fa_i(singleton_1(Icons__ToIcon(new Icons(0, []))), []))), createElement(\"span\", {\n children: \"Add group\",\n })])));\n const extraButtons = map((tupledArg_2) => button(ofArray([new Option_1(0, [new Color_IColor(4, [])]), new Option_1(5, []), new Option_1(18, [(_arg) => {\n dispatch(new Msg(2, [tupledArg_2[0]]));\n }])]), ofArray([icon(empty(), singleton_1(Fa_i(singleton_1(Icons__ToIcon(new Icons(0, []))), []))), createElement(\"span\", {\n children: `Add ${tupledArg_2[1]}`,\n })])), states);\n return append(singleton(box$0027(empty(), ofArray([h3(empty())(singleton_1(\"Choose what to add to group\")), h4(singleton_1(new Option(6, [])))(singleton_1(group.Name))]))), delay(() => append(singleton(box$0027(empty(), singleton_1(list_3(singleton_1(new List_Option(1, [])), append_1(coreButtons, extraButtons))))), delay(() => singleton(button(ofArray([new Option_1(0, [new Color_IColor(7, [])]), new Option_1(18, [(_arg_1) => {\n DisplayHierarchy_viewByGroupType(group.GroupType, dispatch);\n }])]), ofArray([icon(empty(), singleton_1(Fa_i_1(singleton_1(new Fa_IconOption(11, [\"fas fa-undo-alt\"])), []))), createElement(\"span\", {\n children: \"Cancel\",\n })])))))));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nfunction DisplayHierarchy_getTotalsItem(totals, isActive) {\n return box$0027(empty(), singleton_1(h5(empty())(singleton_1(`Total: ${Omnicv_Shared_FinancialAPI_CurrencyValue__CurrencyValue_ToDisplayString(totals)}`))));\n}\n\nfunction DisplayHierarchy_depthToPrefix(depth) {\n if (depth > 0) {\n return replicate(depth, \"-\") + \" \";\n }\n else {\n return \"\";\n }\n}\n\nfunction DisplayHierarchy_processAsset(depth, asset, value, dispatch) {\n return box$0027(empty(), ofArray([h6(empty())(singleton_1(`${DisplayHierarchy_depthToPrefix(depth)}${asset.Name}: ${Omnicv_Shared_FinancialAPI_CurrencyValue__CurrencyValue_ToDisplayString(value)}`)), columns(ofArray([new Option_2(3, []), new Option_2(4, []), new Option_2(1, [])]), ofArray([column(singleton_1(new Option_3(0, [new Screen(0, []), new ISize(21, [])])), toList(delay(() => {\n let children;\n return append((asset.Notes != null) ? singleton((children = singleton_1(value_6(asset.Notes)), createElement(\"p\", {\n children: reactApi.Children.toArray(Array.from(children)),\n }))) : empty_1(), delay(() => {\n let children_2;\n return append(singleton((children_2 = singleton_1(FSharpMap__get_Item(assetTypesLookup, asset.AssetType)), createElement(\"span\", {\n children: reactApi.Children.toArray(Array.from(children_2)),\n }))), delay(() => append(singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\" | Currency: \"]),\n })), delay(() => singleton(asset.Currency)))));\n }));\n }))), column(empty(), singleton_1(list_3(singleton_1(new List_Option(2, [])), ofArray([button(ofArray([new Option_1(0, [new Color_IColor(4, [])]), new Option_1(5, []), new Option_1(18, [(_arg) => {\n dispatch(new Msg(2, [new State(5, [asset, createEditModel(new AssetValueData(get_Zero, get_Zero, undefined, common.getNow()))])]));\n }])]), singleton_1(icon(empty(), singleton_1(Fa_i(singleton_1(Icons__ToIcon(new Icons(0, []))), []))))), button(ofArray([new Option_1(0, [new Color_IColor(5, [])]), new Option_1(5, []), new Option_1(18, [(_arg_1) => {\n Router_modifyLocation(new Route(30, [asset.Id]));\n }])]), singleton_1(icon(empty(), singleton_1(Fa_i(singleton_1(Icons__ToIcon(new Icons(13, []))), []))))), button(ofArray([new Option_1(0, [new Color_IColor(5, [])]), new Option_1(5, []), new Option_1(18, [(_arg_2) => {\n dispatch(new Msg(2, [new State(3, [createEditModel(asset)])]));\n }])]), singleton_1(icon(empty(), singleton_1(Fa_i(singleton_1(Icons__ToIcon(new Icons(4, []))), [])))))]))))]))]));\n}\n\nfunction DisplayHierarchy_processCashflow(depth, cashflow, value, dispatch) {\n const now = utcNow();\n let patternInput;\n if (cashflow.tag === 1) {\n const auto = cashflow.fields[0];\n patternInput = [auto.Name, undefined, AutomaticCashflow__IsActive_7F9DDECF(auto, now), auto.CashflowType, auto.Frequency];\n }\n else {\n const cashflowInfo = cashflow.fields[0];\n patternInput = [cashflowInfo.Name, cashflowInfo.Notes, CashflowInfo__IsActive_7F9DDECF(cashflowInfo, now), cashflowInfo.CashflowType, cashflowInfo.Frequency];\n }\n const notes = patternInput[1];\n const cashflowType = patternInput[3] | 0;\n const modifiers = !patternInput[2] ? ofArray([new Modifier_IModifier(0, [new Color_IColor(14, [])]), new Modifier_IModifier(7, [new TextTransform_Option(3, [])])]) : ((cashflowType === 2) ? singleton_1(new Modifier_IModifier(1, [new Color_IColor(8, [])])) : empty());\n return box$0027(singleton_1(new Common_GenericOption(2, [modifiers])), ofArray([h6(singleton_1(new Option(10, [modifiers])))(singleton_1(`${DisplayHierarchy_depthToPrefix(depth)}${patternInput[0]}: ${Omnicv_Shared_FinancialAPI_CurrencyValue__CurrencyValue_ToDisplayString(value)}`)), columns(ofArray([new Option_2(3, []), new Option_2(4, []), new Option_2(1, [])]), ofArray([column(singleton_1(new Option_3(0, [new Screen(0, []), new ISize(21, [])])), toList(delay(() => {\n let children;\n return append((notes != null) ? singleton((children = singleton_1(value_6(notes)), createElement(\"p\", {\n children: reactApi.Children.toArray(Array.from(children)),\n }))) : empty_1(), delay(() => {\n let children_2;\n return append(singleton((children_2 = singleton_1(FSharpMap__get_Item(cashflowTypesLookup, cashflowType)), createElement(\"span\", {\n children: reactApi.Children.toArray(Array.from(children_2)),\n }))), delay(() => append(singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\" | Currency: \"]),\n })), delay(() => singleton(value.Currency)))));\n }));\n }))), column(empty(), toList(delay(() => ((cashflow.tag === 0) ? singleton(button(ofArray([new Option_1(0, [new Color_IColor(5, [])]), new Option_1(5, []), new Option_1(18, [(_arg) => {\n dispatch(new Msg(2, [new State(4, [createEditModel(cashflow.fields[0])])]));\n }])]), singleton_1(icon(empty(), singleton_1(Fa_i(singleton_1(Icons__ToIcon(new Icons(4, []))), [])))))) : singleton(defaultOf())))))]))]));\n}\n\nfunction DisplayHierarchy_processGroupNode(depth, inProgress, node, value, dispatch) {\n let depth_1;\n return cons(box$0027(singleton_1(new Common_GenericOption(2, [singleton_1(new Modifier_IModifier(0, [new Color_IColor(6, [])]))])), ofArray([h6(empty())(singleton_1(`${DisplayHierarchy_depthToPrefix(depth)}${node.Data.Name}: ${Omnicv_Shared_FinancialAPI_CurrencyValue__CurrencyValue_ToDisplayString(value)}`)), columns(ofArray([new Option_2(3, []), new Option_2(4, []), new Option_2(1, [])]), ofArray([column(empty(), toList(delay(() => append((node.Data.Notes != null) ? singleton(content(empty(), singleton_1(value_6(node.Data.Notes)))) : empty_1(), delay(() => ((node.Data.DisplayCurrency != null) ? singleton(content(empty(), ofArray([createElement(\"span\", {\n children: reactApi.Children.toArray([\"Currency: \"]),\n }), value_6(node.Data.DisplayCurrency)]))) : empty_1())))))), column(empty(), singleton_1(list_3(singleton_1(new List_Option(2, [])), ofArray([button(ofArray([new Option_1(0, [new Color_IColor(4, [])]), new Option_1(5, []), new Option_1(16, [inProgress]), new Option_1(18, [(_arg) => {\n dispatch(new Msg(2, [new State(6, [node.Data])]));\n }])]), singleton_1(icon(empty(), singleton_1(Fa_i(singleton_1(Icons__ToIcon(new Icons(0, []))), []))))), button(ofArray([new Option_1(0, [new Color_IColor(5, [])]), new Option_1(5, []), new Option_1(18, [(_arg_1) => {\n dispatch(new Msg(2, [new State(2, [createEditModel(node.Data)])]));\n }])]), singleton_1(icon(empty(), singleton_1(Fa_i(singleton_1(Icons__ToIcon(new Icons(4, []))), [])))))]))))]))])), collect((depth_1 = ((depth + 1) | 0), (node_1) => DisplayHierarchy_processChildNode(dispatch, depth_1, inProgress, node_1)), node.Children));\n}\n\nexport function DisplayHierarchy_processChildNode(dispatch, depth, inProgress, node) {\n switch (node.tag) {\n case 1:\n return singleton_1(DisplayHierarchy_processAsset(depth, node.fields[0], node.fields[1], dispatch));\n case 2:\n return singleton_1(DisplayHierarchy_processCashflow(depth, node.fields[0], node.fields[1], dispatch));\n default:\n return DisplayHierarchy_processGroupNode(depth, inProgress, node.fields[0], node.fields[1], dispatch);\n }\n}\n\nexport function DisplayHierarchy_buildTree(inProgress, tree_, tree__1, dispatch) {\n const tree = [tree_, tree__1];\n const totalItem = DisplayHierarchy_getTotalsItem(tree[1], false);\n return append_1(cons(totalItem, collect((tupledArg) => DisplayHierarchy_processGroupNode(0, inProgress, tupledArg[0], tupledArg[1], dispatch), tree[0])), singleton_1(totalItem));\n}\n\nexport function DisplayHierarchy_treeToList(inProgress, _arg, tree, dispatch) {\n let matchResult, value;\n if (tree != null) {\n if (!isEmpty(tree[0])) {\n matchResult = 0;\n value = tree;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return DisplayHierarchy_buildTree(inProgress, value[0], value[1], dispatch);\n default:\n return singleton_1(createElement(\"div\", {\n children: reactApi.Children.toArray([\"No data yet\"]),\n }));\n }\n}\n\nexport function DisplayHierarchy_view(filter, groupType, session, model, dispatch) {\n let children_12, children_10, elems;\n const updateFilter = (newFilter) => {\n if (!equals(newFilter, filter)) {\n dispatch(new Msg(2, [DisplayHierarchy_groupTypeToState(groupType, newFilter)]));\n }\n };\n const preamble = toList(delay(() => {\n let children_4;\n const switchTabTrigger = (targetGroup) => (new Tab_Option(2, [singleton_1(new DOMAttr(40, [(_arg_2) => {\n DisplayHierarchy_viewByGroupType(targetGroup, dispatch);\n }]))]));\n let patternInput;\n const matchValue_1 = model.State;\n patternInput = ((matchValue_1.tag === 0) ? [valuesToSelectOptions(assetTypes, \"asset type\"), map_1((a) => {\n let copyOfStruct = a;\n return int32ToString(copyOfStruct);\n }, matchValue_1.fields[0].AssetType)] : ((matchValue_1.tag === 1) ? [valuesToSelectOptions(cashflowTypes, \"cashflow type\"), map_1((a_1) => {\n let copyOfStruct_1 = a_1;\n return int32ToString(copyOfStruct_1);\n }, matchValue_1.fields[0].CashflowType)] : [empty(), undefined]));\n const typeOptions = patternInput[0];\n const currentValue = patternInput[1];\n return append(singleton((children_4 = toList(delay(() => append(singleton(div(singleton_1(new Option_4(1, [])), ofArray([input(ofArray([new Option_5(1, [new IInputType(0, [])]), new Option_5(0, [new Size_ISize(0, [])]), new Option_5(12, [\"Search\"]), new Option_5(8, [defaultArg(filter.Content, \"\")]), new Option_5(13, [(event) => {\n const elem = event.target;\n updateFilter(new EntryFilter(filter.Currency, isNullOrWhiteSpace(elem.value) ? undefined : elem.value, filter.AssetType, filter.CashflowType));\n }])])), icon(ofArray([new Option_6(0, [new Size_ISize(0, [])]), new Option_6(1, [])]), singleton_1(Fa_i_1(singleton_1(new Fa_IconOption(11, [\"fas fa-search\"])), [])))]))), delay(() => {\n let props, children;\n return append(singleton(div(singleton_1(new Option_4(1, [])), ofArray([select(empty(), singleton_1((props = [new DOMAttr(9, [(event_2) => {\n const elem_2 = event_2.target;\n dispatch(new Msg(10, [isNullOrWhiteSpace(elem_2.value) ? undefined : elem_2.value]));\n }]), new HTMLAttr(161, [getDisplayCurrency(session, model)])], (children = supportedCurrenciesForEditingOptions(\"display currency\"), react.createElement(\"select\", keyValueList(props, 1), ...children))))), icon(ofArray([new Option_6(0, [new Size_ISize(0, [])]), new Option_6(1, [])]), singleton_1(Fa_i_1(singleton_1(new Fa_IconOption(11, [\"fas fa-money-bill-alt\"])), [])))]))), delay(() => {\n let props_2;\n return !isEmpty(typeOptions) ? singleton(div(singleton_1(new Option_4(1, [])), ofArray([select(empty(), singleton_1((props_2 = toList(delay(() => append(singleton(new DOMAttr(9, [(event_1) => {\n let matchValue;\n const elem_1 = event_1.target;\n if (!isNullOrWhiteSpace(elem_1.value)) {\n updateFilter((matchValue = model.State, (matchValue.tag === 0) ? (new EntryFilter(filter.Currency, filter.Content, map_1((tuple) => tuple[0], tryFind((tupledArg) => (int32ToString(tupledArg[0]) === elem_1.value), assetTypes)), filter.CashflowType)) : ((matchValue.tag === 1) ? (new EntryFilter(filter.Currency, filter.Content, filter.AssetType, map_1((tuple_1) => tuple_1[0], tryFind((tupledArg_1) => (int32ToString(tupledArg_1[0]) === elem_1.value), cashflowTypes)))) : filter)));\n }\n }])), delay(() => ((currentValue != null) ? singleton(new HTMLAttr(161, [value_6(currentValue)])) : empty_1()))))), react.createElement(\"select\", keyValueList(props_2, 1), ...typeOptions)))), icon(ofArray([new Option_6(0, [new Size_ISize(0, [])]), new Option_6(1, [])]), singleton_1(Fa_i_1(singleton_1(new Fa_IconOption(11, [\"fas fa-list-ol\"])), [])))]))) : empty_1();\n }));\n })))), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_4)),\n }))), delay(() => singleton(tabs(singleton_1(new Option_7(1, [])), [tab(ofArray([new Tab_Option(0, [groupType === 1]), switchTabTrigger(1)]), singleton_1(createElement(\"a\", {\n children: reactApi.Children.toArray([\"Assets\"]),\n }))), tab(ofArray([new Tab_Option(0, [groupType === 2]), switchTabTrigger(2)]), singleton_1(createElement(\"a\", {\n children: reactApi.Children.toArray([\"Cashflows\"]),\n })))]))));\n }));\n const inProgress = model.InProgress;\n const mainControlButtons = singleton_1((children_12 = singleton_1(list_3(empty(), ofArray([button(ofArray([new Option_1(0, [new Color_IColor(5, [])]), new Option_1(16, [inProgress]), new Option_1(18, [(_arg_3) => {\n dispatch(new Msg(0, []));\n }])]), ofArray([icon(empty(), toList(delay(() => (inProgress ? singleton(Fa_i(ofArray([Icons__ToIcon(new Icons(6, [])), new Fa_IconOption(12, [])]), [])) : singleton(Fa_i(singleton_1(Icons__ToIcon(new Icons(5, []))), [])))))), (children_10 = toList(delay(() => (inProgress ? singleton(\"Loading...\") : singleton(\"Reload\")))), createElement(\"span\", {\n children: reactApi.Children.toArray(Array.from(children_10)),\n }))])), button(ofArray([new Option_1(0, [new Color_IColor(4, [])]), new Option_1(16, [inProgress]), new Option_1(4, []), new Option_1(18, [(arg30$0040) => {\n DisplayHierarchy_addGroup(session, dispatch, new FSharpChoice$2(1, [groupType]), arg30$0040);\n }])]), singleton_1(\"Add group\")), button(ofArray([new Option_1(0, [new Color_IColor(4, [])]), new Option_1(16, [inProgress]), new Option_1(4, []), new Option_1(18, [(_arg_4) => {\n dispatch(new Msg(2, [new State(7, [FileUploadData_Default()])]));\n }])]), singleton_1(\"Import\")), button(ofArray([new Option_1(0, [new Color_IColor(4, [])]), new Option_1(16, [inProgress]), new Option_1(4, [])]), singleton_1(\"Export\")), button(ofArray([new Option_1(0, [new Color_IColor(6, [])]), new Option_1(16, [inProgress]), new Option_1(18, [(_arg_5) => {\n Router_modifyLocation(new Route(31, []));\n }])]), singleton_1(\"Asset values\"))]))), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_12)),\n })));\n const progressModal = inProgress ? singleton_1(busyModal(inProgress, \"Please wait\")) : empty();\n const mainViewElements = DisplayHierarchy_treeToList(inProgress, groupType, tryFind_1(groupType, model.FinancialTree), dispatch);\n return createElement(\"div\", createObj(singleton_1((elems = append_1(progressModal, append_1((length(mainControlButtons) < 2) ? preamble : append_1(preamble, mainControlButtons), append_1(mainViewElements, mainControlButtons))), [\"children\", reactApi.Children.toArray(Array.from(elems))]))));\n}\n\nexport function DisplayHierarchy_updateImport(session, msg, data) {\n switch (msg.tag) {\n case 1:\n return [new FileUploadData(msg.fields[1], msg.fields[0], false, undefined), Cmd_none()];\n case 2: {\n const bytes_1 = msg.fields[0];\n return [new FileUploadData(data.CurrentFileName, bytes_1, true, undefined), Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, curry2(financialService.ImportHierarchyData)(Session__GetCurrentProfileId(session)), bytes_1, () => (new FileUploadMsg(3, [undefined])), (Item_4) => (new FileUploadMsg(4, [Item_4])))];\n }\n case 3:\n return [new FileUploadData(undefined, undefined, false, undefined), Cmd_none()];\n case 4:\n return [new FileUploadData(undefined, undefined, false, exnToDisplayString(msg.fields[0])), Cmd_none()];\n default:\n return [new FileUploadData(undefined, undefined, true, undefined), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, handleFileEvent, msg.fields[0], (tupledArg) => (new FileUploadMsg(1, [tupledArg[0], tupledArg[1]])), (Item_2) => (new FileUploadMsg(4, [Item_2])))];\n }\n}\n\nexport function DisplayHierarchy_viewImport(inProgress, data, dispatch) {\n const caption = defaultArg(data.CurrentFileName, \"Choose a file\");\n return content(empty(), ofArray([h2(empty())(singleton_1(\"Import file\")), div_1(singleton_1(new Option_8(0, [])), ofArray([file_1(singleton_1(new Option_9(10, [])), singleton_1(Label_label(empty(), ofArray([input_1(singleton_1(new Common_GenericOption(1, [singleton_1(new DOMAttr(9, [(arg_1) => {\n dispatch(new Msg(9, [new FileUploadMsg(0, [arg_1])]));\n }]))]))), cta(empty(), ofArray([icon_1(empty(), singleton_1(icon(empty(), singleton_1(Fa_i_1(singleton_1(new Fa_IconOption(11, [\"fas fa-upload\"])), []))))), Label_label(empty(), singleton_1(\"Import: \"))])), name_12(empty(), singleton_1(caption))])))), div(empty(), singleton_1(button(ofArray([new Option_1(18, [(_arg) => {\n const matchValue = data.Data;\n if (matchValue == null) {\n }\n else {\n dispatch(new Msg(9, [new FileUploadMsg(2, [matchValue])]));\n }\n }]), new Option_1(0, [new Color_IColor(5, [])]), new Option_1(16, [inProgress ? true : !FileUploadData__CanSubmit(data)])]), singleton_1(\"Import\"))))]))]));\n}\n\nconst Main_service = financialService;\n\nexport function Main_init() {\n return [new Model(undefined, empty_2({\n Compare: comparePrimitives,\n }), new State(0, [EntryFilter_get_Empty()]), false, undefined, undefined), singleton_1((dispatch) => {\n dispatch(new Msg(0, []));\n })];\n}\n\nexport function Main_update(session, msg, model) {\n let matchResult, newCurrency, result, state, record, subMsg, subMsg_1, subMsg_2, subMsg_3, subMsg_4, ex;\n switch (msg.tag) {\n case 10: {\n matchResult = 1;\n newCurrency = msg.fields[0];\n break;\n }\n case 1: {\n matchResult = 2;\n result = msg.fields[0];\n break;\n }\n case 2: {\n matchResult = 3;\n state = msg.fields[0];\n break;\n }\n case 3: {\n matchResult = 4;\n break;\n }\n case 5: {\n switch (msg.fields[0].tag) {\n case 2: {\n matchResult = 5;\n break;\n }\n case 3: {\n matchResult = 6;\n record = msg.fields[0].fields[0];\n break;\n }\n default: {\n matchResult = 7;\n subMsg = msg.fields[0];\n }\n }\n break;\n }\n case 6: {\n switch (msg.fields[0].tag) {\n case 2:\n case 3: {\n matchResult = 8;\n break;\n }\n default: {\n matchResult = 9;\n subMsg_1 = msg.fields[0];\n }\n }\n break;\n }\n case 7: {\n if (msg.fields[0].tag === 2) {\n matchResult = 10;\n }\n else {\n matchResult = 11;\n subMsg_2 = msg.fields[0];\n }\n break;\n }\n case 8: {\n switch (msg.fields[0].tag) {\n case 2:\n case 3: {\n matchResult = 12;\n break;\n }\n default: {\n matchResult = 13;\n subMsg_3 = msg.fields[0];\n }\n }\n break;\n }\n case 9: {\n if (msg.fields[0].tag === 3) {\n matchResult = 14;\n }\n else {\n matchResult = 15;\n subMsg_4 = msg.fields[0];\n }\n break;\n }\n case 4: {\n matchResult = 16;\n ex = msg.fields[0];\n break;\n }\n default:\n matchResult = 0;\n }\n switch (matchResult) {\n case 0:\n return [new Model(model.FinancialHierarchy, model.FinancialTree, model.State, true, model.Error, model.DisplayCurrency), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry2(Main_service.GetHierarchy)(Session__GetCurrentProfileId(session)), getDisplayCurrency(session, model), (Item) => (new Msg(1, [Item])), (Item_1) => (new Msg(4, [Item_1])))];\n case 1:\n return [new Model(model.FinancialHierarchy, model.FinancialTree, model.State, model.InProgress, model.Error, newCurrency), singleton_1((dispatch) => {\n dispatch(new Msg(0, []));\n })];\n case 2:\n return [new Model(result, FinancialHierarchy__BuildMapTree_Z59A20369(result, Model__GetCurrentFilters(model)), model.State, false, undefined, model.DisplayCurrency), Cmd_none()];\n case 3:\n return [new Model(model.FinancialHierarchy, model.FinancialTree, state, model.InProgress, model.Error, model.DisplayCurrency), singleton_1((dispatch_1) => {\n dispatch_1(new Msg(0, []));\n })];\n case 4:\n return [model, singleton_1((dispatch_2) => {\n dispatch_2(new Msg(0, []));\n })];\n case 5: {\n const matchValue = model.State;\n if (matchValue.tag === 2) {\n return [new Model(model.FinancialHierarchy, model.FinancialTree, DisplayHierarchy_groupTypeToState(matchValue.fields[0].Data.GroupType, EntryFilter_get_Empty()), model.InProgress, model.Error, model.DisplayCurrency), singleton_1((dispatch_3) => {\n dispatch_3(new Msg(0, []));\n })];\n }\n else {\n return [model, Cmd_none()];\n }\n }\n case 6:\n return [new Model(model.FinancialHierarchy, model.FinancialTree, DisplayHierarchy_groupTypeToState(record.GroupType, EntryFilter_get_Empty()), model.InProgress, model.Error, model.DisplayCurrency), singleton_1((dispatch_4) => {\n dispatch_4(new Msg(0, []));\n })];\n case 7: {\n const matchValue_1 = model.State;\n if (matchValue_1.tag === 2) {\n const patternInput = Groups_update(session, subMsg, matchValue_1.fields[0]);\n return [new Model(model.FinancialHierarchy, model.FinancialTree, new State(2, [patternInput[0]]), model.InProgress, model.Error, model.DisplayCurrency), Cmd_map((Item_2) => (new Msg(5, [Item_2])), patternInput[1])];\n }\n else {\n return [model, Cmd_none()];\n }\n }\n case 8:\n return [new Model(model.FinancialHierarchy, model.FinancialTree, new State(0, [EntryFilter_get_Empty()]), model.InProgress, model.Error, model.DisplayCurrency), singleton_1((dispatch_5) => {\n dispatch_5(new Msg(0, []));\n })];\n case 9: {\n const matchValue_2 = model.State;\n if (matchValue_2.tag === 3) {\n const patternInput_1 = Assets_update(session, subMsg_1, matchValue_2.fields[0]);\n return [new Model(model.FinancialHierarchy, model.FinancialTree, new State(3, [patternInput_1[0]]), model.InProgress, model.Error, model.DisplayCurrency), Cmd_map((Item_3) => (new Msg(6, [Item_3])), patternInput_1[1])];\n }\n else {\n return [model, Cmd_none()];\n }\n }\n case 10:\n return [new Model(model.FinancialHierarchy, model.FinancialTree, new State(0, [EntryFilter_get_Empty()]), model.InProgress, model.Error, model.DisplayCurrency), singleton_1((dispatch_6) => {\n dispatch_6(new Msg(0, []));\n })];\n case 11: {\n const matchValue_3 = model.State;\n if (matchValue_3.tag === 5) {\n const asset = matchValue_3.fields[0];\n const patternInput_2 = Assets_updateValue(session, subMsg_2, asset, matchValue_3.fields[1]);\n return [new Model(model.FinancialHierarchy, model.FinancialTree, new State(5, [asset, patternInput_2[0]]), model.InProgress, model.Error, model.DisplayCurrency), Cmd_map((Item_4) => (new Msg(7, [Item_4])), patternInput_2[1])];\n }\n else {\n return [model, Cmd_none()];\n }\n }\n case 12:\n return [new Model(model.FinancialHierarchy, model.FinancialTree, new State(1, [EntryFilter_get_Empty()]), model.InProgress, model.Error, model.DisplayCurrency), singleton_1((dispatch_7) => {\n dispatch_7(new Msg(0, []));\n })];\n case 13: {\n const matchValue_4 = model.State;\n if (matchValue_4.tag === 4) {\n const patternInput_3 = Cashflows_update(session, subMsg_3, matchValue_4.fields[0]);\n return [new Model(model.FinancialHierarchy, model.FinancialTree, new State(4, [patternInput_3[0]]), model.InProgress, model.Error, model.DisplayCurrency), Cmd_map((Item_5) => (new Msg(8, [Item_5])), patternInput_3[1])];\n }\n else {\n return [model, Cmd_none()];\n }\n }\n case 14:\n return [new Model(model.FinancialHierarchy, model.FinancialTree, new State(0, [EntryFilter_get_Empty()]), false, undefined, model.DisplayCurrency), singleton_1((dispatch_8) => {\n dispatch_8(new Msg(0, []));\n })];\n case 15: {\n const matchValue_5 = model.State;\n if (matchValue_5.tag === 7) {\n const patternInput_4 = DisplayHierarchy_updateImport(session, subMsg_4, matchValue_5.fields[0]);\n const resultModel = patternInput_4[0];\n return [new Model(model.FinancialHierarchy, model.FinancialTree, new State(7, [resultModel]), resultModel.InProgress, resultModel.Error, model.DisplayCurrency), Cmd_map((Item_6) => (new Msg(9, [Item_6])), patternInput_4[1])];\n }\n else {\n return [model, Cmd_none()];\n }\n }\n default:\n return [new Model(model.FinancialHierarchy, model.FinancialTree, model.State, false, exnToDisplayString(ex), model.DisplayCurrency), Cmd_none()];\n }\n}\n\nexport function Main_view(session, model, dispatch) {\n const viewHierarchy = (groupType, filter) => DisplayHierarchy_view(filter, groupType, session, model, dispatch);\n const children = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton(closeable(`Financial error: ${matchValue}`, new Class(4, []))) : singleton(defaultOf())), delay(() => {\n const matchValue_1 = model.State;\n return (matchValue_1.tag === 1) ? singleton(viewHierarchy(2, matchValue_1.fields[0])) : ((matchValue_1.tag === 2) ? singleton(Groups_viewForAddEdit(matchValue_1.fields[0], dispatch)) : ((matchValue_1.tag === 6) ? singleton(DisplayHierarchy_viewSelectAdd(session, matchValue_1.fields[0], dispatch)) : ((matchValue_1.tag === 3) ? singleton(Assets_viewForAddEdit(matchValue_1.fields[0], dispatch)) : ((matchValue_1.tag === 4) ? singleton(Cashflows_viewForAddEdit(matchValue_1.fields[0], dispatch)) : ((matchValue_1.tag === 5) ? singleton(Assets_viewAddValue(matchValue_1.fields[0], matchValue_1.fields[1], dispatch)) : ((matchValue_1.tag === 7) ? singleton(DisplayHierarchy_viewImport(model.InProgress, matchValue_1.fields[0], dispatch)) : singleton(viewHierarchy(1, matchValue_1.fields[0]))))))));\n }));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\n","import { Union, Record } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { union_type, unit_type, class_type, record_type, string_type, bool_type, list_type, option_type, int64_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { AssetInfo_$reflection } from \"../../Omnicv.Shared/FinancialAPI.js\";\nimport { DataPoint_$reflection } from \"../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { ofArray, length, isEmpty, singleton, empty } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { createObj, equals, curry2 } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { valuesToTable, assetValueService, financialService } from \"./FinancialCommon.js\";\nimport { Session__GetCurrentProfileId } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { Cmd_none } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { responsiveChart, exnToDisplayString } from \"../../Omnicv.Client.Common/Utils.js\";\nimport { empty as empty_1, singleton as singleton_1, append, delay, toList } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Class, closeable } from \"../../Omnicv.Client.Common/Components/Notification.js\";\nimport { defaultOf } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { value as value_10 } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { h4, Option, h2, h1 } from \"../../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { reactApi } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { ResponsiveContainer } from \"recharts\";\nimport { createElement } from \"react\";\nimport { reactApi as reactApi_1 } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\n\nexport class Model extends Record {\n constructor(Id, Asset, Data, InProgress, Error$) {\n super();\n this.Id = Id;\n this.Asset = Asset;\n this.Data = Data;\n this.InProgress = InProgress;\n this.Error = Error$;\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Financial.ViewAsset.Component.Model\", [], Model, () => [[\"Id\", int64_type], [\"Asset\", option_type(AssetInfo_$reflection())], [\"Data\", list_type(DataPoint_$reflection())], [\"InProgress\", bool_type], [\"Error\", option_type(string_type)]]);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RequestData\", \"RequestAsset\", \"SuccessData\", \"SuccessAsset\", \"Failure\", \"DeleteValue\", \"DeleteSucceeded\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Financial.ViewAsset.Component.Msg\", [], Msg, () => [[], [], [[\"Item\", list_type(DataPoint_$reflection())]], [[\"Item\", AssetInfo_$reflection()]], [[\"Item\", class_type(\"System.Exception\")]], [[\"Item\", int64_type]], [[\"Item\", unit_type]]]);\n}\n\nexport function init(id) {\n return [new Model(id, undefined, empty(), false, undefined), singleton((dispatch) => {\n dispatch(new Msg(0, []));\n })];\n}\n\nexport function update(session, msg, model) {\n switch (msg.tag) {\n case 1:\n return [new Model(model.Id, model.Asset, model.Data, true, model.Error), Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, curry2(financialService.GetAsset)(Session__GetCurrentProfileId(session)), model.Id, (Item_2) => (new Msg(3, [Item_2])), (Item_3) => (new Msg(4, [Item_3])))];\n case 2:\n return [new Model(model.Id, model.Asset, msg.fields[0], false, undefined), singleton((dispatch) => {\n dispatch(new Msg(1, []));\n })];\n case 3:\n return [new Model(model.Id, msg.fields[0], model.Data, false, undefined), Cmd_none()];\n case 4:\n return [new Model(model.Id, undefined, empty(), false, exnToDisplayString(msg.fields[0])), Cmd_none()];\n case 5:\n return [new Model(model.Id, model.Asset, model.Data, true, model.Error), Cmd_OfAsyncWith_either((x_2) => {\n Cmd_OfAsync_start(x_2);\n }, curry2(assetValueService.DeleteRecord)(Session__GetCurrentProfileId(session)), msg.fields[0], () => (new Msg(6, [undefined])), (Item_5) => (new Msg(4, [Item_5])))];\n case 6:\n return [new Model(model.Id, model.Asset, model.Data, false, model.Error), singleton((dispatch_1) => {\n dispatch_1(new Msg(0, []));\n })];\n default:\n return [new Model(model.Id, model.Asset, model.Data, true, model.Error), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry2(assetValueService.GetRecordsForChart)(Session__GetCurrentProfileId(session)), model.Id, (Item) => (new Msg(2, [Item])), (Item_1) => (new Msg(4, [Item_1])))];\n }\n}\n\nexport function view(model, dispatch) {\n const children_2 = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Financial error: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => {\n let children;\n if (isEmpty(model.Data) ? true : (model.Asset == null)) {\n return singleton_1(\"No data\");\n }\n else {\n const asset = value_10(model.Asset);\n return singleton_1((children = toList(delay(() => append(singleton_1(h1(empty())(singleton(\"Asset values\"))), delay(() => append(singleton_1(h2(singleton(new Option(6, [])))(singleton(asset.Name))), delay(() => append(singleton_1(h4(singleton(new Option(6, [])))(singleton(`Currency: ${asset.Currency}`))), delay(() => {\n let properties, value_1;\n return append((length(model.Data) > 1) ? singleton_1((properties = ofArray([(value_1 = (100 + \"%\"), (equals(value_1, 100 + \"%\") ? true : equals(value_1, 100 + \"%\")) ? [\"width\", 99 + \"%\"] : [\"width\", value_1]), [\"height\", 300], [\"children\", responsiveChart(\"Value change over time\", model.Data)]]), reactApi.createElement(ResponsiveContainer, createObj(properties)))) : empty_1(), delay(() => append(singleton_1(h4(empty())(singleton(\"Values\"))), delay(() => singleton_1(valuesToTable(asset.Currency, model.Data, (id) => {\n dispatch(new Msg(5, [id]));\n }))))));\n })))))))), createElement(\"div\", {\n children: reactApi_1.Children.toArray(Array.from(children)),\n })));\n }\n }));\n }));\n return createElement(\"div\", {\n children: reactApi_1.Children.toArray(Array.from(children_2)),\n });\n}\n\n","import { Union, Record } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { DataPoint_$reflection } from \"../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { union_type, class_type, record_type, option_type, string_type, bool_type, list_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { ofArray, length, isEmpty, singleton, empty } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Cmd_none } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { responsiveChart, exnToDisplayString } from \"../../Omnicv.Client.Common/Utils.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { createObj, equals, curry2 } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { valuesToTable, financialService } from \"./FinancialCommon.js\";\nimport { Session__GetCurrentProfileId } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { empty as empty_1, singleton as singleton_1, append, delay, toList } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Class, closeable } from \"../../Omnicv.Client.Common/Components/Notification.js\";\nimport { defaultOf } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { Option, h4, h1 } from \"../../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { reactApi } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { ResponsiveContainer } from \"recharts\";\nimport { createElement } from \"react\";\nimport { reactApi as reactApi_1 } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\n\nexport const targetCurrency = \"USD\";\n\nexport class Model extends Record {\n constructor(Data, InProgress, Error$) {\n super();\n this.Data = Data;\n this.InProgress = InProgress;\n this.Error = Error$;\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Financial.ViewAssetsSummary.Component.Model\", [], Model, () => [[\"Data\", list_type(DataPoint_$reflection())], [\"InProgress\", bool_type], [\"Error\", option_type(string_type)]]);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RequestData\", \"SuccessData\", \"Failure\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Financial.ViewAssetsSummary.Component.Msg\", [], Msg, () => [[], [[\"Item\", list_type(DataPoint_$reflection())]], [[\"Item\", class_type(\"System.Exception\")]]]);\n}\n\nexport function init() {\n return [new Model(empty(), false, undefined), singleton((dispatch) => {\n dispatch(new Msg(0, []));\n })];\n}\n\nexport function update(session, msg, model) {\n switch (msg.tag) {\n case 1:\n return [new Model(msg.fields[0], false, undefined), Cmd_none()];\n case 2:\n return [new Model(empty(), false, exnToDisplayString(msg.fields[0])), Cmd_none()];\n default:\n return [new Model(model.Data, true, model.Error), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry2(financialService.GetAssetValuesForChart)(Session__GetCurrentProfileId(session)), targetCurrency, (Item) => (new Msg(1, [Item])), (Item_1) => (new Msg(2, [Item_1])))];\n }\n}\n\nexport function view(model, dispatch) {\n const children_2 = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Financial error: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => {\n let children;\n return isEmpty(model.Data) ? singleton_1(\"No data\") : singleton_1((children = toList(delay(() => append(singleton_1(h1(empty())(singleton(\"All asset values\"))), delay(() => append(singleton_1(h4(singleton(new Option(6, [])))(singleton(`Currency: ${targetCurrency}`))), delay(() => {\n let properties, value_1;\n return append((length(model.Data) > 1) ? singleton_1((properties = ofArray([(value_1 = (100 + \"%\"), (equals(value_1, 100 + \"%\") ? true : equals(value_1, 100 + \"%\")) ? [\"width\", 99 + \"%\"] : [\"width\", value_1]), [\"height\", 300], [\"children\", responsiveChart(\"Value change over time\", model.Data)]]), reactApi.createElement(ResponsiveContainer, createObj(properties)))) : empty_1(), delay(() => append(singleton_1(h4(empty())(singleton(\"Values\"))), delay(() => singleton_1(valuesToTable(targetCurrency, model.Data, undefined))))));\n })))))), createElement(\"div\", {\n children: reactApi_1.Children.toArray(Array.from(children)),\n })));\n }));\n }));\n return createElement(\"div\", {\n children: reactApi_1.Children.toArray(Array.from(children_2)),\n });\n}\n\n","import { FitnessClientModule_$ctor } from \"../../FitnessClientModule.js\";\nimport { Remoting_buildProxy_64DC51C } from \"../../fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js\";\nimport { RemotingModule_createApi, RemotingModule_withRouteBuilder } from \"../../fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js\";\nimport { isNullOrWhiteSpace, replace, format, printf, toText } from \"../../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { getWorkoutId, WorkoutRecord__IsActive, getExerciseId, RepsWithWeightRecord__E1RMDisplay, FitnessService_$reflection, IntervalsRepsRecord_$reflection, IntervalsDurationRecord_$reflection, EnduranceRecord_$reflection, RepsWithBodyWeightRecord_$reflection, RecordService$1_$reflection, RepsWithWeightRecord_$reflection } from \"../../Omnicv.Shared/FitnessAPI.js\";\nimport { Record, toString, Union } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { record_type, int32_type, string_type, class_type, name as name_4, lambda_type, unit_type, tuple_type, int64_type, union_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { ofSeq, cons, sum, max, head as head_1, filter, map, append, find, empty, isEmpty, collect, singleton, ofArray, item, insertAt, removeAt, length, findIndex } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { compare as compare_1, equals } from \"../../fable_modules/fable-library-js.4.24.0/BigInt.js\";\nimport * as flex_form from \"../../../src/javascript/flex-form.js\";\nimport { Route, Router_modifyLocation, Route_$reflection } from \"../../Omnicv.Client.Common/Router.js\";\nimport { Option, button } from \"../../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { Modifier_IModifier, TextAlignment_Option, Screen, Size_ISize, Color_IColor } from \"../../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { Option as Option_1, icon } from \"../../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport { Fa_i } from \"../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { Icons__ToIcon } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { Session__SiteSettings, Icons } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { Option as Option_2, columns } from \"../../fable_modules/Fulma.3.0.0/Layouts/Columns.fs.js\";\nimport { Option as Option_3, column } from \"../../fable_modules/Fulma.3.0.0/Layouts/Column.fs.js\";\nimport { createElement } from \"react\";\nimport { Markdown_ToHtml_1BFEAEDB } from \"../../fable_modules/Fable.Formatting.Markdown.1.0.1/Markdown.fs.js\";\nimport { DOMAttr } from \"../../fable_modules/Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport { reactApi } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { getBasicEventInfoData, splitSeconds } from \"../../Omnicv.Client.Common/Utils.js\";\nimport { map as map_1, value as value_6 } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { FSharpMap__get_Keys, tryFind, empty as empty_2, ofList, FSharpMap__ContainsKey, FSharpMap__TryFind, FSharpMap__get_Item } from \"../../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { distinct, List_groupBy, List_distinct } from \"../../fable_modules/fable-library-js.4.24.0/Seq2.js\";\nimport { curry2, compare, structuralHash, equals as equals_2, dateHash, stringHash, int64ToString, int32ToString, comparePrimitives, numberHash } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { compare as compare_2, equals as equals_1, utcNow } from \"../../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { toDateTime, toString as toString_1, fromDateTime } from \"../../fable_modules/fable-library-js.4.24.0/DateOnly.js\";\nimport { sortDescending, empty as empty_1, singleton as singleton_1, append as append_1, delay, toList } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport * as common from \"../../../src/javascript/common.js\";\nimport { StringBuilder__Append_Z721C83C5, StringBuilder__Append_Z524259A4, StringBuilder_$ctor_Z721C83C5 } from \"../../fable_modules/fable-library-js.4.24.0/System.Text.js\";\nimport { defaultOf } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\n\nexport const fitnessModule = FitnessClientModule_$ctor();\n\nexport const repsWithWeightRecordService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/mod/fit/%s/%s\"))(\"RepsWithWeightRecord\")(m), RemotingModule_createApi()), RecordService$1_$reflection(RepsWithWeightRecord_$reflection()));\n\nexport const repsWithBodyWeightRecordService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/mod/fit/%s/%s\"))(\"RepsWithBodyWeightRecord\")(m), RemotingModule_createApi()), RecordService$1_$reflection(RepsWithBodyWeightRecord_$reflection()));\n\nexport const enduranceRecordService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/mod/fit/%s/%s\"))(\"EnduranceRecord\")(m), RemotingModule_createApi()), RecordService$1_$reflection(EnduranceRecord_$reflection()));\n\nexport const intervalsDurationRecordService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/mod/fit/%s/%s\"))(\"IntervalsDurationRecord\")(m), RemotingModule_createApi()), RecordService$1_$reflection(IntervalsDurationRecord_$reflection()));\n\nexport const intervalsRepsRecordService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/mod/fit/%s/%s\"))(\"IntervalsRepsRecord\")(m), RemotingModule_createApi()), RecordService$1_$reflection(IntervalsRepsRecord_$reflection()));\n\nexport const fitnessService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/mod/fit-main/%s\"))(m), RemotingModule_createApi()), FitnessService_$reflection());\n\nexport class RemoveType extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Delete\", \"Unlink\"];\n }\n}\n\nexport function RemoveType_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Fitness.Common.RemoveType\", [], RemoveType, () => [[], []]);\n}\n\nexport class MoveAction extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Up\", \"Down\", \"Top\", \"Bottom\"];\n }\n}\n\nexport function MoveAction_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Fitness.Common.MoveAction\", [], MoveAction, () => [[], [], [], []]);\n}\n\nexport function moveEntryInList(entries, entryId, moveAction) {\n const index = findIndex((entry) => equals(flex_form.getId(entry), entryId), entries) | 0;\n const isLast = index === (length(entries) - 1);\n const targetIndex = (moveAction.tag === 2) ? ((index === 0) ? undefined : 0) : ((moveAction.tag === 1) ? (isLast ? undefined : (index + 1)) : ((moveAction.tag === 3) ? (isLast ? undefined : (length(entries) - 1)) : ((index === 0) ? undefined : (index - 1))));\n if (targetIndex == null) {\n return entries;\n }\n else {\n const targetIndex_1 = targetIndex | 0;\n const source_1 = removeAt(index, entries);\n return insertAt(targetIndex_1, item(index, entries), source_1);\n }\n}\n\nexport class FitnessAction extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Reorder\", \"Delete\", \"Unlink\", \"Edit\", \"View\", \"CloneData\", \"MarkFavourite\"];\n }\n}\n\nexport function FitnessAction_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Fitness.Common.FitnessAction\", [], FitnessAction, () => [[[\"Item\", lambda_type(tuple_type(int64_type, MoveAction_$reflection()), unit_type)]], [[\"Item\", lambda_type(int64_type, unit_type)]], [[\"Item\", lambda_type(int64_type, unit_type)]], [[\"Item\", lambda_type(int64_type, Route_$reflection())]], [[\"Item\", lambda_type(int64_type, Route_$reflection())]], [[\"Item\", lambda_type(int64_type, unit_type)]], [[\"Item\", lambda_type(int64_type, unit_type)]]]);\n}\n\nfunction createFitnessListAction(id, action) {\n switch (action.tag) {\n case 1:\n return singleton(button(ofArray([new Option(0, [new Color_IColor(8, [])]), new Option(5, []), new Option(18, [(_arg_4) => {\n if (window.confirm(`${\"Confirm delete\"}:\n${\"Are you sure you want to delete this entry?\"}`)) {\n (() => {\n action.fields[0](id);\n })();\n }\n }])]), singleton(icon(singleton(new Option_1(0, [new Size_ISize(0, [])])), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(2, []))), []))))));\n case 2:\n return singleton(button(ofArray([new Option(0, [new Color_IColor(12, [])]), new Option(5, []), new Option(18, [(_arg_5) => {\n if (window.confirm(`${\"Confirm unlink\"}:\n${\"Are you sure you want to unlink this entry?\"}`)) {\n (() => {\n action.fields[0](id);\n })();\n }\n }])]), singleton(icon(singleton(new Option_1(0, [new Size_ISize(0, [])])), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(3, []))), []))))));\n case 5:\n return singleton(button(ofArray([new Option(0, [new Color_IColor(6, [])]), new Option(5, []), new Option(18, [(_arg_6) => {\n action.fields[0](id);\n }])]), singleton(icon(singleton(new Option_1(0, [new Size_ISize(0, [])])), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(1, []))), []))))));\n case 6:\n return singleton(button(ofArray([new Option(0, [new Color_IColor(12, [])]), new Option(5, []), new Option(18, [(_arg_7) => {\n action.fields[0](id);\n }])]), singleton(icon(singleton(new Option_1(0, [new Size_ISize(0, [])])), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(18, []))), []))))));\n case 3:\n return singleton(button(ofArray([new Option(0, [new Color_IColor(4, [])]), new Option(5, []), new Option(18, [(_arg_8) => {\n Router_modifyLocation(action.fields[0](id));\n }])]), singleton(icon(singleton(new Option_1(0, [new Size_ISize(0, [])])), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(4, []))), []))))));\n case 4:\n return singleton(button(ofArray([new Option(0, [new Color_IColor(5, [])]), new Option(5, []), new Option(18, [(_arg_9) => {\n Router_modifyLocation(action.fields[0](id));\n }])]), singleton(icon(singleton(new Option_1(0, [new Size_ISize(0, [])])), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(13, []))), []))))));\n default: {\n const moveFunc = action.fields[0];\n return ofArray([button(ofArray([new Option(0, [new Color_IColor(4, [])]), new Option(5, []), new Option(18, [(_arg) => {\n moveFunc([id, new MoveAction(0, [])]);\n }])]), singleton(icon(singleton(new Option_1(0, [new Size_ISize(0, [])])), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(14, []))), []))))), button(ofArray([new Option(0, [new Color_IColor(4, [])]), new Option(5, []), new Option(18, [(_arg_1) => {\n moveFunc([id, new MoveAction(1, [])]);\n }])]), singleton(icon(singleton(new Option_1(0, [new Size_ISize(0, [])])), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(15, []))), []))))), button(ofArray([new Option(0, [new Color_IColor(4, [])]), new Option(5, []), new Option(18, [(_arg_2) => {\n moveFunc([id, new MoveAction(2, [])]);\n }])]), singleton(icon(singleton(new Option_1(0, [new Size_ISize(0, [])])), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(16, []))), []))))), button(ofArray([new Option(0, [new Color_IColor(4, [])]), new Option(5, []), new Option(18, [(_arg_3) => {\n moveFunc([id, new MoveAction(3, [])]);\n }])]), singleton(icon(singleton(new Option_1(0, [new Size_ISize(0, [])])), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(17, []))), [])))))]);\n }\n }\n}\n\nexport function createFitnessListActions(actions, id) {\n return collect((action) => createFitnessListAction(id, action), actions);\n}\n\nconst defaultDisplayWorkoutActions = singleton(new FitnessAction(4, [(Item) => (new Route(38, [Item]))]));\n\nexport function displayWorkout(actions, workout) {\n const finalActions = isEmpty(actions) ? defaultDisplayWorkoutActions : actions;\n return columns(ofArray([new Option_2(4, []), new Option_2(1, [])]), ofArray([column(empty(), singleton(workout.Name)), column(empty(), singleton(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(workout.Description),\n },\n }))), column(empty(), createFitnessListActions(finalActions, workout.Id))]));\n}\n\nconst defaultDisplayExerciseForRecordingActions = singleton(new FitnessAction(4, [(Item) => (new Route(42, [Item]))]));\n\nexport function displayClickableColumn(onClick, caption) {\n return column(singleton(new Option_3(3, [ofArray([new DOMAttr(40, [onClick]), [\"style\", {\n cursor: \"pointer\",\n }]])])), singleton(caption));\n}\n\nexport function displayExerciseForRecording(actions, workoutId, exercise) {\n const finalActions = isEmpty(actions) ? defaultDisplayExerciseForRecordingActions : actions;\n const children = singleton(columns(ofArray([new Option_2(4, []), new Option_2(1, [])]), ofArray([displayClickableColumn((_arg) => {\n let copyOfStruct;\n Router_modifyLocation(new Route(45, [exercise.ContentTypeId, exercise.Id, (copyOfStruct = workoutId, toString(copyOfStruct))]));\n }, exercise.Name), column(singleton(new Option_3(4, [singleton(new Modifier_IModifier(5, [new Screen(3, []), new TextAlignment_Option(3, [])]))])), createFitnessListActions(finalActions, exercise.Id))])));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nfunction formatSeconds(durationSecs) {\n const patternInput = splitSeconds(durationSecs);\n return format(\"{0:D2}:{1:D2}\", patternInput[0], patternInput[1]);\n}\n\nexport function displayRepsWithWeight(record) {\n let copyOfStruct;\n return [`${record.Weight}kg × ${record.Repetitions}, E1RM ${RepsWithWeightRecord__E1RMDisplay(record)}kg`, record.Notes, replace(name_4((copyOfStruct = record, RepsWithWeightRecord_$reflection())), \"Record\", \"\")];\n}\n\nexport function displayRepsWithBodyWeightRecord(record) {\n let copyOfStruct;\n return [`Body weight × ${record.Repetitions}`, record.Notes, replace(name_4((copyOfStruct = record, RepsWithBodyWeightRecord_$reflection())), \"Record\", \"\")];\n}\n\nexport function displayEnduranceRecord(record) {\n let copyOfStruct;\n return [`${record.DistanceKm}km in ${formatSeconds(record.DurationSec)}`, record.Notes, replace(name_4((copyOfStruct = record, EnduranceRecord_$reflection())), \"Record\", \"\")];\n}\n\nexport function displayIntervalsDurationRecord(record) {\n let copyOfStruct;\n return [`${record.NumExercises} exercises; work ${formatSeconds(record.WorkDurationSec)}; rest ${formatSeconds(record.RestDurationSec)}`, record.Notes, replace(name_4((copyOfStruct = record, IntervalsDurationRecord_$reflection())), \"Record\", \"\")];\n}\n\nexport function displayIntervalsRepsRecord(record) {\n let copyOfStruct;\n return [`${record.NumExercises} × ${record.NumExercises}; rest ${formatSeconds(record.RestDurationSec)}`, record.Notes, replace(name_4((copyOfStruct = record, IntervalsRepsRecord_$reflection())), \"Record\", \"\")];\n}\n\nexport function displayExerciseRecordCommon(session, deleteFunc, copyDataFunc, eventInfo, main, notes, recordName) {\n const descriptor = find((t) => (t.Name.indexOf(recordName) >= 0), Session__SiteSettings(session).FitnessContentTypes);\n const actions = append(map(value_6, filter((option_2) => (option_2 != null), ofArray([map_1((Item) => (new FitnessAction(1, [Item])), deleteFunc), map_1((Item_1) => (new FitnessAction(5, [Item_1])), copyDataFunc)]))), ofArray([new FitnessAction(4, [(id) => (new Route(44, [descriptor.Id, id]))]), new FitnessAction(3, [(id_1) => (new Route(46, [descriptor.Id, id_1]))])]));\n const hasNotes = (notes == null) ? \"\" : \" [notes]\";\n return columns(ofArray([new Option_2(4, []), new Option_2(1, [])]), ofArray([column(empty(), singleton(getBasicEventInfoData(eventInfo))), column(empty(), singleton(main + hasNotes)), column(empty(), createFitnessListActions(actions, eventInfo.Id))]));\n}\n\nfunction getExerciseRecordDisplayInfo(record) {\n switch (record.tag) {\n case 1:\n return displayRepsWithBodyWeightRecord(record.fields[0]);\n case 2:\n return displayEnduranceRecord(record.fields[0]);\n case 3:\n return displayIntervalsDurationRecord(record.fields[0]);\n case 4:\n return displayIntervalsRepsRecord(record.fields[0]);\n default:\n return displayRepsWithWeight(record.fields[0]);\n }\n}\n\nexport function displayExerciseRecord(session, deleteFunc, exerciseRecord_, exerciseRecord__1) {\n const exerciseRecord = [exerciseRecord_, exerciseRecord__1];\n const patternInput = getExerciseRecordDisplayInfo(exerciseRecord[1]);\n return displayExerciseRecordCommon(session, deleteFunc, undefined, exerciseRecord[0], patternInput[0], patternInput[1], patternInput[2]);\n}\n\nexport function displayExerciseRecordEx(session, exerciseMap, exerciseRecord_, exerciseRecord__1) {\n const exerciseRecord = [exerciseRecord_, exerciseRecord__1];\n const patternInput = getExerciseRecordDisplayInfo(exerciseRecord[1]);\n return displayExerciseRecordCommon(session, undefined, undefined, exerciseRecord[0], (FSharpMap__get_Item(exerciseMap, getExerciseId(exerciseRecord[0], exerciseRecord[1])).Name + \": \") + patternInput[0], patternInput[1], patternInput[2]);\n}\n\nfunction getRepetitionsFromExerciseRecord(exerciseRecord_, exerciseRecord__1) {\n const record = exerciseRecord__1;\n if (record.tag === 1) {\n return record.fields[0].Repetitions | 0;\n }\n else {\n return 0;\n }\n}\n\nfunction getE1RMFromExerciseRecord(exerciseRecord_, exerciseRecord__1) {\n const record = exerciseRecord__1;\n if (record.tag === 0) {\n return RepsWithWeightRecord__E1RMDisplay(record.fields[0]);\n }\n else {\n return 0;\n }\n}\n\nexport function getSummaryFromExerciseRecords(exerciseRecords) {\n const emptyRes = [\"\", \"\"];\n if (length(List_distinct(map((tupledArg) => tupledArg[0].ContentTypeId, exerciseRecords), {\n Equals: (x, y) => (x === y),\n GetHashCode: numberHash,\n })) !== 1) {\n return emptyRes;\n }\n else {\n const head = head_1(exerciseRecords)[1];\n switch (head.tag) {\n case 0: {\n const best = max(map((tupledArg_1) => getE1RMFromExerciseRecord(tupledArg_1[0], tupledArg_1[1]), exerciseRecords), {\n Compare: comparePrimitives,\n });\n return [\"Best E1RM\", best.toString() + \"kg\"];\n }\n case 1:\n return [\"Total\", int32ToString(sum(map((tupledArg_2) => getRepetitionsFromExerciseRecord(tupledArg_2[0], tupledArg_2[1]), exerciseRecords), {\n GetZero: () => 0,\n Add: (x_2, y_2) => (x_2 + y_2),\n }))];\n default:\n return emptyRes;\n }\n }\n}\n\nclass WorkoutRecordDescriptor extends Record {\n constructor(Date$, Name, Time, Progress, Count) {\n super();\n this.Date = Date$;\n this.Name = Name;\n this.Time = Time;\n this.Progress = Progress;\n this.Count = (Count | 0);\n }\n}\n\nfunction WorkoutRecordDescriptor_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Fitness.Common.WorkoutRecordDescriptor\", [], WorkoutRecordDescriptor, () => [[\"Date\", class_type(\"System.DateOnly\")], [\"Name\", string_type], [\"Time\", string_type], [\"Progress\", string_type], [\"Count\", int32_type]]);\n}\n\nfunction WorkoutRecordDescriptor_FromWorkoutRecord(workoutsMap, workoutRecordData) {\n const record = workoutRecordData[1];\n const eventInfo = workoutRecordData[0];\n const isActive = WorkoutRecord__IsActive(record, eventInfo, utcNow());\n let progress;\n const copyOfStruct = record.Progress * 100;\n progress = format('{0:' + \"F2\" + '}', copyOfStruct);\n let name;\n const matchValue = FSharpMap__TryFind(workoutsMap, record.WorkoutId);\n name = ((matchValue == null) ? int64ToString(record.Id) : matchValue.Name);\n return new WorkoutRecordDescriptor(fromDateTime(eventInfo.EventTimestamp), name, getBasicEventInfoData(eventInfo), (`${progress}% done`) + (isActive ? \" / active\" : \"\"), 1);\n}\n\nfunction WorkoutRecordDescriptor_FromExerciseRecord(exercisesMap, exerciseRecordData) {\n const eventInfo = exerciseRecordData[0];\n let name;\n const matchValue = FSharpMap__TryFind(exercisesMap, getExerciseId(exerciseRecordData[0], exerciseRecordData[1]));\n name = ((matchValue == null) ? int64ToString(eventInfo.Id) : matchValue.Name);\n return new WorkoutRecordDescriptor(fromDateTime(eventInfo.EventTimestamp), name, getBasicEventInfoData(eventInfo), \"100%\", 1);\n}\n\nfunction WorkoutRecordDescriptor_DisplayGroupAsSingle_Z40DA17B4(descriptors) {\n let final;\n if (length(descriptors) === 1) {\n final = head_1(descriptors);\n }\n else {\n const bind$0040 = head_1(descriptors);\n final = (new WorkoutRecordDescriptor(bind$0040.Date, bind$0040.Name, bind$0040.Time, bind$0040.Progress, length(descriptors)));\n }\n return columns(singleton(new Option_2(4, [])), toList(delay(() => append_1(singleton_1(column(empty(), singleton(final.Name))), delay(() => append_1(singleton_1(column(empty(), singleton(final.Time))), delay(() => append_1(singleton_1(column(empty(), singleton(final.Progress))), delay(() => ((final.Count > 1) ? singleton_1(column(empty(), singleton(`${final.Count} times`))) : empty_1()))))))))));\n}\n\nfunction WorkoutRecordDescriptor__get_GroupingKey(this$) {\n return this$.Name + this$.Progress;\n}\n\nfunction displayWorkoutRecord(workoutsMap, workoutRecordData_, workoutRecordData__1) {\n const workoutRecordData = [workoutRecordData_, workoutRecordData__1];\n const record = workoutRecordData[1];\n const eventInfo = workoutRecordData[0];\n return columns(singleton(new Option_2(4, [])), toList(delay(() => append_1(singleton_1(column(empty(), singleton(getBasicEventInfoData(eventInfo)))), delay(() => append_1(FSharpMap__ContainsKey(workoutsMap, record.WorkoutId) ? singleton_1(column(empty(), singleton(FSharpMap__get_Item(workoutsMap, record.WorkoutId).Name))) : singleton_1(column(empty(), singleton(int64ToString(eventInfo.Id)))), delay(() => append_1(singleton_1(column(empty(), toList(delay(() => {\n let copyOfStruct;\n return singleton_1(`${(copyOfStruct = (record.Progress * 100), format('{0:' + \"F2\" + '}', copyOfStruct))}% done`);\n })))), delay(() => singleton_1(column(empty(), createFitnessListActions(singleton(new FitnessAction(3, [(Item) => (new Route(49, [Item]))])), eventInfo.Id))))))))))));\n}\n\nfunction displayDescriptors(date, descriptors) {\n let arg;\n return append(singleton(createElement(\"div\", {\n className: \"divider\",\n children: `${toString_1(date)} (${(arg = toDateTime(date, 0), common.getDayName(arg, \"\"))}): ${length(descriptors)} record(s)`,\n })), map((tupledArg) => WorkoutRecordDescriptor_DisplayGroupAsSingle_Z40DA17B4(tupledArg[1]), List_groupBy(WorkoutRecordDescriptor__get_GroupingKey, descriptors, {\n Equals: (x, y) => (x === y),\n GetHashCode: stringHash,\n })));\n}\n\nfunction displayWorkoutRecordGroup(workoutsMap, workoutRecordLookup, date, workoutRecordData) {\n return displayDescriptors(date, map((workoutRecordData_1) => WorkoutRecordDescriptor_FromWorkoutRecord(workoutsMap, workoutRecordData_1), workoutRecordData));\n}\n\nfunction displayWorkoutRecordGroupPlain(workoutsMap, _workoutRecordLookup, date, workoutRecordData) {\n let arg;\n return append(singleton(createElement(\"div\", {\n className: \"divider\",\n children: `${toString_1(date)} (${(arg = toDateTime(date, 0), common.getDayName(arg, \"\"))}): ${length(workoutRecordData)} record(s)`,\n })), map((tupledArg) => displayWorkoutRecord(workoutsMap, tupledArg[0], tupledArg[1]), workoutRecordData));\n}\n\nfunction groupWorkoutRecords(workoutRecordData) {\n return List_groupBy((tupledArg) => fromDateTime(tupledArg[0].EventTimestamp), workoutRecordData, {\n Equals: equals_1,\n GetHashCode: dateHash,\n });\n}\n\nexport function displayWorkoutRecords(data) {\n const workoutRecordLookup = ofList(List_groupBy((tupledArg) => getWorkoutId(tupledArg[0], tupledArg[1]), data.ExerciseRecords, {\n Equals: equals_2,\n GetHashCode: structuralHash,\n }), {\n Compare: compare,\n });\n return collect((tupledArg_1) => displayWorkoutRecordGroup(empty_2({\n Compare: compare_1,\n }), workoutRecordLookup, tupledArg_1[0], tupledArg_1[1]), groupWorkoutRecords(data.WorkoutRecords));\n}\n\nexport function displayWorkoutRecordsOnly(workoutsMap, workoutRecordData) {\n return collect((tupledArg) => displayWorkoutRecordGroup(workoutsMap, empty_2({\n Compare: compare,\n }), tupledArg[0], tupledArg[1]), groupWorkoutRecords(workoutRecordData));\n}\n\nfunction displayDayWorkoutLog(session, date, workoutsMap, exercisesMap, workouts, exercises) {\n let arg;\n const sb = StringBuilder_$ctor_Z721C83C5(`${toString_1(date)} (${(arg = toDateTime(date, 0), common.getDayName(arg, \"\"))}): `);\n let workoutElements;\n if (workouts != null) {\n StringBuilder__Append_Z524259A4(StringBuilder__Append_Z721C83C5(sb, \"w: \"), length(value_6(workouts)));\n workoutElements = map((tupledArg) => displayWorkoutRecord(workoutsMap, tupledArg[0], tupledArg[1]), value_6(workouts));\n }\n else {\n workoutElements = empty();\n }\n let exercisesElements;\n if (exercises != null) {\n StringBuilder__Append_Z524259A4(StringBuilder__Append_Z721C83C5(sb, \" | e: \"), length(value_6(exercises)));\n exercisesElements = map((tupledArg_1) => displayExerciseRecordEx(session, exercisesMap, tupledArg_1[0], tupledArg_1[1]), value_6(exercises));\n }\n else {\n exercisesElements = empty();\n }\n return cons(createElement(\"div\", {\n className: \"divider\",\n children: toString(sb),\n }), append(workoutElements, exercisesElements));\n}\n\nexport function displayWorkoutLog(session, workoutLog) {\n let source_1;\n const workoutsMap = ofList(map((w) => [w.Id, w], workoutLog.Workouts), {\n Compare: compare_1,\n });\n const exercisesMap = ofList(map((w_1) => [w_1.Id, w_1], workoutLog.Exercises), {\n Compare: compare_1,\n });\n const workoutByDate = ofList(List_groupBy((tupledArg) => fromDateTime(tupledArg[0].EventTimestamp), workoutLog.RecentWorkoutRecords, {\n Equals: equals_1,\n GetHashCode: dateHash,\n }), {\n Compare: compare_2,\n });\n const exercisesByDate = ofList(List_groupBy((tupledArg_1) => fromDateTime(tupledArg_1[0].EventTimestamp), workoutLog.RecentExerciseRecords, {\n Equals: equals_1,\n GetHashCode: dateHash,\n }), {\n Compare: compare_2,\n });\n return collect((date) => displayDayWorkoutLog(session, date, workoutsMap, exercisesMap, tryFind(date, workoutByDate), tryFind(date, exercisesByDate)), ofSeq(sortDescending(distinct((source_1 = FSharpMap__get_Keys(workoutByDate), append_1(FSharpMap__get_Keys(exercisesByDate), source_1)), {\n Equals: equals_1,\n GetHashCode: dateHash,\n }), {\n Compare: compare_2,\n })));\n}\n\nexport function displayWorkoutRecordsOnlyPlain(workoutsMap, workoutRecordData) {\n return collect((tupledArg) => displayWorkoutRecordGroupPlain(workoutsMap, empty_2({\n Compare: compare,\n }), tupledArg[0], tupledArg[1]), groupWorkoutRecords(workoutRecordData));\n}\n\nexport function displayDailySingleExerciseRecords(session, displayRecord, group_, group__1) {\n let arg;\n const group = [group_, group__1];\n const exerciseRecords = group[1];\n const date = group[0];\n return append(singleton(createElement(\"div\", {\n className: \"divider\",\n children: `${toString_1(date)} (${(arg = toDateTime(date, 0), common.getDayName(arg, \"\"))}): ${length(exerciseRecords)} record(s)`,\n })), map(curry2(displayRecord)(session), exerciseRecords));\n}\n\nfunction displayDailyExerciseRecords(session, deleteFunc, group_, group__1) {\n let arg, patternInput, caption;\n const group = [group_, group__1];\n const exerciseRecords = group[1];\n const date = group[0];\n return append(singleton(createElement(\"div\", {\n className: \"divider\",\n children: `${toString_1(date)} (${(arg = toDateTime(date, 0), common.getDayName(arg, \"\"))}): ${length(exerciseRecords)} record(s)`,\n })), append(map((tupledArg) => displayExerciseRecord(session, deleteFunc, tupledArg[0], tupledArg[1]), exerciseRecords), singleton((patternInput = getSummaryFromExerciseRecords(exerciseRecords), (caption = patternInput[0], !isNullOrWhiteSpace(caption) ? columns(ofArray([new Option_2(4, []), new Option_2(1, [])]), ofArray([column(empty(), singleton(createElement(\"b\", {\n children: reactApi.Children.toArray([caption]),\n }))), column(empty(), singleton(patternInput[1]))])) : defaultOf())))));\n}\n\nexport function displayExerciseRecords(session, deleteFunc, exerciseRecords) {\n return collect((tupledArg_1) => displayDailyExerciseRecords(session, deleteFunc, tupledArg_1[0], tupledArg_1[1]), List_groupBy((tupledArg) => fromDateTime(tupledArg[0].EventTimestamp), exerciseRecords, {\n Equals: equals_1,\n GetHashCode: dateHash,\n }));\n}\n\n","import { Record, Union } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { tuple_type, lambda_type, int32_type, unit_type, record_type, string_type, bool_type, class_type, list_type, option_type, int64_type, union_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { ofArray, filter, map, append, isEmpty, singleton, empty } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { FSharpSet__get_IsEmpty, toList, FSharpSet__Add, FSharpSet__Remove, FSharpSet__Contains, empty as empty_1 } from \"../../fable_modules/fable-library-js.4.24.0/Set.js\";\nimport { equals as equals_1, compare } from \"../../fable_modules/fable-library-js.4.24.0/BigInt.js\";\nimport { displayExerciseRecords, displayWorkoutRecordsOnlyPlain, displayExerciseForRecording, displayWorkoutRecordsOnly, displayWorkout, displayWorkoutLog, displayClickableColumn, createFitnessListActions, FitnessAction, fitnessService, moveEntryInList, MoveAction_$reflection } from \"./FitnessCommon.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { Icons, Session__GetActiveWorkoutRecord, CompositeIcons, CompositeIcons__ToElement, Session__GetActiveWorkoutId, Session__GetCurrentProfileId } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { uncurry2, int64ToString, equals, curry3, curry2 } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { map as map_1, some, value as value_3 } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Cmd_batch, Cmd_none } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport * as flex_form from \"../../../src/javascript/flex-form.js\";\nimport { Router_modifyLocation, Route, Router_newUrl } from \"../../Omnicv.Client.Common/Router.js\";\nimport { exnToDisplayString } from \"../../Omnicv.Client.Common/Utils.js\";\nimport { Option, columns } from \"../../fable_modules/Fulma.3.0.0/Layouts/Columns.fs.js\";\nimport { Option as Option_1, ISize, column } from \"../../fable_modules/Fulma.3.0.0/Layouts/Column.fs.js\";\nimport { Size_ISize, Color_IColor, Common_GenericOption, Screen } from \"../../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { input, checkbox } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Checkbox.fs.js\";\nimport { HTMLAttr, DOMAttr } from \"../../fable_modules/Fable.React.9.4.0/Fable.React.Props.fs.js\";\nimport { empty as empty_2, singleton as singleton_1, append as append_1, delay, toList as toList_1 } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Class, closeable } from \"../../Omnicv.Client.Common/Components/Notification.js\";\nimport { defaultOf } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { h5, h4, Option as Option_4, h3, h2 } from \"../../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { createElement } from \"react\";\nimport { reactApi } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { Option as Option_2, button, list as list_4 } from \"../../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { ExerciseRecord_$reflection, WorkoutLog__IsEmpty, FitnessHierarchy_$reflection } from \"../../Omnicv.Shared/FitnessAPI.js\";\nimport { Markdown_ToHtml_1BFEAEDB } from \"../../fable_modules/Fable.Formatting.Markdown.1.0.1/Markdown.fs.js\";\nimport { Option as Option_3, icon } from \"../../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport { empty as empty_3, ofList } from \"../../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { Fa_IconOption, Fa_i } from \"../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { Fa_i as Fa_i_1 } from \"../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { Icons__ToIcon } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { singleton as singleton_2 } from \"../../fable_modules/fable-library-js.4.24.0/AsyncBuilder.js\";\nimport { commonAuthService } from \"../../Omnicv.Client.Common/CommonServer.js\";\nimport { EventInfo_$reflection } from \"../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { zip } from \"../../fable_modules/fable-library-js.4.24.0/Array.js\";\n\nexport class ViewState extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Normal\", \"SelectCandidates\", \"Reorder\", \"ShowPlainHistory\"];\n }\n}\n\nexport function ViewState_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Fitness.MainFitnessView.Component.ViewState\", [], ViewState, () => [[], [], [], []]);\n}\n\nexport class Model$2 extends Record {\n constructor(Id, Data, Entries, CandidateEntries, SelectedCandidateEntries, InProgress, ViewState, Error$) {\n super();\n this.Id = Id;\n this.Data = Data;\n this.Entries = Entries;\n this.CandidateEntries = CandidateEntries;\n this.SelectedCandidateEntries = SelectedCandidateEntries;\n this.InProgress = InProgress;\n this.ViewState = ViewState;\n this.Error = Error$;\n }\n}\n\nexport function Model$2_$reflection(gen0, gen1) {\n return record_type(\"Omnicv.Client.Pages.Fitness.MainFitnessView.Component.Model`2\", [gen0, gen1], Model$2, () => [[\"Id\", int64_type], [\"Data\", option_type(gen0)], [\"Entries\", list_type(gen1)], [\"CandidateEntries\", list_type(gen1)], [\"SelectedCandidateEntries\", class_type(\"Microsoft.FSharp.Collections.FSharpSet`1\", [int64_type])], [\"InProgress\", bool_type], [\"ViewState\", ViewState_$reflection()], [\"Error\", option_type(string_type)]]);\n}\n\nexport function Model$2_Default_Z524259C1(id) {\n return new Model$2(id, undefined, empty(), empty(), empty_1({\n Compare: compare,\n }), false, new ViewState(0, []), undefined);\n}\n\nexport class Msg$2 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RequestData\", \"RequestEntries\", \"SetState\", \"DataSuccess\", \"EntriesSuccess\", \"CandidateEntriesSuccess\", \"SubmitSelectedCandidates\", \"CandidateSetSuccess\", \"CancelCandidateSelection\", \"UpdateCandidate\", \"Failure\", \"DeleteRecord\", \"DeleteRecordSuccess\", \"DeleteEntry\", \"UnlinkEntry\", \"DeleteSuccess\", \"MoveEntry\", \"MoveSuccess\"];\n }\n}\n\nexport function Msg$2_$reflection(gen0, gen1) {\n return union_type(\"Omnicv.Client.Pages.Fitness.MainFitnessView.Component.Msg`2\", [gen0, gen1], Msg$2, () => [[[\"Item\", int64_type]], [], [[\"Item\", ViewState_$reflection()]], [[\"Item\", gen0]], [[\"Item\", list_type(gen1)]], [[\"Item\", list_type(gen1)]], [], [[\"Item\", unit_type]], [], [[\"Item\", int64_type]], [[\"Item\", class_type(\"System.Exception\")]], [], [[\"Item\", unit_type]], [[\"Item\", int64_type]], [[\"Item\", int64_type]], [[\"Item\", unit_type]], [[\"Item1\", int64_type], [\"Item2\", MoveAction_$reflection()]], [[\"Item\", unit_type]]]);\n}\n\nexport class CandidateFunctions$1 extends Record {\n constructor(Get, Set$, GetId) {\n super();\n this.Get = Get;\n this.Set = Set$;\n this.GetId = GetId;\n }\n}\n\nexport function CandidateFunctions$1_$reflection(gen0) {\n return record_type(\"Omnicv.Client.Pages.Fitness.MainFitnessView.Component.CandidateFunctions`1\", [gen0], CandidateFunctions$1, () => [[\"Get\", lambda_type(int32_type, lambda_type(int64_type, class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [list_type(gen0)])))], [\"Set\", lambda_type(int32_type, lambda_type(int64_type, lambda_type(list_type(int64_type), class_type(\"Microsoft.FSharp.Control.FSharpAsync`1\", [unit_type]))))], [\"GetId\", lambda_type(gen0, int64_type)]]);\n}\n\nexport function Common_update(getData, getEntries, updateEntries, candidateFuncs, deleteRecord, deleteEntry, session, msg, model) {\n let profileId_3, finalIds, profileId_7;\n switch (msg.tag) {\n case 1:\n return [new Model$2(model.Id, model.Data, model.Entries, model.CandidateEntries, model.SelectedCandidateEntries, true, model.ViewState, model.Error), Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, getEntries, Session__GetCurrentProfileId(session), (Item_2) => (new Msg$2(4, [Item_2])), (Item_3) => (new Msg$2(10, [Item_3])))];\n case 2: {\n const viewState = msg.fields[0];\n if (viewState.tag === 1) {\n if (candidateFuncs != null) {\n const profileId_2 = Session__GetCurrentProfileId(session) | 0;\n return [new Model$2(model.Id, model.Data, model.Entries, model.CandidateEntries, empty_1({\n Compare: compare,\n }), true, new ViewState(1, []), model.Error), Cmd_OfAsyncWith_either((x_3) => {\n Cmd_OfAsync_start(x_3);\n }, curry2(value_3(candidateFuncs).Get)(profileId_2), model.Id, (Item_4) => (new Msg$2(5, [Item_4])), (Item_5) => (new Msg$2(10, [Item_5])))];\n }\n else {\n return [model, Cmd_none()];\n }\n }\n else {\n return [new Model$2(model.Id, model.Data, model.Entries, model.CandidateEntries, model.SelectedCandidateEntries, model.InProgress, viewState, model.Error), Cmd_none()];\n }\n }\n case 3:\n return [new Model$2(model.Id, some(msg.fields[0]), model.Entries, model.CandidateEntries, model.SelectedCandidateEntries, false, model.ViewState, undefined), Cmd_none()];\n case 4:\n return [new Model$2(model.Id, model.Data, msg.fields[0], model.CandidateEntries, model.SelectedCandidateEntries, false, model.ViewState, undefined), Cmd_none()];\n case 5:\n return [new Model$2(model.Id, model.Data, model.Entries, msg.fields[0], model.SelectedCandidateEntries, false, model.ViewState, undefined), Cmd_none()];\n case 8:\n case 7:\n return [new Model$2(model.Id, model.Data, model.Entries, empty(), empty_1({\n Compare: compare,\n }), false, new ViewState(0, []), model.Error), singleton((dispatch) => {\n dispatch(new Msg$2(1, []));\n })];\n case 9: {\n const candidateId = msg.fields[0];\n return [new Model$2(model.Id, model.Data, model.Entries, model.CandidateEntries, FSharpSet__Contains(model.SelectedCandidateEntries, candidateId) ? FSharpSet__Remove(model.SelectedCandidateEntries, candidateId) : FSharpSet__Add(model.SelectedCandidateEntries, candidateId), model.InProgress, model.ViewState, model.Error), Cmd_none()];\n }\n case 6: {\n const candidateIds = toList(model.SelectedCandidateEntries);\n if (isEmpty(candidateIds)) {\n return [model, singleton((dispatch_1) => {\n dispatch_1(new Msg$2(8, []));\n })];\n }\n else if (candidateFuncs != null) {\n return [new Model$2(model.Id, model.Data, model.Entries, model.CandidateEntries, model.SelectedCandidateEntries, true, model.ViewState, model.Error), (profileId_3 = (Session__GetCurrentProfileId(session) | 0), (finalIds = append(map(value_3(candidateFuncs).GetId, model.Entries), candidateIds), Cmd_OfAsyncWith_either((x_5) => {\n Cmd_OfAsync_start(x_5);\n }, curry3(value_3(candidateFuncs).Set)(profileId_3)(model.Id), finalIds, () => (new Msg$2(7, [undefined])), (Item_7) => (new Msg$2(10, [Item_7])))))];\n }\n else {\n return [model, Cmd_none()];\n }\n }\n case 16: {\n const profileId_4 = Session__GetCurrentProfileId(session) | 0;\n const newEntries = moveEntryInList(model.Entries, msg.fields[0], msg.fields[1]);\n if (!equals(model.Entries, newEntries)) {\n const ids = map((arg_4) => flex_form.getId(arg_4), newEntries);\n return [new Model$2(model.Id, model.Data, newEntries, model.CandidateEntries, model.SelectedCandidateEntries, true, model.ViewState, model.Error), Cmd_OfAsyncWith_either((x_6) => {\n Cmd_OfAsync_start(x_6);\n }, curry2(updateEntries)(profileId_4), ids, () => (new Msg$2(17, [undefined])), (Item_9) => (new Msg$2(10, [Item_9])))];\n }\n else {\n return [model, Cmd_none()];\n }\n }\n case 13:\n return [new Model$2(model.Id, model.Data, model.Entries, model.CandidateEntries, model.SelectedCandidateEntries, true, model.ViewState, model.Error), Cmd_OfAsyncWith_either((x_7) => {\n Cmd_OfAsync_start(x_7);\n }, curry2(deleteEntry)(Session__GetCurrentProfileId(session)), msg.fields[0], () => (new Msg$2(15, [undefined])), (Item_11) => (new Msg$2(10, [Item_11])))];\n case 15:\n case 17:\n return [new Model$2(model.Id, model.Data, model.Entries, model.CandidateEntries, model.SelectedCandidateEntries, false, model.ViewState, model.Error), singleton((dispatch_2) => {\n dispatch_2(new Msg$2(1, []));\n })];\n case 11:\n return [new Model$2(model.Id, model.Data, model.Entries, model.CandidateEntries, model.SelectedCandidateEntries, true, model.ViewState, model.Error), Cmd_OfAsyncWith_either((x_8) => {\n Cmd_OfAsync_start(x_8);\n }, curry2(deleteRecord)(Session__GetCurrentProfileId(session)), model.Id, () => (new Msg$2(12, [undefined])), (Item_13) => (new Msg$2(10, [Item_13])))];\n case 12:\n return [new Model$2(model.Id, model.Data, model.Entries, model.CandidateEntries, model.SelectedCandidateEntries, false, model.ViewState, model.Error), Router_newUrl(new Route(32, []))];\n case 14:\n if (candidateFuncs != null) {\n const finalIds_1 = filter((i) => !equals_1(i, msg.fields[0]), map(value_3(candidateFuncs).GetId, model.Entries));\n return [new Model$2(model.Id, model.Data, model.Entries, model.CandidateEntries, model.SelectedCandidateEntries, true, model.ViewState, model.Error), (profileId_7 = (Session__GetCurrentProfileId(session) | 0), Cmd_OfAsyncWith_either((x_9) => {\n Cmd_OfAsync_start(x_9);\n }, curry3(value_3(candidateFuncs).Set)(profileId_7)(model.Id), finalIds_1, () => (new Msg$2(15, [undefined])), (Item_15) => (new Msg$2(10, [Item_15]))))];\n }\n else {\n return [model, Cmd_none()];\n }\n case 10:\n return [new Model$2(model.Id, model.Data, model.Entries, model.CandidateEntries, model.SelectedCandidateEntries, false, model.ViewState, exnToDisplayString(msg.fields[0])), Cmd_none()];\n default:\n return [new Model$2(model.Id, model.Data, model.Entries, model.CandidateEntries, model.SelectedCandidateEntries, true, model.ViewState, model.Error), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry2(getData)(Session__GetCurrentProfileId(session)), msg.fields[0], (Item) => (new Msg$2(3, [Item])), (Item_1) => (new Msg$2(10, [Item_1])))];\n }\n}\n\nfunction Common_displayCandidate(selectedCandidateEntries, getBasicInfo, dispatch, record) {\n const patternInput = getBasicInfo(record);\n const id = patternInput[1];\n return columns(ofArray([new Option(4, []), new Option(1, [])]), ofArray([column(singleton(new Option_1(0, [new Screen(0, []), new ISize(5, [])])), singleton(checkbox(empty(), singleton(input(singleton(new Common_GenericOption(1, [ofArray([new DOMAttr(9, [(_arg) => {\n dispatch(new Msg$2(9, [id]));\n }]), new HTMLAttr(62, [FSharpSet__Contains(selectedCandidateEntries, id)])])]))))))), column(empty(), singleton(checkbox(empty(), singleton(patternInput[0]))))]));\n}\n\nexport function Common_viewSelectCandidates(getBasicInfo, model, dispatch) {\n const children_6 = toList_1(delay(() => {\n let matchValue;\n return append_1((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't display candidates: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => append_1(singleton_1(h2(empty())(singleton(\"Select entries to be added\"))), delay(() => {\n let children;\n return append_1(isEmpty(model.CandidateEntries) ? singleton_1(\"No candidates available\") : singleton_1((children = map((record) => Common_displayCandidate(model.SelectedCandidateEntries, getBasicInfo, dispatch, record), model.CandidateEntries), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n }))), delay(() => singleton_1(list_4(empty(), ofArray([button(ofArray([new Option_2(0, [new Color_IColor(7, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg) => {\n dispatch(new Msg$2(8, []));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Cancel\"]),\n }))), button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress ? true : FSharpSet__get_IsEmpty(model.SelectedCandidateEntries)]), new Option_2(18, [(_arg_1) => {\n dispatch(new Msg$2(6, []));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Add selected\"]),\n })))])))));\n }))));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_6)),\n });\n}\n\nconst Main_service = fitnessService;\n\nexport class Main_Model extends Record {\n constructor(Data, InProgress, Error$) {\n super();\n this.Data = Data;\n this.InProgress = InProgress;\n this.Error = Error$;\n }\n}\n\nexport function Main_Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Fitness.MainFitnessView.Component.Main.Model\", [], Main_Model, () => [[\"Data\", option_type(FitnessHierarchy_$reflection())], [\"InProgress\", bool_type], [\"Error\", option_type(string_type)]]);\n}\n\nexport class Main_Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RequestData\", \"DataSuccess\", \"Failure\", \"DeleteEntry\", \"DeleteSuccess\", \"MarkFavourite\", \"RemoveFavourite\", \"FavouriteRequestSuccess\"];\n }\n}\n\nexport function Main_Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Fitness.MainFitnessView.Component.Main.Msg\", [], Main_Msg, () => [[], [[\"Item\", FitnessHierarchy_$reflection()]], [[\"Item\", class_type(\"System.Exception\")]], [[\"Item\", int64_type]], [[\"Item\", unit_type]], [[\"Item\", int64_type]], [[\"Item\", int64_type]], [[\"Item\", unit_type]]]);\n}\n\nexport function Main_init() {\n return [new Main_Model(undefined, false, undefined), singleton((dispatch) => {\n dispatch(new Main_Msg(0, []));\n })];\n}\n\nexport function Main_update(session, msg, model) {\n switch (msg.tag) {\n case 1:\n return [new Main_Model(msg.fields[0], false, undefined), Cmd_none()];\n case 3:\n return [new Main_Model(model.Data, true, model.Error), Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, curry2(Main_service.DeleteTrainingPlan)(Session__GetCurrentProfileId(session)), msg.fields[0], () => (new Main_Msg(4, [undefined])), (Item_3) => (new Main_Msg(2, [Item_3])))];\n case 5:\n return [new Main_Model(model.Data, true, model.Error), Cmd_OfAsyncWith_either((x_2) => {\n Cmd_OfAsync_start(x_2);\n }, curry2(Main_service.MarkTrainingPlanFavourite)(Session__GetCurrentProfileId(session)), msg.fields[0], () => (new Main_Msg(7, [undefined])), (Item_5) => (new Main_Msg(2, [Item_5])))];\n case 6:\n return [new Main_Model(model.Data, true, model.Error), Cmd_OfAsyncWith_either((x_3) => {\n Cmd_OfAsync_start(x_3);\n }, curry2(fitnessService.DeleteFavourite)(Session__GetCurrentProfileId(session)), msg.fields[0], () => (new Main_Msg(7, [undefined])), (Item_7) => (new Main_Msg(2, [Item_7])))];\n case 4:\n case 7:\n return [new Main_Model(model.Data, false, model.Error), singleton((dispatch) => {\n dispatch(new Main_Msg(0, []));\n })];\n case 2:\n return [new Main_Model(model.Data, false, exnToDisplayString(msg.fields[0])), Cmd_none()];\n default:\n return [new Main_Model(model.Data, true, model.Error), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, Main_service.GetHierarchy, Session__GetCurrentProfileId(session), (Item) => (new Main_Msg(1, [Item])), (Item_1) => (new Main_Msg(2, [Item_1])))];\n }\n}\n\nfunction Main_trainingPlanActions(dispatch) {\n return ofArray([new FitnessAction(4, [(Item) => (new Route(35, [Item]))]), new FitnessAction(3, [(Item_1) => (new Route(34, [Item_1]))]), new FitnessAction(6, [(arg) => {\n dispatch(new Main_Msg(5, [arg]));\n }]), new FitnessAction(1, [(arg_1) => {\n dispatch(new Main_Msg(3, [arg_1]));\n }])]);\n}\n\nfunction Main_displayTrainingPlan(dispatch, trainingPlan) {\n return columns(ofArray([new Option(4, []), new Option(1, [])]), ofArray([column(empty(), singleton(trainingPlan.TrainingPlan.Name)), column(empty(), singleton(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(trainingPlan.TrainingPlan.Description),\n },\n }))), column(empty(), createFitnessListActions(Main_trainingPlanActions(dispatch), trainingPlan.TrainingPlan.Id))]));\n}\n\nfunction Main_displayFavourite(session, dispatch, data_, data__1) {\n const data = [data_, data__1];\n const favourite = data[1];\n let patternInput;\n switch (favourite.tag) {\n case 1: {\n const workout = favourite.fields[0];\n patternInput = [workout.Name, workout.Description, empty(), undefined, workout.Id];\n break;\n }\n case 2: {\n const trainingPlan = favourite.fields[0];\n patternInput = [trainingPlan.Name, trainingPlan.Description, singleton(new FitnessAction(4, [(Item) => (new Route(35, [Item]))])), undefined, trainingPlan.Id];\n break;\n }\n default: {\n const exercise = favourite.fields[0];\n patternInput = [exercise.Name, exercise.Description, empty(), (_arg) => {\n Router_modifyLocation(new Route(45, [exercise.ContentTypeId, exercise.Id, map_1(int64ToString, Session__GetActiveWorkoutId(session))]));\n }, exercise.Id];\n }\n }\n const onClick_1 = patternInput[3];\n const name = patternInput[0];\n const description = patternInput[1];\n const removeFavourite = button(singleton(new Option_2(18, [(_arg_1) => {\n if (window.confirm(`${\"Confirm unlink\"}:\n${\"Are you sure you want to remove the favourite?\"}`)) {\n (() => {\n dispatch(new Main_Msg(6, [data[0]]));\n })();\n }\n }])), singleton(icon(singleton(new Option_3(0, [new Size_ISize(0, [])])), singleton(CompositeIcons__ToElement(new CompositeIcons())))));\n return columns(ofArray([new Option(4, []), new Option(1, [])]), append((onClick_1 == null) ? ofArray([column(empty(), singleton(name)), column(empty(), toList_1(delay(() => ((description !== name) ? singleton_1(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(description),\n },\n })) : singleton_1(defaultOf())))))]) : ofArray([displayClickableColumn(value_3(onClick_1), name), displayClickableColumn(value_3(onClick_1), (description !== name) ? description : \"\")]), singleton(column(empty(), append(createFitnessListActions(patternInput[2], patternInput[4]), singleton(removeFavourite))))));\n}\n\nfunction Main_displayHierarchy(session, dispatch, hierarchy) {\n const favouritesElems = map((tupledArg) => Main_displayFavourite(session, dispatch, tupledArg[0], tupledArg[1]), hierarchy.Favourites);\n const tradingPlanElems = map((trainingPlan) => Main_displayTrainingPlan(dispatch, trainingPlan), hierarchy.TrainingPlans);\n const workoutLog = WorkoutLog__IsEmpty(hierarchy.WorkoutLog) ? empty() : append(singleton(h2(empty())(singleton(\"Workout log\"))), displayWorkoutLog(session, hierarchy.WorkoutLog));\n if (isEmpty(hierarchy.Favourites)) {\n return append(tradingPlanElems, workoutLog);\n }\n else {\n return append(tradingPlanElems, append(singleton(h2(empty())(singleton(\"Favourites\"))), append(favouritesElems, workoutLog)));\n }\n}\n\nexport function Main_view(session, model, dispatch) {\n const children_12 = toList_1(delay(() => {\n let matchValue;\n return append_1((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't display fitness data: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => append_1(singleton_1(list_4(empty(), ofArray([button(ofArray([new Option_2(0, [new Color_IColor(5, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg) => {\n Router_modifyLocation(new Route(39, []));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"View workouts\"]),\n }))), button(ofArray([new Option_2(0, [new Color_IColor(5, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg_1) => {\n Router_modifyLocation(new Route(43, []));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"View exercises\"]),\n }))), button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg_2) => {\n Router_modifyLocation(new Route(33, []));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Add plan\"]),\n }))), button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg_3) => {\n Router_modifyLocation(new Route(36, []));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Add workout\"]),\n }))), button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg_4) => {\n Router_modifyLocation(new Route(40, []));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Add exercise\"]),\n })))]))), delay(() => {\n let children_10;\n return (model.Data != null) ? singleton_1((children_10 = append(singleton(h2(empty())(singleton(\"Your training plans\"))), Main_displayHierarchy(session, dispatch, value_3(model.Data))), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_10)),\n }))) : empty_2();\n }))));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_12)),\n });\n}\n\nconst TrainingPlan_service = fitnessService;\n\nexport function TrainingPlan_init(id) {\n return [Model$2_Default_Z524259C1(id), Cmd_batch(ofArray([singleton((dispatch) => {\n dispatch(new Msg$2(0, [id]));\n }), singleton((dispatch_1) => {\n dispatch_1(new Msg$2(1, []));\n })]))];\n}\n\nexport function TrainingPlan_update(session, msg, model) {\n return Common_update(uncurry2((profileId) => curry2(TrainingPlan_service.GetTrainingPlanWorkoutRecords)(value_3(profileId))), (profileId_1) => TrainingPlan_service.GetTrainingPlanWorkouts(profileId_1, model.Id), uncurry2((profileId_2) => curry3(TrainingPlan_service.SetWorkoutsForTrainingPlan)(profileId_2)(model.Id)), new CandidateFunctions$1(TrainingPlan_service.GetTrainingPlanWorkoutsCandidates, TrainingPlan_service.SetWorkoutsForTrainingPlan, (entry) => entry.Id), TrainingPlan_service.DeleteTrainingPlan, TrainingPlan_service.DeleteWorkout, session, msg, model);\n}\n\nfunction TrainingPlan_displayWorkouts(dispatch, workouts, forReorder) {\n const actions = forReorder ? ofArray([new FitnessAction(2, [(arg) => {\n dispatch(new Msg$2(14, [arg]));\n }]), new FitnessAction(0, [(arg_1) => {\n let tupledArg;\n dispatch((tupledArg = arg_1, new Msg$2(16, [tupledArg[0], tupledArg[1]])));\n }])]) : empty();\n return map((workout) => displayWorkout(actions, workout), workouts);\n}\n\nfunction TrainingPlan_viewMain(model, dispatch) {\n const children_10 = toList_1(delay(() => {\n let matchValue;\n return append_1((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't display training plan: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => {\n const trainingPlan = value_3(model.Data).TrainingPlan;\n return append_1(singleton_1(h2(empty())(singleton(\"Training plan\"))), delay(() => append_1(singleton_1(h3(singleton(new Option_4(6, [])))(singleton(trainingPlan.Name))), delay(() => append_1(singleton_1(h4(singleton(new Option_4(6, [])))(singleton(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(trainingPlan.Description),\n },\n })))), delay(() => append_1(singleton_1(list_4(empty(), ofArray([button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg) => {\n Router_modifyLocation(new Route(34, [trainingPlan.Id]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Edit plan\"]),\n }))), button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg_1) => {\n dispatch(new Msg$2(2, [new ViewState(1, [])]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Select workouts for plan\"]),\n }))), button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg_2) => {\n dispatch(new Msg$2(2, [new ViewState(2, [])]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Reorder workouts\"]),\n })))]))), delay(() => append_1(singleton_1(h3(empty())(singleton(\"Workouts for the training plan\"))), delay(() => {\n let children_6;\n return append_1(singleton_1((children_6 = TrainingPlan_displayWorkouts(dispatch, model.Entries, false), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_6)),\n }))), delay(() => append_1(singleton_1(h3(empty())(singleton(\"Workout records for the training plan\"))), delay(() => {\n let children_8;\n return singleton_1((children_8 = displayWorkoutRecordsOnly(ofList(map((w) => [w.Id, w], model.Entries), {\n Compare: compare,\n }), value_3(model.Data).WorkoutRecords), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_8)),\n })));\n }))));\n }))))))))));\n }));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_10)),\n });\n}\n\nfunction TrainingPlan_viewReorder(model, dispatch) {\n const children_4 = toList_1(delay(() => {\n let matchValue;\n return append_1((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't display training plan: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => {\n const trainingPlan = value_3(model.Data).TrainingPlan;\n return append_1(singleton_1(h2(empty())(singleton(`Training plan: ${trainingPlan.Name}`))), delay(() => append_1(singleton_1(h3(empty())(singleton(\"Re-order workouts for the training plan\"))), delay(() => {\n let children;\n return append_1(singleton_1((children = TrainingPlan_displayWorkouts(dispatch, model.Entries, true), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n }))), delay(() => singleton_1(list_4(empty(), singleton(button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg) => {\n dispatch(new Msg$2(2, [new ViewState(0, [])]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Done\"]),\n }))))))));\n }))));\n }));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_4)),\n });\n}\n\nexport function TrainingPlan_view(model, dispatch) {\n if (equals(model.ViewState, new ViewState(1, [])) && !model.InProgress) {\n return Common_viewSelectCandidates((entry) => [entry.Name, entry.Id], model, dispatch);\n }\n else if (equals(model.ViewState, new ViewState(2, [])) && !model.InProgress) {\n return TrainingPlan_viewReorder(model, dispatch);\n }\n else if ((model.Data != null) && !model.InProgress) {\n return TrainingPlan_viewMain(model, dispatch);\n }\n else {\n const children = ofArray([h2(empty())(singleton(\"Training plan\")), \"Loading data...\"]);\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n }\n}\n\nconst Workout_service = fitnessService;\n\nexport function Workout_init(id) {\n return [Model$2_Default_Z524259C1(id), Cmd_batch(ofArray([singleton((dispatch) => {\n dispatch(new Msg$2(0, [id]));\n }), singleton((dispatch_1) => {\n dispatch_1(new Msg$2(1, []));\n })]))];\n}\n\nexport function Workout_update(session, msg, model) {\n return Common_update(uncurry2((profileId) => curry2(Workout_service.GetWorkoutRecords)(value_3(profileId))), (profileId_1) => Workout_service.GetWorkoutExercises(profileId_1, model.Id), uncurry2((profileId_2) => curry3(Workout_service.SetExercisesForWorkout)(profileId_2)(model.Id)), new CandidateFunctions$1(Workout_service.GetWorkoutExercisesCandidates, Workout_service.SetExercisesForWorkout, (entry) => entry.Id), Workout_service.DeleteWorkout, Workout_service.DeleteExercise, session, msg, model);\n}\n\nfunction Workout_displayExercises(workoutId, dispatch, exercises, forReorder) {\n const actions = forReorder ? ofArray([new FitnessAction(2, [(arg) => {\n dispatch(new Msg$2(14, [arg]));\n }]), new FitnessAction(0, [(arg_1) => {\n let tupledArg;\n dispatch((tupledArg = arg_1, new Msg$2(16, [tupledArg[0], tupledArg[1]])));\n }])]) : empty();\n return map((exercise) => displayExerciseForRecording(actions, workoutId, exercise), exercises);\n}\n\nfunction Workout_viewMain(session, model, dispatch) {\n const workout = value_3(model.Data).Workout;\n const children_14 = toList_1(delay(() => {\n let matchValue;\n return append_1((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't display workout: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => append_1(singleton_1(h2(empty())(singleton(\"Workout\"))), delay(() => append_1(singleton_1(h3(singleton(new Option_4(6, [])))(toList_1(delay(() => append_1(singleton_1(workout.Name), delay(() => ((workout.WorkoutType === 2) ? append_1(singleton_1(\" \"), delay(() => singleton_1(icon(empty(), singleton(Fa_i(singleton(new Fa_IconOption(11, [\"fas fa-recycle\"])), [])))))) : empty_2()))))))), delay(() => append_1(singleton_1(h4(singleton(new Option_4(6, [])))(singleton(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(workout.Description),\n },\n })))), delay(() => {\n const activeWorkoutRecord = map_1((tuple) => tuple[1], Session__GetActiveWorkoutRecord(session));\n return append_1(((workout.WorkoutType === 2) && (activeWorkoutRecord != null)) ? singleton_1(closeable(\"Cannot add records for all exercises with an active workout\", new Class(3, []))) : empty_2(), delay(() => append_1(singleton_1(list_4(empty(), toList_1(delay(() => append_1(singleton_1(button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg) => {\n Router_modifyLocation(new Route(37, [workout.Id]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Edit workout\"]),\n })))), delay(() => append_1(singleton_1(button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg_1) => {\n dispatch(new Msg$2(2, [new ViewState(1, [])]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Select exercises for workout\"]),\n })))), delay(() => append_1(singleton_1(button(ofArray([new Option_2(0, [new Color_IColor(8, [])]), new Option_2(18, [(_arg_2) => {\n if (window.confirm(`${\"Confirm delete\"}:\n${\"Are you sure you want to delete this entry?\"}`)) {\n (() => {\n dispatch(new Msg$2(11, []));\n })();\n }\n }])]), ofArray([icon(empty(), singleton(Fa_i_1(singleton(Icons__ToIcon(new Icons(2, []))), []))), createElement(\"span\", {\n children: reactApi.Children.toArray([\"Delete workout\"]),\n })]))), delay(() => append_1(singleton_1(button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg_3) => {\n dispatch(new Msg$2(2, [new ViewState(2, [])]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Reorder exercises\"]),\n })))), delay(() => ((activeWorkoutRecord == null) ? append_1((workout.WorkoutType === 2) ? singleton_1(button(ofArray([new Option_2(0, [new Color_IColor(4, [])]), new Option_2(16, [model.InProgress ? true : isEmpty(model.Entries)]), new Option_2(18, [(_arg_4) => {\n Router_modifyLocation(new Route(47, [workout.Id]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Add record for all exercises\"]),\n })))) : empty_2(), delay(() => singleton_1(button(ofArray([new Option_2(0, [new Color_IColor(7, [])]), new Option_2(16, [model.InProgress ? true : isEmpty(model.Entries)]), new Option_2(18, [(_arg_5) => {\n Router_modifyLocation(new Route(48, [workout.Id]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Start workout\"]),\n })))))) : empty_2()))))))))))))), delay(() => append_1(singleton_1(h3(empty())(singleton(\"Exercises for the workout\"))), delay(() => {\n let children_12;\n let history;\n const workoutRecords = value_3(model.Data).WorkoutRecords;\n const showPlainHistory = equals(model.ViewState, new ViewState(3, []));\n history = (!isEmpty(workoutRecords) ? append(ofArray([h4(singleton(new Option_4(6, [])))(singleton(\"History\")), button(ofArray([new Option_2(0, [new Color_IColor(4, [])]), new Option_2(5, []), new Option_2(18, [(_arg_6) => {\n dispatch(new Msg$2(2, [showPlainHistory ? (new ViewState(0, [])) : (new ViewState(3, []))]));\n }])]), singleton(showPlainHistory ? \"Details\" : \"Plain history\")), createElement(\"small\", {\n children: [\"Plain view of the workout history allows you to edit individual records\"],\n })]), showPlainHistory ? displayWorkoutRecordsOnlyPlain(empty_3({\n Compare: compare,\n }), workoutRecords) : displayWorkoutRecordsOnly(empty_3({\n Compare: compare,\n }), workoutRecords)) : empty());\n return singleton_1((children_12 = append(Workout_displayExercises(model.Id, dispatch, model.Entries, false), history), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_12)),\n })));\n }))))));\n }))))))));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_14)),\n });\n}\n\nfunction Workout_viewReorder(_session, model, dispatch) {\n const workout = value_3(model.Data).Workout;\n const children_4 = toList_1(delay(() => {\n let matchValue;\n return append_1((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't display workout: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => append_1(singleton_1(h2(empty())(singleton(`Workout: ${workout.Name}`))), delay(() => append_1(singleton_1(h3(empty())(singleton(\"Re-order exercises for the workout\"))), delay(() => {\n let children;\n return append_1(singleton_1((children = Workout_displayExercises(model.Id, dispatch, model.Entries, true), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n }))), delay(() => singleton_1(list_4(empty(), singleton(button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg) => {\n dispatch(new Msg$2(2, [new ViewState(0, [])]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Done\"]),\n }))))))));\n }))))));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_4)),\n });\n}\n\nexport function Workout_view(session, model, dispatch) {\n if (equals(model.ViewState, new ViewState(1, [])) && !model.InProgress) {\n return Common_viewSelectCandidates((entry) => [entry.Name, entry.Id], model, dispatch);\n }\n else if (equals(model.ViewState, new ViewState(2, [])) && !model.InProgress) {\n return Workout_viewReorder(session, model, dispatch);\n }\n else if ((model.Data != null) && !model.InProgress) {\n return Workout_viewMain(session, model, dispatch);\n }\n else {\n const children = ofArray([h2(empty())(singleton(\"Workout\")), \"Loading data...\"]);\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n }\n}\n\nconst Exercise_service = fitnessService;\n\nexport function Exercise_init(id) {\n return [Model$2_Default_Z524259C1(id), Cmd_batch(ofArray([singleton((dispatch) => {\n dispatch(new Msg$2(0, [id]));\n }), singleton((dispatch_1) => {\n dispatch_1(new Msg$2(1, []));\n })]))];\n}\n\nexport function Exercise_update(session, msg, model) {\n return Common_update(Exercise_service.GetExercise, (profileId) => singleton_2.Delay(() => singleton_2.ReturnFrom(Exercise_service.GetExerciseRecords(profileId, model.Id))), (_arg_1, _arg_2) => {\n throw new Error(\"Not supported\");\n }, undefined, fitnessService.DeleteExercise, (profileId_1, id) => singleton_2.Delay(() => singleton_2.Bind(commonAuthService.DeleteRecord(profileId_1, id), (_arg) => singleton_2.Return(undefined))), session, msg, model);\n}\n\nexport function Exercise_view(session, model, dispatch) {\n if ((model.Data != null) && !model.InProgress) {\n const children_8 = toList_1(delay(() => {\n let matchValue;\n return append_1((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't display exercise: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => {\n const exercise = value_3(model.Data);\n const name = exercise.Name;\n return append_1(singleton_1(h2(empty())(singleton(\"Exercise\"))), delay(() => append_1(singleton_1(h3(singleton(new Option_4(6, [])))(singleton(name))), delay(() => append_1((exercise.Description !== name) ? singleton_1(h4(singleton(new Option_4(6, [])))(singleton(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(exercise.Description),\n },\n })))) : empty_2(), delay(() => append_1((exercise.Instructions !== name) ? singleton_1(h5(singleton(new Option_4(6, [])))(singleton(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(exercise.Instructions),\n },\n })))) : empty_2(), delay(() => append_1(singleton_1(list_4(empty(), ofArray([button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg) => {\n Router_modifyLocation(new Route(41, [exercise.Id]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Edit exercise\"]),\n }))), button(ofArray([new Option_2(0, [new Color_IColor(8, [])]), new Option_2(18, [(_arg_1) => {\n if (window.confirm(`${\"Confirm delete\"}:\n${\"Are you sure you want to delete this entry?\"}`)) {\n (() => {\n dispatch(new Msg$2(11, []));\n })();\n }\n }])]), ofArray([icon(empty(), singleton(Fa_i_1(singleton(Icons__ToIcon(new Icons(2, []))), []))), createElement(\"span\", {\n children: reactApi.Children.toArray([\"Delete exercise\"]),\n })])), button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg_2) => {\n const workoutIdOpt = map_1(int64ToString, Session__GetActiveWorkoutId(session));\n Router_modifyLocation(new Route(45, [value_3(model.Data).ContentTypeId, exercise.Id, workoutIdOpt]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Log exercise\"]),\n })))]))), delay(() => append_1(singleton_1(h3(empty())(singleton(\"Records for the exercise\"))), delay(() => {\n let children_6;\n return singleton_1((children_6 = displayExerciseRecords(session, (arg) => {\n dispatch(new Msg$2(13, [arg]));\n }, model.Entries), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_6)),\n })));\n }))))))))))));\n }));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_8)),\n });\n }\n else {\n const children_10 = ofArray([h2(empty())(singleton(\"Exercise\")), \"Loading data...\"]);\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_10)),\n });\n }\n}\n\nconst ExerciseRecord_service = fitnessService;\n\nexport class ExerciseRecord_Model extends Record {\n constructor(Id, Data, InProgress, Error$) {\n super();\n this.Id = Id;\n this.Data = Data;\n this.InProgress = InProgress;\n this.Error = Error$;\n }\n}\n\nexport function ExerciseRecord_Model_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Fitness.MainFitnessView.Component.ExerciseRecord.Model\", [], ExerciseRecord_Model, () => [[\"Id\", int64_type], [\"Data\", option_type(tuple_type(EventInfo_$reflection(), ExerciseRecord_$reflection()))], [\"InProgress\", bool_type], [\"Error\", option_type(string_type)]]);\n}\n\nexport function ExerciseRecord_Model_Default_Z524259C1(id) {\n return new ExerciseRecord_Model(id, undefined, false, undefined);\n}\n\nexport function ExerciseRecord_Model__GetExerciseId(this$) {\n return flex_form.getExerciseId(value_3(this$.Data)[1]);\n}\n\nexport class ExerciseRecord_Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RequestData\", \"DataSuccess\", \"Failure\", \"DeleteEntry\", \"DeleteSuccess\"];\n }\n}\n\nexport function ExerciseRecord_Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Fitness.MainFitnessView.Component.ExerciseRecord.Msg\", [], ExerciseRecord_Msg, () => [[[\"Item\", int64_type]], [[\"Item1\", EventInfo_$reflection()], [\"Item2\", ExerciseRecord_$reflection()]], [[\"Item\", class_type(\"System.Exception\")]], [[\"Item\", int64_type]], [[\"Item\", unit_type]]]);\n}\n\nexport function ExerciseRecord_init(_contentTypeId, id) {\n return [ExerciseRecord_Model_Default_Z524259C1(id), singleton((dispatch) => {\n dispatch(new ExerciseRecord_Msg(0, [id]));\n })];\n}\n\nexport function ExerciseRecord_update(session, msg, model) {\n let profileId;\n switch (msg.tag) {\n case 1:\n return [new ExerciseRecord_Model(model.Id, [msg.fields[0], msg.fields[1]], false, undefined), Cmd_none()];\n case 3:\n return [new ExerciseRecord_Model(model.Id, model.Data, true, model.Error), Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, (profileId = (Session__GetCurrentProfileId(session) | 0), (id) => singleton_2.Delay(() => singleton_2.Bind(commonAuthService.DeleteRecord(profileId, id), (_arg) => singleton_2.Return(undefined)))), msg.fields[0], () => (new ExerciseRecord_Msg(4, [undefined])), (Item_4) => (new ExerciseRecord_Msg(2, [Item_4])))];\n case 4:\n return [new ExerciseRecord_Model(model.Id, model.Data, false, model.Error), Router_newUrl(new Route(42, [ExerciseRecord_Model__GetExerciseId(model)]))];\n case 2:\n return [new ExerciseRecord_Model(model.Id, model.Data, false, exnToDisplayString(msg.fields[0])), Cmd_none()];\n default:\n return [new ExerciseRecord_Model(model.Id, model.Data, true, model.Error), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry2(ExerciseRecord_service.GetExerciseRecord)(Session__GetCurrentProfileId(session)), msg.fields[0], (tupledArg) => (new ExerciseRecord_Msg(1, [tupledArg[0], tupledArg[1]])), (Item_2) => (new ExerciseRecord_Msg(2, [Item_2])))];\n }\n}\n\nfunction ExerciseRecord_displayProperty(data_, data__1) {\n const data = [data_, data__1];\n return columns(singleton(new Option(4, [])), ofArray([column(empty(), singleton(createElement(\"strong\", {\n children: reactApi.Children.toArray([data[0]]),\n }))), column(empty(), singleton(data[1]))]));\n}\n\nfunction ExerciseRecord_displayProperties(data) {\n const properties = flex_form.getProperties(data);\n return map((tupledArg) => ExerciseRecord_displayProperty(tupledArg[0], tupledArg[1]), ofArray(zip(properties.Names, properties.Values)));\n}\n\nexport function ExerciseRecord_view(session, model, _dispatch) {\n if ((model.Data != null) && !model.InProgress) {\n const patternInput = value_3(model.Data);\n const eventInfo = patternInput[0];\n const exerciseId = ExerciseRecord_Model__GetExerciseId(model);\n const children_8 = toList_1(delay(() => {\n let matchValue;\n return append_1((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't display exercise record: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => append_1(singleton_1(h2(empty())(singleton(\"Exercise record details\"))), delay(() => append_1(singleton_1(list_4(empty(), ofArray([button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg) => {\n Router_modifyLocation(new Route(42, [exerciseId]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"View exercise\"]),\n }))), button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg_1) => {\n Router_modifyLocation(new Route(46, [eventInfo.ContentTypeId, eventInfo.Id]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Edit exercise record\"]),\n }))), button(ofArray([new Option_2(0, [new Color_IColor(6, [])]), new Option_2(16, [model.InProgress]), new Option_2(18, [(_arg_2) => {\n Router_modifyLocation(new Route(45, [eventInfo.ContentTypeId, eventInfo.Id, map_1(int64ToString, Session__GetActiveWorkoutId(session))]));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Add exercise record\"]),\n })))]))), delay(() => {\n let children_6;\n return singleton_1((children_6 = append(ExerciseRecord_displayProperties(eventInfo), ExerciseRecord_displayProperties(patternInput[1])), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_6)),\n })));\n }))))));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_8)),\n });\n }\n else {\n const children_10 = ofArray([h2(empty())(singleton(\"Exercise record\")), \"Loading data...\"]);\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_10)),\n });\n }\n}\n\n","import { Union, Record } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { union_type, unit_type, int64_type, class_type, record_type, option_type, string_type, bool_type, list_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { filter as filter_1, map, ofArray, singleton, empty } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Cmd_none } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { curry2 } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { Session__GetCurrentProfileId } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { exnToDisplayString } from \"../../Omnicv.Client.Common/Utils.js\";\nimport { createFitnessListActions, displayWorkout, FitnessAction, fitnessService } from \"./FitnessCommon.js\";\nimport { Router_modifyLocation, Route } from \"../../Omnicv.Client.Common/Router.js\";\nimport { singleton as singleton_1, append, delay, toList } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Class, closeable } from \"../../Omnicv.Client.Common/Components/Notification.js\";\nimport { defaultOf } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { h2 } from \"../../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { Option, button, list as list_2 } from \"../../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { Size_ISize, Color_IColor } from \"../../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { createElement } from \"react\";\nimport { reactApi } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { Option as Option_1, columns } from \"../../fable_modules/Fulma.3.0.0/Layouts/Columns.fs.js\";\nimport { column } from \"../../fable_modules/Fulma.3.0.0/Layouts/Column.fs.js\";\nimport { Markdown_ToHtml_1BFEAEDB } from \"../../fable_modules/Fable.Formatting.Markdown.1.0.1/Markdown.fs.js\";\nimport { Option as Option_2, div } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Control.fs.js\";\nimport { input } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Input.fs.js\";\nimport { Option as Option_3, IInputType } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Input.fs.js\";\nimport { isNullOrWhiteSpace } from \"../../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { Option as Option_4, icon } from \"../../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport { Fa_IconOption, Fa_i } from \"../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\n\nexport class Model$1 extends Record {\n constructor(Entries, InProgress, Filter, Error$) {\n super();\n this.Entries = Entries;\n this.InProgress = InProgress;\n this.Filter = Filter;\n this.Error = Error$;\n }\n}\n\nexport function Model$1_$reflection(gen0) {\n return record_type(\"Omnicv.Client.Pages.Fitness.FitnessEntriesView.Component.Model`1\", [gen0], Model$1, () => [[\"Entries\", list_type(gen0)], [\"InProgress\", bool_type], [\"Filter\", string_type], [\"Error\", option_type(string_type)]]);\n}\n\nexport function Model$1_Default() {\n return new Model$1(empty(), false, \"\", undefined);\n}\n\nexport class Msg$1 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RequestEntries\", \"EntriesSuccess\", \"Failure\", \"DeleteEntry\", \"MarkFavourite\", \"FavouriteSuccess\", \"DeleteSuccess\", \"UpdateFilter\"];\n }\n}\n\nexport function Msg$1_$reflection(gen0) {\n return union_type(\"Omnicv.Client.Pages.Fitness.FitnessEntriesView.Component.Msg`1\", [gen0], Msg$1, () => [[], [[\"Item\", list_type(gen0)]], [[\"Item\", class_type(\"System.Exception\")]], [[\"Item\", int64_type]], [[\"Item\", int64_type]], [[\"Item\", unit_type]], [[\"Item\", unit_type]], [[\"Item\", string_type]]]);\n}\n\nexport function Common_init() {\n return [Model$1_Default(), singleton((dispatch) => {\n dispatch(new Msg$1(0, []));\n })];\n}\n\nexport function Common_update(getEntries, deleteEntry, markEntryFavourite, session, msg, model) {\n switch (msg.tag) {\n case 1:\n return [new Model$1(msg.fields[0], false, model.Filter, undefined), Cmd_none()];\n case 4:\n return [new Model$1(model.Entries, true, model.Filter, model.Error), Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, curry2(markEntryFavourite)(Session__GetCurrentProfileId(session)), msg.fields[0], () => (new Msg$1(5, [undefined])), (Item_3) => (new Msg$1(2, [Item_3])))];\n case 3:\n return [new Model$1(model.Entries, true, model.Filter, model.Error), Cmd_OfAsyncWith_either((x_2) => {\n Cmd_OfAsync_start(x_2);\n }, curry2(deleteEntry)(Session__GetCurrentProfileId(session)), msg.fields[0], () => (new Msg$1(6, [undefined])), (Item_5) => (new Msg$1(2, [Item_5])))];\n case 6:\n case 5:\n return [new Model$1(model.Entries, false, model.Filter, model.Error), singleton((dispatch) => {\n dispatch(new Msg$1(0, []));\n })];\n case 2:\n return [new Model$1(model.Entries, false, model.Filter, exnToDisplayString(msg.fields[0])), Cmd_none()];\n case 7:\n return [new Model$1(model.Entries, model.InProgress, msg.fields[0], model.Error), Cmd_none()];\n default:\n return [new Model$1(model.Entries, true, model.Filter, model.Error), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, getEntries, Session__GetCurrentProfileId(session), (Item) => (new Msg$1(1, [Item])), (Item_1) => (new Msg$1(2, [Item_1])))];\n }\n}\n\nconst Workouts_service = fitnessService;\n\nexport function Workouts_init() {\n return Common_init();\n}\n\nexport function Workouts_update(session, msg, model) {\n return Common_update(Workouts_service.GetWorkouts, Workouts_service.DeleteWorkout, Workouts_service.MarkWorkoutFavourite, session, msg, model);\n}\n\nfunction Workouts_workoutActions(dispatch) {\n return ofArray([new FitnessAction(4, [(Item) => (new Route(38, [Item]))]), new FitnessAction(3, [(Item_1) => (new Route(37, [Item_1]))]), new FitnessAction(6, [(arg) => {\n dispatch(new Msg$1(4, [arg]));\n }]), new FitnessAction(1, [(arg_1) => {\n dispatch(new Msg$1(3, [arg_1]));\n }])]);\n}\n\nfunction Workouts_displayWorkouts(dispatch, workouts) {\n let actions;\n return map((actions = Workouts_workoutActions(dispatch), (workout) => displayWorkout(actions, workout)), workouts);\n}\n\nexport function Workouts_view(model, dispatch) {\n const children_6 = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't display workouts: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => append(singleton_1(h2(empty())(singleton(\"Workouts\"))), delay(() => {\n let children_4, children_2;\n return !model.InProgress ? singleton_1((children_4 = ofArray([list_2(empty(), singleton(button(ofArray([new Option(0, [new Color_IColor(6, [])]), new Option(16, [model.InProgress]), new Option(18, [(_arg) => {\n Router_modifyLocation(new Route(36, []));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Add workout\"]),\n }))))), (children_2 = Workouts_displayWorkouts(dispatch, model.Entries), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_2)),\n }))]), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_4)),\n }))) : singleton_1(\"Loading data...\");\n }))));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_6)),\n });\n}\n\nconst Exercises_service = fitnessService;\n\nexport function Exercises_init() {\n return Common_init();\n}\n\nexport function Exercises_update(session, msg, model) {\n return Common_update(Exercises_service.GetExercises, Exercises_service.DeleteExercise, Exercises_service.MarkExerciseFavourite, session, msg, model);\n}\n\nfunction Exercises_exerciseActions(dispatch) {\n return ofArray([new FitnessAction(4, [(Item) => (new Route(42, [Item]))]), new FitnessAction(3, [(Item_1) => (new Route(41, [Item_1]))]), new FitnessAction(6, [(arg) => {\n dispatch(new Msg$1(4, [arg]));\n }]), new FitnessAction(1, [(arg_1) => {\n dispatch(new Msg$1(3, [arg_1]));\n }])]);\n}\n\nfunction Exercises_displayExercise(dispatch, exercise) {\n return columns(ofArray([new Option_1(4, []), new Option_1(1, [])]), ofArray([column(empty(), singleton(exercise.Name)), column(empty(), singleton(createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: Markdown_ToHtml_1BFEAEDB(exercise.Description),\n },\n }))), column(empty(), createFitnessListActions(Exercises_exerciseActions(dispatch), exercise.Id))]));\n}\n\nfunction Exercises_displayExercises(dispatch, model) {\n const lowerFilter = model.Filter.toLocaleLowerCase();\n return map((exercise_1) => Exercises_displayExercise(dispatch, exercise_1), filter_1((exercise) => (exercise.Name.toLocaleLowerCase().indexOf(lowerFilter) >= 0), model.Entries));\n}\n\nexport function Exercises_view(model, dispatch) {\n const children_6 = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't display exercises: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => append(singleton_1(h2(empty())(singleton(\"Exercises\"))), delay(() => {\n let children_4, children_2;\n return !model.InProgress ? singleton_1((children_4 = ofArray([list_2(empty(), singleton(button(ofArray([new Option(0, [new Color_IColor(6, [])]), new Option(16, [model.InProgress]), new Option(18, [(_arg) => {\n Router_modifyLocation(new Route(40, []));\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Add exercise\"]),\n }))))), div(singleton(new Option_2(1, [])), ofArray([input(ofArray([new Option_3(1, [new IInputType(0, [])]), new Option_3(0, [new Size_ISize(0, [])]), new Option_3(12, [\"Search\"]), new Option_3(8, [model.Filter]), new Option_3(13, [(event) => {\n const elem = event.target;\n const newFilter = isNullOrWhiteSpace(elem.value) ? \"\" : elem.value;\n if (newFilter !== model.Filter) {\n dispatch(new Msg$1(7, [newFilter]));\n }\n }])])), icon(ofArray([new Option_4(0, [new Size_ISize(0, [])]), new Option_4(1, [])]), singleton(Fa_i(singleton(new Fa_IconOption(11, [\"fas fa-search\"])), [])))])), (children_2 = Exercises_displayExercises(dispatch, model), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_2)),\n }))]), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_4)),\n }))) : singleton_1(\"Loading data...\");\n }))));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_6)),\n });\n}\n\n","import { Record, Union } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { int64_type, class_type, record_type, list_type, string_type, bool_type, option_type, union_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { empty, cons, ofArray, singleton, forAll } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { fromInt32, toInt64, compare } from \"../../fable_modules/fable-library-js.4.24.0/BigInt.js\";\nimport * as flex_form from \"../../../src/javascript/flex-form.js\";\nimport { Cmd_none, Cmd_batch } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { some } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { singleton as singleton_1 } from \"../../fable_modules/fable-library-js.4.24.0/AsyncBuilder.js\";\nimport { FlexFormBase$1__Render_2B595, FlexFormBase$1__SetState, FlexForm$1_$ctor_2ABDDB55, setProfileId } from \"./FlexForm.js\";\nimport { Session__GetCurrentProfileId } from \"../SharedView.js\";\nimport { exnToDisplayString } from \"../Utils.js\";\nimport { Router_modifyLocation } from \"../Router.js\";\nimport { div } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Control.fs.js\";\nimport { singleton as singleton_2, append, delay, toList } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Class, closeable } from \"./Notification.js\";\nimport { defaultOf } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { container } from \"../../fable_modules/Fulma.3.0.0/Layouts/Container.fs.js\";\nimport { h1 } from \"../../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { createElement } from \"react\";\n\nexport class DataExpected extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Record\", \"EditHelper\"];\n }\n}\n\nexport function DataExpected_$reflection() {\n return union_type(\"Omnicv.Client.Common.Components.AddEditSimpleFlexFormBase.DataExpected\", [], DataExpected, () => [[], []]);\n}\n\nexport class Model$2 extends Record {\n constructor(Record, EditHelperData, InProgress, Error$, DataExpected) {\n super();\n this.Record = Record;\n this.EditHelperData = EditHelperData;\n this.InProgress = InProgress;\n this.Error = Error$;\n this.DataExpected = DataExpected;\n }\n}\n\nexport function Model$2_$reflection(gen0, gen1) {\n return record_type(\"Omnicv.Client.Common.Components.AddEditSimpleFlexFormBase.Model`2\", [gen0, gen1], Model$2, () => [[\"Record\", gen0], [\"EditHelperData\", option_type(gen1)], [\"InProgress\", bool_type], [\"Error\", option_type(string_type)], [\"DataExpected\", list_type(DataExpected_$reflection())]]);\n}\n\nfunction Model$2__IsItemReady_Z4CD6E166(this$, dataExpectedItem) {\n if (dataExpectedItem.tag === 1) {\n return this$.EditHelperData != null;\n }\n else {\n return Model$2__IsEditing(this$);\n }\n}\n\nexport function Model$2__IsReady(this$) {\n return forAll((dataExpectedItem) => Model$2__IsItemReady_Z4CD6E166(this$, dataExpectedItem), this$.DataExpected);\n}\n\nexport function Model$2__IsEditing(this$) {\n return compare(flex_form.getId(this$.Record), toInt64(fromInt32(0))) > 0;\n}\n\nexport class Msg$2 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RecordUpdated\", \"FetchSuccess\", \"FetchEditHelperDataSuccess\", \"Failure\", \"Submit\", \"SubmitSuccess\"];\n }\n}\n\nexport function Msg$2_$reflection(gen0, gen1) {\n return union_type(\"Omnicv.Client.Common.Components.AddEditSimpleFlexFormBase.Msg`2\", [gen0, gen1], Msg$2, () => [[[\"Item\", gen0]], [[\"Item\", gen0]], [[\"Item\", gen1]], [[\"Item\", class_type(\"System.Exception\")]], [], [[\"Item\", int64_type]]]);\n}\n\nexport class SimpleFormView$2 {\n constructor(buildForm, title, submitNewAction, submitEditAction, successAction, mainView) {\n this.buildForm = buildForm;\n this.title = title;\n this.submitNewAction = submitNewAction;\n this.submitEditAction = submitEditAction;\n this.successAction = successAction;\n this.mainView = mainView;\n }\n}\n\nexport function SimpleFormView$2_$reflection(gen0, gen1) {\n return class_type(\"Omnicv.Client.Common.Components.AddEditSimpleFlexFormBase.SimpleFormView`2\", [gen0, gen1], SimpleFormView$2);\n}\n\nexport function SimpleFormView$2_$ctor_68D4BBB0(buildForm, title, submitNewAction, submitEditAction, successAction, mainView) {\n return new SimpleFormView$2(buildForm, title, submitNewAction, submitEditAction, successAction, mainView);\n}\n\nexport function SimpleFormView$2__InitNewCore_Z292EED19(this$, defaultValue, fetchAction) {\n const patternInput = SimpleFormView$2__initCommon(this$, undefined, defaultValue, singleton(new DataExpected(1, [])));\n const newModel = patternInput[0];\n return [new Model$2(newModel.Record, newModel.EditHelperData, true, newModel.Error, newModel.DataExpected), Cmd_batch(ofArray([patternInput[1], Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, fetchAction, undefined, (Item) => (new Msg$2(2, [Item])), (Item_1) => (new Msg$2(3, [Item_1])))]))];\n}\n\nexport function SimpleFormView$2__InitEditCore_Z466B74A6(this$, recordId, defaultValue, fetchAction) {\n const patternInput = SimpleFormView$2__initCommon(this$, recordId, defaultValue, singleton(new DataExpected(0, [])));\n const newModel = patternInput[0];\n return [new Model$2(newModel.Record, newModel.EditHelperData, true, newModel.Error, newModel.DataExpected), Cmd_batch(ofArray([patternInput[1], Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, fetchAction, recordId, (Item) => (new Msg$2(1, [Item])), (Item_1) => (new Msg$2(3, [Item_1])))]))];\n}\n\nexport function SimpleFormView$2__InitEditWithHelperData_3AAD8C48(this$, recordId, defaultValue, fetchAction, fetchHelperDataAction) {\n const patternInput = SimpleFormView$2__InitEditCore_Z466B74A6(this$, recordId, defaultValue, fetchAction);\n const newModel = patternInput[0];\n return [new Model$2(newModel.Record, newModel.EditHelperData, true, newModel.Error, cons(new DataExpected(1, []), newModel.DataExpected)), Cmd_batch(ofArray([patternInput[1], Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, fetchHelperDataAction, undefined, (Item) => (new Msg$2(2, [Item])), (Item_1) => (new Msg$2(3, [Item_1])))]))];\n}\n\nexport function SimpleFormView$2__Update(this$, session, msg, model) {\n switch (msg.tag) {\n case 1:\n return [new Model$2(msg.fields[0], model.EditHelperData, false, model.Error, model.DataExpected), Cmd_none()];\n case 2:\n return [new Model$2(model.Record, some(msg.fields[0]), false, model.Error, model.DataExpected), Cmd_none()];\n case 4:\n return [new Model$2(model.Record, model.EditHelperData, true, model.Error, model.DataExpected), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, (record_1) => {\n if (Model$2__IsEditing(model)) {\n return singleton_1.Delay(() => singleton_1.Bind(this$.submitEditAction(record_1), () => singleton_1.Return(flex_form.getId(record_1))));\n }\n else {\n return this$.submitNewAction(setProfileId(record_1, Session__GetCurrentProfileId(session)));\n }\n }, model.Record, (Item) => (new Msg$2(5, [Item])), (Item_1) => (new Msg$2(3, [Item_1])))];\n case 5:\n return [new Model$2(model.Record, model.EditHelperData, false, model.Error, model.DataExpected), this$.successAction()];\n case 3:\n return [new Model$2(model.Record, model.EditHelperData, false, exnToDisplayString(msg.fields[0]), model.DataExpected), Cmd_none()];\n default:\n return [new Model$2(msg.fields[0], model.EditHelperData, model.InProgress, model.Error, model.DataExpected), Cmd_none()];\n }\n}\n\nexport function SimpleFormView$2__ViewForm_Z44A2099C(this$, session, model, dispatch) {\n let form_1;\n const form = FlexForm$1_$ctor_2ABDDB55((arg) => {\n dispatch(new Msg$2(0, [arg]));\n }, (_arg) => {\n dispatch(new Msg$2(4, []));\n }, () => {\n Router_modifyLocation(this$.mainView);\n });\n this$.buildForm(form, session, model, dispatch);\n FlexFormBase$1__SetState(form, model.InProgress, model.Error);\n form_1 = form;\n return div(empty(), toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_2(closeable(`Error: ${matchValue}`, new Class(4, []))) : singleton_2(defaultOf())), delay(() => append(singleton_2(container(empty(), singleton(h1(empty())(singleton(this$.title))))), delay(() => (!Model$2__IsReady(model) ? singleton_2(createElement(\"p\", {\n children: \"Loading...\",\n })) : singleton_2(FlexFormBase$1__Render_2B595(form_1, model.Record)))))));\n })));\n}\n\nexport function SimpleFormView$2__initCommon(this$, id, defaultValue, dataExpected) {\n return [new Model$2(defaultValue, undefined, id != null, undefined, dataExpected), Cmd_none()];\n}\n\n","import { Union, Record } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { unit_type, array_type, fullName, union_type, class_type, string_type, list_type, tuple_type, option_type, int64_type, record_type, bool_type, int32_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { printf, toFail, isNullOrWhiteSpace, split } from \"../../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { parse } from \"../../fable_modules/fable-library-js.4.24.0/Int32.js\";\nimport { updateAt, item } from \"../../fable_modules/fable-library-js.4.24.0/Array.js\";\nimport { parse as parse_1 } from \"../../fable_modules/fable-library-js.4.24.0/Boolean.js\";\nimport { WorkoutRecordType, WorkoutCircuitData_$reflection, ExerciseRecord, RepsWithWeightRecord, IntervalsRepsRecord, IntervalsDurationRecord, EnduranceRecord, RepsWithBodyWeightRecord, IntervalsRepsRecord_$reflection, IntervalsDurationRecord_$reflection, EnduranceRecord_$reflection, RepsWithBodyWeightRecord_$reflection, RepsWithWeightRecord_$reflection, IntervalsRepsRecord_Default_Z524259C1, IntervalsDurationRecord_Default_Z524259C1, EnduranceRecord_Default_Z524259C1, RepsWithBodyWeightRecord_Default_Z524259C1, RepsWithWeightRecord_Default_Z524259C1, validateNotes, validateWeight, validateRepetitions, ExerciseRecordAddingInfo$1_$reflection, Exercise_$reflection } from \"../../Omnicv.Shared/FitnessAPI.js\";\nimport { tryUpdateLocationFromSuggestions, update as update_1, prepareEventInfoForSubmit, Model__UpdateEventInfo_Z45EFA9A8, initCommonNoRegistration, initCommon, Msg_$reflection as Msg_$reflection_1, Model_$reflection as Model_$reflection_1 } from \"../../Omnicv.Client.Common/Components/EventInfoManager.js\";\nimport { EventInfo__ClearLocation, PagingOptions, EventInfo, EventInfo_Default_7F9DDECF, EventInfo_$reflection } from \"../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { equals as equals_1, fromInt32, toInt64, compare } from \"../../fable_modules/fable-library-js.4.24.0/BigInt.js\";\nimport { defaultArg, map, value as value_2 } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport * as flex_form from \"../../../src/javascript/flex-form.js\";\nimport { zip, toArray, mapIndexed, append as append_1, map as map_1, find, collect, cons, tryFind, singleton, filter, reverse, length, partition, head, isEmpty, ofArray, empty } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Cmd_none, Cmd_map, Cmd_batch } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport * as common from \"../../../src/javascript/common.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { uncurry2, dateHash, equals, curry2, curry3 } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { Session__SiteSettings, Session__GetActiveWorkoutRecord, Session__GetCurrentProfileId } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { FlexFormWithFormlets$1_$ctor_Z7DF2018A, Formlet$1, FieldValidationResult__Merge_30561432, FlexFormFields$1__CanSubmit_2B595, FlexFormTuple$2__get_FieldsFst, FlexFormFields$1__Render, FlexFormFields$1__AddDurationSecs_ZAAC24, FlexFormFields$1__AddPositiveIntOpt_414042FF, FlexFormFields$1__AddTextAreaOpt_Z44636648, FlexFormTuple$2__get_FieldsSnd, FlexFormFields$1__AddPositiveFloat_1D6F52FB, FlexFormFields$1__AddPositiveInt_ZAAC24, getSuggestions, addEventInfoWithSuggestionsToFlexForm, FlexFormTuple$2_$ctor_5AE4FFF0, FlexFormBase$1__Render_2B595, FlexForm$1__get_Fields, FlexFormFields$1__AddGroup_6DFDD678, FlexFormFields$1__AddDurationSecsWithSeconds_ZAAC24, noValidation, FlexFormFields$1__AddCheckbox_264AA22A, FlexForm$1_$ctor_2ABDDB55, FlexFormBase$1__SetState, setWorkoutRecordId, clearId } from \"../../Omnicv.Client.Common/Components/FlexForm.js\";\nimport { equals as equals_2, op_Addition, compare as compare_1, day, month, year, create } from \"../../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { displayWorkoutRecords, displayIntervalsRepsRecord, intervalsRepsRecordService, displayIntervalsDurationRecord, intervalsDurationRecordService, displayEnduranceRecord, enduranceRecordService, displayRepsWithBodyWeightRecord, repsWithBodyWeightRecordService, displayRepsWithWeight, repsWithWeightRecordService, displayExerciseRecordCommon, displayDailySingleExerciseRecords, fitnessService } from \"./FitnessCommon.js\";\nimport { fromSeconds } from \"../../fable_modules/fable-library-js.4.24.0/TimeSpan.js\";\nimport { Router_modifyLocation, Route, Router_newUrl } from \"../../Omnicv.Client.Common/Router.js\";\nimport { exnToDisplayString } from \"../../Omnicv.Client.Common/Utils.js\";\nimport { ofArray as ofArray_1, last, empty as empty_1, singleton as singleton_1, append, delay, toList } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Class, closeable } from \"../../Omnicv.Client.Common/Components/Notification.js\";\nimport { defaultOf } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { Option, div } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Control.fs.js\";\nimport { container } from \"../../fable_modules/Fulma.3.0.0/Layouts/Container.fs.js\";\nimport { h3, h4, Option as Option_1, h2, h1 } from \"../../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { createElement } from \"react\";\nimport { reactApi } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { List_groupBy } from \"../../fable_modules/fable-library-js.4.24.0/Seq2.js\";\nimport { fromDateTime } from \"../../fable_modules/fable-library-js.4.24.0/DateOnly.js\";\nimport { parse as parse_2 } from \"../../fable_modules/fable-library-js.4.24.0/Long.js\";\n\nexport class TimerOptions extends Record {\n constructor(DurationSecs, Start) {\n super();\n this.DurationSecs = (DurationSecs | 0);\n this.Start = Start;\n }\n}\n\nexport function TimerOptions_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Fitness.AddEditExerciseRecord.TimerOptions\", [], TimerOptions, () => [[\"DurationSecs\", int32_type], [\"Start\", bool_type]]);\n}\n\nexport function TimerOptions_Parse_Z721C83C5(value) {\n const parts = split(value, [\";\"], undefined, 0);\n return new TimerOptions(parse(item(0, parts), 511, false, 32), parse_1(item(1, parts)));\n}\n\nexport function TimerOptions__Serialise(this$) {\n return `${this$.DurationSecs};${this$.Start}`;\n}\n\nconst defaultTimer = new TimerOptions(2 * 60, true);\n\nexport class RecordModel$1 extends Record {\n constructor(RecordId, WorkoutId, ExerciseId, Exercise, EIMModel, Record, PreviousEntries, InProgress, Error$, TimerOptions) {\n super();\n this.RecordId = RecordId;\n this.WorkoutId = WorkoutId;\n this.ExerciseId = ExerciseId;\n this.Exercise = Exercise;\n this.EIMModel = EIMModel;\n this.Record = Record;\n this.PreviousEntries = PreviousEntries;\n this.InProgress = InProgress;\n this.Error = Error$;\n this.TimerOptions = TimerOptions;\n }\n}\n\nexport function RecordModel$1_$reflection(gen0) {\n return record_type(\"Omnicv.Client.Pages.Fitness.AddEditExerciseRecord.RecordModel`1\", [gen0], RecordModel$1, () => [[\"RecordId\", int64_type], [\"WorkoutId\", option_type(int64_type)], [\"ExerciseId\", int64_type], [\"Exercise\", option_type(Exercise_$reflection())], [\"EIMModel\", Model_$reflection_1()], [\"Record\", gen0], [\"PreviousEntries\", list_type(tuple_type(EventInfo_$reflection(), gen0))], [\"InProgress\", bool_type], [\"Error\", option_type(string_type)], [\"TimerOptions\", option_type(TimerOptions_$reflection())]]);\n}\n\nexport function RecordModel$1__IsEditing(this$) {\n return compare(this$.RecordId, toInt64(fromInt32(0))) > 0;\n}\n\nexport function RecordModel$1__GetExerciseId(this$) {\n if (compare(this$.ExerciseId, toInt64(fromInt32(0))) > 0) {\n return this$.ExerciseId;\n }\n else if (this$.Exercise != null) {\n return value_2(this$.Exercise).Id;\n }\n else {\n return flex_form.getExerciseId(this$.Record);\n }\n}\n\nexport class RecordMsg$1 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RecordAUpdated\", \"RecordBUpdated\", \"FetchExercise\", \"FetchExerciseRecordAddingInfoSuccess\", \"FetchExerciseSuccess\", \"FetchSuccess\", \"FetchPreviousSuccess\", \"Failure\", \"Submit\", \"SubmitSuccess\", \"UpdateTimerOptions\", \"SetTimer\", \"EIMMsg\"];\n }\n}\n\nexport function RecordMsg$1_$reflection(gen0) {\n return union_type(\"Omnicv.Client.Pages.Fitness.AddEditExerciseRecord.RecordMsg`1\", [gen0], RecordMsg$1, () => [[[\"Item\", EventInfo_$reflection()]], [[\"Item\", gen0]], [], [[\"Item\", ExerciseRecordAddingInfo$1_$reflection(gen0)]], [[\"Item\", Exercise_$reflection()]], [[\"Item\", tuple_type(EventInfo_$reflection(), gen0)]], [[\"Item\", list_type(tuple_type(EventInfo_$reflection(), gen0))]], [[\"Item\", class_type(\"System.Exception\")]], [], [[\"Item\", EventInfo_$reflection()]], [[\"Item\", TimerOptions_$reflection()]], [[\"Item\", class_type(\"System.DateTime\")]], [[\"Item\", Msg_$reflection_1()]]]);\n}\n\nclass AddEditExerciseRecordHandler$1 {\n constructor(createDefault, service, buildForm, displayRecord) {\n this.createDefault = createDefault;\n this.service = service;\n this.buildForm = buildForm;\n this.displayRecord = displayRecord;\n }\n}\n\nfunction AddEditExerciseRecordHandler$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Pages.Fitness.AddEditExerciseRecord.AddEditExerciseRecordHandler`1\", [gen0], AddEditExerciseRecordHandler$1);\n}\n\nfunction AddEditExerciseRecordHandler$1_$ctor_20729692(createDefault, service, buildForm, displayRecord) {\n return new AddEditExerciseRecordHandler$1(createDefault, service, buildForm, displayRecord);\n}\n\nfunction AddEditExerciseRecordHandler$1__InitCommonWithInfo(this$, withEventInfo, eventInfo, workoutId, exerciseId, cmd) {\n const defaultValue = this$.createDefault(exerciseId);\n const patternInput = withEventInfo ? initCommon(eventInfo) : initCommonNoRegistration(eventInfo);\n return [new RecordModel$1(eventInfo.Id, workoutId, exerciseId, undefined, patternInput[0], defaultValue, empty(), true, undefined, undefined), Cmd_batch(ofArray([Cmd_map((Item) => (new RecordMsg$1(12, [Item])), patternInput[1]), cmd]))];\n}\n\nfunction AddEditExerciseRecordHandler$1__InitCommon(this$, withEventInfo, contentTypeId, recordId, workoutId, exerciseId, cmd) {\n let bind$0040;\n return AddEditExerciseRecordHandler$1__InitCommonWithInfo(this$, withEventInfo, (bind$0040 = EventInfo_Default_7F9DDECF(common.getNow()), new EventInfo(recordId, contentTypeId, bind$0040.ProfileId, bind$0040.EventTimestamp, bind$0040.CreatedAt, bind$0040.UpdatedAt, bind$0040.PlaceId, bind$0040.PlaceName, bind$0040.Latitude, bind$0040.Longitude, bind$0040.LocationTz, bind$0040.LocationTzOffsetMin, bind$0040.ClientTz, bind$0040.ClientTzOffsetMin)), workoutId, exerciseId, cmd);\n}\n\nfunction AddEditExerciseRecordHandler$1__InitNew(this$, withEventInfo, session, contentTypeId, workoutId, exerciseId, noFetch) {\n let pagingOptions;\n const patternInput = AddEditExerciseRecordHandler$1__InitCommon(this$, withEventInfo, contentTypeId, 0n, workoutId, exerciseId, noFetch ? Cmd_none() : ((pagingOptions = (new PagingOptions(undefined, 10, false, undefined, undefined)), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry3(this$.service.GetExerciseRecordAddingInfo)(Session__GetCurrentProfileId(session))(exerciseId), pagingOptions, (Item) => (new RecordMsg$1(3, [Item])), (Item_1) => (new RecordMsg$1(7, [Item_1]))))));\n const model = patternInput[0];\n return [new RecordModel$1(model.RecordId, model.WorkoutId, model.ExerciseId, model.Exercise, model.EIMModel, model.Record, model.PreviousEntries, model.InProgress, model.Error, AddEditExerciseRecordHandler$1__GetTimerOptions_Z524259C1(this$, exerciseId)), patternInput[1]];\n}\n\nfunction AddEditExerciseRecordHandler$1__InitEdit(this$, withEventInfo, session, contentTypeId, id) {\n return AddEditExerciseRecordHandler$1__InitCommon(this$, withEventInfo, contentTypeId, id, undefined, 0n, Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry2(this$.service.GetRecord)(Session__GetCurrentProfileId(session)), id, (Item) => (new RecordMsg$1(5, [Item])), (Item_1) => (new RecordMsg$1(7, [Item_1]))));\n}\n\nfunction AddEditExerciseRecordHandler$1__Update(this$, session, msg, model) {\n let bind$0040, eventInfo, bind$0040_1;\n const withEventInfo = (newModel, eventInfo_1) => (new RecordModel$1(newModel.RecordId, newModel.WorkoutId, newModel.ExerciseId, newModel.Exercise, Model__UpdateEventInfo_Z45EFA9A8(model.EIMModel, eventInfo_1), newModel.Record, newModel.PreviousEntries, newModel.InProgress, newModel.Error, newModel.TimerOptions));\n const handlePreviousEntriesUpdate = (result_1, triggerFetchExercise) => {\n let now, midnight, patternInput, todayRecords, previousRecords, lastDate, midnight_1;\n const newModel_1 = new RecordModel$1(model.RecordId, model.WorkoutId, model.ExerciseId, model.Exercise, model.EIMModel, model.Record, result_1, false, model.Error, model.TimerOptions);\n const activeWorkoutEventInfo = map((tuple_3) => tuple_3[0], Session__GetActiveWorkoutRecord(session));\n if ((isEmpty(result_1) && (activeWorkoutEventInfo == null)) ? true : RecordModel$1__IsEditing(model)) {\n return [newModel_1, Cmd_none()];\n }\n else {\n const sourceEventInfo = (activeWorkoutEventInfo != null) ? value_2(activeWorkoutEventInfo) : EventInfo__ClearLocation(head(result_1)[0]);\n const newRecord = isEmpty(result_1) ? newModel_1.Record : clearId(setWorkoutRecordId((now = common.getNow(), (midnight = create(year(now), month(now), day(now), 0, 0, 0, 0, 2), (patternInput = partition((tupledArg) => (compare_1(tupledArg[0].EventTimestamp, midnight) > 0), result_1), (todayRecords = patternInput[0], (previousRecords = patternInput[1], (length(todayRecords) > 0) ? head(todayRecords)[1] : ((lastDate = head(previousRecords)[0].EventTimestamp, (midnight_1 = create(year(lastDate), month(lastDate), day(lastDate), 0, 0, 0, 0, 2), head(reverse(filter((tupledArg_1) => (compare_1(tupledArg_1[0].EventTimestamp, midnight_1) > 0), previousRecords)))[1])))))))), undefined));\n const now_1 = common.getNow();\n return [withEventInfo(new RecordModel$1(newModel_1.RecordId, newModel_1.WorkoutId, newModel_1.ExerciseId, newModel_1.Exercise, newModel_1.EIMModel, newRecord, newModel_1.PreviousEntries, newModel_1.InProgress, newModel_1.Error, newModel_1.TimerOptions), new EventInfo(0n, sourceEventInfo.ContentTypeId, sourceEventInfo.ProfileId, now_1, now_1, now_1, sourceEventInfo.PlaceId, sourceEventInfo.PlaceName, sourceEventInfo.Latitude, sourceEventInfo.Longitude, sourceEventInfo.LocationTz, sourceEventInfo.LocationTzOffsetMin, sourceEventInfo.ClientTz, sourceEventInfo.ClientTzOffsetMin)), (!triggerFetchExercise ? true : RecordModel$1__IsEditing(model)) ? Cmd_none() : singleton((dispatch) => {\n dispatch(new RecordMsg$1(2, []));\n })];\n }\n };\n switch (msg.tag) {\n case 0:\n return [withEventInfo(model, msg.fields[0]), Cmd_none()];\n case 1:\n return [new RecordModel$1(model.RecordId, model.WorkoutId, model.ExerciseId, model.Exercise, model.EIMModel, msg.fields[0], model.PreviousEntries, model.InProgress, model.Error, model.TimerOptions), Cmd_none()];\n case 2:\n if (compare(model.ExerciseId, toInt64(fromInt32(0))) > 0) {\n return [new RecordModel$1(model.RecordId, model.WorkoutId, model.ExerciseId, model.Exercise, model.EIMModel, model.Record, model.PreviousEntries, true, model.Error, model.TimerOptions), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry2(fitnessService.GetExercise)(Session__GetCurrentProfileId(session)), model.ExerciseId, (Item_2) => (new RecordMsg$1(4, [Item_2])), (Item_3) => (new RecordMsg$1(7, [Item_3])))];\n }\n else {\n return [model, Cmd_none()];\n }\n case 4:\n return [new RecordModel$1(model.RecordId, model.WorkoutId, model.ExerciseId, msg.fields[0], model.EIMModel, model.Record, model.PreviousEntries, false, model.Error, model.TimerOptions), Cmd_none()];\n case 5: {\n const eventInfo_6 = msg.fields[0][0];\n return [(bind$0040 = withEventInfo(model, eventInfo_6), new RecordModel$1(eventInfo_6.Id, bind$0040.WorkoutId, bind$0040.ExerciseId, bind$0040.Exercise, bind$0040.EIMModel, msg.fields[0][1], bind$0040.PreviousEntries, false, bind$0040.Error, bind$0040.TimerOptions)), singleton((dispatch_1) => {\n dispatch_1(new RecordMsg$1(2, []));\n })];\n }\n case 6:\n return handlePreviousEntriesUpdate(msg.fields[0], true);\n case 3: {\n const result_4 = msg.fields[0];\n const patternInput_3 = handlePreviousEntriesUpdate(result_4.ExerciseRecords, false);\n const newModel_2 = patternInput_3[0];\n return [new RecordModel$1(newModel_2.RecordId, newModel_2.WorkoutId, newModel_2.ExerciseId, result_4.Exercise, newModel_2.EIMModel, newModel_2.Record, newModel_2.PreviousEntries, newModel_2.InProgress, newModel_2.Error, newModel_2.TimerOptions), patternInput_3[1]];\n }\n case 8: {\n let timerCmd;\n const matchValue = model.TimerOptions;\n if (matchValue != null) {\n const timerOptions = matchValue;\n if (timerOptions.Start) {\n const timerEnd = op_Addition(common.getNow(), fromSeconds(timerOptions.DurationSecs));\n timerCmd = singleton((dispatch_2) => {\n dispatch_2(new RecordMsg$1(11, [timerEnd]));\n });\n }\n else {\n timerCmd = Cmd_none();\n }\n }\n else {\n timerCmd = Cmd_none();\n }\n return [new RecordModel$1(model.RecordId, model.WorkoutId, model.ExerciseId, model.Exercise, model.EIMModel, model.Record, model.PreviousEntries, true, model.Error, model.TimerOptions), Cmd_batch(ofArray([Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, (eventInfo = prepareEventInfoForSubmit(session, model.EIMModel), (record) => {\n const newEventInfo = new EventInfo(eventInfo.Id, eventInfo.ContentTypeId, Session__GetCurrentProfileId(session), eventInfo.EventTimestamp, eventInfo.CreatedAt, eventInfo.UpdatedAt, eventInfo.PlaceId, eventInfo.PlaceName, eventInfo.Latitude, eventInfo.Longitude, eventInfo.LocationTz, eventInfo.LocationTzOffsetMin, eventInfo.ClientTz, eventInfo.ClientTzOffsetMin);\n const finalRecord = setWorkoutRecordId(record, map((record_1) => record_1.Id, map((tuple) => tuple[1], Session__GetActiveWorkoutRecord(session))));\n return (compare(eventInfo.Id, toInt64(fromInt32(0))) > 0) ? this$.service.Edit(newEventInfo, finalRecord) : this$.service.Add(newEventInfo, finalRecord);\n }), model.Record, (Item_4) => (new RecordMsg$1(9, [Item_4])), (Item_5) => (new RecordMsg$1(7, [Item_5]))), timerCmd]))];\n }\n case 11:\n return [model, Cmd_none()];\n case 9: {\n const eventInfo_8 = msg.fields[0];\n return [(bind$0040_1 = withEventInfo(model, eventInfo_8), new RecordModel$1(eventInfo_8.Id, bind$0040_1.WorkoutId, bind$0040_1.ExerciseId, bind$0040_1.Exercise, bind$0040_1.EIMModel, bind$0040_1.Record, bind$0040_1.PreviousEntries, false, bind$0040_1.Error, bind$0040_1.TimerOptions)), Router_newUrl(new Route(42, [RecordModel$1__GetExerciseId(model)]))];\n }\n case 10: {\n const timerOptions_1 = msg.fields[0];\n if ((model.TimerOptions == null) ? true : !equals(value_2(model.TimerOptions), timerOptions_1)) {\n AddEditExerciseRecordHandler$1__SetTimerOptions(this$, model.ExerciseId, timerOptions_1);\n }\n return [new RecordModel$1(model.RecordId, model.WorkoutId, model.ExerciseId, model.Exercise, model.EIMModel, model.Record, model.PreviousEntries, model.InProgress, model.Error, timerOptions_1), Cmd_none()];\n }\n case 7:\n return [new RecordModel$1(model.RecordId, model.WorkoutId, model.ExerciseId, model.Exercise, model.EIMModel, model.Record, model.PreviousEntries, false, exnToDisplayString(msg.fields[0]), model.TimerOptions), Cmd_none()];\n default: {\n const patternInput_2 = update_1(msg.fields[0], model.EIMModel);\n return [new RecordModel$1(model.RecordId, model.WorkoutId, model.ExerciseId, model.Exercise, patternInput_2[0], model.Record, model.PreviousEntries, model.InProgress, model.Error, model.TimerOptions), Cmd_map((Item_1) => (new RecordMsg$1(12, [Item_1])), patternInput_2[1])];\n }\n }\n}\n\nfunction AddEditExerciseRecordHandler$1__BuildForm(this$, withEventInfo, model, dispatch) {\n const form_1 = this$.buildForm(AddEditExerciseRecordHandler$1__buildFormBase(this$, withEventInfo, model, dispatch), RecordModel$1__IsEditing(model), model, model.Record);\n FlexFormBase$1__SetState(form_1, model.InProgress, model.Error);\n return form_1;\n}\n\nfunction AddEditExerciseRecordHandler$1__GetTimerOptions_Z524259C1(this$, exerciseId) {\n const result = localStorage.getItem(`timer:${exerciseId}`);\n if (isNullOrWhiteSpace(result)) {\n return defaultTimer;\n }\n else {\n return TimerOptions_Parse_Z721C83C5(result);\n }\n}\n\nfunction AddEditExerciseRecordHandler$1__SetTimerOptions(this$, exerciseId, timerOptions) {\n localStorage.setItem(`timer:${exerciseId}`, TimerOptions__Serialise(timerOptions));\n}\n\nfunction AddEditExerciseRecordHandler$1__ViewTimerOptions(this$, timerOptions, dispatch) {\n const form = FlexForm$1_$ctor_2ABDDB55((arg) => {\n dispatch(new RecordMsg$1(10, [arg]));\n }, (value) => {\n }, undefined);\n FlexFormFields$1__AddCheckbox_264AA22A(FlexFormFields$1__AddDurationSecsWithSeconds_ZAAC24(FlexFormFields$1__AddGroup_6DFDD678(FlexForm$1__get_Fields(form)), \"DurationSecs\", noValidation), \"Start\", noValidation);\n return form[\"Omnicv.Client.Common.Components.FlexForm.FlexFormBase`1.RenderFields\"](false, timerOptions);\n}\n\nfunction AddEditExerciseRecordHandler$1__CopyData(this$, model, dispatch, id) {\n const previous = tryFind((tupledArg) => equals_1(tupledArg[0].Id, id), model.PreviousEntries);\n if (previous == null) {\n }\n else {\n dispatch(new RecordMsg$1(1, [previous[1]]));\n }\n}\n\nfunction AddEditExerciseRecordHandler$1__View(this$, caption, session, model, dispatch) {\n const exerciseTitle = defaultArg(map((exercise) => exercise.Name, model.Exercise), \" \");\n const title = RecordModel$1__IsEditing(model) ? (`Update ${caption}`) : (`Add ${caption}`);\n const form = AddEditExerciseRecordHandler$1__BuildForm(this$, true, model, dispatch);\n const children_6 = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Error: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => append(singleton_1(div(singleton(new Option(2, [model.InProgress])), toList(delay(() => append(singleton_1(container(empty(), toList(delay(() => append(singleton_1(h1(empty())(singleton(exerciseTitle))), delay(() => append(singleton_1(h2(singleton(new Option_1(6, [])))(singleton(title))), delay(() => ((model.WorkoutId != null) ? singleton_1(h4(singleton(new Option_1(6, [])))(singleton(`For workout ${value_2(model.WorkoutId)}`))) : empty_1()))))))))), delay(() => {\n const mainFormElement = FlexFormBase$1__Render_2B595(form, [model.EIMModel.EventInfo, model.Record]);\n let timerElements;\n const matchValue_1 = model.TimerOptions;\n timerElements = ((matchValue_1 != null) ? AddEditExerciseRecordHandler$1__ViewTimerOptions(this$, matchValue_1, dispatch) : empty());\n return singleton_1(createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(cons(mainFormElement, timerElements))),\n }));\n })))))), delay(() => {\n let displayRecord, children_4;\n if (!isEmpty(model.PreviousEntries)) {\n let entries;\n const list_1 = List_groupBy((tupledArg) => fromDateTime(tupledArg[0].EventTimestamp), model.PreviousEntries, {\n Equals: equals_2,\n GetHashCode: dateHash,\n });\n entries = collect((displayRecord = curry3(this$.displayRecord)(RecordModel$1__IsEditing(model) ? undefined : ((id) => {\n AddEditExerciseRecordHandler$1__CopyData(this$, model, dispatch, id);\n })), (tupledArg_1) => displayDailySingleExerciseRecords(session, uncurry2(displayRecord), tupledArg_1[0], tupledArg_1[1])), list_1);\n return singleton_1((children_4 = ofArray([h4(empty())(singleton(\"Previous entries\")), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(entries)),\n })]), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_4)),\n })));\n }\n else {\n return empty_1();\n }\n }))));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_6)),\n });\n}\n\nexport function AddEditExerciseRecordHandler$1__buildFormBase(this$, withEventInfo, model, dispatch) {\n const form = FlexFormTuple$2_$ctor_5AE4FFF0((arg) => {\n dispatch(new RecordMsg$1(0, [arg]));\n }, (arg_1) => {\n dispatch(new RecordMsg$1(1, [arg_1]));\n }, (_arg_1) => {\n dispatch(new RecordMsg$1(8, []));\n }, () => {\n if (compare(model.ExerciseId, toInt64(fromInt32(0))) > 0) {\n Router_modifyLocation(new Route(42, [model.ExerciseId]));\n }\n else {\n Router_modifyLocation(new Route(32, []));\n }\n });\n if (withEventInfo) {\n addEventInfoWithSuggestionsToFlexForm(form, model.EIMModel.EventInfo, model.EIMModel.Position, model.PreviousEntries);\n if (!RecordModel$1__IsEditing(model)) {\n tryUpdateLocationFromSuggestions(() => getSuggestions(model.EIMModel.Position, model.PreviousEntries), model.EIMModel);\n }\n }\n return form;\n}\n\nfunction Handlers_noValidation(_arg) {\n return undefined;\n}\n\nfunction Handlers_buildRepsWithWeightRecordForm(form, _editing, _model, record) {\n FlexFormFields$1__AddPositiveInt_ZAAC24(FlexFormFields$1__AddPositiveFloat_1D6F52FB(FlexFormFields$1__AddGroup_6DFDD678(FlexFormTuple$2__get_FieldsSnd(form)), \"Weight\", validateWeight), \"Repetitions\", validateRepetitions);\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormTuple$2__get_FieldsSnd(form), \"Notes\", validateNotes);\n return form;\n}\n\nfunction Handlers_displayRecord(getInfo, copyDataFunc, session, data_, data__1) {\n const data = [data_, data__1];\n const patternInput = getInfo(data[1]);\n return displayExerciseRecordCommon(session, undefined, copyDataFunc, data[0], patternInput[0], patternInput[1], patternInput[2]);\n}\n\nconst Handlers_repsWithWeight = AddEditExerciseRecordHandler$1_$ctor_20729692(RepsWithWeightRecord_Default_Z524259C1, repsWithWeightRecordService, Handlers_buildRepsWithWeightRecordForm, (copyDataFunc, session, tupledArg) => Handlers_displayRecord(displayRepsWithWeight, copyDataFunc, session, tupledArg[0], tupledArg[1]));\n\nfunction Handlers_buildRepsWithBodyWeightRecordForm(form, _editing, _model, record) {\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddPositiveInt_ZAAC24(FlexFormTuple$2__get_FieldsSnd(form), \"Repetitions\", validateRepetitions), \"Notes\", validateNotes);\n return form;\n}\n\nconst Handlers_repsWithBodyWeight = AddEditExerciseRecordHandler$1_$ctor_20729692(RepsWithBodyWeightRecord_Default_Z524259C1, repsWithBodyWeightRecordService, Handlers_buildRepsWithBodyWeightRecordForm, (copyDataFunc, session, tupledArg) => Handlers_displayRecord(displayRepsWithBodyWeightRecord, copyDataFunc, session, tupledArg[0], tupledArg[1]));\n\nfunction Handlers_buildEnduranceRecordForm(form, _editing, _model, record) {\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddPositiveIntOpt_414042FF(FlexFormFields$1__AddDurationSecs_ZAAC24(FlexFormFields$1__AddPositiveFloat_1D6F52FB(FlexFormTuple$2__get_FieldsSnd(form), \"DistanceKm\", Handlers_noValidation), \"DurationSec\", Handlers_noValidation), \"Calories\", Handlers_noValidation), \"Notes\", validateNotes);\n return form;\n}\n\nconst Handlers_endurance = AddEditExerciseRecordHandler$1_$ctor_20729692(EnduranceRecord_Default_Z524259C1, enduranceRecordService, Handlers_buildEnduranceRecordForm, (copyDataFunc, session, tupledArg) => Handlers_displayRecord(displayEnduranceRecord, copyDataFunc, session, tupledArg[0], tupledArg[1]));\n\nfunction Handlers_buildIntervalsDurationRecordForm(form, _editing, _model, record) {\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddDurationSecs_ZAAC24(FlexFormFields$1__AddDurationSecs_ZAAC24(FlexFormFields$1__AddPositiveInt_ZAAC24(FlexFormTuple$2__get_FieldsSnd(form), \"NumExercises\", Handlers_noValidation), \"WorkDurationSec\", Handlers_noValidation), \"RestDurationSec\", Handlers_noValidation), \"Notes\", validateNotes);\n return form;\n}\n\nconst Handlers_intervalsDuration = AddEditExerciseRecordHandler$1_$ctor_20729692(IntervalsDurationRecord_Default_Z524259C1, intervalsDurationRecordService, Handlers_buildIntervalsDurationRecordForm, (copyDataFunc, session, tupledArg) => Handlers_displayRecord(displayIntervalsDurationRecord, copyDataFunc, session, tupledArg[0], tupledArg[1]));\n\nfunction Handlers_buildIntervalsRepsRecordForm(form, _editing, _model, record) {\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddDurationSecs_ZAAC24(FlexFormFields$1__AddPositiveInt_ZAAC24(FlexFormFields$1__AddPositiveInt_ZAAC24(FlexFormTuple$2__get_FieldsSnd(form), \"NumExercises\", Handlers_noValidation), \"WorkRepetitions\", Handlers_noValidation), \"RestDurationSec\", Handlers_noValidation), \"Notes\", validateNotes);\n return form;\n}\n\nconst Handlers_intervalsReps = AddEditExerciseRecordHandler$1_$ctor_20729692(IntervalsRepsRecord_Default_Z524259C1, intervalsRepsRecordService, Handlers_buildIntervalsRepsRecordForm, (copyDataFunc, session, tupledArg) => Handlers_displayRecord(displayIntervalsRepsRecord, copyDataFunc, session, tupledArg[0], tupledArg[1]));\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RepsWithWeightMsg\", \"RepsWithBodyWeightMsg\", \"EnduranceMsg\", \"IntervalsDurationMsg\", \"IntervalsRepsMsg\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Fitness.AddEditExerciseRecord.Msg\", [], Msg, () => [[[\"Item\", RecordMsg$1_$reflection(RepsWithWeightRecord_$reflection())]], [[\"Item\", RecordMsg$1_$reflection(RepsWithBodyWeightRecord_$reflection())]], [[\"Item\", RecordMsg$1_$reflection(EnduranceRecord_$reflection())]], [[\"Item\", RecordMsg$1_$reflection(IntervalsDurationRecord_$reflection())]], [[\"Item\", RecordMsg$1_$reflection(IntervalsRepsRecord_$reflection())]]]);\n}\n\nexport class Model extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"RepsWithWeightModel\", \"RepsWithBodyWeightModel\", \"EnduranceModel\", \"IntervalsDurationModel\", \"IntervalsRepsModel\"];\n }\n}\n\nexport function Model_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Fitness.AddEditExerciseRecord.Model\", [], Model, () => [[[\"Item\", RecordModel$1_$reflection(RepsWithWeightRecord_$reflection())]], [[\"Item\", RecordModel$1_$reflection(RepsWithBodyWeightRecord_$reflection())]], [[\"Item\", RecordModel$1_$reflection(EnduranceRecord_$reflection())]], [[\"Item\", RecordModel$1_$reflection(IntervalsDurationRecord_$reflection())]], [[\"Item\", RecordModel$1_$reflection(IntervalsRepsRecord_$reflection())]]]);\n}\n\nfunction getLastSection(session, contentTypeId) {\n return last(ofArray_1(split(find((t) => (t.Id === contentTypeId), Session__SiteSettings(session).FitnessContentTypes).Name, [\".\"], undefined, 0))) + \"Record\";\n}\n\nfunction applyHandlerInit(withEventInfo, handler, toModel, toMsg, session, contentTypeId, id, isNew, workoutId, noFetch) {\n const patternInput = isNew ? AddEditExerciseRecordHandler$1__InitNew(handler, withEventInfo, session, contentTypeId, workoutId, id, noFetch) : AddEditExerciseRecordHandler$1__InitEdit(handler, withEventInfo, session, contentTypeId, id);\n return [toModel(patternInput[0]), Cmd_map(toMsg, patternInput[1])];\n}\n\nfunction initEither(withEventInfo, session, contentTypeId, id, isNew, workoutId, noFetch) {\n const lastSection = getLastSection(session, contentTypeId);\n switch (lastSection) {\n case \"RepsWithWeightRecord\":\n return applyHandlerInit(withEventInfo, Handlers_repsWithWeight, (Item) => (new Model(0, [Item])), (Item_1) => (new Msg(0, [Item_1])), session, contentTypeId, id, isNew, workoutId, noFetch);\n case \"RepsWithBodyWeightRecord\":\n return applyHandlerInit(withEventInfo, Handlers_repsWithBodyWeight, (Item_2) => (new Model(1, [Item_2])), (Item_3) => (new Msg(1, [Item_3])), session, contentTypeId, id, isNew, workoutId, noFetch);\n case \"EnduranceRecord\":\n return applyHandlerInit(withEventInfo, Handlers_endurance, (Item_4) => (new Model(2, [Item_4])), (Item_5) => (new Msg(2, [Item_5])), session, contentTypeId, id, isNew, workoutId, noFetch);\n case \"IntervalsDurationRecord\":\n return applyHandlerInit(withEventInfo, Handlers_intervalsDuration, (Item_6) => (new Model(3, [Item_6])), (Item_7) => (new Msg(3, [Item_7])), session, contentTypeId, id, isNew, workoutId, noFetch);\n case \"IntervalsRepsRecord\":\n return applyHandlerInit(withEventInfo, Handlers_intervalsReps, (Item_8) => (new Model(4, [Item_8])), (Item_9) => (new Msg(4, [Item_9])), session, contentTypeId, id, isNew, workoutId, noFetch);\n default:\n return toFail(printf(\"Unable to handle content type %s\"))(lastSection);\n }\n}\n\nexport function initNew(session, contentTypeId, id, workout) {\n return initEither(true, session, contentTypeId, id, true, map((s) => toInt64(parse_2(s, 511, false, 64)), workout), false);\n}\n\nexport function initEdit(session, contentTypeId, id) {\n return initEither(true, session, contentTypeId, id, false, undefined, false);\n}\n\nexport function update(session, msg, model) {\n let copyOfStruct_2, copyOfStruct_1_1, copyOfStruct_3, copyOfStruct_1_2, copyOfStruct_4, copyOfStruct_1_3, copyOfStruct_5, copyOfStruct_1_4, copyOfStruct, copyOfStruct_1;\n switch (msg.tag) {\n case 1:\n if (model.tag === 1) {\n const patternInput_1 = AddEditExerciseRecordHandler$1__Update(Handlers_repsWithBodyWeight, session, msg.fields[0], model.fields[0]);\n return [new Model(1, [patternInput_1[0]]), Cmd_map((Item_1) => (new Msg(1, [Item_1])), patternInput_1[1])];\n }\n else {\n const arg_2 = fullName((copyOfStruct_2 = msg, Msg_$reflection()));\n const arg_1_1 = fullName((copyOfStruct_1_1 = model, Model_$reflection()));\n return toFail(printf(\"Unexpected model type \\'%s\\' for message type \\'%s\\'\"))(arg_2)(arg_1_1);\n }\n case 2:\n if (model.tag === 2) {\n const patternInput_2 = AddEditExerciseRecordHandler$1__Update(Handlers_endurance, session, msg.fields[0], model.fields[0]);\n return [new Model(2, [patternInput_2[0]]), Cmd_map((Item_2) => (new Msg(2, [Item_2])), patternInput_2[1])];\n }\n else {\n const arg_3 = fullName((copyOfStruct_3 = msg, Msg_$reflection()));\n const arg_1_2 = fullName((copyOfStruct_1_2 = model, Model_$reflection()));\n return toFail(printf(\"Unexpected model type \\'%s\\' for message type \\'%s\\'\"))(arg_3)(arg_1_2);\n }\n case 3:\n if (model.tag === 3) {\n const patternInput_3 = AddEditExerciseRecordHandler$1__Update(Handlers_intervalsDuration, session, msg.fields[0], model.fields[0]);\n return [new Model(3, [patternInput_3[0]]), Cmd_map((Item_3) => (new Msg(3, [Item_3])), patternInput_3[1])];\n }\n else {\n const arg_4 = fullName((copyOfStruct_4 = msg, Msg_$reflection()));\n const arg_1_3 = fullName((copyOfStruct_1_3 = model, Model_$reflection()));\n return toFail(printf(\"Unexpected model type \\'%s\\' for message type \\'%s\\'\"))(arg_4)(arg_1_3);\n }\n case 4:\n if (model.tag === 4) {\n const patternInput_4 = AddEditExerciseRecordHandler$1__Update(Handlers_intervalsReps, session, msg.fields[0], model.fields[0]);\n return [new Model(4, [patternInput_4[0]]), Cmd_map((Item_4) => (new Msg(4, [Item_4])), patternInput_4[1])];\n }\n else {\n const arg_5 = fullName((copyOfStruct_5 = msg, Msg_$reflection()));\n const arg_1_4 = fullName((copyOfStruct_1_4 = model, Model_$reflection()));\n return toFail(printf(\"Unexpected model type \\'%s\\' for message type \\'%s\\'\"))(arg_5)(arg_1_4);\n }\n default:\n if (model.tag === 0) {\n const patternInput = AddEditExerciseRecordHandler$1__Update(Handlers_repsWithWeight, session, msg.fields[0], model.fields[0]);\n return [new Model(0, [patternInput[0]]), Cmd_map((Item) => (new Msg(0, [Item])), patternInput[1])];\n }\n else {\n const arg = fullName((copyOfStruct = msg, Msg_$reflection()));\n const arg_1 = fullName((copyOfStruct_1 = model, Model_$reflection()));\n return toFail(printf(\"Unexpected model type \\'%s\\' for message type \\'%s\\'\"))(arg)(arg_1);\n }\n }\n}\n\nexport function getSetTimerMsg(msg) {\n let matchResult, dateTime, dateTime_1, dateTime_2, dateTime_3, dateTime_4;\n switch (msg.tag) {\n case 1: {\n if (msg.fields[0].tag === 11) {\n matchResult = 1;\n dateTime_1 = msg.fields[0].fields[0];\n }\n else {\n matchResult = 5;\n }\n break;\n }\n case 2: {\n if (msg.fields[0].tag === 11) {\n matchResult = 2;\n dateTime_2 = msg.fields[0].fields[0];\n }\n else {\n matchResult = 5;\n }\n break;\n }\n case 3: {\n if (msg.fields[0].tag === 11) {\n matchResult = 3;\n dateTime_3 = msg.fields[0].fields[0];\n }\n else {\n matchResult = 5;\n }\n break;\n }\n case 4: {\n if (msg.fields[0].tag === 11) {\n matchResult = 4;\n dateTime_4 = msg.fields[0].fields[0];\n }\n else {\n matchResult = 5;\n }\n break;\n }\n default:\n if (msg.fields[0].tag === 11) {\n matchResult = 0;\n dateTime = msg.fields[0].fields[0];\n }\n else {\n matchResult = 5;\n }\n }\n switch (matchResult) {\n case 0:\n return dateTime;\n case 1:\n return dateTime_1;\n case 2:\n return dateTime_2;\n case 3:\n return dateTime_3;\n case 4:\n return dateTime_4;\n default:\n return undefined;\n }\n}\n\nexport function mapModelToEIMMsg(model, subMsg) {\n switch (model.tag) {\n case 1:\n return new Msg(1, [new RecordMsg$1(12, [subMsg])]);\n case 2:\n return new Msg(2, [new RecordMsg$1(12, [subMsg])]);\n case 3:\n return new Msg(3, [new RecordMsg$1(12, [subMsg])]);\n case 4:\n return new Msg(4, [new RecordMsg$1(12, [subMsg])]);\n default:\n return new Msg(0, [new RecordMsg$1(12, [subMsg])]);\n }\n}\n\nexport function view(session, model, dispatch) {\n switch (model.tag) {\n case 1:\n return AddEditExerciseRecordHandler$1__View(Handlers_repsWithBodyWeight, \"reps with body weight\", session, model.fields[0], (arg_1) => {\n dispatch(new Msg(1, [arg_1]));\n });\n case 2:\n return AddEditExerciseRecordHandler$1__View(Handlers_endurance, \"endurance\", session, model.fields[0], (arg_2) => {\n dispatch(new Msg(2, [arg_2]));\n });\n case 3:\n return AddEditExerciseRecordHandler$1__View(Handlers_intervalsDuration, \"intervals / HIIT\", session, model.fields[0], (arg_3) => {\n dispatch(new Msg(3, [arg_3]));\n });\n case 4:\n return AddEditExerciseRecordHandler$1__View(Handlers_intervalsReps, \"reps in intervals\", session, model.fields[0], (arg_4) => {\n dispatch(new Msg(4, [arg_4]));\n });\n default:\n return AddEditExerciseRecordHandler$1__View(Handlers_repsWithWeight, \"reps with weight\", session, model.fields[0], (arg) => {\n dispatch(new Msg(0, [arg]));\n });\n }\n}\n\nfunction ExerciseRecordsMany_msgFromExerciseRecord(exerciseId, eventInfo, record) {\n switch (record.tag) {\n case 1: {\n const record_2 = record.fields[0];\n return new Msg(1, [new RecordMsg$1(6, [singleton([eventInfo, new RepsWithBodyWeightRecord(record_2.Id, exerciseId, record_2.WorkoutRecordId, record_2.Repetitions, record_2.Notes)])])]);\n }\n case 2: {\n const record_3 = record.fields[0];\n return new Msg(2, [new RecordMsg$1(6, [singleton([eventInfo, new EnduranceRecord(record_3.Id, exerciseId, record_3.WorkoutRecordId, record_3.DurationSec, record_3.DistanceKm, record_3.Calories, record_3.Notes)])])]);\n }\n case 3: {\n const record_4 = record.fields[0];\n return new Msg(3, [new RecordMsg$1(6, [singleton([eventInfo, new IntervalsDurationRecord(record_4.Id, exerciseId, record_4.WorkoutRecordId, record_4.NumExercises, record_4.WorkDurationSec, record_4.RestDurationSec, record_4.Notes)])])]);\n }\n case 4: {\n const record_5 = record.fields[0];\n return new Msg(4, [new RecordMsg$1(6, [singleton([eventInfo, new IntervalsRepsRecord(record_5.Id, exerciseId, record_5.WorkoutRecordId, record_5.NumExercises, record_5.WorkRepetitions, record_5.RestDurationSec, record_5.Notes)])])]);\n }\n default: {\n const record_1 = record.fields[0];\n return new Msg(0, [new RecordMsg$1(6, [singleton([eventInfo, new RepsWithWeightRecord(record_1.Id, exerciseId, record_1.WorkoutRecordId, record_1.Repetitions, record_1.Weight, record_1.Notes)])])]);\n }\n }\n}\n\nfunction ExerciseRecordsMany_modelToExerciseRecord(model) {\n switch (model.tag) {\n case 1:\n return new ExerciseRecord(1, [model.fields[0].Record]);\n case 2:\n return new ExerciseRecord(2, [model.fields[0].Record]);\n case 3:\n return new ExerciseRecord(3, [model.fields[0].Record]);\n case 4:\n return new ExerciseRecord(4, [model.fields[0].Record]);\n default:\n return new ExerciseRecord(0, [model.fields[0].Record]);\n }\n}\n\nfunction ExerciseRecordsMany_modelToEventInfo(model) {\n switch (model.tag) {\n case 1:\n return model.fields[0].EIMModel.EventInfo;\n case 2:\n return model.fields[0].EIMModel.EventInfo;\n case 3:\n return model.fields[0].EIMModel.EventInfo;\n case 4:\n return model.fields[0].EIMModel.EventInfo;\n default:\n return model.fields[0].EIMModel.EventInfo;\n }\n}\n\nexport class ExerciseRecordsMany_ModelMany extends Record {\n constructor(WorkoutId, Data, Models, InProgress, Error$) {\n super();\n this.WorkoutId = WorkoutId;\n this.Data = Data;\n this.Models = Models;\n this.InProgress = InProgress;\n this.Error = Error$;\n }\n}\n\nexport function ExerciseRecordsMany_ModelMany_$reflection() {\n return record_type(\"Omnicv.Client.Pages.Fitness.AddEditExerciseRecord.ExerciseRecordsMany.ModelMany\", [], ExerciseRecordsMany_ModelMany, () => [[\"WorkoutId\", int64_type], [\"Data\", option_type(WorkoutCircuitData_$reflection())], [\"Models\", array_type(Model_$reflection())], [\"InProgress\", bool_type], [\"Error\", option_type(string_type)]]);\n}\n\nexport function ExerciseRecordsMany_ModelMany__GetEventInfo(this$) {\n return ExerciseRecordsMany_modelToEventInfo(item(0, this$.Models));\n}\n\nexport function ExerciseRecordsMany_ModelMany__GetRecords(this$) {\n return map_1(ExerciseRecordsMany_modelToExerciseRecord, ofArray(this$.Models));\n}\n\nexport class ExerciseRecordsMany_MsgMany extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"SingleRecordMsg\", \"FetchSuccess\", \"Failure\", \"Submit\", \"SubmitSuccess\"];\n }\n}\n\nexport function ExerciseRecordsMany_MsgMany_$reflection() {\n return union_type(\"Omnicv.Client.Pages.Fitness.AddEditExerciseRecord.ExerciseRecordsMany.MsgMany\", [], ExerciseRecordsMany_MsgMany, () => [[[\"Item1\", Msg_$reflection()], [\"Item2\", int32_type]], [[\"Item\", WorkoutCircuitData_$reflection()]], [[\"Item\", class_type(\"System.Exception\")]], [], [[\"Item\", unit_type]]]);\n}\n\nexport function ExerciseRecordsMany_mapModelToEIMMsg(model, subMsg) {\n return new ExerciseRecordsMany_MsgMany(0, [mapModelToEIMMsg(item(0, model.Models), subMsg), 0]);\n}\n\nfunction ExerciseRecordsMany_initNewRecordModel(session, records, workout, index, exercise) {\n let matchValue, subMsg;\n const patternInput = initEither(index === 0, session, exercise.ContentTypeId, exercise.Id, true, workout.Id, true);\n const cmd = patternInput[1];\n return [patternInput[0], Cmd_map((msg_1) => (new ExerciseRecordsMany_MsgMany(0, [msg_1, index])), (matchValue = tryFind((tupledArg) => equals_1(flex_form.getExerciseId(tupledArg[1]), exercise.Id), records), (matchValue == null) ? cmd : ((subMsg = ExerciseRecordsMany_msgFromExerciseRecord(exercise.Id, matchValue[0], matchValue[1]), append_1(cmd, singleton((dispatch) => {\n dispatch(subMsg);\n }))))))];\n}\n\nexport function ExerciseRecordsMany_initNewMany(session, workoutId) {\n return [new ExerciseRecordsMany_ModelMany(workoutId, undefined, [], true, undefined), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, curry2(fitnessService.GetWorkoutCircuitData)(Session__GetCurrentProfileId(session)), workoutId, (Item) => (new ExerciseRecordsMany_MsgMany(1, [Item])), (Item_1) => (new ExerciseRecordsMany_MsgMany(2, [Item_1])))];\n}\n\nexport function ExerciseRecordsMany_update(session, msg, model) {\n let eventInfo;\n switch (msg.tag) {\n case 1: {\n const result = msg.fields[0];\n const pairs = mapIndexed((index_1, exercise) => ExerciseRecordsMany_initNewRecordModel(session, result.ExerciseRecords, result.Workout, index_1, exercise), result.Exercises);\n return [new ExerciseRecordsMany_ModelMany(model.WorkoutId, result, toArray(map_1((tuple) => tuple[0], pairs)), false, model.Error), Cmd_batch(map_1((tuple_1) => tuple_1[1], pairs))];\n }\n case 3:\n return [new ExerciseRecordsMany_ModelMany(model.WorkoutId, model.Data, model.Models, true, model.Error), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, (eventInfo = ExerciseRecordsMany_ModelMany__GetEventInfo(model), (records) => {\n const profileId = Session__GetCurrentProfileId(session) | 0;\n return fitnessService.AddExerciseRecords((Session__GetActiveWorkoutRecord(session) != null) ? (new WorkoutRecordType(0, [])) : (new WorkoutRecordType(1, [model.WorkoutId])), new EventInfo(eventInfo.Id, 0, profileId, eventInfo.EventTimestamp, eventInfo.CreatedAt, eventInfo.UpdatedAt, eventInfo.PlaceId, eventInfo.PlaceName, eventInfo.Latitude, eventInfo.Longitude, eventInfo.LocationTz, eventInfo.LocationTzOffsetMin, eventInfo.ClientTz, eventInfo.ClientTzOffsetMin), records);\n }), ExerciseRecordsMany_ModelMany__GetRecords(model), () => (new ExerciseRecordsMany_MsgMany(4, [undefined])), (Item_1) => (new ExerciseRecordsMany_MsgMany(2, [Item_1])))];\n case 4:\n return [new ExerciseRecordsMany_ModelMany(model.WorkoutId, model.Data, model.Models, false, model.Error), Router_newUrl(new Route(38, [model.WorkoutId]))];\n case 2:\n return [new ExerciseRecordsMany_ModelMany(model.WorkoutId, model.Data, model.Models, false, exnToDisplayString(msg.fields[0])), Cmd_none()];\n default: {\n const index = msg.fields[1] | 0;\n const patternInput = update(session, msg.fields[0], item(index, model.Models));\n return [new ExerciseRecordsMany_ModelMany(model.WorkoutId, model.Data, updateAt(index, patternInput[0], model.Models), model.InProgress, model.Error), Cmd_map((msg_1) => (new ExerciseRecordsMany_MsgMany(0, [msg_1, index])), patternInput[1])];\n }\n }\n}\n\nfunction ExerciseRecordsMany_renderModelForm(isDisabled, caption, withEventInfo, model, form) {\n const children_2 = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Error: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => singleton_1(div(empty(), toList(delay(() => {\n const heading = container(empty(), singleton(h3(singleton(new Option_1(6, [])))(singleton(caption))));\n const recordRendering = FlexFormFields$1__Render(FlexFormTuple$2__get_FieldsSnd(form), isDisabled, model.Record);\n const elements = withEventInfo ? append_1(FlexFormFields$1__Render(FlexFormTuple$2__get_FieldsFst(form), isDisabled, model.EIMModel.EventInfo), cons(heading, recordRendering)) : cons(heading, recordRendering);\n return singleton_1(createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(elements)),\n }));\n }))))));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_2)),\n });\n}\n\nfunction ExerciseRecordsMany_canSubmitModelForm(withEventInfo, model, form) {\n const mainResult = FlexFormFields$1__CanSubmit_2B595(FlexFormTuple$2__get_FieldsSnd(form), model.Record);\n if (withEventInfo) {\n return FieldValidationResult__Merge_30561432(mainResult, FlexFormFields$1__CanSubmit_2B595(FlexFormTuple$2__get_FieldsFst(form), model.EIMModel.EventInfo));\n }\n else {\n return mainResult;\n }\n}\n\nfunction ExerciseRecordsMany_getFormletHandle(handler, caption, withEventInfo, model, dispatch) {\n const form = AddEditExerciseRecordHandler$1__BuildForm(handler, withEventInfo, model, dispatch);\n return new Formlet$1((isDisabled, _arg) => ExerciseRecordsMany_renderModelForm(isDisabled, caption, withEventInfo, model, form), () => ExerciseRecordsMany_canSubmitModelForm(withEventInfo, model, form));\n}\n\nfunction ExerciseRecordsMany_getFormlet(exercise, withEventInfo, model, dispatch) {\n const name = exercise.Name;\n switch (model.tag) {\n case 1:\n return ExerciseRecordsMany_getFormletHandle(Handlers_repsWithBodyWeight, `${name}: reps with body weight`, withEventInfo, model.fields[0], (arg_1) => {\n dispatch(new Msg(1, [arg_1]));\n });\n case 2:\n return ExerciseRecordsMany_getFormletHandle(Handlers_endurance, `${name}: endurance`, withEventInfo, model.fields[0], (arg_2) => {\n dispatch(new Msg(2, [arg_2]));\n });\n case 3:\n return ExerciseRecordsMany_getFormletHandle(Handlers_intervalsDuration, `${name}: intervals / HIIT`, withEventInfo, model.fields[0], (arg_3) => {\n dispatch(new Msg(3, [arg_3]));\n });\n case 4:\n return ExerciseRecordsMany_getFormletHandle(Handlers_intervalsReps, `${name}: reps in intervals`, withEventInfo, model.fields[0], (arg_4) => {\n dispatch(new Msg(4, [arg_4]));\n });\n default:\n return ExerciseRecordsMany_getFormletHandle(Handlers_repsWithWeight, `${name}: reps with weight`, withEventInfo, model.fields[0], (arg) => {\n dispatch(new Msg(0, [arg]));\n });\n }\n}\n\nexport function ExerciseRecordsMany_view(model, dispatch) {\n let list_1;\n if (model.Data != null) {\n const form = FlexFormWithFormlets$1_$ctor_Z7DF2018A(mapIndexed((index, tupledArg) => ExerciseRecordsMany_getFormlet(tupledArg[0], index === 0, tupledArg[1], (msg) => {\n dispatch(new ExerciseRecordsMany_MsgMany(0, [msg, index]));\n }), (list_1 = ofArray(model.Models), zip(value_2(model.Data).Exercises, list_1))), () => {\n dispatch(new ExerciseRecordsMany_MsgMany(3, []));\n }, () => {\n Router_modifyLocation(new Route(38, [model.WorkoutId]));\n });\n FlexFormBase$1__SetState(form, model.InProgress, model.Error);\n const children = append_1(toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Error: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => append(singleton_1(h1(empty())(singleton(\"Populate all exercises for workout\"))), delay(() => append(singleton_1(h2(singleton(new Option_1(6, [])))(singleton(value_2(model.Data).Workout.Name))), delay(() => singleton_1(FlexFormBase$1__Render_2B595(form, undefined))))))));\n })), displayWorkoutRecords(value_2(model.Data)));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n }\n else {\n return createElement(\"div\", {\n children: reactApi.Children.toArray([\"Loading data...\"]),\n });\n }\n}\n\n","import { FSharpRef } from \"./Types.js\";\nexport function tryParse(str, defValue) {\n if (str != null && str.match(/^\\s*true\\s*$/i)) {\n defValue.contents = true;\n return true;\n }\n else if (str != null && str.match(/^\\s*false\\s*$/i)) {\n defValue.contents = false;\n return true;\n }\n return false;\n}\nexport function parse(str) {\n const defValue = new FSharpRef(false);\n if (tryParse(str, defValue)) {\n return defValue.contents;\n }\n else {\n throw new Error(`String '${str}' was not recognized as a valid Boolean.`);\n }\n}\n","import * as common from \"../../src/javascript/common.js\";\nimport { collect, filter, empty as empty_2, ofArray, map, singleton } from \"../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Record, Union } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { tuple_type, unit_type, record_type, class_type, bool_type, option_type, string_type, union_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { Session__GetActiveWorkoutRecord, Icons, Session__GetCurrentName, Session__SetActiveWorkoutRecord_Z2D8A2414, Session__GetCurrentProfileId, Session_$reflection } from \"../Omnicv.Client.Common/SharedView.js\";\nimport { createObj, comparePrimitives, equals } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { EventInfo_$reflection } from \"../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { WorkoutRecord_$reflection } from \"../Omnicv.Shared/FitnessAPI.js\";\nimport { Cmd_none, Cmd_batch, Cmd_OfPromise_either } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { map as map_1, toList as toList_1, FSharpMap__Add, empty } from \"../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { value as value_47, some } from \"../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Router_modifyLocation, Route, Router_newUrl } from \"../Omnicv.Client.Common/Router.js\";\nimport { op_Subtraction, compare } from \"../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { exnToDisplayString } from \"../Omnicv.Client.Common/Utils.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"../fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { fitnessService } from \"../Pages/Fitness/FitnessCommon.js\";\nimport { commonAuthService } from \"../Omnicv.Client.Common/CommonServer.js\";\nimport { createElement } from \"react\";\nimport { Spacing_Amount, Spacing_TypeAndDirection, Modifier_IModifier, Color_IColor } from \"../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { last, item } from \"../fable_modules/fable-library-js.4.24.0/Array.js\";\nimport { empty as empty_1, singleton as singleton_1, append, delay, toList } from \"../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { IconType__ToIcon } from \"../Omnicv.Client.Common/ClientModule.js\";\nimport { reactApi } from \"../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { split, format, join } from \"../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { Registry$1__get_Modules } from \"../Omnicv.Shared/ModulesRegistration.js\";\nimport { clientModuleRegistry } from \"../ClientRegistration.js\";\nimport { Router_href } from \"../Omnicv.Client.Common/Router.js\";\nimport { List_Option, list as list_3, Option, button } from \"../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { icon } from \"../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport { Fa_i } from \"../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { Icons__ToIcon } from \"../Omnicv.Client.Common/SharedView.js\";\nimport { seconds, minutes, hours } from \"../fable_modules/fable-library-js.4.24.0/TimeSpan.js\";\nimport { defaultOf } from \"../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { Class, closeable } from \"../Omnicv.Client.Common/Components/Notification.js\";\nimport { Config_releaseVersion } from \"../Omnicv.Client.Common/Extensions.js\";\n\nconst soundPath = \"/public/sounds/beep-03.mp3\";\n\nconst soundAudioContext = common.createAudio(soundPath);\n\nconst permissionsToCheck = singleton(\"geolocation\");\n\nexport class LogInState extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"LoggedIn\", \"PendingLogOut\", \"LoggedOut\"];\n }\n}\n\nexport function LogInState_$reflection() {\n return union_type(\"Omnicv.Client.Components.Navigation.LogInState\", [], LogInState, () => [[], [], []]);\n}\n\nexport class Model extends Record {\n constructor(LogInState, Message, Session, InProgress, CurrentTimestamp, CurrentTimerExpiry, CheckedPermissions) {\n super();\n this.LogInState = LogInState;\n this.Message = Message;\n this.Session = Session;\n this.InProgress = InProgress;\n this.CurrentTimestamp = CurrentTimestamp;\n this.CurrentTimerExpiry = CurrentTimerExpiry;\n this.CheckedPermissions = CheckedPermissions;\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"Omnicv.Client.Components.Navigation.Model\", [], Model, () => [[\"LogInState\", LogInState_$reflection()], [\"Message\", option_type(string_type)], [\"Session\", Session_$reflection()], [\"InProgress\", bool_type], [\"CurrentTimestamp\", class_type(\"System.DateTime\")], [\"CurrentTimerExpiry\", option_type(class_type(\"System.DateTime\"))], [\"CheckedPermissions\", class_type(\"Microsoft.FSharp.Collections.FSharpMap`2\", [string_type, class_type(\"Browser.Types.PermissionStatus\")])]]);\n}\n\nexport function Model__IsLoggedIn(this$) {\n return !equals(this$.LogInState, new LogInState(2, []));\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"LogOutClicked\", \"LogOutSucceeded\", \"Failure\", \"Refresh\", \"TimerUpdate\", \"ConcludeActiveWorkoutRecord\", \"DeleteActiveWorkoutRecord\", \"ActiveWorkoutRecordCloseSuccess\", \"UpdateActiveWorkoutRecord\", \"StartTimer\", \"StopTimer\", \"PermissionStatus\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.Components.Navigation.Msg\", [], Msg, () => [[], [[\"Item\", string_type]], [[\"Item\", class_type(\"System.Exception\")]], [[\"Item\", Session_$reflection()]], [[\"Item\", class_type(\"System.DateTime\")]], [], [], [[\"Item\", unit_type]], [[\"Item\", option_type(tuple_type(EventInfo_$reflection(), WorkoutRecord_$reflection()))]], [[\"Item\", class_type(\"System.DateTime\")]], [], [[\"Item1\", string_type], [\"Item2\", class_type(\"Browser.Types.PermissionStatus\")]]]);\n}\n\nfunction queryPermission(permission) {\n const descriptor_1 = {\n name: permission,\n };\n const pr = navigator.permissions.query(descriptor_1);\n return pr.then((status) => [permission, status]);\n}\n\nfunction queryPermissionCmd(permission) {\n return Cmd_OfPromise_either(queryPermission, permission, (tupledArg) => (new Msg(11, [tupledArg[0], tupledArg[1]])), (Item_2) => (new Msg(2, [Item_2])));\n}\n\nexport function init(session) {\n return [new Model(session.LoggedIn ? (new LogInState(0, [])) : (new LogInState(2, [])), undefined, session, false, common.getNow(), undefined, empty({\n Compare: comparePrimitives,\n })), Cmd_batch(map(queryPermissionCmd, permissionsToCheck))];\n}\n\nexport function update(session, msg, model) {\n let matchValue, time;\n switch (msg.tag) {\n case 1: {\n console.log(some(`Updating session logged out, msg: ${msg.fields[0]}`));\n return [new Model(new LogInState(2, []), \"Logged out successfully\", model.Session, model.InProgress, model.CurrentTimestamp, model.CurrentTimerExpiry, model.CheckedPermissions), Router_newUrl(new Route(0, []))];\n }\n case 4:\n return [new Model(model.LogInState, model.Message, model.Session, model.InProgress, msg.fields[0], (matchValue = model.CurrentTimerExpiry, (matchValue != null) ? ((time = matchValue, (compare(common.getNow(), time) >= 0) ? ((soundAudioContext.play(), undefined)) : model.CurrentTimerExpiry)) : undefined), model.CheckedPermissions), Cmd_none()];\n case 9:\n return [new Model(model.LogInState, model.Message, model.Session, model.InProgress, model.CurrentTimestamp, msg.fields[0], model.CheckedPermissions), Cmd_none()];\n case 10:\n return [new Model(model.LogInState, model.Message, model.Session, model.InProgress, model.CurrentTimestamp, undefined, model.CheckedPermissions), Cmd_none()];\n case 2:\n return [new Model(new LogInState(0, []), exnToDisplayString(msg.fields[0]), model.Session, model.InProgress, model.CurrentTimestamp, model.CurrentTimerExpiry, model.CheckedPermissions), Cmd_none()];\n case 3: {\n const session_1 = msg.fields[0];\n return [new Model(session_1.LoggedIn ? (new LogInState(0, [])) : (new LogInState(2, [])), undefined, session_1, model.InProgress, model.CurrentTimestamp, model.CurrentTimerExpiry, model.CheckedPermissions), Cmd_none()];\n }\n case 5:\n return [new Model(model.LogInState, model.Message, model.Session, true, model.CurrentTimestamp, model.CurrentTimerExpiry, model.CheckedPermissions), Cmd_OfAsyncWith_either((x_1) => {\n Cmd_OfAsync_start(x_1);\n }, fitnessService.ConcludeActiveWorkoutRecord, Session__GetCurrentProfileId(session), () => (new Msg(7, [undefined])), (Item_3) => (new Msg(2, [Item_3])))];\n case 6:\n return [new Model(model.LogInState, model.Message, model.Session, true, model.CurrentTimestamp, model.CurrentTimerExpiry, model.CheckedPermissions), Cmd_OfAsyncWith_either((x_2) => {\n Cmd_OfAsync_start(x_2);\n }, fitnessService.DeleteActiveWorkoutRecord, Session__GetCurrentProfileId(session), () => (new Msg(7, [undefined])), (Item_5) => (new Msg(2, [Item_5])))];\n case 7:\n return [new Model(model.LogInState, model.Message, model.Session, false, model.CurrentTimestamp, model.CurrentTimerExpiry, model.CheckedPermissions), singleton((dispatch) => {\n dispatch(new Msg(8, [undefined]));\n })];\n case 8:\n return [new Model(model.LogInState, model.Message, Session__SetActiveWorkoutRecord_Z2D8A2414(model.Session, msg.fields[0]), model.InProgress, model.CurrentTimestamp, model.CurrentTimerExpiry, model.CheckedPermissions), Cmd_none()];\n case 11:\n return [new Model(model.LogInState, model.Message, model.Session, model.InProgress, model.CurrentTimestamp, model.CurrentTimerExpiry, FSharpMap__Add(model.CheckedPermissions, msg.fields[0], msg.fields[1])), Cmd_none()];\n default:\n if (!equals(model.LogInState, new LogInState(0, []))) {\n return [model, Cmd_none()];\n }\n else {\n return [new Model(new LogInState(1, []), model.Message, model.Session, model.InProgress, model.CurrentTimestamp, model.CurrentTimerExpiry, model.CheckedPermissions), Cmd_OfAsyncWith_either((x) => {\n Cmd_OfAsync_start(x);\n }, commonAuthService.Logout, undefined, (Item) => (new Msg(1, [Item])), (Item_1) => (new Msg(2, [Item_1])))];\n }\n }\n}\n\nconst burgerLine = createElement(\"span\", {\n \"aria-hidden\": true,\n});\n\nconst mainNavBarId = \"mainNavBar\";\n\nconst profileColours = [new Color_IColor(5, []), new Color_IColor(6, []), new Color_IColor(7, []), new Color_IColor(4, []), new Color_IColor(16, [])];\n\nfunction getProfileColour(profileId) {\n return item(profileId % profileColours.length, profileColours);\n}\n\nexport function clientModuleDescriptorToMenu(session, clientModule) {\n return createElement(\"a\", createObj(toList(delay(() => append(singleton_1([\"className\", \"navbar-item\"]), delay(() => append((clientModule.Descriptor().View != null) ? singleton_1([\"onClick\", (_arg) => {\n Router_modifyLocation(value_47(clientModule.Descriptor().View)(session));\n }]) : empty_1(), delay(() => {\n let elems;\n return singleton_1((elems = [IconType__ToIcon(clientModule.Descriptor().Icon), createElement(\"span\", {\n children: \" \",\n }), createElement(\"span\", {\n children: clientModule.Details.Title,\n })], [\"children\", reactApi.Children.toArray(Array.from(elems))]));\n }))))))));\n}\n\nexport function descriptorButton(descriptor) {\n return createElement(\"a\", createObj(toList(delay(() => append(singleton_1([\"className\", \"navbar-item\"]), delay(() => append((descriptor.Actions.NewNow != null) ? singleton_1([\"onClick\", (_arg) => {\n Router_modifyLocation(value_47(descriptor.Actions.NewNow));\n }]) : empty_1(), delay(() => {\n let elems;\n return singleton_1((elems = [IconType__ToIcon(descriptor.Icon)], [\"children\", reactApi.Children.toArray(Array.from(elems))]));\n }))))))));\n}\n\nfunction viewMainNavBar(model, dispatch) {\n let elems_7, elems_6, elems_3, elems_4, elems, name_2;\n const isLoggedIn = Model__IsLoggedIn(model);\n const navbarBandChildren = ofArray([createElement(\"a\", {\n className: \"navbar-item\",\n children: \"OmniCV\",\n }), createElement(\"a\", {\n className: \"navbar-burger\",\n \"aria-label\": \"menu\",\n role: join(\" \", [\"button\"]),\n \"aria-expanded\": false,\n \"data-target\": mainNavBarId,\n children: reactApi.Children.toArray([burgerLine, burgerLine, burgerLine]),\n })]);\n return createElement(\"nav\", createObj(ofArray([[\"className\", join(\" \", [\"navbar\", \"is-primary\"])], [\"role\", join(\" \", [\"navigation\"])], [\"aria-label\", \"main navigation\"], (elems_7 = [createElement(\"div\", {\n className: \"navbar-brand\",\n children: reactApi.Children.toArray(Array.from(navbarBandChildren)),\n }), createElement(\"div\", createObj(ofArray([[\"className\", \"navbar-menu\"], [\"id\", mainNavBarId], (elems_6 = [createElement(\"div\", createObj(ofArray([[\"className\", \"navbar-start\"], (elems_3 = (isLoggedIn ? map((clientModule) => clientModuleDescriptorToMenu(model.Session, clientModule), Registry$1__get_Modules(clientModuleRegistry)) : singleton(createElement(\"a\", createObj(ofArray([[\"className\", \"navbar-item\"], Router_href(new Route(0, [])), [\"children\", \"Home\"]]))))), [\"children\", reactApi.Children.toArray(Array.from(elems_3))])]))), createElement(\"div\", createObj(ofArray([[\"className\", \"navbar-end\"], (elems_4 = ofArray([createElement(\"a\", createObj(ofArray([[\"className\", \"navbar-item\"], Router_href(new Route(8, [])), [\"children\", \"Contact\"]]))), createElement(\"a\", createObj(ofArray([[\"className\", \"navbar-item\"], Router_href(new Route(2, [])), [\"children\", \"About\"]]))), createElement(\"div\", createObj(ofArray([[\"className\", \"navbar-item\"], (elems = (isLoggedIn ? ((name_2 = Session__GetCurrentName(model.Session), ofArray([button(ofArray([new Option(0, [getProfileColour(Session__GetCurrentProfileId(model.Session))]), new Option(18, [(_arg) => {\n Router_modifyLocation(new Route(4, []));\n }])]), ofArray([icon(empty_2(), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(8, []))), []))), createElement(\"span\", {\n children: reactApi.Children.toArray([name_2]),\n })])), button(ofArray([new Option(0, [new Color_IColor(4, [])]), new Option(18, [(_arg_1) => {\n dispatch(new Msg(0, []));\n }])]), ofArray([icon(empty_2(), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(10, []))), []))), createElement(\"span\", {\n children: reactApi.Children.toArray([\"Logout\"]),\n })]))]))) : singleton(button(ofArray([new Option(0, [new Color_IColor(4, [])]), new Option(18, [(_arg_2) => {\n Router_modifyLocation(new Route(3, []));\n }])]), ofArray([icon(empty_2(), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(9, []))), []))), createElement(\"span\", {\n children: reactApi.Children.toArray([\"Login\"]),\n })])))), [\"children\", reactApi.Children.toArray(Array.from(elems))])])))]), [\"children\", reactApi.Children.toArray(Array.from(elems_4))])])))], [\"children\", reactApi.Children.toArray(Array.from(elems_6))])])))], [\"children\", reactApi.Children.toArray(Array.from(elems_7))])])));\n}\n\nfunction displayTimer(model, dispatch) {\n if ((model.CurrentTimerExpiry != null) && (compare(value_47(model.CurrentTimerExpiry), model.CurrentTimestamp) > 0)) {\n const now = common.getNow();\n const duration = op_Subtraction(value_47(model.CurrentTimerExpiry), now);\n return list_3(ofArray([new List_Option(8, [ofArray([new Modifier_IModifier(0, [new Color_IColor(11, [])]), new Modifier_IModifier(29, [new Spacing_TypeAndDirection(7, []), new Spacing_Amount(2, [])])])]), new List_Option(1, [])]), ofArray([button(ofArray([new Option(0, [new Color_IColor(17, [])]), new Option(4, []), new Option(16, [model.InProgress])]), toList(delay(() => {\n const durationStr = format(\"{0:D2}:{1:D2}:{2:D2}\", hours(duration), minutes(duration), seconds(duration));\n return singleton_1(createElement(\"span\", {\n children: reactApi.Children.toArray([durationStr]),\n }));\n }))), button(ofArray([new Option(0, [new Color_IColor(7, [])]), new Option(4, []), new Option(16, [model.InProgress]), new Option(18, [(_arg) => {\n dispatch(new Msg(10, []));\n }])]), singleton(icon(empty_2(), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(19, []))), [])))))]));\n }\n else {\n return defaultOf();\n }\n}\n\nfunction displayFavourites(model) {\n if (Model__IsLoggedIn(model)) {\n return list_3(empty_2(), map(descriptorButton, filter((x_1) => x_1.IsFavourite, collect((x) => x.EntryDescriptors(), Registry$1__get_Modules(clientModuleRegistry)))));\n }\n else {\n return defaultOf();\n }\n}\n\nfunction handlePermissionCheckState(dispatch, permission, status) {\n if (status.onchange == null) {\n console.log(some(`Updating onChange event listener for permission: ${permission}`));\n status.onchange = ((_arg) => {\n console.warn(some(`Permission ${permission} state changed to ${status.state}`));\n dispatch(new Msg(11, [permission, status]));\n });\n }\n if (status.state === \"denied\") {\n return closeable(`Denied permission: ${permission}`, new Class(3, []));\n }\n else {\n return defaultOf();\n }\n}\n\nfunction displayPermissionsWarnings(dispatch, model) {\n return map((tuple) => tuple[1], toList_1(map_1((permission, status) => handlePermissionCheckState(dispatch, permission, status), model.CheckedPermissions)));\n}\n\nfunction displayVersionWarning(model) {\n if (model.Session.UserInfo != null) {\n const serverVersion = last(split(value_47(model.Session.UserInfo).ServerVersion, [\"/\"], undefined, 0));\n if ((Config_releaseVersion() !== serverVersion) && (Config_releaseVersion() !== \"development\")) {\n return closeable(`Client version '${Config_releaseVersion()}' not the same as server version '${serverVersion}'. Please refresh`, new Class(4, []));\n }\n else {\n return defaultOf();\n }\n }\n else {\n return defaultOf();\n }\n}\n\nexport function view(model, dispatch) {\n const activeWorkoutRecord = Session__GetActiveWorkoutRecord(model.Session);\n const children_9 = toList(delay(() => append(singleton_1(viewMainNavBar(model, dispatch)), delay(() => append(singleton_1(displayFavourites(model)), delay(() => append(singleton_1(displayTimer(model, dispatch)), delay(() => append(singleton_1(displayVersionWarning(model)), delay(() => {\n let children;\n return append(singleton_1((children = displayPermissionsWarnings(dispatch, model), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n }))), delay(() => {\n if (activeWorkoutRecord != null) {\n const patternInput = value_47(activeWorkoutRecord);\n return singleton_1(list_3(ofArray([new List_Option(8, [ofArray([new Modifier_IModifier(0, [new Color_IColor(8, [])]), new Modifier_IModifier(29, [new Spacing_TypeAndDirection(7, []), new Spacing_Amount(2, [])])])]), new List_Option(1, [])]), ofArray([button(ofArray([new Option(0, [new Color_IColor(0, [])]), new Option(4, []), new Option(16, [model.InProgress]), new Option(18, [(_arg) => {\n Router_modifyLocation(new Route(38, [patternInput[1].WorkoutId]));\n }])]), toList(delay(() => {\n const duration = op_Subtraction(common.getNow(), patternInput[0].EventTimestamp);\n const durationStr = format(\"{0:D2}:{1:D2}:{2:D2}\", hours(duration), minutes(duration), seconds(duration));\n return singleton_1(createElement(\"span\", {\n children: reactApi.Children.toArray([durationStr]),\n }));\n }))), button(ofArray([new Option(0, [new Color_IColor(7, [])]), new Option(16, [model.InProgress]), new Option(18, [(_arg_1) => {\n if (window.confirm(`${\"Confirm abort\"}:\n${\"Are you sure you want to abort the workout?\"}`)) {\n (() => {\n dispatch(new Msg(6, []));\n })();\n }\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Abort\"]),\n }))), button(ofArray([new Option(0, [new Color_IColor(4, [])]), new Option(16, [model.InProgress]), new Option(18, [(_arg_3) => {\n if (window.confirm(`${\"Confirm\"}:\n${\"Are you sure you want to conclude the workout?\"}`)) {\n (() => {\n dispatch(new Msg(5, []));\n })();\n }\n }])]), singleton(createElement(\"span\", {\n children: reactApi.Children.toArray([\"Conclude\"]),\n })))])));\n }\n else {\n return empty_1();\n }\n }));\n }))))))))));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_9)),\n });\n}\n\n","import { map, defaultArg } from \"../../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { EditHelperData$1__GetFrequentTags } from \"../../Omnicv.Diary.Shared/DiaryAPI.js\";\nimport { empty } from \"../../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { class_type } from \"../../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { dateToStrForDiary, dateStrToDateTime } from \"../../../Omnicv.Client.Common/Utils.js\";\nimport { Model$2, Msg$2, view, Model$2__IsEditing, update, initEditWithHelperData, initNew } from \"../../../Omnicv.Client.Common/Components/AddEditRecordFlexFormBase.js\";\nimport { Router_modifyLocation, Route, Router_newUrl } from \"../../../Omnicv.Client.Common/Router.js\";\nimport { div } from \"../../../fable_modules/Fulma.3.0.0/Elements/Form/Control.fs.js\";\nimport { singleton, append, delay, toList } from \"../../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { ofList } from \"../../../fable_modules/fable-library-js.4.24.0/Set.js\";\nimport { toClientTreeView, addTag as addTag_1, toClientListView } from \"../../../Omnicv.Shared.Common/TagUtils.js\";\nimport { comparePrimitives } from \"../../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { renderTagTree } from \"../DiaryClientUtils.js\";\nimport { empty as empty_1 } from \"../../../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { date } from \"../../../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { PagingOptionsModule_defaultPagingOptions, EventInfo } from \"../../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { Msg, Model } from \"../../../Omnicv.Client.Common/Components/EventInfoManager.js\";\nimport { Session__GetCurrentProfileId } from \"../../../Omnicv.Client.Common/SharedView.js\";\nimport { FlexFormFields$1__AddSelection_Z70244BEA, FlexFormFields$1__AddDurationSecs_ZAAC24, FlexFormFields$1__AddRating_Z716E223C, FlexFormBase$1__set_SubmitCaption_Z721C83C5, FlexFormTuple$2__get_FieldsSnd, FlexFormFields$1__AddText_Z44011C05, FlexFormFields$1__AddTextArea_Z44011C05, noValidation, FlexFormFields$1__AddDateTimeOpt_C9F34CC, FlexFormFields$1__AddTextAreaOpt_Z44636648, FlexFormFields$1__AddTags_Z63D88B1E, getSuggestions, addEventInfoToFlexFormEim, FlexFormTuple$2_$ctor_5AE4FFF0 } from \"../../../Omnicv.Client.Common/Components/FlexForm.js\";\nimport { interactionService, reviewService, diaryService } from \"../Server.js\";\nimport { interactionTypes, InteractionRecordModule_validateParticipants, InteractionRecord, InteractionRecord_Default, validateRating, ReviewRecord, ReviewRecord_Default, validateTagline, validateNotes, validateFollowupNotes, validateTags, DiaryRecord, DiaryRecord_Default } from \"../../Omnicv.Diary.Shared/Data.js\";\n\nfunction extractFrequentTags(model) {\n return defaultArg(map(EditHelperData$1__GetFrequentTags, model.EditHelperData), empty());\n}\n\nexport class DiaryEditingView$1 {\n constructor(service, getDefault, tagsGetter, tagsSetter, addTitle, editTitle, buildFormMain) {\n this.service = service;\n this.getDefault = getDefault;\n this.tagsGetter = tagsGetter;\n this.tagsSetter = tagsSetter;\n this.addTitle = addTitle;\n this.editTitle = editTitle;\n this.buildFormMain = buildFormMain;\n }\n}\n\nexport function DiaryEditingView$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Pages.Diary.AddEditDiaryView.Component.Diary.DiaryEditingView`1\", [gen0], DiaryEditingView$1);\n}\n\nexport function DiaryEditingView$1_$ctor_6E4FAFB9(service, getDefault, tagsGetter, tagsSetter, addTitle, editTitle, buildFormMain) {\n return new DiaryEditingView$1(service, getDefault, tagsGetter, tagsSetter, addTitle, editTitle, buildFormMain);\n}\n\nexport function DiaryEditingView$1__InitNew(this$, session, dateStr) {\n const dateTime = dateStrToDateTime(dateStr);\n const patternInput = initNew(this$.getDefault(), () => DiaryEditingView$1__fetchAddHelperData(this$, session, undefined));\n return [DiaryEditingView$1__setStartingDate(this$, patternInput[0], dateTime), patternInput[1]];\n}\n\nexport function DiaryEditingView$1__InitEdit(this$, session, id) {\n return initEditWithHelperData(id, this$.getDefault(), (id_1) => DiaryEditingView$1__fetchData(this$, session, id_1), () => DiaryEditingView$1__fetchAddHelperData(this$, session, undefined));\n}\n\nexport function DiaryEditingView$1__Update(this$, session, msg, model) {\n return update(session, (eventInfo, record) => {\n if (Model$2__IsEditing(model)) {\n return this$.service.Edit(eventInfo, record);\n }\n else {\n return this$.service.Add(eventInfo, record);\n }\n }, () => Router_newUrl(DiaryEditingView$1__getViewUrl_Z50E92BB6(this$, model)), msg, model);\n}\n\nexport function DiaryEditingView$1__View(this$, model, dispatch) {\n const editing = Model$2__IsEditing(model);\n const title = editing ? this$.editTitle : this$.addTitle;\n return div(empty(), toList(delay(() => append(singleton(view((model_1, dispatch_1) => DiaryEditingView$1__buildForm(this$, editing, model_1, dispatch_1), title, model, dispatch)), delay(() => {\n let record;\n const currentTags = ofList(toClientListView(this$.tagsGetter(model.Record)), {\n Compare: comparePrimitives,\n });\n return singleton(renderTagTree((record = model.Record, (tag) => {\n dispatch(new Msg$2(1, [this$.tagsSetter(addTag_1(this$.tagsGetter(record), tag), record)]));\n }), toClientTreeView(defaultArg(map((data) => data.FrequentTags, model.EditHelperData), empty_1({\n Compare: comparePrimitives,\n }))), currentTags));\n })))));\n}\n\nexport function DiaryEditingView$1__getRecentEntries_Z50E92BB6(this$, model) {\n return defaultArg(map((data) => data.RecentRecords, model.EditHelperData), empty());\n}\n\nexport function DiaryEditingView$1__getStartingDate_Z50E92BB6(this$, model) {\n return dateToStrForDiary(date(model.EIMModel.EventInfo.EventTimestamp));\n}\n\nexport function DiaryEditingView$1__setStartingDate(this$, model, dateTime) {\n let bind$0040, bind$0040_1;\n return new Model$2((bind$0040 = model.EIMModel, new Model((bind$0040_1 = model.EIMModel.EventInfo, new EventInfo(bind$0040_1.Id, bind$0040_1.ContentTypeId, bind$0040_1.ProfileId, dateTime, bind$0040_1.CreatedAt, bind$0040_1.UpdatedAt, bind$0040_1.PlaceId, bind$0040_1.PlaceName, bind$0040_1.Latitude, bind$0040_1.Longitude, bind$0040_1.LocationTz, bind$0040_1.LocationTzOffsetMin, bind$0040_1.ClientTz, bind$0040_1.ClientTzOffsetMin)), bind$0040.AutocompleteService, bind$0040.Position, bind$0040.StrictBounds)), model.Record, model.EditHelperData, model.InProgress, model.Error, model.DataExpected);\n}\n\nexport function DiaryEditingView$1__getViewUrl_Z50E92BB6(this$, model) {\n return new Route(9, [DiaryEditingView$1__getStartingDate_Z50E92BB6(this$, model)]);\n}\n\nexport function DiaryEditingView$1__fetchData(this$, session, id) {\n return this$.service.GetRecord(Session__GetCurrentProfileId(session), id);\n}\n\nexport function DiaryEditingView$1__fetchAddHelperData(this$, session, _arg) {\n return this$.service.GetEditHelperData(Session__GetCurrentProfileId(session), PagingOptionsModule_defaultPagingOptions);\n}\n\nexport function DiaryEditingView$1__buildForm(this$, editing, model, dispatch) {\n const form = FlexFormTuple$2_$ctor_5AE4FFF0((arg) => {\n dispatch(new Msg$2(0, [arg]));\n }, (arg_1) => {\n dispatch(new Msg$2(1, [arg_1]));\n }, (_arg) => {\n dispatch(new Msg$2(5, []));\n }, () => {\n Router_modifyLocation(DiaryEditingView$1__getViewUrl_Z50E92BB6(this$, model));\n });\n addEventInfoToFlexFormEim(form, model.EIMModel, (arg_3) => {\n dispatch(new Msg$2(7, [new Msg(6, [arg_3])]));\n }, getSuggestions(model.EIMModel.Position, DiaryEditingView$1__getRecentEntries_Z50E92BB6(this$, model)));\n return this$.buildFormMain(form, editing, model);\n}\n\nexport const diaryEditing = DiaryEditingView$1_$ctor_6E4FAFB9(diaryService, DiaryRecord_Default, (record) => record.Tags, (newTags, record_1) => (new DiaryRecord(record_1.Id, record_1.Tagline, record_1.Notes, record_1.FollowupTime, record_1.FollowupNotes, record_1.FollowupDismissed, newTags)), \"Add new diary entry\", \"Edit diary\", (form, editing, model) => {\n FlexFormFields$1__AddTags_Z63D88B1E(FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddDateTimeOpt_C9F34CC(FlexFormFields$1__AddTextArea_Z44011C05(FlexFormFields$1__AddText_Z44011C05(FlexFormTuple$2__get_FieldsSnd(form), \"Tagline\", validateTagline), \"Notes\", validateNotes), \"FollowupTime\", noValidation), \"FollowupNotes\", validateFollowupNotes), \"Tags\", validateTags, extractFrequentTags(model));\n if (editing) {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Update diary\");\n }\n else {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Add diary\");\n }\n return form;\n});\n\nexport const reviewEditing = DiaryEditingView$1_$ctor_6E4FAFB9(reviewService, ReviewRecord_Default, (record) => record.Tags, (newTags, record_1) => (new ReviewRecord(record_1.Id, record_1.Tagline, record_1.Notes, newTags, record_1.Rating)), \"Add review\", \"Edit review\", (form, editing, model) => {\n FlexFormFields$1__AddTags_Z63D88B1E(FlexFormFields$1__AddTextArea_Z44011C05(FlexFormFields$1__AddText_Z44011C05(FlexFormFields$1__AddRating_Z716E223C(FlexFormTuple$2__get_FieldsSnd(form), \"Rating\", validateRating), \"Tagline\", validateTagline), \"Notes\", validateNotes), \"Tags\", validateTags, extractFrequentTags(model));\n if (editing) {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Update review\");\n }\n else {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Add review\");\n }\n return form;\n});\n\nexport const interactionEditing = DiaryEditingView$1_$ctor_6E4FAFB9(interactionService, InteractionRecord_Default, (record) => record.Tags, (newTags, record_1) => (new InteractionRecord(record_1.Id, record_1.Tagline, record_1.Participants, record_1.DurationSec, record_1.InteractionType, record_1.Notes, record_1.FollowupTime, record_1.FollowupNotes, record_1.FollowupDismissed, newTags)), \"Add interaction\", \"Edit interaction\", (form, editing, model) => {\n FlexFormFields$1__AddTags_Z63D88B1E(FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddDateTimeOpt_C9F34CC(FlexFormFields$1__AddTextArea_Z44011C05(FlexFormFields$1__AddDurationSecs_ZAAC24(FlexFormFields$1__AddTextArea_Z44011C05(FlexFormFields$1__AddText_Z44011C05(FlexFormFields$1__AddSelection_Z70244BEA(FlexFormTuple$2__get_FieldsSnd(form), \"InteractionType\", interactionTypes, noValidation), \"Tagline\", validateTagline), \"Participants\", InteractionRecordModule_validateParticipants), \"DurationSec\", noValidation), \"Notes\", validateNotes), \"FollowupTime\", noValidation), \"FollowupNotes\", validateFollowupNotes), \"Tags\", validateTags, extractFrequentTags(model));\n if (editing) {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Update interaction\");\n }\n else {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Add interaction\");\n }\n return form;\n});\n\n","import { PhysicalClientModule_$ctor } from \"../../PhysicalClientModule.js\";\nimport { Remoting_buildProxy_64DC51C } from \"../../fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js\";\nimport { RemotingModule_createApi, RemotingModule_withRouteBuilder } from \"../../fable_modules/Fable.Remoting.Client.7.32.0/Remoting.fs.js\";\nimport { printf, toText } from \"../../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { UnifiedService_$reflection, UnifiedService_RouteBuilder, TemperatureRecord_$reflection, BodilyFunctionsRecord_$reflection, BloodPressureRecord_$reflection, RecordService$1_$reflection, WeightRecord_$reflection } from \"../../Omnicv.Shared/PhysicalAPI.js\";\n\nexport const physicalModule = PhysicalClientModule_$ctor();\n\nexport const weightService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/mod/phys/%s/%s\"))(\"WeightRecord\")(m), RemotingModule_createApi()), RecordService$1_$reflection(WeightRecord_$reflection()));\n\nexport const bloodPressureService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/mod/phys/%s/%s\"))(\"BloodPressureRecord\")(m), RemotingModule_createApi()), RecordService$1_$reflection(BloodPressureRecord_$reflection()));\n\nexport const bodilyFunctionsService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/mod/phys/%s/%s\"))(\"BodilyFunctionsRecord\")(m), RemotingModule_createApi()), RecordService$1_$reflection(BodilyFunctionsRecord_$reflection()));\n\nexport const temperatureService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder((arg, m) => toText(printf(\"/api/auth/mod/phys/%s/%s\"))(\"TemperatureRecord\")(m), RemotingModule_createApi()), RecordService$1_$reflection(TemperatureRecord_$reflection()));\n\nexport const unifiedService = Remoting_buildProxy_64DC51C(RemotingModule_withRouteBuilder(UnifiedService_RouteBuilder, RemotingModule_createApi()), UnifiedService_$reflection());\n\n","import { secondsToHuman, responsiveChart, getBasicEventInfoData, isNight } from \"../../Omnicv.Client.Common/Utils.js\";\nimport { StringBuilder__Append_Z721C83C5, StringBuilder_$ctor } from \"../../fable_modules/fable-library-js.4.24.0/System.Text.js\";\nimport { toString } from \"../../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { list as list_8, Option, button } from \"../../fable_modules/Fulma.3.0.0/Elements/Button.fs.js\";\nimport { Screen, Size_ISize, Color_IColor } from \"../../fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { Route, Router_modifyLocation } from \"../../Omnicv.Client.Common/Router.js\";\nimport { append as append_1, collect, min, max, average as average_1, tryFind, length, isEmpty, map as map_1, sortBy, empty, singleton, ofArray } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Option as Option_1, icon } from \"../../fable_modules/Fulma.3.0.0/Elements/Icon.fs.js\";\nimport { Fa_i } from \"../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { Icons__ToIcon } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { Icons } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { Option as Option_2, columns } from \"../../fable_modules/Fulma.3.0.0/Layouts/Columns.fs.js\";\nimport { exists, filter, length as length_1, empty as empty_1, map, singleton as singleton_1, append, delay, toList } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { Option as Option_3, ISize, column } from \"../../fable_modules/Fulma.3.0.0/Layouts/Column.fs.js\";\nimport { defaultOf } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { getModuleViewAllButtons, getModuleNewNowButtons } from \"../../Omnicv.Client.Common/ClientModule.js\";\nimport { unifiedService, bodilyFunctionsService, weightService, physicalModule } from \"./PhysicalCommon.js\";\nimport { Fa_i as Fa_i_1, Fa_IconOption } from \"../../fable_modules/Fable.FontAwesome.3.0.0/FontAwesome.fs.js\";\nimport { createElement } from \"react\";\nimport * as react from \"react\";\nimport { reactApi } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { map as map_2, defaultArg, value as value_10 } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Class, closeable } from \"../../Omnicv.Client.Common/Components/Notification.js\";\nimport { init, update, initDateRange, Actions$1, Model$1__CanFetchMore, Msg$1 } from \"../../Omnicv.Client.Common/Components/ViewRecords.js\";\nimport { Option as Option_4, h5, h4 } from \"../../fable_modules/Fulma.3.0.0/Elements/Heading.fs.js\";\nimport { uncurry2, numberHash, comparePrimitives, dateHash, createObj, equals, curry2 } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { format } from \"../../fable_modules/fable-library-js.4.24.0/String.js\";\nimport { equals as equals_1, op_Subtraction, compare, utcNow, toUniversalTime } from \"../../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { addDays } from \"date-fns\";\nimport { op_UnaryNegation_Int32 } from \"../../fable_modules/fable-library-js.4.24.0/Int32.js\";\nimport Decimal from \"../../fable_modules/fable-library-js.4.24.0/Decimal.js\";\nimport { DataPoint } from \"../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { reactApi as reactApi_1 } from \"../../fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { ResponsiveContainer } from \"recharts\";\nimport { bodilyFunctionsEmojis } from \"../../Omnicv.Shared/PhysicalAPI.js\";\nimport { days as days_3 } from \"../../fable_modules/fable-library-js.4.24.0/TimeSpan.js\";\nimport { toString as toString_1, fromDateTime, toDateTime } from \"../../fable_modules/fable-library-js.4.24.0/DateOnly.js\";\nimport { List_groupBy } from \"../../fable_modules/fable-library-js.4.24.0/Seq2.js\";\nimport * as common from \"../../../src/javascript/common.js\";\n\nconst pageSize = 30;\n\nconst standardLookBackDays = 30;\n\nfunction isDuringSleep(eventInfo, record) {\n const matchValue = record.DuringSleep;\n if (matchValue == null) {\n return isNight(eventInfo);\n }\n else {\n return matchValue;\n }\n}\n\nfunction displayEventInfo(eventInfo) {\n const sb = StringBuilder_$ctor();\n StringBuilder__Append_Z721C83C5(sb, getBasicEventInfoData(eventInfo));\n return toString(sb);\n}\n\nfunction displayActions(id, editRoute, deleteFun) {\n return ofArray([button(ofArray([new Option(0, [new Color_IColor(4, [])]), new Option(5, []), new Option(18, [(_arg) => {\n Router_modifyLocation(editRoute(id));\n }])]), singleton(icon(singleton(new Option_1(0, [new Size_ISize(0, [])])), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(4, []))), []))))), button(ofArray([new Option(0, [new Color_IColor(8, [])]), new Option(5, []), new Option(18, [(_arg_1) => {\n if (window.confirm(`${\"Confirm deletion\"}:\n${\"Are you sure you want to delete this physical entry?\"}`)) {\n (() => {\n deleteFun(id);\n })();\n }\n }])]), singleton(icon(singleton(new Option_1(0, [new Size_ISize(0, [])])), singleton(Fa_i(singleton(Icons__ToIcon(new Icons(2, []))), [])))))]);\n}\n\nfunction displaySingleRecord(displayRecordDetails, actions, eventInfo, record) {\n return columns(ofArray([new Option_2(4, []), new Option_2(1, [])]), toList(delay(() => append(singleton_1(column(empty(), singleton(displayEventInfo(eventInfo)))), delay(() => append(singleton_1(column(singleton(new Option_3(0, [new Screen(0, []), new ISize(21, [])])), singleton(displayRecordDetails(eventInfo, record)))), delay(() => {\n const matchValue = actions;\n if (matchValue == null) {\n return singleton_1(defaultOf());\n }\n else {\n const deleteFun = matchValue[1];\n return singleton_1(column(empty(), displayActions(eventInfo.Id, matchValue[0](record), deleteFun)));\n }\n })))))));\n}\n\nfunction displayRecords(records, displayRecordDetails, actions) {\n return map((tupledArg) => displaySingleRecord(displayRecordDetails, actions, tupledArg[0], tupledArg[1]), records);\n}\n\nfunction displayNavigation(isDisabled, inProgress, reloadFun) {\n let children;\n const children_2 = [getModuleNewNowButtons(physicalModule, isDisabled), list_8(empty(), singleton(button(ofArray([new Option(0, [new Color_IColor(5, [])]), new Option(16, [isDisabled]), new Option(18, [reloadFun])]), ofArray([icon(empty(), toList(delay(() => (inProgress ? singleton_1(Fa_i(ofArray([Icons__ToIcon(new Icons(6, [])), new Fa_IconOption(12, [])]), [])) : singleton_1(Fa_i(singleton(Icons__ToIcon(new Icons(5, []))), [])))))), (children = toList(delay(() => (inProgress ? singleton_1(\"Loading...\") : singleton_1(\"Reload\")))), createElement(\"span\", {\n children: reactApi.Children.toArray(Array.from(children)),\n }))])))), getModuleViewAllButtons(physicalModule, isDisabled)];\n return react.createElement(\"div\", {\n className: \"block\",\n disabled: isDisabled,\n }, ...children_2);\n}\n\nfunction viewCommon(title, subTitle, getEditRoute, displayRecordDetails, session, model, dispatch) {\n const readOnly = value_10(session.UserInfo).ReadOnly;\n const isDisabled = model.InProgress ? true : readOnly;\n const children_4 = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't fetch physical data: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => append(singleton_1(displayNavigation(isDisabled, model.InProgress, (_arg) => {\n dispatch(new Msg$1(1, []));\n })), delay(() => append(singleton_1(h4(empty())(singleton(title))), delay(() => append(singleton_1(h5(singleton(new Option_4(6, [])))(singleton(subTitle))), delay(() => {\n let children;\n return append(singleton_1((children = displayRecords(model.Records, displayRecordDetails, readOnly ? undefined : [curry2(getEditRoute), (arg) => {\n dispatch(new Msg$1(5, [arg]));\n }]), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n }))), delay(() => (Model$1__CanFetchMore(model) ? singleton_1(button(ofArray([new Option(0, [new Color_IColor(6, [])]), new Option(16, [model.InProgress]), new Option(18, [(_arg_1) => {\n dispatch(new Msg$1(0, []));\n }])]), ofArray([icon(empty(), singleton(Fa_i_1(singleton(new Fa_IconOption(11, [\"fas fa-download\"])), []))), createElement(\"span\", {\n children: reactApi.Children.toArray([\"Load more\"]),\n })]))) : empty_1())));\n }))))))));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_4)),\n });\n}\n\nexport function WeightView_getEditRoute(_arg, Item) {\n return new Route(22, [Item]);\n}\n\nexport function WeightView_displayRecord(record) {\n return format('{0:' + \"F2\" + '}', record.Weight) + \" kg\";\n}\n\nconst WeightView_service = weightService;\n\nexport const WeightView_actions = new Actions$1(WeightView_service.GetRecords);\n\nexport function WeightView_init() {\n const now = toUniversalTime(utcNow());\n return initDateRange(WeightView_actions, false, addDays(now, op_UnaryNegation_Int32(standardLookBackDays) * 6), now);\n}\n\nexport const WeightView_update = (session) => ((msg) => ((model) => update(session, msg, model)));\n\nexport function WeightView_viewList(_session, model, dispatch) {\n let value_1;\n const data = sortBy((point) => point.Timestamp, map_1((tupledArg) => {\n const record = tupledArg[1];\n return new DataPoint(record.Id, tupledArg[0].EventTimestamp, new Decimal(record.Weight));\n }, model.Records), {\n Compare: compare,\n });\n let graph;\n if (isEmpty(data)) {\n graph = defaultOf();\n }\n else {\n const properties = ofArray([(value_1 = (100 + \"%\"), (equals(value_1, 100 + \"%\") ? true : equals(value_1, 100 + \"%\")) ? [\"width\", 99 + \"%\"] : [\"width\", value_1]), [\"height\", 300], [\"children\", responsiveChart(\"Weight change over time\", data)]]);\n graph = reactApi_1.createElement(ResponsiveContainer, createObj(properties));\n }\n const children = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't fetch data: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => append(singleton_1(displayNavigation(model.InProgress, model.InProgress, (_arg) => {\n dispatch(new Msg$1(1, []));\n })), delay(() => append(singleton_1(h4(empty())(singleton(\"Weight history\"))), delay(() => append(singleton_1(h5(singleton(new Option_4(6, [])))(singleton(`Total records: ${length(model.Records)}`))), delay(() => singleton_1(graph)))))))));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nexport function BloodPressureView_getEditRoute(_arg, Item) {\n return new Route(26, [Item]);\n}\n\nexport function BloodPressureView_displayRecord(record) {\n return `${record.Systolic} / ${record.Diastolic} mmHg`;\n}\n\nexport function TemperatureView_getEditRoute(_arg, Item) {\n return new Route(28, [Item]);\n}\n\nexport function TemperatureView_displayRecord(record) {\n return format('{0:' + \"F2\" + '}', record.Temperature) + \"℃\";\n}\n\nexport function BodilyFunctionsView_getEditRoute(_arg, Item) {\n return new Route(24, [Item]);\n}\n\nconst BodilyFunctionsView_service = bodilyFunctionsService;\n\nexport const BodilyFunctionsView_actions = new Actions$1(BodilyFunctionsView_service.GetRecords);\n\nexport function BodilyFunctionsView_init() {\n const now = toUniversalTime(utcNow());\n return initDateRange(BodilyFunctionsView_actions, false, addDays(now, op_UnaryNegation_Int32(standardLookBackDays)), now);\n}\n\nexport const BodilyFunctionsView_update = (session) => ((msg) => ((model) => update(session, msg, model)));\n\nfunction BodilyFunctionsView_getFunctionName(functionType) {\n return defaultArg(map_2((tuple) => tuple[1], tryFind((tupledArg) => (tupledArg[0] === functionType), bodilyFunctionsEmojis)), \"\");\n}\n\nexport function BodilyFunctionsView_displayRecord(eventInfo, record) {\n const functionName = BodilyFunctionsView_getFunctionName(record.FunctionType);\n const duration = secondsToHuman(record.DurationSec);\n return `${isDuringSleep(eventInfo, record) ? \"🌙 \" : \"\"}${functionName} / ${duration} | ${record.Rating}`;\n}\n\nconst BodilyFunctionsView_columnsOptions = singleton(new Option_2(4, []));\n\nconst BodilyFunctionsView_headerColumOptions = singleton(new Option_3(0, [new Screen(0, []), new ISize(17, [])]));\n\nconst BodilyFunctionsView_dataColumOptions = singleton(new Option_3(0, [new Screen(0, []), new ISize(21, [])]));\n\nfunction BodilyFunctionsView_summaryRow(caption, value) {\n return columns(BodilyFunctionsView_columnsOptions, ofArray([column(BodilyFunctionsView_headerColumOptions, singleton(createElement(\"strong\", {\n children: reactApi.Children.toArray([caption]),\n }))), column(BodilyFunctionsView_dataColumOptions, singleton(value))]));\n}\n\nfunction BodilyFunctionsView_getDays(start, finish) {\n return days_3(op_Subtraction(toDateTime(finish, 0), toDateTime(start, 0)));\n}\n\nfunction BodilyFunctionsView_displaySummaryGroup(bodilyFunctionType, records) {\n return toList(delay(() => {\n const groups = List_groupBy((tupledArg) => fromDateTime(tupledArg[0].EventTimestamp), records, {\n Equals: equals_1,\n GetHashCode: dateHash,\n });\n const counts = map_1((tupledArg_1) => length(tupledArg_1[1]), groups);\n const daysWithSleepEliminations = length_1(filter((tupledArg_2) => exists((tupledArg_3) => isDuringSleep(tupledArg_3[0], tupledArg_3[1]), tupledArg_2[1]), groups)) | 0;\n let average;\n const copyOfStruct = average_1(map_1((value) => value, counts), {\n GetZero: () => 0,\n Add: (x_2, y_1) => (x_2 + y_1),\n DivideByInt: (x_1, i) => (x_1 / i),\n });\n average = format('{0:' + \"F2\" + '}', copyOfStruct);\n let maximum;\n const copyOfStruct_1 = max(counts, {\n Compare: comparePrimitives,\n }) | 0;\n maximum = format('{0:' + \"F2\" + '}', copyOfStruct_1);\n const dates = map_1((tuple) => tuple[0], groups);\n const days = BodilyFunctionsView_getDays(min(dates, {\n Compare: compare,\n }), max(dates, {\n Compare: compare,\n })) | 0;\n const func = BodilyFunctionsView_getFunctionName(bodilyFunctionType);\n return append(singleton_1(BodilyFunctionsView_summaryRow(`Average/max ${func}`, `${average} / ${maximum}`)), delay(() => {\n let copyOfStruct_2;\n return ((days > 0) && (daysWithSleepEliminations > 0)) ? singleton_1(BodilyFunctionsView_summaryRow(`During sleep ${func}`, `${(copyOfStruct_2 = ((daysWithSleepEliminations / days) * 100), format('{0:' + \"F2\" + '}', copyOfStruct_2))}% of days`)) : empty_1();\n }));\n }));\n}\n\nfunction BodilyFunctionsView_displaySummary(model) {\n return collect((tupledArg_1) => BodilyFunctionsView_displaySummaryGroup(tupledArg_1[0], tupledArg_1[1]), List_groupBy((tupledArg) => tupledArg[1].FunctionType, model.Records, {\n Equals: (x, y) => (x === y),\n GetHashCode: numberHash,\n }));\n}\n\nfunction BodilyFunctionsView_displayRecordGroup(actions, date, recordData) {\n let arg;\n return append_1(singleton(createElement(\"div\", {\n className: \"divider\",\n children: `${toString_1(date)} (${(arg = toDateTime(date, 0), common.getDayName(arg, \"\"))}): ${length(recordData)} record(s)`,\n })), map_1((tupledArg) => displaySingleRecord(BodilyFunctionsView_displayRecord, actions, tupledArg[0], tupledArg[1]), recordData));\n}\n\nfunction BodilyFunctionsView_displayAllRecords(actions, model) {\n return collect((tupledArg_1) => BodilyFunctionsView_displayRecordGroup(actions, tupledArg_1[0], tupledArg_1[1]), List_groupBy((tupledArg) => fromDateTime(tupledArg[0].EventTimestamp), model.Records, {\n Equals: equals_1,\n GetHashCode: dateHash,\n }));\n}\n\nexport function BodilyFunctionsView_viewList(session, model, dispatch) {\n const readOnly = value_10(session.UserInfo).ReadOnly;\n const isDisabled = model.InProgress;\n const children_6 = toList(delay(() => {\n let matchValue;\n return append((matchValue = model.Error, (matchValue != null) ? singleton_1(closeable(`Can't fetch data: ${matchValue}`, new Class(4, []))) : singleton_1(defaultOf())), delay(() => append(singleton_1(displayNavigation(isDisabled, model.InProgress, (_arg) => {\n dispatch(new Msg$1(1, []));\n })), delay(() => append(singleton_1(h4(empty())(singleton(\"Elimination history\"))), delay(() => append(singleton_1(h5(singleton(new Option_4(6, [])))(singleton(`Total records: ${length(model.Records)}`))), delay(() => {\n let children_2, today, start, finish, days;\n const actions = readOnly ? undefined : [(arg00$0040) => ((Item_1) => BodilyFunctionsView_getEditRoute(arg00$0040, Item_1)), (arg) => {\n dispatch(new Msg$1(5, [arg]));\n }];\n return append(singleton_1((children_2 = append_1(singleton((today = fromDateTime(utcNow()), (start = fromDateTime(value_10(model.DateRange)[0]), (finish = fromDateTime(value_10(model.DateRange)[1]), (days = (BodilyFunctionsView_getDays(start, finish) | 0), columns(BodilyFunctionsView_columnsOptions, toList(delay(() => append(singleton_1(column(BodilyFunctionsView_headerColumOptions, singleton(button(toList(delay(() => {\n const start_1 = value_10(model.DateRange)[0];\n const previous = addDays(start_1, op_UnaryNegation_Int32(standardLookBackDays));\n return append(singleton_1(new Option(0, [new Color_IColor(6, [])])), delay(() => append(singleton_1(new Option(16, [model.InProgress])), delay(() => singleton_1(new Option(18, [(_arg_1) => {\n dispatch(new Msg$1(2, [previous, start_1]));\n }]))))));\n })), singleton(icon(empty(), singleton(Fa_i_1(singleton(new Fa_IconOption(11, [\"fas fa-angle-double-left\"])), [])))))))), delay(() => append(singleton_1(column(BodilyFunctionsView_headerColumOptions, singleton(createElement(\"strong\", {\n children: reactApi.Children.toArray([\"Period\"]),\n })))), delay(() => append(singleton_1(column(BodilyFunctionsView_dataColumOptions, singleton(`${toString_1(start)} - ${toString_1(finish)} / ${days} days`))), delay(() => ((compare(today, finish) > 0) ? singleton_1(column(BodilyFunctionsView_headerColumOptions, singleton(button(toList(delay(() => {\n const finish_1 = value_10(model.DateRange)[1];\n const newFinish_1 = addDays(finish_1, standardLookBackDays);\n return append(singleton_1(new Option(0, [new Color_IColor(6, [])])), delay(() => append(singleton_1(new Option(16, [model.InProgress])), delay(() => singleton_1(new Option(18, [(_arg_2) => {\n dispatch(new Msg$1(2, [finish_1, newFinish_1]));\n }]))))));\n })), singleton(icon(empty(), singleton(Fa_i_1(singleton(new Fa_IconOption(11, [\"fas fa-angle-double-right\"])), [])))))))) : empty_1()))))))))))))))), append_1(BodilyFunctionsView_displaySummary(model), BodilyFunctionsView_displayAllRecords(actions, model))), createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_2)),\n }))), delay(() => (Model$1__CanFetchMore(model) ? singleton_1(button(ofArray([new Option(0, [new Color_IColor(6, [])]), new Option(16, [isDisabled]), new Option(18, [(_arg_3) => {\n dispatch(new Msg$1(0, []));\n }])]), ofArray([icon(empty(), singleton(Fa_i_1(singleton(new Fa_IconOption(11, [\"fas fa-download\"])), []))), createElement(\"span\", {\n children: reactApi.Children.toArray([\"Load more\"]),\n })]))) : empty_1())));\n }))))))));\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_6)),\n });\n}\n\nconst PhysicalView_service = unifiedService;\n\nexport const PhysicalView_actions = new Actions$1(PhysicalView_service.GetRecords);\n\nexport function PhysicalView_init() {\n return init(PhysicalView_actions, pageSize, false);\n}\n\nexport const PhysicalView_update = (session) => ((msg) => ((model) => update(session, msg, model)));\n\nexport function PhysicalView_getEditRoute(record) {\n switch (record.tag) {\n case 1:\n return (Item_1) => BloodPressureView_getEditRoute(record.fields[0], Item_1);\n case 2:\n return (Item_2) => BodilyFunctionsView_getEditRoute(record.fields[0], Item_2);\n case 3:\n return (Item_3) => TemperatureView_getEditRoute(record.fields[0], Item_3);\n default:\n return (Item) => WeightView_getEditRoute(record.fields[0], Item);\n }\n}\n\nexport function PhysicalView_displayRecord(eventInfo, record) {\n switch (record.tag) {\n case 1:\n return BloodPressureView_displayRecord(record.fields[0]);\n case 2:\n return BodilyFunctionsView_displayRecord(eventInfo, record.fields[0]);\n case 3:\n return TemperatureView_displayRecord(record.fields[0]);\n default:\n return WeightView_displayRecord(record.fields[0]);\n }\n}\n\nexport function PhysicalView_view(session, model, dispatch) {\n return viewCommon(\"Physical entries\", `Total records: ${length(model.Records)}`, uncurry2(PhysicalView_getEditRoute), PhysicalView_displayRecord, session, model, dispatch);\n}\n\n","import { class_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { Msg$2, view, update, Model$2__IsEditing, initEdit, initNew } from \"../../Omnicv.Client.Common/Components/AddEditRecordFlexFormBase.js\";\nimport { Msg, tryUpdateLocationFromSuggestions } from \"../../Omnicv.Client.Common/Components/EventInfoManager.js\";\nimport { FlexFormFields$1__AddDurationSecs_ZAAC24, FlexFormFields$1__AddGroup_6DFDD678, FlexFormFields$1__AddRating_Z716E223C, FlexFormFields$1__AddRadiosInline_Z70244BEA, FlexFormBase$1__set_SubmitCaption_Z721C83C5, FlexFormTuple$2__get_FieldsSnd, FlexFormFields$1__AddPositiveFloat_1D6F52FB, FlexFormFields$1__AddTextAreaOpt_Z44636648, addEventInfoToFlexFormEim, FlexFormTuple$2_$ctor_5AE4FFF0, getSuggestions } from \"../../Omnicv.Client.Common/Components/FlexForm.js\";\nimport { defaultArg } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { empty } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { Route, Router_modifyLocation, Router_newUrl } from \"../../Omnicv.Client.Common/Router.js\";\nimport { Session__GetCurrentProfileId } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { PagingOptionsModule_defaultPagingOptions } from \"../../Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { temperatureService, bodilyFunctionsService, bloodPressureService, weightService } from \"./PhysicalCommon.js\";\nimport { validateTemperature, TemperatureRecord_Default, duringSleepOptions, bodilyFunctions, BodilyFunctionsRecord_Default, validateSystolic, validateDiastolic, BloodPressureRecord_Default, validateWeight, validateNotes, WeightRecord_Default } from \"../../Omnicv.Shared/PhysicalAPI.js\";\n\nfunction noValidation(_arg) {\n return undefined;\n}\n\nexport class Physical_PhysicalView$1 {\n constructor(service, getDefault, addTitle, editTitle, viewAll, buildFormMain) {\n this.service = service;\n this.getDefault = getDefault;\n this.addTitle = addTitle;\n this.editTitle = editTitle;\n this.viewAll = viewAll;\n this.buildFormMain = buildFormMain;\n }\n}\n\nexport function Physical_PhysicalView$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Pages.Physical.AddEditPhysicalView.Component.Physical.PhysicalView`1\", [gen0], Physical_PhysicalView$1);\n}\n\nexport function Physical_PhysicalView$1_$ctor_Z7E8B6EC8(service, getDefault, addTitle, editTitle, viewAll, buildFormMain) {\n return new Physical_PhysicalView$1(service, getDefault, addTitle, editTitle, viewAll, buildFormMain);\n}\n\nexport function Physical_PhysicalView$1__InitNew_5D846BF8(this$, session) {\n return initNew(this$.getDefault(), () => Physical_PhysicalView$1__fetchAddHelperData(this$, session, undefined));\n}\n\nexport function Physical_PhysicalView$1__InitEdit(this$, session, id) {\n return initEdit(id, this$.getDefault(), (id_1) => Physical_PhysicalView$1__fetchData(this$, session, id_1));\n}\n\nexport function Physical_PhysicalView$1__Update(this$, session, msg, model) {\n if (!Model$2__IsEditing(model)) {\n tryUpdateLocationFromSuggestions(() => getSuggestions(model.EIMModel.Position, defaultArg(model.EditHelperData, empty())), model.EIMModel);\n }\n return update(session, (eventInfo, record) => {\n if (Model$2__IsEditing(model)) {\n return this$.service.Edit(eventInfo, record);\n }\n else {\n return this$.service.Add(eventInfo, record);\n }\n }, () => Router_newUrl(this$.viewAll), msg, model);\n}\n\nexport function Physical_PhysicalView$1__View(this$, model, dispatch) {\n const editing = Model$2__IsEditing(model);\n return view((model_1, dispatch_1) => Physical_PhysicalView$1__buildForm(this$, editing, model_1, dispatch_1), editing ? this$.editTitle : this$.addTitle, model, dispatch);\n}\n\nexport function Physical_PhysicalView$1__fetchData(this$, session, id) {\n return this$.service.GetRecord(Session__GetCurrentProfileId(session), id);\n}\n\nexport function Physical_PhysicalView$1__fetchAddHelperData(this$, session, _arg) {\n return this$.service.GetRecords(Session__GetCurrentProfileId(session), PagingOptionsModule_defaultPagingOptions);\n}\n\nexport function Physical_PhysicalView$1__buildForm(this$, editing, model, dispatch) {\n const form = FlexFormTuple$2_$ctor_5AE4FFF0((arg) => {\n dispatch(new Msg$2(0, [arg]));\n }, (arg_1) => {\n dispatch(new Msg$2(1, [arg_1]));\n }, (_arg) => {\n dispatch(new Msg$2(5, []));\n }, () => {\n Router_modifyLocation(this$.viewAll);\n });\n addEventInfoToFlexFormEim(form, model.EIMModel, (arg_3) => {\n dispatch(new Msg$2(7, [new Msg(6, [arg_3])]));\n }, getSuggestions(model.EIMModel.Position, defaultArg(model.EditHelperData, empty())));\n return this$.buildFormMain(form, editing, model);\n}\n\nexport const Physical_weightEditing = Physical_PhysicalView$1_$ctor_Z7E8B6EC8(weightService, WeightRecord_Default, \"Add new weight\", \"Edit weight\", new Route(18, []), (form, editing, model) => {\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddPositiveFloat_1D6F52FB(FlexFormTuple$2__get_FieldsSnd(form), \"Weight\", validateWeight), \"Notes\", validateNotes);\n if (editing) {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Update weight\");\n }\n else {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Add weight\");\n }\n return form;\n});\n\nexport const Physical_bloodPressureEditing = Physical_PhysicalView$1_$ctor_Z7E8B6EC8(bloodPressureService, BloodPressureRecord_Default, \"Add blood pressure\", \"Edit blood pressure\", new Route(18, []), (form, editing, model) => {\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddPositiveFloat_1D6F52FB(FlexFormFields$1__AddPositiveFloat_1D6F52FB(FlexFormTuple$2__get_FieldsSnd(form), \"Systolic\", validateSystolic), \"Diastolic\", validateDiastolic), \"Notes\", validateNotes);\n if (editing) {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Update blood pressure\");\n }\n else {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Add blood pressure\");\n }\n return form;\n});\n\nexport const Physical_bodilyFunctionsEditing = Physical_PhysicalView$1_$ctor_Z7E8B6EC8(bodilyFunctionsService, BodilyFunctionsRecord_Default, \"Add elimination\", \"Edit elimination\", new Route(19, []), (form, editing, model) => {\n FlexFormFields$1__AddRadiosInline_Z70244BEA(FlexFormTuple$2__get_FieldsSnd(form), \"FunctionType\", bodilyFunctions, noValidation);\n FlexFormFields$1__AddRadiosInline_Z70244BEA(FlexFormFields$1__AddRating_Z716E223C(FlexFormFields$1__AddGroup_6DFDD678(FlexFormTuple$2__get_FieldsSnd(form)), \"Rating\", noValidation), \"DuringSleep\", duringSleepOptions, noValidation);\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddDurationSecs_ZAAC24(FlexFormTuple$2__get_FieldsSnd(form), \"DurationSec\", noValidation), \"Notes\", validateNotes);\n if (editing) {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Update elimination\");\n }\n else {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Add elimination\");\n }\n return form;\n});\n\nexport const Physical_temperatureEditing = Physical_PhysicalView$1_$ctor_Z7E8B6EC8(temperatureService, TemperatureRecord_Default, \"Add new temperature\", \"Edit temperature\", new Route(18, []), (form, editing, model) => {\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormFields$1__AddPositiveFloat_1D6F52FB(FlexFormTuple$2__get_FieldsSnd(form), \"Temperature\", validateTemperature), \"Notes\", validateNotes);\n if (editing) {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Update temperature\");\n }\n else {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Add temperature\");\n }\n return form;\n});\n\n","import { map as map_1, empty, find, ofArray } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { comparePrimitives, int32ToString } from \"../../fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { map, defaultArg } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { validateInstructions, Exercise, Exercise_Default_7F9DDECF, Workout, Workout_Default_7F9DDECF, validateName, validateDescription, TrainingPlan, TrainingPlan_Default_7F9DDECF, FitnessEditHelperData_$reflection, FitnessEditHelperData__GetFrequentTags } from \"../../Omnicv.Shared/FitnessAPI.js\";\nimport { Msg$2, SimpleFormView$2__ViewForm_Z44A2099C, Model$2__IsEditing, SimpleFormView$2__InitEditWithHelperData_3AAD8C48, SimpleFormView$2__InitNewCore_Z292EED19, SimpleFormView$2_$reflection, SimpleFormView$2 } from \"../../Omnicv.Client.Common/Components/AddEditSimpleFlexFormBase.js\";\nimport { Route, Router_newUrl } from \"../../Omnicv.Client.Common/Router.js\";\nimport { class_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { utcNow } from \"../../fable_modules/fable-library-js.4.24.0/Date.js\";\nimport { div } from \"../../fable_modules/Fulma.3.0.0/Elements/Form/Control.fs.js\";\nimport { singleton, append, delay, toList } from \"../../fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { ofList } from \"../../fable_modules/fable-library-js.4.24.0/Set.js\";\nimport { validateServerTags, toClientTreeView, addTag as addTag_1, toClientListView } from \"../../Omnicv.Shared.Common/TagUtils.js\";\nimport { renderTagTree } from \"../../modules/Omnicv.Diary.Client/DiaryClientUtils.js\";\nimport { empty as empty_1 } from \"../../fable_modules/fable-library-js.4.24.0/Map.js\";\nimport { Session__SiteSettings, Session__GetCurrentProfileId } from \"../../Omnicv.Client.Common/SharedView.js\";\nimport { fitnessService } from \"./FitnessCommon.js\";\nimport { FlexFormFields$1__AddSelection_158231B6, FlexFormBase$1__set_SubmitCaption_Z721C83C5, FlexForm$1__get_Fields, FlexFormFields$1__AddText_Z44011C05, FlexFormFields$1__AddTextArea_Z44011C05, FlexFormFields$1__AddTags_Z63D88B1E } from \"../../Omnicv.Client.Common/Components/FlexForm.js\";\nimport { parse } from \"../../fable_modules/fable-library-js.4.24.0/Int32.js\";\n\nexport const workoutTypes = ofArray([[1, \"Regular\"], [2, \"Circuit\"]]);\n\nexport function stringToWorkoutType(input) {\n return find((pair) => {\n let copyOfStruct;\n return input === ((copyOfStruct = pair[0], int32ToString(copyOfStruct)));\n }, workoutTypes)[0];\n}\n\nfunction extractFrequentTags(model) {\n return defaultArg(map(FitnessEditHelperData__GetFrequentTags, model.EditHelperData), empty());\n}\n\nexport class AddEditFitnessView$1 extends SimpleFormView$2 {\n constructor(getDefault, fetchEntry, fetchEditHelperData, submitNewAction, submitEditAction, mainView, tagsGetter, tagsSetter, addTitle, editTitle, buildForm) {\n super(buildForm, addTitle, submitNewAction, submitEditAction, () => Router_newUrl(mainView), mainView);\n this.getDefault = getDefault;\n this.fetchEntry = fetchEntry;\n this.fetchEditHelperData = fetchEditHelperData;\n this.tagsGetter = tagsGetter;\n this.tagsSetter = tagsSetter;\n this.addTitle = addTitle;\n this.editTitle = editTitle;\n }\n}\n\nexport function AddEditFitnessView$1_$reflection(gen0) {\n return class_type(\"Omnicv.Client.Pages.Fitness.AddEditFitnessView.AddEditFitness.AddEditFitnessView`1\", [gen0], AddEditFitnessView$1, SimpleFormView$2_$reflection(gen0, FitnessEditHelperData_$reflection()));\n}\n\nexport function AddEditFitnessView$1_$ctor_Z7DF71A99(getDefault, fetchEntry, fetchEditHelperData, submitNewAction, submitEditAction, mainView, tagsGetter, tagsSetter, addTitle, editTitle, buildForm) {\n return new AddEditFitnessView$1(getDefault, fetchEntry, fetchEditHelperData, submitNewAction, submitEditAction, mainView, tagsGetter, tagsSetter, addTitle, editTitle, buildForm);\n}\n\nexport function AddEditFitnessView$1__InitNew_5D846BF8(this$, session) {\n return SimpleFormView$2__InitNewCore_Z292EED19(this$, this$.getDefault(utcNow()), () => AddEditFitnessView$1__fetchAddHelperData(this$, session, undefined));\n}\n\nexport function AddEditFitnessView$1__InitEdit(this$, session, id) {\n return SimpleFormView$2__InitEditWithHelperData_3AAD8C48(this$, id, this$.getDefault(utcNow()), (id_1) => AddEditFitnessView$1__fetchData(this$, session, id_1), () => AddEditFitnessView$1__fetchAddHelperData(this$, session, undefined));\n}\n\nexport function AddEditFitnessView$1__View(this$, session, model, dispatch) {\n const title = Model$2__IsEditing(model) ? this$.editTitle : this$.addTitle;\n return div(empty(), toList(delay(() => append(singleton(SimpleFormView$2__ViewForm_Z44A2099C(this$, session, model, dispatch)), delay(() => {\n let record;\n const currentTags = ofList(toClientListView(this$.tagsGetter(model.Record)), {\n Compare: comparePrimitives,\n });\n return singleton(renderTagTree((record = model.Record, (tag) => {\n dispatch(new Msg$2(0, [this$.tagsSetter(addTag_1(this$.tagsGetter(record), tag), record)]));\n }), toClientTreeView(defaultArg(map((data) => data.FrequentTags, model.EditHelperData), empty_1({\n Compare: comparePrimitives,\n }))), currentTags));\n })))));\n}\n\nexport function AddEditFitnessView$1__fetchData(this$, session, id) {\n return this$.fetchEntry(Session__GetCurrentProfileId(session), id);\n}\n\nexport function AddEditFitnessView$1__fetchAddHelperData(this$, session, _arg) {\n return this$.fetchEditHelperData(Session__GetCurrentProfileId(session));\n}\n\nexport const trainingPlanEditing = AddEditFitnessView$1_$ctor_Z7DF71A99(TrainingPlan_Default_7F9DDECF, fitnessService.GetTrainingPlan, fitnessService.GetFitnessEditHelperDataTrainingPlan, fitnessService.AddTrainingPlan, fitnessService.EditTrainingPlan, new Route(32, []), (record) => record.Categories, (newTags, record_1) => (new TrainingPlan(record_1.Id, record_1.ProfileId, record_1.Name, record_1.Description, record_1.CreatedAt, record_1.UpdatedAt, newTags)), \"Add new training plan\", \"Edit training plan\", (form, _session, model, _dispatch) => {\n FlexFormFields$1__AddTags_Z63D88B1E(FlexFormFields$1__AddTextArea_Z44011C05(FlexFormFields$1__AddText_Z44011C05(FlexForm$1__get_Fields(form), \"Name\", validateName), \"Description\", validateDescription), \"Categories\", validateServerTags, extractFrequentTags(model), undefined, undefined, \"Categories for the training plan. To separate, use \\\",\\\".\");\n if (Model$2__IsEditing(model)) {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Update plan\");\n }\n else {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Add plan\");\n }\n return form;\n});\n\nexport const workoutEditing = AddEditFitnessView$1_$ctor_Z7DF71A99(Workout_Default_7F9DDECF, fitnessService.GetWorkout, fitnessService.GetFitnessEditHelperDataWorkout, fitnessService.AddWorkout, fitnessService.EditWorkout, new Route(32, []), (record) => record.Categories, (newTags, record_1) => (new Workout(record_1.Id, record_1.ProfileId, record_1.Name, record_1.WorkoutType, record_1.Description, record_1.Schedule, record_1.CreatedAt, record_1.UpdatedAt, newTags)), \"Add new workout\", \"Edit workout\", (form, _session, model, _dispatch) => {\n FlexFormFields$1__AddTags_Z63D88B1E(FlexFormFields$1__AddTextArea_Z44011C05(FlexFormFields$1__AddText_Z44011C05(FlexFormFields$1__AddSelection_158231B6(FlexForm$1__get_Fields(form), \"WorkoutType\", workoutTypes, stringToWorkoutType, (_arg) => undefined, \"Workout type\", undefined, \"Circuit type implies one repetition of each exercise in a circuit\"), \"Name\", validateName), \"Description\", validateDescription), \"Categories\", validateServerTags, extractFrequentTags(model), undefined, undefined, \"Categories for the workout. To separate, use \\\",\\\".\");\n if (Model$2__IsEditing(model)) {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Update workout\");\n }\n else {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Add workout\");\n }\n return form;\n});\n\nexport const exerciseEditing = AddEditFitnessView$1_$ctor_Z7DF71A99(Exercise_Default_7F9DDECF, fitnessService.GetExercise, fitnessService.GetFitnessEditHelperDataExercise, fitnessService.AddExercise, fitnessService.EditExercise, new Route(32, []), (record) => record.Categories, (newTags, record_1) => (new Exercise(record_1.Id, record_1.ProfileId, record_1.Name, record_1.Description, record_1.Instructions, record_1.ContentTypeId, record_1.CreatedAt, record_1.UpdatedAt, newTags)), \"Add new exercise\", \"Edit exercise\", (form, session, model, _dispatch) => {\n const contentTypes = map_1((t) => [t.Id, t.Name], Session__SiteSettings(session).FitnessContentTypes);\n FlexFormFields$1__AddTags_Z63D88B1E(FlexFormFields$1__AddSelection_158231B6(FlexFormFields$1__AddTextArea_Z44011C05(FlexFormFields$1__AddTextArea_Z44011C05(FlexFormFields$1__AddText_Z44011C05(FlexForm$1__get_Fields(form), \"Name\", validateName), \"Description\", validateDescription), \"Instructions\", validateInstructions), \"ContentTypeId\", contentTypes, (s) => parse(s, 511, false, 32), (_arg) => undefined, \"Exercise type\"), \"Categories\", validateServerTags, extractFrequentTags(model), undefined, undefined, \"Categories for the exercise. To separate, use \\\",\\\".\");\n if (Model$2__IsEditing(model)) {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Update exercise\");\n }\n else {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Add exercise\");\n }\n return form;\n});\n\n","import { map, defaultArg } from \"../../fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { empty } from \"../../fable_modules/fable-library-js.4.24.0/List.js\";\nimport { fitnessService } from \"./FitnessCommon.js\";\nimport { class_type } from \"../../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { Msg$2, view, update, Model$2__IsEditing, initEdit, initNew } from \"../../Omnicv.Client.Common/Components/AddEditRecordFlexFormBase.js\";\nimport { validateNotes, WorkoutRecord_Default_Z524259C1 } from \"../../Omnicv.Shared/FitnessAPI.js\";\nimport { fromInt32, toInt64 } from \"../../fable_modules/fable-library-js.4.24.0/BigInt.js\";\nimport { tryUpdateLocationFromSuggestions } from \"../../Omnicv.Client.Common/Components/EventInfoManager.js\";\nimport { FlexFormBase$1__set_SubmitCaption_Z721C83C5, noValidation, FlexFormFields$1__AddDateTimeOpt_C9F34CC, FlexFormTuple$2__get_FieldsSnd, FlexFormFields$1__AddTextAreaOpt_Z44636648, addEventInfoToFlexForm, FlexFormTuple$2_$ctor_5AE4FFF0, getSuggestions } from \"../../Omnicv.Client.Common/Components/FlexForm.js\";\nimport { singleton } from \"../../fable_modules/fable-library-js.4.24.0/AsyncBuilder.js\";\nimport { Router_modifyLocation, Route, Router_newUrl } from \"../../Omnicv.Client.Common/Router.js\";\nimport { Session__GetCurrentProfileId } from \"../../Omnicv.Client.Common/SharedView.js\";\n\nexport function Workout_getEditInfos(model) {\n return defaultArg(map((x) => x.WorkoutRecords, model.EditHelperData), empty());\n}\n\nexport class Workout_WorkoutEditView {\n constructor() {\n this.service = fitnessService;\n }\n}\n\nexport function Workout_WorkoutEditView_$reflection() {\n return class_type(\"Omnicv.Client.Pages.Fitness.AddEditWorkoutRecord.Workout.WorkoutEditView\", undefined, Workout_WorkoutEditView);\n}\n\nexport function Workout_WorkoutEditView_$ctor() {\n return new Workout_WorkoutEditView();\n}\n\nexport function Workout_WorkoutEditView__InitNew(this$, session, workoutId) {\n return initNew(WorkoutRecord_Default_Z524259C1(workoutId), () => Workout_WorkoutEditView__fetchAddHelperData(this$, workoutId, session, undefined));\n}\n\nexport function Workout_WorkoutEditView__InitEdit(this$, session, id) {\n return initEdit(id, WorkoutRecord_Default_Z524259C1(toInt64(fromInt32(0))), (id_1) => Workout_WorkoutEditView__fetchData(this$, session, id_1));\n}\n\nexport function Workout_WorkoutEditView__Update(this$, session, msg, model) {\n if (!Model$2__IsEditing(model)) {\n tryUpdateLocationFromSuggestions(() => getSuggestions(model.EIMModel.Position, Workout_getEditInfos(model)), model.EIMModel);\n }\n return update(session, (eventInfo, record) => {\n if (Model$2__IsEditing(model)) {\n return this$.service.EditWorkoutRecord(eventInfo, record);\n }\n else {\n return singleton.Delay(() => singleton.Bind(this$.service.StartActiveWorkoutRecord(eventInfo, record), (_arg) => singleton.Return(_arg[0])));\n }\n }, () => Router_newUrl(Workout_WorkoutEditView__getRoute_4B9C34E5(this$, model)), msg, model);\n}\n\nexport function Workout_WorkoutEditView__View(this$, model, dispatch) {\n const editing = Model$2__IsEditing(model);\n return view((model_1, dispatch_1) => Workout_WorkoutEditView__buildForm(this$, editing, model_1, dispatch_1), editing ? \"Update workout record\" : \"Start workout record\", model, dispatch);\n}\n\nexport function Workout_WorkoutEditView__fetchData(this$, session, id) {\n return this$.service.GetWorkoutRecord(Session__GetCurrentProfileId(session), id);\n}\n\nexport function Workout_WorkoutEditView__fetchAddHelperData(this$, workoutId, session, _arg) {\n return fitnessService.GetWorkoutRecords(Session__GetCurrentProfileId(session), workoutId);\n}\n\nexport function Workout_WorkoutEditView__getRoute_4B9C34E5(this$, model) {\n return new Route(38, [model.Record.WorkoutId]);\n}\n\nexport function Workout_WorkoutEditView__buildForm(this$, editing, model, dispatch) {\n const form = FlexFormTuple$2_$ctor_5AE4FFF0((arg) => {\n dispatch(new Msg$2(0, [arg]));\n }, (arg_1) => {\n dispatch(new Msg$2(1, [arg_1]));\n }, (_arg) => {\n dispatch(new Msg$2(5, []));\n }, () => {\n Router_modifyLocation(Workout_WorkoutEditView__getRoute_4B9C34E5(this$, model));\n });\n addEventInfoToFlexForm(form, model.EIMModel.EventInfo, getSuggestions(model.EIMModel.Position, Workout_getEditInfos(model)));\n FlexFormFields$1__AddTextAreaOpt_Z44636648(FlexFormTuple$2__get_FieldsSnd(form), \"Notes\", validateNotes);\n if (editing) {\n FlexFormFields$1__AddDateTimeOpt_C9F34CC(FlexFormTuple$2__get_FieldsSnd(form), \"FinishTime\", noValidation);\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Update workout record\");\n }\n else {\n FlexFormBase$1__set_SubmitCaption_Z721C83C5(form, \"Start workout record\");\n }\n return form;\n}\n\nexport const workoutRecordEditor = Workout_WorkoutEditView_$ctor();\n\n","import { Record } from \"../fable-library-js.4.24.0/Types.js\";\nimport { obj_type, record_type, bool_type, lambda_type, class_type, unit_type } from \"../fable-library-js.4.24.0/Reflection.js\";\nimport { Component } from \"react\";\nimport * as react from \"react\";\nimport { equalArrays, equals } from \"../fable-library-js.4.24.0/Util.js\";\n\nexport function Internal_updateInputValue(value, e) {\n if (!(e == null) && (e.value !== value)) {\n e.value = value;\n }\n}\n\nexport class LazyProps$1 extends Record {\n constructor(model, render, equal) {\n super();\n this.model = model;\n this.render = render;\n this.equal = equal;\n }\n}\n\nexport function LazyProps$1_$reflection(gen0) {\n return record_type(\"Elmish.React.LazyProps`1\", [gen0], LazyProps$1, () => [[\"model\", gen0], [\"render\", lambda_type(unit_type, class_type(\"Fable.React.ReactElement\", undefined))], [\"equal\", lambda_type(gen0, lambda_type(gen0, bool_type))]]);\n}\n\nexport class Components_LazyView$1 extends Component {\n constructor(props) {\n super(props);\n }\n shouldComponentUpdate(nextProps, _nextState) {\n const this$ = this;\n return !(this$.props).equal((this$.props).model, nextProps.model);\n }\n render() {\n const this$ = this;\n return (this$.props).render();\n }\n}\n\nexport function Components_LazyView$1_$reflection(gen0) {\n return class_type(\"Elmish.React.Components.LazyView`1\", [gen0], Components_LazyView$1, class_type(\"Fable.React.Component`2\", [LazyProps$1_$reflection(gen0), obj_type], Component));\n}\n\nexport function Components_LazyView$1_$ctor_Z7829D94B(props) {\n return new Components_LazyView$1(props);\n}\n\n/**\n * Avoid rendering the view unless the model has changed.\n * equal: function to compare the previous and the new states\n * view: function to render the model\n * state: new state to render\n */\nexport function Common_lazyViewWith(equal, view, state) {\n const props = new LazyProps$1(state, () => view(state), equal);\n return react.createElement(Components_LazyView$1, props);\n}\n\n/**\n * Avoid rendering the view unless the model has changed.\n * equal: function to compare the previous and the new states\n * view: function to render the model using the dispatch\n * state: new state to render\n * dispatch: dispatch function\n */\nexport function Common_lazyView2With(equal, view, state, dispatch) {\n const props = new LazyProps$1(state, () => view(state, dispatch), equal);\n return react.createElement(Components_LazyView$1, props);\n}\n\n/**\n * Avoid rendering the view unless the model has changed.\n * equal: function to compare the previous and the new model (a tuple of two states)\n * view: function to render the model using the dispatch\n * state1: new state to render\n * state2: new state to render\n * dispatch: dispatch function\n */\nexport function Common_lazyView3With(equal, view, state1, state2, dispatch) {\n const props = new LazyProps$1([state1, state2], () => view(state1, state2, dispatch), equal);\n return react.createElement(Components_LazyView$1, props);\n}\n\n/**\n * Avoid rendering the view unless the model has changed.\n * view: function of model to render the view\n */\nexport function Common_lazyView(view) {\n return (state) => Common_lazyViewWith(equals, view, state);\n}\n\n/**\n * Avoid rendering the view unless the model has changed.\n * view: function of two arguments to render the model using the dispatch\n */\nexport function Common_lazyView2(view) {\n return (state) => ((dispatch) => Common_lazyView2With(equals, view, state, dispatch));\n}\n\n/**\n * Avoid rendering the view unless the model has changed.\n * view: function of three arguments to render the model using the dispatch\n */\nexport function Common_lazyView3(view) {\n return (state) => ((state_1) => ((dispatch) => Common_lazyView3With(equalArrays, view, state, state_1, dispatch)));\n}\n\n","import { Record } from \"../fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { bool_type, record_type, lambda_type, unit_type, tuple_type, class_type } from \"../fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { Component } from \"react\";\nimport * as react from \"react\";\n\nexport class ErrorBoundaryProps extends Record {\n constructor(Inner, ErrorComponent, OnError) {\n super();\n this.Inner = Inner;\n this.ErrorComponent = ErrorComponent;\n this.OnError = OnError;\n }\n}\n\nexport function ErrorBoundaryProps_$reflection() {\n return record_type(\"ReactErrorBoundary.ErrorBoundaryProps\", [], ErrorBoundaryProps, () => [[\"Inner\", class_type(\"Fable.React.ReactElement\", undefined)], [\"ErrorComponent\", class_type(\"Fable.React.ReactElement\", undefined)], [\"OnError\", lambda_type(tuple_type(class_type(\"System.Exception\"), class_type(\"ReactErrorBoundary.InfoComponentObject\")), unit_type)]]);\n}\n\nexport class ErrorBoundaryState extends Record {\n constructor(HasErrors) {\n super();\n this.HasErrors = HasErrors;\n }\n}\n\nexport function ErrorBoundaryState_$reflection() {\n return record_type(\"ReactErrorBoundary.ErrorBoundaryState\", [], ErrorBoundaryState, () => [[\"HasErrors\", bool_type]]);\n}\n\nexport class ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.state = (new ErrorBoundaryState(false));\n }\n componentDidCatch(error, info) {\n const this$ = this;\n const info_1 = info;\n (this$.props).OnError([error, info_1]);\n this$.setState((_arg, _arg_1) => (new ErrorBoundaryState(true)));\n }\n render() {\n const this$ = this;\n return (this$.state).HasErrors ? (this$.props).ErrorComponent : (this$.props).Inner;\n }\n}\n\nexport function ErrorBoundary_$reflection() {\n return class_type(\"ReactErrorBoundary.ErrorBoundary\", undefined, ErrorBoundary, class_type(\"Fable.React.Component`2\", [ErrorBoundaryProps_$reflection(), ErrorBoundaryState_$reflection()], Component));\n}\n\nexport function ErrorBoundary_$ctor_5B6311C4(props) {\n return new ErrorBoundary(props);\n}\n\nexport function renderCatchSimple(errorElement, element) {\n const props = new ErrorBoundaryProps(element, errorElement, (_arg) => {\n });\n return react.createElement(ErrorBoundary, props);\n}\n\nexport function renderCatchFn(onError, errorElement, element) {\n const props = new ErrorBoundaryProps(element, errorElement, onError);\n return react.createElement(ErrorBoundary, props);\n}\n\n","import { parse } from \"../fable-library-js.4.24.0/Int32.js\";\nimport * as react from \"react\";\nimport { ProgramModule_view, ProgramModule_withSetState } from \"../Fable.Elmish.4.2.0/program.fs.js\";\nimport { uncurry2 } from \"../fable-library-js.4.24.0/Util.js\";\nimport * as client from \"react-dom/client\";\nimport * as react_dom from \"react-dom\";\nimport { Common_lazyView2With } from \"./common.fs.js\";\n\nexport const Program_Internal_useRootApi = (() => {\n try {\n return parse(react.version.slice(undefined, 1 + 1), 511, false, 32) >= 18;\n }\n catch (matchValue) {\n return false;\n }\n})();\n\nexport function Program_Internal_withReactBatchedUsing(lazyView2With, placeholderId, program) {\n let lastRequest, root;\n return ProgramModule_withSetState(uncurry2((lastRequest = undefined, Program_Internal_useRootApi ? ((root = client.createRoot(document.getElementById(placeholderId)), (model) => ((dispatch) => {\n if (lastRequest != null) {\n const r = lastRequest;\n window.cancelAnimationFrame(r);\n }\n lastRequest = window.requestAnimationFrame((_arg) => {\n root.render(lazyView2With((x) => ((y) => (x === y)), ProgramModule_view(program), model, dispatch));\n });\n }))) : ((model_1) => ((dispatch_1) => {\n if (lastRequest != null) {\n const r_1 = lastRequest;\n window.cancelAnimationFrame(r_1);\n }\n lastRequest = window.requestAnimationFrame((_arg_1) => {\n react_dom.render(lazyView2With((x_1) => ((y_1) => (x_1 === y_1)), ProgramModule_view(program), model_1, dispatch_1), document.getElementById(placeholderId));\n });\n })))), program);\n}\n\nexport function Program_Internal_withReactSynchronousUsing(lazyView2With, placeholderId, program) {\n let root;\n return ProgramModule_withSetState(uncurry2(Program_Internal_useRootApi ? ((root = client.createRoot(document.getElementById(placeholderId)), (model) => ((dispatch) => {\n root.render(lazyView2With((x) => ((y) => (x === y)), ProgramModule_view(program), model, dispatch));\n }))) : ((model_1) => ((dispatch_1) => {\n react_dom.render(lazyView2With((x_1) => ((y_1) => (x_1 === y_1)), ProgramModule_view(program), model_1, dispatch_1), document.getElementById(placeholderId));\n }))), program);\n}\n\nexport function Program_Internal_withReactHydrateUsing(lazyView2With, placeholderId, program) {\n let root;\n return ProgramModule_withSetState(uncurry2(Program_Internal_useRootApi ? ((root = undefined, (model) => ((dispatch) => {\n if (root != null) {\n const root_1 = root;\n root_1.render(lazyView2With((x_1) => ((y_1) => (x_1 === y_1)), ProgramModule_view(program), model, dispatch));\n }\n else {\n root = client.hydrateRoot(document.getElementById(placeholderId), lazyView2With((x) => ((y) => (x === y)), ProgramModule_view(program), model, dispatch));\n }\n }))) : ((model_1) => ((dispatch_1) => {\n react_dom.hydrate(lazyView2With((x_2) => ((y_2) => (x_2 === y_2)), ProgramModule_view(program), model_1, dispatch_1), document.getElementById(placeholderId));\n }))), program);\n}\n\n/**\n * Renders React root component inside html element identified by placeholderId.\n * Uses `requestAnimationFrame` to batch updates to prevent drops in frame rate.\n * NOTE: This may have unexpected effects in React controlled inputs, see https://github.com/elmish/react/issues/12\n */\nexport function Program_withReactBatched(placeholderId, program) {\n return Program_Internal_withReactBatchedUsing((equal, view, state, dispatch) => Common_lazyView2With(uncurry2(equal), uncurry2(view), state, dispatch), placeholderId, program);\n}\n\n/**\n * Renders React root component inside html element identified by placeholderId.\n * New renders are triggered immediately after an update.\n */\nexport function Program_withReactSynchronous(placeholderId, program) {\n return Program_Internal_withReactSynchronousUsing((equal, view, state, dispatch) => Common_lazyView2With(uncurry2(equal), uncurry2(view), state, dispatch), placeholderId, program);\n}\n\n/**\n * Renders React root component inside html element identified by placeholderId using `React.hydrate`.\n */\nexport function Program_withReactHydrate(placeholderId, program) {\n return Program_Internal_withReactHydrateUsing((equal, view, state, dispatch) => Common_lazyView2With(uncurry2(equal), uncurry2(view), state, dispatch), placeholderId, program);\n}\n\n","import { Record, Union } from \"./fable_modules/fable-library-js.4.24.0/Types.js\";\nimport { view as view_11, Model_Default, update as update_3, init as init_9, Msg_$reflection as Msg_$reflection_3, Model_$reflection as Model_$reflection_1 } from \"./Pages/Index.js\";\nimport { view as view_7, update as update_4, init as init_2, Msg_$reflection as Msg_$reflection_5, Model_$reflection as Model_$reflection_2 } from \"./Pages/About.js\";\nimport { view as view_8, update as update_5, init as init_3, Msg_$reflection as Msg_$reflection_6, Model_$reflection as Model_$reflection_3 } from \"./Pages/ContactForm.js\";\nimport { view as view_10, update as update_2, init as init_1, Msg_$reflection as Msg_$reflection_4, Model_$reflection as Model_$reflection_4 } from \"./Pages/Login.js\";\nimport { view as view_9, update as update_6, init as init_4, Msg_$reflection as Msg_$reflection_7, Model_$reflection as Model_$reflection_5 } from \"./Pages/StaticPage.js\";\nimport { record_type, bool_type, int32_type, class_type, option_type, list_type, tuple_type, union_type } from \"./fable_modules/fable-library-js.4.24.0/Reflection.js\";\nimport { ViewProfile_view, AddEditProfile_view, AddEditProfile_update, ViewProfile_update, AddEditProfile_initEdit, AddEditProfile_initNew, ViewProfile_init, AddEditProfile_Msg_$reflection, ViewProfile_Msg_$reflection, AddEditProfile_Model_$reflection, ViewProfile_Model_$reflection } from \"./Pages/MyProfile.js\";\nimport { view as view_2, update as update_7, init as init_5, Msg_$reflection as Msg_$reflection_8, Model_$reflection as Model_$reflection_6 } from \"./modules/Omnicv.Diary.Client/Pages/MainDiaryView.js\";\nimport { view as view_3, update as update_8, SearchType, init as init_6, Msg_$reflection as Msg_$reflection_9, Model_$reflection as Model_$reflection_7 } from \"./modules/Omnicv.Diary.Client/Pages/SearchDiaryView.js\";\nimport { InteractionRecord_$reflection, ReviewRecord_$reflection, DiaryRecord_$reflection } from \"./modules/Omnicv.Diary.Shared/Data.js\";\nimport { EditHelperData$1_$reflection } from \"./modules/Omnicv.Diary.Shared/DiaryAPI.js\";\nimport { Msg$2, Model$2__IsEditing, Msg$2_$reflection, Model$2_$reflection } from \"./Omnicv.Client.Common/Components/AddEditRecordFlexFormBase.js\";\nimport { TemperatureRecord_$reflection, BloodPressureRecord_$reflection, BodilyFunctionsRecord_$reflection, WeightRecord_$reflection, UnifiedRecord_$reflection } from \"./Omnicv.Shared/PhysicalAPI.js\";\nimport { Msg$1_$reflection, Model$1_$reflection } from \"./Omnicv.Client.Common/Components/ViewRecords.js\";\nimport { EventInfo_$reflection } from \"./Omnicv.Shared.Common/CoreEventInfo.js\";\nimport { Main_view, Main_update, Main_init, Msg_$reflection as Msg_$reflection_10, Model_$reflection as Model_$reflection_8 } from \"./Pages/Financial/MainFinancialView.js\";\nimport { view as view_4, update as update_9, init as init_7, Msg_$reflection as Msg_$reflection_11, Model_$reflection as Model_$reflection_9 } from \"./Pages/Financial/ViewAsset.js\";\nimport { view as view_5, update as update_10, init as init_8, Msg_$reflection as Msg_$reflection_12, Model_$reflection as Model_$reflection_10 } from \"./Pages/Financial/ViewAssetsSummary.js\";\nimport { ExerciseRecord_view, Exercise_view, Workout_view, TrainingPlan_view, Main_view as Main_view_1, ExerciseRecord_update, Exercise_update, Workout_update, TrainingPlan_update, Main_update as Main_update_1, ExerciseRecord_init, Exercise_init, Workout_init, TrainingPlan_init, Main_init as Main_init_1, ExerciseRecord_Msg_$reflection, Msg$2_$reflection as Msg$2_$reflection_1, Main_Msg_$reflection, ExerciseRecord_Model_$reflection, Model$2_$reflection as Model$2_$reflection_1, Main_Model_$reflection } from \"./Pages/Fitness/MainFitnessView.js\";\nimport { WorkoutRecord, WorkoutRecord_$reflection, ExerciseRecord_$reflection, WorkoutRecords_$reflection, FitnessEditHelperData_$reflection, TrainingPlan_$reflection, TrainingPlanWorkoutRecords_$reflection, Exercise_$reflection, Workout_$reflection } from \"./Omnicv.Shared/FitnessAPI.js\";\nimport { Exercises_view, Workouts_view, Exercises_update, Workouts_update, Exercises_init, Workouts_init, Msg$1_$reflection as Msg$1_$reflection_1, Model$1_$reflection as Model$1_$reflection_1 } from \"./Pages/Fitness/FitnessEntriesView.js\";\nimport { SimpleFormView$2__Update, Msg$2_$reflection as Msg$2_$reflection_2, Model$2_$reflection as Model$2_$reflection_2 } from \"./Omnicv.Client.Common/Components/AddEditSimpleFlexFormBase.js\";\nimport { ExerciseRecordsMany_view, view as view_6, ExerciseRecordsMany_mapModelToEIMMsg, mapModelToEIMMsg, ExerciseRecordsMany_update, getSetTimerMsg, update as update_11, ExerciseRecordsMany_initNewMany, initEdit, initNew, ExerciseRecordsMany_MsgMany_$reflection, Msg_$reflection as Msg_$reflection_13, ExerciseRecordsMany_ModelMany_$reflection, Model_$reflection as Model_$reflection_11 } from \"./Pages/Fitness/AddEditExerciseRecord.js\";\nimport { RouteModule_routeParser, Route, Route_$reflection } from \"./Omnicv.Client.Common/Router.js\";\nimport { view as view_12, init as init_10, LogInState, update as update_1, Msg as Msg_1, Model_$reflection as Model_$reflection_12, Msg_$reflection as Msg_$reflection_1 } from \"./Components/Navigation.js\";\nimport { Response_AvailableUserInfo_$reflection } from \"./Omnicv.Shared/API.js\";\nimport { subscribeLocation as subscribeLocation_1, Msg_$reflection as Msg_$reflection_2 } from \"./Omnicv.Client.Common/Components/EventInfoManager.js\";\nimport { Session__GetCurrentProfile, Session_get_Default, Session, Session__SetActiveWorkoutRecord_Z2D8A2414, Session__UpdateCurrentProvile, Session__GetActiveWorkoutRecord, Session_$reflection } from \"./Omnicv.Client.Common/SharedView.js\";\nimport { some, value as value_15, map } from \"./fable_modules/fable-library-js.4.24.0/Option.js\";\nimport { Cmd_batch, Cmd_map, Cmd_none } from \"./fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { DiaryEditingView$1__View, DiaryEditingView$1__Update, interactionEditing, reviewEditing, DiaryEditingView$1__InitEdit, diaryEditing, DiaryEditingView$1__InitNew } from \"./modules/Omnicv.Diary.Client/Pages/AddEditDiaryView.js\";\nimport { WeightView_viewList, BodilyFunctionsView_viewList, PhysicalView_view, WeightView_update, BodilyFunctionsView_update, PhysicalView_update, WeightView_init, BodilyFunctionsView_init, PhysicalView_init } from \"./Pages/Physical/MainPhysicalView.js\";\nimport { Physical_PhysicalView$1__View, Physical_PhysicalView$1__Update, Physical_temperatureEditing, Physical_bodilyFunctionsEditing, Physical_bloodPressureEditing, Physical_PhysicalView$1__InitEdit, Physical_weightEditing, Physical_PhysicalView$1__InitNew_5D846BF8 } from \"./Pages/Physical/AddEditPhysicalView.js\";\nimport { AddEditFitnessView$1__View, exerciseEditing, workoutEditing, AddEditFitnessView$1__InitEdit, trainingPlanEditing, AddEditFitnessView$1__InitNew_5D846BF8 } from \"./Pages/Fitness/AddEditFitnessView.js\";\nimport { Workout_WorkoutEditView__View, Workout_WorkoutEditView__Update, Workout_WorkoutEditView__InitEdit, workoutRecordEditor, Workout_WorkoutEditView__InitNew } from \"./Pages/Fitness/AddEditWorkoutRecord.js\";\nimport { empty, ofArray, singleton } from \"./fable_modules/fable-library-js.4.24.0/List.js\";\nimport { createObj, uncurry2, equals } from \"./fable_modules/fable-library-js.4.24.0/Util.js\";\nimport { Cmd_OfAsync_start, Cmd_OfAsyncWith_either } from \"./fable_modules/Fable.Elmish.4.2.0/cmd.fs.js\";\nimport { anonService } from \"./Omnicv.Client.Common/CommonServer.js\";\nimport * as common from \"../src/javascript/common.js\";\nimport { box$0027 } from \"./fable_modules/Fulma.3.0.0/Elements/Box.fs.js\";\nimport { Common_lazyView2 } from \"./fable_modules/Fable.Elmish.React.4.0.0/common.fs.js\";\nimport { createElement } from \"react\";\nimport { reactApi } from \"./fable_modules/Feliz.2.9.0/Interop.fs.js\";\nimport { Router_href } from \"./Omnicv.Client.Common/Router.js\";\nimport { Helpers_combineClasses } from \"./fable_modules/Feliz.Bulma.3.0.0/ElementBuilders.fs.js\";\nimport { singleton as singleton_1, append, delay, toList } from \"./fable_modules/fable-library-js.4.24.0/Seq.js\";\nimport { renderCatchSimple } from \"./Omnicv.Client.Common/ReactErrorBoundary.js\";\nimport { footer } from \"./fable_modules/Fulma.3.0.0/Layouts/Footer.fs.js\";\nimport { Option, content } from \"./fable_modules/Fulma.3.0.0/Elements/Content.fs.js\";\nimport { Modifier_IModifier, TextAlignment_Option, Screen } from \"./fable_modules/Fulma.3.0.0/Common.fs.js\";\nimport { ProgramModule_mkProgram, ProgramModule_withSubscription, ProgramModule_run } from \"./fable_modules/Fable.Elmish.4.2.0/program.fs.js\";\nimport { Program_withReactSynchronous } from \"./fable_modules/Fable.Elmish.React.4.0.0/react.fs.js\";\nimport { ProgramModule_toNavigable } from \"./fable_modules/Fable.Elmish.Browser.4.0.3/navigation.fs.js\";\nimport { parseHash } from \"./fable_modules/Fable.Elmish.Browser.4.0.3/parser.fs.js\";\n\nexport function Tuple_mapFirst(f, x, y) {\n return [f(x), y];\n}\n\nexport function Tuple_mapSecond(f, x, y) {\n return [x, f(y)];\n}\n\nexport class AnonymousPage extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Index\", \"NotFound\", \"About\", \"ContactForm\", \"Login\", \"StaticPage\"];\n }\n}\n\nexport function AnonymousPage_$reflection() {\n return union_type(\"Omnicv.Client.App.AnonymousPage\", [], AnonymousPage, () => [[[\"Item\", Model_$reflection_1()]], [], [[\"Item\", Model_$reflection_2()]], [[\"Item\", Model_$reflection_3()]], [[\"Item\", Model_$reflection_4()]], [[\"Item\", Model_$reflection_5()]]]);\n}\n\nexport class SessionPage extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"MyProfile\", \"AddEditProfile\", \"ViewDiary\", \"SearchDiary\", \"AddEditDiary\", \"AddEditReview\", \"AddEditInteraction\", \"ViewPhysical\", \"ViewWeight\", \"ViewBodilyFunctions\", \"AddEditWeight\", \"AddEditBloodPressure\", \"AddEditBodilyFunctions\", \"AddEditTemperature\", \"ViewFinancial\", \"ViewAsset\", \"ViewAssetsSummary\", \"ViewFitness\", \"ViewWorkouts\", \"ViewExercises\", \"ViewTrainingPlan\", \"AddEditTrainingPlan\", \"ViewWorkout\", \"AddEditWorkout\", \"ViewExercise\", \"AddEditExercise\", \"ViewExerciseRecord\", \"AddEditExerciseRecord\", \"AddAllWorkoutExerciseRecords\", \"AddEditWorkoutRecord\"];\n }\n}\n\nexport function SessionPage_$reflection() {\n return union_type(\"Omnicv.Client.App.SessionPage\", [], SessionPage, () => [[[\"Item\", ViewProfile_Model_$reflection()]], [[\"Item\", AddEditProfile_Model_$reflection()]], [[\"Item\", Model_$reflection_6()]], [[\"Item\", Model_$reflection_7()]], [[\"Item\", Model$2_$reflection(DiaryRecord_$reflection(), EditHelperData$1_$reflection(DiaryRecord_$reflection()))]], [[\"Item\", Model$2_$reflection(ReviewRecord_$reflection(), EditHelperData$1_$reflection(ReviewRecord_$reflection()))]], [[\"Item\", Model$2_$reflection(InteractionRecord_$reflection(), EditHelperData$1_$reflection(InteractionRecord_$reflection()))]], [[\"Item\", Model$1_$reflection(UnifiedRecord_$reflection())]], [[\"Item\", Model$1_$reflection(WeightRecord_$reflection())]], [[\"Item\", Model$1_$reflection(BodilyFunctionsRecord_$reflection())]], [[\"Item\", Model$2_$reflection(WeightRecord_$reflection(), list_type(tuple_type(EventInfo_$reflection(), WeightRecord_$reflection())))]], [[\"Item\", Model$2_$reflection(BloodPressureRecord_$reflection(), list_type(tuple_type(EventInfo_$reflection(), BloodPressureRecord_$reflection())))]], [[\"Item\", Model$2_$reflection(BodilyFunctionsRecord_$reflection(), list_type(tuple_type(EventInfo_$reflection(), BodilyFunctionsRecord_$reflection())))]], [[\"Item\", Model$2_$reflection(TemperatureRecord_$reflection(), list_type(tuple_type(EventInfo_$reflection(), TemperatureRecord_$reflection())))]], [[\"Item\", Model_$reflection_8()]], [[\"Item\", Model_$reflection_9()]], [[\"Item\", Model_$reflection_10()]], [[\"Item\", Main_Model_$reflection()]], [[\"Item\", Model$1_$reflection_1(Workout_$reflection())]], [[\"Item\", Model$1_$reflection_1(Exercise_$reflection())]], [[\"Item\", Model$2_$reflection_1(TrainingPlanWorkoutRecords_$reflection(), Workout_$reflection())]], [[\"Item\", Model$2_$reflection_2(TrainingPlan_$reflection(), FitnessEditHelperData_$reflection())]], [[\"Item\", Model$2_$reflection_1(WorkoutRecords_$reflection(), Exercise_$reflection())]], [[\"Item\", Model$2_$reflection_2(Workout_$reflection(), FitnessEditHelperData_$reflection())]], [[\"Item\", Model$2_$reflection_1(Exercise_$reflection(), tuple_type(EventInfo_$reflection(), ExerciseRecord_$reflection()))]], [[\"Item\", Model$2_$reflection_2(Exercise_$reflection(), FitnessEditHelperData_$reflection())]], [[\"Item\", ExerciseRecord_Model_$reflection()]], [[\"Item\", Model_$reflection_11()]], [[\"Item\", ExerciseRecordsMany_ModelMany_$reflection()]], [[\"Item\", Model$2_$reflection(WorkoutRecord_$reflection(), WorkoutRecords_$reflection())]]]);\n}\n\nexport class Page extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Anon\", \"Auth\"];\n }\n}\n\nexport function Page_$reflection() {\n return union_type(\"Omnicv.Client.App.Page\", [], Page, () => [[[\"Item\", AnonymousPage_$reflection()]], [[\"Item\", SessionPage_$reflection()]]]);\n}\n\nexport class Msg extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"SetRoute\", \"SetRouteValue\", \"NavigationMsg\", \"TimeTick\", \"RefreshSession\", \"SessionRefreshed\", \"SetCurrentProfile\", \"SessionRefreshError\", \"AppEIMMsg\", \"IndexMsg\", \"LoginMsg\", \"AboutMsg\", \"ContactFormMsg\", \"StaticPageMsg\", \"MyProfileMsg\", \"AddEditProfileMsg\", \"ViewDiaryMsg\", \"AddEditDiaryMsg\", \"AddEditReviewMsg\", \"AddEditInteractionMsg\", \"SearchDiaryMsg\", \"ViewPhysicalMsg\", \"ViewBodilyFunctionsMsg\", \"ViewWeightMsg\", \"AddEditWeightMsg\", \"AddEditBloodPressureMsg\", \"AddEditBodilyFunctionsMsg\", \"AddEditTemperatureMsg\", \"ViewFinancialMsg\", \"ViewAssetMsg\", \"ViewAssetsSummaryMsg\", \"ViewFitnessMsg\", \"ViewWorkoutsMsg\", \"ViewExercisesMsg\", \"ViewTrainingPlanMsg\", \"AddEditTrainingPlanMsg\", \"ViewWorkoutMsg\", \"AddEditWorkoutMsg\", \"ViewExerciseMsg\", \"AddEditExerciseMsg\", \"ViewExerciseRecordMsg\", \"AddEditExerciseRecordMsg\", \"AddAllWorkoutExerciseRecordsMsg\", \"AddEditWorkoutRecordMsg\"];\n }\n}\n\nexport function Msg_$reflection() {\n return union_type(\"Omnicv.Client.App.Msg\", [], Msg, () => [[[\"Item\", option_type(Route_$reflection())]], [[\"Item\", Route_$reflection()]], [[\"Item\", Msg_$reflection_1()]], [[\"Item\", class_type(\"System.DateTime\")]], [], [[\"Item\", Response_AvailableUserInfo_$reflection()]], [[\"Item\", int32_type]], [[\"Item\", class_type(\"System.Exception\")]], [[\"Item\", Msg_$reflection_2()]], [[\"Item\", Msg_$reflection_3()]], [[\"Item\", Msg_$reflection_4()]], [[\"Item\", Msg_$reflection_5()]], [[\"Item\", Msg_$reflection_6()]], [[\"Item\", Msg_$reflection_7()]], [[\"Item\", ViewProfile_Msg_$reflection()]], [[\"Item\", AddEditProfile_Msg_$reflection()]], [[\"Item\", Msg_$reflection_8()]], [[\"Item\", Msg$2_$reflection(DiaryRecord_$reflection(), EditHelperData$1_$reflection(DiaryRecord_$reflection()))]], [[\"Item\", Msg$2_$reflection(ReviewRecord_$reflection(), EditHelperData$1_$reflection(ReviewRecord_$reflection()))]], [[\"Item\", Msg$2_$reflection(InteractionRecord_$reflection(), EditHelperData$1_$reflection(InteractionRecord_$reflection()))]], [[\"Item\", Msg_$reflection_9()]], [[\"Item\", Msg$1_$reflection(UnifiedRecord_$reflection())]], [[\"Item\", Msg$1_$reflection(BodilyFunctionsRecord_$reflection())]], [[\"Item\", Msg$1_$reflection(WeightRecord_$reflection())]], [[\"Item\", Msg$2_$reflection(WeightRecord_$reflection(), list_type(tuple_type(EventInfo_$reflection(), WeightRecord_$reflection())))]], [[\"Item\", Msg$2_$reflection(BloodPressureRecord_$reflection(), list_type(tuple_type(EventInfo_$reflection(), BloodPressureRecord_$reflection())))]], [[\"Item\", Msg$2_$reflection(BodilyFunctionsRecord_$reflection(), list_type(tuple_type(EventInfo_$reflection(), BodilyFunctionsRecord_$reflection())))]], [[\"Item\", Msg$2_$reflection(TemperatureRecord_$reflection(), list_type(tuple_type(EventInfo_$reflection(), TemperatureRecord_$reflection())))]], [[\"Item\", Msg_$reflection_10()]], [[\"Item\", Msg_$reflection_11()]], [[\"Item\", Msg_$reflection_12()]], [[\"Item\", Main_Msg_$reflection()]], [[\"Item\", Msg$1_$reflection_1(Workout_$reflection())]], [[\"Item\", Msg$1_$reflection_1(Exercise_$reflection())]], [[\"Item\", Msg$2_$reflection_1(TrainingPlanWorkoutRecords_$reflection(), Workout_$reflection())]], [[\"Item\", Msg$2_$reflection_2(TrainingPlan_$reflection(), FitnessEditHelperData_$reflection())]], [[\"Item\", Msg$2_$reflection_1(WorkoutRecords_$reflection(), Exercise_$reflection())]], [[\"Item\", Msg$2_$reflection_2(Workout_$reflection(), FitnessEditHelperData_$reflection())]], [[\"Item\", Msg$2_$reflection_1(Exercise_$reflection(), tuple_type(EventInfo_$reflection(), ExerciseRecord_$reflection()))]], [[\"Item\", Msg$2_$reflection_2(Exercise_$reflection(), FitnessEditHelperData_$reflection())]], [[\"Item\", ExerciseRecord_Msg_$reflection()]], [[\"Item\", Msg_$reflection_13()]], [[\"Item\", ExerciseRecordsMany_MsgMany_$reflection()]], [[\"Item\", Msg$2_$reflection(WorkoutRecord_$reflection(), WorkoutRecords_$reflection())]]]);\n}\n\nexport class Model extends Record {\n constructor(CurrentRoute, ActivePage, NavigationModel, Session, SessionLoading, LastSessionRefresh) {\n super();\n this.CurrentRoute = CurrentRoute;\n this.ActivePage = ActivePage;\n this.NavigationModel = NavigationModel;\n this.Session = Session;\n this.SessionLoading = SessionLoading;\n this.LastSessionRefresh = LastSessionRefresh;\n }\n}\n\nexport function Model_$reflection() {\n return record_type(\"Omnicv.Client.App.Model\", [], Model, () => [[\"CurrentRoute\", option_type(Route_$reflection())], [\"ActivePage\", Page_$reflection()], [\"NavigationModel\", Model_$reflection_12()], [\"Session\", Session_$reflection()], [\"SessionLoading\", bool_type], [\"LastSessionRefresh\", class_type(\"System.DateTime\")]]);\n}\n\nexport function Model__NeedsTimer(this$) {\n const activeWorkout = map((tuple) => tuple[1], Session__GetActiveWorkoutRecord(this$.Session));\n if ((activeWorkout != null) && (value_15(activeWorkout).FinishTime == null)) {\n return true;\n }\n else {\n return this$.NavigationModel.CurrentTimerExpiry != null;\n }\n}\n\nfunction setRouteValue(route, model) {\n switch (route.tag) {\n case 1:\n return [new Model(model.CurrentRoute, new Page(0, [new AnonymousPage(1, [])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_none()];\n case 3: {\n const patternInput_1 = init_1();\n return [new Model(model.CurrentRoute, new Page(0, [new AnonymousPage(4, [patternInput_1[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_1) => (new Msg(10, [Item_1])), patternInput_1[1])];\n }\n case 2: {\n const patternInput_2 = init_2(model.Session);\n return [new Model(model.CurrentRoute, new Page(0, [new AnonymousPage(2, [patternInput_2[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_2) => (new Msg(11, [Item_2])), patternInput_2[1])];\n }\n case 8: {\n const patternInput_3 = init_3(model.Session);\n return [new Model(model.CurrentRoute, new Page(0, [new AnonymousPage(3, [patternInput_3[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_3) => (new Msg(12, [Item_3])), patternInput_3[1])];\n }\n case 7: {\n const patternInput_4 = init_4(route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(0, [new AnonymousPage(5, [patternInput_4[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_4) => (new Msg(13, [Item_4])), patternInput_4[1])];\n }\n case 4: {\n const patternInput_5 = ViewProfile_init(model.Session);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(0, [patternInput_5[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_5) => (new Msg(14, [Item_5])), patternInput_5[1])];\n }\n case 5: {\n const patternInput_6 = AddEditProfile_initNew();\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(1, [patternInput_6[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_6) => (new Msg(15, [Item_6])), patternInput_6[1])];\n }\n case 6: {\n const patternInput_7 = AddEditProfile_initEdit(route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(1, [patternInput_7[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_7) => (new Msg(15, [Item_7])), patternInput_7[1])];\n }\n case 9: {\n const patternInput_8 = init_5(route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(2, [patternInput_8[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_8) => (new Msg(16, [Item_8])), patternInput_8[1])];\n }\n case 10: {\n const patternInput_9 = DiaryEditingView$1__InitNew(diaryEditing, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(4, [patternInput_9[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_9) => (new Msg(17, [Item_9])), patternInput_9[1])];\n }\n case 11: {\n const patternInput_10 = DiaryEditingView$1__InitEdit(diaryEditing, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(4, [patternInput_10[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_10) => (new Msg(17, [Item_10])), patternInput_10[1])];\n }\n case 12: {\n const patternInput_11 = DiaryEditingView$1__InitNew(reviewEditing, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(5, [patternInput_11[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_11) => (new Msg(18, [Item_11])), patternInput_11[1])];\n }\n case 13: {\n const patternInput_12 = DiaryEditingView$1__InitEdit(reviewEditing, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(5, [patternInput_12[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_12) => (new Msg(18, [Item_12])), patternInput_12[1])];\n }\n case 14: {\n const patternInput_13 = DiaryEditingView$1__InitNew(interactionEditing, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(6, [patternInput_13[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_13) => (new Msg(19, [Item_13])), patternInput_13[1])];\n }\n case 15: {\n const patternInput_14 = DiaryEditingView$1__InitEdit(interactionEditing, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(6, [patternInput_14[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_14) => (new Msg(19, [Item_14])), patternInput_14[1])];\n }\n case 16: {\n const patternInput_15 = init_6(model.Session, new SearchType(0, [route.fields[0]]));\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(3, [patternInput_15[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_15) => (new Msg(20, [Item_15])), patternInput_15[1])];\n }\n case 17: {\n const patternInput_16 = init_6(model.Session, new SearchType(1, []));\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(3, [patternInput_16[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_16) => (new Msg(20, [Item_16])), patternInput_16[1])];\n }\n case 18: {\n const patternInput_17 = PhysicalView_init();\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(7, [patternInput_17[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_17) => (new Msg(21, [Item_17])), patternInput_17[1])];\n }\n case 19: {\n const patternInput_18 = BodilyFunctionsView_init();\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(9, [patternInput_18[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_18) => (new Msg(22, [Item_18])), patternInput_18[1])];\n }\n case 20: {\n const patternInput_19 = WeightView_init();\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(8, [patternInput_19[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_19) => (new Msg(23, [Item_19])), patternInput_19[1])];\n }\n case 21: {\n const patternInput_20 = Physical_PhysicalView$1__InitNew_5D846BF8(Physical_weightEditing, model.Session);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(10, [patternInput_20[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_20) => (new Msg(24, [Item_20])), patternInput_20[1])];\n }\n case 22: {\n const patternInput_21 = Physical_PhysicalView$1__InitEdit(Physical_weightEditing, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(10, [patternInput_21[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_21) => (new Msg(24, [Item_21])), patternInput_21[1])];\n }\n case 25: {\n const patternInput_22 = Physical_PhysicalView$1__InitNew_5D846BF8(Physical_bloodPressureEditing, model.Session);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(11, [patternInput_22[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_22) => (new Msg(25, [Item_22])), patternInput_22[1])];\n }\n case 26: {\n const patternInput_23 = Physical_PhysicalView$1__InitEdit(Physical_bloodPressureEditing, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(11, [patternInput_23[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_23) => (new Msg(25, [Item_23])), patternInput_23[1])];\n }\n case 23: {\n const patternInput_24 = Physical_PhysicalView$1__InitNew_5D846BF8(Physical_bodilyFunctionsEditing, model.Session);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(12, [patternInput_24[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_24) => (new Msg(26, [Item_24])), patternInput_24[1])];\n }\n case 24: {\n const patternInput_25 = Physical_PhysicalView$1__InitEdit(Physical_bodilyFunctionsEditing, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(12, [patternInput_25[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_25) => (new Msg(26, [Item_25])), patternInput_25[1])];\n }\n case 27: {\n const patternInput_26 = Physical_PhysicalView$1__InitNew_5D846BF8(Physical_temperatureEditing, model.Session);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(13, [patternInput_26[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_26) => (new Msg(27, [Item_26])), patternInput_26[1])];\n }\n case 28: {\n const patternInput_27 = Physical_PhysicalView$1__InitEdit(Physical_temperatureEditing, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(13, [patternInput_27[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_27) => (new Msg(27, [Item_27])), patternInput_27[1])];\n }\n case 29: {\n const patternInput_28 = Main_init();\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(14, [patternInput_28[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_28) => (new Msg(28, [Item_28])), patternInput_28[1])];\n }\n case 30: {\n const patternInput_29 = init_7(route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(15, [patternInput_29[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_29) => (new Msg(29, [Item_29])), patternInput_29[1])];\n }\n case 31: {\n const patternInput_30 = init_8();\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(16, [patternInput_30[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_30) => (new Msg(30, [Item_30])), patternInput_30[1])];\n }\n case 32: {\n const patternInput_31 = Main_init_1();\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(17, [patternInput_31[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_31) => (new Msg(31, [Item_31])), patternInput_31[1])];\n }\n case 39: {\n const patternInput_32 = Workouts_init();\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(18, [patternInput_32[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_32) => (new Msg(32, [Item_32])), patternInput_32[1])];\n }\n case 43: {\n const patternInput_33 = Exercises_init();\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(19, [patternInput_33[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_33) => (new Msg(33, [Item_33])), patternInput_33[1])];\n }\n case 35: {\n const patternInput_34 = TrainingPlan_init(route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(20, [patternInput_34[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_34) => (new Msg(34, [Item_34])), patternInput_34[1])];\n }\n case 33: {\n const patternInput_35 = AddEditFitnessView$1__InitNew_5D846BF8(trainingPlanEditing, model.Session);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(21, [patternInput_35[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_35) => (new Msg(35, [Item_35])), patternInput_35[1])];\n }\n case 34: {\n const patternInput_36 = AddEditFitnessView$1__InitEdit(trainingPlanEditing, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(21, [patternInput_36[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_36) => (new Msg(35, [Item_36])), patternInput_36[1])];\n }\n case 38: {\n const patternInput_37 = Workout_init(route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(22, [patternInput_37[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_37) => (new Msg(36, [Item_37])), patternInput_37[1])];\n }\n case 36: {\n const patternInput_38 = AddEditFitnessView$1__InitNew_5D846BF8(workoutEditing, model.Session);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(23, [patternInput_38[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_38) => (new Msg(37, [Item_38])), patternInput_38[1])];\n }\n case 37: {\n const patternInput_39 = AddEditFitnessView$1__InitEdit(workoutEditing, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(23, [patternInput_39[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_39) => (new Msg(37, [Item_39])), patternInput_39[1])];\n }\n case 42: {\n const patternInput_40 = Exercise_init(route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(24, [patternInput_40[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_40) => (new Msg(38, [Item_40])), patternInput_40[1])];\n }\n case 40: {\n const patternInput_41 = AddEditFitnessView$1__InitNew_5D846BF8(exerciseEditing, model.Session);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(25, [patternInput_41[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_41) => (new Msg(39, [Item_41])), patternInput_41[1])];\n }\n case 41: {\n const patternInput_42 = AddEditFitnessView$1__InitEdit(exerciseEditing, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(25, [patternInput_42[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_42) => (new Msg(39, [Item_42])), patternInput_42[1])];\n }\n case 44: {\n const patternInput_43 = ExerciseRecord_init(route.fields[0], route.fields[1]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(26, [patternInput_43[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_43) => (new Msg(40, [Item_43])), patternInput_43[1])];\n }\n case 45: {\n const patternInput_44 = initNew(model.Session, route.fields[0], route.fields[1], route.fields[2]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(27, [patternInput_44[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_44) => (new Msg(41, [Item_44])), patternInput_44[1])];\n }\n case 46: {\n const patternInput_45 = initEdit(model.Session, route.fields[0], route.fields[1]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(27, [patternInput_45[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_45) => (new Msg(41, [Item_45])), patternInput_45[1])];\n }\n case 47: {\n const patternInput_46 = ExerciseRecordsMany_initNewMany(model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(28, [patternInput_46[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_46) => (new Msg(42, [Item_46])), patternInput_46[1])];\n }\n case 48: {\n const patternInput_47 = Workout_WorkoutEditView__InitNew(workoutRecordEditor, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(29, [patternInput_47[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_47) => (new Msg(43, [Item_47])), patternInput_47[1])];\n }\n case 49: {\n const patternInput_48 = Workout_WorkoutEditView__InitEdit(workoutRecordEditor, model.Session, route.fields[0]);\n return [new Model(model.CurrentRoute, new Page(1, [new SessionPage(29, [patternInput_48[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item_48) => (new Msg(43, [Item_48])), patternInput_48[1])];\n }\n default: {\n const patternInput = init_9(model.Session);\n return [new Model(model.CurrentRoute, new Page(0, [new AnonymousPage(0, [patternInput[0]])]), model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh), Cmd_batch(ofArray([Cmd_map((Item) => (new Msg(9, [Item])), patternInput[1]), singleton((dispatch) => {\n dispatch(new Msg(2, [new Msg_1(3, [model.Session])]));\n })]))];\n }\n }\n}\n\nfunction setRoute(optRoute, model) {\n const model_1 = new Model(optRoute, model.ActivePage, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh);\n if (optRoute != null) {\n return setRouteValue(optRoute, model_1);\n }\n else {\n return [new Model(model_1.CurrentRoute, new Page(0, [new AnonymousPage(1, [])]), model_1.NavigationModel, model_1.Session, model_1.SessionLoading, model_1.LastSessionRefresh), Cmd_none()];\n }\n}\n\nfunction refreshSession(newSession, model, forceRefresh) {\n let msg_1;\n Session__UpdateCurrentProvile(newSession);\n const newModel = new Model(model.CurrentRoute, model.ActivePage, model.NavigationModel, newSession, false, model.LastSessionRefresh);\n const cmd = singleton((dispatch) => {\n dispatch(new Msg(2, [new Msg_1(3, [newSession])]));\n });\n if (forceRefresh) {\n if (model.CurrentRoute != null) {\n return [newModel, Cmd_batch(ofArray([cmd, (msg_1 = (new Msg(1, [value_15(model.CurrentRoute)])), singleton((dispatch_1) => {\n dispatch_1(msg_1);\n }))]))];\n }\n else {\n return [newModel, cmd];\n }\n }\n else {\n return [newModel, cmd];\n }\n}\n\nfunction update(msg, model) {\n let bind$0040_1, bind$0040_2, userInfo;\n switch (msg.tag) {\n case 1:\n return setRouteValue(msg.fields[0], model);\n case 2: {\n const subMsg = msg.fields[0];\n const patternInput = update_1(model.Session, subMsg, model.NavigationModel);\n const subModel = patternInput[0];\n const updatedSession = (subMsg.tag === 8) ? Session__SetActiveWorkoutRecord_Z2D8A2414(model.Session, subMsg.fields[0]) : model.Session;\n return [new Model(model.CurrentRoute, model.ActivePage, subModel, equals(subModel.LogInState, new LogInState(2, [])) ? (new Session(false, undefined, updatedSession.CurrentProfile)) : updatedSession, model.SessionLoading, model.LastSessionRefresh), Cmd_map((Item) => (new Msg(2, [Item])), patternInput[1])];\n }\n case 3:\n if (model.Session.LoggedIn) {\n return [model, Cmd_map((Item_1) => (new Msg(2, [Item_1])), singleton((dispatch) => {\n dispatch(new Msg_1(4, [msg.fields[0]]));\n }))];\n }\n else {\n return [model, Cmd_none()];\n }\n case 10: {\n const matchValue = model.ActivePage;\n let matchResult, subModel_1;\n if (matchValue.tag === 0) {\n if (matchValue.fields[0].tag === 4) {\n matchResult = 0;\n subModel_1 = matchValue.fields[0].fields[0];\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n const patternInput_1 = update_2(msg.fields[0], subModel_1);\n const subModelRes = patternInput_1[0];\n const newSession_1 = (subModelRes.Response != null) ? (new Session(true, subModelRes.Response, model.Session.CurrentProfile)) : model.Session;\n let tupledArg_2;\n let tupledArg_1;\n const tupledArg = [subModelRes, patternInput_1[1]];\n tupledArg_1 = Tuple_mapFirst((arg) => (new Page(0, [new AnonymousPage(4, [arg])])), tupledArg[0], tupledArg[1]);\n tupledArg_2 = Tuple_mapFirst((page) => (new Model(model.CurrentRoute, page, model.NavigationModel, newSession_1, model.SessionLoading, model.LastSessionRefresh)), tupledArg_1[0], tupledArg_1[1]);\n return Tuple_mapSecond((cmd_4) => Cmd_map((Item_4) => (new Msg(10, [Item_4])), cmd_4), tupledArg_2[0], tupledArg_2[1]);\n }\n default: {\n console.log(some(`Login deciding to do nothing: model=${model}`));\n return [model, Cmd_none()];\n }\n }\n }\n case 9: {\n const matchValue_1 = model.ActivePage;\n let matchResult_1, subModel_2;\n if (matchValue_1.tag === 0) {\n if (matchValue_1.fields[0].tag === 0) {\n matchResult_1 = 0;\n subModel_2 = matchValue_1.fields[0].fields[0];\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n switch (matchResult_1) {\n case 0: {\n let tupledArg_5;\n let tupledArg_4;\n const tupledArg_3 = update_3(model.Session, msg.fields[0], subModel_2);\n tupledArg_4 = Tuple_mapFirst((arg_1) => (new Page(0, [new AnonymousPage(0, [arg_1])])), tupledArg_3[0], tupledArg_3[1]);\n tupledArg_5 = Tuple_mapFirst((page_1) => (new Model(model.CurrentRoute, page_1, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_4[0], tupledArg_4[1]);\n return Tuple_mapSecond((cmd_5) => Cmd_map((Item_7) => (new Msg(9, [Item_7])), cmd_5), tupledArg_5[0], tupledArg_5[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 11: {\n const matchValue_2 = model.ActivePage;\n let matchResult_2, subModel_3;\n if (matchValue_2.tag === 0) {\n if (matchValue_2.fields[0].tag === 2) {\n matchResult_2 = 0;\n subModel_3 = matchValue_2.fields[0].fields[0];\n }\n else {\n matchResult_2 = 1;\n }\n }\n else {\n matchResult_2 = 1;\n }\n switch (matchResult_2) {\n case 0: {\n let tupledArg_8;\n let tupledArg_7;\n const tupledArg_6 = update_4(msg.fields[0], subModel_3);\n tupledArg_7 = Tuple_mapFirst((arg_2) => (new Page(0, [new AnonymousPage(2, [arg_2])])), tupledArg_6[0], tupledArg_6[1]);\n tupledArg_8 = Tuple_mapFirst((page_2) => (new Model(model.CurrentRoute, page_2, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_7[0], tupledArg_7[1]);\n return Tuple_mapSecond((cmd_6) => Cmd_map((Item_10) => (new Msg(11, [Item_10])), cmd_6), tupledArg_8[0], tupledArg_8[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 12: {\n const matchValue_3 = model.ActivePage;\n let matchResult_3, subModel_4;\n if (matchValue_3.tag === 0) {\n if (matchValue_3.fields[0].tag === 3) {\n matchResult_3 = 0;\n subModel_4 = matchValue_3.fields[0].fields[0];\n }\n else {\n matchResult_3 = 1;\n }\n }\n else {\n matchResult_3 = 1;\n }\n switch (matchResult_3) {\n case 0: {\n let tupledArg_11;\n let tupledArg_10;\n const tupledArg_9 = update_5(model.Session, msg.fields[0], subModel_4);\n tupledArg_10 = Tuple_mapFirst((arg_3) => (new Page(0, [new AnonymousPage(3, [arg_3])])), tupledArg_9[0], tupledArg_9[1]);\n tupledArg_11 = Tuple_mapFirst((page_3) => (new Model(model.CurrentRoute, page_3, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_10[0], tupledArg_10[1]);\n return Tuple_mapSecond((cmd_7) => Cmd_map((Item_13) => (new Msg(12, [Item_13])), cmd_7), tupledArg_11[0], tupledArg_11[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 13: {\n const matchValue_4 = model.ActivePage;\n let matchResult_4, subModel_5;\n if (matchValue_4.tag === 0) {\n if (matchValue_4.fields[0].tag === 5) {\n matchResult_4 = 0;\n subModel_5 = matchValue_4.fields[0].fields[0];\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n switch (matchResult_4) {\n case 0: {\n let tupledArg_14;\n let tupledArg_13;\n const tupledArg_12 = update_6(msg.fields[0], subModel_5);\n tupledArg_13 = Tuple_mapFirst((arg_4) => (new Page(0, [new AnonymousPage(5, [arg_4])])), tupledArg_12[0], tupledArg_12[1]);\n tupledArg_14 = Tuple_mapFirst((page_4) => (new Model(model.CurrentRoute, page_4, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_13[0], tupledArg_13[1]);\n return Tuple_mapSecond((cmd_8) => Cmd_map((Item_16) => (new Msg(13, [Item_16])), cmd_8), tupledArg_14[0], tupledArg_14[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 14: {\n const subMsg_6 = msg.fields[0];\n const matchValue_5 = model.ActivePage;\n let matchResult_5, subModel_6;\n if (matchValue_5.tag === 1) {\n if (matchValue_5.fields[0].tag === 0) {\n matchResult_5 = 0;\n subModel_6 = matchValue_5.fields[0].fields[0];\n }\n else {\n matchResult_5 = 1;\n }\n }\n else {\n matchResult_5 = 1;\n }\n switch (matchResult_5) {\n case 0: {\n let patternInput_2;\n let tupledArg_17;\n let tupledArg_16;\n const tupledArg_15 = ViewProfile_update(subMsg_6, subModel_6);\n tupledArg_16 = Tuple_mapFirst((arg_5) => (new Page(1, [new SessionPage(0, [arg_5])])), tupledArg_15[0], tupledArg_15[1]);\n tupledArg_17 = Tuple_mapFirst((page_5) => (new Model(model.CurrentRoute, page_5, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_16[0], tupledArg_16[1]);\n patternInput_2 = Tuple_mapSecond((cmd_9) => Cmd_map((Item_19) => (new Msg(14, [Item_19])), cmd_9), tupledArg_17[0], tupledArg_17[1]);\n const subModel1 = patternInput_2[0];\n const cmd_10 = patternInput_2[1];\n switch (subMsg_6.tag) {\n case 5:\n return [subModel1, Cmd_batch(ofArray([singleton((dispatch_1) => {\n dispatch_1(new Msg(6, [subMsg_6.fields[0]]));\n }), cmd_10]))];\n case 4:\n return [subModel1, Cmd_batch(ofArray([singleton((dispatch_2) => {\n dispatch_2(new Msg(4, []));\n }), cmd_10]))];\n default:\n return [subModel1, cmd_10];\n }\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 15: {\n const subMsg_7 = msg.fields[0];\n const matchValue_6 = model.ActivePage;\n let matchResult_6, subModel_7;\n if (matchValue_6.tag === 1) {\n if (matchValue_6.fields[0].tag === 1) {\n matchResult_6 = 0;\n subModel_7 = matchValue_6.fields[0].fields[0];\n }\n else {\n matchResult_6 = 1;\n }\n }\n else {\n matchResult_6 = 1;\n }\n switch (matchResult_6) {\n case 0: {\n let patternInput_3;\n let tupledArg_20;\n let tupledArg_19;\n const tupledArg_18 = AddEditProfile_update(subMsg_7, subModel_7);\n tupledArg_19 = Tuple_mapFirst((arg_6) => (new Page(1, [new SessionPage(1, [arg_6])])), tupledArg_18[0], tupledArg_18[1]);\n tupledArg_20 = Tuple_mapFirst((page_6) => (new Model(model.CurrentRoute, page_6, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_19[0], tupledArg_19[1]);\n patternInput_3 = Tuple_mapSecond((cmd_11) => Cmd_map((Item_22) => (new Msg(15, [Item_22])), cmd_11), tupledArg_20[0], tupledArg_20[1]);\n const subModel1_1 = patternInput_3[0];\n const cmd_12 = patternInput_3[1];\n switch (subMsg_7.tag) {\n case 3:\n case 4:\n return [subModel1_1, Cmd_batch(ofArray([singleton((dispatch_3) => {\n dispatch_3(new Msg(4, []));\n }), cmd_12]))];\n default:\n return [subModel1_1, cmd_12];\n }\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 16: {\n const matchValue_7 = model.ActivePage;\n let matchResult_7, subModel_8;\n if (matchValue_7.tag === 1) {\n if (matchValue_7.fields[0].tag === 2) {\n matchResult_7 = 0;\n subModel_8 = matchValue_7.fields[0].fields[0];\n }\n else {\n matchResult_7 = 1;\n }\n }\n else {\n matchResult_7 = 1;\n }\n switch (matchResult_7) {\n case 0: {\n let tupledArg_23;\n let tupledArg_22;\n const tupledArg_21 = update_7(model.Session, msg.fields[0], subModel_8);\n tupledArg_22 = Tuple_mapFirst((arg_7) => (new Page(1, [new SessionPage(2, [arg_7])])), tupledArg_21[0], tupledArg_21[1]);\n tupledArg_23 = Tuple_mapFirst((page_7) => (new Model(model.CurrentRoute, page_7, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_22[0], tupledArg_22[1]);\n return Tuple_mapSecond((cmd_13) => Cmd_map((Item_25) => (new Msg(16, [Item_25])), cmd_13), tupledArg_23[0], tupledArg_23[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 17: {\n const matchValue_8 = model.ActivePage;\n let matchResult_8, subModel_9;\n if (matchValue_8.tag === 1) {\n if (matchValue_8.fields[0].tag === 4) {\n matchResult_8 = 0;\n subModel_9 = matchValue_8.fields[0].fields[0];\n }\n else {\n matchResult_8 = 1;\n }\n }\n else {\n matchResult_8 = 1;\n }\n switch (matchResult_8) {\n case 0: {\n let tupledArg_26;\n let tupledArg_25;\n const tupledArg_24 = DiaryEditingView$1__Update(diaryEditing, model.Session, msg.fields[0], subModel_9);\n tupledArg_25 = Tuple_mapFirst((arg_8) => (new Page(1, [new SessionPage(4, [arg_8])])), tupledArg_24[0], tupledArg_24[1]);\n tupledArg_26 = Tuple_mapFirst((page_8) => (new Model(model.CurrentRoute, page_8, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_25[0], tupledArg_25[1]);\n return Tuple_mapSecond((cmd_14) => Cmd_map((Item_28) => (new Msg(17, [Item_28])), cmd_14), tupledArg_26[0], tupledArg_26[1]);\n }\n default: {\n console.warn(some(\"WARN: AddEditDiaryMsg: Not on a AddEditDiary page\"));\n return [model, Cmd_none()];\n }\n }\n }\n case 18: {\n const matchValue_9 = model.ActivePage;\n let matchResult_9, subModel_10;\n if (matchValue_9.tag === 1) {\n if (matchValue_9.fields[0].tag === 5) {\n matchResult_9 = 0;\n subModel_10 = matchValue_9.fields[0].fields[0];\n }\n else {\n matchResult_9 = 1;\n }\n }\n else {\n matchResult_9 = 1;\n }\n switch (matchResult_9) {\n case 0: {\n let tupledArg_29;\n let tupledArg_28;\n const tupledArg_27 = DiaryEditingView$1__Update(reviewEditing, model.Session, msg.fields[0], subModel_10);\n tupledArg_28 = Tuple_mapFirst((arg_9) => (new Page(1, [new SessionPage(5, [arg_9])])), tupledArg_27[0], tupledArg_27[1]);\n tupledArg_29 = Tuple_mapFirst((page_9) => (new Model(model.CurrentRoute, page_9, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_28[0], tupledArg_28[1]);\n return Tuple_mapSecond((cmd_15) => Cmd_map((Item_31) => (new Msg(18, [Item_31])), cmd_15), tupledArg_29[0], tupledArg_29[1]);\n }\n default: {\n console.warn(some(\"WARN: AddEditReviewMsg: Not on a AddEditReview page\"));\n return [model, Cmd_none()];\n }\n }\n }\n case 19: {\n const matchValue_10 = model.ActivePage;\n let matchResult_10, subModel_11;\n if (matchValue_10.tag === 1) {\n if (matchValue_10.fields[0].tag === 6) {\n matchResult_10 = 0;\n subModel_11 = matchValue_10.fields[0].fields[0];\n }\n else {\n matchResult_10 = 1;\n }\n }\n else {\n matchResult_10 = 1;\n }\n switch (matchResult_10) {\n case 0: {\n let tupledArg_32;\n let tupledArg_31;\n const tupledArg_30 = DiaryEditingView$1__Update(interactionEditing, model.Session, msg.fields[0], subModel_11);\n tupledArg_31 = Tuple_mapFirst((arg_10) => (new Page(1, [new SessionPage(6, [arg_10])])), tupledArg_30[0], tupledArg_30[1]);\n tupledArg_32 = Tuple_mapFirst((page_10) => (new Model(model.CurrentRoute, page_10, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_31[0], tupledArg_31[1]);\n return Tuple_mapSecond((cmd_16) => Cmd_map((Item_34) => (new Msg(19, [Item_34])), cmd_16), tupledArg_32[0], tupledArg_32[1]);\n }\n default: {\n console.warn(some(\"WARN: AddEditInteractionMsg: Not on a AddEditInteraction page\"));\n return [model, Cmd_none()];\n }\n }\n }\n case 20: {\n const matchValue_11 = model.ActivePage;\n let matchResult_11, subModel_12;\n if (matchValue_11.tag === 1) {\n if (matchValue_11.fields[0].tag === 3) {\n matchResult_11 = 0;\n subModel_12 = matchValue_11.fields[0].fields[0];\n }\n else {\n matchResult_11 = 1;\n }\n }\n else {\n matchResult_11 = 1;\n }\n switch (matchResult_11) {\n case 0: {\n let tupledArg_35;\n let tupledArg_34;\n const tupledArg_33 = update_8(model.Session, msg.fields[0], subModel_12);\n tupledArg_34 = Tuple_mapFirst((arg_11) => (new Page(1, [new SessionPage(3, [arg_11])])), tupledArg_33[0], tupledArg_33[1]);\n tupledArg_35 = Tuple_mapFirst((page_11) => (new Model(model.CurrentRoute, page_11, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_34[0], tupledArg_34[1]);\n return Tuple_mapSecond((cmd_17) => Cmd_map((Item_37) => (new Msg(20, [Item_37])), cmd_17), tupledArg_35[0], tupledArg_35[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 21: {\n const matchValue_12 = model.ActivePage;\n let matchResult_12, subModel_13;\n if (matchValue_12.tag === 1) {\n if (matchValue_12.fields[0].tag === 7) {\n matchResult_12 = 0;\n subModel_13 = matchValue_12.fields[0].fields[0];\n }\n else {\n matchResult_12 = 1;\n }\n }\n else {\n matchResult_12 = 1;\n }\n switch (matchResult_12) {\n case 0: {\n let tupledArg_38;\n let tupledArg_37;\n const tupledArg_36 = PhysicalView_update(model.Session)(msg.fields[0])(subModel_13);\n tupledArg_37 = Tuple_mapFirst((arg_12) => (new Page(1, [new SessionPage(7, [arg_12])])), tupledArg_36[0], tupledArg_36[1]);\n tupledArg_38 = Tuple_mapFirst((page_12) => (new Model(model.CurrentRoute, page_12, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_37[0], tupledArg_37[1]);\n return Tuple_mapSecond((cmd_18) => Cmd_map((Item_40) => (new Msg(21, [Item_40])), cmd_18), tupledArg_38[0], tupledArg_38[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 22: {\n const matchValue_13 = model.ActivePage;\n let matchResult_13, subModel_14;\n if (matchValue_13.tag === 1) {\n if (matchValue_13.fields[0].tag === 9) {\n matchResult_13 = 0;\n subModel_14 = matchValue_13.fields[0].fields[0];\n }\n else {\n matchResult_13 = 1;\n }\n }\n else {\n matchResult_13 = 1;\n }\n switch (matchResult_13) {\n case 0: {\n let tupledArg_41;\n let tupledArg_40;\n const tupledArg_39 = BodilyFunctionsView_update(model.Session)(msg.fields[0])(subModel_14);\n tupledArg_40 = Tuple_mapFirst((arg_13) => (new Page(1, [new SessionPage(9, [arg_13])])), tupledArg_39[0], tupledArg_39[1]);\n tupledArg_41 = Tuple_mapFirst((page_13) => (new Model(model.CurrentRoute, page_13, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_40[0], tupledArg_40[1]);\n return Tuple_mapSecond((cmd_19) => Cmd_map((Item_43) => (new Msg(22, [Item_43])), cmd_19), tupledArg_41[0], tupledArg_41[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 23: {\n const matchValue_14 = model.ActivePage;\n let matchResult_14, subModel_15;\n if (matchValue_14.tag === 1) {\n if (matchValue_14.fields[0].tag === 8) {\n matchResult_14 = 0;\n subModel_15 = matchValue_14.fields[0].fields[0];\n }\n else {\n matchResult_14 = 1;\n }\n }\n else {\n matchResult_14 = 1;\n }\n switch (matchResult_14) {\n case 0: {\n let tupledArg_44;\n let tupledArg_43;\n const tupledArg_42 = WeightView_update(model.Session)(msg.fields[0])(subModel_15);\n tupledArg_43 = Tuple_mapFirst((arg_14) => (new Page(1, [new SessionPage(8, [arg_14])])), tupledArg_42[0], tupledArg_42[1]);\n tupledArg_44 = Tuple_mapFirst((page_14) => (new Model(model.CurrentRoute, page_14, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_43[0], tupledArg_43[1]);\n return Tuple_mapSecond((cmd_20) => Cmd_map((Item_46) => (new Msg(23, [Item_46])), cmd_20), tupledArg_44[0], tupledArg_44[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 24: {\n const matchValue_15 = model.ActivePage;\n let matchResult_15, subModel_16;\n if (matchValue_15.tag === 1) {\n if (matchValue_15.fields[0].tag === 10) {\n matchResult_15 = 0;\n subModel_16 = matchValue_15.fields[0].fields[0];\n }\n else {\n matchResult_15 = 1;\n }\n }\n else {\n matchResult_15 = 1;\n }\n switch (matchResult_15) {\n case 0: {\n let tupledArg_47;\n let tupledArg_46;\n const tupledArg_45 = Physical_PhysicalView$1__Update(Physical_weightEditing, model.Session, msg.fields[0], subModel_16);\n tupledArg_46 = Tuple_mapFirst((arg_15) => (new Page(1, [new SessionPage(10, [arg_15])])), tupledArg_45[0], tupledArg_45[1]);\n tupledArg_47 = Tuple_mapFirst((page_15) => (new Model(model.CurrentRoute, page_15, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_46[0], tupledArg_46[1]);\n return Tuple_mapSecond((cmd_21) => Cmd_map((Item_49) => (new Msg(24, [Item_49])), cmd_21), tupledArg_47[0], tupledArg_47[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 25: {\n const matchValue_16 = model.ActivePage;\n let matchResult_16, subModel_17;\n if (matchValue_16.tag === 1) {\n if (matchValue_16.fields[0].tag === 11) {\n matchResult_16 = 0;\n subModel_17 = matchValue_16.fields[0].fields[0];\n }\n else {\n matchResult_16 = 1;\n }\n }\n else {\n matchResult_16 = 1;\n }\n switch (matchResult_16) {\n case 0: {\n let tupledArg_50;\n let tupledArg_49;\n const tupledArg_48 = Physical_PhysicalView$1__Update(Physical_bloodPressureEditing, model.Session, msg.fields[0], subModel_17);\n tupledArg_49 = Tuple_mapFirst((arg_16) => (new Page(1, [new SessionPage(11, [arg_16])])), tupledArg_48[0], tupledArg_48[1]);\n tupledArg_50 = Tuple_mapFirst((page_16) => (new Model(model.CurrentRoute, page_16, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_49[0], tupledArg_49[1]);\n return Tuple_mapSecond((cmd_22) => Cmd_map((Item_52) => (new Msg(25, [Item_52])), cmd_22), tupledArg_50[0], tupledArg_50[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 26: {\n const matchValue_17 = model.ActivePage;\n let matchResult_17, subModel_18;\n if (matchValue_17.tag === 1) {\n if (matchValue_17.fields[0].tag === 12) {\n matchResult_17 = 0;\n subModel_18 = matchValue_17.fields[0].fields[0];\n }\n else {\n matchResult_17 = 1;\n }\n }\n else {\n matchResult_17 = 1;\n }\n switch (matchResult_17) {\n case 0: {\n let tupledArg_53;\n let tupledArg_52;\n const tupledArg_51 = Physical_PhysicalView$1__Update(Physical_bodilyFunctionsEditing, model.Session, msg.fields[0], subModel_18);\n tupledArg_52 = Tuple_mapFirst((arg_17) => (new Page(1, [new SessionPage(12, [arg_17])])), tupledArg_51[0], tupledArg_51[1]);\n tupledArg_53 = Tuple_mapFirst((page_17) => (new Model(model.CurrentRoute, page_17, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_52[0], tupledArg_52[1]);\n return Tuple_mapSecond((cmd_23) => Cmd_map((Item_55) => (new Msg(26, [Item_55])), cmd_23), tupledArg_53[0], tupledArg_53[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 27: {\n const matchValue_18 = model.ActivePage;\n let matchResult_18, subModel_19;\n if (matchValue_18.tag === 1) {\n if (matchValue_18.fields[0].tag === 13) {\n matchResult_18 = 0;\n subModel_19 = matchValue_18.fields[0].fields[0];\n }\n else {\n matchResult_18 = 1;\n }\n }\n else {\n matchResult_18 = 1;\n }\n switch (matchResult_18) {\n case 0: {\n let tupledArg_56;\n let tupledArg_55;\n const tupledArg_54 = Physical_PhysicalView$1__Update(Physical_temperatureEditing, model.Session, msg.fields[0], subModel_19);\n tupledArg_55 = Tuple_mapFirst((arg_18) => (new Page(1, [new SessionPage(13, [arg_18])])), tupledArg_54[0], tupledArg_54[1]);\n tupledArg_56 = Tuple_mapFirst((page_18) => (new Model(model.CurrentRoute, page_18, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_55[0], tupledArg_55[1]);\n return Tuple_mapSecond((cmd_24) => Cmd_map((Item_58) => (new Msg(27, [Item_58])), cmd_24), tupledArg_56[0], tupledArg_56[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 28: {\n const matchValue_19 = model.ActivePage;\n let matchResult_19, subModel_20;\n if (matchValue_19.tag === 1) {\n if (matchValue_19.fields[0].tag === 14) {\n matchResult_19 = 0;\n subModel_20 = matchValue_19.fields[0].fields[0];\n }\n else {\n matchResult_19 = 1;\n }\n }\n else {\n matchResult_19 = 1;\n }\n switch (matchResult_19) {\n case 0: {\n let tupledArg_59;\n let tupledArg_58;\n const tupledArg_57 = Main_update(model.Session, msg.fields[0], subModel_20);\n tupledArg_58 = Tuple_mapFirst((arg_19) => (new Page(1, [new SessionPage(14, [arg_19])])), tupledArg_57[0], tupledArg_57[1]);\n tupledArg_59 = Tuple_mapFirst((page_19) => (new Model(model.CurrentRoute, page_19, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_58[0], tupledArg_58[1]);\n return Tuple_mapSecond((cmd_25) => Cmd_map((Item_61) => (new Msg(28, [Item_61])), cmd_25), tupledArg_59[0], tupledArg_59[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 29: {\n const matchValue_20 = model.ActivePage;\n let matchResult_20, subModel_21;\n if (matchValue_20.tag === 1) {\n if (matchValue_20.fields[0].tag === 15) {\n matchResult_20 = 0;\n subModel_21 = matchValue_20.fields[0].fields[0];\n }\n else {\n matchResult_20 = 1;\n }\n }\n else {\n matchResult_20 = 1;\n }\n switch (matchResult_20) {\n case 0: {\n let tupledArg_62;\n let tupledArg_61;\n const tupledArg_60 = update_9(model.Session, msg.fields[0], subModel_21);\n tupledArg_61 = Tuple_mapFirst((arg_20) => (new Page(1, [new SessionPage(15, [arg_20])])), tupledArg_60[0], tupledArg_60[1]);\n tupledArg_62 = Tuple_mapFirst((page_20) => (new Model(model.CurrentRoute, page_20, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_61[0], tupledArg_61[1]);\n return Tuple_mapSecond((cmd_26) => Cmd_map((Item_64) => (new Msg(29, [Item_64])), cmd_26), tupledArg_62[0], tupledArg_62[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 30: {\n const matchValue_21 = model.ActivePage;\n let matchResult_21, subModel_22;\n if (matchValue_21.tag === 1) {\n if (matchValue_21.fields[0].tag === 16) {\n matchResult_21 = 0;\n subModel_22 = matchValue_21.fields[0].fields[0];\n }\n else {\n matchResult_21 = 1;\n }\n }\n else {\n matchResult_21 = 1;\n }\n switch (matchResult_21) {\n case 0: {\n let tupledArg_65;\n let tupledArg_64;\n const tupledArg_63 = update_10(model.Session, msg.fields[0], subModel_22);\n tupledArg_64 = Tuple_mapFirst((arg_21) => (new Page(1, [new SessionPage(16, [arg_21])])), tupledArg_63[0], tupledArg_63[1]);\n tupledArg_65 = Tuple_mapFirst((page_21) => (new Model(model.CurrentRoute, page_21, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_64[0], tupledArg_64[1]);\n return Tuple_mapSecond((cmd_27) => Cmd_map((Item_67) => (new Msg(30, [Item_67])), cmd_27), tupledArg_65[0], tupledArg_65[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 31: {\n const matchValue_22 = model.ActivePage;\n let matchResult_22, subModel_23;\n if (matchValue_22.tag === 1) {\n if (matchValue_22.fields[0].tag === 17) {\n matchResult_22 = 0;\n subModel_23 = matchValue_22.fields[0].fields[0];\n }\n else {\n matchResult_22 = 1;\n }\n }\n else {\n matchResult_22 = 1;\n }\n switch (matchResult_22) {\n case 0: {\n let tupledArg_68;\n let tupledArg_67;\n const tupledArg_66 = Main_update_1(model.Session, msg.fields[0], subModel_23);\n tupledArg_67 = Tuple_mapFirst((arg_22) => (new Page(1, [new SessionPage(17, [arg_22])])), tupledArg_66[0], tupledArg_66[1]);\n tupledArg_68 = Tuple_mapFirst((page_22) => (new Model(model.CurrentRoute, page_22, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_67[0], tupledArg_67[1]);\n return Tuple_mapSecond((cmd_28) => Cmd_map((Item_70) => (new Msg(31, [Item_70])), cmd_28), tupledArg_68[0], tupledArg_68[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 32: {\n const matchValue_23 = model.ActivePage;\n let matchResult_23, subModel_24;\n if (matchValue_23.tag === 1) {\n if (matchValue_23.fields[0].tag === 18) {\n matchResult_23 = 0;\n subModel_24 = matchValue_23.fields[0].fields[0];\n }\n else {\n matchResult_23 = 1;\n }\n }\n else {\n matchResult_23 = 1;\n }\n switch (matchResult_23) {\n case 0: {\n let tupledArg_71;\n let tupledArg_70;\n const tupledArg_69 = Workouts_update(model.Session, msg.fields[0], subModel_24);\n tupledArg_70 = Tuple_mapFirst((arg_23) => (new Page(1, [new SessionPage(18, [arg_23])])), tupledArg_69[0], tupledArg_69[1]);\n tupledArg_71 = Tuple_mapFirst((page_23) => (new Model(model.CurrentRoute, page_23, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_70[0], tupledArg_70[1]);\n return Tuple_mapSecond((cmd_29) => Cmd_map((Item_73) => (new Msg(32, [Item_73])), cmd_29), tupledArg_71[0], tupledArg_71[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 33: {\n const matchValue_24 = model.ActivePage;\n let matchResult_24, subModel_25;\n if (matchValue_24.tag === 1) {\n if (matchValue_24.fields[0].tag === 19) {\n matchResult_24 = 0;\n subModel_25 = matchValue_24.fields[0].fields[0];\n }\n else {\n matchResult_24 = 1;\n }\n }\n else {\n matchResult_24 = 1;\n }\n switch (matchResult_24) {\n case 0: {\n let tupledArg_74;\n let tupledArg_73;\n const tupledArg_72 = Exercises_update(model.Session, msg.fields[0], subModel_25);\n tupledArg_73 = Tuple_mapFirst((arg_24) => (new Page(1, [new SessionPage(19, [arg_24])])), tupledArg_72[0], tupledArg_72[1]);\n tupledArg_74 = Tuple_mapFirst((page_24) => (new Model(model.CurrentRoute, page_24, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_73[0], tupledArg_73[1]);\n return Tuple_mapSecond((cmd_30) => Cmd_map((Item_76) => (new Msg(33, [Item_76])), cmd_30), tupledArg_74[0], tupledArg_74[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 34: {\n const matchValue_25 = model.ActivePage;\n let matchResult_25, subModel_26;\n if (matchValue_25.tag === 1) {\n if (matchValue_25.fields[0].tag === 20) {\n matchResult_25 = 0;\n subModel_26 = matchValue_25.fields[0].fields[0];\n }\n else {\n matchResult_25 = 1;\n }\n }\n else {\n matchResult_25 = 1;\n }\n switch (matchResult_25) {\n case 0: {\n let tupledArg_77;\n let tupledArg_76;\n const tupledArg_75 = TrainingPlan_update(model.Session, msg.fields[0], subModel_26);\n tupledArg_76 = Tuple_mapFirst((arg_25) => (new Page(1, [new SessionPage(20, [arg_25])])), tupledArg_75[0], tupledArg_75[1]);\n tupledArg_77 = Tuple_mapFirst((page_25) => (new Model(model.CurrentRoute, page_25, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_76[0], tupledArg_76[1]);\n return Tuple_mapSecond((cmd_31) => Cmd_map((Item_79) => (new Msg(34, [Item_79])), cmd_31), tupledArg_77[0], tupledArg_77[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 35: {\n const matchValue_26 = model.ActivePage;\n let matchResult_26, subModel_27;\n if (matchValue_26.tag === 1) {\n if (matchValue_26.fields[0].tag === 21) {\n matchResult_26 = 0;\n subModel_27 = matchValue_26.fields[0].fields[0];\n }\n else {\n matchResult_26 = 1;\n }\n }\n else {\n matchResult_26 = 1;\n }\n switch (matchResult_26) {\n case 0: {\n let tupledArg_80;\n let tupledArg_79;\n const tupledArg_78 = SimpleFormView$2__Update(trainingPlanEditing, model.Session, msg.fields[0], subModel_27);\n tupledArg_79 = Tuple_mapFirst((arg_26) => (new Page(1, [new SessionPage(21, [arg_26])])), tupledArg_78[0], tupledArg_78[1]);\n tupledArg_80 = Tuple_mapFirst((page_26) => (new Model(model.CurrentRoute, page_26, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_79[0], tupledArg_79[1]);\n return Tuple_mapSecond((cmd_32) => Cmd_map((Item_82) => (new Msg(35, [Item_82])), cmd_32), tupledArg_80[0], tupledArg_80[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 36: {\n const matchValue_27 = model.ActivePage;\n let matchResult_27, subModel_28;\n if (matchValue_27.tag === 1) {\n if (matchValue_27.fields[0].tag === 22) {\n matchResult_27 = 0;\n subModel_28 = matchValue_27.fields[0].fields[0];\n }\n else {\n matchResult_27 = 1;\n }\n }\n else {\n matchResult_27 = 1;\n }\n switch (matchResult_27) {\n case 0: {\n let tupledArg_83;\n let tupledArg_82;\n const tupledArg_81 = Workout_update(model.Session, msg.fields[0], subModel_28);\n tupledArg_82 = Tuple_mapFirst((arg_27) => (new Page(1, [new SessionPage(22, [arg_27])])), tupledArg_81[0], tupledArg_81[1]);\n tupledArg_83 = Tuple_mapFirst((page_27) => (new Model(model.CurrentRoute, page_27, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_82[0], tupledArg_82[1]);\n return Tuple_mapSecond((cmd_33) => Cmd_map((Item_85) => (new Msg(36, [Item_85])), cmd_33), tupledArg_83[0], tupledArg_83[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 37: {\n const matchValue_28 = model.ActivePage;\n let matchResult_28, subModel_29;\n if (matchValue_28.tag === 1) {\n if (matchValue_28.fields[0].tag === 23) {\n matchResult_28 = 0;\n subModel_29 = matchValue_28.fields[0].fields[0];\n }\n else {\n matchResult_28 = 1;\n }\n }\n else {\n matchResult_28 = 1;\n }\n switch (matchResult_28) {\n case 0: {\n let tupledArg_86;\n let tupledArg_85;\n const tupledArg_84 = SimpleFormView$2__Update(workoutEditing, model.Session, msg.fields[0], subModel_29);\n tupledArg_85 = Tuple_mapFirst((arg_28) => (new Page(1, [new SessionPage(23, [arg_28])])), tupledArg_84[0], tupledArg_84[1]);\n tupledArg_86 = Tuple_mapFirst((page_28) => (new Model(model.CurrentRoute, page_28, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_85[0], tupledArg_85[1]);\n return Tuple_mapSecond((cmd_34) => Cmd_map((Item_88) => (new Msg(37, [Item_88])), cmd_34), tupledArg_86[0], tupledArg_86[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 38: {\n const matchValue_29 = model.ActivePage;\n let matchResult_29, subModel_30;\n if (matchValue_29.tag === 1) {\n if (matchValue_29.fields[0].tag === 24) {\n matchResult_29 = 0;\n subModel_30 = matchValue_29.fields[0].fields[0];\n }\n else {\n matchResult_29 = 1;\n }\n }\n else {\n matchResult_29 = 1;\n }\n switch (matchResult_29) {\n case 0: {\n let tupledArg_89;\n let tupledArg_88;\n const tupledArg_87 = Exercise_update(model.Session, msg.fields[0], subModel_30);\n tupledArg_88 = Tuple_mapFirst((arg_29) => (new Page(1, [new SessionPage(24, [arg_29])])), tupledArg_87[0], tupledArg_87[1]);\n tupledArg_89 = Tuple_mapFirst((page_29) => (new Model(model.CurrentRoute, page_29, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_88[0], tupledArg_88[1]);\n return Tuple_mapSecond((cmd_35) => Cmd_map((Item_91) => (new Msg(38, [Item_91])), cmd_35), tupledArg_89[0], tupledArg_89[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 39: {\n const matchValue_30 = model.ActivePage;\n let matchResult_30, subModel_31;\n if (matchValue_30.tag === 1) {\n if (matchValue_30.fields[0].tag === 25) {\n matchResult_30 = 0;\n subModel_31 = matchValue_30.fields[0].fields[0];\n }\n else {\n matchResult_30 = 1;\n }\n }\n else {\n matchResult_30 = 1;\n }\n switch (matchResult_30) {\n case 0: {\n let tupledArg_92;\n let tupledArg_91;\n const tupledArg_90 = SimpleFormView$2__Update(exerciseEditing, model.Session, msg.fields[0], subModel_31);\n tupledArg_91 = Tuple_mapFirst((arg_30) => (new Page(1, [new SessionPage(25, [arg_30])])), tupledArg_90[0], tupledArg_90[1]);\n tupledArg_92 = Tuple_mapFirst((page_30) => (new Model(model.CurrentRoute, page_30, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_91[0], tupledArg_91[1]);\n return Tuple_mapSecond((cmd_36) => Cmd_map((Item_94) => (new Msg(39, [Item_94])), cmd_36), tupledArg_92[0], tupledArg_92[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 40: {\n const matchValue_31 = model.ActivePage;\n let matchResult_31, subModel_32;\n if (matchValue_31.tag === 1) {\n if (matchValue_31.fields[0].tag === 26) {\n matchResult_31 = 0;\n subModel_32 = matchValue_31.fields[0].fields[0];\n }\n else {\n matchResult_31 = 1;\n }\n }\n else {\n matchResult_31 = 1;\n }\n switch (matchResult_31) {\n case 0: {\n let tupledArg_95;\n let tupledArg_94;\n const tupledArg_93 = ExerciseRecord_update(model.Session, msg.fields[0], subModel_32);\n tupledArg_94 = Tuple_mapFirst((arg_31) => (new Page(1, [new SessionPage(26, [arg_31])])), tupledArg_93[0], tupledArg_93[1]);\n tupledArg_95 = Tuple_mapFirst((page_31) => (new Model(model.CurrentRoute, page_31, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_94[0], tupledArg_94[1]);\n return Tuple_mapSecond((cmd_37) => Cmd_map((Item_97) => (new Msg(40, [Item_97])), cmd_37), tupledArg_95[0], tupledArg_95[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 41: {\n const subMsg_33 = msg.fields[0];\n const matchValue_32 = model.ActivePage;\n let matchResult_32, subModel_33;\n if (matchValue_32.tag === 1) {\n if (matchValue_32.fields[0].tag === 27) {\n matchResult_32 = 0;\n subModel_33 = matchValue_32.fields[0].fields[0];\n }\n else {\n matchResult_32 = 1;\n }\n }\n else {\n matchResult_32 = 1;\n }\n switch (matchResult_32) {\n case 0: {\n let patternInput_4;\n let tupledArg_98;\n let tupledArg_97;\n const tupledArg_96 = update_11(model.Session, subMsg_33, subModel_33);\n tupledArg_97 = Tuple_mapFirst((arg_32) => (new Page(1, [new SessionPage(27, [arg_32])])), tupledArg_96[0], tupledArg_96[1]);\n tupledArg_98 = Tuple_mapFirst((page_32) => (new Model(model.CurrentRoute, page_32, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_97[0], tupledArg_97[1]);\n patternInput_4 = Tuple_mapSecond((cmd_38) => Cmd_map((Item_100) => (new Msg(41, [Item_100])), cmd_38), tupledArg_98[0], tupledArg_98[1]);\n const resultModel = patternInput_4[0];\n const cmd_39 = patternInput_4[1];\n const matchValue_33 = getSetTimerMsg(subMsg_33);\n if (matchValue_33 != null) {\n const dateTime_1 = matchValue_33;\n return [resultModel, Cmd_batch(ofArray([cmd_39, singleton((dispatch_4) => {\n dispatch_4(new Msg(2, [new Msg_1(9, [dateTime_1])]));\n })]))];\n }\n else {\n return [resultModel, cmd_39];\n }\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 42: {\n const matchValue_34 = model.ActivePage;\n let matchResult_33, subModel_34;\n if (matchValue_34.tag === 1) {\n if (matchValue_34.fields[0].tag === 28) {\n matchResult_33 = 0;\n subModel_34 = matchValue_34.fields[0].fields[0];\n }\n else {\n matchResult_33 = 1;\n }\n }\n else {\n matchResult_33 = 1;\n }\n switch (matchResult_33) {\n case 0: {\n let tupledArg_101;\n let tupledArg_100;\n const tupledArg_99 = ExerciseRecordsMany_update(model.Session, msg.fields[0], subModel_34);\n tupledArg_100 = Tuple_mapFirst((arg_33) => (new Page(1, [new SessionPage(28, [arg_33])])), tupledArg_99[0], tupledArg_99[1]);\n tupledArg_101 = Tuple_mapFirst((page_33) => (new Model(model.CurrentRoute, page_33, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_100[0], tupledArg_100[1]);\n return Tuple_mapSecond((cmd_40) => Cmd_map((Item_103) => (new Msg(42, [Item_103])), cmd_40), tupledArg_101[0], tupledArg_101[1]);\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 43: {\n const subMsg_35 = msg.fields[0];\n const matchValue_35 = model.ActivePage;\n let matchResult_34, subModel_35;\n if (matchValue_35.tag === 1) {\n if (matchValue_35.fields[0].tag === 29) {\n matchResult_34 = 0;\n subModel_35 = matchValue_35.fields[0].fields[0];\n }\n else {\n matchResult_34 = 1;\n }\n }\n else {\n matchResult_34 = 1;\n }\n switch (matchResult_34) {\n case 0: {\n let patternInput_5;\n let tupledArg_104;\n let tupledArg_103;\n const tupledArg_102 = Workout_WorkoutEditView__Update(workoutRecordEditor, model.Session, subMsg_35, subModel_35);\n tupledArg_103 = Tuple_mapFirst((arg_34) => (new Page(1, [new SessionPage(29, [arg_34])])), tupledArg_102[0], tupledArg_102[1]);\n tupledArg_104 = Tuple_mapFirst((page_34) => (new Model(model.CurrentRoute, page_34, model.NavigationModel, model.Session, model.SessionLoading, model.LastSessionRefresh)), tupledArg_103[0], tupledArg_103[1]);\n patternInput_5 = Tuple_mapSecond((cmd_41) => Cmd_map((Item_106) => (new Msg(43, [Item_106])), cmd_41), tupledArg_104[0], tupledArg_104[1]);\n const resultModel_1 = patternInput_5[0];\n const cmd_42 = patternInput_5[1];\n if (subMsg_35.tag === 6) {\n const eventInfo = subMsg_35.fields[0];\n if (!Model$2__IsEditing(subModel_35)) {\n const newSession_2 = Session__SetActiveWorkoutRecord_Z2D8A2414(resultModel_1.Session, [eventInfo, (bind$0040_1 = subModel_35.Record, new WorkoutRecord(eventInfo.Id, bind$0040_1.WorkoutId, bind$0040_1.Progress, bind$0040_1.FinishTime, bind$0040_1.Notes))]);\n return [new Model(resultModel_1.CurrentRoute, resultModel_1.ActivePage, resultModel_1.NavigationModel, newSession_2, resultModel_1.SessionLoading, resultModel_1.LastSessionRefresh), Cmd_batch(ofArray([singleton((dispatch_5) => {\n dispatch_5(new Msg(2, [new Msg_1(3, [newSession_2])]));\n }), cmd_42]))];\n }\n else {\n return [resultModel_1, cmd_42];\n }\n }\n else {\n return [resultModel_1, cmd_42];\n }\n }\n default:\n return [model, Cmd_none()];\n }\n }\n case 8: {\n const subMsg_36 = msg.fields[0];\n const matchValue_36 = model.ActivePage;\n let matchResult_35, subModel_36, subModel_37;\n if (matchValue_36.tag === 1) {\n switch (matchValue_36.fields[0].tag) {\n case 4: {\n matchResult_35 = 0;\n break;\n }\n case 5: {\n matchResult_35 = 1;\n break;\n }\n case 6: {\n matchResult_35 = 2;\n break;\n }\n case 10: {\n matchResult_35 = 3;\n break;\n }\n case 11: {\n matchResult_35 = 4;\n break;\n }\n case 12: {\n matchResult_35 = 5;\n break;\n }\n case 13: {\n matchResult_35 = 6;\n break;\n }\n case 27: {\n matchResult_35 = 7;\n subModel_36 = matchValue_36.fields[0].fields[0];\n break;\n }\n case 28: {\n matchResult_35 = 8;\n subModel_37 = matchValue_36.fields[0].fields[0];\n break;\n }\n case 29: {\n matchResult_35 = 9;\n break;\n }\n default:\n matchResult_35 = 10;\n }\n }\n else {\n matchResult_35 = 10;\n }\n switch (matchResult_35) {\n case 0:\n return [model, singleton((dispatch_6) => {\n dispatch_6(new Msg(17, [new Msg$2(7, [subMsg_36])]));\n })];\n case 1:\n return [model, singleton((dispatch_7) => {\n dispatch_7(new Msg(18, [new Msg$2(7, [subMsg_36])]));\n })];\n case 2:\n return [model, singleton((dispatch_8) => {\n dispatch_8(new Msg(19, [new Msg$2(7, [subMsg_36])]));\n })];\n case 3:\n return [model, singleton((dispatch_9) => {\n dispatch_9(new Msg(24, [new Msg$2(7, [subMsg_36])]));\n })];\n case 4:\n return [model, singleton((dispatch_10) => {\n dispatch_10(new Msg(25, [new Msg$2(7, [subMsg_36])]));\n })];\n case 5:\n return [model, singleton((dispatch_11) => {\n dispatch_11(new Msg(26, [new Msg$2(7, [subMsg_36])]));\n })];\n case 6:\n return [model, singleton((dispatch_12) => {\n dispatch_12(new Msg(27, [new Msg$2(7, [subMsg_36])]));\n })];\n case 7: {\n const resMsg = mapModelToEIMMsg(subModel_36, subMsg_36);\n return [model, singleton((dispatch_13) => {\n dispatch_13(new Msg(41, [resMsg]));\n })];\n }\n case 8: {\n const resMsg_1 = ExerciseRecordsMany_mapModelToEIMMsg(subModel_37, subMsg_36);\n return [model, singleton((dispatch_14) => {\n dispatch_14(new Msg(42, [resMsg_1]));\n })];\n }\n case 9:\n return [model, singleton((dispatch_15) => {\n dispatch_15(new Msg(43, [new Msg$2(7, [subMsg_36])]));\n })];\n default: {\n console.warn(some(`WARN: AppEIMMsg on page=${model.ActivePage}: Not on any page that supports location`));\n return [model, Cmd_none()];\n }\n }\n }\n case 4:\n return [new Model(model.CurrentRoute, model.ActivePage, model.NavigationModel, model.Session, true, model.LastSessionRefresh), Cmd_OfAsyncWith_either((x_105) => {\n Cmd_OfAsync_start(x_105);\n }, anonService.GetAvailableUserInfo, undefined, (Item_107) => (new Msg(5, [Item_107])), (Item_108) => (new Msg(7, [Item_108])))];\n case 6:\n return refreshSession((bind$0040_2 = model.Session, new Session(bind$0040_2.LoggedIn, bind$0040_2.UserInfo, msg.fields[0])), model, true);\n case 5: {\n const info = msg.fields[0];\n return refreshSession((info.tag === 1) ? ((userInfo = info.fields[0], (common.updateConfiguration(userInfo.ClientConfigVariables), new Session(true, userInfo, undefined)))) : ((common.updateConfiguration(info.fields[0].ClientConfigVariables), new Session(false, undefined, undefined))), model, model.SessionLoading);\n }\n case 7: {\n console.error(some(msg.fields[0]));\n return [new Model(model.CurrentRoute, model.ActivePage, model.NavigationModel, model.Session, false, model.LastSessionRefresh), Cmd_none()];\n }\n default:\n return setRoute(msg.fields[0], model);\n }\n}\n\nfunction init(location) {\n const session = Session_get_Default();\n const patternInput = init_10(session);\n const patternInput_1 = setRoute(location, new Model(undefined, new Page(0, [new AnonymousPage(0, [Model_Default()])]), patternInput[0], session, true, common.getNow()));\n return [patternInput_1[0], Cmd_batch(ofArray([singleton((dispatch) => {\n dispatch(new Msg(4, []));\n }), patternInput_1[1], Cmd_map((Item) => (new Msg(2, [Item])), patternInput[1])]))];\n}\n\nfunction makeFluid(element) {\n return box$0027(empty(), singleton(element));\n}\n\nfunction lazyView2() {\n return (view_1) => Common_lazyView2(uncurry2(view_1));\n}\n\nfunction contentFromAuthPage(model, authPage, dispatch) {\n switch (authPage.tag) {\n case 1:\n return lazyView2()((model_2) => ((dispatch_2) => AddEditProfile_view(model_2, dispatch_2)))(authPage.fields[0])((arg_1) => {\n dispatch(new Msg(15, [arg_1]));\n });\n case 4:\n return lazyView2()((model_3) => ((dispatch_3) => DiaryEditingView$1__View(diaryEditing, model_3, dispatch_3)))(authPage.fields[0])((arg_2) => {\n dispatch(new Msg(17, [arg_2]));\n });\n case 5:\n return lazyView2()((model_4) => ((dispatch_4) => DiaryEditingView$1__View(reviewEditing, model_4, dispatch_4)))(authPage.fields[0])((arg_3) => {\n dispatch(new Msg(18, [arg_3]));\n });\n case 6:\n return lazyView2()((model_5) => ((dispatch_5) => DiaryEditingView$1__View(interactionEditing, model_5, dispatch_5)))(authPage.fields[0])((arg_4) => {\n dispatch(new Msg(19, [arg_4]));\n });\n case 2:\n return lazyView2()((model_6) => ((dispatch_6) => view_2(model.Session, model_6, dispatch_6)))(authPage.fields[0])((arg_5) => {\n dispatch(new Msg(16, [arg_5]));\n });\n case 3:\n return lazyView2()((model_7) => ((dispatch_7) => view_3(model_7, dispatch_7)))(authPage.fields[0])((arg_6) => {\n dispatch(new Msg(20, [arg_6]));\n });\n case 7:\n return PhysicalView_view(model.Session, authPage.fields[0], (arg_7) => {\n dispatch(new Msg(21, [arg_7]));\n });\n case 9:\n return BodilyFunctionsView_viewList(model.Session, authPage.fields[0], (arg_8) => {\n dispatch(new Msg(22, [arg_8]));\n });\n case 8:\n return WeightView_viewList(model.Session, authPage.fields[0], (arg_9) => {\n dispatch(new Msg(23, [arg_9]));\n });\n case 15:\n return view_4(authPage.fields[0], (arg_10) => {\n dispatch(new Msg(29, [arg_10]));\n });\n case 16:\n return view_5(authPage.fields[0], (arg_11) => {\n dispatch(new Msg(30, [arg_11]));\n });\n case 10:\n return Physical_PhysicalView$1__View(Physical_weightEditing, authPage.fields[0], (arg_12) => {\n dispatch(new Msg(24, [arg_12]));\n });\n case 11:\n return Physical_PhysicalView$1__View(Physical_bloodPressureEditing, authPage.fields[0], (arg_13) => {\n dispatch(new Msg(25, [arg_13]));\n });\n case 12:\n return Physical_PhysicalView$1__View(Physical_bodilyFunctionsEditing, authPage.fields[0], (arg_14) => {\n dispatch(new Msg(26, [arg_14]));\n });\n case 13:\n return Physical_PhysicalView$1__View(Physical_temperatureEditing, authPage.fields[0], (arg_15) => {\n dispatch(new Msg(27, [arg_15]));\n });\n case 14:\n return Main_view(model.Session, authPage.fields[0], (arg_16) => {\n dispatch(new Msg(28, [arg_16]));\n });\n case 17:\n return lazyView2()((model_12) => ((dispatch_12) => Main_view_1(model.Session, model_12, dispatch_12)))(authPage.fields[0])((arg_17) => {\n dispatch(new Msg(31, [arg_17]));\n });\n case 18:\n return lazyView2()((model_13) => ((dispatch_13) => Workouts_view(model_13, dispatch_13)))(authPage.fields[0])((arg_18) => {\n dispatch(new Msg(32, [arg_18]));\n });\n case 19:\n return lazyView2()((model_14) => ((dispatch_14) => Exercises_view(model_14, dispatch_14)))(authPage.fields[0])((arg_19) => {\n dispatch(new Msg(33, [arg_19]));\n });\n case 20:\n return lazyView2()((model_15) => ((dispatch_15) => TrainingPlan_view(model_15, dispatch_15)))(authPage.fields[0])((arg_20) => {\n dispatch(new Msg(34, [arg_20]));\n });\n case 21:\n return lazyView2()((model_16) => ((dispatch_16) => AddEditFitnessView$1__View(trainingPlanEditing, model.Session, model_16, dispatch_16)))(authPage.fields[0])((arg_21) => {\n dispatch(new Msg(35, [arg_21]));\n });\n case 22:\n return lazyView2()((model_17) => ((dispatch_17) => Workout_view(model.Session, model_17, dispatch_17)))(authPage.fields[0])((arg_22) => {\n dispatch(new Msg(36, [arg_22]));\n });\n case 23:\n return lazyView2()((model_18) => ((dispatch_18) => AddEditFitnessView$1__View(workoutEditing, model.Session, model_18, dispatch_18)))(authPage.fields[0])((arg_23) => {\n dispatch(new Msg(37, [arg_23]));\n });\n case 24:\n return lazyView2()((model_19) => ((dispatch_19) => Exercise_view(model.Session, model_19, dispatch_19)))(authPage.fields[0])((arg_24) => {\n dispatch(new Msg(38, [arg_24]));\n });\n case 25:\n return lazyView2()((model_20) => ((dispatch_20) => AddEditFitnessView$1__View(exerciseEditing, model.Session, model_20, dispatch_20)))(authPage.fields[0])((arg_25) => {\n dispatch(new Msg(39, [arg_25]));\n });\n case 26:\n return lazyView2()((model_21) => ((_dispatch) => ExerciseRecord_view(model.Session, model_21, _dispatch)))(authPage.fields[0])((arg_26) => {\n dispatch(new Msg(40, [arg_26]));\n });\n case 27:\n return lazyView2()((model_22) => ((dispatch_21) => view_6(model.Session, model_22, dispatch_21)))(authPage.fields[0])((arg_27) => {\n dispatch(new Msg(41, [arg_27]));\n });\n case 28:\n return lazyView2()((model_23) => ((dispatch_22) => ExerciseRecordsMany_view(model_23, dispatch_22)))(authPage.fields[0])((arg_28) => {\n dispatch(new Msg(42, [arg_28]));\n });\n case 29:\n return lazyView2()((model_24) => ((dispatch_23) => Workout_WorkoutEditView__View(workoutRecordEditor, model_24, dispatch_23)))(authPage.fields[0])((arg_29) => {\n dispatch(new Msg(43, [arg_29]));\n });\n default:\n return lazyView2()((model_1) => ((dispatch_1) => ViewProfile_view(model.Session, model_1, dispatch_1)))(authPage.fields[0])((arg) => {\n dispatch(new Msg(14, [arg]));\n });\n }\n}\n\nfunction contentFromPage(model, page, dispatch) {\n if (page.tag === 1) {\n if (model.Session.LoggedIn) {\n if (Session__GetCurrentProfile(model.Session) != null) {\n return contentFromAuthPage(model, page.fields[0], dispatch);\n }\n else {\n const children = singleton(createElement(\"p\", {\n children: [\"Stale session info, wait for the refresh to finish\"],\n }));\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children)),\n });\n }\n }\n else {\n const children_2 = ofArray([createElement(\"p\", {\n children: [\"Not logged in, cannot display the current page. Log in first please\"],\n }), createElement(\"a\", createObj(ofArray([Router_href(new Route(3, [])), [\"children\", \"Login page\"]])))]);\n return createElement(\"div\", {\n children: reactApi.Children.toArray(Array.from(children_2)),\n });\n }\n }\n else {\n switch (page.fields[0].tag) {\n case 1:\n return \"Page not found\";\n case 2:\n return view_7(page.fields[0].fields[0], (arg_1) => {\n dispatch(new Msg(11, [arg_1]));\n });\n case 3:\n return view_8(page.fields[0].fields[0], (arg_2) => {\n dispatch(new Msg(12, [arg_2]));\n });\n case 5:\n return view_9(page.fields[0].fields[0], (arg_3) => {\n dispatch(new Msg(13, [arg_3]));\n });\n case 4:\n return view_10(page.fields[0].fields[0], (arg_4) => {\n dispatch(new Msg(10, [arg_4]));\n });\n default:\n return view_11(model.Session, page.fields[0].fields[0], (arg) => {\n dispatch(new Msg(9, [arg]));\n });\n }\n }\n}\n\nfunction view(model, dispatch) {\n let elems;\n const elms = singleton(createElement(\"div\", createObj(Helpers_combineClasses(\"column\", ofArray([[\"className\", \"is-8\"], [\"className\", \"is-offset-2\"], (elems = toList(delay(() => append(singleton_1(lazyView2()((model_1) => ((dispatch_1) => view_12(model_1, dispatch_1)))(model.NavigationModel)((arg) => {\n dispatch(new Msg(2, [arg]));\n })), delay(() => append(model.SessionLoading ? singleton_1(\"Loading, please wait\") : singleton_1(renderCatchSimple(\"Error rendering\", makeFluid(contentFromPage(model, model.ActivePage, dispatch)))), delay(() => {\n let children;\n return singleton_1(footer(empty(), singleton(content(singleton(new Option(3, [singleton(new Modifier_IModifier(5, [new Screen(0, []), new TextAlignment_Option(0, [])]))])), singleton((children = ofArray([createElement(\"a\", createObj(ofArray([Router_href(new Route(7, [\"terms\"])), [\"children\", \"Terms & conditions\"]]))), \" | \", createElement(\"a\", createObj(ofArray([Router_href(new Route(7, [\"privacy\"])), [\"children\", \"Privacy\"]]))), \" | \", createElement(\"a\", createObj(ofArray([Router_href(new Route(8, [])), [\"children\", \"Contact\"]])))]), createElement(\"p\", {\n children: reactApi.Children.toArray(Array.from(children)),\n })))))));\n })))))), [\"children\", reactApi.Children.toArray(Array.from(elems))])])))));\n return createElement(\"div\", {\n className: \"columns\",\n children: reactApi.Children.toArray(Array.from(elms)),\n });\n}\n\nexport const timer = (dispatch) => {\n const intervalId = setInterval(() => {\n dispatch(new Msg(3, [common.getNow()]));\n }, 5000) | 0;\n return {\n Dispose() {\n console.debug(`Disposing of timer ${intervalId}`);\n clearInterval(intervalId);\n },\n };\n};\n\nconst subscribeLocation = (dispatch) => {\n subscribeLocation_1((arg) => {\n dispatch(new Msg(8, [arg]));\n });\n return {\n Dispose() {\n },\n };\n};\n\nfunction subscriptions(model) {\n const locationSub = [singleton(\"location\"), subscribeLocation];\n if (Model__NeedsTimer(model)) {\n return ofArray([locationSub, [singleton(\"timer\"), timer]]);\n }\n else {\n return singleton(locationSub);\n }\n}\n\nProgramModule_run(Program_withReactSynchronous(\"app-root\", ProgramModule_toNavigable((location_1) => parseHash(RouteModule_routeParser, location_1), setRoute, ProgramModule_withSubscription(subscriptions, ProgramModule_mkProgram(init, update, view)))));\n\n","import { Union } from \"../../fable-library-js.4.24.0/Types.js\";\nimport { Common_parseOptions, Common_GenericOptions__AddCaseName_1505, Common_GenericOptions__AddModifiers_Z7C3AFA3, Common_GenericOptions__AddProps_Z4E55E0BD, Color_ofColor, Common_GenericOptions__AddClass_Z721C83C5, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7, Modifier_IModifier_$reflection, Color_IColor_$reflection } from \"../Common.fs.js\";\nimport { union_type, list_type, class_type, string_type } from \"../../fable-library-js.4.24.0/Reflection.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\n\nexport class Option extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"is-bold\", \"is-medium\", \"is-large\", \"is-halfheight\", \"is-fullheight-with-navbar\", \"is-fullheight\", \"Color\", \"CustomClass\", \"Props\", \"Modifiers\"];\n }\n}\n\nexport function Option_$reflection() {\n return union_type(\"Fulma.Hero.Option\", [], Option, () => [[], [], [], [], [], [], [[\"Item\", Color_IColor_$reflection()]], [[\"Item\", string_type]], [[\"Item\", list_type(class_type(\"Fable.React.IHTMLProp\"))]], [[\"Item\", list_type(Modifier_IModifier_$reflection())]]]);\n}\n\n/**\n * Generate
        \n */\nexport function hero(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, (result, option) => {\n switch (option.tag) {\n case 6:\n return Common_GenericOptions__AddClass_Z721C83C5(result, Color_ofColor(option.fields[0]));\n case 8:\n return Common_GenericOptions__AddProps_Z4E55E0BD(result, option.fields[0]);\n case 7:\n return Common_GenericOptions__AddClass_Z721C83C5(result, option.fields[0]);\n case 9:\n return Common_GenericOptions__AddModifiers_Z7C3AFA3(result, option.fields[0]);\n default:\n return Common_GenericOptions__AddCaseName_1505(result, option);\n }\n }, \"hero\"), (props_1, children_1) => react.createElement(\"div\", keyValueList(props_1, 1), ...children_1), children);\n}\n\n/**\n * Generate
        \n */\nexport function head(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"hero-head\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
        \n */\nexport function body(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"hero-body\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
        \n */\nexport function foot(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"hero-foot\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
        \n */\nexport function video(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"hero-video\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n/**\n * Generate
        \n */\nexport function buttons(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"hero-buttons\"), (props, children_1) => react.createElement(\"div\", keyValueList(props, 1), ...children_1), children);\n}\n\n","import { parseParams, parse } from \"../Fable.Elmish.UrlParser.1.0.2/parser.fs.js\";\nimport { substring } from \"../fable-library-js.4.24.0/String.js\";\nimport { empty } from \"../fable-library-js.4.24.0/Map.js\";\nimport { comparePrimitives } from \"../fable-library-js.4.24.0/Util.js\";\n\nexport function parsePath(parser, location) {\n return parse(parser, location.pathname, parseParams(location.search));\n}\n\nexport function parseHash(parser, location) {\n let patternInput;\n const hash = (location.hash.length > 1) ? substring(location.hash, 1) : \"\";\n const pos = hash.indexOf(\"?\") | 0;\n patternInput = ((pos >= 0) ? [substring(hash, 0, pos), parseParams(substring(hash, pos + 1))] : [hash, empty({\n Compare: comparePrimitives,\n })]);\n return parse(parser, patternInput[0], patternInput[1]);\n}\n\n","import { Common_parseOptions, Common_GenericOptions_Parse_Z4D1A7726, Common_GenericOptions__ToReactElement_4509C2D7 } from \"../Common.fs.js\";\nimport * as react from \"react\";\nimport { keyValueList } from \"../../fable-library-js.4.24.0/MapUtil.js\";\n\n/**\n * Generate \n */\nexport function footer(options, children) {\n return Common_GenericOptions__ToReactElement_4509C2D7(Common_GenericOptions_Parse_Z4D1A7726(options, Common_parseOptions, \"footer\"), (props, children_1) => react.createElement(\"footer\", keyValueList(props, 1), ...children_1), children);\n}\n\n"],"names":["isArrayLike","x","Array","isArray","ArrayBuffer","isView","isHashable","GetHashCode","disposeSafe","Dispose","isDisposable","sameConstructor","y","Object","getPrototypeOf","constructor","Symbol","iterator","Enumerator","iter","this","current","cur","next","value","done","Error","getEnumerator","e","GetEnumerator","toIterator","en","hasNext","undefined","Lazy","factory","isValueCreated","Value","createdValue","IsValueCreated","padWithZeros","i","length","toString","padStart","dateOffset","date","date1","offset","kind","getTimezoneOffset","int32ToString","radix","int64ToString","ObjectRef","id","o","idMap","has","set","count","get","stringHash","s","h","len","charCodeAt","numberHash","bigintHash","combineHashCodes","hashes","h1","dateHash","getTime","structuralHash","arrayHash","Date","values","map","v","safeHash","physicalHash","identityHash","equalArraysWith","eq","equalArrays","equals","Equals","isEquatable","compareDates","xKeys","keys","yKeys","sort","equalObjects","xtime","ytime","comparePrimitives","compareArrays","comp","j","compareArraysWith","compare","CompareTo","isComparable","key","compareObjects","createObj","fields","obj","kv","round","digits","arguments","m","Math","pow","n","toFixed","floor","f","r","WeakMap","curried","uncurry2","f2","a1","a2","curry2","curry3","a3","callStack","self","str","seqToString","cons","entries","_ref","k","join","name","String","Union","cases","tag","toJSON","concat","fieldStr","withParens","indexOf","unionToString","splice","other","Record","recordToJSON","_ref2","recordToString","recordGetHashCode","thisNames","recordEquals","result","recordCompareTo","FSharpRef","contents","getter","setter","contentsOrGetter","Exception","message","ensureErrorOrException","Promise","isPromise","P","MAX_DP","NAME","INVALID","INVALID_DP","INVALID_RM","DIV_BY_ZERO","UNDEFINED","NUMERIC","parse","nl","test","charAt","slice","replace","search","substring","c","Big","DP","RM","sd","rm","more","xc","isZero","findIndex","xci","idx","unshift","pop","stringify","doExponential","isNonzero","abs","cmp","isneg","yc","l","max","div","a","b","dp","bl","bt","ri","bz","ai","al","rl","q","qc","qi","p","push","shift","gt","gte","lt","lte","minus","sub","t","xlty","plus","xe","ye","reverse","mod","ygtx","times","add","one","prec","sqrt","half","toExponential","mul","NE","PE","toNumber","Number","strict","toPrecision","valueOf","_Big_","normalize","TypeError","prototype","symbol","isNumeric","multiply","BigInt","toHex","asUintN","Decimal","_this","get_Zero","get_One","get_MinusOne","op_Addition","op_Multiply","op_Division","setInt32Bits","hexDigits","bits","fromParts","low","mid","high","isNegative","scale","Uint8Array","bitSize","decDigits","hex","dec","decCount","d","carry","val","hexToDecimal","big","from","fromInt32","fromFloat64","trunc","toInt64","asIntN","toUInt64","toDecimal","shortDays","longDays","shortMonths","longMonths","parseRepeatToken","format","pos","patternChar","tokenLength","internalPos","parseNextChar","parseQuotedString","beginPos","quoteChar","foundQuote","currentChar","dateToStringWithCustomFormat","utc","cursorPos","localizedDate","DateTime","token","day","dayOfWeek","precision","millisecond","padEnd","hour","dateOffsetToString","minute","month","second","getHours","getFullYear","utcOffsetText","toLocalTime","sign","hours","parseInt","minutes","quotedString","quotedStringLenght","nextChar","fromCharCode","nextChar2","isMinus","dateToHalfUTCString","toISOString","_provider","dateWithOffset","dateToISOStringWithOffset","dateToStringWithOffset","toUTCString","toLocaleString","toLocaleDateString","toLocaleTimeString","printOffset","getMonth","getDate","getMinutes","getSeconds","getMilliseconds","dateToISOString","dateToStringWithKind","parseRaw","input","fail","trim","isNaN","exec","baseDate","timeInSeconds","timeParts","split","hourPart","parseFloat","toUpperCase","getUTCFullYear","getUTCMonth","getUTCDate","offsetInMinutes","detectUTC","create","year","ms","UTC","setUTCFullYear","setFullYear","dateValue","utcNow","now","toUniversalTime","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCSeconds","getUTCDay","getDay","ts","newDate","oldTzOffset","newTzOffset","addDays","d1","d2","op_Subtraction","that","pattern","options","flags","RegExp","escape","match","reg","startAt","lastIndex","matches","global","lastMatchIndex","index","fsFormatRegExp","formatRegExp","isLessThan","numericCompare","printf","cont","fsFormat","continuePrint","arg","toText","toFail","formatReplacement","rep","padLength","toLowerCase","dateToString","zeroFlag","minusFlag","ch","pad","createPrinter","_strParts","_matches","_result","padArg","strParts","_len2","args","_key2","_padLength","strIdx","matchIndex","_len3","_key3","str2","_","padLeft","intPart","decimalPart","repInt","repDecimal","rightZeros","padRight","thousandGroups","thousands","substr","isNullOrEmpty","isNullOrWhiteSpace","delimiter","xs","fromBase64String","b64Encoded","binary","atob","notSupported","bytes","isRight","replicate","initialize","getCharAtIndex","splitters","removeEmpty","filter","splits","findSplits","candidate","trimStart","_len6","chars","_key6","trimEnd","_len7","_key7","startIndex","Some","unwrap","opt","some","defaultArg","defaultValue","mapping","SR_indexOutOfBounds","SR_inputWasEmpty","SR_inputMustBeNonNegative","SR_notEnoughElements","Helpers_allocateArrayFromCons","tryParse","defValue","min","indexNotFound","fill","target","targetIndex","start","last","array","item_2","mapIndexed","source","setItem_1","arrays","arrays_1","totalIdx","totalLength","idx_1","arr_2","take","find","predicate","matchValue","value_2","tryFind","zip","array1","array2","differentLengths","equalsWith","length1","length2","head","tryHead","item","setItem","updateAt","FSharpList","tail","super","loop","xs_1_mut","ys_1_mut","xs_1","ys_1","matchValue_1","xt","value_1","yt","i_mut","h_mut","ListEnumerator$1","it","FSharpList_get_Empty","FSharpList_Cons_305B8EAC","FSharpList__get_IsEmpty","FSharpList__get_Length","FSharpList__get_Head","FSharpList__get_Tail","empty","singleton","isEmpty","xs_mut","tryLast","toArray","res","fold","folder","state","acc","iterate","action","unitVar","ofArrayWithTail","tail_1","item_1","ofArray","ofSeq","xs_3","root","node","enumerator","xs_5","t_2","lists","forEach","xs_6","append","ys","collect","zs","acc_mut","foldIndexed","tryPick","tryFindIndex","FSharpList__get_Item_Z524259A4","partition","root2","root1","patternInput_1","tupledArg","lacc","racc","t_4","t_5","choose","contains","xs_2","reduce","forAll","exists","fold2","map2","sortWith","comparer","arr","Compare","sortBy","projection","sum","adder","Add","GetZero","skip","count_mut","skipWhile","predicate_mut","takeWhile","splitAt","FSharpResult$2_Error","ErrorValue","FSharpResult$2","Result_Map","ResultValue","Result_Bind","binder","Enumerator_notStarted","Enumerator_alreadyFinished","Enumerator_Seq","Enumerator_FromFunctions$1","dispose","Enumerator_noReset","Enumerator_FromFunctions$1_$ctor_58C54629","Enumerator_generateWhileSome","openf","compute","closef","curr","started","x_1","finish","mkSeq","Enumerator_Seq_$ctor_673A07F2","argName","Operators_NullArg","checkNonNull","delay","generator","sources","outerOpt","innerOpt","finished","inner","outer","copyOfStruct","outerOpt_1","inner_1","outer_1","Enumerator_concat","ar","singleton_1","toArray_1","toList","ofArray_1","ofSeq_1","generate","generateIndexed","chooser","e_1","found","tryHead_1","tryHead_2","iterateIndexed","length_1","Enumerator_enumerateThenFinally","e1","e2","tupledArg_1","MapTreeLeaf$2","MapTreeLeaf$2_$ctor_5BDDA1","MapTreeLeaf$2__get_Key","MapTreeLeaf$2__get_Value","MapTreeNode$2","left","right","MapTreeNode$2_$ctor_Z39DE9543","MapTreeNode$2__get_Left","MapTreeNode$2__get_Right","MapTreeNode$2__get_Height","MapTreeModule_sizeAux","m_mut","m2","mn","MapTreeModule_size","MapTreeModule_mk","mn_1","hl","hr","m2_1","m_2","MapTreeModule_rebalance","t1","t2","m2_2","mn_2","m_3","m2_3","mn_3","t1h","t2h","t2$0027","t2l","matchValue_2","t1$0027","matchValue_3","t1r","MapTreeModule_add","MapTreeModule_empty","MapTreeModule_tryFind","comparer_mut","k_mut","MapTreeModule_iterOpt","f_mut","MapTreeModule_iter","MapTreeModule_mapiOpt","l2","v2","r2","MapTreeModule_mapi","MapTreeModule_copyToArray","MapTreeModule_toArray","MapTreeModule_ofSeq","forLoopVar","MapTreeModule_ofArray","fold_1","MapTreeModule_ofList","ie","e_mut","patternInput","MapTreeModule_mkFromEnumerator","MapTreeModule_MapIterator$2","stack","MapTreeModule_collapseLHS","stack_mut","isEmpty_1","empty_1","rest","MapTreeModule_mkIterator","MapTreeModule_current","MapTreeModule_alreadyFinished","MapTreeModule_notStarted","MapTreeModule_mkIEnumerator","System.Collections.Generic.IEnumerator`1.get_Current","System.Collections.IEnumerator.get_Current","System.Collections.IEnumerator.MoveNext","MapTreeModule_moveNext","FSharpMap","tree","this$","combineHash","activePatternResult","FSharpMap__ComputeHashCode","that_1","m1","e1c","e2c","map_1","toStringTag","b1","b2","compareWith","kvp1","kvp2","FSharpMap__ContainsKey","FSharpMap__get_Item","FSharpMap__get_Count","size","clear","delete","_arg","thisArg","iterate_1","FSharpMap_$ctor","FSharpMap__Add","MapTreeModule_find","MapTreeModule_mem","FSharpMap__get_Keys","map_2","kvp","FSharpMap__TryFind","table","containsKey","ofList","elements","m_1_mut","MapTreeModule_toList","FSharpMap_Empty","Constraints_applyConstraintsGetErrors","constraints","constr","Constraints_applyConstraints","Constraints_collectConstraintsErrors","errors","option","Constraints_minLengthConstraint","minLength","Constraints_maxLengthConstraint","maxLength","Constraints_minMaxLengthConstraint","Constraints_notEmptyOrWhitespaceConstraint","Constraints_minMaxOptLengthConstraint","Constraints_maxOptLengthConstraint","Constraints_minOptLengthConstraint","Constraints_minConstraint","minValue","Constraints_isValidCurrency","Constraints_minMaxConstraint","maxValue","Constraints_maxConstraint","dashify","separator","keyValueList","definedCaseRule","kvPair","assign","caseRule","changeCase","tryGetValue","addToSet","addToDict","dict","getItemFromDict","HashSet","items","hashMap","Map","HashSet__Add_2B595","HashSet__Clear","HashSet__Contains_2B595","arrayIndex","HashSet__get_Count","HashSet__Remove_2B595","HashSet__TryFindIndex_2B595","outArg","v_1","matchResult","Dictionary","pairs","pair","Dictionary__Add_5BDDA1","Dictionary__Clear","Dictionary__TryFind_2B595","p_1","Dictionary__get_Count","Dictionary__Remove_2B595","Dictionary__ContainsKey_2B595","Dictionary__get_Item_2B595","Dictionary__set_Item_5BDDA1","Dictionary__TryFindIndex_2B595","distinct","hashSet","List_distinct","List_distinctBy","distinctBy","List_except","itemsToExclude","except","List_groupBy","key_1","groupBy","unicodeCategoryFunc","codePointAt","codepoints","Uint32Array","categories","cp","hi","lo","getCategoryFunc","isDigit","getUnicodeCategory2","isDigit2","isWhiteSpace","isWhiteSpace2","splitTagToHierarchicalComponents","splitServerTags","tags","validateTag","isLetterMask","isLetterOrDigit2","isLetterOrDigit","validateServerTags","filter_1","validateTags","toClientListView","toLocaleLowerCase","TagTreeNode","Id","Tag","Caption","Children","toClientTreeView","tagsMap","addToTree","newTag","section","child","newNode","child_1","tree_1","tag_2","y_1","concatToServer","addTag","currentTags","exists_1","CaseInfo","declaringType","TypeInfo","fullname","generics","construct","parent","enumCases","fullName","getHashCode","getGenerics","getRecordElements","k1","v1","k2","class_type","record_type","union_type","caseNames","tuple_type","lambda_type","argType","returnType","option_type","generic","list_type","enum_type","underlyingType","unit_type","string_type","bool_type","uint8_type","int32_type","int64_type","float64_type","decimal_type","info","elemType","getElementType","lastIndexOf","getEnumCase","getUnionCases","getFunctionElements","isFunction","gen","isTuple","startsWith","getUnionFields","case_","getRecordField","field","makeUnion","uci","expectedLength","makeRecord","_ref3","_t","assertUnion","taglineName","taglineConstraints","name_1","name_2","validateTagline","notes","notesConstraints","notesName","validateNotes","getNotesErrors","name_3","tags_1","tags_2","tagsList","distinctCount","getTagsErrors","validateRating","rating","getRatingErrors","followupNotesConstraints","followupNotesName","validateFollowupNotes","followupNotes","getFollowupNotesErrors","InteractionRecordModule_participantsConstraints","InteractionRecordModule_participantsName","InteractionRecordModule_validateParticipants","participants","InteractionRecordModule_getParticipantsErrors","DiaryRecord","Tagline","Notes","FollowupTime","FollowupNotes","FollowupDismissed","Tags","DiaryRecord_$reflection","ReviewRecord","Rating","ReviewRecord_$reflection","interactionTypes","InteractionRecord","Participants","DurationSec","InteractionType","InteractionRecord_$reflection","ReminderRecord","EventTimestamp","OperationCanceledError","setPrototypeOf","Trampoline","maxTrampolineCallCount","callCount","incrementAndCheck","hijack","setTimeout","protectedCont","ctx","cancelToken","isCancelled","onCancel","trampoline","err","onError","Bind","computation","onSuccess","protectedBind","Combine","computation1","computation2","Delay","For","sequence","body","While","Return","protectedReturn","ReturnFrom","TryFinally","compensation","TryWith","catchHandler","ex","Using","resource","guard","Zero","FSharpChoice$2","emptyContinuation","_x","defaultCancellationToken","cancelled","_id","_cancelled","_listeners","cancel","listener","addListener","removeListener","register","$","fromContinuations","startImmediate","cancellationToken","continuation","exceptionContinuation","cancellationContinuation","startWithContinuations","Event$2","delegates","_add","_remove","Publish","addHandler","removeHandler","AddHandler","RemoveHandler","Subscribe","OnNext","Trigger","senderOrValue","valueOrUndefined","sender","Event","interval","_enabled","_isDisposed","_intervalId","_timeoutId","Interval","AutoReset","_elapsed","Elapsed","Enabled","setInterval","clearTimeout","clearInterval","Close","Start","Stop","Observer","onNext","onCompleted","OnError","_e","OnCompleted","callback","Cmd_exec","dispatch","cmd","call","Cmd_none","Cmd_map","g","arg_1","Cmd_batch","cmds","Cmd_OfAsyncWith_either","task","ofSuccess","ofError","work","Choice_makeChoice1Of2","Cmd_OfAsync_start","returnVal","Timer","Timer_delay","Cmd_OfPromise_either","then","arg_3","catch","arg_2","NumberStyles","HttpMethod","RequestBody","HttpRequest","Url","Headers","WithCredentials","HttpResponse","StatusCode","ResponseBody","RemoteBuilderOptions","CustomHeaders","BaseUrl","Authorization","RouteBuilder","CustomResponseSerialization","ProxyRequestException","response","errorMsg","reponseText","ProxyRequestException_$ctor_76BC5104","getRange","unsigned","bitsize","isValid","style","prefix","AllowHexSpecifier","getRadix","invalidDigits","getInvalidDigits","regexMatch","validResponse","umin","umax","op_UnaryNegation_Int32","_configuration","updateConfiguration","configuration","console","getDayName","locale","weekday","getNow","formatCurrencyValue","currency","Intl","NumberFormat","getTimezoneName","DateTimeFormat","resolvedOptions","timeZone","dateToLuxonTz","tz","fromJSDate","setZone","_dateToTz","DisplayNames","type","maximumSignificantDigits","StringBuilder","capacity","buf","StringBuilder_$ctor_Z18115A39","StringBuilder_$ctor","StringBuilder__Append_Z721C83C5","StringBuilder__Append_Z524259A4","signedRound","ceil","fromSeconds","days","seconds","Prop","DOMAttr","HTMLAttr","Reflection_getCaseName","case$","Screen","Screen_ToString_2D2414B4","screen","Color_IColor","Color_ofColor","level","Size_ISize","TextSize_Option","TextSize_Option_ToString_Z2E0B9453","Reflection_getCaseTag","TextAlignment_Option","FlexWrap_Option","TextWeight_Option","TextTransform_Option","Spacing_TypeAndDirection","Spacing_Amount","Modifier_IModifier","Common_GenericOption","Common_GenericOptions","Props","Classes","RemovedClasses","Common_GenericOptions_Parse_Z4D1A7726","parser","baseClass","baseProps","result_1","Common_GenericOptions__AddClass_Z721C83C5","Common_GenericOptions__AddProps_Z4E55E0BD","Common_GenericOptions__AddProp_ZCC5A61F","prop","props","cl","Common_GenericOptions__AddCaseName_1505","Common_GenericOptions__AddModifiers_Z7C3AFA3","modifiers","screen_3","screen_7","Modifier_ofText","warn","display","Display_toDisplayOnlyClass","Modifier_ofInvisible","Modifier_ofInvisibleOnly","Modifier_ofHidden","Modifier_ofHiddenOnly","typ","amount","direction","x_2","option_1","x_3","option_2","x_4","y_2","option_3","x_5","y_3","option_4","x_6","y_4","Modifier_ofBackground","Common_GenericOptions__ToAttributes","cls","Common_GenericOptions__ToReactElement_4509C2D7","el","children","children_1","Common_GenericOptions__ToReactElement_Z2B8EEFE","Common_parseOptions","Text_span","react","Option","background","content","box$0027","title","element","children_3","h2","h3","h4","h5","h6","Helpers_classes","std","booleans","complete_1","complete","Fa_ISize","Fa_IconOption","Fa_ofSize","Fa_IconOptions","Icon","Size","Border","Pull","HaveSpin","HavePulse","Rotation","Flip","IsInverse","FixedWidth","IsLi","StackSize","CustomClass","Fa_i","faOptions","baseElement","opts","Fa_displayIcon","Fa_toIconOptions","Fa_Stack_Options","reactApi","offsetToUtcZone","utcOffsetMins","EventInfo","ContentTypeId","ProfileId","CreatedAt","UpdatedAt","PlaceId","PlaceName","Latitude","Longitude","LocationTz","LocationTzOffsetMin","ClientTz","ClientTzOffsetMin","EventInfo_$reflection","PageBoundary","Timestamp","PagingOptions","LastBoundary","PageSize","Ascending","From","To","PagingOptions_$reflection","DataPoint","DataPoint_$reflection","EventInfo_Default_7F9DDECF","timestamp","EventInfo__GetClientTz","EventInfo__GetLocationTz","EventInfo__DisplayTimeZone","getTz","clientTz","locationTz","clientTz_1","locationTz_1","PagingOptionsModule_basicPagingOptions","fromDate","toDate","PagingOptionsModule_defaultPagingOptions","exnToDisplayString","error","dateStrToDate","parts","part","Int32Array","dateToStrForDiary","timeFormatOptions","temp","getBasicEventInfoData","eventInfo","sb","formatDistanceToNow","toString_1","secondsToHuman","secs","milliseconds","toString_2","handleFileEvent","fileEvent","files","file","instance","reader","FileReader","onload","_arg_2","readyState","readAsArrayBuffer","splitSeconds","durationSecs","stringToEnum","valuesToSelectOptions","optionsFromChoices","nightStart","create_1","nightEnd","isNightOptTz","tzOpt","timestampInTz","common","time","_wordPattern","countWordsEx","strs","matches_1","countWords","_suffixes","responsiveChart","data","properties","properties_2","properties_5","top","bottom","reactApi_1","createElement","CartesianGrid","XAxis","dataKey","point","absValue","_arg_1","suffix_1","formatShortDecimal","YAxis","Tooltip","Line","point_1","stroke","LineChart","RecordField","FieldName","FieldType","PropertyInfo","UnionCase","CaseName","CaseTypes","Info","flattenFuncTypes","typeDef","$007CFuncType$007C_$007C","lazyToDelayed","_createTypeInfo","resolvedType","l_3","l_4","l_5","l_6","l_7","l_8","l_9","l_10","l_11","l_12","l_13","l_14","l_15","l_16","l_17","primType","$007CPrimitiveType$007C_$007C","activePatternResult_1","types","createTypeInfo","activePatternResult_2","isRecord","$007CRecordType$007C_$007C","l_1","activePatternResult_3","isUnion","$007CUnionType$007C_$007C","l_2","activePatternResult_4","isEnum","getEnumUnderlyingType","activePatternResult_5","$007CListType$007C_$007C","elemType_1","activePatternResult_6","$007CResizeArrayType$007C_$007C","elemType_2","activePatternResult_7","$007CHashSetType$007C_$007C","elemType_3","activePatternResult_8","$007CArrayType$007C_$007C","elemType_4","activePatternResult_9","getTupleElements","$007CTupleType$007C_$007C","types_1","activePatternResult_10","$007COptionType$007C_$007C","elemType_5","activePatternResult_11","$007CNullable$007C_$007C","elemType_6","activePatternResult_12","$007CSetType$007C_$007C","elemType_7","activePatternResult_13","genArgs","$007CMapType$007C_$007C","keyType","valueType","activePatternResult_14","$007CDictionaryType$007C_$007C","keyType_1","valueType_1","activePatternResult_15","$007CSeqType$007C_$007C","elemType_8","activePatternResult_16","$007CAsyncType$007C_$007C","elemType_9","activePatternResult_17","$007CPromiseType$007C_$007C","elemType_10","typeInfoCache","ti_1","endsWith","isPrimitive","enumUnion","every","defaultRequestConfig","HttpMethod_1","get$","url","post","withHeaders","headers","req","withCredentials","withCredentials_1","withBody","sendAndRead","preparation","resultMapper","request_1","xhr","XMLHttpRequest","open","cancellationTokenRegistration","abort","setRequestHeader","onreadystatechange","isCancellationRequested","send","Parsimmon","seed","elem","isParser","isBuffer","Buffer","makeSuccess","status","furthest","expected","makeFailure","mergeReplies","hasOwnProperty","union","makeLineColumnIndex","line","column","lines","assertParser","assertNumber","assertFunction","assertString","repeat","string","leftPad","char","rangeFromIndexAndOffsets","before","after","to","formatGot","lineWithErrorIndex","lineRange","lastLineNumberLabelLength","verticalMarkerLength","byteLineWithErrorIndex","columnByteIndex","byteRange","bytesPerLine","bytesAfter","bytesInChunks","chunks","chunkIndex","toChunks","byteLines","byteRow","byteValue","byteRangeToRange","byteLine","inputLines","lineWithErrorCurrentIndex","linesWithLineNumbers","lineSource","lineNumberLabel","isLineWithError","re","seq","parsers","numParsers","accum","seqMap","mapper","apply","results","alt","sepBy1","many","rs","regexp","group","assertRegexp","anchored","anchoredRegexp","fullMatch","groupMatch","succeed","lookahead","eof","msg","formatError","or","alternative","wrap","leftParser","rightParser","middle","thru","wrapper","tieWith","assertArray","tie","prevResult","atMost","atLeast","init","fn","contramap","promap","mark","end","sepBy","notFollowedBy","text","desc","reply","fallback","ap","chain","of","digit","optWhitespace","cr","lf","newline","Parsimmon_many","Parsimmon_ofLazy","Parsimmon_digit","Parsimmon_seperateBy","others","Parsimmon_between","skipped","Parsimmon_map","Parsimmon_choose","ps","Parsimmon_satisfy","Parsimmon_str","Parsimmon_optionalWhitespace","Parsimmon_stringReturn","Parsimmon_seq2","Parsimmon_concat","strings","Parsimmon_seq3","Json","jint","negJint","jfloat","jnumber","Item","jbool","jnull","stringLiteral","Parsimmon_oneOf","anyCharSnippet","otherParser","Parsimmon_orTry","tuple","c_1","withWhitespace","jvalue","comma","json$004080$002D1","jsonParser","InteropUtil_isBigInt","InteropUtil_isObjectLiteral","SimpleJson_parse","Parsimmon_parse","SimpleJson_tryParse","SimpleJson_toString","arg_4","SimpleJson_toPlainObject","value_3","jsObject","enumerator_1","SimpleJson_stringify","JSON","jsonValue","InteropUtil_isDateOffset","SimpleJson_parseNative$0027","$007CNativeString$007C_$007C","$007CNativeNumber$007C_$007C","$007CNativeBool$007C_$007C","$007CNull$007C_$007C","$007CNativeArray$007C_$007C","$007CNativeObject$007C_$007C","object","value_5","toList_1","map_3","SimpleJson_parseNative","ok","Uri","uri","isAbsoluteUri","URL","tryCreateWithKind","original","tryCreateWithBase","baseUri","relativeUri","tryCreateImpl","kindOrUri","tryCreate","out","decodeURIComponent","asUrl","absoluteUri","href","scheme","protocol","host","includes","absolutePath","pathname","query","isDefaultPort","port","pathAndQuery","fragment","hash","originalString","_bitsize","lessOrEqual","getMaxValue","getPrefix","fromString","DateTimeOffset","checkOffsetInRange","offsetMatch","fromUnixMilliseconds","fromDayNumber","dayNumber","ticks","fromDateTime","Date_year","Date_month","Date_day","toDateTime","dd","guidRegex","guidRegexNoHyphen","guidRegexHex","hyphenateGuid","wsTrimAndLowered","_len5","_key5","littleEndian","getBytesInt32","DataView","buffer","byteOffset","byteLength","setInt32","getBigInt64","SetTreeLeaf$1","SetTreeLeaf$1_$ctor_2B595","SetTreeLeaf$1__get_Key","SetTreeNode$1","SetTreeNode$1_$ctor_5F465FC9","SetTreeNode$1__get_Left","SetTreeNode$1__get_Right","SetTreeNode$1__get_Height","SetTreeModule_countAux","t_mut","tn","SetTreeModule_count","SetTreeModule_mk","tn_1","t2_1","SetTreeModule_rebalance","t2_3","tn_2","t_3","t2_4","tn_3","t2_2","SetTreeModule_add","SetTreeModule_empty","SetTreeModule_spliceOutSuccessor","SetTreeModule_remove","SetTreeModule_mem","SetTreeModule_iter","SetTreeModule_SetIterator$1","SetTreeModule_collapseLHS","x2","xn","SetTreeModule_mkIterator","SetTreeModule_current","SetTreeModule_alreadyFinished","SetTreeModule_notStarted","SetTreeModule_mkIEnumerator","SetTreeModule_moveNext","SetTreeModule_compare","l1_mut","l2_mut","SetTreeModule_compareStacks","l1","x1_3","x2_3","x1n_2","x2n_2","t1_6","x1_4","t2_6","x2_4","x1n_3","x2n_3","matchResult_1","t1_7","x1_5","t2_7","x2_5","x1n_4","x2n_4","c_3","x2n_5","c_2","matchResult_2","t1_8","x1_6","t2_8","x2_6","x1n_5","x2n_6","matchResult_3","t1_2","x1","x2_1","x1n","x2n","matchResult_4","t1_4","x1_2","x2_2","x1n_1","x2n_1","SetTreeModule_copyToArray","SetTreeModule_ofArray","folder_1","SetTreeModule_ofSeq","fold_2","SetTreeModule_ofList","SetTreeModule_mkFromEnumerator","FSharpSet","FSharpSet__ComputeHashCode","FSharpSet__get_Comparer","FSharpSet__get_Tree","FSharpSet__get_Count","FSharpSet__Contains","FSharpSet_$ctor","set$","FSharpSet__Add","FSharpSet__Remove","FSharpSet__get_IsEmpty","FSharpSet_Empty","Convert_insideBrowser","window","document","Convert_isDefined","Convert_usingFable3","Convert_InternalMap","Convert_flattenMap","Convert_$007CMapKey$007C_$007C","Convert_generateMap","json","Convert_$007CMapEmpty$007C_$007C","Convert_$007CMapOne$007C_$007C","Convert_$007CMapNode$007C_$007C","leftMap","rightMap","Convert_flatteFable3Map","matchValue_4","Convert_flattenFable3Lists","linkedList","Convert_arrayLike","Convert_unionOfRecords","Convert_isRecord","Convert_optional","Convert_isQuoted","Convert_betweenQuotes","Convert_removeQuotes","Convert_fromJsonAs","input_mut","typeInfo_mut","foundCase","foundCase_1","testExpr","values_8","typeInfo","value_4","value_6","value_7","value_8","value_9","value_10","value_11","value_12","value_13","value_14","value_15","value_16","value_17","value_18","value_19","value_20","value_21","value_22","value_23","value_24","value_25","value_26","getlElemType","value_27","getElemType","value_28","getElemType_1","value_29","genericJson","value_30","value_31","value_32","value_33","value_34","value_35","value_36","value_37","value_38","value_39","value_40","value_41","value_42","getTypes_1","jsonValue_5","optionalTypeDelayed_5","value_49","value_50","caseName_4","getTypes_2","caseName_5","getTypes_3","getFields","serializedRecord","caseValue","getTypes_4","elementTypeDelayed","values_4","elementTypeDelayed_1","values_5","elementTypeDelayed_2","elementTypeDelayed_3","values_6","elementTypeDelayed_4","values_7","array_12","tupleTypesDelayed","dict_1","getTypes_5","getTypes_6","tuples","getTypes_7","tuples_1","dict_2","getTypes_8","getType","getTypes_9","getType_1","NaN","parse_1","parse_2","originalType","outArg_1","tryParse_1","arg_5","WorkerGlobalScope","parse_3","parse_4","parse_5","patternInput_2","unionType","caseName_1","values_1","caseName_2","tryFind_1","foundCase_2","foundCase_3","foundCase_4","arg_13","arg_14","expectedCases","case$_1","arg_10","case$_2","caseInfo","caseName_3","caseType","input_1","typeInfo_1","expectedCases_1","case$_3","arg_19","matchValue_5","caseIndex","fieldValues","foundCase_5","value_48","arg_21","arg_22","foundDiscriminatorKey","tryFind_2","keyword","discriminatorValueJson","discriminatorValue","foundUnionCase","tryFind_3","case$_4","case$_5","arg_24","arg_26","arg_23","unexpectedJson","expectedType","parse_6","toInt64_1","patternInput_3","caseTypes","_arg_3","case$_6","expectedCases_2","case$_7","arg_33","patternInput_4","caseTypes_1","_arg_4","case$_8","expectedCases_3","case$_9","arg_37","patternInput_5","cases_1","matchResult_5","caseName_6","caseName_8","values_3","otherwise_6","_arg_5","case$_10","expectedCases_4","case$_11","arg_41","_arg_6","case$_12","foundCaseName","caseInfo_4","expectedCases_5","_arg_7","unexpectedJson_1","expectedType_1","elementType","value_55","elementType_1","value_57","elementType_2","value_59","elementType_3","ofList_1","value_61","elementType_4","value_63","tupledArg_2","patternInput_6","recordType","_arg_8","list_10","clo_48","fieldType","fieldName","_arg_9","tupledArg_3","dictKeys","arg_50","arg_49","recordFields","arg_53","_arg_10","arg_56","patternInput_7","keyValuePair","patternInput_8","pairs_1","keyValuePair_1","output","patternInput_9","keyType_2","pairs_2","tupledArg_4","output_1","forLoopVar_1","hashset","enumerator_2","patternInput_10","valueType_5","keyType_3","matchValue_7","matchValue_8","matchResult_6","comparer_2","tree_2","comparer_3","tree_3","matchValue_10","inputJson","pairs_3","tupledArg_5","key_6","pairs_4","tupledArg_6","key_7","unknownType","arg_59","arg_60","arg_61","arg_62","Convert_quoteText","inputText","escapable","meta","Convert_serialize","value_mut","toString_3","map_4","element_1","element_2","element_3","element_4","elementType_5","element_5","value_91","usedCase","find_1","serializedFields_1","serializedValues","serializedKey","serializedValue","serializedValues_1","serializedKey_1","serializedValue_1","tupleTypes","index_1","element_6","Proxy_proxyFetch","typeName","func","funcArgs","argumentCount","returnTypeAsync","binaryInput","route","baseUrl","Proxy_combineRouteWithBaseUrl","funcNeedParameters","contentType","inputArgumentTypes","executeRequest","Proxy_isAsyncOfByteArray","onOk","serializer","typ_mut","Proxy_getReturnType","requestBody","responseType","xhr_1","withCredentials_4","statusCode","response_1","responseAsBlob","Blob","blob","readAsText","response_2","returnType_1","requestBody_1","responseText","response_3","parsedJson","arg0","arg1","arg2","arg3","arg4","arg5","arg6","arg7","matchValue_6","inputArguments","arg_9","RemotingModule_createApi","clo","RemotingModule_withRouteBuilder","builder","Remoting_buildProxy_64DC51C","schemaType","fieldTypes","delegateArg","delegateArg_1","delegateArg_2","delegateArg_3","delegateArg_4","delegateArg_5","delegateArg_6","delegateArg_7","delegateArg_8","delegateArg_9","delegateArg_10","delegateArg_11","delegateArg_12","delegateArg_13","delegateArg_14","delegateArg_15","delegateArg_16","delegateArg_17","delegateArg_18","delegateArg_19","delegateArg_20","delegateArg_21","delegateArg_22","delegateArg_23","delegateArg_24","delegateArg_25","delegateArg_26","delegateArg_27","delegateArg_28","delegateArg_29","delegateArg_30","delegateArg_31","delegateArg_32","delegateArg_33","delegateArg_34","ContactType","Version","Major","Minor","Patch","Build","build","ChangelogEntry","Date$","Details","Changelog","ProductInformation","Name","LastUpdatedAt","Title","Description","Graphics","Authors","Contacts","WebSite","UserGuide","Support","ChangeLog","defaultWeb","defaultAuthors","defaultContacts","UnifiedRecord","UnifiedRecord_$reflection","EditHelperData$1","FrequentTags","RecentRecords","EditHelperData$1_$reflection","gen0","EditHelperData$1__GetFrequentTags","RecordService$1","Edit","GetRecord","GetRecords","SearchGeneral","SearchByTags","GetEditHelperData","RecordService$1_$reflection","DiaryModule","initialTimestamp","latestTimestamp","DiaryModule__get_Changelog","DiaryModule__get_CurrentVersion","RegisteredTypes","diaryService","reviewService","interactionService","unifiedService","GetFrequentTags","reminderService","GetReminders","MarkReminderDismissed","nameConstraints","nameName","validateName","getNameErrors","descriptionConstraints","descriptionName","validateDescription","description","getDescriptionErrors","instructionsConstraints","instructionsName","validateInstructions","instructions","getInstructionsErrors","weightConstraints","weightName","validateWeight","weight","getWeightErrors","repetitionsConstraints","repetitionsName","validateRepetitions","repetitions","getRepetitionsErrors","WorkoutRecord","WorkoutId","Progress","FinishTime","WorkoutRecord_$reflection","WorkoutRecord_Default_Z524259C1","workoutId","RepsWithWeightRecord","ExerciseId","WorkoutRecordId","Repetitions","Weight","RepsWithWeightRecord_$reflection","RepsWithWeightRecord__E1RMDisplay","RepsWithWeightRecord__E1RM","RepsWithBodyWeightRecord","RepsWithBodyWeightRecord_$reflection","EnduranceRecord","DistanceKm","Calories","EnduranceRecord_$reflection","IntervalsDurationRecord","NumExercises","WorkDurationSec","RestDurationSec","IntervalsDurationRecord_$reflection","IntervalsRepsRecord","WorkRepetitions","IntervalsRepsRecord_$reflection","FitnessSearchOptions","DateFrom","DateTo","FitnessEditHelperData","FitnessEditHelperData_$reflection","FitnessEditHelperData__GetFrequentTags","Exercise","Instructions","Categories","Exercise_$reflection","ExerciseRecordAddingInfo$1","ExerciseRecords","ExerciseRecordAddingInfo$1_$reflection","AddMany","GetExerciseRecords","GetExerciseRecordAddingInfo","SearchRecords","Workout","WorkoutType","Schedule","Workout_$reflection","TrainingPlan","TrainingPlan_$reflection","ExerciseRecord","ExerciseRecord_$reflection","WorkoutLog","Workouts","Exercises","RecentWorkoutRecords","RecentExerciseRecords","FitnessHierarchy","Favourites","TrainingPlans","Favourite","TrainingPlanData","WorkoutData","WorkoutCircuitData","WorkoutRecords","TrainingPlanWorkoutRecords","WorkoutRecordType","FitnessModule","FitnessModule__get_Changelog","FitnessModule__get_CurrentVersion","Request_Login","Username","Password","IsPersistent","Request_ExternalAuthScheme","Response_SiteSettings","FitnessContentTypes","Response_ContentTypeDescriptor","Response_fullNameConstraints","Constraints_regexConstraint","regex","Response_fullNameName","Response_validateFullName","Response_getFullNameErrors","Response_dateOfBirthName","Response_getDateOfBirthErrors","dateOfBirth","Response_notInTheFuture","Response_validateDateOfBirth","Response_ProfileInfo","IsPrimary","FullName","DateOfBirth","Gender","Country_IsoCode","ActiveWorkout","Response_ProfileInfo_$reflection","Response_UserInfo","Email","ReadOnly","Profiles","SiteSettings","ServerVersion","ClientConfigVariables","Response_UserInfo_$reflection","Response_AnonymousData","Response_AvailableUserInfo","PageFormat","StaticPage","Format","Body","Language","ContactData","Subject","Message","AnonymousService_RouteBuilder","SummaryEntry","ContentType","Count","Icons","Icons__ToIcon","CompositeIcons","CompositeIcons__ToElement","first","classes","Fa_stack","stack2FaIcons","lastProfileIdKey","Session","LoggedIn","UserInfo","CurrentProfile","Session__GetCurrentName","userInfo","profileId","Session__GetCurrentProfileId","Response_ProfileInfo__DisplayName","pr","Session__GetCurrentProfile","localStorage","getItem","Session__GetActiveWorkoutRecord","Session__GetActiveWorkoutId","record","Session__SetActiveWorkoutRecord_Z2D8A2414","activeRecord","bind$0040","newProfile","profile","newProfiles","profile_1","Session__SiteSettings","Config_placeLookupId","Config_variable","Config_releaseVersion","Config_isDemoUser","session","username","Config_defaultDateForNow","Config_getDefaultDiaryDate","Config_getUserTimeZone","temperatureConstraints","temperatureName","validateTemperature","temperature","getTemperatureErrors","pressureConstraints","systolicName","diastolicName","getPressureErrors","pressure","validateSystolic","validateDiastolic","WeightRecord","WeightRecord_$reflection","TemperatureRecord","Temperature","TemperatureRecord_$reflection","BloodPressureRecord","Systolic","Diastolic","BloodPressureRecord_$reflection","bodilyFunctions","duringSleepOptions","bodilyFunctionsEmojis","BodilyFunctionsRecord","FunctionType","DuringSleep","BodilyFunctionsRecord_$reflection","PhysicalSearchOptions","PhysicalModule","PhysicalModule__get_Changelog","PhysicalModule__get_CurrentVersion","instrumentConstraints","instrumentName","validateInstrument","instrument","getInstrumentErrors","interestRateConstraints","Constraints_maxOptConstraint","Constraints_minOptConstraint","Constraints_minMaxOptConstraint","interestRateName","validateInterestRate","interestRate","getInterestRateErrors","identifierConstraints","identifierName","validateIdentifier","identifier","getIdentifierErrors","quantityConstraints","quantityName","validateQuantity","quantity","getQuantityErrors","unitPriceConstraints","Constraints_greaterThanConstraint","unitPriceName","validateUnitPrice","unitPrice","getUnitPriceErrors","currencyConstraints","currencyName","validateCurrency","getCurrencyErrors","displayCurrencyConstraints","Constraints_isValidCurrencyOpt","displayCurrencyName","validateDisplayCurrency","displayCurrency","getDisplayCurrencyErrors","isActive","activeFrom","activeTo","CurrencyValue","Currency","CurrencyValue_op_UnaryNegation_4EF17D2F","op_UnaryNegation","Group","GroupType","ParentId","DisplayCurrency","Group_$reflection","needsUnitPrice","assetType","frequencyFactors","getConversionFactor","valueToFrequency","CurrencyValue_op_Multiply_1FE6124A","adjustForFrequency","AssetValueRecord","AssetId","Quantity","UnitPrice","AssetValueRecord_$reflection","AssetInfo","GroupId","AssetType","Identifier","LatestAssetValueId","Instrument","InterestRate","ActiveFrom","ActiveTo","AssetInfo_$reflection","AssetInfo__GetValue_Z33CCF5CA","isLiability","CashflowInfo","CashflowType","Frequency","CashflowInfo_$reflection","CashflowInfo__GetValue","CashflowInfo__IsActive_7F9DDECF","GroupNode","Data","ChildNode$","Cashflow","noneOrPred","pred","stringFilter","stringsFilter","EntryFilter","Content","EntryFilter_get_Empty","FinancialHierarchy","Groups","Assets","Cashflows","LatestValues","FxRates","FinancialHierarchy__BuildTree","groupType","hasFilter","groupMapping","group_1","filter_2","cashflow","EntryFilter__Match_4FDF7BFC","compare_1","assetMappings","asset","cashflow_1","EntryFilter__Match_Z6FD9FBA3","equals_1","compare_2","cashflowMappings","cashflow_3","cashflow_2","EntryFilter__Match_13C44C26","sumCurrencyValues","targetCurrency","parentDisplayCurrency","groupNode","group_2","list_12","group_3","asset_1","cashflow_4","group_4","finalTL","list_17","group_5","FinancialModule","FinancialModule__get_Changelog","FinancialModule__get_CurrentVersion","Registry$1","modules","lookup","Registry$1_$ctor_Z1FA48BC9","Registry$1__get_Modules","a_1","b_1","ofFunc","State$1","visited","unvisited","StateModule_mkState","custom","tipe","stringToSomething","i32","str_1","remaining","s_1","subValue","arg10$0040","StateModule_map","toKeyValuePair","segment","Sub_Internal_SubId_toString","subId","Sub_Internal_Fx_tryStop","Sub_Internal_Fx_stop","subs","Sub_Internal_Fx_change","dupes","toStop","toKeep","toStart","Sub_Internal_Fx_warnDupe","Sub_Internal_Fx_tryStart","Sub_Internal_NewSubs_calculate","Sub_Internal_NewSubs_update","newKeys","newSubs","reduceRight","foldBack_1","Sub_Internal_empty","Sub_Internal_diff","activeSubs","integralRangeStep","step","stop","zero","stepFn","stepComparedWithZero","stepGreaterThanZero","comparedWithLast","makeRangeStepFunction","unfold","st_1","Enumerator_unfold","rangeDouble","RingState$1","RingBuffer$1","RingBuffer$1__Pop","__","wix","rix","rix$0027","Program$4","update","subscribe","view","setState","termination","ProgramModule_view","program","Navigable$1","Route","RouteModule_i64","RouteModule_curry2","RouteModule_toHash","param_1","RouteModule_routeParser","parseBefore","parseAfter","parseBefore_4","parseBefore_2","parseAfter_2","parseBefore_6","parseBefore_10","parseBefore_8","parseAfter_8","parseBefore_14","parseBefore_12","parseAfter_12","parseBefore_18","parseBefore_16","parseAfter_16","parseBefore_22","parseBefore_20","parseAfter_20","parseBefore_26","parseBefore_24","parseAfter_24","parseBefore_30","parseBefore_28","parseAfter_28","parseBefore_34","parseBefore_32","parseAfter_32","parseBefore_38","parseBefore_36","parseAfter_36","parseBefore_40","parseAfter_40","parseBefore_42","parseAfter_42","parseBefore_46","parseBefore_44","parseAfter_44","parseAfter_46","parseBefore_50","parseBefore_48","parseAfter_48","parseAfter_50","parseBefore_54","parseBefore_52","parseAfter_52","parseAfter_54","parseBefore_60","parseBefore_58","parseBefore_56","parseAfter_56","parseAfter_58","parseBefore_64","parseBefore_62","parseAfter_62","parseAfter_64","parseBefore_70","parseBefore_68","parseBefore_66","parseAfter_66","parseAfter_68","parseBefore_74","parseBefore_72","parseAfter_72","parseAfter_74","parseBefore_80","parseBefore_78","parseBefore_76","parseAfter_76","parseAfter_78","parseBefore_84","parseBefore_82","parseAfter_82","parseAfter_84","parseBefore_90","parseBefore_88","parseBefore_86","parseAfter_86","parseAfter_88","parseBefore_92","parseAfter_92","parseBefore_96","parseBefore_94","parseAfter_94","parseBefore_98","parseAfter_98","parseBefore_100","parseAfter_100","parseBefore_104","parseBefore_102","parseAfter_102","parseAfter_104","parseBefore_110","parseBefore_108","parseBefore_106","parseAfter_106","parseAfter_108","parseBefore_116","parseBefore_114","parseBefore_112","parseAfter_112","parseAfter_114","parseBefore_120","parseBefore_118","parseAfter_118","parseAfter_120","parseBefore_126","parseBefore_124","parseBefore_122","parseAfter_122","parseAfter_124","parseBefore_132","parseBefore_130","parseBefore_128","parseAfter_128","parseAfter_130","parseBefore_134","parseAfter_134","parseBefore_138","parseBefore_136","parseAfter_136","parseAfter_138","parseBefore_144","parseBefore_142","parseBefore_140","parseAfter_140","parseAfter_142","parseBefore_150","parseBefore_148","parseBefore_146","parseAfter_146","parseAfter_148","parseBefore_152","parseAfter_152","parseBefore_160","parseBefore_158","parseBefore_156","parseBefore_154","parseAfter_154","parseAfter_156","parseBefore_168","parseBefore_166","parseBefore_164","parseBefore_162","parseAfter_162","parseAfter_164","queryParser","parseBefore_176","parseBefore_174","parseBefore_172","parseBefore_170","parseAfter_170","parseAfter_172","parseBefore_182","parseBefore_180","parseBefore_178","parseAfter_178","parseAfter_180","parseBefore_188","parseBefore_186","parseBefore_184","parseAfter_184","parseAfter_186","parseBefore_194","parseBefore_192","parseBefore_190","parseAfter_190","parseAfter_192","state_2","state_5","Item_1","state_8","Item_2","state_10","state_13","Item_3","state_15","state_18","Item_4","state_20","state_23","Item_5","state_25","state_28","Item_6","state_30","state_33","Item_7","state_35","state_38","Item_8","state_40","state_43","Item_9","state_45","state_47","state_49","state_51","state_53","state_55","state_57","state_59","state_61","state_63","Item_10","state_65","state_67","state_70","state_72","state_74","Item_11","state_76","state_78","state_81","state_83","state_85","Item_12","state_87","state_89","state_92","state_94","state_96","Item_13","state_98","state_100","state_103","state_105","Item_14","state_107","state_110","state_112","state_114","state_116","state_118","Item_15","state_120","state_122","state_125","Item_16","state_127","state_129","state_132","state_134","state_136","Item_17","state_138","state_140","state_143","Item_18","state_145","state_147","state_150","state_152","state_154","state_156","Item_19","state_158","state_160","state_163","Item_20","state_165","state_167","state_170","state_172","state_174","state_176","state_179","state_182","z","RouteModule_curry3","state_184","state_186","state_189","state_192","state_194","state_196","state_198","state_201","state_204","Item_28","state_206","state_208","state_211","Item_29","state_213","state_215","state_218","Item_30","state_220","state_222","state_225","state_228","oneOf","Router_href","Router_newUrl","newUrl","history","pushState","ev","CustomEvent","dispatchEvent","Router_modifyLocation","location","button","btnView","List_Option","list","props_1","icon","Actions","NewNow","NewDate","View","ViewAll","IconType","IconType__ToIcon","ModuleDescriptor","EntryDescriptor","IsFavourite","EntryDescriptor__GetButton","colour","isDisabled","onClick","children_4","icon_1","className","getModuleNewNowButtons","clientModule","list_3","des","EntryDescriptor__GetNewNowButton_Z1FBCCD16","EntryDescriptors","getModuleViewAllButtons","DiaryClientModule","Descriptor","DiaryClientModule_$ctor","PhysicalClientModule","PhysicalClientModule_$ctor","FinancialClientModule","FinancialClientModule_$ctor","FitnessClientModule","FitnessClientModule_$ctor","clientModuleRegistry","Helpers_combineClasses","cn","Helpers_extractClasses","Class","closeable","notificationClass","elems","random","newGuid","getElementById","hidden","closeById","container","label","Item_Option","Item_generateAnchor","Item_a","RatingStarsProps","ratingStars","react_rating_stars_component","card","header","footer","Header_Title_Option","Header_icon","Header_title","Footer_itemView","Footer_div","MarkdownRange","StartLine","StartColumn","EndLine","EndColumn","MarkdownRangeModule_zero","MarkdownRangeModule_mergeRanges","ranges","startRange","endRange","maxBy","r_1","List_partitionWhile","_arg_mut","hd_1","tl_1","tail_6","List_partitionWhileLookahead","List_partitionUntil","List_partitionUntilLookahead","List_iterInterleaved","g_mut","List_partitionUntilEquals","endl","loop_1","start_1_mut","list_1_mut","start_1","list_1","Tree$1","Item1","Item2","Tree_takeAtLevel","indent","i_1","tail_2","tail_5","Tree_takeDeeperThan","StringPosition_$007CWhiteSpace$007C_$007C","_n","StringPosition_$007CUnindented$007C_$007C","StringPosition_$007CTrimBoth$007C","inputRecord","trimmedStart","trimmed","StringPosition_$007CTrimEnd$007C","StringPosition_$007CTrimStartAndCount$007C","StringPosition_$007CStartsWithNTimesTrimIgnoreStartWhitespace$007C_$007C","beforeStart","startAndRest","startNum","windowSize","max_1","windowed_1","windowed","StringPosition_$007CStartsAndEndsWith$007C_$007C","starts","ends","StringPosition_$007CStartsWithRepeated$007C_$007C","repeated","ln","StringPosition_$007CStartsWithWrapped$007C_$007C","StringPosition_$007CEqualsRepeated$007C_$007C","_arg1_","_arg1__1","_n_1","List_$007CBracketDelimited$007C_$007C","startc","endc","x_16","xs_16","x_10","xs_10","x_11","xs_11","x_12","xs_12","x_13","xs_13","x_14","xs_14","List_$007CAsString$007C","Lines_$007CTrimBlankStart$007C","takeWhile_1","$007CLet$007C","MarkdownListKind","MarkdownColumnAlignment","MarkdownSpan","MarkdownParagraph","getLinkAndTitle","$007CDelimitedMarkdown$007C_$007C","bracket","loop_2","start_1_1_mut","list_1_1_mut","start_1_1","list_1_1","x_1_1","xs_1_1","y_1_1","ys_1_1","$007CDelimitedLatexDisplayMath$007C_$007C","$007CDelimitedLatexInlineMath$007C_$007C","$007CIndirectLink$007C_$007C","link","body_1","link_1","rest_1","body_2","link_2","rest_2","$007CDirectLink$007C_$007C","$007CEmphasised$007C_$007C","_tail","body_4","$007CHtmlEntity$007C_$007C","match$0027","entity","ParsingContext","Links","Newline","IsFirst","CurrentRange","ParseOptions","ParsingContext__get_ParseNonCodeAsOther","parseChars","matchValue_30","n_3","inputRecord_3","loop_13","loop_12","rest_11","_s","str_3","loop_4","str_5","loop_6","str_7","loop_8","str_9","loop_10","str_11","accLiterals","n_1","inputRecord_1","range","ctx_1","rest_6","rest_7","rest_8","c_6","rest_9","rest_10","activePatternResult_21","activePatternResult_22","input_26","matchResult_20","c_5","rest_5","activePatternResult_23","startl_10","endl_10","input_27","start_1_10_mut","list_1_11_mut","start_1_10","list_1_11","matchResult_21","x_1_10","xs_1_10","y_1_10","ys_1_10","matchValue_24","post_10","activePatternResult_24","input_28","strs_5","i_5","input_29","loop_11","startl_11","endl_11","input_30","start_1_11_mut","list_1_12_mut","start_1_11","list_1_12","matchResult_22","x_1_11","xs_1_11","y_1_11","ys_1_11","matchValue_26","post_11","input_16","matchResult_14","rest_3","startl_6","endl_6","input_17","start_1_6_mut","list_1_7_mut","start_1_6","list_1_7","matchResult_15","x_1_6","xs_1_6","y_1_6","ys_1_6","matchValue_16","post_6","input_18","strs_3","i_3","input_19","loop_7","startl_7","endl_7","input_20","start_1_7_mut","list_1_8_mut","start_1_7","list_1_8","matchResult_16","x_1_7","xs_1_7","y_1_7","ys_1_7","matchValue_18","post_7","input_6","matchResult_8","startl_2","endl_2","input_7","start_1_2_mut","list_1_3_mut","start_1_2","list_1_3","matchResult_9","x_1_2","xs_1_2","y_1_2","ys_1_2","post_2","input_8","strs_1","input_9","loop_3","startl_3","endl_3","input_10","start_1_3_mut","list_1_4_mut","start_1_3","list_1_4","matchResult_10","x_1_3","xs_1_3","y_1_3","ys_1_3","post_3","startl","input_2","input_3","input_4","startl_1","endl_1","input_5","list_1_2_mut","list_1_2","matchResult_7","post_1","input_11","matchResult_11","startl_4","endl_4","input_12","start_1_4_mut","list_1_5_mut","start_1_4","list_1_5","matchResult_12","x_1_4","xs_1_4","y_1_4","ys_1_4","matchValue_12","post_4","input_13","strs_2","i_2","input_14","loop_5","startl_5","endl_5","input_15","start_1_5_mut","list_1_6_mut","start_1_5","list_1_6","matchResult_13","x_1_5","xs_1_5","y_1_5","ys_1_5","matchValue_14","post_5","activePatternResult_18","input_21","matchResult_17","c_4","rest_4","activePatternResult_19","startl_8","endl_8","input_22","start_1_8_mut","list_1_9_mut","start_1_8","list_1_9","matchResult_18","x_1_8","xs_1_8","y_1_8","ys_1_8","matchValue_20","post_8","activePatternResult_20","input_23","strs_4","i_4","input_24","loop_9","startl_9","endl_9","input_25","start_1_9_mut","list_1_10_mut","start_1_9","list_1_10","matchResult_19","x_1_9","xs_1_9","y_1_9","ys_1_9","matchValue_22","post_9","ctx_2","ctx_3","ctx_4","inputRecord_2","rng","matchValue_27","n_2","rest_12","rest_13","_e_1","_s_1","rest_14","activePatternResult_25","activePatternResult_26","activePatternResult_27","startl_12","endl_12","input_31","start_1_12_mut","list_1_13_mut","start_1_12","list_1_13","x_1_12","xs_1_12","y_1_12","ys_1_12","matchValue_29","post_12","activePatternResult_28","ctx_5","ctx_6","ctx_7","matchValue_31","n_4","inputRecord_4","code","patternInput_11","ctx_8","_e_2","_s_2","rest_15","body_3","rest_16","link_4","rest_17","link_5","rest_18","body_5","link_6","rest_19","body_6","link_8","original_1","rest_20","body_7","rest_21","rest_22","rest_23","x_15","xs_15","activePatternResult_29","startl_13","endl_13","input_32","start_1_13_mut","list_1_14_mut","start_1_13","list_1_14","x_1_13","xs_1_13","y_1_13","ys_1_13","matchValue_33","post_13","activePatternResult_30","activePatternResult_31","activePatternResult_32","$007CAutoLink$007C_$007C","activePatternResult_33","activePatternResult_34","activePatternResult_35","activePatternResult_36","activePatternResult_37","activePatternResult_38","activePatternResult_39","append_1","patternInput_12","ctx_9","patternInput_13","patternInput_14","ctx_10","patternInput_15","ctx_11","patternInput_16","ctx_12","patternInput_17","patternInput_18","ctx_13","patternInput_19","ctx_14","parseSpans","trimSpaces","numSpaces_mut","s_mut","numSpaces","$007CHeading$007C_$007C","noHash","line1","line2","header_1","line1_1","line2_1","header_2","line1_2","ln_1","n_5","tupledArg_7","$007CHorizontalRule$007C_$007C","arg_mut","u","$007CFencedCodeBlock$007C_$007C","indent_1","indent_2","header_3","indent_3","lines_4","num_3","start_6","takenLine_3","endStr","h_1","codeLines","codeWithoutIndent","langString","ignoredString","tl","takenLine2","hd","$007CListStart$007C_$007C","li","startIndent2","_spaces_1","skipNumCount","startIndent_1","$007CSkipSomeNumbers$007C_$007C","startIndent2_1","$007CListItems$007C_$007C","prevSimple","continued","endIndent","startIndent","takenLine","$007CLinesUntilListOrWhite$007C","$007CLinesUntilListOrUnindented$007C","line_1","$007CListItem$007C_$007C","nextSimple","takenLines","takenLines2","pipeTableFindSplits","delim","cLstToStr","ptfs","delim_1_mut","line_1_mut","delim_1","_body","_body_1","_body_2","_body_3","$007CTableCellSeparator$007C_$007C","tupledArg_8","StringPosition_$007CStartsWith$007C_$007C","$007CPipeTableRow$007C_$007C","delimiters","$007CPipeSeparatorRow$007C_$007C","alignments","$007CEmacsTableLine$007C_$007C","grid","check","forAll_1","$007CBlockquoteStart$007C_$007C","$007CTakeParagraphLines$007C_$007C","$007CBlockquote$007C_$007C","lines_1","takenLines_1","$007CEmptyBlockquote$007C_$007C","quoteLine","takenLines2_1","$007CLinesUntilBlockquoteEnds$007C","updateCurrentRange","parseParagraphs","loc","yaml","yamlTextLines","tuple_1","$007CYamlFrontmatter$007C_$007C","moreLines","nestUnmatchingItems","formatTree","unifySimpleProperty","takenLines_7","all","wrapped","tupledArg_9","tupledArg_10","tupledArg_11","$007CLinkDefinition$007C_$007C","ignoredLine","lines_2","_numspaces","_numspaces_1","normalized","Lines_$007CTakeCodeBlock$007C_$007C","Lines_$007CTrimBlank$007C","$007CNestedCodeBlock$007C_$007C","takenLines_2","rows","takenLines_3","takenLines2_3","grid_1","emptyCur","flag_mut","takenLines2_mut","headers_mut","prevRows_mut","cur_mut","lines_1_mut","flag","prevRows","others_1","parts_1","takenLine2_1","others_2","takenLine2_2","others_3","takenLine2_3","$007CEmacsTableBlock$007C_$007C","getTableRows","size_mut","takenLinesAcc_mut","lines_mut","takenLinesAcc","columns","takenLine_1","takenLine_2","alignments_1","$007CPipeTableBlock$007C_$007C","lines_3","takenLines2_4","first_1","_takenLine1_1","first_4","first_5","_n_2","first_6","takenLine_4","_n_3","first_7","takenLine_5","s_2","res_1","s_3","$007CLatexBlock$007C_$007C","env","takenLines_4","takenLines_5","Tree_ofIndentedList","items_1","List_nestUnderLastMatching","nodes","nested_1","tuple_2","nodes_1","takenLines_6","code_3","lines_6","takenLines_8","takenLines2_9","html","html_1","$007CHtmlBlock$007C_$007C","tuple_3","tuple_4","endsWithTwoSpaces","StringPosition_$007CTrimStart$007C","Lines_$007CTrimParagraphLines$007C","takenLines_9","tuple_5","tuple_6","FableTextWriter","FableTextWriter_$ctor","FableTextWriter__Write_Z721C83C5","MarkdownUtils_FormattingContext","Substitutions","ResolveApiDocReference","DefineSymbol","MarkdownUtils_mapText","MarkdownUtils_mapSpans","f_","f__1","md","text_1","text_2","MarkdownUtils_mapInlineCode","MarkdownUtils_mapParagraphs","md_1","md_2","md_3","MarkdownUtils_applySubstitutionsInMarkdown","MarkdownUtils_applySubstitutionsInText","MarkdownUtils_applyCodeReferenceResolver","htmlEncode","htmlEncodeQuotes","$007CLookupKey$007C_$007C","UniqueNameGenerator","generated","FormattingContext","LineBreak","Writer","WrapCodeSnippets","GenerateHeaderAnchors","ParagraphIndent","formatSpan","span","formatSpans","Render","title_1","title_2","title_3","withInner","formatParagraph","paragraph","formatParagraphs","anchorName","spans","gather","gathers","spans_1","UniqueNameGenerator__GetName_Z721C83C5","formatAnchor","langCode","aligns","enumerator_3","enumerator_4","forLoopVar_2","enumerator_5","enumerator_6","paragraph_3","enumerator_7","paragraphs","smallCtx","smallBreak","bigCtx","bigBreak","MarkdownDocument","links","Markdown_WriteHtml_27D81AD6","doc","writer","substitutions","crefResolver","newline_1","substitutions_1","crefResolver_1","generateAnchors","paragraphs_1","formatMarkdown","MarkdownDocument__get_Paragraphs","Markdown_ToHtml_1BFEAEDB","markdownText","wr","Markdown_ToHtml_1A9D76FF","parseOptions","parseOptions_1","MarkdownDocument_$ctor_Z7AE59E28","Markdown_Parse_7B74E5F5","heading","ISize_ToString_2283FB3F","screen_4","size_4","screen_5","size_5","msg_1","arg_1_1","arg_2_1","size_3","ISize","suffix","ofOffset","diaryModule","DisplayRecordData$1","EditFun","TaglineFun","TagsFun","DisplayFun","AddDayLink","countWordsInRecord","countDiaryWords","countInteractionWords","renderTagTree","leafIcon","parentIcon","treeToMenu","Item_li","caption_1","isActive_2","children_2","children_7","menu","renderTag","color","customClass","displayEntry","editFun","deleteFun","tagline","displayContent","wordCount","currentTz","toRFC2822","wordCountInfo","placeId","placeName","latitude","longitude","content_1","Option_1","Option_2","Fa_i_1","confirm","displayDiaryContent","content_2","dangerouslySetInnerHTML","__html","displayReviewContent","ratingStars_1","newValue","displayInteractionContent","Item_Option_1","Option_3","displayUnifiedEntries","disabled","isMultiDayList","date_1","last_1","entry","displayDiaryEntry","displayInteractionEntry","displayReviewEntry","displayReminders","markDismissedFun","Option_6","reminder","Option_4","followupDate","formatDistance","Option_5","displayReminder","record_1","Model","Reminders","Error$","InProgress","Model_Default","Msg","anonService","Contact","GetStaticPage","About","Login","GetAvailableUserInfo","commonAuthService","Logout","GetUserInfo","UpdateEventTimestamp","DeleteRecord","GetProfile","AddProfile","EditProfile","DeleteProfile","GetContentSummary","Information","Summaries","displaySummary","summary","resolveProperty","getId","getExerciseId","getProperties","names","help","IInputType","ofType","valueOrDefault","select","parseOptionsForInput","parseOptionsForLabel","radioInline","inputType","hasId","inputElement","labelElement","props_3","genericElement","checkbox","SelectItem","SelectOption","Interop_createDefaultFilter","selectItems","searchQuery","jsItem_1","filteredItems","groupItem","jsItem","Interop_defaultProps","filterOptions","createCoords","lat","lng","accuracy","speed","createPosition","coords","LocationDescriptor","Position","DistanceFromCurrent","UtcOffsetMin","zeroPosition","getOrElse","elseValue","AutocompleteService","StrictBounds","Model__UpdateEventInfo_Z45EFA9A8","newEventInfo","prepareEventInfoForSubmit","model","clientTzOffsetMin","eventPublisher","Event$","triggerUpdateLocation","registerPlacesAutoCompleteImpDelays","commonInitCmds","waitForElementPromise","iteration","totalDelay","delayMs","log","resolve","pr_2","Loader","apiKey","version","libraries","load","google_2","maps","PromiseBuilder__Run_212F1D4B","placesAutoComplete","google","inputId","places","Autocomplete","event","clearInstanceListeners","placesService","PlacesService","place","getPlace","geometry","place_id","utc_offset_minutes","request","PlaceDetailsRequest","getDetails","newPosition","address","formatted_address","updateLocation","er","reject","er_1","onError_1","er_2","er_3","initCommon","navigator","geolocation","getCurrentPosition","updateAutocompleteService","service","circle","center","radius","Circle","setRadius","setCenter","createCircle","createLatLng","options_1","bounds","getBounds","strictBounds","setOptions","eventInfoCoordinatesToPosition","latValue","lngValue","toPosition","tryUpdateLocationFromSuggestions","suggestionsFunc","currentPosition","candidates","best","bind$0040_1","bind$0040_2","position","descriptor","newModel","dispatch_1","newModel_1","newModel_2","objectFieldSetter","cloneObj","flex_form","setWorkoutRecordId","newId","FieldValidationResult","FieldValidationResult__ToColour_Z5463E381","defaultColour","FieldValidationResult__Merge_30561432","msg1","msg2","msg1_1","msg2_1","msg1_2","msg2_2","msg1_3","msg2_3","mergeResults","CustomField$1","customRender","Help","IsRequired","OnChange","Validate","_value","BaseField$1","GetterSetterBaseField$2","validate","onChange","div_1","help_2","GetterSetterBaseField$2__GetValue_2B595","GetterSetterBaseField$2__CallOnChange","newObject","GetterSetterBaseField$2__get_Placeholder","JsGetterSetterBaseField$2","objectFieldGetter","object_1","TextFieldBase$2","isTextArea","fromValue","toValue","TextFieldBase$2__ProcessOnChange","event_1","elem_1","TextField$1","TextField$1_$ctor_7EE3C92A","TextAreaField$1","TextAreaField$1_$ctor_7EE3C92A","stringToOpt","TextFieldOpt$1","TextFieldOpt$1_$ctor_773DF4C9","TextAreaFieldOpt$1","TextAreaFieldOpt$1_$ctor_773DF4C9","PasswordField$1","PasswordField$1__ProcessOnChange","PasswordField$1_$ctor_7EE3C92A","inputWithButtons","incrementFunc","isValueEmpty","callOnChange","controlColumnDetails","getButton","increment","preventDefault","Option_7","Option_8","NumericFieldBase$2","emptyValues","withButtons","strValue","NumericFieldBase$2__IsValueEmpty_2B594","currentValue","SR_inputSequenceEmpty","finalValue","NumericFieldBase$2__ProcessOnChangeEx","NumericFieldBase$2__ProcessOnChange","object_2","tryParseInt","tryParseIntOpt","tryParseDouble","tryParseDecimal","PositiveIntField$1","PositiveIntField$1_$ctor_1CFD88AD","PositiveIntOptField$1","PositiveIntOptField$1_$ctor_Z7DEF6452","PositiveFloatField$1","PositiveFloatField$1_$ctor_Z618923D6","stringToOptDecimal","DecimalField$1","empty_2","DecimalField$1_$ctor_Z1A3DC0EC","DecimalFieldOpt$1","DecimalFieldOpt$1_$ctor_6EECF8B7","BaseDateTimeField$2","convertToDate","convertFromDate","isSet","formatString","inputFunc","parsed","_err","tryParse_2","valueAsDate","BaseDateTimeField$2__ProcessOnChange","dateTimeFormatString","DateTimeField$1","DateTimeField$1_$ctor_4797505E","DateTimeOptField$1","DateTimeOptField$1_$ctor_86BCFBD","DateField$1","DateField$1_$ctor_4797505E","DurationSecsFieldBase$1","withSeconds","dateStr","oldValue","DurationSecsFieldBase$1__incrementFunc","DurationSecsFieldBase$1__isValueEmpty_Z524259A4","DurationSecsFieldBase$1__ProcessOnChange","DurationSecsField$1","DurationSecsField$1_$ctor_1CFD88AD","DurationSecsFieldWithSeconds$1","DurationSecsFieldWithSeconds$1_$ctor_1CFD88AD","LocationField$1","suggestions","onSuggestionChosen","maxNameLength","currentLocation","LocationField$1__ProcessOnChange","list_5","suggestion","distance","dist","LocationField$1__RenderSuggestion","validateChoice","choices","nextValidate","SelectField$2","convert_1","convert","Option_9","SelectField$2__ProcessOnChange","SelectField$2_$ctor_Z7732D262","RadioField$2","optionValue","caption","Option_11","_event","RadioField$2__ProcessOnChange","RadioField$2__RenderChoice","Option_10","CheckboxField$1","_error","checked","CheckboxField$1__ProcessOnChange","CheckboxField$1_$ctor_Z387AD5E5","TagsField$1","tagsPredictionValues","_isDisabled","rawValue","elems_1","onNewValue","autocompleteInput","inputProperties","mixedOptions","react_select_search","headerTag","RatingField$1","converted","RatingField$1_$ctor_B10D3B5","FlexFormFields$1","callbackOnFieldAdd","FlexFormFields$1_$ctor_Z63A200CD","FlexFormFieldsGroup$1","FlexFormFields$1__Render","FlexFormFields$1__AddField_6235DF45","FlexFormFields$1__CanSubmit_2B595","FlexFormFields$1__BuildAddField","fieldBuilder","caption0","onChange0","required","FlexFormFields$1__AddCustom_693A43B3","CustomField$1_$ctor_693A43B3","FlexFormFields$1__AddText_Z44011C05","FlexFormFields$1__AddTextOpt_Z44636648","FlexFormFields$1__AddTextArea_Z44011C05","FlexFormFields$1__AddTextAreaOpt_Z44636648","FlexFormFields$1__AddPositiveInt_ZAAC24","FlexFormFields$1__AddDecimal_7B82A45","FlexFormFields$1__AddPositiveFloat_1D6F52FB","FlexFormFields$1__AddDateTime_2636DDCF","FlexFormFields$1__AddDateTimeOpt_C9F34CC","FlexFormFields$1__AddRating_Z716E223C","FlexFormFields$1__AddDurationSecs_ZAAC24","FlexFormFields$1__AddTags_Z63D88B1E","fieldName_1","validate_1","TagsField$1_$ctor_32D33D73","FlexFormFields$1__AddSelection_158231B6","FlexFormFields$1__AddSelection_Z70244BEA","FlexFormFields$1__AddRadiosInline_Z70244BEA","RadioField$2_$ctor_14949C87","FlexFormFields$1__AddCheckbox_264AA22A","FlexFormFields$1__AddGroup_6DFDD678","FlexFormFieldsGroup$1_$ctor_38CD3B67","FlexFormState","FlexFormState__CanSubmit","FlexFormBase$1","submit","FlexFormBase$1__get_State","FlexFormBase$1__set_State_Z3615493C","FlexFormBase$1__set_SubmitCaption_Z721C83C5","FlexFormBase$1__SetState","isLoading","errorOpt","FlexFormBase$1__SetErrorOpt_6DFDD678","FlexFormBase$1__Render_2B595","isInProgress","FlexFormState__IsInProgress","buttons","cannotSubmit","FieldValidationResult__IsErrorResult","FlexFormBase$1__TriggerSubmit_2B595","FlexForm$1","FlexForm$1__get_Fields","FlexForm$1_$ctor_2ABDDB55","FlexFormTuple$2","onChangeFst","onChangeSnd","objectArg","f2_1","objectArg_1","allFields","FlexFormTuple$2__get_FieldsFst","FlexFormTuple$2__get_FieldsSnd","FlexFormTuple$2_$ctor_5AE4FFF0","noValidation","renderCurrentEventInfoDetails","smallText","isBold","space","Option_12","clientDate","locationDate","StringBuilder__get_Length","addEventInfoToFlexForm","form","LocationField$1_$ctor_455E8BE1","FlexFormFields$1__AddLocation_Z52938230","addEventInfoToFlexFormEim","eimModel","onStrictBoundsChange","renderSetStrictBounds","getSuggestions","eventInfoCoordinatesToPositionOrDefault","distanceInMetersBetweenPositions","pos2","lat1","long1","lat2","long2","rLat1","rLat2","diffLat","diffLon","asin","sin","cos","distanceInMeters","pos1","Formlet$1","CanSubmit","FlexFormWithFormlets$1","formlets","formlet","RecaptchaToken","IsRecaptchaReady","ContactSent","IsLoading","_nonEmpty","viewForm","Request","Response","Page","ViewProfile_Model","ViewProfile_Msg","AddEditProfile_Model","ProfileInfo","AddEditProfile_Msg","AddEditProfile_noValidation","AddEditProfile_genders","AddEditProfile_stringToGender","Records","PendingRequests","addPendingRequest","requestsOpt","pendingRequestDone","date_3","toDateString","diff","countStr","prevDate","nextDate","children_10","param","EntryDescriptor__GetNewDateButton","getModuleNewDateButtons","date_2","children_6","children_8","initPagingOptions","SearchType","SearchQuery","Query","SearchResults","TotalCount","Model__FetchFunc_Z524259A4","searchType","_validateSearchQuery","DataExpected","Model$2","EIMModel","EditHelperData","Model$2__IsEditing","Msg$2","dataExpected","initCommon_1","initNew","fetchAction","initEdit","recordId","submitAction","successAction","update_1","buildForm","form_1","dataExpectedItem","Model$2__IsItemReady_149A13CF","Actions$1","Model$1","DateRange","LastFetchSize","LastPagingOptions","Model$1__CanFetchMore","Msg$1","actions","pageSize","ascending","dateRange","initDateRange","dateRange_","dateRange__1","dispatch_2","dispatch_3","pagingOptions","basePagingOptions","PagingOptionsModule_optionsForNextPage","currencyDetails","SimpleJson_mapKeys","Code","Symbol$","SymbolNative","DecimalDigits","getCurrencyCaption","ccy","currenciesOptions","popularCurrenciesOptions","supportedCurrenciesForEditing","TableOption","assetValueService","GetRecordsForChart","financialService","GetHierarchy","ImportHierarchyData","GetAssetValuesForChart","AddGroup","EditGroup","DeleteGroup","AddAsset","EditAsset","DeleteAsset","GetAsset","AddCashflow","EditCashflow","DeleteCashflow","valuesToTable","deleteEntry","children_14","children_12","Tab_Option","tab","cta","Label_label","Omnicv_Shared_FinancialAPI_CurrencyValue__CurrencyValue_ToDisplayString","AssetValueData","FileUploadData","CurrentFileName","EditModel$1","createEditModel","EditMsg$1","State","FinancialTree","Model__GetCurrentFilters","FileUploadMsg","assetTypes","assetTypesLookup","cashflowTypes","cashflowTypesLookup","frequencies","optionalCurrencyChoices","getDisplayCurrency","_commonOnCancel","DisplayHierarchy_addGroup","parentOrType","newGroup","DisplayHierarchy_groupTypeToState","DisplayHierarchy_viewByGroupType","targetGroupType","DisplayHierarchy_depthToPrefix","depth","DisplayHierarchy_processGroupNode","inProgress","depth_1","node_1","DisplayHierarchy_processAsset","auto","cashflowInfo","cashflowType","DisplayHierarchy_processCashflow","DisplayHierarchy_processChildNode","DisplayHierarchy_buildTree","tree_","tree__1","totalItem","totals","DisplayHierarchy_view","updateFilter","newFilter","preamble","switchTabTrigger","targetGroup","typeOptions","event_2","elem_2","props_2","mainControlButtons","arg30$0040","progressModal","modal","busyModal","mainViewElements","DisplayHierarchy_treeToList","Main_service","Main_update","newCurrency","subMsg","subMsg_1","subMsg_2","subMsg_3","subMsg_4","dispatch_4","Groups_update","dispatch_5","Assets_update","dispatch_6","isLatest","singleton_2","assetValueRecord","Assets_updateValue","dispatch_7","_session","Cashflows_update","dispatch_8","bytes_1","DisplayHierarchy_updateImport","resultModel","Main_view","viewHierarchy","editing","Groups_viewForAddEdit","states","t_1","model_1","coreButtons","extraButtons","DisplayHierarchy_viewSelectAdd","FlexFormFields$1__AddDecimalOpt_Z2D27E1FA","Assets_viewForAddEdit","_commonOnCancelCF","Cashflows_viewForAddEdit","Assets_viewAddValue","file_1","name_12","DisplayHierarchy_viewImport","Asset","repsWithWeightRecordService","repsWithBodyWeightRecordService","enduranceRecordService","intervalsDurationRecordService","intervalsRepsRecordService","fitnessService","GetExercise","GetExercises","AddExercise","EditExercise","DeleteExercise","StartActiveWorkoutRecord","ConcludeActiveWorkoutRecord","DeleteActiveWorkoutRecord","DeleteWorkoutRecord","EditWorkoutRecord","GetWorkoutRecord","AddExerciseRecords","GetExerciseRecord","MarkExerciseFavourite","GetWorkout","GetWorkouts","AddWorkout","EditWorkout","DeleteWorkout","SetExercisesForWorkout","RemoveExerciseFromWorkout","GetWorkoutExercises","GetWorkoutExercisesCandidates","MarkWorkoutFavourite","GetWorkoutCircuitData","GetWorkoutRecords","GetTrainingPlan","GetTrainingPlans","AddTrainingPlan","EditTrainingPlan","DeleteTrainingPlan","SetWorkoutsForTrainingPlan","RemoveWorkoutFromTrainingPlan","GetTrainingPlanWorkouts","GetTrainingPlanWorkoutsCandidates","MarkTrainingPlanFavourite","GetTrainingPlanWorkoutRecords","DeleteFavourite","GetFitnessEditHelperDataTrainingPlan","GetFitnessEditHelperDataWorkout","GetFitnessEditHelperDataExercise","MoveAction","moveEntryInList","entryId","moveAction","isLast","targetIndex_1","source_1","isDone","removeAt","insertAt","FitnessAction","createFitnessListActions","moveFunc","createFitnessListAction","defaultDisplayWorkoutActions","displayWorkout","workout","finalActions","defaultDisplayExerciseForRecordingActions","displayClickableColumn","cursor","formatSeconds","displayRepsWithWeight","name_4","displayRepsWithBodyWeightRecord","displayEnduranceRecord","displayIntervalsDurationRecord","displayIntervalsRepsRecord","displayExerciseRecordCommon","deleteFunc","copyDataFunc","main","recordName","id_1","hasNotes","getExerciseRecordDisplayInfo","WorkoutRecordDescriptor","Time","WorkoutRecordDescriptor__get_GroupingKey","displayWorkoutRecord","workoutsMap","workoutRecordData_","workoutRecordData__1","workoutRecordData","displayWorkoutRecordGroup","workoutRecordLookup","descriptors","final","head_1","WorkoutRecordDescriptor_DisplayGroupAsSingle_Z40DA17B4","displayDescriptors","workoutRecordData_1","WorkoutRecord__IsActive","progress","WorkoutRecordDescriptor_FromWorkoutRecord","groupWorkoutRecords","displayWorkoutRecordsOnly","displayWorkoutLog","workoutLog","w","exercisesMap","w_1","workoutByDate","exercisesByDate","workouts","exercises","workoutElements","exercisesElements","exerciseMap","exerciseRecord_","exerciseRecord__1","exerciseRecord","record_","record__1","displayExerciseRecordEx","displayDayWorkoutLog","displayDailyExerciseRecords","group_","group__1","exerciseRecords","displayExerciseRecord","emptyRes","getE1RMFromExerciseRecord","getRepetitionsFromExerciseRecord","getSummaryFromExerciseRecords","ViewState","Entries","CandidateEntries","SelectedCandidateEntries","Model$2_Default_Z524259C1","CandidateFunctions$1","Get","Set$","GetId","Set","Common_update","getData","getEntries","updateEntries","candidateFuncs","deleteRecord","profileId_3","finalIds","profileId_7","viewState","profileId_2","candidateId","candidateIds","t$0027_mut","SetTreeModule_toList","profileId_4","newEntries","ids","x_7","x_8","finalIds_1","x_9","Common_viewSelectCandidates","getBasicInfo","selectedCandidateEntries","Common_displayCandidate","list_4","Main_Model","Main_Msg","Main_trainingPlanActions","TrainingPlan_service","TrainingPlan_displayWorkouts","forReorder","Workout_service","Workout_displayExercises","exercise","displayExerciseForRecording","Workout_view","Workout_viewReorder","activeWorkoutRecord","workoutRecords","showPlainHistory","empty_3","_workoutRecordLookup","displayWorkoutRecordGroupPlain","Workout_viewMain","Exercise_service","ExerciseRecord_service","ExerciseRecord_Model","ExerciseRecord_Model_Default_Z524259C1","ExerciseRecord_Model__GetExerciseId","ExerciseRecord_Msg","ExerciseRecord_displayProperties","data_","data__1","ExerciseRecord_displayProperty","Names","Values","Filter","Common_init","markEntryFavourite","Workouts_service","Workouts_displayWorkouts","Workouts_workoutActions","Exercises_service","Exercises_exerciseActions","Exercises_displayExercises","lowerFilter","exercise_1","Exercises_displayExercise","SimpleFormView$2","submitNewAction","submitEditAction","mainView","SimpleFormView$2__Update","SimpleFormView$2__initCommon","TimerOptions","DurationSecs","TimerOptions_$reflection","defaultTimer","RecordModel$1","RecordId","PreviousEntries","RecordModel$1_$reflection","RecordModel$1__IsEditing","RecordModel$1__GetExerciseId","RecordMsg$1","RecordMsg$1_$reflection","AddEditExerciseRecordHandler$1","createDefault","displayRecord","AddEditExerciseRecordHandler$1_$ctor_20729692","AddEditExerciseRecordHandler$1__InitCommon","withEventInfo","contentTypeId","exerciseId","initCommonNoRegistration","AddEditExerciseRecordHandler$1__InitCommonWithInfo","AddEditExerciseRecordHandler$1__Update","eventInfo_1","handlePreviousEntriesUpdate","triggerFetchExercise","midnight","todayRecords","previousRecords","lastDate","midnight_1","activeWorkoutEventInfo","sourceEventInfo","EventInfo__ClearLocation","newRecord","setId","now_1","eventInfo_6","result_4","timerCmd","timerOptions","timerEnd","finalRecord","eventInfo_8","timerOptions_1","TimerOptions__Serialise","AddEditExerciseRecordHandler$1__BuildForm","addEventInfoWithSuggestionsToFlexForm","AddEditExerciseRecordHandler$1__buildFormBase","AddEditExerciseRecordHandler$1__GetTimerOptions_Z524259C1","TimerOptions_Parse_Z721C83C5","AddEditExerciseRecordHandler$1__View","exerciseTitle","mainFormElement","timerElements","FlexFormFields$1__AddDurationSecsWithSeconds_ZAAC24","AddEditExerciseRecordHandler$1__ViewTimerOptions","equals_2","previous","AddEditExerciseRecordHandler$1__CopyData","displayDailySingleExerciseRecords","Handlers_noValidation","Handlers_displayRecord","getInfo","Handlers_repsWithWeight","_editing","_model","Handlers_repsWithBodyWeight","Handlers_endurance","FlexFormFields$1__AddPositiveIntOpt_414042FF","Handlers_intervalsDuration","Handlers_intervalsReps","Msg_$reflection","Model_$reflection","applyHandlerInit","handler","toModel","toMsg","isNew","noFetch","AddEditExerciseRecordHandler$1__InitNew","AddEditExerciseRecordHandler$1__InitEdit","initEither","lastSection","getLastSection","copyOfStruct_2","copyOfStruct_1_1","copyOfStruct_3","copyOfStruct_1_2","copyOfStruct_4","copyOfStruct_1_3","copyOfStruct_5","copyOfStruct_1_4","copyOfStruct_1","arg_1_2","arg_1_3","arg_1_4","mapModelToEIMMsg","ExerciseRecordsMany_msgFromExerciseRecord","record_2","record_3","record_4","record_5","ExerciseRecordsMany_modelToExerciseRecord","ExerciseRecordsMany_ModelMany","Models","ExerciseRecordsMany_ModelMany__GetEventInfo","ExerciseRecordsMany_MsgMany","ExerciseRecordsMany_getFormletHandle","recordRendering","ExerciseRecordsMany_renderModelForm","mainResult","ExerciseRecordsMany_canSubmitModelForm","ExerciseRecordsMany_view","ExerciseRecordsMany_getFormlet","getWorkoutId","soundAudioContext","Audio","permissionsToCheck","LogInState","CurrentTimestamp","CurrentTimerExpiry","CheckedPermissions","Model__IsLoggedIn","queryPermission","permission","descriptor_1","permissions","queryPermissionCmd","burgerLine","mainNavBarId","profileColours","descriptorButton","value_47","displayPermissionsWarnings","onchange","handlePermissionCheckState","children_9","elems_7","elems_6","elems_3","elems_4","isLoggedIn","navbarBandChildren","role","clientModuleDescriptorToMenu","viewMainNavBar","displayFavourites","duration","durationStr","displayTimer","serverVersion","displayVersionWarning","extractFrequentTags","DiaryEditingView$1","getDefault","tagsGetter","tagsSetter","addTitle","editTitle","buildFormMain","DiaryEditingView$1_$ctor_6E4FAFB9","DiaryEditingView$1__InitNew","dateTime","dateStrToDateTime","DiaryEditingView$1__fetchAddHelperData","DiaryEditingView$1__setStartingDate","DiaryEditingView$1__InitEdit","DiaryEditingView$1__fetchData","initEditWithHelperData","DiaryEditingView$1__Update","DiaryEditingView$1__getViewUrl_Z50E92BB6","DiaryEditingView$1__View","DiaryEditingView$1__getRecentEntries_Z50E92BB6","DiaryEditingView$1__buildForm","addTag_1","DiaryEditingView$1__getStartingDate_Z50E92BB6","diaryEditing","newTags","reviewEditing","interactionEditing","physicalModule","weightService","bloodPressureService","bodilyFunctionsService","temperatureService","isDuringSleep","isNightOpt","isNight","displaySingleRecord","displayRecordDetails","displayEventInfo","editRoute","displayActions","displayNavigation","reloadFun","list_8","WeightView_actions","BodilyFunctionsView_getEditRoute","BodilyFunctionsView_actions","BodilyFunctionsView_getFunctionName","functionType","BodilyFunctionsView_displayRecord","functionName","BodilyFunctionsView_columnsOptions","BodilyFunctionsView_headerColumOptions","BodilyFunctionsView_dataColumOptions","BodilyFunctionsView_summaryRow","BodilyFunctionsView_getDays","days_3","BodilyFunctionsView_viewList","readOnly","today","arg00$0040","finish_1","newFinish_1","BodilyFunctionsView_displaySummaryGroup","bodilyFunctionType","records","groups","counts","daysWithSleepEliminations","average","maximum","averager","total","DivideByInt","average_1","dates","BodilyFunctionsView_displaySummary","recordData","BodilyFunctionsView_displayRecordGroup","BodilyFunctionsView_displayAllRecords","PhysicalView_actions","PhysicalView_getEditRoute","WeightView_getEditRoute","PhysicalView_displayRecord","BloodPressureView_displayRecord","TemperatureView_displayRecord","WeightView_displayRecord","Physical_PhysicalView$1","viewAll","Physical_PhysicalView$1_$ctor_Z7E8B6EC8","Physical_PhysicalView$1__InitNew_5D846BF8","Physical_PhysicalView$1__fetchAddHelperData","Physical_PhysicalView$1__InitEdit","Physical_PhysicalView$1__fetchData","Physical_PhysicalView$1__Update","Physical_PhysicalView$1__View","Physical_PhysicalView$1__buildForm","Physical_weightEditing","Physical_bloodPressureEditing","Physical_bodilyFunctionsEditing","Physical_temperatureEditing","workoutTypes","stringToWorkoutType","AddEditFitnessView$1","fetchEntry","fetchEditHelperData","AddEditFitnessView$1_$ctor_Z7DF71A99","AddEditFitnessView$1__InitNew_5D846BF8","SimpleFormView$2__InitNewCore_Z292EED19","AddEditFitnessView$1__fetchAddHelperData","AddEditFitnessView$1__InitEdit","fetchHelperDataAction","SimpleFormView$2__InitEditCore_Z466B74A6","SimpleFormView$2__InitEditWithHelperData_3AAD8C48","AddEditFitnessView$1__fetchData","AddEditFitnessView$1__View","Model$2__IsItemReady_Z4CD6E166","Model$2__IsReady","SimpleFormView$2__ViewForm_Z44A2099C","trainingPlanEditing","_dispatch","workoutEditing","exerciseEditing","contentTypes","Workout_getEditInfos","Workout_WorkoutEditView__getRoute_4B9C34E5","workoutRecordEditor","LazyProps$1","render","equal","Components_LazyView$1","Component","shouldComponentUpdate","nextProps","_nextState","Common_lazyView2With","ErrorBoundaryProps","Inner","ErrorComponent","ErrorBoundaryState","HasErrors","ErrorBoundary","componentDidCatch","info_1","Program_Internal_useRootApi","Tuple_mapFirst","Tuple_mapSecond","AnonymousPage","SessionPage","CurrentRoute","ActivePage","NavigationModel","SessionLoading","LastSessionRefresh","setRouteValue","ContactData_1","init_3","path","ViewProfile_init","init_5","init_6","BodilyFunctionsView_init","WeightView_init","patternInput_20","patternInput_21","Item_21","patternInput_22","Item_22","patternInput_23","Item_23","patternInput_24","Item_24","patternInput_25","Item_25","patternInput_26","Item_26","patternInput_27","Item_27","patternInput_28","patternInput_29","init_7","patternInput_30","patternInput_31","Item_31","patternInput_32","Item_32","patternInput_33","Item_33","patternInput_34","TrainingPlan_init","Item_34","patternInput_35","Item_35","patternInput_36","Item_36","patternInput_37","Workout_init","Item_37","patternInput_38","Item_38","patternInput_39","Item_39","patternInput_40","Exercise_init","Item_40","patternInput_41","Item_41","patternInput_42","Item_42","patternInput_43","_contentTypeId","ExerciseRecord_init","Item_43","patternInput_44","Item_44","patternInput_45","Item_45","patternInput_46","ExerciseRecordsMany_initNewMany","Item_46","patternInput_47","Workout_WorkoutEditView__fetchAddHelperData","Workout_WorkoutEditView__InitNew","Item_47","patternInput_48","Workout_WorkoutEditView__fetchData","Workout_WorkoutEditView__InitEdit","Item_48","init_9","Msg_1","setRoute","optRoute","refreshSession","newSession","forceRefresh","lazyView2","view_1","Common_lazyView2","contentFromAuthPage","authPage","model_2","FlexFormFields$1__AddDate_2636DDCF","AddEditProfile_view","model_3","model_4","model_5","model_6","view_2","model_7","elms","view_3","arg_6","subTitle","getEditRoute","displayRecords","viewCommon","PhysicalView_view","arg_7","arg_8","graph","ResponsiveContainer","WeightView_viewList","view_4","view_5","arg_12","arg_15","arg_16","model_12","dispatch_12","hierarchy","favouritesElems","favourite","trainingPlan","onClick_1","removeFavourite","Main_displayFavourite","tradingPlanElems","Main_displayTrainingPlan","Main_displayHierarchy","Main_view_1","arg_17","model_13","dispatch_13","list_2","Workouts_view","arg_18","model_14","dispatch_14","Exercises_view","model_15","dispatch_15","TrainingPlan_viewReorder","TrainingPlan_viewMain","TrainingPlan_view","arg_20","model_16","dispatch_16","model_17","dispatch_17","model_18","dispatch_18","model_19","dispatch_19","workoutIdOpt","displayExerciseRecords","Exercise_view","model_20","dispatch_20","arg_25","model_21","ExerciseRecord_view","model_22","dispatch_21","view_6","arg_27","model_23","dispatch_22","arg_28","model_24","dispatch_23","Workout_WorkoutEditView__buildForm","Workout_WorkoutEditView__View","arg_29","currentProfileId","ViewProfile_view","contentFromPage","page","React","view_7","grecaptcha","ready","view_8","view_9","hostname","path_2","encodeURIComponent","FlexFormFields$1__AddPassword_Z44011C05","view_10","hero","demoPassword","demoUser","user","password","content_3","view_11","timer","intervalId","debug","subscribeLocation","subscribeLocation_1","syncDispatch","rb","reentered","terminated","dispatch$0027","wix_1","wix$0027","ix","RingBuffer$1__Push_2B595","processMsgs","nextMsg","model$0027","sub$0027","ex_1","ex_2","ProgramModule_runWithDispatch","ProgramModule_runWith","ProgramModule_run","urlUpdate","onChangeRef","mapInit","mapUpdate","mapView","mapSetState","mapSubscribe","mapTermination","userInit","unitVar_1","userUpdate","userView","userSetState","userSubscribe","Sub_batch","lastLocation","href_1","addEventListener","removeEventListener","idPrefix","ProgramModule_map","ProgramModule_toNavigable","location_1","querystring","states_mut","parseHelp","segments","segments_1","splitUrl","parseHash","locationSub","activeWorkout","Model__NeedsTimer","ProgramModule_withSubscription","init_10","play","session_1","subModel","updatedSession","subModel_1","update_2","subModelRes","newSession_1","cmd_4","subModel_2","targetDate","timezone","update_3","page_1","cmd_5","subModel_3","update_4","page_2","cmd_6","subModel_4","cmdSubmit","execute","update_5","page_3","cmd_7","subModel_5","tupledArg_14","tupledArg_13","tupledArg_12","update_6","page_4","cmd_8","subMsg_6","subModel_6","tupledArg_17","tupledArg_16","tupledArg_15","ViewProfile_update","page_5","cmd_9","subModel1","cmd_10","subMsg_7","subModel_7","tupledArg_20","tupledArg_19","tupledArg_18","AddEditProfile_update","page_6","cmd_11","subModel1_1","cmd_12","subModel_8","tupledArg_23","tupledArg_22","tupledArg_21","profileId_1","update_7","page_7","cmd_13","subModel_9","tupledArg_26","tupledArg_25","tupledArg_24","page_8","cmd_14","matchValue_9","subModel_10","tupledArg_29","tupledArg_28","tupledArg_27","page_9","cmd_15","subModel_11","tupledArg_32","tupledArg_31","tupledArg_30","page_10","cmd_16","matchValue_11","subModel_12","tupledArg_35","tupledArg_34","tupledArg_33","processSuccess","finalRecords","updatedModel","update_8","arg_11","page_11","cmd_17","subModel_13","tupledArg_38","tupledArg_37","tupledArg_36","PhysicalView_update","page_12","cmd_18","matchValue_13","subModel_14","tupledArg_41","tupledArg_40","tupledArg_39","BodilyFunctionsView_update","page_13","cmd_19","subModel_15","tupledArg_44","tupledArg_43","tupledArg_42","WeightView_update","page_14","cmd_20","matchValue_15","subModel_16","tupledArg_47","tupledArg_46","tupledArg_45","page_15","cmd_21","Item_49","subModel_17","tupledArg_50","tupledArg_49","tupledArg_48","page_16","cmd_22","Item_52","matchValue_17","subModel_18","tupledArg_53","tupledArg_52","tupledArg_51","page_17","cmd_23","Item_55","subModel_19","tupledArg_56","tupledArg_55","tupledArg_54","page_18","cmd_24","Item_58","matchValue_19","subModel_20","tupledArg_59","tupledArg_58","tupledArg_57","page_19","cmd_25","Item_61","subModel_21","tupledArg_62","tupledArg_61","tupledArg_60","update_9","page_20","cmd_26","Item_64","matchValue_21","subModel_22","tupledArg_65","tupledArg_64","tupledArg_63","update_10","page_21","cmd_27","Item_67","subModel_23","tupledArg_68","tupledArg_67","tupledArg_66","Main_update_1","page_22","cmd_28","Item_70","matchValue_23","matchResult_23","subModel_24","tupledArg_71","tupledArg_70","tupledArg_69","Workouts_update","page_23","cmd_29","Item_73","matchResult_24","subModel_25","tupledArg_74","tupledArg_73","tupledArg_72","Exercises_update","page_24","cmd_30","Item_76","matchValue_25","matchResult_25","subModel_26","tupledArg_77","tupledArg_76","tupledArg_75","TrainingPlan_update","page_25","cmd_31","Item_79","matchResult_26","subModel_27","tupledArg_80","tupledArg_79","tupledArg_78","page_26","cmd_32","Item_82","matchResult_27","subModel_28","tupledArg_83","tupledArg_82","tupledArg_81","Workout_update","page_27","cmd_33","Item_85","matchValue_28","matchResult_28","subModel_29","tupledArg_86","tupledArg_85","tupledArg_84","page_28","cmd_34","Item_88","matchResult_29","subModel_30","tupledArg_89","tupledArg_88","tupledArg_87","Exercise_update","page_29","cmd_35","Item_91","matchResult_30","subModel_31","tupledArg_92","tupledArg_91","tupledArg_90","arg_30","page_30","cmd_36","Item_94","matchResult_31","subModel_32","tupledArg_95","tupledArg_94","tupledArg_93","ExerciseRecord_update","arg_31","page_31","cmd_37","Item_97","subMsg_33","matchValue_32","matchResult_32","subModel_33","tupledArg_98","tupledArg_97","tupledArg_96","update_11","arg_32","page_32","cmd_38","Item_100","cmd_39","dateTime_1","dateTime_2","dateTime_3","dateTime_4","getSetTimerMsg","matchValue_34","matchResult_33","subModel_34","tupledArg_101","tupledArg_100","tupledArg_99","ExerciseRecordsMany_initNewRecordModel","ExerciseRecordsMany_update","page_33","cmd_40","Item_103","subMsg_35","matchValue_35","matchResult_34","subModel_35","tupledArg_104","tupledArg_103","tupledArg_102","Workout_WorkoutEditView__Update","arg_34","page_34","cmd_41","Item_106","resultModel_1","cmd_42","newSession_2","subMsg_36","matchValue_36","matchResult_35","subModel_36","subModel_37","dispatch_9","dispatch_10","dispatch_11","resMsg","resMsg_1","ExerciseRecordsMany_mapModelToEIMMsg","x_105","Item_107","Item_108","f1","ProgramModule_mkProgram","view_12","errorElement","renderCatchSimple","lazyView2With","placeholderId","ProgramModule_withSetState","client","react_dom","Program_Internal_withReactSynchronousUsing"],"sourceRoot":""}