From bba4a6a875fd4c24eb4a05523f1ecc1f454661cd Mon Sep 17 00:00:00 2001 From: Gabriele Mondada Date: Thu, 23 Apr 2026 21:23:29 +0200 Subject: [PATCH 01/11] Support CUDA compilation with SPM --- Package.swift | 300 +- Plugins/CudaBuild/plugin.swift | 124 + Source/Cmlx/CudaBuild.json | 31 + .../backend/cuda/cuda_jit_sources.h | 4295 +++++++++++++++++ Source/MLX/GPU+CUDA.swift | 23 + Source/MLX/MLXFastKernel.swift | 48 + Source/encuda/encuda-compile.swift | 61 + Source/encuda/encuda-error.swift | 13 + Source/encuda/encuda-link.swift | 87 + Source/encuda/encuda-utils.swift | 25 + Source/encuda/encuda.swift | 8 + 11 files changed, 4910 insertions(+), 105 deletions(-) create mode 100644 Plugins/CudaBuild/plugin.swift create mode 100644 Source/Cmlx/CudaBuild.json create mode 100644 Source/Cmlx/mlx-extras/backend/cuda/cuda_jit_sources.h create mode 100644 Source/MLX/GPU+CUDA.swift create mode 100644 Source/encuda/encuda-compile.swift create mode 100644 Source/encuda/encuda-error.swift create mode 100644 Source/encuda/encuda-link.swift create mode 100644 Source/encuda/encuda-utils.swift create mode 100644 Source/encuda/encuda.swift diff --git a/Package.swift b/Package.swift index 17a4178f..a240093c 100644 --- a/Package.swift +++ b/Package.swift @@ -1,77 +1,181 @@ -// swift-tools-version: 5.12 +// swift-tools-version: 6.3;(experimentalCGen) // The swift-tools-version declares the minimum version of Swift required to build this package. // Copyright © 2024 Apple Inc. import PackageDescription -#if os(Linux) - let platformExcludes: [String] = [ - // Linux specific excludes - "framework", - "include-framework", - "metal-cpp", - // Exclude Metal backend files on Linux, but keep no_metal.cpp for stubs - "mlx/mlx/backend/metal/allocator.cpp", - "mlx/mlx/backend/metal/binary.cpp", - "mlx/mlx/backend/metal/compiled.cpp", - "mlx/mlx/backend/metal/conv.cpp", - "mlx/mlx/backend/metal/copy.cpp", - "mlx/mlx/backend/metal/custom_kernel.cpp", - "mlx/mlx/backend/metal/device.cpp", - "mlx/mlx/backend/metal/device_info.cpp", - "mlx/mlx/backend/metal/distributed.cpp", - "mlx/mlx/backend/metal/eval.cpp", - "mlx/mlx/backend/metal/event.cpp", - "mlx/mlx/backend/metal/fence.cpp", - "mlx/mlx/backend/metal/fft.cpp", - "mlx/mlx/backend/metal/hadamard.cpp", - "mlx/mlx/backend/metal/indexing.cpp", - "mlx/mlx/backend/metal/jit_kernels.cpp", - "mlx/mlx/backend/metal/logsumexp.cpp", - "mlx/mlx/backend/metal/matmul.cpp", - "mlx/mlx/backend/metal/metal.cpp", - "mlx/mlx/backend/metal/normalization.cpp", - "mlx/mlx/backend/metal/primitives.cpp", - "mlx/mlx/backend/metal/quantized.cpp", - "mlx/mlx/backend/metal/reduce.cpp", - "mlx/mlx/backend/metal/resident.cpp", - "mlx/mlx/backend/metal/rope.cpp", - "mlx/mlx/backend/metal/scaled_dot_product_attention.cpp", - "mlx/mlx/backend/metal/scan.cpp", - "mlx/mlx/backend/metal/slicing.cpp", - "mlx/mlx/backend/metal/softmax.cpp", - "mlx/mlx/backend/metal/sort.cpp", - "mlx/mlx/backend/metal/ternary.cpp", - "mlx/mlx/backend/metal/unary.cpp", - "mlx/mlx/backend/metal/utils.cpp", - "mlx/mlx/backend/metal/kernels", // Exclude kernels directory - "mlx/mlx/backend/metal/jit", // Exclude jit directory - - "mlx/mlx/backend/gpu", // Exclude GPU backend on Linux, use no_gpu instead - "mlx/mlx/backend/no_cpu", // Exclude no_cpu backend on Linux, use cpu instead - "mlx/mlx/backend/cpu/gemms/bnns.cpp", // macOS Accelerate version - "mlx-conditional", - "mlx-c/mlx/c/metal.cpp", - - "mlx-c/mlx/c/fast.cpp", // Exclude on Linux - calls metal_kernel unconditionally - ] - - let cxxSettings: [CXXSetting] = [] - - let linkerSettings: [LinkerSetting] = [ - .linkedLibrary("gfortran", .when(platforms: [.linux])), - .linkedLibrary("blas", .when(platforms: [.linux])), - .linkedLibrary("lapack", .when(platforms: [.linux])), - .linkedLibrary("openblas", .when(platforms: [.linux])), - ] +let noMetalCmlxExcludes = [ + // Exclude Metal backend files, but keep no_metal.cpp for stubs + // "mlx/mlx/backend/metal/no_metal.cpp", + "mlx/mlx/backend/metal/allocator.cpp", + "mlx/mlx/backend/metal/binary.cpp", + "mlx/mlx/backend/metal/compiled.cpp", + "mlx/mlx/backend/metal/conv.cpp", + "mlx/mlx/backend/metal/copy.cpp", + "mlx/mlx/backend/metal/custom_kernel.cpp", + "mlx/mlx/backend/metal/device.cpp", + "mlx/mlx/backend/metal/device_info.cpp", + "mlx/mlx/backend/metal/distributed.cpp", + "mlx/mlx/backend/metal/eval.cpp", + "mlx/mlx/backend/metal/event.cpp", + "mlx/mlx/backend/metal/fence.cpp", + "mlx/mlx/backend/metal/fft.cpp", + "mlx/mlx/backend/metal/hadamard.cpp", + "mlx/mlx/backend/metal/indexing.cpp", + "mlx/mlx/backend/metal/jit_kernels.cpp", + "mlx/mlx/backend/metal/logsumexp.cpp", + "mlx/mlx/backend/metal/matmul.cpp", + "mlx/mlx/backend/metal/metal.cpp", + "mlx/mlx/backend/metal/normalization.cpp", + "mlx/mlx/backend/metal/primitives.cpp", + "mlx/mlx/backend/metal/quantized.cpp", + "mlx/mlx/backend/metal/reduce.cpp", + "mlx/mlx/backend/metal/resident.cpp", + "mlx/mlx/backend/metal/rope.cpp", + "mlx/mlx/backend/metal/scaled_dot_product_attention.cpp", + "mlx/mlx/backend/metal/scan.cpp", + "mlx/mlx/backend/metal/slicing.cpp", + "mlx/mlx/backend/metal/softmax.cpp", + "mlx/mlx/backend/metal/sort.cpp", + "mlx/mlx/backend/metal/ternary.cpp", + "mlx/mlx/backend/metal/unary.cpp", + "mlx/mlx/backend/metal/utils.cpp", + "mlx/mlx/backend/metal/kernels", // Exclude kernels directory + "mlx/mlx/backend/metal/jit", // Exclude jit directory +] + +let noCudaCmlxExcludes = [ + // Exclude CUDA backend files, but keep no_cuda.cpp for stubs + // mlx/mlx/backend/cuda/no_cuda.cpp + "mlx/mlx/backend/cuda/allocator.cpp", + "mlx/mlx/backend/cuda/compiled.cpp", + "mlx/mlx/backend/cuda/conv.cpp", + "mlx/mlx/backend/cuda/cublas_utils.cpp", + "mlx/mlx/backend/cuda/cudnn_utils.cpp", + "mlx/mlx/backend/cuda/custom_kernel.cpp", + "mlx/mlx/backend/cuda/delayload.cpp", + "mlx/mlx/backend/cuda/device_info.cpp", + "mlx/mlx/backend/cuda/device.cpp", + "mlx/mlx/backend/cuda/eval.cpp", + "mlx/mlx/backend/cuda/fence.cpp", + "mlx/mlx/backend/cuda/indexing.cpp", + "mlx/mlx/backend/cuda/jit_module.cpp", + "mlx/mlx/backend/cuda/load.cpp", + "mlx/mlx/backend/cuda/matmul.cpp", + "mlx/mlx/backend/cuda/primitives.cpp", + "mlx/mlx/backend/cuda/scaled_dot_product_attention.cpp", + "mlx/mlx/backend/cuda/slicing.cpp", + "mlx/mlx/backend/cuda/utils.cpp", + "mlx/mlx/backend/cuda/worker.cpp", + "mlx/mlx/backend/cuda/binary", + "mlx/mlx/backend/cuda/conv", + "mlx/mlx/backend/cuda/copy", + "mlx/mlx/backend/cuda/device", + "mlx/mlx/backend/cuda/gemms", + "mlx/mlx/backend/cuda/quantized", + "mlx/mlx/backend/cuda/reduce", + "mlx/mlx/backend/cuda/steel", + "mlx/mlx/backend/cuda/unary", +] - let mlxSwiftExcludes: [String] = [ - "GPU+Metal.swift", - "MLXArray+Metal.swift", - "MLXFast.swift", - "MLXFastKernel.swift", - ] +#if os(Linux) + let platformExcludes: [String] + let cxxSettings: [CXXSetting] + let linkerSettings: [LinkerSetting] + let mlxSwiftExcludes: [String] + + if Context.environment["SPM_CUDA"] == "1" { + // Linux with CUDA + + platformExcludes = [ + "framework", + "include-framework", + "metal-cpp", + + "mlx/mlx/backend/no_gpu", + "mlx/mlx/backend/cuda/no_cuda.cpp", + "mlx/mlx/backend/cuda/quantized/no_qqmm_impl.cpp", + "mlx/mlx/backend/cuda/gemms/cublas_gemm_batched_12_0.cpp", + "mlx/mlx/backend/no_cpu", // Exclude no_cpu backend on Linux, use cpu instead + "mlx/mlx/backend/cpu/gemms/bnns.cpp", // macOS Accelerate version + "mlx-conditional", + "mlx-c/mlx/c/metal.cpp", + + "mlx/mlx/backend/cuda/delayload.cpp", // For Windows + "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n16_m1.cu", + "mlx/mlx/backend/cuda/quantized/qmm/qmv.cu", + "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n32_m1.cu", + "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90.cuh", + "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n64_m2.cu", + "mlx/mlx/backend/cuda/quantized/qmm/qmm.h", + "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n256_m2.cu", + "mlx/mlx/backend/cuda/quantized/qmm/qmm.cu", + "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n128_m2.cu", + "mlx/mlx/backend/cuda/quantized/qmm/fp_qmv.cu", + ] + noMetalCmlxExcludes + + cxxSettings = [ + .unsafeFlags(["-I/usr/local/cuda/include"]), + .unsafeFlags(["-I/usr/local/cuda/include/cccl"]), + ] + + linkerSettings = [ + .linkedLibrary("gfortran", .when(platforms: [.linux])), + .linkedLibrary("blas", .when(platforms: [.linux])), + .linkedLibrary("lapack", .when(platforms: [.linux])), + .linkedLibrary("openblas", .when(platforms: [.linux])), + .unsafeFlags(["-L/usr/local/cuda/lib64"]), + .unsafeFlags(["-L/usr/local/cuda/lib64/stubs"]), + .linkedLibrary("cudnn"), + .linkedLibrary("cublas"), + .linkedLibrary("cublasLt"), + .linkedLibrary("nvrtc"), + .linkedLibrary("cudart"), + .linkedLibrary("cuda"), + ] + + mlxSwiftExcludes = [ + "GPU+Metal.swift", + "MLXArray+Metal.swift", + ] + } else { + // Linux without CUDA (CPU only) + + platformExcludes = [ + "framework", + "include-framework", + "metal-cpp", + + "mlx/mlx/backend/gpu", // Exclude GPU backend on Linux, use no_gpu instead + "mlx/mlx/backend/no_cpu", // Exclude no_cpu backend on Linux, use cpu instead + "mlx/mlx/backend/cpu/gemms/bnns.cpp", // macOS Accelerate version + "mlx-conditional", + "mlx-c/mlx/c/metal.cpp", + + "mlx-c/mlx/c/fast.cpp", // Exclude on Linux - calls metal_kernel unconditionally + + ] + noMetalCmlxExcludes + noCudaCmlxExcludes + + cxxSettings = [] + + linkerSettings = [ + .linkedLibrary("gfortran", .when(platforms: [.linux])), + .linkedLibrary("blas", .when(platforms: [.linux])), + .linkedLibrary("lapack", .when(platforms: [.linux])), + .linkedLibrary("openblas", .when(platforms: [.linux])), + ] + + mlxSwiftExcludes = [ + "GPU+Metal.swift", + "GPU+CUDA.swift", + "MLXArray+Metal.swift", + "MLXFast.swift", + "MLXFastKernel.swift", + ] + } #else + // Apple's platforms with Metal + let platformExcludes: [String] = [ "mlx/mlx/backend/cpu/compiled.cpp", @@ -83,7 +187,7 @@ import PackageDescription // bnns instead of simd (accelerate) "mlx/mlx/backend/cpu/gemms/simd_fp16.cpp", "mlx/mlx/backend/cpu/gemms/simd_bf16.cpp", - ] + ] + noCudaCmlxExcludes let cxxSettings: [CXXSetting] = [ .headerSearchPath("metal-cpp"), @@ -101,7 +205,9 @@ import PackageDescription .linkedFramework("Accelerate"), ] - let mlxSwiftExcludes: [String] = [] + let mlxSwiftExcludes: [String] = [ + "GPU+CUDA.swift", + ] #endif let cmlx = Target.target( @@ -147,40 +253,6 @@ let cmlx = Target.target( "mlx/setup.py", "mlx/tests", - // special handling for cuda -- we need to keep one file: - // mlx/mlx/backend/cuda/no_cuda.cpp - - "mlx/mlx/backend/cuda/allocator.cpp", - "mlx/mlx/backend/cuda/compiled.cpp", - "mlx/mlx/backend/cuda/conv.cpp", - "mlx/mlx/backend/cuda/cublas_utils.cpp", - "mlx/mlx/backend/cuda/cudnn_utils.cpp", - "mlx/mlx/backend/cuda/custom_kernel.cpp", - "mlx/mlx/backend/cuda/delayload.cpp", - "mlx/mlx/backend/cuda/device_info.cpp", - "mlx/mlx/backend/cuda/device.cpp", - "mlx/mlx/backend/cuda/eval.cpp", - "mlx/mlx/backend/cuda/fence.cpp", - "mlx/mlx/backend/cuda/indexing.cpp", - "mlx/mlx/backend/cuda/jit_module.cpp", - "mlx/mlx/backend/cuda/load.cpp", - "mlx/mlx/backend/cuda/matmul.cpp", - "mlx/mlx/backend/cuda/primitives.cpp", - "mlx/mlx/backend/cuda/scaled_dot_product_attention.cpp", - "mlx/mlx/backend/cuda/slicing.cpp", - "mlx/mlx/backend/cuda/utils.cpp", - "mlx/mlx/backend/cuda/worker.cpp", - - "mlx/mlx/backend/cuda/binary", - "mlx/mlx/backend/cuda/conv", - "mlx/mlx/backend/cuda/copy", - "mlx/mlx/backend/cuda/device", - "mlx/mlx/backend/cuda/gemms", - "mlx/mlx/backend/cuda/quantized", - "mlx/mlx/backend/cuda/reduce", - "mlx/mlx/backend/cuda/steel", - "mlx/mlx/backend/cuda/unary", - // build variants (we are opting _out_ of these) "mlx/mlx/io/no_safetensors.cpp", "mlx/mlx/io/gguf.cpp", @@ -203,6 +275,7 @@ let cmlx = Target.target( cSettings: [ .headerSearchPath("mlx"), .headerSearchPath("mlx-c"), + .headerSearchPath("mlx-extras/backend/cuda"), ], cxxSettings: cxxSettings + [ .headerSearchPath("mlx"), @@ -211,7 +284,10 @@ let cmlx = Target.target( .headerSearchPath("fmt/include"), .define("MLX_VERSION", to: "\"0.31.1\""), ], - linkerSettings: linkerSettings + linkerSettings: linkerSettings, + plugins: [ + .plugin(name: "CudaBuild") + ], ) let package = Package( @@ -236,7 +312,8 @@ let package = Package( ], dependencies: [ // for Complex type - .package(url: "https://github.com/apple/swift-numerics", from: "1.0.0") + .package(url: "https://github.com/apple/swift-numerics", from: "1.0.0"), + .package(url: "https://github.com/apple/swift-argument-parser", from: "1.0.0"), ], targets: [ cmlx, @@ -333,6 +410,19 @@ let package = Package( path: "Source/Examples", sources: ["CustomFunctionExampleSimple.swift"] ), + .executableTarget( + name: "encuda", + dependencies: [ + .product(name: "ArgumentParser", package: "swift-argument-parser"), + ], + ), + .plugin( + name: "CudaBuild", + capability: .buildTool(), + dependencies: [ + .target(name: "encuda"), + ], + ), ], cxxLanguageStandard: .gnucxx20 ) diff --git a/Plugins/CudaBuild/plugin.swift b/Plugins/CudaBuild/plugin.swift new file mode 100644 index 00000000..bc86595a --- /dev/null +++ b/Plugins/CudaBuild/plugin.swift @@ -0,0 +1,124 @@ +import Foundation +import PackagePlugin + +@main +struct CudaBuild: BuildToolPlugin { + + struct Settings: Codable { + var headerSearchPaths: [String] = [] + var exclude: [String] = [] + var cppLanguageStandard: String? = nil + var verbose: Bool = false + } + + func createBuildCommands(context: PluginContext, target: Target) async throws -> [Command] { + + print("CUDA Build Plugin") + + guard ProcessInfo.processInfo.environment["SPM_CUDA"] == "1" else { + print("CUDA is disabled") + return [] + } + + guard let clangUrl = try? context.tool(named: "clang++") else { + fatalError("clang++ not found") + } + + print("Use clang++ at: \(clangUrl.url.path)") + + let sourceDir = target.directoryURL + + print("Source directory: \(sourceDir.path)") + + let settingsFile = sourceDir.appendingPathComponent("CudaBuild.json") + let settings: Settings + if let data = try? Data(contentsOf: settingsFile) { + print("Found settings file: \(settingsFile.path)") + settings = try JSONDecoder().decode(Settings.self, from: data) + } else { + settings = Settings() + } + + let sourceDirPath = sourceDir.path.hasSuffix("/") ? sourceDir.path : sourceDir.path + "/" + var inputFiles: [URL] = [] + if let enumerator = FileManager.default.enumerator(at: sourceDir, includingPropertiesForKeys: nil) { + while let inputUrl = enumerator.nextObject() as? URL { + if inputUrl.pathExtension == "cu" { + guard inputUrl.path.hasPrefix(sourceDirPath) else { + fatalError("Input file \(inputUrl.path) is not under source directory \(sourceDirPath)") + } + let relateivePath = String(inputUrl.path.dropFirst(sourceDirPath.count)) + if isExcluded(settings: settings, relativePath: relateivePath) { + print("Excluding \(relateivePath)") + continue + } + inputFiles.append(URL(string: relateivePath, relativeTo: sourceDir)!) + } + } + } + + print("Input files: \(inputFiles.map { $0.relativePath })") + + let outputDir = context.pluginWorkDirectoryURL + + var commands: [Command] = [] + + // Invoke `encuda compile` to compile each .cu file to .cpp + + let encuda = try context.tool(named: "encuda") + let verboseFlag = settings.verbose ? ["-v"] : [] + let headerSearchPathArgs = settings.headerSearchPaths.flatMap { ["-I", sourceDirPath + $0] } + let stdArgs = settings.cppLanguageStandard.map { ["--std", $0] } ?? [] + + for inputFile in inputFiles { + let outputCpp = URL(string: inputFile.relativePath, relativeTo: outputDir)!.deletingPathExtension().appendingPathExtension("cpp") + commands.append( + .buildCommand( + displayName: "Compiling \(inputFile.lastPathComponent) to \(outputCpp.lastPathComponent)", + executable: encuda.url, + arguments: ["compile"] + verboseFlag + stdArgs + [ + "--clangpp", clangUrl.url.path, + "-I", sourceDir.path, + ] + headerSearchPathArgs + [ + inputFile.path, + "-o", outputCpp.path, + ], + inputFiles: [inputFile], + outputFiles: [outputCpp] + ) + ) + } + + // Invoke `encuda link` with all .cpp files + + let outputCpps = inputFiles.map { inputFile in + URL(string: inputFile.relativePath, relativeTo: outputDir)! + .deletingPathExtension() + .appendingPathExtension("cpp") + } + + let linkOutput = outputDir.appendingPathComponent("__cuda_link.cpp") + + commands.append( + .buildCommand( + displayName: "Linking CUDA objects", + executable: encuda.url, + arguments: ["link"] + verboseFlag + stdArgs + [ + "--clangpp", clangUrl.url.path, + ] + outputCpps.map { $0.path } + ["-o", linkOutput.path], + inputFiles: outputCpps, + outputFiles: [linkOutput] + ) + ) + + return commands + } + + func isExcluded(settings: Settings, relativePath: String) -> Bool { + func isInFolder(path: String, folderPath: String) -> Bool { + let prefix = folderPath.hasSuffix("/") ? folderPath : (folderPath + "/") + return path.hasPrefix(prefix) + } + return settings.exclude.contains(relativePath) || settings.exclude.contains { isInFolder(path: relativePath, folderPath: $0) } + } +} diff --git a/Source/Cmlx/CudaBuild.json b/Source/Cmlx/CudaBuild.json new file mode 100644 index 00000000..3ba88fc9 --- /dev/null +++ b/Source/Cmlx/CudaBuild.json @@ -0,0 +1,31 @@ +{ + "headerSearchPaths": [ + "mlx", + "mlx-c", + "json/single_include/nlohmann", + "fmt/include" + ], + "exclude": [ + "framework", + "include-framework", + "metal-cpp", + "mlx/mlx/backend/metal/kernels", + "mlx/mlx/backend/metal/jit", + "mlx/mlx/backend/no_cpu", + "mlx-conditional", + "mlx-c/examples", + "json", + "fmt/test", + "fmt/doc", + "fmt/support", + "mlx/benchmarks", + "mlx/cmake", + "mlx/docs", + "mlx/examples", + "mlx/python", + "mlx/tests", + "mlx/mlx/backend/metal/kernels" + ], + "cppLanguageStandard": "c++20", + "verbose": false +} diff --git a/Source/Cmlx/mlx-extras/backend/cuda/cuda_jit_sources.h b/Source/Cmlx/mlx-extras/backend/cuda/cuda_jit_sources.h new file mode 100644 index 00000000..5c306edc --- /dev/null +++ b/Source/Cmlx/mlx-extras/backend/cuda/cuda_jit_sources.h @@ -0,0 +1,4295 @@ +#pragma once + +namespace mlx::core { + +constexpr char jit_source_atomic_ops[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, + 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, + 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, + 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x66, 0x70, 0x31, 0x36, + 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, + 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, + 0x64, 0x61, 0x2f, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x3e, 0x0a, 0x0a, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, + 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, + 0x7b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, + 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x54, + 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x3c, 0x54, + 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x74, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x3e, 0x20, 0x72, 0x65, 0x66, 0x28, 0x2a, 0x6f, 0x75, + 0x74, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x66, 0x20, 0x2b, 0x3d, + 0x20, 0x76, 0x61, 0x6c, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, + 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, + 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x61, 0x74, 0x6f, 0x6d, 0x69, + 0x63, 0x5f, 0x72, 0x65, 0x66, 0x3c, 0x54, 0x2c, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x3e, 0x20, + 0x72, 0x65, 0x66, 0x28, 0x2a, 0x6f, 0x75, 0x74, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x54, 0x20, 0x6f, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x66, + 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x77, + 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x21, 0x72, 0x65, 0x66, 0x2e, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x28, 0x6f, + 0x6c, 0x64, 0x2c, 0x20, 0x6f, 0x6c, 0x64, 0x20, 0x2a, 0x20, 0x76, 0x61, + 0x6c, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, + 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, + 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x54, 0x2a, 0x20, + 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x61, 0x74, + 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x3c, 0x54, 0x2c, 0x20, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x3e, 0x20, 0x72, 0x65, 0x66, 0x28, 0x2a, 0x6f, 0x75, 0x74, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x66, 0x2e, 0x66, 0x65, 0x74, 0x63, + 0x68, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, + 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, + 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x54, + 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x3c, 0x54, + 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x74, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x3e, 0x20, 0x72, 0x65, 0x66, 0x28, 0x2a, 0x6f, 0x75, + 0x74, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x66, 0x2e, 0x66, 0x65, + 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x76, 0x61, 0x6c, 0x29, + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x53, 0x6f, 0x6d, 0x65, + 0x68, 0x6f, 0x77, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x61, 0x74, + 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x20, 0x64, 0x6f, 0x65, + 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x20, 0x61, 0x64, 0x64, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, + 0x63, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x6c, 0x28, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, + 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, + 0x66, 0x3c, 0x54, 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x74, + 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x3e, 0x20, 0x72, 0x65, 0x66, 0x28, + 0x2a, 0x6f, 0x75, 0x74, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x6f, + 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x66, 0x2e, 0x6c, 0x6f, 0x61, + 0x64, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, + 0x20, 0x28, 0x21, 0x72, 0x65, 0x66, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x61, + 0x72, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x28, 0x6f, 0x6c, 0x64, 0x2c, 0x20, + 0x6f, 0x6c, 0x64, 0x20, 0x2b, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, 0x6f, 0x6d, + 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, + 0x66, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, + 0x6c, 0x66, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x41, 0x64, 0x64, 0x28, 0x6f, 0x75, + 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, + 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, + 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x6f, + 0x75, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x36, + 0x34, 0x5f, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x5f, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x28, 0x6f, 0x75, 0x74, 0x2c, + 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, 0x6f, + 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x5f, 0x5f, 0x6e, 0x76, + 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x2a, 0x20, 0x6f, + 0x75, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x31, 0x36, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, + 0x0a, 0x23, 0x69, 0x66, 0x20, 0x5f, 0x5f, 0x43, 0x55, 0x44, 0x41, 0x5f, + 0x41, 0x52, 0x43, 0x48, 0x5f, 0x5f, 0x20, 0x3c, 0x20, 0x38, 0x30, 0x30, + 0x0a, 0x20, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, + 0x64, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x28, 0x6f, 0x75, + 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6c, + 0x73, 0x65, 0x0a, 0x20, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x41, + 0x64, 0x64, 0x28, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, + 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x7d, 0x0a, 0x0a, + 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, + 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 +}; + +constexpr char jit_source_binary_ops[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x6e, 0x61, 0x72, 0x79, + 0x5f, 0x6f, 0x70, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3e, + 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, + 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, + 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, + 0x41, 0x64, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, + 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x79, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x20, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x44, 0x69, + 0x76, 0x69, 0x64, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, + 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x6c, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, + 0x20, 0x2f, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x72, 0x75, 0x6e, 0x63, + 0x28, 0x78, 0x20, 0x2f, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, + 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2f, 0x20, 0x79, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x3c, 0x54, + 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x69, 0x73, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, + 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x78, + 0x20, 0x25, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, 0x20, 0x21, 0x3d, 0x20, 0x30, + 0x20, 0x26, 0x26, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x20, 0x30, 0x20, 0x21, + 0x3d, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x20, + 0x2b, 0x3d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x25, 0x20, 0x79, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x25, 0x20, 0x79, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x72, 0x20, 0x3d, 0x20, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x66, + 0x6d, 0x6f, 0x64, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, 0x20, 0x21, + 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x20, + 0x30, 0x20, 0x21, 0x3d, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x20, 0x3d, 0x20, 0x72, 0x20, 0x2b, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x71, 0x75, 0x61, 0x6c, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, + 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3d, 0x3d, 0x20, + 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4e, 0x61, 0x4e, 0x45, 0x71, 0x75, + 0x61, 0x6c, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, + 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3d, 0x3d, 0x20, 0x79, 0x20, 0x7c, + 0x7c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x28, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, + 0x6c, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, 0x20, 0x69, 0x73, 0x6e, 0x61, + 0x6e, 0x28, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, + 0x26, 0x26, 0x20, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x69, + 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x73, 0x6e, + 0x61, 0x6e, 0x28, 0x79, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, + 0x29, 0x20, 0x7c, 0x7c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, + 0x20, 0x3d, 0x3d, 0x20, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, + 0x20, 0x26, 0x26, 0x20, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, + 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, 0x20, 0x69, + 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x79, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, + 0x29, 0x29, 0x29, 0x20, 0x7c, 0x7c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, + 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, + 0x20, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x79, 0x2e, 0x72, 0x65, 0x61, + 0x6c, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, 0x20, 0x78, 0x2e, 0x69, 0x6d, + 0x61, 0x67, 0x28, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x79, 0x2e, 0x69, 0x6d, + 0x61, 0x67, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3d, + 0x3d, 0x20, 0x79, 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x69, 0x73, 0x6e, 0x61, + 0x6e, 0x28, 0x78, 0x29, 0x20, 0x26, 0x26, 0x20, 0x69, 0x73, 0x6e, 0x61, + 0x6e, 0x28, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, + 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3e, 0x20, 0x79, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x45, + 0x71, 0x75, 0x61, 0x6c, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, + 0x20, 0x3e, 0x3d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x65, + 0x73, 0x73, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, + 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3c, + 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x65, 0x73, 0x73, 0x45, + 0x71, 0x75, 0x61, 0x6c, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, + 0x20, 0x3c, 0x3d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, + 0x67, 0x41, 0x64, 0x64, 0x45, 0x78, 0x70, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, + 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, + 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x20, 0x7c, 0x7c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, + 0x6e, 0x28, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, + 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x79, 0x2e, 0x69, 0x6d, + 0x61, 0x67, 0x28, 0x29, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x73, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x3a, 0x3a, + 0x71, 0x75, 0x69, 0x65, 0x74, 0x5f, 0x4e, 0x61, 0x4e, 0x28, 0x29, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x73, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x3a, 0x3a, 0x71, + 0x75, 0x69, 0x65, 0x74, 0x5f, 0x4e, 0x61, 0x4e, 0x28, 0x29, 0x7d, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x6d, 0x61, 0x78, 0x20, + 0x3d, 0x20, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3e, + 0x20, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3f, 0x20, + 0x78, 0x20, 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x3d, 0x20, + 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3c, 0x20, 0x79, + 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3f, 0x20, 0x78, 0x20, + 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, + 0x75, 0x74, 0x6f, 0x20, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x6c, + 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, + 0x6f, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x3d, + 0x20, 0x6d, 0x61, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, + 0x73, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x28, 0x6d, 0x69, 0x6e, 0x5f, + 0x72, 0x65, 0x61, 0x6c, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6d, 0x69, + 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x3d, 0x3d, 0x20, 0x6d, 0x61, + 0x78, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6d, + 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x3c, 0x20, 0x30, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x69, 0x6e, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x4c, + 0x6f, 0x67, 0x7b, 0x7d, 0x28, 0x45, 0x78, 0x70, 0x7b, 0x7d, 0x28, 0x6d, + 0x69, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x45, 0x78, 0x70, 0x7b, 0x7d, 0x28, + 0x6d, 0x61, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x4c, + 0x6f, 0x67, 0x31, 0x70, 0x7b, 0x7d, 0x28, 0x45, 0x78, 0x70, 0x7b, 0x7d, + 0x28, 0x6d, 0x69, 0x6e, 0x20, 0x2d, 0x20, 0x6d, 0x61, 0x78, 0x29, 0x29, + 0x20, 0x2b, 0x20, 0x6d, 0x61, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, + 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x29, 0x20, 0x7c, + 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x79, 0x29, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x71, 0x75, + 0x69, 0x65, 0x74, 0x5f, 0x4e, 0x61, 0x4e, 0x28, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x54, 0x20, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, + 0x6d, 0x61, 0x78, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x6d, 0x69, 0x6e, 0x76, 0x61, + 0x6c, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x78, 0x2c, 0x20, 0x79, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x28, 0x6d, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x20, + 0x3d, 0x3d, 0x20, 0x2d, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x28, 0x29, 0x20, 0x7c, 0x7c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x3d, 0x20, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, + 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x79, 0x28, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3a, + 0x20, 0x54, 0x28, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, 0x20, 0x2b, 0x20, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6c, + 0x6f, 0x67, 0x31, 0x70, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x78, 0x70, 0x28, 0x6d, 0x69, 0x6e, 0x76, + 0x61, 0x6c, 0x20, 0x2d, 0x20, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, 0x29, + 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, + 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, + 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x78, 0x2c, 0x20, 0x79, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, + 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, + 0x6e, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, + 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x69, 0x6d, + 0x61, 0x67, 0x28, 0x29, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x78, 0x20, 0x3e, 0x20, 0x79, 0x20, 0x3f, 0x20, 0x78, 0x20, 0x3a, 0x20, + 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x29, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3e, 0x20, 0x79, 0x20, 0x3f, 0x20, + 0x78, 0x20, 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x3c, 0x54, + 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x78, 0x2c, + 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, + 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, + 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x79, 0x20, 0x3f, 0x20, 0x78, 0x20, + 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x29, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x79, 0x20, + 0x3f, 0x20, 0x78, 0x20, 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, + 0x6c, 0x79, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, + 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2a, 0x20, 0x79, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x4e, 0x6f, 0x74, 0x45, 0x71, 0x75, 0x61, 0x6c, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, + 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, + 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x2e, + 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x79, 0x2e, + 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x78, 0x2e, + 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x79, 0x2e, + 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, + 0x21, 0x3d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, + 0x28, 0x54, 0x20, 0x62, 0x61, 0x73, 0x65, 0x2c, 0x20, 0x54, 0x20, 0x65, + 0x78, 0x70, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, + 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, + 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x54, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x31, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x52, 0x61, 0x69, + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x20, + 0x69, 0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x28, 0x65, 0x78, 0x70, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, + 0x6c, 0x65, 0x20, 0x28, 0x65, 0x78, 0x70, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x65, + 0x78, 0x70, 0x20, 0x26, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, + 0x2a, 0x3d, 0x20, 0x62, 0x61, 0x73, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x65, 0x78, 0x70, 0x20, 0x3e, 0x3e, 0x3d, 0x20, 0x31, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, + 0x73, 0x65, 0x20, 0x2a, 0x3d, 0x20, 0x62, 0x61, 0x73, 0x65, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, + 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x70, 0x6f, + 0x77, 0x28, 0x62, 0x61, 0x73, 0x65, 0x2c, 0x20, 0x65, 0x78, 0x70, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x70, 0x6f, 0x77, 0x28, 0x62, 0x61, 0x73, 0x65, 0x2c, + 0x20, 0x65, 0x78, 0x70, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x53, 0x75, 0x62, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, + 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2d, 0x20, 0x79, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x6e, 0x64, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, + 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x26, 0x26, 0x20, 0x79, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4f, + 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, + 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x7c, 0x7c, 0x20, 0x79, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x20, 0x42, 0x69, 0x74, 0x77, 0x69, 0x73, 0x65, + 0x41, 0x6e, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, + 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x26, 0x20, 0x79, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x42, 0x69, 0x74, 0x77, 0x69, 0x73, + 0x65, 0x4f, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, + 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x7c, 0x20, 0x79, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x42, 0x69, 0x74, 0x77, 0x69, 0x73, + 0x65, 0x58, 0x6f, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, + 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x5e, 0x20, + 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x65, 0x66, 0x74, 0x53, + 0x68, 0x69, 0x66, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, + 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3c, 0x3c, + 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x52, 0x69, 0x67, 0x68, + 0x74, 0x53, 0x68, 0x69, 0x66, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, + 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, + 0x3e, 0x3e, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x41, 0x72, + 0x63, 0x54, 0x61, 0x6e, 0x32, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, + 0x79, 0x2c, 0x20, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x74, 0x61, 0x6e, + 0x32, 0x28, 0x79, 0x2c, 0x20, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, + 0x44, 0x69, 0x76, 0x4d, 0x6f, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x3c, 0x54, 0x2c, 0x20, 0x32, 0x3e, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, + 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x46, 0x6c, 0x6f, 0x6f, + 0x72, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x7b, 0x7d, 0x28, 0x78, 0x2c, + 0x20, 0x79, 0x29, 0x2c, 0x20, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x7b, 0x7d, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x7d, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x7d, 0x20, + 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, + 0x63, 0x75, 0x0a, 0x00 +}; + +constexpr char jit_source_cast_op[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, + 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, + 0x61, 0x5f, 0x62, 0x66, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, + 0x5f, 0x66, 0x70, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, + 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, + 0x0a, 0x2f, 0x2f, 0x20, 0x41, 0x6e, 0x20, 0x6f, 0x70, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x2c, 0x20, 0x77, 0x69, 0x74, + 0x68, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x20, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, + 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x44, + 0x73, 0x74, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x3d, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x3e, 0x0a, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, + 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, + 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x3b, 0x0a, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x44, + 0x73, 0x74, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x53, 0x72, 0x63, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, + 0x44, 0x73, 0x74, 0x54, 0x3e, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x43, 0x61, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, + 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x2e, 0x0a, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x2c, + 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, + 0x63, 0x61, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, + 0x72, 0x75, 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, + 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, + 0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x78, 0x2e, 0x69, + 0x6d, 0x61, 0x67, 0x28, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x62, 0x6f, 0x6f, 0x6c, + 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, + 0x54, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, + 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x73, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, + 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, + 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x28, 0x29, 0x28, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x78, 0x20, 0x3f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x7b, 0x31, 0x2c, 0x20, 0x31, 0x7d, 0x20, + 0x3a, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, + 0x54, 0x3e, 0x7b, 0x30, 0x2c, 0x20, 0x30, 0x7d, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x20, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x72, 0x79, 0x20, 0x70, 0x61, 0x72, 0x74, 0x2e, 0x0a, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x0a, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, + 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x21, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x44, 0x73, 0x74, + 0x54, 0x3e, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, + 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, + 0x3c, 0x54, 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x3b, 0x0a, 0x0a, + 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x44, 0x73, 0x74, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x61, 0x73, + 0x73, 0x65, 0x72, 0x74, 0x28, 0x21, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x44, 0x73, 0x74, 0x54, 0x3e, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, + 0x74, 0x3c, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x28, 0x78, 0x2e, 0x72, 0x65, + 0x61, 0x6c, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x20, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, + 0x20, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x53, + 0x72, 0x63, 0x54, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x21, 0x69, 0x73, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, + 0x3e, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, + 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x73, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x3c, + 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x54, 0x3e, 0x3b, 0x0a, 0x0a, 0x20, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x53, 0x72, 0x63, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x61, 0x73, 0x73, + 0x65, 0x72, 0x74, 0x28, 0x21, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x3e, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, + 0x3e, 0x7b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, + 0x74, 0x3c, 0x54, 0x3e, 0x28, 0x78, 0x29, 0x2c, 0x20, 0x30, 0x7d, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, + 0x44, 0x6f, 0x20, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x77, + 0x68, 0x65, 0x6e, 0x20, 0x6e, 0x6f, 0x20, 0x63, 0x61, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, + 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, + 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x44, 0x73, 0x74, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x44, + 0x73, 0x74, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, + 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x44, + 0x73, 0x74, 0x54, 0x3e, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, + 0x63, 0x61, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, + 0x72, 0x75, 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x53, 0x72, 0x63, 0x54, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x53, + 0x72, 0x63, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x49, 0x6e, + 0x20, 0x43, 0x55, 0x44, 0x41, 0x20, 0x31, 0x31, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, + 0x64, 0x6f, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x73, 0x6f, + 0x6d, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2c, 0x0a, 0x2f, 0x2f, + 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x66, 0x61, 0x6c, + 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x73, 0x20, 0x68, 0x65, 0x72, 0x65, 0x2e, + 0x0a, 0x23, 0x69, 0x66, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, + 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x20, 0x3c, 0x20, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, + 0x72, 0x63, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x3c, + 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x20, + 0x26, 0x26, 0x20, 0x21, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x3e, 0x20, 0x26, + 0x26, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x44, 0x73, 0x74, 0x54, + 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, 0x20, 0x7c, 0x7c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, + 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x44, 0x73, 0x74, 0x54, 0x2c, + 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x31, 0x36, 0x3e, 0x29, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, + 0x63, 0x61, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, + 0x72, 0x75, 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x44, 0x73, 0x74, 0x54, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x53, + 0x72, 0x63, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x44, 0x73, 0x74, 0x54, + 0x28, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, + 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x78, 0x29, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, + 0x4f, 0x70, 0x3c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x72, 0x63, 0x54, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x66, + 0x5f, 0x74, 0x3c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x21, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, + 0x6c, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x44, + 0x73, 0x74, 0x54, 0x3e, 0x20, 0x26, 0x26, 0x20, 0x21, 0x69, 0x73, 0x5f, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x53, 0x72, + 0x63, 0x54, 0x3e, 0x20, 0x26, 0x26, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x21, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, + 0x3c, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, + 0x66, 0x3e, 0x20, 0x26, 0x26, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x21, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, + 0x44, 0x73, 0x74, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x3e, 0x20, 0x26, 0x26, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, + 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, + 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, 0x20, 0x7c, 0x7c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, + 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x5f, + 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, + 0x3e, 0x29, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, + 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, + 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x44, 0x73, 0x74, 0x54, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x53, 0x72, 0x63, + 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x44, 0x73, 0x74, 0x54, 0x28, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, + 0x20, 0x2f, 0x2f, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, 0x56, + 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x20, 0x3c, 0x20, 0x31, 0x32, 0x30, + 0x30, 0x30, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x48, 0x65, 0x6c, 0x70, 0x65, + 0x72, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x64, 0x75, 0x63, 0x65, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, 0x2e, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, + 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, + 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x74, 0x6f, 0x28, 0x53, 0x72, 0x63, 0x54, 0x20, 0x78, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x53, 0x72, 0x63, 0x54, + 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x7b, 0x7d, 0x28, 0x78, 0x29, + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, + 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 +}; + +constexpr char jit_source_complex[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x2f, + 0x2f, 0x20, 0x4d, 0x61, 0x6b, 0x65, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x66, + 0x61, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x65, 0x20, 0x4c, 0x49, 0x42, 0x43, 0x55, 0x44, 0x41, 0x43, 0x58, + 0x58, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x4d, + 0x50, 0x4c, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x50, + 0x4c, 0x45, 0x58, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x53, 0x0a, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, 0x73, + 0x74, 0x64, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x73, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, + 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x54, + 0x4f, 0x44, 0x4f, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, + 0x72, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x66, 0x61, + 0x73, 0x74, 0x65, 0x72, 0x20, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x68, 0x61, 0x73, 0x20, 0x74, 0x6f, + 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x20, + 0x74, 0x6f, 0x20, 0x43, 0x2b, 0x2b, 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, + 0x61, 0x72, 0x64, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x3c, 0x54, 0x3e, 0x3b, 0x0a, 0x0a, 0x75, 0x73, 0x69, + 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x36, 0x34, + 0x5f, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x5f, 0x74, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x3b, 0x0a, 0x75, + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x31, 0x32, 0x38, 0x5f, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, + 0x3e, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x69, 0x73, 0x5f, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x3a, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x66, 0x61, 0x6c, + 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, + 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x3c, + 0x54, 0x3e, 0x3e, 0x20, 0x3a, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x72, 0x75, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x62, + 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x78, 0x5f, 0x76, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, + 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x25, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, + 0x20, 0x61, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x62, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x61, 0x2e, + 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x6c, 0x6f, + 0x6f, 0x72, 0x28, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, + 0x2f, 0x20, 0x62, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, + 0x2a, 0x20, 0x62, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x54, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x61, 0x2e, 0x69, 0x6d, + 0x61, 0x67, 0x28, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x6c, 0x6f, 0x6f, 0x72, + 0x28, 0x61, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x20, 0x2f, 0x20, + 0x62, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x20, 0x2a, 0x20, + 0x62, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x7b, 0x72, 0x2c, 0x20, 0x69, + 0x7d, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, + 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3e, 0x28, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x61, + 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, + 0x54, 0x3e, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, + 0x28, 0x29, 0x20, 0x3e, 0x20, 0x62, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, + 0x29, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x61, 0x2e, 0x72, 0x65, 0x61, + 0x6c, 0x28, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x62, 0x2e, 0x72, 0x65, 0x61, + 0x6c, 0x28, 0x29, 0x20, 0x26, 0x26, 0x20, 0x61, 0x2e, 0x69, 0x6d, 0x61, + 0x67, 0x28, 0x29, 0x20, 0x3e, 0x20, 0x62, 0x2e, 0x69, 0x6d, 0x61, 0x67, + 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, + 0x6c, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3c, 0x28, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, + 0x20, 0x61, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, + 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x3e, 0x28, 0x62, 0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0a, + 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, + 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3c, 0x3d, 0x28, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x61, 0x2c, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, + 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x21, 0x28, 0x61, 0x20, 0x3e, 0x20, 0x62, 0x29, 0x3b, + 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, + 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3e, 0x3d, 0x28, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x61, 0x2c, + 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, + 0x3e, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x21, 0x28, 0x61, 0x20, 0x3c, 0x20, 0x62, 0x29, + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, + 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 +}; + +constexpr char jit_source_config[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, + 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x69, 0x73, + 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x62, 0x6f, 0x74, + 0x68, 0x20, 0x43, 0x55, 0x44, 0x41, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, + 0x6c, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x68, + 0x6f, 0x73, 0x74, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x43, 0x2b, 0x2b, + 0x20, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, + 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x2f, 0x2f, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, + 0x20, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, + 0x6f, 0x66, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, + 0x61, 0x73, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x0a, 0x23, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x44, + 0x49, 0x4d, 0x20, 0x31, 0x30, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x41, 0x6c, + 0x6c, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x4e, + 0x56, 0x49, 0x44, 0x49, 0x41, 0x20, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, + 0x72, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x78, + 0x65, 0x64, 0x20, 0x33, 0x32, 0x20, 0x77, 0x61, 0x72, 0x70, 0x20, 0x73, + 0x69, 0x7a, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x6f, 0x75, 0x67, 0x68, 0x20, + 0x61, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x2d, 0x69, 0x6e, 0x0a, 0x2f, + 0x2f, 0x20, 0x77, 0x61, 0x72, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x76, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x78, 0x69, 0x73, + 0x74, 0x73, 0x2c, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x74, + 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2d, 0x74, + 0x69, 0x6d, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x65, 0x20, 0x57, 0x41, 0x52, 0x50, 0x5f, 0x53, 0x49, 0x5a, 0x45, + 0x20, 0x33, 0x32, 0x0a, 0x00 +}; + +constexpr char jit_source_fp16_math[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, + 0x61, 0x5f, 0x62, 0x66, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, + 0x5f, 0x66, 0x70, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x73, 0x74, 0x64, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x73, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, + 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x42, 0x69, 0x6e, 0x61, + 0x72, 0x79, 0x20, 0x6f, 0x70, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x68, + 0x61, 0x6c, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x0a, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x0a, 0x23, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x65, 0x20, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x4f, 0x50, + 0x28, 0x4e, 0x41, 0x4d, 0x45, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x5f, + 0x4f, 0x50, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, + 0x4e, 0x41, 0x4d, 0x45, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, + 0x79, 0x29, 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, + 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, + 0x29, 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x48, 0x41, 0x4c, + 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, + 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x3e, 0x29, 0x20, 0x7b, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x78, + 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x3a, 0x3a, 0x4e, + 0x41, 0x4d, 0x45, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, + 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, + 0x5f, 0x4f, 0x50, 0x28, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x5f, 0x5f, 0x68, + 0x6d, 0x61, 0x78, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x4f, + 0x50, 0x28, 0x6d, 0x69, 0x6e, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x6d, 0x69, + 0x6e, 0x29, 0x0a, 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x4d, + 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x42, 0x49, + 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x4f, 0x50, 0x0a, 0x0a, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x43, 0x2b, 0x2b, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x6f, 0x76, 0x65, 0x72, + 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, + 0x6e, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x55, + 0x3e, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, + 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x20, 0x26, 0x26, + 0x20, 0x21, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, + 0x2c, 0x20, 0x55, 0x3e, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x55, 0x3e, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, + 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x61, + 0x72, 0x69, 0x74, 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x5f, 0x65, 0x78, + 0x63, 0x65, 0x70, 0x74, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x5f, 0x61, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x5f, + 0x76, 0x3c, 0x54, 0x3e, 0x20, 0x26, 0x26, 0x20, 0x21, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, + 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x55, 0x3e, 0x3b, + 0x0a, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4d, 0x4c, + 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, + 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x48, 0x41, 0x4c, 0x46, 0x2c, 0x20, 0x48, + 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x2c, 0x20, 0x46, + 0x4c, 0x4f, 0x41, 0x54, 0x32, 0x48, 0x41, 0x4c, 0x46, 0x2c, 0x20, 0x4f, + 0x50, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, + 0x3c, 0x54, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x3e, 0x3e, 0x3e, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x4f, 0x50, 0x28, + 0x48, 0x41, 0x4c, 0x46, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, + 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x32, 0x48, 0x41, 0x4c, 0x46, 0x28, + 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x28, 0x78, + 0x29, 0x20, 0x4f, 0x50, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, + 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, + 0x79, 0x29, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, + 0x3c, 0x54, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x3e, 0x3e, 0x3e, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x4f, 0x50, 0x28, + 0x54, 0x20, 0x78, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x20, 0x79, 0x29, + 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x32, 0x48, 0x41, 0x4c, 0x46, 0x28, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x78, 0x29, 0x20, 0x4f, 0x50, + 0x20, 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x28, + 0x79, 0x29, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x65, 0x20, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, + 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x48, + 0x41, 0x4c, 0x46, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, + 0x4f, 0x41, 0x54, 0x2c, 0x20, 0x4f, 0x50, 0x29, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x2c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, + 0x74, 0x3c, 0x54, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x3e, 0x3e, 0x3e, + 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, + 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x4f, 0x50, + 0x28, 0x48, 0x41, 0x4c, 0x46, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, + 0x29, 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, 0x4f, + 0x41, 0x54, 0x28, 0x78, 0x29, 0x20, 0x4f, 0x50, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x3e, 0x28, 0x79, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x2c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, + 0x74, 0x3c, 0x54, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x3e, 0x3e, 0x3e, + 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, + 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x4f, 0x50, + 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x20, 0x79, + 0x29, 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, + 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x79, + 0x29, 0x20, 0x4f, 0x50, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, + 0x4f, 0x41, 0x54, 0x28, 0x78, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, + 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, + 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, + 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x32, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x2b, 0x29, 0x0a, 0x4d, 0x4c, + 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, + 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, + 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x68, + 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x2d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, + 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, + 0x4f, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x5f, + 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, + 0x20, 0x5f, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x68, 0x61, 0x6c, + 0x66, 0x2c, 0x20, 0x2a, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, + 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, + 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, + 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x68, 0x61, 0x6c, 0x66, 0x2c, + 0x20, 0x2f, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x5f, + 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, + 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, + 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x32, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, + 0x2c, 0x20, 0x2b, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, 0x28, + 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x2c, 0x20, 0x2d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, + 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, 0x5f, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x31, 0x36, 0x2c, 0x20, 0x2a, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, + 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, + 0x50, 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, + 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x62, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x31, 0x36, 0x2c, 0x20, 0x2f, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, + 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, + 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, + 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x2c, 0x20, 0x3c, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, + 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, + 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3e, + 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, + 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, + 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, + 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3c, 0x3d, 0x29, 0x0a, + 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, + 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, + 0x6c, 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3e, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, + 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, + 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, + 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x2c, 0x20, 0x3d, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, + 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, + 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, + 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x2c, 0x20, 0x21, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, + 0x50, 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3c, + 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, + 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, + 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x2c, + 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3e, 0x29, 0x0a, 0x4d, 0x4c, + 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, + 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x2c, 0x20, 0x3c, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, + 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, + 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, + 0x3e, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, + 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3d, 0x3d, 0x29, + 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, + 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x6e, + 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x2c, 0x20, + 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x21, 0x3d, 0x29, 0x0a, 0x0a, 0x23, + 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, + 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x4d, 0x4c, 0x58, 0x5f, + 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, + 0x43, 0x4d, 0x50, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, + 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 +}; + +constexpr char jit_source_gather[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, 0x69, 0x6c, 0x73, + 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, + 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, + 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x67, 0x20, 0x3d, 0x20, 0x63, 0x6f, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x4e, 0x49, 0x44, 0x58, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x49, 0x44, + 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x3e, 0x0a, 0x5f, + 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x5f, 0x20, 0x76, 0x6f, + 0x69, 0x64, 0x20, 0x67, 0x61, 0x74, 0x68, 0x65, 0x72, 0x28, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, + 0x73, 0x72, 0x63, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, 0x2a, 0x20, + 0x6f, 0x75, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, + 0x54, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, + 0x53, 0x68, 0x61, 0x70, 0x65, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x53, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, + 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x64, + 0x69, 0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x53, 0x68, 0x61, 0x70, + 0x65, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, + 0x32, 0x5f, 0x74, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, + 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x49, + 0x44, 0x58, 0x3e, 0x20, 0x61, 0x78, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, + 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, + 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2a, + 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x3e, 0x20, 0x69, 0x6e, 0x64, 0x69, + 0x63, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, + 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4e, + 0x49, 0x44, 0x58, 0x20, 0x2a, 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, + 0x49, 0x4d, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, + 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x49, 0x44, + 0x58, 0x20, 0x2a, 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, + 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, + 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, + 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x63, 0x67, + 0x3a, 0x3a, 0x74, 0x68, 0x69, 0x73, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x28, + 0x29, 0x2e, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, + 0x6b, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6f, + 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x73, 0x69, + 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, + 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x65, 0x6c, + 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, + 0x20, 0x25, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, + 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2f, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, + 0x63, 0x54, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, + 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x65, + 0x6c, 0x65, 0x6d, 0x2c, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x2c, + 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, + 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x29, 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, + 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, + 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x49, + 0x44, 0x58, 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, + 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, + 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, 0x3c, 0x49, 0x44, 0x58, + 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, + 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, + 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, + 0x65, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x28, 0x29, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, + 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, + 0x78, 0x69, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x78, 0x65, 0x73, 0x5b, 0x69, + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, + 0x69, 0x64, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x62, + 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x28, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x5b, + 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, 0x2c, 0x20, 0x73, 0x72, + 0x63, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x61, 0x78, 0x69, 0x73, + 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x72, 0x63, 0x5f, + 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x76, + 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x5b, 0x61, 0x78, 0x69, 0x73, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5b, 0x6f, + 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x72, + 0x63, 0x5b, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, 0x3b, 0x0a, + 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, + 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 +}; + +constexpr char jit_source_gather_axis[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, 0x69, 0x6c, 0x73, + 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, + 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, + 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x67, 0x20, 0x3d, 0x20, 0x63, 0x6f, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, + 0x64, 0x78, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, + 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, + 0x6f, 0x6f, 0x6c, 0x20, 0x53, 0x72, 0x63, 0x43, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x49, 0x64, 0x78, 0x43, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x3e, 0x0a, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, + 0x67, 0x61, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x28, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, + 0x2a, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2a, 0x20, 0x69, + 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x5f, 0x70, 0x72, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, + 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x5f, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, + 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, + 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, + 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, + 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, + 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, 0x49, 0x4d, + 0x3e, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, + 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, 0x49, + 0x4d, 0x3e, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, + 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, + 0x32, 0x5f, 0x74, 0x20, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x78, + 0x69, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x73, 0x72, 0x63, + 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, + 0x74, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x5f, 0x61, 0x78, 0x69, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x4c, + 0x6f, 0x63, 0x54, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, + 0x63, 0x67, 0x3a, 0x3a, 0x74, 0x68, 0x69, 0x73, 0x5f, 0x67, 0x72, 0x69, + 0x64, 0x28, 0x29, 0x2e, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, + 0x61, 0x6e, 0x6b, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x20, 0x2a, + 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, + 0x69, 0x73, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x5b, 0x78, + 0x2c, 0x20, 0x79, 0x2c, 0x20, 0x7a, 0x5d, 0x20, 0x3d, 0x20, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x6d, 0x73, 0x28, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x29, 0x3b, + 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x65, 0x6c, 0x65, + 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x7a, 0x20, 0x2a, 0x20, + 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x6f, 0x73, + 0x74, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, + 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2a, + 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, + 0x61, 0x78, 0x69, 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x49, 0x64, + 0x78, 0x43, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x65, 0x6c, 0x65, + 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, 0x2b, 0x20, + 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, + 0x63, 0x20, 0x2b, 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, + 0x5f, 0x6e, 0x64, 0x3c, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x28, 0x65, 0x6c, + 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x2c, 0x20, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, + 0x2c, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x69, + 0x64, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, + 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, + 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5b, 0x69, 0x64, 0x78, 0x5f, + 0x6c, 0x6f, 0x63, 0x5d, 0x2c, 0x20, 0x61, 0x78, 0x69, 0x73, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, + 0x54, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, + 0x69, 0x64, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x73, 0x72, + 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, 0x69, + 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x53, 0x72, 0x63, 0x43, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x6c, + 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x69, + 0x64, 0x78, 0x20, 0x2a, 0x20, 0x61, 0x78, 0x69, 0x73, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x20, 0x2b, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, + 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, + 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, 0x3c, 0x4e, 0x44, 0x49, + 0x4d, 0x3e, 0x28, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, + 0x2b, 0x20, 0x78, 0x2c, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x28, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, + 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x4c, + 0x6f, 0x63, 0x54, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, + 0x3d, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x20, 0x2b, 0x20, 0x65, 0x6c, + 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, 0x2b, + 0x20, 0x78, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5b, 0x6f, + 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x72, + 0x63, 0x5b, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, 0x3b, 0x0a, + 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, + 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 +}; + +constexpr char jit_source_hadamard[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, + 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, 0x69, + 0x6c, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, + 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x68, 0x61, 0x64, 0x61, + 0x6d, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x5f, 0x6d, + 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x78, 0x29, 0x3b, 0x0a, + 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, + 0x6e, 0x74, 0x20, 0x4e, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x61, 0x73, 0x73, + 0x65, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, + 0x4e, 0x20, 0x3e, 0x20, 0x30, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x28, + 0x4e, 0x20, 0x26, 0x20, 0x28, 0x4e, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x29, + 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x22, 0x4e, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, + 0x20, 0x61, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, + 0x70, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x77, 0x6f, + 0x2e, 0x22, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x69, 0x6e, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, + 0x31, 0x20, 0x2b, 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, + 0x3c, 0x4e, 0x20, 0x2f, 0x20, 0x32, 0x3e, 0x3a, 0x3a, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, 0x3c, + 0x31, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x69, 0x6e, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x52, 0x3e, 0x0a, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x68, 0x61, 0x64, 0x61, + 0x6d, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x5f, 0x70, + 0x6f, 0x77, 0x32, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x78, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x4c, 0x6f, 0x67, + 0x52, 0x20, 0x3d, 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, + 0x3c, 0x52, 0x3e, 0x3a, 0x3a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0x0a, + 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x68, 0x20, 0x3d, 0x20, 0x31, 0x3b, + 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, + 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, + 0x6e, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x73, 0x20, + 0x3c, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x3b, 0x20, 0x2b, 0x2b, 0x73, + 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, + 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x52, 0x20, 0x2f, 0x20, 0x32, + 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x20, 0x3d, 0x20, 0x69, + 0x20, 0x26, 0x20, 0x28, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, + 0x3d, 0x20, 0x28, 0x28, 0x69, 0x20, 0x2d, 0x20, 0x6b, 0x29, 0x20, 0x3c, + 0x3c, 0x20, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x6b, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x20, + 0x3d, 0x20, 0x78, 0x5b, 0x6a, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x20, 0x3d, 0x20, + 0x78, 0x5b, 0x6a, 0x20, 0x2b, 0x20, 0x68, 0x5d, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x78, 0x5b, 0x6a, 0x5d, 0x20, 0x3d, 0x20, 0x61, + 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x78, 0x5b, 0x6a, 0x20, 0x2b, 0x20, 0x68, 0x5d, 0x20, 0x3d, 0x20, 0x61, + 0x20, 0x2d, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x68, 0x20, 0x3c, 0x3c, 0x3d, 0x20, 0x31, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, + 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, + 0x69, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x31, 0x3e, 0x0a, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x5f, 0x20, 0x76, + 0x6f, 0x69, 0x64, 0x0a, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, + 0x5f, 0x6e, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, + 0x69, 0x6e, 0x2c, 0x20, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2c, + 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6e, + 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x4e, 0x75, + 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x3d, 0x20, 0x4e, + 0x20, 0x2f, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, + 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x4e, 0x20, + 0x3d, 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, 0x3c, 0x4e, + 0x3e, 0x3a, 0x3a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0x0a, 0x20, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, + 0x74, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x20, 0x3d, 0x20, 0x50, 0x6f, + 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, 0x3c, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x61, 0x64, 0x69, 0x78, 0x3e, 0x3a, 0x3a, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x53, 0x74, + 0x65, 0x70, 0x73, 0x20, 0x3d, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x4e, 0x20, + 0x2f, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x3b, 0x0a, 0x20, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, + 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x3d, + 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x4e, 0x20, 0x25, 0x20, 0x6b, 0x4c, 0x6f, + 0x67, 0x52, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x46, 0x69, 0x6e, + 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, 0x78, 0x20, 0x3d, 0x20, 0x31, 0x20, + 0x3c, 0x3c, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, + 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x74, 0x68, 0x72, + 0x65, 0x61, 0x64, 0x49, 0x64, 0x78, 0x2e, 0x78, 0x20, 0x3e, 0x3d, 0x20, + 0x6b, 0x4e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x62, + 0x75, 0x66, 0x5b, 0x4e, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, + 0x20, 0x69, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x49, + 0x64, 0x78, 0x2e, 0x78, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x3d, 0x20, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x78, 0x2e, 0x78, 0x3b, 0x20, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x3c, 0x20, + 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2b, 0x3d, 0x20, + 0x67, 0x72, 0x69, 0x64, 0x44, 0x69, 0x6d, 0x2e, 0x78, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, + 0x6e, 0x67, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x3d, 0x20, 0x28, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2f, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x29, 0x20, 0x2a, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x6c, 0x6f, 0x6e, + 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x3e, 0x28, 0x4e, 0x29, 0x20, 0x2a, + 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x25, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, + 0x65, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x29, 0x20, + 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, + 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x20, 0x6a, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x61, 0x64, 0x69, 0x78, 0x20, 0x2f, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x6a, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, + 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x6a, 0x20, + 0x2a, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x20, 0x2a, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x73, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, + 0x72, 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x75, 0x66, + 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x20, + 0x3d, 0x20, 0x69, 0x6e, 0x5b, 0x62, 0x61, 0x73, 0x65, 0x20, 0x2b, 0x20, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, + 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, + 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x6a, 0x20, 0x3c, 0x20, + 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x3b, 0x20, 0x2b, + 0x2b, 0x6a, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, 0x2a, 0x20, 0x6b, 0x4e, + 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, 0x20, + 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x5b, 0x62, 0x61, 0x73, 0x65, + 0x20, 0x2b, 0x20, 0x28, 0x6a, 0x20, 0x2a, 0x20, 0x6b, 0x4e, 0x75, 0x6d, + 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, 0x20, 0x69, 0x29, + 0x20, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x73, 0x79, 0x6e, 0x63, + 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x28, 0x29, 0x3b, 0x0a, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x5b, + 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x68, 0x20, 0x3d, 0x20, + 0x31, 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, + 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x20, 0x73, 0x20, 0x3c, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x53, + 0x74, 0x65, 0x70, 0x73, 0x3b, 0x20, 0x2b, 0x2b, 0x73, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, + 0x20, 0x3d, 0x20, 0x69, 0x20, 0x26, 0x20, 0x28, 0x68, 0x20, 0x2d, 0x20, + 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, + 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x69, 0x20, 0x2d, 0x20, + 0x6b, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x29, + 0x20, 0x2b, 0x20, 0x6b, 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, + 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, + 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, + 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x3b, 0x20, 0x2b, + 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x78, 0x5b, 0x72, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x3e, 0x28, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, 0x2b, 0x20, + 0x68, 0x20, 0x2a, 0x20, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x61, 0x64, + 0x69, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x32, 0x3c, 0x6d, 0x61, 0x78, 0x5f, + 0x72, 0x61, 0x64, 0x69, 0x78, 0x3e, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x0a, + 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, + 0x20, 0x72, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, + 0x69, 0x78, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x75, 0x66, 0x5b, 0x6a, + 0x20, 0x2b, 0x20, 0x68, 0x20, 0x2a, 0x20, 0x72, 0x5d, 0x20, 0x3d, 0x20, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, + 0x54, 0x3e, 0x28, 0x78, 0x5b, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x68, 0x20, 0x3c, 0x3c, 0x3d, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x73, 0x79, + 0x6e, 0x63, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x28, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, + 0x20, 0x28, 0x6b, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, + 0x78, 0x20, 0x3e, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, + 0x6e, 0x74, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x74, 0x20, + 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x20, + 0x2f, 0x20, 0x6b, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, + 0x78, 0x3b, 0x20, 0x2b, 0x2b, 0x74, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x20, 0x2b, 0x20, 0x74, 0x20, + 0x2a, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x6e, 0x74, 0x20, 0x6b, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x20, 0x26, 0x20, 0x28, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x6a, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, + 0x2d, 0x20, 0x6b, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x6b, 0x4c, 0x6f, 0x67, + 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x29, 0x20, 0x2b, 0x20, 0x6b, 0x3b, 0x0a, + 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, 0x6b, 0x46, 0x69, 0x6e, 0x61, + 0x6c, 0x52, 0x61, 0x64, 0x69, 0x78, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x78, 0x5b, 0x72, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x3e, 0x28, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, 0x2b, 0x20, 0x68, + 0x20, 0x2a, 0x20, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, 0x5f, + 0x72, 0x61, 0x64, 0x69, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x32, 0x3c, 0x6b, + 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, 0x78, 0x3e, 0x28, + 0x78, 0x29, 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, + 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, + 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, + 0x6b, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, 0x78, 0x3b, + 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, + 0x2b, 0x20, 0x68, 0x20, 0x2a, 0x20, 0x72, 0x5d, 0x20, 0x3d, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x54, + 0x3e, 0x28, 0x78, 0x5b, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x73, + 0x79, 0x6e, 0x63, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x28, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x3d, + 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, + 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, + 0x6a, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x6a, 0x20, 0x3c, 0x20, 0x6d, + 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x20, 0x2f, 0x20, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, + 0x2b, 0x6a, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, + 0x3d, 0x20, 0x6a, 0x20, 0x2a, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x20, 0x2a, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x54, + 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, + 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, + 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, + 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, + 0x20, 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x20, 0x3d, + 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, + 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x62, 0x75, 0x66, 0x5b, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, + 0x75, 0x74, 0x5b, 0x62, 0x61, 0x73, 0x65, 0x20, 0x2b, 0x20, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x20, 0x3d, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x54, + 0x3e, 0x28, 0x76, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x73, 0x63, 0x61, 0x6c, + 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x23, + 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, + 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x28, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, + 0x6a, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, + 0x78, 0x3b, 0x20, 0x2b, 0x2b, 0x6a, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5b, 0x62, 0x61, + 0x73, 0x65, 0x20, 0x2b, 0x20, 0x28, 0x6a, 0x20, 0x2a, 0x20, 0x6b, 0x4e, + 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, 0x20, + 0x69, 0x29, 0x20, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, + 0x20, 0x3d, 0x20, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, 0x2a, 0x20, 0x6b, + 0x4e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, + 0x20, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x5f, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x73, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x69, 0x6e, + 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4d, 0x2c, 0x20, + 0x69, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x3e, 0x0a, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x0a, 0x68, 0x61, 0x64, 0x61, + 0x6d, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x20, 0x54, 0x2a, 0x20, 0x69, 0x6e, 0x2c, 0x20, 0x54, 0x2a, 0x20, 0x6f, + 0x75, 0x74, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x63, + 0x61, 0x6c, 0x65, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, + 0x6e, 0x67, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x54, 0x61, 0x73, + 0x6b, 0x73, 0x50, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x20, 0x3d, + 0x20, 0x4e, 0x20, 0x2f, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x74, + 0x61, 0x73, 0x6b, 0x20, 0x3d, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, + 0x64, 0x78, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x44, 0x69, 0x6d, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x74, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x49, 0x64, 0x78, 0x2e, 0x78, 0x3b, 0x20, 0x74, 0x61, 0x73, + 0x6b, 0x20, 0x3c, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x61, 0x73, 0x6b, + 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x61, + 0x73, 0x6b, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, + 0x69, 0x6d, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x67, 0x72, 0x69, 0x64, 0x44, + 0x69, 0x6d, 0x2e, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x69, 0x20, + 0x3d, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x25, 0x20, 0x6b, 0x54, 0x61, + 0x73, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, + 0x6e, 0x67, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x3d, 0x20, 0x74, + 0x61, 0x73, 0x6b, 0x20, 0x2f, 0x20, 0x6b, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x50, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, + 0x62, 0x61, 0x73, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, + 0x20, 0x2a, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, + 0x73, 0x74, 0x3c, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, + 0x3e, 0x28, 0x4d, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x3b, 0x0a, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x5b, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5d, 0x5b, 0x4d, + 0x5d, 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, + 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x20, 0x3d, 0x20, 0x30, + 0x3b, 0x20, 0x63, 0x20, 0x3c, 0x20, 0x4d, 0x3b, 0x20, 0x2b, 0x2b, 0x63, + 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, + 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, + 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x78, 0x5b, 0x72, 0x5d, 0x5b, 0x63, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x69, 0x6e, 0x5b, 0x62, 0x61, 0x73, 0x65, + 0x20, 0x2b, 0x20, 0x63, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, + 0x20, 0x2a, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, + 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, + 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, + 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, + 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x5f, 0x6d, 0x28, 0x78, 0x5b, 0x72, + 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x23, + 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, + 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, + 0x6e, 0x74, 0x20, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x63, 0x20, + 0x3c, 0x20, 0x4d, 0x3b, 0x20, 0x2b, 0x2b, 0x63, 0x29, 0x20, 0x7b, 0x0a, + 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, + 0x20, 0x72, 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5b, + 0x62, 0x61, 0x73, 0x65, 0x20, 0x2b, 0x20, 0x63, 0x20, 0x2a, 0x20, 0x4e, + 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x20, 0x3d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, + 0x3c, 0x54, 0x3e, 0x28, 0x78, 0x5b, 0x72, 0x5d, 0x5b, 0x63, 0x5d, 0x20, + 0x2a, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, + 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, + 0x00 +}; + +constexpr char jit_source_indexing[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x73, 0x74, 0x64, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x3e, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x73, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, + 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x2f, + 0x2f, 0x20, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x6e, + 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x20, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x33, 0x64, + 0x20, 0x67, 0x72, 0x69, 0x64, 0x2c, 0x20, 0x61, 0x73, 0x73, 0x75, 0x6d, + 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x20, 0x69, 0x73, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x61, 0x6c, 0x63, + 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x3a, + 0x0a, 0x2f, 0x2f, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, + 0x78, 0x20, 0x2a, 0x20, 0x64, 0x69, 0x6d, 0x31, 0x20, 0x2a, 0x20, 0x64, + 0x69, 0x6d, 0x32, 0x20, 0x2b, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x64, 0x69, + 0x6d, 0x32, 0x20, 0x2b, 0x20, 0x7a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, + 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x75, 0x70, 0x6c, 0x65, + 0x3c, 0x54, 0x2c, 0x20, 0x54, 0x2c, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x6d, 0x73, 0x28, + 0x54, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x64, + 0x69, 0x6d, 0x31, 0x2c, 0x20, 0x54, 0x20, 0x64, 0x69, 0x6d, 0x32, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x28, 0x64, 0x69, 0x6d, 0x31, + 0x20, 0x2a, 0x20, 0x64, 0x69, 0x6d, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x54, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x20, 0x25, 0x20, 0x28, 0x64, 0x69, 0x6d, 0x31, 0x20, 0x2a, 0x20, 0x64, + 0x69, 0x6d, 0x32, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x64, 0x69, 0x6d, 0x32, + 0x3b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x7a, 0x20, 0x3d, 0x20, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x64, 0x69, 0x6d, 0x32, 0x3b, 0x0a, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6d, 0x61, 0x6b, 0x65, + 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x2c, + 0x20, 0x7a, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x47, + 0x65, 0x74, 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x20, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x70, + 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x6e, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x0a, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x3e, + 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, + 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x61, 0x62, 0x73, + 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, + 0x49, 0x64, 0x78, 0x54, 0x20, 0x69, 0x64, 0x78, 0x2c, 0x20, 0x69, 0x6e, + 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x75, 0x6e, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x3e, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x69, 0x64, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, + 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, + 0x74, 0x3e, 0x28, 0x69, 0x64, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x20, 0x3f, + 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, + 0x3a, 0x20, 0x69, 0x64, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, + 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 +}; + +constexpr char jit_source_scatter[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x73, 0x63, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, + 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, + 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, + 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, + 0x69, 0x6c, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x6f, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, + 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x67, 0x20, 0x3d, + 0x20, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3b, 0x0a, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, 0x70, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x49, 0x44, + 0x58, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x49, + 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4c, 0x6f, + 0x63, 0x54, 0x3e, 0x0a, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x73, 0x63, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, 0x75, 0x70, 0x64, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x73, 0x69, 0x7a, 0x65, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, + 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x53, 0x68, 0x61, 0x70, 0x65, 0x20, + 0x75, 0x70, 0x64, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, + 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x5f, 0x5f, 0x20, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x75, + 0x70, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, + 0x75, 0x70, 0x64, 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x70, + 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, + 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x53, 0x68, 0x61, 0x70, 0x65, 0x20, + 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, + 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x5f, 0x5f, 0x20, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x6f, + 0x75, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, + 0x6f, 0x75, 0x74, 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, + 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, + 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, + 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x3e, 0x20, 0x61, 0x78, + 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, + 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2a, 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, + 0x3e, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, + 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x33, + 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x20, 0x2a, 0x20, + 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, + 0x73, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, + 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, + 0x74, 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x20, 0x2a, 0x20, 0x49, 0x44, + 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x69, 0x64, + 0x78, 0x20, 0x3d, 0x20, 0x63, 0x67, 0x3a, 0x3a, 0x74, 0x68, 0x69, 0x73, + 0x5f, 0x67, 0x72, 0x69, 0x64, 0x28, 0x29, 0x2e, 0x74, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x28, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x28, 0x75, 0x70, 0x64, 0x5f, 0x69, 0x64, 0x78, + 0x20, 0x3e, 0x3d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, + 0x6f, 0x75, 0x74, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x75, + 0x70, 0x64, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x25, 0x20, 0x75, 0x70, 0x64, + 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, + 0x64, 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x75, 0x70, + 0x64, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2f, 0x20, 0x75, 0x70, 0x64, 0x5f, + 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x6f, + 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, + 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x28, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x65, 0x6c, 0x65, 0x6d, + 0x2c, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x20, 0x2b, 0x20, 0x49, 0x44, 0x58, + 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, + 0x29, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x29, + 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, + 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, + 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x3b, 0x20, 0x2b, 0x2b, + 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, + 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, + 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, + 0x6e, 0x64, 0x3c, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, + 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, + 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, + 0x44, 0x49, 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x20, + 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, + 0x49, 0x4d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, + 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x78, 0x69, 0x73, 0x20, 0x3d, 0x20, + 0x61, 0x78, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x76, 0x61, + 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, 0x69, 0x6e, 0x64, 0x69, 0x63, + 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x5b, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, + 0x63, 0x5d, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x5b, 0x61, 0x78, 0x69, 0x73, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, + 0x20, 0x69, 0x64, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x6f, + 0x75, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x61, + 0x78, 0x69, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, + 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x6c, 0x6f, + 0x63, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, + 0x6c, 0x6f, 0x63, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, + 0x75, 0x74, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2b, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2a, 0x20, 0x75, 0x70, 0x64, + 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, + 0x64, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x28, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, + 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x28, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x75, 0x70, 0x64, 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x29, 0x3b, 0x0a, 0x0a, + 0x20, 0x20, 0x4f, 0x70, 0x7b, 0x7d, 0x28, 0x6f, 0x75, 0x74, 0x20, 0x2b, + 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x2c, 0x20, 0x75, 0x70, + 0x64, 0x5b, 0x75, 0x70, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, 0x29, 0x3b, + 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, + 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 +}; + +constexpr char jit_source_scatter_axis[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x73, 0x63, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, + 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, + 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, + 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, + 0x69, 0x6c, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x6f, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, + 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x67, 0x20, 0x3d, + 0x20, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3b, 0x0a, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, 0x70, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x44, 0x49, + 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, + 0x55, 0x70, 0x64, 0x43, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, + 0x6f, 0x6c, 0x20, 0x49, 0x64, 0x78, 0x43, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4c, 0x6f, + 0x63, 0x54, 0x3e, 0x0a, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x73, 0x63, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x28, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, 0x75, + 0x70, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2a, 0x20, 0x69, 0x6e, 0x64, 0x69, + 0x63, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, 0x2a, 0x20, + 0x6f, 0x75, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, + 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, + 0x72, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, + 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, + 0x69, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, + 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x6f, + 0x73, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, + 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, + 0x49, 0x4d, 0x3e, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, + 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x36, + 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x20, 0x75, + 0x70, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, + 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x20, + 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, + 0x20, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x78, 0x69, 0x73, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, + 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x73, 0x74, + 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x69, + 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, + 0x69, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, + 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x63, 0x67, 0x3a, + 0x3a, 0x74, 0x68, 0x69, 0x73, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x28, 0x29, + 0x2e, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x6b, + 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x20, 0x2a, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, + 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, + 0x6f, 0x73, 0x74, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, + 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x5b, 0x78, 0x2c, 0x20, 0x79, + 0x2c, 0x20, 0x7a, 0x5d, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x6d, 0x73, 0x28, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x5f, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x29, 0x3b, 0x0a, 0x0a, 0x20, + 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x69, + 0x64, 0x78, 0x20, 0x3d, 0x20, 0x7a, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x3b, 0x0a, + 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, + 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, 0x69, + 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x49, 0x64, 0x78, 0x43, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x6c, + 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x69, + 0x64, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, 0x2b, 0x20, 0x78, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, + 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, + 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, + 0x3c, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x28, 0x65, 0x6c, 0x65, 0x6d, 0x5f, + 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x2c, 0x20, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x2c, 0x20, 0x69, + 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x69, 0x64, 0x78, 0x5f, + 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, + 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, 0x69, 0x6e, 0x64, + 0x69, 0x63, 0x65, 0x73, 0x5b, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, + 0x5d, 0x2c, 0x20, 0x61, 0x78, 0x69, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x75, + 0x70, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2a, + 0x20, 0x75, 0x70, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, + 0x61, 0x78, 0x69, 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x55, 0x70, + 0x64, 0x43, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, + 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x65, 0x6c, 0x65, + 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, 0x2b, 0x20, + 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x6c, 0x6f, + 0x63, 0x20, 0x2b, 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, + 0x5f, 0x6e, 0x64, 0x3c, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x28, 0x65, 0x6c, + 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x2c, 0x20, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, + 0x2c, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x6f, + 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x64, 0x78, + 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x20, 0x2b, 0x20, 0x65, + 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x61, 0x78, + 0x69, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x2b, 0x20, 0x78, 0x3b, + 0x0a, 0x0a, 0x20, 0x20, 0x4f, 0x70, 0x7b, 0x7d, 0x28, 0x6f, 0x75, 0x74, + 0x20, 0x2b, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x2c, 0x20, + 0x75, 0x70, 0x64, 0x5b, 0x75, 0x70, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, + 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, + 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 +}; + +constexpr char jit_source_scatter_ops[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, + 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x61, 0x74, 0x6f, + 0x6d, 0x69, 0x63, 0x5f, 0x6f, 0x70, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, + 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, + 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, + 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, + 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, + 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x2a, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x76, 0x61, 0x6c, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x53, 0x75, + 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, + 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x6f, + 0x75, 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, 0x6f, + 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, + 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x6f, + 0x75, 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, 0x6f, 0x75, + 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x74, + 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x6f, 0x75, 0x74, + 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x53, + 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, + 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, + 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x74, 0x6f, 0x6d, + 0x69, 0x63, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x6f, 0x75, 0x74, 0x2c, 0x20, + 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, + 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 +}; + +constexpr char jit_source_ternary_ops[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x23, 0x70, 0x72, 0x61, + 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, + 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x62, 0x6f, 0x6f, 0x6c, 0x20, + 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x54, + 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3f, 0x20, 0x78, 0x20, + 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, + 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, + 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 +}; + +constexpr char jit_source_unary_ops[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, + 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x66, 0x70, 0x31, + 0x36, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, + 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, + 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, + 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, + 0x69, 0x6c, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, + 0x5f, 0x66, 0x70, 0x38, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x68, 0x3e, 0x0a, + 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, + 0x64, 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x63, 0x6d, 0x61, 0x74, 0x68, + 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, + 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x41, 0x62, 0x73, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, + 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, 0x54, + 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x62, + 0x73, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x41, 0x72, 0x63, 0x43, 0x6f, 0x73, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, + 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, + 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x63, 0x6f, 0x73, 0x28, + 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x41, 0x72, 0x63, 0x43, 0x6f, + 0x73, 0x68, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x61, 0x63, 0x6f, 0x73, 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x41, 0x72, 0x63, 0x53, 0x69, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x73, 0x69, 0x6e, 0x28, 0x78, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x20, 0x41, 0x72, 0x63, 0x53, 0x69, 0x6e, 0x68, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x73, + 0x69, 0x6e, 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x41, + 0x72, 0x63, 0x54, 0x61, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, + 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x61, 0x74, 0x61, 0x6e, 0x28, 0x78, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x41, 0x72, 0x63, 0x54, 0x61, 0x6e, 0x68, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x74, 0x61, 0x6e, + 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x42, 0x69, 0x74, + 0x77, 0x69, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7e, 0x78, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x43, 0x65, 0x69, 0x6c, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, + 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, + 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, + 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, + 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, + 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x54, 0x7b, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, + 0x65, 0x69, 0x6c, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, + 0x29, 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x63, 0x65, 0x69, 0x6c, 0x28, 0x78, 0x2e, 0x69, 0x6d, 0x61, + 0x67, 0x28, 0x29, 0x29, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x65, 0x69, 0x6c, + 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x43, 0x6f, 0x6e, 0x6a, 0x75, 0x67, 0x61, 0x74, 0x65, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, + 0x3c, 0x54, 0x3e, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, + 0x3c, 0x54, 0x3e, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x6e, 0x6a, 0x28, + 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x6f, 0x73, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x73, 0x28, + 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x6f, 0x73, 0x68, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x73, + 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x72, 0x66, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, + 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, + 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x72, 0x66, 0x28, 0x5f, 0x5f, + 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, + 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, + 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, + 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x65, 0x72, 0x66, 0x28, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x65, 0x72, 0x66, 0x28, 0x78, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x72, 0x66, + 0x49, 0x6e, 0x76, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, + 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, + 0x61, 0x6c, 0x66, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x72, 0x66, + 0x69, 0x6e, 0x76, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, + 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, + 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x72, 0x66, 0x69, 0x6e, 0x76, + 0x28, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x65, 0x72, 0x66, 0x69, 0x6e, 0x76, 0x28, 0x78, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x78, 0x70, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x78, + 0x70, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x78, 0x70, + 0x6d, 0x31, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x65, 0x78, 0x70, 0x6d, 0x31, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, + 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, + 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, + 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, + 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, + 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x54, 0x7b, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x66, 0x6c, 0x6f, + 0x6f, 0x72, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, + 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x28, 0x78, 0x2e, 0x69, 0x6d, 0x61, + 0x67, 0x28, 0x29, 0x29, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x66, 0x6c, 0x6f, 0x6f, + 0x72, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x49, 0x6d, 0x61, 0x67, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x61, + 0x75, 0x74, 0x6f, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, + 0x3c, 0x54, 0x3e, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x2e, 0x69, 0x6d, + 0x61, 0x67, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6c, 0x6f, + 0x67, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, + 0x32, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, + 0x20, 0x79, 0x20, 0x3d, 0x20, 0x4c, 0x6f, 0x67, 0x7b, 0x7d, 0x28, 0x78, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, + 0x29, 0x20, 0x2f, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, 0x4c, + 0x4e, 0x32, 0x5f, 0x46, 0x2c, 0x20, 0x79, 0x2e, 0x69, 0x6d, 0x61, 0x67, + 0x28, 0x29, 0x20, 0x2f, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, + 0x4c, 0x4e, 0x32, 0x5f, 0x46, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6c, 0x6f, 0x67, + 0x32, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x31, 0x30, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, + 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6c, 0x6f, 0x67, 0x31, 0x30, 0x28, + 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x31, 0x70, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x7a, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x20, 0x78, 0x20, 0x3d, 0x20, 0x7a, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x7a, 0x2e, 0x69, 0x6d, 0x61, + 0x67, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x61, 0x62, 0x73, 0x20, 0x3d, 0x20, + 0x41, 0x62, 0x73, 0x7b, 0x7d, 0x28, 0x7a, 0x29, 0x2e, 0x72, 0x65, 0x61, + 0x6c, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x74, 0x61, 0x20, 0x3d, + 0x20, 0x61, 0x74, 0x61, 0x6e, 0x32, 0x66, 0x28, 0x79, 0x2c, 0x20, 0x78, + 0x20, 0x2b, 0x20, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x28, 0x7a, 0x61, 0x62, 0x73, 0x20, 0x3c, 0x20, + 0x30, 0x2e, 0x35, 0x66, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x20, + 0x3d, 0x20, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x32, 0x20, 0x2b, 0x20, 0x78, + 0x29, 0x20, 0x2b, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x79, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, + 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x20, 0x2f, 0x2f, 0x20, + 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, + 0x66, 0x6c, 0x6f, 0x77, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x78, + 0x2c, 0x20, 0x74, 0x68, 0x65, 0x74, 0x61, 0x7d, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, + 0x30, 0x2e, 0x35, 0x66, 0x20, 0x2a, 0x20, 0x6c, 0x6f, 0x67, 0x31, 0x70, + 0x66, 0x28, 0x72, 0x29, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x74, 0x61, 0x7d, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, + 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x30, 0x20, 0x3d, 0x20, + 0x68, 0x79, 0x70, 0x6f, 0x74, 0x66, 0x28, 0x78, 0x20, 0x2b, 0x20, 0x31, + 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x6c, 0x6f, + 0x67, 0x66, 0x28, 0x7a, 0x30, 0x29, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x74, + 0x61, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x6c, 0x6f, 0x67, 0x31, 0x70, 0x28, 0x7a, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x69, + 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, + 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, + 0x29, 0x28, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x21, + 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x54, 0x7b, 0x30, 0x2c, 0x20, 0x30, 0x7d, 0x20, + 0x2d, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x2d, 0x78, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x52, 0x65, 0x61, 0x6c, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, + 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x72, 0x69, 0x6e, + 0x74, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x2c, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x72, 0x69, 0x6e, 0x74, 0x28, 0x78, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, + 0x29, 0x29, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x72, 0x69, 0x6e, 0x74, 0x28, 0x78, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, + 0x53, 0x69, 0x67, 0x6d, 0x6f, 0x69, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, + 0x20, 0x79, 0x20, 0x3d, 0x20, 0x31, 0x20, 0x2f, 0x20, 0x28, 0x31, 0x20, + 0x2b, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x65, 0x78, 0x70, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x62, 0x73, 0x28, 0x78, 0x29, 0x29, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x28, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x20, 0x3f, 0x20, 0x79, + 0x20, 0x3a, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, + 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x5f, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, + 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x21, 0x3d, 0x20, + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, + 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x78, 0x2e, 0x72, + 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x26, + 0x26, 0x20, 0x78, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x20, 0x3d, + 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2f, 0x20, 0x41, + 0x62, 0x73, 0x28, 0x29, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, + 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x3e, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, + 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x28, 0x78, 0x20, 0x3e, + 0x20, 0x54, 0x28, 0x30, 0x2e, 0x66, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x28, + 0x78, 0x20, 0x3c, 0x20, 0x54, 0x28, 0x30, 0x2e, 0x66, 0x29, 0x29, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x28, 0x78, 0x20, 0x3e, 0x20, 0x54, 0x28, 0x30, + 0x29, 0x29, 0x20, 0x2d, 0x20, 0x28, 0x78, 0x20, 0x3c, 0x20, 0x54, 0x28, + 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x53, 0x69, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, + 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x73, 0x69, 0x6e, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x53, 0x69, 0x6e, 0x68, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, + 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x73, 0x69, 0x6e, 0x68, 0x28, 0x78, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x53, 0x71, 0x75, 0x61, 0x72, 0x65, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2a, + 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x53, 0x71, 0x72, 0x74, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x73, 0x71, 0x72, + 0x74, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x52, 0x73, 0x71, + 0x72, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x20, 0x2f, 0x20, 0x53, + 0x71, 0x72, 0x74, 0x7b, 0x7d, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, + 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, + 0x73, 0x71, 0x72, 0x74, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, + 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, + 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x73, 0x71, 0x72, 0x74, + 0x28, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x72, 0x73, 0x71, 0x72, 0x74, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x54, 0x61, 0x6e, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x61, 0x6e, + 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x54, 0x61, 0x6e, 0x68, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x61, + 0x6e, 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x54, 0x6f, + 0x46, 0x50, 0x38, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x38, + 0x5f, 0x74, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, + 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x5f, 0x6e, 0x76, + 0x5f, 0x66, 0x70, 0x38, 0x5f, 0x65, 0x34, 0x6d, 0x33, 0x28, 0x78, 0x29, + 0x2e, 0x5f, 0x5f, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x46, 0x72, 0x6f, + 0x6d, 0x46, 0x50, 0x38, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, + 0x28, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x2a, 0x28, 0x5f, 0x5f, 0x6e, + 0x76, 0x5f, 0x66, 0x70, 0x38, 0x5f, 0x65, 0x34, 0x6d, 0x33, 0x2a, 0x29, + 0x28, 0x26, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, + 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 +}; + +constexpr char jit_source_utils[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, + 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6d, 0x75, + 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x2d, + 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x2c, 0x20, 0x75, + 0x74, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, + 0x20, 0x62, 0x6f, 0x74, 0x68, 0x0a, 0x2f, 0x2f, 0x20, 0x68, 0x6f, 0x73, + 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x70, 0x75, 0x74, 0x20, + 0x68, 0x65, 0x72, 0x65, 0x2e, 0x0a, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, + 0x53, 0x65, 0x65, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x61, 0x62, 0x6f, + 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x74, 0x3a, 0x0a, + 0x2f, 0x2f, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x64, + 0x6f, 0x63, 0x73, 0x2e, 0x6e, 0x76, 0x69, 0x64, 0x69, 0x61, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, 0x6e, 0x76, 0x72, 0x74, + 0x63, 0x2f, 0x23, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x0a, + 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, + 0x65, 0x0a, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, + 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, + 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x63, 0x75, 0x68, + 0x22, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, + 0x6d, 0x6c, 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, + 0x63, 0x75, 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x68, 0x22, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, + 0x61, 0x5f, 0x62, 0x66, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, + 0x5f, 0x66, 0x70, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x73, 0x74, 0x64, 0x2f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3e, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, + 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, + 0x63, 0x75, 0x64, 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x74, 0x75, 0x70, + 0x6c, 0x65, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, + 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x43, 0x55, 0x44, 0x41, 0x20, + 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x75, 0x74, 0x69, 0x6c, 0x73, + 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x0a, 0x2f, 0x2f, + 0x20, 0x54, 0x6f, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x2f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x74, + 0x6f, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x76, 0x69, + 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x6d, + 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, + 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, + 0x65, 0x0a, 0x2f, 0x2f, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x61, + 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x68, + 0x61, 0x70, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, + 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4d, 0x41, 0x58, 0x5f, + 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x3b, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, + 0x20, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, + 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2c, + 0x20, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x3b, 0x0a, + 0x0a, 0x2f, 0x2f, 0x20, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x7a, + 0x65, 0x64, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x2f, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, + 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x61, 0x73, 0x28, 0x73, + 0x69, 0x7a, 0x65, 0x6f, 0x66, 0x28, 0x54, 0x29, 0x20, 0x2a, 0x20, 0x4e, + 0x29, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x76, 0x61, + 0x6c, 0x5b, 0x4e, 0x5d, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x26, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5b, 0x5d, 0x28, 0x69, 0x6e, + 0x74, 0x20, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x61, 0x6c, 0x5b, 0x69, 0x5d, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5b, 0x5d, 0x28, 0x69, 0x6e, 0x74, + 0x20, 0x69, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, + 0x61, 0x6c, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, + 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x28, 0x54, 0x2a, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x72, 0x65, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, + 0x74, 0x3c, 0x75, 0x69, 0x6e, 0x74, 0x70, 0x74, 0x72, 0x5f, 0x74, 0x3e, + 0x28, 0x78, 0x29, 0x20, 0x25, 0x20, 0x28, 0x4e, 0x20, 0x2a, 0x20, 0x73, + 0x69, 0x7a, 0x65, 0x6f, 0x66, 0x28, 0x54, 0x29, 0x29, 0x29, 0x20, 0x3d, + 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, + 0x4e, 0x3e, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x6c, 0x6f, + 0x61, 0x64, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, + 0x70, 0x74, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, + 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, + 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x5b, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5d, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, + 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x41, + 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, 0x70, 0x74, 0x72, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, + 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x61, 0x6c, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, 0x74, 0x72, + 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, + 0x6f, 0x2a, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x3d, 0x20, 0x72, 0x65, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, + 0x73, 0x74, 0x3c, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x41, 0x6c, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, + 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5d, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, + 0x20, 0x76, 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, + 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x3b, 0x20, 0x2b, 0x2b, + 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, + 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x74, 0x72, 0x5b, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x69, 0x7a, 0x65, + 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x41, 0x6c, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, + 0x2c, 0x20, 0x4e, 0x3e, 0x0a, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, + 0x2a, 0x20, 0x70, 0x74, 0x72, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, + 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, + 0x53, 0x69, 0x7a, 0x65, 0x54, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x20, + 0x54, 0x20, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x61, + 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, 0x74, + 0x72, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x3c, + 0x3d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, 0x66, 0x72, 0x6f, 0x6d, + 0x20, 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, + 0x70, 0x74, 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x5b, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x41, 0x6c, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, + 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x20, 0x76, 0x3b, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, + 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, + 0x4e, 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x28, + 0x4e, 0x20, 0x2a, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, + 0x20, 0x69, 0x29, 0x20, 0x3c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x3f, + 0x20, 0x70, 0x74, 0x72, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, + 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x5d, 0x20, 0x3a, 0x20, 0x66, + 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x76, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, + 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x53, 0x69, 0x7a, 0x65, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x20, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, + 0x20, 0x70, 0x74, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, + 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x69, 0x7a, 0x65, 0x54, + 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, + 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x66, 0x61, 0x6c, + 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x20, 0x26, 0x26, + 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x31, + 0x20, 0x26, 0x26, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, + 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x3c, 0x3d, 0x20, + 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x3d, + 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, + 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, + 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, + 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x5b, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x41, 0x6c, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, + 0x20, 0x4e, 0x3e, 0x20, 0x76, 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, + 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, + 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x3b, + 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x76, 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x4e, 0x20, 0x2a, 0x20, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, 0x20, 0x69, 0x29, 0x20, + 0x3c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x3f, 0x20, 0x70, 0x74, 0x72, + 0x5b, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x28, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, + 0x69, 0x29, 0x5d, 0x20, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, + 0x63, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, + 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x0a, 0x75, + 0x6e, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x54, 0x2a, 0x20, 0x70, 0x74, + 0x72, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x26, 0x20, 0x76, + 0x65, 0x63, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, + 0x2a, 0x20, 0x74, 0x6f, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, + 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, + 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6f, 0x5b, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x3b, 0x0a, + 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x54, 0x2a, 0x20, 0x70, + 0x74, 0x72, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, + 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x26, 0x20, + 0x76, 0x65, 0x63, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x28, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x3c, + 0x4e, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, 0x74, 0x6f, 0x20, + 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, + 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x41, 0x6c, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, + 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x74, 0x6f, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x3b, 0x0a, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, + 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, + 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, + 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x70, 0x74, 0x72, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x5d, 0x20, 0x3d, + 0x20, 0x76, 0x65, 0x63, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, + 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x53, 0x69, 0x7a, 0x65, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x54, 0x2a, 0x20, 0x70, 0x74, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x26, 0x20, + 0x76, 0x65, 0x63, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x69, 0x7a, + 0x65, 0x54, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x20, + 0x26, 0x26, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, + 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x3c, 0x3d, 0x20, 0x73, + 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, + 0x75, 0x74, 0x6f, 0x2a, 0x20, 0x74, 0x6f, 0x20, 0x3d, 0x20, 0x72, 0x65, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, + 0x73, 0x74, 0x3c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, + 0x28, 0x70, 0x74, 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, + 0x6f, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5d, 0x20, 0x3d, 0x20, + 0x76, 0x65, 0x63, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, + 0x28, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, + 0x2b, 0x20, 0x69, 0x29, 0x20, 0x3c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, + 0x26, 0x26, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x3b, 0x20, 0x2b, 0x2b, + 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, + 0x74, 0x72, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2a, 0x20, + 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, + 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x69, 0x7a, 0x65, + 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, + 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, 0x2a, 0x20, 0x70, + 0x74, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, + 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x41, + 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x26, 0x20, 0x76, 0x65, 0x63, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x69, 0x7a, 0x65, 0x54, 0x20, 0x73, + 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, + 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, + 0x74, 0x72, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x20, + 0x3c, 0x3d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x26, 0x26, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, + 0x74, 0x6f, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x41, 0x6c, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, + 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6f, 0x5b, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, + 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x29, 0x20, + 0x3c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x26, 0x26, 0x20, 0x69, 0x20, + 0x3c, 0x20, 0x4e, 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x74, 0x72, 0x5b, 0x73, 0x74, + 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x29, 0x5d, + 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x54, + 0x79, 0x70, 0x65, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x75, + 0x74, 0x69, 0x6c, 0x73, 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x76, + 0x6f, 0x69, 0x64, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x54, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, + 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, + 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, + 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, + 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x3e, 0x20, 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, + 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3e, + 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6d, 0x61, + 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, + 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x28, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, + 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6d, 0x69, 0x6e, 0x28, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x2d, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, + 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x66, 0x69, 0x6e, 0x69, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, + 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, + 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, + 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x66, 0x69, 0x6e, 0x69, 0x74, + 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, + 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, + 0x3e, 0x3a, 0x3a, 0x6c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x28, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, + 0x43, 0x55, 0x44, 0x41, 0x20, 0x31, 0x31, 0x20, 0x64, 0x6f, 0x65, 0x73, + 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x68, 0x6f, + 0x73, 0x74, 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x68, 0x61, 0x6c, + 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x0a, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, + 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, + 0x20, 0x7c, 0x7c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, + 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, + 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x3e, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, + 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, + 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, + 0x3a, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x28, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6d, 0x69, + 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x43, 0x55, + 0x44, 0x41, 0x52, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, + 0x20, 0x3c, 0x20, 0x31, 0x32, 0x30, 0x30, 0x30, 0x20, 0x26, 0x26, 0x20, + 0x5f, 0x5f, 0x43, 0x55, 0x44, 0x41, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x5f, + 0x5f, 0x20, 0x3c, 0x20, 0x38, 0x30, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x2d, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, + 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x79, 0x28, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x2d, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, + 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x79, 0x28, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, + 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, + 0x0a, 0x23, 0x69, 0x66, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, + 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x20, 0x3c, 0x20, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x20, 0x26, 0x26, 0x20, 0x5f, 0x5f, 0x43, 0x55, 0x44, + 0x41, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x5f, 0x20, 0x3c, 0x20, 0x38, + 0x30, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x73, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x3a, 0x3a, + 0x6c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x28, 0x29, 0x3b, 0x0a, 0x23, 0x65, + 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6c, 0x6f, 0x77, + 0x65, 0x73, 0x74, 0x28, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, + 0x66, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x3e, 0x0a, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, + 0x62, 0x6f, 0x6f, 0x6c, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, + 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, + 0x6f, 0x6f, 0x6c, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, + 0x72, 0x75, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x73, 0x3c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, + 0x3c, 0x54, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x6d, + 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x2c, + 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, + 0x6d, 0x61, 0x78, 0x28, 0x29, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, + 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, + 0x3c, 0x54, 0x3e, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, + 0x69, 0x6e, 0x28, 0x29, 0x2c, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, + 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x7d, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x74, 0x69, 0x6c, 0x73, 0x0a, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x3d, 0x20, 0x69, 0x6e, + 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x49, 0x64, + 0x78, 0x54, 0x0a, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, + 0x6f, 0x63, 0x28, 0x49, 0x64, 0x78, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, + 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, + 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x6e, 0x64, 0x69, 0x6d, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x49, 0x64, + 0x78, 0x54, 0x20, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, + 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, + 0x20, 0x3d, 0x20, 0x6e, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x3b, + 0x20, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x65, + 0x6c, 0x65, 0x6d, 0x20, 0x3e, 0x20, 0x30, 0x3b, 0x20, 0x2d, 0x2d, 0x69, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x20, + 0x2b, 0x3d, 0x20, 0x28, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x25, 0x20, 0x73, + 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x29, 0x20, 0x2a, 0x20, 0x49, + 0x64, 0x78, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, + 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, + 0x6d, 0x20, 0x2f, 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x63, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, + 0x2f, 0x2f, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x20, + 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x64, 0x69, + 0x6d, 0x20, 0x69, 0x73, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x61, + 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, + 0x54, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, + 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, + 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x49, 0x64, 0x78, 0x54, 0x0a, 0x65, 0x6c, 0x65, + 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, 0x28, + 0x49, 0x64, 0x78, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, + 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, + 0x54, 0x20, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x23, + 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, + 0x6c, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, + 0x20, 0x69, 0x20, 0x3d, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x20, 0x2d, 0x20, + 0x31, 0x3b, 0x20, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x2d, + 0x2d, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, + 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x25, + 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x29, 0x20, 0x2a, + 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, + 0x6c, 0x65, 0x6d, 0x20, 0x2f, 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, + 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x63, 0x3b, 0x0a, 0x7d, + 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, + 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, + 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, 0x0a, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, + 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2c, + 0x20, 0x49, 0x64, 0x78, 0x54, 0x3e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, + 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, 0x28, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, + 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, + 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x61, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, + 0x20, 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x61, 0x5f, 0x6c, + 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x49, 0x64, + 0x78, 0x54, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, + 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, + 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, + 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x4e, 0x44, 0x49, 0x4d, + 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x20, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, + 0x3b, 0x20, 0x2d, 0x2d, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, + 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x25, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, + 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, + 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, + 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, + 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x62, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2f, 0x3d, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6d, 0x61, 0x6b, 0x65, + 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x61, 0x5f, 0x6c, 0x6f, 0x63, + 0x2c, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, + 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, + 0x6e, 0x74, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x3d, + 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, 0x0a, 0x69, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, + 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x74, 0x75, 0x70, 0x6c, 0x65, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, + 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, 0x49, 0x64, 0x78, 0x54, 0x3e, 0x20, + 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, + 0x6e, 0x64, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, + 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, + 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, + 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x61, 0x5f, 0x6c, 0x6f, + 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, + 0x54, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, + 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x63, 0x5f, 0x6c, 0x6f, + 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, + 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, + 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x20, 0x69, + 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x2d, 0x2d, 0x69, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, + 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, + 0x20, 0x25, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, + 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, + 0x49, 0x64, 0x78, 0x54, 0x28, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, + 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, + 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, + 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x5f, 0x6c, 0x6f, 0x63, + 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, + 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x63, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2f, 0x3d, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6d, 0x61, 0x6b, 0x65, + 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x61, 0x5f, 0x6c, 0x6f, 0x63, + 0x2c, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x2c, 0x20, 0x63, 0x5f, 0x6c, + 0x6f, 0x63, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x3d, 0x20, 0x69, 0x6e, + 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x75, 0x70, + 0x6c, 0x65, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, 0x49, 0x64, 0x78, + 0x54, 0x3e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, + 0x6f, 0x63, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, + 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, + 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, + 0x20, 0x6e, 0x64, 0x69, 0x6d, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x49, + 0x64, 0x78, 0x54, 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x62, 0x5f, + 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, + 0x6e, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x20, 0x69, 0x20, + 0x3e, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x2d, 0x2d, 0x69, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, + 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, + 0x25, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, + 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, + 0x64, 0x78, 0x54, 0x28, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, + 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, + 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x62, + 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2f, + 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x6d, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x61, + 0x5f, 0x6c, 0x6f, 0x63, 0x2c, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x29, + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x49, 0x64, 0x78, 0x54, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, + 0x5f, 0x74, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, + 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x3c, + 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, + 0x49, 0x64, 0x78, 0x54, 0x3e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, + 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x49, + 0x64, 0x78, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, + 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, + 0x74, 0x2a, 0x20, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, + 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x62, 0x5f, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, + 0x74, 0x2a, 0x20, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x64, + 0x69, 0x6d, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, + 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, + 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, + 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, + 0x20, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, + 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, + 0x20, 0x3d, 0x20, 0x6e, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x3b, + 0x20, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x2d, 0x2d, 0x69, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x65, 0x6c, + 0x65, 0x6d, 0x20, 0x25, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, + 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, + 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x61, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, + 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, + 0x54, 0x28, 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, + 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x5f, 0x6c, + 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, + 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x63, 0x5f, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2f, 0x3d, 0x20, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6d, 0x61, + 0x6b, 0x65, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x61, 0x5f, 0x6c, + 0x6f, 0x63, 0x2c, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x2c, 0x20, 0x63, + 0x5f, 0x6c, 0x6f, 0x63, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x45, 0x6c, 0x65, + 0x6d, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x63, 0x20, 0x69, 0x6e, 0x20, + 0x61, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x20, 0x75, 0x74, 0x69, 0x6c, 0x73, + 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, + 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, + 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x7a, + 0x65, 0x5f, 0x74, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, + 0x4c, 0x6f, 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, + 0x4c, 0x6f, 0x63, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x64, 0x69, 0x6d, 0x3b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x6f, 0x70, 0x65, + 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, 0x4c, 0x6f, 0x63, 0x3c, 0x44, + 0x49, 0x4d, 0x20, 0x2d, 0x20, 0x31, 0x2c, 0x20, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x6c, 0x2c, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, + 0x3e, 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, + 0x65, 0x72, 0x3b, 0x0a, 0x20, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x54, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x7b, 0x30, 0x7d, 0x3b, + 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x7b, 0x30, 0x7d, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x4c, 0x6f, 0x6f, 0x70, 0x65, + 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, 0x4c, 0x6f, 0x63, 0x28, 0x69, + 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, 0x29, 0x20, 0x3a, 0x20, 0x64, 0x69, + 0x6d, 0x28, 0x64, 0x69, 0x6d, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x28, 0x64, 0x69, 0x6d, + 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x7d, 0x0a, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, + 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x28, 0x64, 0x69, 0x6d, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, 0x3d, 0x20, + 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x73, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x5d, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x65, + 0x72, 0x2e, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x73, 0x68, 0x61, 0x70, 0x65, + 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, + 0x70, 0x65, 0x72, 0x2e, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x69, 0x6e, + 0x74, 0x20, 0x6e, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, + 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, + 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x64, 0x69, 0x6d, + 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x6e, + 0x20, 0x2a, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x28, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, + 0x20, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, + 0x31, 0x5d, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x6e, 0x74, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x3d, 0x20, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2d, 0x20, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x20, 0x3e, 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, + 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x6e, + 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x2e, 0x6e, 0x65, + 0x78, 0x74, 0x28, 0x31, 0x20, 0x2b, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, + 0x20, 0x2f, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x64, 0x69, 0x6d, + 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x2c, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, + 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x78, 0x74, 0x72, + 0x61, 0x20, 0x3d, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x25, 0x20, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, + 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, + 0x70, 0x65, 0x72, 0x2e, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, + 0x6c, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x2e, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x28, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x3e, 0x20, 0x30, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x65, + 0x78, 0x74, 0x28, 0x65, 0x78, 0x74, 0x72, 0x61, 0x2c, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, + 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, 0x4c, 0x6f, + 0x63, 0x3c, 0x31, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x20, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, 0x3b, 0x0a, 0x20, 0x20, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x7b, 0x30, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7b, 0x30, 0x7d, 0x3b, 0x0a, 0x0a, 0x20, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x4c, 0x6f, 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, + 0x4c, 0x6f, 0x63, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, 0x29, + 0x20, 0x3a, 0x20, 0x64, 0x69, 0x6d, 0x28, 0x64, 0x69, 0x6d, 0x29, 0x20, + 0x7b, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, + 0x78, 0x74, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2b, 0x2b, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x64, 0x69, 0x6d, 0x20, + 0x3e, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x65, 0x6c, + 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x3c, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x54, 0x3e, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x2c, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x2c, 0x20, 0x64, 0x69, 0x6d, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, + 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x30, 0x5d, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x28, + 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, + 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x20, 0x2b, 0x3d, 0x20, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x28, 0x64, 0x69, 0x6d, 0x20, 0x3e, 0x20, 0x31, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, + 0x5f, 0x6c, 0x6f, 0x63, 0x3c, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, + 0x3e, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, + 0x20, 0x64, 0x69, 0x6d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2a, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x30, + 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, + 0x6d, 0x54, 0x6f, 0x4c, 0x6f, 0x63, 0x3c, 0x31, 0x2c, 0x20, 0x66, 0x61, + 0x6c, 0x73, 0x65, 0x2c, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, + 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x54, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x7b, 0x30, 0x7d, 0x3b, + 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x4c, 0x6f, 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, + 0x6d, 0x54, 0x6f, 0x4c, 0x6f, 0x63, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x20, + 0x7b, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, + 0x78, 0x74, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x2a, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x30, + 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, + 0x69, 0x64, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x69, 0x6e, 0x74, 0x20, + 0x6e, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x2a, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x6e, 0x20, 0x2a, 0x20, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, + 0x65, 0x73, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, + 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 +}; + +} // namespace mlx::core diff --git a/Source/MLX/GPU+CUDA.swift b/Source/MLX/GPU+CUDA.swift new file mode 100644 index 00000000..32500631 --- /dev/null +++ b/Source/MLX/GPU+CUDA.swift @@ -0,0 +1,23 @@ +// Copyright © 2024 Apple Inc. + +import Cmlx +import Foundation + +/// API for controlling GPU related features. +/// +/// Note: previously this also had properties that managed the buffer use -- those are now +/// found in ``Memory`` but remain here as deprecated. +/// +/// ### See Also +/// - +/// - ``Memory`` +public enum GPU { + + /// Returns GPU's recommended working set size in bytes as an `Int`. + /// + /// This value is derived from ``DeviceInfo/maxRecommendedWorkingSetSize`` and + /// is clamped to `Int.max` when necessary. Returns `nil` when unavailable. + public static func maxRecommendedWorkingSetBytes() -> Int? { + return nil + } +} diff --git a/Source/MLX/MLXFastKernel.swift b/Source/MLX/MLXFastKernel.swift index 03714913..f26d4055 100644 --- a/Source/MLX/MLXFastKernel.swift +++ b/Source/MLX/MLXFastKernel.swift @@ -16,6 +16,8 @@ extension Bool: KernelTemplateArg {} extension Int: KernelTemplateArg {} extension DType: KernelTemplateArg {} +#if os(macOS) || os(iOS) || os(tvOS) || os(visionOS) + extension MLXFast { /// Container for a kernel created by @@ -183,3 +185,49 @@ extension MLXFast { } } // MLXFast + +#else + +// Stub allowing compilation for platforms without Metal. + +extension MLXFast { + + final public class MLXFastKernel: @unchecked Sendable { + public let outputNames: [String] + + init( + name: String, inputNames: some Sequence, outputNames: some Sequence, + source: String, header: String = "", + ensureRowContiguous: Bool = true, + atomicOutputs: Bool = false + ) { + self.outputNames = [] + fatalError("MLXFastKernel is not available without Metal") + } + + public func callAsFunction( + _ inputs: [any ScalarOrArray], + template: [(String, any KernelTemplateArg)]? = nil, + grid: (Int, Int, Int), + threadGroup: (Int, Int, Int), + outputShapes: some Sequence<[Int]>, + outputDTypes: some Sequence, + initValue: Float? = nil, + verbose: Bool = false, + stream: StreamOrDevice = .default + ) -> [MLXArray] { + fatalError("MLXFastKernel is not available without Metal") + } + } + + public static func metalKernel( + name: String, inputNames: some Sequence, outputNames: some Sequence, + source: String, header: String = "", ensureRowContiguous: Bool = true, + atomicOutputs: Bool = false + ) -> MLXFastKernel { + fatalError("MLXFastKernel is not available without Metal") + } + +} // MLXFast + +#endif diff --git a/Source/encuda/encuda-compile.swift b/Source/encuda/encuda-compile.swift new file mode 100644 index 00000000..95f7d453 --- /dev/null +++ b/Source/encuda/encuda-compile.swift @@ -0,0 +1,61 @@ +import ArgumentParser +import Foundation + +extension Encuda { + struct Compile: ParsableCommand { + static let configuration = CommandConfiguration( + commandName: "compile" + ) + + @Option(name: .customLong("nvcc"), help: "Path to nvcc") + var nvccPath: String? = nil + + @Option(name: .customLong("clangpp"), help: "Path to clang++") + var clangppPath: String? = nil + + @Option(name: .customShort("I"), parsing: .unconditionalSingleValue, help: "Include directories") + var includeDirs: [String] = [] + + @Option(name: .customShort("o"), help: "Output file path") + var output: String + + @Argument(help: "Input .cu files to compile") + var inputFiles: [String] + + @Option(name: .customLong("std"), help: "C++ standard to use (e.g., c++17, c++20)") + var std: String? = nil + + @Flag(name: .customShort("v"), help: "Enable verbose output") + var verbose: Bool = false + + mutating func run() throws { + + if verbose { + print("Running encuda compile") + } + + let resolvedNvcc: String + if let path = nvccPath { + resolvedNvcc = path + } else if let found = searchForCommand("nvcc") { + resolvedNvcc = found.path + } else { + fatalError("nvcc not found") + } + + let includeArgs = includeDirs.flatMap { ["-I", $0] } + let ccbinArgs = clangppPath.map { ["-ccbin=\($0)"] } ?? [] + let stdArgs = std.map { ["-std=\($0)"] } ?? [] + let archArgs = ProcessInfo.processInfo.environment["CUDA_ARCH"].map { ["-arch", $0] } ?? [] + + let process = Process() + process.executableURL = URL(fileURLWithPath: resolvedNvcc) + process.arguments = ["-cuda", "-rdc=true", "--expt-relaxed-constexpr"] + stdArgs + ccbinArgs + archArgs + (verbose ? ["-v"] : []) + includeArgs + inputFiles + ["-o", output] + try process.run() + process.waitUntilExitWorkaround() + guard process.terminationStatus == 0 else { + throw EncudaError.nvccFailed(process.terminationStatus) + } + } + } +} diff --git a/Source/encuda/encuda-error.swift b/Source/encuda/encuda-error.swift new file mode 100644 index 00000000..d017af8b --- /dev/null +++ b/Source/encuda/encuda-error.swift @@ -0,0 +1,13 @@ +import Foundation + +enum EncudaError: Error, CustomStringConvertible { + case nvccFailed(Int32) + case clangFailed(Int32) + + var description: String { + switch self { + case .nvccFailed(let code): return "nvcc failed with exit code \(code)" + case .clangFailed(let code): return "clang++ failed with exit code \(code)" + } + } +} diff --git a/Source/encuda/encuda-link.swift b/Source/encuda/encuda-link.swift new file mode 100644 index 00000000..17a315ad --- /dev/null +++ b/Source/encuda/encuda-link.swift @@ -0,0 +1,87 @@ +import ArgumentParser +import Foundation + +extension Encuda { + struct Link: ParsableCommand { + static let configuration = CommandConfiguration( + commandName: "link" + ) + + @Option(name: .customLong("nvcc"), help: "Path to nvcc") + var nvccPath: String? = nil + + @Option(name: .customLong("clangpp"), help: "Path to clang++") + var clangppPath: String? = nil + + @Argument(help: "Input .cpp files to link") + var inputFiles: [String] + + @Option(name: .customShort("o"), help: "Output file path") + var output: String + + @Option(name: .customLong("std"), help: "C++ standard to use (e.g., c++17, c++20)") + var std: String? = nil + + @Flag(name: .customShort("v"), help: "Enable verbose output") + var verbose: Bool = false + + mutating func run() throws { + if verbose { + print("CUDA Link") + print("Input files: \(inputFiles)") + print("Output file: \(output)") + } + + let stdArgs = std.map { ["-std=\($0)"] } ?? [] + let archArgs = ProcessInfo.processInfo.environment["CUDA_ARCH"].map { ["-arch", $0] } ?? [] + + for input in inputFiles { + try clang(args: stdArgs + ["-c", input, "-o", input + ".o"]) + } + + try nvcc(args: ["--device-link"] + stdArgs + archArgs + inputFiles.map { $0 + ".o" } + ["-o", output, "-Xcompiler", "-E"]) + } + + var resolvedNvcc: String { + if let path = nvccPath { + return path + } else if let found = searchForCommand("nvcc") { + return found.path + } else { + fatalError("nvcc not found") + } + } + + var resolvedClangpp: String { + if let path = clangppPath { + return path + } else if let found = searchForCommand("clang++") { + return found.path + } else { + fatalError("clang++ not found") + } + } + + func nvcc(args: [String]) throws { + let process = Process() + process.executableURL = URL(fileURLWithPath: resolvedNvcc) + process.arguments = ["-ccbin=\(resolvedClangpp)"] + (verbose ? ["-v"] : []) + args + try process.run() + process.waitUntilExitWorkaround() + guard process.terminationStatus == 0 else { + throw EncudaError.nvccFailed(process.terminationStatus) + } + } + + func clang(args: [String]) throws { + let process = Process() + process.executableURL = URL(fileURLWithPath: resolvedClangpp) + process.arguments = (verbose ? ["-v"] : []) + args + try process.run() + process.waitUntilExitWorkaround() + guard process.terminationStatus == 0 else { + throw EncudaError.clangFailed(process.terminationStatus) + } + } + } +} diff --git a/Source/encuda/encuda-utils.swift b/Source/encuda/encuda-utils.swift new file mode 100644 index 00000000..4f08a203 --- /dev/null +++ b/Source/encuda/encuda-utils.swift @@ -0,0 +1,25 @@ +import Foundation + +func searchForCommand(_ name: String) -> URL? { + let path = ProcessInfo.processInfo.environment["PATH"] ?? "" + for folder in path.split(separator: ":") { + let url = URL(fileURLWithPath: String(folder)).appendingPathComponent(name) + if FileManager.default.isExecutableFile(atPath: url.path) { + return url + } + } + return nil +} + +extension Process { + /** + * When running on aarch64 Ubuntu 24 docker on Mac, it happens that + * the `waitUntilExit()` method never returns. + * We adopted this workaround. + */ + func waitUntilExitWorkaround() { + while isRunning { + Thread.sleep(forTimeInterval: 0.05) + } + } +} diff --git a/Source/encuda/encuda.swift b/Source/encuda/encuda.swift new file mode 100644 index 00000000..c6497d37 --- /dev/null +++ b/Source/encuda/encuda.swift @@ -0,0 +1,8 @@ +import ArgumentParser + +@main +struct Encuda: ParsableCommand { + static let configuration = CommandConfiguration( + subcommands: [Compile.self, Link.self] + ) +} From 84cf089c34959c6229f7cb97da92d637b71f9136 Mon Sep 17 00:00:00 2001 From: Gabriele Mondada Date: Thu, 30 Apr 2026 16:00:02 +0200 Subject: [PATCH 02/11] Enable CUDA by default on Linux --- Package.swift | 2 +- Plugins/CudaBuild/plugin.swift | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Package.swift b/Package.swift index a240093c..1424b56e 100644 --- a/Package.swift +++ b/Package.swift @@ -84,7 +84,7 @@ let noCudaCmlxExcludes = [ let linkerSettings: [LinkerSetting] let mlxSwiftExcludes: [String] - if Context.environment["SPM_CUDA"] == "1" { + if Context.environment["SPM_CUDA"] != "0" { // Linux with CUDA platformExcludes = [ diff --git a/Plugins/CudaBuild/plugin.swift b/Plugins/CudaBuild/plugin.swift index bc86595a..8ca40575 100644 --- a/Plugins/CudaBuild/plugin.swift +++ b/Plugins/CudaBuild/plugin.swift @@ -15,7 +15,7 @@ struct CudaBuild: BuildToolPlugin { print("CUDA Build Plugin") - guard ProcessInfo.processInfo.environment["SPM_CUDA"] == "1" else { + guard isCudaEnabled() else { print("CUDA is disabled") return [] } @@ -121,4 +121,12 @@ struct CudaBuild: BuildToolPlugin { } return settings.exclude.contains(relativePath) || settings.exclude.contains { isInFolder(path: relativePath, folderPath: $0) } } + + func isCudaEnabled() -> Bool { + #if os(Linux) + return ProcessInfo.processInfo.environment["SPM_CUDA"] != "0" + #else + return false + #endif + } } From 7aaa0c29d21410bc3fd90e9ad7cd1323805035f8 Mon Sep 17 00:00:00 2001 From: Gabriele Mondada Date: Thu, 7 May 2026 14:10:35 +0200 Subject: [PATCH 03/11] Add code generation capabilities in CudaBuild plugin --- Plugins/CudaBuild/plugin.swift | 56 ++++++++++++++++++++++++++++++--- Source/encuda/encuda-link.swift | 8 +++-- 2 files changed, 57 insertions(+), 7 deletions(-) diff --git a/Plugins/CudaBuild/plugin.swift b/Plugins/CudaBuild/plugin.swift index 8ca40575..ecbf2187 100644 --- a/Plugins/CudaBuild/plugin.swift +++ b/Plugins/CudaBuild/plugin.swift @@ -4,11 +4,29 @@ import PackagePlugin @main struct CudaBuild: BuildToolPlugin { + struct CodeGeneration: Codable { + var tool: String + var inputs: [String] = [] + var outputs: [String] = [] + } + struct Settings: Codable { var headerSearchPaths: [String] = [] var exclude: [String] = [] var cppLanguageStandard: String? = nil var verbose: Bool = false + var codeGeneration: [CodeGeneration] = [] + + init() {} + + init(from decoder: Decoder) throws { + let c = try decoder.container(keyedBy: CodingKeys.self) + headerSearchPaths = try c.decodeIfPresent([String].self, forKey: .headerSearchPaths) ?? [] + exclude = try c.decodeIfPresent([String].self, forKey: .exclude) ?? [] + cppLanguageStandard = try c.decodeIfPresent(String.self, forKey: .cppLanguageStandard) + verbose = try c.decodeIfPresent(Bool.self, forKey: .verbose) ?? false + codeGeneration = try c.decodeIfPresent([CodeGeneration].self, forKey: .codeGeneration) ?? [] + } } func createBuildCommands(context: PluginContext, target: Target) async throws -> [Command] { @@ -30,6 +48,8 @@ struct CudaBuild: BuildToolPlugin { print("Source directory: \(sourceDir.path)") + // Read settings from CudaBuild.json if it exists + let settingsFile = sourceDir.appendingPathComponent("CudaBuild.json") let settings: Settings if let data = try? Data(contentsOf: settingsFile) { @@ -39,8 +59,10 @@ struct CudaBuild: BuildToolPlugin { settings = Settings() } + // Scan source directory for .cu files + let sourceDirPath = sourceDir.path.hasSuffix("/") ? sourceDir.path : sourceDir.path + "/" - var inputFiles: [URL] = [] + var sourceCuFiles: [URL] = [] if let enumerator = FileManager.default.enumerator(at: sourceDir, includingPropertiesForKeys: nil) { while let inputUrl = enumerator.nextObject() as? URL { if inputUrl.pathExtension == "cu" { @@ -52,17 +74,41 @@ struct CudaBuild: BuildToolPlugin { print("Excluding \(relateivePath)") continue } - inputFiles.append(URL(string: relateivePath, relativeTo: sourceDir)!) + sourceCuFiles.append(URL(string: relateivePath, relativeTo: sourceDir)!) } } } - print("Input files: \(inputFiles.map { $0.relativePath })") + print("Source files: \(sourceCuFiles.map { $0.relativePath })") let outputDir = context.pluginWorkDirectoryURL var commands: [Command] = [] + // Invoke code generation tools + + var generatedCuFiles: [URL] = [] + + for (index, codeGen) in settings.codeGeneration.enumerated() { + let tool = try context.tool(named: codeGen.tool) + let codeGenOutputDir = outputDir.appendingPathComponent("gen\(index)-\(codeGen.tool)") + try FileManager.default.createDirectory(at: codeGenOutputDir, withIntermediateDirectories: true) + let inputUrls = codeGen.inputs.map { sourceDir.appendingPathComponent($0) } + let outputUrls = codeGen.outputs.map { codeGenOutputDir.appendingPathComponent($0) } + commands.append( + .buildCommand( + displayName: "Running \(codeGen.tool)", + executable: tool.url, + arguments: inputUrls.map { $0.path } + outputUrls.flatMap { ["-o", $0.path] }, + inputFiles: inputUrls, + outputFiles: outputUrls + ) + ) + generatedCuFiles += outputUrls.filter { $0.pathExtension == "cu" } + } + + print("Generated source files: \(generatedCuFiles.map { $0.relativePath })") + // Invoke `encuda compile` to compile each .cu file to .cpp let encuda = try context.tool(named: "encuda") @@ -70,7 +116,7 @@ struct CudaBuild: BuildToolPlugin { let headerSearchPathArgs = settings.headerSearchPaths.flatMap { ["-I", sourceDirPath + $0] } let stdArgs = settings.cppLanguageStandard.map { ["--std", $0] } ?? [] - for inputFile in inputFiles { + for inputFile in sourceCuFiles + generatedCuFiles { let outputCpp = URL(string: inputFile.relativePath, relativeTo: outputDir)!.deletingPathExtension().appendingPathExtension("cpp") commands.append( .buildCommand( @@ -91,7 +137,7 @@ struct CudaBuild: BuildToolPlugin { // Invoke `encuda link` with all .cpp files - let outputCpps = inputFiles.map { inputFile in + let outputCpps = (sourceCuFiles + generatedCuFiles).map { inputFile in URL(string: inputFile.relativePath, relativeTo: outputDir)! .deletingPathExtension() .appendingPathExtension("cpp") diff --git a/Source/encuda/encuda-link.swift b/Source/encuda/encuda-link.swift index 17a315ad..07b85044 100644 --- a/Source/encuda/encuda-link.swift +++ b/Source/encuda/encuda-link.swift @@ -36,10 +36,14 @@ extension Encuda { let archArgs = ProcessInfo.processInfo.environment["CUDA_ARCH"].map { ["-arch", $0] } ?? [] for input in inputFiles { - try clang(args: stdArgs + ["-c", input, "-o", input + ".o"]) + try clang(args: stdArgs + ["-c", input, "-o", input + ".cudalink.o"]) } - try nvcc(args: ["--device-link"] + stdArgs + archArgs + inputFiles.map { $0 + ".o" } + ["-o", output, "-Xcompiler", "-E"]) + try nvcc(args: ["--device-link"] + stdArgs + archArgs + inputFiles.map { $0 + ".cudalink.o" } + ["-o", output, "-Xcompiler", "-E"]) + + for input in inputFiles { + try? FileManager.default.removeItem(atPath: input + ".cudalink.o") + } } var resolvedNvcc: String { From 17a982caecfc039a483ffd9c14545893aabef1bb Mon Sep 17 00:00:00 2001 From: Gabriele Mondada Date: Mon, 25 May 2026 11:57:50 +0200 Subject: [PATCH 04/11] Use `tools/update-mlx.sh` to generate `cuda_jit_sources.h` --- Package.swift | 2 +- .../backend/cuda/cuda_jit_sources.h | 4295 ----------------- .../mlx-generated/cuda/cuda_jit_sources.h | 4295 +++++++++++++++++ tools/update-mlx.sh | 11 +- 4 files changed, 4306 insertions(+), 4297 deletions(-) delete mode 100644 Source/Cmlx/mlx-extras/backend/cuda/cuda_jit_sources.h create mode 100644 Source/Cmlx/mlx-generated/cuda/cuda_jit_sources.h diff --git a/Package.swift b/Package.swift index 1424b56e..b47eb644 100644 --- a/Package.swift +++ b/Package.swift @@ -275,7 +275,7 @@ let cmlx = Target.target( cSettings: [ .headerSearchPath("mlx"), .headerSearchPath("mlx-c"), - .headerSearchPath("mlx-extras/backend/cuda"), + .headerSearchPath("mlx-generated/cuda"), ], cxxSettings: cxxSettings + [ .headerSearchPath("mlx"), diff --git a/Source/Cmlx/mlx-extras/backend/cuda/cuda_jit_sources.h b/Source/Cmlx/mlx-extras/backend/cuda/cuda_jit_sources.h deleted file mode 100644 index 5c306edc..00000000 --- a/Source/Cmlx/mlx-extras/backend/cuda/cuda_jit_sources.h +++ /dev/null @@ -1,4295 +0,0 @@ -#pragma once - -namespace mlx::core { - -constexpr char jit_source_atomic_ops[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, - 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, - 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, - 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, - 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, - 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x66, 0x70, 0x31, 0x36, - 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, - 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, - 0x64, 0x61, 0x2f, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x3e, 0x0a, 0x0a, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, - 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, - 0x7b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, - 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, - 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, - 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x54, - 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, - 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x3c, 0x54, - 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x74, 0x68, 0x72, 0x65, - 0x61, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x3e, 0x20, 0x72, 0x65, 0x66, 0x28, 0x2a, 0x6f, 0x75, - 0x74, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x66, 0x20, 0x2b, 0x3d, - 0x20, 0x76, 0x61, 0x6c, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, - 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, - 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, - 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, - 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x61, 0x74, 0x6f, 0x6d, 0x69, - 0x63, 0x5f, 0x72, 0x65, 0x66, 0x3c, 0x54, 0x2c, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x63, - 0x6f, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x3e, 0x20, - 0x72, 0x65, 0x66, 0x28, 0x2a, 0x6f, 0x75, 0x74, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x54, 0x20, 0x6f, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x66, - 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x77, - 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x21, 0x72, 0x65, 0x66, 0x2e, 0x63, - 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x28, 0x6f, - 0x6c, 0x64, 0x2c, 0x20, 0x6f, 0x6c, 0x64, 0x20, 0x2a, 0x20, 0x76, 0x61, - 0x6c, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, - 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, - 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, - 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, - 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x54, 0x2a, 0x20, - 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x61, 0x74, - 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x3c, 0x54, 0x2c, 0x20, - 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, - 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x3e, 0x20, 0x72, 0x65, 0x66, 0x28, 0x2a, 0x6f, 0x75, 0x74, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x66, 0x2e, 0x66, 0x65, 0x74, 0x63, - 0x68, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, - 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, - 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, - 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, - 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x54, - 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, - 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x3c, 0x54, - 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x74, 0x68, 0x72, 0x65, - 0x61, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x3e, 0x20, 0x72, 0x65, 0x66, 0x28, 0x2a, 0x6f, 0x75, - 0x74, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x66, 0x2e, 0x66, 0x65, - 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x76, 0x61, 0x6c, 0x29, - 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x53, 0x6f, 0x6d, 0x65, - 0x68, 0x6f, 0x77, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x61, 0x74, - 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x20, 0x64, 0x6f, 0x65, - 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x20, 0x61, 0x64, 0x64, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, - 0x6e, 0x67, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x0a, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, - 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, - 0x63, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x6c, 0x28, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, - 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, - 0x66, 0x3c, 0x54, 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x74, - 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x3e, 0x20, 0x72, 0x65, 0x66, 0x28, - 0x2a, 0x6f, 0x75, 0x74, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x6f, - 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x66, 0x2e, 0x6c, 0x6f, 0x61, - 0x64, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, - 0x20, 0x28, 0x21, 0x72, 0x65, 0x66, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x61, - 0x72, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, - 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x28, 0x6f, 0x6c, 0x64, 0x2c, 0x20, - 0x6f, 0x6c, 0x64, 0x20, 0x2b, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, - 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, 0x6f, 0x6d, - 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, - 0x66, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, - 0x6c, 0x66, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x41, 0x64, 0x64, 0x28, 0x6f, 0x75, - 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, - 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, - 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x6f, - 0x75, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x36, - 0x34, 0x5f, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x5f, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x28, 0x6f, 0x75, 0x74, 0x2c, - 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, - 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, 0x6f, - 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x5f, 0x5f, 0x6e, 0x76, - 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x2a, 0x20, 0x6f, - 0x75, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x31, 0x36, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, - 0x0a, 0x23, 0x69, 0x66, 0x20, 0x5f, 0x5f, 0x43, 0x55, 0x44, 0x41, 0x5f, - 0x41, 0x52, 0x43, 0x48, 0x5f, 0x5f, 0x20, 0x3c, 0x20, 0x38, 0x30, 0x30, - 0x0a, 0x20, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, - 0x64, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x28, 0x6f, 0x75, - 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6c, - 0x73, 0x65, 0x0a, 0x20, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x41, - 0x64, 0x64, 0x28, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, - 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x7d, 0x0a, 0x0a, - 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, - 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 -}; - -constexpr char jit_source_binary_ops[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x6e, 0x61, 0x72, 0x79, - 0x5f, 0x6f, 0x70, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, - 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3e, - 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, - 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, - 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, - 0x41, 0x64, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, - 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x79, - 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x20, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x44, 0x69, - 0x76, 0x69, 0x64, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, - 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, - 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, - 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x6c, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, - 0x20, 0x2f, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, - 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x72, 0x75, 0x6e, 0x63, - 0x28, 0x78, 0x20, 0x2f, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, - 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2f, 0x20, 0x79, 0x3b, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x20, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, - 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, - 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x3c, 0x54, - 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, - 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, - 0x69, 0x73, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, - 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x78, - 0x20, 0x25, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, 0x20, 0x21, 0x3d, 0x20, 0x30, - 0x20, 0x26, 0x26, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x20, 0x30, 0x20, 0x21, - 0x3d, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x20, - 0x2b, 0x3d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x25, 0x20, 0x79, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x25, 0x20, 0x79, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x72, 0x20, 0x3d, 0x20, - 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x66, - 0x6d, 0x6f, 0x64, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, 0x20, 0x21, - 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x20, - 0x30, 0x20, 0x21, 0x3d, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x20, 0x3d, 0x20, 0x72, 0x20, 0x2b, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x71, 0x75, 0x61, 0x6c, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, - 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3d, 0x3d, 0x20, - 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4e, 0x61, 0x4e, 0x45, 0x71, 0x75, - 0x61, 0x6c, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, - 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3d, 0x3d, 0x20, 0x79, 0x20, 0x7c, - 0x7c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x28, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, - 0x6c, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, 0x20, 0x69, 0x73, 0x6e, 0x61, - 0x6e, 0x28, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, - 0x26, 0x26, 0x20, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x69, - 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x73, 0x6e, - 0x61, 0x6e, 0x28, 0x79, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, - 0x29, 0x20, 0x7c, 0x7c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, - 0x20, 0x3d, 0x3d, 0x20, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, - 0x20, 0x26, 0x26, 0x20, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, - 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, 0x20, 0x69, - 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x79, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, - 0x29, 0x29, 0x29, 0x20, 0x7c, 0x7c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, - 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, - 0x20, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x79, 0x2e, 0x72, 0x65, 0x61, - 0x6c, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, 0x20, 0x78, 0x2e, 0x69, 0x6d, - 0x61, 0x67, 0x28, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x79, 0x2e, 0x69, 0x6d, - 0x61, 0x67, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3d, - 0x3d, 0x20, 0x79, 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x69, 0x73, 0x6e, 0x61, - 0x6e, 0x28, 0x78, 0x29, 0x20, 0x26, 0x26, 0x20, 0x69, 0x73, 0x6e, 0x61, - 0x6e, 0x28, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x20, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, - 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, - 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3e, 0x20, 0x79, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x20, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x45, - 0x71, 0x75, 0x61, 0x6c, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, - 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, - 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, - 0x20, 0x3e, 0x3d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, - 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x65, - 0x73, 0x73, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, - 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3c, - 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x65, 0x73, 0x73, 0x45, - 0x71, 0x75, 0x61, 0x6c, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, - 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, - 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, - 0x20, 0x3c, 0x3d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, - 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, - 0x67, 0x41, 0x64, 0x64, 0x45, 0x78, 0x70, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, - 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, - 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, - 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, - 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, - 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, - 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, - 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, - 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x20, 0x7c, 0x7c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, - 0x6e, 0x28, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, - 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, - 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x79, 0x2e, 0x69, 0x6d, - 0x61, 0x67, 0x28, 0x29, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x73, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x3a, 0x3a, - 0x71, 0x75, 0x69, 0x65, 0x74, 0x5f, 0x4e, 0x61, 0x4e, 0x28, 0x29, 0x2c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, - 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x73, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x3a, 0x3a, 0x71, - 0x75, 0x69, 0x65, 0x74, 0x5f, 0x4e, 0x61, 0x4e, 0x28, 0x29, 0x7d, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x6d, 0x61, 0x78, 0x20, - 0x3d, 0x20, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3e, - 0x20, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3f, 0x20, - 0x78, 0x20, 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x3d, 0x20, - 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3c, 0x20, 0x79, - 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3f, 0x20, 0x78, 0x20, - 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, - 0x75, 0x74, 0x6f, 0x20, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x6c, - 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, - 0x6f, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x3d, - 0x20, 0x6d, 0x61, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, - 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, - 0x73, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x28, 0x6d, 0x69, 0x6e, 0x5f, - 0x72, 0x65, 0x61, 0x6c, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6d, 0x69, - 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x3d, 0x3d, 0x20, 0x6d, 0x61, - 0x78, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6d, - 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x3c, 0x20, 0x30, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x69, 0x6e, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, - 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x4c, - 0x6f, 0x67, 0x7b, 0x7d, 0x28, 0x45, 0x78, 0x70, 0x7b, 0x7d, 0x28, 0x6d, - 0x69, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x45, 0x78, 0x70, 0x7b, 0x7d, 0x28, - 0x6d, 0x61, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x4c, - 0x6f, 0x67, 0x31, 0x70, 0x7b, 0x7d, 0x28, 0x45, 0x78, 0x70, 0x7b, 0x7d, - 0x28, 0x6d, 0x69, 0x6e, 0x20, 0x2d, 0x20, 0x6d, 0x61, 0x78, 0x29, 0x29, - 0x20, 0x2b, 0x20, 0x6d, 0x61, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, - 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x66, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, - 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x29, 0x20, 0x7c, - 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x79, 0x29, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, - 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x71, 0x75, - 0x69, 0x65, 0x74, 0x5f, 0x4e, 0x61, 0x4e, 0x28, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x54, 0x20, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, - 0x6d, 0x61, 0x78, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x6d, 0x69, 0x6e, 0x76, 0x61, - 0x6c, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x78, 0x2c, 0x20, 0x79, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x28, 0x6d, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x20, - 0x3d, 0x3d, 0x20, 0x2d, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, - 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x28, 0x29, 0x20, 0x7c, 0x7c, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x3d, 0x20, - 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, - 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, - 0x74, 0x79, 0x28, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3a, - 0x20, 0x54, 0x28, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, 0x20, 0x2b, 0x20, - 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6c, - 0x6f, 0x67, 0x31, 0x70, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, - 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x78, 0x70, 0x28, 0x6d, 0x69, 0x6e, 0x76, - 0x61, 0x6c, 0x20, 0x2d, 0x20, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, 0x29, - 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, - 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x20, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, - 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, - 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, - 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, - 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x78, 0x2c, 0x20, 0x79, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, - 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, - 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, - 0x6e, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, - 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, - 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x69, 0x6d, - 0x61, 0x67, 0x28, 0x29, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x78, 0x20, 0x3e, 0x20, 0x79, 0x20, 0x3f, 0x20, 0x78, 0x20, 0x3a, 0x20, - 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, - 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, - 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x29, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3e, 0x20, 0x79, 0x20, 0x3f, 0x20, - 0x78, 0x20, 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x20, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, - 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, - 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x3c, 0x54, - 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x78, 0x2c, - 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, - 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, - 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, - 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, - 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, - 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x79, 0x20, 0x3f, 0x20, 0x78, 0x20, - 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, - 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x66, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, - 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x29, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x79, 0x20, - 0x3f, 0x20, 0x78, 0x20, 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, - 0x6c, 0x79, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, - 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2a, 0x20, 0x79, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x20, 0x4e, 0x6f, 0x74, 0x45, 0x71, 0x75, 0x61, 0x6c, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, - 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, - 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, - 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x2e, - 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x79, 0x2e, - 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x78, 0x2e, - 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x79, 0x2e, - 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, - 0x21, 0x3d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, - 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x20, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, - 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, - 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, - 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, - 0x28, 0x54, 0x20, 0x62, 0x61, 0x73, 0x65, 0x2c, 0x20, 0x54, 0x20, 0x65, - 0x78, 0x70, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, - 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, - 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, - 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x54, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x31, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x52, 0x61, 0x69, - 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x20, - 0x69, 0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, - 0x20, 0x28, 0x65, 0x78, 0x70, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, - 0x6c, 0x65, 0x20, 0x28, 0x65, 0x78, 0x70, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x65, - 0x78, 0x70, 0x20, 0x26, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, - 0x2a, 0x3d, 0x20, 0x62, 0x61, 0x73, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x65, 0x78, 0x70, 0x20, 0x3e, 0x3e, 0x3d, 0x20, 0x31, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, - 0x73, 0x65, 0x20, 0x2a, 0x3d, 0x20, 0x62, 0x61, 0x73, 0x65, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, - 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, - 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x70, 0x6f, - 0x77, 0x28, 0x62, 0x61, 0x73, 0x65, 0x2c, 0x20, 0x65, 0x78, 0x70, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, - 0x64, 0x3a, 0x3a, 0x70, 0x6f, 0x77, 0x28, 0x62, 0x61, 0x73, 0x65, 0x2c, - 0x20, 0x65, 0x78, 0x70, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x20, 0x53, 0x75, 0x62, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, - 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2d, 0x20, 0x79, 0x3b, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x6e, 0x64, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, - 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x26, 0x26, 0x20, 0x79, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4f, - 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, - 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, - 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x7c, 0x7c, 0x20, 0x79, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x20, 0x42, 0x69, 0x74, 0x77, 0x69, 0x73, 0x65, - 0x41, 0x6e, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, - 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x26, 0x20, 0x79, - 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x42, 0x69, 0x74, 0x77, 0x69, 0x73, - 0x65, 0x4f, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, - 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x7c, 0x20, 0x79, - 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x42, 0x69, 0x74, 0x77, 0x69, 0x73, - 0x65, 0x58, 0x6f, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, - 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x5e, 0x20, - 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x65, 0x66, 0x74, 0x53, - 0x68, 0x69, 0x66, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, - 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3c, 0x3c, - 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x52, 0x69, 0x67, 0x68, - 0x74, 0x53, 0x68, 0x69, 0x66, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, - 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, - 0x3e, 0x3e, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, - 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x41, 0x72, - 0x63, 0x54, 0x61, 0x6e, 0x32, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, - 0x79, 0x2c, 0x20, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x74, 0x61, 0x6e, - 0x32, 0x28, 0x79, 0x2c, 0x20, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, - 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, - 0x44, 0x69, 0x76, 0x4d, 0x6f, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x75, - 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, - 0x61, 0x79, 0x3c, 0x54, 0x2c, 0x20, 0x32, 0x3e, 0x20, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, - 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x46, 0x6c, 0x6f, 0x6f, - 0x72, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x7b, 0x7d, 0x28, 0x78, 0x2c, - 0x20, 0x79, 0x29, 0x2c, 0x20, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x64, - 0x65, 0x72, 0x7b, 0x7d, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x7d, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x7d, 0x20, - 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, - 0x63, 0x75, 0x0a, 0x00 -}; - -constexpr char jit_source_cast_op[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, - 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, - 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, - 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, - 0x61, 0x5f, 0x62, 0x66, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, - 0x5f, 0x66, 0x70, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, - 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, - 0x0a, 0x2f, 0x2f, 0x20, 0x41, 0x6e, 0x20, 0x6f, 0x70, 0x20, 0x74, 0x68, - 0x61, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x2c, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x20, 0x63, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, - 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, - 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x44, - 0x73, 0x74, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x3d, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x3e, 0x0a, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, - 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, - 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, - 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x3b, 0x0a, 0x0a, 0x20, 0x20, - 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x44, - 0x73, 0x74, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x28, 0x29, 0x28, 0x53, 0x72, 0x63, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, - 0x44, 0x73, 0x74, 0x54, 0x3e, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x43, 0x61, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, - 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x2e, 0x0a, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x2c, - 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, - 0x78, 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, - 0x63, 0x61, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, - 0x72, 0x75, 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, - 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, - 0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x78, 0x2e, 0x69, - 0x6d, 0x61, 0x67, 0x28, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x62, 0x6f, 0x6f, 0x6c, - 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, - 0x54, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, - 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x73, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, - 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, - 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x28, 0x29, 0x28, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x78, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x78, 0x20, 0x3f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, - 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x7b, 0x31, 0x2c, 0x20, 0x31, 0x7d, 0x20, - 0x3a, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, - 0x54, 0x3e, 0x7b, 0x30, 0x2c, 0x20, 0x30, 0x7d, 0x3b, 0x0a, 0x20, 0x20, - 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x20, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x72, 0x79, 0x20, 0x70, 0x61, 0x72, 0x74, 0x2e, 0x0a, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x0a, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, - 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x21, 0x69, 0x73, 0x5f, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x44, 0x73, 0x74, - 0x54, 0x3e, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, - 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, - 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x63, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, - 0x3c, 0x54, 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x3b, 0x0a, 0x0a, - 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, - 0x20, 0x44, 0x73, 0x74, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x28, 0x29, 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, - 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x61, 0x73, - 0x73, 0x65, 0x72, 0x74, 0x28, 0x21, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x44, 0x73, 0x74, 0x54, 0x3e, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, - 0x74, 0x3c, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x28, 0x78, 0x2e, 0x72, 0x65, - 0x61, 0x6c, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, - 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x20, - 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, - 0x20, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x53, - 0x72, 0x63, 0x54, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, - 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, - 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x21, 0x69, 0x73, 0x5f, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, - 0x3e, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, - 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x73, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x63, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x3c, - 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x54, 0x3e, 0x3b, 0x0a, 0x0a, 0x20, - 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, - 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, - 0x53, 0x72, 0x63, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x61, 0x73, 0x73, - 0x65, 0x72, 0x74, 0x28, 0x21, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x3e, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, - 0x3e, 0x7b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, - 0x74, 0x3c, 0x54, 0x3e, 0x28, 0x78, 0x29, 0x2c, 0x20, 0x30, 0x7d, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, - 0x44, 0x6f, 0x20, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x77, - 0x68, 0x65, 0x6e, 0x20, 0x6e, 0x6f, 0x20, 0x63, 0x61, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, - 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, - 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, - 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x44, 0x73, 0x74, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x44, - 0x73, 0x74, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, - 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x44, - 0x73, 0x74, 0x54, 0x3e, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, - 0x78, 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, - 0x63, 0x61, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, - 0x72, 0x75, 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x53, 0x72, 0x63, 0x54, 0x20, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x53, - 0x72, 0x63, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x49, 0x6e, - 0x20, 0x43, 0x55, 0x44, 0x41, 0x20, 0x31, 0x31, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, - 0x64, 0x6f, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, - 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x73, 0x6f, - 0x6d, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2c, 0x0a, 0x2f, 0x2f, - 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x66, 0x61, 0x6c, - 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x73, 0x20, 0x68, 0x65, 0x72, 0x65, 0x2e, - 0x0a, 0x23, 0x69, 0x66, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, - 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x20, 0x3c, 0x20, 0x31, 0x32, - 0x30, 0x30, 0x30, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, - 0x72, 0x63, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x63, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x3c, - 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x20, - 0x26, 0x26, 0x20, 0x21, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x3e, 0x20, 0x26, - 0x26, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, - 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x44, 0x73, 0x74, 0x54, - 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, 0x20, 0x7c, 0x7c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, - 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, - 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x44, 0x73, 0x74, 0x54, 0x2c, - 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x31, 0x36, 0x3e, 0x29, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, - 0x78, 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, - 0x63, 0x61, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, - 0x72, 0x75, 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x44, 0x73, 0x74, 0x54, 0x20, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x53, - 0x72, 0x63, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x44, 0x73, 0x74, 0x54, - 0x28, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, - 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x78, 0x29, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x74, 0x79, - 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, - 0x4f, 0x70, 0x3c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x72, 0x63, 0x54, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, - 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x66, - 0x5f, 0x74, 0x3c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x21, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, - 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, - 0x6c, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x44, - 0x73, 0x74, 0x54, 0x3e, 0x20, 0x26, 0x26, 0x20, 0x21, 0x69, 0x73, 0x5f, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x53, 0x72, - 0x63, 0x54, 0x3e, 0x20, 0x26, 0x26, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x21, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, - 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, - 0x3c, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, - 0x66, 0x3e, 0x20, 0x26, 0x26, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x21, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, - 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, - 0x44, 0x73, 0x74, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x3e, 0x20, 0x26, 0x26, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, - 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, - 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, 0x20, 0x7c, 0x7c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, - 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x5f, - 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, - 0x3e, 0x29, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, - 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, - 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, - 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x44, 0x73, 0x74, 0x54, 0x20, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x53, 0x72, 0x63, - 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x44, 0x73, 0x74, 0x54, 0x28, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, - 0x20, 0x2f, 0x2f, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, 0x56, - 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x20, 0x3c, 0x20, 0x31, 0x32, 0x30, - 0x30, 0x30, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x48, 0x65, 0x6c, 0x70, 0x65, - 0x72, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x64, 0x75, 0x63, 0x65, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, 0x2e, 0x0a, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x20, 0x74, - 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, - 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, - 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x63, 0x61, - 0x73, 0x74, 0x5f, 0x74, 0x6f, 0x28, 0x53, 0x72, 0x63, 0x54, 0x20, 0x78, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x53, 0x72, 0x63, 0x54, - 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x7b, 0x7d, 0x28, 0x78, 0x29, - 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, - 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 -}; - -constexpr char jit_source_complex[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, - 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x2f, - 0x2f, 0x20, 0x4d, 0x61, 0x6b, 0x65, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x66, - 0x61, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, - 0x6e, 0x65, 0x20, 0x4c, 0x49, 0x42, 0x43, 0x55, 0x44, 0x41, 0x43, 0x58, - 0x58, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x4d, - 0x50, 0x4c, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x50, - 0x4c, 0x45, 0x58, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x53, 0x0a, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, 0x73, - 0x74, 0x64, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x73, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, - 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x54, - 0x4f, 0x44, 0x4f, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, - 0x72, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x66, 0x61, - 0x73, 0x74, 0x65, 0x72, 0x20, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x68, 0x61, 0x73, 0x20, 0x74, 0x6f, - 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x20, - 0x74, 0x6f, 0x20, 0x43, 0x2b, 0x2b, 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, - 0x61, 0x72, 0x64, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x78, 0x3c, 0x54, 0x3e, 0x3b, 0x0a, 0x0a, 0x75, 0x73, 0x69, - 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x36, 0x34, - 0x5f, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, - 0x5f, 0x74, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x3b, 0x0a, 0x75, - 0x73, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, - 0x31, 0x32, 0x38, 0x5f, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, - 0x3e, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, - 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x69, 0x73, 0x5f, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x3a, 0x20, 0x63, 0x75, - 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x66, 0x61, 0x6c, - 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, - 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, - 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x78, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, - 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x3c, - 0x54, 0x3e, 0x3e, 0x20, 0x3a, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, - 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x72, 0x75, 0x65, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x62, - 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x78, 0x5f, 0x76, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6e, 0x67, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, - 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x25, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, - 0x20, 0x61, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x62, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x61, 0x2e, - 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x6c, 0x6f, - 0x6f, 0x72, 0x28, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, - 0x2f, 0x20, 0x62, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, - 0x2a, 0x20, 0x62, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x54, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x61, 0x2e, 0x69, 0x6d, - 0x61, 0x67, 0x28, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x6c, 0x6f, 0x6f, 0x72, - 0x28, 0x61, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x20, 0x2f, 0x20, - 0x62, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x20, 0x2a, 0x20, - 0x62, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x7b, 0x72, 0x2c, 0x20, 0x69, - 0x7d, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, - 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, - 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3e, 0x28, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x61, - 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, - 0x54, 0x3e, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, - 0x28, 0x29, 0x20, 0x3e, 0x20, 0x62, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, - 0x29, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x61, 0x2e, 0x72, 0x65, 0x61, - 0x6c, 0x28, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x62, 0x2e, 0x72, 0x65, 0x61, - 0x6c, 0x28, 0x29, 0x20, 0x26, 0x26, 0x20, 0x61, 0x2e, 0x69, 0x6d, 0x61, - 0x67, 0x28, 0x29, 0x20, 0x3e, 0x20, 0x62, 0x2e, 0x69, 0x6d, 0x61, 0x67, - 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, - 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, - 0x6c, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3c, 0x28, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, - 0x20, 0x61, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, - 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x3e, 0x28, 0x62, 0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0a, - 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, - 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, - 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, - 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3c, 0x3d, 0x28, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x61, 0x2c, 0x20, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, - 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x20, 0x21, 0x28, 0x61, 0x20, 0x3e, 0x20, 0x62, 0x29, 0x3b, - 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, - 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, - 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3e, 0x3d, 0x28, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x61, 0x2c, - 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, - 0x3e, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x21, 0x28, 0x61, 0x20, 0x3c, 0x20, 0x62, 0x29, - 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, - 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 -}; - -constexpr char jit_source_config[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, - 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x69, 0x73, - 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x62, 0x6f, 0x74, - 0x68, 0x20, 0x43, 0x55, 0x44, 0x41, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, - 0x6c, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x68, - 0x6f, 0x73, 0x74, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x43, 0x2b, 0x2b, - 0x20, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, - 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x2f, 0x2f, - 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, - 0x20, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, - 0x6f, 0x66, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2f, 0x73, 0x74, 0x72, - 0x69, 0x64, 0x65, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, - 0x61, 0x73, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x0a, 0x23, 0x64, - 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x44, - 0x49, 0x4d, 0x20, 0x31, 0x30, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x41, 0x6c, - 0x6c, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x4e, - 0x56, 0x49, 0x44, 0x49, 0x41, 0x20, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, - 0x72, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x78, - 0x65, 0x64, 0x20, 0x33, 0x32, 0x20, 0x77, 0x61, 0x72, 0x70, 0x20, 0x73, - 0x69, 0x7a, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x6f, 0x75, 0x67, 0x68, 0x20, - 0x61, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x2d, 0x69, 0x6e, 0x0a, 0x2f, - 0x2f, 0x20, 0x77, 0x61, 0x72, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x76, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x78, 0x69, 0x73, - 0x74, 0x73, 0x2c, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x74, - 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2d, 0x74, - 0x69, 0x6d, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, - 0x6e, 0x65, 0x20, 0x57, 0x41, 0x52, 0x50, 0x5f, 0x53, 0x49, 0x5a, 0x45, - 0x20, 0x33, 0x32, 0x0a, 0x00 -}; - -constexpr char jit_source_fp16_math[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, - 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, - 0x61, 0x5f, 0x62, 0x66, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, - 0x5f, 0x66, 0x70, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, - 0x73, 0x74, 0x64, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x73, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, - 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x42, 0x69, 0x6e, 0x61, - 0x72, 0x79, 0x20, 0x6f, 0x70, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x68, - 0x61, 0x6c, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x0a, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x0a, 0x23, 0x64, 0x65, 0x66, - 0x69, 0x6e, 0x65, 0x20, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, - 0x4e, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x4f, 0x50, - 0x28, 0x4e, 0x41, 0x4d, 0x45, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x5f, - 0x4f, 0x50, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x3e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, - 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, - 0x4e, 0x41, 0x4d, 0x45, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, - 0x79, 0x29, 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, - 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, - 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, - 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, - 0x29, 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x48, 0x41, 0x4c, - 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, - 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, - 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, - 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x3e, 0x29, 0x20, 0x7b, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x78, - 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x3a, 0x3a, 0x4e, - 0x41, 0x4d, 0x45, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, - 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, - 0x5f, 0x4f, 0x50, 0x28, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x5f, 0x5f, 0x68, - 0x6d, 0x61, 0x78, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, - 0x49, 0x4e, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x4f, - 0x50, 0x28, 0x6d, 0x69, 0x6e, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x6d, 0x69, - 0x6e, 0x29, 0x0a, 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x4d, - 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x42, 0x49, - 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x4f, 0x50, 0x0a, 0x0a, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x41, 0x64, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x43, 0x2b, 0x2b, 0x20, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x6f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, - 0x6e, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, - 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x55, - 0x3e, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, - 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, - 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, - 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x20, 0x26, 0x26, - 0x20, 0x21, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, - 0x2c, 0x20, 0x55, 0x3e, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x55, 0x3e, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, - 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x61, - 0x72, 0x69, 0x74, 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x5f, 0x65, 0x78, - 0x63, 0x65, 0x70, 0x74, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, - 0x5f, 0x61, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x5f, - 0x76, 0x3c, 0x54, 0x3e, 0x20, 0x26, 0x26, 0x20, 0x21, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, - 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x55, 0x3e, 0x3b, - 0x0a, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4d, 0x4c, - 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, - 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x48, 0x41, 0x4c, 0x46, 0x2c, 0x20, 0x48, - 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x2c, 0x20, 0x46, - 0x4c, 0x4f, 0x41, 0x54, 0x32, 0x48, 0x41, 0x4c, 0x46, 0x2c, 0x20, 0x4f, - 0x50, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, - 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, - 0x3c, 0x54, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x3e, 0x3e, 0x3e, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, - 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x20, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x4f, 0x50, 0x28, - 0x48, 0x41, 0x4c, 0x46, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, - 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x32, 0x48, 0x41, 0x4c, 0x46, 0x28, - 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x28, 0x78, - 0x29, 0x20, 0x4f, 0x50, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, - 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, - 0x79, 0x29, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, - 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, - 0x3c, 0x54, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x3e, 0x3e, 0x3e, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, - 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x20, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x4f, 0x50, 0x28, - 0x54, 0x20, 0x78, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x20, 0x79, 0x29, - 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x32, 0x48, 0x41, 0x4c, 0x46, 0x28, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x78, 0x29, 0x20, 0x4f, 0x50, - 0x20, 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x28, - 0x79, 0x29, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, - 0x6e, 0x65, 0x20, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, - 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x48, - 0x41, 0x4c, 0x46, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, - 0x4f, 0x41, 0x54, 0x2c, 0x20, 0x4f, 0x50, 0x29, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x2c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, - 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x69, 0x74, - 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, - 0x74, 0x3c, 0x54, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x3e, 0x3e, 0x3e, - 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, - 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, - 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x4f, 0x50, - 0x28, 0x48, 0x41, 0x4c, 0x46, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, - 0x29, 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, 0x4f, - 0x41, 0x54, 0x28, 0x78, 0x29, 0x20, 0x4f, 0x50, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x3e, 0x28, 0x79, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x2c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, - 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x69, 0x74, - 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, - 0x74, 0x3c, 0x54, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x3e, 0x3e, 0x3e, - 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, - 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, - 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x4f, 0x50, - 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x20, 0x79, - 0x29, 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, - 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x79, - 0x29, 0x20, 0x4f, 0x50, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, - 0x4f, 0x41, 0x54, 0x28, 0x78, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, - 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, - 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, - 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x32, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x2b, 0x29, 0x0a, 0x4d, 0x4c, - 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, - 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, - 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x68, - 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x2d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, - 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, - 0x4f, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x5f, - 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, - 0x20, 0x5f, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x68, 0x61, 0x6c, - 0x66, 0x2c, 0x20, 0x2a, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, - 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, - 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, - 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, - 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x68, 0x61, 0x6c, 0x66, 0x2c, - 0x20, 0x2f, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, - 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x5f, - 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, - 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, - 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x32, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, - 0x2c, 0x20, 0x2b, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, - 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, 0x28, - 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, - 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, - 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, - 0x36, 0x2c, 0x20, 0x2d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, - 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, - 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, 0x5f, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x31, 0x36, 0x2c, 0x20, 0x2a, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, - 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, - 0x50, 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, - 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x62, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x31, 0x36, 0x2c, 0x20, 0x2f, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, - 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, - 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, - 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x2c, 0x20, 0x3c, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, - 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, - 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, - 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3e, - 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, - 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, - 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, - 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3c, 0x3d, 0x29, 0x0a, - 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, - 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, - 0x6c, 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3e, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, - 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, - 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, - 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x2c, 0x20, 0x3d, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, - 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, - 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, - 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x2c, 0x20, 0x21, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, - 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, - 0x50, 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3c, - 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, - 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, - 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x2c, - 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3e, 0x29, 0x0a, 0x4d, 0x4c, - 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, - 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x2c, 0x20, 0x3c, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, - 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, - 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, - 0x3e, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, - 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, - 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, - 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, - 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3d, 0x3d, 0x29, - 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, - 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x6e, - 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x2c, 0x20, - 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x21, 0x3d, 0x29, 0x0a, 0x0a, 0x23, - 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, - 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, - 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x4d, 0x4c, 0x58, 0x5f, - 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, - 0x43, 0x4d, 0x50, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, - 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 -}; - -constexpr char jit_source_gather[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, 0x69, 0x6c, 0x73, - 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, - 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, - 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x67, 0x20, 0x3d, 0x20, 0x63, 0x6f, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, - 0x4e, 0x49, 0x44, 0x58, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x49, 0x44, - 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x3e, 0x0a, 0x5f, - 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x5f, 0x20, 0x76, 0x6f, - 0x69, 0x64, 0x20, 0x67, 0x61, 0x74, 0x68, 0x65, 0x72, 0x28, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, - 0x73, 0x72, 0x63, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, 0x2a, 0x20, - 0x6f, 0x75, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, - 0x54, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, - 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, - 0x53, 0x68, 0x61, 0x70, 0x65, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x68, - 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x53, 0x74, 0x72, - 0x69, 0x64, 0x65, 0x73, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, - 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, - 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x64, - 0x69, 0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x53, 0x68, 0x61, 0x70, - 0x65, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, - 0x32, 0x5f, 0x74, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, - 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x49, - 0x44, 0x58, 0x3e, 0x20, 0x61, 0x78, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, - 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, - 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2a, - 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x3e, 0x20, 0x69, 0x6e, 0x64, 0x69, - 0x63, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, - 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4e, - 0x49, 0x44, 0x58, 0x20, 0x2a, 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, - 0x49, 0x4d, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x68, 0x61, 0x70, - 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, - 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, - 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x49, 0x44, - 0x58, 0x20, 0x2a, 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, - 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, - 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, - 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x63, 0x67, - 0x3a, 0x3a, 0x74, 0x68, 0x69, 0x73, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x28, - 0x29, 0x2e, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, - 0x6b, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6f, - 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x73, 0x69, - 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, - 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x65, 0x6c, - 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, - 0x20, 0x25, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, - 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, - 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2f, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, - 0x63, 0x54, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, - 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x65, - 0x6c, 0x65, 0x6d, 0x2c, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x2c, - 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, - 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x29, 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, - 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, - 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x49, - 0x44, 0x58, 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, - 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, - 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, 0x3c, 0x49, 0x44, 0x58, - 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, - 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, - 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, - 0x65, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x28, 0x29, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, - 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, - 0x78, 0x69, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x78, 0x65, 0x73, 0x5b, 0x69, - 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, - 0x69, 0x64, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x62, - 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x28, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x5b, - 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, 0x2c, 0x20, 0x73, 0x72, - 0x63, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x61, 0x78, 0x69, 0x73, - 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x72, 0x63, 0x5f, - 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x76, - 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, - 0x69, 0x64, 0x65, 0x73, 0x5b, 0x61, 0x78, 0x69, 0x73, 0x5d, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5b, 0x6f, - 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x72, - 0x63, 0x5b, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, 0x3b, 0x0a, - 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, - 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 -}; - -constexpr char jit_source_gather_axis[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, 0x69, 0x6c, 0x73, - 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, - 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, - 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x67, 0x20, 0x3d, 0x20, 0x63, 0x6f, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, - 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, - 0x64, 0x78, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, - 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, - 0x6f, 0x6f, 0x6c, 0x20, 0x53, 0x72, 0x63, 0x43, 0x2c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x49, 0x64, 0x78, 0x43, 0x2c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x3e, 0x0a, 0x5f, 0x5f, 0x67, 0x6c, - 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, - 0x67, 0x61, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x28, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, - 0x2a, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2a, 0x20, 0x69, - 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x5f, 0x70, 0x72, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, - 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x5f, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, - 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, - 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, - 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, - 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, - 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, - 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, 0x49, 0x4d, - 0x3e, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, - 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, - 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, 0x49, - 0x4d, 0x3e, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, - 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, - 0x32, 0x5f, 0x74, 0x20, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x78, - 0x69, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x73, 0x72, 0x63, - 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, - 0x74, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, - 0x5f, 0x61, 0x78, 0x69, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x4c, - 0x6f, 0x63, 0x54, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, - 0x63, 0x67, 0x3a, 0x3a, 0x74, 0x68, 0x69, 0x73, 0x5f, 0x67, 0x72, 0x69, - 0x64, 0x28, 0x29, 0x2e, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, - 0x61, 0x6e, 0x6b, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, - 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x69, 0x64, - 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x20, 0x2a, - 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, - 0x69, 0x73, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, - 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x5b, 0x78, - 0x2c, 0x20, 0x79, 0x2c, 0x20, 0x7a, 0x5d, 0x20, 0x3d, 0x20, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x6d, 0x73, 0x28, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x20, 0x69, 0x64, - 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x29, 0x3b, - 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x65, 0x6c, 0x65, - 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x7a, 0x20, 0x2a, 0x20, - 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x6f, 0x73, - 0x74, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, - 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2a, - 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, - 0x61, 0x78, 0x69, 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x49, 0x64, - 0x78, 0x43, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, - 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x65, 0x6c, 0x65, - 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, 0x2b, 0x20, - 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, - 0x63, 0x20, 0x2b, 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, - 0x5f, 0x6e, 0x64, 0x3c, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x28, 0x65, 0x6c, - 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x2c, 0x20, - 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, - 0x2c, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x69, - 0x64, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, - 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, - 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5b, 0x69, 0x64, 0x78, 0x5f, - 0x6c, 0x6f, 0x63, 0x5d, 0x2c, 0x20, 0x61, 0x78, 0x69, 0x73, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, - 0x54, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, - 0x69, 0x64, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x73, 0x72, - 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, 0x69, - 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x53, 0x72, 0x63, 0x43, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x6c, - 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x69, - 0x64, 0x78, 0x20, 0x2a, 0x20, 0x61, 0x78, 0x69, 0x73, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x20, 0x2b, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, - 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, - 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, - 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, 0x3c, 0x4e, 0x44, 0x49, - 0x4d, 0x3e, 0x28, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, - 0x2b, 0x20, 0x78, 0x2c, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x28, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, - 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, - 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x4c, - 0x6f, 0x63, 0x54, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, - 0x3d, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x20, 0x2b, 0x20, 0x65, 0x6c, - 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, 0x2b, - 0x20, 0x78, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5b, 0x6f, - 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x72, - 0x63, 0x5b, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, 0x3b, 0x0a, - 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, - 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 -}; - -constexpr char jit_source_hadamard[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, - 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, - 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, - 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, 0x69, - 0x6c, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, - 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, - 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x5f, - 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, - 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x68, 0x61, 0x64, 0x61, - 0x6d, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x5f, 0x6d, - 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x78, 0x29, 0x3b, 0x0a, - 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, - 0x6e, 0x74, 0x20, 0x4e, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x61, 0x73, 0x73, - 0x65, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, - 0x4e, 0x20, 0x3e, 0x20, 0x30, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x28, - 0x4e, 0x20, 0x26, 0x20, 0x28, 0x4e, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x29, - 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x22, 0x4e, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, - 0x20, 0x61, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, - 0x70, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x77, 0x6f, - 0x2e, 0x22, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, - 0x69, 0x6e, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, - 0x31, 0x20, 0x2b, 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, - 0x3c, 0x4e, 0x20, 0x2f, 0x20, 0x32, 0x3e, 0x3a, 0x3a, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, 0x3c, - 0x31, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, - 0x69, 0x6e, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, - 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x52, 0x3e, 0x0a, - 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x5f, - 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, - 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x68, 0x61, 0x64, 0x61, - 0x6d, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x5f, 0x70, - 0x6f, 0x77, 0x32, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x78, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, - 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x4c, 0x6f, 0x67, - 0x52, 0x20, 0x3d, 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, - 0x3c, 0x52, 0x3e, 0x3a, 0x3a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0x0a, - 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x68, 0x20, 0x3d, 0x20, 0x31, 0x3b, - 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, - 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, - 0x6e, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x73, 0x20, - 0x3c, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x3b, 0x20, 0x2b, 0x2b, 0x73, - 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, - 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, - 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x52, 0x20, 0x2f, 0x20, 0x32, - 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x20, 0x3d, 0x20, 0x69, - 0x20, 0x26, 0x20, 0x28, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, - 0x3d, 0x20, 0x28, 0x28, 0x69, 0x20, 0x2d, 0x20, 0x6b, 0x29, 0x20, 0x3c, - 0x3c, 0x20, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x6b, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x20, - 0x3d, 0x20, 0x78, 0x5b, 0x6a, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x20, 0x3d, 0x20, - 0x78, 0x5b, 0x6a, 0x20, 0x2b, 0x20, 0x68, 0x5d, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x78, 0x5b, 0x6a, 0x5d, 0x20, 0x3d, 0x20, 0x61, - 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x78, 0x5b, 0x6a, 0x20, 0x2b, 0x20, 0x68, 0x5d, 0x20, 0x3d, 0x20, 0x61, - 0x20, 0x2d, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x68, 0x20, 0x3c, 0x3c, 0x3d, 0x20, 0x31, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, - 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, - 0x69, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, - 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, - 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x31, 0x3e, 0x0a, - 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x5f, 0x20, 0x76, - 0x6f, 0x69, 0x64, 0x0a, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, - 0x5f, 0x6e, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, - 0x69, 0x6e, 0x2c, 0x20, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2c, - 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6e, - 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, - 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x65, 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x4e, 0x75, - 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x3d, 0x20, 0x4e, - 0x20, 0x2f, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, - 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, - 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x4e, 0x20, - 0x3d, 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, 0x3c, 0x4e, - 0x3e, 0x3a, 0x3a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0x0a, 0x20, 0x20, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, - 0x74, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x20, 0x3d, 0x20, 0x50, 0x6f, - 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, 0x3c, 0x6d, 0x61, 0x78, 0x5f, 0x72, - 0x61, 0x64, 0x69, 0x78, 0x3e, 0x3a, 0x3a, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, - 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x53, 0x74, - 0x65, 0x70, 0x73, 0x20, 0x3d, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x4e, 0x20, - 0x2f, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x3b, 0x0a, 0x20, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, - 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x3d, - 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x4e, 0x20, 0x25, 0x20, 0x6b, 0x4c, 0x6f, - 0x67, 0x52, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, - 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x46, 0x69, 0x6e, - 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, 0x78, 0x20, 0x3d, 0x20, 0x31, 0x20, - 0x3c, 0x3c, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, - 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x74, 0x68, 0x72, - 0x65, 0x61, 0x64, 0x49, 0x64, 0x78, 0x2e, 0x78, 0x20, 0x3e, 0x3d, 0x20, - 0x6b, 0x4e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x62, - 0x75, 0x66, 0x5b, 0x4e, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, - 0x20, 0x69, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x49, - 0x64, 0x78, 0x2e, 0x78, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x3d, 0x20, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x78, 0x2e, 0x78, 0x3b, 0x20, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x3c, 0x20, - 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, - 0x6d, 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2b, 0x3d, 0x20, - 0x67, 0x72, 0x69, 0x64, 0x44, 0x69, 0x6d, 0x2e, 0x78, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, - 0x6e, 0x67, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x3d, 0x20, 0x28, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2f, 0x20, 0x73, - 0x74, 0x72, 0x69, 0x64, 0x65, 0x29, 0x20, 0x2a, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x6c, 0x6f, 0x6e, - 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x3e, 0x28, 0x4e, 0x29, 0x20, 0x2a, - 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x25, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, - 0x65, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x73, - 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x29, 0x20, - 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, - 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, - 0x30, 0x3b, 0x20, 0x6a, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, - 0x61, 0x64, 0x69, 0x78, 0x20, 0x2f, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x6a, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, - 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x6a, 0x20, - 0x2a, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, - 0x20, 0x2a, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, - 0x64, 0x73, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x23, 0x70, 0x72, - 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, - 0x72, 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, - 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x75, 0x66, - 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x20, - 0x3d, 0x20, 0x69, 0x6e, 0x5b, 0x62, 0x61, 0x73, 0x65, 0x20, 0x2b, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, - 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, - 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, - 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x6a, 0x20, 0x3c, 0x20, - 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x3b, 0x20, 0x2b, - 0x2b, 0x6a, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, 0x2a, 0x20, 0x6b, 0x4e, - 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, 0x20, - 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x5b, 0x62, 0x61, 0x73, 0x65, - 0x20, 0x2b, 0x20, 0x28, 0x6a, 0x20, 0x2a, 0x20, 0x6b, 0x4e, 0x75, 0x6d, - 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, 0x20, 0x69, 0x29, - 0x20, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x73, 0x79, 0x6e, 0x63, - 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x28, 0x29, 0x3b, 0x0a, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x5b, - 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x5d, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x68, 0x20, 0x3d, 0x20, - 0x31, 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, - 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, - 0x30, 0x3b, 0x20, 0x73, 0x20, 0x3c, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x53, - 0x74, 0x65, 0x70, 0x73, 0x3b, 0x20, 0x2b, 0x2b, 0x73, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, - 0x20, 0x3d, 0x20, 0x69, 0x20, 0x26, 0x20, 0x28, 0x68, 0x20, 0x2d, 0x20, - 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, - 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x69, 0x20, 0x2d, 0x20, - 0x6b, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x29, - 0x20, 0x2b, 0x20, 0x6b, 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, - 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, - 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, - 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x3b, 0x20, 0x2b, - 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x78, 0x5b, 0x72, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x3e, 0x28, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, 0x2b, 0x20, - 0x68, 0x20, 0x2a, 0x20, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x61, 0x64, - 0x69, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x32, 0x3c, 0x6d, 0x61, 0x78, 0x5f, - 0x72, 0x61, 0x64, 0x69, 0x78, 0x3e, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x0a, - 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, - 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, - 0x20, 0x72, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, - 0x69, 0x78, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x75, 0x66, 0x5b, 0x6a, - 0x20, 0x2b, 0x20, 0x68, 0x20, 0x2a, 0x20, 0x72, 0x5d, 0x20, 0x3d, 0x20, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, - 0x54, 0x3e, 0x28, 0x78, 0x5b, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x68, 0x20, 0x3c, 0x3c, 0x3d, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x73, 0x79, - 0x6e, 0x63, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x28, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, - 0x20, 0x28, 0x6b, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, - 0x78, 0x20, 0x3e, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, - 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, - 0x6e, 0x74, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x74, 0x20, - 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x20, - 0x2f, 0x20, 0x6b, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, - 0x78, 0x3b, 0x20, 0x2b, 0x2b, 0x74, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x20, 0x2b, 0x20, 0x74, 0x20, - 0x2a, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, - 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x6e, 0x74, 0x20, 0x6b, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x20, 0x26, 0x20, 0x28, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, - 0x6a, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, - 0x2d, 0x20, 0x6b, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x6b, 0x4c, 0x6f, 0x67, - 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x29, 0x20, 0x2b, 0x20, 0x6b, 0x3b, 0x0a, - 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, - 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, - 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, 0x6b, 0x46, 0x69, 0x6e, 0x61, - 0x6c, 0x52, 0x61, 0x64, 0x69, 0x78, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x78, 0x5b, 0x72, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x3e, 0x28, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, 0x2b, 0x20, 0x68, - 0x20, 0x2a, 0x20, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, 0x5f, - 0x72, 0x61, 0x64, 0x69, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x32, 0x3c, 0x6b, - 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, 0x78, 0x3e, 0x28, - 0x78, 0x29, 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, - 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, - 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, - 0x6b, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, 0x78, 0x3b, - 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, - 0x2b, 0x20, 0x68, 0x20, 0x2a, 0x20, 0x72, 0x5d, 0x20, 0x3d, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x54, - 0x3e, 0x28, 0x78, 0x5b, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x73, - 0x79, 0x6e, 0x63, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x28, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, - 0x72, 0x20, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x3d, - 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, - 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, - 0x6a, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x6a, 0x20, 0x3c, 0x20, 0x6d, - 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x20, 0x2f, 0x20, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, - 0x2b, 0x6a, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, - 0x3d, 0x20, 0x6a, 0x20, 0x2a, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, - 0x69, 0x64, 0x74, 0x68, 0x20, 0x2a, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x54, - 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, - 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, - 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, - 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, - 0x20, 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, 0x64, - 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x20, 0x3d, - 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, - 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x62, 0x75, 0x66, 0x5b, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, - 0x75, 0x74, 0x5b, 0x62, 0x61, 0x73, 0x65, 0x20, 0x2b, 0x20, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x20, 0x3d, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x54, - 0x3e, 0x28, 0x76, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x73, 0x63, 0x61, 0x6c, - 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x23, - 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, - 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x28, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, - 0x6a, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, - 0x78, 0x3b, 0x20, 0x2b, 0x2b, 0x6a, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5b, 0x62, 0x61, - 0x73, 0x65, 0x20, 0x2b, 0x20, 0x28, 0x6a, 0x20, 0x2a, 0x20, 0x6b, 0x4e, - 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, 0x20, - 0x69, 0x29, 0x20, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, - 0x20, 0x3d, 0x20, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, 0x2a, 0x20, 0x6b, - 0x4e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, - 0x20, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x5f, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, - 0x73, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, - 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x69, 0x6e, - 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4d, 0x2c, 0x20, - 0x69, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, - 0x74, 0x68, 0x3e, 0x0a, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, - 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x0a, 0x68, 0x61, 0x64, 0x61, - 0x6d, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x20, 0x54, 0x2a, 0x20, 0x69, 0x6e, 0x2c, 0x20, 0x54, 0x2a, 0x20, 0x6f, - 0x75, 0x74, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x63, - 0x61, 0x6c, 0x65, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, - 0x6e, 0x67, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, - 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x50, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x20, 0x3d, - 0x20, 0x4e, 0x20, 0x2f, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x74, - 0x61, 0x73, 0x6b, 0x20, 0x3d, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, - 0x64, 0x78, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x44, 0x69, 0x6d, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x74, 0x68, 0x72, 0x65, - 0x61, 0x64, 0x49, 0x64, 0x78, 0x2e, 0x78, 0x3b, 0x20, 0x74, 0x61, 0x73, - 0x6b, 0x20, 0x3c, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x61, 0x73, 0x6b, - 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x61, - 0x73, 0x6b, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, - 0x69, 0x6d, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x67, 0x72, 0x69, 0x64, 0x44, - 0x69, 0x6d, 0x2e, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x69, 0x20, - 0x3d, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x25, 0x20, 0x6b, 0x54, 0x61, - 0x73, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, - 0x6e, 0x67, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x3d, 0x20, 0x74, - 0x61, 0x73, 0x6b, 0x20, 0x2f, 0x20, 0x6b, 0x54, 0x61, 0x73, 0x6b, 0x73, - 0x50, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, - 0x62, 0x61, 0x73, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, - 0x20, 0x2a, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, - 0x73, 0x74, 0x3c, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, - 0x3e, 0x28, 0x4d, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x3b, 0x0a, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x5b, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5d, 0x5b, 0x4d, - 0x5d, 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, - 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x20, 0x3d, 0x20, 0x30, - 0x3b, 0x20, 0x63, 0x20, 0x3c, 0x20, 0x4d, 0x3b, 0x20, 0x2b, 0x2b, 0x63, - 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, - 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, - 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x78, 0x5b, 0x72, 0x5d, 0x5b, 0x63, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x69, 0x6e, 0x5b, 0x62, 0x61, 0x73, 0x65, - 0x20, 0x2b, 0x20, 0x63, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, - 0x20, 0x2a, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, - 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, - 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, - 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, - 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, - 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x5f, 0x6d, 0x28, 0x78, 0x5b, 0x72, - 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x23, - 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, - 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, - 0x6e, 0x74, 0x20, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x63, 0x20, - 0x3c, 0x20, 0x4d, 0x3b, 0x20, 0x2b, 0x2b, 0x63, 0x29, 0x20, 0x7b, 0x0a, - 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, - 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, - 0x20, 0x72, 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5b, - 0x62, 0x61, 0x73, 0x65, 0x20, 0x2b, 0x20, 0x63, 0x20, 0x2a, 0x20, 0x4e, - 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x20, 0x3d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, - 0x3c, 0x54, 0x3e, 0x28, 0x78, 0x5b, 0x72, 0x5d, 0x5b, 0x63, 0x5d, 0x20, - 0x2a, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, - 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, - 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, - 0x00 -}; - -constexpr char jit_source_indexing[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, - 0x73, 0x74, 0x64, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x3e, 0x0a, 0x23, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, - 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x73, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, - 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x2f, - 0x2f, 0x20, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x6e, - 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x20, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x33, 0x64, - 0x20, 0x67, 0x72, 0x69, 0x64, 0x2c, 0x20, 0x61, 0x73, 0x73, 0x75, 0x6d, - 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x20, 0x69, 0x73, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x61, 0x6c, 0x63, - 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x3a, - 0x0a, 0x2f, 0x2f, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, - 0x78, 0x20, 0x2a, 0x20, 0x64, 0x69, 0x6d, 0x31, 0x20, 0x2a, 0x20, 0x64, - 0x69, 0x6d, 0x32, 0x20, 0x2b, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x64, 0x69, - 0x6d, 0x32, 0x20, 0x2b, 0x20, 0x7a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, - 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x75, 0x70, 0x6c, 0x65, - 0x3c, 0x54, 0x2c, 0x20, 0x54, 0x2c, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x6d, 0x73, 0x28, - 0x54, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x64, - 0x69, 0x6d, 0x31, 0x2c, 0x20, 0x54, 0x20, 0x64, 0x69, 0x6d, 0x32, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x28, 0x64, 0x69, 0x6d, 0x31, - 0x20, 0x2a, 0x20, 0x64, 0x69, 0x6d, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x54, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x20, 0x25, 0x20, 0x28, 0x64, 0x69, 0x6d, 0x31, 0x20, 0x2a, 0x20, 0x64, - 0x69, 0x6d, 0x32, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x64, 0x69, 0x6d, 0x32, - 0x3b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x7a, 0x20, 0x3d, 0x20, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x64, 0x69, 0x6d, 0x32, 0x3b, 0x0a, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6d, 0x61, 0x6b, 0x65, - 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x2c, - 0x20, 0x7a, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x47, - 0x65, 0x74, 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x70, - 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x6e, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x0a, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, - 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x3e, - 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, - 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x61, 0x62, 0x73, - 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, - 0x49, 0x64, 0x78, 0x54, 0x20, 0x69, 0x64, 0x78, 0x2c, 0x20, 0x69, 0x6e, - 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, - 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x75, 0x6e, 0x73, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x3e, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x20, 0x69, 0x64, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, - 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, - 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, - 0x74, 0x3e, 0x28, 0x69, 0x64, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x20, 0x3f, - 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, - 0x3a, 0x20, 0x69, 0x64, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, - 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, - 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 -}; - -constexpr char jit_source_scatter[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x73, 0x63, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, - 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, - 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, - 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, - 0x69, 0x6c, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x6f, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, - 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x67, 0x20, 0x3d, - 0x20, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3b, 0x0a, 0x0a, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, 0x70, 0x2c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x49, 0x44, - 0x58, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x49, - 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4c, 0x6f, - 0x63, 0x54, 0x3e, 0x0a, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, - 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x73, 0x63, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, 0x75, 0x70, 0x64, 0x2c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x73, 0x69, 0x7a, 0x65, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, - 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x53, 0x68, 0x61, 0x70, 0x65, 0x20, - 0x75, 0x70, 0x64, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, - 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, - 0x5f, 0x5f, 0x20, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x75, - 0x70, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, - 0x75, 0x70, 0x64, 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x2c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x70, - 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, - 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x53, 0x68, 0x61, 0x70, 0x65, 0x20, - 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, - 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, - 0x5f, 0x5f, 0x20, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x6f, - 0x75, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, - 0x6f, 0x75, 0x74, 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x2c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, - 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, - 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, - 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x3e, 0x20, 0x61, 0x78, - 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, - 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2a, 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, - 0x3e, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, - 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, - 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, - 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x33, - 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x20, 0x2a, 0x20, - 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, - 0x73, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, - 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, - 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, - 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, - 0x74, 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x20, 0x2a, 0x20, 0x49, 0x44, - 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, - 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x69, 0x64, - 0x78, 0x20, 0x3d, 0x20, 0x63, 0x67, 0x3a, 0x3a, 0x74, 0x68, 0x69, 0x73, - 0x5f, 0x67, 0x72, 0x69, 0x64, 0x28, 0x29, 0x2e, 0x74, 0x68, 0x72, 0x65, - 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x28, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x69, 0x66, 0x20, 0x28, 0x75, 0x70, 0x64, 0x5f, 0x69, 0x64, 0x78, - 0x20, 0x3e, 0x3d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, - 0x6f, 0x75, 0x74, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x75, - 0x70, 0x64, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x25, 0x20, 0x75, 0x70, 0x64, - 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, - 0x64, 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x75, 0x70, - 0x64, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2f, 0x20, 0x75, 0x70, 0x64, 0x5f, - 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x6f, - 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, - 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x28, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x65, 0x6c, 0x65, 0x6d, - 0x2c, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x20, 0x2b, 0x20, 0x49, 0x44, 0x58, - 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x73, - 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, - 0x29, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x29, - 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, - 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, - 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x3b, 0x20, 0x2b, 0x2b, - 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, - 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, - 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, - 0x6e, 0x64, 0x3c, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, - 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, - 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, - 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, - 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, - 0x44, 0x49, 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x72, - 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x20, - 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, - 0x49, 0x4d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, - 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x78, 0x69, 0x73, 0x20, 0x3d, 0x20, - 0x61, 0x78, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x76, 0x61, - 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, 0x69, 0x6e, 0x64, 0x69, 0x63, - 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x5b, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, - 0x63, 0x5d, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x70, - 0x65, 0x5b, 0x61, 0x78, 0x69, 0x73, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, - 0x20, 0x69, 0x64, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x6f, - 0x75, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x61, - 0x78, 0x69, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, - 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x6c, 0x6f, - 0x63, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, - 0x6c, 0x6f, 0x63, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, - 0x75, 0x74, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2b, 0x20, 0x69, 0x64, - 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2a, 0x20, 0x75, 0x70, 0x64, - 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, - 0x64, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x28, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, - 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x28, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x75, 0x70, 0x64, 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x29, 0x3b, 0x0a, 0x0a, - 0x20, 0x20, 0x4f, 0x70, 0x7b, 0x7d, 0x28, 0x6f, 0x75, 0x74, 0x20, 0x2b, - 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x2c, 0x20, 0x75, 0x70, - 0x64, 0x5b, 0x75, 0x70, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, 0x29, 0x3b, - 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, - 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 -}; - -constexpr char jit_source_scatter_axis[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x73, 0x63, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, - 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, - 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, - 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, - 0x69, 0x6c, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x6f, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, - 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x67, 0x20, 0x3d, - 0x20, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3b, 0x0a, 0x0a, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, 0x70, 0x2c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x44, 0x49, - 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, - 0x55, 0x70, 0x64, 0x43, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, - 0x6f, 0x6c, 0x20, 0x49, 0x64, 0x78, 0x43, 0x2c, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4c, 0x6f, - 0x63, 0x54, 0x3e, 0x0a, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, - 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x73, 0x63, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x28, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, 0x75, - 0x70, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2a, 0x20, 0x69, 0x6e, 0x64, 0x69, - 0x63, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, 0x2a, 0x20, - 0x6f, 0x75, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, - 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, - 0x72, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, - 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, - 0x69, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, - 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x6f, - 0x73, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, - 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, - 0x49, 0x4d, 0x3e, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, - 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, - 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, - 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x36, - 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x20, 0x75, - 0x70, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, - 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, - 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, - 0x36, 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x20, - 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, - 0x20, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x78, 0x69, 0x73, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, - 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x73, 0x74, - 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x69, - 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, - 0x69, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, - 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x63, 0x67, 0x3a, - 0x3a, 0x74, 0x68, 0x69, 0x73, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x28, 0x29, - 0x2e, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x6b, - 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x20, 0x2a, 0x20, 0x69, 0x64, - 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, - 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, - 0x6f, 0x73, 0x74, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, - 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x5b, 0x78, 0x2c, 0x20, 0x79, - 0x2c, 0x20, 0x7a, 0x5d, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x6d, 0x73, 0x28, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x5f, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x29, 0x3b, 0x0a, 0x0a, 0x20, - 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x69, - 0x64, 0x78, 0x20, 0x3d, 0x20, 0x7a, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x3b, 0x0a, - 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, - 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x69, 0x64, - 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, 0x69, - 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x49, 0x64, 0x78, 0x43, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x6c, - 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x69, - 0x64, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, 0x2b, 0x20, 0x78, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, - 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, - 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, - 0x3c, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x28, 0x65, 0x6c, 0x65, 0x6d, 0x5f, - 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x2c, 0x20, 0x73, 0x68, 0x61, - 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x2c, 0x20, 0x69, - 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, - 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x69, 0x64, 0x78, 0x5f, - 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, - 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, 0x69, 0x6e, 0x64, - 0x69, 0x63, 0x65, 0x73, 0x5b, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, - 0x5d, 0x2c, 0x20, 0x61, 0x78, 0x69, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x75, - 0x70, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2a, - 0x20, 0x75, 0x70, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, - 0x61, 0x78, 0x69, 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x55, 0x70, - 0x64, 0x43, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, - 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x65, 0x6c, 0x65, - 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, 0x2b, 0x20, - 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x6c, 0x6f, - 0x63, 0x20, 0x2b, 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, - 0x5f, 0x6e, 0x64, 0x3c, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x28, 0x65, 0x6c, - 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x2c, 0x20, - 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, - 0x2c, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x6f, - 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x64, 0x78, - 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x20, 0x2b, 0x20, 0x65, - 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x61, 0x78, - 0x69, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x2b, 0x20, 0x78, 0x3b, - 0x0a, 0x0a, 0x20, 0x20, 0x4f, 0x70, 0x7b, 0x7d, 0x28, 0x6f, 0x75, 0x74, - 0x20, 0x2b, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x2c, 0x20, - 0x75, 0x70, 0x64, 0x5b, 0x75, 0x70, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, - 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, - 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 -}; - -constexpr char jit_source_scatter_ops[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, - 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, - 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, - 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x61, 0x74, 0x6f, - 0x6d, 0x69, 0x63, 0x5f, 0x6f, 0x70, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, - 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, - 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, - 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, - 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, - 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, - 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, - 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x2a, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x76, 0x61, 0x6c, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x20, 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x53, 0x75, - 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, - 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, - 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x6f, - 0x75, 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x20, 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, 0x6f, - 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, - 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x6f, - 0x75, 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x20, 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, - 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, 0x6f, 0x75, - 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x74, - 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x6f, 0x75, 0x74, - 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, - 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x53, - 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, - 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, - 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, - 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, - 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x74, 0x6f, 0x6d, - 0x69, 0x63, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x6f, 0x75, 0x74, 0x2c, 0x20, - 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, - 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, - 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 -}; - -constexpr char jit_source_ternary_ops[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x23, 0x70, 0x72, 0x61, - 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, - 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x62, 0x6f, 0x6f, 0x6c, 0x20, - 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x54, - 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3f, 0x20, 0x78, 0x20, - 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, - 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, - 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 -}; - -constexpr char jit_source_unary_ops[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, - 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, - 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, - 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x66, 0x70, 0x31, - 0x36, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, - 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, - 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, - 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, - 0x69, 0x6c, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, - 0x5f, 0x66, 0x70, 0x38, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x68, 0x3e, 0x0a, - 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, - 0x64, 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x63, 0x6d, 0x61, 0x74, 0x68, - 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, - 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x20, 0x41, 0x62, 0x73, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, - 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, - 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, 0x54, - 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x62, - 0x73, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, - 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x20, 0x41, 0x72, 0x63, 0x43, 0x6f, 0x73, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, - 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, - 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, - 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, - 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x63, 0x6f, 0x73, 0x28, - 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x41, 0x72, 0x63, 0x43, 0x6f, - 0x73, 0x68, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, - 0x61, 0x63, 0x6f, 0x73, 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x20, 0x41, 0x72, 0x63, 0x53, 0x69, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, - 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, - 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, - 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, - 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, - 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x73, 0x69, 0x6e, 0x28, 0x78, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x20, 0x41, 0x72, 0x63, 0x53, 0x69, 0x6e, 0x68, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x73, - 0x69, 0x6e, 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, - 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x41, - 0x72, 0x63, 0x54, 0x61, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, - 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, - 0x64, 0x3a, 0x3a, 0x61, 0x74, 0x61, 0x6e, 0x28, 0x78, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x20, 0x41, 0x72, 0x63, 0x54, 0x61, 0x6e, 0x68, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, - 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, - 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x74, 0x61, 0x6e, - 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, - 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x42, 0x69, 0x74, - 0x77, 0x69, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, - 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, - 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7e, 0x78, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x20, 0x43, 0x65, 0x69, 0x6c, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, - 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, - 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, - 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, - 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, - 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, - 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, - 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, - 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, - 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x54, 0x7b, - 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, - 0x65, 0x69, 0x6c, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, - 0x29, 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, - 0x3a, 0x3a, 0x63, 0x65, 0x69, 0x6c, 0x28, 0x78, 0x2e, 0x69, 0x6d, 0x61, - 0x67, 0x28, 0x29, 0x29, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x65, 0x69, 0x6c, - 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x20, 0x43, 0x6f, 0x6e, 0x6a, 0x75, 0x67, 0x61, 0x74, 0x65, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, - 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x5f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, - 0x3c, 0x54, 0x3e, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x28, 0x29, 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, - 0x3c, 0x54, 0x3e, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x6e, 0x6a, 0x28, - 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x6f, 0x73, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, - 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, - 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x73, 0x28, - 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x6f, 0x73, 0x68, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, - 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, - 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x73, - 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, - 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x72, 0x66, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, - 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, - 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, - 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x72, 0x66, 0x28, 0x5f, 0x5f, - 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, - 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, - 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, - 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, - 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, - 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x65, 0x72, 0x66, 0x28, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x65, 0x72, 0x66, 0x28, 0x78, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, - 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x72, 0x66, - 0x49, 0x6e, 0x76, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, - 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, - 0x61, 0x6c, 0x66, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x72, 0x66, - 0x69, 0x6e, 0x76, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, - 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, - 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, - 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x72, 0x66, 0x69, 0x6e, 0x76, - 0x28, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x65, 0x72, 0x66, 0x69, 0x6e, 0x76, 0x28, 0x78, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, - 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x78, 0x70, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x78, - 0x70, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, - 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x78, 0x70, - 0x6d, 0x31, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, - 0x65, 0x78, 0x70, 0x6d, 0x31, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x20, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, - 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, - 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, - 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, - 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, - 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, - 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x54, 0x7b, 0x63, 0x75, - 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x66, 0x6c, 0x6f, - 0x6f, 0x72, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, - 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x28, 0x78, 0x2e, 0x69, 0x6d, 0x61, - 0x67, 0x28, 0x29, 0x29, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x66, 0x6c, 0x6f, 0x6f, - 0x72, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, - 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x20, 0x49, 0x6d, 0x61, 0x67, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, - 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, - 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x61, - 0x75, 0x74, 0x6f, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x28, 0x29, 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, - 0x3c, 0x54, 0x3e, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x2e, 0x69, 0x6d, - 0x61, 0x67, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, - 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6c, 0x6f, - 0x67, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, - 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, - 0x32, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, - 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, - 0x20, 0x79, 0x20, 0x3d, 0x20, 0x4c, 0x6f, 0x67, 0x7b, 0x7d, 0x28, 0x78, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, - 0x29, 0x20, 0x2f, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, 0x4c, - 0x4e, 0x32, 0x5f, 0x46, 0x2c, 0x20, 0x79, 0x2e, 0x69, 0x6d, 0x61, 0x67, - 0x28, 0x29, 0x20, 0x2f, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, - 0x4c, 0x4e, 0x32, 0x5f, 0x46, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, - 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6c, 0x6f, 0x67, - 0x32, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, - 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x31, 0x30, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, - 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, - 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, - 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, - 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, - 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6c, 0x6f, 0x67, 0x31, 0x30, 0x28, - 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x31, 0x70, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x7a, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x20, 0x78, 0x20, 0x3d, 0x20, 0x7a, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, - 0x61, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x7a, 0x2e, 0x69, 0x6d, 0x61, - 0x67, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x61, 0x62, 0x73, 0x20, 0x3d, 0x20, - 0x41, 0x62, 0x73, 0x7b, 0x7d, 0x28, 0x7a, 0x29, 0x2e, 0x72, 0x65, 0x61, - 0x6c, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, - 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x74, 0x61, 0x20, 0x3d, - 0x20, 0x61, 0x74, 0x61, 0x6e, 0x32, 0x66, 0x28, 0x79, 0x2c, 0x20, 0x78, - 0x20, 0x2b, 0x20, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x66, 0x20, 0x28, 0x7a, 0x61, 0x62, 0x73, 0x20, 0x3c, 0x20, - 0x30, 0x2e, 0x35, 0x66, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x20, - 0x3d, 0x20, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x32, 0x20, 0x2b, 0x20, 0x78, - 0x29, 0x20, 0x2b, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x79, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, - 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x20, 0x2f, 0x2f, 0x20, - 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, - 0x66, 0x6c, 0x6f, 0x77, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x78, - 0x2c, 0x20, 0x74, 0x68, 0x65, 0x74, 0x61, 0x7d, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, - 0x30, 0x2e, 0x35, 0x66, 0x20, 0x2a, 0x20, 0x6c, 0x6f, 0x67, 0x31, 0x70, - 0x66, 0x28, 0x72, 0x29, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x74, 0x61, 0x7d, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, - 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x30, 0x20, 0x3d, 0x20, - 0x68, 0x79, 0x70, 0x6f, 0x74, 0x66, 0x28, 0x78, 0x20, 0x2b, 0x20, 0x31, - 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x6c, 0x6f, - 0x67, 0x66, 0x28, 0x7a, 0x30, 0x29, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x74, - 0x61, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x6c, 0x6f, 0x67, 0x31, 0x70, 0x28, 0x7a, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x69, - 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x5f, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, - 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, - 0x29, 0x28, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x21, - 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x54, 0x7b, 0x30, 0x2c, 0x20, 0x30, 0x7d, 0x20, - 0x2d, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, - 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x2d, 0x78, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x52, 0x65, 0x61, 0x6c, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x78, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x20, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, - 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, - 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, - 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, - 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, - 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, - 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x63, 0x75, - 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x72, 0x69, 0x6e, - 0x74, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x2c, - 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, - 0x72, 0x69, 0x6e, 0x74, 0x28, 0x78, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, - 0x29, 0x29, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, - 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, - 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x72, 0x69, 0x6e, 0x74, 0x28, 0x78, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, - 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, - 0x53, 0x69, 0x67, 0x6d, 0x6f, 0x69, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, - 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, - 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, - 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, - 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, - 0x20, 0x79, 0x20, 0x3d, 0x20, 0x31, 0x20, 0x2f, 0x20, 0x28, 0x31, 0x20, - 0x2b, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x65, 0x78, 0x70, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, - 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x62, 0x73, 0x28, 0x78, 0x29, 0x29, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x28, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x20, 0x3f, 0x20, 0x79, - 0x20, 0x3a, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, - 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x20, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, - 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, - 0x5f, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, - 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x21, 0x3d, 0x20, - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, - 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, - 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x78, 0x2e, 0x72, - 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x26, - 0x26, 0x20, 0x78, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x20, 0x3d, - 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, - 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2f, 0x20, 0x41, - 0x62, 0x73, 0x28, 0x29, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, - 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, - 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, - 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x3e, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, - 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x28, 0x78, 0x20, 0x3e, - 0x20, 0x54, 0x28, 0x30, 0x2e, 0x66, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x28, - 0x78, 0x20, 0x3c, 0x20, 0x54, 0x28, 0x30, 0x2e, 0x66, 0x29, 0x29, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x28, 0x78, 0x20, 0x3e, 0x20, 0x54, 0x28, 0x30, - 0x29, 0x29, 0x20, 0x2d, 0x20, 0x28, 0x78, 0x20, 0x3c, 0x20, 0x54, 0x28, - 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x20, 0x53, 0x69, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, - 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, - 0x64, 0x3a, 0x3a, 0x73, 0x69, 0x6e, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x20, 0x53, 0x69, 0x6e, 0x68, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, - 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, - 0x74, 0x64, 0x3a, 0x3a, 0x73, 0x69, 0x6e, 0x68, 0x28, 0x78, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x20, 0x53, 0x71, 0x75, 0x61, 0x72, 0x65, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, - 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, - 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2a, - 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x53, 0x71, 0x72, 0x74, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, - 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, - 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x73, 0x71, 0x72, - 0x74, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, - 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x52, 0x73, 0x71, - 0x72, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x20, 0x2f, 0x20, 0x53, - 0x71, 0x72, 0x74, 0x7b, 0x7d, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, - 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, - 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, - 0x73, 0x71, 0x72, 0x74, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, - 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, - 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, - 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, - 0x36, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x73, 0x71, 0x72, 0x74, - 0x28, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x72, 0x73, 0x71, 0x72, 0x74, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x54, 0x61, 0x6e, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, - 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, - 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, - 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x61, 0x6e, - 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x54, 0x61, 0x6e, 0x68, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x61, - 0x6e, 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, - 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x54, 0x6f, - 0x46, 0x50, 0x38, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x38, - 0x5f, 0x74, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, - 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x5f, 0x6e, 0x76, - 0x5f, 0x66, 0x70, 0x38, 0x5f, 0x65, 0x34, 0x6d, 0x33, 0x28, 0x78, 0x29, - 0x2e, 0x5f, 0x5f, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, - 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x46, 0x72, 0x6f, - 0x6d, 0x46, 0x50, 0x38, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x66, 0x6c, 0x6f, 0x61, - 0x74, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, - 0x28, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x78, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x2a, 0x28, 0x5f, 0x5f, 0x6e, - 0x76, 0x5f, 0x66, 0x70, 0x38, 0x5f, 0x65, 0x34, 0x6d, 0x33, 0x2a, 0x29, - 0x28, 0x26, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, - 0x3b, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, - 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 -}; - -constexpr char jit_source_utils[] = { - 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, - 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, - 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6d, 0x75, - 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x2d, - 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x2c, 0x20, 0x75, - 0x74, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, - 0x74, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, - 0x20, 0x62, 0x6f, 0x74, 0x68, 0x0a, 0x2f, 0x2f, 0x20, 0x68, 0x6f, 0x73, - 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x70, 0x75, 0x74, 0x20, - 0x68, 0x65, 0x72, 0x65, 0x2e, 0x0a, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, - 0x53, 0x65, 0x65, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x61, 0x62, 0x6f, - 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x74, 0x3a, 0x0a, - 0x2f, 0x2f, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x64, - 0x6f, 0x63, 0x73, 0x2e, 0x6e, 0x76, 0x69, 0x64, 0x69, 0x61, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, 0x6e, 0x76, 0x72, 0x74, - 0x63, 0x2f, 0x23, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x0a, - 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, - 0x65, 0x0a, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, - 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, - 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x63, 0x75, 0x68, - 0x22, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, - 0x6d, 0x6c, 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, - 0x63, 0x75, 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x68, 0x22, 0x0a, 0x0a, 0x23, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, - 0x61, 0x5f, 0x62, 0x66, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, - 0x5f, 0x66, 0x70, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, - 0x73, 0x74, 0x64, 0x2f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3e, 0x0a, 0x23, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, - 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, - 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, - 0x63, 0x75, 0x64, 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x74, 0x75, 0x70, - 0x6c, 0x65, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, - 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x43, 0x55, 0x44, 0x41, 0x20, - 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x75, 0x74, 0x69, 0x6c, 0x73, - 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x0a, 0x2f, 0x2f, - 0x20, 0x54, 0x6f, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x73, 0x68, 0x61, - 0x70, 0x65, 0x2f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x74, - 0x6f, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x76, 0x69, - 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x6d, - 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, - 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, - 0x65, 0x0a, 0x2f, 0x2f, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x61, - 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x68, - 0x61, 0x70, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, - 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, - 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4d, 0x41, 0x58, 0x5f, - 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x3b, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, - 0x20, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, - 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2c, - 0x20, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x3b, 0x0a, - 0x0a, 0x2f, 0x2f, 0x20, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x7a, - 0x65, 0x64, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x2f, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, - 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, - 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x61, 0x73, 0x28, 0x73, - 0x69, 0x7a, 0x65, 0x6f, 0x66, 0x28, 0x54, 0x29, 0x20, 0x2a, 0x20, 0x4e, - 0x29, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x76, 0x61, - 0x6c, 0x5b, 0x4e, 0x5d, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x26, 0x20, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5b, 0x5d, 0x28, 0x69, 0x6e, - 0x74, 0x20, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x61, 0x6c, 0x5b, 0x69, 0x5d, - 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5b, 0x5d, 0x28, 0x69, 0x6e, 0x74, - 0x20, 0x69, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, - 0x61, 0x6c, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, - 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, - 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, - 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, - 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, - 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x28, 0x54, 0x2a, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x72, 0x65, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, - 0x74, 0x3c, 0x75, 0x69, 0x6e, 0x74, 0x70, 0x74, 0x72, 0x5f, 0x74, 0x3e, - 0x28, 0x78, 0x29, 0x20, 0x25, 0x20, 0x28, 0x4e, 0x20, 0x2a, 0x20, 0x73, - 0x69, 0x7a, 0x65, 0x6f, 0x66, 0x28, 0x54, 0x29, 0x29, 0x29, 0x20, 0x3d, - 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, - 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, - 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, - 0x4e, 0x3e, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, - 0x70, 0x74, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, - 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, - 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, - 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x5b, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5d, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, - 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, - 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x41, - 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, 0x70, 0x74, 0x72, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, - 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x61, 0x6c, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, 0x74, 0x72, - 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, - 0x6f, 0x2a, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x3d, 0x20, 0x72, 0x65, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, - 0x73, 0x74, 0x3c, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x41, 0x6c, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, - 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x66, 0x72, 0x6f, 0x6d, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5d, - 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, - 0x20, 0x76, 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, - 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, - 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x3b, 0x20, 0x2b, 0x2b, - 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, - 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x74, 0x72, 0x5b, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, - 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x3b, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, - 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, - 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x69, 0x7a, 0x65, - 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x41, 0x6c, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, - 0x2c, 0x20, 0x4e, 0x3e, 0x0a, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x76, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, - 0x2a, 0x20, 0x70, 0x74, 0x72, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, - 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, - 0x53, 0x69, 0x7a, 0x65, 0x54, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x20, - 0x54, 0x20, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x61, - 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, 0x74, - 0x72, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x3c, - 0x3d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, 0x66, 0x72, 0x6f, 0x6d, - 0x20, 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, - 0x70, 0x74, 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x5b, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, - 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x41, 0x6c, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, - 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x20, 0x76, 0x3b, 0x0a, 0x23, 0x70, 0x72, - 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, - 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, - 0x4e, 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x28, - 0x4e, 0x20, 0x2a, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, - 0x20, 0x69, 0x29, 0x20, 0x3c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x3f, - 0x20, 0x70, 0x74, 0x72, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, - 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x5d, 0x20, 0x3a, 0x20, 0x66, - 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x76, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, - 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x20, 0x53, 0x69, 0x7a, 0x65, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, - 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x5f, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x20, 0x6c, - 0x6f, 0x61, 0x64, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, - 0x20, 0x70, 0x74, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, - 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x69, 0x7a, 0x65, 0x54, - 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, - 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x66, 0x61, 0x6c, - 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, - 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x20, 0x26, 0x26, - 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x31, - 0x20, 0x26, 0x26, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, - 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x3c, 0x3d, 0x20, - 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x3d, - 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, - 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, - 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, - 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x5b, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, - 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x41, 0x6c, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, - 0x20, 0x4e, 0x3e, 0x20, 0x76, 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, - 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x3b, - 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x76, 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x4e, 0x20, 0x2a, 0x20, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, 0x20, 0x69, 0x29, 0x20, - 0x3c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x3f, 0x20, 0x70, 0x74, 0x72, - 0x5b, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x28, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, - 0x69, 0x29, 0x5d, 0x20, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, - 0x63, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, - 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x0a, 0x75, - 0x6e, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x54, 0x2a, 0x20, 0x70, 0x74, - 0x72, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x26, 0x20, 0x76, - 0x65, 0x63, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, - 0x2a, 0x20, 0x74, 0x6f, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, - 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, - 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6f, 0x5b, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x3b, 0x0a, - 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, - 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, - 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x54, 0x2a, 0x20, 0x70, - 0x74, 0x72, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, - 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x26, 0x20, - 0x76, 0x65, 0x63, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, - 0x28, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x3c, - 0x4e, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, 0x74, 0x6f, 0x20, - 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, - 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x41, 0x6c, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, - 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x74, 0x6f, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x3b, 0x0a, 0x20, 0x20, 0x7d, - 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, - 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, - 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, - 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x70, 0x74, 0x72, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x5d, 0x20, 0x3d, - 0x20, 0x76, 0x65, 0x63, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, - 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x53, 0x69, 0x7a, 0x65, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, - 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, - 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x54, 0x2a, 0x20, 0x70, 0x74, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x26, 0x20, - 0x76, 0x65, 0x63, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x69, 0x7a, - 0x65, 0x54, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x20, - 0x26, 0x26, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, - 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x3c, 0x3d, 0x20, 0x73, - 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, - 0x75, 0x74, 0x6f, 0x2a, 0x20, 0x74, 0x6f, 0x20, 0x3d, 0x20, 0x72, 0x65, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, - 0x73, 0x74, 0x3c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, - 0x28, 0x70, 0x74, 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, - 0x6f, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5d, 0x20, 0x3d, 0x20, - 0x76, 0x65, 0x63, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, - 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, - 0x28, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, - 0x2b, 0x20, 0x69, 0x29, 0x20, 0x3c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, - 0x26, 0x26, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x3b, 0x20, 0x2b, 0x2b, - 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, - 0x74, 0x72, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2a, 0x20, - 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, - 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, - 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, - 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x69, 0x7a, 0x65, - 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, - 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, 0x2a, 0x20, 0x70, - 0x74, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, - 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x41, - 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x26, 0x20, 0x76, 0x65, 0x63, 0x2c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x69, 0x7a, 0x65, 0x54, 0x20, 0x73, - 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, - 0x36, 0x34, 0x5f, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, - 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, - 0x74, 0x72, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x20, - 0x3c, 0x3d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x26, 0x26, 0x20, 0x73, - 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, - 0x74, 0x6f, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x41, 0x6c, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, - 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6f, 0x5b, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, - 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x29, 0x20, - 0x3c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x26, 0x26, 0x20, 0x69, 0x20, - 0x3c, 0x20, 0x4e, 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x74, 0x72, 0x5b, 0x73, 0x74, - 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x29, 0x5d, - 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x54, - 0x79, 0x70, 0x65, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x75, - 0x74, 0x69, 0x6c, 0x73, 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, - 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x76, - 0x6f, 0x69, 0x64, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, - 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, - 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, - 0x54, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, - 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, - 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, - 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, - 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, - 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, - 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x3e, 0x20, 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, - 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, - 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3e, - 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, - 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6d, 0x61, - 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, - 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, - 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x28, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, - 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6d, 0x69, 0x6e, 0x28, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x20, 0x2d, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, - 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, - 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, - 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, - 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, - 0x3e, 0x3a, 0x3a, 0x6c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x28, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, - 0x43, 0x55, 0x44, 0x41, 0x20, 0x31, 0x31, 0x20, 0x64, 0x6f, 0x65, 0x73, - 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x68, 0x6f, - 0x73, 0x74, 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x72, 0x69, 0x74, - 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x6f, 0x72, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x68, 0x61, 0x6c, - 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x0a, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, - 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, - 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, - 0x20, 0x7c, 0x7c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, - 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, - 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, - 0x36, 0x3e, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, - 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, - 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, - 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, - 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, - 0x3a, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x28, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, - 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6d, 0x69, - 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x43, 0x55, - 0x44, 0x41, 0x52, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, - 0x20, 0x3c, 0x20, 0x31, 0x32, 0x30, 0x30, 0x30, 0x20, 0x26, 0x26, 0x20, - 0x5f, 0x5f, 0x43, 0x55, 0x44, 0x41, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x5f, - 0x5f, 0x20, 0x3c, 0x20, 0x38, 0x30, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x2d, 0x63, 0x75, 0x64, 0x61, - 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, - 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, - 0x74, 0x79, 0x28, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x2d, - 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, - 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, - 0x74, 0x79, 0x28, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, - 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, - 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, - 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, - 0x0a, 0x23, 0x69, 0x66, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, - 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x20, 0x3c, 0x20, 0x31, 0x32, - 0x30, 0x30, 0x30, 0x20, 0x26, 0x26, 0x20, 0x5f, 0x5f, 0x43, 0x55, 0x44, - 0x41, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x5f, 0x20, 0x3c, 0x20, 0x38, - 0x30, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x73, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x3a, 0x3a, - 0x6c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x28, 0x29, 0x3b, 0x0a, 0x23, 0x65, - 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, - 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6c, 0x6f, 0x77, - 0x65, 0x73, 0x74, 0x28, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, - 0x66, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x3e, 0x0a, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, - 0x62, 0x6f, 0x6f, 0x6c, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, - 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, - 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, - 0x6f, 0x6f, 0x6c, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, - 0x72, 0x75, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, - 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, - 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, - 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, - 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, - 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x73, 0x3c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, - 0x3c, 0x54, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, - 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x6d, - 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x2c, - 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, - 0x6d, 0x61, 0x78, 0x28, 0x29, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, - 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, - 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x5f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, - 0x3c, 0x54, 0x3e, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, - 0x69, 0x6e, 0x28, 0x29, 0x2c, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, - 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x7d, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x74, 0x69, 0x6c, 0x73, 0x0a, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x3d, 0x20, 0x69, 0x6e, - 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, - 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x49, 0x64, - 0x78, 0x54, 0x0a, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, - 0x6f, 0x63, 0x28, 0x49, 0x64, 0x78, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, - 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, - 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, - 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, - 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, - 0x6e, 0x64, 0x69, 0x6d, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x49, 0x64, - 0x78, 0x54, 0x20, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, - 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, - 0x20, 0x3d, 0x20, 0x6e, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x3b, - 0x20, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x65, - 0x6c, 0x65, 0x6d, 0x20, 0x3e, 0x20, 0x30, 0x3b, 0x20, 0x2d, 0x2d, 0x69, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x20, - 0x2b, 0x3d, 0x20, 0x28, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x25, 0x20, 0x73, - 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x29, 0x20, 0x2a, 0x20, 0x49, - 0x64, 0x78, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, - 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, - 0x6d, 0x20, 0x2f, 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, - 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x63, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, - 0x2f, 0x2f, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x20, - 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x64, 0x69, - 0x6d, 0x20, 0x69, 0x73, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x61, - 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, - 0x54, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, - 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, - 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x49, 0x64, 0x78, 0x54, 0x0a, 0x65, 0x6c, 0x65, - 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, 0x28, - 0x49, 0x64, 0x78, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, - 0x61, 0x70, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, - 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, - 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, - 0x54, 0x20, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x23, - 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, - 0x6c, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, - 0x20, 0x69, 0x20, 0x3d, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x20, 0x2d, 0x20, - 0x31, 0x3b, 0x20, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x2d, - 0x2d, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, - 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x25, - 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x29, 0x20, 0x2a, - 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, - 0x6c, 0x65, 0x6d, 0x20, 0x2f, 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, - 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x63, 0x3b, 0x0a, 0x7d, - 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, - 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x74, 0x79, - 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, - 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, 0x0a, 0x69, - 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, - 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, - 0x3a, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2c, - 0x20, 0x49, 0x64, 0x78, 0x54, 0x3e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, - 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, 0x28, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, - 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, - 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x61, 0x5f, 0x73, 0x74, 0x72, - 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, - 0x20, 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x61, 0x5f, 0x6c, - 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x49, 0x64, - 0x78, 0x54, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, - 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, - 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, - 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x4e, 0x44, 0x49, 0x4d, - 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x20, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, - 0x3b, 0x20, 0x2d, 0x2d, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, - 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x25, 0x20, 0x73, 0x68, - 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, - 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, - 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, - 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, - 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x62, 0x5f, 0x73, 0x74, 0x72, - 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2f, 0x3d, 0x20, 0x73, 0x68, - 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6d, 0x61, 0x6b, 0x65, - 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x61, 0x5f, 0x6c, 0x6f, 0x63, - 0x2c, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, - 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, - 0x6e, 0x74, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x74, 0x79, 0x70, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x3d, - 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, 0x0a, 0x69, 0x6e, - 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, - 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, - 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, - 0x74, 0x75, 0x70, 0x6c, 0x65, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, - 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, 0x49, 0x64, 0x78, 0x54, 0x3e, 0x20, - 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, - 0x6e, 0x64, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, - 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, - 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, - 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, - 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, - 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, - 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x61, 0x5f, 0x6c, 0x6f, - 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, - 0x54, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, - 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x63, 0x5f, 0x6c, 0x6f, - 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, - 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, - 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x20, 0x69, - 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x2d, 0x2d, 0x69, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, - 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, - 0x20, 0x25, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, - 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, - 0x49, 0x64, 0x78, 0x54, 0x28, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, - 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, - 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, - 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x5f, 0x6c, 0x6f, 0x63, - 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, - 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x63, 0x5f, 0x73, 0x74, 0x72, - 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2f, 0x3d, 0x20, 0x73, 0x68, - 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, - 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6d, 0x61, 0x6b, 0x65, - 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x61, 0x5f, 0x6c, 0x6f, 0x63, - 0x2c, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x2c, 0x20, 0x63, 0x5f, 0x6c, - 0x6f, 0x63, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x3d, 0x20, 0x69, 0x6e, - 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, - 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x75, - 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x75, 0x70, - 0x6c, 0x65, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, 0x49, 0x64, 0x78, - 0x54, 0x3e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, - 0x6f, 0x63, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, - 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, - 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, - 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, - 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, - 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, - 0x20, 0x6e, 0x64, 0x69, 0x6d, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x49, - 0x64, 0x78, 0x54, 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x62, 0x5f, - 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, - 0x6e, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x20, 0x69, 0x20, - 0x3e, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x2d, 0x2d, 0x69, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, - 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, - 0x25, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, - 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, - 0x64, 0x78, 0x54, 0x28, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, - 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, - 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x62, - 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2f, - 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, - 0x6d, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x61, - 0x5f, 0x6c, 0x6f, 0x63, 0x2c, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x29, - 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x49, 0x64, 0x78, 0x54, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, - 0x5f, 0x74, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, - 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, - 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x3c, - 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, - 0x49, 0x64, 0x78, 0x54, 0x3e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, - 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x49, - 0x64, 0x78, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, - 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, - 0x74, 0x2a, 0x20, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, - 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x62, 0x5f, 0x73, - 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, - 0x74, 0x2a, 0x20, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x64, - 0x69, 0x6d, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, - 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, - 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, - 0x20, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, - 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, - 0x20, 0x3d, 0x20, 0x6e, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x3b, - 0x20, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x2d, 0x2d, 0x69, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, - 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x65, 0x6c, - 0x65, 0x6d, 0x20, 0x25, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, - 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, - 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, - 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x61, 0x5f, 0x73, 0x74, 0x72, - 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, - 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, - 0x54, 0x28, 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, - 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x5f, 0x6c, - 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, - 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x63, 0x5f, 0x73, - 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2f, 0x3d, 0x20, - 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, - 0x7d, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, - 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6d, 0x61, - 0x6b, 0x65, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x61, 0x5f, 0x6c, - 0x6f, 0x63, 0x2c, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x2c, 0x20, 0x63, - 0x5f, 0x6c, 0x6f, 0x63, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x45, 0x6c, 0x65, - 0x6d, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x63, 0x20, 0x69, 0x6e, 0x20, - 0x61, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x20, 0x75, 0x74, 0x69, 0x6c, 0x73, - 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, - 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x0a, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, - 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, - 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x7a, - 0x65, 0x5f, 0x74, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, - 0x4c, 0x6f, 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, - 0x4c, 0x6f, 0x63, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, - 0x64, 0x69, 0x6d, 0x3b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x6f, 0x70, 0x65, - 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, 0x4c, 0x6f, 0x63, 0x3c, 0x44, - 0x49, 0x4d, 0x20, 0x2d, 0x20, 0x31, 0x2c, 0x20, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x6c, 0x2c, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, - 0x3e, 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, - 0x65, 0x72, 0x3b, 0x0a, 0x20, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x54, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x7b, 0x30, 0x7d, 0x3b, - 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x7b, 0x30, 0x7d, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x4c, 0x6f, 0x6f, 0x70, 0x65, - 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, 0x4c, 0x6f, 0x63, 0x28, 0x69, - 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, 0x29, 0x20, 0x3a, 0x20, 0x64, 0x69, - 0x6d, 0x28, 0x64, 0x69, 0x6d, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x6e, 0x65, - 0x72, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x28, 0x64, 0x69, 0x6d, - 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x7d, 0x0a, 0x0a, 0x20, 0x20, - 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, - 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, - 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, - 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, - 0x28, 0x64, 0x69, 0x6d, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, 0x3d, 0x20, - 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, - 0x64, 0x65, 0x73, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x5d, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, - 0x65, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x65, - 0x72, 0x2e, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x73, 0x68, 0x61, 0x70, 0x65, - 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, - 0x70, 0x65, 0x72, 0x2e, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, - 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, - 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x69, 0x6e, - 0x74, 0x20, 0x6e, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, - 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, - 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x64, 0x69, 0x6d, - 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x6e, - 0x20, 0x2a, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x28, 0x73, - 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, - 0x20, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x66, 0x20, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, - 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, - 0x31, 0x5d, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x6e, 0x74, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x3d, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2d, 0x20, 0x73, 0x68, 0x61, 0x70, - 0x65, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x20, 0x3e, 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, - 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x2e, 0x6e, 0x65, - 0x78, 0x74, 0x28, 0x31, 0x20, 0x2b, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x20, 0x2f, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x64, 0x69, 0x6d, - 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x2c, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, - 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x20, 0x3d, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x25, 0x20, - 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, - 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, - 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, - 0x70, 0x65, 0x72, 0x2e, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x73, 0x68, 0x61, - 0x70, 0x65, 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, - 0x6c, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x2e, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, - 0x28, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x3e, 0x20, 0x30, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x65, - 0x78, 0x74, 0x28, 0x65, 0x78, 0x74, 0x72, 0x61, 0x2c, 0x20, 0x73, 0x68, - 0x61, 0x70, 0x65, 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, - 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x4f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, - 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, 0x4c, 0x6f, - 0x63, 0x3c, 0x31, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x20, 0x4f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, 0x3b, 0x0a, 0x20, 0x20, 0x4f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x7b, 0x30, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7b, 0x30, 0x7d, 0x3b, 0x0a, 0x0a, 0x20, - 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, - 0x4c, 0x6f, 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, - 0x4c, 0x6f, 0x63, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, 0x29, - 0x20, 0x3a, 0x20, 0x64, 0x69, 0x6d, 0x28, 0x64, 0x69, 0x6d, 0x29, 0x20, - 0x7b, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, - 0x78, 0x74, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, - 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, - 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2b, 0x2b, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x64, 0x69, 0x6d, 0x20, - 0x3e, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x65, 0x6c, - 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x3c, 0x4f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x54, 0x3e, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x2c, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x73, 0x74, 0x72, - 0x69, 0x64, 0x65, 0x73, 0x2c, 0x20, 0x64, 0x69, 0x6d, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, - 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x30, 0x5d, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, - 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x28, - 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, - 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, - 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x20, 0x2b, 0x3d, 0x20, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x66, 0x20, 0x28, 0x64, 0x69, 0x6d, 0x20, 0x3e, 0x20, 0x31, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, - 0x5f, 0x6c, 0x6f, 0x63, 0x3c, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, - 0x3e, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x73, 0x68, 0x61, - 0x70, 0x65, 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, - 0x20, 0x64, 0x69, 0x6d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2a, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x30, - 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, - 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x5f, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, - 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, - 0x6d, 0x54, 0x6f, 0x4c, 0x6f, 0x63, 0x3c, 0x31, 0x2c, 0x20, 0x66, 0x61, - 0x6c, 0x73, 0x65, 0x2c, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, - 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x54, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x7b, 0x30, 0x7d, 0x3b, - 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x5f, 0x20, 0x4c, 0x6f, 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, - 0x6d, 0x54, 0x6f, 0x4c, 0x6f, 0x63, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x20, - 0x7b, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, - 0x78, 0x74, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, - 0x2a, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, - 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x30, - 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, - 0x69, 0x64, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x69, 0x6e, 0x74, 0x20, - 0x6e, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, - 0x2a, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, - 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, - 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x6e, 0x20, 0x2a, 0x20, 0x4f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, - 0x65, 0x73, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, - 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x5f, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, - 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, - 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00 -}; - -} // namespace mlx::core diff --git a/Source/Cmlx/mlx-generated/cuda/cuda_jit_sources.h b/Source/Cmlx/mlx-generated/cuda/cuda_jit_sources.h new file mode 100644 index 00000000..7d14d04b --- /dev/null +++ b/Source/Cmlx/mlx-generated/cuda/cuda_jit_sources.h @@ -0,0 +1,4295 @@ +#pragma once + +namespace mlx::core { + +constexpr char jit_source_atomic_ops[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, + 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, + 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, + 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x66, 0x70, 0x31, 0x36, + 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, + 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, + 0x64, 0x61, 0x2f, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x3e, 0x0a, 0x0a, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, + 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, + 0x7b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, + 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x54, + 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x3c, 0x54, + 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x74, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x3e, 0x20, 0x72, 0x65, 0x66, 0x28, 0x2a, 0x6f, 0x75, + 0x74, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x66, 0x20, 0x2b, 0x3d, + 0x20, 0x76, 0x61, 0x6c, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, + 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, + 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x61, 0x74, 0x6f, 0x6d, 0x69, + 0x63, 0x5f, 0x72, 0x65, 0x66, 0x3c, 0x54, 0x2c, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x3e, 0x20, + 0x72, 0x65, 0x66, 0x28, 0x2a, 0x6f, 0x75, 0x74, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x54, 0x20, 0x6f, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x66, + 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x77, + 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x21, 0x72, 0x65, 0x66, 0x2e, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x28, 0x6f, + 0x6c, 0x64, 0x2c, 0x20, 0x6f, 0x6c, 0x64, 0x20, 0x2a, 0x20, 0x76, 0x61, + 0x6c, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, + 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, + 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x54, 0x2a, 0x20, + 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x61, 0x74, + 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x3c, 0x54, 0x2c, 0x20, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x3e, 0x20, 0x72, 0x65, 0x66, 0x28, 0x2a, 0x6f, 0x75, 0x74, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x66, 0x2e, 0x66, 0x65, 0x74, 0x63, + 0x68, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, + 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, + 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x54, + 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x3c, 0x54, + 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x74, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x3e, 0x20, 0x72, 0x65, 0x66, 0x28, 0x2a, 0x6f, 0x75, + 0x74, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x66, 0x2e, 0x66, 0x65, + 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x76, 0x61, 0x6c, 0x29, + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x53, 0x6f, 0x6d, 0x65, + 0x68, 0x6f, 0x77, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x61, 0x74, + 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x66, 0x20, 0x64, 0x6f, 0x65, + 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x20, 0x61, 0x64, 0x64, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, + 0x63, 0x5f, 0x61, 0x64, 0x64, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x6c, 0x28, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, + 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x72, 0x65, + 0x66, 0x3c, 0x54, 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x74, + 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x3e, 0x20, 0x72, 0x65, 0x66, 0x28, + 0x2a, 0x6f, 0x75, 0x74, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x6f, + 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x66, 0x2e, 0x6c, 0x6f, 0x61, + 0x64, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, + 0x20, 0x28, 0x21, 0x72, 0x65, 0x66, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x61, + 0x72, 0x65, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x28, 0x6f, 0x6c, 0x64, 0x2c, 0x20, + 0x6f, 0x6c, 0x64, 0x20, 0x2b, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, 0x6f, 0x6d, + 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, + 0x66, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, + 0x6c, 0x66, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x41, 0x64, 0x64, 0x28, 0x6f, 0x75, + 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, + 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, + 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x6f, + 0x75, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x36, + 0x34, 0x5f, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x5f, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x28, 0x6f, 0x75, 0x74, 0x2c, + 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x61, 0x74, 0x6f, + 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x5f, 0x5f, 0x6e, 0x76, + 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x2a, 0x20, 0x6f, + 0x75, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x31, 0x36, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x7b, + 0x0a, 0x23, 0x69, 0x66, 0x20, 0x5f, 0x5f, 0x43, 0x55, 0x44, 0x41, 0x5f, + 0x41, 0x52, 0x43, 0x48, 0x5f, 0x5f, 0x20, 0x3c, 0x20, 0x38, 0x30, 0x30, + 0x0a, 0x20, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, + 0x64, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x28, 0x6f, 0x75, + 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6c, + 0x73, 0x65, 0x0a, 0x20, 0x20, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x41, + 0x64, 0x64, 0x28, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, + 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x7d, 0x0a, 0x0a, + 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, + 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00, +}; + +constexpr char jit_source_binary_ops[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x6e, 0x61, 0x72, 0x79, + 0x5f, 0x6f, 0x70, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3e, + 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, + 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, + 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, + 0x41, 0x64, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, + 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x79, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x20, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x44, 0x69, + 0x76, 0x69, 0x64, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, + 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x6c, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, + 0x20, 0x2f, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x72, 0x75, 0x6e, 0x63, + 0x28, 0x78, 0x20, 0x2f, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, + 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2f, 0x20, 0x79, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x3c, 0x54, + 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x69, 0x73, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, + 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x78, + 0x20, 0x25, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, 0x20, 0x21, 0x3d, 0x20, 0x30, + 0x20, 0x26, 0x26, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x20, 0x30, 0x20, 0x21, + 0x3d, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x20, + 0x2b, 0x3d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x25, 0x20, 0x79, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x25, 0x20, 0x79, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x72, 0x20, 0x3d, 0x20, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x66, + 0x6d, 0x6f, 0x64, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, 0x20, 0x21, + 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x20, + 0x30, 0x20, 0x21, 0x3d, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x20, 0x3d, 0x20, 0x72, 0x20, 0x2b, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x71, 0x75, 0x61, 0x6c, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, + 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3d, 0x3d, 0x20, + 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4e, 0x61, 0x4e, 0x45, 0x71, 0x75, + 0x61, 0x6c, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, + 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3d, 0x3d, 0x20, 0x79, 0x20, 0x7c, + 0x7c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x28, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, + 0x6c, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, 0x20, 0x69, 0x73, 0x6e, 0x61, + 0x6e, 0x28, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, + 0x26, 0x26, 0x20, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x69, + 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x73, 0x6e, + 0x61, 0x6e, 0x28, 0x79, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, + 0x29, 0x20, 0x7c, 0x7c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, + 0x20, 0x3d, 0x3d, 0x20, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, + 0x20, 0x26, 0x26, 0x20, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, + 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, 0x20, 0x69, + 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x79, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, + 0x29, 0x29, 0x29, 0x20, 0x7c, 0x7c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, + 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, + 0x20, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x79, 0x2e, 0x72, 0x65, 0x61, + 0x6c, 0x28, 0x29, 0x29, 0x20, 0x26, 0x26, 0x20, 0x78, 0x2e, 0x69, 0x6d, + 0x61, 0x67, 0x28, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x79, 0x2e, 0x69, 0x6d, + 0x61, 0x67, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3d, + 0x3d, 0x20, 0x79, 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x69, 0x73, 0x6e, 0x61, + 0x6e, 0x28, 0x78, 0x29, 0x20, 0x26, 0x26, 0x20, 0x69, 0x73, 0x6e, 0x61, + 0x6e, 0x28, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, + 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3e, 0x20, 0x79, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x45, + 0x71, 0x75, 0x61, 0x6c, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, + 0x20, 0x3e, 0x3d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x65, + 0x73, 0x73, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, + 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3c, + 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x65, 0x73, 0x73, 0x45, + 0x71, 0x75, 0x61, 0x6c, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, + 0x20, 0x3c, 0x3d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, + 0x67, 0x41, 0x64, 0x64, 0x45, 0x78, 0x70, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, + 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, + 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x20, 0x7c, 0x7c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, + 0x6e, 0x28, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, + 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x79, 0x2e, 0x69, 0x6d, + 0x61, 0x67, 0x28, 0x29, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x73, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x3a, 0x3a, + 0x71, 0x75, 0x69, 0x65, 0x74, 0x5f, 0x4e, 0x61, 0x4e, 0x28, 0x29, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x73, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x3a, 0x3a, 0x71, + 0x75, 0x69, 0x65, 0x74, 0x5f, 0x4e, 0x61, 0x4e, 0x28, 0x29, 0x7d, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x6d, 0x61, 0x78, 0x20, + 0x3d, 0x20, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3e, + 0x20, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3f, 0x20, + 0x78, 0x20, 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x3d, 0x20, + 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3c, 0x20, 0x79, + 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3f, 0x20, 0x78, 0x20, + 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, + 0x75, 0x74, 0x6f, 0x20, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x6c, + 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, + 0x6f, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x3d, + 0x20, 0x6d, 0x61, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, + 0x73, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x28, 0x6d, 0x69, 0x6e, 0x5f, + 0x72, 0x65, 0x61, 0x6c, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6d, 0x69, + 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x3d, 0x3d, 0x20, 0x6d, 0x61, + 0x78, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6d, + 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x3c, 0x20, 0x30, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x69, 0x6e, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x4c, + 0x6f, 0x67, 0x7b, 0x7d, 0x28, 0x45, 0x78, 0x70, 0x7b, 0x7d, 0x28, 0x6d, + 0x69, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x45, 0x78, 0x70, 0x7b, 0x7d, 0x28, + 0x6d, 0x61, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x4c, + 0x6f, 0x67, 0x31, 0x70, 0x7b, 0x7d, 0x28, 0x45, 0x78, 0x70, 0x7b, 0x7d, + 0x28, 0x6d, 0x69, 0x6e, 0x20, 0x2d, 0x20, 0x6d, 0x61, 0x78, 0x29, 0x29, + 0x20, 0x2b, 0x20, 0x6d, 0x61, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, + 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x29, 0x20, 0x7c, + 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x79, 0x29, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x71, 0x75, + 0x69, 0x65, 0x74, 0x5f, 0x4e, 0x61, 0x4e, 0x28, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x54, 0x20, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, + 0x6d, 0x61, 0x78, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x6d, 0x69, 0x6e, 0x76, 0x61, + 0x6c, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x78, 0x2c, 0x20, 0x79, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x28, 0x6d, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x20, + 0x3d, 0x3d, 0x20, 0x2d, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x28, 0x29, 0x20, 0x7c, 0x7c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x3d, 0x20, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, + 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x79, 0x28, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3a, + 0x20, 0x54, 0x28, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, 0x20, 0x2b, 0x20, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6c, + 0x6f, 0x67, 0x31, 0x70, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x78, 0x70, 0x28, 0x6d, 0x69, 0x6e, 0x76, + 0x61, 0x6c, 0x20, 0x2d, 0x20, 0x6d, 0x61, 0x78, 0x76, 0x61, 0x6c, 0x29, + 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, + 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, + 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x78, 0x2c, 0x20, 0x79, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, + 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, + 0x6e, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, + 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x69, 0x6d, + 0x61, 0x67, 0x28, 0x29, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x78, 0x20, 0x3e, 0x20, 0x79, 0x20, 0x3f, 0x20, 0x78, 0x20, 0x3a, 0x20, + 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x29, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3e, 0x20, 0x79, 0x20, 0x3f, 0x20, + 0x78, 0x20, 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x3c, 0x54, + 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x78, 0x2c, + 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, + 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x2e, + 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x79, 0x20, 0x3f, 0x20, 0x78, 0x20, + 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x6e, 0x61, 0x6e, 0x28, 0x78, 0x29, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x79, 0x20, + 0x3f, 0x20, 0x78, 0x20, 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, + 0x6c, 0x79, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, + 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2a, 0x20, 0x79, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x4e, 0x6f, 0x74, 0x45, 0x71, 0x75, 0x61, 0x6c, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, + 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, + 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x2e, + 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x79, 0x2e, + 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x78, 0x2e, + 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x79, 0x2e, + 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, + 0x21, 0x3d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, + 0x28, 0x54, 0x20, 0x62, 0x61, 0x73, 0x65, 0x2c, 0x20, 0x54, 0x20, 0x65, + 0x78, 0x70, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, + 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, + 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x54, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x31, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x52, 0x61, 0x69, + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x20, + 0x69, 0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x28, 0x65, 0x78, 0x70, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, + 0x6c, 0x65, 0x20, 0x28, 0x65, 0x78, 0x70, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x65, + 0x78, 0x70, 0x20, 0x26, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, + 0x2a, 0x3d, 0x20, 0x62, 0x61, 0x73, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x65, 0x78, 0x70, 0x20, 0x3e, 0x3e, 0x3d, 0x20, 0x31, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, + 0x73, 0x65, 0x20, 0x2a, 0x3d, 0x20, 0x62, 0x61, 0x73, 0x65, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, + 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x70, 0x6f, + 0x77, 0x28, 0x62, 0x61, 0x73, 0x65, 0x2c, 0x20, 0x65, 0x78, 0x70, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x70, 0x6f, 0x77, 0x28, 0x62, 0x61, 0x73, 0x65, 0x2c, + 0x20, 0x65, 0x78, 0x70, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x53, 0x75, 0x62, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, + 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2d, 0x20, 0x79, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x6e, 0x64, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, + 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x26, 0x26, 0x20, 0x79, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4f, + 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, + 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x7c, 0x7c, 0x20, 0x79, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x20, 0x42, 0x69, 0x74, 0x77, 0x69, 0x73, 0x65, + 0x41, 0x6e, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, + 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x26, 0x20, 0x79, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x42, 0x69, 0x74, 0x77, 0x69, 0x73, + 0x65, 0x4f, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, + 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x7c, 0x20, 0x79, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x42, 0x69, 0x74, 0x77, 0x69, 0x73, + 0x65, 0x58, 0x6f, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, + 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x5e, 0x20, + 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x65, 0x66, 0x74, 0x53, + 0x68, 0x69, 0x66, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, + 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x3c, 0x3c, + 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x52, 0x69, 0x67, 0x68, + 0x74, 0x53, 0x68, 0x69, 0x66, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, + 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, + 0x3e, 0x3e, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x41, 0x72, + 0x63, 0x54, 0x61, 0x6e, 0x32, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, + 0x79, 0x2c, 0x20, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x74, 0x61, 0x6e, + 0x32, 0x28, 0x79, 0x2c, 0x20, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, + 0x44, 0x69, 0x76, 0x4d, 0x6f, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x3c, 0x54, 0x2c, 0x20, 0x32, 0x3e, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x2c, + 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x46, 0x6c, 0x6f, 0x6f, + 0x72, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x7b, 0x7d, 0x28, 0x78, 0x2c, + 0x20, 0x79, 0x29, 0x2c, 0x20, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x64, + 0x65, 0x72, 0x7b, 0x7d, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x7d, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x7d, 0x20, + 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, + 0x63, 0x75, 0x0a, 0x00, +}; + +constexpr char jit_source_cast_op[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, + 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, + 0x61, 0x5f, 0x62, 0x66, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, + 0x5f, 0x66, 0x70, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, + 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, + 0x0a, 0x2f, 0x2f, 0x20, 0x41, 0x6e, 0x20, 0x6f, 0x70, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x2c, 0x20, 0x77, 0x69, 0x74, + 0x68, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x20, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, + 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x44, + 0x73, 0x74, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x3d, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x3e, 0x0a, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, + 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, + 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x3b, 0x0a, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x44, + 0x73, 0x74, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x53, 0x72, 0x63, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, + 0x44, 0x73, 0x74, 0x54, 0x3e, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x43, 0x61, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, + 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x2e, 0x0a, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x2c, + 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, + 0x63, 0x61, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, + 0x72, 0x75, 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, + 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, + 0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x78, 0x2e, 0x69, + 0x6d, 0x61, 0x67, 0x28, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x62, 0x6f, 0x6f, 0x6c, + 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, + 0x54, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, + 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x73, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, + 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, + 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x28, 0x29, 0x28, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x78, 0x20, 0x3f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x7b, 0x31, 0x2c, 0x20, 0x31, 0x7d, 0x20, + 0x3a, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, + 0x54, 0x3e, 0x7b, 0x30, 0x2c, 0x20, 0x30, 0x7d, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x20, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x72, 0x79, 0x20, 0x70, 0x61, 0x72, 0x74, 0x2e, 0x0a, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x0a, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, + 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x21, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x44, 0x73, 0x74, + 0x54, 0x3e, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, + 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, + 0x3c, 0x54, 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x3b, 0x0a, 0x0a, + 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x44, 0x73, 0x74, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x61, 0x73, + 0x73, 0x65, 0x72, 0x74, 0x28, 0x21, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x44, 0x73, 0x74, 0x54, 0x3e, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, + 0x74, 0x3c, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x28, 0x78, 0x2e, 0x72, 0x65, + 0x61, 0x6c, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x20, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, + 0x20, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x53, + 0x72, 0x63, 0x54, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x21, 0x69, 0x73, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, + 0x3e, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, + 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x73, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x3c, + 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x54, 0x3e, 0x3b, 0x0a, 0x0a, 0x20, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x53, 0x72, 0x63, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x61, 0x73, 0x73, + 0x65, 0x72, 0x74, 0x28, 0x21, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x3e, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, + 0x3e, 0x7b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, + 0x74, 0x3c, 0x54, 0x3e, 0x28, 0x78, 0x29, 0x2c, 0x20, 0x30, 0x7d, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, + 0x44, 0x6f, 0x20, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x77, + 0x68, 0x65, 0x6e, 0x20, 0x6e, 0x6f, 0x20, 0x63, 0x61, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, + 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, + 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x44, 0x73, 0x74, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x44, + 0x73, 0x74, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, + 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x44, + 0x73, 0x74, 0x54, 0x3e, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, + 0x63, 0x61, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, + 0x72, 0x75, 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x53, 0x72, 0x63, 0x54, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x53, + 0x72, 0x63, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x49, 0x6e, + 0x20, 0x43, 0x55, 0x44, 0x41, 0x20, 0x31, 0x31, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, + 0x64, 0x6f, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x73, 0x6f, + 0x6d, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2c, 0x0a, 0x2f, 0x2f, + 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x66, 0x61, 0x6c, + 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x73, 0x20, 0x68, 0x65, 0x72, 0x65, 0x2e, + 0x0a, 0x23, 0x69, 0x66, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, + 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x20, 0x3c, 0x20, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, + 0x72, 0x63, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x3c, + 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x20, + 0x26, 0x26, 0x20, 0x21, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x3e, 0x20, 0x26, + 0x26, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x44, 0x73, 0x74, 0x54, + 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, 0x20, 0x7c, 0x7c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, + 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x44, 0x73, 0x74, 0x54, 0x2c, + 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x31, 0x36, 0x3e, 0x29, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, + 0x63, 0x61, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, + 0x72, 0x75, 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x44, 0x73, 0x74, 0x54, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x53, + 0x72, 0x63, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x44, 0x73, 0x74, 0x54, + 0x28, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, + 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x78, 0x29, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x61, 0x73, 0x74, + 0x4f, 0x70, 0x3c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x72, 0x63, 0x54, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x66, + 0x5f, 0x74, 0x3c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x21, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, + 0x6c, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x44, + 0x73, 0x74, 0x54, 0x3e, 0x20, 0x26, 0x26, 0x20, 0x21, 0x69, 0x73, 0x5f, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x53, 0x72, + 0x63, 0x54, 0x3e, 0x20, 0x26, 0x26, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x21, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, + 0x3c, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, + 0x66, 0x3e, 0x20, 0x26, 0x26, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x21, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, + 0x44, 0x73, 0x74, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x3e, 0x20, 0x26, 0x26, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, + 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, + 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, 0x20, 0x7c, 0x7c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, + 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x53, 0x72, 0x63, 0x54, 0x2c, 0x20, 0x5f, + 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, + 0x3e, 0x29, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x61, + 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, + 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x44, 0x73, 0x74, 0x54, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x53, 0x72, 0x63, + 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x44, 0x73, 0x74, 0x54, 0x28, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, + 0x20, 0x2f, 0x2f, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, 0x56, + 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x20, 0x3c, 0x20, 0x31, 0x32, 0x30, + 0x30, 0x30, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x48, 0x65, 0x6c, 0x70, 0x65, + 0x72, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x64, 0x75, 0x63, 0x65, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, 0x2e, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x44, 0x73, 0x74, 0x54, 0x2c, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x72, 0x63, 0x54, + 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, + 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x74, 0x6f, 0x28, 0x53, 0x72, 0x63, 0x54, 0x20, 0x78, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x43, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x3c, 0x53, 0x72, 0x63, 0x54, + 0x2c, 0x20, 0x44, 0x73, 0x74, 0x54, 0x3e, 0x7b, 0x7d, 0x28, 0x78, 0x29, + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, + 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00, +}; + +constexpr char jit_source_complex[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x2f, + 0x2f, 0x20, 0x4d, 0x61, 0x6b, 0x65, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x66, + 0x61, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x65, 0x20, 0x4c, 0x49, 0x42, 0x43, 0x55, 0x44, 0x41, 0x43, 0x58, + 0x58, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x4d, + 0x50, 0x4c, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4d, 0x50, + 0x4c, 0x45, 0x58, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x53, 0x0a, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, 0x73, + 0x74, 0x64, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x73, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, + 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x54, + 0x4f, 0x44, 0x4f, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, + 0x72, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x66, 0x61, + 0x73, 0x74, 0x65, 0x72, 0x20, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x68, 0x61, 0x73, 0x20, 0x74, 0x6f, + 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x20, + 0x74, 0x6f, 0x20, 0x43, 0x2b, 0x2b, 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, + 0x61, 0x72, 0x64, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x3c, 0x54, 0x3e, 0x3b, 0x0a, 0x0a, 0x75, 0x73, 0x69, + 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x36, 0x34, + 0x5f, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x5f, 0x74, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x3b, 0x0a, 0x75, + 0x73, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x31, 0x32, 0x38, 0x5f, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, + 0x3e, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x69, 0x73, 0x5f, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x20, 0x3a, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x66, 0x61, 0x6c, + 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, + 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x3c, + 0x54, 0x3e, 0x3e, 0x20, 0x3a, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x72, 0x75, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x20, 0x7b, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x62, + 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x78, 0x5f, 0x76, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, + 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x25, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, + 0x20, 0x61, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x62, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x61, 0x2e, + 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x6c, 0x6f, + 0x6f, 0x72, 0x28, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, + 0x2f, 0x20, 0x62, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x20, + 0x2a, 0x20, 0x62, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x54, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x61, 0x2e, 0x69, 0x6d, + 0x61, 0x67, 0x28, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x6c, 0x6f, 0x6f, 0x72, + 0x28, 0x61, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x20, 0x2f, 0x20, + 0x62, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x29, 0x20, 0x2a, 0x20, + 0x62, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x7b, 0x72, 0x2c, 0x20, 0x69, + 0x7d, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, + 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3e, 0x28, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x61, + 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, + 0x54, 0x3e, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x61, 0x2e, 0x72, 0x65, 0x61, 0x6c, + 0x28, 0x29, 0x20, 0x3e, 0x20, 0x62, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, + 0x29, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x61, 0x2e, 0x72, 0x65, 0x61, + 0x6c, 0x28, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x62, 0x2e, 0x72, 0x65, 0x61, + 0x6c, 0x28, 0x29, 0x20, 0x26, 0x26, 0x20, 0x61, 0x2e, 0x69, 0x6d, 0x61, + 0x67, 0x28, 0x29, 0x20, 0x3e, 0x20, 0x62, 0x2e, 0x69, 0x6d, 0x61, 0x67, + 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, + 0x6c, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3c, 0x28, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, + 0x20, 0x61, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, + 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x3e, 0x28, 0x62, 0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0a, + 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, + 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3c, 0x3d, 0x28, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x61, 0x2c, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, + 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x21, 0x28, 0x61, 0x20, 0x3e, 0x20, 0x62, 0x29, 0x3b, + 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, + 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x3e, 0x3d, 0x28, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x61, 0x2c, + 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, + 0x3e, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x21, 0x28, 0x61, 0x20, 0x3c, 0x20, 0x62, 0x29, + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, + 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00, +}; + +constexpr char jit_source_config[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, + 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x69, 0x73, + 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x62, 0x6f, 0x74, + 0x68, 0x20, 0x43, 0x55, 0x44, 0x41, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, + 0x6c, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x68, + 0x6f, 0x73, 0x74, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x43, 0x2b, 0x2b, + 0x20, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, + 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x2f, 0x2f, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, + 0x20, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, + 0x6f, 0x66, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, + 0x61, 0x73, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x0a, 0x23, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x44, + 0x49, 0x4d, 0x20, 0x31, 0x30, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x41, 0x6c, + 0x6c, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x4e, + 0x56, 0x49, 0x44, 0x49, 0x41, 0x20, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, + 0x72, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x78, + 0x65, 0x64, 0x20, 0x33, 0x32, 0x20, 0x77, 0x61, 0x72, 0x70, 0x20, 0x73, + 0x69, 0x7a, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x6f, 0x75, 0x67, 0x68, 0x20, + 0x61, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x2d, 0x69, 0x6e, 0x0a, 0x2f, + 0x2f, 0x20, 0x77, 0x61, 0x72, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x76, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x78, 0x69, 0x73, + 0x74, 0x73, 0x2c, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x74, + 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x2d, 0x74, + 0x69, 0x6d, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x65, 0x20, 0x57, 0x41, 0x52, 0x50, 0x5f, 0x53, 0x49, 0x5a, 0x45, + 0x20, 0x33, 0x32, 0x0a, 0x00, +}; + +constexpr char jit_source_fp16_math[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, + 0x61, 0x5f, 0x62, 0x66, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, + 0x5f, 0x66, 0x70, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x73, 0x74, 0x64, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x73, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, + 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x42, 0x69, 0x6e, 0x61, + 0x72, 0x79, 0x20, 0x6f, 0x70, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x68, + 0x61, 0x6c, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x0a, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x0a, 0x23, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x65, 0x20, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x4f, 0x50, + 0x28, 0x4e, 0x41, 0x4d, 0x45, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x5f, + 0x4f, 0x50, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, + 0x4e, 0x41, 0x4d, 0x45, 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, + 0x79, 0x29, 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, + 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, + 0x29, 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x48, 0x41, 0x4c, + 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, + 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x3e, 0x29, 0x20, 0x7b, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x78, + 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x3a, 0x3a, 0x4e, + 0x41, 0x4d, 0x45, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, + 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, + 0x5f, 0x4f, 0x50, 0x28, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x5f, 0x5f, 0x68, + 0x6d, 0x61, 0x78, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x5f, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x4f, + 0x50, 0x28, 0x6d, 0x69, 0x6e, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x6d, 0x69, + 0x6e, 0x29, 0x0a, 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x4d, + 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x42, 0x49, + 0x4e, 0x41, 0x52, 0x59, 0x5f, 0x4f, 0x50, 0x0a, 0x0a, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x41, 0x64, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x43, 0x2b, 0x2b, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x6f, 0x76, 0x65, 0x72, + 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, + 0x6e, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x55, + 0x3e, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, + 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x20, 0x26, 0x26, + 0x20, 0x21, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, + 0x2c, 0x20, 0x55, 0x3e, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x55, 0x3e, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, + 0x70, 0x72, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x61, + 0x72, 0x69, 0x74, 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x5f, 0x65, 0x78, + 0x63, 0x65, 0x70, 0x74, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x5f, 0x61, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x5f, + 0x76, 0x3c, 0x54, 0x3e, 0x20, 0x26, 0x26, 0x20, 0x21, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, + 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x55, 0x3e, 0x3b, + 0x0a, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4d, 0x4c, + 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, + 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x48, 0x41, 0x4c, 0x46, 0x2c, 0x20, 0x48, + 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x2c, 0x20, 0x46, + 0x4c, 0x4f, 0x41, 0x54, 0x32, 0x48, 0x41, 0x4c, 0x46, 0x2c, 0x20, 0x4f, + 0x50, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, + 0x3c, 0x54, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x3e, 0x3e, 0x3e, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x4f, 0x50, 0x28, + 0x48, 0x41, 0x4c, 0x46, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, + 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x32, 0x48, 0x41, 0x4c, 0x46, 0x28, + 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x28, 0x78, + 0x29, 0x20, 0x4f, 0x50, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, + 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, + 0x79, 0x29, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, + 0x3c, 0x54, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x3e, 0x3e, 0x3e, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x4f, 0x50, 0x28, + 0x54, 0x20, 0x78, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x20, 0x79, 0x29, + 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x32, 0x48, 0x41, 0x4c, 0x46, 0x28, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x78, 0x29, 0x20, 0x4f, 0x50, + 0x20, 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x28, + 0x79, 0x29, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x65, 0x20, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, + 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x48, + 0x41, 0x4c, 0x46, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, + 0x4f, 0x41, 0x54, 0x2c, 0x20, 0x4f, 0x50, 0x29, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x2c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, + 0x74, 0x3c, 0x54, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x3e, 0x3e, 0x3e, + 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, + 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x4f, 0x50, + 0x28, 0x48, 0x41, 0x4c, 0x46, 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, + 0x29, 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, 0x4f, + 0x41, 0x54, 0x28, 0x78, 0x29, 0x20, 0x4f, 0x50, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x3e, 0x28, 0x79, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x2c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x69, 0x73, 0x5f, 0x61, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, + 0x74, 0x3c, 0x54, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x3e, 0x3e, 0x3e, + 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, + 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, 0x6f, 0x6c, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x4f, 0x50, + 0x28, 0x54, 0x20, 0x78, 0x2c, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x20, 0x79, + 0x29, 0x20, 0x7b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, + 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x79, + 0x29, 0x20, 0x4f, 0x50, 0x20, 0x48, 0x41, 0x4c, 0x46, 0x32, 0x46, 0x4c, + 0x4f, 0x41, 0x54, 0x28, 0x78, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, + 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, + 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, + 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x32, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x2b, 0x29, 0x0a, 0x4d, 0x4c, + 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, + 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, + 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x68, + 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x2d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, + 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, + 0x4f, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x5f, + 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, + 0x20, 0x5f, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x68, 0x61, 0x6c, + 0x66, 0x2c, 0x20, 0x2a, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, + 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, + 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, + 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x68, 0x61, 0x6c, 0x66, 0x2c, + 0x20, 0x2f, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, 0x28, 0x5f, + 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, + 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, + 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x32, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, + 0x2c, 0x20, 0x2b, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, 0x28, + 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, 0x5f, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x2c, 0x20, 0x2d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, + 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, 0x5f, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x31, 0x36, 0x2c, 0x20, 0x2a, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, + 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, + 0x50, 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x5f, + 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x62, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x31, 0x36, 0x2c, 0x20, 0x2f, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, + 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, + 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, + 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x2c, 0x20, 0x3c, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, + 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, + 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3e, + 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, + 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, + 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, + 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3c, 0x3d, 0x29, 0x0a, + 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, + 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, + 0x6c, 0x66, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3e, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, + 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, + 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, + 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x2c, 0x20, 0x3d, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, + 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, + 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x2c, 0x20, + 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x2c, 0x20, 0x21, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, + 0x50, 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3c, + 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, + 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, + 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x2c, + 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3e, 0x29, 0x0a, 0x4d, 0x4c, + 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, + 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x2c, 0x20, 0x3c, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, + 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, + 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x31, 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, + 0x3e, 0x3d, 0x29, 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, + 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x2c, 0x20, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x3d, 0x3d, 0x29, + 0x0a, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, + 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4d, 0x50, 0x28, 0x5f, 0x5f, 0x6e, + 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x2c, 0x20, + 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x2c, 0x20, 0x21, 0x3d, 0x29, 0x0a, 0x0a, 0x23, + 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x4d, 0x4c, 0x58, 0x5f, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4f, 0x50, + 0x0a, 0x23, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x4d, 0x4c, 0x58, 0x5f, + 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, + 0x43, 0x4d, 0x50, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, + 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00, +}; + +constexpr char jit_source_gather[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, 0x69, 0x6c, 0x73, + 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, + 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, + 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x67, 0x20, 0x3d, 0x20, 0x63, 0x6f, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x4e, 0x49, 0x44, 0x58, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x49, 0x44, + 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x3e, 0x0a, 0x5f, + 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x5f, 0x20, 0x76, 0x6f, + 0x69, 0x64, 0x20, 0x67, 0x61, 0x74, 0x68, 0x65, 0x72, 0x28, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, + 0x73, 0x72, 0x63, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, 0x2a, 0x20, + 0x6f, 0x75, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, + 0x54, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, + 0x53, 0x68, 0x61, 0x70, 0x65, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x53, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, + 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x64, + 0x69, 0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x53, 0x68, 0x61, 0x70, + 0x65, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, + 0x32, 0x5f, 0x74, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, + 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x49, + 0x44, 0x58, 0x3e, 0x20, 0x61, 0x78, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, + 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, + 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2a, + 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x3e, 0x20, 0x69, 0x6e, 0x64, 0x69, + 0x63, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, + 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4e, + 0x49, 0x44, 0x58, 0x20, 0x2a, 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, + 0x49, 0x4d, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, + 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x49, 0x44, + 0x58, 0x20, 0x2a, 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, + 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, + 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, + 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x63, 0x67, + 0x3a, 0x3a, 0x74, 0x68, 0x69, 0x73, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x28, + 0x29, 0x2e, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, + 0x6b, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6f, + 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x73, 0x69, + 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, + 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x65, 0x6c, + 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, + 0x20, 0x25, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, + 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2f, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, + 0x63, 0x54, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, + 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x65, + 0x6c, 0x65, 0x6d, 0x2c, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x2c, + 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, + 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x29, 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, + 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, + 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x49, + 0x44, 0x58, 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, + 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, + 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, 0x3c, 0x49, 0x44, 0x58, + 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, + 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, + 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, + 0x65, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x28, 0x29, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, + 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, + 0x78, 0x69, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x78, 0x65, 0x73, 0x5b, 0x69, + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, + 0x69, 0x64, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x62, + 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x28, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x5b, + 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, 0x2c, 0x20, 0x73, 0x72, + 0x63, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x61, 0x78, 0x69, 0x73, + 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x72, 0x63, 0x5f, + 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x76, + 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x5b, 0x61, 0x78, 0x69, 0x73, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5b, 0x6f, + 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x72, + 0x63, 0x5b, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, 0x3b, 0x0a, + 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, + 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00, +}; + +constexpr char jit_source_gather_axis[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, 0x69, 0x6c, 0x73, + 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, + 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, + 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x67, 0x20, 0x3d, 0x20, 0x63, 0x6f, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, + 0x64, 0x78, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, + 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, + 0x6f, 0x6f, 0x6c, 0x20, 0x53, 0x72, 0x63, 0x43, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x49, 0x64, 0x78, 0x43, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x3e, 0x0a, 0x5f, 0x5f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, + 0x67, 0x61, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x28, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, + 0x2a, 0x20, 0x73, 0x72, 0x63, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2a, 0x20, 0x69, + 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x5f, 0x70, 0x72, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, + 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x5f, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, + 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, + 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, + 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, + 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, + 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, 0x49, 0x4d, + 0x3e, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, + 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, 0x49, + 0x4d, 0x3e, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, + 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, + 0x32, 0x5f, 0x74, 0x20, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x78, + 0x69, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x73, 0x72, 0x63, + 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, + 0x74, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x5f, 0x61, 0x78, 0x69, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x4c, + 0x6f, 0x63, 0x54, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, + 0x63, 0x67, 0x3a, 0x3a, 0x74, 0x68, 0x69, 0x73, 0x5f, 0x67, 0x72, 0x69, + 0x64, 0x28, 0x29, 0x2e, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, + 0x61, 0x6e, 0x6b, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x20, 0x2a, + 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, + 0x69, 0x73, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x5b, 0x78, + 0x2c, 0x20, 0x79, 0x2c, 0x20, 0x7a, 0x5d, 0x20, 0x3d, 0x20, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x6d, 0x73, 0x28, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x29, 0x3b, + 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x65, 0x6c, 0x65, + 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x7a, 0x20, 0x2a, 0x20, + 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x6f, 0x73, + 0x74, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, + 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2a, + 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, + 0x61, 0x78, 0x69, 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x49, 0x64, + 0x78, 0x43, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x65, 0x6c, 0x65, + 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, 0x2b, 0x20, + 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, + 0x63, 0x20, 0x2b, 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, + 0x5f, 0x6e, 0x64, 0x3c, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x28, 0x65, 0x6c, + 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x2c, 0x20, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, + 0x2c, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x69, + 0x64, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, + 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, + 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5b, 0x69, 0x64, 0x78, 0x5f, + 0x6c, 0x6f, 0x63, 0x5d, 0x2c, 0x20, 0x61, 0x78, 0x69, 0x73, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, + 0x54, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, + 0x69, 0x64, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x73, 0x72, + 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, 0x69, + 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x53, 0x72, 0x63, 0x43, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x6c, + 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x69, + 0x64, 0x78, 0x20, 0x2a, 0x20, 0x61, 0x78, 0x69, 0x73, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x20, 0x2b, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, + 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, + 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, 0x3c, 0x4e, 0x44, 0x49, + 0x4d, 0x3e, 0x28, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, + 0x2b, 0x20, 0x78, 0x2c, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x28, 0x29, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, + 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x4c, + 0x6f, 0x63, 0x54, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, + 0x3d, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x20, 0x2b, 0x20, 0x65, 0x6c, + 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, 0x2b, + 0x20, 0x78, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5b, 0x6f, + 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x72, + 0x63, 0x5b, 0x73, 0x72, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, 0x3b, 0x0a, + 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, + 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00, +}; + +constexpr char jit_source_hadamard[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, + 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, 0x69, + 0x6c, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, + 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x68, 0x61, 0x64, 0x61, + 0x6d, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x5f, 0x6d, + 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x78, 0x29, 0x3b, 0x0a, + 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, + 0x6e, 0x74, 0x20, 0x4e, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x61, 0x73, 0x73, + 0x65, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, + 0x4e, 0x20, 0x3e, 0x20, 0x30, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x28, + 0x4e, 0x20, 0x26, 0x20, 0x28, 0x4e, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x29, + 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x22, 0x4e, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, + 0x20, 0x61, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, + 0x70, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x77, 0x6f, + 0x2e, 0x22, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x69, 0x6e, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, + 0x31, 0x20, 0x2b, 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, + 0x3c, 0x4e, 0x20, 0x2f, 0x20, 0x32, 0x3e, 0x3a, 0x3a, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, 0x3c, + 0x31, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x69, 0x6e, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x52, 0x3e, 0x0a, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x68, 0x61, 0x64, 0x61, + 0x6d, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x5f, 0x70, + 0x6f, 0x77, 0x32, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x78, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x4c, 0x6f, 0x67, + 0x52, 0x20, 0x3d, 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, + 0x3c, 0x52, 0x3e, 0x3a, 0x3a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0x0a, + 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x68, 0x20, 0x3d, 0x20, 0x31, 0x3b, + 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, + 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, + 0x6e, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x73, 0x20, + 0x3c, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x3b, 0x20, 0x2b, 0x2b, 0x73, + 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, + 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x52, 0x20, 0x2f, 0x20, 0x32, + 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x20, 0x3d, 0x20, 0x69, + 0x20, 0x26, 0x20, 0x28, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, + 0x3d, 0x20, 0x28, 0x28, 0x69, 0x20, 0x2d, 0x20, 0x6b, 0x29, 0x20, 0x3c, + 0x3c, 0x20, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x6b, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x20, + 0x3d, 0x20, 0x78, 0x5b, 0x6a, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x20, 0x3d, 0x20, + 0x78, 0x5b, 0x6a, 0x20, 0x2b, 0x20, 0x68, 0x5d, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x78, 0x5b, 0x6a, 0x5d, 0x20, 0x3d, 0x20, 0x61, + 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x78, 0x5b, 0x6a, 0x20, 0x2b, 0x20, 0x68, 0x5d, 0x20, 0x3d, 0x20, 0x61, + 0x20, 0x2d, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x68, 0x20, 0x3c, 0x3c, 0x3d, 0x20, 0x31, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, + 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, + 0x69, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x31, 0x3e, 0x0a, + 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x5f, 0x20, 0x76, + 0x6f, 0x69, 0x64, 0x0a, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, + 0x5f, 0x6e, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, + 0x69, 0x6e, 0x2c, 0x20, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2c, + 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6e, + 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x4e, 0x75, + 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x3d, 0x20, 0x4e, + 0x20, 0x2f, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, + 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x4e, 0x20, + 0x3d, 0x20, 0x50, 0x6f, 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, 0x3c, 0x4e, + 0x3e, 0x3a, 0x3a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0x0a, 0x20, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, + 0x74, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x20, 0x3d, 0x20, 0x50, 0x6f, + 0x77, 0x32, 0x4c, 0x6f, 0x67, 0x32, 0x3c, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x61, 0x64, 0x69, 0x78, 0x3e, 0x3a, 0x3a, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x53, 0x74, + 0x65, 0x70, 0x73, 0x20, 0x3d, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x4e, 0x20, + 0x2f, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x3b, 0x0a, 0x20, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, + 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x3d, + 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x4e, 0x20, 0x25, 0x20, 0x6b, 0x4c, 0x6f, + 0x67, 0x52, 0x3b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x46, 0x69, 0x6e, + 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, 0x78, 0x20, 0x3d, 0x20, 0x31, 0x20, + 0x3c, 0x3c, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x46, 0x69, 0x6e, 0x61, 0x6c, + 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x74, 0x68, 0x72, + 0x65, 0x61, 0x64, 0x49, 0x64, 0x78, 0x2e, 0x78, 0x20, 0x3e, 0x3d, 0x20, + 0x6b, 0x4e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x62, + 0x75, 0x66, 0x5b, 0x4e, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, + 0x20, 0x69, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x49, + 0x64, 0x78, 0x2e, 0x78, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x3d, 0x20, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x78, 0x2e, 0x78, 0x3b, 0x20, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x3c, 0x20, + 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2b, 0x3d, 0x20, + 0x67, 0x72, 0x69, 0x64, 0x44, 0x69, 0x6d, 0x2e, 0x78, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, + 0x6e, 0x67, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x3d, 0x20, 0x28, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2f, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x29, 0x20, 0x2a, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x6c, 0x6f, 0x6e, + 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x3e, 0x28, 0x4e, 0x29, 0x20, 0x2a, + 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x25, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, + 0x65, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x29, 0x20, + 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, + 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x20, 0x6a, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, + 0x61, 0x64, 0x69, 0x78, 0x20, 0x2f, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x6a, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, + 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x6a, 0x20, + 0x2a, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x20, 0x2a, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x73, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, + 0x72, 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x75, 0x66, + 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x20, + 0x3d, 0x20, 0x69, 0x6e, 0x5b, 0x62, 0x61, 0x73, 0x65, 0x20, 0x2b, 0x20, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, + 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, + 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x6a, 0x20, 0x3c, 0x20, + 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x3b, 0x20, 0x2b, + 0x2b, 0x6a, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, 0x2a, 0x20, 0x6b, 0x4e, + 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, 0x20, + 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x5b, 0x62, 0x61, 0x73, 0x65, + 0x20, 0x2b, 0x20, 0x28, 0x6a, 0x20, 0x2a, 0x20, 0x6b, 0x4e, 0x75, 0x6d, + 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, 0x20, 0x69, 0x29, + 0x20, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x73, 0x79, 0x6e, 0x63, + 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x28, 0x29, 0x3b, 0x0a, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x5b, + 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x68, 0x20, 0x3d, 0x20, + 0x31, 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, + 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x20, 0x73, 0x20, 0x3c, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x53, + 0x74, 0x65, 0x70, 0x73, 0x3b, 0x20, 0x2b, 0x2b, 0x73, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, + 0x20, 0x3d, 0x20, 0x69, 0x20, 0x26, 0x20, 0x28, 0x68, 0x20, 0x2d, 0x20, + 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, + 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x69, 0x20, 0x2d, 0x20, + 0x6b, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, 0x29, + 0x20, 0x2b, 0x20, 0x6b, 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, + 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, + 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, + 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x3b, 0x20, 0x2b, + 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x78, 0x5b, 0x72, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x3e, 0x28, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, 0x2b, 0x20, + 0x68, 0x20, 0x2a, 0x20, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x61, 0x64, + 0x69, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x32, 0x3c, 0x6d, 0x61, 0x78, 0x5f, + 0x72, 0x61, 0x64, 0x69, 0x78, 0x3e, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x0a, + 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, + 0x20, 0x72, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, + 0x69, 0x78, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x75, 0x66, 0x5b, 0x6a, + 0x20, 0x2b, 0x20, 0x68, 0x20, 0x2a, 0x20, 0x72, 0x5d, 0x20, 0x3d, 0x20, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, + 0x54, 0x3e, 0x28, 0x78, 0x5b, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x68, 0x20, 0x3c, 0x3c, 0x3d, 0x20, 0x6b, 0x4c, 0x6f, 0x67, 0x52, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x73, 0x79, + 0x6e, 0x63, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x28, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, + 0x20, 0x28, 0x6b, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, + 0x78, 0x20, 0x3e, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, + 0x6e, 0x74, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x74, 0x20, + 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x20, + 0x2f, 0x20, 0x6b, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, + 0x78, 0x3b, 0x20, 0x2b, 0x2b, 0x74, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x20, 0x2b, 0x20, 0x74, 0x20, + 0x2a, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x6e, 0x74, 0x20, 0x6b, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x20, 0x26, 0x20, 0x28, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x6a, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, + 0x2d, 0x20, 0x6b, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x6b, 0x4c, 0x6f, 0x67, + 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x29, 0x20, 0x2b, 0x20, 0x6b, 0x3b, 0x0a, + 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, 0x6b, 0x46, 0x69, 0x6e, 0x61, + 0x6c, 0x52, 0x61, 0x64, 0x69, 0x78, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x78, 0x5b, 0x72, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x3e, 0x28, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, 0x2b, 0x20, 0x68, + 0x20, 0x2a, 0x20, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, 0x5f, + 0x72, 0x61, 0x64, 0x69, 0x78, 0x5f, 0x70, 0x6f, 0x77, 0x32, 0x3c, 0x6b, + 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, 0x78, 0x3e, 0x28, + 0x78, 0x29, 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, + 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, + 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, + 0x6b, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x61, 0x64, 0x69, 0x78, 0x3b, + 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, + 0x2b, 0x20, 0x68, 0x20, 0x2a, 0x20, 0x72, 0x5d, 0x20, 0x3d, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x54, + 0x3e, 0x28, 0x78, 0x5b, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x73, + 0x79, 0x6e, 0x63, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x28, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x3d, + 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, + 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, + 0x6a, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x6a, 0x20, 0x3c, 0x20, 0x6d, + 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x20, 0x2f, 0x20, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, + 0x2b, 0x6a, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, + 0x3d, 0x20, 0x6a, 0x20, 0x2a, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x20, 0x2a, 0x20, 0x6b, 0x4e, 0x75, 0x6d, 0x54, + 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, + 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, + 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, + 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, + 0x20, 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x20, 0x3d, + 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, + 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x62, 0x75, 0x66, 0x5b, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, + 0x75, 0x74, 0x5b, 0x62, 0x61, 0x73, 0x65, 0x20, 0x2b, 0x20, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x20, 0x3d, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x54, + 0x3e, 0x28, 0x76, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x73, 0x63, 0x61, 0x6c, + 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x23, + 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, + 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x28, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, + 0x6a, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x64, 0x69, + 0x78, 0x3b, 0x20, 0x2b, 0x2b, 0x6a, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5b, 0x62, 0x61, + 0x73, 0x65, 0x20, 0x2b, 0x20, 0x28, 0x6a, 0x20, 0x2a, 0x20, 0x6b, 0x4e, + 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, 0x20, + 0x69, 0x29, 0x20, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5d, + 0x20, 0x3d, 0x20, 0x62, 0x75, 0x66, 0x5b, 0x6a, 0x20, 0x2a, 0x20, 0x6b, + 0x4e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x2b, + 0x20, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x5f, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x73, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x69, 0x6e, + 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4d, 0x2c, 0x20, + 0x69, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x3e, 0x0a, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x0a, 0x68, 0x61, 0x64, 0x61, + 0x6d, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x20, 0x54, 0x2a, 0x20, 0x69, 0x6e, 0x2c, 0x20, 0x54, 0x2a, 0x20, 0x6f, + 0x75, 0x74, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x63, + 0x61, 0x6c, 0x65, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, + 0x6e, 0x67, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6b, 0x54, 0x61, 0x73, + 0x6b, 0x73, 0x50, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x20, 0x3d, + 0x20, 0x4e, 0x20, 0x2f, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x74, + 0x61, 0x73, 0x6b, 0x20, 0x3d, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, + 0x64, 0x78, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x44, 0x69, 0x6d, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x74, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x49, 0x64, 0x78, 0x2e, 0x78, 0x3b, 0x20, 0x74, 0x61, 0x73, + 0x6b, 0x20, 0x3c, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x61, 0x73, 0x6b, + 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x61, + 0x73, 0x6b, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, + 0x69, 0x6d, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x67, 0x72, 0x69, 0x64, 0x44, + 0x69, 0x6d, 0x2e, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x69, 0x20, + 0x3d, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x25, 0x20, 0x6b, 0x54, 0x61, + 0x73, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, + 0x6e, 0x67, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x3d, 0x20, 0x74, + 0x61, 0x73, 0x6b, 0x20, 0x2f, 0x20, 0x6b, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x50, 0x65, 0x72, 0x42, 0x61, 0x74, 0x63, 0x68, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, + 0x62, 0x61, 0x73, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, + 0x20, 0x2a, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, + 0x73, 0x74, 0x3c, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x6e, 0x67, + 0x3e, 0x28, 0x4d, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x3b, 0x0a, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x5b, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5d, 0x5b, 0x4d, + 0x5d, 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, + 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x20, 0x3d, 0x20, 0x30, + 0x3b, 0x20, 0x63, 0x20, 0x3c, 0x20, 0x4d, 0x3b, 0x20, 0x2b, 0x2b, 0x63, + 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, + 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, + 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x78, 0x5b, 0x72, 0x5d, 0x5b, 0x63, 0x5d, 0x20, 0x3d, 0x20, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x69, 0x6e, 0x5b, 0x62, 0x61, 0x73, 0x65, + 0x20, 0x2b, 0x20, 0x63, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, + 0x20, 0x2a, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, + 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, + 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, + 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, + 0x5f, 0x72, 0x61, 0x64, 0x69, 0x78, 0x5f, 0x6d, 0x28, 0x78, 0x5b, 0x72, + 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x23, + 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, + 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, + 0x6e, 0x74, 0x20, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x63, 0x20, + 0x3c, 0x20, 0x4d, 0x3b, 0x20, 0x2b, 0x2b, 0x63, 0x29, 0x20, 0x7b, 0x0a, + 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, + 0x20, 0x72, 0x20, 0x3c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x3b, 0x20, 0x2b, 0x2b, 0x72, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5b, + 0x62, 0x61, 0x73, 0x65, 0x20, 0x2b, 0x20, 0x63, 0x20, 0x2a, 0x20, 0x4e, + 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x2b, 0x20, 0x72, 0x5d, 0x20, 0x3d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, + 0x3c, 0x54, 0x3e, 0x28, 0x78, 0x5b, 0x72, 0x5d, 0x5b, 0x63, 0x5d, 0x20, + 0x2a, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, + 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, + 0x00, +}; + +constexpr char jit_source_indexing[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x73, 0x74, 0x64, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x3e, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x73, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, + 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x2f, + 0x2f, 0x20, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x6e, + 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x20, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x33, 0x64, + 0x20, 0x67, 0x72, 0x69, 0x64, 0x2c, 0x20, 0x61, 0x73, 0x73, 0x75, 0x6d, + 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x20, 0x69, 0x73, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x61, 0x6c, 0x63, + 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x3a, + 0x0a, 0x2f, 0x2f, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, + 0x78, 0x20, 0x2a, 0x20, 0x64, 0x69, 0x6d, 0x31, 0x20, 0x2a, 0x20, 0x64, + 0x69, 0x6d, 0x32, 0x20, 0x2b, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x64, 0x69, + 0x6d, 0x32, 0x20, 0x2b, 0x20, 0x7a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, + 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x75, 0x70, 0x6c, 0x65, + 0x3c, 0x54, 0x2c, 0x20, 0x54, 0x2c, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x6d, 0x73, 0x28, + 0x54, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x64, + 0x69, 0x6d, 0x31, 0x2c, 0x20, 0x54, 0x20, 0x64, 0x69, 0x6d, 0x32, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x28, 0x64, 0x69, 0x6d, 0x31, + 0x20, 0x2a, 0x20, 0x64, 0x69, 0x6d, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x54, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x20, 0x25, 0x20, 0x28, 0x64, 0x69, 0x6d, 0x31, 0x20, 0x2a, 0x20, 0x64, + 0x69, 0x6d, 0x32, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x64, 0x69, 0x6d, 0x32, + 0x3b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x7a, 0x20, 0x3d, 0x20, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x64, 0x69, 0x6d, 0x32, 0x3b, 0x0a, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6d, 0x61, 0x6b, 0x65, + 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x2c, + 0x20, 0x7a, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x47, + 0x65, 0x74, 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x20, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x70, + 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x6e, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x0a, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x3e, + 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, + 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x61, 0x62, 0x73, + 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, + 0x49, 0x64, 0x78, 0x54, 0x20, 0x69, 0x64, 0x78, 0x2c, 0x20, 0x69, 0x6e, + 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x75, 0x6e, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x3e, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x69, 0x64, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, + 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, + 0x74, 0x3e, 0x28, 0x69, 0x64, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x20, 0x3f, + 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, + 0x3a, 0x20, 0x69, 0x64, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, + 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00, +}; + +constexpr char jit_source_scatter[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x73, 0x63, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, + 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, + 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, + 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, + 0x69, 0x6c, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x6f, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, + 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x67, 0x20, 0x3d, + 0x20, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3b, 0x0a, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, 0x70, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x49, 0x44, + 0x58, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x49, + 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4c, 0x6f, + 0x63, 0x54, 0x3e, 0x0a, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x73, 0x63, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, 0x75, 0x70, 0x64, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x73, 0x69, 0x7a, 0x65, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, + 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x53, 0x68, 0x61, 0x70, 0x65, 0x20, + 0x75, 0x70, 0x64, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, + 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x5f, 0x5f, 0x20, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x75, + 0x70, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, + 0x75, 0x70, 0x64, 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x70, + 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, + 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x53, 0x68, 0x61, 0x70, 0x65, 0x20, + 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, + 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x5f, 0x5f, 0x20, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x6f, + 0x75, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, + 0x6f, 0x75, 0x74, 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, + 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, + 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, + 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x3e, 0x20, 0x61, 0x78, + 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, + 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2a, 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, + 0x3e, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, + 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x33, + 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x20, 0x2a, 0x20, + 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, + 0x73, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, + 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, + 0x74, 0x2c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x20, 0x2a, 0x20, 0x49, 0x44, + 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x69, 0x64, + 0x78, 0x20, 0x3d, 0x20, 0x63, 0x67, 0x3a, 0x3a, 0x74, 0x68, 0x69, 0x73, + 0x5f, 0x67, 0x72, 0x69, 0x64, 0x28, 0x29, 0x2e, 0x74, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x28, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x28, 0x75, 0x70, 0x64, 0x5f, 0x69, 0x64, 0x78, + 0x20, 0x3e, 0x3d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, + 0x6f, 0x75, 0x74, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x75, + 0x70, 0x64, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x25, 0x20, 0x75, 0x70, 0x64, + 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, + 0x64, 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x75, 0x70, + 0x64, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2f, 0x20, 0x75, 0x70, 0x64, 0x5f, + 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x6f, + 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, + 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x28, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x65, 0x6c, 0x65, 0x6d, + 0x2c, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x20, 0x2b, 0x20, 0x49, 0x44, 0x58, + 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, + 0x29, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x29, + 0x3b, 0x0a, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, + 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, + 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x49, 0x44, 0x58, 0x3b, 0x20, 0x2b, 0x2b, + 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, + 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, + 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, + 0x6e, 0x64, 0x3c, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, + 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, + 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, + 0x44, 0x49, 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x20, + 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x49, 0x44, 0x58, 0x5f, 0x4e, 0x44, + 0x49, 0x4d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, + 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x78, 0x69, 0x73, 0x20, 0x3d, 0x20, + 0x61, 0x78, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x76, 0x61, + 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, 0x69, 0x6e, 0x64, 0x69, 0x63, + 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x5b, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, + 0x63, 0x5d, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x5b, 0x61, 0x78, 0x69, 0x73, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x3d, + 0x20, 0x69, 0x64, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x6f, + 0x75, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x61, + 0x78, 0x69, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, + 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x6c, 0x6f, + 0x63, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, + 0x6c, 0x6f, 0x63, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, + 0x75, 0x74, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2b, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2a, 0x20, 0x75, 0x70, 0x64, + 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, + 0x64, 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x28, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, + 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x28, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x75, 0x70, 0x64, 0x5f, 0x6e, 0x64, 0x69, 0x6d, 0x29, 0x3b, 0x0a, 0x0a, + 0x20, 0x20, 0x4f, 0x70, 0x7b, 0x7d, 0x28, 0x6f, 0x75, 0x74, 0x20, 0x2b, + 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x2c, 0x20, 0x75, 0x70, + 0x64, 0x5b, 0x75, 0x70, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, 0x29, 0x3b, + 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, + 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00, +}; + +constexpr char jit_source_scatter_axis[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x73, 0x63, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, + 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, + 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, + 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, + 0x69, 0x6c, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x6f, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, + 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x67, 0x20, 0x3d, + 0x20, 0x63, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3b, 0x0a, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, 0x70, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x44, 0x49, + 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, + 0x55, 0x70, 0x64, 0x43, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6f, + 0x6f, 0x6c, 0x20, 0x49, 0x64, 0x78, 0x43, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4c, 0x6f, + 0x63, 0x54, 0x3e, 0x0a, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x73, 0x63, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x28, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, 0x75, + 0x70, 0x64, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2a, 0x20, 0x69, 0x6e, 0x64, 0x69, + 0x63, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, 0x2a, 0x20, + 0x6f, 0x75, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, + 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, + 0x72, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, + 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, + 0x69, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, + 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x6f, + 0x73, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x5f, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, + 0x3c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, + 0x49, 0x4d, 0x3e, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x67, + 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, + 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x36, + 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x20, 0x75, + 0x70, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, + 0x67, 0x72, 0x69, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x74, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x2c, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x20, + 0x69, 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, + 0x20, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x78, 0x69, 0x73, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, + 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x73, 0x74, + 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x69, + 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, + 0x69, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, + 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x63, 0x67, 0x3a, + 0x3a, 0x74, 0x68, 0x69, 0x73, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x28, 0x29, + 0x2e, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x6b, + 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x20, 0x2a, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, + 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, + 0x6f, 0x73, 0x74, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, + 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x5b, 0x78, 0x2c, 0x20, 0x79, + 0x2c, 0x20, 0x7a, 0x5d, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x6d, 0x73, 0x28, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x5f, 0x61, 0x78, 0x69, 0x73, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x29, 0x3b, 0x0a, 0x0a, 0x20, + 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x69, + 0x64, 0x78, 0x20, 0x3d, 0x20, 0x7a, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x3b, 0x0a, + 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x69, 0x64, 0x78, 0x5f, + 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x69, 0x64, + 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x78, 0x69, + 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x49, 0x64, 0x78, 0x43, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x6c, + 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x69, + 0x64, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, 0x2b, 0x20, 0x78, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, + 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, + 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, + 0x3c, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x28, 0x65, 0x6c, 0x65, 0x6d, 0x5f, + 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x2c, 0x20, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x2c, 0x20, 0x69, + 0x64, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x69, 0x64, 0x78, 0x5f, + 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, + 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, 0x69, 0x6e, 0x64, + 0x69, 0x63, 0x65, 0x73, 0x5b, 0x69, 0x64, 0x78, 0x5f, 0x6c, 0x6f, 0x63, + 0x5d, 0x2c, 0x20, 0x61, 0x78, 0x69, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x75, + 0x70, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2a, + 0x20, 0x75, 0x70, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x5f, + 0x61, 0x78, 0x69, 0x73, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x55, 0x70, + 0x64, 0x43, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, + 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x65, 0x6c, 0x65, + 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x61, 0x78, 0x69, 0x73, 0x20, 0x2b, 0x20, + 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x6c, 0x6f, + 0x63, 0x20, 0x2b, 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, + 0x5f, 0x6e, 0x64, 0x3c, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x28, 0x65, 0x6c, + 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x2c, 0x20, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, + 0x2c, 0x20, 0x75, 0x70, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x63, 0x54, 0x20, 0x6f, + 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x64, 0x78, + 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x2a, 0x20, 0x69, 0x64, 0x78, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x20, 0x2b, 0x20, 0x65, + 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x61, 0x78, + 0x69, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x2b, 0x20, 0x78, 0x3b, + 0x0a, 0x0a, 0x20, 0x20, 0x4f, 0x70, 0x7b, 0x7d, 0x28, 0x6f, 0x75, 0x74, + 0x20, 0x2b, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x2c, 0x20, + 0x75, 0x70, 0x64, 0x5b, 0x75, 0x70, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x5d, + 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, + 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00, +}; + +constexpr char jit_source_scatter_ops[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, + 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x61, 0x74, 0x6f, + 0x6d, 0x69, 0x63, 0x5f, 0x6f, 0x70, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, + 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, + 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, + 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, + 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, + 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x2a, 0x6f, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x76, 0x61, 0x6c, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x53, 0x75, + 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, + 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x28, 0x6f, + 0x75, 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x64, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, 0x6f, + 0x75, 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, + 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x6f, + 0x75, 0x74, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, 0x6f, 0x75, + 0x74, 0x2c, 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x74, + 0x6f, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x6f, 0x75, 0x74, + 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x53, + 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, + 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x2c, + 0x20, 0x54, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x74, 0x6f, 0x6d, + 0x69, 0x63, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x6f, 0x75, 0x74, 0x2c, 0x20, + 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, + 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00, +}; + +constexpr char jit_source_ternary_ops[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x23, 0x70, 0x72, 0x61, + 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, + 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x62, 0x6f, 0x6f, 0x6c, 0x20, + 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x54, + 0x20, 0x78, 0x2c, 0x20, 0x54, 0x20, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3f, 0x20, 0x78, 0x20, + 0x3a, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, + 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, + 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00, +}; + +constexpr char jit_source_unary_ops[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, 0x78, + 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x66, 0x70, 0x31, + 0x36, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, + 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, 0x6d, 0x6c, + 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x63, 0x75, + 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x74, + 0x69, 0x6c, 0x73, 0x2e, 0x63, 0x75, 0x68, 0x22, 0x0a, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, + 0x5f, 0x66, 0x70, 0x38, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x2e, 0x68, 0x3e, 0x0a, + 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, + 0x64, 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x63, 0x6d, 0x61, 0x74, 0x68, + 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0x3a, + 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x41, 0x62, 0x73, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, + 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, 0x54, + 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x62, + 0x73, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x41, 0x72, 0x63, 0x43, 0x6f, 0x73, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, + 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, + 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x63, 0x6f, 0x73, 0x28, + 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x41, 0x72, 0x63, 0x43, 0x6f, + 0x73, 0x68, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x61, 0x63, 0x6f, 0x73, 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x41, 0x72, 0x63, 0x53, 0x69, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x73, 0x69, 0x6e, 0x28, 0x78, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x20, 0x41, 0x72, 0x63, 0x53, 0x69, 0x6e, 0x68, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x73, + 0x69, 0x6e, 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x41, + 0x72, 0x63, 0x54, 0x61, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, + 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x61, 0x74, 0x61, 0x6e, 0x28, 0x78, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x41, 0x72, 0x63, 0x54, 0x61, 0x6e, 0x68, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x74, 0x61, 0x6e, + 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x42, 0x69, 0x74, + 0x77, 0x69, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7e, 0x78, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x43, 0x65, 0x69, 0x6c, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, + 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, + 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, + 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, + 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, + 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, + 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x54, 0x7b, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, + 0x65, 0x69, 0x6c, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, + 0x29, 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x63, 0x65, 0x69, 0x6c, 0x28, 0x78, 0x2e, 0x69, 0x6d, 0x61, + 0x67, 0x28, 0x29, 0x29, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x65, 0x69, 0x6c, + 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x43, 0x6f, 0x6e, 0x6a, 0x75, 0x67, 0x61, 0x74, 0x65, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, + 0x3c, 0x54, 0x3e, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, + 0x3c, 0x54, 0x3e, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x6e, 0x6a, 0x28, + 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x6f, 0x73, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x73, 0x28, + 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x43, 0x6f, 0x73, 0x68, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x63, 0x6f, 0x73, + 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x72, 0x66, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, + 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, + 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x72, 0x66, 0x28, 0x5f, 0x5f, + 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, + 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, + 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, + 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x65, 0x72, 0x66, 0x28, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x31, 0x36, 0x32, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x65, 0x72, 0x66, 0x28, 0x78, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x72, 0x66, + 0x49, 0x6e, 0x76, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, + 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, + 0x61, 0x6c, 0x66, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x72, 0x66, + 0x69, 0x6e, 0x76, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, + 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, + 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x72, 0x66, 0x69, 0x6e, 0x76, + 0x28, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x65, 0x72, 0x66, 0x69, 0x6e, 0x76, 0x28, 0x78, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x78, 0x70, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x78, + 0x70, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x45, 0x78, 0x70, + 0x6d, 0x31, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x65, 0x78, 0x70, 0x6d, 0x31, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, + 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, + 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x5f, 0x76, + 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, + 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, + 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x54, 0x7b, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x66, 0x6c, 0x6f, + 0x6f, 0x72, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, + 0x2c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x28, 0x78, 0x2e, 0x69, 0x6d, 0x61, + 0x67, 0x28, 0x29, 0x29, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x66, 0x6c, 0x6f, 0x6f, + 0x72, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x49, 0x6d, 0x61, 0x67, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x61, + 0x75, 0x74, 0x6f, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, + 0x3c, 0x54, 0x3e, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x2e, 0x69, 0x6d, + 0x61, 0x67, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6c, 0x6f, + 0x67, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, + 0x32, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, + 0x20, 0x79, 0x20, 0x3d, 0x20, 0x4c, 0x6f, 0x67, 0x7b, 0x7d, 0x28, 0x78, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x79, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, + 0x29, 0x20, 0x2f, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, 0x4c, + 0x4e, 0x32, 0x5f, 0x46, 0x2c, 0x20, 0x79, 0x2e, 0x69, 0x6d, 0x61, 0x67, + 0x28, 0x29, 0x20, 0x2f, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, + 0x4c, 0x4e, 0x32, 0x5f, 0x46, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6c, 0x6f, 0x67, + 0x32, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x31, 0x30, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, + 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6c, 0x6f, 0x67, 0x31, 0x30, 0x28, + 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x31, 0x70, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x7a, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x20, 0x78, 0x20, 0x3d, 0x20, 0x7a, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x7a, 0x2e, 0x69, 0x6d, 0x61, + 0x67, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x61, 0x62, 0x73, 0x20, 0x3d, 0x20, + 0x41, 0x62, 0x73, 0x7b, 0x7d, 0x28, 0x7a, 0x29, 0x2e, 0x72, 0x65, 0x61, + 0x6c, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x74, 0x61, 0x20, 0x3d, + 0x20, 0x61, 0x74, 0x61, 0x6e, 0x32, 0x66, 0x28, 0x79, 0x2c, 0x20, 0x78, + 0x20, 0x2b, 0x20, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x28, 0x7a, 0x61, 0x62, 0x73, 0x20, 0x3c, 0x20, + 0x30, 0x2e, 0x35, 0x66, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x20, + 0x3d, 0x20, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x32, 0x20, 0x2b, 0x20, 0x78, + 0x29, 0x20, 0x2b, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x79, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, + 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x20, 0x2f, 0x2f, 0x20, + 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, + 0x66, 0x6c, 0x6f, 0x77, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x78, + 0x2c, 0x20, 0x74, 0x68, 0x65, 0x74, 0x61, 0x7d, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, + 0x30, 0x2e, 0x35, 0x66, 0x20, 0x2a, 0x20, 0x6c, 0x6f, 0x67, 0x31, 0x70, + 0x66, 0x28, 0x72, 0x29, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x74, 0x61, 0x7d, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, + 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x30, 0x20, 0x3d, 0x20, + 0x68, 0x79, 0x70, 0x6f, 0x74, 0x66, 0x28, 0x78, 0x20, 0x2b, 0x20, 0x31, + 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x6c, 0x6f, + 0x67, 0x66, 0x28, 0x7a, 0x30, 0x29, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x74, + 0x61, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x6c, 0x6f, 0x67, 0x31, 0x70, 0x28, 0x7a, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x67, 0x69, + 0x63, 0x61, 0x6c, 0x4e, 0x6f, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, 0x6f, + 0x6f, 0x6c, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, + 0x29, 0x28, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x21, + 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x54, 0x7b, 0x30, 0x2c, 0x20, 0x30, 0x7d, 0x20, + 0x2d, 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x2d, 0x78, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x52, 0x65, 0x61, 0x6c, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x20, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, + 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x72, 0x69, 0x6e, + 0x74, 0x28, 0x78, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x28, 0x29, 0x29, 0x2c, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x72, 0x69, 0x6e, 0x74, 0x28, 0x78, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, + 0x29, 0x29, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x72, 0x69, 0x6e, 0x74, 0x28, 0x78, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, + 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, + 0x53, 0x69, 0x67, 0x6d, 0x6f, 0x69, 0x64, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, + 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, + 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, + 0x20, 0x79, 0x20, 0x3d, 0x20, 0x31, 0x20, 0x2f, 0x20, 0x28, 0x31, 0x20, + 0x2b, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x65, 0x78, 0x70, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x62, 0x73, 0x28, 0x78, 0x29, 0x29, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x28, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x20, 0x3f, 0x20, 0x79, + 0x20, 0x3a, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x20, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, + 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x5f, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x3c, + 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x21, 0x3d, 0x20, + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, + 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x78, 0x2e, 0x72, + 0x65, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x26, + 0x26, 0x20, 0x78, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x28, 0x29, 0x20, 0x3d, + 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2f, 0x20, 0x41, + 0x62, 0x73, 0x28, 0x29, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, + 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x3e, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x61, 0x73, 0x74, + 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x28, 0x78, 0x20, 0x3e, + 0x20, 0x54, 0x28, 0x30, 0x2e, 0x66, 0x29, 0x29, 0x20, 0x2d, 0x20, 0x28, + 0x78, 0x20, 0x3c, 0x20, 0x54, 0x28, 0x30, 0x2e, 0x66, 0x29, 0x29, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x28, 0x78, 0x20, 0x3e, 0x20, 0x54, 0x28, 0x30, + 0x29, 0x29, 0x20, 0x2d, 0x20, 0x28, 0x78, 0x20, 0x3c, 0x20, 0x54, 0x28, + 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x53, 0x69, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, + 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x73, 0x69, 0x6e, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x53, 0x69, 0x6e, 0x68, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, + 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x73, 0x69, 0x6e, 0x68, 0x28, 0x78, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x53, 0x71, 0x75, 0x61, 0x72, 0x65, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x2a, + 0x20, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x53, 0x71, 0x72, 0x74, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x73, 0x71, 0x72, + 0x74, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x52, 0x73, 0x71, + 0x72, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x76, 0x3c, 0x54, 0x3e, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x20, 0x2f, 0x20, 0x53, + 0x71, 0x72, 0x74, 0x7b, 0x7d, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, + 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, + 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, + 0x73, 0x71, 0x72, 0x74, 0x28, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x32, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x28, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, + 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, + 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x3e, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x73, 0x71, 0x72, 0x74, + 0x28, 0x5f, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x32, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x72, 0x73, 0x71, 0x72, 0x74, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x54, 0x61, 0x6e, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, + 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x61, 0x6e, + 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x54, 0x61, 0x6e, 0x68, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x28, 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x61, + 0x6e, 0x68, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x54, 0x6f, + 0x46, 0x50, 0x38, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x38, + 0x5f, 0x74, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, + 0x29, 0x28, 0x54, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x5f, 0x6e, 0x76, + 0x5f, 0x66, 0x70, 0x38, 0x5f, 0x65, 0x34, 0x6d, 0x33, 0x28, 0x78, 0x29, + 0x2e, 0x5f, 0x5f, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x46, 0x72, 0x6f, + 0x6d, 0x46, 0x50, 0x38, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x28, 0x29, + 0x28, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x78, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x2a, 0x28, 0x5f, 0x5f, 0x6e, + 0x76, 0x5f, 0x66, 0x70, 0x38, 0x5f, 0x65, 0x34, 0x6d, 0x33, 0x2a, 0x29, + 0x28, 0x26, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, + 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00, +}; + +constexpr char jit_source_utils[] = { + 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x20, 0x20, 0x20, 0x32, 0x30, 0x32, 0x35, 0x20, 0x41, 0x70, 0x70, + 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, + 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6d, 0x75, + 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x2d, + 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x2c, 0x20, 0x75, + 0x74, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, + 0x20, 0x62, 0x6f, 0x74, 0x68, 0x0a, 0x2f, 0x2f, 0x20, 0x68, 0x6f, 0x73, + 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x70, 0x75, 0x74, 0x20, + 0x68, 0x65, 0x72, 0x65, 0x2e, 0x0a, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, + 0x53, 0x65, 0x65, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x61, 0x62, 0x6f, + 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x74, 0x3a, 0x0a, + 0x2f, 0x2f, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x64, + 0x6f, 0x63, 0x73, 0x2e, 0x6e, 0x76, 0x69, 0x64, 0x69, 0x61, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, 0x6e, 0x76, 0x72, 0x74, + 0x63, 0x2f, 0x23, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x0a, + 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x6f, 0x6e, 0x63, + 0x65, 0x0a, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, + 0x22, 0x6d, 0x6c, 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, + 0x2f, 0x63, 0x75, 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x63, 0x75, 0x68, + 0x22, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x22, + 0x6d, 0x6c, 0x78, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, + 0x63, 0x75, 0x64, 0x61, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x68, 0x22, 0x0a, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, + 0x61, 0x5f, 0x62, 0x66, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, + 0x5f, 0x66, 0x70, 0x31, 0x36, 0x2e, 0x68, 0x3e, 0x0a, 0x23, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, 0x61, 0x2f, + 0x73, 0x74, 0x64, 0x2f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3e, 0x0a, 0x23, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x63, 0x75, 0x64, + 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, + 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, + 0x63, 0x75, 0x64, 0x61, 0x2f, 0x73, 0x74, 0x64, 0x2f, 0x74, 0x75, 0x70, + 0x6c, 0x65, 0x3e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, 0x72, 0x65, + 0x3a, 0x3a, 0x63, 0x75, 0x20, 0x7b, 0x0a, 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x43, 0x55, 0x44, 0x41, 0x20, + 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x75, 0x74, 0x69, 0x6c, 0x73, + 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x0a, 0x2f, 0x2f, + 0x20, 0x54, 0x6f, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x2f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x74, + 0x6f, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x76, 0x69, + 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x6d, + 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, + 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, + 0x65, 0x0a, 0x2f, 0x2f, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x61, + 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x68, + 0x61, 0x70, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, + 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x69, + 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x2c, 0x20, 0x4d, 0x41, 0x58, 0x5f, + 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x3b, 0x0a, 0x75, 0x73, 0x69, 0x6e, 0x67, + 0x20, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x61, 0x72, + 0x72, 0x61, 0x79, 0x3c, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2c, + 0x20, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x44, 0x49, 0x4d, 0x3e, 0x3b, 0x0a, + 0x0a, 0x2f, 0x2f, 0x20, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x7a, + 0x65, 0x64, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x2f, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, + 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x61, 0x73, 0x28, 0x73, + 0x69, 0x7a, 0x65, 0x6f, 0x66, 0x28, 0x54, 0x29, 0x20, 0x2a, 0x20, 0x4e, + 0x29, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x54, 0x20, 0x76, 0x61, + 0x6c, 0x5b, 0x4e, 0x5d, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x26, 0x20, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5b, 0x5d, 0x28, 0x69, 0x6e, + 0x74, 0x20, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x61, 0x6c, 0x5b, 0x69, 0x5d, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5b, 0x5d, 0x28, 0x69, 0x6e, 0x74, + 0x20, 0x69, 0x29, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, + 0x61, 0x6c, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, + 0x6f, 0x6f, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x28, 0x54, 0x2a, 0x20, 0x78, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x72, 0x65, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, + 0x74, 0x3c, 0x75, 0x69, 0x6e, 0x74, 0x70, 0x74, 0x72, 0x5f, 0x74, 0x3e, + 0x28, 0x78, 0x29, 0x20, 0x25, 0x20, 0x28, 0x4e, 0x20, 0x2a, 0x20, 0x73, + 0x69, 0x7a, 0x65, 0x6f, 0x66, 0x28, 0x54, 0x29, 0x29, 0x29, 0x20, 0x3d, + 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, + 0x4e, 0x3e, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x6c, 0x6f, + 0x61, 0x64, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, + 0x70, 0x74, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, + 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, + 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x5b, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5d, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, + 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x41, + 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, 0x20, 0x70, 0x74, 0x72, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, + 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x61, 0x6c, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, 0x74, 0x72, + 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, + 0x6f, 0x2a, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x3d, 0x20, 0x72, 0x65, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, + 0x73, 0x74, 0x3c, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x41, 0x6c, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, + 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5d, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, + 0x20, 0x76, 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, + 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x3b, 0x20, 0x2b, 0x2b, + 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, + 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x74, 0x72, 0x5b, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x69, 0x7a, 0x65, + 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x41, 0x6c, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, + 0x2c, 0x20, 0x4e, 0x3e, 0x0a, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, + 0x2a, 0x20, 0x70, 0x74, 0x72, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, + 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, + 0x53, 0x69, 0x7a, 0x65, 0x54, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x20, + 0x54, 0x20, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x61, + 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, 0x74, + 0x72, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x3c, + 0x3d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, 0x66, 0x72, 0x6f, 0x6d, + 0x20, 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, + 0x70, 0x74, 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x5b, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, + 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x41, 0x6c, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, + 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x20, 0x76, 0x3b, 0x0a, 0x23, 0x70, 0x72, + 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, + 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, + 0x4e, 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x28, + 0x4e, 0x20, 0x2a, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, + 0x20, 0x69, 0x29, 0x20, 0x3c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x3f, + 0x20, 0x70, 0x74, 0x72, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, + 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x5d, 0x20, 0x3a, 0x20, 0x66, + 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x76, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, + 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x53, 0x69, 0x7a, 0x65, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x20, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x54, 0x2a, + 0x20, 0x70, 0x74, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, + 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x69, 0x7a, 0x65, 0x54, + 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, + 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, 0x20, 0x66, 0x61, 0x6c, + 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x65, + 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x20, 0x26, 0x26, + 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x31, + 0x20, 0x26, 0x26, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, + 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x3c, 0x3d, 0x20, + 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x3d, + 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, + 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, + 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, + 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x5b, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x41, 0x6c, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, + 0x20, 0x4e, 0x3e, 0x20, 0x76, 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, + 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, + 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x3b, + 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x76, 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x4e, 0x20, 0x2a, 0x20, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, 0x20, 0x69, 0x29, 0x20, + 0x3c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x3f, 0x20, 0x70, 0x74, 0x72, + 0x5b, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x28, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, + 0x69, 0x29, 0x5d, 0x20, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, + 0x63, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, + 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x0a, 0x75, + 0x6e, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x54, 0x2a, 0x20, 0x70, 0x74, + 0x72, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x26, 0x20, 0x76, + 0x65, 0x63, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, + 0x2a, 0x20, 0x74, 0x6f, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, + 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, + 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6f, 0x5b, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x3b, 0x0a, + 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x54, 0x2a, 0x20, 0x70, + 0x74, 0x72, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, + 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x26, 0x20, + 0x76, 0x65, 0x63, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x28, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x3c, + 0x4e, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, 0x74, 0x6f, 0x20, + 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, + 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x41, 0x6c, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, + 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x74, 0x6f, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x3b, 0x0a, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x23, 0x70, 0x72, 0x61, + 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, + 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, + 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x70, 0x74, 0x72, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x5d, 0x20, 0x3d, + 0x20, 0x76, 0x65, 0x63, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, + 0x4e, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x54, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x53, 0x69, 0x7a, 0x65, 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, + 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x54, 0x2a, 0x20, 0x70, 0x74, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x26, 0x20, + 0x76, 0x65, 0x63, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x69, 0x7a, + 0x65, 0x54, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, 0x20, + 0x26, 0x26, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, + 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x3c, 0x3d, 0x20, 0x73, + 0x69, 0x7a, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, + 0x75, 0x74, 0x6f, 0x2a, 0x20, 0x74, 0x6f, 0x20, 0x3d, 0x20, 0x72, 0x65, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, + 0x73, 0x74, 0x3c, 0x41, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, + 0x28, 0x70, 0x74, 0x72, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, + 0x6f, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5d, 0x20, 0x3d, 0x20, + 0x76, 0x65, 0x63, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, + 0x28, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, + 0x2b, 0x20, 0x69, 0x29, 0x20, 0x3c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, + 0x26, 0x26, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x4e, 0x3b, 0x20, 0x2b, 0x2b, + 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, + 0x74, 0x72, 0x5b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2a, 0x20, + 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, + 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x2c, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x53, 0x69, 0x7a, 0x65, + 0x54, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, + 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x54, 0x2a, 0x20, 0x70, + 0x74, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, + 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x41, + 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x3c, 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x26, 0x20, 0x76, 0x65, 0x63, 0x2c, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x69, 0x7a, 0x65, 0x54, 0x20, 0x73, + 0x69, 0x7a, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x73, 0x5f, + 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x3c, 0x4e, 0x3e, 0x28, 0x70, + 0x74, 0x72, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x4e, 0x20, + 0x3c, 0x3d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x26, 0x26, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x2a, 0x20, + 0x74, 0x6f, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x65, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x3c, 0x41, 0x6c, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3c, + 0x54, 0x2c, 0x20, 0x4e, 0x3e, 0x2a, 0x3e, 0x28, 0x70, 0x74, 0x72, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6f, 0x5b, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, + 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x29, 0x20, + 0x3c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x26, 0x26, 0x20, 0x69, 0x20, + 0x3c, 0x20, 0x4e, 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x74, 0x72, 0x5b, 0x73, 0x74, + 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x20, 0x2a, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x69, 0x29, 0x5d, + 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x54, + 0x79, 0x70, 0x65, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x75, + 0x74, 0x69, 0x6c, 0x73, 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x2c, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x76, + 0x6f, 0x69, 0x64, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x54, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, + 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, + 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, + 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, + 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x3e, 0x20, 0x7c, 0x7c, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, + 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3e, + 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6d, 0x61, + 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, + 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x28, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, + 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6d, 0x69, 0x6e, 0x28, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x2d, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, + 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, + 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x66, 0x69, 0x6e, 0x69, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, + 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, + 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, + 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x66, 0x69, 0x6e, 0x69, 0x74, + 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, + 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, + 0x3e, 0x3a, 0x3a, 0x6c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x28, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, + 0x43, 0x55, 0x44, 0x41, 0x20, 0x31, 0x31, 0x20, 0x64, 0x6f, 0x65, 0x73, + 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x68, 0x6f, + 0x73, 0x74, 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x68, 0x61, 0x6c, + 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x0a, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x74, 0x3c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, + 0x74, 0x64, 0x3a, 0x3a, 0x69, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, + 0x76, 0x3c, 0x54, 0x2c, 0x20, 0x5f, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x3e, + 0x20, 0x7c, 0x7c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x69, + 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x76, 0x3c, 0x54, 0x2c, 0x20, + 0x5f, 0x5f, 0x6e, 0x76, 0x5f, 0x62, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x31, + 0x36, 0x3e, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, + 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, + 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, + 0x3a, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x28, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x6d, 0x69, + 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x43, 0x55, + 0x44, 0x41, 0x52, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, + 0x20, 0x3c, 0x20, 0x31, 0x32, 0x30, 0x30, 0x30, 0x20, 0x26, 0x26, 0x20, + 0x5f, 0x5f, 0x43, 0x55, 0x44, 0x41, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x5f, + 0x5f, 0x20, 0x3c, 0x20, 0x38, 0x30, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x2d, 0x63, 0x75, 0x64, 0x61, + 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, + 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x79, 0x28, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x2d, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, + 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x79, 0x28, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6e, + 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, + 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x54, 0x20, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, + 0x0a, 0x23, 0x69, 0x66, 0x20, 0x43, 0x55, 0x44, 0x41, 0x52, 0x54, 0x5f, + 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x20, 0x3c, 0x20, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x20, 0x26, 0x26, 0x20, 0x5f, 0x5f, 0x43, 0x55, 0x44, + 0x41, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x5f, 0x20, 0x3c, 0x20, 0x38, + 0x30, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x73, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x3a, 0x3a, + 0x6c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x28, 0x29, 0x3b, 0x0a, 0x23, 0x65, + 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, + 0x3a, 0x3a, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6c, 0x6f, 0x77, + 0x65, 0x73, 0x74, 0x28, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, + 0x66, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x3e, 0x0a, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, + 0x62, 0x6f, 0x6f, 0x6c, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, + 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x62, + 0x6f, 0x6f, 0x6c, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, + 0x72, 0x75, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, + 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x54, 0x3e, + 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x73, 0x3c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, + 0x3c, 0x54, 0x3e, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x65, 0x78, 0x70, + 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, 0x3c, 0x54, 0x3e, 0x20, 0x6d, + 0x61, 0x78, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x29, 0x2c, + 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, + 0x6d, 0x61, 0x78, 0x28, 0x29, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x65, 0x78, 0x70, 0x72, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, + 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x74, + 0x3c, 0x54, 0x3e, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, + 0x69, 0x6e, 0x28, 0x29, 0x2c, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, + 0x3c, 0x54, 0x3e, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, 0x29, 0x7d, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x74, 0x69, 0x6c, 0x73, 0x0a, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x3d, 0x20, 0x69, 0x6e, + 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x49, 0x64, + 0x78, 0x54, 0x0a, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, + 0x6f, 0x63, 0x28, 0x49, 0x64, 0x78, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, + 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, + 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x6e, 0x64, 0x69, 0x6d, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x49, 0x64, + 0x78, 0x54, 0x20, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, + 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, + 0x20, 0x3d, 0x20, 0x6e, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x3b, + 0x20, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x65, + 0x6c, 0x65, 0x6d, 0x20, 0x3e, 0x20, 0x30, 0x3b, 0x20, 0x2d, 0x2d, 0x69, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x20, + 0x2b, 0x3d, 0x20, 0x28, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x25, 0x20, 0x73, + 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x29, 0x20, 0x2a, 0x20, 0x49, + 0x64, 0x78, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, + 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, + 0x6d, 0x20, 0x2f, 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x63, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, + 0x2f, 0x2f, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x20, + 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x64, 0x69, + 0x6d, 0x20, 0x69, 0x73, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x61, + 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, + 0x54, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, + 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, + 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x49, 0x64, 0x78, 0x54, 0x0a, 0x65, 0x6c, 0x65, + 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, 0x28, + 0x49, 0x64, 0x78, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, + 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, + 0x54, 0x20, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x23, + 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, + 0x6c, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, + 0x20, 0x69, 0x20, 0x3d, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x20, 0x2d, 0x20, + 0x31, 0x3b, 0x20, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x2d, + 0x2d, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, + 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x25, + 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x29, 0x20, 0x2a, + 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, + 0x6c, 0x65, 0x6d, 0x20, 0x2f, 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, + 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x63, 0x3b, 0x0a, 0x7d, + 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, + 0x69, 0x6e, 0x74, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, + 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, 0x0a, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, + 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, + 0x3a, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2c, + 0x20, 0x49, 0x64, 0x78, 0x54, 0x3e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, + 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x6e, 0x64, 0x28, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, + 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, + 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x61, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, + 0x20, 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x61, 0x5f, 0x6c, + 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x49, 0x64, + 0x78, 0x54, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, + 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x75, 0x6e, + 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, + 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x4e, 0x44, 0x49, 0x4d, + 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x20, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, + 0x3b, 0x20, 0x2d, 0x2d, 0x69, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, + 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x25, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, + 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, + 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, + 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, + 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x62, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2f, 0x3d, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6d, 0x61, 0x6b, 0x65, + 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x61, 0x5f, 0x6c, 0x6f, 0x63, + 0x2c, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, + 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, + 0x6e, 0x74, 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x3d, + 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, 0x0a, 0x69, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, + 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x74, 0x75, 0x70, 0x6c, 0x65, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, + 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, 0x49, 0x64, 0x78, 0x54, 0x3e, 0x20, + 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, + 0x6e, 0x64, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, + 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, + 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, + 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x61, 0x5f, 0x6c, 0x6f, + 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, + 0x54, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, + 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x63, 0x5f, 0x6c, 0x6f, + 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, + 0x6d, 0x61, 0x20, 0x75, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x20, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, + 0x20, 0x4e, 0x44, 0x49, 0x4d, 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x20, 0x69, + 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x2d, 0x2d, 0x69, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, + 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, + 0x20, 0x25, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, + 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, + 0x49, 0x64, 0x78, 0x54, 0x28, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, + 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, + 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, + 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x5f, 0x6c, 0x6f, 0x63, + 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, + 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x63, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2f, 0x3d, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x75, 0x64, + 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6d, 0x61, 0x6b, 0x65, + 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x61, 0x5f, 0x6c, 0x6f, 0x63, + 0x2c, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x2c, 0x20, 0x63, 0x5f, 0x6c, + 0x6f, 0x63, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x3d, 0x20, 0x69, 0x6e, + 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x20, 0x5f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x75, + 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x75, 0x70, + 0x6c, 0x65, 0x3c, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, 0x49, 0x64, 0x78, + 0x54, 0x3e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, + 0x6f, 0x63, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, + 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, + 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, + 0x20, 0x6e, 0x64, 0x69, 0x6d, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x49, + 0x64, 0x78, 0x54, 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x62, 0x5f, + 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, + 0x6e, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x20, 0x69, 0x20, + 0x3e, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x2d, 0x2d, 0x69, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, + 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, + 0x25, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, + 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, + 0x64, 0x78, 0x54, 0x28, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x62, + 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, + 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x62, + 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2f, + 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, + 0x6d, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x61, + 0x5f, 0x6c, 0x6f, 0x63, 0x2c, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x29, + 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x49, 0x64, 0x78, 0x54, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, + 0x5f, 0x74, 0x3e, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x5f, + 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x5f, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x63, 0x75, 0x64, 0x61, 0x3a, + 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x3c, + 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, 0x49, 0x64, 0x78, 0x54, 0x2c, 0x20, + 0x49, 0x64, 0x78, 0x54, 0x3e, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, + 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x49, + 0x64, 0x78, 0x54, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, + 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, + 0x74, 0x2a, 0x20, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, + 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x62, 0x5f, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, + 0x74, 0x2a, 0x20, 0x63, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x64, + 0x69, 0x6d, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, + 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, + 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, + 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x49, 0x64, 0x78, 0x54, + 0x20, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, + 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, + 0x20, 0x3d, 0x20, 0x6e, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x3b, + 0x20, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x2d, 0x2d, 0x69, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x65, 0x6c, + 0x65, 0x6d, 0x20, 0x25, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x5f, 0x6c, 0x6f, 0x63, + 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, + 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x61, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, + 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, + 0x54, 0x28, 0x62, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, + 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x5f, 0x6c, + 0x6f, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x69, 0x6d, 0x5f, 0x69, 0x64, + 0x78, 0x20, 0x2a, 0x20, 0x49, 0x64, 0x78, 0x54, 0x28, 0x63, 0x5f, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x2f, 0x3d, 0x20, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, + 0x75, 0x64, 0x61, 0x3a, 0x3a, 0x73, 0x74, 0x64, 0x3a, 0x3a, 0x6d, 0x61, + 0x6b, 0x65, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x28, 0x61, 0x5f, 0x6c, + 0x6f, 0x63, 0x2c, 0x20, 0x62, 0x5f, 0x6c, 0x6f, 0x63, 0x2c, 0x20, 0x63, + 0x5f, 0x6c, 0x6f, 0x63, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x45, 0x6c, 0x65, + 0x6d, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x63, 0x20, 0x69, 0x6e, 0x20, + 0x61, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x20, 0x75, 0x74, 0x69, 0x6c, 0x73, + 0x0a, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x0a, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x20, + 0x44, 0x49, 0x4d, 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, + 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x7a, + 0x65, 0x5f, 0x74, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, + 0x4c, 0x6f, 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, + 0x4c, 0x6f, 0x63, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x64, 0x69, 0x6d, 0x3b, 0x0a, 0x20, 0x20, 0x4c, 0x6f, 0x6f, 0x70, 0x65, + 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, 0x4c, 0x6f, 0x63, 0x3c, 0x44, + 0x49, 0x4d, 0x20, 0x2d, 0x20, 0x31, 0x2c, 0x20, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x6c, 0x2c, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, + 0x3e, 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, + 0x65, 0x72, 0x3b, 0x0a, 0x20, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x54, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x7b, 0x30, 0x7d, 0x3b, + 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x7b, 0x30, 0x7d, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x4c, 0x6f, 0x6f, 0x70, 0x65, + 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, 0x4c, 0x6f, 0x63, 0x28, 0x69, + 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, 0x29, 0x20, 0x3a, 0x20, 0x64, 0x69, + 0x6d, 0x28, 0x64, 0x69, 0x6d, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x28, 0x64, 0x69, 0x6d, + 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x7d, 0x0a, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, + 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x28, 0x64, 0x69, 0x6d, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, 0x3d, 0x20, + 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x73, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x5d, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x65, + 0x72, 0x2e, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x73, 0x68, 0x61, 0x70, 0x65, + 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, + 0x70, 0x65, 0x72, 0x2e, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x69, 0x6e, + 0x74, 0x20, 0x6e, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, + 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, + 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x64, 0x69, 0x6d, + 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x20, 0x2b, 0x3d, 0x20, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x6e, + 0x20, 0x2a, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x28, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, + 0x20, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, + 0x31, 0x5d, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x6e, 0x74, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x3d, 0x20, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2d, 0x20, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x20, 0x3e, 0x3d, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, + 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x6e, + 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x2e, 0x6e, 0x65, + 0x78, 0x74, 0x28, 0x31, 0x20, 0x2b, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, + 0x20, 0x2f, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x64, 0x69, 0x6d, + 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x2c, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, + 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x78, 0x74, 0x72, + 0x61, 0x20, 0x3d, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x25, 0x20, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x5b, 0x64, 0x69, 0x6d, 0x20, 0x2d, 0x20, + 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x6f, + 0x70, 0x65, 0x72, 0x2e, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, + 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, + 0x6c, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x2e, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x28, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x3e, 0x20, 0x30, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x65, + 0x78, 0x74, 0x28, 0x65, 0x78, 0x74, 0x72, 0x61, 0x2c, 0x20, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, + 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x3c, 0x74, 0x79, 0x70, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4c, 0x6f, + 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, 0x4c, 0x6f, + 0x63, 0x3c, 0x31, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x20, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, 0x3b, 0x0a, 0x20, 0x20, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x7b, 0x30, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7b, 0x30, 0x7d, 0x3b, 0x0a, 0x0a, 0x20, + 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, + 0x4c, 0x6f, 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x54, 0x6f, + 0x4c, 0x6f, 0x63, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x6d, 0x29, + 0x20, 0x3a, 0x20, 0x64, 0x69, 0x6d, 0x28, 0x64, 0x69, 0x6d, 0x29, 0x20, + 0x7b, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, + 0x78, 0x74, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2b, 0x2b, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x64, 0x69, 0x6d, 0x20, + 0x3e, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x65, 0x6c, + 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x3c, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x54, 0x3e, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x2c, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x73, 0x74, 0x72, + 0x69, 0x64, 0x65, 0x73, 0x2c, 0x20, 0x64, 0x69, 0x6d, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, + 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x30, 0x5d, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x28, + 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2c, + 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x36, 0x34, + 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x20, 0x2b, 0x3d, 0x20, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x28, 0x64, 0x69, 0x6d, 0x20, 0x3e, 0x20, 0x31, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x20, 0x3d, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x5f, 0x74, 0x6f, + 0x5f, 0x6c, 0x6f, 0x63, 0x3c, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, + 0x3e, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x2c, + 0x20, 0x64, 0x69, 0x6d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2a, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x30, + 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x5f, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x7d, 0x3b, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x20, 0x4c, 0x6f, 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, + 0x6d, 0x54, 0x6f, 0x4c, 0x6f, 0x63, 0x3c, 0x31, 0x2c, 0x20, 0x66, 0x61, + 0x6c, 0x73, 0x65, 0x2c, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, + 0x3e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x54, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x7b, 0x30, 0x7d, 0x3b, + 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x5f, 0x20, 0x4c, 0x6f, 0x6f, 0x70, 0x65, 0x64, 0x45, 0x6c, 0x65, + 0x6d, 0x54, 0x6f, 0x4c, 0x6f, 0x63, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x20, + 0x7b, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6e, 0x65, + 0x78, 0x74, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x2a, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x5b, 0x30, + 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x5f, + 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x5f, 0x20, 0x76, 0x6f, + 0x69, 0x64, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x69, 0x6e, 0x74, 0x20, + 0x6e, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x2a, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x5f, 0x74, 0x2a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, + 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x6e, 0x20, 0x2a, 0x20, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x28, 0x73, 0x74, 0x72, 0x69, 0x64, + 0x65, 0x73, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x0a, 0x20, 0x20, 0x5f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x5f, 0x20, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x20, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x3b, + 0x0a, 0x0a, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x6c, 0x78, 0x3a, 0x3a, 0x63, 0x6f, + 0x72, 0x65, 0x3a, 0x3a, 0x63, 0x75, 0x0a, 0x00, +}; + +} // namespace mlx::core diff --git a/tools/update-mlx.sh b/tools/update-mlx.sh index 940a3f33..fc1ab961 100755 --- a/tools/update-mlx.sh +++ b/tools/update-mlx.sh @@ -14,7 +14,7 @@ fi rm -f Source/Cmlx/include/mlx/c/* cp Source/Cmlx/mlx-c/mlx/c/*.h Source/Cmlx/include/mlx/c -# run the command to do the build-time code generation +# run the command to do the build-time code generation for Metal mkdir build cd build @@ -73,12 +73,21 @@ make \ cd ../../.. make cpu_compiled_preamble +# run the command to do the build-time code generation for CUDA +cmake \ + -DMLX_SOURCE_ROOT="../Source/Cmlx/mlx/mlx/backend/cuda" \ + -DMLX_JIT_SOURCES="device/atomic_ops.cuh:device/binary_ops.cuh:device/cast_op.cuh:device/complex.cuh:device/config.h:device/fp16_math.cuh:device/gather.cuh:device/gather_axis.cuh:device/hadamard.cuh:device/indexing.cuh:device/scatter.cuh:device/scatter_axis.cuh:device/scatter_ops.cuh:device/ternary_ops.cuh:device/unary_ops.cuh:device/utils.cuh" \ + -P "../Source/Cmlx/mlx/mlx/backend/cuda/bin2h.cmake" + cd .. rm -rf Source/Cmlx/mlx-generated/metal +rm -rf Source/Cmlx/mlx-generated/cuda rm -f Source/Cmlx/mlx-generated/* +mkdir -p Source/Cmlx/mlx-generated/cuda cp build/mlx/backend/metal/jit/* Source/Cmlx/mlx-generated cp build/mlx/backend/cpu/compiled_preamble.cpp Source/Cmlx/mlx-generated +cp build/gen/cuda_jit_sources.h Source/Cmlx/mlx-generated/cuda # we don't need the cmake build directory any more rm -rf build From 8fec7848996fbacff2f8b360db9d8cf0357934a9 Mon Sep 17 00:00:00 2001 From: Gabriele Mondada Date: Mon, 25 May 2026 12:41:19 +0200 Subject: [PATCH 05/11] Apply project code formatting --- Package.swift | 103 ++++---- Plugins/CudaBuild/plugin.swift | 30 ++- Source/MLX/MLXFastKernel.swift | 371 +++++++++++++++-------------- Source/encuda/encuda-compile.swift | 11 +- Source/encuda/encuda-error.swift | 4 +- Source/encuda/encuda-link.swift | 7 +- 6 files changed, 275 insertions(+), 251 deletions(-) diff --git a/Package.swift b/Package.swift index b47eb644..1a84ee58 100644 --- a/Package.swift +++ b/Package.swift @@ -87,32 +87,33 @@ let noCudaCmlxExcludes = [ if Context.environment["SPM_CUDA"] != "0" { // Linux with CUDA - platformExcludes = [ - "framework", - "include-framework", - "metal-cpp", - - "mlx/mlx/backend/no_gpu", - "mlx/mlx/backend/cuda/no_cuda.cpp", - "mlx/mlx/backend/cuda/quantized/no_qqmm_impl.cpp", - "mlx/mlx/backend/cuda/gemms/cublas_gemm_batched_12_0.cpp", - "mlx/mlx/backend/no_cpu", // Exclude no_cpu backend on Linux, use cpu instead - "mlx/mlx/backend/cpu/gemms/bnns.cpp", // macOS Accelerate version - "mlx-conditional", - "mlx-c/mlx/c/metal.cpp", - - "mlx/mlx/backend/cuda/delayload.cpp", // For Windows - "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n16_m1.cu", - "mlx/mlx/backend/cuda/quantized/qmm/qmv.cu", - "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n32_m1.cu", - "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90.cuh", - "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n64_m2.cu", - "mlx/mlx/backend/cuda/quantized/qmm/qmm.h", - "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n256_m2.cu", - "mlx/mlx/backend/cuda/quantized/qmm/qmm.cu", - "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n128_m2.cu", - "mlx/mlx/backend/cuda/quantized/qmm/fp_qmv.cu", - ] + noMetalCmlxExcludes + platformExcludes = + [ + "framework", + "include-framework", + "metal-cpp", + + "mlx/mlx/backend/no_gpu", + "mlx/mlx/backend/cuda/no_cuda.cpp", + "mlx/mlx/backend/cuda/quantized/no_qqmm_impl.cpp", + "mlx/mlx/backend/cuda/gemms/cublas_gemm_batched_12_0.cpp", + "mlx/mlx/backend/no_cpu", // Exclude no_cpu backend on Linux, use cpu instead + "mlx/mlx/backend/cpu/gemms/bnns.cpp", // macOS Accelerate version + "mlx-conditional", + "mlx-c/mlx/c/metal.cpp", + + "mlx/mlx/backend/cuda/delayload.cpp", // For Windows + "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n16_m1.cu", + "mlx/mlx/backend/cuda/quantized/qmm/qmv.cu", + "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n32_m1.cu", + "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90.cuh", + "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n64_m2.cu", + "mlx/mlx/backend/cuda/quantized/qmm/qmm.h", + "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n256_m2.cu", + "mlx/mlx/backend/cuda/quantized/qmm/qmm.cu", + "mlx/mlx/backend/cuda/quantized/qmm/qmm_impl_sm90_m128_n128_m2.cu", + "mlx/mlx/backend/cuda/quantized/qmm/fp_qmv.cu", + ] + noMetalCmlxExcludes cxxSettings = [ .unsafeFlags(["-I/usr/local/cuda/include"]), @@ -141,20 +142,21 @@ let noCudaCmlxExcludes = [ } else { // Linux without CUDA (CPU only) - platformExcludes = [ - "framework", - "include-framework", - "metal-cpp", + platformExcludes = + [ + "framework", + "include-framework", + "metal-cpp", - "mlx/mlx/backend/gpu", // Exclude GPU backend on Linux, use no_gpu instead - "mlx/mlx/backend/no_cpu", // Exclude no_cpu backend on Linux, use cpu instead - "mlx/mlx/backend/cpu/gemms/bnns.cpp", // macOS Accelerate version - "mlx-conditional", - "mlx-c/mlx/c/metal.cpp", + "mlx/mlx/backend/gpu", // Exclude GPU backend on Linux, use no_gpu instead + "mlx/mlx/backend/no_cpu", // Exclude no_cpu backend on Linux, use cpu instead + "mlx/mlx/backend/cpu/gemms/bnns.cpp", // macOS Accelerate version + "mlx-conditional", + "mlx-c/mlx/c/metal.cpp", - "mlx-c/mlx/c/fast.cpp", // Exclude on Linux - calls metal_kernel unconditionally + "mlx-c/mlx/c/fast.cpp", // Exclude on Linux - calls metal_kernel unconditionally - ] + noMetalCmlxExcludes + noCudaCmlxExcludes + ] + noMetalCmlxExcludes + noCudaCmlxExcludes cxxSettings = [] @@ -176,18 +178,19 @@ let noCudaCmlxExcludes = [ #else // Apple's platforms with Metal - let platformExcludes: [String] = [ - "mlx/mlx/backend/cpu/compiled.cpp", + let platformExcludes: [String] = + [ + "mlx/mlx/backend/cpu/compiled.cpp", - // opt-out of these backends (using metal) - "mlx/mlx/backend/no_gpu", - "mlx/mlx/backend/no_cpu", - "mlx/mlx/backend/metal/no_metal.cpp", + // opt-out of these backends (using metal) + "mlx/mlx/backend/no_gpu", + "mlx/mlx/backend/no_cpu", + "mlx/mlx/backend/metal/no_metal.cpp", - // bnns instead of simd (accelerate) - "mlx/mlx/backend/cpu/gemms/simd_fp16.cpp", - "mlx/mlx/backend/cpu/gemms/simd_bf16.cpp", - ] + noCudaCmlxExcludes + // bnns instead of simd (accelerate) + "mlx/mlx/backend/cpu/gemms/simd_fp16.cpp", + "mlx/mlx/backend/cpu/gemms/simd_bf16.cpp", + ] + noCudaCmlxExcludes let cxxSettings: [CXXSetting] = [ .headerSearchPath("metal-cpp"), @@ -206,7 +209,7 @@ let noCudaCmlxExcludes = [ ] let mlxSwiftExcludes: [String] = [ - "GPU+CUDA.swift", + "GPU+CUDA.swift" ] #endif @@ -413,14 +416,14 @@ let package = Package( .executableTarget( name: "encuda", dependencies: [ - .product(name: "ArgumentParser", package: "swift-argument-parser"), + .product(name: "ArgumentParser", package: "swift-argument-parser") ], ), .plugin( name: "CudaBuild", capability: .buildTool(), dependencies: [ - .target(name: "encuda"), + .target(name: "encuda") ], ), ], diff --git a/Plugins/CudaBuild/plugin.swift b/Plugins/CudaBuild/plugin.swift index ecbf2187..29aa5bb6 100644 --- a/Plugins/CudaBuild/plugin.swift +++ b/Plugins/CudaBuild/plugin.swift @@ -21,11 +21,13 @@ struct CudaBuild: BuildToolPlugin { init(from decoder: Decoder) throws { let c = try decoder.container(keyedBy: CodingKeys.self) - headerSearchPaths = try c.decodeIfPresent([String].self, forKey: .headerSearchPaths) ?? [] + headerSearchPaths = + try c.decodeIfPresent([String].self, forKey: .headerSearchPaths) ?? [] exclude = try c.decodeIfPresent([String].self, forKey: .exclude) ?? [] cppLanguageStandard = try c.decodeIfPresent(String.self, forKey: .cppLanguageStandard) verbose = try c.decodeIfPresent(Bool.self, forKey: .verbose) ?? false - codeGeneration = try c.decodeIfPresent([CodeGeneration].self, forKey: .codeGeneration) ?? [] + codeGeneration = + try c.decodeIfPresent([CodeGeneration].self, forKey: .codeGeneration) ?? [] } } @@ -63,11 +65,15 @@ struct CudaBuild: BuildToolPlugin { let sourceDirPath = sourceDir.path.hasSuffix("/") ? sourceDir.path : sourceDir.path + "/" var sourceCuFiles: [URL] = [] - if let enumerator = FileManager.default.enumerator(at: sourceDir, includingPropertiesForKeys: nil) { + if let enumerator = FileManager.default.enumerator( + at: sourceDir, includingPropertiesForKeys: nil) + { while let inputUrl = enumerator.nextObject() as? URL { if inputUrl.pathExtension == "cu" { guard inputUrl.path.hasPrefix(sourceDirPath) else { - fatalError("Input file \(inputUrl.path) is not under source directory \(sourceDirPath)") + fatalError( + "Input file \(inputUrl.path) is not under source directory \(sourceDirPath)" + ) } let relateivePath = String(inputUrl.path.dropFirst(sourceDirPath.count)) if isExcluded(settings: settings, relativePath: relateivePath) { @@ -92,7 +98,8 @@ struct CudaBuild: BuildToolPlugin { for (index, codeGen) in settings.codeGeneration.enumerated() { let tool = try context.tool(named: codeGen.tool) let codeGenOutputDir = outputDir.appendingPathComponent("gen\(index)-\(codeGen.tool)") - try FileManager.default.createDirectory(at: codeGenOutputDir, withIntermediateDirectories: true) + try FileManager.default.createDirectory( + at: codeGenOutputDir, withIntermediateDirectories: true) let inputUrls = codeGen.inputs.map { sourceDir.appendingPathComponent($0) } let outputUrls = codeGen.outputs.map { codeGenOutputDir.appendingPathComponent($0) } commands.append( @@ -113,14 +120,18 @@ struct CudaBuild: BuildToolPlugin { let encuda = try context.tool(named: "encuda") let verboseFlag = settings.verbose ? ["-v"] : [] - let headerSearchPathArgs = settings.headerSearchPaths.flatMap { ["-I", sourceDirPath + $0] } + let headerSearchPathArgs = settings.headerSearchPaths.flatMap { + ["-I", sourceDirPath + $0] + } let stdArgs = settings.cppLanguageStandard.map { ["--std", $0] } ?? [] for inputFile in sourceCuFiles + generatedCuFiles { - let outputCpp = URL(string: inputFile.relativePath, relativeTo: outputDir)!.deletingPathExtension().appendingPathExtension("cpp") + let outputCpp = URL(string: inputFile.relativePath, relativeTo: outputDir)! + .deletingPathExtension().appendingPathExtension("cpp") commands.append( .buildCommand( - displayName: "Compiling \(inputFile.lastPathComponent) to \(outputCpp.lastPathComponent)", + displayName: + "Compiling \(inputFile.lastPathComponent) to \(outputCpp.lastPathComponent)", executable: encuda.url, arguments: ["compile"] + verboseFlag + stdArgs + [ "--clangpp", clangUrl.url.path, @@ -165,7 +176,8 @@ struct CudaBuild: BuildToolPlugin { let prefix = folderPath.hasSuffix("/") ? folderPath : (folderPath + "/") return path.hasPrefix(prefix) } - return settings.exclude.contains(relativePath) || settings.exclude.contains { isInFolder(path: relativePath, folderPath: $0) } + return settings.exclude.contains(relativePath) + || settings.exclude.contains { isInFolder(path: relativePath, folderPath: $0) } } func isCudaEnabled() -> Bool { diff --git a/Source/MLX/MLXFastKernel.swift b/Source/MLX/MLXFastKernel.swift index f26d4055..47dc6669 100644 --- a/Source/MLX/MLXFastKernel.swift +++ b/Source/MLX/MLXFastKernel.swift @@ -18,216 +18,217 @@ extension DType: KernelTemplateArg {} #if os(macOS) || os(iOS) || os(tvOS) || os(visionOS) -extension MLXFast { - - /// Container for a kernel created by - /// ``callAsFunction(_:template:grid:threadGroup:outputShapes:outputDTypes:initValue:verbose:stream:)`` - /// - /// The ``callAsFunction(_:template:grid:threadGroup:outputShapes:outputDTypes:initValue:verbose:stream:)`` can be used to evaluate the kernel with inputs: - /// - /// ```swift - /// let a = normal([2, 2]) - /// let kernel = MLXFast.metalKernel( - /// name: "basic", - /// inputNames: ["a"], - /// outputNames: ["out1"], - /// source: """ - /// uint elem = thread_position_in_grid.x; - /// out1[elem] = a[elem]; - /// """, - /// grid: (4, 1, 1), - /// threadGroup: (2, 1, 1), - /// outputShapes: [[2, 2]], - /// outputDTypes: [.float32]) - /// - /// let out = kernel([a]) - /// ``` - final public class MLXFastKernel: @unchecked Sendable { - let kernel: mlx_fast_metal_kernel - public let outputNames: [String] - - init( - name: String, inputNames: some Sequence, outputNames: some Sequence, - source: String, header: String = "", - ensureRowContiguous: Bool = true, - atomicOutputs: Bool = false - ) { - self.outputNames = Array(outputNames) + extension MLXFast { - let input_names = mlx_vector_string_new() - defer { mlx_vector_string_free(input_names) } - for name in inputNames { - mlx_vector_string_append_value(input_names, name) - } + /// Container for a kernel created by + /// ``callAsFunction(_:template:grid:threadGroup:outputShapes:outputDTypes:initValue:verbose:stream:)`` + /// + /// The ``callAsFunction(_:template:grid:threadGroup:outputShapes:outputDTypes:initValue:verbose:stream:)`` can be used to evaluate the kernel with inputs: + /// + /// ```swift + /// let a = normal([2, 2]) + /// let kernel = MLXFast.metalKernel( + /// name: "basic", + /// inputNames: ["a"], + /// outputNames: ["out1"], + /// source: """ + /// uint elem = thread_position_in_grid.x; + /// out1[elem] = a[elem]; + /// """, + /// grid: (4, 1, 1), + /// threadGroup: (2, 1, 1), + /// outputShapes: [[2, 2]], + /// outputDTypes: [.float32]) + /// + /// let out = kernel([a]) + /// ``` + final public class MLXFastKernel: @unchecked Sendable { + let kernel: mlx_fast_metal_kernel + public let outputNames: [String] + + init( + name: String, inputNames: some Sequence, outputNames: some Sequence, + source: String, header: String = "", + ensureRowContiguous: Bool = true, + atomicOutputs: Bool = false + ) { + self.outputNames = Array(outputNames) + + let input_names = mlx_vector_string_new() + defer { mlx_vector_string_free(input_names) } + for name in inputNames { + mlx_vector_string_append_value(input_names, name) + } - let output_names = mlx_vector_string_new() - defer { mlx_vector_string_free(output_names) } - for name in self.outputNames { - mlx_vector_string_append_value(output_names, name) - } + let output_names = mlx_vector_string_new() + defer { mlx_vector_string_free(output_names) } + for name in self.outputNames { + mlx_vector_string_append_value(output_names, name) + } - self.kernel = mlx_fast_metal_kernel_new( - name.cString(using: .utf8), - input_names, output_names, - source.cString(using: .utf8), - header.cString(using: .utf8), - ensureRowContiguous, atomicOutputs) - } + self.kernel = mlx_fast_metal_kernel_new( + name.cString(using: .utf8), + input_names, output_names, + source.cString(using: .utf8), + header.cString(using: .utf8), + ensureRowContiguous, atomicOutputs) + } - deinit { - mlx_fast_metal_kernel_free(kernel) - } + deinit { + mlx_fast_metal_kernel_free(kernel) + } - /// Call the prepared metal kernel. - /// - /// See ``MLXFastKernel`` for example. Use - /// ``metalKernel(name:inputNames:outputNames:source:header:ensureRowContiguous:atomicOutputs:)`` - /// to create an instance. - /// - /// - Parameters: - /// - inputs: inputs passed to the metal kernel - /// - template: template arguments - /// - grid: 3-tuple specifying the grid to launch the kernel with - /// - threadGroup: 3-tuple specifying the threadgroup size to use - /// - outputShapes: list of shapes for each output in ``outputNames`` - /// - outputDTypes: list of data types for each output in ``outputNames`` - /// - initValue: optional value to use to initialize all of the output arrays - /// - verbose: if true will print the full generated source code of the kernel when run - /// - stream: stream to run on - /// - Returns: array of `MLXArray` - public func callAsFunction( - _ inputs: [any ScalarOrArray], - template: [(String, any KernelTemplateArg)]? = nil, - grid: (Int, Int, Int), - threadGroup: (Int, Int, Int), - outputShapes: some Sequence<[Int]>, - outputDTypes: some Sequence, - initValue: Float? = nil, - verbose: Bool = false, - stream: StreamOrDevice = .default - ) -> [MLXArray] { - let config = mlx_fast_metal_kernel_config_new() - defer { mlx_fast_metal_kernel_config_free(config) } - - if let template { - for (name, arg) in template { - switch arg { - case let value as Bool: - mlx_fast_metal_kernel_config_add_template_arg_bool(config, name, value) - - case let value as Int: - mlx_fast_metal_kernel_config_add_template_arg_int( - config, name, Int32(value)) - - case let value as DType: - mlx_fast_metal_kernel_config_add_template_arg_dtype( - config, name, value.cmlxDtype) - - default: - fatalError( - "Unable to handle KernelTemplateArg \(name) with type: \(type(of: arg))." - ) + /// Call the prepared metal kernel. + /// + /// See ``MLXFastKernel`` for example. Use + /// ``metalKernel(name:inputNames:outputNames:source:header:ensureRowContiguous:atomicOutputs:)`` + /// to create an instance. + /// + /// - Parameters: + /// - inputs: inputs passed to the metal kernel + /// - template: template arguments + /// - grid: 3-tuple specifying the grid to launch the kernel with + /// - threadGroup: 3-tuple specifying the threadgroup size to use + /// - outputShapes: list of shapes for each output in ``outputNames`` + /// - outputDTypes: list of data types for each output in ``outputNames`` + /// - initValue: optional value to use to initialize all of the output arrays + /// - verbose: if true will print the full generated source code of the kernel when run + /// - stream: stream to run on + /// - Returns: array of `MLXArray` + public func callAsFunction( + _ inputs: [any ScalarOrArray], + template: [(String, any KernelTemplateArg)]? = nil, + grid: (Int, Int, Int), + threadGroup: (Int, Int, Int), + outputShapes: some Sequence<[Int]>, + outputDTypes: some Sequence, + initValue: Float? = nil, + verbose: Bool = false, + stream: StreamOrDevice = .default + ) -> [MLXArray] { + let config = mlx_fast_metal_kernel_config_new() + defer { mlx_fast_metal_kernel_config_free(config) } + + if let template { + for (name, arg) in template { + switch arg { + case let value as Bool: + mlx_fast_metal_kernel_config_add_template_arg_bool(config, name, value) + + case let value as Int: + mlx_fast_metal_kernel_config_add_template_arg_int( + config, name, Int32(value)) + + case let value as DType: + mlx_fast_metal_kernel_config_add_template_arg_dtype( + config, name, value.cmlxDtype) + + default: + fatalError( + "Unable to handle KernelTemplateArg \(name) with type: \(type(of: arg))." + ) + } } } - } - mlx_fast_metal_kernel_config_set_grid(config, grid.0.int32, grid.1.int32, grid.2.int32) - mlx_fast_metal_kernel_config_set_thread_group( - config, threadGroup.0.int32, threadGroup.1.int32, threadGroup.2.int32) + mlx_fast_metal_kernel_config_set_grid( + config, grid.0.int32, grid.1.int32, grid.2.int32) + mlx_fast_metal_kernel_config_set_thread_group( + config, threadGroup.0.int32, threadGroup.1.int32, threadGroup.2.int32) - for (shape, dtype) in zip(outputShapes, outputDTypes) { - mlx_fast_metal_kernel_config_add_output_arg( - config, shape.map { Int32($0) }, shape.count, dtype.cmlxDtype) - } + for (shape, dtype) in zip(outputShapes, outputDTypes) { + mlx_fast_metal_kernel_config_add_output_arg( + config, shape.map { Int32($0) }, shape.count, dtype.cmlxDtype) + } - if let initValue { - mlx_fast_metal_kernel_config_set_init_value(config, initValue) - } + if let initValue { + mlx_fast_metal_kernel_config_set_init_value(config, initValue) + } + + mlx_fast_metal_kernel_config_set_verbose(config, verbose) - mlx_fast_metal_kernel_config_set_verbose(config, verbose) + let inputs = new_mlx_vector_array(inputs.map { $0.asMLXArray(dtype: nil) }) + defer { mlx_vector_array_free(inputs) } - let inputs = new_mlx_vector_array(inputs.map { $0.asMLXArray(dtype: nil) }) - defer { mlx_vector_array_free(inputs) } + var result = mlx_vector_array_new() + mlx_fast_metal_kernel_apply(&result, kernel, inputs, config, stream.ctx) + defer { mlx_vector_array_free(result) } - var result = mlx_vector_array_new() - mlx_fast_metal_kernel_apply(&result, kernel, inputs, config, stream.ctx) - defer { mlx_vector_array_free(result) } + return mlx_vector_array_values(result) + } + } - return mlx_vector_array_values(result) + /// A jit-compiled custom Metal kernel defined from a source string. + /// + /// - Parameters: + /// - name: name for the kernel + /// - inputNames: parameter names of the inputs in the function signature + /// - outputNames: parameter names of the outputs in the function signature + /// - source: source code -- this is the body of a function in Metal, + /// the function signature will be automatically generated. + /// - header: header source code to include before the main function. Useful + /// for helper functions or includes that should live outside of the main function body. + /// - ensureRowContiguous: whether to ensure the inputs are row contiguous + /// before the kernel runs (at a performance cost) + /// - atomicOutputs: whether to use atomic outputs in the function signature, + /// e.g. `device atomic` + /// - Returns: an ``MLXFastKernel`` -- see that for information on how to call it + public static func metalKernel( + name: String, inputNames: some Sequence, outputNames: some Sequence, + source: String, header: String = "", ensureRowContiguous: Bool = true, + atomicOutputs: Bool = false + ) -> MLXFastKernel { + MLXFastKernel( + name: name, inputNames: inputNames, outputNames: outputNames, + source: source, header: header, + ensureRowContiguous: ensureRowContiguous, atomicOutputs: atomicOutputs + ) } - } - - /// A jit-compiled custom Metal kernel defined from a source string. - /// - /// - Parameters: - /// - name: name for the kernel - /// - inputNames: parameter names of the inputs in the function signature - /// - outputNames: parameter names of the outputs in the function signature - /// - source: source code -- this is the body of a function in Metal, - /// the function signature will be automatically generated. - /// - header: header source code to include before the main function. Useful - /// for helper functions or includes that should live outside of the main function body. - /// - ensureRowContiguous: whether to ensure the inputs are row contiguous - /// before the kernel runs (at a performance cost) - /// - atomicOutputs: whether to use atomic outputs in the function signature, - /// e.g. `device atomic` - /// - Returns: an ``MLXFastKernel`` -- see that for information on how to call it - public static func metalKernel( - name: String, inputNames: some Sequence, outputNames: some Sequence, - source: String, header: String = "", ensureRowContiguous: Bool = true, - atomicOutputs: Bool = false - ) -> MLXFastKernel { - MLXFastKernel( - name: name, inputNames: inputNames, outputNames: outputNames, - source: source, header: header, - ensureRowContiguous: ensureRowContiguous, atomicOutputs: atomicOutputs - ) - } - -} // MLXFast + + } // MLXFast #else -// Stub allowing compilation for platforms without Metal. + // Stub allowing compilation for platforms without Metal. -extension MLXFast { + extension MLXFast { - final public class MLXFastKernel: @unchecked Sendable { - public let outputNames: [String] + final public class MLXFastKernel: @unchecked Sendable { + public let outputNames: [String] - init( - name: String, inputNames: some Sequence, outputNames: some Sequence, - source: String, header: String = "", - ensureRowContiguous: Bool = true, - atomicOutputs: Bool = false - ) { - self.outputNames = [] - fatalError("MLXFastKernel is not available without Metal") + init( + name: String, inputNames: some Sequence, outputNames: some Sequence, + source: String, header: String = "", + ensureRowContiguous: Bool = true, + atomicOutputs: Bool = false + ) { + self.outputNames = [] + fatalError("MLXFastKernel is not available without Metal") + } + + public func callAsFunction( + _ inputs: [any ScalarOrArray], + template: [(String, any KernelTemplateArg)]? = nil, + grid: (Int, Int, Int), + threadGroup: (Int, Int, Int), + outputShapes: some Sequence<[Int]>, + outputDTypes: some Sequence, + initValue: Float? = nil, + verbose: Bool = false, + stream: StreamOrDevice = .default + ) -> [MLXArray] { + fatalError("MLXFastKernel is not available without Metal") + } } - public func callAsFunction( - _ inputs: [any ScalarOrArray], - template: [(String, any KernelTemplateArg)]? = nil, - grid: (Int, Int, Int), - threadGroup: (Int, Int, Int), - outputShapes: some Sequence<[Int]>, - outputDTypes: some Sequence, - initValue: Float? = nil, - verbose: Bool = false, - stream: StreamOrDevice = .default - ) -> [MLXArray] { + public static func metalKernel( + name: String, inputNames: some Sequence, outputNames: some Sequence, + source: String, header: String = "", ensureRowContiguous: Bool = true, + atomicOutputs: Bool = false + ) -> MLXFastKernel { fatalError("MLXFastKernel is not available without Metal") } - } - - public static func metalKernel( - name: String, inputNames: some Sequence, outputNames: some Sequence, - source: String, header: String = "", ensureRowContiguous: Bool = true, - atomicOutputs: Bool = false - ) -> MLXFastKernel { - fatalError("MLXFastKernel is not available without Metal") - } -} // MLXFast + } // MLXFast #endif diff --git a/Source/encuda/encuda-compile.swift b/Source/encuda/encuda-compile.swift index 95f7d453..0dba2c63 100644 --- a/Source/encuda/encuda-compile.swift +++ b/Source/encuda/encuda-compile.swift @@ -13,7 +13,9 @@ extension Encuda { @Option(name: .customLong("clangpp"), help: "Path to clang++") var clangppPath: String? = nil - @Option(name: .customShort("I"), parsing: .unconditionalSingleValue, help: "Include directories") + @Option( + name: .customShort("I"), parsing: .unconditionalSingleValue, help: "Include directories" + ) var includeDirs: [String] = [] @Option(name: .customShort("o"), help: "Output file path") @@ -46,11 +48,14 @@ extension Encuda { let includeArgs = includeDirs.flatMap { ["-I", $0] } let ccbinArgs = clangppPath.map { ["-ccbin=\($0)"] } ?? [] let stdArgs = std.map { ["-std=\($0)"] } ?? [] - let archArgs = ProcessInfo.processInfo.environment["CUDA_ARCH"].map { ["-arch", $0] } ?? [] + let archArgs = + ProcessInfo.processInfo.environment["CUDA_ARCH"].map { ["-arch", $0] } ?? [] let process = Process() process.executableURL = URL(fileURLWithPath: resolvedNvcc) - process.arguments = ["-cuda", "-rdc=true", "--expt-relaxed-constexpr"] + stdArgs + ccbinArgs + archArgs + (verbose ? ["-v"] : []) + includeArgs + inputFiles + ["-o", output] + process.arguments = + ["-cuda", "-rdc=true", "--expt-relaxed-constexpr"] + stdArgs + ccbinArgs + archArgs + + (verbose ? ["-v"] : []) + includeArgs + inputFiles + ["-o", output] try process.run() process.waitUntilExitWorkaround() guard process.terminationStatus == 0 else { diff --git a/Source/encuda/encuda-error.swift b/Source/encuda/encuda-error.swift index d017af8b..e3dd42c9 100644 --- a/Source/encuda/encuda-error.swift +++ b/Source/encuda/encuda-error.swift @@ -6,8 +6,8 @@ enum EncudaError: Error, CustomStringConvertible { var description: String { switch self { - case .nvccFailed(let code): return "nvcc failed with exit code \(code)" - case .clangFailed(let code): return "clang++ failed with exit code \(code)" + case .nvccFailed(let code): return "nvcc failed with exit code \(code)" + case .clangFailed(let code): return "clang++ failed with exit code \(code)" } } } diff --git a/Source/encuda/encuda-link.swift b/Source/encuda/encuda-link.swift index 07b85044..78e41998 100644 --- a/Source/encuda/encuda-link.swift +++ b/Source/encuda/encuda-link.swift @@ -33,13 +33,16 @@ extension Encuda { } let stdArgs = std.map { ["-std=\($0)"] } ?? [] - let archArgs = ProcessInfo.processInfo.environment["CUDA_ARCH"].map { ["-arch", $0] } ?? [] + let archArgs = + ProcessInfo.processInfo.environment["CUDA_ARCH"].map { ["-arch", $0] } ?? [] for input in inputFiles { try clang(args: stdArgs + ["-c", input, "-o", input + ".cudalink.o"]) } - try nvcc(args: ["--device-link"] + stdArgs + archArgs + inputFiles.map { $0 + ".cudalink.o" } + ["-o", output, "-Xcompiler", "-E"]) + try nvcc( + args: ["--device-link"] + stdArgs + archArgs + inputFiles.map { $0 + ".cudalink.o" } + + ["-o", output, "-Xcompiler", "-E"]) for input in inputFiles { try? FileManager.default.removeItem(atPath: input + ".cudalink.o") From 875b25779046b2bd81ded26b0136a2124cd24c1f Mon Sep 17 00:00:00 2001 From: Gabriele Mondada Date: Thu, 28 May 2026 15:50:34 +0200 Subject: [PATCH 06/11] Fix location of header files used by JIT compiler --- Package.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Package.swift b/Package.swift index 1a84ee58..b6dbed8b 100644 --- a/Package.swift +++ b/Package.swift @@ -118,6 +118,7 @@ let noCudaCmlxExcludes = [ cxxSettings = [ .unsafeFlags(["-I/usr/local/cuda/include"]), .unsafeFlags(["-I/usr/local/cuda/include/cccl"]), + .define("MLX_CCCL_DIR", to: "\"/usr/local/cuda/include/cccl\"") ] linkerSettings = [ From 91076269c5d6b9786ecf079ddc2339099d6ac480 Mon Sep 17 00:00:00 2001 From: Gabriele Mondada Date: Fri, 29 May 2026 17:02:16 +0200 Subject: [PATCH 07/11] Fix linting --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index b6dbed8b..776159f3 100644 --- a/Package.swift +++ b/Package.swift @@ -118,7 +118,7 @@ let noCudaCmlxExcludes = [ cxxSettings = [ .unsafeFlags(["-I/usr/local/cuda/include"]), .unsafeFlags(["-I/usr/local/cuda/include/cccl"]), - .define("MLX_CCCL_DIR", to: "\"/usr/local/cuda/include/cccl\"") + .define("MLX_CCCL_DIR", to: "\"/usr/local/cuda/include/cccl\""), ] linkerSettings = [ From 633bea4faba9489ba4b1dc83d9602e2560cde91d Mon Sep 17 00:00:00 2001 From: Gabriele Mondada Date: Tue, 16 Jun 2026 10:51:12 +0200 Subject: [PATCH 08/11] Fix incremental build --- Plugins/CudaBuild/plugin.swift | 19 +++++++++++++------ Source/encuda/encuda-compile.swift | 30 ++++++++++++++++++++++++++++++ Source/encuda/encuda-link.swift | 30 ++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 6 deletions(-) diff --git a/Plugins/CudaBuild/plugin.swift b/Plugins/CudaBuild/plugin.swift index 29aa5bb6..f7d12dd4 100644 --- a/Plugins/CudaBuild/plugin.swift +++ b/Plugins/CudaBuild/plugin.swift @@ -75,16 +75,18 @@ struct CudaBuild: BuildToolPlugin { "Input file \(inputUrl.path) is not under source directory \(sourceDirPath)" ) } - let relateivePath = String(inputUrl.path.dropFirst(sourceDirPath.count)) - if isExcluded(settings: settings, relativePath: relateivePath) { - print("Excluding \(relateivePath)") + let relativePath = String(inputUrl.path.dropFirst(sourceDirPath.count)) + if isExcluded(settings: settings, relativePath: relativePath) { + print("Excluding \(relativePath)") continue } - sourceCuFiles.append(URL(string: relateivePath, relativeTo: sourceDir)!) + sourceCuFiles.append(URL(string: relativePath, relativeTo: sourceDir)!) } } } + sourceCuFiles.sort { $0.path < $1.path } // make it deterministic + print("Source files: \(sourceCuFiles.map { $0.relativePath })") let outputDir = context.pluginWorkDirectoryURL @@ -116,6 +118,11 @@ struct CudaBuild: BuildToolPlugin { print("Generated source files: \(generatedCuFiles.map { $0.relativePath })") + // Ask encuda to skip work if the output is already up to date. + // This should normally be handled by the build system, but apparently it is not. + + let incrementalFlag = ["--incremental"] + // Invoke `encuda compile` to compile each .cu file to .cpp let encuda = try context.tool(named: "encuda") @@ -133,7 +140,7 @@ struct CudaBuild: BuildToolPlugin { displayName: "Compiling \(inputFile.lastPathComponent) to \(outputCpp.lastPathComponent)", executable: encuda.url, - arguments: ["compile"] + verboseFlag + stdArgs + [ + arguments: ["compile"] + verboseFlag + stdArgs + incrementalFlag + [ "--clangpp", clangUrl.url.path, "-I", sourceDir.path, ] + headerSearchPathArgs + [ @@ -160,7 +167,7 @@ struct CudaBuild: BuildToolPlugin { .buildCommand( displayName: "Linking CUDA objects", executable: encuda.url, - arguments: ["link"] + verboseFlag + stdArgs + [ + arguments: ["link"] + verboseFlag + stdArgs + incrementalFlag + [ "--clangpp", clangUrl.url.path, ] + outputCpps.map { $0.path } + ["-o", linkOutput.path], inputFiles: outputCpps, diff --git a/Source/encuda/encuda-compile.swift b/Source/encuda/encuda-compile.swift index 0dba2c63..42bd7531 100644 --- a/Source/encuda/encuda-compile.swift +++ b/Source/encuda/encuda-compile.swift @@ -30,12 +30,22 @@ extension Encuda { @Flag(name: .customShort("v"), help: "Enable verbose output") var verbose: Bool = false + @Flag(name: .customLong("incremental"), help: "Skip compilation if output is up to date") + var incremental: Bool = false + mutating func run() throws { if verbose { print("Running encuda compile") } + if incremental && isUpToDate() { + if verbose { + print("Output is up to date, skipping compilation") + } + return + } + let resolvedNvcc: String if let path = nvccPath { resolvedNvcc = path @@ -62,5 +72,25 @@ extension Encuda { throw EncudaError.nvccFailed(process.terminationStatus) } } + + private func isUpToDate() -> Bool { + let fm = FileManager.default + let outputURL = URL(fileURLWithPath: output) + guard fm.fileExists(atPath: output), + let outputMod = + (try? outputURL.resourceValues(forKeys: [.contentModificationDateKey]))? + .contentModificationDate + else { return false } + for input in inputFiles { + guard fm.fileExists(atPath: input), + let inputMod = + (try? URL(fileURLWithPath: input).resourceValues(forKeys: [ + .contentModificationDateKey + ]))?.contentModificationDate + else { return false } + if inputMod >= outputMod { return false } + } + return true + } } } diff --git a/Source/encuda/encuda-link.swift b/Source/encuda/encuda-link.swift index 78e41998..92710e32 100644 --- a/Source/encuda/encuda-link.swift +++ b/Source/encuda/encuda-link.swift @@ -25,6 +25,9 @@ extension Encuda { @Flag(name: .customShort("v"), help: "Enable verbose output") var verbose: Bool = false + @Flag(name: .customLong("incremental"), help: "Skip link if output is up to date") + var incremental: Bool = false + mutating func run() throws { if verbose { print("CUDA Link") @@ -32,6 +35,13 @@ extension Encuda { print("Output file: \(output)") } + if incremental && isUpToDate() { + if verbose { + print("Output is up to date, skipping link") + } + return + } + let stdArgs = std.map { ["-std=\($0)"] } ?? [] let archArgs = ProcessInfo.processInfo.environment["CUDA_ARCH"].map { ["-arch", $0] } ?? [] @@ -90,5 +100,25 @@ extension Encuda { throw EncudaError.clangFailed(process.terminationStatus) } } + + private func isUpToDate() -> Bool { + let fm = FileManager.default + let outputURL = URL(fileURLWithPath: output) + guard fm.fileExists(atPath: output), + let outputMod = + (try? outputURL.resourceValues(forKeys: [.contentModificationDateKey]))? + .contentModificationDate + else { return false } + for input in inputFiles { + guard fm.fileExists(atPath: input), + let inputMod = + (try? URL(fileURLWithPath: input).resourceValues(forKeys: [ + .contentModificationDateKey + ]))?.contentModificationDate + else { return false } + if inputMod >= outputMod { return false } + } + return true + } } } From 6a2da801f080a21892f4c426dd403ca4e98cf8af Mon Sep 17 00:00:00 2001 From: Gabriele Mondada Date: Tue, 16 Jun 2026 10:56:11 +0200 Subject: [PATCH 09/11] Rename the encuda folder to be more in line with the project style --- Package.swift | 1 + Source/{encuda => Encuda}/encuda-compile.swift | 0 Source/{encuda => Encuda}/encuda-error.swift | 0 Source/{encuda => Encuda}/encuda-link.swift | 0 Source/{encuda => Encuda}/encuda-utils.swift | 0 Source/{encuda => Encuda}/encuda.swift | 0 6 files changed, 1 insertion(+) rename Source/{encuda => Encuda}/encuda-compile.swift (100%) rename Source/{encuda => Encuda}/encuda-error.swift (100%) rename Source/{encuda => Encuda}/encuda-link.swift (100%) rename Source/{encuda => Encuda}/encuda-utils.swift (100%) rename Source/{encuda => Encuda}/encuda.swift (100%) diff --git a/Package.swift b/Package.swift index 776159f3..e36e0d86 100644 --- a/Package.swift +++ b/Package.swift @@ -419,6 +419,7 @@ let package = Package( dependencies: [ .product(name: "ArgumentParser", package: "swift-argument-parser") ], + path: "Source/Encuda", ), .plugin( name: "CudaBuild", diff --git a/Source/encuda/encuda-compile.swift b/Source/Encuda/encuda-compile.swift similarity index 100% rename from Source/encuda/encuda-compile.swift rename to Source/Encuda/encuda-compile.swift diff --git a/Source/encuda/encuda-error.swift b/Source/Encuda/encuda-error.swift similarity index 100% rename from Source/encuda/encuda-error.swift rename to Source/Encuda/encuda-error.swift diff --git a/Source/encuda/encuda-link.swift b/Source/Encuda/encuda-link.swift similarity index 100% rename from Source/encuda/encuda-link.swift rename to Source/Encuda/encuda-link.swift diff --git a/Source/encuda/encuda-utils.swift b/Source/Encuda/encuda-utils.swift similarity index 100% rename from Source/encuda/encuda-utils.swift rename to Source/Encuda/encuda-utils.swift diff --git a/Source/encuda/encuda.swift b/Source/Encuda/encuda.swift similarity index 100% rename from Source/encuda/encuda.swift rename to Source/Encuda/encuda.swift From 079cdb5b72bb4ec7b6ff2f225cb830c6c3b2ad15 Mon Sep 17 00:00:00 2001 From: Gabriele Mondada Date: Wed, 17 Jun 2026 23:54:23 +0200 Subject: [PATCH 10/11] Exclude GPU+CUDA.swift from the Xcode project --- xcode/MLX.xcodeproj/project.pbxproj | 1 + 1 file changed, 1 insertion(+) diff --git a/xcode/MLX.xcodeproj/project.pbxproj b/xcode/MLX.xcodeproj/project.pbxproj index 3bfc2492..87b93ba1 100644 --- a/xcode/MLX.xcodeproj/project.pbxproj +++ b/xcode/MLX.xcodeproj/project.pbxproj @@ -102,6 +102,7 @@ isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( Documentation.docc, + "GPU+CUDA.swift", ); target = C3AE8EC32EAAA15F000BD280 /* MLX */; }; From 1314599152320cd76aac4caa3ab5ff4184afa623 Mon Sep 17 00:00:00 2001 From: Gabriele Mondada Date: Thu, 18 Jun 2026 00:18:41 +0200 Subject: [PATCH 11/11] Exclude GPU+CUDA.swift when compiling with CMake on Mac --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 18f350bf..ce75855f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,6 +64,10 @@ if(NOT MLX_BUILD_METAL) ${CMAKE_CURRENT_LIST_DIR}/Source/MLX/MLXArray+Metal.swift) endif() +if(NOT MLX_BUILD_CUDA) + list(REMOVE_ITEM MLX-src ${CMAKE_CURRENT_LIST_DIR}/Source/MLX/GPU+CUDA.swift) +endif() + add_library(MLX STATIC ${MLX-src}) target_include_directories(MLX PUBLIC ${CMAKE_CURRENT_LIST_DIR}/Source/Cmlx/include)