diff --git a/site/lib/jaspr_options.dart b/site/lib/jaspr_options.dart index 20e403928dc..c62ee2d5ec4 100644 --- a/site/lib/jaspr_options.dart +++ b/site/lib/jaspr_options.dart @@ -7,19 +7,21 @@ import 'package:jaspr/jaspr.dart'; import 'package:docs_flutter_dev_site/src/client/global_scripts.dart' as prefix0; -import 'package:docs_flutter_dev_site/src/components/client/on_this_page_button.dart' +import 'package:docs_flutter_dev_site/src/components/client/dartpad_injector.dart' as prefix1; -import 'package:docs_flutter_dev_site/src/components/header/menu_toggle.dart' +import 'package:docs_flutter_dev_site/src/components/client/on_this_page_button.dart' as prefix2; -import 'package:docs_flutter_dev_site/src/components/header/site_switcher.dart' +import 'package:docs_flutter_dev_site/src/components/header/menu_toggle.dart' as prefix3; -import 'package:docs_flutter_dev_site/src/components/header/theme_switcher.dart' +import 'package:docs_flutter_dev_site/src/components/header/site_switcher.dart' as prefix4; -import 'package:docs_flutter_dev_site/src/components/cookie_notice.dart' +import 'package:docs_flutter_dev_site/src/components/header/theme_switcher.dart' as prefix5; -import 'package:docs_flutter_dev_site/src/components/copy_button.dart' +import 'package:docs_flutter_dev_site/src/components/cookie_notice.dart' as prefix6; -import 'package:docs_flutter_dev_site/src/components/feedback.dart' as prefix7; +import 'package:docs_flutter_dev_site/src/components/copy_button.dart' + as prefix7; +import 'package:docs_flutter_dev_site/src/components/feedback.dart' as prefix8; /// Default [JasprOptions] for use with your jaspr project. /// @@ -43,45 +45,56 @@ JasprOptions get defaultJasprOptions => JasprOptions( 'src/client/global_scripts', ), - prefix1.OnThisPageButton: ClientTarget( + prefix1.DartPadInjector: ClientTarget( + 'src/components/client/dartpad_injector', + params: _prefix1DartPadInjector, + ), + + prefix2.OnThisPageButton: ClientTarget( 'src/components/client/on_this_page_button', ), - prefix5.CookieNotice: ClientTarget( + prefix6.CookieNotice: ClientTarget( 'src/components/cookie_notice', ), - prefix6.CopyButton: ClientTarget( + prefix7.CopyButton: ClientTarget( 'src/components/copy_button', - params: _prefix6CopyButton, + params: _prefix7CopyButton, ), - prefix7.FeedbackComponent: ClientTarget( + prefix8.FeedbackComponent: ClientTarget( 'src/components/feedback', - params: _prefix7FeedbackComponent, + params: _prefix8FeedbackComponent, ), - prefix2.MenuToggle: ClientTarget( + prefix3.MenuToggle: ClientTarget( 'src/components/header/menu_toggle', ), - prefix3.SiteSwitcher: ClientTarget( + prefix4.SiteSwitcher: ClientTarget( 'src/components/header/site_switcher', ), - prefix4.ThemeSwitcher: ClientTarget( + prefix5.ThemeSwitcher: ClientTarget( 'src/components/header/theme_switcher', ), }, styles: () => [], ); -Map _prefix6CopyButton(prefix6.CopyButton c) => { +Map _prefix1DartPadInjector(prefix1.DartPadInjector c) => { + 'title': c.title, + 'theme': c.theme, + 'height': c.height, + 'runAutomatically': c.runAutomatically, +}; +Map _prefix7CopyButton(prefix7.CopyButton c) => { 'toCopy': c.toCopy, 'buttonText': c.buttonText, 'classes': c.classes, 'title': c.title, }; -Map _prefix7FeedbackComponent(prefix7.FeedbackComponent c) => { +Map _prefix8FeedbackComponent(prefix8.FeedbackComponent c) => { 'issueUrl': c.issueUrl, }; diff --git a/site/lib/src/components/client/dartpad_injector.dart b/site/lib/src/components/client/dartpad_injector.dart new file mode 100644 index 00000000000..63201b01a86 --- /dev/null +++ b/site/lib/src/components/client/dartpad_injector.dart @@ -0,0 +1,121 @@ +// Copyright 2025 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:jaspr/jaspr.dart'; +import '../dartpad/embedded_dartpad.dart'; + +import '../dartpad/extract_content.dart' + if (dart.library.io) '../dartpad/extract_content_vm.dart'; + +/// Prepares a code block that will be replaced with an embedded +/// DartPad when the site is loaded. +final class DartPadWrapper extends StatefulComponent { + DartPadWrapper({ + super.key, + required this.content, + required this.title, + this.theme, + this.height, + this.runAutomatically = false, + }); + + final String content; + final String title; + final String? theme; + final String? height; + final bool runAutomatically; + + @override + State createState() => _DartPadWrapperState(); +} + +final class _DartPadWrapperState extends State { + @override + Component build(BuildContext context) { + return DartPadInjector( + title: component.title, + theme: component.theme, + height: component.height, + runAutomatically: component.runAutomatically, + // We don't pass the content here, so it's not part of the client + // component data. It will be retrieved by DartPadInjector automatically. + ); + } +} + +@client +class DartPadInjector extends StatefulComponent { + const DartPadInjector({ + required this.title, + this.theme, + this.height, + this.runAutomatically = false, + super.key, + }); + + final String title; + final String? theme; + final String? height; + final bool runAutomatically; + + @override + State createState() => _DartPadInjectorState(); +} + +class _DartPadInjectorState extends State { + static int _injectedIndex = 0; + + final String _frameId = () { + final nextId = _injectedIndex; + _injectedIndex += 1; + return 'embedded-dartpad-$nextId'; + }(); + + String content = ''; + + @override + void initState() { + super.initState(); + + if (kIsWeb) { + // During hydration, extract the content from the pre-rendered code block. + content = extractContent(context as Element); + } + } + + @override + Component build(BuildContext context) { + if (!kIsWeb) { + // During pre-rendering, get the content from the nearest DartPadWrapper. + final content = context + .findAncestorStateOfType<_DartPadWrapperState>() + ?.component + .content; + return pre([ + code( + attributes: {'title': component.title}, + [text(content ?? '')], + ), + ]); + } + + return Component.wrapElement( + attributes: { + 'height': ?component.height, + 'title': component.title, + }, + child: EmbeddedDartPad.create( + iframeId: _frameId, + theme: switch (component.theme) { + 'auto' => DartPadTheme.auto, + 'dark' => DartPadTheme.dark, + _ => DartPadTheme.light, + }, + embedLayout: true, + runAutomatically: component.runAutomatically, + code: content, + ), + ); + } +} diff --git a/site/lib/src/components/dartpad/embedded_dartpad.dart b/site/lib/src/components/dartpad/embedded_dartpad.dart new file mode 100644 index 00000000000..9a1bbf26c7a --- /dev/null +++ b/site/lib/src/components/dartpad/embedded_dartpad.dart @@ -0,0 +1,206 @@ +// Copyright 2025 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:jaspr/jaspr.dart'; +import 'package:universal_web/js_interop.dart'; +import 'package:universal_web/web.dart' as web; + +/// An iframe-embedded DartPad that can be injected into a web page, +/// then have its source code updated. +final class EmbeddedDartPad extends StatefulComponent { + /// The unique identifier that's used to identify the created DartPad iframe. + /// + /// This ID is used both as the HTML element `id` and + /// as the iframe's `name` attribute for message targeting. + final String iframeId; + + /// The full URL of the DartPad iframe including + /// all path segments and query parameters. + final String _iframeUrl; + + /// The Dart source code to be displayed in the embedded DartPad's editor. + /// + /// The [code] should generally be valid Dart code for + /// the latest stable versions of Dart and Flutter. + final String code; + + /// Creates an embedded DartPad instance with + /// the specified [iframeId] and [iframeUrl]. + EmbeddedDartPad._({ + required this.iframeId, + required String iframeUrl, + required this.code, + }) : _iframeUrl = iframeUrl; + + /// Creates a new embedded DartPad element with the specified configuration. + /// + /// The [iframeId] is used to identify the created DartPad iframe. + /// It must be unique within the document and a valid HTML element ID. + /// + /// The [scheme] and [host] are used to construct the DartPad iframe URL. + /// [scheme] defaults to 'https' and [host] defaults to 'dartpad.dev'. + /// + /// To control the appearance of the embedded DartPad, + /// you can switch to the [embedLayout] and choose a specific [theme]. + /// + /// The [code] is the Dart source code to be injected into the DartPad editor + /// after it has finished loading. + factory EmbeddedDartPad.create({ + required String iframeId, + String? scheme, + String? host, + bool? embedLayout, + bool runAutomatically = false, + DartPadTheme? theme = DartPadTheme.auto, + required String code, + }) { + final dartPadUrl = Uri( + scheme: scheme ?? 'https', + host: host ?? 'dartpad.dev', + queryParameters: { + if (embedLayout ?? true) 'embed': '$embedLayout', + if (theme != DartPadTheme.auto) 'theme': '$theme', + if (runAutomatically) 'run': 'true', + }, + ).toString(); + + return EmbeddedDartPad._( + iframeId: iframeId, + iframeUrl: dartPadUrl, + code: code, + ); + } + + @override + State createState() => _EmbeddedDartPadState(); +} + +class _EmbeddedDartPadState extends State { + final GlobalNodeKey _iframeKey = GlobalNodeKey(); + bool _initialized = false; + + @override + void initState() { + super.initState(); + if (kIsWeb) { + // Start listening for the 'ready' message from the embedded DartPad. + late final JSExportedDartFunction readyHandler; + readyHandler = (web.MessageEvent event) { + if (event.data case _EmbedReadyMessage(type: 'ready', :final sender?)) { + // Verify the message is sent from the corresponding iframe, in case + // there are multiple DartPads being embedded at the same time. + if (sender != component.iframeId) { + return; + } + + web.window.removeEventListener('message', readyHandler); + if (_initialized) return; + _initialized = true; + _updateCode(); + } + }.toJS; + + web.window.addEventListener('message', readyHandler); + } + } + + @override + void didUpdateComponent(covariant EmbeddedDartPad oldComponent) { + super.didUpdateComponent(oldComponent); + + if (oldComponent.iframeId != component.iframeId) { + throw StateError( + 'The iframeId of an EmbeddedDartPad cannot be changed after creation.', + ); + } + if (oldComponent._iframeUrl != component._iframeUrl) { + throw StateError( + 'The iframeUrl of an EmbeddedDartPad cannot be changed after creation.', + ); + } + + if (oldComponent.code != component.code && _initialized) { + _updateCode(); + } + } + + /// Updates the source code displayed in the embedded DartPad's editor + /// with the specified Dart [code]. + void _updateCode() { + assert(_initialized, 'Cannot update code before iframe is initialized.'); + assert(_iframeKey.currentNode != null, 'Iframe element is not available.'); + + _iframeKey.currentNode!.contentWindowCrossOrigin?.postMessage( + _MessageToDartPad.updateSource(component.code), + _anyTargetOrigin, + ); + } + + @override + Component build(BuildContext context) { + return iframe( + key: _iframeKey, + id: component.iframeId, + name: component.iframeId, + src: component._iframeUrl, + loading: MediaLoading.lazy, + allow: 'clipboard-write', + [], + ); + } +} + +/// The themes available for an embedded DartPad instance. +enum DartPadTheme { + /// Light theme with a bright background. + light, + + /// Dark theme with a dark background. + dark, + + /// Theme that relies on DartPad's built-in theme handling. + auto, +} + +/// The target origin to be used for cross-frame messages sent to +/// the DartPad iframe's content window. +/// +/// Uses '*' to enable communication with DartPad instances +/// regardless of their actual origin. +final JSString _anyTargetOrigin = '*'.toJS; + +/// Represents a ready message received from the DartPad iframe. +/// +/// Sent by DartPad when it has finished loading and is ready to +/// receive code updates by sending it a cross-frame message. +extension type _EmbedReadyMessage._(JSObject _) { + /// The message type, which should be 'ready' for initialization messages. + external String? get type; + + /// The sender ID to identify which DartPad instance sent the message. + external String? get sender; +} + +/// Represents DartPad's expected format for receiving cross-frame messages +/// from its parent window, usually the [EmbeddedDartPad] host. +@anonymous +extension type _MessageToDartPad._(JSObject _) implements JSObject { + /// Creates a JavaScript object with the expected structure for + /// updating the source code in an embedded DartPad's editor. + external factory _MessageToDartPad._updateSource({ + required String sourceCode, + String type, + }); + + /// Creates a message to update that can be sent to + /// update the source code in an embedded DartPad instance. + /// + /// The [sourceCode] should generally be valid Dart code for + /// the latest stable versions of Dart and Flutter. + factory _MessageToDartPad.updateSource(String sourceCode) => + _MessageToDartPad._updateSource( + sourceCode: sourceCode, + type: 'sourceCode', + ); +} diff --git a/site/lib/src/components/dartpad/extract_content.dart b/site/lib/src/components/dartpad/extract_content.dart new file mode 100644 index 00000000000..433eab54e30 --- /dev/null +++ b/site/lib/src/components/dartpad/extract_content.dart @@ -0,0 +1,25 @@ +// Copyright 2025 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:js_interop'; + +import 'package:jaspr/browser.dart'; +import 'package:universal_web/web.dart' as web; + +/// Extracts the content of a
 block inside the given
+/// [element] during hydration.
+String extractContent(Element element) {
+  final r = element.parentRenderObjectElement?.renderObject as DomRenderObject?;
+  if (r == null) return '';
+
+  final code = r.retakeNode((node) {
+    return node.instanceOfString('Element') &&
+        (node as web.Element).tagName.toLowerCase() == 'pre';
+  });
+
+  if (code == null) return '';
+
+  code.parentNode?.removeChild(code);
+  return (code as web.Element).textContent ?? '';
+}
diff --git a/site/lib/src/components/dartpad/extract_content_vm.dart b/site/lib/src/components/dartpad/extract_content_vm.dart
new file mode 100644
index 00000000000..80b59939c22
--- /dev/null
+++ b/site/lib/src/components/dartpad/extract_content_vm.dart
@@ -0,0 +1,8 @@
+// Copyright 2025 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:jaspr/jaspr.dart';
+
+// Stub for non-web platforms.
+String extractContent(BuildContext context) => '';
diff --git a/site/lib/src/components/dartpad_injector.dart b/site/lib/src/components/dartpad_injector.dart
deleted file mode 100644
index ed85380f100..00000000000
--- a/site/lib/src/components/dartpad_injector.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2025 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:jaspr/jaspr.dart';
-
-/// Prepares an element with the structure expected by
-/// the `inject_dartpad` tool from site-shared.
-final class DartPadInjector extends StatelessComponent {
-  const DartPadInjector({
-    super.key,
-    required this.content,
-    String? theme,
-    String? title,
-    this.height,
-    bool? runAutomatically,
-  }) : theme = theme ?? 'light',
-       title = title ?? 'Runnable Dart sample',
-       runAutomatically = runAutomatically ?? false;
-
-  final List content;
-  final String theme;
-  final String title;
-  final String? height;
-  final bool runAutomatically;
-
-  @override
-  Component build(BuildContext context) => pre([
-    code(
-      attributes: {
-        'title': title,
-        'data-dartpad': 'true',
-        'data-embed': 'true',
-        'data-theme': theme,
-        'data-run': runAutomatically.toString(),
-        'data-height': ?height,
-      },
-      [
-        text(content.join('\n')),
-      ],
-    ),
-  ]);
-}
diff --git a/site/lib/src/extensions/code_block_processor.dart b/site/lib/src/extensions/code_block_processor.dart
index 0d633e95250..dd76e2cb74c 100644
--- a/site/lib/src/extensions/code_block_processor.dart
+++ b/site/lib/src/extensions/code_block_processor.dart
@@ -10,7 +10,7 @@ import 'package:jaspr_content/jaspr_content.dart';
 import 'package:meta/meta.dart';
 import 'package:opal/opal.dart' as opal;
 
