haveapi 0.29.12 → 0.30.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Rakefile +1 -0
  4. data/doc/client-examples.md +198 -0
  5. data/haveapi.gemspec +1 -1
  6. data/lib/haveapi/client_example.rb +47 -1
  7. data/lib/haveapi/client_examples/dynamic_helpers.rb +129 -0
  8. data/lib/haveapi/client_examples/go_client.rb +37 -0
  9. data/lib/haveapi/client_examples/js_async_client.rb +14 -0
  10. data/lib/haveapi/client_examples/js_client.rb +179 -135
  11. data/lib/haveapi/client_examples/python_async_client.rb +14 -0
  12. data/lib/haveapi/client_examples/python_client.rb +172 -0
  13. data/lib/haveapi/client_examples/rust_client.rb +59 -0
  14. data/lib/haveapi/client_examples/ts_async_client.rb +14 -0
  15. data/lib/haveapi/client_examples/ts_client.rb +14 -0
  16. data/lib/haveapi/documentation_clients.rb +249 -0
  17. data/lib/haveapi/documentation_context.rb +47 -0
  18. data/lib/haveapi/documentation_schema.rb +73 -0
  19. data/lib/haveapi/public/js/highlight-LICENSE +29 -0
  20. data/lib/haveapi/public/js/highlight.pack.js +2 -2
  21. data/lib/haveapi/public/js/highlighter.js +16 -6
  22. data/lib/haveapi/public/js/main.js +9 -1
  23. data/lib/haveapi/public/js/nojs-tabs.js +37 -3
  24. data/lib/haveapi/server.rb +39 -0
  25. data/lib/haveapi/version.rb +1 -1
  26. data/lib/haveapi/views/main_layout.erb +11 -0
  27. data/lib/haveapi/views/version_page/auth_body.erb +3 -3
  28. data/lib/haveapi/views/version_page/client_auth.erb +2 -2
  29. data/lib/haveapi/views/version_page/client_example.erb +2 -11
  30. data/lib/haveapi/views/version_page/client_init.erb +2 -2
  31. data/lib/haveapi/views/version_page/client_result.erb +5 -0
  32. data/lib/haveapi/views/version_page/resource_body.erb +3 -7
  33. data/lib/haveapi/views/version_page.erb +13 -9
  34. data/spec/client_examples/assets/highlighter_test.cjs +26 -0
  35. data/spec/client_examples/assets/tabs_test.cjs +54 -0
  36. data/spec/client_examples/context_spec.rb +68 -0
  37. data/spec/client_examples/dynamic_acceptance.md +83 -0
  38. data/spec/client_examples/dynamic_acceptance.rb +151 -0
  39. data/spec/client_examples/dynamic_acceptance_spec.rb +76 -0
  40. data/spec/client_examples/dynamic_fixture.rb +36 -0
  41. data/spec/client_examples/dynamic_js_spec.rb +196 -0
  42. data/spec/client_examples/dynamic_metadata_spec.rb +52 -0
  43. data/spec/client_examples/dynamic_mounted_paths_spec.rb +65 -0
  44. data/spec/client_examples/dynamic_python_spec.rb +123 -0
  45. data/spec/client_examples/go_spec.rb +57 -0
  46. data/spec/client_examples/profile_mount_spec.rb +215 -0
  47. data/spec/client_examples/profiles_spec.rb +265 -0
  48. data/spec/client_examples/rust_client_spec.rb +75 -0
  49. data/spec/client_examples/structural_schema_spec.rb +48 -0
  50. data/spec/client_examples/syntax_spec.rb +2 -1
  51. data/spec/documentation/auth_filtering_spec.rb +12 -0
  52. data/spec/documentation/client_examples_spec.rb +92 -0
  53. data/spec/packaging_spec.rb +13 -4
  54. data/test_support/dynamic_documentation_api.rb +171 -0
  55. data/test_support/dynamic_protocol_spec.rb +133 -0
  56. data/test_support/dynamic_python_login_spec.rb +75 -0
  57. metadata +37 -4
  58. data/lib/haveapi/client_examples/fs_client.rb +0 -119