-import '../components/dartpad_injector.dart';
+import '../components/client/dartpad_injector.dart';
 import '../components/wrapped_code_block.dart';
 import '../highlight/theme/dark.dart';
 import '../highlight/theme/light.dart';
@@ -65,9 +65,9 @@ final class CodeBlockProcessor implements PageExtension {
 
           if (language == 'dartpad') {
             return ComponentNode(
-              DartPadInjector(
-                content: lines,
-                title: title,
+              DartPadWrapper(
+                content: lines.join('\n'),
+                title: title ?? 'Runnable Flutter example',
                 theme: metadata['theme'],
                 height: metadata['height'],
                 runAutomatically: metadata['run'] == 'true',
diff --git a/site/web/assets/js/inject_dartpad.dart.js b/site/web/assets/js/inject_dartpad.dart.js
deleted file mode 100644
index 4a41e2a0896..00000000000
--- a/site/web/assets/js/inject_dartpad.dart.js
+++ /dev/null
@@ -1,2723 +0,0 @@
-(function dartProgram(){function copyProperties(a,b){var s=Object.keys(a)
-for(var r=0;r=0)return true
-if(typeof version=="function"&&version.length==0){var q=version()
-if(/^\d+\.\d+\.\d+\.\d+$/.test(q))return true}}catch(p){}return false}()
-function inherit(a,b){a.prototype.constructor=a
-a.prototype["$i"+a.name]=a
-if(b!=null){if(z){Object.setPrototypeOf(a.prototype,b.prototype)
-return}var s=Object.create(b.prototype)
-copyProperties(a.prototype,s)
-a.prototype=s}}function inheritMany(a,b){for(var s=0;s0;b=s){s=b-1
-r=a.charCodeAt(s)
-if(r!==32&&r!==13&&!J.Ga(r))break}return b},
-U6(a){if(typeof a=="string")return J.Dr.prototype
-if(a==null)return a
-if(Array.isArray(a))return J.p.prototype
-if(typeof a!="object"){if(typeof a=="function")return J.c5.prototype
-if(typeof a=="symbol")return J.Dw.prototype
-if(typeof a=="bigint")return J.rQ.prototype
-return a}if(a instanceof A.a)return a
-return J.M3(a)},
-c(a){if(typeof a=="number"){if(Math.floor(a)==a)return J.im.prototype
-return J.kD.prototype}if(typeof a=="string")return J.Dr.prototype
-if(a==null)return J.CD.prototype
-if(typeof a=="boolean")return J.yE.prototype
-if(Array.isArray(a))return J.p.prototype
-if(typeof a!="object"){if(typeof a=="function")return J.c5.prototype
-if(typeof a=="symbol")return J.Dw.prototype
-if(typeof a=="bigint")return J.rQ.prototype
-return a}if(a instanceof A.a)return a
-return J.M3(a)},
-w1(a){if(a==null)return a
-if(Array.isArray(a))return J.p.prototype
-if(typeof a!="object"){if(typeof a=="function")return J.c5.prototype
-if(typeof a=="symbol")return J.Dw.prototype
-if(typeof a=="bigint")return J.rQ.prototype
-return a}if(a instanceof A.a)return a
-return J.M3(a)},
-CR(a){return J.c(a).gbx(a)},
-GA(a,b){return J.w1(a).F(a,b)},
-Hm(a){return J.U6(a).gB(a)},
-IT(a){return J.w1(a).gkz(a)},
-M1(a,b,c){return J.w1(a).E2(a,b,c)},
-Nu(a){return J.c(a).gi(a)},
-cf(a,b){if(a==null)return b==null
-if(typeof a!="object")return b!=null&&a===b
-return J.c(a).DN(a,b)},
-n(a){return J.c(a)["["](a)},
-vB:function vB(){},
-yE:function yE(){},
-CD:function CD(){},
-MF:function MF(){},
-u0:function u0(){},
-iC:function iC(){},
-kd:function kd(){},
-c5:function c5(){},
-rQ:function rQ(){},
-Dw:function Dw(){},
-p:function p(a){this.$ti=a},
-B:function B(){},
-Po:function Po(a){this.$ti=a},
-D:function D(a,b,c){var _=this
-_.a=a
-_.b=b
-_.c=0
-_.d=null
-_.$ti=c},
-qI:function qI(){},
-im:function im(){},
-kD:function kD(){},
-Dr:function Dr(){}},A={FK:function FK(){},
-G(a){return new A.SH("Field '"+a+"' has been assigned during initialization.")},
-la(a){return new A.SH("Field '"+a+"' has not been initialized.")},
-oo(a){var s,r=a^48
-if(r<=9)return r
-s=a|32
-if(97<=s&&s<=102)return s-87
-return-1},
-yc(a,b){a=a+b&536870911
-a=a+((a&524287)<<10)&536870911
-return a^a>>>6},
-qL(a){a=a+((a&67108863)<<3)&536870911
-a^=a>>>11
-return a+((a&16383)<<15)&536870911},
-ks(a){var s,r
-for(s=$.Qu.length,r=0;r").Kq(d).C("xy<1,2>"))
-return new A.i1(a,b,c.C("@<0>").Kq(d).C("i1<1,2>"))},
-Wp(){return new A.lj("No element")},
-SH:function SH(a){this.a=a},
-zl:function zl(){},
-bQ:function bQ(){},
-aL:function aL(){},
-a7:function a7(a,b,c){var _=this
-_.a=a
-_.b=b
-_.c=0
-_.d=null
-_.$ti=c},
-i1:function i1(a,b,c){this.a=a
-this.b=b
-this.$ti=c},
-xy:function xy(a,b,c){this.a=a
-this.b=b
-this.$ti=c},
-MH:function MH(a,b,c){var _=this
-_.a=null
-_.b=a
-_.c=b
-_.$ti=c},
-A8:function A8(a,b,c){this.a=a
-this.b=b
-this.$ti=c},
-SU:function SU(){},
-H(a){var s=v.mangledGlobalNames[a]
-if(s!=null)return s
-return"minified:"+a},
-wV(a,b){var s
-if(b!=null){s=b.x
-if(s!=null)return s}return t.p.b(a)},
-I(a){var s
-if(typeof a=="string")return a
-if(typeof a=="number"){if(a!==0)return""+a}else if(!0===a)return"true"
-else if(!1===a)return"false"
-else if(a==null)return"null"
-s=J.n(a)
-return s},
-eQ(a){var s,r=$.xu
-if(r==null)r=$.xu=Symbol("identityHashCode")
-s=a[r]
-if(s==null){s=Math.random()*0x3fffffff|0
-a[r]=s}return s},
-Hp(a,b){var s,r,q,p,o,n=null,m=/^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(a)
-if(m==null)return n
-s=m[3]
-if(b==null){if(s!=null)return parseInt(a,10)
-if(m[2]!=null)return parseInt(a,16)
-return n}if(b<2||b>36)throw A.L(A.TE(b,2,36,"radix",n))
-if(b===10&&s!=null)return parseInt(a,10)
-if(b<10||s==null){r=b<=10?47+b:86+b
-q=m[1]
-for(p=q.length,o=0;or)return n}return parseInt(a,b)},
-l(a){var s,r,q,p
-if(a instanceof A.a)return A.d(A.z(a),null)
-s=J.c(a)
-if(s===B.Ok||s===B.Ub||t.o.b(a)){r=B.O4(a)
-if(r!=="Object"&&r!=="")return r
-q=a.constructor
-if(typeof q=="function"){p=q.name
-if(typeof p=="string"&&p!=="Object"&&p!=="")return p}}return A.d(A.z(a),null)},
-i(a){var s,r,q
-if(a==null||typeof a=="number"||A.y(a))return J.n(a)
-if(typeof a=="string")return JSON.stringify(a)
-if(a instanceof A.t)return a["["](0)
-if(a instanceof A.M)return a.k(!0)
-s=$.u()
-for(r=0;r<1;++r){q=s[r].R(a)
-if(q!=null)return q}return"Instance of '"+A.l(a)+"'"},
-fw(a,b,c){var s,r,q,p
-if(c<=500&&b===0&&c===a.length)return String.fromCharCode.apply(null,a)
-for(s=b,r="";s>>0,s&1023|56320)}}throw A.L(A.TE(a,0,1114111,null,null))},
-au(a,b,c){if(a>c)return A.TE(a,0,c,"start",null)
-if(b!=null)if(bc)return A.TE(b,a,c,"end",null)
-return new A.AT(!0,b,"end",null)},
-tL(a){return new A.AT(!0,a,null,null)},
-L(a){return A.r(a,new Error())},
-r(a,b){var s
-if(a==null)a=new A.E()
-b.dartException=a
-s=A.J
-if("defineProperty" in Object){Object.defineProperty(b,"message",{get:s})
-b.name=""}else b.toString=s
-return b},
-J(){return J.n(this.dartException)},
-v(a,b){throw A.r(a,b==null?new Error():b)},
-cW(a,b,c){var s
-if(b==null)b=0
-if(c==null)c=0
-s=Error()
-A.v(A.HK(a,b,c),s)},
-HK(a,b,c){var s,r,q,p,o,n,m,l,k
-if(typeof b=="string")s=b
-else{r="[]=;add;removeWhere;retainWhere;removeRange;setRange;setInt8;setInt16;setInt32;setUint8;setUint16;setUint32;setFloat32;setFloat64".split(";")
-q=r.length
-p=b
-if(p>q){c=p/q|0
-p%=q}s=r[p]}o=typeof c=="string"?c:"modify;remove from;add to".split(";")[c]
-n=t.j.b(a)?"list":"ByteData"
-m=a.$flags|0
-l="a "
-if((m&4)!==0)k="constant "
-else if((m&2)!==0){k="unmodifiable "
-l="an "}else k=(m&1)!==0?"fixed-length ":""
-return new A.ub("'"+s+"': Cannot "+o+" "+l+k+n)},
-lk(a){throw A.L(A.a4(a))},
-CU(a){if(a==null)return J.Nu(a)
-if(typeof a=="object")return A.eQ(a)
-return J.Nu(a)},
-dJ(a,b){var s,r,q,p=a.length
-for(s=0;s=0},
-S0:function S0(a,b){this.a=a
-this.b=b},
-rY:function rY(){},
-t:function t(){},
-E1:function E1(){},
-lc:function lc(){},
-zx:function zx(){},
-rT:function rT(a,b){this.a=a
-this.b=b},
-Eq:function Eq(a){this.a=a},
-N5:function N5(a){var _=this
-_.a=0
-_.f=_.e=_.d=_.c=_.b=null
-_.r=0
-_.$ti=a},
-vh:function vh(a,b){var _=this
-_.a=a
-_.b=b
-_.d=_.c=null},
-Gp:function Gp(a,b){this.a=a
-this.$ti=b},
-N6:function N6(a,b,c){var _=this
-_.a=a
-_.b=b
-_.c=c
-_.d=null},
-dC:function dC(a){this.a=a},
-wN:function wN(a){this.a=a},
-VX:function VX(a){this.a=a},
-M:function M(){},
-B7:function B7(){},
-VR:function VR(a,b){var _=this
-_.a=a
-_.b=b
-_.e=_.d=_.c=null},
-rM(a,b,c){var s
-if(!(a>>>0!==a))s=b>>>0!==b||a>b||b>c
-else s=!0
-if(s)throw A.L(A.au(a,b,c))
-return b},
-WZ:function WZ(){},
-eH:function eH(){},
-df:function df(){},
-b0:function b0(){},
-Dg:function Dg(){},
-DV:function DV(){},
-zU:function zU(){},
-K8:function K8(){},
-xj:function xj(){},
-dE:function dE(){},
-Zc:function Zc(){},
-wf:function wf(){},
-Pq:function Pq(){},
-eE:function eE(){},
-V6:function V6(){},
-RG:function RG(){},
-vX:function vX(){},
-WB:function WB(){},
-VS:function VS(){},
-xZ(a,b){var s=b.c
-return s==null?b.c=A.Q2(a,"b8",[b.x]):s},
-Q1(a){var s=a.w
-if(s===6||s===7)return A.Q1(a.x)
-return s===11||s===12},
-mD(a){return a.as},
-q7(a){return A.Ew(v.typeUniverse,a,!1)},
-PL(a1,a2,a3,a4){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0=a2.w
-switch(a0){case 5:case 1:case 2:case 3:case 4:return a2
-case 6:s=a2.x
-r=A.PL(a1,s,a3,a4)
-if(r===s)return a2
-return A.Bc(a1,r,!0)
-case 7:s=a2.x
-r=A.PL(a1,s,a3,a4)
-if(r===s)return a2
-return A.LN(a1,r,!0)
-case 8:q=a2.y
-p=A.bZ(a1,q,a3,a4)
-if(p===q)return a2
-return A.Q2(a1,a2.x,p)
-case 9:o=a2.x
-n=A.PL(a1,o,a3,a4)
-m=a2.y
-l=A.bZ(a1,m,a3,a4)
-if(n===o&&l===m)return a2
-return A.ap(a1,n,l)
-case 10:k=a2.x
-j=a2.y
-i=A.bZ(a1,j,a3,a4)
-if(i===j)return a2
-return A.oP(a1,k,i)
-case 11:h=a2.x
-g=A.PL(a1,h,a3,a4)
-f=a2.y
-e=A.qT(a1,f,a3,a4)
-if(g===h&&e===f)return a2
-return A.Nf(a1,g,e)
-case 12:d=a2.y
-a4+=d.length
-c=A.bZ(a1,d,a3,a4)
-o=a2.x
-n=A.PL(a1,o,a3,a4)
-if(c===d&&n===o)return a2
-return A.DS(a1,n,c,!0)
-case 13:b=a2.x
-if(b")
-for(r=1;r=0)p+=" "+r[q];++q}return p+"})"},
-b(a1,a2,a3){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a=", ",a0=null
-if(a3!=null){s=a3.length
-if(a2==null)a2=A.j([],t.s)
-else a0=a2.length
-r=a2.length
-for(q=s;q>0;--q)a2.push("T"+(r+q))
-for(p=t.X,o="<",n="",q=0;q0){c+=b+"["
-for(b="",q=0;q0){c+=b+"{"
-for(b="",q=0;q "+d},
-d(a,b){var s,r,q,p,o,n,m=a.w
-if(m===5)return"erased"
-if(m===2)return"dynamic"
-if(m===3)return"void"
-if(m===1)return"Never"
-if(m===4)return"any"
-if(m===6){s=a.x
-r=A.d(s,b)
-q=s.w
-return(q===11||q===12?"("+r+")":r)+"?"}if(m===7)return"FutureOr<"+A.d(a.x,b)+">"
-if(m===8){p=A.o(a.x)
-o=a.y
-return o.length>0?p+("<"+A.m(o,b)+">"):p}if(m===10)return A.k(a,b)
-if(m===11)return A.b(a,b,null)
-if(m===12)return A.b(a.x,b,a.y)
-if(m===13){n=a.x
-return b[b.length-1-n]}return"?"},
-o(a){var s=v.mangledGlobalNames[a]
-if(s!=null)return s
-return"minified:"+a},
-Qo(a,b){var s=a.tR[b]
-for(;typeof s=="string";)s=a.tR[s]
-return s},
-ai(a,b){var s,r,q,p,o,n=a.eT,m=n[b]
-if(m==null)return A.Ew(a,b,!1)
-else if(typeof m=="number"){s=m
-r=A.mZ(a,5,"#")
-q=A.vU(s)
-for(p=0;p0)p+="<"+A.Ux(c)+">"
-s=a.eC.get(p)
-if(s!=null)return s
-r=new A.Jc(null,null)
-r.w=8
-r.x=b
-r.y=c
-if(c.length>0)r.c=c[0]
-r.as=p
-q=A.BD(a,r)
-a.eC.set(p,q)
-return q},
-ap(a,b,c){var s,r,q,p,o,n
-if(b.w===9){s=b.x
-r=b.y.concat(c)}else{r=c
-s=b}q=s.as+(";<"+A.Ux(r)+">")
-p=a.eC.get(q)
-if(p!=null)return p
-o=new A.Jc(null,null)
-o.w=9
-o.x=s
-o.y=r
-o.as=q
-n=A.BD(a,o)
-a.eC.set(q,n)
-return n},
-oP(a,b,c){var s,r,q="+"+(b+"("+A.Ux(c)+")"),p=a.eC.get(q)
-if(p!=null)return p
-s=new A.Jc(null,null)
-s.w=10
-s.x=b
-s.y=c
-s.as=q
-r=A.BD(a,s)
-a.eC.set(q,r)
-return r},
-Nf(a,b,c){var s,r,q,p,o,n=b.as,m=c.a,l=m.length,k=c.b,j=k.length,i=c.c,h=i.length,g="("+A.Ux(m)
-if(j>0){s=l>0?",":""
-g+=s+"["+A.Ux(k)+"]"}if(h>0){s=l>0?",":""
-g+=s+"{"+A.S4(i)+"}"}r=n+(g+")")
-q=a.eC.get(r)
-if(q!=null)return q
-p=new A.Jc(null,null)
-p.w=11
-p.x=b
-p.y=c
-p.as=r
-o=A.BD(a,p)
-a.eC.set(r,o)
-return o},
-DS(a,b,c,d){var s,r=b.as+("<"+A.Ux(c)+">"),q=a.eC.get(r)
-if(q!=null)return q
-s=A.hw(a,b,c,r,d)
-a.eC.set(r,s)
-return s},
-hw(a,b,c,d,e){var s,r,q,p,o,n,m,l
-if(e){s=c.length
-r=A.vU(s)
-for(q=0,p=0;p0){n=A.PL(a,b,r,0)
-m=A.bZ(a,c,r,0)
-return A.DS(a,n,m,c!==m)}}l=new A.Jc(null,null)
-l.w=12
-l.x=b
-l.y=c
-l.as=d
-return A.BD(a,l)},
-ow(a,b,c,d){return{u:a,e:b,r:c,s:[],p:0,n:d}},
-eT(a){var s,r,q,p,o,n,m,l=a.r,k=a.s
-for(s=l.length,r=0;r=48&&q<=57)r=A.Al(r+1,q,l,k)
-else if((((q|32)>>>0)-97&65535)<26||q===95||q===36||q===124)r=A.R8(a,r,l,k,!1)
-else if(q===46)r=A.R8(a,r,l,k,!0)
-else{++r
-switch(q){case 44:break
-case 58:k.push(!1)
-break
-case 33:k.push(!0)
-break
-case 59:k.push(A.KQ(a.u,a.e,k.pop()))
-break
-case 94:k.push(A.Hc(a.u,k.pop()))
-break
-case 35:k.push(A.mZ(a.u,5,"#"))
-break
-case 64:k.push(A.mZ(a.u,2,"@"))
-break
-case 126:k.push(A.mZ(a.u,3,"~"))
-break
-case 60:k.push(a.p)
-a.p=k.length
-break
-case 62:A.rD(a,k)
-break
-case 38:A.I3(a,k)
-break
-case 63:p=a.u
-k.push(A.Bc(p,A.KQ(p,a.e,k.pop()),a.n))
-break
-case 47:p=a.u
-k.push(A.LN(p,A.KQ(p,a.e,k.pop()),a.n))
-break
-case 40:k.push(-3)
-k.push(a.p)
-a.p=k.length
-break
-case 41:A.Mt(a,k)
-break
-case 91:k.push(a.p)
-a.p=k.length
-break
-case 93:o=k.splice(a.p)
-A.cH(a.u,a.e,o)
-a.p=k.pop()
-k.push(o)
-k.push(-1)
-break
-case 123:k.push(a.p)
-a.p=k.length
-break
-case 125:o=k.splice(a.p)
-A.Be(a.u,a.e,o)
-a.p=k.pop()
-k.push(o)
-k.push(-2)
-break
-case 43:n=l.indexOf("(",r)
-k.push(l.substring(r,n))
-k.push(-4)
-k.push(a.p)
-a.p=k.length
-r=n+1
-break
-default:throw"Bad character "+q}}}m=k.pop()
-return A.KQ(a.u,a.e,m)},
-Al(a,b,c,d){var s,r,q=b-48
-for(s=c.length;a=48&&r<=57))break
-q=q*10+(r-48)}d.push(q)
-return a},
-R8(a,b,c,d,e){var s,r,q,p,o,n,m=b+1
-for(s=c.length;m>>0)-97&65535)<26||r===95||r===36||r===124))q=r>=48&&r<=57
-else q=!0
-if(!q)break}}p=c.substring(b,m)
-if(e){s=a.u
-o=a.e
-if(o.w===9)o=o.x
-n=A.Qo(s,o.x)[p]
-if(n==null)A.v('No "'+p+'" in "'+A.mD(o)+'"')
-d.push(A.cE(s,o,n))}else d.push(p)
-return m},
-rD(a,b){var s,r=a.u,q=A.oU(a,b),p=b.pop()
-if(typeof p=="string")b.push(A.Q2(r,p,q))
-else{s=A.KQ(r,a.e,p)
-switch(s.w){case 11:b.push(A.DS(r,s,q,a.n))
-break
-default:b.push(A.ap(r,s,q))
-break}}},
-Mt(a,b){var s,r,q,p=a.u,o=b.pop(),n=null,m=null
-if(typeof o=="number")switch(o){case-1:n=b.pop()
-break
-case-2:m=b.pop()
-break
-default:b.push(o)
-break}else b.push(o)
-s=A.oU(a,b)
-o=b.pop()
-switch(o){case-3:o=b.pop()
-if(n==null)n=p.sEA
-if(m==null)m=p.sEA
-r=A.KQ(p,a.e,o)
-q=new A.ET()
-q.a=s
-q.b=n
-q.c=m
-b.push(A.Nf(p,r,q))
-return
-case-4:b.push(A.oP(p,b.pop(),s))
-return
-default:throw A.L(A.hV("Unexpected state under `()`: "+A.I(o)))}},
-I3(a,b){var s=b.pop()
-if(0===s){b.push(A.mZ(a.u,1,"0&"))
-return}if(1===s){b.push(A.mZ(a.u,4,"1&"))
-return}throw A.L(A.hV("Unexpected extended operation "+A.I(s)))},
-oU(a,b){var s=b.splice(a.p)
-A.cH(a.u,a.e,s)
-a.p=b.pop()
-return s},
-KQ(a,b,c){if(typeof c=="string")return A.Q2(a,c,a.sEA)
-else if(typeof c=="number"){b.toString
-return A.TV(a,b,c)}else return c},
-cH(a,b,c){var s,r=c.length
-for(s=0;sn)return!1
-m=n-o
-l=s.b
-k=r.b
-j=l.length
-i=k.length
-if(o+j=d)return!1
-a1=f[b]
-b+=3
-if(a00?new Array(q):v.typeUniverse.sEA
-for(o=0;o0?new Array(a):v.typeUniverse.sEA},
-Jc:function Jc(a,b){var _=this
-_.a=a
-_.b=b
-_.r=_.f=_.d=_.c=null
-_.w=0
-_.as=_.Q=_.z=_.y=_.x=null},
-ET:function ET(){this.c=this.b=this.a=null},
-lY:function lY(a){this.a=a},
-u9:function u9(){},
-iM:function iM(a){this.a=a},
-vL(a,b){var s=a[b]
-return s===a?null:s},
-a8(a,b,c){if(c==null)a[b]=a
-else a[b]=c},
-a0(){var s=Object.create(null)
-A.a8(s,"",s)
-delete s[""]
-return s},
-EF(a,b,c){return A.dJ(a,new A.N5(b.C("@<0>").Kq(c).C("N5<1,2>")))},
-C(a,b){return new A.N5(a.C("@<0>").Kq(b).C("N5<1,2>"))},
-nO(a){var s,r
-if(A.ks(a))return"{...}"
-s=new A.Rn("")
-try{r={}
-$.Qu.push(a)
-s.a+="{"
-r.a=!0
-a.aN(0,new A.mN(r,s))
-s.a+="}"}finally{$.Qu.pop()}r=s.a
-return r.charCodeAt(0)==0?r:r},
-k6:function k6(){},
-YF:function YF(a){var _=this
-_.a=0
-_.e=_.d=_.c=_.b=null
-_.$ti=a},
-Ni:function Ni(a,b){this.a=a
-this.$ti=b},
-t3:function t3(a,b,c){var _=this
-_.a=a
-_.b=b
-_.c=0
-_.d=null
-_.$ti=c},
-F:function F(){},
-il:function il(){},
-mN:function mN(a,b){this.a=a
-this.b=b},
-Uk:function Uk(){},
-wI:function wI(){},
-Zi:function Zi(){},
-u5:function u5(){},
-E3:function E3(){},
-Rw:function Rw(a){this.b=0
-this.c=a},
-QA(a,b){var s=A.Hp(a,b)
-if(s!=null)return s
-throw A.L(A.rr(a,null,null))},
-O8(a,b,c){var s,r,q
-if(a<0||a>4294967295)A.v(A.TE(a,0,4294967295,"length",null))
-s=A.j(new Array(a),c.C("p<0>"))
-s.$flags=1
-r=s
-if(a!==0&&b!=null)for(q=0;q"))
-for(s=a.length,r=0;r=s)return""
-return A.fw(a,b,s)},
-nu(a){return new A.VR(a,A.v4(a,!1,!0,!1,!1,""))},
-vg(a,b,c){var s=J.IT(b)
-if(!s.G())return a
-if(c.length===0){do a+=A.I(s.gl())
-while(s.G())}else{a+=A.I(s.gl())
-for(;s.G();)a=a+c+A.I(s.gl())}return a},
-eP(a,b,c,d){var s,r,q,p,o,n="0123456789ABCDEF"
-if(c===B.xM){s=$.z4()
-s=s.b.test(b)}else s=!1
-if(s)return b
-r=B.Qk.W(b)
-for(s=r.length,q=0,p="";q>>4&15]+n[o&15]}return p.charCodeAt(0)==0?p:p},
-tS(a){var s,r,q
-if(!$.Ob())return A.yf(a)
-s=new URLSearchParams()
-a.aN(0,new A.bp(s))
-r=s.toString()
-q=r.length
-if(q>0&&r[q-1]==="=")r=B.xB.Nj(r,0,q-1)
-return r.replace(/=&|\*|%7E/g,b=>b==="=&"?"&":b==="*"?"%2A":"~")},
-h(a){if(typeof a=="number"||A.y(a)||a==null)return J.n(a)
-if(typeof a=="string")return JSON.stringify(a)
-return A.i(a)},
-hV(a){return new A.C6(a)},
-q(a){return new A.AT(!1,null,null,a)},
-TE(a,b,c,d,e){return new A.bJ(b,c,!0,a,d,"Invalid value")},
-jB(a,b,c){if(0>a||a>c)throw A.L(A.TE(a,0,c,"start",null))
-if(b!=null){if(a>b||b>c)throw A.L(A.TE(b,a,c,"end",null))
-return b}return c},
-k1(a,b){if(a<0)throw A.L(A.TE(a,0,null,b,null))
-return a},
-xF(a,b,c,d){return new A.eY(b,!0,a,d,"Index out of range")},
-SY(a){return new A.ds(a)},
-a4(a){return new A.UV(a)},
-rr(a,b,c){return new A.aE(a,b,c)},
-Sd(a,b,c){var s,r
-if(A.ks(a)){if(b==="("&&c===")")return"(...)"
-return b+"..."+c}s=A.j([],t.s)
-$.Qu.push(a)
-try{A.Vr(a,s)}finally{$.Qu.pop()}r=A.vg(b,s,", ")+c
-return r.charCodeAt(0)==0?r:r},
-x(a,b,c){var s,r
-if(A.ks(a))return b+"..."+c
-s=new A.Rn(b)
-$.Qu.push(a)
-try{r=s
-r.a=A.vg(r.a,a,", ")}finally{$.Qu.pop()}s.a+=c
-r=s.a
-return r.charCodeAt(0)==0?r:r},
-Vr(a,b){var s,r,q,p,o,n,m,l=a.gkz(a),k=0,j=0
-while(!0){if(!(k<80||j<3))break
-if(!l.G())return
-s=A.I(l.gl())
-b.push(s)
-k+=s.length+2;++j}if(!l.G()){if(j<=5)return
-r=b.pop()
-q=b.pop()}else{p=l.gl();++j
-if(!l.G()){if(j<=4){b.push(A.I(p))
-return}r=A.I(p)
-q=b.pop()
-k+=r.length+2}else{o=l.gl();++j
-for(;l.G();p=o,o=n){n=l.gl();++j
-if(j>100){while(!0){if(!(k>75&&j>3))break
-k-=b.pop().length+2;--j}b.push("...")
-return}}q=A.I(p)
-r=A.I(o)
-k+=r.length+q.length+4}}if(j>b.length+2){k+=5
-m="..."}else m=null
-while(!0){if(!(k>80&&b.length>3))break
-k-=b.pop().length+2
-if(m==null){k+=5
-m="..."}}if(m!=null)b.push(m)
-b.push(q)
-b.push(r)},
-f5(a,b,c,d){var s
-if(B.zt===c){s=B.jn.gi(a)
-b=J.Nu(b)
-return A.qL(A.yc(A.yc($.t8(),s),b))}if(B.zt===d){s=B.jn.gi(a)
-b=J.Nu(b)
-c=J.Nu(c)
-return A.qL(A.yc(A.yc(A.yc($.t8(),s),b),c))}s=B.jn.gi(a)
-b=J.Nu(b)
-c=J.Nu(c)
-d=J.Nu(d)
-d=A.qL(A.yc(A.yc(A.yc(A.yc($.t8(),s),b),c),d))
-return d},
-Hh(a,b,c){var s,r,q,p,o,n,m="IPv4 address should contain exactly 4 parts",l="each part must be in the range 0..255",k=new A.cS(a),j=new Uint8Array(4)
-for(s=b,r=s,q=0;s9)k.$2("invalid character",s)}else{if(q===3)k.$2(m,s)
-o=A.QA(B.xB.Nj(a,r,s),null)
-if(o>255)k.$2(l,r)
-n=q+1
-j[q]=o
-r=s+1
-q=n}}if(q!==3)k.$2(m,c)
-o=A.QA(B.xB.Nj(a,r,c),null)
-if(o>255)k.$2(l,r)
-j[q]=o
-return j},
-Xh(a,b,c){var s
-if(b===c)throw A.L(A.rr("Empty IP address",a,b))
-if(a.charCodeAt(b)===118){s=A.lN(a,b,c)
-if(s!=null)throw A.L(s)
-return!1}A.eg(a,b,c)
-return!0},
-lN(a,b,c){var s,r,q,p,o="Missing hex-digit in IPvFuture address";++b
-for(s=b;!0;s=r){if(s=97&&p<=102)continue
-if(q===46){if(r-1===b)return new A.aE(o,a,r)
-s=r
-break}return new A.aE("Unexpected character",a,r-1)}if(s-1===b)return new A.aE(o,a,s)
-return new A.aE("Missing '.' in IPvFuture address",a,s)}if(s===c)return new A.aE("Missing address in IPvFuture address, host, cursor",null,null)
-for(;!0;){if((u.b.charCodeAt(a.charCodeAt(s))&16)!==0){++s
-if(s>>0)
-s.push((k[2]<<8|k[3])>>>0)}if(p){if(s.length>7)d.$2("an address with a wildcard must have less than 7 parts",e)}else if(s.length!==8)d.$2("an address without a wildcard must contain exactly 8 parts",e)
-j=new Uint8Array(16)
-for(l=s.length,i=9-l,r=0,h=0;r=b&&s=b&&s=p){if(i==null)i=new A.Rn("")
-if(r=o){if(q==null)q=new A.Rn("")
-if(r")).h(0,"/")
-if(q.length===0){if(s)return"/"}else if(r&&!B.xB.v(q,"/"))q="/"+q
-return A.Jr(q,e,f)},
-Jr(a,b,c){var s=b.length===0
-if(s&&!c&&!B.xB.v(a,"/")&&!B.xB.v(a,"\\"))return A.wF(a,!s||c)
-return A.xe(a)},
-le(a,b,c,d){return A.tS(d)},
-yf(a){var s={},r=new A.Rn("")
-s.a=""
-a.aN(0,new A.fq(new A.IP(s,r)))
-s=r.a
-return s.charCodeAt(0)==0?s:s},
-tG(a,b,c){return null},
-rv(a,b,c){var s,r,q,p,o,n=b+2
-if(n>=a.length)return"%"
-s=a.charCodeAt(b+1)
-r=a.charCodeAt(n)
-q=A.oo(s)
-p=A.oo(r)
-if(q<0||p<0)return"%"
-o=q*16+p
-if(o<127&&(u.b.charCodeAt(o)&1)!==0)return A.Lw(c&&65<=o&&90>=o?(o|32)>>>0:o)
-if(s>=97||r>=97)return B.xB.Nj(a,b,b+3).toUpperCase()
-return null},
-zX(a){var s,r,q,p,o,n="0123456789ABCDEF"
-if(a<=127){s=new Uint8Array(3)
-s[0]=37
-s[1]=n.charCodeAt(a>>>4)
-s[2]=n.charCodeAt(a&15)}else{if(a>2047)if(a>65535){r=240
-q=4}else{r=224
-q=3}else{r=192
-q=2}s=new Uint8Array(3*q)
-for(p=0;--q,q>=0;r=128){o=B.jn.bf(a,6*q)&63|r
-s[p]=37
-s[p+1]=n.charCodeAt(o>>>4)
-s[p+2]=n.charCodeAt(o&15)
-p+=3}}return A.HM(s)},
-PI(a,b,c,d,e,f){var s=A.Ul(a,b,c,d,e,f)
-return s==null?B.xB.Nj(a,b,c):s},
-Ul(a,b,c,d,e,f){var s,r,q,p,o,n,m,l,k,j=null,i=u.b
-for(s=!e,r=b,q=r,p=j;r=2&&A.Et(a.charCodeAt(0)))for(s=1;s127||(u.b.charCodeAt(r)&8)===0)break}return a},
-Et(a){var s=a|32
-return 97<=s&&s<=122},
-bp:function bp(a){this.a=a},
-Ge:function Ge(){},
-C6:function C6(a){this.a=a},
-E:function E(){},
-AT:function AT(a,b,c,d){var _=this
-_.a=a
-_.b=b
-_.c=c
-_.d=d},
-bJ:function bJ(a,b,c,d,e,f){var _=this
-_.e=a
-_.f=b
-_.a=c
-_.b=d
-_.c=e
-_.d=f},
-eY:function eY(a,b,c,d,e){var _=this
-_.f=a
-_.a=b
-_.b=c
-_.c=d
-_.d=e},
-ub:function ub(a){this.a=a},
-ds:function ds(a){this.a=a},
-lj:function lj(a){this.a=a},
-UV:function UV(a){this.a=a},
-k5:function k5(){},
-aE:function aE(a,b,c){this.a=a
-this.b=b
-this.c=c},
-cX:function cX(){},
-c8:function c8(){},
-a:function a(){},
-Rn:function Rn(a){this.a=a},
-cS:function cS(a){this.a=a},
-VC:function VC(a){this.a=a},
-JT:function JT(a,b){this.a=a
-this.b=b},
-Dn:function Dn(a,b,c,d,e,f,g){var _=this
-_.a=a
-_.b=b
-_.c=c
-_.d=d
-_.e=e
-_.f=f
-_.r=g
-_.y=_.w=$},
-RZ:function RZ(){},
-IP:function IP(a,b){this.a=a
-this.b=b},
-fq:function fq(a){this.a=a},
-K(a,b,c){if(c>=1)return a.$1(b)
-return a.$0()},
-m6(a){return a==null||A.y(a)||typeof a=="number"||typeof a=="string"||t.U.b(a)||t.E.b(a)||t.e.b(a)||t.O.b(a)||t.D.b(a)||t.k.b(a)||t.v.b(a)||t.B.b(a)||t.q.b(a)||t.J.b(a)||t.Y.b(a)},
-Pe(a){if(A.m6(a))return a
-return new A.Pb(new A.YF(t.A)).$1(a)},
-Pb:function Pb(a){this.a=a},
-lM:function lM(){this.a=$},
-YE:function YE(){},
-hy(a){if(a==null)return null
-return new A.TZ(a)},
-TZ:function TZ(a){this.a=a},
-E2(){var s,r,q,p,o=v.G,n=o.document.querySelectorAll("pre > code[data-dartpad]:only-child"),m=t.N,l=A.C(m,m)
-o=o.window
-m=new A.e(l)
-if(typeof m=="function")A.v(A.q("Attempting to rewrap a JS function."))
-s=function(a,b){return function(c){return a(b,c,arguments.length)}}(A.K,m)
-s[$.w()]=m
-o.addEventListener("message",s)
-for(o=t.m,r=0;r").Kq(c).C("A8<1,2>"))},
-h(a,b){var s,r=A.O8(a.length,"",t.N)
-for(s=0;s0)return a[s-1]
-throw A.L(A.Wp())},
-"["(a){return A.x(a,"[","]")},
-gkz(a){return new J.D(a,a.length,A.t6(a).C("D<1>"))},
-gi(a){return A.eQ(a)},
-gB(a){return a.length},
-$ibQ:1,
-$icX:1,
-$izM:1}
-J.B.prototype={
-R(a){var s,r,q
-if(!Array.isArray(a))return null
-s=a.$flags|0
-if((s&4)!==0)r="const, "
-else if((s&2)!==0)r="unmodifiable, "
-else r=(s&1)!==0?"fixed, ":""
-q="Instance of '"+A.l(a)+"'"
-if(r==="")return q
-return q+" ("+r+"length: "+a.length+")"}}
-J.Po.prototype={}
-J.D.prototype={
-gl(){var s=this.d
-return s==null?this.$ti.c.a(s):s},
-G(){var s,r=this,q=r.a,p=q.length
-if(r.b!==p)throw A.L(A.lk(q))
-s=r.c
-if(s>=p){r.d=null
-return!1}r.d=q[s]
-r.c=s+1
-return!0}}
-J.qI.prototype={
-"["(a){if(a===0&&1/a<0)return"-0.0"
-else return""+a},
-gi(a){var s,r,q,p,o=a|0
-if(a===o)return o&536870911
-s=Math.abs(a)
-r=Math.log(s)/0.6931471805599453|0
-q=Math.pow(2,r)
-p=s<1?s/q:q/s
-return((p*9007199254740992|0)+(p*3542243181176521|0))*599197+r*1259&536870911},
-P(a,b){var s
-if(a>0)s=this.p(a,b)
-else{s=b>31?31:b
-s=a>>s>>>0}return s},
-bf(a,b){if(0>b)throw A.L(A.tL(b))
-return this.p(a,b)},
-p(a,b){return b>31?0:a>>>b},
-gbx(a){return A.Kx(t.H)},
-$iCP:1}
-J.im.prototype={
-gbx(a){return A.Kx(t.S)},
-$iy5:1,
-$iKN:1}
-J.kD.prototype={
-gbx(a){return A.Kx(t.i)},
-$iy5:1}
-J.Dr.prototype={
-Y(a,b,c){var s
-if(c<0||c>a.length)throw A.L(A.TE(c,0,a.length,null,null))
-s=c+b.length
-if(s>a.length)return!1
-return b===a.substring(c,s)},
-v(a,b){return this.Y(a,b,0)},
-Nj(a,b,c){return a.substring(b,A.jB(b,c,a.length))},
-yn(a,b){return this.Nj(a,b,null)},
-OF(a){var s,r=a.trimEnd(),q=r.length
-if(q===0)return r
-s=q-1
-if(r.charCodeAt(s)!==133)return r
-return r.substring(0,J.c1(r,s))},
-Ix(a,b){var s,r
-if(0>=b)return""
-if(b===1||a.length===0)return a
-if(b!==b>>>0)throw A.L(B.Eq)
-for(s=a,r="";!0;){if((b&1)===1)r=s+r
-b=b>>>1
-if(b===0)break
-s+=s}return r},
-K(a,b,c){var s
-if(c<0||c>a.length)throw A.L(A.TE(c,0,a.length,null,null))
-s=a.indexOf(b,c)
-return s},
-M(a,b){return this.K(a,b,0)},
-I(a,b){return A.m2(a,b,0)},
-"["(a){return a},
-gi(a){var s,r,q
-for(s=a.length,r=0,q=0;q>6}r=r+((r&67108863)<<3)&536870911
-r^=r>>11
-return r+((r&16383)<<15)&536870911},
-gbx(a){return A.Kx(t.N)},
-$iy5:1,
-$iqU:1}
-A.SH.prototype={
-"["(a){return"LateInitializationError: "+this.a}}
-A.zl.prototype={}
-A.bQ.prototype={}
-A.aL.prototype={
-gkz(a){var s=this
-return new A.a7(s,s.gB(s),A.Lh(s).C("a7"))},
-h(a,b){var s,r,q,p=this,o=p.gB(p)
-if(b.length!==0){if(o===0)return""
-s=A.I(p.F(0,0))
-if(o!==p.gB(p))throw A.L(A.a4(p))
-for(r=s,q=1;q").Kq(c).C("A8<1,2>"))}}
-A.a7.prototype={
-gl(){var s=this.d
-return s==null?this.$ti.c.a(s):s},
-G(){var s,r=this,q=r.a,p=J.U6(q),o=p.gB(q)
-if(r.b!==o)throw A.L(A.a4(q))
-s=r.c
-if(s>=o){r.d=null
-return!1}r.d=p.F(q,s);++r.c
-return!0}}
-A.i1.prototype={
-gkz(a){var s=this.a
-return new A.MH(s.gkz(s),this.b,A.Lh(this).C("MH<1,2>"))}}
-A.xy.prototype={$ibQ:1}
-A.MH.prototype={
-G(){var s=this,r=s.b
-if(r.G()){s.a=s.c.$1(r.gl())
-return!0}s.a=null
-return!1},
-gl(){var s=this.a
-return s==null?this.$ti.y[1].a(s):s}}
-A.A8.prototype={
-gB(a){return J.Hm(this.a)},
-F(a,b){return this.b.$1(J.GA(this.a,b))}}
-A.SU.prototype={}
-A.S0.prototype={$r:"+code,id(1,2)",$s:1}
-A.rY.prototype={}
-A.t.prototype={
-"["(a){var s=this.constructor,r=s==null?null:s.name
-return"Closure '"+A.H(r==null?"unknown":r)+"'"},
-gKu(){return this},
-$C:"$1",
-$R:1,
-$D:null}
-A.E1.prototype={$C:"$2",$R:2}
-A.lc.prototype={}
-A.zx.prototype={
-"["(a){var s=this.$static_name
-if(s==null)return"Closure of unknown static method"
-return"Closure '"+A.H(s)+"'"}}
-A.rT.prototype={
-DN(a,b){if(b==null)return!1
-if(this===b)return!0
-if(!(b instanceof A.rT))return!1
-return this.$_target===b.$_target&&this.a===b.a},
-gi(a){return(A.CU(this.a)^A.eQ(this.$_target))>>>0},
-"["(a){return"Closure '"+this.$_name+"' of "+("Instance of '"+A.l(this.a)+"'")}}
-A.Eq.prototype={
-"["(a){return"RuntimeError: "+this.a}}
-A.N5.prototype={
-gvc(){return new A.Gp(this,this.$ti.C("Gp<1>"))},
-WH(a,b){var s,r,q,p,o=null
-if(typeof b=="string"){s=this.b
-if(s==null)return o
-r=s[b]
-q=r==null?o:r.b
-return q}else if(typeof b=="number"&&(b&0x3fffffff)===b){p=this.c
-if(p==null)return o
-r=p[b]
-q=r==null?o:r.b
-return q}else return this.aa(b)},
-aa(a){var s,r,q=this.d
-if(q==null)return null
-s=q[J.Nu(a)&1073741823]
-r=this.X(s,a)
-if(r<0)return null
-return s[r].b},
-t(a,b,c){var s,r,q,p,o,n,m=this
-if(typeof b=="string"){s=m.b
-m.m(s==null?m.b=m.A():s,b,c)}else if(typeof b=="number"&&(b&0x3fffffff)===b){r=m.c
-m.m(r==null?m.c=m.A():r,b,c)}else{q=m.d
-if(q==null)q=m.d=m.A()
-p=J.Nu(b)&1073741823
-o=q[p]
-if(o==null)q[p]=[m.O(b,c)]
-else{n=m.X(o,b)
-if(n>=0)o[n].b=c
-else o.push(m.O(b,c))}}},
-j(a,b){var s=this.H4(this.b,b)
-return s},
-aN(a,b){var s=this,r=s.e,q=s.r
-for(;r!=null;){b.$2(r.a,r.b)
-if(q!==s.r)throw A.L(A.a4(s))
-r=r.c}},
-m(a,b,c){var s=a[b]
-if(s==null)a[b]=this.O(b,c)
-else s.b=c},
-H4(a,b){var s
-if(a==null)return null
-s=a[b]
-if(s==null)return null
-this.GS(s)
-delete a[b]
-return s.b},
-S(){this.r=this.r+1&1073741823},
-O(a,b){var s,r=this,q=new A.vh(a,b)
-if(r.e==null)r.e=r.f=q
-else{s=r.f
-s.toString
-q.d=s
-r.f=s.c=q}++r.a
-r.S()
-return q},
-GS(a){var s=this,r=a.d,q=a.c
-if(r==null)s.e=q
-else r.c=q
-if(q==null)s.f=r
-else q.d=r;--s.a
-s.S()},
-X(a,b){var s,r
-if(a==null)return-1
-s=a.length
-for(r=0;r"]=s
-delete s[""]
-return s}}
-A.vh.prototype={}
-A.Gp.prototype={
-gkz(a){var s=this.a
-return new A.N6(s,s.r,s.e)}}
-A.N6.prototype={
-gl(){return this.d},
-G(){var s,r=this,q=r.a
-if(r.b!==q.r)throw A.L(A.a4(q))
-s=r.c
-if(s==null){r.d=null
-return!1}else{r.d=s.a
-r.c=s.c
-return!0}}}
-A.dC.prototype={
-$1(a){return this.a(a)}}
-A.wN.prototype={
-$2(a,b){return this.a(a,b)}}
-A.VX.prototype={
-$1(a){return this.a(a)}}
-A.M.prototype={
-"["(a){return this.k(!1)},
-k(a){var s,r,q,p,o,n=this.D(),m=this.n(),l=(a?"Record ":"")+"("
-for(s=n.length,r="",q=0;q0;){--q;--s
-k[q]=r[s]}}k=A.PW(k,!1,t.K)
-k.$flags=3
-return k}}
-A.B7.prototype={
-n(){return[this.a,this.b]},
-DN(a,b){if(b==null)return!1
-return b instanceof A.B7&&this.$s===b.$s&&J.cf(this.a,b.a)&&J.cf(this.b,b.b)},
-gi(a){return A.f5(this.$s,this.a,this.b,B.zt)}}
-A.VR.prototype={
-"["(a){return"RegExp/"+this.a+"/"+this.b.flags}}
-A.WZ.prototype={
-gbx(a){return B.lb},
-$iy5:1,
-$iI2:1}
-A.eH.prototype={}
-A.df.prototype={
-gbx(a){return B.LV},
-$iy5:1,
-$iWy:1}
-A.b0.prototype={
-gB(a){return a.length},
-$iXj:1}
-A.Dg.prototype={$ibQ:1,$icX:1,$izM:1}
-A.DV.prototype={$ibQ:1,$icX:1,$izM:1}
-A.zU.prototype={
-gbx(a){return B.Vr},
-$iy5:1,
-$ioI:1}
-A.K8.prototype={
-gbx(a){return B.mB},
-$iy5:1,
-$imJ:1}
-A.xj.prototype={
-gbx(a){return B.x9},
-$iy5:1,
-$irF:1}
-A.dE.prototype={
-gbx(a){return B.G3},
-$iy5:1,
-$iX6:1}
-A.Zc.prototype={
-gbx(a){return B.xg},
-$iy5:1,
-$iZX:1}
-A.wf.prototype={
-gbx(a){return B.Ry},
-$iy5:1,
-$iHS:1}
-A.Pq.prototype={
-gbx(a){return B.zo},
-$iy5:1,
-$iPz:1}
-A.eE.prototype={
-gbx(a){return B.xU},
-gB(a){return a.length},
-$iy5:1,
-$izt:1}
-A.V6.prototype={
-gbx(a){return B.iY},
-gB(a){return a.length},
-$iy5:1,
-$in6:1}
-A.RG.prototype={}
-A.vX.prototype={}
-A.WB.prototype={}
-A.VS.prototype={}
-A.Jc.prototype={
-C(a){return A.cE(v.typeUniverse,this,a)},
-Kq(a){return A.v5(v.typeUniverse,this,a)}}
-A.ET.prototype={}
-A.lY.prototype={
-"["(a){return A.d(this.a,null)}}
-A.u9.prototype={
-"["(a){return this.a}}
-A.iM.prototype={}
-A.k6.prototype={
-gvc(){return new A.Ni(this,this.$ti.C("Ni<1>"))},
-x4(a){var s,r
-if(typeof a=="string"&&a!=="__proto__"){s=this.b
-return s==null?!1:s[a]!=null}else if(typeof a=="number"&&(a&1073741823)===a){r=this.c
-return r==null?!1:r[a]!=null}else return this.KY(a)},
-KY(a){var s=this.d
-if(s==null)return!1
-return this.DF(this.e1(s,a),a)>=0},
-WH(a,b){var s,r,q
-if(typeof b=="string"&&b!=="__proto__"){s=this.b
-r=s==null?null:A.vL(s,b)
-return r}else if(typeof b=="number"&&(b&1073741823)===b){q=this.c
-r=q==null?null:A.vL(q,b)
-return r}else return this.c8(b)},
-c8(a){var s,r,q=this.d
-if(q==null)return null
-s=this.e1(q,a)
-r=this.DF(s,a)
-return r<0?null:s[r+1]},
-t(a,b,c){var s,r,q,p=this,o=p.d
-if(o==null)o=p.d=A.a0()
-s=A.CU(b)&1073741823
-r=o[s]
-if(r==null){A.a8(o,s,[b,c]);++p.a
-p.e=null}else{q=p.DF(r,b)
-if(q>=0)r[q+1]=c
-else{r.push(b,c);++p.a
-p.e=null}}},
-aN(a,b){var s,r,q,p,o,n=this,m=n.Cf()
-for(s=m.length,r=n.$ti.y[1],q=0;q"))}}
-A.t3.prototype={
-gl(){var s=this.d
-return s==null?this.$ti.c.a(s):s},
-G(){var s=this,r=s.b,q=s.c,p=s.a
-if(r!==p.e)throw A.L(A.a4(p))
-else if(q>=r.length){s.d=null
-return!1}else{s.d=r[q]
-s.c=q+1
-return!0}}}
-A.F.prototype={
-gkz(a){return new A.a7(a,a.length,A.z(a).C("a7"))},
-F(a,b){return a[b]},
-E2(a,b,c){return new A.A8(a,b,A.z(a).C("@").Kq(c).C("A8<1,2>"))},
-"["(a){return A.x(a,"[","]")}}
-A.il.prototype={
-aN(a,b){var s,r,q,p
-for(s=this.gvc(),s=s.gkz(s),r=A.Lh(this).y[1];s.G();){q=s.gl()
-p=this.WH(0,q)
-b.$2(q,p==null?r.a(p):p)}},
-"["(a){return A.nO(this)}}
-A.mN.prototype={
-$2(a,b){var s,r=this.a
-if(!r.a)this.b.a+=", "
-r.a=!1
-r=this.b
-s=A.I(a)
-r.a=(r.a+=s)+": "
-s=A.I(b)
-r.a+=s}}
-A.Uk.prototype={}
-A.wI.prototype={}
-A.Zi.prototype={}
-A.u5.prototype={}
-A.E3.prototype={
-W(a){var s,r,q,p=A.jB(0,null,a.length)
-if(p===0)return new Uint8Array(0)
-s=p*3
-r=new Uint8Array(s)
-q=new A.Rw(r)
-if(q.T(a,0,p)!==p)q.H()
-return new Uint8Array(r.subarray(0,A.rM(0,q.b,s)))}}
-A.Rw.prototype={
-H(){var s=this,r=s.c,q=s.b,p=s.b=q+1
-r.$flags&2&&A.cW(r)
-r[q]=239
-q=s.b=p+1
-r[p]=191
-s.b=q+1
-r[q]=189},
-O6(a,b){var s,r,q,p,o=this
-if((b&64512)===56320){s=65536+((a&1023)<<10)|b&1023
-r=o.c
-q=o.b
-p=o.b=q+1
-r.$flags&2&&A.cW(r)
-r[q]=s>>>18|240
-q=o.b=p+1
-r[p]=s>>>12&63|128
-p=o.b=q+1
-r[q]=s>>>6&63|128
-o.b=p+1
-r[p]=s&63|128
-return!0}else{o.H()
-return!1}},
-T(a,b,c){var s,r,q,p,o,n,m,l,k=this
-if(b!==c&&(a.charCodeAt(c-1)&64512)===55296)--c
-for(s=k.c,r=s.$flags|0,q=s.length,p=b;p=q)break
-k.b=n+1
-r&2&&A.cW(s)
-s[n]=o}else{n=o&64512
-if(n===55296){if(k.b+4>q)break
-m=p+1
-if(k.O6(o,a.charCodeAt(m)))p=m}else if(n===56320){if(k.b+3>q)break
-k.H()}else if(o<=2047){n=k.b
-l=n+1
-if(l>=q)break
-k.b=l
-r&2&&A.cW(s)
-s[n]=o>>>6|192
-k.b=l+1
-s[l]=o&63|128}else{n=k.b
-if(n+2>=q)break
-l=k.b=n+1
-r&2&&A.cW(s)
-s[n]=o>>>12|224
-n=k.b=l+1
-s[l]=o>>>6&63|128
-k.b=n+1
-s[n]=o&63|128}}}return p}}
-A.bp.prototype={
-$2(a,b){var s,r
-if(typeof b=="string")this.a.set(a,b)
-else if(b==null)this.a.set(a,"")
-else for(s=J.IT(b),r=this.a;s.G();){b=s.gl()
-if(typeof b=="string")r.append(a,b)
-else if(b==null)r.append(a,"")
-else A.ra(b)}}}
-A.Ge.prototype={}
-A.C6.prototype={
-"["(a){var s=this.a
-if(s!=null)return"Assertion failed: "+A.h(s)
-return"Assertion failed"}}
-A.E.prototype={}
-A.AT.prototype={
-gZ(){return"Invalid argument"+(!this.a?"(s)":"")},
-gN(){return""},
-"["(a){var s=this,r=s.c,q=r==null?"":" ("+r+")",p=s.d,o=p==null?"":": "+p,n=s.gZ()+q+o
-if(!s.a)return n
-return n+s.gN()+": "+A.h(s.gE())},
-gE(){return this.b}}
-A.bJ.prototype={
-gE(){return this.b},
-gZ(){return"RangeError"},
-gN(){var s,r=this.e,q=this.f
-if(r==null)s=q!=null?": Not less than or equal to "+A.I(q):""
-else if(q==null)s=": Not greater than or equal to "+A.I(r)
-else if(q>r)s=": Not in inclusive range "+A.I(r)+".."+A.I(q)
-else s=qe.length
-else s=!1
-if(s)f=null
-if(f==null){if(e.length>78)e=B.xB.Nj(e,0,75)+"..."
-return g+"\n"+e}for(r=1,q=0,p=!1,o=0;o1?g+(" (at line "+r+", character "+(f-q+1)+")\n"):g+(" (at character "+(f+1)+")\n")
-m=e.length
-for(o=f;o78){k="..."
-if(f-q<75){j=q+75
-i=q}else{if(m-f<75){i=m-75
-j=m
-k=""}else{i=f-36
-j=f+36}l="..."}}else{j=m
-i=q
-k=""}return g+l+B.xB.Nj(e,i,j)+k+"\n"+B.xB.Ix(" ",f-i+l.length)+"^\n"}else return f!=null?g+(" (at offset "+A.I(f)+")"):g}}
-A.cX.prototype={
-E2(a,b,c){return A.K1(this,b,A.Lh(this).C("cX.E"),c)},
-gB(a){var s,r=this.gkz(this)
-for(s=0;r.G();)++s
-return s},
-F(a,b){var s,r
-A.k1(b,"index")
-s=this.gkz(this)
-for(r=b;s.G();){if(r===0)return s.gl();--r}throw A.L(A.xF(b,b-r,this,"index"))},
-"["(a){return A.Sd(this,"(",")")}}
-A.c8.prototype={
-gi(a){return A.a.prototype.gi.call(this,0)},
-"["(a){return"null"}}
-A.a.prototype={$ia:1,
-DN(a,b){return this===b},
-gi(a){return A.eQ(this)},
-"["(a){return"Instance of '"+A.l(this)+"'"},
-gbx(a){return A.RW(this)},
-toString(){return this["["](this)}}
-A.Rn.prototype={
-"["(a){var s=this.a
-return s.charCodeAt(0)==0?s:s}}
-A.cS.prototype={
-$2(a,b){throw A.L(A.rr("Illegal IPv4 address, "+a,this.a,b))}}
-A.VC.prototype={
-$2(a,b){throw A.L(A.rr("Illegal IPv6 address, "+a,this.a,b))}}
-A.JT.prototype={
-$2(a,b){var s
-if(b-a>4)this.a.$2("an IPv6 part can only contain a maximum of 4 hex digits",a)
-s=A.QA(B.xB.Nj(this.b,a,b),16)
-if(s<0||s>65535)this.a.$2("each part must be in the range of `0x0..0xFFFF`",a)
-return s}}
-A.Dn.prototype={
-gL(){var s,r,q,p,o=this,n=o.w
-if(n===$){s=o.a
-r=s.length!==0?s+":":""
-q=o.c
-p=q==null
-if(!p||s==="file"){s=r+"//"
-r=o.b
-if(r.length!==0)s=s+r+"@"
-if(!p)s+=q
-r=o.d
-if(r!=null)s=s+":"+A.I(r)}else s=r
-s+=o.e
-r=o.f
-if(r!=null)s=s+"?"+r
-r=o.r
-if(r!=null)s=s+"#"+r
-n!==$&&A.kL()
-n=o.w=s.charCodeAt(0)==0?s:s}return n},
-gi(a){var s,r=this,q=r.y
-if(q===$){s=B.xB.gi(r.gL())
-r.y!==$&&A.kL()
-r.y=s
-q=s}return q},
-gq(){var s=this.c
-if(s==null)return""
-if(B.xB.v(s,"[")&&!B.xB.Y(s,"v",1))return B.xB.Nj(s,1,s.length-1)
-return s},
-gtp(){var s=this.d
-return s==null?A.wK(this.a):s},
-"["(a){return this.gL()},
-DN(a,b){var s,r,q,p,o,n=this
-if(b==null)return!1
-if(n===b)return!0
-s=!1
-if(b instanceof A.Dn)if(n.a===b.a)if(n.c!=null===(b.c!=null))if(n.b===b.b)if(n.gq()===b.gq())if(n.gtp()===b.gtp())if(n.e===b.e){r=n.f
-q=r==null
-p=b.f
-o=p==null
-if(!q===!o){if(q)r=""
-if(r===(o?"":p)){r=n.r
-q=r==null
-p=b.r
-o=p==null
-if(!q===!o){s=q?"":r
-s=s===(o?"":p)}}}}return s}}
-A.RZ.prototype={
-$1(a){return A.eP(64,a,B.xM,!1)}}
-A.IP.prototype={
-$2(a,b){var s=this.b,r=this.a
-s.a+=r.a
-r.a="&"
-r=A.eP(1,a,B.xM,!0)
-r=s.a+=r
-if(b!=null&&b.length!==0){s.a=r+"="
-r=A.eP(1,b,B.xM,!0)
-s.a+=r}}}
-A.fq.prototype={
-$2(a,b){var s,r
-if(b==null||typeof b=="string")this.a.$2(a,b)
-else for(s=J.IT(b),r=this.a;s.G();)r.$2(a,s.gl())}}
-A.Pb.prototype={
-$1(a){var s,r,q,p
-if(A.m6(a))return a
-s=this.a
-if(s.x4(a))return s.WH(0,a)
-if(a instanceof A.il){r={}
-s.t(0,a,r)
-for(s=a.gvc(),s=s.gkz(s);s.G();){q=s.gl()
-r[q]=this.$1(a.WH(0,q))}return r}else if(t.V.b(a)){p=[]
-s.t(0,a,p)
-B.Nm.FV(p,J.M1(a,this,t.z))
-return p}else return a}}
-A.lM.prototype={}
-A.YE.prototype={
-U(){this.a=Math.max(18,5)},
-W(a){var s,r,q,p,o,n,m,l,k,j,i,h,g,f
-if(!B.xB.I(a,"&"))return a
-s=new A.Rn("")
-for(r=a.length,q=0;!0;){p=B.xB.K(a,"&",q)
-if(p===-1){s.a+=B.xB.yn(a,q)
-break}o=s.a+=B.xB.Nj(a,q,p)
-n=this.a
-n===$&&A.Q4()
-m=B.xB.Nj(a,p,Math.min(r,p+n))
-if(m.length>4&&m.charCodeAt(1)===35){l=B.xB.M(m,";")
-if(l!==-1){k=m.charCodeAt(2)===120
-j=B.xB.Nj(m,k?3:2,l)
-i=A.Hp(j,k?16:10)
-if(i==null)i=-1
-if(i!==-1){s.a=o+A.Lw(i)
-q=p+(l+1)
-continue}}}g=0
-while(!0){if(!(g<268)){q=p
-h=!1
-break}f=B.uu[g]
-if(B.xB.v(m,f)){s.a+=B.nO[g]
-q=p+f.length
-h=!0
-break}++g}if(!h){s.a+="&";++q}}r=s.a
-return r.charCodeAt(0)==0?r:r}}
-A.TZ.prototype={}
-A.e.prototype={
-$1(a){var s,r,q,p,o,n,m=null,l=a.data,k=t.m,j=m,i=!1
-if(k.b(l)){s=l.type
-r=s
-if(r!=null){q=s==null?A.Bt(s):s
-p=l.sender
-r=p
-if(r!=null){j=p==null?A.Bt(p):p
-i=q==="ready"}}}if(i){i=this.a
-o=i.WH(0,j)
-if(o!=null){n=v.G.document.getElementById(j)
-if(n==null)n=k.a(n)
-k=A.hy(n.contentWindow)
-if(k!=null){r=t.N
-r=A.Pe(A.EF(["sourceCode",o,"type","sourceCode"],r,r))
-k.a.postMessage(r,"*")}i.j(0,j)}}}};(function aliases(){var s=J.u0.prototype
-s.u=s["["]})();(function inheritance(){var s=hunkHelpers.mixin,r=hunkHelpers.inherit,q=hunkHelpers.inheritMany
-r(A.a,null)
-q(A.a,[A.FK,J.vB,A.rY,J.D,A.Ge,A.zl,A.cX,A.a7,A.MH,A.SU,A.M,A.t,A.il,A.vh,A.N6,A.VR,A.Jc,A.ET,A.lY,A.t3,A.F,A.Uk,A.wI,A.Rw,A.k5,A.aE,A.c8,A.Rn,A.Dn,A.TZ])
-q(J.vB,[J.yE,J.CD,J.MF,J.rQ,J.Dw,J.qI,J.Dr])
-q(J.MF,[J.u0,J.p,A.WZ,A.eH])
-q(J.u0,[J.iC,J.kd,J.c5])
-r(J.B,A.rY)
-r(J.Po,J.p)
-q(J.qI,[J.im,J.kD])
-q(A.Ge,[A.SH,A.Eq,A.u9,A.C6,A.E,A.AT,A.ub,A.ds,A.lj,A.UV])
-q(A.cX,[A.bQ,A.i1])
-q(A.bQ,[A.aL,A.Gp,A.Ni])
-r(A.xy,A.i1)
-r(A.A8,A.aL)
-r(A.B7,A.M)
-r(A.S0,A.B7)
-q(A.t,[A.E1,A.lc,A.dC,A.VX,A.RZ,A.Pb,A.e])
-q(A.lc,[A.zx,A.rT])
-q(A.il,[A.N5,A.k6])
-q(A.E1,[A.wN,A.mN,A.bp,A.cS,A.VC,A.JT,A.IP,A.fq])
-q(A.eH,[A.df,A.b0])
-q(A.b0,[A.RG,A.WB])
-r(A.vX,A.RG)
-r(A.Dg,A.vX)
-r(A.VS,A.WB)
-r(A.DV,A.VS)
-q(A.Dg,[A.zU,A.K8])
-q(A.DV,[A.xj,A.dE,A.Zc,A.wf,A.Pq,A.eE,A.V6])
-r(A.iM,A.u9)
-r(A.YF,A.k6)
-r(A.Zi,A.Uk)
-r(A.u5,A.Zi)
-q(A.wI,[A.E3,A.YE])
-q(A.AT,[A.bJ,A.eY])
-r(A.lM,A.YE)
-s(A.RG,A.F)
-s(A.vX,A.SU)
-s(A.WB,A.F)
-s(A.VS,A.SU)})()
-var v={G:typeof self!="undefined"?self:globalThis,typeUniverse:{eC:new Map(),tR:{},eT:{},tPV:{},sEA:[]},mangledGlobalNames:{KN:"int",CP:"double",lf:"num",qU:"String",a2:"bool",c8:"Null",zM:"List",a:"Object",T8:"Map"},mangledNames:{},types:[],interceptorsByTag:null,leafTags:null,arrayRti:Symbol("$ti"),rttc:{"2;code,id":(a,b)=>c=>c instanceof A.S0&&a.b(c.a)&&b.b(c.b)}}
-A.xb(v.typeUniverse,JSON.parse('{"iC":"u0","kd":"u0","c5":"u0","yE":{"y5":[]},"CD":{"y5":[]},"MF":{"vm":[]},"u0":{"vm":[]},"p":{"zM":["1"],"bQ":["1"],"vm":[],"cX":["1"]},"B":{"rY":[]},"Po":{"p":["1"],"zM":["1"],"bQ":["1"],"vm":[],"cX":["1"]},"qI":{"CP":[]},"im":{"CP":[],"KN":[],"y5":[]},"kD":{"CP":[],"y5":[]},"Dr":{"qU":[],"y5":[]},"bQ":{"cX":["1"]},"aL":{"bQ":["1"],"cX":["1"]},"i1":{"cX":["2"],"cX.E":"2"},"xy":{"i1":["1","2"],"bQ":["2"],"cX":["2"],"cX.E":"2"},"A8":{"aL":["2"],"bQ":["2"],"cX":["2"],"aL.E":"2","cX.E":"2"},"N5":{"il":["1","2"]},"Gp":{"bQ":["1"],"cX":["1"],"cX.E":"1"},"WZ":{"vm":[],"I2":[],"y5":[]},"eH":{"vm":[]},"df":{"Wy":[],"vm":[],"y5":[]},"b0":{"Xj":["1"],"vm":[]},"Dg":{"F":["CP"],"zM":["CP"],"Xj":["CP"],"bQ":["CP"],"vm":[],"cX":["CP"]},"DV":{"F":["KN"],"zM":["KN"],"Xj":["KN"],"bQ":["KN"],"vm":[],"cX":["KN"]},"zU":{"oI":[],"F":["CP"],"zM":["CP"],"Xj":["CP"],"bQ":["CP"],"vm":[],"cX":["CP"],"y5":[],"F.E":"CP"},"K8":{"mJ":[],"F":["CP"],"zM":["CP"],"Xj":["CP"],"bQ":["CP"],"vm":[],"cX":["CP"],"y5":[],"F.E":"CP"},"xj":{"rF":[],"F":["KN"],"zM":["KN"],"Xj":["KN"],"bQ":["KN"],"vm":[],"cX":["KN"],"y5":[],"F.E":"KN"},"dE":{"X6":[],"F":["KN"],"zM":["KN"],"Xj":["KN"],"bQ":["KN"],"vm":[],"cX":["KN"],"y5":[],"F.E":"KN"},"Zc":{"ZX":[],"F":["KN"],"zM":["KN"],"Xj":["KN"],"bQ":["KN"],"vm":[],"cX":["KN"],"y5":[],"F.E":"KN"},"wf":{"HS":[],"F":["KN"],"zM":["KN"],"Xj":["KN"],"bQ":["KN"],"vm":[],"cX":["KN"],"y5":[],"F.E":"KN"},"Pq":{"Pz":[],"F":["KN"],"zM":["KN"],"Xj":["KN"],"bQ":["KN"],"vm":[],"cX":["KN"],"y5":[],"F.E":"KN"},"eE":{"zt":[],"F":["KN"],"zM":["KN"],"Xj":["KN"],"bQ":["KN"],"vm":[],"cX":["KN"],"y5":[],"F.E":"KN"},"V6":{"n6":[],"F":["KN"],"zM":["KN"],"Xj":["KN"],"bQ":["KN"],"vm":[],"cX":["KN"],"y5":[],"F.E":"KN"},"k6":{"il":["1","2"]},"YF":{"k6":["1","2"],"il":["1","2"]},"Ni":{"bQ":["1"],"cX":["1"],"cX.E":"1"},"zM":{"bQ":["1"],"cX":["1"]},"ZX":{"zM":["KN"],"bQ":["KN"],"cX":["KN"]},"n6":{"zM":["KN"],"bQ":["KN"],"cX":["KN"]},"zt":{"zM":["KN"],"bQ":["KN"],"cX":["KN"]},"rF":{"zM":["KN"],"bQ":["KN"],"cX":["KN"]},"HS":{"zM":["KN"],"bQ":["KN"],"cX":["KN"]},"X6":{"zM":["KN"],"bQ":["KN"],"cX":["KN"]},"Pz":{"zM":["KN"],"bQ":["KN"],"cX":["KN"]},"oI":{"zM":["CP"],"bQ":["CP"],"cX":["CP"]},"mJ":{"zM":["CP"],"bQ":["CP"],"cX":["CP"]}}'))
-A.FF(v.typeUniverse,JSON.parse('{"bQ":1,"SU":1,"N6":1,"b0":1,"Uk":2,"wI":2}'))
-var u={b:"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\u03f6\x00\u0404\u03f4 \u03f4\u03f6\u01f6\u01f6\u03f6\u03fc\u01f4\u03ff\u03ff\u0584\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u05d4\u01f4\x00\u01f4\x00\u0504\u05c4\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0400\x00\u0400\u0200\u03f7\u0200\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0200\u0200\u0200\u03f7\x00"}
-var t=(function rtii(){var s=A.q7
-return{J:s("I2"),Y:s("Wy"),Q:s("bQ<@>"),B:s("oI"),q:s("mJ"),Z:s("EH"),O:s("rF"),k:s("X6"),U:s("ZX"),V:s("cX<@>"),f:s("p"),s:s("p"),b:s("p<@>"),t:s("p"),T:s("CD"),m:s("vm"),g:s("c5"),p:s("Xj<@>"),j:s("zM<@>"),P:s("c8"),K:s("a"),L:s("VY"),F:s("+()"),N:s("qU"),R:s("y5"),D:s("HS"),v:s("Pz"),e:s("zt"),E:s("n6"),o:s("kd"),A:s("YF"),y:s("a2"),i:s("CP"),z:s("@"),S:s("KN"),W:s("b8?"),X:s("a?"),w:s("qU?"),u:s("a2?"),I:s("CP?"),x:s("KN?"),n:s("lf?"),H:s("lf")}})();(function constants(){var s=hunkHelpers.makeConstList
-B.Ok=J.vB.prototype
-B.Nm=J.p.prototype
-B.jn=J.im.prototype
-B.xB=J.Dr.prototype
-B.DG=J.c5.prototype
-B.Ub=J.MF.prototype
-B.ZQ=J.iC.prototype
-B.vB=J.kd.prototype
-B.O4=function getTagFallback(o) {
-  var s = Object.prototype.toString.call(o);
-  return s.substring(8, s.length - 1);
-}
-B.Yq=function() {
-  var toStringFunction = Object.prototype.toString;
-  function getTag(o) {
-    var s = toStringFunction.call(o);
-    return s.substring(8, s.length - 1);
-  }
-  function getUnknownTag(object, tag) {
-    if (/^HTML[A-Z].*Element$/.test(tag)) {
-      var name = toStringFunction.call(object);
-      if (name == "[object Object]") return null;
-      return "HTMLElement";
-    }
-  }
-  function getUnknownTagGenericBrowser(object, tag) {
-    if (object instanceof HTMLElement) return "HTMLElement";
-    return getUnknownTag(object, tag);
-  }
-  function prototypeForTag(tag) {
-    if (typeof window == "undefined") return null;
-    if (typeof window[tag] == "undefined") return null;
-    var constructor = window[tag];
-    if (typeof constructor != "function") return null;
-    return constructor.prototype;
-  }
-  function discriminator(tag) { return null; }
-  var isBrowser = typeof HTMLElement == "function";
-  return {
-    getTag: getTag,
-    getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,
-    prototypeForTag: prototypeForTag,
-    discriminator: discriminator };
-}
-B.wb=function(getTagFallback) {
-  return function(hooks) {
-    if (typeof navigator != "object") return hooks;
-    var userAgent = navigator.userAgent;
-    if (typeof userAgent != "string") return hooks;
-    if (userAgent.indexOf("DumpRenderTree") >= 0) return hooks;
-    if (userAgent.indexOf("Chrome") >= 0) {
-      function confirm(p) {
-        return typeof window == "object" && window[p] && window[p].name == p;
-      }
-      if (confirm("Window") && confirm("HTMLElement")) return hooks;
-    }
-    hooks.getTag = getTagFallback;
-  };
-}
-B.KU=function(hooks) {
-  if (typeof dartExperimentalFixupGetTag != "function") return hooks;
-  hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);
-}
-B.dk=function(hooks) {
-  if (typeof navigator != "object") return hooks;
-  var userAgent = navigator.userAgent;
-  if (typeof userAgent != "string") return hooks;
-  if (userAgent.indexOf("Firefox") == -1) return hooks;
-  var getTag = hooks.getTag;
-  var quickMap = {
-    "BeforeUnloadEvent": "Event",
-    "DataTransfer": "Clipboard",
-    "GeoGeolocation": "Geolocation",
-    "Location": "!Location",
-    "WorkerMessageEvent": "MessageEvent",
-    "XMLDocument": "!Document"};
-  function getTagFirefox(o) {
-    var tag = getTag(o);
-    return quickMap[tag] || tag;
-  }
-  hooks.getTag = getTagFirefox;
-}
-B.xi=function(hooks) {
-  if (typeof navigator != "object") return hooks;
-  var userAgent = navigator.userAgent;
-  if (typeof userAgent != "string") return hooks;
-  if (userAgent.indexOf("Trident/") == -1) return hooks;
-  var getTag = hooks.getTag;
-  var quickMap = {
-    "BeforeUnloadEvent": "Event",
-    "DataTransfer": "Clipboard",
-    "HTMLDDElement": "HTMLElement",
-    "HTMLDTElement": "HTMLElement",
-    "HTMLPhraseElement": "HTMLElement",
-    "Position": "Geoposition"
-  };
-  function getTagIE(o) {
-    var tag = getTag(o);
-    var newTag = quickMap[tag];
-    if (newTag) return newTag;
-    if (tag == "Object") {
-      if (window.DataView && (o instanceof window.DataView)) return "DataView";
-    }
-    return tag;
-  }
-  function prototypeForTagIE(tag) {
-    var constructor = window[tag];
-    if (constructor == null) return null;
-    return constructor.prototype;
-  }
-  hooks.getTag = getTagIE;
-  hooks.prototypeForTag = prototypeForTagIE;
-}
-B.fQ=function(hooks) {
-  var getTag = hooks.getTag;
-  var prototypeForTag = hooks.prototypeForTag;
-  function getTagFixed(o) {
-    var tag = getTag(o);
-    if (tag == "Document") {
-      if (!!o.xmlVersion) return "!Document";
-      return "!HTMLDocument";
-    }
-    return tag;
-  }
-  function prototypeForTagFixed(tag) {
-    if (tag == "Document") return null;
-    return prototypeForTag(tag);
-  }
-  hooks.getTag = getTagFixed;
-  hooks.prototypeForTag = prototypeForTagFixed;
-}
-B.i7=function(hooks) { return hooks; }
-
-B.Eq=new A.k5()
-B.zt=new A.zl()
-B.xM=new A.u5()
-B.Qk=new A.E3()
-B.nO=s(["`","\xa0","\xb4","|","\xb7","\xa8","\xb1","\xb7","_","\xae","\xb8","\n","\xa6","%","*","{","|",".","}","\xfd","\xa4","\xfa","\xf5","=","\xf9","@","\xf8","\xb1","\xf7","[","$","\xb7","]","\xd3","_","\xbc","\xbd","\xbe","\xbf","\xc0","\xc1","\xc3","\xf3","\xc8","\xc9","\xcc","\xcd","\xd1","\xd2","\xd5","\xd8","\xd9","\xda","\xdd","\xe0","\xe1","\xe3","\xe7","\xe8","\xe9","\xec","\xed","\xf1","\xf2","\xc7","\xea","\xb4","\xa4","\xf4","\xa6","\xf3","\xa3","\xf2","\xf9","\xf1",":","\xab","\xee","\xf8","\xed","\xfe","\xfd","\xf7","\xc8","\xec","\xaf","\xa1","\xb1","\xe9","\xdf","\xe8","\xb5","\xe7","\xb7","\xb8","\xfb","\xe6",",","\xbb","\xfa","\xbc","\xbd","?","\xbe","\xbf","\xc0","\xc1","\xc2","\xc3","\xc5","\xc5","\xc6","\xe5","\xde","\xc9","\xca","\xcc","\xe3","\xcd","\xce","\xe2","`","\xd1","\xd2","\xe1","\xd3","\xd4","f","\xd5","\xe0","\xd7","\xf5","\xd8","\xd9","\xda","\xdb","\xdd","\xc7","\xaf","\xb2","[",";","\xb3","\xc2","\\","+","\xc4","\xe5","\xf4","\xb4","\xc5","\xa7","\xc6","\xa9","\xb5","]","\xd7","\xff","\xb6","\xa2","\xca","\xcb","\xe4","\xfe","\xa0","\xfc","\xf6","\xfb","\xce","\xcf","}","\xe2","\xa9","\xb8","\xa1","'","\xb9","\xaa","\xba","\xef","\xd4","\xa3","\xbb","\xd6","\xab","\xeb",">","(",'"',"{","\xbd",")","\xee","\xea","\xdb","\xdc","\xdf","|","!","<","\xde",'"',"\xe6","=","\xd6",'"',"\xff","\xf6","\xd0","\xcf","&","\xcb","\xe4","&","\xc4","\xb9","\xba","*","\xb6","\xa0","#","\xb3","\xb2","\xad","\xfc","\xf7","\xeb","\xb0","\xaf","\xae","\xae","\xdc","\xac","\xaa","\xef","\xf0","\xa9","\xa9","\xa8","\xa2","\xa8","\xa8","\xa7","/",'"',"\xa5","\t","^","\xd0","\xb1","\xb0","\xae","\xae","\xad","\xac","\xa8","\xa5",">",">","<","<","&","&","\xf0",">",">","<","<"],t.s)
-B.uu=s(["`"," ","´","|","·","¨","±","·","_","®","¸","
","¦","%","*","{","|",".","}","ý","¤","ú","õ","=","ù","@","ø","±","÷","[","$","·","]","Ó","_","¼","½","¾","¿","À","Á","Ã","ó","È","É","Ì","Í","Ñ","Ò","Õ","Ø","Ù","Ú","Ý","à","á","ã","ç","è","é","ì","í","ñ","ò","Ç","ê","´","¤","ô","¦","ó","£","ò","ù","ñ",":","«","î","ø","í","þ","ý","÷","È","ì","¯","¡","±","é","ß","è","µ","ç","·","¸","û","æ",",","»","ú","¼","½","?","¾","¿","À","Á","Â","Ã","Å","Å","Æ","å","Þ","É","Ê","Ì","ã","Í","Î","â","`","Ñ","Ò","á","Ó","Ô","fj","Õ","à","×","õ","Ø","Ù","Ú","Û","Ý","Ç","¯","²","[",";","³","Â","\","+","Ä","å","ô","´","Å","§","Æ","©","µ","]","×","ÿ","¶","¢","Ê","Ë","ä","þ"," ","ü","ö","û","Î","Ï","}","â","©","¸","¡","'","¹","ª","º","ï","Ô","£","»","Ö","«","ë",">⃒","(",""","{","½",")","î","ê","Û","Ü","ß","|","!","<⃒","Þ",""","æ","=⃥","Ö",""","ÿ","ö","Ð","Ï","&","Ë","ä","&","Ä","¹","º","*","¶"," ","#","³","²","­","ü","÷","ë","°","¯","®","®","Ü","¬","ª","ï","ð","©","©","¨","¢","¨","¨","§","/",""","¥","	","^","Ð","±","°","®","®","­","¬","¨","¥",">",">","<","<","&","&","ð",">",">","<","<"],t.s)
-B.lb=A.xq("I2")
-B.LV=A.xq("Wy")
-B.Vr=A.xq("oI")
-B.mB=A.xq("mJ")
-B.x9=A.xq("rF")
-B.G3=A.xq("X6")
-B.xg=A.xq("ZX")
-B.h0=A.xq("a")
-B.Ry=A.xq("HS")
-B.zo=A.xq("Pz")
-B.xU=A.xq("zt")
-B.iY=A.xq("n6")})();(function staticFields(){$.zm=null
-$.Qu=A.j([],t.f)
-$.xu=null
-$.i0=null
-$.Hb=null
-$.NF=null
-$.TX=null
-$.x7=null
-$.nw=null
-$.vv=null
-$.Bv=null
-$.Bi=A.j([],A.q7("p?>"))
-$.j1=0})();(function lazyInitializers(){var s=hunkHelpers.lazyFinal
-s($,"fa","w",()=>A.Yg("_$dart_dartClosure"))
-s($,"hJ","u",()=>A.j([new J.B()],A.q7("p")))
-s($,"mf","z4",()=>A.nu("^[\\-\\.0-9A-Z_a-z~]*$"))
-s($,"Cc","Ob",()=>typeof URLSearchParams=="function")
-s($,"X0","t8",()=>A.CU(B.h0))
-s($,"Zj","Ww",()=>{var r=new A.lM()
-r.U()
-return r})})();(function nativeSupport(){!function(){var s=function(a){var m={}
-m[a]=1
-return Object.keys(hunkHelpers.convertToFastObject(m))[0]}
-v.getIsolateTag=function(a){return s("___dart_"+a+v.isolateTag)}
-var r="___dart_isolate_tags_"
-var q=Object[r]||(Object[r]=Object.create(null))
-var p="_ZxYxX"
-for(var o=0;;o++){var n=s(p+"_"+o+"_")
-if(!(n in q)){q[n]=1
-v.isolateTag=n
-break}}v.dispatchPropertyName=v.getIsolateTag("dispatch_record")}()
-hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer:A.WZ,ArrayBufferView:A.eH,DataView:A.df,Float32Array:A.zU,Float64Array:A.K8,Int16Array:A.xj,Int32Array:A.dE,Int8Array:A.Zc,Uint16Array:A.wf,Uint32Array:A.Pq,Uint8ClampedArray:A.eE,CanvasPixelArray:A.eE,Uint8Array:A.V6})
-hunkHelpers.setOrUpdateLeafTags({ArrayBuffer:true,ArrayBufferView:false,DataView:true,Float32Array:true,Float64Array:true,Int16Array:true,Int32Array:true,Int8Array:true,Uint16Array:true,Uint32Array:true,Uint8ClampedArray:true,CanvasPixelArray:true,Uint8Array:false})
-A.b0.$nativeSuperclassTag="ArrayBufferView"
-A.RG.$nativeSuperclassTag="ArrayBufferView"
-A.vX.$nativeSuperclassTag="ArrayBufferView"
-A.Dg.$nativeSuperclassTag="ArrayBufferView"
-A.WB.$nativeSuperclassTag="ArrayBufferView"
-A.VS.$nativeSuperclassTag="ArrayBufferView"
-A.DV.$nativeSuperclassTag="ArrayBufferView"})()
-Function.prototype.$0=function(){return this()}
-Function.prototype.$1=function(a){return this(a)}
-Function.prototype.$2=function(a,b){return this(a,b)}
-Function.prototype.$1$1=function(a){return this(a)}
-convertAllToFastObject(w)
-convertToFastObject($);(function(a){if(typeof document==="undefined"){a(null)
-return}if(typeof document.currentScript!="undefined"){a(document.currentScript)
-return}var s=document.scripts
-function onLoad(b){for(var q=0;q
diff --git a/src/content/app-architecture/design-patterns/key-value-data.md b/src/content/app-architecture/design-patterns/key-value-data.md
index 6c62378dde1..c800bd8946c 100644
--- a/src/content/app-architecture/design-patterns/key-value-data.md
+++ b/src/content/app-architecture/design-patterns/key-value-data.md
@@ -7,9 +7,6 @@ contentTags:
   - dark mode
 iconPath: /assets/images/docs/app-architecture/design-patterns/kv-store-icon.svg
 order: 1
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/app-architecture/design-patterns/offline-first.md b/src/content/app-architecture/design-patterns/offline-first.md
index 1e6e764035d..ec09111a78e 100644
--- a/src/content/app-architecture/design-patterns/offline-first.md
+++ b/src/content/app-architecture/design-patterns/offline-first.md
@@ -7,9 +7,6 @@ contentTags:
   - repository pattern
 iconPath: /assets/images/docs/app-architecture/design-patterns/offline-first-icon.svg
 order: 3
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/app-architecture/design-patterns/optimistic-state.md b/src/content/app-architecture/design-patterns/optimistic-state.md
index 5e9d20d5873..852846c3302 100644
--- a/src/content/app-architecture/design-patterns/optimistic-state.md
+++ b/src/content/app-architecture/design-patterns/optimistic-state.md
@@ -6,9 +6,6 @@ contentTags:
   - asynchronous dart
 iconPath: /assets/images/docs/app-architecture/design-patterns/optimistic-state-icon.svg
 order: 0
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/app-architecture/design-patterns/result.md b/src/content/app-architecture/design-patterns/result.md
index 3960dc7447b..1d739965781 100644
--- a/src/content/app-architecture/design-patterns/result.md
+++ b/src/content/app-architecture/design-patterns/result.md
@@ -6,9 +6,6 @@ contentTags:
   - services
 iconPath: /assets/images/docs/app-architecture/design-patterns/result-icon.svg
 order: 5
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/app-architecture/design-patterns/sql.md b/src/content/app-architecture/design-patterns/sql.md
index 86b97b0e2b5..daac2603361 100644
--- a/src/content/app-architecture/design-patterns/sql.md
+++ b/src/content/app-architecture/design-patterns/sql.md
@@ -6,9 +6,6 @@ contentTags:
   - SQL
 iconPath: /assets/images/docs/app-architecture/design-patterns/sql-icon.svg
 order: 2
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/codelabs/implicit-animations.md b/src/content/codelabs/implicit-animations.md
index 5067425c084..f83f5ef66d5 100644
--- a/src/content/codelabs/implicit-animations.md
+++ b/src/content/codelabs/implicit-animations.md
@@ -3,9 +3,6 @@ title: "Implicit animations"
 description: >
   Learn how to use Flutter's implicitly animated widgets
   through interactive examples and exercises.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/animation/animated-container.md b/src/content/cookbook/animation/animated-container.md
index 40a6946406f..885943b7e59 100644
--- a/src/content/cookbook/animation/animated-container.md
+++ b/src/content/cookbook/animation/animated-container.md
@@ -1,9 +1,6 @@
 ---
 title: Animate the properties of a container
 description: How to animate properties of a container using implicit animations.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/animation/opacity-animation.md b/src/content/cookbook/animation/opacity-animation.md
index e4bf9af1133..55087cb42fb 100644
--- a/src/content/cookbook/animation/opacity-animation.md
+++ b/src/content/cookbook/animation/opacity-animation.md
@@ -1,9 +1,6 @@
 ---
 title: Fade a widget in and out
 description: How to fade a widget in and out.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/animation/page-route-animation.md b/src/content/cookbook/animation/page-route-animation.md
index 0f91c035e19..3b4306152d3 100644
--- a/src/content/cookbook/animation/page-route-animation.md
+++ b/src/content/cookbook/animation/page-route-animation.md
@@ -1,9 +1,6 @@
 ---
 title: Animate a page route transition
 description: How to animate from one page to another.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/animation/physics-simulation.md b/src/content/cookbook/animation/physics-simulation.md
index a3207467484..7b4dee6fd3a 100644
--- a/src/content/cookbook/animation/physics-simulation.md
+++ b/src/content/cookbook/animation/physics-simulation.md
@@ -1,9 +1,6 @@
 ---
 title: Animate a widget using a physics simulation
 description: How to implement a physics animation.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/design/drawer.md b/src/content/cookbook/design/drawer.md
index fa3d6a82f86..aa04f2d8b37 100644
--- a/src/content/cookbook/design/drawer.md
+++ b/src/content/cookbook/design/drawer.md
@@ -1,9 +1,6 @@
 ---
 title: Add a drawer to a screen
 description: How to implement a Material Drawer.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/design/orientation.md b/src/content/cookbook/design/orientation.md
index 428cd08ca1d..ce4f5c28345 100644
--- a/src/content/cookbook/design/orientation.md
+++ b/src/content/cookbook/design/orientation.md
@@ -1,9 +1,6 @@
 ---
 title: Update the UI based on orientation
 description: Respond to a change in the screen's orientation.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/design/snackbars.md b/src/content/cookbook/design/snackbars.md
index ff966748cab..685e2a075ab 100644
--- a/src/content/cookbook/design/snackbars.md
+++ b/src/content/cookbook/design/snackbars.md
@@ -1,9 +1,6 @@
 ---
 title: Display a snackbar
 description: How to implement a snackbar to display messages.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/design/tabs.md b/src/content/cookbook/design/tabs.md
index f7fe3b9d1aa..095ef836a6e 100644
--- a/src/content/cookbook/design/tabs.md
+++ b/src/content/cookbook/design/tabs.md
@@ -1,9 +1,6 @@
 ---
 title: Work with tabs
 description: How to implement tabs in a layout.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/design/themes.md b/src/content/cookbook/design/themes.md
index 9b1c0f2133a..bfa1e79701a 100644
--- a/src/content/cookbook/design/themes.md
+++ b/src/content/cookbook/design/themes.md
@@ -2,9 +2,6 @@
 title: Use themes to share colors and font styles
 shortTitle: Themes
 description: How to share colors and font styles throughout an app using Themes.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/effects/download-button.md b/src/content/cookbook/effects/download-button.md
index f94e50c30ba..12d406528b0 100644
--- a/src/content/cookbook/effects/download-button.md
+++ b/src/content/cookbook/effects/download-button.md
@@ -1,9 +1,6 @@
 ---
 title: Create a download button
 description: How to implement a download button.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/effects/drag-a-widget.md b/src/content/cookbook/effects/drag-a-widget.md
index 38794ceef54..0a285268688 100644
--- a/src/content/cookbook/effects/drag-a-widget.md
+++ b/src/content/cookbook/effects/drag-a-widget.md
@@ -1,9 +1,6 @@
 ---
 title: Drag a UI element
 description: How to implement a draggable UI element.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/effects/expandable-fab.md b/src/content/cookbook/effects/expandable-fab.md
index 5e98d565530..056a4e03e23 100644
--- a/src/content/cookbook/effects/expandable-fab.md
+++ b/src/content/cookbook/effects/expandable-fab.md
@@ -1,9 +1,6 @@
 ---
 title: Create an expandable FAB
 description: How to implement a FAB that expands to multiple buttons when tapped.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/effects/nested-nav.md b/src/content/cookbook/effects/nested-nav.md
index f1ae4abb495..d9599c09239 100644
--- a/src/content/cookbook/effects/nested-nav.md
+++ b/src/content/cookbook/effects/nested-nav.md
@@ -1,9 +1,6 @@
 ---
 title: Create a nested navigation flow
 description: How to implement a flow with nested navigation.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/effects/parallax-scrolling.md b/src/content/cookbook/effects/parallax-scrolling.md
index 7f1097804d8..8a17ccda1cc 100644
--- a/src/content/cookbook/effects/parallax-scrolling.md
+++ b/src/content/cookbook/effects/parallax-scrolling.md
@@ -1,9 +1,6 @@
 ---
 title: Create a scrolling parallax effect
 description: How to implement a scrolling parallax effect.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/effects/shimmer-loading.md b/src/content/cookbook/effects/shimmer-loading.md
index b36f18bb172..437aa4beb62 100644
--- a/src/content/cookbook/effects/shimmer-loading.md
+++ b/src/content/cookbook/effects/shimmer-loading.md
@@ -1,9 +1,6 @@
 ---
 title: Create a shimmer loading effect
 description: How to implement a shimmer loading effect.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/effects/staggered-menu-animation.md b/src/content/cookbook/effects/staggered-menu-animation.md
index c3c04461045..53811dd236d 100644
--- a/src/content/cookbook/effects/staggered-menu-animation.md
+++ b/src/content/cookbook/effects/staggered-menu-animation.md
@@ -1,9 +1,6 @@
 ---
 title: Create a staggered menu animation
 description: How to implement a staggered menu animation.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/effects/typing-indicator.md b/src/content/cookbook/effects/typing-indicator.md
index 0eff0ce19d0..99c5172c23a 100644
--- a/src/content/cookbook/effects/typing-indicator.md
+++ b/src/content/cookbook/effects/typing-indicator.md
@@ -1,9 +1,6 @@
 ---
 title: Create a typing indicator
 description: How to implement a typing indicator.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/forms/focus.md b/src/content/cookbook/forms/focus.md
index d9fd2c331bb..6ae62f4fb38 100644
--- a/src/content/cookbook/forms/focus.md
+++ b/src/content/cookbook/forms/focus.md
@@ -1,9 +1,6 @@
 ---
 title: Focus and text fields
 description: How focus works with text fields.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/forms/retrieve-input.md b/src/content/cookbook/forms/retrieve-input.md
index 25b685f75da..8316a35267f 100644
--- a/src/content/cookbook/forms/retrieve-input.md
+++ b/src/content/cookbook/forms/retrieve-input.md
@@ -1,9 +1,6 @@
 ---
 title: Retrieve the value of a text field
 description: How to retrieve text from a text field.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/forms/text-field-changes.md b/src/content/cookbook/forms/text-field-changes.md
index 166bf0fe826..7a0abdf2fbf 100644
--- a/src/content/cookbook/forms/text-field-changes.md
+++ b/src/content/cookbook/forms/text-field-changes.md
@@ -1,9 +1,6 @@
 ---
 title: Handle changes to a text field
 description: How to detect changes to a text field.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/forms/text-input.md b/src/content/cookbook/forms/text-input.md
index fe6516bfbff..77056ee514a 100644
--- a/src/content/cookbook/forms/text-input.md
+++ b/src/content/cookbook/forms/text-input.md
@@ -1,9 +1,6 @@
 ---
 title: Create and style a text field
 description: How to implement a text field.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/forms/validation.md b/src/content/cookbook/forms/validation.md
index 44dd8dc3ff3..78c2c87b441 100644
--- a/src/content/cookbook/forms/validation.md
+++ b/src/content/cookbook/forms/validation.md
@@ -1,9 +1,6 @@
 ---
 title: Build a form with validation
 description: How to build a form that validates input.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/gestures/dismissible.md b/src/content/cookbook/gestures/dismissible.md
index 3ef0b7f88b4..dba7034d15b 100644
--- a/src/content/cookbook/gestures/dismissible.md
+++ b/src/content/cookbook/gestures/dismissible.md
@@ -1,9 +1,6 @@
 ---
 title: Implement swipe to dismiss
 description: How to implement swiping to dismiss or delete.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/gestures/handling-taps.md b/src/content/cookbook/gestures/handling-taps.md
index dd57563f1b5..1ad9f6d45ca 100644
--- a/src/content/cookbook/gestures/handling-taps.md
+++ b/src/content/cookbook/gestures/handling-taps.md
@@ -1,9 +1,6 @@
 ---
 title: Handle taps
 description: How to handle tapping and dragging.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/gestures/ripples.md b/src/content/cookbook/gestures/ripples.md
index f9a4bd063d4..092ff89179f 100644
--- a/src/content/cookbook/gestures/ripples.md
+++ b/src/content/cookbook/gestures/ripples.md
@@ -1,9 +1,6 @@
 ---
 title: Add Material touch ripples
 description: How to implement ripple animations.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/images/network-image.md b/src/content/cookbook/images/network-image.md
index f4343250436..b3651fea007 100644
--- a/src/content/cookbook/images/network-image.md
+++ b/src/content/cookbook/images/network-image.md
@@ -1,9 +1,6 @@
 ---
 title: Display images from the internet
 description: How to display images from the internet.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/lists/basic-list.md b/src/content/cookbook/lists/basic-list.md
index a2f1d8a539f..5c2877cbbbf 100644
--- a/src/content/cookbook/lists/basic-list.md
+++ b/src/content/cookbook/lists/basic-list.md
@@ -1,9 +1,6 @@
 ---
 title: Use lists
 description: How to implement a list.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/lists/floating-app-bar.md b/src/content/cookbook/lists/floating-app-bar.md
index fbf63d79d3f..2894f7d8111 100644
--- a/src/content/cookbook/lists/floating-app-bar.md
+++ b/src/content/cookbook/lists/floating-app-bar.md
@@ -1,9 +1,6 @@
 ---
 title: Place a floating app bar above a list
 description: How to place a floating app bar or navigation bar above a list.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/lists/grid-lists.md b/src/content/cookbook/lists/grid-lists.md
index 2099ad136de..d8cf8acf3df 100644
--- a/src/content/cookbook/lists/grid-lists.md
+++ b/src/content/cookbook/lists/grid-lists.md
@@ -1,9 +1,6 @@
 ---
 title: Create a grid list
 description: How to implement a grid list.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/lists/horizontal-list.md b/src/content/cookbook/lists/horizontal-list.md
index 1eaf3e6e701..2991ed39b57 100644
--- a/src/content/cookbook/lists/horizontal-list.md
+++ b/src/content/cookbook/lists/horizontal-list.md
@@ -1,9 +1,6 @@
 ---
 title: Create a horizontal list
 description: How to implement a horizontal list.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/lists/long-lists.md b/src/content/cookbook/lists/long-lists.md
index 8adebd36b4a..116e00ec3d2 100644
--- a/src/content/cookbook/lists/long-lists.md
+++ b/src/content/cookbook/lists/long-lists.md
@@ -1,9 +1,6 @@
 ---
 title: Work with long lists
 description: Use ListView.builder to implement a long or infinite list.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/lists/mixed-list.md b/src/content/cookbook/lists/mixed-list.md
index 08fea646c51..c3247031c7d 100644
--- a/src/content/cookbook/lists/mixed-list.md
+++ b/src/content/cookbook/lists/mixed-list.md
@@ -1,9 +1,6 @@
 ---
 title: Create lists with different types of items
 description: How to implement a list that contains different types of assets.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/lists/spaced-items.md b/src/content/cookbook/lists/spaced-items.md
index b483936291a..a7f27c06095 100644
--- a/src/content/cookbook/lists/spaced-items.md
+++ b/src/content/cookbook/lists/spaced-items.md
@@ -1,9 +1,6 @@
 ---
 title: List with spaced items
 description: How to create a list with spaced or expanded items 
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/navigation/hero-animations.md b/src/content/cookbook/navigation/hero-animations.md
index 03c754e6ce1..1837074e5ec 100644
--- a/src/content/cookbook/navigation/hero-animations.md
+++ b/src/content/cookbook/navigation/hero-animations.md
@@ -1,9 +1,6 @@
 ---
 title: Animate a widget across screens
 description: How to animate a widget from one screen to another
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/navigation/named-routes.md b/src/content/cookbook/navigation/named-routes.md
index 6f96251bf81..f5db4568d61 100644
--- a/src/content/cookbook/navigation/named-routes.md
+++ b/src/content/cookbook/navigation/named-routes.md
@@ -1,9 +1,6 @@
 ---
 title: Navigate with named routes
 description: How to implement named routes for navigating between screens.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/navigation/navigate-with-arguments.md b/src/content/cookbook/navigation/navigate-with-arguments.md
index 6bb60ab6104..ef0628a3a79 100644
--- a/src/content/cookbook/navigation/navigate-with-arguments.md
+++ b/src/content/cookbook/navigation/navigate-with-arguments.md
@@ -1,9 +1,6 @@
 ---
 title: Pass arguments to a named route
 description: How to pass arguments to a named route.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/navigation/navigation-basics.md b/src/content/cookbook/navigation/navigation-basics.md
index 46b565ee7bc..5f19848aa4c 100644
--- a/src/content/cookbook/navigation/navigation-basics.md
+++ b/src/content/cookbook/navigation/navigation-basics.md
@@ -1,9 +1,6 @@
 ---
 title: Navigate to a new screen and back
 description: How to navigate between routes.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/navigation/passing-data.md b/src/content/cookbook/navigation/passing-data.md
index 3126e30d3ef..50322e1eaa8 100644
--- a/src/content/cookbook/navigation/passing-data.md
+++ b/src/content/cookbook/navigation/passing-data.md
@@ -1,9 +1,6 @@
 ---
 title: Send data to a new screen
 description: How to pass data to a new route.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/navigation/returning-data.md b/src/content/cookbook/navigation/returning-data.md
index ade34a13373..3f49468a9df 100644
--- a/src/content/cookbook/navigation/returning-data.md
+++ b/src/content/cookbook/navigation/returning-data.md
@@ -1,9 +1,6 @@
 ---
 title: Return data from a screen
 description: How to return data from a new screen.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/cookbook/plugins/play-video.md b/src/content/cookbook/plugins/play-video.md
index 75c59b29b25..cc6d6f3792e 100644
--- a/src/content/cookbook/plugins/play-video.md
+++ b/src/content/cookbook/plugins/play-video.md
@@ -1,9 +1,6 @@
 ---
 title: Play and pause a video
 description: How to use the video_player plugin.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/ui/index.md b/src/content/ui/index.md
index 5a9dd546965..96c02bb91c5 100644
--- a/src/content/ui/index.md
+++ b/src/content/ui/index.md
@@ -2,9 +2,6 @@
 title: Building user interfaces with Flutter
 shortTitle: UI
 description: Introduction to user interface development in Flutter.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 
diff --git a/src/content/ui/interactivity/actions-and-shortcuts.md b/src/content/ui/interactivity/actions-and-shortcuts.md
index 262a9195fad..790ed9d75fa 100644
--- a/src/content/ui/interactivity/actions-and-shortcuts.md
+++ b/src/content/ui/interactivity/actions-and-shortcuts.md
@@ -1,9 +1,6 @@
 ---
 title: Using Actions and Shortcuts
 description: How to use Actions and Shortcuts in your Flutter app.
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---
 
 This page describes how to bind physical keyboard events to actions in the user
diff --git a/src/content/ui/layout/constraints.md b/src/content/ui/layout/constraints.md
index c066bb2c92e..d0bddae50ce 100644
--- a/src/content/ui/layout/constraints.md
+++ b/src/content/ui/layout/constraints.md
@@ -2,9 +2,6 @@
 title: Understanding constraints
 description: Flutter's model for widget constraints, sizing, positioning, and how they interact.
 showToc: false
-js:
-  - defer: true
-    url: /assets/js/inject_dartpad.dart.js
 ---