@@ -0,0 +1,249 @@
1
+ require 'json'
2
+ require 'haveapi/documentation_context'
3
+ require 'haveapi/documentation_schema'
4
+
5
+ module HaveAPI
6
+ class ClientExample
7
+ class Profile
8
+ attr_reader :language, :package_name, :package_version, :adapter
9
+
10
+ def initialize(language:, package_name:, package_version:, adapter:)
11
+ @language = language
12
+ @package_name = package_name.dup.freeze
13
+ @package_version = package_version&.dup&.freeze
14
+ @adapter = adapter.freeze
15
+ freeze
16
+ end
17
+ end
18
+
19
+ class Profiles
20
+ class Invalid < ArgumentError; end
21
+
22
+ KEYS = {
23
+ go: %i[import_path module_version description_path generator_version],
24
+ rust: %i[crate_name crate_version source snapshot_path generator_config_path generator_version]
25
+ }.freeze
26
+
27
+ def initialize
28
+ @registrations = {}
29
+ @profiles = {}.freeze
30
+ end
31
+
32
+ def register(version, **languages)
33
+ raise Invalid, 'Documentation client profiles are already mounted' if @closed
34
+ raise Invalid, 'Unknown documentation client language' unless (languages.keys - KEYS.keys).empty?
35
+
36
+ selected = @registrations.fetch(version.to_s, {})
37
+ additions = {}
38
+ languages.each do |language, config|
39
+ next if config.nil?
40
+ raise Invalid, 'Duplicate documentation client profile' if selected.has_key?(language)
41
+
42
+ additions[language] = load_profile(language, config)
43
+ end
44
+ @registrations[version.to_s] = selected.merge(additions)
45
+ end
46
+
47
+ def mount(versions)
48
+ raise Invalid, 'Documentation client profiles are already mounted' if @closed
49
+
50
+ @closed = true
51
+ unknown = @registrations.keys - Array(versions).map(&:to_s)
52
+ raise Invalid, 'Documentation client profile selects an unavailable API version' unless unknown.empty?
53
+
54
+ @registrations.each do |version, languages|
55
+ snapshot = languages.dig(:rust, :snapshot)
56
+ if snapshot && snapshot.fetch('api_version').to_s != version
57
+ raise Invalid, 'Documentation Rust snapshot API version mismatch'
58
+ end
59
+ end
60
+ end
61
+
62
+ # Publish only after every adapter succeeds, using the complete mounted DSL.
63
+ def finalize(server)
64
+ raise Invalid, 'Documentation client profiles are not ready to finalize' unless @closed && !@finalized
65
+
66
+ completed = @registrations.to_h do |version, languages|
67
+ description = if languages.any? { |_language, config| !config[:profile] }
68
+ safely do
69
+ context = HaveAPI::Context.new(
70
+ server, version: server.versions.find { |v| v.to_s == version }, user: nil, endpoint: false, doc: true
71
+ )
72
+ StructuralSchema.copy(server.describe_version(context))
73
+ end
74
+ end
75
+ profiles = languages.to_h do |language, config|
76
+ profile = config[:profile] || safely { build_profile(language, config, description, server, version) }
77
+ [language, profile]
78
+ end
79
+ [version, profiles.freeze]
80
+ end
81
+ @profiles = completed.freeze
82
+ @registrations = nil
83
+ @finalized = true
84
+ rescue StandardError
85
+ abort_mount
86
+ raise
87
+ end
88
+
89
+ def abort_mount
90
+ @profiles = {}.freeze
91
+ @registrations = nil
92
+ @closed = true
93
+ @finalized = true
94
+ end
95
+
96
+ def for_version(version)
97
+ @profiles.fetch(version.to_s, {}).dup.freeze
98
+ end
99
+
100
+ private
101
+
102
+ def validate_config(language, config)
103
+ unless config.is_a?(Hash) && (config.keys - KEYS.fetch(language)).empty? &&
104
+ config.all? { |key, value| %i[source module_version crate_version].include?(key) || nonempty_string?(value) }
105
+ raise Invalid, 'Invalid documentation client profile fields'
106
+ end
107
+
108
+ config = config.dup
109
+ config[:generator_version] = config.fetch(:generator_version, HaveAPI::VERSION)
110
+ return config if config[:generator_version].match?(/\A\d+\.\d+\.\d+(?:[-+][\w.-]+)?\z/)
111
+
112
+ raise Invalid, 'Invalid documentation generator version'
113
+ end
114
+
115
+ def nonempty_string?(value)
116
+ value.is_a?(String) && !value.strip.empty?
117
+ end
118
+
119
+ def local_file(path)
120
+ raise Invalid, 'Documentation profiles require absolute local files' unless path.start_with?('/') && File.file?(path)
121
+
122
+ path
123
+ end
124
+
125
+ def load_profile(language, config)
126
+ safely do
127
+ config = validate_config(language, config)
128
+ language == :go ? load_go(config) : load_rust(config)
129
+ end
130
+ end
131
+
132
+ def safely
133
+ yield
134
+ rescue LoadError
135
+ raise Invalid, 'Configured documentation client generator is not installed'
136
+ rescue JSON::ParserError, SystemCallError
137
+ raise Invalid, 'Cannot read configured documentation client data'
138
+ rescue Invalid
139
+ raise
140
+ rescue StandardError
141
+ raise Invalid, 'Configured documentation client schema or configuration is invalid'
142
+ end
143
+
144
+ def load_go(config)
145
+ name = config[:import_path]
146
+ version = config[:module_version]
147
+ unless nonempty_string?(name) && name.match?(%r{\A[a-zA-Z0-9][a-zA-Z0-9._~/-]*\z}) &&
148
+ name.split('/').none? { |part| part.empty? || %w[. ..].include?(part) } &&
149
+ (version.nil? || (version.is_a?(String) && version.match?(/\Av\d+\.\d+\.\d+(?:[-+][\w.-]+)?\z/)))
150
+ raise Invalid, 'Invalid Go documentation client package'
151
+ end
152
+
153
+ require 'haveapi/go_client/documentation'
154
+ unless config.fetch(:generator_version) == HaveAPI::GoClient::VERSION
155
+ raise Invalid, 'Documentation Go generator version mismatch'
156
+ end
157
+
158
+ prepared = { name: name.dup.freeze, version: version&.dup&.freeze }.freeze
159
+ return prepared unless config.has_key?(:description_path)
160
+
161
+ description = JSON.parse(File.read(local_file(config[:description_path])))
162
+ { profile: go_profile(prepared, description) }.freeze
163
+ end
164
+
165
+ def go_profile(config, description)
166
+ adapter = HaveAPI::GoClient::Documentation.new(description:, import_path: config[:name], module_version: config[:version])
167
+ profile(:go, config, adapter)
168
+ end
169
+
170
+ def load_rust(config)
171
+ require 'haveapi/rust_client/documentation'
172
+ unless config.fetch(:generator_version) == HaveAPI::RustClient::VERSION
173
+ raise Invalid, 'Documentation Rust generator version mismatch'
174
+ end
175
+
176
+ legacy = config.has_key?(:generator_config_path)
177
+ if legacy && (config.has_key?(:crate_name) || config.has_key?(:crate_version))
178
+ raise Invalid, 'Conflicting Rust documentation client identities'
179
+ end
180
+
181
+ documentation = HaveAPI::RustClient::Documentation
182
+ snapshot = JSON.parse(File.read(local_file(config[:snapshot_path]))) if config.has_key?(:snapshot_path)
183
+ if (!legacy || !snapshot) && !(documentation.respond_to?(:from_description) && documentation.respond_to?(:from_snapshot))
184
+ raise Invalid, 'Documentation Rust generator does not support automatic or inline profiles'
185
+ end
186
+
187
+ source = if config.has_key?(:source)
188
+ raise Invalid, 'Documentation Rust generator does not support source metadata' unless documentation.respond_to?(:validate_source)
189
+
190
+ documentation.validate_source(config[:source])
191
+ end
192
+ generator_config = Tomlrb.load_file(local_file(config[:generator_config_path])) if legacy
193
+ if legacy
194
+ HaveAPI::RustClient::Generator.validate_config(generator_config) unless snapshot
195
+ name = generator_config.fetch('crate_name')
196
+ version = generator_config.fetch('crate_version')
197
+ else
198
+ name = config[:crate_name]
199
+ version = config[:crate_version]
200
+ HaveAPI::RustClient::Model.validate_package(crate_name: name, crate_version: version)
201
+ end
202
+ prepared = { name: name.dup.freeze, version: version&.dup&.freeze,
203
+ snapshot:, generator_config:, source: }.freeze
204
+ return prepared unless snapshot
205
+
206
+ prepared.merge(profile: rust_profile(prepared, snapshot:)).freeze
207
+ end
208
+
209
+ def build_profile(language, config, description, server, version)
210
+ return go_profile(config, description) if language == :go
211
+
212
+ arguments = { description:, api_version: version, protocol_version: HaveAPI::PROTOCOL_VERSION,
213
+ mount_path: server.root }
214
+ if config[:generator_config]
215
+ snapshot = HaveAPI::RustClient::Snapshot.from_description(
216
+ **arguments, source_url: "https://haveapi.invalid#{server.root}v#{version}/", profile: 'server-documentation'
217
+ )
218
+ return rust_profile(config, snapshot:)
219
+ end
220
+
221
+ adapter = HaveAPI::RustClient::Documentation.from_description(
222
+ **arguments, crate_name: config[:name], crate_version: config[:version], source: config[:source]
223
+ )
224
+ profile(:rust, config, adapter)
225
+ end
226
+
227
+ def rust_profile(config, snapshot:)
228
+ adapter = if config[:generator_config]
229
+ arguments = { snapshot:, config: config[:generator_config] }
230
+ arguments[:source] = config[:source] if config[:source]
231
+ HaveAPI::RustClient::Documentation.new(**arguments)
232
+ else
233
+ HaveAPI::RustClient::Documentation.from_snapshot(
234
+ snapshot:, crate_name: config[:name], crate_version: config[:version], source: config[:source]
235
+ )
236
+ end
237
+ profile(:rust, config, adapter)
238
+ end
239
+
240
+ def profile(language, config, adapter)
241
+ unless adapter.respond_to?(:resolve) && adapter.respond_to?(:render)
242
+ raise Invalid, 'Documentation client generator has an incompatible adapter interface'
243
+ end
244
+
245
+ Profile.new(language:, package_name: config[:name], package_version: config[:version], adapter:)
246
+ end
247
+ end
248
+ end
249
+ end
@@ -0,0 +1,47 @@
1
+ require 'haveapi/client_example'
2
+
3
+ module HaveAPI
4
+ class ClientExample
5
+ # A request-local snapshot: never freeze or retain the server's shared help.
6
+ class Context
7
+ FIELDS = %i[version host base_url version_url description resource_path resource action_name action sample profile].freeze
8
+ attr_reader(*FIELDS)
9
+
10
+ def initialize(version:, host:, base_url:, version_url:, description:,
11
+ resource_path: [], resource: nil, action_name: nil, action: nil,
12
+ sample: nil, profile: nil)
13
+ @version = version.to_s.dup.freeze
14
+ @host = host.to_s.dup.freeze
15
+ @base_url = base_url.to_s.dup.freeze
16
+ @version_url = version_url.to_s.dup.freeze
17
+ @description = copy(description)
18
+ @resource_path = copy(resource_path.map(&:to_s))
19
+ @resource = copy(resource)
20
+ @action_name = action_name.nil? ? nil : action_name.to_s.dup.freeze
21
+ @action = copy(action)
22
+ @sample = copy(sample)
23
+ @profile = profile
24
+ freeze
25
+ end
26
+
27
+ def with(**changes)
28
+ self.class.new(**FIELDS.to_h { |field| [field, public_send(field)] }, **changes)
29
+ end
30
+
31
+ private
32
+
33
+ def copy(value)
34
+ case value
35
+ when Hash
36
+ value.to_h { |key, item| [copy(key), copy(item)] }.freeze
37
+ when Array
38
+ value.map { |item| copy(item) }.freeze
39
+ when String
40
+ value.dup.freeze
41
+ else
42
+ value
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,73 @@
1
+ require 'json'
2
+
3
+ module HaveAPI
4
+ class ClientExample
5
+ # Private naming/type input, never a request's authorized help or samples.
6
+ module StructuralSchema
7
+ BUILTIN_VALIDATORS = %w[present number include exclude format length confirm accept].freeze
8
+
9
+ def self.copy(description)
10
+ result = JSON.parse(JSON.generate(description))
11
+ resources(result['resources'])
12
+ result.fetch('authentication', {}).each_value do |provider|
13
+ prose(provider)
14
+ resources(provider['resources'])
15
+ end
16
+ freeze_data(result)
17
+ end
18
+
19
+ def self.resources(map)
20
+ return unless map
21
+
22
+ map.each_value do |resource|
23
+ prose(resource)
24
+ resource.fetch('actions', {}).each_value do |action|
25
+ prose(action)
26
+ action.delete('examples')
27
+ parameters(action['input'])
28
+ parameters(action['output'])
29
+ action.fetch('meta', nil)&.each_value do |metadata|
30
+ next unless metadata
31
+
32
+ parameters(metadata['input'])
33
+ parameters(metadata['output'])
34
+ end
35
+ end
36
+ resources(resource['resources'])
37
+ end
38
+ end
39
+
40
+ def self.parameters(group)
41
+ return unless group
42
+
43
+ group.fetch('parameters', {}).each_value do |parameter|
44
+ prose(parameter)
45
+ parameter.delete('default')
46
+ parameter.fetch('validators', {}).each do |name, validator|
47
+ prose(validator) if BUILTIN_VALIDATORS.include?(name) && validator.is_a?(Hash)
48
+ end
49
+ end
50
+ end
51
+
52
+ def self.prose(object)
53
+ %w[label description message].each { |key| object.delete(key) }
54
+ end
55
+
56
+ def self.freeze_data(value)
57
+ case value
58
+ when Hash
59
+ value.each do |key, item|
60
+ freeze_data(key)
61
+ freeze_data(item)
62
+ end
63
+ when Array
64
+ value.each { |item| freeze_data(item) }
65
+ end
66
+ value.freeze
67
+ end
68
+
69
+ private_class_method :resources, :parameters, :prose, :freeze_data
70
+ end
71
+ private_constant :StructuralSchema
72
+ end
73
+ end
@@ -0,0 +1,29 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2006, Ivan Sagalaev.
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ * Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ * Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ * Neither the name of the copyright holder nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1,2 +1,2 @@
1
- /*! highlight.js v9.8.0 | BSD3 License | git.io/hljslicense */
2
- !function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.replace(/[&<>]/gm,function(e){return I[e]})}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function a(e){return k.test(e)}function i(e){var n,t,r,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",t=B.exec(o))return R(t[1])?t[1]:"no-highlight";for(o=o.split(/\s+/),n=0,r=o.length;r>n;n++)if(i=o[n],a(i)||R(i))return i}function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t];return r}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?a+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset<r[0].offset?e:r:"start"===r[0].event?e:r:e.length?e:r}function o(e){function r(e){return" "+e.nodeName+'="'+n(e.value)+'"'}l+="<"+t(e)+w.map.call(e.attributes,r).join("")+">"}function u(e){l+="</"+t(e)+">"}function c(e){("start"===e.event?o:u)(e.node)}for(var s=0,l="",f=[];e.length||r.length;){var g=i();if(l+=n(a.substr(s,g[0].offset-s)),s=g[0].offset,g===e){f.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g===e&&g.length&&g[0].offset===s);f.reverse().forEach(o)}else"start"===g[0].event?f.push(g[0].node):f.pop(),c(g.splice(0,1)[0])}return l+n(a.substr(s))}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var u={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");u[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?c("keyword",a.k):E(a.k).forEach(function(e){c(e,a.k[e])}),a.k=u}a.lR=t(a.l||/\w+/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),null==a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push("self"===e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var l=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=l.length?t(l.join("|"),!0):{exec:function(){return null}}}}r(e)}function l(e,t,a,i){function o(e,n){var t,a;for(t=0,a=n.c.length;a>t;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function g(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function h(e,n,t,r){var a=r?"":y.classPrefix,i='<span class="'+a,o=t?"":C;return i+=e+'">',i+n+o}function p(){var e,t,r,a;if(!E.k)return n(B);for(a="",t=0,E.lR.lastIndex=0,r=E.lR.exec(B);r;)a+=n(B.substr(t,r.index-t)),e=g(E,r),e?(M+=e[1],a+=h(e[0],n(r[0]))):a+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(B);return a+n(B.substr(t))}function d(){var e="string"==typeof E.sL;if(e&&!x[E.sL])return n(B);var t=e?l(E.sL,B,!0,L[E.sL]):f(B,E.sL.length?E.sL:void 0);return E.r>0&&(M+=t.r),e&&(L[E.sL]=t.top),h(t.language,t.value,!1,!0)}function b(){k+=null!=E.sL?d():p(),B=""}function v(e){k+=e.cN?h(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function m(e,n){if(B+=e,null==n)return b(),0;var t=o(n,E);if(t)return t.skip?B+=n:(t.eB&&(B+=n),b(),t.rB||t.eB||(B=n)),v(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var a=E;a.skip?B+=n:(a.rE||a.eE||(B+=n),b(),a.eE&&(B=n));do E.cN&&(k+=C),E.skip||(M+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&v(r.starts,""),a.rE?0:n.length}if(c(n,E))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"<unnamed>")+'"');return B+=n,n.length||1}var N=R(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var w,E=i||N,L={},k="";for(w=E;w!==N;w=w.parent)w.cN&&(k=h(w.cN,"",!0)+k);var B="",M=0;try{for(var I,j,O=0;;){if(E.t.lastIndex=O,I=E.t.exec(t),!I)break;j=m(t.substr(O,I.index-O),I[0]),O=I.index+j}for(m(t.substr(O)),w=E;w.parent;w=w.parent)w.cN&&(k+=C);return{r:M,value:k,language:e,top:E}}catch(T){if(T.message&&-1!==T.message.indexOf("Illegal"))return{r:0,value:n(t)};throw T}}function f(e,t){t=t||y.languages||E(x);var r={r:0,value:n(e)},a=r;return t.filter(R).forEach(function(n){var t=l(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}),a.language&&(r.second_best=a),r}function g(e){return y.tabReplace||y.useBR?e.replace(M,function(e,n){return y.useBR&&"\n"===e?"<br>":y.tabReplace?n.replace(/\t/g,y.tabReplace):void 0}):e}function h(e,n,t){var r=n?L[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function p(e){var n,t,r,o,s,p=i(e);a(p)||(y.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n")):n=e,s=n.textContent,r=p?l(p,s,!0):f(s),t=u(n),t.length&&(o=document.createElementNS("http://www.w3.org/1999/xhtml","div"),o.innerHTML=r.value,r.value=c(t,u(o),s)),r.value=g(r.value),e.innerHTML=r.value,e.className=h(e.className,p,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function d(e){y=o(y,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");w.forEach.call(e,p)}}function v(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function m(n,t){var r=x[n]=t(e);r.aliases&&r.aliases.forEach(function(e){L[e]=n})}function N(){return E(x)}function R(e){return e=(e||"").toLowerCase(),x[e]||x[L[e]]}var w=[],E=Object.keys,x={},L={},k=/^(no-?highlight|plain|text)$/i,B=/\blang(?:uage)?-([\w-]+)\b/i,M=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,C="</span>",y={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},I={"&":"&amp;","<":"&lt;",">":"&gt;"};return e.highlight=l,e.highlightAuto=f,e.fixMarkup=g,e.highlightBlock=p,e.configure=d,e.initHighlighting=b,e.initHighlightingOnLoad=v,e.registerLanguage=m,e.listLanguages=N,e.getLanguage=R,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\._]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,s,a,t]}});hljs.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}});hljs.registerLanguage("xml",function(s){var e="[A-Za-z0-9\\._:-]+",t={eW:!0,i:/</,r:0,c:[{cN:"attr",b:e,r:0},{b:/=\s*/,r:0,c:[{cN:"string",endsParent:!0,v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},s.C("<!--","-->",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{name:"style"},c:[t],starts:{e:"</style>",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{name:"script"},c:[t],starts:{e:"</script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}});hljs.registerLanguage("php",function(e){var c={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},i={cN:"meta",b:/<\?(php)?|\?>/},t={cN:"string",c:[e.BE,i],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},a={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[i]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},i,{cN:"keyword",b:/\$this\b/},c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,t,a]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},t,a]}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:n,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return n.splice(n.length,0,t,c),{c:n,k:i,i:"\\S"}});hljs.registerLanguage("javascript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},c={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:t,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:r+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:r,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+r+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:r},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b:/</,e:/(\/\w+|\w+\/)>/,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage("ruby",function(e){var b="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},c={cN:"doctag",b:"@[A-Za-z]+"},a={b:"#<",e:">"},s=[e.C("#","$",{c:[c]}),e.C("^\\=begin","^\\=end",{c:[c],r:10}),e.C("^__END__","\\n$")],n={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,n],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},i={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(s)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:b}),i].concat(s)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[t,{b:b}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+")\\s*",c:[a,{cN:"regexp",c:[e.BE,n],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(s),r:0}].concat(s);n.c=d,i.c=d;var l="[>?]>",o="[\\w#]+\\(\\w+\\):\\d+:\\d+>",w="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",u=[{b:/^\s*=>/,starts:{e:"$",c:d}},{cN:"meta",b:"^("+l+"|"+o+"|"+w+")",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:s.concat(u).concat(d)}});
1
+ /*! highlight.js 11.12.0 | BSD-3-Clause | See highlight-LICENSE */
2
+ var hljs=(()=>{var z=(e,n)=>()=>{try{return n||e((n={exports:{}}).exports,n),n.exports}catch(t){throw n=0,t}};var Qe=z((Yt,qe)=>{function Pe(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(n=>{let t=e[n],s=typeof t;(s==="object"||s==="function")&&!Object.isFrozen(t)&&Pe(t)}),e}var ge=class{constructor(n){n.data===void 0&&(n.data={}),this.data=n.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function Ue(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function ee(e,...n){let t=Object.create(null);for(let s in e)t[s]=e[s];return n.forEach(function(s){for(let u in s)t[u]=s[u]}),t}var $n="</span>",Ce=e=>!!e.scope,Fn=(e,{prefix:n})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let t=e.split(".");return["".concat(n).concat(t.shift()),...t.map((s,u)=>"".concat(s).concat("_".repeat(u+1)))].join(" ")}return"".concat(n).concat(e)},Ne=class{constructor(n,t){this.buffer="",this.classPrefix=t.classPrefix,n.walk(this)}addText(n){this.buffer+=Ue(n)}openNode(n){if(!Ce(n))return;let t=Fn(n.scope,{prefix:this.classPrefix});this.span(t)}closeNode(n){Ce(n)&&(this.buffer+=$n)}value(){return this.buffer}span(n){this.buffer+='<span class="'.concat(n,'">')}},ve=(e={})=>{let n={children:[]};return Object.assign(n,e),n},Ae=class e{constructor(){this.rootNode=ve(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(n){this.top.children.push(n)}openNode(n){let t=ve({scope:n});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(n){return this.constructor._walk(n,this.rootNode)}static _walk(n,t){return typeof t=="string"?n.addText(t):t.children&&(n.openNode(t),t.children.forEach(s=>this._walk(n,s)),n.closeNode(t)),n}static _collapse(n){typeof n!="string"&&n.children&&(n.children.every(t=>typeof t=="string")?n.children=[n.children.join("")]:n.children.forEach(t=>{e._collapse(t)}))}},Te=class extends Ae{constructor(n){super(),this.options=n}addText(n){n!==""&&this.add(n)}startScope(n){this.openNode(n)}endScope(){this.closeNode()}__addSublanguage(n,t){let s=n.root;t&&(s.scope="language:".concat(t)),this.add(s)}toHTML(){return new Ne(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function re(e){return e?typeof e=="string"?e:e.source:null}function $e(e){return se("(?=",e,")")}function Hn(e){return se("(?:",e,")*")}function zn(e){return se("(?:",e,")?")}function se(...e){return e.map(t=>re(t)).join("")}function Gn(e){let n=e[e.length-1];return typeof n=="object"&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function Ee(...e){return"("+(Gn(e).capture?"":"?:")+e.map(s=>re(s)).join("|")+")"}function Fe(e){return new RegExp(e.toString()+"|").exec("").length-1}function Kn(e,n){let t=e&&e.exec(n);return t&&t.index===0}var Zn=new RegExp(Ee(/\[(?:[^\\\]]|\\.)*\]/,/\(\?<(?![=!])[^>]+>/,/\(\?'[^']+'/,/\(\??/,/\\([1-9][0-9]*)/,/\\./));function Re(e,{joinWith:n}){let t=0;return e.map(s=>{t+=1;let u=t,b=re(s),r="";for(;b.length>0;){let a=Zn.exec(b);if(!a){r+=b;break}r+=b.substring(0,a.index),b=b.substring(a.index+a[0].length),a[0][0]==="\\"&&a[1]?r+="\\"+String(Number(a[1])+u):(r+=a[0],(a[0]==="("||/^\(\?[<']/.test(a[0]))&&t++)}return r}).map(s=>"(".concat(s,")")).join(n)}var Wn=/\b\B/,He="[a-zA-Z]\\w*",Oe="[a-zA-Z_]\\w*",ze="\\b\\d+(\\.\\d+)?",Ge="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Ke="\\b(0b[01]+)",Xn="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Yn=(e={})=>{let n=/^#![ ]*\//;return e.binary&&(e.begin=se(n,/.*\b/,e.binary,/\b.*/)),ee({scope:"meta",begin:n,end:/$/,relevance:0,"on:begin":(t,s)=>{t.index!==0&&s.ignoreMatch()}},e)},ce={begin:"\\\\[\\s\\S]",relevance:0},qn={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[ce]},Qn={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[ce]},Jn={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},be=function(e,n,t={}){let s=ee({scope:"comment",begin:e,end:n,contains:[]},t);s.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let u=Ee("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return s.contains.push({begin:se(/[ ]+/,"(",u,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s},Vn=be("//","$"),jn=be("/\\*","\\*/"),et=be("#","$"),nt={scope:"number",begin:ze,relevance:0},tt={scope:"number",begin:Ge,relevance:0},st={scope:"number",begin:Ke,relevance:0},at={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[ce,{begin:/\[/,end:/\]/,relevance:0,contains:[ce]}]},it={scope:"title",begin:He,relevance:0},rt={scope:"title",begin:Oe,relevance:0},ct={begin:"\\.\\s*"+Oe,relevance:0},ot=function(e){return Object.assign(e,{"on:begin":(n,t)=>{t.data._beginMatch=n[1]},"on:end":(n,t)=>{t.data._beginMatch!==n[1]&&t.ignoreMatch()}})},ue=Object.freeze({__proto__:null,APOS_STRING_MODE:qn,BACKSLASH_ESCAPE:ce,BINARY_NUMBER_MODE:st,BINARY_NUMBER_RE:Ke,COMMENT:be,C_BLOCK_COMMENT_MODE:jn,C_LINE_COMMENT_MODE:Vn,C_NUMBER_MODE:tt,C_NUMBER_RE:Ge,END_SAME_AS_BEGIN:ot,HASH_COMMENT_MODE:et,IDENT_RE:He,MATCH_NOTHING_RE:Wn,METHOD_GUARD:ct,NUMBER_MODE:nt,NUMBER_RE:ze,PHRASAL_WORDS_MODE:Jn,QUOTE_STRING_MODE:Qn,REGEXP_MODE:at,RE_STARTERS_RE:Xn,SHEBANG:Yn,TITLE_MODE:it,UNDERSCORE_IDENT_RE:Oe,UNDERSCORE_TITLE_MODE:rt});function lt(e,n){e.input[e.index-1]==="."&&n.ignoreMatch()}function ut(e,n){e.className!==void 0&&(e.scope=e.className,delete e.className)}function gt(e,n){n&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=lt,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function dt(e,n){Array.isArray(e.illegal)&&(e.illegal=Ee(...e.illegal))}function Et(e,n){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function bt(e,n){e.relevance===void 0&&(e.relevance=1)}var _t=(e,n)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");let t=Object.assign({},e);Object.keys(e).forEach(s=>{delete e[s]}),e.keywords=t.keywords,e.begin=se(t.beforeMatch,$e(t.begin)),e.starts={relevance:0,contains:[Object.assign(t,{endsParent:!0})]},e.relevance=0,delete t.beforeMatch},ft=["of","and","for","in","not","or","if","then","parent","list","value"],pt="keyword";function Ze(e,n,t=pt){let s=Object.create(null);return typeof e=="string"?u(t,e.split(" ")):Array.isArray(e)?u(t,e):Object.keys(e).forEach(function(b){Object.assign(s,Ze(e[b],n,b))}),s;function u(b,r){n&&(r=r.map(a=>a.toLowerCase())),r.forEach(function(a){let c=a.split("|");s[c[0]]=[b,ht(c[0],c[1])]})}}function ht(e,n){return n?Number(n):St(e)?0:1}function St(e){return ft.includes(e.toLowerCase())}var Le={},te=e=>{console.error(e)},De=(e,...n)=>{console.log("WARN: ".concat(e),...n)},ae=(e,n)=>{Le["".concat(e,"/").concat(n)]||(console.log("Deprecated as of ".concat(e,". ").concat(n)),Le["".concat(e,"/").concat(n)]=!0)},de=new Error;function We(e,n,{key:t}){let s=0,u=e[t],b={},r={};for(let a=1;a<=n.length;a++)r[a+s]=u[a],b[a+s]=!0,s+=Fe(n[a-1]);e[t]=r,e[t]._emit=b,e[t]._multi=!0}function Nt(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw te("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),de;if(typeof e.beginScope!="object"||e.beginScope===null)throw te("beginScope must be object"),de;We(e,e.begin,{key:"beginScope"}),e.begin=Re(e.begin,{joinWith:""})}}function At(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw te("skip, excludeEnd, returnEnd not compatible with endScope: {}"),de;if(typeof e.endScope!="object"||e.endScope===null)throw te("endScope must be object"),de;We(e,e.end,{key:"endScope"}),e.end=Re(e.end,{joinWith:""})}}function Tt(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function mt(e){Tt(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Nt(e),At(e)}function Rt(e){function n(r,a){return new RegExp(re(r),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(a?"g":""))}class t{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(a,c){c.position=this.position++,this.matchIndexes[this.matchAt]=c,this.regexes.push([c,a]),this.matchAt+=Fe(a)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let a=this.regexes.map(c=>c[1]);this.matcherRe=n(Re(a,{joinWith:"|"}),!0),this.lastIndex=0}exec(a){this.matcherRe.lastIndex=this.lastIndex;let c=this.matcherRe.exec(a);if(!c)return null;let E=c.findIndex((m,S)=>S>0&&m!==void 0),_=this.matchIndexes[E];return c.splice(0,E),Object.assign(c,_)}}class s{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(a){if(this.multiRegexes[a])return this.multiRegexes[a];let c=new t;return this.rules.slice(a).forEach(([E,_])=>c.addRule(E,_)),c.compile(),this.multiRegexes[a]=c,c}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(a,c){this.rules.push([a,c]),c.type==="begin"&&this.count++}exec(a){let c=this.getMatcher(this.regexIndex);c.lastIndex=this.lastIndex;let E=c.exec(a);if(this.resumingScanAtSamePosition()&&!(E&&E.index===this.lastIndex)){let _=this.getMatcher(0);_.lastIndex=this.lastIndex+1,E=_.exec(a)}return E&&(this.regexIndex+=E.position+1,this.regexIndex===this.count&&this.considerAll()),E}}function u(r){let a=new s;return r.contains.forEach(c=>a.addRule(c.begin,{rule:c,type:"begin"})),r.terminatorEnd&&a.addRule(r.terminatorEnd,{type:"end"}),r.illegal&&a.addRule(r.illegal,{type:"illegal"}),a}function b(r,a){let c=r;if(r.isCompiled)return c;[ut,Et,mt,_t].forEach(_=>_(r,a)),e.compilerExtensions.forEach(_=>_(r,a)),r.__beforeBegin=null,[gt,dt,bt].forEach(_=>_(r,a)),r.isCompiled=!0;let E=null;return typeof r.keywords=="object"&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),E=r.keywords.$pattern,delete r.keywords.$pattern),E=E||/\w+/,r.keywords&&(r.keywords=Ze(r.keywords,e.case_insensitive)),c.keywordPatternRe=n(E,!0),a&&(r.begin||(r.begin=/\B|\b/),c.beginRe=n(c.begin),!r.end&&!r.endsWithParent&&(r.end=/\B|\b/),r.end&&(c.endRe=n(c.end)),c.terminatorEnd=re(c.end)||"",r.endsWithParent&&a.terminatorEnd&&(c.terminatorEnd+=(r.end?"|":"")+a.terminatorEnd)),r.illegal&&(c.illegalRe=n(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map(function(_){return Ot(_==="self"?r:_)})),r.contains.forEach(function(_){b(_,c)}),r.starts&&b(r.starts,a),c.matcher=u(c),c}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=ee(e.classNameAliases||{}),b(e)}function Xe(e){return e?e.endsWithParent||Xe(e.starts):!1}function Ot(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(n){return ee(e,{variants:null},n)})),e.cachedVariants?e.cachedVariants:Xe(e)?ee(e,{starts:e.starts?ee(e.starts):null}):Object.isFrozen(e)?ee(e):e}var yt="11.12.0",me=class extends Error{constructor(n,t){super(n),this.name="HTMLInjectionError",this.html=t}},Se=Ue,ke=ee,Be=Symbol("nomatch"),Mt=7,Ye=function(e){let n=Object.create(null),t=Object.create(null),s=[],u=!0,b="Could not find the language '{}', did you forget to load/include a language module?",r={disableAutodetect:!0,name:"Plain text",contains:[]},a={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Te};function c(i){return a.noHighlightRe.test(i)}function E(i){let g=i.className+" ";g+=i.parentNode?i.parentNode.className:"";let l=a.languageDetectRe.exec(g);if(l){let p=w(l[1]);return p||(De(b.replace("{}",l[1])),De("Falling back to no-highlight mode for this block.",i)),p?l[1]:"no-highlight"}return g.split(/\s+/).find(p=>c(p)||w(p))}function _(i,g,l){let p="",A="";typeof g=="object"?(p=i,l=g.ignoreIllegals,A=g.language):(ae("10.7.0","highlight(lang, code, ...args) has been deprecated."),ae("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),A=i,p=g),l===void 0&&(l=!0);let I={code:p,language:A};L("before:highlight",I);let P=I.result?I.result:m(I.language,I.code,l);return P.code=I.code,L("after:highlight",P),P}function m(i,g,l,p){let A=Object.create(null);function I(o,d){return o.keywords[d]}function P(){if(!f.keywords){k.addText(R);return}let o=0;f.keywordPatternRe.lastIndex=0;let d=f.keywordPatternRe.exec(R),h="";for(;d;){h+=R.substring(o,d.index);let T=Y.case_insensitive?d[0].toLowerCase():d[0],U=I(f,T);if(U){let[Q,Pn]=U;if(k.addText(h),h="",A[T]=(A[T]||0)+1,A[T]<=Mt&&(le+=Pn),Q.startsWith("_"))h+=d[0];else{let Un=Y.classNameAliases[Q]||Q;X(d[0],Un)}}else h+=d[0];o=f.keywordPatternRe.lastIndex,d=f.keywordPatternRe.exec(R)}h+=R.substring(o),k.addText(h)}function W(){if(R==="")return;let o=null;if(typeof f.subLanguage=="string"){if(!n[f.subLanguage]){k.addText(R);return}o=m(f.subLanguage,R,!0,xe[f.subLanguage]),xe[f.subLanguage]=o._top}else o=y(R,f.subLanguage.length?f.subLanguage:null);f.relevance>0&&(le+=o.relevance),k.__addSublanguage(o._emitter,o.language)}function H(){f.subLanguage!=null?W():P(),R=""}function X(o,d){o!==""&&(k.startScope(d),k.addText(o),k.endScope())}function ye(o,d){let h=1,T=d.length-1;for(;h<=T;){if(!o._emit[h]){h++;continue}let U=Y.classNameAliases[o[h]]||o[h],Q=d[h];U?X(Q,U):(R=Q,P(),R=""),h++}}function Me(o,d){return o.scope&&typeof o.scope=="string"&&k.openNode(Y.classNameAliases[o.scope]||o.scope),o.beginScope&&(o.beginScope._wrap?(X(R,Y.classNameAliases[o.beginScope._wrap]||o.beginScope._wrap),R=""):o.beginScope._multi&&(ye(o.beginScope,d),R="")),f=Object.create(o,{parent:{value:f}}),f}function Ie(o,d,h){let T=Kn(o.endRe,h);if(T){if(o["on:end"]){let U=new ge(o);o["on:end"](d,U),U.isMatchIgnored&&(T=!1)}if(T){for(;o.endsParent&&o.parent;)o=o.parent;return o}}if(o.endsWithParent)return Ie(o.parent,d,h)}function vn(o){return f.matcher.regexIndex===0?(R+=o[0],1):(he=!0,0)}function Ln(o){let d=o[0],h=o.rule,T=new ge(h),U=[h.__beforeBegin,h["on:begin"]];for(let Q of U)if(Q&&(Q(o,T),T.isMatchIgnored))return vn(d);return h.skip?R+=d:(h.excludeBegin&&(R+=d),H(),!h.returnBegin&&!h.excludeBegin&&(R=d)),Me(h,o),h.returnBegin?0:d.length}function Dn(o){let d=o[0],h=g.substring(o.index),T=Ie(f,o,h);if(!T)return Be;let U=f;f.endScope&&f.endScope._wrap?(H(),X(d,f.endScope._wrap)):f.endScope&&f.endScope._multi?(H(),ye(f.endScope,o)):U.skip?R+=d:(U.returnEnd||U.excludeEnd||(R+=d),H(),U.excludeEnd&&(R=d));do f.scope&&k.closeNode(),!f.skip&&!f.subLanguage&&(le+=f.relevance),f=f.parent;while(f!==T.parent);return T.starts&&Me(T.starts,o),U.returnEnd?0:d.length}function kn(){let o=[];for(let d=f;d!==Y;d=d.parent)d.scope&&o.unshift(d.scope);o.forEach(d=>k.openNode(d))}let oe={};function we(o,d){let h=d&&d[0];if(R+=o,h==null)return H(),0;if(oe.type==="begin"&&d.type==="end"&&oe.index===d.index&&h===""){if(R+=g.slice(d.index,d.index+1),!u){let T=new Error("0 width match regex (".concat(i,")"));throw T.languageName=i,T.badRule=oe.rule,T}return 1}if(oe=d,d.type==="begin")return Ln(d);if(d.type==="illegal"&&!l){let T=new Error('Illegal lexeme "'+h+'" for mode "'+(f.scope||"<unnamed>")+'"');throw T.mode=f,T}else if(d.type==="end"){let T=Dn(d);if(T!==Be)return T}if(d.type==="illegal"&&h==="")return d.index===g.length||(R+="\n"),1;if(pe>1e5&&pe>d.index*3)throw new Error("potential infinite loop, way more iterations than matches");return R+=h,h.length}let Y=w(i);if(!Y)throw te(b.replace("{}",i)),new Error('Unknown language: "'+i+'"');let Bn=Rt(Y),fe="",f=p||Bn,xe={},k=new a.__emitter(a);kn();let R="",le=0,ne=0,pe=0,he=!1;try{if(Y.__emitTokens)Y.__emitTokens(g,k);else{for(f.matcher.considerAll();;){pe++,he?he=!1:f.matcher.considerAll(),f.matcher.lastIndex=ne;let o=f.matcher.exec(g);if(!o)break;let d=g.substring(ne,o.index),h=we(d,o);ne=o.index+h}we(g.substring(ne))}return k.finalize(),fe=k.toHTML(),{language:i,value:fe,relevance:le,illegal:!1,_emitter:k,_top:f}}catch(o){if(o.message&&o.message.includes("Illegal"))return{language:i,value:Se(g),illegal:!0,relevance:0,_illegalBy:{message:o.message,index:ne,context:g.slice(ne-100,ne+100),mode:o.mode,resultSoFar:fe},_emitter:k};if(u)return{language:i,value:Se(g),illegal:!1,relevance:0,errorRaised:o,_emitter:k,_top:f};throw o}}function S(i){let g={value:Se(i),illegal:!1,relevance:0,_top:r,_emitter:new a.__emitter(a)};return g._emitter.addText(i),g}function y(i,g){g=g||a.languages||Object.keys(n);let l=S(i),p=g.filter(w).filter(K).map(H=>m(H,i,!1));p.unshift(l);let A=p.sort((H,X)=>{if(H.relevance!==X.relevance)return X.relevance-H.relevance;if(H.language&&X.language){if(w(H.language).supersetOf===X.language)return 1;if(w(X.language).supersetOf===H.language)return-1}return 0}),[I,P]=A,W=I;return W.secondBest=P,W}function O(i,g,l){let p=g&&t[g]||l;i.classList.add("hljs"),i.classList.add("language-".concat(p))}function N(i){let g=null,l=E(i);if(c(l))return;if(L("before:highlightElement",{el:i,language:l}),i.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",i);return}if(i.children.length>0&&(a.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(i)),a.throwUnescapedHTML))throw new me("One of your code blocks includes unescaped HTML.",i.innerHTML);g=i;let p=g.textContent,A=l?_(p,{language:l,ignoreIllegals:!0}):y(p);i.innerHTML=A.value,i.dataset.highlighted="yes",O(i,l,A.language),i.result={language:A.language,re:A.relevance,relevance:A.relevance},A.secondBest&&(i.secondBest={language:A.secondBest.language,relevance:A.secondBest.relevance}),L("after:highlightElement",{el:i,result:A,text:p})}function C(i){a=ke(a,i)}let $=()=>{v(),ae("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function x(){v(),ae("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let F=!1;function v(){function i(){v()}if(document.readyState==="loading"){F||window.addEventListener("DOMContentLoaded",i,!1),F=!0;return}document.querySelectorAll(a.cssSelector).forEach(N)}function B(i,g){let l=null;try{l=g(e)}catch(p){if(te("Language definition for '{}' could not be registered.".replace("{}",i)),u)te(p);else throw p;l=r}l.name||(l.name=i),n[i]=l,l.rawDefinition=g.bind(null,e),l.aliases&&Z(l.aliases,{languageName:i})}function M(i){delete n[i];for(let g of Object.keys(t))t[g]===i&&delete t[g]}function q(){return Object.keys(n)}function w(i){return i=(i||"").toLowerCase(),n[i]||n[t[i]]}function Z(i,{languageName:g}){typeof i=="string"&&(i=[i]),i.forEach(l=>{t[l.toLowerCase()]=g})}function K(i){let g=w(i);return g&&!g.disableAutodetect}function J(i){i["before:highlightBlock"]&&!i["before:highlightElement"]&&(i["before:highlightElement"]=g=>{i["before:highlightBlock"](Object.assign({block:g.el},g))}),i["after:highlightBlock"]&&!i["after:highlightElement"]&&(i["after:highlightElement"]=g=>{i["after:highlightBlock"](Object.assign({block:g.el},g))})}function V(i){J(i),s.push(i)}function j(i){let g=s.indexOf(i);g!==-1&&s.splice(g,1)}function L(i,g){let l=i;s.forEach(function(p){p[l]&&p[l](g)})}function D(i){return ae("10.7.0","highlightBlock will be removed entirely in v12.0"),ae("10.7.0","Please use highlightElement now."),N(i)}Object.assign(e,{highlight:_,highlightAuto:y,highlightAll:v,highlightElement:N,highlightBlock:D,configure:C,initHighlighting:$,initHighlightingOnLoad:x,registerLanguage:B,unregisterLanguage:M,listLanguages:q,getLanguage:w,registerAliases:Z,autoDetection:K,inherit:ke,addPlugin:V,removePlugin:j}),e.debugMode=function(){u=!1},e.safeMode=function(){u=!0},e.versionString=yt,e.regex={concat:se,lookahead:$e,either:Ee,optional:zn,anyNumberOfTimes:Hn};for(let i in ue)typeof ue[i]=="object"&&Pe(ue[i]);return Object.assign(e,ue),e},ie=Ye({});ie.newInstance=()=>Ye({});qe.exports=ie;ie.HighlightJS=ie;ie.default=ie});var Ve=z((qt,Je)=>{function It(e){let n=e.regex,t={},s={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{className:"variable",variants:[{begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},s]});let u={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},b=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),r={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},a={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,u]};u.contains.push(a);let c={match:/\\"/},E={className:"string",begin:/'/,end:/'/},_={match:/\\'/},m={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]},S=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],y=e.SHEBANG({binary:"(".concat(S.join("|"),")"),relevance:10}),O={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},N=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],C=["true","false"],$={match:/(\/[a-z._-]+)+/},x=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],F=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],v=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],B=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:N,literal:C,built_in:[...x,...F,"set","shopt",...v,...B]},contains:[y,e.SHEBANG(),O,m,b,r,$,a,c,E,_,t]}}Je.exports=It});var en=z((Qt,je)=>{function wt(e){let n=e.regex,t="HTTP/([32]|1\\.[01])",s=/[A-Za-z][A-Za-z0-9-]*/,u={className:"attribute",begin:n.concat("^",s,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},b=[u,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+t+" \\d{3})",end:/$/,contains:[{className:"meta",begin:t},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:b}},{begin:"(?=^[A-Z]+ (.*?) "+t+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:t},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:b}},e.inherit(u,{relevance:0})]}}je.exports=wt});var tn=z((Jt,nn)=>{function xt(e){let n=e.regex,t=n.concat(/[\p{L}_]/u,n.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s=/[\p{L}0-9._:-]+/u,u={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},b={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},r=e.inherit(b,{begin:/\(/,end:/\)/}),a=e.inherit(e.APOS_STRING_MODE,{className:"string"}),c=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),E={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:s,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[u]},{begin:/'/,end:/'/,contains:[u]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[b,c,a,r,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[b,r,c,a]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},u,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[c]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[E],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:"css"}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[E],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:"javascript"}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:n.concat(/</,n.lookahead(n.concat(t,n.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:t,relevance:0,starts:E}]},{className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(t,/>/))),contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}nn.exports=xt});var an=z((Vt,sn)=>{function Ct(e){let n=e.regex,t=/(?![A-Za-z0-9])(?![$])/,s=n.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,t),u=n.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,t),b=n.concat(/[A-Z]+/,t),r={scope:"variable",match:"\\$+"+s},a={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},c={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},E=e.inherit(e.APOS_STRING_MODE,{illegal:null}),_=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(c)}),m={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(c),"on:begin":(L,D)=>{D.data._beginMatch=L[1]||L[2]},"on:end":(L,D)=>{D.data._beginMatch!==L[1]&&D.ignoreMatch()}},S=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),y="[ \n]",O={scope:"string",variants:[_,E,m,S]},N={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},C=["false","null","true"],$=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],x=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],v={keyword:$,literal:(L=>{let D=[];return L.forEach(i=>{D.push(i),i.toLowerCase()===i?D.push(i.toUpperCase()):D.push(i.toLowerCase())}),D})(C),built_in:x},B=L=>L.map(D=>D.replace(/\|\d+$/,"")),M={variants:[{match:[/new/,n.concat(y,"+"),n.concat("(?!",B(x).join("\\b|"),"\\b)"),u],scope:{1:"keyword",4:"title.class"}}]},q=n.concat(s,"\\b(?!\\()"),w={variants:[{match:[n.concat(/::/,n.lookahead(/(?!class\b)/)),q],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[u,n.concat(/::/,n.lookahead(/(?!class\b)/)),q],scope:{1:"title.class",3:"variable.constant"}},{match:[u,n.concat("::",n.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[u,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},Z={scope:"attr",match:n.concat(s,n.lookahead(":"),n.lookahead(/(?!::)/))},K={relevance:0,begin:/\(/,end:/\)/,keywords:v,contains:[Z,r,w,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.HASH_COMMENT_MODE,O,N,M]},J={relevance:0,match:[/\b/,n.concat("(?!fn\\b|function\\b|",B($).join("\\b|"),"|",B(x).join("\\b|"),"\\b)"),s,n.concat(y,"*"),n.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[K]};K.contains.push(J);let V=[Z,w,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.HASH_COMMENT_MODE,O,N,M],j={begin:n.concat(/#\[\s*\\?/,n.either(u,b)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:C,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:C,keyword:["new","array"]},contains:["self",...V]},...V,{scope:"meta",variants:[{match:u},{match:b}]}]};return{case_insensitive:!1,keywords:v,contains:[j,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},a,{scope:"variable.language",match:/\$this\b/},r,J,w,{match:[/const/,/\s/,s],scope:{1:"keyword",3:"variable.constant"}},M,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:v,contains:["self",j,r,w,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.HASH_COMMENT_MODE,O,N]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},O,N]}}sn.exports=Ct});var cn=z((jt,rn)=>{var vt="([-+]?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)|NaN|[-+]?Infinity",Lt={scope:"number",match:vt,relevance:0};function Dt(e){let n={className:"attr",begin:/(("(\\.|[^\\"\r\n])*")|('(\\.|[^\\'\r\n])*'))(?=\s*:)/,relevance:1.01},t={match:/[{}[\],:]/,className:"punctuation",relevance:0},s=["true","false","null"],u={scope:"literal",beginKeywords:s.join(" ")};return{name:"JSON",aliases:["jsonc","json5"],keywords:{literal:s},contains:[n,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,u,Lt,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}rn.exports=Dt});var En=z((es,dn)=>{var on="[A-Za-z$_][0-9A-Za-z$_]*",kt=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],Bt=["true","false","null","undefined","NaN","Infinity"],ln=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],un=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],gn=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Pt=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","self","global"],Ut=[].concat(gn,ln,un);function $t(e){let n=e.regex,t=(l,{after:p})=>{let A="</"+l[0].slice(1);return l.input.indexOf(A,p)!==-1},s=on,u={begin:"<>",end:"</>"},b=/<[A-Za-z0-9\\._:-]+\s*\/>/,r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(l,p)=>{let A=l[0].length+l.index,I=l.input[A];if(I==="<"||I===","){p.ignoreMatch();return}I===">"&&(t(l,{after:A})||p.ignoreMatch());let P,W=l.input.substring(A);if(P=W.match(/^\s*=/)){p.ignoreMatch();return}if((P=W.match(/^\s+extends\s+/))&&P.index===0){p.ignoreMatch();return}}},a={$pattern:on,keyword:kt,literal:Bt,built_in:Ut,"variable.language":Pt},c="[0-9](_?[0-9])*",E="\\.(".concat(c,")"),_="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",m={className:"number",variants:[{begin:"(\\b(".concat(_,")((").concat(E,")|\\.)?|(").concat(E,"))")+"[eE][+-]?(".concat(c,")\\b")},{begin:"\\b(".concat(_,")\\b((").concat(E,")\\b|\\.)?|(").concat(E,")\\b")},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},S={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},y={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,S],subLanguage:"xml"}},O={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,S],subLanguage:"css"}},N={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,S],subLanguage:"graphql"}},C={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,S]},x={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},F=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,O,N,C,{match:/\$\d+/},m];S.contains=F.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(F)});let v=[].concat(x,S.contains),B=v.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(v)}]),M={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B},q={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,n.concat(s,"(",n.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},w={relevance:0,match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...ln,...un]}},Z={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},K={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[M],illegal:/%/},J={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function V(l){return n.concat("(?!",l.join("|"),")")}let j={match:n.concat(/\b/,V([...gn,"super","import","await"].map(l=>"".concat(l,"\\s*\\("))),s,n.lookahead(/\s*\(/)),className:"title.function",relevance:0},L={begin:n.concat(/\./,n.lookahead(n.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},D={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},M]},i="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",g={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(i)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[M]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:w},illegal:/#(?![$_A-Za-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),Z,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,O,N,C,x,{match:/\$\d+/},m,w,{scope:"attr",match:s+n.lookahead(":"),relevance:0},g,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[x,e.REGEXP_MODE,{className:"function",begin:i,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:u.begin,end:u.end},{match:b},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},K,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[M,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},L,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[M]},j,J,q,D,{match:/\$[(.]/}]}}dn.exports=$t});var _n=z((ns,bn)=>{function Ft(e){let n=e.regex,t="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),u=n.concat(s,/(::\w+)*/),r={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},a={className:"doctag",begin:"@[A-Za-z]+"},c={begin:"#<",end:">"},E=[e.COMMENT("#","$",{contains:[a]}),e.COMMENT("^=begin","^=end",{contains:[a],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],_={className:"subst",begin:/#\{/,end:/\}/,keywords:r},m={className:"string",contains:[e.BACKSLASH_ESCAPE,_],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,_]})]}]},S="[1-9](_?[0-9])*|0",y="[0-9](_?[0-9])*",O={className:"number",relevance:0,variants:[{begin:"\\b(".concat(S,")(\\.(").concat(y,"))?([eE][+-]?(").concat(y,")|r)?i?\\b")},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},N={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:r}]},M=[m,{variants:[{match:[/class\s+/,u,/\s+<\s+/,u]},{match:[/\b(class|module)\s+/,u]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:r},{match:[/(include|extend)\s+/,u],scope:{2:"title.class"},keywords:r},{relevance:0,match:[u,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:s,scope:"title.class"},{match:[/def/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[N]},{begin:"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[m,{begin:t}],relevance:0},O,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:r},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,_],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(c,E),relevance:0}].concat(c,E);_.contains=M,N.contains=M;let K=[{begin:/^\s*=>/,starts:{end:"$",contains:M}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:r,contains:M}}];return E.unshift(c),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:r,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(K).concat(E).concat(M)}}bn.exports=Ft});var pn=z((ts,fn)=>{function Ht(e){let b={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:b,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\b0[bB](_?[01])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:b,illegal:/["']/}]}]}}fn.exports=Ht});var Sn=z((ss,hn)=>{function zt(e){let n=e.regex,t=/(r#)?/,s=n.concat(t,e.UNDERSCORE_IDENT_RE),u=n.concat(t,e.IDENT_RE),b={scope:"title.function.invoke",relevance:0,begin:n.concat(/\b/,/(?!(?:let|for|while|if|else|match)\b)/,u,n.lookahead(/\s*\(/))},r="([ui](8|16|32|64|128|size)|f(16|32|64|128))?",a=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","raw","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],c=["true","false","Some","None","Ok","Err"],E=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],_=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f16","f32","f64","f128","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:_,keyword:a,literal:c,built_in:E},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{scope:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|"|\\|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{scope:"number",variants:[{begin:"\\b0b([01_]+)"+r},{begin:"\\b0o([0-7_]+)"+r},{begin:"\\b0x([A-Fa-f0-9_]+)"+r},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+r}],relevance:0},{begin:[/\bsafe/,/\s+/,/extern/],scope:{1:"keyword",3:"keyword"}},{begin:[/fn/,/\s+/,s],scope:{1:"keyword",3:"title.function"}},{scope:"meta",begin:"#!?\\[",end:"\\]",contains:[{scope:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,s],scope:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,s,/\s+/,/in/],scope:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,s],scope:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,s],scope:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{keyword:"Self",built_in:E,type:_}},{scope:"punctuation",begin:"->"},b]}}hn.exports=zt});var An=z((as,Nn)=>{function Gt(e){let n=e.regex,t=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),s=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","lazy","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],a={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:s,built_in:["__import__","abs","aiter","all","anext","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozendict","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","sentinel","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},c={className:"meta",begin:/^(>>>|\.\.\.) /},E={className:"subst",begin:/\{/,end:/\}/,keywords:a,illegal:/#/},_={begin:/\{\{/,relevance:0},m={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,c],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,c],relevance:10},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,c,_,E]},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,c,_,E]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,_,E]},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,_,E]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},S="[0-9](_?[0-9])*",y="(\\b(".concat(S,"))?\\.(").concat(S,")|\\b(").concat(S,")\\."),O="\\b|".concat(s.join("|")),N={className:"number",relevance:0,variants:[{begin:"(\\b(".concat(S,")|(").concat(y,"))[eE][+-]?(").concat(S,")[jJ]?(?=").concat(O,")")},{begin:"(".concat(y,")[jJ]?")},{begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=".concat(O,")")},{begin:"\\b0[bB](_?[01])+[lL]?(?=".concat(O,")")},{begin:"\\b0[oO](_?[0-7])+[lL]?(?=".concat(O,")")},{begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=".concat(O,")")},{begin:"\\b(".concat(S,")[jJ](?=").concat(O,")")}]},C={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:a,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},$={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:["self",c,N,m,e.HASH_COMMENT_MODE]}]};return E.contains=[m,N,c],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:a,illegal:/(<\/|\?)|=>/,contains:[c,N,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},m,C,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[$]},{variants:[{match:[/\bclass/,/\s+/,t,/\s*/,/\(\s*/,t,/\s*\)/]},{match:[/\bclass/,/\s+/,t]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[N,$,m]}]}}Nn.exports=Gt});var xn=z((is,wn)=>{var _e="[A-Za-z$_][0-9A-Za-z$_]*",Tn=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],mn=["true","false","null","undefined","NaN","Infinity"],Rn=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],On=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],yn=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Mn=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","self","global"],In=[].concat(yn,Rn,On);function Kt(e){let n=e.regex,t=(l,{after:p})=>{let A="</"+l[0].slice(1);return l.input.indexOf(A,p)!==-1},s=_e,u={begin:"<>",end:"</>"},b=/<[A-Za-z0-9\\._:-]+\s*\/>/,r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(l,p)=>{let A=l[0].length+l.index,I=l.input[A];if(I==="<"||I===","){p.ignoreMatch();return}I===">"&&(t(l,{after:A})||p.ignoreMatch());let P,W=l.input.substring(A);if(P=W.match(/^\s*=/)){p.ignoreMatch();return}if((P=W.match(/^\s+extends\s+/))&&P.index===0){p.ignoreMatch();return}}},a={$pattern:_e,keyword:Tn,literal:mn,built_in:In,"variable.language":Mn},c="[0-9](_?[0-9])*",E="\\.(".concat(c,")"),_="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",m={className:"number",variants:[{begin:"(\\b(".concat(_,")((").concat(E,")|\\.)?|(").concat(E,"))")+"[eE][+-]?(".concat(c,")\\b")},{begin:"\\b(".concat(_,")\\b((").concat(E,")\\b|\\.)?|(").concat(E,")\\b")},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},S={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},y={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,S],subLanguage:"xml"}},O={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,S],subLanguage:"css"}},N={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,S],subLanguage:"graphql"}},C={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,S]},x={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},F=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,O,N,C,{match:/\$\d+/},m];S.contains=F.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(F)});let v=[].concat(x,S.contains),B=v.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(v)}]),M={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B},q={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,n.concat(s,"(",n.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},w={relevance:0,match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Rn,...On]}},Z={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},K={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[M],illegal:/%/},J={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function V(l){return n.concat("(?!",l.join("|"),")")}let j={match:n.concat(/\b/,V([...yn,"super","import","await"].map(l=>"".concat(l,"\\s*\\("))),s,n.lookahead(/\s*\(/)),className:"title.function",relevance:0},L={begin:n.concat(/\./,n.lookahead(n.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},D={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},M]},i="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",g={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(i)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[M]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:w},illegal:/#(?![$_A-Za-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),Z,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,O,N,C,x,{match:/\$\d+/},m,w,{scope:"attr",match:s+n.lookahead(":"),relevance:0},g,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[x,e.REGEXP_MODE,{className:"function",begin:i,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:u.begin,end:u.end},{match:b},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},K,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[M,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},L,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[M]},j,J,q,D,{match:/\$[(.]/}]}}function Zt(e){let n=e.regex,t=Kt(e),s=_e,u=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],b={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},r={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:u},contains:[t.exports.CLASS_REFERENCE]},a={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},c=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],E={$pattern:_e,keyword:Tn.concat(c),literal:mn,built_in:In.concat(u),"variable.language":Mn},_={className:"meta",begin:"@"+s},m=(N,C,$)=>{let x=N.contains.findIndex(F=>F.label===C);if(x===-1)throw new Error("can not find mode to replace");N.contains.splice(x,1,$)};Object.assign(t.keywords,E),t.exports.PARAMS_CONTAINS.push(_);let S=t.contains.find(N=>N.scope==="attr"),y=Object.assign({},S,{match:n.concat(s,n.lookahead(/\s*\?:/))});t.exports.PARAMS_CONTAINS.push([t.exports.CLASS_REFERENCE,S,y]),t.contains=t.contains.concat([_,b,r,y]),m(t,"shebang",e.SHEBANG()),m(t,"use_strict",a);let O=t.contains.find(N=>N.label==="func.def");return O.relevance=0,Object.assign(t,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),t}wn.exports=Zt});var Wt=z((rs,Cn)=>{var G=Qe();G.registerLanguage("bash",Ve());G.registerLanguage("http",en());G.registerLanguage("xml",tn());G.registerLanguage("php",an());G.registerLanguage("json",cn());G.registerLanguage("javascript",En());G.registerLanguage("ruby",_n());G.registerLanguage("go",pn());G.registerLanguage("rust",Sn());G.registerLanguage("python",An());G.registerLanguage("typescript",xn());Cn.exports=G});return Wt();})();