diff --git a/.editorconfig b/.editorconfig index eff4970..d2572dd 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,6 +10,10 @@ trim_trailing_whitespace = true [*.js] indent_size = 4 +[*.ts] +indent_size = 2 +quote_type = single + [*.html] indent_size = 2 diff --git a/.eslintrc.json b/.eslintrc.json index 3f5277c..1b11582 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,20 +1,53 @@ { + // Global + "root": true, + "plugins": [ + "prettier" + ], + "parser": "@typescript-eslint/parser", + "extends": [ + "eslint:recommended", + "plugin:prettier/recommended", + "plugin:jest/recommended" + ], + "globals": { + "tapes": "writable" + }, "rules": { - "indent": [ - 2, - 4 - ], - "quotes": [ - 2, - "single" - ], "linebreak-style": [ - 2, + "error", "unix" ], - "semi": [ - 2, - "always" + "eqeqeq": [ + "error", + "smart" + ], + "prefer-const": [ + "error" + ], + "no-var": "error", + "no-use-before-define": "off", + "no-console": [ + "error", + { + "allow": [ + "info", + "warn", + "error" + ] + } + ], + "prettier/prettier": "error", + // Jest configuration + "jest/expect-expect": [ + "error", + { + "assertFunctionNames": [ + "expect*", + "checkImageData", + "testCode" + ] + } ] }, "env": { @@ -22,16 +55,109 @@ "browser": true, "es6": true }, - "globals": { - "tapes": true - }, - "parserOptions": { - "sourceType": "module" - }, - "extends": "eslint:recommended", "overrides": [ + // All overrides matching a file are applied in-order, with the last + // taking precedence. + // + // TypeScript/TSX-specific configuration { - "files": [ "bin/*", "babel.config.js", "webpack.config.js" ], + "files": [ + "*.ts", + "*.tsx" + ], + "plugins": [ + "@typescript-eslint/eslint-plugin" + ], + "extends": [ + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking" + ], + "rules": { + "indent": [ + "error", + 2, + { + "SwitchCase": 1 + } + ], + // recommended is just "warn" + "@typescript-eslint/no-explicit-any": "error", + // enforce semicolons at ends of statements + "semi": "off", + "@typescript-eslint/semi": [ + "error", + "always" + ], + // enforce semicolons to separate members + "@typescript-eslint/member-delimiter-style": [ + "error", + { + "multiline": { + "delimiter": "semi", + "requireLast": true + }, + "singleline": { + "delimiter": "semi", + "requireLast": false + } + } + ], + // definitions must come before uses for variables + "@typescript-eslint/no-use-before-define": [ + "error", + { + "functions": false, + "classes": false + } + ], + // no used variables + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { + "argsIgnorePattern": "^_" + } + ], + // no redeclaration of classes, members or variables + "no-redeclare": "off", + "@typescript-eslint/no-redeclare": [ + "error" + ], + // allow empty interface definitions and empty extends + "@typescript-eslint/no-empty-interface": "off", + // allow explicit type declaration + "@typescript-eslint/no-inferrable-types": "off", + // allow some non-string types in templates + "@typescript-eslint/restrict-template-expressions": [ + "error", + { + "allowNumber": true, + "allowBoolean": true + } + ] + }, + "parserOptions": { + "sourceType": "module", + "project": "./tsconfig.json" + } + }, + // UI elements + { + "files": [ + "js/ui/**.ts" + ], + "rules": { + // allow non-null assertions since these classes reference the DOM + "@typescript-eslint/no-non-null-assertion": "off" + } + }, + // JS Node configuration + { + "files": [ + "bin/*", + "babel.config.js", + "webpack.config.js" + ], "rules": { "no-console": 0 }, @@ -40,17 +166,49 @@ "jquery": false, "browser": false } - }, { - "files": [ "test/*"], + }, + // Test configuration + { + "files": [ + "test/**/*" + ], "env": { - "node": true, - "jest": true + "jest": true, + "jasmine": true, + "node": true + }, + "rules": { + "no-console": 0 } - }, { - "files": [ "js/entry1.js"], + }, + // Entry point configuration + { + "files": [ + "js/entry2.ts", + "js/entry2e.ts", + "jest.config.js" + ], "env": { "commonjs": true } + }, + // Worker configuration + { + "files": [ + "workers/*" + ], + "parserOptions": { + "project": "workers/tsconfig.json" + } } - ] + ], + "ignorePatterns": [ + "coverage/**/*" + ], + "settings": { + "react": { + "pragma": "h", + "version": "16" + } + } } diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 53e25ee..29324e3 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -4,23 +4,22 @@ on: [push] jobs: build: - runs-on: ubuntu-latest strategy: matrix: - node-version: [12.x] + node-version: [16.x, 18.x] steps: - - uses: actions/checkout@v1 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - name: npm install, build, and test - run: | - npm ci - npm run build --if-present - npm test - env: - CI: true + - uses: actions/checkout@v1 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - name: npm install, build, and test + run: | + npm ci + npm run build --if-present + npm test + env: + CI: true diff --git a/.gitignore b/.gitignore index 13b4ef0..4cd19d4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .*~ .vscode +.DS_Store /dist /node_modules diff --git a/babel.config.js b/babel.config.js index 442aa3c..cd8e6e5 100644 --- a/babel.config.js +++ b/babel.config.js @@ -10,4 +10,15 @@ module.exports = { }, ], ], + rules: [ + { + test: /\.ts?$/i, + use: [ + { + loader: 'ts-loader' + }, + ], + exclude: /node_modules/, + } + ] }; diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..366db38 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,29 @@ +module.exports = { + 'moduleNameMapper': { + '^js/(.*)': '/js/$1', + '^test/(.*)': '/test/$1', + '\\.css$': 'identity-obj-proxy', + '\\.scss$': 'identity-obj-proxy', + }, + 'roots': [ + 'js/', + 'test/', + ], + 'testMatch': [ + '**/?(*.)+(spec|test).+(ts|js|tsx)' + ], + 'transform': { + '^.+\\.js$': 'babel-jest', + '^.+\\.ts$': 'ts-jest', + '^.*\\.tsx$': 'ts-jest', + }, + 'transformIgnorePatterns': [ + '/node_modules/(?!(@testing-library/preact/dist/esm)/)', + ], + 'coveragePathIgnorePatterns': [ + '/node_modules/', + '/js/roms/', + '/test/', + ], + 'preset': 'ts-jest', +}; diff --git a/js/apple1.js b/js/apple1.js deleted file mode 100644 index 649ffc1..0000000 --- a/js/apple1.js +++ /dev/null @@ -1,498 +0,0 @@ -import MicroModal from 'micromodal'; - -import Apple1IO from './apple1io'; -import CPU6502 from './cpu6502'; -import Prefs from './prefs'; -import RAM from './ram'; -import { TextPage } from './canvas1'; -import { debug, hup } from './util'; - -import Basic from './roms/basic'; -import Bios from './roms/bios'; -import Krusader from './roms/krusader'; - -import ACI from './cards/aci'; - -import { mapKeyEvent, KeyBoard } from './ui/keyboard'; - -var DEBUG=false; -var TRACE=true; -var skidmarks = []; - -var focused = false; -var startTime = Date.now(); -var lastCycles = 0; -var renderedFrames = 0, lastFrames = 0; -var paused = false; - -var hashtag; -var prefs = new Prefs(); -var runTimer = null; -var cpu = new CPU6502(); - -var krusader = window.location.hash == '#krusader'; - -var raml, ramh, rom, aci, io, text, keyboard; - -// 32K base memory. Should be 0x0f for 4K, 0x1f for 8K, 0x3f for 16K -raml = new RAM(0x00, 0x7f); -text = new TextPage(); -text.init(); - -aci = new ACI(cpu, { progress: function(val) { - document.querySelector('#tape').style.width = val * 100 + 'px'; -}}); -io = new Apple1IO(text); - -if (krusader) { - ramh = null; - rom = new Krusader(); -} else { - // ramh = new RAM(0xe0, 0xef); // 4K ACI memory. - ramh = new Basic(); - rom = new Bios(); -} -keyboard = new KeyBoard('#keyboard', cpu, io, text); - -cpu.addPageHandler(raml); -if (ramh) { - cpu.addPageHandler(ramh); -} -cpu.addPageHandler(rom); - -cpu.addPageHandler(aci); -cpu.addPageHandler(io); - -var showFPS = false; - -//aci.setData([0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88]) -//aci.setData([0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07]) -//aci.setData([0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef]) - -//aci.setData(tapes['BASIC']); -aci.setData(window.tapes['Microchess'].tracks); - -// Audio Buffer Source -var context; -if (typeof window.webkitAudioContext !== 'undefined') { - context = new window.webkitAudioContext(); -} else if (typeof window.AudioContext !== 'undefined') { - context = new window.AudioContext(); -} - -export function doLoadLocal(files) { - context.resume(); - files = files || document.querySelector('#local_file').files; - if (files.length == 1) { - var file = files[0]; - var fileReader = new FileReader(); - fileReader.onload = function(ev) { - context.decodeAudioData( - ev.target.result, - function(buffer) { - var buf = []; - var data = buffer.getChannelData(0); - var old = (data[0] > 0.25); - var last = 0; - for (var idx = 1; idx < data.length; idx++) { - var current = (data[idx] > 0.25); - if (current != old) { - var delta = idx - last; - buf.push(parseInt(delta / buffer.sampleRate * 1023000)); - old = current; - last = idx; - } - } - aci.buffer = buf; - MicroModal.close('local-modal'); - }, - function() { - window.alert('Unable to read tape file: ' + file.name); - } - ); - }; - fileReader.readAsArrayBuffer(file); - } -} - -function updateKHz() { - var now = Date.now(); - var ms = now - startTime; - var cycles = cpu.cycles(); - var delta; - - if (showFPS) { - delta = renderedFrames - lastFrames; - var fps = parseInt(delta/(ms/1000)); - document.querySelector('#khz').innerHTML = fps + 'fps'; - } else { - delta = cycles - lastCycles; - var khz = parseInt(delta/ms); - document.querySelector('#khz').innerHTML = khz + 'KHz'; - } - - startTime = now; - lastCycles = cycles; - lastFrames = renderedFrames; -} - -var loading = false; -var throttling = true; -var turbotape = false; - -export function toggleFPS() { - showFPS = !showFPS; -} - -export function toggleSpeed() -{ - throttling = document.querySelector('#speed_toggle').checked; - if (runTimer) { - run(); - } -} - -export function setKeyBuffer(text) { - io.paste(text); -} - -export function setTurboTape(val) { - turbotape = val; -} - -var _requestAnimationFrame = - window.requestAnimationFrame || - window.mozRequestAnimationFrame || - window.webkitRequestAnimationFrame || - window.msRequestAnimationFrame; - -function run(pc) { - if (runTimer) { - clearInterval(runTimer); - } - - if (pc) { - cpu.setPC(pc); - } - - var ival = 30, step = 1023 * ival, stepMax = step; - - if (!throttling) { - ival = 1; - } - - var now, last = Date.now(); - var runFn = function() { - now = Date.now(); - renderedFrames++; - if (_requestAnimationFrame) { - step = (now - last) * 1023; - last = now; - if (step > stepMax) { - step = stepMax; - } - } - if (document.location.hash != hashtag) { - hashtag = document.location.hash; - } - if (!loading) { - if (DEBUG) { - cpu.stepCyclesDebug(TRACE ? 1 : step, function() { - var line = cpu.dumpRegisters() + ' ' + cpu.dumpPC(); - if (TRACE) { - debug(line); - } else { - skidmarks.push(); - if (skidmarks.length > 256) { - skidmarks.shift(); - } - } - }); - } else { - cpu.stepCycles(step); - } - text.blit(); - } - if (!paused && _requestAnimationFrame) { - _requestAnimationFrame(runFn); - } - }; - if (_requestAnimationFrame) { - _requestAnimationFrame(runFn); - } else { - runTimer = setInterval(runFn, ival); - } -} - -function stop() { - if (runTimer) { - clearInterval(runTimer); - } - runTimer = null; -} - -function reset() -{ - cpu.reset(); -} - -export function loadBinary(bin) { - stop(); - for (var idx = 0; idx < bin.length; idx++) { - var pos = bin.start + idx; - cpu.write(pos >> 8, pos & 0xff, bin.data[idx]); - } - run(bin.start); -} - -var _key; -function _keydown(evt) { - if (evt.keyCode === 112) { - cpu.reset(); - } else if (evt.keyCode === 113) { - if (document.webkitIsFullScreen) { - document.webkitCancelFullScreen(); - } else { - var elem = document.getElementById('display'); - elem.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); - } - } else if (evt.key === 'Shift') { - keyboard.shiftKey(true); - } else if (evt.key == 'Control') { - keyboard.controlKey(true); - } else if (!focused && (!evt.metaKey || evt.ctrlKey)) { - evt.preventDefault(); - - var key = mapKeyEvent(evt); - if (key != 0xff) { - if (_key != 0xff) io.keyUp(); - io.keyDown(key); - _key = key; - } - } -} - -function _keyup(evt) { - _key = 0xff; - - if (evt.key === 'Shift') { - keyboard.shiftKey(false); - } else if (evt.key === 'Control') { - keyboard.controlKey(false); - } else { - if (!focused) { - io.keyUp(); - } - } -} - -var _updateScreenTimer = null; - -export function updateScreen() { - var green = document.querySelector('#green_screen').checked; - var scanlines = document.querySelector('#show_scanlines').checked; - - text.green(green); - text.scanlines(scanlines); - - if (!_updateScreenTimer) - _updateScreenTimer = - setInterval(function() { - text.refresh(); - clearInterval(_updateScreenTimer); - _updateScreenTimer = null; - }, 100); -} - -paused = false; -export function pauseRun(b) { - if (paused) { - run(); - b.value = 'Pause'; - } else { - stop(); - b.value = 'Run'; - } - paused = !paused; -} - -export function openOptions() { - MicroModal.show('options-modal'); -} - -export function openLoadText(event) { - if (event && event.altKey) { - MicroModal.show('local-modal'); - } else { - MicroModal.show('input-modal'); - } -} - -export function doLoadText() { - var text = document.querySelector('#text_input').value; - if (!text.indexOf('//Binary')) { - var lines = text.split('\n'); - lines.forEach(function(line) { - var parts = line.split(': '); - if (parts.length == 2) { - var addr; - if (parts[0].length > 0) { - addr = parseInt(parts[0], 16); - } - var data = parts[1].split(' '); - for (var idx = 0; idx < data.length; idx++) { - cpu.write(addr >> 8, addr & 0xff, parseInt(data[idx], 16)); - addr++; - } - } - }); - } else { - io.paste(text); - } - MicroModal.close('input-modal'); -} - -export function handleDragOver(event) { - event.preventDefault(); - event.dataTransfer.dropEffect = 'copy'; -} - -export function handleDrop(event) { - event.preventDefault(); - event.stopPropagation(); - - var dt = event.dataTransfer; - if (dt.files.length > 0) { - doLoadLocal(dt.files); - } -} - -export function handleDragEnd(event) { - var dt = event.dataTransfer; - if (dt.items) { - for (var i = 0; i < dt.items.length; i++) { - dt.items.remove(i); - } - } else { - event.dataTransfer.clearData(); - } -} - -MicroModal.init(); - -document.addEventListener('DOMContentLoaded', function() { - hashtag = document.location.hash; - - /* - * Input Handling - */ - - var canvas = document.getElementById('text'); - var context = canvas.getContext('2d'); - - text.setContext(context); - - window.addEventListener('keydown', _keydown); - window.addEventListener('keyup', _keyup); - - window.addEventListener('paste', (event) => { - var paste = (event.clipboardData || window.clipboardData).getData('text'); - setKeyBuffer(paste); - event.preventDefault(); - }); - - window.addEventListener('copy', (event) => { - event.clipboardData.setData('text/plain', text.getText()); - event.preventDefault(); - }); - - document.querySelector('.overscan').addEventListener('paste', function(event) { - io.paste(event.originalEvent.clipboardData().getData('text/plain')); - event.preventDefault(); - }); - - document.querySelectorAll('input,textarea').forEach(function(el) { - el.addEventListener('focus', function() { focused = true; }); - }); - document.querySelectorAll('input,textarea').forEach(function(el) { - el.addEventListener('blur', function() { focused = false; }); - }); - keyboard.create(); - - if (prefs.havePrefs()) { - document.querySelectorAll('input[type=checkbox]').forEach(function(el) { - var val = prefs.readPref(el.id); - if (val != null) - el.checked = JSON.parse(val); - }); - document.querySelectorAll('input[type=checkbox]').forEach(function(el) { - el.addEventListener('change', function() { - prefs.writePref(el.id, JSON.stringify(el.checked)); - }); - }); - } - - turbotape = document.querySelector('#turbo_tape').checked; - - Object.keys(window.tapes).sort().forEach(function(key) { - var option = document.createElement('option'); - option.value = key; - option.text = key; - document.querySelector('#tape_select').append(option); - }); - - function doTapeSelect() { - var tapeId = document.querySelector('#tape_select').value; - var tape = window.tapes[tapeId]; - if (!tape) { - document.querySelector('#text_input').value = ''; - return; - } - debug('Loading', tapeId); - - window.location.hash = tapeId; - reset(); - if (turbotape) { - var trackIdx = 0, script = ''; - var parts = tape.script.split('\n'); - // Ignore part 0 (C100R) - // Split part 1 into ranges - var ranges = parts[1].split(' '); - var idx; - for (idx = 0; idx < ranges.length; idx++) { - var range = ranges[idx].split('.'); - var start = parseInt(range[0], 16); - var end = parseInt(range[1], 16); - var track = tape.tracks[trackIdx]; - var kdx = 0; - for (var jdx = start; jdx <= end; jdx++) { - cpu.write(jdx >> 8, jdx & 0xff, track[kdx++]); - } - trackIdx++; - } - // Execute parts 2-n - for (idx = 2; idx < parts.length; idx++) { - if (parts[idx]) { - script += parts[idx] + '\n'; - } - } - document.querySelector('#text_input').value = script; - } else { - aci.setData(tape.tracks); - document.querySelector('#text_input').value = tape.script; - } - doLoadText(); - } - document.querySelector('#tape_select').addEventListener('change', doTapeSelect); - - run(); - setInterval(updateKHz, 1000); - updateScreen(); - - var tape = hup(); - if (tape) { - openLoadText(); - document.querySelector('#tape_select').value = tape; - doTapeSelect(); - } -}); diff --git a/js/apple1.ts b/js/apple1.ts new file mode 100644 index 0000000..396a75a --- /dev/null +++ b/js/apple1.ts @@ -0,0 +1,536 @@ +/* Copyright 2010-2023 Will Scullin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided 'as is' without express or + * implied warranty. + */ + +import MicroModal from 'micromodal'; + +import Apple1IO from './apple1io'; +import CPU6502 from './cpu6502'; +import Prefs from './prefs'; +import RAM from './ram'; +import { TextPage } from './canvas1'; +import { debug, hup } from './util'; + +import Basic from './roms/basic'; +import Bios from './roms/bios'; +import Krusader from './roms/krusader'; + +import ACI from './cards/aci'; + +import { mapKeyEvent, KeyBoard } from './ui/keyboard'; +import { address, byte } from './types'; + +// eslint-disable-next-line prefer-const +let DEBUG = false; +// eslint-disable-next-line prefer-const +let TRACE = true; +const skidmarks: string[] = []; + +let focused = false; +let startTime = Date.now(); +let lastCycles = 0; +let renderedFrames = 0, + lastFrames = 0; +let paused = false; + +let hashtag: string | undefined; +const prefs = new Prefs(); +let runTimer: ReturnType | null = null; +const cpu = new CPU6502(); + +const krusader = window.location.hash === '#krusader'; + +let ramh, rom; + +// 32K base memory. Should be 0x0f for 4K, 0x1f for 8K, 0x3f for 16K +const raml = new RAM(0x00, 0x7f); +const text = new TextPage(); +text.init(); + +const aci = new ACI(cpu, { + progress: function (val) { + document.querySelector('#tape')!.style.width = + val * 100 + 'px'; + }, +}); +const io = new Apple1IO(text); + +if (krusader) { + ramh = null; + rom = new Krusader(); +} else { + // ramh = new RAM(0xe0, 0xef); // 4K ACI memory. + ramh = new Basic(); + rom = new Bios(); +} +const keyboard = new KeyBoard('#keyboard', cpu, io, text); + +cpu.addPageHandler(raml); +if (ramh) { + cpu.addPageHandler(ramh); +} +cpu.addPageHandler(rom); + +cpu.addPageHandler(aci); +cpu.addPageHandler(io); + +let showFPS = false; + +interface Tape { + script: string; + tracks: number[][]; +} + +declare global { + interface Window { + tapes: Record; + } +} + +//aci.setData([0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88]) +//aci.setData([0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07]) +//aci.setData([0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef]) + +//aci.setData(tapes['BASIC']); +aci.setData(window.tapes['Microchess'].tracks); + +// Audio Buffer Source +declare global { + interface Window { + webkitAudioContext: AudioContext; + } +} + +const AudioContext = window.AudioContext || window.webkitAudioContext; +const context = new AudioContext(); + +export function doLoadLocal(files: FileList) { + context + .resume() + .then(() => { + files = + files || document.querySelector('#local_file')!.files; + if (files.length === 1) { + const file = files[0]; + const fileReader = new FileReader(); + fileReader.onload = function (ev) { + context + .decodeAudioData( + ev.target!.result as ArrayBuffer, + function (buffer) { + const buf = []; + const data = buffer.getChannelData(0); + let old = data[0] > 0.25; + let last = 0; + for (let idx = 1; idx < data.length; idx++) { + const current = data[idx] > 0.25; + if (current !== old) { + const delta = idx - last; + buf.push(Math.floor((delta / buffer.sampleRate) * 1023000)); + old = current; + last = idx; + } + } + aci.buffer = buf; + MicroModal.close('local-modal'); + }, + function () { + window.alert('Unable to read tape file: ' + file.name); + }, + ) + .catch(console.error); + }; + fileReader.readAsArrayBuffer(file); + } + }) + .catch(console.error); +} + +function updateKHz() { + const now = Date.now(); + const ms = now - startTime; + const cycles = cpu.getCycles(); + let delta: number; + + if (showFPS) { + delta = renderedFrames - lastFrames; + const fps = Math.floor(delta / (ms / 1000)); + document.querySelector('#khz')!.innerHTML = fps + 'fps'; + } else { + delta = cycles - lastCycles; + const khz = Math.floor(delta / ms); + document.querySelector('#khz')!.innerHTML = khz + 'KHz'; + } + + startTime = now; + lastCycles = cycles; + lastFrames = renderedFrames; +} + +let throttling = true; +let turbotape = false; + +export function toggleFPS() { + showFPS = !showFPS; +} + +export function toggleSpeed() { + throttling = + document.querySelector('#speed_toggle')!.checked; + if (runTimer) { + run(); + } +} + +export function setKeyBuffer(text: string) { + io.paste(text); +} + +export function setTurboTape(val: boolean) { + turbotape = val; +} + +function run(pc?: address) { + if (runTimer) { + clearInterval(runTimer); + } + + if (pc) { + cpu.setPC(pc); + } + + let ival = 30; + let step = 1023 * ival; + const stepMax = step; + + if (!throttling) { + ival = 1; + } + + let now; + let last = Date.now(); + const runFn = function () { + now = Date.now(); + renderedFrames++; + step = (now - last) * 1023; + last = now; + if (step > stepMax) { + step = stepMax; + } + if (document.location.hash !== hashtag) { + hashtag = document.location.hash; + } + if (DEBUG) { + cpu.stepCyclesDebug(TRACE ? 1 : step, function () { + const line = JSON.stringify(cpu.getState()); + if (TRACE) { + debug(line); + } else { + skidmarks.push(line); + if (skidmarks.length > 256) { + skidmarks.shift(); + } + } + }); + } else { + cpu.stepCycles(step); + } + text.blit(); + if (!paused) { + requestAnimationFrame(runFn); + } + }; + requestAnimationFrame(runFn); +} + +function stop() { + if (runTimer) { + clearInterval(runTimer); + } + runTimer = null; +} + +function reset() { + cpu.reset(); +} + +declare global { + interface Document { + webkitCancelFullScreen: () => void; + webkitIsFullScreen: boolean; + } + interface Element { + webkitRequestFullScreen: (options?: unknown) => void; + } +} + +let _key: byte; +function _keydown(evt: KeyboardEvent) { + if (evt.keyCode === 112) { + cpu.reset(); + } else if (evt.keyCode === 113) { + if (document.webkitIsFullScreen) { + document.webkitCancelFullScreen(); + } else { + const elem = document.getElementById('display'); + elem!.webkitRequestFullScreen(); + } + } else if (evt.key === 'Shift') { + keyboard.shiftKey(true); + } else if (evt.key === 'Control') { + keyboard.controlKey(true); + } else if (!focused && (!evt.metaKey || evt.ctrlKey)) { + evt.preventDefault(); + + const key = mapKeyEvent(evt); + if (key !== 0xff) { + if (_key !== 0xff) io.keyUp(); + io.keyDown(key); + _key = key; + } + } +} + +function _keyup(evt: KeyboardEvent) { + _key = 0xff; + + if (evt.key === 'Shift') { + keyboard.shiftKey(false); + } else if (evt.key === 'Control') { + keyboard.controlKey(false); + } else { + if (!focused) { + io.keyUp(); + } + } +} + +let _updateScreenTimer: ReturnType | null = null; + +export function updateScreen() { + const green = + document.querySelector('#green_screen')!.checked; + const scanlines = + document.querySelector('#show_scanlines')!.checked; + + text.green(green); + text.scanlines(scanlines); + + if (!_updateScreenTimer) + _updateScreenTimer = setInterval(function () { + text.refresh(); + if (_updateScreenTimer) { + clearInterval(_updateScreenTimer); + } + _updateScreenTimer = null; + }, 100); +} + +paused = false; +export function pauseRun(b: HTMLButtonElement) { + if (paused) { + run(); + b.value = 'Pause'; + } else { + stop(); + b.value = 'Run'; + } + paused = !paused; +} + +export function openOptions() { + MicroModal.show('options-modal'); +} + +export function openLoadText(event?: MouseEvent) { + if (event && event.altKey) { + MicroModal.show('local-modal'); + } else { + MicroModal.show('input-modal'); + } +} + +export function doLoadText() { + const text = document.querySelector('#text_input')!.value; + if (!text.indexOf('//Binary')) { + const lines = text.split('\n'); + lines.forEach(function (line) { + const parts = line.split(': '); + if (parts.length === 2) { + let addr: address = 0; + if (parts[0].length > 0) { + addr = parseInt(parts[0], 16); + } + const data = parts[1].split(' '); + for (let idx = 0; idx < data.length; idx++) { + cpu.write(addr >> 8, addr & 0xff, parseInt(data[idx], 16)); + addr++; + } + } + }); + } else { + io.paste(text); + } + MicroModal.close('input-modal'); +} + +export function handleDragOver(event: DragEvent) { + event.preventDefault(); + event.dataTransfer!.dropEffect = 'copy'; +} + +export function handleDrop(event: DragEvent) { + event.preventDefault(); + event.stopPropagation(); + + const dt = event.dataTransfer; + if (dt?.files && dt.files.length > 0) { + doLoadLocal(dt.files); + } +} + +export function handleDragEnd(event: DragEvent) { + const dt = event.dataTransfer; + if (dt?.items) { + for (let i = 0; i < dt.items.length; i++) { + dt.items.remove(i); + } + } else { + event.dataTransfer?.clearData(); + } +} + +MicroModal.init(); + +document.addEventListener('DOMContentLoaded', function () { + hashtag = document.location.hash; + + /* + * Input Handling + */ + + const canvas = document.querySelector('#text')!; + const context = canvas.getContext('2d')!; + + text.setContext(context); + + window.addEventListener('keydown', _keydown); + window.addEventListener('keyup', _keyup); + + window.addEventListener('paste', (event) => { + const paste = event.clipboardData!.getData('text/plain'); + setKeyBuffer(paste); + event.preventDefault(); + }); + + window.addEventListener('copy', (event) => { + event.clipboardData?.setData('text/plain', text.getText()); + event.preventDefault(); + }); + + document.querySelectorAll('input,textarea').forEach(function (el) { + el.addEventListener('focus', function () { + focused = true; + }); + }); + document.querySelectorAll('input,textarea').forEach(function (el) { + el.addEventListener('blur', function () { + focused = false; + }); + }); + keyboard.create(); + + if (prefs.havePrefs()) { + document + .querySelectorAll('input[type=checkbox]') + .forEach(function (el) { + const val = prefs.readPref(el.id); + if (val != null) el.checked = !!JSON.parse(val); + }); + document + .querySelectorAll('input[type=checkbox]') + .forEach(function (el) { + el.addEventListener('change', function () { + prefs.writePref(el.id, JSON.stringify(el.checked)); + }); + }); + } + + turbotape = document.querySelector('#turbo_tape')!.checked; + + Object.keys(window.tapes) + .sort() + .forEach(function (key) { + const option = document.createElement('option'); + option.value = key; + option.text = key; + document.querySelector('#tape_select')!.append(option); + }); + + function doTapeSelect() { + const tapeId = + document.querySelector('#tape_select')!.value; + const tape = window.tapes[tapeId]; + if (!tape) { + document.querySelector('#text_input')!.value = ''; + return; + } + debug('Loading', tapeId); + + window.location.hash = tapeId; + reset(); + if (turbotape) { + let trackIdx = 0, + script = ''; + const parts = tape.script.split('\n'); + // Ignore part 0 (C100R) + // Split part 1 into ranges + const ranges = parts[1].split(' '); + let idx; + for (idx = 0; idx < ranges.length; idx++) { + const range = ranges[idx].split('.'); + const start = parseInt(range[0], 16); + const end = parseInt(range[1], 16); + const track = tape.tracks[trackIdx]; + let kdx = 0; + for (let jdx = start; jdx <= end; jdx++) { + cpu.write(jdx >> 8, jdx & 0xff, track[kdx++]); + } + trackIdx++; + } + // Execute parts 2-n + for (idx = 2; idx < parts.length; idx++) { + if (parts[idx]) { + script += parts[idx] + '\n'; + } + } + document.querySelector('#text_input')!.value = script; + } else { + aci.setData(tape.tracks); + document.querySelector('#text_input')!.value = + tape.script; + } + doLoadText(); + } + document + .querySelector('#tape_select')! + .addEventListener('change', doTapeSelect); + + run(); + setInterval(updateKHz, 1000); + updateScreen(); + + const tape = hup(); + if (tape) { + openLoadText(); + document.querySelector('#tape_select')!.value = tape; + doTapeSelect(); + } +}); diff --git a/js/apple1io.js b/js/apple1io.js deleted file mode 100644 index ab243f4..0000000 --- a/js/apple1io.js +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright 2010-2019 Will Scullin - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - */ - -export default function Apple1IO(text) { - var _key = 0; - var _keyReady = false; - - var _displayReady = false; - var _nextDSP = 0; - var _buffer = []; - - var LOC = { - KBD: 0x10, - KBDRDY: 0x011, - DSP: 0x12, - DSPCTL: 0x13 - }; - - return { - start: function() { return 0xd0; }, - end: function() { return 0xd0; }, - read: function(page, off) { - var result = 0; - off &= 0x13; - switch (off) { - case LOC.KBD: - // Keyboard - if (_buffer.length) { - result = _buffer.shift().toUpperCase().charCodeAt(0) & 0x7f; - _keyReady = (_buffer.length > 0); - } else { - result = _key; - _keyReady = false; - } - result |= 0x80; - break; - case LOC.KBDRDY: - result = _keyReady ? 0x80 : 0x00; - break; - case LOC.DSP: - // Display - // result = (Math.random() > 0.5) ? 0x80 : 0x00; - result = (Date.now() > _nextDSP) ? 0x00 : 0x80; - break; - case LOC.DSPCTL: - break; - } - return result; - }, - write: function(page, off, val) { - off &= 0x13; - switch (off) { - case LOC.KBD: - break; - case LOC.KBDRDY: - break; - case LOC.DSP: - // Display - if (_displayReady) { - text.write(val); - } - _nextDSP = Date.now() + ((_buffer.length > 0) ? 0 : 17); - break; - case LOC.DSPCTL: - // Don't pretend we care what the value was... - _displayReady = true; - break; - } - }, - reset: function apple1io_reset() { - text.clear(); - _buffer = []; - _keyReady = false; - _displayReady = false; - }, - keyUp: function apple1io_keyUp() { - }, - keyDown: function apple1io_keyDown(key) { - _key = key; - _keyReady = true; - }, - paste: function apple1io_paste(buffer) { - buffer = buffer.replace(/\/\/.*\n/g, ''); - buffer = buffer.replace(/\n/g, '\r'); - _buffer = buffer.split(''); - _keyReady = true; - } - }; -} diff --git a/js/apple1io.ts b/js/apple1io.ts new file mode 100644 index 0000000..76eb10c --- /dev/null +++ b/js/apple1io.ts @@ -0,0 +1,106 @@ +/* Copyright 2010-2023 Will Scullin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +import { TextPage } from './canvas1'; +import type { byte } from './types'; + +const LOC = { + KBD: 0x10, + KBDRDY: 0x011, + DSP: 0x12, + DSPCTL: 0x13, +} as const; + +export default class Apple1IO { + _key = 0; + _keyReady = false; + + _displayReady = false; + _nextDSP = 0; + _buffer: string[] = []; + + constructor(private text: TextPage) {} + + start() { + return 0xd0; + } + end() { + return 0xd0; + } + read(_page: byte, off: byte): byte { + let result = 0; + off &= 0x13; + switch (off) { + case LOC.KBD: + { + // Keyboard + const key = this._buffer.shift(); + if (key != null) { + result = key.toUpperCase().charCodeAt(0) & 0x7f; + this._keyReady = this._buffer.length > 0; + } else { + result = this._key; + this._keyReady = false; + } + result |= 0x80; + } + break; + case LOC.KBDRDY: + result = this._keyReady ? 0x80 : 0x00; + break; + case LOC.DSP: + // Display + // result = (Math.random() > 0.5) ? 0x80 : 0x00; + result = Date.now() > this._nextDSP ? 0x00 : 0x80; + break; + case LOC.DSPCTL: + break; + } + return result; + } + write(_page: byte, off: byte, val: byte): void { + off &= 0x13; + switch (off) { + case LOC.KBD: + break; + case LOC.KBDRDY: + break; + case LOC.DSP: + // Display + if (this._displayReady) { + this.text.write(val); + } + this._nextDSP = Date.now() + (this._buffer.length > 0 ? 0 : 17); + break; + case LOC.DSPCTL: + // Don't pretend we care what the value was... + this._displayReady = true; + break; + } + } + reset() { + this.text.clear(); + this._buffer = []; + this._keyReady = false; + this._displayReady = false; + } + keyUp() {} + keyDown(key: byte) { + this._key = key; + this._keyReady = true; + } + paste(buffer: string) { + buffer = buffer.replace(/\/\/.*\n/g, ''); + buffer = buffer.replace(/\n/g, '\r'); + this._buffer = buffer.split(''); + this._keyReady = true; + } +} diff --git a/js/base64.js b/js/base64.js deleted file mode 100644 index f40cf2e..0000000 --- a/js/base64.js +++ /dev/null @@ -1,110 +0,0 @@ -export function base64_encode (data) { - // Twacked by Will Scullin to handle arrays of "bytes" - - // http://kevin.vanzonneveld.net - // + original by: Tyler Akins (http://rumkin.com) - // + improved by: Bayron Guevara - // + improved by: Thunder.m - // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // + bugfixed by: Pellentesque Malesuada - // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // - depends on: utf8_encode - // * example 1: base64_encode('Kevin van Zonneveld'); - // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA==' - - // mozilla has this native - // - but breaks in 2.0.0.12! - //if (typeof this.window['atob'] == 'function') { - // return atob(data); - //} - - var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc='', tmp_arr = []; - - if (!data) { - return data; - } - - do { // pack three octets into four hexets - o1 = data[i++]; - o2 = data[i++]; - o3 = data[i++]; - - bits = o1<<16 | o2<<8 | o3; - - h1 = bits>>18 & 0x3f; - h2 = bits>>12 & 0x3f; - h3 = bits>>6 & 0x3f; - h4 = bits & 0x3f; - - // use hexets to index into b64, and append result to encoded string - tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); - } while (i < data.length); - - enc = tmp_arr.join(''); - - switch (data.length % 3) { - case 1: - enc = enc.slice(0, -2) + '=='; - break; - case 2: - enc = enc.slice(0, -1) + '='; - break; - } - - return enc; -} - -export function base64_decode(data) { - // Twacked by Will Scullin to handle arrays of "bytes" - - // http://kevin.vanzonneveld.net - // + original by: Tyler Akins (http://rumkin.com) - // + improved by: Thunder.m - // + input by: Aman Gupta - // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // + bugfixed by: Onno Marsman - // + bugfixed by: Pellentesque Malesuada - // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // + input by: Brett Zamir (http://brett-zamir.me) - // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // - depends on: utf8_decode - // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA=='); - // * returns 1: 'Kevin van Zonneveld' - - // mozilla has this native - // - but breaks in 2.0.0.12! - //if (typeof this.window['btoa'] == 'function') { - // return btoa(data); - //} - - var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, tmp_arr = []; - - if (!data) { - return data; - } - - do { // unpack four hexets into three octets using index points in b64 - h1 = b64.indexOf(data.charAt(i++)); - h2 = b64.indexOf(data.charAt(i++)); - h3 = b64.indexOf(data.charAt(i++)); - h4 = b64.indexOf(data.charAt(i++)); - - bits = h1<<18 | h2<<12 | h3<<6 | h4; - - o1 = bits>>16 & 0xff; - o2 = bits>>8 & 0xff; - o3 = bits & 0xff; - - tmp_arr[ac++] = o1; - if (h3 != 64) { - tmp_arr[ac++] = o2; - } - if (h4 != 64) { - tmp_arr[ac++] = o3; - } - } while (i < data.length); - - return tmp_arr; -} diff --git a/js/base64.ts b/js/base64.ts new file mode 100644 index 0000000..827dc2b --- /dev/null +++ b/js/base64.ts @@ -0,0 +1,172 @@ +import { memory } from './types'; + +const B64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + +/** Encode an array of bytes in base64. */ +export function base64_encode(data: null | undefined): undefined; +export function base64_encode(data: memory): string; +export function base64_encode( + data: memory | null | undefined, +): string | undefined { + // Twacked by Will Scullin to handle arrays of 'bytes' + + // http://kevin.vanzonneveld.net + // + original by: Tyler Akins (http://rumkin.com) + // + improved by: Bayron Guevara + // + improved by: Thunder.m + // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + bugfixed by: Pellentesque Malesuada + // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // - depends on: utf8_encode + // * example 1: base64_encode('Kevin van Zonneveld'); + // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA==' + + // mozilla has this native + // - but breaks in 2.0.0.12! + //if (typeof this.window['atob'] == 'function') { + // return atob(data); + //} + + let o1, + o2, + o3, + h1, + h2, + h3, + h4, + bits, + i = 0, + ac = 0, + enc = ''; + const tmp_arr = []; + + if (!data) { + return undefined; + } + + do { + // pack three octets into four hexets + o1 = data[i++]; + o2 = data[i++]; + o3 = data[i++]; + + bits = (o1 << 16) | (o2 << 8) | o3; + + h1 = (bits >> 18) & 0x3f; + h2 = (bits >> 12) & 0x3f; + h3 = (bits >> 6) & 0x3f; + h4 = bits & 0x3f; + + // use hexets to index into b64, and append result to encoded string + tmp_arr[ac++] = + B64.charAt(h1) + B64.charAt(h2) + B64.charAt(h3) + B64.charAt(h4); + } while (i < data.length); + + enc = tmp_arr.join(''); + + switch (data.length % 3) { + case 1: + enc = enc.slice(0, -2) + '=='; + break; + case 2: + enc = enc.slice(0, -1) + '='; + break; + } + + return enc; +} + +/** Returns undefined if the input is null or undefined. */ +export function base64_decode(data: null | undefined): undefined; +/** Returns an array of bytes from the given base64-encoded string. */ +export function base64_decode(data: string): memory; +/** Returns an array of bytes from the given base64-encoded string. */ +export function base64_decode( + data: string | null | undefined, +): memory | undefined { + // Twacked by Will Scullin to handle arrays of 'bytes' + + // http://kevin.vanzonneveld.net + // + original by: Tyler Akins (http://rumkin.com) + // + improved by: Thunder.m + // + input by: Aman Gupta + // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + bugfixed by: Onno Marsman + // + bugfixed by: Pellentesque Malesuada + // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + input by: Brett Zamir (http://brett-zamir.me) + // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // - depends on: utf8_decode + // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA=='); + // * returns 1: 'Kevin van Zonneveld' + + // mozilla has this native + // - but breaks in 2.0.0.12! + //if (typeof this.window['btoa'] == 'function') { + // return btoa(data); + //} + + let o1, + o2, + o3, + h1, + h2, + h3, + h4, + bits, + i = 0, + ac = 0; + const tmp_arr = []; + + if (!data) { + return undefined; + } + + do { + // unpack four hexets into three octets using index points in B64 + h1 = B64.indexOf(data.charAt(i++)); + h2 = B64.indexOf(data.charAt(i++)); + h3 = B64.indexOf(data.charAt(i++)); + h4 = B64.indexOf(data.charAt(i++)); + + bits = (h1 << 18) | (h2 << 12) | (h3 << 6) | h4; + + o1 = (bits >> 16) & 0xff; + o2 = (bits >> 8) & 0xff; + o3 = bits & 0xff; + + tmp_arr[ac++] = o1; + if (h3 !== 64) { + tmp_arr[ac++] = o2; + } + if (h4 !== 64) { + tmp_arr[ac++] = o3; + } + } while (i < data.length); + + return new Uint8Array(tmp_arr); +} + +const DATA_URL_PREFIX = 'data:application/octet-stream;base64,'; + +export function base64_json_parse(json: string): unknown { + const reviver = (_key: string, value: unknown) => { + if (typeof value === 'string' && value.startsWith(DATA_URL_PREFIX)) { + return base64_decode(value.slice(DATA_URL_PREFIX.length)); + } + return value; + }; + + return JSON.parse(json, reviver); +} + +export function base64_json_stringify(json: unknown) { + const replacer = (_key: string, value: unknown) => { + if (value instanceof Uint8Array) { + return DATA_URL_PREFIX + base64_encode(value); + } + return value; + }; + + return JSON.stringify(json, replacer); +} diff --git a/js/canvas1.js b/js/canvas1.js deleted file mode 100644 index 9c3498d..0000000 --- a/js/canvas1.js +++ /dev/null @@ -1,221 +0,0 @@ -/* Copyright 2010-2019Will Scullin - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - */ - -import { charset } from './roms/apple1char'; - -/* -0: A9 9 AA 20 EF FF E8 8A 4C 2 0 -0R -*/ - -/* - * Text Page Drawing - */ - -export function TextPage() -{ - var _page; - var _context; - - var _buffer = []; - var _greenMode = false; - var _scanlines = false; - - var _black = [0x00,0x00,0x00]; - var _white = [0xee,0xff,0xff]; - var _green = [0x00,0xff,0x80]; - var _blinking = 0; - - var _row = 0; - var _col = 0; - var _dirty = false; - - function _init() { - _buffer = []; - for (var row = 0; row < 24; row++) { - _buffer[row] = []; - for (var col = 0; col < 40; col++) { - _buffer[row][col] = col % 2 ? 0x00 : 0xff; - } - } - _dirty = true; - } - - _init(); - - return { - init: function() { - var self = this; - window.setInterval(function() { - _blinking = (_blinking + 1) % 3; - self._blink(); - _dirty = true; - }, 333); - }, - - write: function(val) { - var col; - val &= 0x7f; - - if (this.transcript) { - if (val == 0xd) { - this.transcript += '\n'; - } else if (val >= 0x20) { - if (val >= 0x60) { - val &= 0x5f; - } - this.transcript += String.fromCharCode(val); - } - } - - if (val == 0x0d) { - for (col = _col; col < 40; col++) { - _buffer[_row][col] = 0x20; - } - _col = 0; - _row++; - } else { - _buffer[_row][_col] = val; - _col++; - if (_col > 39) { - _col = 0; - _row++; - } - } - if (_row > 23) { - _row = 23; - _buffer.shift(); - _buffer.push([]); - for (col = 0; col < 40; col++) { - _buffer[_row][col] = 0x20; - } - } - _buffer[_row][_col] = 0x00; - this.refresh(); - }, - writeAt: function(row, col, val) { - _buffer[row][col] = val; - var data = _page.data, fore, back, color; - var off = (col * 14 + row * 560 * 8 * 2) * 4; - - fore = _greenMode ? _green : _white; - back = _black; - var char = 0; - - if (!val) { - if (_blinking) { - fore = _black; - } - } else { - char = val & 0x1f; - char |= val & 0x40 ? 0 : 0x20; - } - - for (var jdx = 0; jdx < 8; jdx++) { - var b = charset[char * 8 + jdx]; - for (var idx = 0; idx < 7; idx += 1) { - b <<= 1; - color = (b & 0x80) ? fore : back; - var c0 = color[0], c1 = color[1], c2 = color[2]; - data[off + 0] = data[off + 4] = c0; - data[off + 1] = data[off + 5] = c1; - data[off + 2] = data[off + 6] = c2; - if (!_scanlines) { - data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0; - data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1; - data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2; - } else { - data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0 >> 1; - data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1 >> 1; - data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2 >> 1; - } - off += 8; - } - off += 546 * 4 + 560 * 4; - } - }, - _blink: function() { - for (var row = 0; row < 24; row++) { - for (var col = 0; col < 40; col++) { - var val = _buffer[row][col]; - if (!val) { - this.writeAt(row, col, val); - } - } - } - _dirty = true; - }, - refresh: function() { - for (var row = 0; row < 24; row++) { - for (var col = 0; col < 40; col++) { - this.writeAt(row, col, _buffer[row][col]); - } - } - _dirty = true; - }, - green: function(on) { - _greenMode = on; - this.refresh(); - }, - scanlines: function(on) { - _scanlines = on; - this.refresh(); - }, - blit: function() { - if (_dirty) { - _context.putImageData(_page, 0, 0, 0, 0, 7 * 40 * 2, 8 * 24 * 2); - } - }, - setContext: function(context) { - _context = context; - _page = context.createImageData(560, 384); - for (var idx = 0; idx < 560 * 384 * 4; idx++) { - _page.data[idx] = 0xff; - } - }, - getText: function() { - function mapCharCode(charCode) { - charCode &= 0x7F; - if (charCode < 0x20) { - charCode += 0x40; - } - if (charCode >= 0x60) { - charCode -= 0x40; - } - return charCode; - } - - var buffer = '', line, charCode; - var row, col; - for (row = 0; row < 24; row++) { - line = ''; - for (col = 0; col < 40; col++) { - charCode = mapCharCode(_buffer[row][col]); - line += String.fromCharCode(charCode); - } - line = line.trimRight(); - buffer += line + '\n'; - } - return buffer; - }, - clear: function canvas_clearScreen() { - for (var row = 0; row < 24; row++) { - for (var col = 0; col < 40; col++) { - _buffer[row][col] = 0x20; - } - } - _col = 0; - _row = 0; - this.refresh(); - }, - transcript: '' - }; -} diff --git a/js/canvas1.ts b/js/canvas1.ts new file mode 100644 index 0000000..1ab0074 --- /dev/null +++ b/js/canvas1.ts @@ -0,0 +1,236 @@ +/* Copyright 2010-2023 Will Scullin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +import { charset } from './roms/apple1char'; +import type { byte } from './types'; + +/* +0: A9 9 AA 20 EF FF E8 8A 4C 2 0 +0R +*/ + +/* + * Text Page Drawing + */ + +export class TextPage { + _page: ImageData | undefined; + _context: CanvasRenderingContext2D | undefined; + + _buffer: byte[][] = []; + _greenMode = false; + _scanlines = false; + + _black = [0x00, 0x00, 0x00]; + _white = [0xee, 0xff, 0xff]; + _green = [0x00, 0xff, 0x80]; + _blinking = 0; + + _row = 0; + _col = 0; + _dirty = false; + + constructor() { + this._buffer = []; + for (let row = 0; row < 24; row++) { + this._buffer[row] = []; + for (let col = 0; col < 40; col++) { + this._buffer[row][col] = col % 2 ? 0x00 : 0xff; + } + } + this._dirty = true; + } + + init() { + window.setInterval(() => { + this._blinking = (this._blinking + 1) % 3; + this._blink(); + this._dirty = true; + }, 333); + } + + write(val: byte): void { + let col; + val &= 0x7f; + + if (this.transcript) { + if (val === 0xd) { + this.transcript += '\n'; + } else if (val >= 0x20) { + if (val >= 0x60) { + val &= 0x5f; + } + this.transcript += String.fromCharCode(val); + } + } + + if (val === 0x0d) { + for (col = this._col; col < 40; col++) { + this._buffer[this._row][col] = 0x20; + } + this._col = 0; + this._row++; + } else { + this._buffer[this._row][this._col] = val; + this._col++; + if (this._col > 39) { + this._col = 0; + this._row++; + } + } + if (this._row > 23) { + this._row = 23; + this._buffer.shift(); + this._buffer.push([]); + for (col = 0; col < 40; col++) { + this._buffer[this._row][col] = 0x20; + } + } + this._buffer[this._row][this._col] = 0x00; + this.refresh(); + } + writeAt(row: byte, col: byte, val: byte): void { + if (!this._page) { + return; + } + this._buffer[row][col] = val; + const data = this._page.data; + let color; + let off = (col * 14 + row * 560 * 8 * 2) * 4; + + let fore = this._greenMode ? this._green : this._white; + const back = this._black; + let char = 0; + + if (!val) { + if (this._blinking) { + fore = this._black; + } + } else { + char = val & 0x1f; + char |= val & 0x40 ? 0 : 0x20; + } + + for (let jdx = 0; jdx < 8; jdx++) { + let b = charset[char * 8 + jdx]; + for (let idx = 0; idx < 7; idx += 1) { + b <<= 1; + color = b & 0x80 ? fore : back; + const c0 = color[0], + c1 = color[1], + c2 = color[2]; + data[off + 0] = data[off + 4] = c0; + data[off + 1] = data[off + 5] = c1; + data[off + 2] = data[off + 6] = c2; + if (!this._scanlines) { + data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0; + data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1; + data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2; + } else { + data[off + 560 * 4] = data[off + 560 * 4 + 4] = c0 >> 1; + data[off + 560 * 4 + 1] = data[off + 560 * 4 + 5] = c1 >> 1; + data[off + 560 * 4 + 2] = data[off + 560 * 4 + 6] = c2 >> 1; + } + off += 8; + } + off += 546 * 4 + 560 * 4; + } + } + _blink() { + for (let row = 0; row < 24; row++) { + for (let col = 0; col < 40; col++) { + const val = this._buffer[row][col]; + if (!val) { + this.writeAt(row, col, val); + } + } + } + this._dirty = true; + } + refresh() { + for (let row = 0; row < 24; row++) { + for (let col = 0; col < 40; col++) { + this.writeAt(row, col, this._buffer[row][col]); + } + } + this._dirty = true; + } + green(on: boolean) { + this._greenMode = on; + this.refresh(); + } + scanlines(on: boolean) { + this._scanlines = on; + this.refresh(); + } + blit() { + if (!this._page || !this._context) { + return; + } + if (this._dirty) { + this._context.putImageData( + this._page, + 0, + 0, + 0, + 0, + 7 * 40 * 2, + 8 * 24 * 2, + ); + } + } + setContext(context: CanvasRenderingContext2D) { + this._context = context; + this._page = context.createImageData(560, 384); + for (let idx = 0; idx < 560 * 384 * 4; idx++) { + this._page.data[idx] = 0xff; + } + } + getText() { + function mapCharCode(charCode: byte) { + charCode &= 0x7f; + if (charCode < 0x20) { + charCode += 0x40; + } + if (charCode >= 0x60) { + charCode -= 0x40; + } + return charCode; + } + + let buffer = '', + line, + charCode; + let row, col; + for (row = 0; row < 24; row++) { + line = ''; + for (col = 0; col < 40; col++) { + charCode = mapCharCode(this._buffer[row][col]); + line += String.fromCharCode(charCode); + } + line = line.trimRight(); + buffer += line + '\n'; + } + return buffer; + } + clear() { + for (let row = 0; row < 24; row++) { + for (let col = 0; col < 40; col++) { + this._buffer[row][col] = 0x20; + } + } + this._col = 0; + this._row = 0; + this.refresh(); + } + + transcript = ''; +} diff --git a/js/cards/aci.js b/js/cards/aci.js deleted file mode 100644 index 37670a9..0000000 --- a/js/cards/aci.js +++ /dev/null @@ -1,160 +0,0 @@ -import { debug } from '../util'; - -export default function ACI(cpu, cb) { - var _last = cpu.cycles(); - var _next = _last; - var _recording = false; - var _readOffset = 0; - var _flip = false; - var _beKind = false; - var _progress = 0; - - var rom = [ - 0xA9,0xAA,0x20,0xEF,0xFF,0xA9,0x8D,0x20, - 0xEF,0xFF,0xA0,0xFF,0xC8,0xAD,0x11,0xD0, - 0x10,0xFB,0xAD,0x10,0xD0,0x99,0x00,0x02, - 0x20,0xEF,0xFF,0xC9,0x9B,0xF0,0xE1,0xC9, - 0x8D,0xD0,0xE9,0xA2,0xFF,0xA9,0x00,0x85, - 0x24,0x85,0x25,0x85,0x26,0x85,0x27,0xE8, - 0xBD,0x00,0x02,0xC9,0xD2,0xF0,0x56,0xC9, - 0xD7,0xF0,0x35,0xC9,0xAE,0xF0,0x27,0xC9, - 0x8D,0xF0,0x20,0xC9,0xA0,0xF0,0xE8,0x49, - 0xB0,0xC9,0x0A,0x90,0x06,0x69,0x88,0xC9, - 0xFA,0x90,0xAD,0x0A,0x0A,0x0A,0x0A,0xA0, - 0x04,0x0A,0x26,0x24,0x26,0x25,0x88,0xD0, - 0xF8,0xF0,0xCC,0x4C,0x1A,0xFF,0xA5,0x24, - 0x85,0x26,0xA5,0x25,0x85,0x27,0xB0,0xBF, - 0xA9,0x40,0x20,0xCC,0xC1,0x88,0xA2,0x00, - 0xA1,0x26,0xA2,0x10,0x0A,0x20,0xDB,0xC1, - 0xD0,0xFA,0x20,0xF1,0xC1,0xA0,0x1E,0x90, - 0xEC,0xA6,0x28,0xB0,0x98,0x20,0xBC,0xC1, - 0xA9,0x16,0x20,0xCC,0xC1,0x20,0xBC,0xC1, - 0xA0,0x1F,0x20,0xBF,0xC1,0xB0,0xF9,0x20, - 0xBF,0xC1,0xA0,0x3A,0xA2,0x08,0x48,0x20, - 0xBC,0xC1,0x68,0x2A,0xA0,0x39,0xCA,0xD0, - 0xF5,0x81,0x26,0x20,0xF1,0xC1,0xA0,0x35, - 0x90,0xEA,0xB0,0xCD,0x20,0xBF,0xC1,0x88, - 0xAD,0x81,0xC0,0xC5,0x29,0xF0,0xF8,0x85, - 0x29,0xC0,0x80,0x60,0x86,0x28,0xA0,0x42, - 0x20,0xE0,0xC1,0xD0,0xF9,0x69,0xFE,0xB0, - 0xF5,0xA0,0x1E,0x20,0xE0,0xC1,0xA0,0x2C, - 0x88,0xD0,0xFD,0x90,0x05,0xA0,0x2F,0x88, - 0xD0,0xFD,0xBC,0x00,0xC0,0xA0,0x29,0xCA, - 0x60,0xA5,0x26,0xC5,0x24,0xA5,0x27,0xE5, - 0x25,0xE6,0x26,0xD0,0x02,0xE6,0x27,0x60 - ]; - - return { - start: function aci_start() { - return 0xc0; - }, - end: function aci_end() { - return 0xc1; - }, - read: function aci_read(page, off) { - var now = cpu.cycles(); - var result = rom[off]; - if (page == 0xc0) { - if (_recording) { - var delta = now - _last; - this.buffer.push(delta); - _last = now; - } else { - var progress; - if (_readOffset < this.buffer.length) { - if (now > _next) { - if ((_readOffset % 1000) == 0) { - debug('Read ' + (_readOffset / 1000)); - } - _flip = !_flip; - _next = now + this.buffer[_readOffset++]; - } - } - result = _flip ? rom[off | 0x01] : rom[off & 0xfe]; - - progress = Math.round(_readOffset / this.buffer.length * 100) / 100; - if (_progress != progress) { - _progress = progress; - cb.progress(_progress); - } - } - } else { - if (cpu.sync()) { - switch (off) { - case 0x00: - _recording = false; - _beKind = true; - debug('Entering ACI CLI'); - break; - case 0x63: - if (_recording) { - this.buffer.push(5000000); - _recording = false; - } - debug('Exiting ACI CLI'); - break; - case 0x70: // WRITE - _recording = true; - if (_beKind) { - _beKind = false; - this.buffer = []; - } - debug('Start write'); - _last = now; - break; - //case 0x7c: // WBITLOOP: - // _debug = true; - // debug("Write bit loop"); - // break; - case 0x8d: // READ - _recording = false; - debug('Start read'); - if (_beKind) { - _readOffset = 0; - _next = now + 5000000; - _beKind = false; - - cb.progress(0); - } - break; - default: - break; - } - } - } - return result; - }, - write: function aci_write() {}, - - getState: function aci_getState() { return {}; }, - setState: function aci_setState() {}, - - setData: function aci_setData(data) { - var seg, idx, jdx, d, b; - this.buffer = []; - for (seg = 0; seg < data.length; seg++) { - for (idx = 0; idx < 16384; idx++) { - this.buffer.push(592); - } - this.buffer.push(180); - this.buffer.push(238); - d = data[seg]; - for (idx = 0; idx < d.length; idx++) { - b = d[idx]; - for (jdx = 0; jdx < 8; jdx++) { - if (b & 0x80) { - this.buffer.push(473); - this.buffer.push(473); - } else { - this.buffer.push(238); - this.buffer.push(238); - } - b <<= 1; - } - } - this.buffer.push(5000000); - } - }, - buffer: [] - }; -} diff --git a/js/cards/aci.ts b/js/cards/aci.ts new file mode 100644 index 0000000..ecf6e9a --- /dev/null +++ b/js/cards/aci.ts @@ -0,0 +1,162 @@ +import CPU6502 from '../cpu6502'; +import { debug } from '../util'; +import { byte } from '../types'; + +const rom = [ + 0xa9, 0xaa, 0x20, 0xef, 0xff, 0xa9, 0x8d, 0x20, 0xef, 0xff, 0xa0, 0xff, 0xc8, + 0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad, 0x10, 0xd0, 0x99, 0x00, 0x02, 0x20, 0xef, + 0xff, 0xc9, 0x9b, 0xf0, 0xe1, 0xc9, 0x8d, 0xd0, 0xe9, 0xa2, 0xff, 0xa9, 0x00, + 0x85, 0x24, 0x85, 0x25, 0x85, 0x26, 0x85, 0x27, 0xe8, 0xbd, 0x00, 0x02, 0xc9, + 0xd2, 0xf0, 0x56, 0xc9, 0xd7, 0xf0, 0x35, 0xc9, 0xae, 0xf0, 0x27, 0xc9, 0x8d, + 0xf0, 0x20, 0xc9, 0xa0, 0xf0, 0xe8, 0x49, 0xb0, 0xc9, 0x0a, 0x90, 0x06, 0x69, + 0x88, 0xc9, 0xfa, 0x90, 0xad, 0x0a, 0x0a, 0x0a, 0x0a, 0xa0, 0x04, 0x0a, 0x26, + 0x24, 0x26, 0x25, 0x88, 0xd0, 0xf8, 0xf0, 0xcc, 0x4c, 0x1a, 0xff, 0xa5, 0x24, + 0x85, 0x26, 0xa5, 0x25, 0x85, 0x27, 0xb0, 0xbf, 0xa9, 0x40, 0x20, 0xcc, 0xc1, + 0x88, 0xa2, 0x00, 0xa1, 0x26, 0xa2, 0x10, 0x0a, 0x20, 0xdb, 0xc1, 0xd0, 0xfa, + 0x20, 0xf1, 0xc1, 0xa0, 0x1e, 0x90, 0xec, 0xa6, 0x28, 0xb0, 0x98, 0x20, 0xbc, + 0xc1, 0xa9, 0x16, 0x20, 0xcc, 0xc1, 0x20, 0xbc, 0xc1, 0xa0, 0x1f, 0x20, 0xbf, + 0xc1, 0xb0, 0xf9, 0x20, 0xbf, 0xc1, 0xa0, 0x3a, 0xa2, 0x08, 0x48, 0x20, 0xbc, + 0xc1, 0x68, 0x2a, 0xa0, 0x39, 0xca, 0xd0, 0xf5, 0x81, 0x26, 0x20, 0xf1, 0xc1, + 0xa0, 0x35, 0x90, 0xea, 0xb0, 0xcd, 0x20, 0xbf, 0xc1, 0x88, 0xad, 0x81, 0xc0, + 0xc5, 0x29, 0xf0, 0xf8, 0x85, 0x29, 0xc0, 0x80, 0x60, 0x86, 0x28, 0xa0, 0x42, + 0x20, 0xe0, 0xc1, 0xd0, 0xf9, 0x69, 0xfe, 0xb0, 0xf5, 0xa0, 0x1e, 0x20, 0xe0, + 0xc1, 0xa0, 0x2c, 0x88, 0xd0, 0xfd, 0x90, 0x05, 0xa0, 0x2f, 0x88, 0xd0, 0xfd, + 0xbc, 0x00, 0xc0, 0xa0, 0x29, 0xca, 0x60, 0xa5, 0x26, 0xc5, 0x24, 0xa5, 0x27, + 0xe5, 0x25, 0xe6, 0x26, 0xd0, 0x02, 0xe6, 0x27, 0x60, +] as const; + +export interface ACICallback { + progress: (value: number) => void; +} + +export default class ACI { + _last: number; + _next: number; + _recording = false; + _readOffset = 0; + _flip = false; + _beKind = false; + _progress = 0; + + constructor( + private cpu: CPU6502, + private cb: ACICallback, + ) { + this._last = cpu.getCycles(); + this._next = this._last; + } + + start() { + return 0xc0; + } + end() { + return 0xc1; + } + read(page: byte, off: byte) { + const now = this.cpu.getCycles(); + let result = rom[off]; + if (page === 0xc0) { + if (this._recording) { + const delta = now - this._last; + this.buffer.push(delta); + this._last = now; + } else { + if (this._readOffset < this.buffer.length) { + if (now > this._next) { + if (this._readOffset % 1000 === 0) { + debug('Read ' + this._readOffset / 1000); + } + this._flip = !this._flip; + this._next = now + this.buffer[this._readOffset++]; + } + } + result = this._flip ? rom[off | 0x01] : rom[off & 0xfe]; + + const progress = + Math.round((this._readOffset / this.buffer.length) * 100) / 100; + if (this._progress !== progress) { + this._progress = progress; + this.cb.progress(this._progress); + } + } + } else { + if (this.cpu.getSync()) { + switch (off) { + case 0x00: + this._recording = false; + this._beKind = true; + debug('Entering ACI CLI'); + break; + case 0x63: + if (this._recording) { + this.buffer.push(5000000); + this._recording = false; + } + debug('Exiting ACI CLI'); + break; + case 0x70: // WRITE + this._recording = true; + if (this._beKind) { + this._beKind = false; + this.buffer = []; + } + debug('Start write'); + this._last = now; + break; + //case 0x7c: // WBITLOOP: + // _debug = true; + // debug("Write bit loop"); + // break; + case 0x8d: // READ + this._recording = false; + debug('Start read'); + if (this._beKind) { + this._readOffset = 0; + this._next = now + 5000000; + this._beKind = false; + + this.cb.progress(0); + } + break; + default: + break; + } + } + } + return result; + } + write() {} + + getState() { + return {}; + } + setState() {} + + setData(data: number[][]) { + let seg, idx, jdx, d, b; + this.buffer = []; + for (seg = 0; seg < data.length; seg++) { + for (idx = 0; idx < 16384; idx++) { + this.buffer.push(592); + } + this.buffer.push(180); + this.buffer.push(238); + d = data[seg]; + for (idx = 0; idx < d.length; idx++) { + b = d[idx]; + for (jdx = 0; jdx < 8; jdx++) { + if (b & 0x80) { + this.buffer.push(473); + this.buffer.push(473); + } else { + this.buffer.push(238); + this.buffer.push(238); + } + b <<= 1; + } + } + this.buffer.push(5000000); + } + } + buffer: byte[] = []; +} diff --git a/js/copyright.js b/js/copyright.ts similarity index 88% rename from js/copyright.js rename to js/copyright.ts index 5e8e36e..57ce95e 100644 --- a/js/copyright.js +++ b/js/copyright.ts @@ -1,5 +1,5 @@ /*! - * Copyright 2010-2018 Will Scullin + * Copyright 2010-2023 Will Scullin * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that diff --git a/js/cpu6502.js b/js/cpu6502.js deleted file mode 100644 index a2dc513..0000000 --- a/js/cpu6502.js +++ /dev/null @@ -1,1626 +0,0 @@ -/* - * Copyright 2010-2019 Will Scullin - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - */ - -import { debug, toHex } from './util'; - -export default function CPU6502(options) -{ - options = options || {}; - - var is65C02 = options['65C02'] ? true : false; - - /* Registers */ - var pc = 0, // Program Counter - sr = 0x20, // Process Status Register - ar = 0, // Accumulator - xr = 0, // X Register - yr = 0, // Y Register - sp = 0xff; // Stack Pointer - - /* Addressing Mode */ - var modes = { - accumulator: 0, // A (Accumulator) - implied: 1, // Implied - immediate: 2, // # Immediate - absolute: 3, // a Absolute - zeroPage: 4, // zp Zero Page - relative: 5, // r Relative - - absoluteX: 6, // a,X Absolute, X - absoluteY: 7, // a,Y Absolute, Y - zeroPageX: 8, // zp,X Zero Page, X - zeroPageY: 9, // zp,Y Zero Page, Y - - absoluteIndirect: 10, // (a) Indirect - zeroPageXIndirect: 11, // (zp,X) Zero Page Indexed Indirect - zeroPageIndirectY: 12, // (zp),Y Zero Page Indexed with Y - - /* 65c02 */ - zeroPageIndirect: 13, // (zp), - absoluteXIndirect: 14, // (a, X), - zeroPage_relative: 15 // zp, Relative - }; - - var sizes = { - 0 /* modes.accumulator */: 1, - 1 /* modes.implied */: 1, - 2 /* modes.immediate */: 2, - 3 /* modes.absolute */: 3, - 4 /* modes.zeroPage */: 2, - 5 /* modes.relative */: 2, - 6 /* modes.absoluteX */: 3, - 7 /* modes.absoluteY */: 3, - 8 /* modes.zeroPageX */: 2, - 9 /* modes.zeroPageY */: 2, - 10 /* modes.indirect */: 3, - 11 /* modes.zeroPageXIndirect */: 2, - 12 /* modes.zeroPageYIndirect */: 2, - - 13 /* mode.zeroPageIndirect */: 2, - 14 /* mode.absoluteXIndirect */: 3, - 15 /* mode.zeroPage_relative */: 3 - }; - - /* Flags */ - var flags = { - N: 0x80, // Negative - V: 0x40, // oVerflow - B: 0x10, // Break - D: 0x08, // Decimal - I: 0x04, // Interrupt - Z: 0x02, // Zero - C: 0x01 // Carry - }; - - /* Memory Locations */ - var loc = { - STACK: 0x100, - NMI: 0xFFFA, - RESET: 0xFFFC, - BRK: 0xFFFE - }; - - var idx; - - var readPages = []; - var writePages = []; - var resetHandlers = []; - var cycles = 0; - var sync = false; - - var blankPage = { - read: function() { return 0; }, - write: function() {} - }; - - for (idx = 0; idx < 0x100; idx++) { - readPages[idx] = blankPage; - writePages[idx] = blankPage; - } - - function setFlag(f, on) { - sr = on ? (sr | f) : (sr & ~f); - } - - function testNZ(val) { - sr = val === 0 ? (sr | flags.Z) : (sr & ~flags.Z); - sr = (val & 0x80) ? (sr | flags.N) : (sr & ~flags.N); - - return val; - } - - function testZ(val) { - sr = val === 0 ? (sr | flags.Z) : (sr & ~flags.Z); - - return val; - } - - function add(a, b, sub) { - if (sub) - b ^= 0xff; - - // KEGS - var c, v; - if ((sr & flags.D) !== 0) { - c = (a & 0x0f) + (b & 0x0f) + (sr & flags.C); - if (sub) { - if (c < 0x10) - c = (c - 0x06) & 0x0f; - c += (a & 0xf0) + (b & 0xf0); - v = (c >> 1) ^ c; - if (c < 0x100) - c = (c + 0xa0) & 0xff; - } else { - if (c > 0x09) - c = (c - 0x0a) | 0x10; // carry to MSN - c += (a & 0xf0) + (b & 0xf0); - v = (c >> 1) ^ c; - if (c > 0x99) - c += 0x60; - } - } else { - c = a + b + (sr & flags.C); - v = (c ^ a) & 0x80; - } - - if (((a ^ b) & 0x80) !== 0) { - v = 0; - } - - setFlag(flags.C, c > 0xff); - setFlag(flags.V, v); - - return testNZ(c & 0xff); - } - - function increment(a) { - return testNZ((a + 0x01) & 0xff); - } - - function decrement(a) { - return testNZ((a + 0xff) & 0xff); - } - - function readBytePC(dbg) { - var addr = (pc++) & 0xffff, - page = addr >> 8, - off = addr & 0xff; - - var result = readPages[page].read(page, off, dbg); - - if (!dbg) { - cycles++; - } - - return result; - } - - function readByte(addr, dbg) { - var page = addr >> 8, - off = addr & 0xff; - - var result = readPages[page].read(page, off, dbg); - - if (!dbg) { - cycles++; - } - - return result; - } - - function writeByte(addr, val) { - var page = addr >> 8, - off = addr & 0xff; - - writePages[page].write(page, off, val); - - cycles++; - } - - function readWord(addr, dbg) { - return readByte(addr, dbg) | (readByte(addr + 1, dbg) << 8); - } - - function readWordPC(dbg) { - return readBytePC(dbg) | (readBytePC(dbg) << 8); - } - - function readZPWord(addr, dbg) { - var lsb, msb; - - lsb = readByte(addr & 0xff, dbg); - msb = readByte((addr + 1) & 0xff, dbg); - - return (msb << 8) | lsb; - } - - function pushByte(val) { - writeByte(loc.STACK | sp, val); - sp = (sp + 0xff) & 0xff; - } - - function pushWord(val) { - pushByte(val >> 8); - pushByte(val & 0xff); - } - - function pullByte() { - sp = (sp + 0x01) & 0xff; - return readByte(loc.STACK | sp); - } - - function pullWordRaw() { - var lsb = pullByte(loc.STACK | sp); - var msb = pullByte(loc.STACK | sp); - - return (msb << 8) | lsb; - } - - /* - * Read functions - */ - - function readImplied() { - } - - // #$00 - function readImmediate() { - return readBytePC(); - } - - // $0000 - function readAbsolute() { - return readByte(readWordPC()); - } - - // $00 - function readZeroPage() { - return readByte(readBytePC()); - } - - // $0000,X - function readAbsoluteX() { - var addr = readWordPC(); - var oldPage = addr >> 8; - addr = (addr + xr) & 0xffff; - var newPage = addr >> 8; - if (newPage != oldPage) { - var off = addr & 0xff; - readByte(oldPage << 8 | off); - } - return readByte(addr); - } - - // $0000,Y - function readAbsoluteY() { - var addr = readWordPC(); - var oldPage = addr >> 8; - addr = (addr + yr) & 0xffff; - var newPage = addr >> 8; - if (newPage != oldPage) { - var off = addr & 0xff; - readByte(oldPage << 8 | off); - } - return readByte(addr); - } - - // $00,X - function readZeroPageX() { - var zpAddr = readBytePC(); - readByte(zpAddr); - return readByte((zpAddr + xr) & 0xff); - } - - // $00,Y - function readZeroPageY() { - var zpAddr = readBytePC(); - readByte(zpAddr); - return readByte((zpAddr + yr) & 0xff); - } - - // ($00,X) - function readZeroPageXIndirect() { - var zpAddr = readBytePC(); - readByte(zpAddr); - var addr = readZPWord((zpAddr + xr) & 0xff); - return readByte(addr); - } - - // ($00),Y - function readZeroPageIndirectY() { - var addr = readZPWord(readBytePC()); - var oldPage = addr >> 8; - addr = (addr + yr) & 0xffff; - var newPage = addr >> 8; - if (newPage != oldPage) { - var off = addr & 0xff; - readByte(oldPage << 8 | off); - } - return readByte(addr); - } - - // ($00) (65C02) - function readZeroPageIndirect() { - return readByte(readZPWord(readBytePC())); - } - - /* - * Write Functions - */ - - // $0000 - function writeAbsolute(val) { - writeByte(readWordPC(), val); - } - - // $00 - function writeZeroPage(val) { - writeByte(readBytePC(), val); - } - - // $0000,X - function writeAbsoluteX(val) { - var addr = readWordPC(), oldPage = addr >> 8; - addr = (addr + xr) & 0xffff; - var off = addr & 0xff; - readByte(oldPage << 8 | off); - writeByte(addr, val); - } - - // $0000,Y - function writeAbsoluteY(val) { - var addr = readWordPC(), oldPage = addr >> 8; - addr = (addr + yr) & 0xffff; - var off = addr & 0xff; - readByte(oldPage << 8 | off); - writeByte(addr, val); - } - - // $00,X - function writeZeroPageX(val) { - var zpAddr = readBytePC(); - readByte(zpAddr); - writeByte((zpAddr + xr) & 0xff, val); - } - - // $00,Y - function writeZeroPageY(val) { - var zpAddr = readBytePC(); - readByte(zpAddr); - writeByte((zpAddr + yr) & 0xff, val); - } - - // ($00,X) - function writeZeroPageXIndirect(val) { - var zpAddr = readBytePC(); - readByte(zpAddr); - var addr = readZPWord((zpAddr + xr) & 0xff); - writeByte(addr, val); - } - - // ($00),Y - function writeZeroPageIndirectY(val) { - var addr = readZPWord(readBytePC()), oldPage = addr >> 8; - addr = (addr + yr) & 0xffff; - var off = addr & 0xff; - readByte(oldPage << 8 | off); - writeByte(addr, val); - } - - // ($00) (65C02) - function writeZeroPageIndirect(val) { - writeByte(readZPWord(readBytePC()), val); - } - - // $00 - function readAddrZeroPage() { - return readBytePC(); - } - - // $00,X - function readAddrZeroPageX() { - var zpAddr = readBytePC(); - readByte(zpAddr); - return (zpAddr + xr) & 0xff; - } - - // $0000 (65C02) - function readAddrAbsolute() { - return readWordPC(); - } - - // ($0000) (6502) - function readAddrAbsoluteIndirectBug() { - var addr = readWordPC(); - var page = addr & 0xff00; - var off = addr & 0x00ff; - var lsb = readByte(addr); - var msb = readByte(page | ((off + 0x01) & 0xff)); - return msb << 8 | lsb; - } - - // ($0000) (65C02) - function readAddrAbsoluteIndirect() { - var lsb = readBytePC(); - var msb = readBytePC(); - readByte(pc); - return readWord(msb << 8 | lsb); - } - - // $0000,X - function readAddrAbsoluteX(opts) { - var addr = readWordPC(); - if (!is65C02 || (opts && opts.rwm)) { - readByte(addr); - } else { - readByte(pc); - } - return (addr + xr) & 0xffff; - } - - // $(0000,X) (65C02) - function readAddrAbsoluteXIndirect() { - var address = readWordPC(); - readByte(pc); - return readWord((address + xr) & 0xffff); - } - - /* Break */ - function brk(readFn) { - readFn(); - pushWord(pc); - pushByte(sr | flags.B); - if (is65C02) { - setFlag(flags.D, false); - } - setFlag(flags.I, true); - pc = readWord(loc.BRK); - } - - /* Load Accumulator */ - function lda(readFn) { - ar = testNZ(readFn()); - } - - /* Load X Register */ - function ldx(readFn) { - xr = testNZ(readFn()); - } - - /* Load Y Register */ - function ldy(readFn) { - yr = testNZ(readFn()); - } - - /* Store Accumulator */ - function sta(writeFn) { - writeFn(ar); - } - - /* Store X Register */ - function stx(writeFn) { - writeFn(xr); - } - - /* Store Y Register */ - function sty(writeFn) { - writeFn(yr); - } - - /* Store Zero */ - function stz(writeFn) { - writeFn(0); - } - - /* Add with Carry */ - function adc(readFn) { - ar = add(ar, readFn(), false); - } - - /* Subtract with Carry */ - function sbc(readFn) { - ar = add(ar, readFn(), true); - } - - /* Increment Memory */ - function incA() { - readByte(pc); - ar = increment(ar); - } - - function inc(readAddrFn) { - var addr = readAddrFn({rwm: true}); - var oldVal = readByte(addr); - writeByte(addr, oldVal); - var val = increment(oldVal); - writeByte(addr, val); - } - - /* Increment X */ - function inx() { - readByte(pc); - xr = increment(xr); - } - - /* Increment Y */ - function iny() { - readByte(pc); - yr = increment(yr); - } - - /* Decrement Memory */ - function decA() { - readByte(pc); - ar = decrement(ar); - } - - function dec(readAddrFn) { - var addr = readAddrFn({rwm: true}); - var oldVal = readByte(addr); - writeByte(addr, oldVal); - var val = decrement(oldVal); - writeByte(addr, val); - } - - /* Decrement X */ - function dex() { - readByte(pc); - xr = decrement(xr); - } - - /* Decrement Y */ - function dey() { - readByte(pc); - yr = decrement(yr); - } - - function shiftLeft(val) { - setFlag(flags.C, val & 0x80); - return testNZ((val << 1) & 0xff); - } - - /* Arithmetic Shift Left */ - function aslA() { - readByte(pc); - ar = shiftLeft(ar); - } - - function asl(readAddrFn) { - var addr = readAddrFn({rwm: true}); - var oldVal = readByte(addr); - writeByte(addr, oldVal); - var val = shiftLeft(oldVal); - writeByte(addr, val); - } - - function shiftRight(val) { - setFlag(flags.C, val & 0x01); - return testNZ(val >> 1); - } - - /* Logical Shift Right */ - function lsrA() { - readByte(pc); - ar = shiftRight(ar); - } - - function lsr(readAddrFn) { - var addr = readAddrFn({rwm: true}); - var oldVal = readByte(addr); - writeByte(addr, oldVal); - var val = shiftRight(oldVal); - writeByte(addr, val); - } - - function rotateLeft(val) { - var c = (sr & flags.C); - setFlag(flags.C, val & 0x80); - return testNZ(((val << 1) | (c ? 0x01 : 0x00)) & 0xff); - } - - /* Rotate Left */ - function rolA() { - readByte(pc); - ar = rotateLeft(ar); - } - - function rol(readAddrFn) { - var addr = readAddrFn({rwm: true}); - var oldVal = readByte(addr); - writeByte(addr, oldVal); - var val = rotateLeft(oldVal); - writeByte(addr, val); - } - - function rotateRight(a) { - var c = (sr & flags.C); - setFlag(flags.C, a & 0x01); - return testNZ((a >> 1) | (c ? 0x80 : 0x00)); - } - - /* Rotate Right */ - function rorA() { - readByte(pc); - ar = rotateRight(ar); - } - - function ror(readAddrFn) { - var addr = readAddrFn({rwm: true}); - var oldVal = readByte(addr); - writeByte(addr, oldVal); - var val = rotateRight(oldVal); - writeByte(addr, val); - } - - /* Logical And Accumulator */ - function and(readFn) { - ar = testNZ(ar & readFn()); - } - - /* Logical Or Accumulator */ - function ora(readFn) { - ar = testNZ(ar | readFn()); - } - - /* Logical Exclusive Or Accumulator */ - function eor(readFn) { - ar = testNZ(ar ^ readFn()); - } - - /* Reset Bit */ - - function rmb(b) { - var bit = (0x1 << b) ^ 0xFF; - var addr = readBytePC(); - var val = readByte(addr); - readByte(addr); - val &= bit; - writeByte(addr, val); - } - - /* Set Bit */ - - function smb(b) { - var bit = 0x1 << b; - var addr = readBytePC(); - var val = readByte(addr); - readByte(addr); - val |= bit; - writeByte(addr, val); - } - - /* Test and Reset Bits */ - function trb(readAddrFn) { - var addr = readAddrFn(); - var val = readByte(addr); - testZ(val & ar); - readByte(addr); - writeByte(addr, val & ~ar); - } - - /* Test and Set Bits */ - function tsb(readAddrFn) { - var addr = readAddrFn(); - var val = readByte(addr); - testZ(val & ar); - readByte(addr); - writeByte(addr, val | ar); - } - - /* Bit */ - function bit(readFn) { - var val = readFn(); - setFlag(flags.Z, (val & ar) === 0); - setFlag(flags.N, val & 0x80); - setFlag(flags.V, val & 0x40); - } - - /* Bit Immediate*/ - function bitI(readFn) { - var val = readFn(); - setFlag(flags.Z, (val & ar) === 0); - } - - function compare(a, b) - { - b = (b ^ 0xff); - var c = a + b + 1; - setFlag(flags.C, c > 0xff); - testNZ(c & 0xff); - } - - function cmp(readFn) { - compare(ar, readFn()); - } - - function cpx(readFn) { - compare(xr, readFn()); - } - - function cpy(readFn) { - compare(yr, readFn()); - } - - /* Branches */ - function brs(f) { - var off = readBytePC(); // changes pc - if ((f & sr) !== 0) { - readByte(pc); - var oldPage = pc >> 8; - pc += off > 127 ? off - 256 : off; - var newPage = pc >> 8; - var newOff = pc & 0xff; - if (newPage != oldPage) readByte(oldPage << 8 | newOff); - } - } - - function brc(f) { - var off = readBytePC(); // changes pc - if ((f & sr) === 0) { - readByte(pc); - var oldPage = pc >> 8; - pc += off > 127 ? off - 256 : off; - var newPage = pc >> 8; - var newOff = pc & 0xff; - if (newPage != oldPage) readByte(oldPage << 8 | newOff); - } - } - - /* WDC 65C02 branches */ - - function bbr(b) { - var zpAddr = readBytePC(); - var val = readByte(zpAddr); - readByte(zpAddr); - var off = readBytePC(); // changes pc - - if (((1 << b) & val) === 0) { - var oldPc = pc; - var oldPage = oldPc >> 8; - readByte(oldPc); - pc += off > 127 ? off - 256 : off; - var newPage = pc >> 8; - if (oldPage != newPage) { - readByte(oldPc); - } - } - } - - function bbs(b) { - var zpAddr = readBytePC(); - var val = readByte(zpAddr); - readByte(zpAddr); - var off = readBytePC(); // changes pc - - if (((1 << b) & val) !== 0) { - var oldPc = pc; - var oldPage = oldPc >> 8; - readByte(oldPc); - pc += off > 127 ? off - 256 : off; - var newPage = pc >> 8; - if (oldPage != newPage) { - readByte(oldPc); - } - } - } - - /* Transfers and stack */ - function tax() { readByte(pc); testNZ(xr = ar); } - - function txa() { readByte(pc); testNZ(ar = xr); } - - function tay() { readByte(pc); testNZ(yr = ar); } - - function tya() { readByte(pc); testNZ(ar = yr); } - - function tsx() { readByte(pc); testNZ(xr = sp); } - - function txs() { readByte(pc); sp = xr; } - - function pha() { readByte(pc); pushByte(ar); } - - function pla() { readByte(pc); readByte(0x0100 | sp); testNZ(ar = pullByte()); } - - function phx() { readByte(pc); pushByte(xr); } - - function plx() { readByte(pc); readByte(0x0100 | sp);testNZ(xr = pullByte()); } - - function phy() { readByte(pc); pushByte(yr); } - - function ply() { readByte(pc); readByte(0x0100 | sp); testNZ(yr = pullByte()); } - - function php() { readByte(pc); pushByte(sr | flags.B); } - - function plp() { readByte(pc); readByte(0x0100 | sp); sr = (pullByte() & ~flags.B) | 0x20; } - - /* Jump */ - function jmp(readAddrFn) { - pc = readAddrFn(); - } - - /* Jump Subroutine */ - function jsr() { - var lsb = readBytePC(); - readByte(0x0100 | sp); - pushWord(pc); - var msb = readBytePC(); - pc = (msb << 8 | lsb) & 0xffff; - } - - /* Return from Subroutine */ - function rts() { - readByte(pc); - readByte(0x0100 | sp); - var addr = pullWordRaw(); - readByte(addr); - pc = (addr + 1) & 0xffff; - } - - /* Return from Subroutine */ - function rti() { - readByte(pc); - readByte(0x0100 | sp); - sr = pullByte() & ~flags.B; - pc = pullWordRaw(); - } - - /* Set and Clear */ - function set(flag) { - readByte(pc); - sr |= flag; - } - - function clr(flag) { - readByte(pc); - sr &= ~flag; - } - - /* No-Op */ - function nop(readAddrFn) { - readByte(pc); - readAddrFn(); - } - - var ops = { - // LDA - 0xa9: ['LDA', lda, readImmediate, modes.immediate, 2], - 0xa5: ['LDA', lda, readZeroPage, modes.zeroPage, 3], - 0xb5: ['LDA', lda, readZeroPageX, modes.zeroPageX, 4], - 0xad: ['LDA', lda, readAbsolute, modes.absolute, 4], - 0xbd: ['LDA', lda, readAbsoluteX, modes.absoluteX, 4], - 0xb9: ['LDA', lda, readAbsoluteY, modes.absoluteY, 4], - 0xa1: ['LDA', lda, readZeroPageXIndirect, modes.zeroPageXIndirect, 6], - 0xb1: ['LDA', lda, readZeroPageIndirectY, modes.zeroPageIndirectY, 5], - - // LDX - 0xa2: ['LDX', ldx, readImmediate, modes.immediate, 2], - 0xa6: ['LDX', ldx, readZeroPage, modes.zeroPage, 3], - 0xb6: ['LDX', ldx, readZeroPageY, modes.zeroPageY, 4], - 0xae: ['LDX', ldx, readAbsolute, modes.absolute, 4], - 0xbe: ['LDX', ldx, readAbsoluteY, modes.absoluteY, 4], - - // LDY - 0xa0: ['LDY', ldy, readImmediate, modes.immediate, 2], - 0xa4: ['LDY', ldy, readZeroPage, modes.zeroPage, 3], - 0xb4: ['LDY', ldy, readZeroPageX, modes.zeroPageX, 4], - 0xac: ['LDY', ldy, readAbsolute, modes.absolute, 4], - 0xbc: ['LDY', ldy, readAbsoluteX, modes.absoluteX, 4], - - // STA - 0x85: ['STA', sta, writeZeroPage, modes.zeroPage, 3], - 0x95: ['STA', sta, writeZeroPageX, modes.zeroPageX, 4], - 0x8d: ['STA', sta, writeAbsolute, modes.absolute, 4], - 0x9d: ['STA', sta, writeAbsoluteX, modes.absoluteX, 5], - 0x99: ['STA', sta, writeAbsoluteY, modes.absoluteY, 5], - 0x81: ['STA', sta, writeZeroPageXIndirect, modes.zeroPageXIndirect, 6], - 0x91: ['STA', sta, writeZeroPageIndirectY, modes.zeroPageIndirectY, 6], - - // STX - 0x86: ['STX', stx, writeZeroPage, modes.zeroPage, 3], - 0x96: ['STX', stx, writeZeroPageY, modes.zeroPageY, 4], - 0x8e: ['STX', stx, writeAbsolute, modes.absolute, 4], - - // STY - 0x84: ['STY', sty, writeZeroPage, modes.zeroPage, 3], - 0x94: ['STY', sty, writeZeroPageX, modes.zeroPageX, 4], - 0x8c: ['STY', sty, writeAbsolute, modes.absolute, 4], - - // ADC - 0x69: ['ADC', adc, readImmediate, modes.immediate, 2], - 0x65: ['ADC', adc, readZeroPage, modes.zeroPage, 3], - 0x75: ['ADC', adc, readZeroPageX, modes.zeroPageX, 4], - 0x6D: ['ADC', adc, readAbsolute, modes.absolute, 4], - 0x7D: ['ADC', adc, readAbsoluteX, modes.absoluteX, 4], - 0x79: ['ADC', adc, readAbsoluteY, modes.absoluteY, 4], - 0x61: ['ADC', adc, readZeroPageXIndirect, modes.zeroPageXIndirect, 6], - 0x71: ['ADC', adc, readZeroPageIndirectY, modes.zeroPageIndirectY, 5], - - // SBC - 0xe9: ['SBC', sbc, readImmediate, modes.immediate, 2], - 0xe5: ['SBC', sbc, readZeroPage, modes.zeroPage, 3], - 0xf5: ['SBC', sbc, readZeroPageX, modes.zeroPageX, 4], - 0xeD: ['SBC', sbc, readAbsolute, modes.absolute, 4], - 0xfD: ['SBC', sbc, readAbsoluteX, modes.absoluteX, 4], - 0xf9: ['SBC', sbc, readAbsoluteY, modes.absoluteY, 4], - 0xe1: ['SBC', sbc, readZeroPageXIndirect, modes.zeroPageXIndirect, 6], - 0xf1: ['SBC', sbc, readZeroPageIndirectY, modes.zeroPageIndirectY, 5], - - // INC - 0xe6: ['INC', inc, readAddrZeroPage, modes.zeroPage, 5], - 0xf6: ['INC', inc, readAddrZeroPageX, modes.zeroPageX, 6], - 0xee: ['INC', inc, readAddrAbsolute, modes.absolute, 6], - 0xfe: ['INC', inc, readAddrAbsoluteX, modes.absoluteX, 7], - - // INX - 0xe8: ['INX', inx, null, modes.implied, 2], - - // INY - 0xc8: ['INY', iny, null, modes.implied, 2], - - // DEC - 0xc6: ['DEC', dec, readAddrZeroPage, modes.zeroPage, 5], - 0xd6: ['DEC', dec, readAddrZeroPageX, modes.zeroPageX, 6], - 0xce: ['DEC', dec, readAddrAbsolute, modes.absolute, 6], - 0xde: ['DEC', dec, readAddrAbsoluteX, modes.absoluteX, 7], - - // DEX - 0xca: ['DEX', dex, null, modes.implied, 2], - - // DEY - 0x88: ['DEY', dey, null, modes.implied, 2], - - // ASL - 0x0A: ['ASL', aslA, null, modes.accumulator, 2], - 0x06: ['ASL', asl, readAddrZeroPage, modes.zeroPage, 5], - 0x16: ['ASL', asl, readAddrZeroPageX, modes.zeroPageX, 6], - 0x0E: ['ASL', asl, readAddrAbsolute, modes.absolute, 6], - 0x1E: ['ASL', asl, readAddrAbsoluteX, modes.absoluteX, 7], - - // LSR - 0x4A: ['LSR', lsrA, null, modes.accumulator, 2], - 0x46: ['LSR', lsr, readAddrZeroPage, modes.zeroPage, 5], - 0x56: ['LSR', lsr, readAddrZeroPageX, modes.zeroPageX, 6], - 0x4E: ['LSR', lsr, readAddrAbsolute, modes.absolute, 6], - 0x5E: ['LSR', lsr, readAddrAbsoluteX, modes.absoluteX, 7], - - // ROL - 0x2A: ['ROL', rolA, null, modes.accumulator, 2], - 0x26: ['ROL', rol, readAddrZeroPage, modes.zeroPage, 5], - 0x36: ['ROL', rol, readAddrZeroPageX, modes.zeroPageX, 6], - 0x2E: ['ROL', rol, readAddrAbsolute, modes.absolute, 6], - 0x3E: ['ROL', rol, readAddrAbsoluteX, modes.absoluteX, 7], - - // ROR - 0x6A: ['ROR', rorA, null, modes.accumulator, 2], - 0x66: ['ROR', ror, readAddrZeroPage, modes.zeroPage, 5], - 0x76: ['ROR', ror, readAddrZeroPageX, modes.zeroPageX, 6], - 0x6E: ['ROR', ror, readAddrAbsolute, modes.absolute, 6], - 0x7E: ['ROR', ror, readAddrAbsoluteX, modes.absoluteX, 7], - - // AND - 0x29: ['AND', and, readImmediate, modes.immediate, 2], - 0x25: ['AND', and, readZeroPage, modes.zeroPage, 3], - 0x35: ['AND', and, readZeroPageX, modes.zeroPageX, 4], - 0x2D: ['AND', and, readAbsolute, modes.absolute, 4], - 0x3D: ['AND', and, readAbsoluteX, modes.absoluteX, 4], - 0x39: ['AND', and, readAbsoluteY, modes.absoluteY, 4], - 0x21: ['AND', and, readZeroPageXIndirect, modes.zeroPageXIndirect, 6], - 0x31: ['AND', and, readZeroPageIndirectY, modes.zeroPageIndirectY, 5], - - // ORA - 0x09: ['ORA', ora, readImmediate, modes.immediate, 2], - 0x05: ['ORA', ora, readZeroPage, modes.zeroPage, 3], - 0x15: ['ORA', ora, readZeroPageX, modes.zeroPageX, 4], - 0x0D: ['ORA', ora, readAbsolute, modes.absolute, 4], - 0x1D: ['ORA', ora, readAbsoluteX, modes.absoluteX, 4], - 0x19: ['ORA', ora, readAbsoluteY, modes.absoluteY, 4], - 0x01: ['ORA', ora, readZeroPageXIndirect, modes.zeroPageXIndirect, 6], - 0x11: ['ORA', ora, readZeroPageIndirectY, modes.zeroPageIndirectY, 5], - - // EOR - 0x49: ['EOR', eor, readImmediate, modes.immediate, 2], - 0x45: ['EOR', eor, readZeroPage, modes.zeroPage, 3], - 0x55: ['EOR', eor, readZeroPageX, modes.zeroPageX, 4], - 0x4D: ['EOR', eor, readAbsolute, modes.absolute, 4], - 0x5D: ['EOR', eor, readAbsoluteX, modes.absoluteX, 4], - 0x59: ['EOR', eor, readAbsoluteY, modes.absoluteY, 4], - 0x41: ['EOR', eor, readZeroPageXIndirect, modes.zeroPageXIndirect, 6], - 0x51: ['EOR', eor, readZeroPageIndirectY, modes.zeroPageIndirectY, 5], - - // CMP - 0xc9: ['CMP', cmp, readImmediate, modes.immediate, 2], - 0xc5: ['CMP', cmp, readZeroPage, modes.zeroPage, 3], - 0xd5: ['CMP', cmp, readZeroPageX, modes.zeroPageX, 4], - 0xcD: ['CMP', cmp, readAbsolute, modes.absolute, 4], - 0xdD: ['CMP', cmp, readAbsoluteX, modes.absoluteX, 4], - 0xd9: ['CMP', cmp, readAbsoluteY, modes.absoluteY, 4], - 0xc1: ['CMP', cmp, readZeroPageXIndirect, modes.zeroPageXIndirect, 6], - 0xd1: ['CMP', cmp, readZeroPageIndirectY, modes.zeroPageIndirectY, 5], - - // CPX - 0xE0: ['CPX', cpx, readImmediate, modes.immediate, 2], - 0xE4: ['CPX', cpx, readZeroPage, modes.zeroPage, 3], - 0xEC: ['CPX', cpx, readAbsolute, modes.absolute, 4], - - // CPY - 0xC0: ['CPY', cpy, readImmediate, modes.immediate, 2], - 0xC4: ['CPY', cpy, readZeroPage, modes.zeroPage, 3], - 0xCC: ['CPY', cpy, readAbsolute, modes.absolute, 4], - - // BIT - 0x24: ['BIT', bit, readZeroPage, modes.zeroPage, 3], - 0x2C: ['BIT', bit, readAbsolute, modes.absolute, 4], - - // BCC - 0x90: ['BCC', brc, flags.C, modes.relative, 2], - - // BCS - 0xB0: ['BCS', brs, flags.C, modes.relative, 2], - - // BEQ - 0xF0: ['BEQ', brs, flags.Z, modes.relative, 2], - - // BMI - 0x30: ['BMI', brs, flags.N, modes.relative, 2], - - // BNE - 0xD0: ['BNE', brc, flags.Z, modes.relative, 2], - - // BPL - 0x10: ['BPL', brc, flags.N, modes.relative, 2], - - // BVC - 0x50: ['BVC', brc, flags.V, modes.relative, 2], - - // BVS - 0x70: ['BVS', brs, flags.V, modes.relative, 2], - - // TAX - 0xAA: ['TAX', tax, null, modes.implied, 2], - - // TXA - 0x8A: ['TXA', txa, null, modes.implied, 2], - - // TAY - 0xA8: ['TAY', tay, null, modes.implied, 2], - - // TYA - 0x98: ['TYA', tya, null, modes.implied, 2], - - // TSX - 0xBA: ['TSX', tsx, null, modes.implied, 2], - - // TXS - 0x9A: ['TXS', txs, null, modes.implied, 2], - - // PHA - 0x48: ['PHA', pha, null, modes.implied, 3], - - // PLA - 0x68: ['PLA', pla, null, modes.implied, 4], - - // PHP - 0x08: ['PHP', php, null, modes.implied, 3], - - // PLP - 0x28: ['PLP', plp, null, modes.implied, 4], - - // JMP - 0x4C: [ - 'JMP', jmp, readAddrAbsolute, modes.absolute, 3 - ], - 0x6C: [ - 'JMP', jmp, readAddrAbsoluteIndirectBug, modes.absoluteIndirect, 5 - ], - // JSR - 0x20: ['JSR', jsr, readAddrAbsolute, modes.absolute, 6], - - // RTS - 0x60: ['RTS', rts, null, modes.implied, 6], - - // RTI - 0x40: ['RTI', rti, null, modes.implied, 6], - - // SEC - 0x38: ['SEC', set, flags.C, modes.implied, 2], - - // SED - 0xF8: ['SED', set, flags.D, modes.implied, 2], - - // SEI - 0x78: ['SEI', set, flags.I, modes.implied, 2], - - // CLC - 0x18: ['CLC', clr, flags.C, modes.implied, 2], - - // CLD - 0xD8: ['CLD', clr, flags.D, modes.implied, 2], - - // CLI - 0x58: ['CLI', clr, flags.I, modes.implied, 2], - - // CLV - 0xB8: ['CLV', clr, flags.V, modes.implied, 2], - - // NOP - 0xea: ['NOP', nop, readImplied, modes.implied, 2], - - // BRK - 0x00: ['BRK', brk, readImmediate, modes.immediate, 7] - }; - - /* 65C02 Instructions */ - - var cops = { - // INC / DEC A - 0x1A: ['INC', incA, null, modes.accumulator, 2], - 0x3A: ['DEC', decA, null, modes.accumulator, 2], - - // Indirect Zero Page for the masses - 0x12: ['ORA', ora, readZeroPageIndirect, modes.zeroPageIndirect, 5], - 0x32: ['AND', and, readZeroPageIndirect, modes.zeroPageIndirect, 5], - 0x52: ['EOR', eor, readZeroPageIndirect, modes.zeroPageIndirect, 5], - 0x72: ['ADC', adc, readZeroPageIndirect, modes.zeroPageIndirect, 5], - 0x92: ['STA', sta, writeZeroPageIndirect, modes.zeroPageIndirect, 5], - 0xB2: ['LDA', lda, readZeroPageIndirect, modes.zeroPageIndirect, 5], - 0xD2: ['CMP', cmp, readZeroPageIndirect, modes.zeroPageIndirect, 5], - 0xF2: ['SBC', sbc, readZeroPageIndirect, modes.zeroPageIndirect, 5], - - // Better BIT - 0x34: ['BIT', bit, readZeroPageX, modes.zeroPageX, 4], - 0x3C: ['BIT', bit, readAbsoluteX, modes.absoluteX, 4], - 0x89: ['BIT', bitI, readImmediate, modes.immediate, 2], - - // JMP absolute indirect indexed - 0x6C: [ - 'JMP', jmp, readAddrAbsoluteIndirect, modes.absoluteIndirect, 6 - ], - 0x7C: [ - 'JMP', jmp, readAddrAbsoluteXIndirect, modes.absoluteXIndirect, 6 - ], - - // BBR/BBS - 0x0F: ['BBR0', bbr, 0, modes.zeroPage_relative, 5], - 0x1F: ['BBR1', bbr, 1, modes.zeroPage_relative, 5], - 0x2F: ['BBR2', bbr, 2, modes.zeroPage_relative, 5], - 0x3F: ['BBR3', bbr, 3, modes.zeroPage_relative, 5], - 0x4F: ['BBR4', bbr, 4, modes.zeroPage_relative, 5], - 0x5F: ['BBR5', bbr, 5, modes.zeroPage_relative, 5], - 0x6F: ['BBR6', bbr, 6, modes.zeroPage_relative, 5], - 0x7F: ['BBR7', bbr, 7, modes.zeroPage_relative, 5], - - 0x8F: ['BBS0', bbs, 0, modes.zeroPage_relative, 5], - 0x9F: ['BBS1', bbs, 1, modes.zeroPage_relative, 5], - 0xAF: ['BBS2', bbs, 2, modes.zeroPage_relative, 5], - 0xBF: ['BBS3', bbs, 3, modes.zeroPage_relative, 5], - 0xCF: ['BBS4', bbs, 4, modes.zeroPage_relative, 5], - 0xDF: ['BBS5', bbs, 5, modes.zeroPage_relative, 5], - 0xEF: ['BBS6', bbs, 6, modes.zeroPage_relative, 5], - 0xFF: ['BBS7', bbs, 7, modes.zeroPage_relative, 5], - - // BRA - 0x80: ['BRA', brc, 0, modes.relative, 2], - - // NOP - 0x02: ['NOP', nop, readImmediate, modes.immediate, 2], - 0x22: ['NOP', nop, readImmediate, modes.immediate, 2], - 0x42: ['NOP', nop, readImmediate, modes.immediate, 2], - 0x44: ['NOP', nop, readImmediate, modes.immediate, 3], - 0x54: ['NOP', nop, readImmediate, modes.immediate, 4], - 0x62: ['NOP', nop, readImmediate, modes.immediate, 2], - 0x82: ['NOP', nop, readImmediate, modes.immediate, 2], - 0xC2: ['NOP', nop, readImmediate, modes.immediate, 2], - 0xD4: ['NOP', nop, readImmediate, modes.immediate, 4], - 0xE2: ['NOP', nop, readImmediate, modes.immediate, 2], - 0xF4: ['NOP', nop, readImmediate, modes.immediate, 4], - 0x5C: ['NOP', nop, readAbsolute, modes.absolute, 8], - 0xDC: ['NOP', nop, readAbsolute, modes.absolute, 4], - 0xFC: ['NOP', nop, readAbsolute, modes.absolute, 4], - - // PHX - 0xDA: ['PHX', phx, null, modes.implied, 3], - - // PHY - 0x5A: ['PHY', phy, null, modes.implied, 3], - - // PLX - 0xFA: ['PLX', plx, null, modes.implied, 4], - - // PLY - 0x7A: ['PLY', ply, null, modes.implied, 4], - - // RMB/SMB - - 0x07: ['RMB0', rmb, 0, modes.zeroPage, 5], - 0x17: ['RMB1', rmb, 1, modes.zeroPage, 5], - 0x27: ['RMB2', rmb, 2, modes.zeroPage, 5], - 0x37: ['RMB3', rmb, 3, modes.zeroPage, 5], - 0x47: ['RMB4', rmb, 4, modes.zeroPage, 5], - 0x57: ['RMB5', rmb, 5, modes.zeroPage, 5], - 0x67: ['RMB6', rmb, 6, modes.zeroPage, 5], - 0x77: ['RMB7', rmb, 7, modes.zeroPage, 5], - - 0x87: ['SMB0', smb, 0, modes.zeroPage, 5], - 0x97: ['SMB1', smb, 1, modes.zeroPage, 5], - 0xA7: ['SMB2', smb, 2, modes.zeroPage, 5], - 0xB7: ['SMB3', smb, 3, modes.zeroPage, 5], - 0xC7: ['SMB4', smb, 4, modes.zeroPage, 5], - 0xD7: ['SMB5', smb, 5, modes.zeroPage, 5], - 0xE7: ['SMB6', smb, 6, modes.zeroPage, 5], - 0xF7: ['SMB7', smb, 7, modes.zeroPage, 5], - - // STZ - 0x64: ['STZ', stz, writeZeroPage, modes.zeroPage, 3], - 0x74: ['STZ', stz, writeZeroPageX, modes.zeroPageX, 4], - 0x9C: ['STZ', stz, writeAbsolute, modes.absolute, 4], - 0x9E: ['STZ', stz, writeAbsoluteX, modes.absoluteX, 5], - - // TRB - 0x14: ['TRB', trb, readAddrZeroPage, modes.zeroPage, 5], - 0x1C: ['TRB', trb, readAddrAbsolute, modes.absolute, 6], - - // TSB - 0x04: ['TSB', tsb, readAddrZeroPage, modes.zeroPage, 5], - 0x0C: ['TSB', tsb, readAddrAbsolute, modes.absolute, 6] - }; - - if (is65C02) { - for (var key in cops) { - ops[key] = cops[key]; - } - } - - function unknown(b) { - var unk; - - if (is65C02) { - unk = [ - 'NOP', - nop, - readImplied, - modes.implied, - 2 - ]; - } else { - unk = [ - '???', - function() { - debug('Unknown OpCode: ' + toHex(b) + - ' at ' + toHex(pc - 1, 4)); - }, - readImplied, - modes.implied, - 1 - ]; - } - ops[b] = unk; - return unk; - } - - /* Certain browsers benefit from using arrays over maps */ - var opary = []; - - for (idx = 0; idx < 0x100; idx++) { - opary[idx] = ops[idx] || unknown(idx); - } - - function dumpArgs(addr, m, symbols) { - var val; - var off; - function toHexOrSymbol(v, n) { - if (symbols && symbols[v]) { - return symbols[v]; - } else { - return '$' + toHex(v, n); - } - } - var result = ''; - switch (m) { - case modes.implied: - break; - case modes.immediate: - result = '#' + toHexOrSymbol(readByte(addr, true)); - break; - case modes.absolute: - result = '' + toHexOrSymbol(readWord(addr, true), 4); - break; - case modes.zeroPage: - result = '' + toHexOrSymbol(readByte(addr, true)); - break; - case modes.relative: - { - off = readByte(addr, true); - if (off > 127) { - off -= 256; - } - addr += off + 1; - result = '' + toHexOrSymbol(addr, 4) + ' (' + off + ')'; - } - break; - case modes.absoluteX: - result = '' + toHexOrSymbol(readWord(addr, true), 4) + ',X'; - break; - case modes.absoluteY: - result = '' + toHexOrSymbol(readWord(addr, true), 4) + ',Y'; - break; - case modes.zeroPageX: - result = '' + toHexOrSymbol(readByte(addr, true)) + ',X'; - break; - case modes.zeroPageY: - result = '' + toHexOrSymbol(readByte(addr, true)) + ',Y'; - break; - case modes.absoluteIndirect: - result = '(' + toHexOrSymbol(readWord(addr, true), 4) + ')'; - break; - case modes.zeroPageXIndirect: - result = '(' + toHexOrSymbol(readByte(addr, true)) + ',X)'; - break; - case modes.zeroPageIndirectY: - result = '(' + toHexOrSymbol(readByte(addr, true)) + '),Y'; - break; - case modes.accumulator: - result = 'A'; - break; - case modes.zeroPageIndirect: - result = '(' + toHexOrSymbol(readByte(addr, true)) + ')'; - break; - case modes.absoluteXIndirect: - result = '(' + toHexOrSymbol(readWord(addr, true), 4) + ',X)'; - break; - case modes.zeroPage_relative: - val = readByte(addr, true); - off = readByte(addr + 1, true); - if (off > 127) { - off -= 256; - } - addr += off + 2; - result = '' + toHexOrSymbol(val) + ',' + toHexOrSymbol(addr, 4) + ' (' + off + ')'; - break; - default: - break; - } - return result; - } - - return { - step: function cpu_step(cb) { - sync = true; - var op = opary[readBytePC()]; - sync = false; - op[1](op[2]); - - if (cb) { - cb(this); - } - }, - - stepDebug: function(n, cb) { - var op, idx; - - for (idx = 0; idx < n; idx++) { - sync = true; - op = opary[readBytePC()]; - sync = false; - op[1](op[2]); - - if (cb) { - cb(this); - } - } - }, - - stepCycles: function(c) { - var op, end = cycles + c; - - while (cycles < end) { - sync = true; - op = opary[readBytePC()]; - sync = false; - op[1](op[2]); - } - }, - - stepCyclesDebug: function(c, cb) - { - var op, end = cycles + c; - - while (cycles < end) { - sync = true; - op = opary[readBytePC()]; - sync = false; - op[1](op[2]); - - if (cb) { - cb(this); - } - } - }, - - addPageHandler: function(pho) { - for (var idx = pho.start(); idx <= pho.end(); idx++) { - if (pho.read) - readPages[idx] = pho; - if (pho.write) - writePages[idx] = pho; - } - if (pho.reset) - resetHandlers.push(pho); - }, - - reset: function cpu_reset() - { - // cycles = 0; - sr = 0x20; - sp = 0xff; - ar = 0; - yr = 0; - xr = 0; - pc = readWord(loc.RESET); - - for (var idx = 0; idx < resetHandlers.length; idx++) { - resetHandlers[idx].reset(); - } - }, - - /* IRQ - Interrupt Request */ - irq: function cpu_irq() - { - if ((sr & flags.I) === 0) { - pushWord(pc); - pushByte(sr & ~flags.B); - if (is65C02) { - setFlag(flags.D, false); - } - setFlag(flags.I, true); - pc = readWord(loc.BRK); - } - }, - - /* NMI Non-maskable Interrupt */ - nmi: function cpu_nmi() - { - pushWord(pc); - pushByte(sr & ~flags.B); - if (is65C02) { - setFlag(flags.D, false); - } - setFlag(flags.I, true); - pc = readWord(loc.NMI); - }, - - getPC: function () { - return pc; - }, - - setPC: function(_pc) { - pc = _pc; - }, - - dumpPC: function(_pc, symbols) { - if (_pc === undefined) { - _pc = pc; - } - var b = readByte(_pc, true), - op = ops[b], - size = sizes[op[3]], - result = toHex(_pc, 4) + '- '; - - if (symbols) { - if (symbols[_pc]) { - result += symbols[_pc] + - ' '.substring(symbols[_pc].length); - } else { - result += ' '; - } - } - - for (var idx = 0; idx < 4; idx++) { - if (idx < size) { - result += toHex(readByte(_pc + idx, true)) + ' '; - } else { - result += ' '; - } - } - - if (op === undefined) - result += '??? (' + toHex(b) + ')'; - else - result += op[0] + ' ' + dumpArgs(_pc + 1, op[3], symbols); - - return result; - }, - - dumpPage: function(start, end) { - var result = ''; - if (start === undefined) { - start = pc >> 8; - } - if (end === undefined) { - end = start; - } - for (var page = start; page <= end; page++) { - var b, idx, jdx; - for (idx = 0; idx < 16; idx++) { - result += toHex(page) + toHex(idx << 4) + ': '; - for (jdx = 0; jdx < 16; jdx++) { - b = readByte(page * 256 + idx * 16 + jdx, true); - result += toHex(b) + ' '; - } - result += ' '; - for (jdx = 0; jdx < 16; jdx++) { - b = readByte(page * 256 + idx * 16 + jdx, true) & 0x7f; - if (b >= 0x20 && b < 0x7f) { - result += String.fromCharCode(b); - } else { - result += '.'; - } - } - result += '\n'; - } - } - return result; - }, - - list: function(_pc, symbols) { - if (_pc === undefined) { - _pc = pc; - } - var results = []; - for (var jdx = 0; jdx < 20; jdx++) { - var b = readByte(_pc), op = ops[b]; - results.push(this.dumpPC(_pc, symbols)); - _pc += sizes[op[3]]; - } - return results; - }, - - sync: function() { - return sync; - }, - - cycles: function() { - return cycles; - }, - - registers: function() { - return [pc,ar,xr,yr,sr,sp]; - }, - - getState: function() { - return { - a: ar, - x: xr, - y: yr, - s: sr, - pc: pc, - sp: sp, - cycles: cycles - }; - }, - - setState: function(state) { - ar = state.a; - xr = state.x; - yr = state.y; - sr = state.s; - pc = state.pc; - sp = state.sp; - cycles = state.cycles; - }, - - dumpRegisters: function() { - return toHex(pc, 4) + - '- A=' + toHex(ar) + - ' X=' + toHex(xr) + - ' Y=' + toHex(yr) + - ' P=' + toHex(sr) + - ' S=' + toHex(sp) + - ' ' + - ((sr & flags.N) ? 'N' : '-') + - ((sr & flags.V) ? 'V' : '-') + - '-' + - ((sr & flags.B) ? 'B' : '-') + - ((sr & flags.D) ? 'D' : '-') + - ((sr & flags.I) ? 'I' : '-') + - ((sr & flags.Z) ? 'Z' : '-') + - ((sr & flags.C) ? 'C' : '-'); - }, - - read: function(page, off) { - return readPages[page].read(page, off, false); - }, - - write: function(page, off, val) { - writePages[page].write(page, off, val); - } - }; -} diff --git a/js/cpu6502.ts b/js/cpu6502.ts new file mode 100644 index 0000000..11646db --- /dev/null +++ b/js/cpu6502.ts @@ -0,0 +1,3265 @@ +/* + * Copyright 2010-2023 Will Scullin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +import { Memory, MemberOf, MemoryPages, byte, word } from './types'; +import { toHex } from './util'; + +export const FLAVOR_6502 = '6502'; +export const FLAVOR_ROCKWELL_65C02 = 'rockwell65c02'; +export const FLAVOR_WDC_65C02 = 'wdc65c02'; + +export const FLAVORS_65C02 = [FLAVOR_ROCKWELL_65C02, FLAVOR_WDC_65C02]; + +export const FLAVORS = [FLAVOR_6502, ...FLAVORS_65C02]; + +export type Flavor = MemberOf; + +export interface CpuOptions { + flavor?: Flavor; +} + +export interface CpuState { + /** Accumulator */ + a: byte; + /** X index */ + x: byte; + /** Y index */ + y: byte; + /** Status register */ + s: byte; + /** Program counter */ + pc: word; + /** Stack pointer */ + sp: byte; + /** Elapsed cycles */ + cycles: number; +} + +export type Mode = + | 'accumulator' // A (Accumulator) + | 'implied' // Implied + | 'immediate' // # Immediate + | 'absolute' // a Absolute + | 'zeroPage' // zp Zero Page + | 'relative' // r Relative + | 'absoluteX' // a,X Absolute, X + | 'absoluteY' // a,Y Absolute, Y + | 'zeroPageX' // zp,X Zero Page, X + | 'zeroPageY' // zp,Y Zero Page, Y + | 'absoluteIndirect' // (a) Indirect + | 'zeroPageXIndirect' // (zp,X) Zero Page Indexed Indirect + | 'zeroPageIndirectY' // (zp),Y Zero Page Indexed with Y + | 'zeroPageIndirect' // (zp), + | 'absoluteXIndirect' // (a, X), + | 'zeroPage_relative'; // zp, Relative + +export type Modes = Record; + +/** Addressing mode name to instruction size mapping. */ +export const sizes: Modes = { + accumulator: 1, + implied: 1, + immediate: 2, + absolute: 3, + zeroPage: 2, + relative: 2, + + absoluteX: 3, + absoluteY: 3, + zeroPageX: 2, + zeroPageY: 2, + + absoluteIndirect: 3, + zeroPageXIndirect: 2, + zeroPageIndirectY: 2, + + /* 65c02 */ + zeroPageIndirect: 2, + absoluteXIndirect: 3, + zeroPage_relative: 3, +}; + +/** Status register flag numbers. */ +export type flag = 0x80 | 0x40 | 0x20 | 0x10 | 0x08 | 0x04 | 0x02 | 0x01; + +/** + * + */ +export type DebugInfo = { + /** Program counter */ + pc: word; + /** Accumulator */ + ar: byte; + /** X index */ + xr: byte; + /** Y index */ + yr: byte; + /** Status register */ + sr: byte; + /** Stack pointer */ + sp: byte; + /** Current command */ + cmd: byte[]; +}; + +/** Flags to status byte mask. */ +export const flags: { [key: string]: flag } = { + N: 0x80, // Negative + V: 0x40, // oVerflow + X: 0x20, // Unused, always 1 + B: 0x10, // Break + D: 0x08, // Decimal + I: 0x04, // Interrupt + Z: 0x02, // Zero + C: 0x01, // Carry +}; + +/** CPU-referenced memory locations. */ +const loc = { + STACK: 0x100, + NMI: 0xfffa, + RESET: 0xfffc, + BRK: 0xfffe, +}; + +interface ResettablePageHandler extends MemoryPages { + reset(): void; +} + +function isResettablePageHandler( + pageHandler: MemoryPages | ResettablePageHandler, +): pageHandler is ResettablePageHandler { + return (pageHandler as ResettablePageHandler).reset !== undefined; +} + +const BLANK_PAGE: Memory = { + read: function () { + return 0; + }, + write: function () { + /* not writable */ + }, +}; + +interface Opts { + inc?: boolean; +} + +type ReadFn = () => byte; +type WriteFn = (val: byte) => void; +type ReadAddrFn = (opts?: Opts) => word; +type ImpliedFn = () => void; + +interface Instruction { + name: string; + mode: Mode; + fn: () => void; +} + +type Instructions = Record; + +type callback = (cpu: CPU6502) => boolean | void; + +export default class CPU6502 { + /** flavor */ + private readonly flavor: Flavor; + /** 65C02 emulation mode flag */ + private readonly is65C02: boolean; + + /** + * Registers + */ + + /** Program counter */ + private pc: word = 0; + /** Status register */ + private sr: byte = flags.X; + /** Accumulator */ + private ar: byte = 0; + /** X index */ + private xr: byte = 0; + /** Y index */ + private yr: byte = 0; + /** Stack pointer */ + private sp: byte = 0xff; + + /** Current instruction */ + private op: Instruction | undefined; + /** Last accessed memory address */ + private addr: word = 0; + + /** Filled array of memory handlers by address page */ + private memPages: Memory[] = new Array(0x100); + /** Callbacks invoked on reset signal */ + private resetHandlers: ResettablePageHandler[] = []; + /** Elapsed cycles */ + private cycles = 0; + /** Command being fetched signal */ + private sync = false; + + /** Processor is in WAI mode */ + private wait = false; + /** Processor is in STP mode */ + private stop = false; + + /** Filled array of CPU operations */ + private readonly opary: Instruction[]; + + constructor({ flavor }: CpuOptions = {}) { + this.flavor = flavor ?? FLAVOR_6502; + this.is65C02 = !!flavor && FLAVORS_65C02.includes(flavor); + + this.memPages.fill(BLANK_PAGE); + this.memPages.fill(BLANK_PAGE); + + // Create this CPU's instruction table + + let ops = { ...this.OPS_6502 }; + + switch (this.flavor) { + case FLAVOR_WDC_65C02: + ops = { + ...ops, + ...this.OPS_65C02, + ...this.OPS_WDC_65C02, + }; + break; + case FLAVOR_ROCKWELL_65C02: + ops = { + ...ops, + ...this.OPS_65C02, + ...this.OPS_ROCKWELL_65C02, + }; + break; + default: + ops = { + ...ops, + ...this.OPS_NMOS_6502, + }; + } + + // Certain browsers benefit from using arrays over maps + this.opary = new Array(0x100); + + for (let idx = 0; idx < 0x100; idx++) { + this.opary[idx] = ops[idx] || this.unknown(idx); + } + } + + /** + * Set or clears `f` in the status register. `f` must be a byte with a + * single bit set. + */ + private setFlag(f: flag, on: boolean) { + this.sr = on ? this.sr | f : this.sr & ~f; + } + + /** Updates the status register's zero flag and negative flag. */ + private testNZ(val: byte) { + this.sr = val === 0 ? this.sr | flags.Z : this.sr & ~flags.Z; + this.sr = val & 0x80 ? this.sr | flags.N : this.sr & ~flags.N; + + return val; + } + + /** Updates the status register's zero flag. */ + private testZ(val: byte) { + this.sr = val === 0 ? this.sr | flags.Z : this.sr & ~flags.Z; + + return val; + } + + /** + * Returns `a + b`, unless `sub` is true, in which case it performs + * `a - b`. The status register is updated according to the result. + */ + private add(a: byte, b: byte, sub: boolean): byte { + const a7 = a >> 7; + const b7 = b >> 7; + const ci = this.sr & flags.C; + let c; + let co; + let v; + let n; + let z; + + const updateFlags = (c: byte) => { + const bin = c & 0xff; + n = bin >> 7; + co = c >> 8; + z = !((a + b + ci) & 0xff); + v = a7 ^ b7 ^ n ^ co; + }; + + const updateBCDFlags = (c: byte) => { + if (this.is65C02) { + const bin = c & 0xff; + n = bin >> 7; + z = !bin; + if (this.op?.mode === 'immediate') { + if (this.flavor === FLAVOR_WDC_65C02) { + this.readByte(sub ? 0xb8 : 0x7f); + } else { + // rockwell65c02 + this.readByte(sub ? 0xb1 : 0x59); + } + } else { + this.readByte(this.addr); + } + } + if (!sub) { + co = c >> 8; + } + }; + + c = (a & 0x0f) + (b & 0x0f) + ci; + if ((this.sr & flags.D) !== 0) { + // BCD + if (sub) { + if (c < 0x10) { + c = (c - 0x06) & 0x0f; + } + c += (a & 0xf0) + (b & 0xf0); + updateFlags(c); + if (c < 0x100) { + c += 0xa0; + } + } else { + if (c > 0x9) { + c = 0x10 + ((c + 0x6) & 0xf); + } + c += (a & 0xf0) + (b & 0xf0); + updateFlags(c); + if (c >= 0xa0) { + c += 0x60; + } + } + updateBCDFlags(c); + } else { + c += (a & 0xf0) + (b & 0xf0); + updateFlags(c); + } + c = c & 0xff; + + this.setFlag(flags.N, !!n); + this.setFlag(flags.V, !!v); + this.setFlag(flags.Z, !!z); + this.setFlag(flags.C, !!co); + + return c; + } + + /** Increments `a` and returns the value, setting the status register. */ + private increment(a: byte) { + return this.testNZ((a + 0x01) & 0xff); + } + + private decrement(a: byte) { + return this.testNZ((a + 0xff) & 0xff); + } + + private readBytePC(): byte { + const result = this.readByte(this.pc); + + this.pc = (this.pc + 1) & 0xffff; + + return result; + } + + private readByte(addr: word): byte { + this.addr = addr; + const page = addr >> 8, + off = addr & 0xff; + + const result = this.memPages[page].read(page, off); + + this.cycles++; + + return result; + } + + private writeByte(addr: word, val: byte) { + this.addr = addr; + const page = addr >> 8, + off = addr & 0xff; + + this.memPages[page].write(page, off, val); + + this.cycles++; + } + + private readWord(addr: word): word { + return this.readByte(addr) | (this.readByte(addr + 1) << 8); + } + + private readWordPC(): word { + return this.readBytePC() | (this.readBytePC() << 8); + } + + private readZPWord(addr: byte): word { + const lsb = this.readByte(addr & 0xff); + const msb = this.readByte((addr + 1) & 0xff); + + return (msb << 8) | lsb; + } + + private pushByte(val: byte) { + this.writeByte(loc.STACK | this.sp, val); + this.sp = (this.sp + 0xff) & 0xff; + } + + private pushWord(val: word) { + this.pushByte(val >> 8); + this.pushByte(val & 0xff); + } + + private pullByte(): byte { + this.sp = (this.sp + 0x01) & 0xff; + return this.readByte(loc.STACK | this.sp); + } + + private pullWordRaw(): word { + const lsb = this.pullByte(); + const msb = this.pullByte(); + + return (msb << 8) | lsb; + } + + // Helpers that replicate false reads and writes during work cycles that + // vary between CPU versions + + private workCycle(addr: word, val: byte) { + if (this.is65C02) { + this.readByte(addr); + } else { + this.writeByte(addr, val); + } + } + + private workCycleIndexedWrite(pc: word, addr: word, addrIdx: word): void { + const oldPage = addr & 0xff00; + if (this.is65C02) { + this.readByte(pc); + } else { + const off = addrIdx & 0xff; + this.readByte(oldPage | off); + } + } + + private workCycleIndexedRead(pc: word, addr: word, addrIdx: word): void { + const oldPage = addr & 0xff00; + const newPage = addrIdx & 0xff00; + if (newPage !== oldPage) { + if (this.is65C02) { + this.readByte(pc); + } else { + const off = addrIdx & 0xff; + this.readByte(oldPage | off); + } + } + } + + /* + * Implied function + */ + + implied = () => { + this.readByte(this.pc); + }; + + /* + * Read functions + */ + + // #$00 + readImmediate = (): byte => { + return this.readBytePC(); + }; + + // $0000 + readAbsolute = (): byte => { + return this.readByte(this.readWordPC()); + }; + + // $00 + readZeroPage = (): byte => { + return this.readByte(this.readBytePC()); + }; + + // $0000,X + readAbsoluteX = (): byte => { + const addr = this.readWordPC(); + const pc = this.addr; + const addrIdx = (addr + this.xr) & 0xffff; + this.workCycleIndexedRead(pc, addr, addrIdx); + return this.readByte(addrIdx); + }; + + // $0000,Y + readAbsoluteY = (): byte => { + const addr = this.readWordPC(); + const pc = this.addr; + const addrIdx = (addr + this.yr) & 0xffff; + this.workCycleIndexedRead(pc, addr, addrIdx); + return this.readByte(addrIdx); + }; + + // $00,X + readZeroPageX = (): byte => { + const zpAddr = this.readBytePC(); + this.readByte(zpAddr); + return this.readByte((zpAddr + this.xr) & 0xff); + }; + + // $00,Y + readZeroPageY = (): byte => { + const zpAddr = this.readBytePC(); + this.readByte(zpAddr); + return this.readByte((zpAddr + this.yr) & 0xff); + }; + + // ($00,X) + readZeroPageXIndirect = (): byte => { + const zpAddr = this.readBytePC(); + this.readByte(zpAddr); + const addr = this.readZPWord((zpAddr + this.xr) & 0xff); + return this.readByte(addr); + }; + + // ($00),Y + readZeroPageIndirectY = (): byte => { + const zpAddr = this.readBytePC(); + const pc = this.addr; + const addr = this.readZPWord(zpAddr); + const addrIdx = (addr + this.yr) & 0xffff; + this.workCycleIndexedRead(pc, addr, addrIdx); + return this.readByte(addrIdx); + }; + + // ($00) (65C02) + readZeroPageIndirect = (): byte => { + return this.readByte(this.readZPWord(this.readBytePC())); + }; + + /* + * Write Functions + */ + + // $0000 + writeAbsolute = (val: byte) => { + this.writeByte(this.readWordPC(), val); + }; + + // $00 + writeZeroPage = (val: byte) => { + this.writeByte(this.readBytePC(), val); + }; + + // $0000,X + writeAbsoluteX = (val: byte) => { + const addr = this.readWordPC(); + const pc = this.addr; + const addrIdx = (addr + this.xr) & 0xffff; + this.workCycleIndexedWrite(pc, addr, addrIdx); + this.writeByte(addrIdx, val); + }; + + // $0000,Y + writeAbsoluteY = (val: byte) => { + const addr = this.readWordPC(); + const pc = this.addr; + const addrIdx = (addr + this.yr) & 0xffff; + this.workCycleIndexedWrite(pc, addr, addrIdx); + this.writeByte(addrIdx, val); + }; + + // $00,X + writeZeroPageX = (val: byte) => { + const zpAddr = this.readBytePC(); + this.readByte(zpAddr); + this.writeByte((zpAddr + this.xr) & 0xff, val); + }; + + // $00,Y + writeZeroPageY = (val: byte) => { + const zpAddr = this.readBytePC(); + this.readByte(zpAddr); + this.writeByte((zpAddr + this.yr) & 0xff, val); + }; + + // ($00,X) + writeZeroPageXIndirect = (val: byte) => { + const zpAddr = this.readBytePC(); + this.readByte(zpAddr); + const addr = this.readZPWord((zpAddr + this.xr) & 0xff); + this.writeByte(addr, val); + }; + + // ($00),Y + writeZeroPageIndirectY = (val: byte) => { + const zpAddr = this.readBytePC(); + const pc = this.addr; + const addr = this.readZPWord(zpAddr); + const addrIdx = (addr + this.yr) & 0xffff; + this.workCycleIndexedWrite(pc, addr, addrIdx); + this.writeByte(addrIdx, val); + }; + + // ($00) (65C02) + writeZeroPageIndirect = (val: byte) => { + this.writeByte(this.readZPWord(this.readBytePC()), val); + }; + + // $00 + readAddrZeroPage = () => { + return this.readBytePC(); + }; + + // $00,X + readAddrZeroPageX = () => { + const zpAddr = this.readBytePC(); + this.readByte(zpAddr); + return (zpAddr + this.xr) & 0xff; + }; + + // $0000 (65C02) + readAddrAbsolute = (): word => { + return this.readWordPC(); + }; + + // ($0000) (6502) + readAddrAbsoluteIndirectBug = (): word => { + const addr = this.readWordPC(); + const page = addr & 0xff00; + const off = addr & 0x00ff; + const lsb = this.readByte(addr); + const msb = this.readByte(page | ((off + 0x01) & 0xff)); + return (msb << 8) | lsb; + }; + + // ($0000) (65C02) + readAddrAbsoluteIndirect = (): word => { + const addr = this.readWord(this.readWordPC()); + this.readByte(this.addr); + return addr; + }; + + // $0000,X + readAddrAbsoluteX = (opts?: Opts): word => { + let addr = this.readWordPC(); + const page = addr & 0xff00; + addr = (addr + this.xr) & 0xffff; + if (this.is65C02) { + if (opts?.inc) { + this.readByte(this.addr); + } else { + const newPage = addr & 0xff00; + if (page !== newPage) { + this.readByte(this.addr); + } + } + } else { + const off = addr & 0x00ff; + this.readByte(page | off); + } + return addr; + }; + + // $0000,Y (NMOS 6502) + readAddrAbsoluteY = (): word => { + let addr = this.readWordPC(); + const page = addr & 0xff00; + addr = (addr + this.yr) & 0xffff; + const off = addr & 0x00ff; + this.readByte(page | off); + return addr; + }; + + // ($00,X) (NMOS 6502) + readAddrZeroPageXIndirect = () => { + const zpAddr = this.readBytePC(); + this.readByte(zpAddr); + return this.readZPWord((zpAddr + this.xr) & 0xff); + }; + + // ($00),Y (NMOS 6502) + readAddrZeroPageIndirectY = () => { + const zpAddr = this.readBytePC(); + const addr = this.readZPWord(zpAddr); + const addrIdx = (addr + this.yr) & 0xffff; + const oldPage = addr & 0xff00; + const off = addrIdx & 0xff; + this.readByte(oldPage | off); + return addrIdx; + }; + + // $(0000,X) (65C02) + readAddrAbsoluteXIndirect = (): word => { + const lsb = this.readBytePC(); + const pc = this.addr; + const msb = this.readBytePC(); + const addr = (((msb << 8) | lsb) + this.xr) & 0xffff; + this.readByte(pc); + return this.readWord(addr); + }; + + // 5C, DC, FC NOP (65C02) + readNop = (): void => { + this.readWordPC(); + this.readByte(this.addr); + }; + + // NOP (65C02) + readNopImplied = (): void => { + // Op is 1 cycle + }; + + /* Break */ + brk = (readFn: ReadFn) => { + readFn(); + this.pushWord(this.pc); + this.pushByte(this.sr | flags.B); + if (this.is65C02) { + this.setFlag(flags.D, false); + } + this.setFlag(flags.I, true); + this.pc = this.readWord(loc.BRK); + }; + + /* Stop (65C02) */ + stp = () => { + this.stop = true; + this.readByte(this.pc); + this.readByte(this.pc); + }; + + /* Wait (65C02) */ + wai = () => { + this.wait = true; + this.readByte(this.pc); + this.readByte(this.pc); + }; + + /* Load Accumulator */ + lda = (readFn: ReadFn) => { + this.ar = this.testNZ(readFn()); + }; + + /* Load X Register */ + ldx = (readFn: ReadFn) => { + this.xr = this.testNZ(readFn()); + }; + + /* Load Y Register */ + ldy = (readFn: ReadFn) => { + this.yr = this.testNZ(readFn()); + }; + + /* Store Accumulator */ + sta = (writeFn: WriteFn) => { + writeFn(this.ar); + }; + + /* Store X Register */ + stx = (writeFn: WriteFn) => { + writeFn(this.xr); + }; + + /* Store Y Register */ + sty = (writeFn: WriteFn) => { + writeFn(this.yr); + }; + + /* Store Zero */ + stz = (writeFn: WriteFn) => { + writeFn(0); + }; + + /* Add with Carry */ + adc = (readFn: ReadFn) => { + this.ar = this.add(this.ar, readFn(), /* sub= */ false); + }; + + /* Subtract with Carry */ + sbc = (readFn: ReadFn) => { + this.ar = this.add(this.ar, readFn() ^ 0xff, /* sub= */ true); + }; + + /* Increment Memory */ + incA = () => { + this.readByte(this.pc); + this.ar = this.increment(this.ar); + }; + + inc = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn({ inc: true }); + const oldVal = this.readByte(addr); + this.workCycle(addr, oldVal); + const val = this.increment(oldVal); + this.writeByte(addr, val); + }; + + /* Increment X */ + inx = () => { + this.readByte(this.pc); + this.xr = this.increment(this.xr); + }; + + /* Increment Y */ + iny = () => { + this.readByte(this.pc); + this.yr = this.increment(this.yr); + }; + + /* Decrement Memory */ + decA = () => { + this.readByte(this.pc); + this.ar = this.decrement(this.ar); + }; + + dec = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn({ inc: true }); + const oldVal = this.readByte(addr); + this.workCycle(addr, oldVal); + const val = this.decrement(oldVal); + this.writeByte(addr, val); + }; + + /* Decrement X */ + dex = () => { + this.readByte(this.pc); + this.xr = this.decrement(this.xr); + }; + + /* Decrement Y */ + dey = () => { + this.readByte(this.pc); + this.yr = this.decrement(this.yr); + }; + + shiftLeft = (val: byte) => { + this.setFlag(flags.C, !!(val & 0x80)); + return this.testNZ((val << 1) & 0xff); + }; + + /* Arithmetic Shift Left */ + aslA = () => { + this.readByte(this.pc); + this.ar = this.shiftLeft(this.ar); + }; + + asl = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + const oldVal = this.readByte(addr); + this.workCycle(addr, oldVal); + const val = this.shiftLeft(oldVal); + this.writeByte(addr, val); + }; + + shiftRight = (val: byte) => { + this.setFlag(flags.C, !!(val & 0x01)); + return this.testNZ(val >> 1); + }; + + /* Logical Shift Right */ + lsrA = () => { + this.readByte(this.pc); + this.ar = this.shiftRight(this.ar); + }; + + lsr = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + const oldVal = this.readByte(addr); + this.workCycle(addr, oldVal); + const val = this.shiftRight(oldVal); + this.writeByte(addr, val); + }; + + rotateLeft = (val: byte) => { + const c = this.sr & flags.C; + this.setFlag(flags.C, !!(val & 0x80)); + return this.testNZ(((val << 1) | (c ? 0x01 : 0x00)) & 0xff); + }; + + /* Rotate Left */ + rolA = () => { + this.readByte(this.pc); + this.ar = this.rotateLeft(this.ar); + }; + + rol = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + const oldVal = this.readByte(addr); + this.workCycle(addr, oldVal); + const val = this.rotateLeft(oldVal); + this.writeByte(addr, val); + }; + + private rotateRight(a: byte) { + const c = this.sr & flags.C; + this.setFlag(flags.C, !!(a & 0x01)); + return this.testNZ((a >> 1) | (c ? 0x80 : 0x00)); + } + + /* Rotate Right */ + rorA = () => { + this.readByte(this.pc); + this.ar = this.rotateRight(this.ar); + }; + + ror = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + const oldVal = this.readByte(addr); + this.workCycle(addr, oldVal); + const val = this.rotateRight(oldVal); + this.writeByte(addr, val); + }; + + /* Logical And Accumulator */ + and = (readFn: ReadFn) => { + this.ar = this.testNZ(this.ar & readFn()); + }; + + /* Logical Or Accumulator */ + ora = (readFn: ReadFn) => { + this.ar = this.testNZ(this.ar | readFn()); + }; + + /* Logical Exclusive Or Accumulator */ + eor = (readFn: ReadFn) => { + this.ar = this.testNZ(this.ar ^ readFn()); + }; + + /* Reset Bit */ + + rmb = (b: byte) => { + const bit = (0x1 << b) ^ 0xff; + const addr = this.readBytePC(); + let val = this.readByte(addr); + this.readByte(addr); + val &= bit; + this.writeByte(addr, val); + }; + + /* Set Bit */ + + smb = (b: byte) => { + const bit = 0x1 << b; + const addr = this.readBytePC(); + let val = this.readByte(addr); + this.readByte(addr); + val |= bit; + this.writeByte(addr, val); + }; + + /* Test and Reset Bits */ + trb = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + const val = this.readByte(addr); + this.testZ(val & this.ar); + this.readByte(addr); + this.writeByte(addr, val & ~this.ar); + }; + + /* Test and Set Bits */ + tsb = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + const val = this.readByte(addr); + this.testZ(val & this.ar); + this.readByte(addr); + this.writeByte(addr, val | this.ar); + }; + + /* Bit */ + bit = (readFn: ReadFn) => { + const val = readFn(); + this.setFlag(flags.Z, (val & this.ar) === 0); + this.setFlag(flags.N, !!(val & 0x80)); + this.setFlag(flags.V, !!(val & 0x40)); + }; + + /* Bit Immediate*/ + bitI = (readFn: ReadFn) => { + const val = readFn(); + this.setFlag(flags.Z, (val & this.ar) === 0); + }; + + private compare(a: byte, b: byte) { + b = b ^ 0xff; + const c = a + b + 1; + this.setFlag(flags.C, c > 0xff); + this.testNZ(c & 0xff); + } + + cmp = (readFn: ReadFn) => { + this.compare(this.ar, readFn()); + }; + + cpx = (readFn: ReadFn) => { + this.compare(this.xr, readFn()); + }; + + cpy = (readFn: ReadFn) => { + this.compare(this.yr, readFn()); + }; + + /* Branches */ + brs = (f: flag) => { + const off = this.readBytePC(); // changes pc + if ((f & this.sr) !== 0) { + this.readByte(this.pc); + const oldPage = this.pc & 0xff00; + this.pc += off > 127 ? off - 256 : off; + this.pc &= 0xffff; + const newPage = this.pc & 0xff00; + const newOff = this.pc & 0xff; + if (newPage !== oldPage) this.readByte(oldPage | newOff); + } + }; + + brc = (f: flag | 0) => { + const off = this.readBytePC(); // changes pc + if ((f & this.sr) === 0) { + this.readByte(this.pc); + const oldPage = this.pc & 0xff00; + this.pc += off > 127 ? off - 256 : off; + this.pc &= 0xffff; + const newPage = this.pc & 0xff00; + const newOff = this.pc & 0xff; + if (newPage !== oldPage) this.readByte(oldPage | newOff); + } + }; + + /* WDC 65C02 branches */ + + bbr = (b: byte) => { + const zpAddr = this.readBytePC(); + const val = this.readByte(zpAddr); + this.writeByte(zpAddr, val); + const off = this.readBytePC(); // changes pc + const oldPc = this.pc; + const oldPage = oldPc & 0xff00; + + let newPC = this.pc + (off > 127 ? off - 256 : off); + newPC &= 0xffff; + const newOff = newPC & 0xff; + this.readByte(oldPage | newOff); + if (((1 << b) & val) === 0) { + this.pc = newPC; + } + }; + + bbs = (b: byte) => { + const zpAddr = this.readBytePC(); + const val = this.readByte(zpAddr); + this.writeByte(zpAddr, val); + const off = this.readBytePC(); // changes pc + const oldPc = this.pc; + const oldPage = oldPc & 0xff00; + + let newPC = this.pc + (off > 127 ? off - 256 : off); + newPC &= 0xffff; + const newOff = newPC & 0xff; + this.readByte(oldPage | newOff); + if (((1 << b) & val) !== 0) { + this.pc = newPC; + } + }; + + /* Transfers and stack */ + tax = () => { + this.readByte(this.pc); + this.testNZ((this.xr = this.ar)); + }; + + txa = () => { + this.readByte(this.pc); + this.testNZ((this.ar = this.xr)); + }; + + tay = () => { + this.readByte(this.pc); + this.testNZ((this.yr = this.ar)); + }; + + tya = () => { + this.readByte(this.pc); + this.testNZ((this.ar = this.yr)); + }; + + tsx = () => { + this.readByte(this.pc); + this.testNZ((this.xr = this.sp)); + }; + + txs = () => { + this.readByte(this.pc); + this.sp = this.xr; + }; + + pha = () => { + this.readByte(this.pc); + this.pushByte(this.ar); + }; + + pla = () => { + this.readByte(this.pc); + this.readByte(0x0100 | this.sp); + this.testNZ((this.ar = this.pullByte())); + }; + + phx = () => { + this.readByte(this.pc); + this.pushByte(this.xr); + }; + + plx = () => { + this.readByte(this.pc); + this.readByte(0x0100 | this.sp); + this.testNZ((this.xr = this.pullByte())); + }; + + phy = () => { + this.readByte(this.pc); + this.pushByte(this.yr); + }; + + ply = () => { + this.readByte(this.pc); + this.readByte(0x0100 | this.sp); + this.testNZ((this.yr = this.pullByte())); + }; + + php = () => { + this.readByte(this.pc); + this.pushByte(this.sr | flags.B); + }; + + plp = () => { + this.readByte(this.pc); + this.readByte(0x0100 | this.sp); + this.sr = (this.pullByte() & ~flags.B) | flags.X; + }; + + /* Jump */ + jmp = (readAddrFn: ReadAddrFn) => { + this.pc = readAddrFn(); + }; + + /* Jump Subroutine */ + jsr = () => { + const lsb = this.readBytePC(); + this.readByte(0x0100 | this.sp); + this.pushWord(this.pc); + const msb = this.readBytePC(); + this.pc = ((msb << 8) | lsb) & 0xffff; + }; + + /* Return from Subroutine */ + rts = () => { + this.readByte(this.pc); + this.readByte(0x0100 | this.sp); + const addr = this.pullWordRaw(); + this.readByte(addr); + this.pc = (addr + 1) & 0xffff; + }; + + /* Return from Interrupt */ + rti = () => { + this.readByte(this.pc); + this.readByte(0x0100 | this.sp); + this.sr = (this.pullByte() & ~flags.B) | flags.X; + this.pc = this.pullWordRaw(); + }; + + /* Set and Clear */ + set = (flag: flag) => { + this.readByte(this.pc); + this.sr |= flag; + }; + + clr = (flag: flag) => { + this.readByte(this.pc); + this.sr &= ~flag; + }; + + /* No-Op */ + nop = (readFn: ImpliedFn | ReadFn) => { + readFn(); + }; + + /* NMOS 6502 Illegal opcodes */ + + /* ASO = ASL + ORA */ + aso = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + const oldVal = this.readByte(addr); + this.workCycle(addr, oldVal); + const val = this.shiftLeft(oldVal); + this.writeByte(addr, val); + this.ar |= val; + this.testNZ(this.ar); + }; + + /* RLA = ROL + AND */ + rla = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + const oldVal = this.readByte(addr); + this.workCycle(addr, oldVal); + const val = this.rotateLeft(oldVal); + this.writeByte(addr, val); + this.ar &= val; + this.testNZ(this.ar); + }; + + /* LSE = LSR + EOR */ + lse = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + const oldVal = this.readByte(addr); + this.workCycle(addr, oldVal); + const val = this.shiftRight(oldVal); + this.writeByte(addr, val); + this.ar ^= val; + this.testNZ(this.ar); + }; + + /* RRA = ROR + ADC */ + rra = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + const oldVal = this.readByte(addr); + this.workCycle(addr, oldVal); + const val = this.rotateRight(oldVal); + this.writeByte(addr, val); + this.ar = this.add(this.ar, val, false); + }; + + /* AXS = Store A & X */ + axs = (writeFn: WriteFn) => { + writeFn(this.ar & this.xr); + }; + + /* LAX = Load A & X */ + lax = (readFn: ReadFn) => { + const val = readFn(); + this.ar = val; + this.xr = val; + this.testNZ(val); + }; + + /* DCM = DEC + CMP */ + dcm = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn({ inc: true }); + const oldVal = this.readByte(addr); + this.workCycle(addr, oldVal); + const val = this.decrement(oldVal); + this.writeByte(addr, val); + this.compare(this.ar, val); + }; + + /* INS = INC + SBC */ + ins = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn({ inc: true }); + const oldVal = this.readByte(addr); + this.workCycle(addr, oldVal); + const val = this.increment(oldVal); + this.writeByte(addr, val); + this.ar = this.add(this.ar, val ^ 0xff, true); + }; + + /* ALR = AND + LSR */ + alr = (readFn: ReadFn) => { + const val = readFn() & this.ar; + this.ar = this.shiftRight(val); + }; + + /* ARR = AND + ROR */ + arr = (readFn: ReadFn) => { + const val = readFn() & this.ar; + const ah = val >> 4; + const al = val & 0xf; + const b7 = val >> 7; + const b6 = (val >> 6) & 0x1; + this.ar = this.rotateRight(val); + let c = !!b7; + const v = !!(b7 ^ b6); + if (this.sr & flags.D) { + if (al + (al & 0x1) > 0x5) { + this.ar = (this.ar & 0xf0) | ((this.ar + 0x6) & 0xf); + } + if (ah + (ah & 0x1) > 5) { + c = true; + this.ar = (this.ar + 0x60) & 0xff; + } + } + this.setFlag(flags.V, v); + this.setFlag(flags.C, c); + }; + + /* XAA = TAX + AND */ + xaa = (readFn: ReadFn) => { + const val = readFn(); + this.ar = (this.xr & 0xee) | (this.xr & this.ar & 0x11); + this.ar = this.testNZ(this.ar & val); + }; + + /** OAL = ORA + AND */ + oal = (readFn: ReadFn) => { + this.ar |= 0xee; + const val = this.testNZ(this.ar & readFn()); + this.ar = val; + this.xr = val; + }; + + /* SAX = A & X + SBC */ + sax = (readFn: ReadFn) => { + const a = this.xr & this.ar; + let b = readFn(); + b = b ^ 0xff; + const c = a + b + 1; + this.setFlag(flags.C, c > 0xff); + this.xr = this.testNZ(c & 0xff); + }; + + /* TAS = X & Y -> S */ + tas = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + let val = this.xr & this.ar; + this.sp = val; + const msb = addr >> 8; + val = val & ((msb + 1) & 0xff); + this.writeByte(addr, val); + }; + + /* SAY = Y & AH + 1 */ + say = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + const msb = addr >> 8; + const val = this.yr & ((msb + 1) & 0xff); + this.writeByte(addr, val); + }; + + /* XAS = X & AH + 1 */ + xas = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + const msb = addr >> 8; + const val = this.xr & ((msb + 1) & 0xff); + this.writeByte(addr, val); + }; + + /* AXA = X & AH + 1 */ + axa = (readAddrFn: ReadAddrFn) => { + const addr = readAddrFn(); + let val = this.xr & this.ar; + const msb = addr >> 8; + val = val & ((msb + 1) & 0xff); + this.writeByte(addr, val); + }; + + /* ANC = AND with carry */ + anc = (readFn: ReadFn) => { + this.ar = this.testNZ(this.ar & readFn()); + const c = !!(this.ar & 0x80); + this.setFlag(flags.C, c); + }; + + /* LAS = RD & SP -> A, X, S */ + las = (readFn: ReadFn) => { + const val = this.sp & readFn(); + this.sp = val; + this.xr = val; + this.ar = this.testNZ(val); + }; + + /* SKB/SKW */ + skp = (readFn: ReadFn) => { + readFn(); + }; + + /* HLT */ + hlt = (_impliedFn: ImpliedFn) => { + this.readByte(this.pc); + this.readByte(this.pc); + // PC shouldn't have advanced + this.pc = --this.pc & 0xffff; + this.stop = true; + }; + + private unknown(b: byte): Instruction { + let unk: Instruction; + if (this.is65C02) { + // Default behavior is a 1 cycle NOP + unk = { + name: 'NOP', + fn: () => this.nop(this.readNopImplied), + mode: 'implied', + }; + } else { + // All 6502 Instructions should be defined + throw new Error(`Missing ${toHex(b)}`); + } + return unk; + } + + public step(cb?: callback) { + this.sync = true; + this.op = this.opary[this.readBytePC()]; + this.sync = false; + this.op.fn(); + + cb?.(this); + } + + public stepN(n: number, cb?: callback) { + for (let idx = 0; idx < n; idx++) { + this.sync = true; + this.op = this.opary[this.readBytePC()]; + this.sync = false; + this.op.fn(); + + if (cb?.(this)) { + return; + } + } + } + + public stepCycles(c: number) { + const end = this.cycles + c; + + while (this.cycles < end) { + this.sync = true; + this.op = this.opary[this.readBytePC()]; + this.sync = false; + this.op.fn(); + } + } + + public stepCyclesDebug(c: number, cb?: callback): void { + const end = this.cycles + c; + + while (this.cycles < end) { + this.sync = true; + this.op = this.opary[this.readBytePC()]; + this.sync = false; + this.op.fn(); + + if (cb?.(this)) { + return; + } + } + } + + public addPageHandler(pho: MemoryPages | ResettablePageHandler) { + for (let idx = pho.start(); idx <= pho.end(); idx++) { + this.memPages[idx] = pho; + } + if (isResettablePageHandler(pho)) this.resetHandlers.push(pho); + } + + public reset() { + // cycles = 0; + this.sr = flags.X; + this.sp = 0xff; + this.ar = 0; + this.yr = 0; + this.xr = 0; + this.pc = this.readWord(loc.RESET); + this.wait = false; + this.stop = false; + + for (let idx = 0; idx < this.resetHandlers.length; idx++) { + this.resetHandlers[idx].reset(); + } + } + + /* IRQ - Interrupt Request */ + public irq() { + if ((this.sr & flags.I) === 0) { + this.pushWord(this.pc); + this.pushByte(this.sr & ~flags.B); + if (this.is65C02) { + this.setFlag(flags.D, false); + } + this.setFlag(flags.I, true); + this.pc = this.readWord(loc.BRK); + this.wait = false; + } + } + + /* NMI Non-maskable Interrupt */ + public nmi() { + this.pushWord(this.pc); + this.pushByte(this.sr & ~flags.B); + if (this.is65C02) { + this.setFlag(flags.D, false); + } + this.setFlag(flags.I, true); + this.pc = this.readWord(loc.NMI); + this.wait = false; + } + + public getPC() { + return this.pc; + } + + public setPC(pc: word) { + this.pc = pc; + } + + public getDebugInfo(): DebugInfo { + const b = this.read(this.pc); + const op = this.opary[b]; + const size = sizes[op.mode]; + const cmd = new Array(size); + cmd[0] = b; + for (let idx = 1; idx < size; idx++) { + cmd[idx] = this.read(this.pc + idx); + } + + return { + pc: this.pc, + ar: this.ar, + xr: this.xr, + yr: this.yr, + sr: this.sr, + sp: this.sp, + cmd, + }; + } + public getSync() { + return this.sync; + } + + public getStop() { + return this.stop; + } + + public getWait() { + return this.wait; + } + + public getCycles() { + return this.cycles; + } + + public getOpInfo(opcode: byte) { + return this.opary[opcode]; + } + + public getState(): CpuState { + return { + a: this.ar, + x: this.xr, + y: this.yr, + s: this.sr, + pc: this.pc, + sp: this.sp, + cycles: this.cycles, + }; + } + + public setState(state: CpuState) { + this.ar = state.a; + this.xr = state.x; + this.yr = state.y; + this.sr = state.s; + this.pc = state.pc; + this.sp = state.sp; + this.cycles = state.cycles; + } + + public read(addr: word): byte; + public read(page: byte, off: byte): byte; + + public read(a: number, b?: number): byte { + let page, off; + if (b !== undefined) { + page = a & 0xff; + off = b & 0xff; + } else { + page = (a >> 8) & 0xff; + off = a & 0xff; + } + return this.memPages[page].read(page, off); + } + + public write(addr: word, val: byte): void; + public write(page: byte, off: byte, val: byte): void; + + public write(a: number, b: number, c?: byte): void { + let page, off, val; + + if (c !== undefined) { + page = a & 0xff; + off = b & 0xff; + val = c & 0xff; + } else { + page = (a >> 8) & 0xff; + off = a & 0xff; + val = b & 0xff; + } + this.memPages[page].write(page, off, val); + } + + OPS_6502: Instructions = { + // LDA + 0xa9: { + name: 'LDA', + fn: () => this.lda(this.readImmediate), + mode: 'immediate', + }, + 0xa5: { + name: 'LDA', + fn: () => this.lda(this.readZeroPage), + mode: 'zeroPage', + }, + 0xb5: { + name: 'LDA', + fn: () => this.lda(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0xad: { + name: 'LDA', + fn: () => this.lda(this.readAbsolute), + mode: 'absolute', + }, + 0xbd: { + name: 'LDA', + fn: () => this.lda(this.readAbsoluteX), + mode: 'absoluteX', + }, + 0xb9: { + name: 'LDA', + fn: () => this.lda(this.readAbsoluteY), + mode: 'absoluteY', + }, + 0xa1: { + name: 'LDA', + fn: () => this.lda(this.readZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0xb1: { + name: 'LDA', + fn: () => this.lda(this.readZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // LDX + 0xa2: { + name: 'LDX', + fn: () => this.ldx(this.readImmediate), + mode: 'immediate', + }, + 0xa6: { + name: 'LDX', + fn: () => this.ldx(this.readZeroPage), + mode: 'zeroPage', + }, + 0xb6: { + name: 'LDX', + fn: () => this.ldx(this.readZeroPageY), + mode: 'zeroPageY', + }, + 0xae: { + name: 'LDX', + fn: () => this.ldx(this.readAbsolute), + mode: 'absolute', + }, + 0xbe: { + name: 'LDX', + fn: () => this.ldx(this.readAbsoluteY), + mode: 'absoluteY', + }, + + // LDY + 0xa0: { + name: 'LDY', + fn: () => this.ldy(this.readImmediate), + mode: 'immediate', + }, + 0xa4: { + name: 'LDY', + fn: () => this.ldy(this.readZeroPage), + mode: 'zeroPage', + }, + 0xb4: { + name: 'LDY', + fn: () => this.ldy(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0xac: { + name: 'LDY', + fn: () => this.ldy(this.readAbsolute), + mode: 'absolute', + }, + 0xbc: { + name: 'LDY', + fn: () => this.ldy(this.readAbsoluteX), + mode: 'absoluteX', + }, + + // STA + 0x85: { + name: 'STA', + fn: () => this.sta(this.writeZeroPage), + mode: 'zeroPage', + }, + 0x95: { + name: 'STA', + fn: () => this.sta(this.writeZeroPageX), + mode: 'zeroPageX', + }, + 0x8d: { + name: 'STA', + fn: () => this.sta(this.writeAbsolute), + mode: 'absolute', + }, + 0x9d: { + name: 'STA', + fn: () => this.sta(this.writeAbsoluteX), + mode: 'absoluteX', + }, + 0x99: { + name: 'STA', + fn: () => this.sta(this.writeAbsoluteY), + mode: 'absoluteY', + }, + 0x81: { + name: 'STA', + fn: () => this.sta(this.writeZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0x91: { + name: 'STA', + fn: () => this.sta(this.writeZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // STX + 0x86: { + name: 'STX', + fn: () => this.stx(this.writeZeroPage), + mode: 'zeroPage', + }, + 0x96: { + name: 'STX', + fn: () => this.stx(this.writeZeroPageY), + mode: 'zeroPageY', + }, + 0x8e: { + name: 'STX', + fn: () => this.stx(this.writeAbsolute), + mode: 'absolute', + }, + + // STY + 0x84: { + name: 'STY', + fn: () => this.sty(this.writeZeroPage), + mode: 'zeroPage', + }, + 0x94: { + name: 'STY', + fn: () => this.sty(this.writeZeroPageX), + mode: 'zeroPageX', + }, + 0x8c: { + name: 'STY', + fn: () => this.sty(this.writeAbsolute), + mode: 'absolute', + }, + + // ADC + 0x69: { + name: 'ADC', + fn: () => this.adc(this.readImmediate), + mode: 'immediate', + }, + 0x65: { + name: 'ADC', + fn: () => this.adc(this.readZeroPage), + mode: 'zeroPage', + }, + 0x75: { + name: 'ADC', + fn: () => this.adc(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0x6d: { + name: 'ADC', + fn: () => this.adc(this.readAbsolute), + mode: 'absolute', + }, + 0x7d: { + name: 'ADC', + fn: () => this.adc(this.readAbsoluteX), + mode: 'absoluteX', + }, + 0x79: { + name: 'ADC', + fn: () => this.adc(this.readAbsoluteY), + mode: 'absoluteY', + }, + 0x61: { + name: 'ADC', + fn: () => this.adc(this.readZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0x71: { + name: 'ADC', + fn: () => this.adc(this.readZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // SBC + 0xe9: { + name: 'SBC', + fn: () => this.sbc(this.readImmediate), + mode: 'immediate', + }, + 0xe5: { + name: 'SBC', + fn: () => this.sbc(this.readZeroPage), + mode: 'zeroPage', + }, + 0xf5: { + name: 'SBC', + fn: () => this.sbc(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0xed: { + name: 'SBC', + fn: () => this.sbc(this.readAbsolute), + mode: 'absolute', + }, + 0xfd: { + name: 'SBC', + fn: () => this.sbc(this.readAbsoluteX), + mode: 'absoluteX', + }, + 0xf9: { + name: 'SBC', + fn: () => this.sbc(this.readAbsoluteY), + mode: 'absoluteY', + }, + 0xe1: { + name: 'SBC', + fn: () => this.sbc(this.readZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0xf1: { + name: 'SBC', + fn: () => this.sbc(this.readZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // INC + 0xe6: { + name: 'INC', + fn: () => this.inc(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0xf6: { + name: 'INC', + fn: () => this.inc(this.readAddrZeroPageX), + mode: 'zeroPageX', + }, + 0xee: { + name: 'INC', + fn: () => this.inc(this.readAddrAbsolute), + mode: 'absolute', + }, + 0xfe: { + name: 'INC', + fn: () => this.inc(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + + // INX + 0xe8: { name: 'INX', fn: () => this.inx(), mode: 'implied' }, + + // INY + 0xc8: { name: 'INY', fn: () => this.iny(), mode: 'implied' }, + + // DEC + 0xc6: { + name: 'DEC', + fn: () => this.dec(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0xd6: { + name: 'DEC', + fn: () => this.dec(this.readAddrZeroPageX), + mode: 'zeroPageX', + }, + 0xce: { + name: 'DEC', + fn: () => this.dec(this.readAddrAbsolute), + mode: 'absolute', + }, + 0xde: { + name: 'DEC', + fn: () => this.dec(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + + // DEX + 0xca: { name: 'DEX', fn: () => this.dex(), mode: 'implied' }, + + // DEY + 0x88: { name: 'DEY', fn: () => this.dey(), mode: 'implied' }, + + // ASL + 0x0a: { + name: 'ASL', + fn: () => this.aslA(), + mode: 'accumulator', + }, + 0x06: { + name: 'ASL', + fn: () => this.asl(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0x16: { + name: 'ASL', + fn: () => this.asl(this.readAddrZeroPageX), + mode: 'zeroPageX', + }, + 0x0e: { + name: 'ASL', + fn: () => this.asl(this.readAddrAbsolute), + mode: 'absolute', + }, + 0x1e: { + name: 'ASL', + fn: () => this.asl(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + + // LSR + 0x4a: { + name: 'LSR', + fn: () => this.lsrA(), + mode: 'accumulator', + }, + 0x46: { + name: 'LSR', + fn: () => this.lsr(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0x56: { + name: 'LSR', + fn: () => this.lsr(this.readAddrZeroPageX), + mode: 'zeroPageX', + }, + 0x4e: { + name: 'LSR', + fn: () => this.lsr(this.readAddrAbsolute), + mode: 'absolute', + }, + 0x5e: { + name: 'LSR', + fn: () => this.lsr(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + + // ROL + 0x2a: { + name: 'ROL', + fn: () => this.rolA(), + mode: 'accumulator', + }, + 0x26: { + name: 'ROL', + fn: () => this.rol(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0x36: { + name: 'ROL', + fn: () => this.rol(this.readAddrZeroPageX), + mode: 'zeroPageX', + }, + 0x2e: { + name: 'ROL', + fn: () => this.rol(this.readAddrAbsolute), + mode: 'absolute', + }, + 0x3e: { + name: 'ROL', + fn: () => this.rol(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + + // ROR + 0x6a: { + name: 'ROR', + fn: () => this.rorA(), + mode: 'accumulator', + }, + 0x66: { + name: 'ROR', + fn: () => this.ror(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0x76: { + name: 'ROR', + fn: () => this.ror(this.readAddrZeroPageX), + mode: 'zeroPageX', + }, + 0x6e: { + name: 'ROR', + fn: () => this.ror(this.readAddrAbsolute), + mode: 'absolute', + }, + 0x7e: { + name: 'ROR', + fn: () => this.ror(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + + // AND + 0x29: { + name: 'AND', + fn: () => this.and(this.readImmediate), + mode: 'immediate', + }, + 0x25: { + name: 'AND', + fn: () => this.and(this.readZeroPage), + mode: 'zeroPage', + }, + 0x35: { + name: 'AND', + fn: () => this.and(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0x2d: { + name: 'AND', + fn: () => this.and(this.readAbsolute), + mode: 'absolute', + }, + 0x3d: { + name: 'AND', + fn: () => this.and(this.readAbsoluteX), + mode: 'absoluteX', + }, + 0x39: { + name: 'AND', + fn: () => this.and(this.readAbsoluteY), + mode: 'absoluteY', + }, + 0x21: { + name: 'AND', + fn: () => this.and(this.readZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0x31: { + name: 'AND', + fn: () => this.and(this.readZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // ORA + 0x09: { + name: 'ORA', + fn: () => this.ora(this.readImmediate), + mode: 'immediate', + }, + 0x05: { + name: 'ORA', + fn: () => this.ora(this.readZeroPage), + mode: 'zeroPage', + }, + 0x15: { + name: 'ORA', + fn: () => this.ora(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0x0d: { + name: 'ORA', + fn: () => this.ora(this.readAbsolute), + mode: 'absolute', + }, + 0x1d: { + name: 'ORA', + fn: () => this.ora(this.readAbsoluteX), + mode: 'absoluteX', + }, + 0x19: { + name: 'ORA', + fn: () => this.ora(this.readAbsoluteY), + mode: 'absoluteY', + }, + 0x01: { + name: 'ORA', + fn: () => this.ora(this.readZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0x11: { + name: 'ORA', + fn: () => this.ora(this.readZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // EOR + 0x49: { + name: 'EOR', + fn: () => this.eor(this.readImmediate), + mode: 'immediate', + }, + 0x45: { + name: 'EOR', + fn: () => this.eor(this.readZeroPage), + mode: 'zeroPage', + }, + 0x55: { + name: 'EOR', + fn: () => this.eor(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0x4d: { + name: 'EOR', + fn: () => this.eor(this.readAbsolute), + mode: 'absolute', + }, + 0x5d: { + name: 'EOR', + fn: () => this.eor(this.readAbsoluteX), + mode: 'absoluteX', + }, + 0x59: { + name: 'EOR', + fn: () => this.eor(this.readAbsoluteY), + mode: 'absoluteY', + }, + 0x41: { + name: 'EOR', + fn: () => this.eor(this.readZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0x51: { + name: 'EOR', + fn: () => this.eor(this.readZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // CMP + 0xc9: { + name: 'CMP', + fn: () => this.cmp(this.readImmediate), + mode: 'immediate', + }, + 0xc5: { + name: 'CMP', + fn: () => this.cmp(this.readZeroPage), + mode: 'zeroPage', + }, + 0xd5: { + name: 'CMP', + fn: () => this.cmp(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0xcd: { + name: 'CMP', + fn: () => this.cmp(this.readAbsolute), + mode: 'absolute', + }, + 0xdd: { + name: 'CMP', + fn: () => this.cmp(this.readAbsoluteX), + mode: 'absoluteX', + }, + 0xd9: { + name: 'CMP', + fn: () => this.cmp(this.readAbsoluteY), + mode: 'absoluteY', + }, + 0xc1: { + name: 'CMP', + fn: () => this.cmp(this.readZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0xd1: { + name: 'CMP', + fn: () => this.cmp(this.readZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // CPX + 0xe0: { + name: 'CPX', + fn: () => this.cpx(this.readImmediate), + mode: 'immediate', + }, + 0xe4: { + name: 'CPX', + fn: () => this.cpx(this.readZeroPage), + mode: 'zeroPage', + }, + 0xec: { + name: 'CPX', + fn: () => this.cpx(this.readAbsolute), + mode: 'absolute', + }, + + // CPY + 0xc0: { + name: 'CPY', + fn: () => this.cpy(this.readImmediate), + mode: 'immediate', + }, + 0xc4: { + name: 'CPY', + fn: () => this.cpy(this.readZeroPage), + mode: 'zeroPage', + }, + 0xcc: { + name: 'CPY', + fn: () => this.cpy(this.readAbsolute), + mode: 'absolute', + }, + + // BIT + 0x24: { + name: 'BIT', + fn: () => this.bit(this.readZeroPage), + mode: 'zeroPage', + }, + 0x2c: { + name: 'BIT', + fn: () => this.bit(this.readAbsolute), + mode: 'absolute', + }, + + // BCC + 0x90: { + name: 'BCC', + fn: () => this.brc(flags.C), + mode: 'relative', + }, + + // BCS + 0xb0: { + name: 'BCS', + fn: () => this.brs(flags.C), + mode: 'relative', + }, + + // BEQ + 0xf0: { + name: 'BEQ', + fn: () => this.brs(flags.Z), + mode: 'relative', + }, + + // BMI + 0x30: { + name: 'BMI', + fn: () => this.brs(flags.N), + mode: 'relative', + }, + + // BNE + 0xd0: { + name: 'BNE', + fn: () => this.brc(flags.Z), + mode: 'relative', + }, + + // BPL + 0x10: { + name: 'BPL', + fn: () => this.brc(flags.N), + mode: 'relative', + }, + + // BVC + 0x50: { + name: 'BVC', + fn: () => this.brc(flags.V), + mode: 'relative', + }, + + // BVS + 0x70: { + name: 'BVS', + fn: () => this.brs(flags.V), + mode: 'relative', + }, + + // TAX + 0xaa: { name: 'TAX', fn: () => this.tax(), mode: 'implied' }, + + // TXA + 0x8a: { name: 'TXA', fn: () => this.txa(), mode: 'implied' }, + + // TAY + 0xa8: { name: 'TAY', fn: () => this.tay(), mode: 'implied' }, + + // TYA + 0x98: { name: 'TYA', fn: () => this.tya(), mode: 'implied' }, + + // TSX + 0xba: { name: 'TSX', fn: () => this.tsx(), mode: 'implied' }, + + // TXS + 0x9a: { name: 'TXS', fn: () => this.txs(), mode: 'implied' }, + + // PHA + 0x48: { name: 'PHA', fn: () => this.pha(), mode: 'implied' }, + + // PLA + 0x68: { name: 'PLA', fn: () => this.pla(), mode: 'implied' }, + + // PHP + 0x08: { name: 'PHP', fn: () => this.php(), mode: 'implied' }, + + // PLP + 0x28: { name: 'PLP', fn: () => this.plp(), mode: 'implied' }, + + // JMP + 0x4c: { + name: 'JMP', + fn: () => this.jmp(this.readAddrAbsolute), + mode: 'absolute', + }, + 0x6c: { + name: 'JMP', + fn: () => this.jmp(this.readAddrAbsoluteIndirectBug), + mode: 'absoluteIndirect', + }, + // JSR + 0x20: { + name: 'JSR', + fn: () => this.jsr(), + mode: 'absolute', + }, + + // RTS + 0x60: { name: 'RTS', fn: () => this.rts(), mode: 'implied' }, + + // RTI + 0x40: { name: 'RTI', fn: () => this.rti(), mode: 'implied' }, + + // SEC + 0x38: { name: 'SEC', fn: () => this.set(flags.C), mode: 'implied' }, + + // SED + 0xf8: { name: 'SED', fn: () => this.set(flags.D), mode: 'implied' }, + + // SEI + 0x78: { name: 'SEI', fn: () => this.set(flags.I), mode: 'implied' }, + + // CLC + 0x18: { name: 'CLC', fn: () => this.clr(flags.C), mode: 'implied' }, + + // CLD + 0xd8: { name: 'CLD', fn: () => this.clr(flags.D), mode: 'implied' }, + + // CLI + 0x58: { name: 'CLI', fn: () => this.clr(flags.I), mode: 'implied' }, + + // CLV + 0xb8: { name: 'CLV', fn: () => this.clr(flags.V), mode: 'implied' }, + + // NOP + 0xea: { name: 'NOP', fn: () => this.nop(this.implied), mode: 'implied' }, + + // BRK + 0x00: { + name: 'BRK', + fn: () => this.brk(this.readImmediate), + mode: 'immediate', + }, + }; + + /* 65C02 Instructions */ + + OPS_65C02: Instructions = { + // INC / DEC A + 0x1a: { + name: 'INC', + fn: () => this.incA(), + mode: 'accumulator', + }, + 0x3a: { + name: 'DEC', + fn: () => this.decA(), + mode: 'accumulator', + }, + + // Indirect Zero Page for the masses + 0x12: { + name: 'ORA', + fn: () => this.ora(this.readZeroPageIndirect), + mode: 'zeroPageIndirect', + }, + 0x32: { + name: 'AND', + fn: () => this.and(this.readZeroPageIndirect), + mode: 'zeroPageIndirect', + }, + 0x52: { + name: 'EOR', + fn: () => this.eor(this.readZeroPageIndirect), + mode: 'zeroPageIndirect', + }, + 0x72: { + name: 'ADC', + fn: () => this.adc(this.readZeroPageIndirect), + mode: 'zeroPageIndirect', + }, + 0x92: { + name: 'STA', + fn: () => this.sta(this.writeZeroPageIndirect), + mode: 'zeroPageIndirect', + }, + 0xb2: { + name: 'LDA', + fn: () => this.lda(this.readZeroPageIndirect), + mode: 'zeroPageIndirect', + }, + 0xd2: { + name: 'CMP', + fn: () => this.cmp(this.readZeroPageIndirect), + mode: 'zeroPageIndirect', + }, + 0xf2: { + name: 'SBC', + fn: () => this.sbc(this.readZeroPageIndirect), + mode: 'zeroPageIndirect', + }, + + // Better BIT + 0x34: { + name: 'BIT', + fn: () => this.bit(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0x3c: { + name: 'BIT', + fn: () => this.bit(this.readAbsoluteX), + mode: 'absoluteX', + }, + 0x89: { + name: 'BIT', + fn: () => this.bitI(this.readImmediate), + mode: 'immediate', + }, + + // JMP absolute indirect indexed + 0x6c: { + name: 'JMP', + fn: () => this.jmp(this.readAddrAbsoluteIndirect), + mode: 'absoluteIndirect', + }, + 0x7c: { + name: 'JMP', + fn: () => this.jmp(this.readAddrAbsoluteXIndirect), + mode: 'absoluteXIndirect', + }, + + // BBR/BBS + 0x0f: { + name: 'BBR0', + fn: () => this.bbr(0), + mode: 'zeroPage_relative', + }, + 0x1f: { + name: 'BBR1', + fn: () => this.bbr(1), + mode: 'zeroPage_relative', + }, + 0x2f: { + name: 'BBR2', + fn: () => this.bbr(2), + mode: 'zeroPage_relative', + }, + 0x3f: { + name: 'BBR3', + fn: () => this.bbr(3), + mode: 'zeroPage_relative', + }, + 0x4f: { + name: 'BBR4', + fn: () => this.bbr(4), + mode: 'zeroPage_relative', + }, + 0x5f: { + name: 'BBR5', + fn: () => this.bbr(5), + mode: 'zeroPage_relative', + }, + 0x6f: { + name: 'BBR6', + fn: () => this.bbr(6), + mode: 'zeroPage_relative', + }, + 0x7f: { + name: 'BBR7', + fn: () => this.bbr(7), + mode: 'zeroPage_relative', + }, + + 0x8f: { + name: 'BBS0', + fn: () => this.bbs(0), + mode: 'zeroPage_relative', + }, + 0x9f: { + name: 'BBS1', + fn: () => this.bbs(1), + mode: 'zeroPage_relative', + }, + 0xaf: { + name: 'BBS2', + fn: () => this.bbs(2), + mode: 'zeroPage_relative', + }, + 0xbf: { + name: 'BBS3', + fn: () => this.bbs(3), + mode: 'zeroPage_relative', + }, + 0xcf: { + name: 'BBS4', + fn: () => this.bbs(4), + mode: 'zeroPage_relative', + }, + 0xdf: { + name: 'BBS5', + fn: () => this.bbs(5), + mode: 'zeroPage_relative', + }, + 0xef: { + name: 'BBS6', + fn: () => this.bbs(6), + mode: 'zeroPage_relative', + }, + 0xff: { + name: 'BBS7', + fn: () => this.bbs(7), + mode: 'zeroPage_relative', + }, + + // BRA + 0x80: { + name: 'BRA', + fn: () => this.brc(0), + mode: 'relative', + }, + + // NOP + 0x02: { + name: 'NOP', + fn: () => this.nop(this.readImmediate), + mode: 'immediate', + }, + 0x22: { + name: 'NOP', + fn: () => this.nop(this.readImmediate), + mode: 'immediate', + }, + 0x42: { + name: 'NOP', + fn: () => this.nop(this.readImmediate), + mode: 'immediate', + }, + 0x44: { + name: 'NOP', + fn: () => this.nop(this.readZeroPage), + mode: 'immediate', + }, + 0x54: { + name: 'NOP', + fn: () => this.nop(this.readZeroPageX), + mode: 'immediate', + }, + 0x62: { + name: 'NOP', + fn: () => this.nop(this.readImmediate), + mode: 'immediate', + }, + 0x82: { + name: 'NOP', + fn: () => this.nop(this.readImmediate), + mode: 'immediate', + }, + 0xc2: { + name: 'NOP', + fn: () => this.nop(this.readImmediate), + mode: 'immediate', + }, + 0xd4: { + name: 'NOP', + fn: () => this.nop(this.readZeroPageX), + mode: 'immediate', + }, + 0xe2: { + name: 'NOP', + fn: () => this.nop(this.readImmediate), + mode: 'immediate', + }, + 0xf4: { + name: 'NOP', + fn: () => this.nop(this.readZeroPageX), + mode: 'immediate', + }, + 0x5c: { name: 'NOP', fn: () => this.nop(this.readNop), mode: 'absolute' }, + 0xdc: { name: 'NOP', fn: () => this.nop(this.readNop), mode: 'absolute' }, + 0xfc: { name: 'NOP', fn: () => this.nop(this.readNop), mode: 'absolute' }, + + // PHX + 0xda: { name: 'PHX', fn: () => this.phx(), mode: 'implied' }, + + // PHY + 0x5a: { name: 'PHY', fn: () => this.phy(), mode: 'implied' }, + + // PLX + 0xfa: { name: 'PLX', fn: () => this.plx(), mode: 'implied' }, + + // PLY + 0x7a: { name: 'PLY', fn: () => this.ply(), mode: 'implied' }, + + // RMB/SMB + + 0x07: { name: 'RMB0', fn: () => this.rmb(0), mode: 'zeroPage' }, + 0x17: { name: 'RMB1', fn: () => this.rmb(1), mode: 'zeroPage' }, + 0x27: { name: 'RMB2', fn: () => this.rmb(2), mode: 'zeroPage' }, + 0x37: { name: 'RMB3', fn: () => this.rmb(3), mode: 'zeroPage' }, + 0x47: { name: 'RMB4', fn: () => this.rmb(4), mode: 'zeroPage' }, + 0x57: { name: 'RMB5', fn: () => this.rmb(5), mode: 'zeroPage' }, + 0x67: { name: 'RMB6', fn: () => this.rmb(6), mode: 'zeroPage' }, + 0x77: { name: 'RMB7', fn: () => this.rmb(7), mode: 'zeroPage' }, + + 0x87: { name: 'SMB0', fn: () => this.smb(0), mode: 'zeroPage' }, + 0x97: { name: 'SMB1', fn: () => this.smb(1), mode: 'zeroPage' }, + 0xa7: { name: 'SMB2', fn: () => this.smb(2), mode: 'zeroPage' }, + 0xb7: { name: 'SMB3', fn: () => this.smb(3), mode: 'zeroPage' }, + 0xc7: { name: 'SMB4', fn: () => this.smb(4), mode: 'zeroPage' }, + 0xd7: { name: 'SMB5', fn: () => this.smb(5), mode: 'zeroPage' }, + 0xe7: { name: 'SMB6', fn: () => this.smb(6), mode: 'zeroPage' }, + 0xf7: { name: 'SMB7', fn: () => this.smb(7), mode: 'zeroPage' }, + + // STZ + 0x64: { + name: 'STZ', + fn: () => this.stz(this.writeZeroPage), + mode: 'zeroPage', + }, + 0x74: { + name: 'STZ', + fn: () => this.stz(this.writeZeroPageX), + mode: 'zeroPageX', + }, + 0x9c: { + name: 'STZ', + fn: () => this.stz(this.writeAbsolute), + mode: 'absolute', + }, + 0x9e: { + name: 'STZ', + fn: () => this.stz(this.writeAbsoluteX), + mode: 'absoluteX', + }, + + // TRB + 0x14: { + name: 'TRB', + fn: () => this.trb(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0x1c: { + name: 'TRB', + fn: () => this.trb(this.readAddrAbsolute), + mode: 'absolute', + }, + + // TSB + 0x04: { + name: 'TSB', + fn: () => this.tsb(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0x0c: { + name: 'TSB', + fn: () => this.tsb(this.readAddrAbsolute), + mode: 'absolute', + }, + }; + + OPS_NMOS_6502: Instructions = { + // ASO + 0x0f: { + name: 'ASO', + fn: () => this.aso(this.readAddrAbsolute), + mode: 'absolute', + }, + 0x1f: { + name: 'ASO', + fn: () => this.aso(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + 0x1b: { + name: 'ASO', + fn: () => this.aso(this.readAddrAbsoluteY), + mode: 'absoluteY', + }, + 0x07: { + name: 'ASO', + fn: () => this.aso(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0x17: { + name: 'ASO', + fn: () => this.aso(this.readAddrZeroPageX), + mode: 'zeroPageX', + }, + 0x03: { + name: 'ASO', + fn: () => this.aso(this.readAddrZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0x13: { + name: 'ASO', + fn: () => this.aso(this.readAddrZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // RLA + 0x2f: { + name: 'RLA', + fn: () => this.rla(this.readAddrAbsolute), + mode: 'absolute', + }, + 0x3f: { + name: 'RLA', + fn: () => this.rla(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + 0x3b: { + name: 'RLA', + fn: () => this.rla(this.readAddrAbsoluteY), + mode: 'absoluteY', + }, + 0x27: { + name: 'RLA', + fn: () => this.rla(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0x37: { + name: 'RLA', + fn: () => this.rla(this.readAddrZeroPageX), + mode: 'zeroPageX', + }, + 0x23: { + name: 'RLA', + fn: () => this.rla(this.readAddrZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0x33: { + name: 'RLA', + fn: () => this.rla(this.readAddrZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // LSE + 0x4f: { + name: 'LSE', + fn: () => this.lse(this.readAddrAbsolute), + mode: 'absolute', + }, + 0x5f: { + name: 'LSE', + fn: () => this.lse(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + 0x5b: { + name: 'LSE', + fn: () => this.lse(this.readAddrAbsoluteY), + mode: 'absoluteY', + }, + 0x47: { + name: 'LSE', + fn: () => this.lse(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0x57: { + name: 'LSE', + fn: () => this.lse(this.readAddrZeroPageX), + mode: 'zeroPageX', + }, + 0x43: { + name: 'LSE', + fn: () => this.lse(this.readAddrZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0x53: { + name: 'LSE', + fn: () => this.lse(this.readAddrZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // RRA + 0x6f: { + name: 'RRA', + fn: () => this.rra(this.readAddrAbsolute), + mode: 'absolute', + }, + 0x7f: { + name: 'RRA', + fn: () => this.rra(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + 0x7b: { + name: 'RRA', + fn: () => this.rra(this.readAddrAbsoluteY), + mode: 'absoluteY', + }, + 0x67: { + name: 'RRA', + fn: () => this.rra(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0x77: { + name: 'RRA', + fn: () => this.rra(this.readAddrZeroPageX), + mode: 'zeroPageX', + }, + 0x63: { + name: 'RRA', + fn: () => this.rra(this.readAddrZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0x73: { + name: 'RRA', + fn: () => this.rra(this.readAddrZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // AXS + 0x8f: { + name: 'AXS', + fn: () => this.axs(this.writeAbsolute), + mode: 'absolute', + }, + 0x87: { + name: 'AXS', + fn: () => this.axs(this.writeZeroPage), + mode: 'zeroPage', + }, + 0x97: { + name: 'AXS', + fn: () => this.axs(this.writeZeroPageY), + mode: 'zeroPageY', + }, + 0x83: { + name: 'AXS', + fn: () => this.axs(this.writeZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + + // LAX + 0xaf: { + name: 'LAX', + fn: () => this.lax(this.readAbsolute), + mode: 'absolute', + }, + 0xbf: { + name: 'LAX', + fn: () => this.lax(this.readAbsoluteY), + mode: 'absoluteY', + }, + 0xa7: { + name: 'LAX', + fn: () => this.lax(this.readZeroPage), + mode: 'zeroPage', + }, + 0xb7: { + name: 'LAX', + fn: () => this.lax(this.readZeroPageY), + mode: 'zeroPageY', + }, + 0xa3: { + name: 'LAX', + fn: () => this.lax(this.readZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0xb3: { + name: 'LAX', + fn: () => this.lax(this.readZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // DCM + 0xcf: { + name: 'DCM', + fn: () => this.dcm(this.readAddrAbsolute), + mode: 'absolute', + }, + 0xdf: { + name: 'DCM', + fn: () => this.dcm(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + 0xdb: { + name: 'DCM', + fn: () => this.dcm(this.readAddrAbsoluteY), + mode: 'absoluteY', + }, + 0xc7: { + name: 'DCM', + fn: () => this.dcm(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0xd7: { + name: 'DCM', + fn: () => this.dcm(this.readAddrZeroPageX), + mode: 'zeroPageX', + }, + 0xc3: { + name: 'DCM', + fn: () => this.dcm(this.readAddrZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0xd3: { + name: 'DCM', + fn: () => this.dcm(this.readAddrZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // INS + 0xef: { + name: 'INS', + fn: () => this.ins(this.readAddrAbsolute), + mode: 'absolute', + }, + 0xff: { + name: 'INS', + fn: () => this.ins(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + 0xfb: { + name: 'INS', + fn: () => this.ins(this.readAddrAbsoluteY), + mode: 'absoluteY', + }, + 0xe7: { + name: 'INS', + fn: () => this.ins(this.readAddrZeroPage), + mode: 'zeroPage', + }, + 0xf7: { + name: 'INS', + fn: () => this.ins(this.readAddrZeroPageX), + mode: 'zeroPageX', + }, + 0xe3: { + name: 'INS', + fn: () => this.ins(this.readAddrZeroPageXIndirect), + mode: 'zeroPageXIndirect', + }, + 0xf3: { + name: 'INS', + fn: () => this.ins(this.readAddrZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // ALR + 0x4b: { + name: 'ALR', + fn: () => this.alr(this.readImmediate), + mode: 'immediate', + }, + + // ARR + 0x6b: { + name: 'ARR', + fn: () => this.arr(this.readImmediate), + mode: 'immediate', + }, + + // XAA + 0x8b: { + name: 'XAA', + fn: () => this.xaa(this.readImmediate), + mode: 'immediate', + }, + + // OAL + 0xab: { + name: 'OAL', + fn: () => this.oal(this.readImmediate), + mode: 'immediate', + }, + + // SAX + 0xcb: { + name: 'SAX', + fn: () => this.sax(this.readImmediate), + mode: 'immediate', + }, + + // NOP + 0x1a: { name: 'NOP', fn: () => this.nop(this.implied), mode: 'implied' }, + 0x3a: { name: 'NOP', fn: () => this.nop(this.implied), mode: 'implied' }, + 0x5a: { name: 'NOP', fn: () => this.nop(this.implied), mode: 'implied' }, + 0x7a: { name: 'NOP', fn: () => this.nop(this.implied), mode: 'implied' }, + 0xda: { name: 'NOP', fn: () => this.nop(this.implied), mode: 'implied' }, + 0xfa: { name: 'NOP', fn: () => this.nop(this.implied), mode: 'implied' }, + + // SKB + 0x80: { + name: 'SKB', + fn: () => this.skp(this.readImmediate), + mode: 'immediate', + }, + 0x82: { + name: 'SKB', + fn: () => this.skp(this.readImmediate), + mode: 'immediate', + }, + 0x89: { + name: 'SKB', + fn: () => this.skp(this.readImmediate), + mode: 'immediate', + }, + 0xc2: { + name: 'SKB', + fn: () => this.skp(this.readImmediate), + mode: 'immediate', + }, + 0xe2: { + name: 'SKB', + fn: () => this.skp(this.readImmediate), + mode: 'immediate', + }, + 0x04: { + name: 'SKB', + fn: () => this.skp(this.readZeroPage), + mode: 'zeroPage', + }, + 0x14: { + name: 'SKB', + fn: () => this.skp(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0x34: { + name: 'SKB', + fn: () => this.skp(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0x44: { + name: 'SKB', + fn: () => this.skp(this.readZeroPage), + mode: 'zeroPage', + }, + 0x54: { + name: 'SKB', + fn: () => this.skp(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0x64: { + name: 'SKB', + fn: () => this.skp(this.readZeroPage), + mode: 'zeroPage', + }, + 0x74: { + name: 'SKB', + fn: () => this.skp(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0xd4: { + name: 'SKB', + fn: () => this.skp(this.readZeroPageX), + mode: 'zeroPageX', + }, + 0xf4: { + name: 'SKB', + fn: () => this.skp(this.readZeroPageX), + mode: 'zeroPageX', + }, + + // SKW + 0x0c: { + name: 'SKW', + fn: () => this.skp(this.readAddrAbsolute), + mode: 'absolute', + }, + 0x1c: { + name: 'SKW', + fn: () => this.skp(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + 0x3c: { + name: 'SKW', + fn: () => this.skp(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + 0x5c: { + name: 'SKW', + fn: () => this.skp(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + 0x7c: { + name: 'SKW', + fn: () => this.skp(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + 0xdc: { + name: 'SKW', + fn: () => this.skp(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + 0xfc: { + name: 'SKW', + fn: () => this.skp(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + + // HLT + 0x02: { + name: 'HLT', + fn: () => this.hlt(this.readNopImplied), + mode: 'implied', + }, + 0x12: { + name: 'HLT', + fn: () => this.hlt(this.readNopImplied), + mode: 'implied', + }, + 0x22: { + name: 'HLT', + fn: () => this.hlt(this.readNopImplied), + mode: 'implied', + }, + 0x32: { + name: 'HLT', + fn: () => this.hlt(this.readNopImplied), + mode: 'implied', + }, + 0x42: { + name: 'HLT', + fn: () => this.hlt(this.readNopImplied), + mode: 'implied', + }, + 0x52: { + name: 'HLT', + fn: () => this.hlt(this.readNopImplied), + mode: 'implied', + }, + 0x62: { + name: 'HLT', + fn: () => this.hlt(this.readNopImplied), + mode: 'implied', + }, + 0x72: { + name: 'HLT', + fn: () => this.hlt(this.readNopImplied), + mode: 'implied', + }, + 0x92: { + name: 'HLT', + fn: () => this.hlt(this.readNopImplied), + mode: 'implied', + }, + 0xb2: { + name: 'HLT', + fn: () => this.hlt(this.readNopImplied), + mode: 'implied', + }, + 0xd2: { + name: 'HLT', + fn: () => this.hlt(this.readNopImplied), + mode: 'implied', + }, + 0xf2: { + name: 'HLT', + fn: () => this.hlt(this.readNopImplied), + mode: 'implied', + }, + + // TAS + 0x9b: { + name: 'TAS', + fn: () => this.tas(this.readAddrAbsoluteY), + mode: 'absoluteY', + }, + + // SAY + 0x9c: { + name: 'SAY', + fn: () => this.say(this.readAddrAbsoluteX), + mode: 'absoluteX', + }, + + // XAS + 0x9e: { + name: 'XAS', + fn: () => this.xas(this.readAddrAbsoluteY), + mode: 'absoluteY', + }, + + // AXA + 0x9f: { + name: 'AXA', + fn: () => this.axa(this.readAddrAbsoluteY), + mode: 'absoluteY', + }, + 0x93: { + name: 'AXA', + fn: () => this.axa(this.readAddrZeroPageIndirectY), + mode: 'zeroPageIndirectY', + }, + + // ANC + 0x2b: { + name: 'ANC', + fn: () => this.anc(this.readImmediate), + mode: 'immediate', + }, + 0x0b: { + name: 'ANC', + fn: () => this.anc(this.readImmediate), + mode: 'immediate', + }, + + // LAS + 0xbb: { + name: 'LAS', + fn: () => this.las(this.readAbsoluteY), + mode: 'absoluteY', + }, + + // SBC + 0xeb: { + name: 'SBC', + fn: () => this.sbc(this.readImmediate), + mode: 'immediate', + }, + }; + + OPS_ROCKWELL_65C02: Instructions = { + 0xcb: { name: 'NOP', fn: () => this.nop(this.implied), mode: 'implied' }, + 0xdb: { + name: 'NOP', + fn: () => this.nop(this.readZeroPageX), + mode: 'immediate', + }, + }; + + /* WDC 65C02 Instructions */ + + OPS_WDC_65C02: Instructions = { + 0xcb: { name: 'WAI', fn: () => this.wai(), mode: 'implied' }, + 0xdb: { name: 'STP', fn: () => this.stp(), mode: 'implied' }, + }; +} diff --git a/js/entry1.js b/js/entry1.js index 4015012..0f18cda 100644 --- a/js/entry1.js +++ b/js/entry1.js @@ -1,3 +1,3 @@ -var Apple1 = require('./apple1'); +import * as Apple1 from "./apple1"; -module.exports = { Apple1: Apple1 }; +window.Apple1 = Apple1; diff --git a/js/prefs.js b/js/prefs.js deleted file mode 100644 index 7c338ef..0000000 --- a/js/prefs.js +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright 2010-2019 Will Scullin - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - */ - -/*exported Prefs */ - -export default function Prefs() -{ - return { - havePrefs: function() { - return typeof(localStorage) !== 'undefined'; - }, - readPref: function(name) { - if (localStorage) - return localStorage.getItem(name); - return null; - }, - writePref: function(name, value) { - if (localStorage) - localStorage.setItem(name, value); - } - }; -} diff --git a/js/prefs.ts b/js/prefs.ts new file mode 100644 index 0000000..50e63f2 --- /dev/null +++ b/js/prefs.ts @@ -0,0 +1,23 @@ +/* Copyright 2010-2023 Will Scullin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +export default class Prefs { + havePrefs() { + return typeof localStorage !== 'undefined'; + } + readPref(name: string) { + if (localStorage) return localStorage.getItem(name); + return null; + } + writePref(name: string, value: string) { + if (localStorage) localStorage.setItem(name, value); + } +} diff --git a/js/ram.js b/js/ram.js deleted file mode 100644 index a64c5d3..0000000 --- a/js/ram.js +++ /dev/null @@ -1,57 +0,0 @@ -/* -*- mode: JavaScript; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* Copyright 2010-2019Will Scullin - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - */ - -import { base64_decode, base64_encode } from './base64'; -import { allocMemPages } from './util'; - -export default function RAM(sp, ep) { - var mem; - var start_page = sp; - var end_page = ep; - - mem = allocMemPages(ep - sp + 1); - - for (var page = 0; page <= ep; page++) { - for (var off = 0; off < 0x100; off++) { - mem[page * 0x100 + off] = 0; // Math.floor(Math.random()*256); - } - } - - return { - start: function() { - return start_page; - }, - end: function() { - return end_page; - }, - read: function(page, off) { - return mem[(page - start_page) * 0x100 + off]; - }, - write: function(page, off, val) { - mem[(page - start_page) * 0x100 + off] = val; - }, - - getState: function() { - return { - start: start_page, - end: end_page, - mem: base64_encode(mem) - }; - }, - - setState: function(state) { - start_page = state.start; - end_page = state.end; - mem = base64_decode(state.mem); - } - }; -} diff --git a/js/ram.ts b/js/ram.ts new file mode 100644 index 0000000..135dec2 --- /dev/null +++ b/js/ram.ts @@ -0,0 +1,64 @@ +/* Copyright 2010-2023 Will Scullin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +import { base64_decode, base64_encode } from './base64'; +import { allocMemPages } from './util'; +import type { byte } from './types'; + +export interface RAMState { + start: byte; + end: byte; + mem: string; +} + +export default class RAM { + mem: Uint8Array | byte[]; + + constructor( + private start_page: byte, + private end_page: byte, + ) { + this.mem = allocMemPages(end_page - start_page + 1); + + for (let page = 0; page <= end_page; page++) { + for (let off = 0; off < 0x100; off++) { + this.mem[page * 0x100 + off] = 0; // Math.floor(Math.random()*256); + } + } + } + + start() { + return this.start_page; + } + end() { + return this.end_page; + } + read(page: byte, off: byte) { + return this.mem[(page - this.start_page) * 0x100 + off]; + } + write(page: byte, off: byte, val: byte) { + this.mem[(page - this.start_page) * 0x100 + off] = val; + } + + getState(): RAMState { + return { + start: this.start_page, + end: this.end_page, + mem: base64_encode(this.mem), + }; + } + + setState(state: RAMState) { + this.start_page = state.start; + this.end_page = state.end; + this.mem = base64_decode(state.mem); + } +} diff --git a/js/roms/apple1char.js b/js/roms/apple1char.js deleted file mode 100644 index 8e7327b..0000000 --- a/js/roms/apple1char.js +++ /dev/null @@ -1,66 +0,0 @@ -export var charset = [ - 0x00,0x1c,0x22,0x2a,0x2e,0x2c,0x20,0x1e, - 0x00,0x08,0x14,0x22,0x22,0x3e,0x22,0x22, - 0x00,0x3c,0x22,0x22,0x3c,0x22,0x22,0x3c, - 0x00,0x1c,0x22,0x20,0x20,0x20,0x22,0x1c, - 0x00,0x3c,0x22,0x22,0x22,0x22,0x22,0x3c, - 0x00,0x3e,0x20,0x20,0x3c,0x20,0x20,0x3e, - 0x00,0x3e,0x20,0x20,0x3c,0x20,0x20,0x20, - 0x00,0x1e,0x20,0x20,0x20,0x26,0x22,0x1e, - 0x00,0x22,0x22,0x22,0x3e,0x22,0x22,0x22, - 0x00,0x1c,0x08,0x08,0x08,0x08,0x08,0x1c, - 0x00,0x02,0x02,0x02,0x02,0x02,0x22,0x1c, - 0x00,0x22,0x24,0x28,0x30,0x28,0x24,0x22, - 0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x3e, - 0x00,0x22,0x36,0x2a,0x2a,0x22,0x22,0x22, - 0x00,0x22,0x22,0x32,0x2a,0x26,0x22,0x22, - 0x00,0x1c,0x22,0x22,0x22,0x22,0x22,0x1c, - 0x00,0x3c,0x22,0x22,0x3c,0x20,0x20,0x20, - 0x00,0x1c,0x22,0x22,0x22,0x2a,0x24,0x1a, - 0x00,0x3c,0x22,0x22,0x3c,0x28,0x24,0x22, - 0x00,0x1c,0x22,0x20,0x1c,0x02,0x22,0x1c, - 0x00,0x3e,0x08,0x08,0x08,0x08,0x08,0x08, - 0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x1c, - 0x00,0x22,0x22,0x22,0x22,0x22,0x14,0x08, - 0x00,0x22,0x22,0x22,0x2a,0x2a,0x36,0x22, - 0x00,0x22,0x22,0x14,0x08,0x14,0x22,0x22, - 0x00,0x22,0x22,0x14,0x08,0x08,0x08,0x08, - 0x00,0x3e,0x02,0x04,0x08,0x10,0x20,0x3e, - 0x00,0x3e,0x30,0x30,0x30,0x30,0x30,0x3e, - 0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x00, - 0x00,0x3e,0x06,0x06,0x06,0x06,0x06,0x3e, - 0x00,0x00,0x00,0x08,0x14,0x22,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x08, - 0x00,0x14,0x14,0x14,0x00,0x00,0x00,0x00, - 0x00,0x14,0x14,0x3e,0x14,0x3e,0x14,0x14, - 0x00,0x08,0x1e,0x28,0x1c,0x0a,0x3c,0x08, - 0x00,0x30,0x32,0x04,0x08,0x10,0x26,0x06, - 0x00,0x10,0x28,0x28,0x10,0x2a,0x24,0x1a, - 0x00,0x08,0x08,0x08,0x00,0x00,0x00,0x00, - 0x00,0x08,0x10,0x20,0x20,0x20,0x10,0x08, - 0x00,0x08,0x04,0x02,0x02,0x02,0x04,0x08, - 0x00,0x08,0x2a,0x1c,0x08,0x1c,0x2a,0x08, - 0x00,0x00,0x08,0x08,0x3e,0x08,0x08,0x00, - 0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x10, - 0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, - 0x00,0x00,0x02,0x04,0x08,0x10,0x20,0x00, - 0x00,0x1c,0x22,0x26,0x2a,0x32,0x22,0x1c, - 0x00,0x08,0x18,0x08,0x08,0x08,0x08,0x1c, - 0x00,0x1c,0x22,0x02,0x0c,0x10,0x20,0x3e, - 0x00,0x3e,0x02,0x04,0x0c,0x02,0x22,0x1c, - 0x00,0x04,0x0c,0x14,0x24,0x3e,0x04,0x04, - 0x00,0x3e,0x20,0x3c,0x02,0x02,0x22,0x1c, - 0x00,0x0e,0x10,0x20,0x3c,0x22,0x22,0x1c, - 0x00,0x3e,0x02,0x04,0x08,0x10,0x10,0x10, - 0x00,0x1c,0x22,0x22,0x1c,0x22,0x22,0x1c, - 0x00,0x1c,0x22,0x22,0x1e,0x02,0x04,0x38, - 0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x00, - 0x00,0x00,0x00,0x08,0x00,0x08,0x08,0x10, - 0x00,0x04,0x08,0x10,0x20,0x10,0x08,0x04, - 0x00,0x00,0x00,0x3e,0x00,0x3e,0x00,0x00, - 0x00,0x10,0x08,0x04,0x02,0x04,0x08,0x10, - 0x00,0x1c,0x22,0x04,0x08,0x08,0x00,0x08 -]; diff --git a/js/roms/apple1char.ts b/js/roms/apple1char.ts new file mode 100644 index 0000000..9cd2b4d --- /dev/null +++ b/js/roms/apple1char.ts @@ -0,0 +1,42 @@ +export const charset = [ + 0x00, 0x1c, 0x22, 0x2a, 0x2e, 0x2c, 0x20, 0x1e, 0x00, 0x08, 0x14, 0x22, 0x22, + 0x3e, 0x22, 0x22, 0x00, 0x3c, 0x22, 0x22, 0x3c, 0x22, 0x22, 0x3c, 0x00, 0x1c, + 0x22, 0x20, 0x20, 0x20, 0x22, 0x1c, 0x00, 0x3c, 0x22, 0x22, 0x22, 0x22, 0x22, + 0x3c, 0x00, 0x3e, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x3e, 0x00, 0x3e, 0x20, 0x20, + 0x3c, 0x20, 0x20, 0x20, 0x00, 0x1e, 0x20, 0x20, 0x20, 0x26, 0x22, 0x1e, 0x00, + 0x22, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x22, 0x00, 0x1c, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x1c, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x22, 0x1c, 0x00, 0x22, 0x24, + 0x28, 0x30, 0x28, 0x24, 0x22, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3e, + 0x00, 0x22, 0x36, 0x2a, 0x2a, 0x22, 0x22, 0x22, 0x00, 0x22, 0x22, 0x32, 0x2a, + 0x26, 0x22, 0x22, 0x00, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x00, 0x3c, + 0x22, 0x22, 0x3c, 0x20, 0x20, 0x20, 0x00, 0x1c, 0x22, 0x22, 0x22, 0x2a, 0x24, + 0x1a, 0x00, 0x3c, 0x22, 0x22, 0x3c, 0x28, 0x24, 0x22, 0x00, 0x1c, 0x22, 0x20, + 0x1c, 0x02, 0x22, 0x1c, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x00, 0x22, 0x22, 0x22, 0x22, 0x22, + 0x14, 0x08, 0x00, 0x22, 0x22, 0x22, 0x2a, 0x2a, 0x36, 0x22, 0x00, 0x22, 0x22, + 0x14, 0x08, 0x14, 0x22, 0x22, 0x00, 0x22, 0x22, 0x14, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x3e, 0x02, 0x04, 0x08, 0x10, 0x20, 0x3e, 0x00, 0x3e, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x3e, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x00, 0x3e, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x3e, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, 0x00, + 0x14, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x3e, 0x14, 0x3e, + 0x14, 0x14, 0x00, 0x08, 0x1e, 0x28, 0x1c, 0x0a, 0x3c, 0x08, 0x00, 0x30, 0x32, + 0x04, 0x08, 0x10, 0x26, 0x06, 0x00, 0x10, 0x28, 0x28, 0x10, 0x2a, 0x24, 0x1a, + 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x20, 0x20, + 0x20, 0x10, 0x08, 0x00, 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08, 0x00, 0x08, + 0x2a, 0x1c, 0x08, 0x1c, 0x2a, 0x08, 0x00, 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x1c, 0x22, 0x26, 0x2a, 0x32, + 0x22, 0x1c, 0x00, 0x08, 0x18, 0x08, 0x08, 0x08, 0x08, 0x1c, 0x00, 0x1c, 0x22, + 0x02, 0x0c, 0x10, 0x20, 0x3e, 0x00, 0x3e, 0x02, 0x04, 0x0c, 0x02, 0x22, 0x1c, + 0x00, 0x04, 0x0c, 0x14, 0x24, 0x3e, 0x04, 0x04, 0x00, 0x3e, 0x20, 0x3c, 0x02, + 0x02, 0x22, 0x1c, 0x00, 0x0e, 0x10, 0x20, 0x3c, 0x22, 0x22, 0x1c, 0x00, 0x3e, + 0x02, 0x04, 0x08, 0x10, 0x10, 0x10, 0x00, 0x1c, 0x22, 0x22, 0x1c, 0x22, 0x22, + 0x1c, 0x00, 0x1c, 0x22, 0x22, 0x1e, 0x02, 0x04, 0x38, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x08, 0x10, 0x00, + 0x04, 0x08, 0x10, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x3e, + 0x00, 0x00, 0x00, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x00, 0x1c, 0x22, + 0x04, 0x08, 0x08, 0x00, 0x08, +] as const; diff --git a/js/roms/basic.js b/js/roms/basic.js deleted file mode 100644 index b3c312f..0000000 --- a/js/roms/basic.js +++ /dev/null @@ -1,537 +0,0 @@ -export default function Basic() { - var ram = [ - 0x4c,0xb0,0xe2,0xad,0x11,0xd0,0x10,0xfb, - 0xad,0x10,0xd0,0x60,0x8a,0x29,0x20,0xf0, - 0x23,0xa9,0xa0,0x85,0xe4,0x4c,0xc9,0xe3, - 0xa9,0x20,0xc5,0x24,0xb0,0x0c,0xa9,0x8d, - 0xa0,0x07,0x20,0xc9,0xe3,0xa9,0xa0,0x88, - 0xd0,0xf8,0xa0,0x00,0xb1,0xe2,0xe6,0xe2, - 0xd0,0x02,0xe6,0xe3,0x60,0x20,0x15,0xe7, - 0x20,0x76,0xe5,0xa5,0xe2,0xc5,0xe6,0xa5, - 0xe3,0xe5,0xe7,0xb0,0xef,0x20,0x6d,0xe0, - 0x4c,0x3b,0xe0,0xa5,0xca,0x85,0xe2,0xa5, - 0xcb,0x85,0xe3,0xa5,0x4c,0x85,0xe6,0xa5, - 0x4d,0x85,0xe7,0xd0,0xde,0x20,0x15,0xe7, - 0x20,0x6d,0xe5,0xa5,0xe4,0x85,0xe2,0xa5, - 0xe5,0x85,0xe3,0xb0,0xc7,0x86,0xd8,0xa9, - 0xa0,0x85,0xfa,0x20,0x2a,0xe0,0x98,0x85, - 0xe4,0x20,0x2a,0xe0,0xaa,0x20,0x2a,0xe0, - 0x20,0x1b,0xe5,0x20,0x18,0xe0,0x84,0xfa, - 0xaa,0x10,0x18,0x0a,0x10,0xe9,0xa5,0xe4, - 0xd0,0x03,0x20,0x11,0xe0,0x8a,0x20,0xc9, - 0xe3,0xa9,0x25,0x20,0x1a,0xe0,0xaa,0x30, - 0xf5,0x85,0xe4,0xc9,0x01,0xd0,0x05,0xa6, - 0xd8,0x4c,0xcd,0xe3,0x48,0x84,0xce,0xa2, - 0xed,0x86,0xcf,0xc9,0x51,0x90,0x04,0xc6, - 0xcf,0xe9,0x50,0x48,0xb1,0xce,0xaa,0x88, - 0xb1,0xce,0x10,0xfa,0xe0,0xc0,0xb0,0x04, - 0xe0,0x00,0x30,0xf2,0xaa,0x68,0xe9,0x01, - 0xd0,0xe9,0x24,0xe4,0x30,0x03,0x20,0xf8, - 0xef,0xb1,0xce,0x10,0x10,0xaa,0x29,0x3f, - 0x85,0xe4,0x18,0x69,0xa0,0x20,0xc9,0xe3, - 0x88,0xe0,0xc0,0x90,0xec,0x20,0x0c,0xe0, - 0x68,0xc9,0x5d,0xf0,0xa4,0xc9,0x28,0xd0, - 0x8a,0xf0,0x9e,0x20,0x18,0xe1,0x95,0x50, - 0xd5,0x78,0x90,0x11,0xa0,0x2b,0x4c,0xe0, - 0xe3,0x20,0x34,0xee,0xd5,0x50,0x90,0xf4, - 0x20,0xe4,0xef,0x95,0x78,0x4c,0x23,0xe8, - 0x20,0x34,0xee,0xf0,0xe7,0x38,0xe9,0x01, - 0x60,0x20,0x18,0xe1,0x95,0x50,0x18,0xf5, - 0x78,0x4c,0x02,0xe1,0xa0,0x14,0xd0,0xd6, - 0x20,0x18,0xe1,0xe8,0xb5,0x50,0x85,0xda, - 0x65,0xce,0x48,0xa8,0xb5,0x78,0x85,0xdb, - 0x65,0xcf,0x48,0xc4,0xca,0xe5,0xcb,0xb0, - 0xe3,0xa5,0xda,0x69,0xfe,0x85,0xda,0xa9, - 0xff,0xa8,0x65,0xdb,0x85,0xdb,0xc8,0xb1, - 0xda,0xd9,0xcc,0x00,0xd0,0x0f,0x98,0xf0, - 0xf5,0x68,0x91,0xda,0x99,0xcc,0x00,0x88, - 0x10,0xf7,0xe8,0x60,0xea,0xa0,0x80,0xd0, - 0x95,0xa9,0x00,0x20,0x0a,0xe7,0xa0,0x02, - 0x94,0x78,0x20,0x0a,0xe7,0xa9,0xbf,0x20, - 0xc9,0xe3,0xa0,0x00,0x20,0x9e,0xe2,0x94, - 0x78,0xea,0xea,0xea,0xb5,0x51,0x85,0xce, - 0xb5,0x79,0x85,0xcf,0xe8,0xe8,0x20,0xbc, - 0xe1,0xb5,0x4e,0xd5,0x76,0xb0,0x15,0xf6, - 0x4e,0xa8,0xb1,0xce,0xb4,0x50,0xc4,0xe4, - 0x90,0x04,0xa0,0x83,0xd0,0xc1,0x91,0xda, - 0xf6,0x50,0x90,0xe5,0xb4,0x50,0x8a,0x91, - 0xda,0xe8,0xe8,0x60,0xb5,0x51,0x85,0xda, - 0x38,0xe9,0x02,0x85,0xe4,0xb5,0x79,0x85, - 0xdb,0xe9,0x00,0x85,0xe5,0xa0,0x00,0xb1, - 0xe4,0x18,0xe5,0xda,0x85,0xe4,0x60,0xb5, - 0x53,0x85,0xce,0xb5,0x7b,0x85,0xcf,0xb5, - 0x51,0x85,0xda,0xb5,0x79,0x85,0xdb,0xe8, - 0xe8,0xe8,0xa0,0x00,0x94,0x78,0x94,0xa0, - 0xc8,0x94,0x50,0xb5,0x4d,0xd5,0x75,0x08, - 0x48,0xb5,0x4f,0xd5,0x77,0x90,0x07,0x68, - 0x28,0xb0,0x02,0x56,0x50,0x60,0xa8,0xb1, - 0xce,0x85,0xe4,0x68,0xa8,0x28,0xb0,0xf3, - 0xb1,0xda,0xc5,0xe4,0xd0,0xed,0xf6,0x4f, - 0xf6,0x4d,0xb0,0xd7,0x20,0xd7,0xe1,0x4c, - 0x36,0xe7,0x20,0x54,0xe2,0x06,0xce,0x26, - 0xcf,0x90,0x0d,0x18,0xa5,0xe6,0x65,0xda, - 0x85,0xe6,0xa5,0xe7,0x65,0xdb,0x85,0xe7, - 0x88,0xf0,0x09,0x06,0xe6,0x26,0xe7,0x10, - 0xe4,0x4c,0x7e,0xe7,0xa5,0xe6,0x20,0x08, - 0xe7,0xa5,0xe7,0x95,0xa0,0x06,0xe5,0x90, - 0x28,0x4c,0x6f,0xe7,0xa9,0x55,0x85,0xe5, - 0x20,0x5b,0xe2,0xa5,0xce,0x85,0xda,0xa5, - 0xcf,0x85,0xdb,0x20,0x15,0xe7,0x84,0xe6, - 0x84,0xe7,0xa5,0xcf,0x10,0x09,0xca,0x06, - 0xe5,0x20,0x6f,0xe7,0x20,0x15,0xe7,0xa0, - 0x10,0x60,0x20,0x6c,0xee,0xf0,0xc5,0xff, - 0xc9,0x84,0xd0,0x02,0x46,0xf8,0xc9,0xdf, - 0xf0,0x11,0xc9,0x9b,0xf0,0x06,0x99,0x00, - 0x02,0xc8,0x10,0x0a,0xa0,0x8b,0x20,0xc4, - 0xe3,0xa0,0x01,0x88,0x30,0xf6,0x20,0x03, - 0xe0,0xea,0xea,0x20,0xc9,0xe3,0xc9,0x8d, - 0xd0,0xd6,0xa9,0xdf,0x99,0x00,0x02,0x60, - 0x20,0xd3,0xef,0x20,0xcd,0xe3,0x46,0xd9, - 0xa9,0xbe,0x20,0xc9,0xe3,0xa0,0x00,0x84, - 0xfa,0x24,0xf8,0x10,0x0c,0xa6,0xf6,0xa5, - 0xf7,0x20,0x1b,0xe5,0xa9,0xa0,0x20,0xc9, - 0xe3,0xa2,0xff,0x9a,0x20,0x9e,0xe2,0x84, - 0xf1,0x8a,0x85,0xc8,0xa2,0x20,0x20,0x91, - 0xe4,0xa5,0xc8,0x69,0x00,0x85,0xe0,0xa9, - 0x00,0xaa,0x69,0x02,0x85,0xe1,0xa1,0xe0, - 0x29,0xf0,0xc9,0xb0,0xf0,0x03,0x4c,0x83, - 0xe8,0xa0,0x02,0xb1,0xe0,0x99,0xcd,0x00, - 0x88,0xd0,0xf8,0x20,0x8a,0xe3,0xa5,0xf1, - 0xe5,0xc8,0xc9,0x04,0xf0,0xa8,0x91,0xe0, - 0xa5,0xca,0xf1,0xe0,0x85,0xe4,0xa5,0xcb, - 0xe9,0x00,0x85,0xe5,0xa5,0xe4,0xc5,0xcc, - 0xa5,0xe5,0xe5,0xcd,0x90,0x45,0xa5,0xca, - 0xf1,0xe0,0x85,0xe6,0xa5,0xcb,0xe9,0x00, - 0x85,0xe7,0xb1,0xca,0x91,0xe6,0xe6,0xca, - 0xd0,0x02,0xe6,0xcb,0xa5,0xe2,0xc5,0xca, - 0xa5,0xe3,0xe5,0xcb,0xb0,0xe0,0xb5,0xe4, - 0x95,0xca,0xca,0x10,0xf9,0xb1,0xe0,0xa8, - 0x88,0xb1,0xe0,0x91,0xe6,0x98,0xd0,0xf8, - 0x24,0xf8,0x10,0x09,0xb5,0xf7,0x75,0xf5, - 0x95,0xf7,0xe8,0xf0,0xf7,0x10,0x7e,0x00, - 0x00,0x00,0x00,0xa0,0x14,0xd0,0x71,0x20, - 0x15,0xe7,0xa5,0xe2,0x85,0xe6,0xa5,0xe3, - 0x85,0xe7,0x20,0x75,0xe5,0xa5,0xe2,0x85, - 0xe4,0xa5,0xe3,0x85,0xe5,0xd0,0x0e,0x20, - 0x15,0xe7,0x20,0x6d,0xe5,0xa5,0xe6,0x85, - 0xe2,0xa5,0xe7,0x85,0xe3,0xa0,0x00,0xa5, - 0xca,0xc5,0xe4,0xa5,0xcb,0xe5,0xe5,0xb0, - 0x16,0xa5,0xe4,0xd0,0x02,0xc6,0xe5,0xc6, - 0xe4,0xa5,0xe6,0xd0,0x02,0xc6,0xe7,0xc6, - 0xe6,0xb1,0xe4,0x91,0xe6,0x90,0xe0,0xa5, - 0xe6,0x85,0xca,0xa5,0xe7,0x85,0xcb,0x60, - 0x20,0xc9,0xe3,0xc8,0xb9,0x00,0xeb,0x30, - 0xf7,0xc9,0x8d,0xd0,0x06,0xa9,0x00,0x85, - 0x24,0xa9,0x8d,0xe6,0x24,0x2c,0xf2,0xd0, - 0x30,0xfb,0x8d,0xf2,0xd0,0x60,0xa0,0x06, - 0x20,0xd3,0xee,0x24,0xd9,0x30,0x03,0x4c, - 0xb6,0xe2,0x4c,0x9a,0xeb,0x2a,0x69,0xa0, - 0xdd,0x00,0x02,0xd0,0x53,0xb1,0xfe,0x0a, - 0x30,0x06,0x88,0xb1,0xfe,0x30,0x29,0xc8, - 0x86,0xc8,0x98,0x48,0xa2,0x00,0xa1,0xfe, - 0xaa,0x4a,0x49,0x48,0x11,0xfe,0xc9,0xc0, - 0x90,0x01,0xe8,0xc8,0xd0,0xf3,0x68,0xa8, - 0x8a,0x4c,0xc0,0xe4,0xe6,0xf1,0xa6,0xf1, - 0xf0,0xbc,0x9d,0x00,0x02,0x60,0xa6,0xc8, - 0xa9,0xa0,0xe8,0xdd,0x00,0x02,0xb0,0xfa, - 0xb1,0xfe,0x29,0x3f,0x4a,0xd0,0xb6,0xbd, - 0x00,0x02,0xb0,0x06,0x69,0x3f,0xc9,0x1a, - 0x90,0x6f,0x69,0x4f,0xc9,0x0a,0x90,0x69, - 0xa6,0xfd,0xc8,0xb1,0xfe,0x29,0xe0,0xc9, - 0x20,0xf0,0x7a,0xb5,0xa8,0x85,0xc8,0xb5, - 0xd1,0x85,0xf1,0x88,0xb1,0xfe,0x0a,0x10, - 0xfa,0x88,0xb0,0x38,0x0a,0x30,0x35,0xb4, - 0x58,0x84,0xff,0xb4,0x80,0xe8,0x10,0xda, - 0xf0,0xb3,0xc9,0x7e,0xb0,0x22,0xca,0x10, - 0x04,0xa0,0x06,0x10,0x29,0x94,0x80,0xa4, - 0xff,0x94,0x58,0xa4,0xc8,0x94,0xa8,0xa4, - 0xf1,0x94,0xd1,0x29,0x1f,0xa8,0xb9,0x20, - 0xec,0x0a,0xa8,0xa9,0x76,0x2a,0x85,0xff, - 0xd0,0x01,0xc8,0xc8,0x86,0xfd,0xb1,0xfe, - 0x30,0x84,0xd0,0x05,0xa0,0x0e,0x4c,0xe0, - 0xe3,0xc9,0x03,0xb0,0xc3,0x4a,0xa6,0xc8, - 0xe8,0xbd,0x00,0x02,0x90,0x04,0xc9,0xa2, - 0xf0,0x0a,0xc9,0xdf,0xf0,0x06,0x86,0xc8, - 0x20,0x1c,0xe4,0xc8,0x88,0xa6,0xfd,0xb1, - 0xfe,0x88,0x0a,0x10,0xcf,0xb4,0x58,0x84, - 0xff,0xb4,0x80,0xe8,0xb1,0xfe,0x29,0x9f, - 0xd0,0xed,0x85,0xf2,0x85,0xf3,0x98,0x48, - 0x86,0xfd,0xb4,0xd0,0x84,0xc9,0x18,0xa9, - 0x0a,0x85,0xf9,0xa2,0x00,0xc8,0xb9,0x00, - 0x02,0x29,0x0f,0x65,0xf2,0x48,0x8a,0x65, - 0xf3,0x30,0x1c,0xaa,0x68,0xc6,0xf9,0xd0, - 0xf2,0x85,0xf2,0x86,0xf3,0xc4,0xf1,0xd0, - 0xde,0xa4,0xc9,0xc8,0x84,0xf1,0x20,0x1c, - 0xe4,0x68,0xa8,0xa5,0xf3,0xb0,0xa9,0xa0, - 0x00,0x10,0x8b,0x85,0xf3,0x86,0xf2,0xa2, - 0x04,0x86,0xc9,0xa9,0xb0,0x85,0xf9,0xa5, - 0xf2,0xdd,0x63,0xe5,0xa5,0xf3,0xfd,0x68, - 0xe5,0x90,0x0d,0x85,0xf3,0xa5,0xf2,0xfd, - 0x63,0xe5,0x85,0xf2,0xe6,0xf9,0xd0,0xe7, - 0xa5,0xf9,0xe8,0xca,0xf0,0x0e,0xc9,0xb0, - 0xf0,0x02,0x85,0xc9,0x24,0xc9,0x30,0x04, - 0xa5,0xfa,0xf0,0x0b,0x20,0xc9,0xe3,0x24, - 0xf8,0x10,0x04,0x99,0x00,0x02,0xc8,0xca, - 0x10,0xc1,0x60,0x01,0x0a,0x64,0xe8,0x10, - 0x00,0x00,0x00,0x03,0x27,0xa5,0xca,0x85, - 0xe6,0xa5,0xcb,0x85,0xe7,0xe8,0xa5,0xe7, - 0x85,0xe5,0xa5,0xe6,0x85,0xe4,0xc5,0x4c, - 0xa5,0xe5,0xe5,0x4d,0xb0,0x26,0xa0,0x01, - 0xb1,0xe4,0xe5,0xce,0xc8,0xb1,0xe4,0xe5, - 0xcf,0xb0,0x19,0xa0,0x00,0xa5,0xe6,0x71, - 0xe4,0x85,0xe6,0x90,0x03,0xe6,0xe7,0x18, - 0xc8,0xa5,0xce,0xf1,0xe4,0xc8,0xa5,0xcf, - 0xf1,0xe4,0xb0,0xca,0x60,0x46,0xf8,0xa5, - 0x4c,0x85,0xca,0xa5,0x4d,0x85,0xcb,0xa5, - 0x4a,0x85,0xcc,0xa5,0x4b,0x85,0xcd,0xa9, - 0x00,0x85,0xfb,0x85,0xfc,0x85,0xfe,0xa9, - 0x00,0x85,0x1d,0x60,0xa5,0xd0,0x69,0x05, - 0x85,0xd2,0xa5,0xd1,0x69,0x00,0x85,0xd3, - 0xa5,0xd2,0xc5,0xca,0xa5,0xd3,0xe5,0xcb, - 0x90,0x03,0x4c,0x6b,0xe3,0xa5,0xce,0x91, - 0xd0,0xa5,0xcf,0xc8,0x91,0xd0,0xa5,0xd2, - 0xc8,0x91,0xd0,0xa5,0xd3,0xc8,0x91,0xd0, - 0xa9,0x00,0xc8,0x91,0xd0,0xc8,0x91,0xd0, - 0xa5,0xd2,0x85,0xcc,0xa5,0xd3,0x85,0xcd, - 0xa5,0xd0,0x90,0x43,0x85,0xce,0x84,0xcf, - 0x20,0xff,0xe6,0x30,0x0e,0xc9,0x40,0xf0, - 0x0a,0x4c,0x28,0xe6,0x06,0xc9,0x49,0xd0, - 0x07,0xa9,0x49,0x85,0xcf,0x20,0xff,0xe6, - 0xa5,0x4b,0x85,0xd1,0xa5,0x4a,0x85,0xd0, - 0xc5,0xcc,0xa5,0xd1,0xe5,0xcd,0xb0,0x94, - 0xb1,0xd0,0xc8,0xc5,0xce,0xd0,0x06,0xb1, - 0xd0,0xc5,0xcf,0xf0,0x0e,0xc8,0xb1,0xd0, - 0x48,0xc8,0xb1,0xd0,0x85,0xd1,0x68,0xa0, - 0x00,0xf0,0xdb,0xa5,0xd0,0x69,0x03,0x20, - 0x0a,0xe7,0xa5,0xd1,0x69,0x00,0x95,0x78, - 0xa5,0xcf,0xc9,0x40,0xd0,0x1c,0x88,0x98, - 0x20,0x0a,0xe7,0x88,0x94,0x78,0xa0,0x03, - 0xf6,0x78,0xc8,0xb1,0xd0,0x30,0xf9,0x10, - 0x09,0xa9,0x00,0x85,0xd4,0x85,0xd5,0xa2, - 0x20,0x48,0xa0,0x00,0xb1,0xe0,0x10,0x18, - 0x0a,0x30,0x81,0x20,0xff,0xe6,0x20,0x08, - 0xe7,0x20,0xff,0xe6,0x95,0xa0,0x24,0xd4, - 0x10,0x01,0xca,0x20,0xff,0xe6,0xb0,0xe6, - 0xc9,0x28,0xd0,0x1f,0xa5,0xe0,0x20,0x0a, - 0xe7,0xa5,0xe1,0x95,0x78,0x24,0xd4,0x30, - 0x0b,0xa9,0x01,0x20,0x0a,0xe7,0xa9,0x00, - 0x95,0x78,0xf6,0x78,0x20,0xff,0xe6,0x30, - 0xf9,0xb0,0xd3,0x24,0xd4,0x10,0x06,0xc9, - 0x04,0xb0,0xd0,0x46,0xd4,0xa8,0x85,0xd6, - 0xb9,0x98,0xe9,0x29,0x55,0x0a,0x85,0xd7, - 0x68,0xa8,0xb9,0x98,0xe9,0x29,0xaa,0xc5, - 0xd7,0xb0,0x09,0x98,0x48,0x20,0xff,0xe6, - 0xa5,0xd6,0x90,0x95,0xb9,0x10,0xea,0x85, - 0xce,0xb9,0x88,0xea,0x85,0xcf,0x20,0xfc, - 0xe6,0x4c,0xd8,0xe6,0x6c,0xce,0x00,0xe6, - 0xe0,0xd0,0x02,0xe6,0xe1,0xb1,0xe0,0x60, - 0x94,0x77,0xca,0x30,0x03,0x95,0x50,0x60, - 0xa0,0x66,0x4c,0xe0,0xe3,0xa0,0x00,0xb5, - 0x50,0x85,0xce,0xb5,0xa0,0x85,0xcf,0xb5, - 0x78,0xf0,0x0e,0x85,0xcf,0xb1,0xce,0x48, - 0xc8,0xb1,0xce,0x85,0xcf,0x68,0x85,0xce, - 0x88,0xe8,0x60,0x20,0x4a,0xe7,0x20,0x15, - 0xe7,0x98,0x20,0x08,0xe7,0x95,0xa0,0xc5, - 0xce,0xd0,0x06,0xc5,0xcf,0xd0,0x02,0xf6, - 0x50,0x60,0x20,0x82,0xe7,0x20,0x59,0xe7, - 0x20,0x15,0xe7,0x24,0xcf,0x30,0x1b,0xca, - 0x60,0x20,0x15,0xe7,0xa5,0xcf,0xd0,0x04, - 0xa5,0xce,0xf0,0xf3,0xa9,0xff,0x20,0x08, - 0xe7,0x95,0xa0,0x24,0xcf,0x30,0xe9,0x20, - 0x15,0xe7,0x98,0x38,0xe5,0xce,0x20,0x08, - 0xe7,0x98,0xe5,0xcf,0x50,0x23,0xa0,0x00, - 0x10,0x90,0x20,0x6f,0xe7,0x20,0x15,0xe7, - 0xa5,0xce,0x85,0xda,0xa5,0xcf,0x85,0xdb, - 0x20,0x15,0xe7,0x18,0xa5,0xce,0x65,0xda, - 0x20,0x08,0xe7,0xa5,0xcf,0x65,0xdb,0x70, - 0xdd,0x95,0xa0,0x60,0x20,0x15,0xe7,0xa4, - 0xce,0xf0,0x05,0x88,0xa5,0xcf,0xf0,0x0c, - 0x60,0xa5,0x24,0x09,0x07,0xa8,0xc8,0xa9, - 0xa0,0x20,0xc9,0xe3,0xc4,0x24,0xb0,0xf7, - 0x60,0x20,0xb1,0xe7,0x20,0x15,0xe7,0xa5, - 0xcf,0x10,0x0a,0xa9,0xad,0x20,0xc9,0xe3, - 0x20,0x72,0xe7,0x50,0xef,0x88,0x84,0xd5, - 0x86,0xcf,0xa6,0xce,0x20,0x1b,0xe5,0xa6, - 0xcf,0x60,0x20,0x15,0xe7,0xa5,0xce,0x85, - 0xf6,0xa5,0xcf,0x85,0xf7,0x88,0x84,0xf8, - 0xc8,0xa9,0x0a,0x85,0xf4,0x84,0xf5,0x60, - 0x20,0x15,0xe7,0xa5,0xce,0xa4,0xcf,0x10, - 0xf2,0x20,0x15,0xe7,0xb5,0x50,0x85,0xda, - 0xb5,0x78,0x85,0xdb,0xa5,0xce,0x91,0xda, - 0xc8,0xa5,0xcf,0x91,0xda,0xe8,0x60,0x68, - 0x68,0x24,0xd5,0x10,0x05,0x20,0xcd,0xe3, - 0x46,0xd5,0x60,0xa0,0xff,0x84,0xd7,0x60, - 0x20,0xcd,0xef,0xf0,0x07,0xa9,0x25,0x85, - 0xd6,0x88,0x84,0xd4,0xe8,0x60,0xa5,0xca, - 0xa4,0xcb,0xd0,0x5a,0xa0,0x41,0xa5,0xfc, - 0xc9,0x08,0xb0,0x5e,0xa8,0xe6,0xfc,0xa5, - 0xe0,0x99,0x00,0x01,0xa5,0xe1,0x99,0x08, - 0x01,0xa5,0xdc,0x99,0x10,0x01,0xa5,0xdd, - 0x99,0x18,0x01,0x20,0x15,0xe7,0x20,0x6d, - 0xe5,0x90,0x04,0xa0,0x37,0xd0,0x3b,0xa5, - 0xe4,0xa4,0xe5,0x85,0xdc,0x84,0xdd,0x2c, - 0x11,0xd0,0x30,0x4f,0x18,0x69,0x03,0x90, - 0x01,0xc8,0xa2,0xff,0x86,0xd9,0x9a,0x85, - 0xe0,0x84,0xe1,0x20,0x79,0xe6,0x24,0xd9, - 0x10,0x49,0x18,0xa0,0x00,0xa5,0xdc,0x71, - 0xdc,0xa4,0xdd,0x90,0x01,0xc8,0xc5,0x4c, - 0xd0,0xd1,0xc4,0x4d,0xd0,0xcd,0xa0,0x34, - 0x46,0xd9,0x4c,0xe0,0xe3,0xa0,0x4a,0xa5, - 0xfc,0xf0,0xf7,0xc6,0xfc,0xa8,0xb9,0x0f, - 0x01,0x85,0xdc,0xb9,0x17,0x01,0x85,0xdd, - 0xbe,0xff,0x00,0xb9,0x07,0x01,0xa8,0x8a, - 0x4c,0x7a,0xe8,0xa0,0x63,0x20,0xc4,0xe3, - 0xa0,0x01,0xb1,0xdc,0xaa,0xc8,0xb1,0xdc, - 0x20,0x1b,0xe5,0x4c,0xb3,0xe2,0xc6,0xfb, - 0xa0,0x5b,0xa5,0xfb,0xf0,0xc4,0xa8,0xb5, - 0x50,0xd9,0x1f,0x01,0xd0,0xf0,0xb5,0x78, - 0xd9,0x27,0x01,0xd0,0xe9,0xb9,0x2f,0x01, - 0x85,0xda,0xb9,0x37,0x01,0x85,0xdb,0x20, - 0x15,0xe7,0xca,0x20,0x93,0xe7,0x20,0x01, - 0xe8,0xca,0xa4,0xfb,0xb9,0x67,0x01,0x95, - 0x9f,0xb9,0x5f,0x01,0xa0,0x00,0x20,0x08, - 0xe7,0x20,0x82,0xe7,0x20,0x59,0xe7,0x20, - 0x15,0xe7,0xa4,0xfb,0xa5,0xce,0xf0,0x05, - 0x59,0x37,0x01,0x10,0x12,0xb9,0x3f,0x01, - 0x85,0xdc,0xb9,0x47,0x01,0x85,0xdd,0xbe, - 0x4f,0x01,0xb9,0x57,0x01,0xd0,0x87,0xc6, - 0xfb,0x60,0xa0,0x54,0xa5,0xfb,0xc9,0x08, - 0xf0,0x9a,0xe6,0xfb,0xa8,0xb5,0x50,0x99, - 0x20,0x01,0xb5,0x78,0x99,0x28,0x01,0x60, - 0x20,0x15,0xe7,0xa4,0xfb,0xa5,0xce,0x99, - 0x5f,0x01,0xa5,0xcf,0x99,0x67,0x01,0xa9, - 0x01,0x99,0x2f,0x01,0xa9,0x00,0x99,0x37, - 0x01,0xa5,0xdc,0x99,0x3f,0x01,0xa5,0xdd, - 0x99,0x47,0x01,0xa5,0xe0,0x99,0x4f,0x01, - 0xa5,0xe1,0x99,0x57,0x01,0x60,0x20,0x15, - 0xe7,0xa4,0xfb,0xa5,0xce,0x99,0x2f,0x01, - 0xa5,0xcf,0x4c,0x66,0xe9,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xab,0x03,0x03,0x03,0x03, - 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, - 0x03,0x03,0x3f,0x3f,0xc0,0xc0,0x3c,0x3c, - 0x3c,0x3c,0x3c,0x3c,0x3c,0x30,0x0f,0xc0, - 0xcc,0xff,0x55,0x00,0xab,0xab,0x03,0x03, - 0xff,0xff,0x55,0xff,0xff,0x55,0xcf,0xcf, - 0xcf,0xcf,0xcf,0xff,0x55,0xc3,0xc3,0xc3, - 0x55,0xf0,0xf0,0xcf,0x56,0x56,0x56,0x55, - 0xff,0xff,0x55,0x03,0x03,0x03,0x03,0x03, - 0x03,0x03,0xff,0xff,0xff,0x03,0x03,0x03, - 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, - 0x03,0x03,0x03,0x03,0x03,0x00,0xab,0x03, - 0x57,0x03,0x03,0x03,0x03,0x07,0x03,0x03, - 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, - 0x03,0x03,0xaa,0xff,0xff,0xff,0xff,0xff, - 0x17,0xff,0xff,0x19,0x5d,0x35,0x4b,0xf2, - 0xec,0x87,0x6f,0xad,0xb7,0xe2,0xf8,0x54, - 0x80,0x96,0x85,0x82,0x22,0x10,0x33,0x4a, - 0x13,0x06,0x0b,0x4a,0x01,0x40,0x47,0x7a, - 0x00,0xff,0x23,0x09,0x5b,0x16,0xb6,0xcb, - 0xff,0xff,0xfb,0xff,0xff,0x24,0xf6,0x4e, - 0x59,0x50,0x00,0xff,0x23,0xa3,0x6f,0x36, - 0x23,0xd7,0x1c,0x22,0xc2,0xae,0xba,0x23, - 0xff,0xff,0x21,0x30,0x1e,0x03,0xc4,0x20, - 0x00,0xc1,0xff,0xff,0xff,0xa0,0x30,0x1e, - 0xa4,0xd3,0xb6,0xbc,0xaa,0x3a,0x01,0x50, - 0x7e,0xd8,0xd8,0xa5,0x3c,0xff,0x16,0x5b, - 0x28,0x03,0xc4,0x1d,0x00,0x0c,0x4e,0x00, - 0x3e,0x00,0xa6,0xb0,0x00,0xbc,0xc6,0x57, - 0x8c,0x01,0x27,0xff,0xff,0xff,0xff,0xff, - 0xe8,0xff,0xff,0xe8,0xe0,0xe0,0xe0,0xef, - 0xef,0xe3,0xe3,0xe5,0xe5,0xe7,0xe7,0xee, - 0xef,0xef,0xe7,0xe7,0xe2,0xef,0xe7,0xe7, - 0xec,0xec,0xec,0xe7,0xec,0xec,0xec,0xe2, - 0x00,0xff,0xe8,0xe1,0xe8,0xe8,0xef,0xeb, - 0xff,0xff,0xe0,0xff,0xff,0xef,0xee,0xef, - 0xe7,0xe7,0x00,0xff,0xe8,0xe7,0xe7,0xe7, - 0xe8,0xe1,0xe2,0xee,0xee,0xee,0xee,0xe8, - 0xff,0xff,0xe1,0xe1,0xef,0xee,0xe7,0xe8, - 0xee,0xe7,0xff,0xff,0xff,0xee,0xe1,0xef, - 0xe7,0xe8,0xef,0xef,0xeb,0xe9,0xe8,0xe9, - 0xe9,0xe8,0xe8,0xe8,0xe8,0xff,0xe8,0xe8, - 0xe8,0xee,0xe7,0xe8,0xef,0xef,0xee,0xef, - 0xee,0xef,0xee,0xee,0xef,0xee,0xee,0xee, - 0xe1,0xe8,0xe8,0xff,0xff,0xff,0xff,0xff, - 0xbe,0xb3,0xb2,0xb7,0xb6,0x37,0xd4,0xcf, - 0xcf,0xa0,0xcc,0xcf,0xce,0x47,0xd3,0xd9, - 0xce,0xd4,0xc1,0x58,0xcd,0xc5,0xcd,0xa0, - 0xc6,0xd5,0xcc,0x4c,0xd4,0xcf,0xcf,0xa0, - 0xcd,0xc1,0xce,0xd9,0xa0,0xd0,0xc1,0xd2, - 0xc5,0xce,0x53,0xd3,0xd4,0xd2,0xc9,0xce, - 0x47,0xce,0xcf,0xa0,0xc5,0xce,0x44,0xc2, - 0xc1,0xc4,0xa0,0xc2,0xd2,0xc1,0xce,0xc3, - 0x48,0xbe,0xb8,0xa0,0xc7,0xcf,0xd3,0xd5, - 0xc2,0x53,0xc2,0xc1,0xc4,0xa0,0xd2,0xc5, - 0xd4,0xd5,0xd2,0x4e,0xbe,0xb8,0xa0,0xc6, - 0xcf,0xd2,0x53,0xc2,0xc1,0xc4,0xa0,0xce, - 0xc5,0xd8,0x54,0xd3,0xd4,0xcf,0xd0,0xd0, - 0xc5,0xc4,0xa0,0xc1,0xd4,0x20,0xaa,0xaa, - 0xaa,0x20,0xa0,0xc5,0xd2,0xd2,0x0d,0xbe, - 0xb2,0xb5,0x35,0xd2,0xc1,0xce,0xc7,0x45, - 0xc4,0xc9,0x4d,0xd3,0xd4,0xd2,0xa0,0xcf, - 0xd6,0xc6,0x4c,0xdc,0x0d,0xd2,0xc5,0xd4, - 0xd9,0xd0,0xc5,0xa0,0xcc,0xc9,0xce,0xc5, - 0x8d,0x3f,0x46,0xd9,0x90,0x03,0x4c,0xc3, - 0xe8,0xa6,0xcf,0x9a,0xa6,0xce,0xa0,0x8d, - 0xd0,0x02,0xa0,0x99,0x20,0xc4,0xe3,0x86, - 0xce,0xba,0x86,0xcf,0xa0,0xfe,0x84,0xd9, - 0xc8,0x84,0xc8,0x20,0x99,0xe2,0x84,0xf1, - 0xa2,0x20,0xa9,0x30,0x20,0x91,0xe4,0xe6, - 0xd9,0xa6,0xce,0xa4,0xc8,0x0a,0x85,0xce, - 0xc8,0xb9,0x00,0x02,0xc9,0x74,0xf0,0xd2, - 0x49,0xb0,0xc9,0x0a,0xb0,0xf0,0xc8,0xc8, - 0x84,0xc8,0xb9,0x00,0x02,0x48,0xb9,0xff, - 0x01,0xa0,0x00,0x20,0x08,0xe7,0x68,0x95, - 0xa0,0xa5,0xce,0xc9,0xc7,0xd0,0x03,0x20, - 0x6f,0xe7,0x4c,0x01,0xe8,0xff,0xff,0xff, - 0x50,0x20,0x13,0xec,0xd0,0x15,0x20,0x0b, - 0xec,0xd0,0x10,0x20,0x82,0xe7,0x20,0x6f, - 0xe7,0x50,0x03,0x20,0x82,0xe7,0x20,0x59, - 0xe7,0x56,0x50,0x4c,0x36,0xe7,0xff,0xff, - 0xc1,0xff,0x7f,0xd1,0xcc,0xc7,0xcf,0xce, - 0xc5,0x9a,0x98,0x8b,0x96,0x95,0x93,0xbf, - 0xb2,0x32,0x2d,0x2b,0xbc,0xb0,0xac,0xbe, - 0x35,0x8e,0x61,0xff,0xff,0xff,0xdd,0xfb, - 0x20,0xc9,0xef,0x15,0x4f,0x10,0x05,0x20, - 0xc9,0xef,0x35,0x4f,0x95,0x50,0x10,0xcb, - 0x4c,0xc9,0xef,0x40,0x60,0x8d,0x60,0x8b, - 0x00,0x7e,0x8c,0x33,0x00,0x00,0x60,0x03, - 0xbf,0x12,0x00,0x40,0x89,0xc9,0x47,0x9d, - 0x17,0x68,0x9d,0x0a,0x00,0x40,0x60,0x8d, - 0x60,0x8b,0x00,0x7e,0x8c,0x3c,0x00,0x00, - 0x60,0x03,0xbf,0x1b,0x4b,0x67,0xb4,0xa1, - 0x07,0x8c,0x07,0xae,0xa9,0xac,0xa8,0x67, - 0x8c,0x07,0xb4,0xaf,0xac,0xb0,0x67,0x9d, - 0xb2,0xaf,0xac,0xaf,0xa3,0x67,0x8c,0x07, - 0xa5,0xab,0xaf,0xb0,0xf4,0xae,0xa9,0xb2, - 0xb0,0x7f,0x0e,0x27,0xb4,0xae,0xa9,0xb2, - 0xb0,0x7f,0x0e,0x28,0xb4,0xae,0xa9,0xb2, - 0xb0,0x64,0x07,0xa6,0xa9,0x67,0xaf,0xb4, - 0xaf,0xa7,0x78,0xb4,0xa5,0xac,0x78,0x7f, - 0x02,0xad,0xa5,0xb2,0x67,0xa2,0xb5,0xb3, - 0xaf,0xa7,0xee,0xb2,0xb5,0xb4,0xa5,0xb2, - 0x7e,0x8c,0x39,0xb4,0xb8,0xa5,0xae,0x67, - 0xb0,0xa5,0xb4,0xb3,0x27,0xaf,0xb4,0x07, - 0x9d,0x19,0xb2,0xaf,0xa6,0x7f,0x05,0x37, - 0xb4,0xb5,0xb0,0xae,0xa9,0x7f,0x05,0x28, - 0xb4,0xb5,0xb0,0xae,0xa9,0x7f,0x05,0x2a, - 0xb4,0xb5,0xb0,0xae,0xa9,0xe4,0xae,0xa5, - 0x00,0xff,0xff,0x47,0xa2,0xa1,0xb4,0x7f, - 0x0d,0x30,0xad,0xa9,0xa4,0x7f,0x0d,0x23, - 0xad,0xa9,0xa4,0x67,0xac,0xac,0xa1,0xa3, - 0x00,0x40,0x80,0xc0,0xc1,0x80,0x00,0x47, - 0x8c,0x68,0x8c,0xdb,0x67,0x9b,0x68,0x9b, - 0x50,0x8c,0x63,0x8c,0x7f,0x01,0x51,0x07, - 0x88,0x29,0x84,0x80,0xc4,0x80,0x57,0x71, - 0x07,0x88,0x14,0xed,0xa5,0xad,0xaf,0xac, - 0xed,0xa5,0xad,0xa9,0xa8,0xf2,0xaf,0xac, - 0xaf,0xa3,0x71,0x08,0x88,0xae,0xa5,0xac, - 0x68,0x83,0x08,0x68,0x9d,0x08,0x71,0x07, - 0x88,0x60,0x76,0xb4,0xaf,0xae,0x76,0x8d, - 0x76,0x8b,0x51,0x07,0x88,0x19,0xb8,0xa4, - 0xae,0xb2,0xf2,0xb3,0xb5,0xf3,0xa2,0xa1, - 0xee,0xa7,0xb3,0xe4,0xae,0xb2,0xeb,0xa5, - 0xa5,0xb0,0x51,0x07,0x88,0x39,0x81,0xc1, - 0x4f,0x7f,0x0f,0x2f,0x00,0x51,0x06,0x88, - 0x29,0xc2,0x0c,0x82,0x57,0x8c,0x6a,0x8c, - 0x42,0xae,0xa5,0xa8,0xb4,0x60,0xae,0xa5, - 0xa8,0xb4,0x4f,0x7e,0x1e,0x35,0x8c,0x27, - 0x51,0x07,0x88,0x09,0x8b,0xfe,0xe4,0xaf, - 0xad,0xf2,0xaf,0xe4,0xae,0xa1,0xdc,0xde, - 0x9c,0xdd,0x9c,0xde,0xdd,0x9e,0xc3,0xdd, - 0xcf,0xca,0xcd,0xcb,0x00,0x47,0x9d,0xad, - 0xa5,0xad,0xaf,0xac,0x76,0x9d,0xad,0xa5, - 0xad,0xa9,0xa8,0xe6,0xa6,0xaf,0x60,0x8c, - 0x20,0xaf,0xb4,0xb5,0xa1,0xf2,0xac,0xa3, - 0xf2,0xa3,0xb3,0x60,0x8c,0x20,0xac,0xa5, - 0xa4,0xee,0xb5,0xb2,0x60,0xae,0xb5,0xb2, - 0xf4,0xb3,0xa9,0xac,0x60,0x8c,0x20,0xb4, - 0xb3,0xa9,0xac,0x7a,0x7e,0x9a,0x22,0x20, - 0x00,0x60,0x03,0xbf,0x60,0x03,0xbf,0x1f, - 0x20,0xb1,0xe7,0xe8,0xe8,0xb5,0x4f,0x85, - 0xda,0xb5,0x77,0x85,0xdb,0xb4,0x4e,0x98, - 0xd5,0x76,0xb0,0x09,0xb1,0xda,0x20,0xc9, - 0xe3,0xc8,0x4c,0x0f,0xee,0xa9,0xff,0x85, - 0xd5,0x60,0xe8,0xa9,0x00,0x95,0x78,0x95, - 0xa0,0xb5,0x77,0x38,0xf5,0x4f,0x95,0x50, - 0x4c,0x23,0xe8,0xff,0x20,0x15,0xe7,0xa5, - 0xcf,0xd0,0x28,0xa5,0xce,0x60,0x20,0x34, - 0xee,0xa4,0xc8,0xc9,0x30,0xb0,0x21,0xc0, - 0x28,0xb0,0x1d,0x60,0xea,0xea,0x20,0x34, - 0xee,0x60,0xea,0x8a,0xa2,0x01,0xb4,0xce, - 0x94,0x4c,0xb4,0x48,0x94,0xca,0xca,0xf0, - 0xf5,0xaa,0x60,0xa0,0x77,0x4c,0xe0,0xe3, - 0xa0,0x7b,0xd0,0xf9,0x20,0x54,0xe2,0xa5, - 0xda,0xd0,0x07,0xa5,0xdb,0xd0,0x03,0x4c, - 0x7e,0xe7,0x06,0xce,0x26,0xcf,0x26,0xe6, - 0x26,0xe7,0xa5,0xe6,0xc5,0xda,0xa5,0xe7, - 0xe5,0xdb,0x90,0x0a,0x85,0xe7,0xa5,0xe6, - 0xe5,0xda,0x85,0xe6,0xe6,0xce,0x88,0xd0, - 0xe1,0x60,0xff,0xff,0xff,0xff,0xff,0xff, - 0x20,0x15,0xe7,0x6c,0xce,0x00,0xa5,0x4c, - 0xd0,0x02,0xc6,0x4d,0xc6,0x4c,0xa5,0x48, - 0xd0,0x02,0xc6,0x49,0xc6,0x48,0xa0,0x00, - 0xb1,0x4c,0x91,0x48,0xa5,0xca,0xc5,0x4c, - 0xa5,0xcb,0xe5,0x4d,0x90,0xe0,0x4c,0x53, - 0xee,0xc9,0x28,0xb0,0x9b,0xa8,0xa5,0xc8, - 0x60,0xea,0xea,0x98,0xaa,0xa0,0x6e,0x20, - 0xc4,0xe3,0x8a,0xa8,0x20,0xc4,0xe3,0xa0, - 0x72,0x4c,0xc4,0xe3,0x20,0x15,0xe7,0x06, - 0xce,0x26,0xcf,0x30,0xfa,0xb0,0xdc,0xd0, - 0x04,0xc5,0xce,0xb0,0xd6,0x60,0x20,0x15, - 0xe7,0xb1,0xce,0x94,0x9f,0x4c,0x08,0xe7, - 0x20,0x34,0xee,0xa5,0xce,0x48,0x20,0x15, - 0xe7,0x68,0x91,0xce,0x60,0xff,0xff,0xff, - 0x20,0x6c,0xee,0xa5,0xce,0x85,0xe6,0xa5, - 0xcf,0x85,0xe7,0x4c,0x44,0xe2,0x20,0xe4, - 0xee,0x4c,0x34,0xe1,0x20,0xe4,0xee,0xb4, - 0x78,0xb5,0x50,0x69,0xfe,0xb0,0x01,0x88, - 0x85,0xda,0x84,0xdb,0x18,0x65,0xce,0x95, - 0x50,0x98,0x65,0xcf,0x95,0x78,0xa0,0x00, - 0xb5,0x50,0xd1,0xda,0xc8,0xb5,0x78,0xf1, - 0xda,0xb0,0x80,0x4c,0x23,0xe8,0x20,0x15, - 0xe7,0xa5,0x4e,0x20,0x08,0xe7,0xa5,0x4f, - 0xd0,0x04,0xc5,0x4e,0x69,0x00,0x29,0x7f, - 0x85,0x4f,0x95,0xa0,0xa0,0x11,0xa5,0x4f, - 0x0a,0x18,0x69,0x40,0x0a,0x26,0x4e,0x26, - 0x4f,0x88,0xd0,0xf2,0xa5,0xce,0x20,0x08, - 0xe7,0xa5,0xcf,0x95,0xa0,0x4c,0x7a,0xe2, - 0x20,0x15,0xe7,0xa4,0xce,0xc4,0x4c,0xa5, - 0xcf,0xe5,0x4d,0x90,0x1f,0x84,0x48,0xa5, - 0xcf,0x85,0x49,0x4c,0xb6,0xee,0x20,0x15, - 0xe7,0xa4,0xce,0xc4,0xca,0xa5,0xcf,0xe5, - 0xcb,0xb0,0x09,0x84,0x4a,0xa5,0xcf,0x85, - 0x4b,0x4c,0xb7,0xe5,0x4c,0xcb,0xee,0xea, - 0xea,0xea,0xea,0x20,0xc9,0xef,0x20,0x71, - 0xe1,0x4c,0xbf,0xef,0x20,0x03,0xee,0xa9, - 0xff,0x85,0xc8,0xa9,0x74,0x8d,0x00,0x02, - 0x60,0x20,0x36,0xe7,0xe8,0x20,0x36,0xe7, - 0xb5,0x50,0x60,0xa9,0x00,0x85,0x4a,0x85, - 0x4c,0xa9,0x08,0x85,0x4b,0xa9,0x10,0x85, - 0x4d,0x4c,0xad,0xe5,0xd5,0x78,0xd0,0x01, - 0x18,0x4c,0x02,0xe1,0x20,0xb7,0xe5,0x4c, - 0x36,0xe8,0x20,0xb7,0xe5,0x4c,0x5b,0xe8, - 0xe0,0x80,0xd0,0x01,0x88,0x4c,0x0c,0xe0 - ]; - return { - start: function basic_start() { - return 0xe0; - }, - end: function basic_end() { - return 0xef; - }, - read: function basic_read(page, off) { - return ram[(page - 0xe0) << 8 | off]; - }, - write: function basic_write(page, off, val) { - ram[(page - 0xe0) << 8 | off] = val; - }, - - getState: function() { - return {}; - }, - - setState: function() { - } - }; -} diff --git a/js/roms/basic.ts b/js/roms/basic.ts new file mode 100644 index 0000000..b33ba68 --- /dev/null +++ b/js/roms/basic.ts @@ -0,0 +1,367 @@ +import { byte } from 'js/types'; + +export default class Basic { + ram = [ + 0x4c, 0xb0, 0xe2, 0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad, 0x10, 0xd0, 0x60, + 0x8a, 0x29, 0x20, 0xf0, 0x23, 0xa9, 0xa0, 0x85, 0xe4, 0x4c, 0xc9, 0xe3, + 0xa9, 0x20, 0xc5, 0x24, 0xb0, 0x0c, 0xa9, 0x8d, 0xa0, 0x07, 0x20, 0xc9, + 0xe3, 0xa9, 0xa0, 0x88, 0xd0, 0xf8, 0xa0, 0x00, 0xb1, 0xe2, 0xe6, 0xe2, + 0xd0, 0x02, 0xe6, 0xe3, 0x60, 0x20, 0x15, 0xe7, 0x20, 0x76, 0xe5, 0xa5, + 0xe2, 0xc5, 0xe6, 0xa5, 0xe3, 0xe5, 0xe7, 0xb0, 0xef, 0x20, 0x6d, 0xe0, + 0x4c, 0x3b, 0xe0, 0xa5, 0xca, 0x85, 0xe2, 0xa5, 0xcb, 0x85, 0xe3, 0xa5, + 0x4c, 0x85, 0xe6, 0xa5, 0x4d, 0x85, 0xe7, 0xd0, 0xde, 0x20, 0x15, 0xe7, + 0x20, 0x6d, 0xe5, 0xa5, 0xe4, 0x85, 0xe2, 0xa5, 0xe5, 0x85, 0xe3, 0xb0, + 0xc7, 0x86, 0xd8, 0xa9, 0xa0, 0x85, 0xfa, 0x20, 0x2a, 0xe0, 0x98, 0x85, + 0xe4, 0x20, 0x2a, 0xe0, 0xaa, 0x20, 0x2a, 0xe0, 0x20, 0x1b, 0xe5, 0x20, + 0x18, 0xe0, 0x84, 0xfa, 0xaa, 0x10, 0x18, 0x0a, 0x10, 0xe9, 0xa5, 0xe4, + 0xd0, 0x03, 0x20, 0x11, 0xe0, 0x8a, 0x20, 0xc9, 0xe3, 0xa9, 0x25, 0x20, + 0x1a, 0xe0, 0xaa, 0x30, 0xf5, 0x85, 0xe4, 0xc9, 0x01, 0xd0, 0x05, 0xa6, + 0xd8, 0x4c, 0xcd, 0xe3, 0x48, 0x84, 0xce, 0xa2, 0xed, 0x86, 0xcf, 0xc9, + 0x51, 0x90, 0x04, 0xc6, 0xcf, 0xe9, 0x50, 0x48, 0xb1, 0xce, 0xaa, 0x88, + 0xb1, 0xce, 0x10, 0xfa, 0xe0, 0xc0, 0xb0, 0x04, 0xe0, 0x00, 0x30, 0xf2, + 0xaa, 0x68, 0xe9, 0x01, 0xd0, 0xe9, 0x24, 0xe4, 0x30, 0x03, 0x20, 0xf8, + 0xef, 0xb1, 0xce, 0x10, 0x10, 0xaa, 0x29, 0x3f, 0x85, 0xe4, 0x18, 0x69, + 0xa0, 0x20, 0xc9, 0xe3, 0x88, 0xe0, 0xc0, 0x90, 0xec, 0x20, 0x0c, 0xe0, + 0x68, 0xc9, 0x5d, 0xf0, 0xa4, 0xc9, 0x28, 0xd0, 0x8a, 0xf0, 0x9e, 0x20, + 0x18, 0xe1, 0x95, 0x50, 0xd5, 0x78, 0x90, 0x11, 0xa0, 0x2b, 0x4c, 0xe0, + 0xe3, 0x20, 0x34, 0xee, 0xd5, 0x50, 0x90, 0xf4, 0x20, 0xe4, 0xef, 0x95, + 0x78, 0x4c, 0x23, 0xe8, 0x20, 0x34, 0xee, 0xf0, 0xe7, 0x38, 0xe9, 0x01, + 0x60, 0x20, 0x18, 0xe1, 0x95, 0x50, 0x18, 0xf5, 0x78, 0x4c, 0x02, 0xe1, + 0xa0, 0x14, 0xd0, 0xd6, 0x20, 0x18, 0xe1, 0xe8, 0xb5, 0x50, 0x85, 0xda, + 0x65, 0xce, 0x48, 0xa8, 0xb5, 0x78, 0x85, 0xdb, 0x65, 0xcf, 0x48, 0xc4, + 0xca, 0xe5, 0xcb, 0xb0, 0xe3, 0xa5, 0xda, 0x69, 0xfe, 0x85, 0xda, 0xa9, + 0xff, 0xa8, 0x65, 0xdb, 0x85, 0xdb, 0xc8, 0xb1, 0xda, 0xd9, 0xcc, 0x00, + 0xd0, 0x0f, 0x98, 0xf0, 0xf5, 0x68, 0x91, 0xda, 0x99, 0xcc, 0x00, 0x88, + 0x10, 0xf7, 0xe8, 0x60, 0xea, 0xa0, 0x80, 0xd0, 0x95, 0xa9, 0x00, 0x20, + 0x0a, 0xe7, 0xa0, 0x02, 0x94, 0x78, 0x20, 0x0a, 0xe7, 0xa9, 0xbf, 0x20, + 0xc9, 0xe3, 0xa0, 0x00, 0x20, 0x9e, 0xe2, 0x94, 0x78, 0xea, 0xea, 0xea, + 0xb5, 0x51, 0x85, 0xce, 0xb5, 0x79, 0x85, 0xcf, 0xe8, 0xe8, 0x20, 0xbc, + 0xe1, 0xb5, 0x4e, 0xd5, 0x76, 0xb0, 0x15, 0xf6, 0x4e, 0xa8, 0xb1, 0xce, + 0xb4, 0x50, 0xc4, 0xe4, 0x90, 0x04, 0xa0, 0x83, 0xd0, 0xc1, 0x91, 0xda, + 0xf6, 0x50, 0x90, 0xe5, 0xb4, 0x50, 0x8a, 0x91, 0xda, 0xe8, 0xe8, 0x60, + 0xb5, 0x51, 0x85, 0xda, 0x38, 0xe9, 0x02, 0x85, 0xe4, 0xb5, 0x79, 0x85, + 0xdb, 0xe9, 0x00, 0x85, 0xe5, 0xa0, 0x00, 0xb1, 0xe4, 0x18, 0xe5, 0xda, + 0x85, 0xe4, 0x60, 0xb5, 0x53, 0x85, 0xce, 0xb5, 0x7b, 0x85, 0xcf, 0xb5, + 0x51, 0x85, 0xda, 0xb5, 0x79, 0x85, 0xdb, 0xe8, 0xe8, 0xe8, 0xa0, 0x00, + 0x94, 0x78, 0x94, 0xa0, 0xc8, 0x94, 0x50, 0xb5, 0x4d, 0xd5, 0x75, 0x08, + 0x48, 0xb5, 0x4f, 0xd5, 0x77, 0x90, 0x07, 0x68, 0x28, 0xb0, 0x02, 0x56, + 0x50, 0x60, 0xa8, 0xb1, 0xce, 0x85, 0xe4, 0x68, 0xa8, 0x28, 0xb0, 0xf3, + 0xb1, 0xda, 0xc5, 0xe4, 0xd0, 0xed, 0xf6, 0x4f, 0xf6, 0x4d, 0xb0, 0xd7, + 0x20, 0xd7, 0xe1, 0x4c, 0x36, 0xe7, 0x20, 0x54, 0xe2, 0x06, 0xce, 0x26, + 0xcf, 0x90, 0x0d, 0x18, 0xa5, 0xe6, 0x65, 0xda, 0x85, 0xe6, 0xa5, 0xe7, + 0x65, 0xdb, 0x85, 0xe7, 0x88, 0xf0, 0x09, 0x06, 0xe6, 0x26, 0xe7, 0x10, + 0xe4, 0x4c, 0x7e, 0xe7, 0xa5, 0xe6, 0x20, 0x08, 0xe7, 0xa5, 0xe7, 0x95, + 0xa0, 0x06, 0xe5, 0x90, 0x28, 0x4c, 0x6f, 0xe7, 0xa9, 0x55, 0x85, 0xe5, + 0x20, 0x5b, 0xe2, 0xa5, 0xce, 0x85, 0xda, 0xa5, 0xcf, 0x85, 0xdb, 0x20, + 0x15, 0xe7, 0x84, 0xe6, 0x84, 0xe7, 0xa5, 0xcf, 0x10, 0x09, 0xca, 0x06, + 0xe5, 0x20, 0x6f, 0xe7, 0x20, 0x15, 0xe7, 0xa0, 0x10, 0x60, 0x20, 0x6c, + 0xee, 0xf0, 0xc5, 0xff, 0xc9, 0x84, 0xd0, 0x02, 0x46, 0xf8, 0xc9, 0xdf, + 0xf0, 0x11, 0xc9, 0x9b, 0xf0, 0x06, 0x99, 0x00, 0x02, 0xc8, 0x10, 0x0a, + 0xa0, 0x8b, 0x20, 0xc4, 0xe3, 0xa0, 0x01, 0x88, 0x30, 0xf6, 0x20, 0x03, + 0xe0, 0xea, 0xea, 0x20, 0xc9, 0xe3, 0xc9, 0x8d, 0xd0, 0xd6, 0xa9, 0xdf, + 0x99, 0x00, 0x02, 0x60, 0x20, 0xd3, 0xef, 0x20, 0xcd, 0xe3, 0x46, 0xd9, + 0xa9, 0xbe, 0x20, 0xc9, 0xe3, 0xa0, 0x00, 0x84, 0xfa, 0x24, 0xf8, 0x10, + 0x0c, 0xa6, 0xf6, 0xa5, 0xf7, 0x20, 0x1b, 0xe5, 0xa9, 0xa0, 0x20, 0xc9, + 0xe3, 0xa2, 0xff, 0x9a, 0x20, 0x9e, 0xe2, 0x84, 0xf1, 0x8a, 0x85, 0xc8, + 0xa2, 0x20, 0x20, 0x91, 0xe4, 0xa5, 0xc8, 0x69, 0x00, 0x85, 0xe0, 0xa9, + 0x00, 0xaa, 0x69, 0x02, 0x85, 0xe1, 0xa1, 0xe0, 0x29, 0xf0, 0xc9, 0xb0, + 0xf0, 0x03, 0x4c, 0x83, 0xe8, 0xa0, 0x02, 0xb1, 0xe0, 0x99, 0xcd, 0x00, + 0x88, 0xd0, 0xf8, 0x20, 0x8a, 0xe3, 0xa5, 0xf1, 0xe5, 0xc8, 0xc9, 0x04, + 0xf0, 0xa8, 0x91, 0xe0, 0xa5, 0xca, 0xf1, 0xe0, 0x85, 0xe4, 0xa5, 0xcb, + 0xe9, 0x00, 0x85, 0xe5, 0xa5, 0xe4, 0xc5, 0xcc, 0xa5, 0xe5, 0xe5, 0xcd, + 0x90, 0x45, 0xa5, 0xca, 0xf1, 0xe0, 0x85, 0xe6, 0xa5, 0xcb, 0xe9, 0x00, + 0x85, 0xe7, 0xb1, 0xca, 0x91, 0xe6, 0xe6, 0xca, 0xd0, 0x02, 0xe6, 0xcb, + 0xa5, 0xe2, 0xc5, 0xca, 0xa5, 0xe3, 0xe5, 0xcb, 0xb0, 0xe0, 0xb5, 0xe4, + 0x95, 0xca, 0xca, 0x10, 0xf9, 0xb1, 0xe0, 0xa8, 0x88, 0xb1, 0xe0, 0x91, + 0xe6, 0x98, 0xd0, 0xf8, 0x24, 0xf8, 0x10, 0x09, 0xb5, 0xf7, 0x75, 0xf5, + 0x95, 0xf7, 0xe8, 0xf0, 0xf7, 0x10, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xa0, + 0x14, 0xd0, 0x71, 0x20, 0x15, 0xe7, 0xa5, 0xe2, 0x85, 0xe6, 0xa5, 0xe3, + 0x85, 0xe7, 0x20, 0x75, 0xe5, 0xa5, 0xe2, 0x85, 0xe4, 0xa5, 0xe3, 0x85, + 0xe5, 0xd0, 0x0e, 0x20, 0x15, 0xe7, 0x20, 0x6d, 0xe5, 0xa5, 0xe6, 0x85, + 0xe2, 0xa5, 0xe7, 0x85, 0xe3, 0xa0, 0x00, 0xa5, 0xca, 0xc5, 0xe4, 0xa5, + 0xcb, 0xe5, 0xe5, 0xb0, 0x16, 0xa5, 0xe4, 0xd0, 0x02, 0xc6, 0xe5, 0xc6, + 0xe4, 0xa5, 0xe6, 0xd0, 0x02, 0xc6, 0xe7, 0xc6, 0xe6, 0xb1, 0xe4, 0x91, + 0xe6, 0x90, 0xe0, 0xa5, 0xe6, 0x85, 0xca, 0xa5, 0xe7, 0x85, 0xcb, 0x60, + 0x20, 0xc9, 0xe3, 0xc8, 0xb9, 0x00, 0xeb, 0x30, 0xf7, 0xc9, 0x8d, 0xd0, + 0x06, 0xa9, 0x00, 0x85, 0x24, 0xa9, 0x8d, 0xe6, 0x24, 0x2c, 0xf2, 0xd0, + 0x30, 0xfb, 0x8d, 0xf2, 0xd0, 0x60, 0xa0, 0x06, 0x20, 0xd3, 0xee, 0x24, + 0xd9, 0x30, 0x03, 0x4c, 0xb6, 0xe2, 0x4c, 0x9a, 0xeb, 0x2a, 0x69, 0xa0, + 0xdd, 0x00, 0x02, 0xd0, 0x53, 0xb1, 0xfe, 0x0a, 0x30, 0x06, 0x88, 0xb1, + 0xfe, 0x30, 0x29, 0xc8, 0x86, 0xc8, 0x98, 0x48, 0xa2, 0x00, 0xa1, 0xfe, + 0xaa, 0x4a, 0x49, 0x48, 0x11, 0xfe, 0xc9, 0xc0, 0x90, 0x01, 0xe8, 0xc8, + 0xd0, 0xf3, 0x68, 0xa8, 0x8a, 0x4c, 0xc0, 0xe4, 0xe6, 0xf1, 0xa6, 0xf1, + 0xf0, 0xbc, 0x9d, 0x00, 0x02, 0x60, 0xa6, 0xc8, 0xa9, 0xa0, 0xe8, 0xdd, + 0x00, 0x02, 0xb0, 0xfa, 0xb1, 0xfe, 0x29, 0x3f, 0x4a, 0xd0, 0xb6, 0xbd, + 0x00, 0x02, 0xb0, 0x06, 0x69, 0x3f, 0xc9, 0x1a, 0x90, 0x6f, 0x69, 0x4f, + 0xc9, 0x0a, 0x90, 0x69, 0xa6, 0xfd, 0xc8, 0xb1, 0xfe, 0x29, 0xe0, 0xc9, + 0x20, 0xf0, 0x7a, 0xb5, 0xa8, 0x85, 0xc8, 0xb5, 0xd1, 0x85, 0xf1, 0x88, + 0xb1, 0xfe, 0x0a, 0x10, 0xfa, 0x88, 0xb0, 0x38, 0x0a, 0x30, 0x35, 0xb4, + 0x58, 0x84, 0xff, 0xb4, 0x80, 0xe8, 0x10, 0xda, 0xf0, 0xb3, 0xc9, 0x7e, + 0xb0, 0x22, 0xca, 0x10, 0x04, 0xa0, 0x06, 0x10, 0x29, 0x94, 0x80, 0xa4, + 0xff, 0x94, 0x58, 0xa4, 0xc8, 0x94, 0xa8, 0xa4, 0xf1, 0x94, 0xd1, 0x29, + 0x1f, 0xa8, 0xb9, 0x20, 0xec, 0x0a, 0xa8, 0xa9, 0x76, 0x2a, 0x85, 0xff, + 0xd0, 0x01, 0xc8, 0xc8, 0x86, 0xfd, 0xb1, 0xfe, 0x30, 0x84, 0xd0, 0x05, + 0xa0, 0x0e, 0x4c, 0xe0, 0xe3, 0xc9, 0x03, 0xb0, 0xc3, 0x4a, 0xa6, 0xc8, + 0xe8, 0xbd, 0x00, 0x02, 0x90, 0x04, 0xc9, 0xa2, 0xf0, 0x0a, 0xc9, 0xdf, + 0xf0, 0x06, 0x86, 0xc8, 0x20, 0x1c, 0xe4, 0xc8, 0x88, 0xa6, 0xfd, 0xb1, + 0xfe, 0x88, 0x0a, 0x10, 0xcf, 0xb4, 0x58, 0x84, 0xff, 0xb4, 0x80, 0xe8, + 0xb1, 0xfe, 0x29, 0x9f, 0xd0, 0xed, 0x85, 0xf2, 0x85, 0xf3, 0x98, 0x48, + 0x86, 0xfd, 0xb4, 0xd0, 0x84, 0xc9, 0x18, 0xa9, 0x0a, 0x85, 0xf9, 0xa2, + 0x00, 0xc8, 0xb9, 0x00, 0x02, 0x29, 0x0f, 0x65, 0xf2, 0x48, 0x8a, 0x65, + 0xf3, 0x30, 0x1c, 0xaa, 0x68, 0xc6, 0xf9, 0xd0, 0xf2, 0x85, 0xf2, 0x86, + 0xf3, 0xc4, 0xf1, 0xd0, 0xde, 0xa4, 0xc9, 0xc8, 0x84, 0xf1, 0x20, 0x1c, + 0xe4, 0x68, 0xa8, 0xa5, 0xf3, 0xb0, 0xa9, 0xa0, 0x00, 0x10, 0x8b, 0x85, + 0xf3, 0x86, 0xf2, 0xa2, 0x04, 0x86, 0xc9, 0xa9, 0xb0, 0x85, 0xf9, 0xa5, + 0xf2, 0xdd, 0x63, 0xe5, 0xa5, 0xf3, 0xfd, 0x68, 0xe5, 0x90, 0x0d, 0x85, + 0xf3, 0xa5, 0xf2, 0xfd, 0x63, 0xe5, 0x85, 0xf2, 0xe6, 0xf9, 0xd0, 0xe7, + 0xa5, 0xf9, 0xe8, 0xca, 0xf0, 0x0e, 0xc9, 0xb0, 0xf0, 0x02, 0x85, 0xc9, + 0x24, 0xc9, 0x30, 0x04, 0xa5, 0xfa, 0xf0, 0x0b, 0x20, 0xc9, 0xe3, 0x24, + 0xf8, 0x10, 0x04, 0x99, 0x00, 0x02, 0xc8, 0xca, 0x10, 0xc1, 0x60, 0x01, + 0x0a, 0x64, 0xe8, 0x10, 0x00, 0x00, 0x00, 0x03, 0x27, 0xa5, 0xca, 0x85, + 0xe6, 0xa5, 0xcb, 0x85, 0xe7, 0xe8, 0xa5, 0xe7, 0x85, 0xe5, 0xa5, 0xe6, + 0x85, 0xe4, 0xc5, 0x4c, 0xa5, 0xe5, 0xe5, 0x4d, 0xb0, 0x26, 0xa0, 0x01, + 0xb1, 0xe4, 0xe5, 0xce, 0xc8, 0xb1, 0xe4, 0xe5, 0xcf, 0xb0, 0x19, 0xa0, + 0x00, 0xa5, 0xe6, 0x71, 0xe4, 0x85, 0xe6, 0x90, 0x03, 0xe6, 0xe7, 0x18, + 0xc8, 0xa5, 0xce, 0xf1, 0xe4, 0xc8, 0xa5, 0xcf, 0xf1, 0xe4, 0xb0, 0xca, + 0x60, 0x46, 0xf8, 0xa5, 0x4c, 0x85, 0xca, 0xa5, 0x4d, 0x85, 0xcb, 0xa5, + 0x4a, 0x85, 0xcc, 0xa5, 0x4b, 0x85, 0xcd, 0xa9, 0x00, 0x85, 0xfb, 0x85, + 0xfc, 0x85, 0xfe, 0xa9, 0x00, 0x85, 0x1d, 0x60, 0xa5, 0xd0, 0x69, 0x05, + 0x85, 0xd2, 0xa5, 0xd1, 0x69, 0x00, 0x85, 0xd3, 0xa5, 0xd2, 0xc5, 0xca, + 0xa5, 0xd3, 0xe5, 0xcb, 0x90, 0x03, 0x4c, 0x6b, 0xe3, 0xa5, 0xce, 0x91, + 0xd0, 0xa5, 0xcf, 0xc8, 0x91, 0xd0, 0xa5, 0xd2, 0xc8, 0x91, 0xd0, 0xa5, + 0xd3, 0xc8, 0x91, 0xd0, 0xa9, 0x00, 0xc8, 0x91, 0xd0, 0xc8, 0x91, 0xd0, + 0xa5, 0xd2, 0x85, 0xcc, 0xa5, 0xd3, 0x85, 0xcd, 0xa5, 0xd0, 0x90, 0x43, + 0x85, 0xce, 0x84, 0xcf, 0x20, 0xff, 0xe6, 0x30, 0x0e, 0xc9, 0x40, 0xf0, + 0x0a, 0x4c, 0x28, 0xe6, 0x06, 0xc9, 0x49, 0xd0, 0x07, 0xa9, 0x49, 0x85, + 0xcf, 0x20, 0xff, 0xe6, 0xa5, 0x4b, 0x85, 0xd1, 0xa5, 0x4a, 0x85, 0xd0, + 0xc5, 0xcc, 0xa5, 0xd1, 0xe5, 0xcd, 0xb0, 0x94, 0xb1, 0xd0, 0xc8, 0xc5, + 0xce, 0xd0, 0x06, 0xb1, 0xd0, 0xc5, 0xcf, 0xf0, 0x0e, 0xc8, 0xb1, 0xd0, + 0x48, 0xc8, 0xb1, 0xd0, 0x85, 0xd1, 0x68, 0xa0, 0x00, 0xf0, 0xdb, 0xa5, + 0xd0, 0x69, 0x03, 0x20, 0x0a, 0xe7, 0xa5, 0xd1, 0x69, 0x00, 0x95, 0x78, + 0xa5, 0xcf, 0xc9, 0x40, 0xd0, 0x1c, 0x88, 0x98, 0x20, 0x0a, 0xe7, 0x88, + 0x94, 0x78, 0xa0, 0x03, 0xf6, 0x78, 0xc8, 0xb1, 0xd0, 0x30, 0xf9, 0x10, + 0x09, 0xa9, 0x00, 0x85, 0xd4, 0x85, 0xd5, 0xa2, 0x20, 0x48, 0xa0, 0x00, + 0xb1, 0xe0, 0x10, 0x18, 0x0a, 0x30, 0x81, 0x20, 0xff, 0xe6, 0x20, 0x08, + 0xe7, 0x20, 0xff, 0xe6, 0x95, 0xa0, 0x24, 0xd4, 0x10, 0x01, 0xca, 0x20, + 0xff, 0xe6, 0xb0, 0xe6, 0xc9, 0x28, 0xd0, 0x1f, 0xa5, 0xe0, 0x20, 0x0a, + 0xe7, 0xa5, 0xe1, 0x95, 0x78, 0x24, 0xd4, 0x30, 0x0b, 0xa9, 0x01, 0x20, + 0x0a, 0xe7, 0xa9, 0x00, 0x95, 0x78, 0xf6, 0x78, 0x20, 0xff, 0xe6, 0x30, + 0xf9, 0xb0, 0xd3, 0x24, 0xd4, 0x10, 0x06, 0xc9, 0x04, 0xb0, 0xd0, 0x46, + 0xd4, 0xa8, 0x85, 0xd6, 0xb9, 0x98, 0xe9, 0x29, 0x55, 0x0a, 0x85, 0xd7, + 0x68, 0xa8, 0xb9, 0x98, 0xe9, 0x29, 0xaa, 0xc5, 0xd7, 0xb0, 0x09, 0x98, + 0x48, 0x20, 0xff, 0xe6, 0xa5, 0xd6, 0x90, 0x95, 0xb9, 0x10, 0xea, 0x85, + 0xce, 0xb9, 0x88, 0xea, 0x85, 0xcf, 0x20, 0xfc, 0xe6, 0x4c, 0xd8, 0xe6, + 0x6c, 0xce, 0x00, 0xe6, 0xe0, 0xd0, 0x02, 0xe6, 0xe1, 0xb1, 0xe0, 0x60, + 0x94, 0x77, 0xca, 0x30, 0x03, 0x95, 0x50, 0x60, 0xa0, 0x66, 0x4c, 0xe0, + 0xe3, 0xa0, 0x00, 0xb5, 0x50, 0x85, 0xce, 0xb5, 0xa0, 0x85, 0xcf, 0xb5, + 0x78, 0xf0, 0x0e, 0x85, 0xcf, 0xb1, 0xce, 0x48, 0xc8, 0xb1, 0xce, 0x85, + 0xcf, 0x68, 0x85, 0xce, 0x88, 0xe8, 0x60, 0x20, 0x4a, 0xe7, 0x20, 0x15, + 0xe7, 0x98, 0x20, 0x08, 0xe7, 0x95, 0xa0, 0xc5, 0xce, 0xd0, 0x06, 0xc5, + 0xcf, 0xd0, 0x02, 0xf6, 0x50, 0x60, 0x20, 0x82, 0xe7, 0x20, 0x59, 0xe7, + 0x20, 0x15, 0xe7, 0x24, 0xcf, 0x30, 0x1b, 0xca, 0x60, 0x20, 0x15, 0xe7, + 0xa5, 0xcf, 0xd0, 0x04, 0xa5, 0xce, 0xf0, 0xf3, 0xa9, 0xff, 0x20, 0x08, + 0xe7, 0x95, 0xa0, 0x24, 0xcf, 0x30, 0xe9, 0x20, 0x15, 0xe7, 0x98, 0x38, + 0xe5, 0xce, 0x20, 0x08, 0xe7, 0x98, 0xe5, 0xcf, 0x50, 0x23, 0xa0, 0x00, + 0x10, 0x90, 0x20, 0x6f, 0xe7, 0x20, 0x15, 0xe7, 0xa5, 0xce, 0x85, 0xda, + 0xa5, 0xcf, 0x85, 0xdb, 0x20, 0x15, 0xe7, 0x18, 0xa5, 0xce, 0x65, 0xda, + 0x20, 0x08, 0xe7, 0xa5, 0xcf, 0x65, 0xdb, 0x70, 0xdd, 0x95, 0xa0, 0x60, + 0x20, 0x15, 0xe7, 0xa4, 0xce, 0xf0, 0x05, 0x88, 0xa5, 0xcf, 0xf0, 0x0c, + 0x60, 0xa5, 0x24, 0x09, 0x07, 0xa8, 0xc8, 0xa9, 0xa0, 0x20, 0xc9, 0xe3, + 0xc4, 0x24, 0xb0, 0xf7, 0x60, 0x20, 0xb1, 0xe7, 0x20, 0x15, 0xe7, 0xa5, + 0xcf, 0x10, 0x0a, 0xa9, 0xad, 0x20, 0xc9, 0xe3, 0x20, 0x72, 0xe7, 0x50, + 0xef, 0x88, 0x84, 0xd5, 0x86, 0xcf, 0xa6, 0xce, 0x20, 0x1b, 0xe5, 0xa6, + 0xcf, 0x60, 0x20, 0x15, 0xe7, 0xa5, 0xce, 0x85, 0xf6, 0xa5, 0xcf, 0x85, + 0xf7, 0x88, 0x84, 0xf8, 0xc8, 0xa9, 0x0a, 0x85, 0xf4, 0x84, 0xf5, 0x60, + 0x20, 0x15, 0xe7, 0xa5, 0xce, 0xa4, 0xcf, 0x10, 0xf2, 0x20, 0x15, 0xe7, + 0xb5, 0x50, 0x85, 0xda, 0xb5, 0x78, 0x85, 0xdb, 0xa5, 0xce, 0x91, 0xda, + 0xc8, 0xa5, 0xcf, 0x91, 0xda, 0xe8, 0x60, 0x68, 0x68, 0x24, 0xd5, 0x10, + 0x05, 0x20, 0xcd, 0xe3, 0x46, 0xd5, 0x60, 0xa0, 0xff, 0x84, 0xd7, 0x60, + 0x20, 0xcd, 0xef, 0xf0, 0x07, 0xa9, 0x25, 0x85, 0xd6, 0x88, 0x84, 0xd4, + 0xe8, 0x60, 0xa5, 0xca, 0xa4, 0xcb, 0xd0, 0x5a, 0xa0, 0x41, 0xa5, 0xfc, + 0xc9, 0x08, 0xb0, 0x5e, 0xa8, 0xe6, 0xfc, 0xa5, 0xe0, 0x99, 0x00, 0x01, + 0xa5, 0xe1, 0x99, 0x08, 0x01, 0xa5, 0xdc, 0x99, 0x10, 0x01, 0xa5, 0xdd, + 0x99, 0x18, 0x01, 0x20, 0x15, 0xe7, 0x20, 0x6d, 0xe5, 0x90, 0x04, 0xa0, + 0x37, 0xd0, 0x3b, 0xa5, 0xe4, 0xa4, 0xe5, 0x85, 0xdc, 0x84, 0xdd, 0x2c, + 0x11, 0xd0, 0x30, 0x4f, 0x18, 0x69, 0x03, 0x90, 0x01, 0xc8, 0xa2, 0xff, + 0x86, 0xd9, 0x9a, 0x85, 0xe0, 0x84, 0xe1, 0x20, 0x79, 0xe6, 0x24, 0xd9, + 0x10, 0x49, 0x18, 0xa0, 0x00, 0xa5, 0xdc, 0x71, 0xdc, 0xa4, 0xdd, 0x90, + 0x01, 0xc8, 0xc5, 0x4c, 0xd0, 0xd1, 0xc4, 0x4d, 0xd0, 0xcd, 0xa0, 0x34, + 0x46, 0xd9, 0x4c, 0xe0, 0xe3, 0xa0, 0x4a, 0xa5, 0xfc, 0xf0, 0xf7, 0xc6, + 0xfc, 0xa8, 0xb9, 0x0f, 0x01, 0x85, 0xdc, 0xb9, 0x17, 0x01, 0x85, 0xdd, + 0xbe, 0xff, 0x00, 0xb9, 0x07, 0x01, 0xa8, 0x8a, 0x4c, 0x7a, 0xe8, 0xa0, + 0x63, 0x20, 0xc4, 0xe3, 0xa0, 0x01, 0xb1, 0xdc, 0xaa, 0xc8, 0xb1, 0xdc, + 0x20, 0x1b, 0xe5, 0x4c, 0xb3, 0xe2, 0xc6, 0xfb, 0xa0, 0x5b, 0xa5, 0xfb, + 0xf0, 0xc4, 0xa8, 0xb5, 0x50, 0xd9, 0x1f, 0x01, 0xd0, 0xf0, 0xb5, 0x78, + 0xd9, 0x27, 0x01, 0xd0, 0xe9, 0xb9, 0x2f, 0x01, 0x85, 0xda, 0xb9, 0x37, + 0x01, 0x85, 0xdb, 0x20, 0x15, 0xe7, 0xca, 0x20, 0x93, 0xe7, 0x20, 0x01, + 0xe8, 0xca, 0xa4, 0xfb, 0xb9, 0x67, 0x01, 0x95, 0x9f, 0xb9, 0x5f, 0x01, + 0xa0, 0x00, 0x20, 0x08, 0xe7, 0x20, 0x82, 0xe7, 0x20, 0x59, 0xe7, 0x20, + 0x15, 0xe7, 0xa4, 0xfb, 0xa5, 0xce, 0xf0, 0x05, 0x59, 0x37, 0x01, 0x10, + 0x12, 0xb9, 0x3f, 0x01, 0x85, 0xdc, 0xb9, 0x47, 0x01, 0x85, 0xdd, 0xbe, + 0x4f, 0x01, 0xb9, 0x57, 0x01, 0xd0, 0x87, 0xc6, 0xfb, 0x60, 0xa0, 0x54, + 0xa5, 0xfb, 0xc9, 0x08, 0xf0, 0x9a, 0xe6, 0xfb, 0xa8, 0xb5, 0x50, 0x99, + 0x20, 0x01, 0xb5, 0x78, 0x99, 0x28, 0x01, 0x60, 0x20, 0x15, 0xe7, 0xa4, + 0xfb, 0xa5, 0xce, 0x99, 0x5f, 0x01, 0xa5, 0xcf, 0x99, 0x67, 0x01, 0xa9, + 0x01, 0x99, 0x2f, 0x01, 0xa9, 0x00, 0x99, 0x37, 0x01, 0xa5, 0xdc, 0x99, + 0x3f, 0x01, 0xa5, 0xdd, 0x99, 0x47, 0x01, 0xa5, 0xe0, 0x99, 0x4f, 0x01, + 0xa5, 0xe1, 0x99, 0x57, 0x01, 0x60, 0x20, 0x15, 0xe7, 0xa4, 0xfb, 0xa5, + 0xce, 0x99, 0x2f, 0x01, 0xa5, 0xcf, 0x4c, 0x66, 0xe9, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x3f, 0x3f, 0xc0, 0xc0, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x30, 0x0f, 0xc0, 0xcc, 0xff, 0x55, 0x00, 0xab, 0xab, 0x03, 0x03, + 0xff, 0xff, 0x55, 0xff, 0xff, 0x55, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xff, + 0x55, 0xc3, 0xc3, 0xc3, 0x55, 0xf0, 0xf0, 0xcf, 0x56, 0x56, 0x56, 0x55, + 0xff, 0xff, 0x55, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, + 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0xab, 0x03, 0x57, 0x03, 0x03, 0x03, + 0x03, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0x17, 0xff, 0xff, 0x19, + 0x5d, 0x35, 0x4b, 0xf2, 0xec, 0x87, 0x6f, 0xad, 0xb7, 0xe2, 0xf8, 0x54, + 0x80, 0x96, 0x85, 0x82, 0x22, 0x10, 0x33, 0x4a, 0x13, 0x06, 0x0b, 0x4a, + 0x01, 0x40, 0x47, 0x7a, 0x00, 0xff, 0x23, 0x09, 0x5b, 0x16, 0xb6, 0xcb, + 0xff, 0xff, 0xfb, 0xff, 0xff, 0x24, 0xf6, 0x4e, 0x59, 0x50, 0x00, 0xff, + 0x23, 0xa3, 0x6f, 0x36, 0x23, 0xd7, 0x1c, 0x22, 0xc2, 0xae, 0xba, 0x23, + 0xff, 0xff, 0x21, 0x30, 0x1e, 0x03, 0xc4, 0x20, 0x00, 0xc1, 0xff, 0xff, + 0xff, 0xa0, 0x30, 0x1e, 0xa4, 0xd3, 0xb6, 0xbc, 0xaa, 0x3a, 0x01, 0x50, + 0x7e, 0xd8, 0xd8, 0xa5, 0x3c, 0xff, 0x16, 0x5b, 0x28, 0x03, 0xc4, 0x1d, + 0x00, 0x0c, 0x4e, 0x00, 0x3e, 0x00, 0xa6, 0xb0, 0x00, 0xbc, 0xc6, 0x57, + 0x8c, 0x01, 0x27, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xff, 0xff, 0xe8, + 0xe0, 0xe0, 0xe0, 0xef, 0xef, 0xe3, 0xe3, 0xe5, 0xe5, 0xe7, 0xe7, 0xee, + 0xef, 0xef, 0xe7, 0xe7, 0xe2, 0xef, 0xe7, 0xe7, 0xec, 0xec, 0xec, 0xe7, + 0xec, 0xec, 0xec, 0xe2, 0x00, 0xff, 0xe8, 0xe1, 0xe8, 0xe8, 0xef, 0xeb, + 0xff, 0xff, 0xe0, 0xff, 0xff, 0xef, 0xee, 0xef, 0xe7, 0xe7, 0x00, 0xff, + 0xe8, 0xe7, 0xe7, 0xe7, 0xe8, 0xe1, 0xe2, 0xee, 0xee, 0xee, 0xee, 0xe8, + 0xff, 0xff, 0xe1, 0xe1, 0xef, 0xee, 0xe7, 0xe8, 0xee, 0xe7, 0xff, 0xff, + 0xff, 0xee, 0xe1, 0xef, 0xe7, 0xe8, 0xef, 0xef, 0xeb, 0xe9, 0xe8, 0xe9, + 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xff, 0xe8, 0xe8, 0xe8, 0xee, 0xe7, 0xe8, + 0xef, 0xef, 0xee, 0xef, 0xee, 0xef, 0xee, 0xee, 0xef, 0xee, 0xee, 0xee, + 0xe1, 0xe8, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbe, 0xb3, 0xb2, 0xb7, + 0xb6, 0x37, 0xd4, 0xcf, 0xcf, 0xa0, 0xcc, 0xcf, 0xce, 0x47, 0xd3, 0xd9, + 0xce, 0xd4, 0xc1, 0x58, 0xcd, 0xc5, 0xcd, 0xa0, 0xc6, 0xd5, 0xcc, 0x4c, + 0xd4, 0xcf, 0xcf, 0xa0, 0xcd, 0xc1, 0xce, 0xd9, 0xa0, 0xd0, 0xc1, 0xd2, + 0xc5, 0xce, 0x53, 0xd3, 0xd4, 0xd2, 0xc9, 0xce, 0x47, 0xce, 0xcf, 0xa0, + 0xc5, 0xce, 0x44, 0xc2, 0xc1, 0xc4, 0xa0, 0xc2, 0xd2, 0xc1, 0xce, 0xc3, + 0x48, 0xbe, 0xb8, 0xa0, 0xc7, 0xcf, 0xd3, 0xd5, 0xc2, 0x53, 0xc2, 0xc1, + 0xc4, 0xa0, 0xd2, 0xc5, 0xd4, 0xd5, 0xd2, 0x4e, 0xbe, 0xb8, 0xa0, 0xc6, + 0xcf, 0xd2, 0x53, 0xc2, 0xc1, 0xc4, 0xa0, 0xce, 0xc5, 0xd8, 0x54, 0xd3, + 0xd4, 0xcf, 0xd0, 0xd0, 0xc5, 0xc4, 0xa0, 0xc1, 0xd4, 0x20, 0xaa, 0xaa, + 0xaa, 0x20, 0xa0, 0xc5, 0xd2, 0xd2, 0x0d, 0xbe, 0xb2, 0xb5, 0x35, 0xd2, + 0xc1, 0xce, 0xc7, 0x45, 0xc4, 0xc9, 0x4d, 0xd3, 0xd4, 0xd2, 0xa0, 0xcf, + 0xd6, 0xc6, 0x4c, 0xdc, 0x0d, 0xd2, 0xc5, 0xd4, 0xd9, 0xd0, 0xc5, 0xa0, + 0xcc, 0xc9, 0xce, 0xc5, 0x8d, 0x3f, 0x46, 0xd9, 0x90, 0x03, 0x4c, 0xc3, + 0xe8, 0xa6, 0xcf, 0x9a, 0xa6, 0xce, 0xa0, 0x8d, 0xd0, 0x02, 0xa0, 0x99, + 0x20, 0xc4, 0xe3, 0x86, 0xce, 0xba, 0x86, 0xcf, 0xa0, 0xfe, 0x84, 0xd9, + 0xc8, 0x84, 0xc8, 0x20, 0x99, 0xe2, 0x84, 0xf1, 0xa2, 0x20, 0xa9, 0x30, + 0x20, 0x91, 0xe4, 0xe6, 0xd9, 0xa6, 0xce, 0xa4, 0xc8, 0x0a, 0x85, 0xce, + 0xc8, 0xb9, 0x00, 0x02, 0xc9, 0x74, 0xf0, 0xd2, 0x49, 0xb0, 0xc9, 0x0a, + 0xb0, 0xf0, 0xc8, 0xc8, 0x84, 0xc8, 0xb9, 0x00, 0x02, 0x48, 0xb9, 0xff, + 0x01, 0xa0, 0x00, 0x20, 0x08, 0xe7, 0x68, 0x95, 0xa0, 0xa5, 0xce, 0xc9, + 0xc7, 0xd0, 0x03, 0x20, 0x6f, 0xe7, 0x4c, 0x01, 0xe8, 0xff, 0xff, 0xff, + 0x50, 0x20, 0x13, 0xec, 0xd0, 0x15, 0x20, 0x0b, 0xec, 0xd0, 0x10, 0x20, + 0x82, 0xe7, 0x20, 0x6f, 0xe7, 0x50, 0x03, 0x20, 0x82, 0xe7, 0x20, 0x59, + 0xe7, 0x56, 0x50, 0x4c, 0x36, 0xe7, 0xff, 0xff, 0xc1, 0xff, 0x7f, 0xd1, + 0xcc, 0xc7, 0xcf, 0xce, 0xc5, 0x9a, 0x98, 0x8b, 0x96, 0x95, 0x93, 0xbf, + 0xb2, 0x32, 0x2d, 0x2b, 0xbc, 0xb0, 0xac, 0xbe, 0x35, 0x8e, 0x61, 0xff, + 0xff, 0xff, 0xdd, 0xfb, 0x20, 0xc9, 0xef, 0x15, 0x4f, 0x10, 0x05, 0x20, + 0xc9, 0xef, 0x35, 0x4f, 0x95, 0x50, 0x10, 0xcb, 0x4c, 0xc9, 0xef, 0x40, + 0x60, 0x8d, 0x60, 0x8b, 0x00, 0x7e, 0x8c, 0x33, 0x00, 0x00, 0x60, 0x03, + 0xbf, 0x12, 0x00, 0x40, 0x89, 0xc9, 0x47, 0x9d, 0x17, 0x68, 0x9d, 0x0a, + 0x00, 0x40, 0x60, 0x8d, 0x60, 0x8b, 0x00, 0x7e, 0x8c, 0x3c, 0x00, 0x00, + 0x60, 0x03, 0xbf, 0x1b, 0x4b, 0x67, 0xb4, 0xa1, 0x07, 0x8c, 0x07, 0xae, + 0xa9, 0xac, 0xa8, 0x67, 0x8c, 0x07, 0xb4, 0xaf, 0xac, 0xb0, 0x67, 0x9d, + 0xb2, 0xaf, 0xac, 0xaf, 0xa3, 0x67, 0x8c, 0x07, 0xa5, 0xab, 0xaf, 0xb0, + 0xf4, 0xae, 0xa9, 0xb2, 0xb0, 0x7f, 0x0e, 0x27, 0xb4, 0xae, 0xa9, 0xb2, + 0xb0, 0x7f, 0x0e, 0x28, 0xb4, 0xae, 0xa9, 0xb2, 0xb0, 0x64, 0x07, 0xa6, + 0xa9, 0x67, 0xaf, 0xb4, 0xaf, 0xa7, 0x78, 0xb4, 0xa5, 0xac, 0x78, 0x7f, + 0x02, 0xad, 0xa5, 0xb2, 0x67, 0xa2, 0xb5, 0xb3, 0xaf, 0xa7, 0xee, 0xb2, + 0xb5, 0xb4, 0xa5, 0xb2, 0x7e, 0x8c, 0x39, 0xb4, 0xb8, 0xa5, 0xae, 0x67, + 0xb0, 0xa5, 0xb4, 0xb3, 0x27, 0xaf, 0xb4, 0x07, 0x9d, 0x19, 0xb2, 0xaf, + 0xa6, 0x7f, 0x05, 0x37, 0xb4, 0xb5, 0xb0, 0xae, 0xa9, 0x7f, 0x05, 0x28, + 0xb4, 0xb5, 0xb0, 0xae, 0xa9, 0x7f, 0x05, 0x2a, 0xb4, 0xb5, 0xb0, 0xae, + 0xa9, 0xe4, 0xae, 0xa5, 0x00, 0xff, 0xff, 0x47, 0xa2, 0xa1, 0xb4, 0x7f, + 0x0d, 0x30, 0xad, 0xa9, 0xa4, 0x7f, 0x0d, 0x23, 0xad, 0xa9, 0xa4, 0x67, + 0xac, 0xac, 0xa1, 0xa3, 0x00, 0x40, 0x80, 0xc0, 0xc1, 0x80, 0x00, 0x47, + 0x8c, 0x68, 0x8c, 0xdb, 0x67, 0x9b, 0x68, 0x9b, 0x50, 0x8c, 0x63, 0x8c, + 0x7f, 0x01, 0x51, 0x07, 0x88, 0x29, 0x84, 0x80, 0xc4, 0x80, 0x57, 0x71, + 0x07, 0x88, 0x14, 0xed, 0xa5, 0xad, 0xaf, 0xac, 0xed, 0xa5, 0xad, 0xa9, + 0xa8, 0xf2, 0xaf, 0xac, 0xaf, 0xa3, 0x71, 0x08, 0x88, 0xae, 0xa5, 0xac, + 0x68, 0x83, 0x08, 0x68, 0x9d, 0x08, 0x71, 0x07, 0x88, 0x60, 0x76, 0xb4, + 0xaf, 0xae, 0x76, 0x8d, 0x76, 0x8b, 0x51, 0x07, 0x88, 0x19, 0xb8, 0xa4, + 0xae, 0xb2, 0xf2, 0xb3, 0xb5, 0xf3, 0xa2, 0xa1, 0xee, 0xa7, 0xb3, 0xe4, + 0xae, 0xb2, 0xeb, 0xa5, 0xa5, 0xb0, 0x51, 0x07, 0x88, 0x39, 0x81, 0xc1, + 0x4f, 0x7f, 0x0f, 0x2f, 0x00, 0x51, 0x06, 0x88, 0x29, 0xc2, 0x0c, 0x82, + 0x57, 0x8c, 0x6a, 0x8c, 0x42, 0xae, 0xa5, 0xa8, 0xb4, 0x60, 0xae, 0xa5, + 0xa8, 0xb4, 0x4f, 0x7e, 0x1e, 0x35, 0x8c, 0x27, 0x51, 0x07, 0x88, 0x09, + 0x8b, 0xfe, 0xe4, 0xaf, 0xad, 0xf2, 0xaf, 0xe4, 0xae, 0xa1, 0xdc, 0xde, + 0x9c, 0xdd, 0x9c, 0xde, 0xdd, 0x9e, 0xc3, 0xdd, 0xcf, 0xca, 0xcd, 0xcb, + 0x00, 0x47, 0x9d, 0xad, 0xa5, 0xad, 0xaf, 0xac, 0x76, 0x9d, 0xad, 0xa5, + 0xad, 0xa9, 0xa8, 0xe6, 0xa6, 0xaf, 0x60, 0x8c, 0x20, 0xaf, 0xb4, 0xb5, + 0xa1, 0xf2, 0xac, 0xa3, 0xf2, 0xa3, 0xb3, 0x60, 0x8c, 0x20, 0xac, 0xa5, + 0xa4, 0xee, 0xb5, 0xb2, 0x60, 0xae, 0xb5, 0xb2, 0xf4, 0xb3, 0xa9, 0xac, + 0x60, 0x8c, 0x20, 0xb4, 0xb3, 0xa9, 0xac, 0x7a, 0x7e, 0x9a, 0x22, 0x20, + 0x00, 0x60, 0x03, 0xbf, 0x60, 0x03, 0xbf, 0x1f, 0x20, 0xb1, 0xe7, 0xe8, + 0xe8, 0xb5, 0x4f, 0x85, 0xda, 0xb5, 0x77, 0x85, 0xdb, 0xb4, 0x4e, 0x98, + 0xd5, 0x76, 0xb0, 0x09, 0xb1, 0xda, 0x20, 0xc9, 0xe3, 0xc8, 0x4c, 0x0f, + 0xee, 0xa9, 0xff, 0x85, 0xd5, 0x60, 0xe8, 0xa9, 0x00, 0x95, 0x78, 0x95, + 0xa0, 0xb5, 0x77, 0x38, 0xf5, 0x4f, 0x95, 0x50, 0x4c, 0x23, 0xe8, 0xff, + 0x20, 0x15, 0xe7, 0xa5, 0xcf, 0xd0, 0x28, 0xa5, 0xce, 0x60, 0x20, 0x34, + 0xee, 0xa4, 0xc8, 0xc9, 0x30, 0xb0, 0x21, 0xc0, 0x28, 0xb0, 0x1d, 0x60, + 0xea, 0xea, 0x20, 0x34, 0xee, 0x60, 0xea, 0x8a, 0xa2, 0x01, 0xb4, 0xce, + 0x94, 0x4c, 0xb4, 0x48, 0x94, 0xca, 0xca, 0xf0, 0xf5, 0xaa, 0x60, 0xa0, + 0x77, 0x4c, 0xe0, 0xe3, 0xa0, 0x7b, 0xd0, 0xf9, 0x20, 0x54, 0xe2, 0xa5, + 0xda, 0xd0, 0x07, 0xa5, 0xdb, 0xd0, 0x03, 0x4c, 0x7e, 0xe7, 0x06, 0xce, + 0x26, 0xcf, 0x26, 0xe6, 0x26, 0xe7, 0xa5, 0xe6, 0xc5, 0xda, 0xa5, 0xe7, + 0xe5, 0xdb, 0x90, 0x0a, 0x85, 0xe7, 0xa5, 0xe6, 0xe5, 0xda, 0x85, 0xe6, + 0xe6, 0xce, 0x88, 0xd0, 0xe1, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x20, 0x15, 0xe7, 0x6c, 0xce, 0x00, 0xa5, 0x4c, 0xd0, 0x02, 0xc6, 0x4d, + 0xc6, 0x4c, 0xa5, 0x48, 0xd0, 0x02, 0xc6, 0x49, 0xc6, 0x48, 0xa0, 0x00, + 0xb1, 0x4c, 0x91, 0x48, 0xa5, 0xca, 0xc5, 0x4c, 0xa5, 0xcb, 0xe5, 0x4d, + 0x90, 0xe0, 0x4c, 0x53, 0xee, 0xc9, 0x28, 0xb0, 0x9b, 0xa8, 0xa5, 0xc8, + 0x60, 0xea, 0xea, 0x98, 0xaa, 0xa0, 0x6e, 0x20, 0xc4, 0xe3, 0x8a, 0xa8, + 0x20, 0xc4, 0xe3, 0xa0, 0x72, 0x4c, 0xc4, 0xe3, 0x20, 0x15, 0xe7, 0x06, + 0xce, 0x26, 0xcf, 0x30, 0xfa, 0xb0, 0xdc, 0xd0, 0x04, 0xc5, 0xce, 0xb0, + 0xd6, 0x60, 0x20, 0x15, 0xe7, 0xb1, 0xce, 0x94, 0x9f, 0x4c, 0x08, 0xe7, + 0x20, 0x34, 0xee, 0xa5, 0xce, 0x48, 0x20, 0x15, 0xe7, 0x68, 0x91, 0xce, + 0x60, 0xff, 0xff, 0xff, 0x20, 0x6c, 0xee, 0xa5, 0xce, 0x85, 0xe6, 0xa5, + 0xcf, 0x85, 0xe7, 0x4c, 0x44, 0xe2, 0x20, 0xe4, 0xee, 0x4c, 0x34, 0xe1, + 0x20, 0xe4, 0xee, 0xb4, 0x78, 0xb5, 0x50, 0x69, 0xfe, 0xb0, 0x01, 0x88, + 0x85, 0xda, 0x84, 0xdb, 0x18, 0x65, 0xce, 0x95, 0x50, 0x98, 0x65, 0xcf, + 0x95, 0x78, 0xa0, 0x00, 0xb5, 0x50, 0xd1, 0xda, 0xc8, 0xb5, 0x78, 0xf1, + 0xda, 0xb0, 0x80, 0x4c, 0x23, 0xe8, 0x20, 0x15, 0xe7, 0xa5, 0x4e, 0x20, + 0x08, 0xe7, 0xa5, 0x4f, 0xd0, 0x04, 0xc5, 0x4e, 0x69, 0x00, 0x29, 0x7f, + 0x85, 0x4f, 0x95, 0xa0, 0xa0, 0x11, 0xa5, 0x4f, 0x0a, 0x18, 0x69, 0x40, + 0x0a, 0x26, 0x4e, 0x26, 0x4f, 0x88, 0xd0, 0xf2, 0xa5, 0xce, 0x20, 0x08, + 0xe7, 0xa5, 0xcf, 0x95, 0xa0, 0x4c, 0x7a, 0xe2, 0x20, 0x15, 0xe7, 0xa4, + 0xce, 0xc4, 0x4c, 0xa5, 0xcf, 0xe5, 0x4d, 0x90, 0x1f, 0x84, 0x48, 0xa5, + 0xcf, 0x85, 0x49, 0x4c, 0xb6, 0xee, 0x20, 0x15, 0xe7, 0xa4, 0xce, 0xc4, + 0xca, 0xa5, 0xcf, 0xe5, 0xcb, 0xb0, 0x09, 0x84, 0x4a, 0xa5, 0xcf, 0x85, + 0x4b, 0x4c, 0xb7, 0xe5, 0x4c, 0xcb, 0xee, 0xea, 0xea, 0xea, 0xea, 0x20, + 0xc9, 0xef, 0x20, 0x71, 0xe1, 0x4c, 0xbf, 0xef, 0x20, 0x03, 0xee, 0xa9, + 0xff, 0x85, 0xc8, 0xa9, 0x74, 0x8d, 0x00, 0x02, 0x60, 0x20, 0x36, 0xe7, + 0xe8, 0x20, 0x36, 0xe7, 0xb5, 0x50, 0x60, 0xa9, 0x00, 0x85, 0x4a, 0x85, + 0x4c, 0xa9, 0x08, 0x85, 0x4b, 0xa9, 0x10, 0x85, 0x4d, 0x4c, 0xad, 0xe5, + 0xd5, 0x78, 0xd0, 0x01, 0x18, 0x4c, 0x02, 0xe1, 0x20, 0xb7, 0xe5, 0x4c, + 0x36, 0xe8, 0x20, 0xb7, 0xe5, 0x4c, 0x5b, 0xe8, 0xe0, 0x80, 0xd0, 0x01, + 0x88, 0x4c, 0x0c, 0xe0, + ]; + + start() { + return 0xe0; + } + end() { + return 0xef; + } + read(page: byte, off: byte) { + return this.ram[((page - 0xe0) << 8) | off]; + } + write(page: byte, off: byte, val: byte) { + this.ram[((page - 0xe0) << 8) | off] = val; + } + + getState() { + return {}; + } + + setState() {} +} diff --git a/js/roms/bios.js b/js/roms/bios.js deleted file mode 100644 index cce78be..0000000 --- a/js/roms/bios.js +++ /dev/null @@ -1,52 +0,0 @@ -export default function Bios() { - var rom = [ - 0xd8,0x58,0xa0,0x7f,0x8c,0x12,0xd0,0xa9, - 0xa7,0x8d,0x11,0xd0,0x8d,0x13,0xd0,0xc9, - 0xdf,0xf0,0x13,0xc9,0x9b,0xf0,0x03,0xc8, - 0x10,0x0f,0xa9,0xdc,0x20,0xef,0xff,0xa9, - 0x8d,0x20,0xef,0xff,0xa0,0x01,0x88,0x30, - 0xf6,0xad,0x11,0xd0,0x10,0xfb,0xad,0x10, - 0xd0,0x99,0x00,0x02,0x20,0xef,0xff,0xc9, - 0x8d,0xd0,0xd4,0xa0,0xff,0xa9,0x00,0xaa, - 0x0a,0x85,0x2b,0xc8,0xb9,0x00,0x02,0xc9, - 0x8d,0xf0,0xd4,0xc9,0xae,0x90,0xf4,0xf0, - 0xf0,0xc9,0xba,0xf0,0xeb,0xc9,0xd2,0xf0, - 0x3b,0x86,0x28,0x86,0x29,0x84,0x2a,0xb9, - 0x00,0x02,0x49,0xb0,0xc9,0x0a,0x90,0x06, - 0x69,0x88,0xc9,0xfa,0x90,0x11,0x0a,0x0a, - 0x0a,0x0a,0xa2,0x04,0x0a,0x26,0x28,0x26, - 0x29,0xca,0xd0,0xf8,0xc8,0xd0,0xe0,0xc4, - 0x2a,0xf0,0x97,0x24,0x2b,0x50,0x10,0xa5, - 0x28,0x81,0x26,0xe6,0x26,0xd0,0xb5,0xe6, - 0x27,0x4c,0x44,0xff,0x6c,0x24,0x00,0x30, - 0x2b,0xa2,0x02,0xb5,0x27,0x95,0x25,0x95, - 0x23,0xca,0xd0,0xf7,0xd0,0x14,0xa9,0x8d, - 0x20,0xef,0xff,0xa5,0x25,0x20,0xdc,0xff, - 0xa5,0x24,0x20,0xdc,0xff,0xa9,0xba,0x20, - 0xef,0xff,0xa9,0xa0,0x20,0xef,0xff,0xa1, - 0x24,0x20,0xdc,0xff,0x86,0x2b,0xa5,0x24, - 0xc5,0x28,0xa5,0x25,0xe5,0x29,0xb0,0xc1, - 0xe6,0x24,0xd0,0x02,0xe6,0x25,0xa5,0x24, - 0x29,0x07,0x10,0xc8,0x48,0x4a,0x4a,0x4a, - 0x4a,0x20,0xe5,0xff,0x68,0x29,0x0f,0x09, - 0xb0,0xc9,0xba,0x90,0x02,0x69,0x06,0x2c, - 0x12,0xd0,0x30,0xfb,0x8d,0x12,0xd0,0x60, - 0x00,0x00,0x00,0x0f,0x00,0xff,0x00,0x00 - ]; - - return { - start: function bios_start() { - return 0xff; - }, - end: function bios_end() { - return 0xff; - }, - read: function bios_read(page, off) { - return rom[off]; - }, - write: function bios_write() {}, - - getState: function bios_getState() { return {}; }, - setState: function bios_setState() {} - }; -} diff --git a/js/roms/bios.ts b/js/roms/bios.ts new file mode 100644 index 0000000..2b288bc --- /dev/null +++ b/js/roms/bios.ts @@ -0,0 +1,44 @@ +import { byte } from 'js/types'; + +export default class Bios { + rom = [ + 0xd8, 0x58, 0xa0, 0x7f, 0x8c, 0x12, 0xd0, 0xa9, 0xa7, 0x8d, 0x11, 0xd0, + 0x8d, 0x13, 0xd0, 0xc9, 0xdf, 0xf0, 0x13, 0xc9, 0x9b, 0xf0, 0x03, 0xc8, + 0x10, 0x0f, 0xa9, 0xdc, 0x20, 0xef, 0xff, 0xa9, 0x8d, 0x20, 0xef, 0xff, + 0xa0, 0x01, 0x88, 0x30, 0xf6, 0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad, 0x10, + 0xd0, 0x99, 0x00, 0x02, 0x20, 0xef, 0xff, 0xc9, 0x8d, 0xd0, 0xd4, 0xa0, + 0xff, 0xa9, 0x00, 0xaa, 0x0a, 0x85, 0x2b, 0xc8, 0xb9, 0x00, 0x02, 0xc9, + 0x8d, 0xf0, 0xd4, 0xc9, 0xae, 0x90, 0xf4, 0xf0, 0xf0, 0xc9, 0xba, 0xf0, + 0xeb, 0xc9, 0xd2, 0xf0, 0x3b, 0x86, 0x28, 0x86, 0x29, 0x84, 0x2a, 0xb9, + 0x00, 0x02, 0x49, 0xb0, 0xc9, 0x0a, 0x90, 0x06, 0x69, 0x88, 0xc9, 0xfa, + 0x90, 0x11, 0x0a, 0x0a, 0x0a, 0x0a, 0xa2, 0x04, 0x0a, 0x26, 0x28, 0x26, + 0x29, 0xca, 0xd0, 0xf8, 0xc8, 0xd0, 0xe0, 0xc4, 0x2a, 0xf0, 0x97, 0x24, + 0x2b, 0x50, 0x10, 0xa5, 0x28, 0x81, 0x26, 0xe6, 0x26, 0xd0, 0xb5, 0xe6, + 0x27, 0x4c, 0x44, 0xff, 0x6c, 0x24, 0x00, 0x30, 0x2b, 0xa2, 0x02, 0xb5, + 0x27, 0x95, 0x25, 0x95, 0x23, 0xca, 0xd0, 0xf7, 0xd0, 0x14, 0xa9, 0x8d, + 0x20, 0xef, 0xff, 0xa5, 0x25, 0x20, 0xdc, 0xff, 0xa5, 0x24, 0x20, 0xdc, + 0xff, 0xa9, 0xba, 0x20, 0xef, 0xff, 0xa9, 0xa0, 0x20, 0xef, 0xff, 0xa1, + 0x24, 0x20, 0xdc, 0xff, 0x86, 0x2b, 0xa5, 0x24, 0xc5, 0x28, 0xa5, 0x25, + 0xe5, 0x29, 0xb0, 0xc1, 0xe6, 0x24, 0xd0, 0x02, 0xe6, 0x25, 0xa5, 0x24, + 0x29, 0x07, 0x10, 0xc8, 0x48, 0x4a, 0x4a, 0x4a, 0x4a, 0x20, 0xe5, 0xff, + 0x68, 0x29, 0x0f, 0x09, 0xb0, 0xc9, 0xba, 0x90, 0x02, 0x69, 0x06, 0x2c, + 0x12, 0xd0, 0x30, 0xfb, 0x8d, 0x12, 0xd0, 0x60, 0x00, 0x00, 0x00, 0x0f, + 0x00, 0xff, 0x00, 0x00, + ] as const; + + start() { + return 0xff; + } + end() { + return 0xff; + } + read(_page: byte, off: byte) { + return this.rom[off]; + } + write() {} + + getState() { + return {}; + } + setState() {} +} diff --git a/js/roms/enhanced-basic.js b/js/roms/enhanced-basic.js deleted file mode 100644 index 17aad5a..0000000 --- a/js/roms/enhanced-basic.js +++ /dev/null @@ -1,1292 +0,0 @@ -export default function EnhancedBasic() { - var rom = [ - 0xA0, 0x08, 0xB9, 0xBD, 0x78, 0x99, 0xC8, 0x02, - 0x88, 0x10, 0xF7, 0xA2, 0xFF, 0x86, 0x88, 0x9A, - 0xA9, 0x4C, 0x85, 0xA1, 0xA2, 0x18, 0xBD, 0xC5, - 0x78, 0x95, 0xBB, 0xCA, 0xD0, 0xF8, 0xA2, 0x12, - 0xBD, 0xDE, 0x78, 0x95, 0x00, 0xCA, 0x10, 0xF8, - 0xA9, 0x00, 0x85, 0xD8, 0x85, 0xDB, 0x85, 0xB2, - 0x85, 0x67, 0xA9, 0x08, 0x85, 0x64, 0xA9, 0x03, - 0x85, 0xA0, 0xA2, 0x68, 0x86, 0x65, 0x20, 0x61, - 0x60, 0xA9, 0xF1, 0xA0, 0x78, 0x20, 0x9C, 0x60, - 0x20, 0x45, 0x5A, 0x86, 0xC3, 0x84, 0xC4, 0x20, - 0xBC, 0x00, 0xD0, 0x1F, 0xA0, 0x00, 0xE6, 0x11, - 0xD0, 0x08, 0xE6, 0x12, 0xA5, 0x12, 0xC9, 0x58, - 0xF0, 0x1D, 0xA9, 0x55, 0x91, 0x11, 0xD1, 0x11, - 0xD0, 0x15, 0x0A, 0x91, 0x11, 0xD1, 0x11, 0xF0, - 0xE5, 0xD0, 0x0C, 0x20, 0x6A, 0x71, 0xA5, 0xAC, - 0xC9, 0x98, 0xB0, 0xA2, 0x20, 0xB5, 0x6C, 0xA5, - 0x11, 0xA4, 0x12, 0xC0, 0x04, 0x90, 0x97, 0x85, - 0x85, 0x84, 0x86, 0x85, 0x81, 0x84, 0x82, 0xA0, - 0x00, 0xA2, 0x03, 0x84, 0x79, 0x86, 0x7A, 0x98, - 0x91, 0x79, 0xE6, 0x79, 0x20, 0x61, 0x60, 0x20, - 0x57, 0x5B, 0xA5, 0x85, 0x38, 0xE5, 0x79, 0xAA, - 0xA5, 0x86, 0xE5, 0x7A, 0x20, 0x45, 0x72, 0xA9, - 0xFF, 0xA0, 0x78, 0x20, 0x9C, 0x60, 0xA9, 0x59, - 0xA0, 0x59, 0x85, 0x01, 0x84, 0x02, 0x6C, 0x01, - 0x00, 0x20, 0x0C, 0x59, 0x85, 0x7F, 0x84, 0x80, - 0x38, 0xA5, 0xA6, 0xE5, 0xAA, 0x85, 0x71, 0xA8, - 0xA5, 0xA7, 0xE5, 0xAB, 0xAA, 0xE8, 0x98, 0xF0, - 0x23, 0xA5, 0xA6, 0x38, 0xE5, 0x71, 0x85, 0xA6, - 0xB0, 0x03, 0xC6, 0xA7, 0x38, 0xA5, 0xA4, 0xE5, - 0x71, 0x85, 0xA4, 0xB0, 0x08, 0xC6, 0xA5, 0x90, - 0x04, 0xB1, 0xA6, 0x91, 0xA4, 0x88, 0xD0, 0xF9, - 0xB1, 0xA6, 0x91, 0xA4, 0xC6, 0xA7, 0xC6, 0xA5, - 0xCA, 0xD0, 0xF2, 0x60, 0x85, 0x78, 0xBA, 0xE4, - 0x78, 0x90, 0x2E, 0x60, 0xC4, 0x82, 0x90, 0x28, - 0xD0, 0x04, 0xC5, 0x81, 0x90, 0x22, 0x48, 0xA2, - 0x08, 0x98, 0x48, 0xB5, 0xA3, 0xCA, 0x10, 0xFA, - 0x20, 0xAE, 0x69, 0xA2, 0xF8, 0x68, 0x95, 0xAC, - 0xE8, 0x30, 0xFA, 0x68, 0xA8, 0x68, 0xC4, 0x82, - 0x90, 0x06, 0xD0, 0x05, 0xC5, 0x81, 0xB0, 0x01, - 0x60, 0xA2, 0x0C, 0x20, 0x61, 0x60, 0xBD, 0xFD, - 0x7D, 0xBC, 0xFE, 0x7D, 0x20, 0x9C, 0x60, 0x20, - 0x90, 0x5B, 0xA9, 0x38, 0xA0, 0x7F, 0x20, 0x9C, - 0x60, 0xA4, 0x88, 0xC8, 0xF0, 0x03, 0x20, 0x3A, - 0x72, 0xA9, 0x00, 0x85, 0xDB, 0x85, 0xD8, 0xA9, - 0x48, 0xA0, 0x7F, 0x20, 0x9C, 0x60, 0x20, 0x52, - 0x5A, 0x86, 0xC3, 0x84, 0xC4, 0x20, 0xBC, 0x00, - 0xF0, 0xF4, 0xA2, 0xFF, 0x86, 0x88, 0x90, 0x06, - 0x20, 0x83, 0x5A, 0x4C, 0xFA, 0x5C, 0x20, 0x19, - 0x5F, 0x20, 0x83, 0x5A, 0x84, 0x5D, 0x20, 0x29, - 0x5B, 0x90, 0x44, 0xA0, 0x01, 0xB1, 0xAA, 0x85, - 0x72, 0xA5, 0x7B, 0x85, 0x71, 0xA5, 0xAB, 0x85, - 0x74, 0xA5, 0xAA, 0x88, 0xF1, 0xAA, 0x18, 0x65, - 0x7B, 0x85, 0x7B, 0x85, 0x73, 0xA5, 0x7C, 0x69, - 0xFF, 0x85, 0x7C, 0xE5, 0xAB, 0xAA, 0x38, 0xA5, - 0xAA, 0xE5, 0x7B, 0xA8, 0xB0, 0x03, 0xE8, 0xC6, - 0x74, 0x18, 0x65, 0x71, 0x90, 0x03, 0xC6, 0x72, - 0x18, 0xB1, 0x71, 0x91, 0x73, 0xC8, 0xD0, 0xF9, - 0xE6, 0x72, 0xE6, 0x74, 0xCA, 0xD0, 0xF2, 0xAD, - 0x80, 0x02, 0xF0, 0x3F, 0xA5, 0x85, 0xA4, 0x86, - 0x85, 0x81, 0x84, 0x82, 0xA5, 0x7B, 0x85, 0xA6, - 0xA4, 0x7C, 0x84, 0xA7, 0x65, 0x5D, 0x90, 0x01, - 0xC8, 0x85, 0xA4, 0x84, 0xA5, 0x20, 0xC1, 0x58, - 0xA5, 0x7F, 0xA4, 0x80, 0x85, 0x7B, 0x84, 0x7C, - 0xA4, 0x5D, 0x88, 0xB9, 0x7C, 0x02, 0x91, 0xAA, - 0x88, 0xC0, 0x03, 0xD0, 0xF6, 0xA5, 0x12, 0x91, - 0xAA, 0x88, 0xA5, 0x11, 0x91, 0xAA, 0x88, 0xA9, - 0xFF, 0x91, 0xAA, 0x20, 0x6C, 0x5B, 0xA5, 0x79, - 0xA4, 0x7A, 0x85, 0x71, 0x84, 0x72, 0x18, 0xA0, - 0x01, 0xB1, 0x71, 0xD0, 0x03, 0x4C, 0x66, 0x59, - 0xA0, 0x04, 0xC8, 0xB1, 0x71, 0xD0, 0xFB, 0xC8, - 0x98, 0x65, 0x71, 0xAA, 0xA0, 0x00, 0x91, 0x71, - 0xA5, 0x72, 0x69, 0x00, 0xC8, 0x91, 0x71, 0x86, - 0x71, 0x85, 0x72, 0x90, 0xDA, 0x20, 0xB4, 0x60, - 0x20, 0xB1, 0x60, 0xD0, 0x05, 0x20, 0xB6, 0x60, - 0xCA, 0x2C, 0xA2, 0x00, 0x20, 0xB1, 0x78, 0x90, - 0xFB, 0xF0, 0xF9, 0xC9, 0x07, 0xF0, 0x10, 0xC9, - 0x0D, 0xF0, 0x19, 0xE0, 0x00, 0xD0, 0x04, 0xC9, - 0x21, 0x90, 0xE9, 0xC9, 0x08, 0xF0, 0xDE, 0xE0, - 0x47, 0xB0, 0x0C, 0x9D, 0x80, 0x02, 0xE8, 0x20, - 0xB6, 0x60, 0xD0, 0xD8, 0x4C, 0x58, 0x60, 0xA9, - 0x07, 0xD0, 0xF4, 0xA0, 0xFF, 0x38, 0xA5, 0xC3, - 0xE9, 0x80, 0xAA, 0x86, 0x60, 0xBD, 0x80, 0x02, - 0xF0, 0x51, 0xC9, 0x5F, 0xB0, 0x4D, 0xC9, 0x3C, - 0xB0, 0x0E, 0xC9, 0x30, 0xB0, 0x45, 0x85, 0x5C, - 0xC9, 0x22, 0xF0, 0x61, 0xC9, 0x2A, 0x90, 0x3B, - 0x24, 0x60, 0x70, 0x37, 0x86, 0x78, 0x84, 0xBA, - 0xA0, 0x8D, 0x84, 0x73, 0xA0, 0x7A, 0x84, 0x74, - 0xA0, 0x00, 0xD1, 0x73, 0xF0, 0x05, 0x90, 0x21, - 0xC8, 0xD0, 0xF7, 0x98, 0x0A, 0xAA, 0xBD, 0xAB, - 0x7A, 0x85, 0x73, 0xBD, 0xAC, 0x7A, 0x85, 0x74, - 0xA0, 0xFF, 0xA6, 0x78, 0xC8, 0xB1, 0x73, 0x30, - 0x08, 0xE8, 0xDD, 0x80, 0x02, 0xF0, 0xF5, 0xD0, - 0x2B, 0xA4, 0xBA, 0xE8, 0xC8, 0x99, 0x80, 0x02, - 0xC9, 0x00, 0xF0, 0x32, 0xE9, 0x3A, 0xF0, 0x04, - 0xC9, 0x49, 0xD0, 0x02, 0x85, 0x60, 0x49, 0x57, - 0xD0, 0x93, 0x85, 0x5C, 0xBD, 0x80, 0x02, 0xF0, - 0xE2, 0xC5, 0x5C, 0xF0, 0xDE, 0xC8, 0x99, 0x80, - 0x02, 0xE8, 0xD0, 0xF0, 0xA6, 0x78, 0xB1, 0x73, - 0x08, 0xC8, 0x28, 0x10, 0xF9, 0xB1, 0x73, 0xD0, - 0xBE, 0xBD, 0x80, 0x02, 0x10, 0xC3, 0xC8, 0xC8, - 0x99, 0x80, 0x02, 0xC8, 0xC8, 0xC8, 0xC6, 0xC3, - 0x60, 0xA5, 0x79, 0xA6, 0x7A, 0xA0, 0x01, 0x85, - 0xAA, 0x86, 0xAB, 0xB1, 0xAA, 0xF0, 0x1C, 0xC8, - 0xC8, 0xB1, 0xAA, 0x88, 0xC5, 0x12, 0xF0, 0x0B, - 0xB0, 0x11, 0x88, 0xB1, 0xAA, 0xAA, 0x88, 0xB1, - 0xAA, 0x90, 0xE2, 0xB1, 0xAA, 0xC5, 0x11, 0x90, - 0xF1, 0xF0, 0x01, 0x18, 0x60, 0xD0, 0xFD, 0xA9, - 0x00, 0xA8, 0x91, 0x79, 0xC8, 0x91, 0x79, 0x18, - 0xA5, 0x79, 0x69, 0x02, 0x85, 0x7B, 0xA5, 0x7A, - 0x69, 0x00, 0x85, 0x7C, 0x18, 0xA5, 0x79, 0x69, - 0xFF, 0x85, 0xC3, 0xA5, 0x7A, 0x69, 0xFF, 0x85, - 0xC4, 0xA5, 0x85, 0xA4, 0x86, 0x85, 0x81, 0x84, - 0x82, 0xA5, 0x7B, 0xA4, 0x7C, 0x85, 0x7D, 0x84, - 0x7E, 0x85, 0x7F, 0x84, 0x80, 0x20, 0x4D, 0x5D, - 0xA2, 0x68, 0x86, 0x65, 0x68, 0xAA, 0x68, 0x8E, - 0xFE, 0x01, 0x8D, 0xFF, 0x01, 0xA2, 0xFD, 0x9A, - 0xA9, 0x00, 0x85, 0x8C, 0x85, 0x61, 0x60, 0xF0, - 0xD0, 0x60, 0x90, 0x06, 0xF0, 0x04, 0xC9, 0xB6, - 0xD0, 0xF4, 0x20, 0x19, 0x5F, 0x20, 0x29, 0x5B, - 0x20, 0xC2, 0x00, 0xF0, 0x0C, 0xC9, 0xB6, 0xD0, - 0x93, 0x20, 0xBC, 0x00, 0x20, 0x19, 0x5F, 0xD0, - 0x8B, 0xA5, 0x11, 0x05, 0x12, 0xD0, 0x06, 0xA9, - 0xFF, 0x85, 0x11, 0x85, 0x12, 0xA0, 0x01, 0x84, - 0x60, 0x20, 0x61, 0x60, 0xB1, 0xAA, 0xF0, 0x3E, - 0x20, 0x1D, 0x5D, 0xC8, 0xB1, 0xAA, 0xAA, 0xC8, - 0xB1, 0xAA, 0xC5, 0x12, 0xD0, 0x04, 0xE4, 0x11, - 0xF0, 0x02, 0xB0, 0x2A, 0x84, 0x97, 0x20, 0x45, - 0x72, 0xA9, 0x20, 0xA4, 0x97, 0x29, 0x7F, 0x20, - 0xB6, 0x60, 0xC9, 0x22, 0xD0, 0x06, 0xA5, 0x60, - 0x49, 0xFF, 0x85, 0x60, 0xC8, 0xB1, 0xAA, 0xD0, - 0x0E, 0xA8, 0xB1, 0xAA, 0xAA, 0xC8, 0xB1, 0xAA, - 0x86, 0xAA, 0x85, 0xAB, 0xD0, 0xB7, 0x60, 0x10, - 0xDE, 0x24, 0x60, 0x30, 0xDA, 0xA2, 0x7C, 0x0A, - 0x0A, 0x90, 0x02, 0xE8, 0x18, 0x69, 0x69, 0x90, - 0x01, 0xE8, 0x85, 0x73, 0x86, 0x74, 0x84, 0x97, - 0xA0, 0x00, 0xB1, 0x73, 0xAA, 0xC8, 0xB1, 0x73, - 0xCA, 0xF0, 0xB8, 0x20, 0xB6, 0x60, 0xC8, 0xB1, - 0x73, 0x48, 0xC8, 0xB1, 0x73, 0xA0, 0x00, 0x85, - 0x74, 0x68, 0x85, 0x73, 0xB1, 0x73, 0xCA, 0xF0, - 0xA2, 0x20, 0xB6, 0x60, 0xC8, 0xD0, 0xF5, 0xA9, - 0x80, 0x85, 0x61, 0x20, 0x81, 0x5F, 0x68, 0x68, - 0xA9, 0x10, 0x20, 0x04, 0x59, 0x20, 0xA6, 0x5E, - 0x18, 0x98, 0x65, 0xC3, 0x48, 0xA5, 0xC4, 0x69, - 0x00, 0x48, 0xA5, 0x88, 0x48, 0xA5, 0x87, 0x48, - 0xA9, 0xAC, 0x20, 0xEA, 0x63, 0x20, 0x94, 0x62, - 0x20, 0x91, 0x62, 0xA5, 0xB0, 0x09, 0x7F, 0x25, - 0xAD, 0x85, 0xAD, 0xA9, 0x9E, 0xA0, 0x5C, 0x85, - 0x71, 0x84, 0x72, 0x4C, 0x46, 0x63, 0xA9, 0xA3, - 0xA0, 0x79, 0x20, 0x3E, 0x70, 0x20, 0xC2, 0x00, - 0xC9, 0xB1, 0xD0, 0x06, 0x20, 0xBC, 0x00, 0x20, - 0x91, 0x62, 0x20, 0xAD, 0x70, 0x85, 0xB0, 0x20, - 0x3B, 0x63, 0xA5, 0x98, 0x48, 0xA5, 0x97, 0x48, - 0xA9, 0x81, 0x48, 0x20, 0x1D, 0x5D, 0xA5, 0xC3, - 0xA4, 0xC4, 0xA6, 0x88, 0xE8, 0xF0, 0x04, 0x85, - 0x8B, 0x84, 0x8C, 0xA0, 0x00, 0xB1, 0xC3, 0xF0, - 0x07, 0xC9, 0x3A, 0xF0, 0x1D, 0x4C, 0xF3, 0x63, - 0xA0, 0x02, 0xB1, 0xC3, 0x18, 0xF0, 0x58, 0xC8, - 0xB1, 0xC3, 0x85, 0x87, 0xC8, 0xB1, 0xC3, 0x85, - 0x88, 0x98, 0x65, 0xC3, 0x85, 0xC3, 0x90, 0x02, - 0xE6, 0xC4, 0x20, 0xBC, 0x00, 0x20, 0x03, 0x5D, - 0x4C, 0xC3, 0x5C, 0xF0, 0x56, 0x49, 0x80, 0x10, - 0x03, 0x4C, 0x81, 0x5F, 0xC9, 0x2B, 0xB0, 0xCD, - 0x0A, 0xA8, 0xB9, 0xCB, 0x79, 0x48, 0xB9, 0xCA, - 0x79, 0x48, 0x4C, 0xBC, 0x00, 0x6C, 0xCB, 0x02, - 0xC9, 0x03, 0xB0, 0x01, 0x18, 0xD0, 0x67, 0xA5, - 0xC4, 0x49, 0x02, 0xF0, 0x10, 0x49, 0x02, 0xA4, - 0xC3, 0x84, 0x8B, 0x85, 0x8C, 0xA5, 0x87, 0xA4, - 0x88, 0x85, 0x89, 0x84, 0x8A, 0x68, 0x68, 0x90, - 0x07, 0xA9, 0x31, 0xA0, 0x7F, 0x4C, 0x4E, 0x59, - 0x4C, 0x59, 0x59, 0xD0, 0x0F, 0x38, 0xA5, 0x79, - 0xE9, 0x01, 0xA4, 0x7A, 0xB0, 0x01, 0x88, 0x85, - 0x8F, 0x84, 0x90, 0x60, 0x20, 0x19, 0x5F, 0x20, - 0xA9, 0x5E, 0xA5, 0x88, 0xC5, 0x12, 0xB0, 0x0B, - 0x98, 0x38, 0x65, 0xC3, 0xA6, 0xC4, 0x90, 0x07, - 0xE8, 0xB0, 0x04, 0xA5, 0x79, 0xA6, 0x7A, 0x20, - 0x2D, 0x5B, 0xB0, 0x03, 0x4C, 0x7B, 0x5E, 0xA5, - 0xAA, 0xE9, 0x01, 0xA4, 0xAB, 0xB0, 0xD0, 0x90, - 0xCD, 0x20, 0x4A, 0x6C, 0x86, 0x0D, 0x60, 0xD0, - 0xFD, 0xA4, 0x8C, 0xD0, 0x05, 0xA2, 0x1E, 0x4C, - 0x3B, 0x59, 0xA9, 0x93, 0x20, 0xD0, 0x76, 0xA9, - 0x93, 0x20, 0xD3, 0x76, 0x84, 0xC4, 0xA5, 0x8B, - 0x85, 0xC3, 0xA5, 0x89, 0xA4, 0x8A, 0x85, 0x87, - 0x84, 0x88, 0x60, 0xD0, 0x03, 0x4C, 0x6C, 0x5B, - 0x20, 0x79, 0x5B, 0xF0, 0x2E, 0xA9, 0x05, 0x20, - 0x04, 0x59, 0xA5, 0xC4, 0x48, 0xA5, 0xC3, 0x48, - 0xA5, 0x88, 0x48, 0xA5, 0x87, 0x48, 0xA9, 0x9D, - 0x48, 0x20, 0xC2, 0x00, 0x4C, 0xC3, 0x5C, 0xA9, - 0x05, 0x20, 0x04, 0x59, 0xA5, 0xC4, 0x48, 0xA5, - 0xC3, 0x48, 0xA5, 0x88, 0x48, 0xA5, 0x87, 0x48, - 0xA9, 0x8D, 0x48, 0x20, 0xC2, 0x00, 0x20, 0xF4, - 0x5D, 0x4C, 0xC3, 0x5C, 0x20, 0x19, 0x5F, 0x20, - 0xA9, 0x5E, 0xA5, 0x88, 0xC5, 0x12, 0xB0, 0x0B, - 0x98, 0x38, 0x65, 0xC3, 0xA6, 0xC4, 0x90, 0x07, - 0xE8, 0xB0, 0x04, 0xA5, 0x79, 0xA6, 0x7A, 0x20, - 0x2D, 0x5B, 0x90, 0x67, 0xA5, 0xAA, 0xE9, 0x01, - 0x85, 0xC3, 0xA5, 0xAB, 0xE9, 0x00, 0x85, 0xC4, - 0x60, 0xA2, 0x22, 0x4C, 0x3B, 0x59, 0xA8, 0xBA, - 0xBD, 0x03, 0x01, 0xC9, 0x9D, 0xD0, 0xF2, 0xE8, - 0xE8, 0x9A, 0x98, 0xF0, 0x20, 0xC9, 0x3A, 0xF0, - 0x1C, 0xE9, 0xB2, 0xAA, 0xF0, 0x04, 0xCA, 0xD0, - 0x62, 0xCA, 0x86, 0x98, 0x20, 0xBC, 0x00, 0x20, - 0xA5, 0x62, 0xA5, 0xAC, 0xF0, 0x02, 0xA9, 0xFF, - 0xBA, 0x45, 0x98, 0xD0, 0x1A, 0xBD, 0x02, 0x01, - 0x85, 0x87, 0xBD, 0x03, 0x01, 0x85, 0x88, 0xBD, - 0x04, 0x01, 0x85, 0xC3, 0xBD, 0x05, 0x01, 0x85, - 0xC4, 0x20, 0xC2, 0x00, 0x4C, 0xC3, 0x5C, 0xE8, - 0xE8, 0xE8, 0xE8, 0xE8, 0x9A, 0x4C, 0x95, 0x5E, - 0xA2, 0x04, 0x2C, 0xA2, 0x0E, 0x4C, 0x3B, 0x59, - 0xD0, 0x9E, 0x68, 0x68, 0x68, 0xC9, 0x8D, 0xD0, - 0xEF, 0x68, 0x85, 0x87, 0x68, 0x85, 0x88, 0x68, - 0x85, 0xC3, 0x68, 0x85, 0xC4, 0x20, 0xA6, 0x5E, - 0x98, 0x18, 0x65, 0xC3, 0x85, 0xC3, 0x90, 0x02, - 0xE6, 0xC4, 0x60, 0x4C, 0xF3, 0x63, 0xA2, 0x3A, - 0x2C, 0xA2, 0x00, 0x86, 0x5B, 0xA0, 0x00, 0x84, - 0x5C, 0xA5, 0x5C, 0xA6, 0x5B, 0x85, 0x5B, 0x86, - 0x5C, 0xB1, 0xC3, 0xF0, 0xE5, 0xC5, 0x5C, 0xF0, - 0xE1, 0xC8, 0xC9, 0x22, 0xF0, 0xEB, 0xD0, 0xF1, - 0x20, 0xA5, 0x62, 0x20, 0xC2, 0x00, 0xC9, 0x89, - 0xF0, 0x05, 0xA9, 0xAF, 0x20, 0xEA, 0x63, 0xA5, - 0xAC, 0xD0, 0x05, 0x20, 0xA9, 0x5E, 0xF0, 0xB8, - 0x20, 0xC2, 0x00, 0xB0, 0x03, 0x4C, 0xF4, 0x5D, - 0x4C, 0x03, 0x5D, 0xC9, 0xA9, 0xD0, 0x03, 0x4C, - 0xF5, 0x76, 0xC9, 0xAA, 0xD0, 0x03, 0x4C, 0xF9, - 0x76, 0x20, 0x4A, 0x6C, 0x48, 0xC9, 0x8D, 0xF0, - 0x04, 0xC9, 0x89, 0xD0, 0x9E, 0xC6, 0xAF, 0xD0, - 0x04, 0x68, 0x4C, 0x05, 0x5D, 0x20, 0xBC, 0x00, - 0x20, 0x19, 0x5F, 0xC9, 0x2C, 0xF0, 0xEE, 0x68, - 0x60, 0xA2, 0x00, 0x86, 0x11, 0x86, 0x12, 0xB0, - 0xF7, 0xE9, 0x2F, 0x85, 0x5B, 0xA5, 0x12, 0x85, - 0x71, 0xC9, 0x19, 0xB0, 0xD4, 0xA5, 0x11, 0x0A, - 0x26, 0x71, 0x0A, 0x26, 0x71, 0x65, 0x11, 0x85, - 0x11, 0xA5, 0x71, 0x65, 0x12, 0x85, 0x12, 0x06, - 0x11, 0x26, 0x12, 0xA5, 0x11, 0x65, 0x5B, 0x85, - 0x11, 0x90, 0x02, 0xE6, 0x12, 0x20, 0xBC, 0x00, - 0x4C, 0x1F, 0x5F, 0xA9, 0xA7, 0x2C, 0xA9, 0xA3, - 0x48, 0x20, 0x76, 0x65, 0xA6, 0x5F, 0x30, 0x1E, - 0x85, 0x97, 0x84, 0x98, 0x20, 0x3E, 0x70, 0x68, - 0x48, 0xA0, 0x79, 0x20, 0x7C, 0x6D, 0x20, 0x67, - 0x70, 0x20, 0xC2, 0x00, 0xC9, 0x2C, 0xD0, 0x9F, - 0x20, 0xBC, 0x00, 0x4C, 0x59, 0x5F, 0x4C, 0xA0, - 0x62, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, - 0xA9, 0xC0, 0x20, 0xEA, 0x63, 0xA5, 0x5F, 0x48, - 0x20, 0xA5, 0x62, 0x68, 0x2A, 0x20, 0x97, 0x62, - 0xD0, 0x03, 0x4C, 0x67, 0x70, 0xA0, 0x02, 0xB1, - 0xAE, 0xC5, 0x82, 0x90, 0x17, 0xD0, 0x07, 0x88, - 0xB1, 0xAE, 0xC5, 0x81, 0x90, 0x0E, 0xA4, 0xAF, - 0xC4, 0x7C, 0x90, 0x08, 0xD0, 0x0D, 0xA5, 0xAE, - 0xC5, 0x7B, 0xB0, 0x07, 0xA5, 0xAE, 0xA4, 0xAF, - 0x4C, 0xD9, 0x5F, 0xA0, 0x00, 0xB1, 0xAE, 0x20, - 0x01, 0x69, 0xA5, 0x9E, 0xA4, 0x9F, 0x85, 0xB8, - 0x84, 0xB9, 0x20, 0xE0, 0x6A, 0xA9, 0xAC, 0xA0, - 0x00, 0x85, 0x9E, 0x84, 0x9F, 0x20, 0x42, 0x6B, - 0xA0, 0x00, 0xB1, 0x9E, 0x91, 0x97, 0xC8, 0xB1, - 0x9E, 0x91, 0x97, 0xC8, 0xB1, 0x9E, 0x91, 0x97, - 0x60, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, - 0x20, 0xBC, 0x76, 0xA6, 0x5F, 0x30, 0x07, 0xA8, - 0x20, 0x32, 0x68, 0x4C, 0x67, 0x70, 0x48, 0xA9, - 0x01, 0xB0, 0x01, 0x68, 0x20, 0x09, 0x69, 0xF0, - 0x05, 0x68, 0xA0, 0x00, 0x91, 0xAD, 0x20, 0x54, - 0x69, 0x4C, 0x9D, 0x5F, 0x20, 0x9F, 0x60, 0x20, - 0xC2, 0x00, 0xF0, 0x3D, 0xF0, 0xCA, 0xC9, 0xAB, - 0xF0, 0x51, 0xC9, 0xAE, 0xF0, 0x4D, 0xC9, 0x2C, - 0xF0, 0x33, 0xC9, 0x3B, 0xF0, 0x60, 0x20, 0xA5, - 0x62, 0x24, 0x5F, 0x30, 0xDF, 0x20, 0x55, 0x72, - 0x20, 0x13, 0x69, 0xA0, 0x00, 0xA5, 0x0F, 0xF0, - 0x0A, 0x38, 0xE5, 0x0E, 0xF1, 0xAE, 0xB0, 0x03, - 0x20, 0x61, 0x60, 0x20, 0x9F, 0x60, 0xF0, 0xC7, - 0xA9, 0x00, 0x9D, 0x80, 0x02, 0xA2, 0x7F, 0xA0, - 0x02, 0xA9, 0x0D, 0xD0, 0x51, 0xA5, 0x0E, 0xC5, - 0x10, 0x90, 0x05, 0x20, 0x61, 0x60, 0xD0, 0x26, - 0x38, 0xE5, 0x64, 0xB0, 0xFC, 0x49, 0xFF, 0x69, - 0x01, 0xD0, 0x14, 0x48, 0x20, 0x47, 0x6C, 0xC9, - 0x29, 0xD0, 0x7B, 0x68, 0xC9, 0xAB, 0xD0, 0x08, - 0x8A, 0xE5, 0x0E, 0x90, 0x09, 0xF0, 0x07, 0xAA, - 0x20, 0xB1, 0x60, 0xCA, 0xD0, 0xFA, 0x20, 0xBC, - 0x00, 0x4C, 0x24, 0x60, 0x20, 0x13, 0x69, 0x20, - 0x0D, 0x6B, 0xA0, 0x00, 0xAA, 0xF0, 0x4A, 0xB1, - 0x71, 0x20, 0xB6, 0x60, 0xC8, 0xCA, 0xD0, 0xF7, - 0x60, 0xA9, 0x20, 0x2C, 0xA9, 0x3F, 0xC9, 0x20, - 0x90, 0x1A, 0x48, 0xA5, 0x0F, 0xD0, 0x0B, 0x38, - 0xA5, 0x0E, 0xE5, 0x64, 0xD0, 0x0B, 0x85, 0x0E, - 0xF0, 0x07, 0xC5, 0x0E, 0xD0, 0x03, 0x20, 0x61, - 0x60, 0xE6, 0x0E, 0x68, 0x20, 0xB4, 0x78, 0xC9, - 0x0D, 0xD0, 0x14, 0x86, 0x78, 0xA6, 0x0D, 0xF0, - 0x0A, 0xA9, 0x00, 0x20, 0xB6, 0x60, 0xCA, 0xD0, - 0xFA, 0xA9, 0x0D, 0x86, 0x0E, 0xA6, 0x78, 0x29, - 0xFF, 0x60, 0xA5, 0x62, 0x10, 0x0B, 0xA5, 0x8D, - 0xA4, 0x8E, 0x85, 0x87, 0x84, 0x88, 0x4C, 0xF3, - 0x63, 0xA9, 0x60, 0xA0, 0x7F, 0x20, 0x9C, 0x60, - 0xA5, 0x8B, 0xA4, 0x8C, 0x85, 0xC3, 0x84, 0xC4, - 0x60, 0xC9, 0x22, 0xD0, 0x0B, 0x20, 0xA9, 0x63, - 0xA9, 0x3B, 0x20, 0xEA, 0x63, 0x20, 0x9F, 0x60, - 0x20, 0x36, 0x68, 0x20, 0x45, 0x5A, 0xAD, 0x80, - 0x02, 0xD0, 0x09, 0x18, 0x4C, 0x35, 0x5D, 0xA6, - 0x8F, 0xA4, 0x90, 0xA9, 0x98, 0x85, 0x62, 0x86, - 0x91, 0x84, 0x92, 0x20, 0x76, 0x65, 0x85, 0x97, - 0x84, 0x98, 0xA5, 0xC3, 0xA4, 0xC4, 0x85, 0x11, - 0x84, 0x12, 0xA6, 0x91, 0xA4, 0x92, 0x86, 0xC3, - 0x84, 0xC4, 0x20, 0xC2, 0x00, 0xD0, 0x0E, 0x24, - 0x62, 0x30, 0x62, 0x20, 0xB4, 0x60, 0x20, 0x45, - 0x5A, 0x86, 0xC3, 0x84, 0xC4, 0x20, 0xBC, 0x00, - 0x24, 0x5F, 0x10, 0x24, 0x85, 0x5B, 0xC9, 0x22, - 0xF0, 0x07, 0xA9, 0x3A, 0x85, 0x5B, 0xA9, 0x2C, - 0x18, 0x85, 0x5C, 0xA5, 0xC3, 0xA4, 0xC4, 0x69, - 0x00, 0x90, 0x01, 0xC8, 0x20, 0x19, 0x69, 0x20, - 0x8D, 0x6C, 0x20, 0x9D, 0x5F, 0x4C, 0x96, 0x61, - 0x20, 0x6A, 0x71, 0x20, 0x67, 0x70, 0x20, 0xC2, - 0x00, 0xF0, 0x07, 0xC9, 0x2C, 0xF0, 0x03, 0x4C, - 0xF2, 0x60, 0xA5, 0xC3, 0xA4, 0xC4, 0x85, 0x91, - 0x84, 0x92, 0xA5, 0x11, 0xA4, 0x12, 0x85, 0xC3, - 0x84, 0xC4, 0x20, 0xC2, 0x00, 0xF0, 0x2B, 0x20, - 0xE8, 0x63, 0x4C, 0x3B, 0x61, 0x20, 0xA6, 0x5E, - 0xC8, 0xAA, 0xD0, 0x12, 0xA2, 0x06, 0xC8, 0xB1, - 0xC3, 0xF0, 0x72, 0xC8, 0xB1, 0xC3, 0x85, 0x8D, - 0xC8, 0xB1, 0xC3, 0xC8, 0x85, 0x8E, 0xB1, 0xC3, - 0xAA, 0x20, 0x98, 0x5E, 0xE0, 0x83, 0xF0, 0x85, - 0xD0, 0xDB, 0xA5, 0x91, 0xA4, 0x92, 0xA6, 0x62, - 0x10, 0x03, 0x4C, 0x57, 0x5D, 0xA0, 0x00, 0xB1, - 0x91, 0xD0, 0x01, 0x60, 0xA9, 0x50, 0xA0, 0x7F, - 0x4C, 0x9C, 0x60, 0xBA, 0xE8, 0xE8, 0xE8, 0xE8, - 0xBD, 0x01, 0x01, 0xC9, 0x81, 0xD0, 0x21, 0xA5, - 0x98, 0xD0, 0x0A, 0xBD, 0x02, 0x01, 0x85, 0x97, - 0xBD, 0x03, 0x01, 0x85, 0x98, 0xDD, 0x03, 0x01, - 0xD0, 0x07, 0xA5, 0x97, 0xDD, 0x02, 0x01, 0xF0, - 0x07, 0x8A, 0x18, 0x69, 0x10, 0xAA, 0xD0, 0xD8, - 0x60, 0xD0, 0x04, 0xA0, 0x00, 0xF0, 0x03, 0x20, - 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, 0x20, 0xFB, - 0x61, 0xF0, 0x04, 0xA2, 0x00, 0xF0, 0x63, 0x9A, - 0x8A, 0x38, 0xE9, 0xF7, 0x85, 0x73, 0x69, 0xFB, - 0xA0, 0x01, 0x20, 0x3E, 0x70, 0xBA, 0xBD, 0x08, - 0x01, 0x85, 0xB0, 0xA5, 0x97, 0xA4, 0x98, 0x20, - 0x7C, 0x6D, 0x20, 0x67, 0x70, 0xA0, 0x01, 0x20, - 0xDD, 0x70, 0xBA, 0xDD, 0x08, 0x01, 0xF0, 0x17, - 0xBD, 0x0D, 0x01, 0x85, 0x87, 0xBD, 0x0E, 0x01, - 0x85, 0x88, 0xBD, 0x10, 0x01, 0x85, 0xC3, 0xBD, - 0x0F, 0x01, 0x85, 0xC4, 0x4C, 0xC3, 0x5C, 0x8A, - 0x69, 0x0F, 0xAA, 0x9A, 0x20, 0xC2, 0x00, 0xC9, - 0x2C, 0xD0, 0xF1, 0x20, 0xBC, 0x00, 0x20, 0x2F, - 0x62, 0x20, 0xA5, 0x62, 0x18, 0x24, 0x38, 0x24, - 0x5F, 0x30, 0x03, 0xB0, 0x03, 0x60, 0xB0, 0xFD, - 0xA2, 0x18, 0x4C, 0x3B, 0x59, 0xA6, 0xC3, 0xD0, - 0x02, 0xC6, 0xC4, 0xC6, 0xC3, 0xA9, 0x00, 0x48, - 0xA9, 0x02, 0x20, 0x04, 0x59, 0x20, 0x80, 0x63, - 0xA9, 0x00, 0x85, 0x9B, 0x20, 0xC2, 0x00, 0x38, - 0xE9, 0xBF, 0x90, 0x17, 0xC9, 0x03, 0xB0, 0x13, - 0xC9, 0x01, 0x2A, 0x49, 0x01, 0x45, 0x9B, 0xC5, - 0x9B, 0x90, 0x65, 0x85, 0x9B, 0x20, 0xBC, 0x00, - 0x4C, 0xBF, 0x62, 0xA6, 0x9B, 0xD0, 0x2C, 0xB0, - 0x77, 0x69, 0x0A, 0x90, 0x73, 0x65, 0x5F, 0xD0, - 0x03, 0x4C, 0xA3, 0x6A, 0x69, 0xFF, 0x85, 0x71, - 0x0A, 0x65, 0x71, 0xA8, 0x68, 0xD9, 0x66, 0x7A, - 0xB0, 0x63, 0x20, 0x94, 0x62, 0x48, 0x20, 0x24, - 0x63, 0x68, 0xA4, 0x99, 0x10, 0x17, 0xAA, 0xF0, - 0x74, 0xD0, 0x5B, 0x46, 0x5F, 0x8A, 0x2A, 0xA6, - 0xC3, 0xD0, 0x02, 0xC6, 0xC4, 0xC6, 0xC3, 0xA0, - 0x24, 0x85, 0x9B, 0xD0, 0xD7, 0xD9, 0x66, 0x7A, - 0xB0, 0x44, 0x90, 0xD9, 0xB9, 0x68, 0x7A, 0x48, - 0xB9, 0x67, 0x7A, 0x48, 0x20, 0x3B, 0x63, 0xA5, - 0x9B, 0x48, 0xB9, 0x66, 0x7A, 0x4C, 0xAF, 0x62, - 0x4C, 0xF3, 0x63, 0x68, 0x85, 0x71, 0xE6, 0x71, - 0x68, 0x85, 0x72, 0xA5, 0xB0, 0x48, 0x20, 0x9D, - 0x70, 0xA5, 0xAF, 0x48, 0xA5, 0xAE, 0x48, 0xA5, - 0xAD, 0x48, 0xA5, 0xAC, 0x48, 0x6C, 0x71, 0x00, - 0xA0, 0xFF, 0x68, 0xF0, 0x20, 0xC9, 0x64, 0xF0, - 0x03, 0x20, 0x94, 0x62, 0x84, 0x99, 0x68, 0x4A, - 0x85, 0x63, 0x68, 0x85, 0xB3, 0x68, 0x85, 0xB4, - 0x68, 0x85, 0xB5, 0x68, 0x85, 0xB6, 0x68, 0x85, - 0xB7, 0x45, 0xB0, 0x85, 0xB8, 0xA5, 0xAC, 0x60, - 0xA9, 0x00, 0x85, 0x5F, 0x20, 0xBC, 0x00, 0xB0, - 0x03, 0x4C, 0x6A, 0x71, 0xC9, 0x24, 0xF0, 0xF9, - 0xC9, 0x25, 0xF0, 0xF5, 0x20, 0xE8, 0x65, 0xB0, - 0x66, 0xC9, 0x2E, 0xF0, 0xEC, 0xC9, 0xB6, 0xF0, - 0x57, 0xC9, 0xB5, 0xF0, 0xDF, 0xC9, 0x22, 0xD0, - 0x0F, 0xA5, 0xC3, 0xA4, 0xC4, 0x69, 0x00, 0x90, - 0x01, 0xC8, 0x20, 0x13, 0x69, 0x4C, 0x8D, 0x6C, - 0xC9, 0xB0, 0xD0, 0x13, 0xA0, 0x21, 0xD0, 0x3A, - 0x20, 0x70, 0x66, 0xA5, 0xAF, 0x49, 0xFF, 0xA8, - 0xA5, 0xAE, 0x49, 0xFF, 0x4C, 0x23, 0x68, 0xC9, - 0xAD, 0xD0, 0x03, 0x4C, 0x82, 0x68, 0xC9, 0xC2, - 0x90, 0x02, 0xB0, 0x32, 0x20, 0xE5, 0x63, 0x20, - 0xA5, 0x62, 0xA9, 0x29, 0x2C, 0xA9, 0x28, 0x2C, - 0xA9, 0x2C, 0xA0, 0x00, 0xD1, 0xC3, 0xD0, 0x03, - 0x4C, 0xBC, 0x00, 0xA2, 0x02, 0x4C, 0x3B, 0x59, - 0xA0, 0x1E, 0x68, 0x68, 0x4C, 0xFE, 0x62, 0x20, - 0x76, 0x65, 0x85, 0xAE, 0x84, 0xAF, 0xA6, 0x5F, - 0xD0, 0x03, 0x4C, 0x3E, 0x70, 0x60, 0x0A, 0x48, - 0xAA, 0x20, 0xBC, 0x00, 0xE0, 0xB3, 0x90, 0x56, - 0xE0, 0xB7, 0x90, 0x24, 0xE0, 0xC3, 0x90, 0x51, - 0x20, 0xE5, 0x63, 0x20, 0xA5, 0x62, 0x20, 0xE8, - 0x63, 0x20, 0x96, 0x62, 0x68, 0xAA, 0xA5, 0xAF, - 0x48, 0xA5, 0xAE, 0x48, 0x8A, 0x48, 0x20, 0x4A, - 0x6C, 0x68, 0xA8, 0x8A, 0x48, 0x4C, 0x73, 0x64, - 0x20, 0xE5, 0x63, 0x20, 0x91, 0x62, 0xA5, 0xAC, - 0xC9, 0x98, 0xB0, 0x1F, 0x20, 0x14, 0x71, 0xA2, - 0x02, 0xB5, 0xAD, 0x95, 0x11, 0xCA, 0x10, 0xF9, - 0x20, 0xC2, 0x00, 0xA2, 0x00, 0xC9, 0x29, 0xF0, - 0x10, 0x20, 0x9C, 0x6C, 0x20, 0xC2, 0x00, 0xC9, - 0x29, 0xF0, 0x06, 0x4C, 0xF3, 0x66, 0x20, 0xDC, - 0x63, 0x68, 0xA8, 0xB9, 0x9C, 0x79, 0x85, 0xA2, - 0xB9, 0x9D, 0x79, 0x85, 0xA3, 0x20, 0xA1, 0x00, - 0x4C, 0x94, 0x62, 0x20, 0xAA, 0x64, 0x45, 0x5B, - 0xA8, 0xA5, 0xAE, 0x45, 0x5C, 0x4C, 0x23, 0x68, - 0x20, 0xAA, 0x64, 0x05, 0x5B, 0xA8, 0xA5, 0xAE, - 0x05, 0x5C, 0x4C, 0x23, 0x68, 0x20, 0xAA, 0x64, - 0x25, 0x5B, 0xA8, 0xA5, 0xAE, 0x25, 0x5C, 0x4C, - 0x23, 0x68, 0x20, 0x70, 0x66, 0xA5, 0xAE, 0x85, - 0x5C, 0xA5, 0xAF, 0x85, 0x5B, 0x20, 0x81, 0x6D, - 0x20, 0x70, 0x66, 0xA5, 0xAF, 0x60, 0x20, 0x97, - 0x62, 0xB0, 0x13, 0xA5, 0xB7, 0x09, 0x7F, 0x25, - 0xB4, 0x85, 0xB4, 0xA9, 0xB3, 0xA0, 0x00, 0x20, - 0xDB, 0x70, 0xAA, 0x4C, 0x09, 0x65, 0xA9, 0x00, - 0x85, 0x5F, 0xC6, 0x9B, 0x20, 0x0D, 0x6B, 0x85, - 0xAC, 0x86, 0xAD, 0x84, 0xAE, 0xA5, 0xB5, 0xA4, - 0xB6, 0x20, 0x11, 0x6B, 0x86, 0xB5, 0x84, 0xB6, - 0xAA, 0x38, 0xE5, 0xAC, 0xF0, 0x08, 0xA9, 0x01, - 0x90, 0x04, 0xA6, 0xAC, 0xA9, 0xFF, 0x85, 0xB0, - 0xA0, 0xFF, 0xE8, 0xC8, 0xCA, 0xD0, 0x07, 0xA6, - 0xB0, 0x30, 0x0F, 0x18, 0x90, 0x0C, 0xB1, 0xB5, - 0xD1, 0xAD, 0xF0, 0xEF, 0xA2, 0xFF, 0xB0, 0x02, - 0xA2, 0x01, 0xE8, 0x8A, 0x2A, 0x25, 0x63, 0xF0, - 0x02, 0xA9, 0xFF, 0x4C, 0xBE, 0x70, 0x20, 0xE8, - 0x63, 0xAA, 0x20, 0x7B, 0x65, 0x20, 0xC2, 0x00, - 0xD0, 0xF4, 0x60, 0x20, 0x6B, 0x65, 0xA5, 0xAE, - 0xA6, 0x78, 0xF0, 0x24, 0xE0, 0x10, 0xB0, 0x25, - 0x06, 0xAF, 0x26, 0x00, 0xCA, 0xD0, 0xF9, 0xA4, - 0xAF, 0x4C, 0x23, 0x68, 0x20, 0x6B, 0x65, 0xA5, - 0xAE, 0xA6, 0x78, 0xF0, 0x0B, 0xE0, 0x10, 0xB0, - 0x0C, 0x46, 0x00, 0x66, 0xAF, 0xCA, 0xD0, 0xF9, - 0xA4, 0xAF, 0x4C, 0x23, 0x68, 0xA9, 0x00, 0xA8, - 0x4C, 0x23, 0x68, 0x20, 0x4D, 0x6C, 0x86, 0x78, - 0x20, 0x81, 0x6D, 0x4C, 0x70, 0x66, 0xA2, 0x00, - 0x20, 0xC2, 0x00, 0x86, 0x5E, 0x85, 0x93, 0x20, - 0xE8, 0x65, 0xB0, 0x03, 0x4C, 0xF3, 0x63, 0xA2, - 0x00, 0x86, 0x5F, 0x20, 0xBC, 0x00, 0x90, 0x05, - 0x20, 0xE8, 0x65, 0x90, 0x0B, 0xAA, 0x20, 0xBC, - 0x00, 0x90, 0xFB, 0x20, 0xE8, 0x65, 0xB0, 0xF6, - 0xC9, 0x24, 0xD0, 0x0B, 0xA9, 0xFF, 0x85, 0x5F, - 0x8A, 0x09, 0x80, 0xAA, 0x20, 0xBC, 0x00, 0x86, - 0x94, 0x05, 0x61, 0xC9, 0x28, 0xD0, 0x03, 0x4C, - 0x82, 0x66, 0xA9, 0x00, 0x85, 0x61, 0xA5, 0x7B, - 0xA6, 0x7C, 0xA0, 0x00, 0x86, 0xAB, 0x85, 0xAA, - 0xE4, 0x7E, 0xD0, 0x04, 0xC5, 0x7D, 0xF0, 0x2C, - 0xA5, 0x93, 0xD1, 0xAA, 0xD0, 0x08, 0xA5, 0x94, - 0xC8, 0xD1, 0xAA, 0xF0, 0x69, 0x88, 0x18, 0xA5, - 0xAA, 0x69, 0x06, 0x90, 0xE1, 0xE8, 0xD0, 0xDC, - 0xC9, 0x61, 0xB0, 0x0A, 0xC9, 0x41, 0x90, 0x05, - 0xE9, 0x5B, 0x38, 0xE9, 0xA5, 0x60, 0xE9, 0x7B, - 0x38, 0xE9, 0x85, 0x60, 0x68, 0x48, 0xC9, 0x01, - 0xD0, 0x05, 0xA9, 0xA4, 0xA0, 0x79, 0x60, 0xA5, - 0x7D, 0xA4, 0x7E, 0x85, 0xAA, 0x84, 0xAB, 0xA5, - 0x7F, 0xA4, 0x80, 0x85, 0xA6, 0x84, 0xA7, 0x18, - 0x69, 0x06, 0x90, 0x01, 0xC8, 0x85, 0xA4, 0x84, - 0xA5, 0x20, 0xC1, 0x58, 0xA5, 0xA4, 0xA4, 0xA5, - 0xC8, 0x85, 0x7D, 0x84, 0x7E, 0xA0, 0x00, 0xA5, - 0x93, 0x91, 0xAA, 0xC8, 0xA5, 0x94, 0x91, 0xAA, - 0xA9, 0x00, 0xC8, 0x91, 0xAA, 0xC8, 0x91, 0xAA, - 0xC8, 0x91, 0xAA, 0xC8, 0x91, 0xAA, 0xA5, 0xAA, - 0x18, 0x69, 0x02, 0xA4, 0xAB, 0x90, 0x01, 0xC8, - 0x85, 0x95, 0x84, 0x96, 0x60, 0xA5, 0x5D, 0x0A, - 0x69, 0x05, 0x65, 0xAA, 0xA4, 0xAB, 0x90, 0x01, - 0xC8, 0x85, 0xA4, 0x84, 0xA5, 0x60, 0x20, 0xBC, - 0x00, 0x20, 0x91, 0x62, 0xA5, 0xB0, 0x30, 0x0D, - 0xA5, 0xAC, 0xC9, 0x90, 0x90, 0x09, 0xA9, 0xAB, - 0xA0, 0x79, 0x20, 0xDB, 0x70, 0xD0, 0x74, 0x4C, - 0x14, 0x71, 0xA5, 0x5E, 0x48, 0xA5, 0x5F, 0x48, - 0xA0, 0x00, 0x98, 0x48, 0xA5, 0x94, 0x48, 0xA5, - 0x93, 0x48, 0x20, 0x66, 0x66, 0x68, 0x85, 0x93, - 0x68, 0x85, 0x94, 0x68, 0xA8, 0xBA, 0xBD, 0x02, - 0x01, 0x48, 0xBD, 0x01, 0x01, 0x48, 0xA5, 0xAE, - 0x9D, 0x02, 0x01, 0xA5, 0xAF, 0x9D, 0x01, 0x01, - 0xC8, 0x20, 0xC2, 0x00, 0xC9, 0x2C, 0xF0, 0xD2, - 0x84, 0x5D, 0x20, 0xE2, 0x63, 0x68, 0x85, 0x5F, - 0x68, 0x85, 0x5E, 0xA6, 0x7D, 0xA5, 0x7E, 0x86, - 0xAA, 0x85, 0xAB, 0xC5, 0x80, 0xD0, 0x04, 0xE4, - 0x7F, 0xF0, 0x39, 0xA0, 0x00, 0xB1, 0xAA, 0xC8, - 0xC5, 0x93, 0xD0, 0x06, 0xA5, 0x94, 0xD1, 0xAA, - 0xF0, 0x16, 0xC8, 0xB1, 0xAA, 0x18, 0x65, 0xAA, - 0xAA, 0xC8, 0xB1, 0xAA, 0x65, 0xAB, 0x90, 0xD7, - 0xA2, 0x10, 0x2C, 0xA2, 0x08, 0x4C, 0x3B, 0x59, - 0xA2, 0x12, 0xA5, 0x5E, 0xD0, 0xF7, 0x20, 0x55, - 0x66, 0xA5, 0x5D, 0xA0, 0x04, 0xD1, 0xAA, 0xD0, - 0xE7, 0x4C, 0x8F, 0x67, 0x20, 0x55, 0x66, 0x20, - 0x0C, 0x59, 0xA0, 0x00, 0x84, 0xBB, 0xA5, 0x93, - 0x91, 0xAA, 0xC8, 0xA5, 0x94, 0x91, 0xAA, 0xA5, - 0x5D, 0xA0, 0x04, 0x84, 0xBA, 0x91, 0xAA, 0x18, - 0xA2, 0x0B, 0xA9, 0x00, 0x24, 0x5E, 0x50, 0x07, - 0x68, 0x69, 0x01, 0xAA, 0x68, 0x69, 0x00, 0xC8, - 0x91, 0xAA, 0xC8, 0x8A, 0x91, 0xAA, 0x20, 0xDE, - 0x67, 0x86, 0xBA, 0x85, 0xBB, 0xA4, 0x71, 0xC6, - 0x5D, 0xD0, 0xDD, 0x65, 0xA5, 0xB0, 0x5D, 0x85, - 0xA5, 0xA8, 0x8A, 0x65, 0xA4, 0x90, 0x03, 0xC8, - 0xF0, 0x52, 0x20, 0x0C, 0x59, 0x85, 0x7F, 0x84, - 0x80, 0xA9, 0x00, 0xE6, 0xBB, 0xA4, 0xBA, 0xF0, - 0x05, 0x88, 0x91, 0xA4, 0xD0, 0xFB, 0xC6, 0xA5, - 0xC6, 0xBB, 0xD0, 0xF5, 0xE6, 0xA5, 0x38, 0xA0, - 0x02, 0xA5, 0x7F, 0xE5, 0xAA, 0x91, 0xAA, 0xC8, - 0xA5, 0x80, 0xE5, 0xAB, 0x91, 0xAA, 0xA5, 0x5E, - 0xD0, 0x53, 0xC8, 0xB1, 0xAA, 0x85, 0x5D, 0xA9, - 0x00, 0x85, 0xBA, 0x85, 0xBB, 0xC8, 0x68, 0xAA, - 0x85, 0xAE, 0x68, 0x85, 0xAF, 0xD1, 0xAA, 0x90, - 0x0E, 0xD0, 0x06, 0xC8, 0x8A, 0xD1, 0xAA, 0x90, - 0x07, 0x4C, 0xF0, 0x66, 0x4C, 0x39, 0x59, 0xC8, - 0xA5, 0xBB, 0x05, 0xBA, 0xF0, 0x0A, 0x20, 0xDE, - 0x67, 0x8A, 0x65, 0xAE, 0xAA, 0x98, 0xA4, 0x71, - 0x65, 0xAF, 0x86, 0xBA, 0xC6, 0x5D, 0xD0, 0xCB, - 0x06, 0xBA, 0x2A, 0x06, 0xBA, 0x2A, 0xA8, 0xA5, - 0xBA, 0x65, 0xA4, 0x85, 0x95, 0x98, 0x65, 0xA5, - 0x85, 0x96, 0xA8, 0xA5, 0x95, 0x60, 0x84, 0x71, - 0xB1, 0xAA, 0x85, 0x76, 0x88, 0xB1, 0xAA, 0x85, - 0x77, 0xA9, 0x10, 0x85, 0xA8, 0xA2, 0x00, 0xA0, - 0x00, 0x8A, 0x0A, 0xAA, 0x98, 0x2A, 0xA8, 0xB0, - 0xB3, 0x06, 0xBA, 0x26, 0xBB, 0x90, 0x0B, 0x18, - 0x8A, 0x65, 0x76, 0xAA, 0x98, 0x65, 0x77, 0xA8, - 0xB0, 0xA2, 0xC6, 0xA8, 0xD0, 0xE3, 0x60, 0xA5, - 0x5F, 0xF0, 0x03, 0x20, 0x0D, 0x6B, 0x20, 0xAE, - 0x69, 0x38, 0xA5, 0x81, 0xE5, 0x7F, 0xA8, 0xA5, - 0x82, 0xE5, 0x80, 0xA2, 0x00, 0x86, 0x5F, 0x85, - 0xAD, 0x84, 0xAE, 0xA2, 0x90, 0x4C, 0xC6, 0x70, - 0xA4, 0x0E, 0xA9, 0x00, 0xF0, 0xED, 0xA6, 0x88, - 0xE8, 0xD0, 0xA2, 0xA2, 0x16, 0x4C, 0x3B, 0x59, - 0x20, 0x6D, 0x68, 0x20, 0x36, 0x68, 0x20, 0xE5, - 0x63, 0xA9, 0x80, 0x85, 0x61, 0x20, 0x76, 0x65, - 0x20, 0x94, 0x62, 0x20, 0xE2, 0x63, 0xA9, 0xC0, - 0x20, 0xEA, 0x63, 0xA5, 0x96, 0x48, 0xA5, 0x95, - 0x48, 0xA5, 0xC4, 0x48, 0xA5, 0xC3, 0x48, 0x20, - 0x95, 0x5E, 0x4C, 0xDF, 0x68, 0xA9, 0xAD, 0x20, - 0xEA, 0x63, 0x09, 0x80, 0x85, 0x61, 0x29, 0x7F, - 0x20, 0x7D, 0x65, 0x85, 0x9C, 0x84, 0x9D, 0x4C, - 0x94, 0x62, 0x20, 0x6D, 0x68, 0xA5, 0x9D, 0x48, - 0xA5, 0x9C, 0x48, 0x20, 0xDC, 0x63, 0x20, 0x94, - 0x62, 0x68, 0x85, 0x9C, 0x68, 0x85, 0x9D, 0xA2, - 0x20, 0xA0, 0x03, 0xB1, 0x9C, 0xF0, 0x9E, 0x85, - 0x96, 0x88, 0xB1, 0x9C, 0x85, 0x95, 0xAA, 0xC8, - 0xB1, 0x95, 0x48, 0x88, 0x10, 0xFA, 0xA4, 0x96, - 0x20, 0x6B, 0x70, 0xA5, 0xC4, 0x48, 0xA5, 0xC3, - 0x48, 0xB1, 0x9C, 0x85, 0xC3, 0xC8, 0xB1, 0x9C, - 0x85, 0xC4, 0xA5, 0x96, 0x48, 0xA5, 0x95, 0x48, - 0x20, 0x91, 0x62, 0x68, 0x85, 0x9C, 0x68, 0x85, - 0x9D, 0x20, 0xC2, 0x00, 0xF0, 0x03, 0x4C, 0xF3, - 0x63, 0x68, 0x85, 0xC3, 0x68, 0x85, 0xC4, 0xA0, - 0x00, 0x68, 0x91, 0x9C, 0xC8, 0x68, 0x91, 0x9C, - 0xC8, 0x68, 0x91, 0x9C, 0xC8, 0x68, 0x91, 0x9C, - 0x60, 0x20, 0x94, 0x62, 0xA0, 0x00, 0x20, 0x57, - 0x72, 0x68, 0x68, 0xA9, 0xF0, 0xA0, 0x00, 0xF0, - 0x12, 0xA6, 0xAE, 0xA4, 0xAF, 0x86, 0x9E, 0x84, - 0x9F, 0x20, 0x7C, 0x69, 0x86, 0xAD, 0x84, 0xAE, - 0x85, 0xAC, 0x60, 0xA2, 0x22, 0x86, 0x5B, 0x86, - 0x5C, 0x85, 0xB8, 0x84, 0xB9, 0x85, 0xAD, 0x84, - 0xAE, 0xA0, 0xFF, 0xC8, 0xB1, 0xB8, 0xF0, 0x0C, - 0xC5, 0x5B, 0xF0, 0x04, 0xC5, 0x5C, 0xD0, 0xF3, - 0xC9, 0x22, 0xF0, 0x01, 0x18, 0x84, 0xAC, 0x98, - 0x65, 0xB8, 0x85, 0xBA, 0xA6, 0xB9, 0x90, 0x01, - 0xE8, 0x86, 0xBB, 0xA5, 0xB9, 0xC9, 0x03, 0xB0, - 0x0B, 0x98, 0x20, 0x01, 0x69, 0xA6, 0xB8, 0xA4, - 0xB9, 0x20, 0xEE, 0x6A, 0xA6, 0x65, 0xE0, 0x71, - 0xD0, 0x05, 0xA2, 0x1C, 0x4C, 0x3B, 0x59, 0xA5, - 0xAC, 0x95, 0x00, 0xA5, 0xAD, 0x95, 0x01, 0xA5, - 0xAE, 0x95, 0x02, 0xA0, 0x00, 0x86, 0xAE, 0x84, - 0xAF, 0x88, 0x84, 0x5F, 0x86, 0x66, 0xE8, 0xE8, - 0xE8, 0x86, 0x65, 0x60, 0x46, 0x60, 0x48, 0x49, - 0xFF, 0x38, 0x65, 0x81, 0xA4, 0x82, 0xB0, 0x01, - 0x88, 0xC4, 0x80, 0x90, 0x11, 0xD0, 0x04, 0xC5, - 0x7F, 0x90, 0x0B, 0x85, 0x81, 0x84, 0x82, 0x85, - 0x83, 0x84, 0x84, 0xAA, 0x68, 0x60, 0xA2, 0x0C, - 0xA5, 0x60, 0x30, 0xB8, 0x20, 0xAE, 0x69, 0xA9, - 0x80, 0x85, 0x60, 0x68, 0xD0, 0xD0, 0xA6, 0x85, - 0xA5, 0x86, 0x86, 0x81, 0x85, 0x82, 0xA0, 0x00, - 0x84, 0x9D, 0xA5, 0x7F, 0xA6, 0x80, 0x85, 0xAA, - 0x86, 0xAB, 0xA9, 0x68, 0x85, 0x71, 0x84, 0x72, - 0xC5, 0x65, 0xF0, 0x05, 0x20, 0x32, 0x6A, 0xF0, - 0xF7, 0x06, 0xA0, 0xA5, 0x7B, 0xA6, 0x7C, 0x85, - 0x71, 0x86, 0x72, 0xE4, 0x7E, 0xD0, 0x04, 0xC5, - 0x7D, 0xF0, 0x05, 0x20, 0x2C, 0x6A, 0xF0, 0xF3, - 0x85, 0xA4, 0x86, 0xA5, 0xA9, 0x04, 0x85, 0xA0, - 0xA5, 0xA4, 0xA6, 0xA5, 0xE4, 0x80, 0xD0, 0x04, - 0xC5, 0x7F, 0xF0, 0x75, 0x85, 0x71, 0x86, 0x72, - 0xA0, 0x02, 0xB1, 0x71, 0x65, 0xA4, 0x85, 0xA4, - 0xC8, 0xB1, 0x71, 0x65, 0xA5, 0x85, 0xA5, 0xA0, - 0x01, 0xB1, 0x71, 0x10, 0xDB, 0xA0, 0x04, 0xB1, - 0x71, 0x0A, 0x69, 0x05, 0x20, 0x64, 0x6A, 0xE4, - 0xA5, 0xD0, 0x04, 0xC5, 0xA4, 0xF0, 0xCD, 0x20, - 0x32, 0x6A, 0xF0, 0xF3, 0xC8, 0xB1, 0x71, 0x10, - 0x30, 0xC8, 0xB1, 0x71, 0xF0, 0x2B, 0xC8, 0xB1, - 0x71, 0xAA, 0xC8, 0xB1, 0x71, 0xC5, 0x82, 0x90, - 0x06, 0xD0, 0x1E, 0xE4, 0x81, 0xB0, 0x1A, 0xC5, - 0xAB, 0x90, 0x17, 0xD0, 0x04, 0xE4, 0xAA, 0x90, - 0x11, 0x86, 0xAA, 0x85, 0xAB, 0xA5, 0x71, 0xA6, - 0x72, 0x85, 0x9C, 0x86, 0x9D, 0x88, 0x88, 0x84, - 0xA2, 0x18, 0xA5, 0xA0, 0x65, 0x71, 0x85, 0x71, - 0x90, 0x02, 0xE6, 0x72, 0xA6, 0x72, 0xA0, 0x00, - 0x60, 0xC6, 0xA0, 0xA6, 0x9D, 0xF0, 0xF5, 0xA4, - 0xA2, 0x18, 0xB1, 0x9C, 0x65, 0xAA, 0x85, 0xA6, - 0xA5, 0xAB, 0x69, 0x00, 0x85, 0xA7, 0xA5, 0x81, - 0xA6, 0x82, 0x85, 0xA4, 0x86, 0xA5, 0x20, 0xC8, - 0x58, 0xA4, 0xA2, 0xC8, 0xA5, 0xA4, 0x91, 0x9C, - 0xAA, 0xE6, 0xA5, 0xA5, 0xA5, 0xC8, 0x91, 0x9C, - 0x4C, 0xB2, 0x69, 0xA5, 0xAF, 0x48, 0xA5, 0xAE, - 0x48, 0x20, 0x80, 0x63, 0x20, 0x96, 0x62, 0x68, - 0x85, 0xB8, 0x68, 0x85, 0xB9, 0xA0, 0x00, 0xB1, - 0xB8, 0x18, 0x71, 0xAE, 0x90, 0x05, 0xA2, 0x1A, - 0x4C, 0x3B, 0x59, 0x20, 0x01, 0x69, 0x20, 0xE0, - 0x6A, 0xA5, 0x9E, 0xA4, 0x9F, 0x20, 0x11, 0x6B, - 0x20, 0xF2, 0x6A, 0xA5, 0xB8, 0xA4, 0xB9, 0x20, - 0x11, 0x6B, 0x20, 0x54, 0x69, 0x4C, 0xBC, 0x62, - 0xA0, 0x00, 0xB1, 0xB8, 0x48, 0xC8, 0xB1, 0xB8, - 0xAA, 0xC8, 0xB1, 0xB8, 0xA8, 0x68, 0x86, 0x71, - 0x84, 0x72, 0xAA, 0xF0, 0x14, 0xA0, 0x00, 0xB1, - 0x71, 0x91, 0x83, 0xC8, 0xCA, 0xD0, 0xF8, 0x98, - 0x18, 0x65, 0x83, 0x85, 0x83, 0x90, 0x02, 0xE6, - 0x84, 0x60, 0x20, 0x96, 0x62, 0xA5, 0xAE, 0xA4, - 0xAF, 0x85, 0x71, 0x84, 0x72, 0x20, 0x42, 0x6B, - 0x08, 0xA0, 0x00, 0xB1, 0x71, 0x48, 0xC8, 0xB1, - 0x71, 0xAA, 0xC8, 0xB1, 0x71, 0xA8, 0x68, 0x28, - 0xD0, 0x13, 0xC4, 0x82, 0xD0, 0x0F, 0xE4, 0x81, - 0xD0, 0x0B, 0x48, 0x18, 0x65, 0x81, 0x85, 0x81, - 0x90, 0x02, 0xE6, 0x82, 0x68, 0x86, 0x71, 0x84, - 0x72, 0x60, 0xC4, 0x67, 0xD0, 0x0C, 0xC5, 0x66, - 0xD0, 0x08, 0x85, 0x65, 0xE9, 0x03, 0x85, 0x66, - 0xA0, 0x00, 0x60, 0x20, 0x4D, 0x6C, 0x8A, 0x48, - 0xA9, 0x01, 0x20, 0x09, 0x69, 0x68, 0xA0, 0x00, - 0x91, 0xAD, 0x68, 0x68, 0x4C, 0x54, 0x69, 0x20, - 0xC5, 0x6B, 0xD1, 0x9E, 0x98, 0xF0, 0x08, 0x20, - 0xC5, 0x6B, 0x18, 0xF1, 0x9E, 0x49, 0xFF, 0x90, - 0x04, 0xB1, 0x9E, 0xAA, 0x98, 0x48, 0x8A, 0x48, - 0x20, 0x09, 0x69, 0xA5, 0x9E, 0xA4, 0x9F, 0x20, - 0x11, 0x6B, 0x68, 0xA8, 0x68, 0x18, 0x65, 0x71, - 0x85, 0x71, 0x90, 0x02, 0xE6, 0x72, 0x98, 0x20, - 0xF2, 0x6A, 0x4C, 0x54, 0x69, 0xA9, 0xFF, 0x85, - 0xAF, 0x20, 0xC2, 0x00, 0xC9, 0x29, 0xF0, 0x06, - 0x20, 0xE8, 0x63, 0x20, 0x4A, 0x6C, 0x20, 0xC5, - 0x6B, 0xCA, 0x8A, 0x48, 0x18, 0xA2, 0x00, 0xF1, - 0x9E, 0xB0, 0xC3, 0x49, 0xFF, 0xC5, 0xAF, 0x90, - 0xBE, 0xA5, 0xAF, 0xB0, 0xBA, 0x20, 0xE2, 0x63, - 0x68, 0x85, 0xA2, 0x68, 0x85, 0xA3, 0x68, 0x68, - 0x68, 0xAA, 0x68, 0x85, 0x9E, 0x68, 0x85, 0x9F, - 0xA0, 0x00, 0x8A, 0xF0, 0x67, 0xE6, 0xA2, 0x6C, - 0xA2, 0x00, 0x20, 0x0A, 0x6B, 0x85, 0xAC, 0x86, - 0xAD, 0x84, 0xAE, 0xA8, 0xF0, 0x2C, 0x88, 0xB1, - 0x71, 0x20, 0xEC, 0x65, 0x90, 0x04, 0x09, 0x20, - 0x91, 0x71, 0x98, 0xD0, 0xF1, 0xF0, 0x1B, 0x20, - 0x0A, 0x6B, 0x85, 0xAC, 0x86, 0xAD, 0x84, 0xAE, - 0xA8, 0xF0, 0x0F, 0x88, 0xB1, 0x71, 0x20, 0xE8, - 0x65, 0x90, 0x04, 0x29, 0xDF, 0x91, 0x71, 0x98, - 0xD0, 0xF1, 0x68, 0x68, 0x4C, 0x54, 0x69, 0x20, - 0x0A, 0x6B, 0x98, 0xA4, 0x71, 0x4C, 0x23, 0x68, - 0x20, 0x2E, 0x6C, 0x4C, 0x32, 0x68, 0x20, 0x0A, - 0x6B, 0xA2, 0x00, 0x86, 0x5F, 0xA8, 0x60, 0x20, - 0x2E, 0x6C, 0xF0, 0x08, 0xA0, 0x00, 0xB1, 0x71, - 0xA8, 0x4C, 0x32, 0x68, 0x4C, 0xF3, 0x66, 0x20, - 0xBC, 0x00, 0x20, 0x91, 0x62, 0x20, 0x6C, 0x66, - 0xA4, 0xAE, 0xD0, 0xF0, 0xA6, 0xAF, 0x4C, 0xC2, - 0x00, 0x20, 0x2E, 0x6C, 0xD0, 0x03, 0x4C, 0x0E, - 0x6E, 0xA6, 0xC3, 0xA4, 0xC4, 0x86, 0xBA, 0x84, - 0xBB, 0xA6, 0x71, 0x86, 0xC3, 0x18, 0x65, 0x71, - 0x85, 0x73, 0xA5, 0x72, 0x85, 0xC4, 0x69, 0x00, - 0x85, 0x74, 0xA0, 0x00, 0xB1, 0x73, 0x48, 0x98, - 0x91, 0x73, 0x20, 0xC2, 0x00, 0x20, 0x6A, 0x71, - 0x68, 0xA0, 0x00, 0x91, 0x73, 0xA6, 0xBA, 0xA4, - 0xBB, 0x86, 0xC3, 0x84, 0xC4, 0x60, 0x20, 0x91, - 0x62, 0x20, 0xAF, 0x6C, 0x20, 0xE8, 0x63, 0xA5, - 0x12, 0x48, 0xA5, 0x11, 0x48, 0x20, 0x4A, 0x6C, - 0x68, 0x85, 0x11, 0x68, 0x85, 0x12, 0x60, 0xA5, - 0xAC, 0xC9, 0x98, 0xB0, 0x8F, 0x20, 0x14, 0x71, - 0xA5, 0xAE, 0xA4, 0xAF, 0x84, 0x11, 0x85, 0x12, - 0x60, 0x20, 0xAF, 0x6C, 0xA2, 0x00, 0xA1, 0x11, - 0xA8, 0x4C, 0x32, 0x68, 0x20, 0x96, 0x6C, 0x8A, - 0xA2, 0x00, 0x81, 0x11, 0x60, 0x20, 0xAF, 0x6C, - 0xA2, 0x00, 0xA1, 0x11, 0xA8, 0xE6, 0x11, 0xD0, - 0x02, 0xE6, 0x12, 0xA1, 0x11, 0x4C, 0x23, 0x68, - 0x20, 0x91, 0x62, 0x20, 0xAF, 0x6C, 0x84, 0x97, - 0x85, 0x98, 0x20, 0xE8, 0x63, 0x20, 0x91, 0x62, - 0x20, 0xAF, 0x6C, 0x98, 0xA2, 0x00, 0x81, 0x97, - 0xE6, 0x97, 0xD0, 0x02, 0xE6, 0x98, 0xA5, 0x12, - 0x81, 0x97, 0x4C, 0xC2, 0x00, 0x20, 0x76, 0x65, - 0x85, 0x97, 0x84, 0x98, 0xA5, 0x5F, 0x48, 0x20, - 0xE8, 0x63, 0x20, 0x76, 0x65, 0x68, 0xC5, 0x5F, - 0xD0, 0x10, 0xA0, 0x03, 0xB1, 0x97, 0x48, 0xB1, - 0x95, 0x91, 0x97, 0x68, 0x91, 0x95, 0x88, 0x10, - 0xF3, 0x60, 0x4C, 0xA0, 0x62, 0x20, 0x91, 0x62, - 0x20, 0xAF, 0x6C, 0xA9, 0x6D, 0x48, 0xA9, 0x43, - 0x48, 0x6C, 0x11, 0x00, 0x4C, 0xC2, 0x00, 0x20, - 0x96, 0x6C, 0x86, 0x97, 0xA2, 0x00, 0x20, 0xC2, - 0x00, 0xF0, 0x03, 0x20, 0x9C, 0x6C, 0x86, 0x98, - 0xB1, 0x11, 0x45, 0x98, 0x25, 0x97, 0xF0, 0xF8, - 0x60, 0x20, 0x49, 0x6F, 0xA5, 0xB0, 0x49, 0xFF, - 0x85, 0xB0, 0x45, 0xB7, 0x85, 0xB8, 0xA5, 0xAC, - 0x4C, 0x7F, 0x6D, 0x20, 0x98, 0x6E, 0x90, 0x4D, - 0xA9, 0xAC, 0xA0, 0x79, 0x20, 0x49, 0x6F, 0xD0, - 0x10, 0xA5, 0xB7, 0x85, 0xB0, 0xA2, 0x04, 0xB5, - 0xB2, 0x95, 0xAB, 0xCA, 0xD0, 0xF9, 0x86, 0xB9, - 0x60, 0xA6, 0xB9, 0x86, 0xA3, 0xA2, 0xB3, 0xA5, - 0xB3, 0xA8, 0xF0, 0xC4, 0x38, 0xE5, 0xAC, 0xF0, - 0x24, 0x90, 0x12, 0x84, 0xAC, 0xA4, 0xB7, 0x84, - 0xB0, 0x49, 0xFF, 0x69, 0x00, 0xA0, 0x00, 0x84, - 0xA3, 0xA2, 0xAC, 0xD0, 0x04, 0xA0, 0x00, 0x84, - 0xB9, 0xC9, 0xF9, 0x30, 0xB6, 0xA8, 0xA5, 0xB9, - 0x56, 0x01, 0x20, 0xAF, 0x6E, 0x24, 0xB8, 0x10, - 0x4C, 0xA0, 0xAC, 0xE0, 0xB3, 0xF0, 0x02, 0xA0, - 0xB3, 0x38, 0x49, 0xFF, 0x65, 0xA3, 0x85, 0xB9, - 0xB9, 0x03, 0x00, 0xF5, 0x03, 0x85, 0xAF, 0xB9, - 0x02, 0x00, 0xF5, 0x02, 0x85, 0xAE, 0xB9, 0x01, - 0x00, 0xF5, 0x01, 0x85, 0xAD, 0xB0, 0x03, 0x20, - 0x54, 0x6E, 0xA0, 0x00, 0x98, 0x18, 0xA6, 0xAD, - 0xD0, 0x3E, 0xA6, 0xAE, 0x86, 0xAD, 0xA6, 0xAF, - 0x86, 0xAE, 0xA6, 0xB9, 0x86, 0xAF, 0x84, 0xB9, - 0x69, 0x08, 0xC9, 0x18, 0xD0, 0xE8, 0xA9, 0x00, - 0x85, 0xAC, 0x85, 0xB0, 0x60, 0x65, 0xA3, 0x85, - 0xB9, 0xA5, 0xAF, 0x65, 0xB6, 0x85, 0xAF, 0xA5, - 0xAE, 0x65, 0xB5, 0x85, 0xAE, 0xA5, 0xAD, 0x65, - 0xB4, 0x85, 0xAD, 0xB0, 0x1A, 0x60, 0x69, 0x01, - 0x06, 0xB9, 0x26, 0xAF, 0x26, 0xAE, 0x26, 0xAD, - 0x10, 0xF4, 0x38, 0xE5, 0xAC, 0xB0, 0xCF, 0x49, - 0xFF, 0x69, 0x01, 0x85, 0xAC, 0x90, 0x0C, 0xE6, - 0xAC, 0xF0, 0x36, 0x66, 0xAD, 0x66, 0xAE, 0x66, - 0xAF, 0x66, 0xB9, 0x60, 0xA5, 0xB0, 0x49, 0xFF, - 0x85, 0xB0, 0xA5, 0xAD, 0x49, 0xFF, 0x85, 0xAD, - 0xA5, 0xAE, 0x49, 0xFF, 0x85, 0xAE, 0xA5, 0xAF, - 0x49, 0xFF, 0x85, 0xAF, 0xA5, 0xB9, 0x49, 0xFF, - 0x85, 0xB9, 0xE6, 0xB9, 0xD0, 0x0A, 0xE6, 0xAF, - 0xD0, 0x06, 0xE6, 0xAE, 0xD0, 0x02, 0xE6, 0xAD, - 0x60, 0xA2, 0x0A, 0x4C, 0x3B, 0x59, 0xA2, 0x74, - 0xB4, 0x03, 0x84, 0xB9, 0xB4, 0x02, 0x94, 0x03, - 0xB4, 0x01, 0x94, 0x02, 0xA4, 0xB2, 0x94, 0x01, - 0x69, 0x08, 0x30, 0xEC, 0xF0, 0xEA, 0xE9, 0x08, - 0xA8, 0xA5, 0xB9, 0xB0, 0x12, 0x16, 0x01, 0x90, - 0x02, 0xF6, 0x01, 0x76, 0x01, 0x76, 0x01, 0x76, - 0x02, 0x76, 0x03, 0x6A, 0xC8, 0xD0, 0xEE, 0x18, - 0x60, 0x20, 0xAD, 0x70, 0xF0, 0x02, 0x10, 0x03, - 0x4C, 0xF3, 0x66, 0xA5, 0xAC, 0xE9, 0x7F, 0x48, - 0xA9, 0x80, 0x85, 0xAC, 0xA9, 0x2C, 0xA0, 0x79, - 0x20, 0x7C, 0x6D, 0xA9, 0x30, 0xA0, 0x79, 0x20, - 0xBF, 0x6F, 0xA9, 0xA3, 0xA0, 0x79, 0x20, 0x61, - 0x6D, 0xA9, 0x1F, 0xA0, 0x79, 0x20, 0x11, 0x74, - 0xA9, 0x34, 0xA0, 0x79, 0x20, 0x7C, 0x6D, 0x68, - 0x20, 0x08, 0x72, 0xA9, 0x38, 0xA0, 0x79, 0x20, - 0x49, 0x6F, 0xF0, 0x4C, 0x20, 0x6F, 0x6F, 0xA9, - 0x00, 0x85, 0x75, 0x85, 0x76, 0x85, 0x77, 0xA5, - 0xB9, 0x20, 0x1E, 0x6F, 0xA5, 0xAF, 0x20, 0x1E, - 0x6F, 0xA5, 0xAE, 0x20, 0x1E, 0x6F, 0xA5, 0xAD, - 0x20, 0x23, 0x6F, 0x4C, 0x2F, 0x70, 0xD0, 0x03, - 0x4C, 0x86, 0x6E, 0x4A, 0x09, 0x80, 0xA8, 0x90, - 0x13, 0x18, 0xA5, 0x77, 0x65, 0xB6, 0x85, 0x77, - 0xA5, 0x76, 0x65, 0xB5, 0x85, 0x76, 0xA5, 0x75, - 0x65, 0xB4, 0x85, 0x75, 0x66, 0x75, 0x66, 0x76, - 0x66, 0x77, 0x66, 0xB9, 0x98, 0x4A, 0xD0, 0xDE, - 0x60, 0x85, 0x71, 0x84, 0x72, 0xA0, 0x03, 0xB1, - 0x71, 0x85, 0xB6, 0x88, 0xB1, 0x71, 0x85, 0xB5, - 0x88, 0xB1, 0x71, 0x85, 0xB7, 0x45, 0xB0, 0x85, - 0xB8, 0xA5, 0xB7, 0x09, 0x80, 0x85, 0xB4, 0x88, - 0xB1, 0x71, 0x85, 0xB3, 0xA5, 0xAC, 0x60, 0xA5, - 0xB3, 0xF0, 0x1D, 0x18, 0x65, 0xAC, 0x90, 0x04, - 0x30, 0x31, 0x18, 0x2C, 0x10, 0x12, 0x69, 0x80, - 0x85, 0xAC, 0xD0, 0x03, 0x4C, 0x12, 0x6E, 0xA5, - 0xB8, 0x85, 0xB0, 0x60, 0xA5, 0xB0, 0x10, 0x1B, - 0x68, 0x68, 0x4C, 0x0E, 0x6E, 0x20, 0x8E, 0x70, - 0xAA, 0xF0, 0xF0, 0x18, 0x69, 0x02, 0xB0, 0x0B, - 0xA2, 0x00, 0x86, 0xB8, 0x20, 0x99, 0x6D, 0xE6, - 0xAC, 0xD0, 0xE0, 0x4C, 0x81, 0x6E, 0x20, 0x8E, - 0x70, 0xA9, 0xB4, 0xA0, 0x79, 0xA2, 0x00, 0x86, - 0xB8, 0x20, 0x3E, 0x70, 0x4C, 0xC2, 0x6F, 0x20, - 0x49, 0x6F, 0xF0, 0x66, 0x20, 0x9D, 0x70, 0xA9, - 0x00, 0x38, 0xE5, 0xAC, 0x85, 0xAC, 0x20, 0x6F, - 0x6F, 0xE6, 0xAC, 0xF0, 0xD6, 0xA2, 0xFD, 0xA9, - 0x01, 0xA4, 0xB4, 0xC4, 0xAD, 0xD0, 0x0A, 0xA4, - 0xB5, 0xC4, 0xAE, 0xD0, 0x04, 0xA4, 0xB6, 0xC4, - 0xAF, 0x08, 0x2A, 0x90, 0x0A, 0xE8, 0xF0, 0x2A, - 0x10, 0x2C, 0xA0, 0x01, 0x95, 0x77, 0x98, 0x28, - 0x90, 0x14, 0xA8, 0xA5, 0xB6, 0xE5, 0xAF, 0x85, - 0xB6, 0xA5, 0xB5, 0xE5, 0xAE, 0x85, 0xB5, 0xA5, - 0xB4, 0xE5, 0xAD, 0x85, 0xB4, 0x98, 0x06, 0xB6, - 0x26, 0xB5, 0x26, 0xB4, 0xB0, 0xD3, 0x30, 0xC1, - 0x10, 0xCF, 0xA0, 0x40, 0xD0, 0xD6, 0x0A, 0x0A, - 0x0A, 0x0A, 0x0A, 0x0A, 0x85, 0xB9, 0x28, 0x4C, - 0x2F, 0x70, 0xA2, 0x14, 0x4C, 0x3B, 0x59, 0xA5, - 0x75, 0x85, 0xAD, 0xA5, 0x76, 0x85, 0xAE, 0xA5, - 0x77, 0x85, 0xAF, 0x4C, 0xF2, 0x6D, 0x85, 0x71, - 0x84, 0x72, 0xA0, 0x03, 0xB1, 0x71, 0x85, 0xAF, - 0x88, 0xB1, 0x71, 0x85, 0xAE, 0x88, 0xB1, 0x71, - 0x85, 0xB0, 0x09, 0x80, 0x85, 0xAD, 0x88, 0xB1, - 0x71, 0x85, 0xAC, 0x84, 0xB9, 0x60, 0xA2, 0xA8, - 0x2C, 0xA2, 0xA4, 0xA0, 0x00, 0xF0, 0x04, 0xA6, - 0x97, 0xA4, 0x98, 0x20, 0x9D, 0x70, 0x86, 0x71, - 0x84, 0x72, 0xA0, 0x03, 0xA5, 0xAF, 0x91, 0x71, - 0x88, 0xA5, 0xAE, 0x91, 0x71, 0x88, 0xA5, 0xB0, - 0x09, 0x7F, 0x25, 0xAD, 0x91, 0x71, 0x88, 0xA5, - 0xAC, 0x91, 0x71, 0x84, 0xB9, 0x60, 0x20, 0x9D, - 0x70, 0xA2, 0x05, 0xB5, 0xAB, 0x95, 0xB2, 0xCA, - 0xD0, 0xF9, 0x86, 0xB9, 0x60, 0xA5, 0xAC, 0xF0, - 0xFB, 0x06, 0xB9, 0x90, 0xF7, 0x20, 0x76, 0x6E, - 0xD0, 0xF2, 0x4C, 0x47, 0x6E, 0xA5, 0xAC, 0xF0, - 0x09, 0xA5, 0xB0, 0x2A, 0xA9, 0xFF, 0xB0, 0x02, - 0xA9, 0x01, 0x60, 0x20, 0xAD, 0x70, 0x85, 0xAD, - 0xA9, 0x00, 0x85, 0xAE, 0xA2, 0x88, 0xA5, 0xAD, - 0x49, 0xFF, 0x2A, 0xA9, 0x00, 0x85, 0xAF, 0x86, - 0xAC, 0x85, 0xB9, 0x85, 0xB0, 0x4C, 0xED, 0x6D, - 0x46, 0xB0, 0x60, 0x85, 0x73, 0x84, 0x74, 0xA0, - 0x00, 0xB1, 0x73, 0xC8, 0xAA, 0xF0, 0xC6, 0xB1, - 0x73, 0x45, 0xB0, 0x30, 0xC4, 0xE4, 0xAC, 0xD0, - 0x1A, 0xB1, 0x73, 0x09, 0x80, 0xC5, 0xAD, 0xD0, - 0x12, 0xC8, 0xB1, 0x73, 0xC5, 0xAE, 0xD0, 0x0B, - 0xC8, 0xA9, 0x7F, 0xC5, 0xB9, 0xB1, 0x73, 0xE5, - 0xAF, 0xF0, 0x28, 0xA5, 0xB0, 0x90, 0x02, 0x49, - 0xFF, 0x4C, 0xB3, 0x70, 0xA5, 0xAC, 0xF0, 0x4A, - 0x38, 0xE9, 0x98, 0x24, 0xB0, 0x10, 0x09, 0xAA, - 0xA9, 0xFF, 0x85, 0xB2, 0x20, 0x5A, 0x6E, 0x8A, - 0xA2, 0xAC, 0xC9, 0xF9, 0x10, 0x06, 0x20, 0x98, - 0x6E, 0x84, 0xB2, 0x60, 0xA8, 0xA5, 0xB0, 0x29, - 0x80, 0x46, 0xAD, 0x05, 0xAD, 0x85, 0xAD, 0x20, - 0xAF, 0x6E, 0x84, 0xB2, 0x60, 0xA5, 0xAC, 0xC9, - 0x98, 0xB0, 0x1E, 0x20, 0x14, 0x71, 0x84, 0xB9, - 0xA5, 0xB0, 0x84, 0xB0, 0x49, 0x80, 0x2A, 0xA9, - 0x98, 0x85, 0xAC, 0xA5, 0xAF, 0x85, 0x5B, 0x4C, - 0xED, 0x6D, 0x85, 0xAD, 0x85, 0xAE, 0x85, 0xAF, - 0xA8, 0x60, 0xA0, 0x00, 0xA2, 0x09, 0x94, 0xA8, - 0xCA, 0x10, 0xFB, 0x90, 0x7F, 0xC9, 0x2D, 0xD0, - 0x04, 0x86, 0xB1, 0xF0, 0x04, 0xC9, 0x2B, 0xD0, - 0x05, 0x20, 0xBC, 0x00, 0x90, 0x6E, 0xC9, 0x24, - 0xD0, 0x03, 0x4C, 0x2A, 0x76, 0xC9, 0x25, 0xD0, - 0x08, 0x4C, 0x58, 0x76, 0x20, 0xBC, 0x00, 0x90, - 0x5B, 0xC9, 0x2E, 0xF0, 0x2E, 0xC9, 0x45, 0xD0, - 0x30, 0x20, 0xBC, 0x00, 0x90, 0x17, 0xC9, 0xB6, - 0xF0, 0x0E, 0xC9, 0x2D, 0xF0, 0x0A, 0xC9, 0xB5, - 0xF0, 0x08, 0xC9, 0x2B, 0xF0, 0x04, 0xD0, 0x07, - 0x66, 0xAB, 0x20, 0xBC, 0x00, 0x90, 0x5C, 0x24, - 0xAB, 0x10, 0x0E, 0xA9, 0x00, 0x38, 0xE5, 0xA9, - 0x4C, 0xD3, 0x71, 0x66, 0xAA, 0x24, 0xAA, 0x50, - 0xC3, 0xA5, 0xA9, 0x38, 0xE5, 0xA8, 0x85, 0xA9, - 0xF0, 0x12, 0x10, 0x09, 0x20, 0xAE, 0x6F, 0xE6, - 0xA9, 0xD0, 0xF9, 0xF0, 0x07, 0x20, 0x95, 0x6F, - 0xC6, 0xA9, 0xD0, 0xF9, 0xA5, 0xB1, 0x30, 0x01, - 0x60, 0x4C, 0xB4, 0x73, 0x48, 0x24, 0xAA, 0x10, - 0x02, 0xE6, 0xA8, 0x20, 0x95, 0x6F, 0x68, 0x38, - 0xE9, 0x30, 0x20, 0x08, 0x72, 0x4C, 0x94, 0x71, - 0x48, 0x20, 0x8E, 0x70, 0x68, 0x20, 0xBE, 0x70, - 0xA5, 0xB7, 0x45, 0xB0, 0x85, 0xB8, 0xA6, 0xAC, - 0x4C, 0x7F, 0x6D, 0xA5, 0xA9, 0xC9, 0x0A, 0x90, - 0x09, 0xA9, 0x64, 0x24, 0xAB, 0x30, 0x0E, 0x4C, - 0x81, 0x6E, 0x0A, 0x0A, 0x65, 0xA9, 0x0A, 0xA0, - 0x00, 0x71, 0xC3, 0xE9, 0x2F, 0x85, 0xA9, 0x4C, - 0xBA, 0x71, 0xA9, 0x3F, 0xA0, 0x7F, 0x20, 0x52, - 0x72, 0xA5, 0x88, 0xA6, 0x87, 0x85, 0xAD, 0x86, - 0xAE, 0xA2, 0x90, 0x38, 0x20, 0xCB, 0x70, 0x20, - 0x55, 0x72, 0x4C, 0x9C, 0x60, 0xA0, 0x01, 0xA9, - 0x20, 0x24, 0xB0, 0x10, 0x02, 0xA9, 0x2D, 0x99, - 0xEF, 0x00, 0x85, 0xB0, 0x84, 0xBA, 0xC8, 0xA6, - 0xAC, 0xD0, 0x05, 0xA9, 0x30, 0x4C, 0x6E, 0x73, - 0xA9, 0x00, 0xE0, 0x81, 0xB0, 0x09, 0xA9, 0x44, - 0xA0, 0x79, 0x20, 0xF7, 0x6E, 0xA9, 0xFA, 0x85, - 0xA8, 0xA9, 0x40, 0xA0, 0x79, 0x20, 0xDB, 0x70, - 0xF0, 0x1E, 0x10, 0x12, 0xA9, 0x3C, 0xA0, 0x79, - 0x20, 0xDB, 0x70, 0xF0, 0x02, 0x10, 0x0E, 0x20, - 0x95, 0x6F, 0xC6, 0xA8, 0xD0, 0xEE, 0x20, 0xAE, - 0x6F, 0xE6, 0xA8, 0xD0, 0xDC, 0x20, 0x78, 0x6D, - 0x20, 0x14, 0x71, 0xA2, 0x01, 0xA5, 0xA8, 0x18, - 0x69, 0x07, 0x30, 0x09, 0xC9, 0x08, 0xB0, 0x06, - 0x69, 0xFF, 0xAA, 0xA9, 0x02, 0x38, 0xE9, 0x02, - 0x85, 0xA9, 0x86, 0xA8, 0x8A, 0xF0, 0x02, 0x10, - 0x13, 0xA4, 0xBA, 0xA9, 0x2E, 0xC8, 0x99, 0xEF, - 0x00, 0x8A, 0xF0, 0x06, 0xA9, 0x30, 0xC8, 0x99, - 0xEF, 0x00, 0x84, 0xBA, 0xA0, 0x00, 0xA2, 0x80, - 0xA5, 0xAF, 0x18, 0x79, 0xBA, 0x79, 0x85, 0xAF, - 0xA5, 0xAE, 0x79, 0xB9, 0x79, 0x85, 0xAE, 0xA5, - 0xAD, 0x79, 0xB8, 0x79, 0x85, 0xAD, 0xE8, 0xB0, - 0x04, 0x10, 0xE5, 0x30, 0x02, 0x30, 0xE1, 0x8A, - 0x90, 0x04, 0x49, 0xFF, 0x69, 0x0A, 0x69, 0x2F, - 0xC8, 0xC8, 0xC8, 0x84, 0x95, 0xA4, 0xBA, 0xC8, - 0xAA, 0x29, 0x7F, 0x99, 0xEF, 0x00, 0xC6, 0xA8, - 0xD0, 0x06, 0xA9, 0x2E, 0xC8, 0x99, 0xEF, 0x00, - 0x84, 0xBA, 0xA4, 0x95, 0x8A, 0x49, 0xFF, 0x29, - 0x80, 0xAA, 0xC0, 0x12, 0xD0, 0xB2, 0xA4, 0xBA, - 0xB9, 0xEF, 0x00, 0x88, 0xC9, 0x30, 0xF0, 0xF8, - 0xC9, 0x2E, 0xF0, 0x01, 0xC8, 0xA9, 0x2B, 0xA6, - 0xA9, 0xF0, 0x2E, 0x10, 0x08, 0xA9, 0x00, 0x38, - 0xE5, 0xA9, 0xAA, 0xA9, 0x2D, 0x99, 0xF1, 0x00, - 0xA9, 0x45, 0x99, 0xF0, 0x00, 0x8A, 0xA2, 0x2F, - 0x38, 0xE8, 0xE9, 0x0A, 0xB0, 0xFB, 0x69, 0x3A, - 0x99, 0xF3, 0x00, 0x8A, 0x99, 0xF2, 0x00, 0xA9, - 0x00, 0x99, 0xF4, 0x00, 0xF0, 0x08, 0x99, 0xEF, - 0x00, 0xA9, 0x00, 0x99, 0xF0, 0x00, 0xA9, 0xF0, - 0xA0, 0x00, 0x60, 0xF0, 0x42, 0xA5, 0xB3, 0xD0, - 0x03, 0x4C, 0x10, 0x6E, 0xA2, 0x9C, 0xA0, 0x00, - 0x20, 0x6B, 0x70, 0xA5, 0xB7, 0x10, 0x0F, 0x20, - 0x45, 0x71, 0xA9, 0x9C, 0xA0, 0x00, 0x20, 0xDB, - 0x70, 0xD0, 0x03, 0x98, 0xA4, 0x5B, 0x20, 0x83, - 0x6D, 0x98, 0x48, 0x20, 0xB9, 0x6E, 0xA9, 0x9C, - 0xA0, 0x00, 0x20, 0xF7, 0x6E, 0x20, 0xBF, 0x73, - 0x68, 0x4A, 0x90, 0x0A, 0xA5, 0xAC, 0xF0, 0x06, - 0xA5, 0xB0, 0x49, 0xFF, 0x85, 0xB0, 0x60, 0xA9, - 0x48, 0xA0, 0x79, 0x20, 0xF7, 0x6E, 0xA5, 0xB9, - 0x69, 0x50, 0x90, 0x03, 0x20, 0xA5, 0x70, 0x85, - 0xA3, 0x20, 0x91, 0x70, 0xA5, 0xAC, 0xC9, 0x88, - 0x90, 0x03, 0x20, 0x8C, 0x6F, 0x20, 0x45, 0x71, - 0xA5, 0x5B, 0x18, 0x69, 0x81, 0xF0, 0xF3, 0x38, - 0xE9, 0x01, 0x48, 0xA2, 0x04, 0xB5, 0xB3, 0xB4, - 0xAC, 0x95, 0xAC, 0x94, 0xB3, 0xCA, 0x10, 0xF5, - 0xA5, 0xA3, 0x85, 0xB9, 0x20, 0x64, 0x6D, 0x20, - 0xB4, 0x73, 0xA9, 0x4C, 0xA0, 0x79, 0x20, 0x27, - 0x74, 0xA9, 0x00, 0x85, 0xB8, 0x68, 0x4C, 0x71, - 0x6F, 0x85, 0xBA, 0x84, 0xBB, 0x20, 0x61, 0x70, - 0xA9, 0xA4, 0x20, 0xF7, 0x6E, 0x20, 0x2B, 0x74, - 0xA9, 0xA4, 0xA0, 0x00, 0x4C, 0xF7, 0x6E, 0x85, - 0xBA, 0x84, 0xBB, 0x20, 0x5E, 0x70, 0xB1, 0xBA, - 0x85, 0xB1, 0xA4, 0xBA, 0xC8, 0x98, 0xD0, 0x02, - 0xE6, 0xBB, 0x85, 0xBA, 0xA4, 0xBB, 0x20, 0xF7, - 0x6E, 0xA5, 0xBA, 0xA4, 0xBB, 0x18, 0x69, 0x04, - 0x90, 0x01, 0xC8, 0x85, 0xBA, 0x84, 0xBB, 0x20, - 0x7C, 0x6D, 0xA9, 0xA8, 0xA0, 0x00, 0xC6, 0xB1, - 0xD0, 0xE4, 0x60, 0xA5, 0xAC, 0xF0, 0x07, 0xA2, - 0xD4, 0xA0, 0x00, 0x20, 0x6B, 0x70, 0xA2, 0x00, - 0xA5, 0xD4, 0x6A, 0x6A, 0x90, 0x01, 0xE8, 0x29, - 0x08, 0xF0, 0x01, 0xE8, 0x8A, 0x4A, 0x66, 0xD5, - 0x66, 0xD7, 0x66, 0xD6, 0x66, 0xD4, 0xA2, 0x02, - 0xB5, 0xD5, 0x95, 0xAD, 0xCA, 0x10, 0xF9, 0xA9, - 0x80, 0x85, 0xAC, 0x0A, 0x85, 0xB0, 0x4C, 0xF2, - 0x6D, 0xA9, 0x69, 0xA0, 0x79, 0x20, 0x7C, 0x6D, - 0x20, 0x8E, 0x70, 0xA9, 0x7E, 0xA0, 0x79, 0xA6, - 0xB7, 0x20, 0xB7, 0x6F, 0x20, 0x8E, 0x70, 0x20, - 0x45, 0x71, 0xA9, 0x00, 0x85, 0xB8, 0x20, 0x64, - 0x6D, 0xA9, 0xB0, 0xA0, 0x79, 0x20, 0x61, 0x6D, - 0xA5, 0xB0, 0x48, 0x10, 0x0D, 0x20, 0x78, 0x6D, - 0xA5, 0xB0, 0x30, 0x09, 0xA5, 0x63, 0x49, 0xFF, - 0x85, 0x63, 0x20, 0xB4, 0x73, 0xA9, 0xB0, 0xA0, - 0x79, 0x20, 0x7C, 0x6D, 0x68, 0x10, 0x03, 0x20, - 0xB4, 0x73, 0xA9, 0x6D, 0xA0, 0x79, 0x4C, 0x11, - 0x74, 0x20, 0x61, 0x70, 0xA9, 0x00, 0x85, 0x63, - 0x20, 0x98, 0x74, 0xA2, 0x9C, 0xA0, 0x00, 0x20, - 0x6B, 0x70, 0xA9, 0xA4, 0xA0, 0x00, 0x20, 0x3E, - 0x70, 0xA9, 0x00, 0x85, 0xB0, 0xA5, 0x63, 0x20, - 0x09, 0x75, 0xA9, 0x9C, 0xA0, 0x00, 0x4C, 0xBF, - 0x6F, 0x48, 0x4C, 0xCA, 0x74, 0xA5, 0xB0, 0x48, - 0x10, 0x03, 0x20, 0xB4, 0x73, 0xA5, 0xAC, 0x48, - 0xC9, 0x81, 0x90, 0x07, 0xA9, 0xA3, 0xA0, 0x79, - 0x20, 0xBF, 0x6F, 0xA9, 0x82, 0xA0, 0x79, 0x20, - 0x11, 0x74, 0x68, 0xC9, 0x81, 0x90, 0x07, 0xA9, - 0x69, 0xA0, 0x79, 0x20, 0x61, 0x6D, 0x68, 0x10, - 0x16, 0x4C, 0xB4, 0x73, 0x20, 0x96, 0x6C, 0xE0, - 0x08, 0xB0, 0x20, 0xA9, 0x00, 0x38, 0x2A, 0xCA, - 0x10, 0xFC, 0xE8, 0x01, 0x11, 0x81, 0x11, 0x60, - 0x20, 0x96, 0x6C, 0xE0, 0x08, 0xB0, 0x0C, 0xA9, - 0xFF, 0x2A, 0xCA, 0x10, 0xFC, 0xE8, 0x21, 0x11, - 0x81, 0x11, 0x60, 0x4C, 0xF3, 0x66, 0x20, 0xE5, - 0x63, 0x20, 0x96, 0x6C, 0xE0, 0x08, 0xB0, 0xF3, - 0x20, 0xC2, 0x00, 0xC9, 0x29, 0xF0, 0x03, 0x4C, - 0xF3, 0x63, 0x20, 0xBC, 0x00, 0xA9, 0x00, 0x38, - 0x2A, 0xCA, 0x10, 0xFC, 0xE8, 0x21, 0x11, 0xF0, - 0x02, 0xA9, 0xFF, 0x4C, 0xBE, 0x70, 0xE0, 0x19, - 0xB0, 0x4A, 0x86, 0x78, 0xA9, 0x18, 0x20, 0x09, - 0x69, 0xA0, 0x17, 0xA2, 0x18, 0x46, 0x11, 0x66, - 0x12, 0x66, 0x13, 0x8A, 0x2A, 0x91, 0xAD, 0x88, - 0x10, 0xF3, 0xA5, 0x78, 0xF0, 0x0A, 0xAA, 0x38, - 0x49, 0xFF, 0x69, 0x18, 0xF0, 0x1C, 0xD0, 0x0F, - 0xA8, 0xB1, 0xAD, 0xC9, 0x30, 0xD0, 0x07, 0xCA, - 0xF0, 0x03, 0xC8, 0x10, 0xF4, 0xE8, 0x98, 0x18, - 0x65, 0xAD, 0x85, 0xAD, 0xA9, 0x00, 0x65, 0xAE, - 0x85, 0xAE, 0x68, 0x68, 0x86, 0xAC, 0x20, 0xBC, - 0x00, 0x4C, 0x54, 0x69, 0x4C, 0xF3, 0x66, 0xE0, - 0x07, 0xB0, 0xF9, 0x86, 0x78, 0xA9, 0x06, 0x20, - 0x09, 0x69, 0xA0, 0x05, 0xF8, 0xA5, 0x13, 0x20, - 0x0D, 0x76, 0xA5, 0x12, 0x20, 0x0D, 0x76, 0xA5, - 0x11, 0x20, 0x0D, 0x76, 0xD8, 0xA2, 0x06, 0xA5, - 0x78, 0xF0, 0xB5, 0xAA, 0x38, 0x49, 0xFF, 0x69, - 0x06, 0xF0, 0xC7, 0xD0, 0xBA, 0xAA, 0x29, 0x0F, - 0x20, 0x18, 0x76, 0x8A, 0x4A, 0x4A, 0x4A, 0x4A, - 0xC9, 0x0A, 0x69, 0x30, 0x91, 0xAD, 0x88, 0x60, - 0x85, 0xAC, 0xA9, 0x00, 0x85, 0xB8, 0x8A, 0x20, - 0x08, 0x72, 0x20, 0xBC, 0x00, 0x90, 0x0A, 0x09, - 0x20, 0xE9, 0x61, 0xC9, 0x06, 0xB0, 0x2A, 0x69, - 0x0A, 0x29, 0x0F, 0xAA, 0xA5, 0xAC, 0xF0, 0xE4, - 0x69, 0x04, 0x90, 0xDC, 0x4C, 0x81, 0x6E, 0xAA, - 0xA5, 0xAC, 0xF0, 0x06, 0xE6, 0xAC, 0xF0, 0xF4, - 0xA9, 0x00, 0x85, 0xB8, 0x8A, 0x20, 0x08, 0x72, - 0x20, 0xBC, 0x00, 0x49, 0x30, 0xC9, 0x02, 0x90, - 0xE6, 0x4C, 0xEC, 0x71, 0xAD, 0xC8, 0x02, 0xD0, - 0x18, 0x20, 0xB1, 0x78, 0x90, 0x0B, 0x8D, 0xC9, - 0x02, 0xA2, 0x20, 0x8E, 0xCA, 0x02, 0x4C, 0x20, - 0x5D, 0xAE, 0xCA, 0x02, 0xF0, 0x03, 0xCE, 0xCA, - 0x02, 0xA2, 0xD8, 0x20, 0x8C, 0x76, 0xA2, 0xDB, - 0x20, 0x8C, 0x76, 0x60, 0xB5, 0x00, 0x10, 0xFB, - 0x0A, 0x29, 0x40, 0xF0, 0xF6, 0x95, 0x00, 0x8A, - 0xA8, 0x68, 0x68, 0xA9, 0x05, 0x20, 0x04, 0x59, - 0xA5, 0xC4, 0x48, 0xA5, 0xC3, 0x48, 0xA5, 0x88, - 0x48, 0xA5, 0x87, 0x48, 0xA9, 0x8D, 0x48, 0xB9, - 0x01, 0x00, 0x85, 0xC3, 0xB9, 0x02, 0x00, 0x85, - 0xC4, 0x4C, 0xC3, 0x5C, 0x20, 0xB1, 0x78, 0xB0, - 0x09, 0xAD, 0xCA, 0x02, 0xF0, 0x09, 0xAD, 0xC9, - 0x02, 0x38, 0xA2, 0x00, 0x8E, 0xCA, 0x02, 0x60, - 0xA2, 0xDB, 0x2C, 0xA2, 0xD8, 0xC9, 0x93, 0xF0, - 0x12, 0xC9, 0xB4, 0xF0, 0x08, 0x38, 0xE9, 0xA2, - 0xF0, 0x0E, 0x4C, 0xF3, 0x63, 0xA9, 0x7F, 0x35, - 0x00, 0x10, 0x05, 0xB5, 0x00, 0x0A, 0x15, 0x00, - 0x95, 0x00, 0x4C, 0xBC, 0x00, 0x58, 0xA2, 0xDB, - 0x2C, 0xA2, 0xD8, 0x86, 0x78, 0x20, 0xBC, 0x00, - 0x20, 0x19, 0x5F, 0xA5, 0x79, 0xA6, 0x7A, 0x20, - 0x2D, 0x5B, 0xB0, 0x03, 0x4C, 0x7B, 0x5E, 0xA6, - 0x78, 0xA5, 0xAA, 0xE9, 0x01, 0x95, 0x01, 0xA5, - 0xAB, 0xE9, 0x00, 0x95, 0x02, 0xA9, 0xC0, 0x95, - 0x00, 0x60, 0xD0, 0xFD, 0xA5, 0xDB, 0x0A, 0x05, - 0xDB, 0x85, 0xDB, 0x4C, 0x82, 0x5E, 0xD0, 0xF1, - 0xA5, 0xD8, 0x0A, 0x05, 0xD8, 0x85, 0xD8, 0x4C, - 0x82, 0x5E, 0x20, 0xE5, 0x63, 0x20, 0x91, 0x62, - 0x20, 0x74, 0x77, 0x10, 0xFB, 0xA5, 0xB4, 0x09, - 0x80, 0x85, 0xB4, 0x20, 0x81, 0x6D, 0xF0, 0xF0, - 0x20, 0xE5, 0x63, 0x20, 0x91, 0x62, 0x20, 0x74, - 0x77, 0x30, 0xFB, 0xF0, 0xF9, 0xA5, 0xB4, 0x09, - 0x80, 0x85, 0xB4, 0x20, 0x81, 0x6D, 0xF0, 0xEE, - 0xC9, 0x29, 0xD0, 0x05, 0x68, 0x68, 0x4C, 0xBC, - 0x00, 0x4C, 0xF3, 0x63, 0x20, 0xC2, 0x00, 0xC9, - 0x2C, 0xD0, 0xED, 0x20, 0x9D, 0x70, 0xA5, 0xB0, - 0x09, 0x7F, 0x25, 0xAD, 0x48, 0xA5, 0xAE, 0x48, - 0xA5, 0xAF, 0x48, 0xA5, 0xAC, 0x48, 0x20, 0xBC, - 0x00, 0x20, 0x91, 0x62, 0x68, 0x85, 0xB3, 0x68, - 0x85, 0xB6, 0x68, 0x85, 0xB5, 0x68, 0x85, 0xB4, - 0x85, 0xB7, 0xA9, 0xB3, 0xA0, 0x00, 0x4C, 0xDB, - 0x70, 0xC9, 0x2C, 0xF0, 0x1B, 0x20, 0x4A, 0x6C, - 0x8A, 0xF0, 0x0A, 0xE0, 0x10, 0x90, 0x45, 0xE4, - 0x64, 0xB0, 0x02, 0x86, 0x64, 0x86, 0x0F, 0x20, - 0xC2, 0x00, 0xF0, 0x1A, 0xC9, 0x2C, 0xD0, 0xA9, - 0x20, 0x47, 0x6C, 0x8A, 0x30, 0x2E, 0xE0, 0x01, - 0x90, 0x2A, 0xA5, 0x0F, 0xF0, 0x06, 0xE4, 0x0F, - 0xF0, 0x02, 0xB0, 0x20, 0x86, 0x64, 0xA5, 0x0F, - 0xF0, 0x06, 0xC5, 0x64, 0xB0, 0x03, 0x85, 0x64, - 0x38, 0xE5, 0x64, 0xB0, 0xFC, 0x65, 0x64, 0x18, - 0x65, 0x64, 0x85, 0x10, 0xA5, 0x0F, 0x38, 0xE5, - 0x10, 0x85, 0x10, 0x60, 0x4C, 0xF3, 0x66, 0xA5, - 0xB0, 0x30, 0xF9, 0xA5, 0xAC, 0xF0, 0xF4, 0x20, - 0x8E, 0x70, 0xA9, 0x00, 0x85, 0x77, 0x85, 0x76, - 0x85, 0x75, 0x85, 0x78, 0x85, 0xAF, 0x85, 0xAE, - 0x85, 0xAD, 0xA2, 0x18, 0xA5, 0xB3, 0x4A, 0xB0, - 0x0E, 0x06, 0xB6, 0x26, 0xB5, 0x26, 0xB4, 0x26, - 0x77, 0x26, 0x76, 0x26, 0x75, 0x26, 0x78, 0x06, - 0xB6, 0x26, 0xB5, 0x26, 0xB4, 0x26, 0x77, 0x26, - 0x76, 0x26, 0x75, 0x26, 0x78, 0x06, 0xAF, 0x26, - 0xAE, 0x26, 0xAD, 0xA5, 0xAF, 0x2A, 0x85, 0x5B, - 0xA5, 0xAE, 0x2A, 0x85, 0x5C, 0xA5, 0xAD, 0x2A, - 0x85, 0x5D, 0xA9, 0x00, 0x2A, 0x85, 0x5E, 0xA5, - 0x77, 0xE5, 0x5B, 0x85, 0x5B, 0xA5, 0x76, 0xE5, - 0x5C, 0x85, 0x5C, 0xA5, 0x75, 0xE5, 0x5D, 0xA8, - 0xA5, 0x78, 0xE5, 0x5E, 0x90, 0x0E, 0x85, 0x78, - 0x84, 0x75, 0xA5, 0x5C, 0x85, 0x76, 0xA5, 0x5B, - 0x85, 0x77, 0xE6, 0xAF, 0xCA, 0xD0, 0xA2, 0x38, - 0xA5, 0xB3, 0xE9, 0x80, 0x6A, 0x69, 0x00, 0x85, - 0xAC, 0x4C, 0xF2, 0x6D, 0x20, 0xE5, 0x63, 0x20, - 0x76, 0x65, 0x20, 0xE2, 0x63, 0xA4, 0x95, 0xA5, - 0x96, 0x4C, 0x23, 0x68, 0x46, 0x5F, 0xA9, 0x7E, - 0xA0, 0x79, 0x20, 0x3E, 0x70, 0xC6, 0xAC, 0x60, - 0x46, 0x5F, 0xA9, 0x7E, 0xA0, 0x79, 0x4C, 0x3E, - 0x70, 0x6C, 0xCD, 0x02, 0x6C, 0xCF, 0x02, 0x6C, - 0xD1, 0x02, 0x6C, 0xD3, 0x02, 0x00, 0x00, 0x00, - 0x64, 0x76, 0x72, 0x7F, 0xEF, 0xFF, 0xE6, 0xC3, - 0xD0, 0x02, 0xE6, 0xC4, 0xAD, 0xFF, 0xFF, 0xC9, - 0x3A, 0xB0, 0x0A, 0xC9, 0x20, 0xF0, 0xEF, 0x38, - 0xE9, 0x30, 0x38, 0xE9, 0xD0, 0x60, 0x4C, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4C, 0xF3, 0x66, 0x00, 0x00, 0x00, 0xF2, 0x00, - 0x03, 0x0D, 0x4D, 0x65, 0x6D, 0x6F, 0x72, 0x79, - 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x00, 0x20, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, - 0x65, 0x65, 0x0D, 0x45, 0x6E, 0x68, 0x61, 0x6E, - 0x63, 0x65, 0x64, 0x20, 0x42, 0x41, 0x53, 0x49, - 0x43, 0x20, 0x31, 0x2E, 0x31, 0x30, 0x00, 0x02, - 0x80, 0x19, 0x56, 0x62, 0x80, 0x76, 0x22, 0xF3, - 0x82, 0x38, 0xAA, 0x40, 0x80, 0x35, 0x04, 0xF3, - 0x81, 0x35, 0x04, 0xF3, 0x80, 0x80, 0x00, 0x00, - 0x80, 0x31, 0x72, 0x18, 0x91, 0x43, 0x4F, 0xF8, - 0x94, 0x74, 0x23, 0xF7, 0x94, 0x74, 0x24, 0x00, - 0x81, 0x38, 0xAA, 0x3B, 0x06, 0x74, 0x63, 0x90, - 0x8C, 0x77, 0x23, 0x0C, 0xAB, 0x7A, 0x1E, 0x94, - 0x00, 0x7C, 0x63, 0x42, 0x80, 0x7E, 0x75, 0xFE, - 0xD0, 0x80, 0x31, 0x72, 0x15, 0x81, 0x00, 0x00, - 0x00, 0x81, 0x49, 0x0F, 0xDB, 0x04, 0x86, 0x1E, - 0xD7, 0xFB, 0x87, 0x99, 0x26, 0x65, 0x87, 0x23, - 0x34, 0x58, 0x86, 0xA5, 0x5D, 0xE1, 0x83, 0x49, - 0x0F, 0xDB, 0x08, 0x78, 0x3A, 0xC5, 0x37, 0x7B, - 0x83, 0xA2, 0x5C, 0x7C, 0x2E, 0xDD, 0x4D, 0x7D, - 0x99, 0xB0, 0x1E, 0x7D, 0x59, 0xED, 0x24, 0x7E, - 0x91, 0x72, 0x00, 0x7E, 0x4C, 0xB9, 0x73, 0x7F, - 0xAA, 0xAA, 0x53, 0x81, 0x00, 0x00, 0x00, 0x81, - 0x80, 0x00, 0x00, 0x90, 0x80, 0x00, 0x00, 0x00, - 0x7F, 0x00, 0x00, 0x00, 0x84, 0x20, 0x00, 0x00, - 0xFE, 0x79, 0x60, 0x00, 0x27, 0x10, 0xFF, 0xFC, - 0x18, 0x00, 0x00, 0x64, 0xFF, 0xFF, 0xF6, 0x00, - 0x00, 0x01, 0x23, 0x5D, 0x5E, 0x5C, 0x28, 0x62, - 0x94, 0x5E, 0x10, 0x61, 0x28, 0x65, 0x2E, 0x61, - 0x80, 0x5F, 0x52, 0x5F, 0xF3, 0x5D, 0xB2, 0x5D, - 0xC7, 0x5E, 0x4A, 0x5D, 0xD6, 0x5D, 0x21, 0x77, - 0x2D, 0x77, 0x7F, 0x5E, 0xDA, 0x5E, 0x21, 0x5D, - 0xEA, 0x5E, 0x88, 0x5D, 0x55, 0x5F, 0x46, 0x6D, - 0xB6, 0x78, 0xB9, 0x78, 0x3F, 0x68, 0xCB, 0x6C, - 0xE7, 0x6C, 0x34, 0x6D, 0xBC, 0x5D, 0x25, 0x5E, - 0x21, 0x60, 0x8E, 0x5D, 0xA9, 0x5B, 0xA6, 0x5B, - 0x54, 0x5B, 0xA8, 0x77, 0xF0, 0x5F, 0x0C, 0x6D, - 0x3B, 0x75, 0x4F, 0x75, 0xCF, 0x76, 0xD2, 0x76, - 0xBB, 0x70, 0x45, 0x71, 0xD8, 0x70, 0x0A, 0x00, - 0x0F, 0x68, 0x30, 0x68, 0xFF, 0x77, 0x5B, 0x74, - 0xB9, 0x6E, 0xBF, 0x73, 0x91, 0x74, 0x98, 0x74, - 0xE1, 0x74, 0x0D, 0x75, 0xC1, 0x6C, 0xD5, 0x6C, - 0x1F, 0x6C, 0x28, 0x6C, 0xF1, 0x68, 0x59, 0x6C, - 0x37, 0x6C, 0xFF, 0x6B, 0xE2, 0x6B, 0x53, 0x6B, - 0xDF, 0x75, 0x8E, 0x75, 0x66, 0x75, 0x3A, 0x77, - 0x50, 0x77, 0x9C, 0x78, 0xA8, 0x78, 0x8C, 0x78, - 0x67, 0x6B, 0x6F, 0x6B, 0x9D, 0x6B, 0x79, 0x7E, - 0x6D, 0x79, 0x63, 0x6D, 0x7B, 0xF9, 0x6E, 0x7B, - 0xC1, 0x6F, 0x7F, 0x7A, 0x73, 0x50, 0x9C, 0x64, - 0x46, 0x82, 0x64, 0x46, 0x8F, 0x64, 0x56, 0x4B, - 0x65, 0x56, 0x32, 0x65, 0x7D, 0xB3, 0x73, 0x5A, - 0xBF, 0x63, 0x64, 0xBD, 0x64, 0x2A, 0x2B, 0x2D, - 0x2F, 0x3C, 0x3D, 0x3E, 0x3F, 0x41, 0x42, 0x43, - 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4C, 0x4D, - 0x4E, 0x4F, 0x50, 0x52, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x5E, 0x00, 0xE5, 0x7A, 0xE7, 0x7A, 0xE9, - 0x7A, 0xEB, 0x7A, 0xED, 0x7A, 0xF1, 0x7A, 0xF3, - 0x7A, 0xF7, 0x7A, 0xF9, 0x7A, 0x06, 0x7B, 0x1D, - 0x7B, 0x32, 0x7B, 0x4A, 0x7B, 0x54, 0x7B, 0x5D, - 0x7B, 0x6A, 0x7B, 0x6F, 0x7B, 0x80, 0x7B, 0xA1, - 0x7B, 0xAC, 0x7B, 0xBE, 0x7B, 0xC6, 0x7B, 0xD9, - 0x7B, 0x06, 0x7C, 0x2C, 0x7C, 0x3F, 0x7C, 0x4E, - 0x7C, 0x58, 0x7C, 0x67, 0x7C, 0xB7, 0x00, 0xB5, - 0x00, 0xB6, 0x00, 0xB8, 0x00, 0x3C, 0xBE, 0xC1, - 0x00, 0xC0, 0x00, 0x3E, 0xBD, 0xBF, 0x00, 0x9F, - 0x00, 0x42, 0x53, 0xC4, 0x4E, 0x44, 0xBA, 0x53, - 0x43, 0xD6, 0x54, 0x4E, 0xCF, 0x00, 0x49, 0x4E, - 0x24, 0xDB, 0x49, 0x54, 0x43, 0x4C, 0x52, 0xA8, - 0x49, 0x54, 0x53, 0x45, 0x54, 0xA7, 0x49, 0x54, - 0x54, 0x53, 0x54, 0xDC, 0x00, 0x41, 0x4C, 0x4C, - 0x9C, 0x48, 0x52, 0x24, 0xD9, 0x4C, 0x45, 0x41, - 0x52, 0xA2, 0x4F, 0x4E, 0x54, 0xA0, 0x4F, 0x53, - 0xCC, 0x00, 0x41, 0x54, 0x41, 0x83, 0x45, 0x43, - 0x88, 0x45, 0x45, 0x4B, 0xD1, 0x45, 0x46, 0x99, - 0x49, 0x4D, 0x85, 0x4F, 0x4B, 0x45, 0x9B, 0x4F, - 0x9D, 0x00, 0x4E, 0x44, 0x80, 0x4F, 0x52, 0xBB, - 0x58, 0x50, 0xCB, 0x00, 0x4E, 0xAD, 0x4F, 0x52, - 0x81, 0x52, 0x45, 0xC6, 0x00, 0x45, 0x54, 0xA5, - 0x4F, 0x53, 0x55, 0x42, 0x8D, 0x4F, 0x54, 0x4F, - 0x89, 0x00, 0x45, 0x58, 0x24, 0xDA, 0x00, 0x46, - 0x8B, 0x4E, 0x43, 0x95, 0x4E, 0x50, 0x55, 0x54, - 0x84, 0x4E, 0x54, 0xC3, 0x52, 0x51, 0xA9, 0x00, - 0x43, 0x41, 0x53, 0x45, 0x24, 0xD8, 0x45, 0x46, - 0x54, 0x24, 0xE2, 0x45, 0x4E, 0xD3, 0x45, 0x54, - 0x87, 0x49, 0x53, 0x54, 0xA1, 0x4F, 0x41, 0x44, - 0x97, 0x4F, 0x47, 0xCA, 0x4F, 0x4F, 0x50, 0x9E, - 0x00, 0x41, 0x58, 0xDD, 0x49, 0x44, 0x24, 0xE4, - 0x49, 0x4E, 0xDE, 0x00, 0x45, 0x57, 0xA3, 0x45, - 0x58, 0x54, 0x82, 0x4D, 0x49, 0xAA, 0x4F, 0x54, - 0xB0, 0x55, 0x4C, 0x4C, 0x94, 0x00, 0x46, 0x46, - 0xB4, 0x4E, 0x93, 0x52, 0xBC, 0x00, 0x45, 0x45, - 0x4B, 0xD0, 0x49, 0xDF, 0x4F, 0x4B, 0x45, 0x9A, - 0x4F, 0x53, 0xC7, 0x52, 0x49, 0x4E, 0x54, 0x9F, - 0x00, 0x45, 0x41, 0x44, 0x86, 0x45, 0x4D, 0x91, - 0x45, 0x53, 0x54, 0x4F, 0x52, 0x45, 0x8C, 0x45, - 0x54, 0x49, 0x52, 0x51, 0x8E, 0x45, 0x54, 0x4E, - 0x4D, 0x49, 0x8F, 0x45, 0x54, 0x55, 0x52, 0x4E, - 0x90, 0x49, 0x47, 0x48, 0x54, 0x24, 0xE3, 0x4E, - 0x44, 0xC9, 0x55, 0x4E, 0x8A, 0x00, 0x41, 0x44, - 0x44, 0xD2, 0x41, 0x56, 0x45, 0x98, 0x47, 0x4E, - 0xC2, 0x49, 0x4E, 0xCD, 0x50, 0x43, 0x28, 0xAE, - 0x51, 0x52, 0xC8, 0x54, 0x45, 0x50, 0xB1, 0x54, - 0x4F, 0x50, 0x92, 0x54, 0x52, 0x24, 0xD4, 0x57, - 0x41, 0x50, 0xA6, 0x00, 0x41, 0x42, 0x28, 0xAB, - 0x41, 0x4E, 0xCE, 0x48, 0x45, 0x4E, 0xAF, 0x4F, - 0xAC, 0x57, 0x4F, 0x50, 0x49, 0xE0, 0x00, 0x43, - 0x41, 0x53, 0x45, 0x24, 0xD7, 0x4E, 0x54, 0x49, - 0x4C, 0xB2, 0x53, 0x52, 0xC5, 0x00, 0x41, 0x4C, - 0xD5, 0x41, 0x52, 0x50, 0x54, 0x52, 0xE1, 0x00, - 0x41, 0x49, 0x54, 0x96, 0x48, 0x49, 0x4C, 0x45, - 0xB3, 0x49, 0x44, 0x54, 0x48, 0xA4, 0x00, 0xB9, - 0x00, 0x03, 0x45, 0x4A, 0x7B, 0x03, 0x46, 0x56, - 0x7B, 0x04, 0x4E, 0xAF, 0x7B, 0x04, 0x44, 0x32, - 0x7B, 0x05, 0x49, 0x74, 0x7B, 0x03, 0x44, 0x40, - 0x7B, 0x04, 0x52, 0xD9, 0x7B, 0x03, 0x4C, 0x8E, - 0x7B, 0x03, 0x44, 0x36, 0x7B, 0x04, 0x47, 0x65, - 0x7B, 0x03, 0x52, 0x02, 0x7C, 0x02, 0x49, 0x6F, - 0x7B, 0x07, 0x52, 0xE0, 0x7B, 0x05, 0x47, 0x60, - 0x7B, 0x06, 0x52, 0xE7, 0x7B, 0x06, 0x52, 0xED, - 0x7B, 0x06, 0x52, 0xF3, 0x7B, 0x03, 0x52, 0xDD, - 0x7B, 0x04, 0x53, 0x1F, 0x7C, 0x02, 0x4F, 0xC1, - 0x7B, 0x04, 0x4E, 0xB9, 0x7B, 0x03, 0x49, 0x71, - 0x7B, 0x04, 0x57, 0x58, 0x7C, 0x04, 0x4C, 0x95, - 0x7B, 0x04, 0x53, 0x0A, 0x7C, 0x03, 0x44, 0x3D, - 0x7B, 0x04, 0x50, 0xCC, 0x7B, 0x04, 0x44, 0x43, - 0x7B, 0x04, 0x43, 0x1D, 0x7B, 0x02, 0x44, 0x47, - 0x7B, 0x04, 0x4C, 0x9C, 0x7B, 0x05, 0x50, 0xD3, - 0x7B, 0x04, 0x43, 0x2A, 0x7B, 0x04, 0x4C, 0x91, - 0x7B, 0x05, 0x43, 0x25, 0x7B, 0x03, 0x4E, 0xAC, - 0x7B, 0x05, 0x57, 0x61, 0x7C, 0x03, 0x47, 0x5D, - 0x7B, 0x04, 0x53, 0x27, 0x7C, 0x06, 0x42, 0x10, - 0x7B, 0x06, 0x42, 0x0A, 0x7B, 0x03, 0x49, 0x7C, - 0x7B, 0x03, 0x4E, 0xB3, 0x7B, 0x04, 0x54, 0x2C, - 0x7C, 0x02, 0x54, 0x37, 0x7C, 0x02, 0x46, 0x54, - 0x7B, 0x04, 0x53, 0x14, 0x7C, 0x04, 0x54, 0x33, - 0x7C, 0x03, 0x4E, 0xB6, 0x7B, 0x04, 0x53, 0x1B, - 0x7C, 0x05, 0x55, 0x45, 0x7C, 0x05, 0x57, 0x5C, - 0x7C, 0x03, 0x4F, 0xBE, 0x7B, 0x01, 0x2B, 0x00, - 0x00, 0x01, 0x2D, 0x00, 0x00, 0x01, 0x2A, 0x00, - 0x00, 0x01, 0x2F, 0x00, 0x00, 0x01, 0x5E, 0x00, - 0x00, 0x03, 0x41, 0xFC, 0x7A, 0x03, 0x45, 0x4D, - 0x7B, 0x02, 0x4F, 0xC3, 0x7B, 0x02, 0x3E, 0xF3, - 0x7A, 0x02, 0x3C, 0xED, 0x7A, 0x01, 0x3E, 0x00, - 0x00, 0x01, 0x3D, 0x00, 0x00, 0x01, 0x3C, 0x00, - 0x00, 0x03, 0x53, 0x0E, 0x7C, 0x03, 0x49, 0x79, - 0x7B, 0x03, 0x41, 0xF9, 0x7A, 0x03, 0x55, 0x4A, - 0x7C, 0x03, 0x46, 0x59, 0x7B, 0x03, 0x50, 0xD0, - 0x7B, 0x03, 0x53, 0x18, 0x7C, 0x03, 0x52, 0xFF, - 0x7B, 0x03, 0x4C, 0x99, 0x7B, 0x03, 0x45, 0x50, - 0x7B, 0x03, 0x43, 0x2E, 0x7B, 0x03, 0x53, 0x11, - 0x7C, 0x03, 0x54, 0x30, 0x7C, 0x03, 0x41, 0x02, - 0x7B, 0x04, 0x50, 0xC6, 0x7B, 0x04, 0x44, 0x39, - 0x7B, 0x04, 0x53, 0x06, 0x7C, 0x03, 0x4C, 0x8B, - 0x7B, 0x04, 0x53, 0x23, 0x7C, 0x03, 0x56, 0x4E, - 0x7C, 0x03, 0x41, 0xFF, 0x7A, 0x06, 0x55, 0x3F, - 0x7C, 0x06, 0x4C, 0x80, 0x7B, 0x04, 0x43, 0x21, - 0x7B, 0x04, 0x48, 0x6A, 0x7B, 0x04, 0x42, 0x06, - 0x7B, 0x06, 0x42, 0x16, 0x7B, 0x03, 0x4D, 0xA1, - 0x7B, 0x03, 0x4D, 0xA8, 0x7B, 0x02, 0x50, 0xCA, - 0x7B, 0x05, 0x54, 0x39, 0x7C, 0x06, 0x56, 0x51, - 0x7C, 0x05, 0x4C, 0x86, 0x7B, 0x06, 0x52, 0xF9, - 0x7B, 0x04, 0x4D, 0xA4, 0x7B, 0x21, 0x7E, 0x32, - 0x7E, 0x39, 0x7E, 0x4E, 0x7E, 0x5A, 0x7E, 0x68, - 0x7E, 0x71, 0x7E, 0x7F, 0x7E, 0x93, 0x7E, 0xA0, - 0x7E, 0xB1, 0x7E, 0xC0, 0x7E, 0xCF, 0x7E, 0xDD, - 0x7E, 0xED, 0x7E, 0x00, 0x7F, 0x0E, 0x7F, 0x21, - 0x7F, 0x4E, 0x45, 0x58, 0x54, 0x20, 0x77, 0x69, - 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x46, 0x4F, - 0x52, 0x00, 0x53, 0x79, 0x6E, 0x74, 0x61, 0x78, - 0x00, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4E, 0x20, - 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, - 0x47, 0x4F, 0x53, 0x55, 0x42, 0x00, 0x4F, 0x75, - 0x74, 0x20, 0x6F, 0x66, 0x20, 0x44, 0x41, 0x54, - 0x41, 0x00, 0x46, 0x75, 0x6E, 0x63, 0x74, 0x69, - 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x00, - 0x4F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, - 0x00, 0x4F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, - 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x00, 0x55, - 0x6E, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, - 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6D, 0x65, - 0x6E, 0x74, 0x00, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x73, 0x00, - 0x44, 0x6F, 0x75, 0x62, 0x6C, 0x65, 0x20, 0x64, - 0x69, 0x6D, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, - 0x00, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x20, - 0x62, 0x79, 0x20, 0x7A, 0x65, 0x72, 0x6F, 0x00, - 0x49, 0x6C, 0x6C, 0x65, 0x67, 0x61, 0x6C, 0x20, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x00, 0x54, - 0x79, 0x70, 0x65, 0x20, 0x6D, 0x69, 0x73, 0x6D, - 0x61, 0x74, 0x63, 0x68, 0x00, 0x53, 0x74, 0x72, - 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x6F, 0x20, - 0x6C, 0x6F, 0x6E, 0x67, 0x00, 0x53, 0x74, 0x72, - 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x6F, 0x20, - 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x78, 0x00, - 0x43, 0x61, 0x6E, 0x27, 0x74, 0x20, 0x63, 0x6F, - 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x65, 0x55, 0x6E, - 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, - 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, - 0x00, 0x4C, 0x4F, 0x4F, 0x50, 0x20, 0x77, 0x69, - 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x44, 0x4F, - 0x00, 0x0D, 0x42, 0x72, 0x65, 0x61, 0x6B, 0x00, - 0x20, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x00, 0x20, - 0x69, 0x6E, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x00, - 0x0D, 0x52, 0x65, 0x61, 0x64, 0x79, 0x0D, 0x00, - 0x20, 0x45, 0x78, 0x74, 0x72, 0x61, 0x20, 0x69, - 0x67, 0x6E, 0x6F, 0x72, 0x65, 0x64, 0x0D, 0x00, - 0x20, 0x52, 0x65, 0x64, 0x6F, 0x20, 0x66, 0x72, - 0x6F, 0x6D, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x0D, 0x00, 0xAD, 0x11, 0xD0, 0x10, 0x07, 0xAD, - 0x10, 0xD0, 0x29, 0x7F, 0x38, 0x60, 0xA9, 0x00, - 0x18, 0x60, 0x46, 0x4C, 0x4F, 0x41, 0x54, 0x49, - 0x4E, 0x47, 0x20, 0x50, 0x4F, 0x49, 0x4E, 0x54, - 0x20, 0x42, 0x41, 0x53, 0x49, 0x43, 0x20, 0x46, - 0x4F, 0x52, 0x20, 0x54, 0x48, 0x45, 0x20, 0x52, - 0x45, 0x50, 0x4C, 0x49, 0x43, 0x41, 0x20, 0x49, - 0x20, 0x62, 0x79, 0x20, 0x4C, 0x61, 0x72, 0x72, - 0x79, 0x20, 0x4E, 0x65, 0x6C, 0x73, 0x6F, 0x6E, - 0x2E, 0x20, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, - 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x45, - 0x68, 0x42, 0x41, 0x53, 0x49, 0x43, 0x2E - ]; - return { - start: function basic_start() { - return 0x58; - }, - end: function basic_end() { - return 0x60; - }, - read: function basic_read(page, off) { - return rom[(page - 0xe0) << 8 | off]; - }, - write: function basic_write() {}, - getState: function basic_getState() { return {}; }, - setState: function basic_setState() {} - }; -} diff --git a/js/roms/enhanced-basic.ts b/js/roms/enhanced-basic.ts new file mode 100644 index 0000000..e659777 --- /dev/null +++ b/js/roms/enhanced-basic.ts @@ -0,0 +1,871 @@ +import { byte } from 'js/types'; + +export default class EnhancedBasic { + rom = [ + 0xa0, 0x08, 0xb9, 0xbd, 0x78, 0x99, 0xc8, 0x02, 0x88, 0x10, 0xf7, 0xa2, + 0xff, 0x86, 0x88, 0x9a, 0xa9, 0x4c, 0x85, 0xa1, 0xa2, 0x18, 0xbd, 0xc5, + 0x78, 0x95, 0xbb, 0xca, 0xd0, 0xf8, 0xa2, 0x12, 0xbd, 0xde, 0x78, 0x95, + 0x00, 0xca, 0x10, 0xf8, 0xa9, 0x00, 0x85, 0xd8, 0x85, 0xdb, 0x85, 0xb2, + 0x85, 0x67, 0xa9, 0x08, 0x85, 0x64, 0xa9, 0x03, 0x85, 0xa0, 0xa2, 0x68, + 0x86, 0x65, 0x20, 0x61, 0x60, 0xa9, 0xf1, 0xa0, 0x78, 0x20, 0x9c, 0x60, + 0x20, 0x45, 0x5a, 0x86, 0xc3, 0x84, 0xc4, 0x20, 0xbc, 0x00, 0xd0, 0x1f, + 0xa0, 0x00, 0xe6, 0x11, 0xd0, 0x08, 0xe6, 0x12, 0xa5, 0x12, 0xc9, 0x58, + 0xf0, 0x1d, 0xa9, 0x55, 0x91, 0x11, 0xd1, 0x11, 0xd0, 0x15, 0x0a, 0x91, + 0x11, 0xd1, 0x11, 0xf0, 0xe5, 0xd0, 0x0c, 0x20, 0x6a, 0x71, 0xa5, 0xac, + 0xc9, 0x98, 0xb0, 0xa2, 0x20, 0xb5, 0x6c, 0xa5, 0x11, 0xa4, 0x12, 0xc0, + 0x04, 0x90, 0x97, 0x85, 0x85, 0x84, 0x86, 0x85, 0x81, 0x84, 0x82, 0xa0, + 0x00, 0xa2, 0x03, 0x84, 0x79, 0x86, 0x7a, 0x98, 0x91, 0x79, 0xe6, 0x79, + 0x20, 0x61, 0x60, 0x20, 0x57, 0x5b, 0xa5, 0x85, 0x38, 0xe5, 0x79, 0xaa, + 0xa5, 0x86, 0xe5, 0x7a, 0x20, 0x45, 0x72, 0xa9, 0xff, 0xa0, 0x78, 0x20, + 0x9c, 0x60, 0xa9, 0x59, 0xa0, 0x59, 0x85, 0x01, 0x84, 0x02, 0x6c, 0x01, + 0x00, 0x20, 0x0c, 0x59, 0x85, 0x7f, 0x84, 0x80, 0x38, 0xa5, 0xa6, 0xe5, + 0xaa, 0x85, 0x71, 0xa8, 0xa5, 0xa7, 0xe5, 0xab, 0xaa, 0xe8, 0x98, 0xf0, + 0x23, 0xa5, 0xa6, 0x38, 0xe5, 0x71, 0x85, 0xa6, 0xb0, 0x03, 0xc6, 0xa7, + 0x38, 0xa5, 0xa4, 0xe5, 0x71, 0x85, 0xa4, 0xb0, 0x08, 0xc6, 0xa5, 0x90, + 0x04, 0xb1, 0xa6, 0x91, 0xa4, 0x88, 0xd0, 0xf9, 0xb1, 0xa6, 0x91, 0xa4, + 0xc6, 0xa7, 0xc6, 0xa5, 0xca, 0xd0, 0xf2, 0x60, 0x85, 0x78, 0xba, 0xe4, + 0x78, 0x90, 0x2e, 0x60, 0xc4, 0x82, 0x90, 0x28, 0xd0, 0x04, 0xc5, 0x81, + 0x90, 0x22, 0x48, 0xa2, 0x08, 0x98, 0x48, 0xb5, 0xa3, 0xca, 0x10, 0xfa, + 0x20, 0xae, 0x69, 0xa2, 0xf8, 0x68, 0x95, 0xac, 0xe8, 0x30, 0xfa, 0x68, + 0xa8, 0x68, 0xc4, 0x82, 0x90, 0x06, 0xd0, 0x05, 0xc5, 0x81, 0xb0, 0x01, + 0x60, 0xa2, 0x0c, 0x20, 0x61, 0x60, 0xbd, 0xfd, 0x7d, 0xbc, 0xfe, 0x7d, + 0x20, 0x9c, 0x60, 0x20, 0x90, 0x5b, 0xa9, 0x38, 0xa0, 0x7f, 0x20, 0x9c, + 0x60, 0xa4, 0x88, 0xc8, 0xf0, 0x03, 0x20, 0x3a, 0x72, 0xa9, 0x00, 0x85, + 0xdb, 0x85, 0xd8, 0xa9, 0x48, 0xa0, 0x7f, 0x20, 0x9c, 0x60, 0x20, 0x52, + 0x5a, 0x86, 0xc3, 0x84, 0xc4, 0x20, 0xbc, 0x00, 0xf0, 0xf4, 0xa2, 0xff, + 0x86, 0x88, 0x90, 0x06, 0x20, 0x83, 0x5a, 0x4c, 0xfa, 0x5c, 0x20, 0x19, + 0x5f, 0x20, 0x83, 0x5a, 0x84, 0x5d, 0x20, 0x29, 0x5b, 0x90, 0x44, 0xa0, + 0x01, 0xb1, 0xaa, 0x85, 0x72, 0xa5, 0x7b, 0x85, 0x71, 0xa5, 0xab, 0x85, + 0x74, 0xa5, 0xaa, 0x88, 0xf1, 0xaa, 0x18, 0x65, 0x7b, 0x85, 0x7b, 0x85, + 0x73, 0xa5, 0x7c, 0x69, 0xff, 0x85, 0x7c, 0xe5, 0xab, 0xaa, 0x38, 0xa5, + 0xaa, 0xe5, 0x7b, 0xa8, 0xb0, 0x03, 0xe8, 0xc6, 0x74, 0x18, 0x65, 0x71, + 0x90, 0x03, 0xc6, 0x72, 0x18, 0xb1, 0x71, 0x91, 0x73, 0xc8, 0xd0, 0xf9, + 0xe6, 0x72, 0xe6, 0x74, 0xca, 0xd0, 0xf2, 0xad, 0x80, 0x02, 0xf0, 0x3f, + 0xa5, 0x85, 0xa4, 0x86, 0x85, 0x81, 0x84, 0x82, 0xa5, 0x7b, 0x85, 0xa6, + 0xa4, 0x7c, 0x84, 0xa7, 0x65, 0x5d, 0x90, 0x01, 0xc8, 0x85, 0xa4, 0x84, + 0xa5, 0x20, 0xc1, 0x58, 0xa5, 0x7f, 0xa4, 0x80, 0x85, 0x7b, 0x84, 0x7c, + 0xa4, 0x5d, 0x88, 0xb9, 0x7c, 0x02, 0x91, 0xaa, 0x88, 0xc0, 0x03, 0xd0, + 0xf6, 0xa5, 0x12, 0x91, 0xaa, 0x88, 0xa5, 0x11, 0x91, 0xaa, 0x88, 0xa9, + 0xff, 0x91, 0xaa, 0x20, 0x6c, 0x5b, 0xa5, 0x79, 0xa4, 0x7a, 0x85, 0x71, + 0x84, 0x72, 0x18, 0xa0, 0x01, 0xb1, 0x71, 0xd0, 0x03, 0x4c, 0x66, 0x59, + 0xa0, 0x04, 0xc8, 0xb1, 0x71, 0xd0, 0xfb, 0xc8, 0x98, 0x65, 0x71, 0xaa, + 0xa0, 0x00, 0x91, 0x71, 0xa5, 0x72, 0x69, 0x00, 0xc8, 0x91, 0x71, 0x86, + 0x71, 0x85, 0x72, 0x90, 0xda, 0x20, 0xb4, 0x60, 0x20, 0xb1, 0x60, 0xd0, + 0x05, 0x20, 0xb6, 0x60, 0xca, 0x2c, 0xa2, 0x00, 0x20, 0xb1, 0x78, 0x90, + 0xfb, 0xf0, 0xf9, 0xc9, 0x07, 0xf0, 0x10, 0xc9, 0x0d, 0xf0, 0x19, 0xe0, + 0x00, 0xd0, 0x04, 0xc9, 0x21, 0x90, 0xe9, 0xc9, 0x08, 0xf0, 0xde, 0xe0, + 0x47, 0xb0, 0x0c, 0x9d, 0x80, 0x02, 0xe8, 0x20, 0xb6, 0x60, 0xd0, 0xd8, + 0x4c, 0x58, 0x60, 0xa9, 0x07, 0xd0, 0xf4, 0xa0, 0xff, 0x38, 0xa5, 0xc3, + 0xe9, 0x80, 0xaa, 0x86, 0x60, 0xbd, 0x80, 0x02, 0xf0, 0x51, 0xc9, 0x5f, + 0xb0, 0x4d, 0xc9, 0x3c, 0xb0, 0x0e, 0xc9, 0x30, 0xb0, 0x45, 0x85, 0x5c, + 0xc9, 0x22, 0xf0, 0x61, 0xc9, 0x2a, 0x90, 0x3b, 0x24, 0x60, 0x70, 0x37, + 0x86, 0x78, 0x84, 0xba, 0xa0, 0x8d, 0x84, 0x73, 0xa0, 0x7a, 0x84, 0x74, + 0xa0, 0x00, 0xd1, 0x73, 0xf0, 0x05, 0x90, 0x21, 0xc8, 0xd0, 0xf7, 0x98, + 0x0a, 0xaa, 0xbd, 0xab, 0x7a, 0x85, 0x73, 0xbd, 0xac, 0x7a, 0x85, 0x74, + 0xa0, 0xff, 0xa6, 0x78, 0xc8, 0xb1, 0x73, 0x30, 0x08, 0xe8, 0xdd, 0x80, + 0x02, 0xf0, 0xf5, 0xd0, 0x2b, 0xa4, 0xba, 0xe8, 0xc8, 0x99, 0x80, 0x02, + 0xc9, 0x00, 0xf0, 0x32, 0xe9, 0x3a, 0xf0, 0x04, 0xc9, 0x49, 0xd0, 0x02, + 0x85, 0x60, 0x49, 0x57, 0xd0, 0x93, 0x85, 0x5c, 0xbd, 0x80, 0x02, 0xf0, + 0xe2, 0xc5, 0x5c, 0xf0, 0xde, 0xc8, 0x99, 0x80, 0x02, 0xe8, 0xd0, 0xf0, + 0xa6, 0x78, 0xb1, 0x73, 0x08, 0xc8, 0x28, 0x10, 0xf9, 0xb1, 0x73, 0xd0, + 0xbe, 0xbd, 0x80, 0x02, 0x10, 0xc3, 0xc8, 0xc8, 0x99, 0x80, 0x02, 0xc8, + 0xc8, 0xc8, 0xc6, 0xc3, 0x60, 0xa5, 0x79, 0xa6, 0x7a, 0xa0, 0x01, 0x85, + 0xaa, 0x86, 0xab, 0xb1, 0xaa, 0xf0, 0x1c, 0xc8, 0xc8, 0xb1, 0xaa, 0x88, + 0xc5, 0x12, 0xf0, 0x0b, 0xb0, 0x11, 0x88, 0xb1, 0xaa, 0xaa, 0x88, 0xb1, + 0xaa, 0x90, 0xe2, 0xb1, 0xaa, 0xc5, 0x11, 0x90, 0xf1, 0xf0, 0x01, 0x18, + 0x60, 0xd0, 0xfd, 0xa9, 0x00, 0xa8, 0x91, 0x79, 0xc8, 0x91, 0x79, 0x18, + 0xa5, 0x79, 0x69, 0x02, 0x85, 0x7b, 0xa5, 0x7a, 0x69, 0x00, 0x85, 0x7c, + 0x18, 0xa5, 0x79, 0x69, 0xff, 0x85, 0xc3, 0xa5, 0x7a, 0x69, 0xff, 0x85, + 0xc4, 0xa5, 0x85, 0xa4, 0x86, 0x85, 0x81, 0x84, 0x82, 0xa5, 0x7b, 0xa4, + 0x7c, 0x85, 0x7d, 0x84, 0x7e, 0x85, 0x7f, 0x84, 0x80, 0x20, 0x4d, 0x5d, + 0xa2, 0x68, 0x86, 0x65, 0x68, 0xaa, 0x68, 0x8e, 0xfe, 0x01, 0x8d, 0xff, + 0x01, 0xa2, 0xfd, 0x9a, 0xa9, 0x00, 0x85, 0x8c, 0x85, 0x61, 0x60, 0xf0, + 0xd0, 0x60, 0x90, 0x06, 0xf0, 0x04, 0xc9, 0xb6, 0xd0, 0xf4, 0x20, 0x19, + 0x5f, 0x20, 0x29, 0x5b, 0x20, 0xc2, 0x00, 0xf0, 0x0c, 0xc9, 0xb6, 0xd0, + 0x93, 0x20, 0xbc, 0x00, 0x20, 0x19, 0x5f, 0xd0, 0x8b, 0xa5, 0x11, 0x05, + 0x12, 0xd0, 0x06, 0xa9, 0xff, 0x85, 0x11, 0x85, 0x12, 0xa0, 0x01, 0x84, + 0x60, 0x20, 0x61, 0x60, 0xb1, 0xaa, 0xf0, 0x3e, 0x20, 0x1d, 0x5d, 0xc8, + 0xb1, 0xaa, 0xaa, 0xc8, 0xb1, 0xaa, 0xc5, 0x12, 0xd0, 0x04, 0xe4, 0x11, + 0xf0, 0x02, 0xb0, 0x2a, 0x84, 0x97, 0x20, 0x45, 0x72, 0xa9, 0x20, 0xa4, + 0x97, 0x29, 0x7f, 0x20, 0xb6, 0x60, 0xc9, 0x22, 0xd0, 0x06, 0xa5, 0x60, + 0x49, 0xff, 0x85, 0x60, 0xc8, 0xb1, 0xaa, 0xd0, 0x0e, 0xa8, 0xb1, 0xaa, + 0xaa, 0xc8, 0xb1, 0xaa, 0x86, 0xaa, 0x85, 0xab, 0xd0, 0xb7, 0x60, 0x10, + 0xde, 0x24, 0x60, 0x30, 0xda, 0xa2, 0x7c, 0x0a, 0x0a, 0x90, 0x02, 0xe8, + 0x18, 0x69, 0x69, 0x90, 0x01, 0xe8, 0x85, 0x73, 0x86, 0x74, 0x84, 0x97, + 0xa0, 0x00, 0xb1, 0x73, 0xaa, 0xc8, 0xb1, 0x73, 0xca, 0xf0, 0xb8, 0x20, + 0xb6, 0x60, 0xc8, 0xb1, 0x73, 0x48, 0xc8, 0xb1, 0x73, 0xa0, 0x00, 0x85, + 0x74, 0x68, 0x85, 0x73, 0xb1, 0x73, 0xca, 0xf0, 0xa2, 0x20, 0xb6, 0x60, + 0xc8, 0xd0, 0xf5, 0xa9, 0x80, 0x85, 0x61, 0x20, 0x81, 0x5f, 0x68, 0x68, + 0xa9, 0x10, 0x20, 0x04, 0x59, 0x20, 0xa6, 0x5e, 0x18, 0x98, 0x65, 0xc3, + 0x48, 0xa5, 0xc4, 0x69, 0x00, 0x48, 0xa5, 0x88, 0x48, 0xa5, 0x87, 0x48, + 0xa9, 0xac, 0x20, 0xea, 0x63, 0x20, 0x94, 0x62, 0x20, 0x91, 0x62, 0xa5, + 0xb0, 0x09, 0x7f, 0x25, 0xad, 0x85, 0xad, 0xa9, 0x9e, 0xa0, 0x5c, 0x85, + 0x71, 0x84, 0x72, 0x4c, 0x46, 0x63, 0xa9, 0xa3, 0xa0, 0x79, 0x20, 0x3e, + 0x70, 0x20, 0xc2, 0x00, 0xc9, 0xb1, 0xd0, 0x06, 0x20, 0xbc, 0x00, 0x20, + 0x91, 0x62, 0x20, 0xad, 0x70, 0x85, 0xb0, 0x20, 0x3b, 0x63, 0xa5, 0x98, + 0x48, 0xa5, 0x97, 0x48, 0xa9, 0x81, 0x48, 0x20, 0x1d, 0x5d, 0xa5, 0xc3, + 0xa4, 0xc4, 0xa6, 0x88, 0xe8, 0xf0, 0x04, 0x85, 0x8b, 0x84, 0x8c, 0xa0, + 0x00, 0xb1, 0xc3, 0xf0, 0x07, 0xc9, 0x3a, 0xf0, 0x1d, 0x4c, 0xf3, 0x63, + 0xa0, 0x02, 0xb1, 0xc3, 0x18, 0xf0, 0x58, 0xc8, 0xb1, 0xc3, 0x85, 0x87, + 0xc8, 0xb1, 0xc3, 0x85, 0x88, 0x98, 0x65, 0xc3, 0x85, 0xc3, 0x90, 0x02, + 0xe6, 0xc4, 0x20, 0xbc, 0x00, 0x20, 0x03, 0x5d, 0x4c, 0xc3, 0x5c, 0xf0, + 0x56, 0x49, 0x80, 0x10, 0x03, 0x4c, 0x81, 0x5f, 0xc9, 0x2b, 0xb0, 0xcd, + 0x0a, 0xa8, 0xb9, 0xcb, 0x79, 0x48, 0xb9, 0xca, 0x79, 0x48, 0x4c, 0xbc, + 0x00, 0x6c, 0xcb, 0x02, 0xc9, 0x03, 0xb0, 0x01, 0x18, 0xd0, 0x67, 0xa5, + 0xc4, 0x49, 0x02, 0xf0, 0x10, 0x49, 0x02, 0xa4, 0xc3, 0x84, 0x8b, 0x85, + 0x8c, 0xa5, 0x87, 0xa4, 0x88, 0x85, 0x89, 0x84, 0x8a, 0x68, 0x68, 0x90, + 0x07, 0xa9, 0x31, 0xa0, 0x7f, 0x4c, 0x4e, 0x59, 0x4c, 0x59, 0x59, 0xd0, + 0x0f, 0x38, 0xa5, 0x79, 0xe9, 0x01, 0xa4, 0x7a, 0xb0, 0x01, 0x88, 0x85, + 0x8f, 0x84, 0x90, 0x60, 0x20, 0x19, 0x5f, 0x20, 0xa9, 0x5e, 0xa5, 0x88, + 0xc5, 0x12, 0xb0, 0x0b, 0x98, 0x38, 0x65, 0xc3, 0xa6, 0xc4, 0x90, 0x07, + 0xe8, 0xb0, 0x04, 0xa5, 0x79, 0xa6, 0x7a, 0x20, 0x2d, 0x5b, 0xb0, 0x03, + 0x4c, 0x7b, 0x5e, 0xa5, 0xaa, 0xe9, 0x01, 0xa4, 0xab, 0xb0, 0xd0, 0x90, + 0xcd, 0x20, 0x4a, 0x6c, 0x86, 0x0d, 0x60, 0xd0, 0xfd, 0xa4, 0x8c, 0xd0, + 0x05, 0xa2, 0x1e, 0x4c, 0x3b, 0x59, 0xa9, 0x93, 0x20, 0xd0, 0x76, 0xa9, + 0x93, 0x20, 0xd3, 0x76, 0x84, 0xc4, 0xa5, 0x8b, 0x85, 0xc3, 0xa5, 0x89, + 0xa4, 0x8a, 0x85, 0x87, 0x84, 0x88, 0x60, 0xd0, 0x03, 0x4c, 0x6c, 0x5b, + 0x20, 0x79, 0x5b, 0xf0, 0x2e, 0xa9, 0x05, 0x20, 0x04, 0x59, 0xa5, 0xc4, + 0x48, 0xa5, 0xc3, 0x48, 0xa5, 0x88, 0x48, 0xa5, 0x87, 0x48, 0xa9, 0x9d, + 0x48, 0x20, 0xc2, 0x00, 0x4c, 0xc3, 0x5c, 0xa9, 0x05, 0x20, 0x04, 0x59, + 0xa5, 0xc4, 0x48, 0xa5, 0xc3, 0x48, 0xa5, 0x88, 0x48, 0xa5, 0x87, 0x48, + 0xa9, 0x8d, 0x48, 0x20, 0xc2, 0x00, 0x20, 0xf4, 0x5d, 0x4c, 0xc3, 0x5c, + 0x20, 0x19, 0x5f, 0x20, 0xa9, 0x5e, 0xa5, 0x88, 0xc5, 0x12, 0xb0, 0x0b, + 0x98, 0x38, 0x65, 0xc3, 0xa6, 0xc4, 0x90, 0x07, 0xe8, 0xb0, 0x04, 0xa5, + 0x79, 0xa6, 0x7a, 0x20, 0x2d, 0x5b, 0x90, 0x67, 0xa5, 0xaa, 0xe9, 0x01, + 0x85, 0xc3, 0xa5, 0xab, 0xe9, 0x00, 0x85, 0xc4, 0x60, 0xa2, 0x22, 0x4c, + 0x3b, 0x59, 0xa8, 0xba, 0xbd, 0x03, 0x01, 0xc9, 0x9d, 0xd0, 0xf2, 0xe8, + 0xe8, 0x9a, 0x98, 0xf0, 0x20, 0xc9, 0x3a, 0xf0, 0x1c, 0xe9, 0xb2, 0xaa, + 0xf0, 0x04, 0xca, 0xd0, 0x62, 0xca, 0x86, 0x98, 0x20, 0xbc, 0x00, 0x20, + 0xa5, 0x62, 0xa5, 0xac, 0xf0, 0x02, 0xa9, 0xff, 0xba, 0x45, 0x98, 0xd0, + 0x1a, 0xbd, 0x02, 0x01, 0x85, 0x87, 0xbd, 0x03, 0x01, 0x85, 0x88, 0xbd, + 0x04, 0x01, 0x85, 0xc3, 0xbd, 0x05, 0x01, 0x85, 0xc4, 0x20, 0xc2, 0x00, + 0x4c, 0xc3, 0x5c, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x9a, 0x4c, 0x95, 0x5e, + 0xa2, 0x04, 0x2c, 0xa2, 0x0e, 0x4c, 0x3b, 0x59, 0xd0, 0x9e, 0x68, 0x68, + 0x68, 0xc9, 0x8d, 0xd0, 0xef, 0x68, 0x85, 0x87, 0x68, 0x85, 0x88, 0x68, + 0x85, 0xc3, 0x68, 0x85, 0xc4, 0x20, 0xa6, 0x5e, 0x98, 0x18, 0x65, 0xc3, + 0x85, 0xc3, 0x90, 0x02, 0xe6, 0xc4, 0x60, 0x4c, 0xf3, 0x63, 0xa2, 0x3a, + 0x2c, 0xa2, 0x00, 0x86, 0x5b, 0xa0, 0x00, 0x84, 0x5c, 0xa5, 0x5c, 0xa6, + 0x5b, 0x85, 0x5b, 0x86, 0x5c, 0xb1, 0xc3, 0xf0, 0xe5, 0xc5, 0x5c, 0xf0, + 0xe1, 0xc8, 0xc9, 0x22, 0xf0, 0xeb, 0xd0, 0xf1, 0x20, 0xa5, 0x62, 0x20, + 0xc2, 0x00, 0xc9, 0x89, 0xf0, 0x05, 0xa9, 0xaf, 0x20, 0xea, 0x63, 0xa5, + 0xac, 0xd0, 0x05, 0x20, 0xa9, 0x5e, 0xf0, 0xb8, 0x20, 0xc2, 0x00, 0xb0, + 0x03, 0x4c, 0xf4, 0x5d, 0x4c, 0x03, 0x5d, 0xc9, 0xa9, 0xd0, 0x03, 0x4c, + 0xf5, 0x76, 0xc9, 0xaa, 0xd0, 0x03, 0x4c, 0xf9, 0x76, 0x20, 0x4a, 0x6c, + 0x48, 0xc9, 0x8d, 0xf0, 0x04, 0xc9, 0x89, 0xd0, 0x9e, 0xc6, 0xaf, 0xd0, + 0x04, 0x68, 0x4c, 0x05, 0x5d, 0x20, 0xbc, 0x00, 0x20, 0x19, 0x5f, 0xc9, + 0x2c, 0xf0, 0xee, 0x68, 0x60, 0xa2, 0x00, 0x86, 0x11, 0x86, 0x12, 0xb0, + 0xf7, 0xe9, 0x2f, 0x85, 0x5b, 0xa5, 0x12, 0x85, 0x71, 0xc9, 0x19, 0xb0, + 0xd4, 0xa5, 0x11, 0x0a, 0x26, 0x71, 0x0a, 0x26, 0x71, 0x65, 0x11, 0x85, + 0x11, 0xa5, 0x71, 0x65, 0x12, 0x85, 0x12, 0x06, 0x11, 0x26, 0x12, 0xa5, + 0x11, 0x65, 0x5b, 0x85, 0x11, 0x90, 0x02, 0xe6, 0x12, 0x20, 0xbc, 0x00, + 0x4c, 0x1f, 0x5f, 0xa9, 0xa7, 0x2c, 0xa9, 0xa3, 0x48, 0x20, 0x76, 0x65, + 0xa6, 0x5f, 0x30, 0x1e, 0x85, 0x97, 0x84, 0x98, 0x20, 0x3e, 0x70, 0x68, + 0x48, 0xa0, 0x79, 0x20, 0x7c, 0x6d, 0x20, 0x67, 0x70, 0x20, 0xc2, 0x00, + 0xc9, 0x2c, 0xd0, 0x9f, 0x20, 0xbc, 0x00, 0x4c, 0x59, 0x5f, 0x4c, 0xa0, + 0x62, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, 0xa9, 0xc0, 0x20, 0xea, + 0x63, 0xa5, 0x5f, 0x48, 0x20, 0xa5, 0x62, 0x68, 0x2a, 0x20, 0x97, 0x62, + 0xd0, 0x03, 0x4c, 0x67, 0x70, 0xa0, 0x02, 0xb1, 0xae, 0xc5, 0x82, 0x90, + 0x17, 0xd0, 0x07, 0x88, 0xb1, 0xae, 0xc5, 0x81, 0x90, 0x0e, 0xa4, 0xaf, + 0xc4, 0x7c, 0x90, 0x08, 0xd0, 0x0d, 0xa5, 0xae, 0xc5, 0x7b, 0xb0, 0x07, + 0xa5, 0xae, 0xa4, 0xaf, 0x4c, 0xd9, 0x5f, 0xa0, 0x00, 0xb1, 0xae, 0x20, + 0x01, 0x69, 0xa5, 0x9e, 0xa4, 0x9f, 0x85, 0xb8, 0x84, 0xb9, 0x20, 0xe0, + 0x6a, 0xa9, 0xac, 0xa0, 0x00, 0x85, 0x9e, 0x84, 0x9f, 0x20, 0x42, 0x6b, + 0xa0, 0x00, 0xb1, 0x9e, 0x91, 0x97, 0xc8, 0xb1, 0x9e, 0x91, 0x97, 0xc8, + 0xb1, 0x9e, 0x91, 0x97, 0x60, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, + 0x20, 0xbc, 0x76, 0xa6, 0x5f, 0x30, 0x07, 0xa8, 0x20, 0x32, 0x68, 0x4c, + 0x67, 0x70, 0x48, 0xa9, 0x01, 0xb0, 0x01, 0x68, 0x20, 0x09, 0x69, 0xf0, + 0x05, 0x68, 0xa0, 0x00, 0x91, 0xad, 0x20, 0x54, 0x69, 0x4c, 0x9d, 0x5f, + 0x20, 0x9f, 0x60, 0x20, 0xc2, 0x00, 0xf0, 0x3d, 0xf0, 0xca, 0xc9, 0xab, + 0xf0, 0x51, 0xc9, 0xae, 0xf0, 0x4d, 0xc9, 0x2c, 0xf0, 0x33, 0xc9, 0x3b, + 0xf0, 0x60, 0x20, 0xa5, 0x62, 0x24, 0x5f, 0x30, 0xdf, 0x20, 0x55, 0x72, + 0x20, 0x13, 0x69, 0xa0, 0x00, 0xa5, 0x0f, 0xf0, 0x0a, 0x38, 0xe5, 0x0e, + 0xf1, 0xae, 0xb0, 0x03, 0x20, 0x61, 0x60, 0x20, 0x9f, 0x60, 0xf0, 0xc7, + 0xa9, 0x00, 0x9d, 0x80, 0x02, 0xa2, 0x7f, 0xa0, 0x02, 0xa9, 0x0d, 0xd0, + 0x51, 0xa5, 0x0e, 0xc5, 0x10, 0x90, 0x05, 0x20, 0x61, 0x60, 0xd0, 0x26, + 0x38, 0xe5, 0x64, 0xb0, 0xfc, 0x49, 0xff, 0x69, 0x01, 0xd0, 0x14, 0x48, + 0x20, 0x47, 0x6c, 0xc9, 0x29, 0xd0, 0x7b, 0x68, 0xc9, 0xab, 0xd0, 0x08, + 0x8a, 0xe5, 0x0e, 0x90, 0x09, 0xf0, 0x07, 0xaa, 0x20, 0xb1, 0x60, 0xca, + 0xd0, 0xfa, 0x20, 0xbc, 0x00, 0x4c, 0x24, 0x60, 0x20, 0x13, 0x69, 0x20, + 0x0d, 0x6b, 0xa0, 0x00, 0xaa, 0xf0, 0x4a, 0xb1, 0x71, 0x20, 0xb6, 0x60, + 0xc8, 0xca, 0xd0, 0xf7, 0x60, 0xa9, 0x20, 0x2c, 0xa9, 0x3f, 0xc9, 0x20, + 0x90, 0x1a, 0x48, 0xa5, 0x0f, 0xd0, 0x0b, 0x38, 0xa5, 0x0e, 0xe5, 0x64, + 0xd0, 0x0b, 0x85, 0x0e, 0xf0, 0x07, 0xc5, 0x0e, 0xd0, 0x03, 0x20, 0x61, + 0x60, 0xe6, 0x0e, 0x68, 0x20, 0xb4, 0x78, 0xc9, 0x0d, 0xd0, 0x14, 0x86, + 0x78, 0xa6, 0x0d, 0xf0, 0x0a, 0xa9, 0x00, 0x20, 0xb6, 0x60, 0xca, 0xd0, + 0xfa, 0xa9, 0x0d, 0x86, 0x0e, 0xa6, 0x78, 0x29, 0xff, 0x60, 0xa5, 0x62, + 0x10, 0x0b, 0xa5, 0x8d, 0xa4, 0x8e, 0x85, 0x87, 0x84, 0x88, 0x4c, 0xf3, + 0x63, 0xa9, 0x60, 0xa0, 0x7f, 0x20, 0x9c, 0x60, 0xa5, 0x8b, 0xa4, 0x8c, + 0x85, 0xc3, 0x84, 0xc4, 0x60, 0xc9, 0x22, 0xd0, 0x0b, 0x20, 0xa9, 0x63, + 0xa9, 0x3b, 0x20, 0xea, 0x63, 0x20, 0x9f, 0x60, 0x20, 0x36, 0x68, 0x20, + 0x45, 0x5a, 0xad, 0x80, 0x02, 0xd0, 0x09, 0x18, 0x4c, 0x35, 0x5d, 0xa6, + 0x8f, 0xa4, 0x90, 0xa9, 0x98, 0x85, 0x62, 0x86, 0x91, 0x84, 0x92, 0x20, + 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, 0xa5, 0xc3, 0xa4, 0xc4, 0x85, 0x11, + 0x84, 0x12, 0xa6, 0x91, 0xa4, 0x92, 0x86, 0xc3, 0x84, 0xc4, 0x20, 0xc2, + 0x00, 0xd0, 0x0e, 0x24, 0x62, 0x30, 0x62, 0x20, 0xb4, 0x60, 0x20, 0x45, + 0x5a, 0x86, 0xc3, 0x84, 0xc4, 0x20, 0xbc, 0x00, 0x24, 0x5f, 0x10, 0x24, + 0x85, 0x5b, 0xc9, 0x22, 0xf0, 0x07, 0xa9, 0x3a, 0x85, 0x5b, 0xa9, 0x2c, + 0x18, 0x85, 0x5c, 0xa5, 0xc3, 0xa4, 0xc4, 0x69, 0x00, 0x90, 0x01, 0xc8, + 0x20, 0x19, 0x69, 0x20, 0x8d, 0x6c, 0x20, 0x9d, 0x5f, 0x4c, 0x96, 0x61, + 0x20, 0x6a, 0x71, 0x20, 0x67, 0x70, 0x20, 0xc2, 0x00, 0xf0, 0x07, 0xc9, + 0x2c, 0xf0, 0x03, 0x4c, 0xf2, 0x60, 0xa5, 0xc3, 0xa4, 0xc4, 0x85, 0x91, + 0x84, 0x92, 0xa5, 0x11, 0xa4, 0x12, 0x85, 0xc3, 0x84, 0xc4, 0x20, 0xc2, + 0x00, 0xf0, 0x2b, 0x20, 0xe8, 0x63, 0x4c, 0x3b, 0x61, 0x20, 0xa6, 0x5e, + 0xc8, 0xaa, 0xd0, 0x12, 0xa2, 0x06, 0xc8, 0xb1, 0xc3, 0xf0, 0x72, 0xc8, + 0xb1, 0xc3, 0x85, 0x8d, 0xc8, 0xb1, 0xc3, 0xc8, 0x85, 0x8e, 0xb1, 0xc3, + 0xaa, 0x20, 0x98, 0x5e, 0xe0, 0x83, 0xf0, 0x85, 0xd0, 0xdb, 0xa5, 0x91, + 0xa4, 0x92, 0xa6, 0x62, 0x10, 0x03, 0x4c, 0x57, 0x5d, 0xa0, 0x00, 0xb1, + 0x91, 0xd0, 0x01, 0x60, 0xa9, 0x50, 0xa0, 0x7f, 0x4c, 0x9c, 0x60, 0xba, + 0xe8, 0xe8, 0xe8, 0xe8, 0xbd, 0x01, 0x01, 0xc9, 0x81, 0xd0, 0x21, 0xa5, + 0x98, 0xd0, 0x0a, 0xbd, 0x02, 0x01, 0x85, 0x97, 0xbd, 0x03, 0x01, 0x85, + 0x98, 0xdd, 0x03, 0x01, 0xd0, 0x07, 0xa5, 0x97, 0xdd, 0x02, 0x01, 0xf0, + 0x07, 0x8a, 0x18, 0x69, 0x10, 0xaa, 0xd0, 0xd8, 0x60, 0xd0, 0x04, 0xa0, + 0x00, 0xf0, 0x03, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, 0x20, 0xfb, + 0x61, 0xf0, 0x04, 0xa2, 0x00, 0xf0, 0x63, 0x9a, 0x8a, 0x38, 0xe9, 0xf7, + 0x85, 0x73, 0x69, 0xfb, 0xa0, 0x01, 0x20, 0x3e, 0x70, 0xba, 0xbd, 0x08, + 0x01, 0x85, 0xb0, 0xa5, 0x97, 0xa4, 0x98, 0x20, 0x7c, 0x6d, 0x20, 0x67, + 0x70, 0xa0, 0x01, 0x20, 0xdd, 0x70, 0xba, 0xdd, 0x08, 0x01, 0xf0, 0x17, + 0xbd, 0x0d, 0x01, 0x85, 0x87, 0xbd, 0x0e, 0x01, 0x85, 0x88, 0xbd, 0x10, + 0x01, 0x85, 0xc3, 0xbd, 0x0f, 0x01, 0x85, 0xc4, 0x4c, 0xc3, 0x5c, 0x8a, + 0x69, 0x0f, 0xaa, 0x9a, 0x20, 0xc2, 0x00, 0xc9, 0x2c, 0xd0, 0xf1, 0x20, + 0xbc, 0x00, 0x20, 0x2f, 0x62, 0x20, 0xa5, 0x62, 0x18, 0x24, 0x38, 0x24, + 0x5f, 0x30, 0x03, 0xb0, 0x03, 0x60, 0xb0, 0xfd, 0xa2, 0x18, 0x4c, 0x3b, + 0x59, 0xa6, 0xc3, 0xd0, 0x02, 0xc6, 0xc4, 0xc6, 0xc3, 0xa9, 0x00, 0x48, + 0xa9, 0x02, 0x20, 0x04, 0x59, 0x20, 0x80, 0x63, 0xa9, 0x00, 0x85, 0x9b, + 0x20, 0xc2, 0x00, 0x38, 0xe9, 0xbf, 0x90, 0x17, 0xc9, 0x03, 0xb0, 0x13, + 0xc9, 0x01, 0x2a, 0x49, 0x01, 0x45, 0x9b, 0xc5, 0x9b, 0x90, 0x65, 0x85, + 0x9b, 0x20, 0xbc, 0x00, 0x4c, 0xbf, 0x62, 0xa6, 0x9b, 0xd0, 0x2c, 0xb0, + 0x77, 0x69, 0x0a, 0x90, 0x73, 0x65, 0x5f, 0xd0, 0x03, 0x4c, 0xa3, 0x6a, + 0x69, 0xff, 0x85, 0x71, 0x0a, 0x65, 0x71, 0xa8, 0x68, 0xd9, 0x66, 0x7a, + 0xb0, 0x63, 0x20, 0x94, 0x62, 0x48, 0x20, 0x24, 0x63, 0x68, 0xa4, 0x99, + 0x10, 0x17, 0xaa, 0xf0, 0x74, 0xd0, 0x5b, 0x46, 0x5f, 0x8a, 0x2a, 0xa6, + 0xc3, 0xd0, 0x02, 0xc6, 0xc4, 0xc6, 0xc3, 0xa0, 0x24, 0x85, 0x9b, 0xd0, + 0xd7, 0xd9, 0x66, 0x7a, 0xb0, 0x44, 0x90, 0xd9, 0xb9, 0x68, 0x7a, 0x48, + 0xb9, 0x67, 0x7a, 0x48, 0x20, 0x3b, 0x63, 0xa5, 0x9b, 0x48, 0xb9, 0x66, + 0x7a, 0x4c, 0xaf, 0x62, 0x4c, 0xf3, 0x63, 0x68, 0x85, 0x71, 0xe6, 0x71, + 0x68, 0x85, 0x72, 0xa5, 0xb0, 0x48, 0x20, 0x9d, 0x70, 0xa5, 0xaf, 0x48, + 0xa5, 0xae, 0x48, 0xa5, 0xad, 0x48, 0xa5, 0xac, 0x48, 0x6c, 0x71, 0x00, + 0xa0, 0xff, 0x68, 0xf0, 0x20, 0xc9, 0x64, 0xf0, 0x03, 0x20, 0x94, 0x62, + 0x84, 0x99, 0x68, 0x4a, 0x85, 0x63, 0x68, 0x85, 0xb3, 0x68, 0x85, 0xb4, + 0x68, 0x85, 0xb5, 0x68, 0x85, 0xb6, 0x68, 0x85, 0xb7, 0x45, 0xb0, 0x85, + 0xb8, 0xa5, 0xac, 0x60, 0xa9, 0x00, 0x85, 0x5f, 0x20, 0xbc, 0x00, 0xb0, + 0x03, 0x4c, 0x6a, 0x71, 0xc9, 0x24, 0xf0, 0xf9, 0xc9, 0x25, 0xf0, 0xf5, + 0x20, 0xe8, 0x65, 0xb0, 0x66, 0xc9, 0x2e, 0xf0, 0xec, 0xc9, 0xb6, 0xf0, + 0x57, 0xc9, 0xb5, 0xf0, 0xdf, 0xc9, 0x22, 0xd0, 0x0f, 0xa5, 0xc3, 0xa4, + 0xc4, 0x69, 0x00, 0x90, 0x01, 0xc8, 0x20, 0x13, 0x69, 0x4c, 0x8d, 0x6c, + 0xc9, 0xb0, 0xd0, 0x13, 0xa0, 0x21, 0xd0, 0x3a, 0x20, 0x70, 0x66, 0xa5, + 0xaf, 0x49, 0xff, 0xa8, 0xa5, 0xae, 0x49, 0xff, 0x4c, 0x23, 0x68, 0xc9, + 0xad, 0xd0, 0x03, 0x4c, 0x82, 0x68, 0xc9, 0xc2, 0x90, 0x02, 0xb0, 0x32, + 0x20, 0xe5, 0x63, 0x20, 0xa5, 0x62, 0xa9, 0x29, 0x2c, 0xa9, 0x28, 0x2c, + 0xa9, 0x2c, 0xa0, 0x00, 0xd1, 0xc3, 0xd0, 0x03, 0x4c, 0xbc, 0x00, 0xa2, + 0x02, 0x4c, 0x3b, 0x59, 0xa0, 0x1e, 0x68, 0x68, 0x4c, 0xfe, 0x62, 0x20, + 0x76, 0x65, 0x85, 0xae, 0x84, 0xaf, 0xa6, 0x5f, 0xd0, 0x03, 0x4c, 0x3e, + 0x70, 0x60, 0x0a, 0x48, 0xaa, 0x20, 0xbc, 0x00, 0xe0, 0xb3, 0x90, 0x56, + 0xe0, 0xb7, 0x90, 0x24, 0xe0, 0xc3, 0x90, 0x51, 0x20, 0xe5, 0x63, 0x20, + 0xa5, 0x62, 0x20, 0xe8, 0x63, 0x20, 0x96, 0x62, 0x68, 0xaa, 0xa5, 0xaf, + 0x48, 0xa5, 0xae, 0x48, 0x8a, 0x48, 0x20, 0x4a, 0x6c, 0x68, 0xa8, 0x8a, + 0x48, 0x4c, 0x73, 0x64, 0x20, 0xe5, 0x63, 0x20, 0x91, 0x62, 0xa5, 0xac, + 0xc9, 0x98, 0xb0, 0x1f, 0x20, 0x14, 0x71, 0xa2, 0x02, 0xb5, 0xad, 0x95, + 0x11, 0xca, 0x10, 0xf9, 0x20, 0xc2, 0x00, 0xa2, 0x00, 0xc9, 0x29, 0xf0, + 0x10, 0x20, 0x9c, 0x6c, 0x20, 0xc2, 0x00, 0xc9, 0x29, 0xf0, 0x06, 0x4c, + 0xf3, 0x66, 0x20, 0xdc, 0x63, 0x68, 0xa8, 0xb9, 0x9c, 0x79, 0x85, 0xa2, + 0xb9, 0x9d, 0x79, 0x85, 0xa3, 0x20, 0xa1, 0x00, 0x4c, 0x94, 0x62, 0x20, + 0xaa, 0x64, 0x45, 0x5b, 0xa8, 0xa5, 0xae, 0x45, 0x5c, 0x4c, 0x23, 0x68, + 0x20, 0xaa, 0x64, 0x05, 0x5b, 0xa8, 0xa5, 0xae, 0x05, 0x5c, 0x4c, 0x23, + 0x68, 0x20, 0xaa, 0x64, 0x25, 0x5b, 0xa8, 0xa5, 0xae, 0x25, 0x5c, 0x4c, + 0x23, 0x68, 0x20, 0x70, 0x66, 0xa5, 0xae, 0x85, 0x5c, 0xa5, 0xaf, 0x85, + 0x5b, 0x20, 0x81, 0x6d, 0x20, 0x70, 0x66, 0xa5, 0xaf, 0x60, 0x20, 0x97, + 0x62, 0xb0, 0x13, 0xa5, 0xb7, 0x09, 0x7f, 0x25, 0xb4, 0x85, 0xb4, 0xa9, + 0xb3, 0xa0, 0x00, 0x20, 0xdb, 0x70, 0xaa, 0x4c, 0x09, 0x65, 0xa9, 0x00, + 0x85, 0x5f, 0xc6, 0x9b, 0x20, 0x0d, 0x6b, 0x85, 0xac, 0x86, 0xad, 0x84, + 0xae, 0xa5, 0xb5, 0xa4, 0xb6, 0x20, 0x11, 0x6b, 0x86, 0xb5, 0x84, 0xb6, + 0xaa, 0x38, 0xe5, 0xac, 0xf0, 0x08, 0xa9, 0x01, 0x90, 0x04, 0xa6, 0xac, + 0xa9, 0xff, 0x85, 0xb0, 0xa0, 0xff, 0xe8, 0xc8, 0xca, 0xd0, 0x07, 0xa6, + 0xb0, 0x30, 0x0f, 0x18, 0x90, 0x0c, 0xb1, 0xb5, 0xd1, 0xad, 0xf0, 0xef, + 0xa2, 0xff, 0xb0, 0x02, 0xa2, 0x01, 0xe8, 0x8a, 0x2a, 0x25, 0x63, 0xf0, + 0x02, 0xa9, 0xff, 0x4c, 0xbe, 0x70, 0x20, 0xe8, 0x63, 0xaa, 0x20, 0x7b, + 0x65, 0x20, 0xc2, 0x00, 0xd0, 0xf4, 0x60, 0x20, 0x6b, 0x65, 0xa5, 0xae, + 0xa6, 0x78, 0xf0, 0x24, 0xe0, 0x10, 0xb0, 0x25, 0x06, 0xaf, 0x26, 0x00, + 0xca, 0xd0, 0xf9, 0xa4, 0xaf, 0x4c, 0x23, 0x68, 0x20, 0x6b, 0x65, 0xa5, + 0xae, 0xa6, 0x78, 0xf0, 0x0b, 0xe0, 0x10, 0xb0, 0x0c, 0x46, 0x00, 0x66, + 0xaf, 0xca, 0xd0, 0xf9, 0xa4, 0xaf, 0x4c, 0x23, 0x68, 0xa9, 0x00, 0xa8, + 0x4c, 0x23, 0x68, 0x20, 0x4d, 0x6c, 0x86, 0x78, 0x20, 0x81, 0x6d, 0x4c, + 0x70, 0x66, 0xa2, 0x00, 0x20, 0xc2, 0x00, 0x86, 0x5e, 0x85, 0x93, 0x20, + 0xe8, 0x65, 0xb0, 0x03, 0x4c, 0xf3, 0x63, 0xa2, 0x00, 0x86, 0x5f, 0x20, + 0xbc, 0x00, 0x90, 0x05, 0x20, 0xe8, 0x65, 0x90, 0x0b, 0xaa, 0x20, 0xbc, + 0x00, 0x90, 0xfb, 0x20, 0xe8, 0x65, 0xb0, 0xf6, 0xc9, 0x24, 0xd0, 0x0b, + 0xa9, 0xff, 0x85, 0x5f, 0x8a, 0x09, 0x80, 0xaa, 0x20, 0xbc, 0x00, 0x86, + 0x94, 0x05, 0x61, 0xc9, 0x28, 0xd0, 0x03, 0x4c, 0x82, 0x66, 0xa9, 0x00, + 0x85, 0x61, 0xa5, 0x7b, 0xa6, 0x7c, 0xa0, 0x00, 0x86, 0xab, 0x85, 0xaa, + 0xe4, 0x7e, 0xd0, 0x04, 0xc5, 0x7d, 0xf0, 0x2c, 0xa5, 0x93, 0xd1, 0xaa, + 0xd0, 0x08, 0xa5, 0x94, 0xc8, 0xd1, 0xaa, 0xf0, 0x69, 0x88, 0x18, 0xa5, + 0xaa, 0x69, 0x06, 0x90, 0xe1, 0xe8, 0xd0, 0xdc, 0xc9, 0x61, 0xb0, 0x0a, + 0xc9, 0x41, 0x90, 0x05, 0xe9, 0x5b, 0x38, 0xe9, 0xa5, 0x60, 0xe9, 0x7b, + 0x38, 0xe9, 0x85, 0x60, 0x68, 0x48, 0xc9, 0x01, 0xd0, 0x05, 0xa9, 0xa4, + 0xa0, 0x79, 0x60, 0xa5, 0x7d, 0xa4, 0x7e, 0x85, 0xaa, 0x84, 0xab, 0xa5, + 0x7f, 0xa4, 0x80, 0x85, 0xa6, 0x84, 0xa7, 0x18, 0x69, 0x06, 0x90, 0x01, + 0xc8, 0x85, 0xa4, 0x84, 0xa5, 0x20, 0xc1, 0x58, 0xa5, 0xa4, 0xa4, 0xa5, + 0xc8, 0x85, 0x7d, 0x84, 0x7e, 0xa0, 0x00, 0xa5, 0x93, 0x91, 0xaa, 0xc8, + 0xa5, 0x94, 0x91, 0xaa, 0xa9, 0x00, 0xc8, 0x91, 0xaa, 0xc8, 0x91, 0xaa, + 0xc8, 0x91, 0xaa, 0xc8, 0x91, 0xaa, 0xa5, 0xaa, 0x18, 0x69, 0x02, 0xa4, + 0xab, 0x90, 0x01, 0xc8, 0x85, 0x95, 0x84, 0x96, 0x60, 0xa5, 0x5d, 0x0a, + 0x69, 0x05, 0x65, 0xaa, 0xa4, 0xab, 0x90, 0x01, 0xc8, 0x85, 0xa4, 0x84, + 0xa5, 0x60, 0x20, 0xbc, 0x00, 0x20, 0x91, 0x62, 0xa5, 0xb0, 0x30, 0x0d, + 0xa5, 0xac, 0xc9, 0x90, 0x90, 0x09, 0xa9, 0xab, 0xa0, 0x79, 0x20, 0xdb, + 0x70, 0xd0, 0x74, 0x4c, 0x14, 0x71, 0xa5, 0x5e, 0x48, 0xa5, 0x5f, 0x48, + 0xa0, 0x00, 0x98, 0x48, 0xa5, 0x94, 0x48, 0xa5, 0x93, 0x48, 0x20, 0x66, + 0x66, 0x68, 0x85, 0x93, 0x68, 0x85, 0x94, 0x68, 0xa8, 0xba, 0xbd, 0x02, + 0x01, 0x48, 0xbd, 0x01, 0x01, 0x48, 0xa5, 0xae, 0x9d, 0x02, 0x01, 0xa5, + 0xaf, 0x9d, 0x01, 0x01, 0xc8, 0x20, 0xc2, 0x00, 0xc9, 0x2c, 0xf0, 0xd2, + 0x84, 0x5d, 0x20, 0xe2, 0x63, 0x68, 0x85, 0x5f, 0x68, 0x85, 0x5e, 0xa6, + 0x7d, 0xa5, 0x7e, 0x86, 0xaa, 0x85, 0xab, 0xc5, 0x80, 0xd0, 0x04, 0xe4, + 0x7f, 0xf0, 0x39, 0xa0, 0x00, 0xb1, 0xaa, 0xc8, 0xc5, 0x93, 0xd0, 0x06, + 0xa5, 0x94, 0xd1, 0xaa, 0xf0, 0x16, 0xc8, 0xb1, 0xaa, 0x18, 0x65, 0xaa, + 0xaa, 0xc8, 0xb1, 0xaa, 0x65, 0xab, 0x90, 0xd7, 0xa2, 0x10, 0x2c, 0xa2, + 0x08, 0x4c, 0x3b, 0x59, 0xa2, 0x12, 0xa5, 0x5e, 0xd0, 0xf7, 0x20, 0x55, + 0x66, 0xa5, 0x5d, 0xa0, 0x04, 0xd1, 0xaa, 0xd0, 0xe7, 0x4c, 0x8f, 0x67, + 0x20, 0x55, 0x66, 0x20, 0x0c, 0x59, 0xa0, 0x00, 0x84, 0xbb, 0xa5, 0x93, + 0x91, 0xaa, 0xc8, 0xa5, 0x94, 0x91, 0xaa, 0xa5, 0x5d, 0xa0, 0x04, 0x84, + 0xba, 0x91, 0xaa, 0x18, 0xa2, 0x0b, 0xa9, 0x00, 0x24, 0x5e, 0x50, 0x07, + 0x68, 0x69, 0x01, 0xaa, 0x68, 0x69, 0x00, 0xc8, 0x91, 0xaa, 0xc8, 0x8a, + 0x91, 0xaa, 0x20, 0xde, 0x67, 0x86, 0xba, 0x85, 0xbb, 0xa4, 0x71, 0xc6, + 0x5d, 0xd0, 0xdd, 0x65, 0xa5, 0xb0, 0x5d, 0x85, 0xa5, 0xa8, 0x8a, 0x65, + 0xa4, 0x90, 0x03, 0xc8, 0xf0, 0x52, 0x20, 0x0c, 0x59, 0x85, 0x7f, 0x84, + 0x80, 0xa9, 0x00, 0xe6, 0xbb, 0xa4, 0xba, 0xf0, 0x05, 0x88, 0x91, 0xa4, + 0xd0, 0xfb, 0xc6, 0xa5, 0xc6, 0xbb, 0xd0, 0xf5, 0xe6, 0xa5, 0x38, 0xa0, + 0x02, 0xa5, 0x7f, 0xe5, 0xaa, 0x91, 0xaa, 0xc8, 0xa5, 0x80, 0xe5, 0xab, + 0x91, 0xaa, 0xa5, 0x5e, 0xd0, 0x53, 0xc8, 0xb1, 0xaa, 0x85, 0x5d, 0xa9, + 0x00, 0x85, 0xba, 0x85, 0xbb, 0xc8, 0x68, 0xaa, 0x85, 0xae, 0x68, 0x85, + 0xaf, 0xd1, 0xaa, 0x90, 0x0e, 0xd0, 0x06, 0xc8, 0x8a, 0xd1, 0xaa, 0x90, + 0x07, 0x4c, 0xf0, 0x66, 0x4c, 0x39, 0x59, 0xc8, 0xa5, 0xbb, 0x05, 0xba, + 0xf0, 0x0a, 0x20, 0xde, 0x67, 0x8a, 0x65, 0xae, 0xaa, 0x98, 0xa4, 0x71, + 0x65, 0xaf, 0x86, 0xba, 0xc6, 0x5d, 0xd0, 0xcb, 0x06, 0xba, 0x2a, 0x06, + 0xba, 0x2a, 0xa8, 0xa5, 0xba, 0x65, 0xa4, 0x85, 0x95, 0x98, 0x65, 0xa5, + 0x85, 0x96, 0xa8, 0xa5, 0x95, 0x60, 0x84, 0x71, 0xb1, 0xaa, 0x85, 0x76, + 0x88, 0xb1, 0xaa, 0x85, 0x77, 0xa9, 0x10, 0x85, 0xa8, 0xa2, 0x00, 0xa0, + 0x00, 0x8a, 0x0a, 0xaa, 0x98, 0x2a, 0xa8, 0xb0, 0xb3, 0x06, 0xba, 0x26, + 0xbb, 0x90, 0x0b, 0x18, 0x8a, 0x65, 0x76, 0xaa, 0x98, 0x65, 0x77, 0xa8, + 0xb0, 0xa2, 0xc6, 0xa8, 0xd0, 0xe3, 0x60, 0xa5, 0x5f, 0xf0, 0x03, 0x20, + 0x0d, 0x6b, 0x20, 0xae, 0x69, 0x38, 0xa5, 0x81, 0xe5, 0x7f, 0xa8, 0xa5, + 0x82, 0xe5, 0x80, 0xa2, 0x00, 0x86, 0x5f, 0x85, 0xad, 0x84, 0xae, 0xa2, + 0x90, 0x4c, 0xc6, 0x70, 0xa4, 0x0e, 0xa9, 0x00, 0xf0, 0xed, 0xa6, 0x88, + 0xe8, 0xd0, 0xa2, 0xa2, 0x16, 0x4c, 0x3b, 0x59, 0x20, 0x6d, 0x68, 0x20, + 0x36, 0x68, 0x20, 0xe5, 0x63, 0xa9, 0x80, 0x85, 0x61, 0x20, 0x76, 0x65, + 0x20, 0x94, 0x62, 0x20, 0xe2, 0x63, 0xa9, 0xc0, 0x20, 0xea, 0x63, 0xa5, + 0x96, 0x48, 0xa5, 0x95, 0x48, 0xa5, 0xc4, 0x48, 0xa5, 0xc3, 0x48, 0x20, + 0x95, 0x5e, 0x4c, 0xdf, 0x68, 0xa9, 0xad, 0x20, 0xea, 0x63, 0x09, 0x80, + 0x85, 0x61, 0x29, 0x7f, 0x20, 0x7d, 0x65, 0x85, 0x9c, 0x84, 0x9d, 0x4c, + 0x94, 0x62, 0x20, 0x6d, 0x68, 0xa5, 0x9d, 0x48, 0xa5, 0x9c, 0x48, 0x20, + 0xdc, 0x63, 0x20, 0x94, 0x62, 0x68, 0x85, 0x9c, 0x68, 0x85, 0x9d, 0xa2, + 0x20, 0xa0, 0x03, 0xb1, 0x9c, 0xf0, 0x9e, 0x85, 0x96, 0x88, 0xb1, 0x9c, + 0x85, 0x95, 0xaa, 0xc8, 0xb1, 0x95, 0x48, 0x88, 0x10, 0xfa, 0xa4, 0x96, + 0x20, 0x6b, 0x70, 0xa5, 0xc4, 0x48, 0xa5, 0xc3, 0x48, 0xb1, 0x9c, 0x85, + 0xc3, 0xc8, 0xb1, 0x9c, 0x85, 0xc4, 0xa5, 0x96, 0x48, 0xa5, 0x95, 0x48, + 0x20, 0x91, 0x62, 0x68, 0x85, 0x9c, 0x68, 0x85, 0x9d, 0x20, 0xc2, 0x00, + 0xf0, 0x03, 0x4c, 0xf3, 0x63, 0x68, 0x85, 0xc3, 0x68, 0x85, 0xc4, 0xa0, + 0x00, 0x68, 0x91, 0x9c, 0xc8, 0x68, 0x91, 0x9c, 0xc8, 0x68, 0x91, 0x9c, + 0xc8, 0x68, 0x91, 0x9c, 0x60, 0x20, 0x94, 0x62, 0xa0, 0x00, 0x20, 0x57, + 0x72, 0x68, 0x68, 0xa9, 0xf0, 0xa0, 0x00, 0xf0, 0x12, 0xa6, 0xae, 0xa4, + 0xaf, 0x86, 0x9e, 0x84, 0x9f, 0x20, 0x7c, 0x69, 0x86, 0xad, 0x84, 0xae, + 0x85, 0xac, 0x60, 0xa2, 0x22, 0x86, 0x5b, 0x86, 0x5c, 0x85, 0xb8, 0x84, + 0xb9, 0x85, 0xad, 0x84, 0xae, 0xa0, 0xff, 0xc8, 0xb1, 0xb8, 0xf0, 0x0c, + 0xc5, 0x5b, 0xf0, 0x04, 0xc5, 0x5c, 0xd0, 0xf3, 0xc9, 0x22, 0xf0, 0x01, + 0x18, 0x84, 0xac, 0x98, 0x65, 0xb8, 0x85, 0xba, 0xa6, 0xb9, 0x90, 0x01, + 0xe8, 0x86, 0xbb, 0xa5, 0xb9, 0xc9, 0x03, 0xb0, 0x0b, 0x98, 0x20, 0x01, + 0x69, 0xa6, 0xb8, 0xa4, 0xb9, 0x20, 0xee, 0x6a, 0xa6, 0x65, 0xe0, 0x71, + 0xd0, 0x05, 0xa2, 0x1c, 0x4c, 0x3b, 0x59, 0xa5, 0xac, 0x95, 0x00, 0xa5, + 0xad, 0x95, 0x01, 0xa5, 0xae, 0x95, 0x02, 0xa0, 0x00, 0x86, 0xae, 0x84, + 0xaf, 0x88, 0x84, 0x5f, 0x86, 0x66, 0xe8, 0xe8, 0xe8, 0x86, 0x65, 0x60, + 0x46, 0x60, 0x48, 0x49, 0xff, 0x38, 0x65, 0x81, 0xa4, 0x82, 0xb0, 0x01, + 0x88, 0xc4, 0x80, 0x90, 0x11, 0xd0, 0x04, 0xc5, 0x7f, 0x90, 0x0b, 0x85, + 0x81, 0x84, 0x82, 0x85, 0x83, 0x84, 0x84, 0xaa, 0x68, 0x60, 0xa2, 0x0c, + 0xa5, 0x60, 0x30, 0xb8, 0x20, 0xae, 0x69, 0xa9, 0x80, 0x85, 0x60, 0x68, + 0xd0, 0xd0, 0xa6, 0x85, 0xa5, 0x86, 0x86, 0x81, 0x85, 0x82, 0xa0, 0x00, + 0x84, 0x9d, 0xa5, 0x7f, 0xa6, 0x80, 0x85, 0xaa, 0x86, 0xab, 0xa9, 0x68, + 0x85, 0x71, 0x84, 0x72, 0xc5, 0x65, 0xf0, 0x05, 0x20, 0x32, 0x6a, 0xf0, + 0xf7, 0x06, 0xa0, 0xa5, 0x7b, 0xa6, 0x7c, 0x85, 0x71, 0x86, 0x72, 0xe4, + 0x7e, 0xd0, 0x04, 0xc5, 0x7d, 0xf0, 0x05, 0x20, 0x2c, 0x6a, 0xf0, 0xf3, + 0x85, 0xa4, 0x86, 0xa5, 0xa9, 0x04, 0x85, 0xa0, 0xa5, 0xa4, 0xa6, 0xa5, + 0xe4, 0x80, 0xd0, 0x04, 0xc5, 0x7f, 0xf0, 0x75, 0x85, 0x71, 0x86, 0x72, + 0xa0, 0x02, 0xb1, 0x71, 0x65, 0xa4, 0x85, 0xa4, 0xc8, 0xb1, 0x71, 0x65, + 0xa5, 0x85, 0xa5, 0xa0, 0x01, 0xb1, 0x71, 0x10, 0xdb, 0xa0, 0x04, 0xb1, + 0x71, 0x0a, 0x69, 0x05, 0x20, 0x64, 0x6a, 0xe4, 0xa5, 0xd0, 0x04, 0xc5, + 0xa4, 0xf0, 0xcd, 0x20, 0x32, 0x6a, 0xf0, 0xf3, 0xc8, 0xb1, 0x71, 0x10, + 0x30, 0xc8, 0xb1, 0x71, 0xf0, 0x2b, 0xc8, 0xb1, 0x71, 0xaa, 0xc8, 0xb1, + 0x71, 0xc5, 0x82, 0x90, 0x06, 0xd0, 0x1e, 0xe4, 0x81, 0xb0, 0x1a, 0xc5, + 0xab, 0x90, 0x17, 0xd0, 0x04, 0xe4, 0xaa, 0x90, 0x11, 0x86, 0xaa, 0x85, + 0xab, 0xa5, 0x71, 0xa6, 0x72, 0x85, 0x9c, 0x86, 0x9d, 0x88, 0x88, 0x84, + 0xa2, 0x18, 0xa5, 0xa0, 0x65, 0x71, 0x85, 0x71, 0x90, 0x02, 0xe6, 0x72, + 0xa6, 0x72, 0xa0, 0x00, 0x60, 0xc6, 0xa0, 0xa6, 0x9d, 0xf0, 0xf5, 0xa4, + 0xa2, 0x18, 0xb1, 0x9c, 0x65, 0xaa, 0x85, 0xa6, 0xa5, 0xab, 0x69, 0x00, + 0x85, 0xa7, 0xa5, 0x81, 0xa6, 0x82, 0x85, 0xa4, 0x86, 0xa5, 0x20, 0xc8, + 0x58, 0xa4, 0xa2, 0xc8, 0xa5, 0xa4, 0x91, 0x9c, 0xaa, 0xe6, 0xa5, 0xa5, + 0xa5, 0xc8, 0x91, 0x9c, 0x4c, 0xb2, 0x69, 0xa5, 0xaf, 0x48, 0xa5, 0xae, + 0x48, 0x20, 0x80, 0x63, 0x20, 0x96, 0x62, 0x68, 0x85, 0xb8, 0x68, 0x85, + 0xb9, 0xa0, 0x00, 0xb1, 0xb8, 0x18, 0x71, 0xae, 0x90, 0x05, 0xa2, 0x1a, + 0x4c, 0x3b, 0x59, 0x20, 0x01, 0x69, 0x20, 0xe0, 0x6a, 0xa5, 0x9e, 0xa4, + 0x9f, 0x20, 0x11, 0x6b, 0x20, 0xf2, 0x6a, 0xa5, 0xb8, 0xa4, 0xb9, 0x20, + 0x11, 0x6b, 0x20, 0x54, 0x69, 0x4c, 0xbc, 0x62, 0xa0, 0x00, 0xb1, 0xb8, + 0x48, 0xc8, 0xb1, 0xb8, 0xaa, 0xc8, 0xb1, 0xb8, 0xa8, 0x68, 0x86, 0x71, + 0x84, 0x72, 0xaa, 0xf0, 0x14, 0xa0, 0x00, 0xb1, 0x71, 0x91, 0x83, 0xc8, + 0xca, 0xd0, 0xf8, 0x98, 0x18, 0x65, 0x83, 0x85, 0x83, 0x90, 0x02, 0xe6, + 0x84, 0x60, 0x20, 0x96, 0x62, 0xa5, 0xae, 0xa4, 0xaf, 0x85, 0x71, 0x84, + 0x72, 0x20, 0x42, 0x6b, 0x08, 0xa0, 0x00, 0xb1, 0x71, 0x48, 0xc8, 0xb1, + 0x71, 0xaa, 0xc8, 0xb1, 0x71, 0xa8, 0x68, 0x28, 0xd0, 0x13, 0xc4, 0x82, + 0xd0, 0x0f, 0xe4, 0x81, 0xd0, 0x0b, 0x48, 0x18, 0x65, 0x81, 0x85, 0x81, + 0x90, 0x02, 0xe6, 0x82, 0x68, 0x86, 0x71, 0x84, 0x72, 0x60, 0xc4, 0x67, + 0xd0, 0x0c, 0xc5, 0x66, 0xd0, 0x08, 0x85, 0x65, 0xe9, 0x03, 0x85, 0x66, + 0xa0, 0x00, 0x60, 0x20, 0x4d, 0x6c, 0x8a, 0x48, 0xa9, 0x01, 0x20, 0x09, + 0x69, 0x68, 0xa0, 0x00, 0x91, 0xad, 0x68, 0x68, 0x4c, 0x54, 0x69, 0x20, + 0xc5, 0x6b, 0xd1, 0x9e, 0x98, 0xf0, 0x08, 0x20, 0xc5, 0x6b, 0x18, 0xf1, + 0x9e, 0x49, 0xff, 0x90, 0x04, 0xb1, 0x9e, 0xaa, 0x98, 0x48, 0x8a, 0x48, + 0x20, 0x09, 0x69, 0xa5, 0x9e, 0xa4, 0x9f, 0x20, 0x11, 0x6b, 0x68, 0xa8, + 0x68, 0x18, 0x65, 0x71, 0x85, 0x71, 0x90, 0x02, 0xe6, 0x72, 0x98, 0x20, + 0xf2, 0x6a, 0x4c, 0x54, 0x69, 0xa9, 0xff, 0x85, 0xaf, 0x20, 0xc2, 0x00, + 0xc9, 0x29, 0xf0, 0x06, 0x20, 0xe8, 0x63, 0x20, 0x4a, 0x6c, 0x20, 0xc5, + 0x6b, 0xca, 0x8a, 0x48, 0x18, 0xa2, 0x00, 0xf1, 0x9e, 0xb0, 0xc3, 0x49, + 0xff, 0xc5, 0xaf, 0x90, 0xbe, 0xa5, 0xaf, 0xb0, 0xba, 0x20, 0xe2, 0x63, + 0x68, 0x85, 0xa2, 0x68, 0x85, 0xa3, 0x68, 0x68, 0x68, 0xaa, 0x68, 0x85, + 0x9e, 0x68, 0x85, 0x9f, 0xa0, 0x00, 0x8a, 0xf0, 0x67, 0xe6, 0xa2, 0x6c, + 0xa2, 0x00, 0x20, 0x0a, 0x6b, 0x85, 0xac, 0x86, 0xad, 0x84, 0xae, 0xa8, + 0xf0, 0x2c, 0x88, 0xb1, 0x71, 0x20, 0xec, 0x65, 0x90, 0x04, 0x09, 0x20, + 0x91, 0x71, 0x98, 0xd0, 0xf1, 0xf0, 0x1b, 0x20, 0x0a, 0x6b, 0x85, 0xac, + 0x86, 0xad, 0x84, 0xae, 0xa8, 0xf0, 0x0f, 0x88, 0xb1, 0x71, 0x20, 0xe8, + 0x65, 0x90, 0x04, 0x29, 0xdf, 0x91, 0x71, 0x98, 0xd0, 0xf1, 0x68, 0x68, + 0x4c, 0x54, 0x69, 0x20, 0x0a, 0x6b, 0x98, 0xa4, 0x71, 0x4c, 0x23, 0x68, + 0x20, 0x2e, 0x6c, 0x4c, 0x32, 0x68, 0x20, 0x0a, 0x6b, 0xa2, 0x00, 0x86, + 0x5f, 0xa8, 0x60, 0x20, 0x2e, 0x6c, 0xf0, 0x08, 0xa0, 0x00, 0xb1, 0x71, + 0xa8, 0x4c, 0x32, 0x68, 0x4c, 0xf3, 0x66, 0x20, 0xbc, 0x00, 0x20, 0x91, + 0x62, 0x20, 0x6c, 0x66, 0xa4, 0xae, 0xd0, 0xf0, 0xa6, 0xaf, 0x4c, 0xc2, + 0x00, 0x20, 0x2e, 0x6c, 0xd0, 0x03, 0x4c, 0x0e, 0x6e, 0xa6, 0xc3, 0xa4, + 0xc4, 0x86, 0xba, 0x84, 0xbb, 0xa6, 0x71, 0x86, 0xc3, 0x18, 0x65, 0x71, + 0x85, 0x73, 0xa5, 0x72, 0x85, 0xc4, 0x69, 0x00, 0x85, 0x74, 0xa0, 0x00, + 0xb1, 0x73, 0x48, 0x98, 0x91, 0x73, 0x20, 0xc2, 0x00, 0x20, 0x6a, 0x71, + 0x68, 0xa0, 0x00, 0x91, 0x73, 0xa6, 0xba, 0xa4, 0xbb, 0x86, 0xc3, 0x84, + 0xc4, 0x60, 0x20, 0x91, 0x62, 0x20, 0xaf, 0x6c, 0x20, 0xe8, 0x63, 0xa5, + 0x12, 0x48, 0xa5, 0x11, 0x48, 0x20, 0x4a, 0x6c, 0x68, 0x85, 0x11, 0x68, + 0x85, 0x12, 0x60, 0xa5, 0xac, 0xc9, 0x98, 0xb0, 0x8f, 0x20, 0x14, 0x71, + 0xa5, 0xae, 0xa4, 0xaf, 0x84, 0x11, 0x85, 0x12, 0x60, 0x20, 0xaf, 0x6c, + 0xa2, 0x00, 0xa1, 0x11, 0xa8, 0x4c, 0x32, 0x68, 0x20, 0x96, 0x6c, 0x8a, + 0xa2, 0x00, 0x81, 0x11, 0x60, 0x20, 0xaf, 0x6c, 0xa2, 0x00, 0xa1, 0x11, + 0xa8, 0xe6, 0x11, 0xd0, 0x02, 0xe6, 0x12, 0xa1, 0x11, 0x4c, 0x23, 0x68, + 0x20, 0x91, 0x62, 0x20, 0xaf, 0x6c, 0x84, 0x97, 0x85, 0x98, 0x20, 0xe8, + 0x63, 0x20, 0x91, 0x62, 0x20, 0xaf, 0x6c, 0x98, 0xa2, 0x00, 0x81, 0x97, + 0xe6, 0x97, 0xd0, 0x02, 0xe6, 0x98, 0xa5, 0x12, 0x81, 0x97, 0x4c, 0xc2, + 0x00, 0x20, 0x76, 0x65, 0x85, 0x97, 0x84, 0x98, 0xa5, 0x5f, 0x48, 0x20, + 0xe8, 0x63, 0x20, 0x76, 0x65, 0x68, 0xc5, 0x5f, 0xd0, 0x10, 0xa0, 0x03, + 0xb1, 0x97, 0x48, 0xb1, 0x95, 0x91, 0x97, 0x68, 0x91, 0x95, 0x88, 0x10, + 0xf3, 0x60, 0x4c, 0xa0, 0x62, 0x20, 0x91, 0x62, 0x20, 0xaf, 0x6c, 0xa9, + 0x6d, 0x48, 0xa9, 0x43, 0x48, 0x6c, 0x11, 0x00, 0x4c, 0xc2, 0x00, 0x20, + 0x96, 0x6c, 0x86, 0x97, 0xa2, 0x00, 0x20, 0xc2, 0x00, 0xf0, 0x03, 0x20, + 0x9c, 0x6c, 0x86, 0x98, 0xb1, 0x11, 0x45, 0x98, 0x25, 0x97, 0xf0, 0xf8, + 0x60, 0x20, 0x49, 0x6f, 0xa5, 0xb0, 0x49, 0xff, 0x85, 0xb0, 0x45, 0xb7, + 0x85, 0xb8, 0xa5, 0xac, 0x4c, 0x7f, 0x6d, 0x20, 0x98, 0x6e, 0x90, 0x4d, + 0xa9, 0xac, 0xa0, 0x79, 0x20, 0x49, 0x6f, 0xd0, 0x10, 0xa5, 0xb7, 0x85, + 0xb0, 0xa2, 0x04, 0xb5, 0xb2, 0x95, 0xab, 0xca, 0xd0, 0xf9, 0x86, 0xb9, + 0x60, 0xa6, 0xb9, 0x86, 0xa3, 0xa2, 0xb3, 0xa5, 0xb3, 0xa8, 0xf0, 0xc4, + 0x38, 0xe5, 0xac, 0xf0, 0x24, 0x90, 0x12, 0x84, 0xac, 0xa4, 0xb7, 0x84, + 0xb0, 0x49, 0xff, 0x69, 0x00, 0xa0, 0x00, 0x84, 0xa3, 0xa2, 0xac, 0xd0, + 0x04, 0xa0, 0x00, 0x84, 0xb9, 0xc9, 0xf9, 0x30, 0xb6, 0xa8, 0xa5, 0xb9, + 0x56, 0x01, 0x20, 0xaf, 0x6e, 0x24, 0xb8, 0x10, 0x4c, 0xa0, 0xac, 0xe0, + 0xb3, 0xf0, 0x02, 0xa0, 0xb3, 0x38, 0x49, 0xff, 0x65, 0xa3, 0x85, 0xb9, + 0xb9, 0x03, 0x00, 0xf5, 0x03, 0x85, 0xaf, 0xb9, 0x02, 0x00, 0xf5, 0x02, + 0x85, 0xae, 0xb9, 0x01, 0x00, 0xf5, 0x01, 0x85, 0xad, 0xb0, 0x03, 0x20, + 0x54, 0x6e, 0xa0, 0x00, 0x98, 0x18, 0xa6, 0xad, 0xd0, 0x3e, 0xa6, 0xae, + 0x86, 0xad, 0xa6, 0xaf, 0x86, 0xae, 0xa6, 0xb9, 0x86, 0xaf, 0x84, 0xb9, + 0x69, 0x08, 0xc9, 0x18, 0xd0, 0xe8, 0xa9, 0x00, 0x85, 0xac, 0x85, 0xb0, + 0x60, 0x65, 0xa3, 0x85, 0xb9, 0xa5, 0xaf, 0x65, 0xb6, 0x85, 0xaf, 0xa5, + 0xae, 0x65, 0xb5, 0x85, 0xae, 0xa5, 0xad, 0x65, 0xb4, 0x85, 0xad, 0xb0, + 0x1a, 0x60, 0x69, 0x01, 0x06, 0xb9, 0x26, 0xaf, 0x26, 0xae, 0x26, 0xad, + 0x10, 0xf4, 0x38, 0xe5, 0xac, 0xb0, 0xcf, 0x49, 0xff, 0x69, 0x01, 0x85, + 0xac, 0x90, 0x0c, 0xe6, 0xac, 0xf0, 0x36, 0x66, 0xad, 0x66, 0xae, 0x66, + 0xaf, 0x66, 0xb9, 0x60, 0xa5, 0xb0, 0x49, 0xff, 0x85, 0xb0, 0xa5, 0xad, + 0x49, 0xff, 0x85, 0xad, 0xa5, 0xae, 0x49, 0xff, 0x85, 0xae, 0xa5, 0xaf, + 0x49, 0xff, 0x85, 0xaf, 0xa5, 0xb9, 0x49, 0xff, 0x85, 0xb9, 0xe6, 0xb9, + 0xd0, 0x0a, 0xe6, 0xaf, 0xd0, 0x06, 0xe6, 0xae, 0xd0, 0x02, 0xe6, 0xad, + 0x60, 0xa2, 0x0a, 0x4c, 0x3b, 0x59, 0xa2, 0x74, 0xb4, 0x03, 0x84, 0xb9, + 0xb4, 0x02, 0x94, 0x03, 0xb4, 0x01, 0x94, 0x02, 0xa4, 0xb2, 0x94, 0x01, + 0x69, 0x08, 0x30, 0xec, 0xf0, 0xea, 0xe9, 0x08, 0xa8, 0xa5, 0xb9, 0xb0, + 0x12, 0x16, 0x01, 0x90, 0x02, 0xf6, 0x01, 0x76, 0x01, 0x76, 0x01, 0x76, + 0x02, 0x76, 0x03, 0x6a, 0xc8, 0xd0, 0xee, 0x18, 0x60, 0x20, 0xad, 0x70, + 0xf0, 0x02, 0x10, 0x03, 0x4c, 0xf3, 0x66, 0xa5, 0xac, 0xe9, 0x7f, 0x48, + 0xa9, 0x80, 0x85, 0xac, 0xa9, 0x2c, 0xa0, 0x79, 0x20, 0x7c, 0x6d, 0xa9, + 0x30, 0xa0, 0x79, 0x20, 0xbf, 0x6f, 0xa9, 0xa3, 0xa0, 0x79, 0x20, 0x61, + 0x6d, 0xa9, 0x1f, 0xa0, 0x79, 0x20, 0x11, 0x74, 0xa9, 0x34, 0xa0, 0x79, + 0x20, 0x7c, 0x6d, 0x68, 0x20, 0x08, 0x72, 0xa9, 0x38, 0xa0, 0x79, 0x20, + 0x49, 0x6f, 0xf0, 0x4c, 0x20, 0x6f, 0x6f, 0xa9, 0x00, 0x85, 0x75, 0x85, + 0x76, 0x85, 0x77, 0xa5, 0xb9, 0x20, 0x1e, 0x6f, 0xa5, 0xaf, 0x20, 0x1e, + 0x6f, 0xa5, 0xae, 0x20, 0x1e, 0x6f, 0xa5, 0xad, 0x20, 0x23, 0x6f, 0x4c, + 0x2f, 0x70, 0xd0, 0x03, 0x4c, 0x86, 0x6e, 0x4a, 0x09, 0x80, 0xa8, 0x90, + 0x13, 0x18, 0xa5, 0x77, 0x65, 0xb6, 0x85, 0x77, 0xa5, 0x76, 0x65, 0xb5, + 0x85, 0x76, 0xa5, 0x75, 0x65, 0xb4, 0x85, 0x75, 0x66, 0x75, 0x66, 0x76, + 0x66, 0x77, 0x66, 0xb9, 0x98, 0x4a, 0xd0, 0xde, 0x60, 0x85, 0x71, 0x84, + 0x72, 0xa0, 0x03, 0xb1, 0x71, 0x85, 0xb6, 0x88, 0xb1, 0x71, 0x85, 0xb5, + 0x88, 0xb1, 0x71, 0x85, 0xb7, 0x45, 0xb0, 0x85, 0xb8, 0xa5, 0xb7, 0x09, + 0x80, 0x85, 0xb4, 0x88, 0xb1, 0x71, 0x85, 0xb3, 0xa5, 0xac, 0x60, 0xa5, + 0xb3, 0xf0, 0x1d, 0x18, 0x65, 0xac, 0x90, 0x04, 0x30, 0x31, 0x18, 0x2c, + 0x10, 0x12, 0x69, 0x80, 0x85, 0xac, 0xd0, 0x03, 0x4c, 0x12, 0x6e, 0xa5, + 0xb8, 0x85, 0xb0, 0x60, 0xa5, 0xb0, 0x10, 0x1b, 0x68, 0x68, 0x4c, 0x0e, + 0x6e, 0x20, 0x8e, 0x70, 0xaa, 0xf0, 0xf0, 0x18, 0x69, 0x02, 0xb0, 0x0b, + 0xa2, 0x00, 0x86, 0xb8, 0x20, 0x99, 0x6d, 0xe6, 0xac, 0xd0, 0xe0, 0x4c, + 0x81, 0x6e, 0x20, 0x8e, 0x70, 0xa9, 0xb4, 0xa0, 0x79, 0xa2, 0x00, 0x86, + 0xb8, 0x20, 0x3e, 0x70, 0x4c, 0xc2, 0x6f, 0x20, 0x49, 0x6f, 0xf0, 0x66, + 0x20, 0x9d, 0x70, 0xa9, 0x00, 0x38, 0xe5, 0xac, 0x85, 0xac, 0x20, 0x6f, + 0x6f, 0xe6, 0xac, 0xf0, 0xd6, 0xa2, 0xfd, 0xa9, 0x01, 0xa4, 0xb4, 0xc4, + 0xad, 0xd0, 0x0a, 0xa4, 0xb5, 0xc4, 0xae, 0xd0, 0x04, 0xa4, 0xb6, 0xc4, + 0xaf, 0x08, 0x2a, 0x90, 0x0a, 0xe8, 0xf0, 0x2a, 0x10, 0x2c, 0xa0, 0x01, + 0x95, 0x77, 0x98, 0x28, 0x90, 0x14, 0xa8, 0xa5, 0xb6, 0xe5, 0xaf, 0x85, + 0xb6, 0xa5, 0xb5, 0xe5, 0xae, 0x85, 0xb5, 0xa5, 0xb4, 0xe5, 0xad, 0x85, + 0xb4, 0x98, 0x06, 0xb6, 0x26, 0xb5, 0x26, 0xb4, 0xb0, 0xd3, 0x30, 0xc1, + 0x10, 0xcf, 0xa0, 0x40, 0xd0, 0xd6, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, + 0x85, 0xb9, 0x28, 0x4c, 0x2f, 0x70, 0xa2, 0x14, 0x4c, 0x3b, 0x59, 0xa5, + 0x75, 0x85, 0xad, 0xa5, 0x76, 0x85, 0xae, 0xa5, 0x77, 0x85, 0xaf, 0x4c, + 0xf2, 0x6d, 0x85, 0x71, 0x84, 0x72, 0xa0, 0x03, 0xb1, 0x71, 0x85, 0xaf, + 0x88, 0xb1, 0x71, 0x85, 0xae, 0x88, 0xb1, 0x71, 0x85, 0xb0, 0x09, 0x80, + 0x85, 0xad, 0x88, 0xb1, 0x71, 0x85, 0xac, 0x84, 0xb9, 0x60, 0xa2, 0xa8, + 0x2c, 0xa2, 0xa4, 0xa0, 0x00, 0xf0, 0x04, 0xa6, 0x97, 0xa4, 0x98, 0x20, + 0x9d, 0x70, 0x86, 0x71, 0x84, 0x72, 0xa0, 0x03, 0xa5, 0xaf, 0x91, 0x71, + 0x88, 0xa5, 0xae, 0x91, 0x71, 0x88, 0xa5, 0xb0, 0x09, 0x7f, 0x25, 0xad, + 0x91, 0x71, 0x88, 0xa5, 0xac, 0x91, 0x71, 0x84, 0xb9, 0x60, 0x20, 0x9d, + 0x70, 0xa2, 0x05, 0xb5, 0xab, 0x95, 0xb2, 0xca, 0xd0, 0xf9, 0x86, 0xb9, + 0x60, 0xa5, 0xac, 0xf0, 0xfb, 0x06, 0xb9, 0x90, 0xf7, 0x20, 0x76, 0x6e, + 0xd0, 0xf2, 0x4c, 0x47, 0x6e, 0xa5, 0xac, 0xf0, 0x09, 0xa5, 0xb0, 0x2a, + 0xa9, 0xff, 0xb0, 0x02, 0xa9, 0x01, 0x60, 0x20, 0xad, 0x70, 0x85, 0xad, + 0xa9, 0x00, 0x85, 0xae, 0xa2, 0x88, 0xa5, 0xad, 0x49, 0xff, 0x2a, 0xa9, + 0x00, 0x85, 0xaf, 0x86, 0xac, 0x85, 0xb9, 0x85, 0xb0, 0x4c, 0xed, 0x6d, + 0x46, 0xb0, 0x60, 0x85, 0x73, 0x84, 0x74, 0xa0, 0x00, 0xb1, 0x73, 0xc8, + 0xaa, 0xf0, 0xc6, 0xb1, 0x73, 0x45, 0xb0, 0x30, 0xc4, 0xe4, 0xac, 0xd0, + 0x1a, 0xb1, 0x73, 0x09, 0x80, 0xc5, 0xad, 0xd0, 0x12, 0xc8, 0xb1, 0x73, + 0xc5, 0xae, 0xd0, 0x0b, 0xc8, 0xa9, 0x7f, 0xc5, 0xb9, 0xb1, 0x73, 0xe5, + 0xaf, 0xf0, 0x28, 0xa5, 0xb0, 0x90, 0x02, 0x49, 0xff, 0x4c, 0xb3, 0x70, + 0xa5, 0xac, 0xf0, 0x4a, 0x38, 0xe9, 0x98, 0x24, 0xb0, 0x10, 0x09, 0xaa, + 0xa9, 0xff, 0x85, 0xb2, 0x20, 0x5a, 0x6e, 0x8a, 0xa2, 0xac, 0xc9, 0xf9, + 0x10, 0x06, 0x20, 0x98, 0x6e, 0x84, 0xb2, 0x60, 0xa8, 0xa5, 0xb0, 0x29, + 0x80, 0x46, 0xad, 0x05, 0xad, 0x85, 0xad, 0x20, 0xaf, 0x6e, 0x84, 0xb2, + 0x60, 0xa5, 0xac, 0xc9, 0x98, 0xb0, 0x1e, 0x20, 0x14, 0x71, 0x84, 0xb9, + 0xa5, 0xb0, 0x84, 0xb0, 0x49, 0x80, 0x2a, 0xa9, 0x98, 0x85, 0xac, 0xa5, + 0xaf, 0x85, 0x5b, 0x4c, 0xed, 0x6d, 0x85, 0xad, 0x85, 0xae, 0x85, 0xaf, + 0xa8, 0x60, 0xa0, 0x00, 0xa2, 0x09, 0x94, 0xa8, 0xca, 0x10, 0xfb, 0x90, + 0x7f, 0xc9, 0x2d, 0xd0, 0x04, 0x86, 0xb1, 0xf0, 0x04, 0xc9, 0x2b, 0xd0, + 0x05, 0x20, 0xbc, 0x00, 0x90, 0x6e, 0xc9, 0x24, 0xd0, 0x03, 0x4c, 0x2a, + 0x76, 0xc9, 0x25, 0xd0, 0x08, 0x4c, 0x58, 0x76, 0x20, 0xbc, 0x00, 0x90, + 0x5b, 0xc9, 0x2e, 0xf0, 0x2e, 0xc9, 0x45, 0xd0, 0x30, 0x20, 0xbc, 0x00, + 0x90, 0x17, 0xc9, 0xb6, 0xf0, 0x0e, 0xc9, 0x2d, 0xf0, 0x0a, 0xc9, 0xb5, + 0xf0, 0x08, 0xc9, 0x2b, 0xf0, 0x04, 0xd0, 0x07, 0x66, 0xab, 0x20, 0xbc, + 0x00, 0x90, 0x5c, 0x24, 0xab, 0x10, 0x0e, 0xa9, 0x00, 0x38, 0xe5, 0xa9, + 0x4c, 0xd3, 0x71, 0x66, 0xaa, 0x24, 0xaa, 0x50, 0xc3, 0xa5, 0xa9, 0x38, + 0xe5, 0xa8, 0x85, 0xa9, 0xf0, 0x12, 0x10, 0x09, 0x20, 0xae, 0x6f, 0xe6, + 0xa9, 0xd0, 0xf9, 0xf0, 0x07, 0x20, 0x95, 0x6f, 0xc6, 0xa9, 0xd0, 0xf9, + 0xa5, 0xb1, 0x30, 0x01, 0x60, 0x4c, 0xb4, 0x73, 0x48, 0x24, 0xaa, 0x10, + 0x02, 0xe6, 0xa8, 0x20, 0x95, 0x6f, 0x68, 0x38, 0xe9, 0x30, 0x20, 0x08, + 0x72, 0x4c, 0x94, 0x71, 0x48, 0x20, 0x8e, 0x70, 0x68, 0x20, 0xbe, 0x70, + 0xa5, 0xb7, 0x45, 0xb0, 0x85, 0xb8, 0xa6, 0xac, 0x4c, 0x7f, 0x6d, 0xa5, + 0xa9, 0xc9, 0x0a, 0x90, 0x09, 0xa9, 0x64, 0x24, 0xab, 0x30, 0x0e, 0x4c, + 0x81, 0x6e, 0x0a, 0x0a, 0x65, 0xa9, 0x0a, 0xa0, 0x00, 0x71, 0xc3, 0xe9, + 0x2f, 0x85, 0xa9, 0x4c, 0xba, 0x71, 0xa9, 0x3f, 0xa0, 0x7f, 0x20, 0x52, + 0x72, 0xa5, 0x88, 0xa6, 0x87, 0x85, 0xad, 0x86, 0xae, 0xa2, 0x90, 0x38, + 0x20, 0xcb, 0x70, 0x20, 0x55, 0x72, 0x4c, 0x9c, 0x60, 0xa0, 0x01, 0xa9, + 0x20, 0x24, 0xb0, 0x10, 0x02, 0xa9, 0x2d, 0x99, 0xef, 0x00, 0x85, 0xb0, + 0x84, 0xba, 0xc8, 0xa6, 0xac, 0xd0, 0x05, 0xa9, 0x30, 0x4c, 0x6e, 0x73, + 0xa9, 0x00, 0xe0, 0x81, 0xb0, 0x09, 0xa9, 0x44, 0xa0, 0x79, 0x20, 0xf7, + 0x6e, 0xa9, 0xfa, 0x85, 0xa8, 0xa9, 0x40, 0xa0, 0x79, 0x20, 0xdb, 0x70, + 0xf0, 0x1e, 0x10, 0x12, 0xa9, 0x3c, 0xa0, 0x79, 0x20, 0xdb, 0x70, 0xf0, + 0x02, 0x10, 0x0e, 0x20, 0x95, 0x6f, 0xc6, 0xa8, 0xd0, 0xee, 0x20, 0xae, + 0x6f, 0xe6, 0xa8, 0xd0, 0xdc, 0x20, 0x78, 0x6d, 0x20, 0x14, 0x71, 0xa2, + 0x01, 0xa5, 0xa8, 0x18, 0x69, 0x07, 0x30, 0x09, 0xc9, 0x08, 0xb0, 0x06, + 0x69, 0xff, 0xaa, 0xa9, 0x02, 0x38, 0xe9, 0x02, 0x85, 0xa9, 0x86, 0xa8, + 0x8a, 0xf0, 0x02, 0x10, 0x13, 0xa4, 0xba, 0xa9, 0x2e, 0xc8, 0x99, 0xef, + 0x00, 0x8a, 0xf0, 0x06, 0xa9, 0x30, 0xc8, 0x99, 0xef, 0x00, 0x84, 0xba, + 0xa0, 0x00, 0xa2, 0x80, 0xa5, 0xaf, 0x18, 0x79, 0xba, 0x79, 0x85, 0xaf, + 0xa5, 0xae, 0x79, 0xb9, 0x79, 0x85, 0xae, 0xa5, 0xad, 0x79, 0xb8, 0x79, + 0x85, 0xad, 0xe8, 0xb0, 0x04, 0x10, 0xe5, 0x30, 0x02, 0x30, 0xe1, 0x8a, + 0x90, 0x04, 0x49, 0xff, 0x69, 0x0a, 0x69, 0x2f, 0xc8, 0xc8, 0xc8, 0x84, + 0x95, 0xa4, 0xba, 0xc8, 0xaa, 0x29, 0x7f, 0x99, 0xef, 0x00, 0xc6, 0xa8, + 0xd0, 0x06, 0xa9, 0x2e, 0xc8, 0x99, 0xef, 0x00, 0x84, 0xba, 0xa4, 0x95, + 0x8a, 0x49, 0xff, 0x29, 0x80, 0xaa, 0xc0, 0x12, 0xd0, 0xb2, 0xa4, 0xba, + 0xb9, 0xef, 0x00, 0x88, 0xc9, 0x30, 0xf0, 0xf8, 0xc9, 0x2e, 0xf0, 0x01, + 0xc8, 0xa9, 0x2b, 0xa6, 0xa9, 0xf0, 0x2e, 0x10, 0x08, 0xa9, 0x00, 0x38, + 0xe5, 0xa9, 0xaa, 0xa9, 0x2d, 0x99, 0xf1, 0x00, 0xa9, 0x45, 0x99, 0xf0, + 0x00, 0x8a, 0xa2, 0x2f, 0x38, 0xe8, 0xe9, 0x0a, 0xb0, 0xfb, 0x69, 0x3a, + 0x99, 0xf3, 0x00, 0x8a, 0x99, 0xf2, 0x00, 0xa9, 0x00, 0x99, 0xf4, 0x00, + 0xf0, 0x08, 0x99, 0xef, 0x00, 0xa9, 0x00, 0x99, 0xf0, 0x00, 0xa9, 0xf0, + 0xa0, 0x00, 0x60, 0xf0, 0x42, 0xa5, 0xb3, 0xd0, 0x03, 0x4c, 0x10, 0x6e, + 0xa2, 0x9c, 0xa0, 0x00, 0x20, 0x6b, 0x70, 0xa5, 0xb7, 0x10, 0x0f, 0x20, + 0x45, 0x71, 0xa9, 0x9c, 0xa0, 0x00, 0x20, 0xdb, 0x70, 0xd0, 0x03, 0x98, + 0xa4, 0x5b, 0x20, 0x83, 0x6d, 0x98, 0x48, 0x20, 0xb9, 0x6e, 0xa9, 0x9c, + 0xa0, 0x00, 0x20, 0xf7, 0x6e, 0x20, 0xbf, 0x73, 0x68, 0x4a, 0x90, 0x0a, + 0xa5, 0xac, 0xf0, 0x06, 0xa5, 0xb0, 0x49, 0xff, 0x85, 0xb0, 0x60, 0xa9, + 0x48, 0xa0, 0x79, 0x20, 0xf7, 0x6e, 0xa5, 0xb9, 0x69, 0x50, 0x90, 0x03, + 0x20, 0xa5, 0x70, 0x85, 0xa3, 0x20, 0x91, 0x70, 0xa5, 0xac, 0xc9, 0x88, + 0x90, 0x03, 0x20, 0x8c, 0x6f, 0x20, 0x45, 0x71, 0xa5, 0x5b, 0x18, 0x69, + 0x81, 0xf0, 0xf3, 0x38, 0xe9, 0x01, 0x48, 0xa2, 0x04, 0xb5, 0xb3, 0xb4, + 0xac, 0x95, 0xac, 0x94, 0xb3, 0xca, 0x10, 0xf5, 0xa5, 0xa3, 0x85, 0xb9, + 0x20, 0x64, 0x6d, 0x20, 0xb4, 0x73, 0xa9, 0x4c, 0xa0, 0x79, 0x20, 0x27, + 0x74, 0xa9, 0x00, 0x85, 0xb8, 0x68, 0x4c, 0x71, 0x6f, 0x85, 0xba, 0x84, + 0xbb, 0x20, 0x61, 0x70, 0xa9, 0xa4, 0x20, 0xf7, 0x6e, 0x20, 0x2b, 0x74, + 0xa9, 0xa4, 0xa0, 0x00, 0x4c, 0xf7, 0x6e, 0x85, 0xba, 0x84, 0xbb, 0x20, + 0x5e, 0x70, 0xb1, 0xba, 0x85, 0xb1, 0xa4, 0xba, 0xc8, 0x98, 0xd0, 0x02, + 0xe6, 0xbb, 0x85, 0xba, 0xa4, 0xbb, 0x20, 0xf7, 0x6e, 0xa5, 0xba, 0xa4, + 0xbb, 0x18, 0x69, 0x04, 0x90, 0x01, 0xc8, 0x85, 0xba, 0x84, 0xbb, 0x20, + 0x7c, 0x6d, 0xa9, 0xa8, 0xa0, 0x00, 0xc6, 0xb1, 0xd0, 0xe4, 0x60, 0xa5, + 0xac, 0xf0, 0x07, 0xa2, 0xd4, 0xa0, 0x00, 0x20, 0x6b, 0x70, 0xa2, 0x00, + 0xa5, 0xd4, 0x6a, 0x6a, 0x90, 0x01, 0xe8, 0x29, 0x08, 0xf0, 0x01, 0xe8, + 0x8a, 0x4a, 0x66, 0xd5, 0x66, 0xd7, 0x66, 0xd6, 0x66, 0xd4, 0xa2, 0x02, + 0xb5, 0xd5, 0x95, 0xad, 0xca, 0x10, 0xf9, 0xa9, 0x80, 0x85, 0xac, 0x0a, + 0x85, 0xb0, 0x4c, 0xf2, 0x6d, 0xa9, 0x69, 0xa0, 0x79, 0x20, 0x7c, 0x6d, + 0x20, 0x8e, 0x70, 0xa9, 0x7e, 0xa0, 0x79, 0xa6, 0xb7, 0x20, 0xb7, 0x6f, + 0x20, 0x8e, 0x70, 0x20, 0x45, 0x71, 0xa9, 0x00, 0x85, 0xb8, 0x20, 0x64, + 0x6d, 0xa9, 0xb0, 0xa0, 0x79, 0x20, 0x61, 0x6d, 0xa5, 0xb0, 0x48, 0x10, + 0x0d, 0x20, 0x78, 0x6d, 0xa5, 0xb0, 0x30, 0x09, 0xa5, 0x63, 0x49, 0xff, + 0x85, 0x63, 0x20, 0xb4, 0x73, 0xa9, 0xb0, 0xa0, 0x79, 0x20, 0x7c, 0x6d, + 0x68, 0x10, 0x03, 0x20, 0xb4, 0x73, 0xa9, 0x6d, 0xa0, 0x79, 0x4c, 0x11, + 0x74, 0x20, 0x61, 0x70, 0xa9, 0x00, 0x85, 0x63, 0x20, 0x98, 0x74, 0xa2, + 0x9c, 0xa0, 0x00, 0x20, 0x6b, 0x70, 0xa9, 0xa4, 0xa0, 0x00, 0x20, 0x3e, + 0x70, 0xa9, 0x00, 0x85, 0xb0, 0xa5, 0x63, 0x20, 0x09, 0x75, 0xa9, 0x9c, + 0xa0, 0x00, 0x4c, 0xbf, 0x6f, 0x48, 0x4c, 0xca, 0x74, 0xa5, 0xb0, 0x48, + 0x10, 0x03, 0x20, 0xb4, 0x73, 0xa5, 0xac, 0x48, 0xc9, 0x81, 0x90, 0x07, + 0xa9, 0xa3, 0xa0, 0x79, 0x20, 0xbf, 0x6f, 0xa9, 0x82, 0xa0, 0x79, 0x20, + 0x11, 0x74, 0x68, 0xc9, 0x81, 0x90, 0x07, 0xa9, 0x69, 0xa0, 0x79, 0x20, + 0x61, 0x6d, 0x68, 0x10, 0x16, 0x4c, 0xb4, 0x73, 0x20, 0x96, 0x6c, 0xe0, + 0x08, 0xb0, 0x20, 0xa9, 0x00, 0x38, 0x2a, 0xca, 0x10, 0xfc, 0xe8, 0x01, + 0x11, 0x81, 0x11, 0x60, 0x20, 0x96, 0x6c, 0xe0, 0x08, 0xb0, 0x0c, 0xa9, + 0xff, 0x2a, 0xca, 0x10, 0xfc, 0xe8, 0x21, 0x11, 0x81, 0x11, 0x60, 0x4c, + 0xf3, 0x66, 0x20, 0xe5, 0x63, 0x20, 0x96, 0x6c, 0xe0, 0x08, 0xb0, 0xf3, + 0x20, 0xc2, 0x00, 0xc9, 0x29, 0xf0, 0x03, 0x4c, 0xf3, 0x63, 0x20, 0xbc, + 0x00, 0xa9, 0x00, 0x38, 0x2a, 0xca, 0x10, 0xfc, 0xe8, 0x21, 0x11, 0xf0, + 0x02, 0xa9, 0xff, 0x4c, 0xbe, 0x70, 0xe0, 0x19, 0xb0, 0x4a, 0x86, 0x78, + 0xa9, 0x18, 0x20, 0x09, 0x69, 0xa0, 0x17, 0xa2, 0x18, 0x46, 0x11, 0x66, + 0x12, 0x66, 0x13, 0x8a, 0x2a, 0x91, 0xad, 0x88, 0x10, 0xf3, 0xa5, 0x78, + 0xf0, 0x0a, 0xaa, 0x38, 0x49, 0xff, 0x69, 0x18, 0xf0, 0x1c, 0xd0, 0x0f, + 0xa8, 0xb1, 0xad, 0xc9, 0x30, 0xd0, 0x07, 0xca, 0xf0, 0x03, 0xc8, 0x10, + 0xf4, 0xe8, 0x98, 0x18, 0x65, 0xad, 0x85, 0xad, 0xa9, 0x00, 0x65, 0xae, + 0x85, 0xae, 0x68, 0x68, 0x86, 0xac, 0x20, 0xbc, 0x00, 0x4c, 0x54, 0x69, + 0x4c, 0xf3, 0x66, 0xe0, 0x07, 0xb0, 0xf9, 0x86, 0x78, 0xa9, 0x06, 0x20, + 0x09, 0x69, 0xa0, 0x05, 0xf8, 0xa5, 0x13, 0x20, 0x0d, 0x76, 0xa5, 0x12, + 0x20, 0x0d, 0x76, 0xa5, 0x11, 0x20, 0x0d, 0x76, 0xd8, 0xa2, 0x06, 0xa5, + 0x78, 0xf0, 0xb5, 0xaa, 0x38, 0x49, 0xff, 0x69, 0x06, 0xf0, 0xc7, 0xd0, + 0xba, 0xaa, 0x29, 0x0f, 0x20, 0x18, 0x76, 0x8a, 0x4a, 0x4a, 0x4a, 0x4a, + 0xc9, 0x0a, 0x69, 0x30, 0x91, 0xad, 0x88, 0x60, 0x85, 0xac, 0xa9, 0x00, + 0x85, 0xb8, 0x8a, 0x20, 0x08, 0x72, 0x20, 0xbc, 0x00, 0x90, 0x0a, 0x09, + 0x20, 0xe9, 0x61, 0xc9, 0x06, 0xb0, 0x2a, 0x69, 0x0a, 0x29, 0x0f, 0xaa, + 0xa5, 0xac, 0xf0, 0xe4, 0x69, 0x04, 0x90, 0xdc, 0x4c, 0x81, 0x6e, 0xaa, + 0xa5, 0xac, 0xf0, 0x06, 0xe6, 0xac, 0xf0, 0xf4, 0xa9, 0x00, 0x85, 0xb8, + 0x8a, 0x20, 0x08, 0x72, 0x20, 0xbc, 0x00, 0x49, 0x30, 0xc9, 0x02, 0x90, + 0xe6, 0x4c, 0xec, 0x71, 0xad, 0xc8, 0x02, 0xd0, 0x18, 0x20, 0xb1, 0x78, + 0x90, 0x0b, 0x8d, 0xc9, 0x02, 0xa2, 0x20, 0x8e, 0xca, 0x02, 0x4c, 0x20, + 0x5d, 0xae, 0xca, 0x02, 0xf0, 0x03, 0xce, 0xca, 0x02, 0xa2, 0xd8, 0x20, + 0x8c, 0x76, 0xa2, 0xdb, 0x20, 0x8c, 0x76, 0x60, 0xb5, 0x00, 0x10, 0xfb, + 0x0a, 0x29, 0x40, 0xf0, 0xf6, 0x95, 0x00, 0x8a, 0xa8, 0x68, 0x68, 0xa9, + 0x05, 0x20, 0x04, 0x59, 0xa5, 0xc4, 0x48, 0xa5, 0xc3, 0x48, 0xa5, 0x88, + 0x48, 0xa5, 0x87, 0x48, 0xa9, 0x8d, 0x48, 0xb9, 0x01, 0x00, 0x85, 0xc3, + 0xb9, 0x02, 0x00, 0x85, 0xc4, 0x4c, 0xc3, 0x5c, 0x20, 0xb1, 0x78, 0xb0, + 0x09, 0xad, 0xca, 0x02, 0xf0, 0x09, 0xad, 0xc9, 0x02, 0x38, 0xa2, 0x00, + 0x8e, 0xca, 0x02, 0x60, 0xa2, 0xdb, 0x2c, 0xa2, 0xd8, 0xc9, 0x93, 0xf0, + 0x12, 0xc9, 0xb4, 0xf0, 0x08, 0x38, 0xe9, 0xa2, 0xf0, 0x0e, 0x4c, 0xf3, + 0x63, 0xa9, 0x7f, 0x35, 0x00, 0x10, 0x05, 0xb5, 0x00, 0x0a, 0x15, 0x00, + 0x95, 0x00, 0x4c, 0xbc, 0x00, 0x58, 0xa2, 0xdb, 0x2c, 0xa2, 0xd8, 0x86, + 0x78, 0x20, 0xbc, 0x00, 0x20, 0x19, 0x5f, 0xa5, 0x79, 0xa6, 0x7a, 0x20, + 0x2d, 0x5b, 0xb0, 0x03, 0x4c, 0x7b, 0x5e, 0xa6, 0x78, 0xa5, 0xaa, 0xe9, + 0x01, 0x95, 0x01, 0xa5, 0xab, 0xe9, 0x00, 0x95, 0x02, 0xa9, 0xc0, 0x95, + 0x00, 0x60, 0xd0, 0xfd, 0xa5, 0xdb, 0x0a, 0x05, 0xdb, 0x85, 0xdb, 0x4c, + 0x82, 0x5e, 0xd0, 0xf1, 0xa5, 0xd8, 0x0a, 0x05, 0xd8, 0x85, 0xd8, 0x4c, + 0x82, 0x5e, 0x20, 0xe5, 0x63, 0x20, 0x91, 0x62, 0x20, 0x74, 0x77, 0x10, + 0xfb, 0xa5, 0xb4, 0x09, 0x80, 0x85, 0xb4, 0x20, 0x81, 0x6d, 0xf0, 0xf0, + 0x20, 0xe5, 0x63, 0x20, 0x91, 0x62, 0x20, 0x74, 0x77, 0x30, 0xfb, 0xf0, + 0xf9, 0xa5, 0xb4, 0x09, 0x80, 0x85, 0xb4, 0x20, 0x81, 0x6d, 0xf0, 0xee, + 0xc9, 0x29, 0xd0, 0x05, 0x68, 0x68, 0x4c, 0xbc, 0x00, 0x4c, 0xf3, 0x63, + 0x20, 0xc2, 0x00, 0xc9, 0x2c, 0xd0, 0xed, 0x20, 0x9d, 0x70, 0xa5, 0xb0, + 0x09, 0x7f, 0x25, 0xad, 0x48, 0xa5, 0xae, 0x48, 0xa5, 0xaf, 0x48, 0xa5, + 0xac, 0x48, 0x20, 0xbc, 0x00, 0x20, 0x91, 0x62, 0x68, 0x85, 0xb3, 0x68, + 0x85, 0xb6, 0x68, 0x85, 0xb5, 0x68, 0x85, 0xb4, 0x85, 0xb7, 0xa9, 0xb3, + 0xa0, 0x00, 0x4c, 0xdb, 0x70, 0xc9, 0x2c, 0xf0, 0x1b, 0x20, 0x4a, 0x6c, + 0x8a, 0xf0, 0x0a, 0xe0, 0x10, 0x90, 0x45, 0xe4, 0x64, 0xb0, 0x02, 0x86, + 0x64, 0x86, 0x0f, 0x20, 0xc2, 0x00, 0xf0, 0x1a, 0xc9, 0x2c, 0xd0, 0xa9, + 0x20, 0x47, 0x6c, 0x8a, 0x30, 0x2e, 0xe0, 0x01, 0x90, 0x2a, 0xa5, 0x0f, + 0xf0, 0x06, 0xe4, 0x0f, 0xf0, 0x02, 0xb0, 0x20, 0x86, 0x64, 0xa5, 0x0f, + 0xf0, 0x06, 0xc5, 0x64, 0xb0, 0x03, 0x85, 0x64, 0x38, 0xe5, 0x64, 0xb0, + 0xfc, 0x65, 0x64, 0x18, 0x65, 0x64, 0x85, 0x10, 0xa5, 0x0f, 0x38, 0xe5, + 0x10, 0x85, 0x10, 0x60, 0x4c, 0xf3, 0x66, 0xa5, 0xb0, 0x30, 0xf9, 0xa5, + 0xac, 0xf0, 0xf4, 0x20, 0x8e, 0x70, 0xa9, 0x00, 0x85, 0x77, 0x85, 0x76, + 0x85, 0x75, 0x85, 0x78, 0x85, 0xaf, 0x85, 0xae, 0x85, 0xad, 0xa2, 0x18, + 0xa5, 0xb3, 0x4a, 0xb0, 0x0e, 0x06, 0xb6, 0x26, 0xb5, 0x26, 0xb4, 0x26, + 0x77, 0x26, 0x76, 0x26, 0x75, 0x26, 0x78, 0x06, 0xb6, 0x26, 0xb5, 0x26, + 0xb4, 0x26, 0x77, 0x26, 0x76, 0x26, 0x75, 0x26, 0x78, 0x06, 0xaf, 0x26, + 0xae, 0x26, 0xad, 0xa5, 0xaf, 0x2a, 0x85, 0x5b, 0xa5, 0xae, 0x2a, 0x85, + 0x5c, 0xa5, 0xad, 0x2a, 0x85, 0x5d, 0xa9, 0x00, 0x2a, 0x85, 0x5e, 0xa5, + 0x77, 0xe5, 0x5b, 0x85, 0x5b, 0xa5, 0x76, 0xe5, 0x5c, 0x85, 0x5c, 0xa5, + 0x75, 0xe5, 0x5d, 0xa8, 0xa5, 0x78, 0xe5, 0x5e, 0x90, 0x0e, 0x85, 0x78, + 0x84, 0x75, 0xa5, 0x5c, 0x85, 0x76, 0xa5, 0x5b, 0x85, 0x77, 0xe6, 0xaf, + 0xca, 0xd0, 0xa2, 0x38, 0xa5, 0xb3, 0xe9, 0x80, 0x6a, 0x69, 0x00, 0x85, + 0xac, 0x4c, 0xf2, 0x6d, 0x20, 0xe5, 0x63, 0x20, 0x76, 0x65, 0x20, 0xe2, + 0x63, 0xa4, 0x95, 0xa5, 0x96, 0x4c, 0x23, 0x68, 0x46, 0x5f, 0xa9, 0x7e, + 0xa0, 0x79, 0x20, 0x3e, 0x70, 0xc6, 0xac, 0x60, 0x46, 0x5f, 0xa9, 0x7e, + 0xa0, 0x79, 0x4c, 0x3e, 0x70, 0x6c, 0xcd, 0x02, 0x6c, 0xcf, 0x02, 0x6c, + 0xd1, 0x02, 0x6c, 0xd3, 0x02, 0x00, 0x00, 0x00, 0x64, 0x76, 0x72, 0x7f, + 0xef, 0xff, 0xe6, 0xc3, 0xd0, 0x02, 0xe6, 0xc4, 0xad, 0xff, 0xff, 0xc9, + 0x3a, 0xb0, 0x0a, 0xc9, 0x20, 0xf0, 0xef, 0x38, 0xe9, 0x30, 0x38, 0xe9, + 0xd0, 0x60, 0x4c, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4c, 0xf3, 0x66, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x03, 0x0d, 0x4d, 0x65, + 0x6d, 0x6f, 0x72, 0x79, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x00, 0x20, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 0x65, 0x65, 0x0d, 0x45, + 0x6e, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x20, 0x42, 0x41, 0x53, 0x49, + 0x43, 0x20, 0x31, 0x2e, 0x31, 0x30, 0x00, 0x02, 0x80, 0x19, 0x56, 0x62, + 0x80, 0x76, 0x22, 0xf3, 0x82, 0x38, 0xaa, 0x40, 0x80, 0x35, 0x04, 0xf3, + 0x81, 0x35, 0x04, 0xf3, 0x80, 0x80, 0x00, 0x00, 0x80, 0x31, 0x72, 0x18, + 0x91, 0x43, 0x4f, 0xf8, 0x94, 0x74, 0x23, 0xf7, 0x94, 0x74, 0x24, 0x00, + 0x81, 0x38, 0xaa, 0x3b, 0x06, 0x74, 0x63, 0x90, 0x8c, 0x77, 0x23, 0x0c, + 0xab, 0x7a, 0x1e, 0x94, 0x00, 0x7c, 0x63, 0x42, 0x80, 0x7e, 0x75, 0xfe, + 0xd0, 0x80, 0x31, 0x72, 0x15, 0x81, 0x00, 0x00, 0x00, 0x81, 0x49, 0x0f, + 0xdb, 0x04, 0x86, 0x1e, 0xd7, 0xfb, 0x87, 0x99, 0x26, 0x65, 0x87, 0x23, + 0x34, 0x58, 0x86, 0xa5, 0x5d, 0xe1, 0x83, 0x49, 0x0f, 0xdb, 0x08, 0x78, + 0x3a, 0xc5, 0x37, 0x7b, 0x83, 0xa2, 0x5c, 0x7c, 0x2e, 0xdd, 0x4d, 0x7d, + 0x99, 0xb0, 0x1e, 0x7d, 0x59, 0xed, 0x24, 0x7e, 0x91, 0x72, 0x00, 0x7e, + 0x4c, 0xb9, 0x73, 0x7f, 0xaa, 0xaa, 0x53, 0x81, 0x00, 0x00, 0x00, 0x81, + 0x80, 0x00, 0x00, 0x90, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x84, 0x20, 0x00, 0x00, 0xfe, 0x79, 0x60, 0x00, 0x27, 0x10, 0xff, 0xfc, + 0x18, 0x00, 0x00, 0x64, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x01, 0x23, 0x5d, + 0x5e, 0x5c, 0x28, 0x62, 0x94, 0x5e, 0x10, 0x61, 0x28, 0x65, 0x2e, 0x61, + 0x80, 0x5f, 0x52, 0x5f, 0xf3, 0x5d, 0xb2, 0x5d, 0xc7, 0x5e, 0x4a, 0x5d, + 0xd6, 0x5d, 0x21, 0x77, 0x2d, 0x77, 0x7f, 0x5e, 0xda, 0x5e, 0x21, 0x5d, + 0xea, 0x5e, 0x88, 0x5d, 0x55, 0x5f, 0x46, 0x6d, 0xb6, 0x78, 0xb9, 0x78, + 0x3f, 0x68, 0xcb, 0x6c, 0xe7, 0x6c, 0x34, 0x6d, 0xbc, 0x5d, 0x25, 0x5e, + 0x21, 0x60, 0x8e, 0x5d, 0xa9, 0x5b, 0xa6, 0x5b, 0x54, 0x5b, 0xa8, 0x77, + 0xf0, 0x5f, 0x0c, 0x6d, 0x3b, 0x75, 0x4f, 0x75, 0xcf, 0x76, 0xd2, 0x76, + 0xbb, 0x70, 0x45, 0x71, 0xd8, 0x70, 0x0a, 0x00, 0x0f, 0x68, 0x30, 0x68, + 0xff, 0x77, 0x5b, 0x74, 0xb9, 0x6e, 0xbf, 0x73, 0x91, 0x74, 0x98, 0x74, + 0xe1, 0x74, 0x0d, 0x75, 0xc1, 0x6c, 0xd5, 0x6c, 0x1f, 0x6c, 0x28, 0x6c, + 0xf1, 0x68, 0x59, 0x6c, 0x37, 0x6c, 0xff, 0x6b, 0xe2, 0x6b, 0x53, 0x6b, + 0xdf, 0x75, 0x8e, 0x75, 0x66, 0x75, 0x3a, 0x77, 0x50, 0x77, 0x9c, 0x78, + 0xa8, 0x78, 0x8c, 0x78, 0x67, 0x6b, 0x6f, 0x6b, 0x9d, 0x6b, 0x79, 0x7e, + 0x6d, 0x79, 0x63, 0x6d, 0x7b, 0xf9, 0x6e, 0x7b, 0xc1, 0x6f, 0x7f, 0x7a, + 0x73, 0x50, 0x9c, 0x64, 0x46, 0x82, 0x64, 0x46, 0x8f, 0x64, 0x56, 0x4b, + 0x65, 0x56, 0x32, 0x65, 0x7d, 0xb3, 0x73, 0x5a, 0xbf, 0x63, 0x64, 0xbd, + 0x64, 0x2a, 0x2b, 0x2d, 0x2f, 0x3c, 0x3d, 0x3e, 0x3f, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x52, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x5e, 0x00, 0xe5, 0x7a, 0xe7, 0x7a, 0xe9, + 0x7a, 0xeb, 0x7a, 0xed, 0x7a, 0xf1, 0x7a, 0xf3, 0x7a, 0xf7, 0x7a, 0xf9, + 0x7a, 0x06, 0x7b, 0x1d, 0x7b, 0x32, 0x7b, 0x4a, 0x7b, 0x54, 0x7b, 0x5d, + 0x7b, 0x6a, 0x7b, 0x6f, 0x7b, 0x80, 0x7b, 0xa1, 0x7b, 0xac, 0x7b, 0xbe, + 0x7b, 0xc6, 0x7b, 0xd9, 0x7b, 0x06, 0x7c, 0x2c, 0x7c, 0x3f, 0x7c, 0x4e, + 0x7c, 0x58, 0x7c, 0x67, 0x7c, 0xb7, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb8, + 0x00, 0x3c, 0xbe, 0xc1, 0x00, 0xc0, 0x00, 0x3e, 0xbd, 0xbf, 0x00, 0x9f, + 0x00, 0x42, 0x53, 0xc4, 0x4e, 0x44, 0xba, 0x53, 0x43, 0xd6, 0x54, 0x4e, + 0xcf, 0x00, 0x49, 0x4e, 0x24, 0xdb, 0x49, 0x54, 0x43, 0x4c, 0x52, 0xa8, + 0x49, 0x54, 0x53, 0x45, 0x54, 0xa7, 0x49, 0x54, 0x54, 0x53, 0x54, 0xdc, + 0x00, 0x41, 0x4c, 0x4c, 0x9c, 0x48, 0x52, 0x24, 0xd9, 0x4c, 0x45, 0x41, + 0x52, 0xa2, 0x4f, 0x4e, 0x54, 0xa0, 0x4f, 0x53, 0xcc, 0x00, 0x41, 0x54, + 0x41, 0x83, 0x45, 0x43, 0x88, 0x45, 0x45, 0x4b, 0xd1, 0x45, 0x46, 0x99, + 0x49, 0x4d, 0x85, 0x4f, 0x4b, 0x45, 0x9b, 0x4f, 0x9d, 0x00, 0x4e, 0x44, + 0x80, 0x4f, 0x52, 0xbb, 0x58, 0x50, 0xcb, 0x00, 0x4e, 0xad, 0x4f, 0x52, + 0x81, 0x52, 0x45, 0xc6, 0x00, 0x45, 0x54, 0xa5, 0x4f, 0x53, 0x55, 0x42, + 0x8d, 0x4f, 0x54, 0x4f, 0x89, 0x00, 0x45, 0x58, 0x24, 0xda, 0x00, 0x46, + 0x8b, 0x4e, 0x43, 0x95, 0x4e, 0x50, 0x55, 0x54, 0x84, 0x4e, 0x54, 0xc3, + 0x52, 0x51, 0xa9, 0x00, 0x43, 0x41, 0x53, 0x45, 0x24, 0xd8, 0x45, 0x46, + 0x54, 0x24, 0xe2, 0x45, 0x4e, 0xd3, 0x45, 0x54, 0x87, 0x49, 0x53, 0x54, + 0xa1, 0x4f, 0x41, 0x44, 0x97, 0x4f, 0x47, 0xca, 0x4f, 0x4f, 0x50, 0x9e, + 0x00, 0x41, 0x58, 0xdd, 0x49, 0x44, 0x24, 0xe4, 0x49, 0x4e, 0xde, 0x00, + 0x45, 0x57, 0xa3, 0x45, 0x58, 0x54, 0x82, 0x4d, 0x49, 0xaa, 0x4f, 0x54, + 0xb0, 0x55, 0x4c, 0x4c, 0x94, 0x00, 0x46, 0x46, 0xb4, 0x4e, 0x93, 0x52, + 0xbc, 0x00, 0x45, 0x45, 0x4b, 0xd0, 0x49, 0xdf, 0x4f, 0x4b, 0x45, 0x9a, + 0x4f, 0x53, 0xc7, 0x52, 0x49, 0x4e, 0x54, 0x9f, 0x00, 0x45, 0x41, 0x44, + 0x86, 0x45, 0x4d, 0x91, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x8c, 0x45, + 0x54, 0x49, 0x52, 0x51, 0x8e, 0x45, 0x54, 0x4e, 0x4d, 0x49, 0x8f, 0x45, + 0x54, 0x55, 0x52, 0x4e, 0x90, 0x49, 0x47, 0x48, 0x54, 0x24, 0xe3, 0x4e, + 0x44, 0xc9, 0x55, 0x4e, 0x8a, 0x00, 0x41, 0x44, 0x44, 0xd2, 0x41, 0x56, + 0x45, 0x98, 0x47, 0x4e, 0xc2, 0x49, 0x4e, 0xcd, 0x50, 0x43, 0x28, 0xae, + 0x51, 0x52, 0xc8, 0x54, 0x45, 0x50, 0xb1, 0x54, 0x4f, 0x50, 0x92, 0x54, + 0x52, 0x24, 0xd4, 0x57, 0x41, 0x50, 0xa6, 0x00, 0x41, 0x42, 0x28, 0xab, + 0x41, 0x4e, 0xce, 0x48, 0x45, 0x4e, 0xaf, 0x4f, 0xac, 0x57, 0x4f, 0x50, + 0x49, 0xe0, 0x00, 0x43, 0x41, 0x53, 0x45, 0x24, 0xd7, 0x4e, 0x54, 0x49, + 0x4c, 0xb2, 0x53, 0x52, 0xc5, 0x00, 0x41, 0x4c, 0xd5, 0x41, 0x52, 0x50, + 0x54, 0x52, 0xe1, 0x00, 0x41, 0x49, 0x54, 0x96, 0x48, 0x49, 0x4c, 0x45, + 0xb3, 0x49, 0x44, 0x54, 0x48, 0xa4, 0x00, 0xb9, 0x00, 0x03, 0x45, 0x4a, + 0x7b, 0x03, 0x46, 0x56, 0x7b, 0x04, 0x4e, 0xaf, 0x7b, 0x04, 0x44, 0x32, + 0x7b, 0x05, 0x49, 0x74, 0x7b, 0x03, 0x44, 0x40, 0x7b, 0x04, 0x52, 0xd9, + 0x7b, 0x03, 0x4c, 0x8e, 0x7b, 0x03, 0x44, 0x36, 0x7b, 0x04, 0x47, 0x65, + 0x7b, 0x03, 0x52, 0x02, 0x7c, 0x02, 0x49, 0x6f, 0x7b, 0x07, 0x52, 0xe0, + 0x7b, 0x05, 0x47, 0x60, 0x7b, 0x06, 0x52, 0xe7, 0x7b, 0x06, 0x52, 0xed, + 0x7b, 0x06, 0x52, 0xf3, 0x7b, 0x03, 0x52, 0xdd, 0x7b, 0x04, 0x53, 0x1f, + 0x7c, 0x02, 0x4f, 0xc1, 0x7b, 0x04, 0x4e, 0xb9, 0x7b, 0x03, 0x49, 0x71, + 0x7b, 0x04, 0x57, 0x58, 0x7c, 0x04, 0x4c, 0x95, 0x7b, 0x04, 0x53, 0x0a, + 0x7c, 0x03, 0x44, 0x3d, 0x7b, 0x04, 0x50, 0xcc, 0x7b, 0x04, 0x44, 0x43, + 0x7b, 0x04, 0x43, 0x1d, 0x7b, 0x02, 0x44, 0x47, 0x7b, 0x04, 0x4c, 0x9c, + 0x7b, 0x05, 0x50, 0xd3, 0x7b, 0x04, 0x43, 0x2a, 0x7b, 0x04, 0x4c, 0x91, + 0x7b, 0x05, 0x43, 0x25, 0x7b, 0x03, 0x4e, 0xac, 0x7b, 0x05, 0x57, 0x61, + 0x7c, 0x03, 0x47, 0x5d, 0x7b, 0x04, 0x53, 0x27, 0x7c, 0x06, 0x42, 0x10, + 0x7b, 0x06, 0x42, 0x0a, 0x7b, 0x03, 0x49, 0x7c, 0x7b, 0x03, 0x4e, 0xb3, + 0x7b, 0x04, 0x54, 0x2c, 0x7c, 0x02, 0x54, 0x37, 0x7c, 0x02, 0x46, 0x54, + 0x7b, 0x04, 0x53, 0x14, 0x7c, 0x04, 0x54, 0x33, 0x7c, 0x03, 0x4e, 0xb6, + 0x7b, 0x04, 0x53, 0x1b, 0x7c, 0x05, 0x55, 0x45, 0x7c, 0x05, 0x57, 0x5c, + 0x7c, 0x03, 0x4f, 0xbe, 0x7b, 0x01, 0x2b, 0x00, 0x00, 0x01, 0x2d, 0x00, + 0x00, 0x01, 0x2a, 0x00, 0x00, 0x01, 0x2f, 0x00, 0x00, 0x01, 0x5e, 0x00, + 0x00, 0x03, 0x41, 0xfc, 0x7a, 0x03, 0x45, 0x4d, 0x7b, 0x02, 0x4f, 0xc3, + 0x7b, 0x02, 0x3e, 0xf3, 0x7a, 0x02, 0x3c, 0xed, 0x7a, 0x01, 0x3e, 0x00, + 0x00, 0x01, 0x3d, 0x00, 0x00, 0x01, 0x3c, 0x00, 0x00, 0x03, 0x53, 0x0e, + 0x7c, 0x03, 0x49, 0x79, 0x7b, 0x03, 0x41, 0xf9, 0x7a, 0x03, 0x55, 0x4a, + 0x7c, 0x03, 0x46, 0x59, 0x7b, 0x03, 0x50, 0xd0, 0x7b, 0x03, 0x53, 0x18, + 0x7c, 0x03, 0x52, 0xff, 0x7b, 0x03, 0x4c, 0x99, 0x7b, 0x03, 0x45, 0x50, + 0x7b, 0x03, 0x43, 0x2e, 0x7b, 0x03, 0x53, 0x11, 0x7c, 0x03, 0x54, 0x30, + 0x7c, 0x03, 0x41, 0x02, 0x7b, 0x04, 0x50, 0xc6, 0x7b, 0x04, 0x44, 0x39, + 0x7b, 0x04, 0x53, 0x06, 0x7c, 0x03, 0x4c, 0x8b, 0x7b, 0x04, 0x53, 0x23, + 0x7c, 0x03, 0x56, 0x4e, 0x7c, 0x03, 0x41, 0xff, 0x7a, 0x06, 0x55, 0x3f, + 0x7c, 0x06, 0x4c, 0x80, 0x7b, 0x04, 0x43, 0x21, 0x7b, 0x04, 0x48, 0x6a, + 0x7b, 0x04, 0x42, 0x06, 0x7b, 0x06, 0x42, 0x16, 0x7b, 0x03, 0x4d, 0xa1, + 0x7b, 0x03, 0x4d, 0xa8, 0x7b, 0x02, 0x50, 0xca, 0x7b, 0x05, 0x54, 0x39, + 0x7c, 0x06, 0x56, 0x51, 0x7c, 0x05, 0x4c, 0x86, 0x7b, 0x06, 0x52, 0xf9, + 0x7b, 0x04, 0x4d, 0xa4, 0x7b, 0x21, 0x7e, 0x32, 0x7e, 0x39, 0x7e, 0x4e, + 0x7e, 0x5a, 0x7e, 0x68, 0x7e, 0x71, 0x7e, 0x7f, 0x7e, 0x93, 0x7e, 0xa0, + 0x7e, 0xb1, 0x7e, 0xc0, 0x7e, 0xcf, 0x7e, 0xdd, 0x7e, 0xed, 0x7e, 0x00, + 0x7f, 0x0e, 0x7f, 0x21, 0x7f, 0x4e, 0x45, 0x58, 0x54, 0x20, 0x77, 0x69, + 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x46, 0x4f, 0x52, 0x00, 0x53, 0x79, + 0x6e, 0x74, 0x61, 0x78, 0x00, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x47, 0x4f, 0x53, 0x55, + 0x42, 0x00, 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x41, 0x54, + 0x41, 0x00, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, + 0x61, 0x6c, 0x6c, 0x00, 0x4f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, + 0x00, 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, + 0x72, 0x79, 0x00, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, + 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x00, + 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x69, 0x6d, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x00, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x20, + 0x62, 0x79, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x00, 0x49, 0x6c, 0x6c, 0x65, + 0x67, 0x61, 0x6c, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x00, 0x54, + 0x79, 0x70, 0x65, 0x20, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x00, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x6f, 0x20, + 0x6c, 0x6f, 0x6e, 0x67, 0x00, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, + 0x74, 0x6f, 0x6f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x00, + 0x43, 0x61, 0x6e, 0x27, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, + 0x75, 0x65, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x4c, 0x4f, 0x4f, + 0x50, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x44, 0x4f, + 0x00, 0x0d, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x00, 0x20, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x00, 0x20, 0x69, 0x6e, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x00, + 0x0d, 0x52, 0x65, 0x61, 0x64, 0x79, 0x0d, 0x00, 0x20, 0x45, 0x78, 0x74, + 0x72, 0x61, 0x20, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x0d, 0x00, + 0x20, 0x52, 0x65, 0x64, 0x6f, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x0d, 0x00, 0xad, 0x11, 0xd0, 0x10, 0x07, 0xad, + 0x10, 0xd0, 0x29, 0x7f, 0x38, 0x60, 0xa9, 0x00, 0x18, 0x60, 0x46, 0x4c, + 0x4f, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x20, 0x50, 0x4f, 0x49, 0x4e, 0x54, + 0x20, 0x42, 0x41, 0x53, 0x49, 0x43, 0x20, 0x46, 0x4f, 0x52, 0x20, 0x54, + 0x48, 0x45, 0x20, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x20, 0x49, + 0x20, 0x62, 0x79, 0x20, 0x4c, 0x61, 0x72, 0x72, 0x79, 0x20, 0x4e, 0x65, + 0x6c, 0x73, 0x6f, 0x6e, 0x2e, 0x20, 0x44, 0x65, 0x72, 0x69, 0x76, 0x65, + 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x45, 0x68, 0x42, 0x41, 0x53, + 0x49, 0x43, 0x2e, + ] as const; + + start() { + return 0x58; + } + end() { + return 0x60; + } + read(page: byte, off: byte) { + return this.rom[((page - 0xe0) << 8) | off]; + } + write() {} + getState() { + return {}; + } + setState() {} +} diff --git a/js/roms/krusader.js b/js/roms/krusader.js deleted file mode 100644 index 4ebd1ab..0000000 --- a/js/roms/krusader.js +++ /dev/null @@ -1,1044 +0,0 @@ -export default function Krusader() { - var rom = [ - 0x4c,0xb0,0xe2,0xad,0x11,0xd0,0x10,0xfb, - 0xad,0x10,0xd0,0x60,0x8a,0x29,0x20,0xf0, - 0x23,0xa9,0xa0,0x85,0xe4,0x4c,0xc9,0xe3, - 0xa9,0x20,0xc5,0x24,0xb0,0x0c,0xa9,0x8d, - 0xa0,0x07,0x20,0xc9,0xe3,0xa9,0xa0,0x88, - 0xd0,0xf8,0xa0,0x00,0xb1,0xe2,0xe6,0xe2, - 0xd0,0x02,0xe6,0xe3,0x60,0x20,0x15,0xe7, - 0x20,0x76,0xe5,0xa5,0xe2,0xc5,0xe6,0xa5, - 0xe3,0xe5,0xe7,0xb0,0xef,0x20,0x6d,0xe0, - 0x4c,0x3b,0xe0,0xa5,0xca,0x85,0xe2,0xa5, - 0xcb,0x85,0xe3,0xa5,0x4c,0x85,0xe6,0xa5, - 0x4d,0x85,0xe7,0xd0,0xde,0x20,0x15,0xe7, - 0x20,0x6d,0xe5,0xa5,0xe4,0x85,0xe2,0xa5, - 0xe5,0x85,0xe3,0xb0,0xc7,0x86,0xd8,0xa9, - 0xa0,0x85,0xfa,0x20,0x2a,0xe0,0x98,0x85, - 0xe4,0x20,0x2a,0xe0,0xaa,0x20,0x2a,0xe0, - 0x20,0x1b,0xe5,0x20,0x18,0xe0,0x84,0xfa, - 0xaa,0x10,0x18,0x0a,0x10,0xe9,0xa5,0xe4, - 0xd0,0x03,0x20,0x11,0xe0,0x8a,0x20,0xc9, - 0xe3,0xa9,0x25,0x20,0x1a,0xe0,0xaa,0x30, - 0xf5,0x85,0xe4,0xc9,0x01,0xd0,0x05,0xa6, - 0xd8,0x4c,0xcd,0xe3,0x48,0x84,0xce,0xa2, - 0xed,0x86,0xcf,0xc9,0x51,0x90,0x04,0xc6, - 0xcf,0xe9,0x50,0x48,0xb1,0xce,0xaa,0x88, - 0xb1,0xce,0x10,0xfa,0xe0,0xc0,0xb0,0x04, - 0xe0,0x00,0x30,0xf2,0xaa,0x68,0xe9,0x01, - 0xd0,0xe9,0x24,0xe4,0x30,0x03,0x20,0xf8, - 0xef,0xb1,0xce,0x10,0x10,0xaa,0x29,0x3f, - 0x85,0xe4,0x18,0x69,0xa0,0x20,0xc9,0xe3, - 0x88,0xe0,0xc0,0x90,0xec,0x20,0x0c,0xe0, - 0x68,0xc9,0x5d,0xf0,0xa4,0xc9,0x28,0xd0, - 0x8a,0xf0,0x9e,0x20,0x18,0xe1,0x95,0x50, - 0xd5,0x78,0x90,0x11,0xa0,0x2b,0x4c,0xe0, - 0xe3,0x20,0x34,0xee,0xd5,0x50,0x90,0xf4, - 0x20,0xe4,0xef,0x95,0x78,0x4c,0x23,0xe8, - 0x20,0x34,0xee,0xf0,0xe7,0x38,0xe9,0x01, - 0x60,0x20,0x18,0xe1,0x95,0x50,0x18,0xf5, - 0x78,0x4c,0x02,0xe1,0xa0,0x14,0xd0,0xd6, - 0x20,0x18,0xe1,0xe8,0xb5,0x50,0x85,0xda, - 0x65,0xce,0x48,0xa8,0xb5,0x78,0x85,0xdb, - 0x65,0xcf,0x48,0xc4,0xca,0xe5,0xcb,0xb0, - 0xe3,0xa5,0xda,0x69,0xfe,0x85,0xda,0xa9, - 0xff,0xa8,0x65,0xdb,0x85,0xdb,0xc8,0xb1, - 0xda,0xd9,0xcc,0x00,0xd0,0x0f,0x98,0xf0, - 0xf5,0x68,0x91,0xda,0x99,0xcc,0x00,0x88, - 0x10,0xf7,0xe8,0x60,0xea,0xa0,0x80,0xd0, - 0x95,0xa9,0x00,0x20,0x0a,0xe7,0xa0,0x02, - 0x94,0x78,0x20,0x0a,0xe7,0xa9,0xbf,0x20, - 0xc9,0xe3,0xa0,0x00,0x20,0x9e,0xe2,0x94, - 0x78,0xea,0xea,0xea,0xb5,0x51,0x85,0xce, - 0xb5,0x79,0x85,0xcf,0xe8,0xe8,0x20,0xbc, - 0xe1,0xb5,0x4e,0xd5,0x76,0xb0,0x15,0xf6, - 0x4e,0xa8,0xb1,0xce,0xb4,0x50,0xc4,0xe4, - 0x90,0x04,0xa0,0x83,0xd0,0xc1,0x91,0xda, - 0xf6,0x50,0x90,0xe5,0xb4,0x50,0x8a,0x91, - 0xda,0xe8,0xe8,0x60,0xb5,0x51,0x85,0xda, - 0x38,0xe9,0x02,0x85,0xe4,0xb5,0x79,0x85, - 0xdb,0xe9,0x00,0x85,0xe5,0xa0,0x00,0xb1, - 0xe4,0x18,0xe5,0xda,0x85,0xe4,0x60,0xb5, - 0x53,0x85,0xce,0xb5,0x7b,0x85,0xcf,0xb5, - 0x51,0x85,0xda,0xb5,0x79,0x85,0xdb,0xe8, - 0xe8,0xe8,0xa0,0x00,0x94,0x78,0x94,0xa0, - 0xc8,0x94,0x50,0xb5,0x4d,0xd5,0x75,0x08, - 0x48,0xb5,0x4f,0xd5,0x77,0x90,0x07,0x68, - 0x28,0xb0,0x02,0x56,0x50,0x60,0xa8,0xb1, - 0xce,0x85,0xe4,0x68,0xa8,0x28,0xb0,0xf3, - 0xb1,0xda,0xc5,0xe4,0xd0,0xed,0xf6,0x4f, - 0xf6,0x4d,0xb0,0xd7,0x20,0xd7,0xe1,0x4c, - 0x36,0xe7,0x20,0x54,0xe2,0x06,0xce,0x26, - 0xcf,0x90,0x0d,0x18,0xa5,0xe6,0x65,0xda, - 0x85,0xe6,0xa5,0xe7,0x65,0xdb,0x85,0xe7, - 0x88,0xf0,0x09,0x06,0xe6,0x26,0xe7,0x10, - 0xe4,0x4c,0x7e,0xe7,0xa5,0xe6,0x20,0x08, - 0xe7,0xa5,0xe7,0x95,0xa0,0x06,0xe5,0x90, - 0x28,0x4c,0x6f,0xe7,0xa9,0x55,0x85,0xe5, - 0x20,0x5b,0xe2,0xa5,0xce,0x85,0xda,0xa5, - 0xcf,0x85,0xdb,0x20,0x15,0xe7,0x84,0xe6, - 0x84,0xe7,0xa5,0xcf,0x10,0x09,0xca,0x06, - 0xe5,0x20,0x6f,0xe7,0x20,0x15,0xe7,0xa0, - 0x10,0x60,0x20,0x6c,0xee,0xf0,0xc5,0xff, - 0xc9,0x84,0xd0,0x02,0x46,0xf8,0xc9,0xdf, - 0xf0,0x11,0xc9,0x9b,0xf0,0x06,0x99,0x00, - 0x02,0xc8,0x10,0x0a,0xa0,0x8b,0x20,0xc4, - 0xe3,0xa0,0x01,0x88,0x30,0xf6,0x20,0x03, - 0xe0,0xea,0xea,0x20,0xc9,0xe3,0xc9,0x8d, - 0xd0,0xd6,0xa9,0xdf,0x99,0x00,0x02,0x60, - 0x20,0xd3,0xef,0x20,0xcd,0xe3,0x46,0xd9, - 0xa9,0xbe,0x20,0xc9,0xe3,0xa0,0x00,0x84, - 0xfa,0x24,0xf8,0x10,0x0c,0xa6,0xf6,0xa5, - 0xf7,0x20,0x1b,0xe5,0xa9,0xa0,0x20,0xc9, - 0xe3,0xa2,0xff,0x9a,0x20,0x9e,0xe2,0x84, - 0xf1,0x8a,0x85,0xc8,0xa2,0x20,0x20,0x91, - 0xe4,0xa5,0xc8,0x69,0x00,0x85,0xe0,0xa9, - 0x00,0xaa,0x69,0x02,0x85,0xe1,0xa1,0xe0, - 0x29,0xf0,0xc9,0xb0,0xf0,0x03,0x4c,0x83, - 0xe8,0xa0,0x02,0xb1,0xe0,0x99,0xcd,0x00, - 0x88,0xd0,0xf8,0x20,0x8a,0xe3,0xa5,0xf1, - 0xe5,0xc8,0xc9,0x04,0xf0,0xa8,0x91,0xe0, - 0xa5,0xca,0xf1,0xe0,0x85,0xe4,0xa5,0xcb, - 0xe9,0x00,0x85,0xe5,0xa5,0xe4,0xc5,0xcc, - 0xa5,0xe5,0xe5,0xcd,0x90,0x45,0xa5,0xca, - 0xf1,0xe0,0x85,0xe6,0xa5,0xcb,0xe9,0x00, - 0x85,0xe7,0xb1,0xca,0x91,0xe6,0xe6,0xca, - 0xd0,0x02,0xe6,0xcb,0xa5,0xe2,0xc5,0xca, - 0xa5,0xe3,0xe5,0xcb,0xb0,0xe0,0xb5,0xe4, - 0x95,0xca,0xca,0x10,0xf9,0xb1,0xe0,0xa8, - 0x88,0xb1,0xe0,0x91,0xe6,0x98,0xd0,0xf8, - 0x24,0xf8,0x10,0x09,0xb5,0xf7,0x75,0xf5, - 0x95,0xf7,0xe8,0xf0,0xf7,0x10,0x7e,0x00, - 0x00,0x00,0x00,0xa0,0x14,0xd0,0x71,0x20, - 0x15,0xe7,0xa5,0xe2,0x85,0xe6,0xa5,0xe3, - 0x85,0xe7,0x20,0x75,0xe5,0xa5,0xe2,0x85, - 0xe4,0xa5,0xe3,0x85,0xe5,0xd0,0x0e,0x20, - 0x15,0xe7,0x20,0x6d,0xe5,0xa5,0xe6,0x85, - 0xe2,0xa5,0xe7,0x85,0xe3,0xa0,0x00,0xa5, - 0xca,0xc5,0xe4,0xa5,0xcb,0xe5,0xe5,0xb0, - 0x16,0xa5,0xe4,0xd0,0x02,0xc6,0xe5,0xc6, - 0xe4,0xa5,0xe6,0xd0,0x02,0xc6,0xe7,0xc6, - 0xe6,0xb1,0xe4,0x91,0xe6,0x90,0xe0,0xa5, - 0xe6,0x85,0xca,0xa5,0xe7,0x85,0xcb,0x60, - 0x20,0xc9,0xe3,0xc8,0xb9,0x00,0xeb,0x30, - 0xf7,0xc9,0x8d,0xd0,0x06,0xa9,0x00,0x85, - 0x24,0xa9,0x8d,0xe6,0x24,0x2c,0x12,0xd0, - 0x30,0xfb,0x8d,0x12,0xd0,0x60,0xa0,0x06, - 0x20,0xd3,0xee,0x24,0xd9,0x30,0x03,0x4c, - 0xb6,0xe2,0x4c,0x9a,0xeb,0x2a,0x69,0xa0, - 0xdd,0x00,0x02,0xd0,0x53,0xb1,0xfe,0x0a, - 0x30,0x06,0x88,0xb1,0xfe,0x30,0x29,0xc8, - 0x86,0xc8,0x98,0x48,0xa2,0x00,0xa1,0xfe, - 0xaa,0x4a,0x49,0x48,0x11,0xfe,0xc9,0xc0, - 0x90,0x01,0xe8,0xc8,0xd0,0xf3,0x68,0xa8, - 0x8a,0x4c,0xc0,0xe4,0xe6,0xf1,0xa6,0xf1, - 0xf0,0xbc,0x9d,0x00,0x02,0x60,0xa6,0xc8, - 0xa9,0xa0,0xe8,0xdd,0x00,0x02,0xb0,0xfa, - 0xb1,0xfe,0x29,0x3f,0x4a,0xd0,0xb6,0xbd, - 0x00,0x02,0xb0,0x06,0x69,0x3f,0xc9,0x1a, - 0x90,0x6f,0x69,0x4f,0xc9,0x0a,0x90,0x69, - 0xa6,0xfd,0xc8,0xb1,0xfe,0x29,0xe0,0xc9, - 0x20,0xf0,0x7a,0xb5,0xa8,0x85,0xc8,0xb5, - 0xd1,0x85,0xf1,0x88,0xb1,0xfe,0x0a,0x10, - 0xfa,0x88,0xb0,0x38,0x0a,0x30,0x35,0xb4, - 0x58,0x84,0xff,0xb4,0x80,0xe8,0x10,0xda, - 0xf0,0xb3,0xc9,0x7e,0xb0,0x22,0xca,0x10, - 0x04,0xa0,0x06,0x10,0x29,0x94,0x80,0xa4, - 0xff,0x94,0x58,0xa4,0xc8,0x94,0xa8,0xa4, - 0xf1,0x94,0xd1,0x29,0x1f,0xa8,0xb9,0x20, - 0xec,0x0a,0xa8,0xa9,0x76,0x2a,0x85,0xff, - 0xd0,0x01,0xc8,0xc8,0x86,0xfd,0xb1,0xfe, - 0x30,0x84,0xd0,0x05,0xa0,0x0e,0x4c,0xe0, - 0xe3,0xc9,0x03,0xb0,0xc3,0x4a,0xa6,0xc8, - 0xe8,0xbd,0x00,0x02,0x90,0x04,0xc9,0xa2, - 0xf0,0x0a,0xc9,0xdf,0xf0,0x06,0x86,0xc8, - 0x20,0x1c,0xe4,0xc8,0x88,0xa6,0xfd,0xb1, - 0xfe,0x88,0x0a,0x10,0xcf,0xb4,0x58,0x84, - 0xff,0xb4,0x80,0xe8,0xb1,0xfe,0x29,0x9f, - 0xd0,0xed,0x85,0xf2,0x85,0xf3,0x98,0x48, - 0x86,0xfd,0xb4,0xd0,0x84,0xc9,0x18,0xa9, - 0x0a,0x85,0xf9,0xa2,0x00,0xc8,0xb9,0x00, - 0x02,0x29,0x0f,0x65,0xf2,0x48,0x8a,0x65, - 0xf3,0x30,0x1c,0xaa,0x68,0xc6,0xf9,0xd0, - 0xf2,0x85,0xf2,0x86,0xf3,0xc4,0xf1,0xd0, - 0xde,0xa4,0xc9,0xc8,0x84,0xf1,0x20,0x1c, - 0xe4,0x68,0xa8,0xa5,0xf3,0xb0,0xa9,0xa0, - 0x00,0x10,0x8b,0x85,0xf3,0x86,0xf2,0xa2, - 0x04,0x86,0xc9,0xa9,0xb0,0x85,0xf9,0xa5, - 0xf2,0xdd,0x63,0xe5,0xa5,0xf3,0xfd,0x68, - 0xe5,0x90,0x0d,0x85,0xf3,0xa5,0xf2,0xfd, - 0x63,0xe5,0x85,0xf2,0xe6,0xf9,0xd0,0xe7, - 0xa5,0xf9,0xe8,0xca,0xf0,0x0e,0xc9,0xb0, - 0xf0,0x02,0x85,0xc9,0x24,0xc9,0x30,0x04, - 0xa5,0xfa,0xf0,0x0b,0x20,0xc9,0xe3,0x24, - 0xf8,0x10,0x04,0x99,0x00,0x02,0xc8,0xca, - 0x10,0xc1,0x60,0x01,0x0a,0x64,0xe8,0x10, - 0x00,0x00,0x00,0x03,0x27,0xa5,0xca,0x85, - 0xe6,0xa5,0xcb,0x85,0xe7,0xe8,0xa5,0xe7, - 0x85,0xe5,0xa5,0xe6,0x85,0xe4,0xc5,0x4c, - 0xa5,0xe5,0xe5,0x4d,0xb0,0x26,0xa0,0x01, - 0xb1,0xe4,0xe5,0xce,0xc8,0xb1,0xe4,0xe5, - 0xcf,0xb0,0x19,0xa0,0x00,0xa5,0xe6,0x71, - 0xe4,0x85,0xe6,0x90,0x03,0xe6,0xe7,0x18, - 0xc8,0xa5,0xce,0xf1,0xe4,0xc8,0xa5,0xcf, - 0xf1,0xe4,0xb0,0xca,0x60,0x46,0xf8,0xa5, - 0x4c,0x85,0xca,0xa5,0x4d,0x85,0xcb,0xa5, - 0x4a,0x85,0xcc,0xa5,0x4b,0x85,0xcd,0xa9, - 0x00,0x85,0xfb,0x85,0xfc,0x85,0xfe,0xa9, - 0x00,0x85,0x1d,0x60,0xa5,0xd0,0x69,0x05, - 0x85,0xd2,0xa5,0xd1,0x69,0x00,0x85,0xd3, - 0xa5,0xd2,0xc5,0xca,0xa5,0xd3,0xe5,0xcb, - 0x90,0x03,0x4c,0x6b,0xe3,0xa5,0xce,0x91, - 0xd0,0xa5,0xcf,0xc8,0x91,0xd0,0xa5,0xd2, - 0xc8,0x91,0xd0,0xa5,0xd3,0xc8,0x91,0xd0, - 0xa9,0x00,0xc8,0x91,0xd0,0xc8,0x91,0xd0, - 0xa5,0xd2,0x85,0xcc,0xa5,0xd3,0x85,0xcd, - 0xa5,0xd0,0x90,0x43,0x85,0xce,0x84,0xcf, - 0x20,0xff,0xe6,0x30,0x0e,0xc9,0x40,0xf0, - 0x0a,0x4c,0x28,0xe6,0x06,0xc9,0x49,0xd0, - 0x07,0xa9,0x49,0x85,0xcf,0x20,0xff,0xe6, - 0xa5,0x4b,0x85,0xd1,0xa5,0x4a,0x85,0xd0, - 0xc5,0xcc,0xa5,0xd1,0xe5,0xcd,0xb0,0x94, - 0xb1,0xd0,0xc8,0xc5,0xce,0xd0,0x06,0xb1, - 0xd0,0xc5,0xcf,0xf0,0x0e,0xc8,0xb1,0xd0, - 0x48,0xc8,0xb1,0xd0,0x85,0xd1,0x68,0xa0, - 0x00,0xf0,0xdb,0xa5,0xd0,0x69,0x03,0x20, - 0x0a,0xe7,0xa5,0xd1,0x69,0x00,0x95,0x78, - 0xa5,0xcf,0xc9,0x40,0xd0,0x1c,0x88,0x98, - 0x20,0x0a,0xe7,0x88,0x94,0x78,0xa0,0x03, - 0xf6,0x78,0xc8,0xb1,0xd0,0x30,0xf9,0x10, - 0x09,0xa9,0x00,0x85,0xd4,0x85,0xd5,0xa2, - 0x20,0x48,0xa0,0x00,0xb1,0xe0,0x10,0x18, - 0x0a,0x30,0x81,0x20,0xff,0xe6,0x20,0x08, - 0xe7,0x20,0xff,0xe6,0x95,0xa0,0x24,0xd4, - 0x10,0x01,0xca,0x20,0xff,0xe6,0xb0,0xe6, - 0xc9,0x28,0xd0,0x1f,0xa5,0xe0,0x20,0x0a, - 0xe7,0xa5,0xe1,0x95,0x78,0x24,0xd4,0x30, - 0x0b,0xa9,0x01,0x20,0x0a,0xe7,0xa9,0x00, - 0x95,0x78,0xf6,0x78,0x20,0xff,0xe6,0x30, - 0xf9,0xb0,0xd3,0x24,0xd4,0x10,0x06,0xc9, - 0x04,0xb0,0xd0,0x46,0xd4,0xa8,0x85,0xd6, - 0xb9,0x98,0xe9,0x29,0x55,0x0a,0x85,0xd7, - 0x68,0xa8,0xb9,0x98,0xe9,0x29,0xaa,0xc5, - 0xd7,0xb0,0x09,0x98,0x48,0x20,0xff,0xe6, - 0xa5,0xd6,0x90,0x95,0xb9,0x10,0xea,0x85, - 0xce,0xb9,0x88,0xea,0x85,0xcf,0x20,0xfc, - 0xe6,0x4c,0xd8,0xe6,0x6c,0xce,0x00,0xe6, - 0xe0,0xd0,0x02,0xe6,0xe1,0xb1,0xe0,0x60, - 0x94,0x77,0xca,0x30,0x03,0x95,0x50,0x60, - 0xa0,0x66,0x4c,0xe0,0xe3,0xa0,0x00,0xb5, - 0x50,0x85,0xce,0xb5,0xa0,0x85,0xcf,0xb5, - 0x78,0xf0,0x0e,0x85,0xcf,0xb1,0xce,0x48, - 0xc8,0xb1,0xce,0x85,0xcf,0x68,0x85,0xce, - 0x88,0xe8,0x60,0x20,0x4a,0xe7,0x20,0x15, - 0xe7,0x98,0x20,0x08,0xe7,0x95,0xa0,0xc5, - 0xce,0xd0,0x06,0xc5,0xcf,0xd0,0x02,0xf6, - 0x50,0x60,0x20,0x82,0xe7,0x20,0x59,0xe7, - 0x20,0x15,0xe7,0x24,0xcf,0x30,0x1b,0xca, - 0x60,0x20,0x15,0xe7,0xa5,0xcf,0xd0,0x04, - 0xa5,0xce,0xf0,0xf3,0xa9,0xff,0x20,0x08, - 0xe7,0x95,0xa0,0x24,0xcf,0x30,0xe9,0x20, - 0x15,0xe7,0x98,0x38,0xe5,0xce,0x20,0x08, - 0xe7,0x98,0xe5,0xcf,0x50,0x23,0xa0,0x00, - 0x10,0x90,0x20,0x6f,0xe7,0x20,0x15,0xe7, - 0xa5,0xce,0x85,0xda,0xa5,0xcf,0x85,0xdb, - 0x20,0x15,0xe7,0x18,0xa5,0xce,0x65,0xda, - 0x20,0x08,0xe7,0xa5,0xcf,0x65,0xdb,0x70, - 0xdd,0x95,0xa0,0x60,0x20,0x15,0xe7,0xa4, - 0xce,0xf0,0x05,0x88,0xa5,0xcf,0xf0,0x0c, - 0x60,0xa5,0x24,0x09,0x07,0xa8,0xc8,0xa9, - 0xa0,0x20,0xc9,0xe3,0xc4,0x24,0xb0,0xf7, - 0x60,0x20,0xb1,0xe7,0x20,0x15,0xe7,0xa5, - 0xcf,0x10,0x0a,0xa9,0xad,0x20,0xc9,0xe3, - 0x20,0x72,0xe7,0x50,0xef,0x88,0x84,0xd5, - 0x86,0xcf,0xa6,0xce,0x20,0x1b,0xe5,0xa6, - 0xcf,0x60,0x20,0x15,0xe7,0xa5,0xce,0x85, - 0xf6,0xa5,0xcf,0x85,0xf7,0x88,0x84,0xf8, - 0xc8,0xa9,0x0a,0x85,0xf4,0x84,0xf5,0x60, - 0x20,0x15,0xe7,0xa5,0xce,0xa4,0xcf,0x10, - 0xf2,0x20,0x15,0xe7,0xb5,0x50,0x85,0xda, - 0xb5,0x78,0x85,0xdb,0xa5,0xce,0x91,0xda, - 0xc8,0xa5,0xcf,0x91,0xda,0xe8,0x60,0x68, - 0x68,0x24,0xd5,0x10,0x05,0x20,0xcd,0xe3, - 0x46,0xd5,0x60,0xa0,0xff,0x84,0xd7,0x60, - 0x20,0xcd,0xef,0xf0,0x07,0xa9,0x25,0x85, - 0xd6,0x88,0x84,0xd4,0xe8,0x60,0xa5,0xca, - 0xa4,0xcb,0xd0,0x5a,0xa0,0x41,0xa5,0xfc, - 0xc9,0x08,0xb0,0x5e,0xa8,0xe6,0xfc,0xa5, - 0xe0,0x99,0x00,0x01,0xa5,0xe1,0x99,0x08, - 0x01,0xa5,0xdc,0x99,0x10,0x01,0xa5,0xdd, - 0x99,0x18,0x01,0x20,0x15,0xe7,0x20,0x6d, - 0xe5,0x90,0x04,0xa0,0x37,0xd0,0x3b,0xa5, - 0xe4,0xa4,0xe5,0x85,0xdc,0x84,0xdd,0x2c, - 0x11,0xd0,0x30,0x4f,0x18,0x69,0x03,0x90, - 0x01,0xc8,0xa2,0xff,0x86,0xd9,0x9a,0x85, - 0xe0,0x84,0xe1,0x20,0x79,0xe6,0x24,0xd9, - 0x10,0x49,0x18,0xa0,0x00,0xa5,0xdc,0x71, - 0xdc,0xa4,0xdd,0x90,0x01,0xc8,0xc5,0x4c, - 0xd0,0xd1,0xc4,0x4d,0xd0,0xcd,0xa0,0x34, - 0x46,0xd9,0x4c,0xe0,0xe3,0xa0,0x4a,0xa5, - 0xfc,0xf0,0xf7,0xc6,0xfc,0xa8,0xb9,0x0f, - 0x01,0x85,0xdc,0xb9,0x17,0x01,0x85,0xdd, - 0xbe,0xff,0x00,0xb9,0x07,0x01,0xa8,0x8a, - 0x4c,0x7a,0xe8,0xa0,0x63,0x20,0xc4,0xe3, - 0xa0,0x01,0xb1,0xdc,0xaa,0xc8,0xb1,0xdc, - 0x20,0x1b,0xe5,0x4c,0xb3,0xe2,0xc6,0xfb, - 0xa0,0x5b,0xa5,0xfb,0xf0,0xc4,0xa8,0xb5, - 0x50,0xd9,0x1f,0x01,0xd0,0xf0,0xb5,0x78, - 0xd9,0x27,0x01,0xd0,0xe9,0xb9,0x2f,0x01, - 0x85,0xda,0xb9,0x37,0x01,0x85,0xdb,0x20, - 0x15,0xe7,0xca,0x20,0x93,0xe7,0x20,0x01, - 0xe8,0xca,0xa4,0xfb,0xb9,0x67,0x01,0x95, - 0x9f,0xb9,0x5f,0x01,0xa0,0x00,0x20,0x08, - 0xe7,0x20,0x82,0xe7,0x20,0x59,0xe7,0x20, - 0x15,0xe7,0xa4,0xfb,0xa5,0xce,0xf0,0x05, - 0x59,0x37,0x01,0x10,0x12,0xb9,0x3f,0x01, - 0x85,0xdc,0xb9,0x47,0x01,0x85,0xdd,0xbe, - 0x4f,0x01,0xb9,0x57,0x01,0xd0,0x87,0xc6, - 0xfb,0x60,0xa0,0x54,0xa5,0xfb,0xc9,0x08, - 0xf0,0x9a,0xe6,0xfb,0xa8,0xb5,0x50,0x99, - 0x20,0x01,0xb5,0x78,0x99,0x28,0x01,0x60, - 0x20,0x15,0xe7,0xa4,0xfb,0xa5,0xce,0x99, - 0x5f,0x01,0xa5,0xcf,0x99,0x67,0x01,0xa9, - 0x01,0x99,0x2f,0x01,0xa9,0x00,0x99,0x37, - 0x01,0xa5,0xdc,0x99,0x3f,0x01,0xa5,0xdd, - 0x99,0x47,0x01,0xa5,0xe0,0x99,0x4f,0x01, - 0xa5,0xe1,0x99,0x57,0x01,0x60,0x20,0x15, - 0xe7,0xa4,0xfb,0xa5,0xce,0x99,0x2f,0x01, - 0xa5,0xcf,0x4c,0x66,0xe9,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xab,0x03,0x03,0x03,0x03, - 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, - 0x03,0x03,0x3f,0x3f,0xc0,0xc0,0x3c,0x3c, - 0x3c,0x3c,0x3c,0x3c,0x3c,0x30,0x0f,0xc0, - 0xcc,0xff,0x55,0x00,0xab,0xab,0x03,0x03, - 0xff,0xff,0x55,0xff,0xff,0x55,0xcf,0xcf, - 0xcf,0xcf,0xcf,0xff,0x55,0xc3,0xc3,0xc3, - 0x55,0xf0,0xf0,0xcf,0x56,0x56,0x56,0x55, - 0xff,0xff,0x55,0x03,0x03,0x03,0x03,0x03, - 0x03,0x03,0xff,0xff,0xff,0x03,0x03,0x03, - 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, - 0x03,0x03,0x03,0x03,0x03,0x00,0xab,0x03, - 0x57,0x03,0x03,0x03,0x03,0x07,0x03,0x03, - 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, - 0x03,0x03,0xaa,0xff,0xff,0xff,0xff,0xff, - 0x17,0xff,0xff,0x19,0x5d,0x35,0x4b,0xf2, - 0xec,0x87,0x6f,0xad,0xb7,0xe2,0xf8,0x54, - 0x80,0x96,0x85,0x82,0x22,0x10,0x33,0x4a, - 0x13,0x06,0x0b,0x4a,0x01,0x40,0x47,0x7a, - 0x00,0xff,0x23,0x09,0x5b,0x16,0xb6,0xcb, - 0xff,0xff,0xfb,0xff,0xff,0x24,0xf6,0x4e, - 0x59,0x50,0x00,0xff,0x23,0xa3,0x6f,0x36, - 0x23,0xd7,0x1c,0x22,0xc2,0xae,0xba,0x23, - 0xff,0xff,0x21,0x30,0x1e,0x03,0xc4,0x20, - 0x00,0xc1,0xff,0xff,0xff,0xa0,0x30,0x1e, - 0xa4,0xd3,0xb6,0xbc,0xaa,0x3a,0x01,0x50, - 0x7e,0xd8,0xd8,0xa5,0x3c,0xff,0x16,0x5b, - 0x28,0x03,0xc4,0x1d,0x00,0x0c,0x4e,0x00, - 0x3e,0x00,0xa6,0xb0,0x00,0xbc,0xc6,0x57, - 0x8c,0x01,0x27,0xff,0xff,0xff,0xff,0xff, - 0xe8,0xff,0xff,0xe8,0xe0,0xe0,0xe0,0xef, - 0xef,0xe3,0xe3,0xe5,0xe5,0xe7,0xe7,0xee, - 0xef,0xef,0xe7,0xe7,0xe2,0xef,0xe7,0xe7, - 0xec,0xec,0xec,0xe7,0xec,0xec,0xec,0xe2, - 0x00,0xff,0xe8,0xe1,0xe8,0xe8,0xef,0xeb, - 0xff,0xff,0xe0,0xff,0xff,0xef,0xee,0xef, - 0xe7,0xe7,0x00,0xff,0xe8,0xe7,0xe7,0xe7, - 0xe8,0xe1,0xe2,0xee,0xee,0xee,0xee,0xe8, - 0xff,0xff,0xe1,0xe1,0xef,0xee,0xe7,0xe8, - 0xee,0xe7,0xff,0xff,0xff,0xee,0xe1,0xef, - 0xe7,0xe8,0xef,0xef,0xeb,0xe9,0xe8,0xe9, - 0xe9,0xe8,0xe8,0xe8,0xe8,0xff,0xe8,0xe8, - 0xe8,0xee,0xe7,0xe8,0xef,0xef,0xee,0xef, - 0xee,0xef,0xee,0xee,0xef,0xee,0xee,0xee, - 0xe1,0xe8,0xe8,0xff,0xff,0xff,0xff,0xff, - 0xbe,0xb3,0xb2,0xb7,0xb6,0x37,0xd4,0xcf, - 0xcf,0xa0,0xcc,0xcf,0xce,0x47,0xd3,0xd9, - 0xce,0xd4,0xc1,0x58,0xcd,0xc5,0xcd,0xa0, - 0xc6,0xd5,0xcc,0x4c,0xd4,0xcf,0xcf,0xa0, - 0xcd,0xc1,0xce,0xd9,0xa0,0xd0,0xc1,0xd2, - 0xc5,0xce,0x53,0xd3,0xd4,0xd2,0xc9,0xce, - 0x47,0xce,0xcf,0xa0,0xc5,0xce,0x44,0xc2, - 0xc1,0xc4,0xa0,0xc2,0xd2,0xc1,0xce,0xc3, - 0x48,0xbe,0xb8,0xa0,0xc7,0xcf,0xd3,0xd5, - 0xc2,0x53,0xc2,0xc1,0xc4,0xa0,0xd2,0xc5, - 0xd4,0xd5,0xd2,0x4e,0xbe,0xb8,0xa0,0xc6, - 0xcf,0xd2,0x53,0xc2,0xc1,0xc4,0xa0,0xce, - 0xc5,0xd8,0x54,0xd3,0xd4,0xcf,0xd0,0xd0, - 0xc5,0xc4,0xa0,0xc1,0xd4,0x20,0xaa,0xaa, - 0xaa,0x20,0xa0,0xc5,0xd2,0xd2,0x0d,0xbe, - 0xb2,0xb5,0x35,0xd2,0xc1,0xce,0xc7,0x45, - 0xc4,0xc9,0x4d,0xd3,0xd4,0xd2,0xa0,0xcf, - 0xd6,0xc6,0x4c,0xdc,0x0d,0xd2,0xc5,0xd4, - 0xd9,0xd0,0xc5,0xa0,0xcc,0xc9,0xce,0xc5, - 0x8d,0x3f,0x46,0xd9,0x90,0x03,0x4c,0xc3, - 0xe8,0xa6,0xcf,0x9a,0xa6,0xce,0xa0,0x8d, - 0xd0,0x02,0xa0,0x99,0x20,0xc4,0xe3,0x86, - 0xce,0xba,0x86,0xcf,0xa0,0xfe,0x84,0xd9, - 0xc8,0x84,0xc8,0x20,0x99,0xe2,0x84,0xf1, - 0xa2,0x20,0xa9,0x30,0x20,0x91,0xe4,0xe6, - 0xd9,0xa6,0xce,0xa4,0xc8,0x0a,0x85,0xce, - 0xc8,0xb9,0x00,0x02,0xc9,0x74,0xf0,0xd2, - 0x49,0xb0,0xc9,0x0a,0xb0,0xf0,0xc8,0xc8, - 0x84,0xc8,0xb9,0x00,0x02,0x48,0xb9,0xff, - 0x01,0xa0,0x00,0x20,0x08,0xe7,0x68,0x95, - 0xa0,0xa5,0xce,0xc9,0xc7,0xd0,0x03,0x20, - 0x6f,0xe7,0x4c,0x01,0xe8,0xff,0xff,0xff, - 0x50,0x20,0x13,0xec,0xd0,0x15,0x20,0x0b, - 0xec,0xd0,0x10,0x20,0x82,0xe7,0x20,0x6f, - 0xe7,0x50,0x03,0x20,0x82,0xe7,0x20,0x59, - 0xe7,0x56,0x50,0x4c,0x36,0xe7,0xff,0xff, - 0xc1,0xff,0x7f,0xd1,0xcc,0xc7,0xcf,0xce, - 0xc5,0x9a,0x98,0x8b,0x96,0x95,0x93,0xbf, - 0xb2,0x32,0x2d,0x2b,0xbc,0xb0,0xac,0xbe, - 0x35,0x8e,0x61,0xff,0xff,0xff,0xdd,0xfb, - 0x20,0xc9,0xef,0x15,0x4f,0x10,0x05,0x20, - 0xc9,0xef,0x35,0x4f,0x95,0x50,0x10,0xcb, - 0x4c,0xc9,0xef,0x40,0x60,0x8d,0x60,0x8b, - 0x00,0x7e,0x8c,0x33,0x00,0x00,0x60,0x03, - 0xbf,0x12,0x00,0x40,0x89,0xc9,0x47,0x9d, - 0x17,0x68,0x9d,0x0a,0x00,0x40,0x60,0x8d, - 0x60,0x8b,0x00,0x7e,0x8c,0x3c,0x00,0x00, - 0x60,0x03,0xbf,0x1b,0x4b,0x67,0xb4,0xa1, - 0x07,0x8c,0x07,0xae,0xa9,0xac,0xa8,0x67, - 0x8c,0x07,0xb4,0xaf,0xac,0xb0,0x67,0x9d, - 0xb2,0xaf,0xac,0xaf,0xa3,0x67,0x8c,0x07, - 0xa5,0xab,0xaf,0xb0,0xf4,0xae,0xa9,0xb2, - 0xb0,0x7f,0x0e,0x27,0xb4,0xae,0xa9,0xb2, - 0xb0,0x7f,0x0e,0x28,0xb4,0xae,0xa9,0xb2, - 0xb0,0x64,0x07,0xa6,0xa9,0x67,0xaf,0xb4, - 0xaf,0xa7,0x78,0xb4,0xa5,0xac,0x78,0x7f, - 0x02,0xad,0xa5,0xb2,0x67,0xa2,0xb5,0xb3, - 0xaf,0xa7,0xee,0xb2,0xb5,0xb4,0xa5,0xb2, - 0x7e,0x8c,0x39,0xb4,0xb8,0xa5,0xae,0x67, - 0xb0,0xa5,0xb4,0xb3,0x27,0xaf,0xb4,0x07, - 0x9d,0x19,0xb2,0xaf,0xa6,0x7f,0x05,0x37, - 0xb4,0xb5,0xb0,0xae,0xa9,0x7f,0x05,0x28, - 0xb4,0xb5,0xb0,0xae,0xa9,0x7f,0x05,0x2a, - 0xb4,0xb5,0xb0,0xae,0xa9,0xe4,0xae,0xa5, - 0x00,0xff,0xff,0x47,0xa2,0xa1,0xb4,0x7f, - 0x0d,0x30,0xad,0xa9,0xa4,0x7f,0x0d,0x23, - 0xad,0xa9,0xa4,0x67,0xac,0xac,0xa1,0xa3, - 0x00,0x40,0x80,0xc0,0xc1,0x80,0x00,0x47, - 0x8c,0x68,0x8c,0xdb,0x67,0x9b,0x68,0x9b, - 0x50,0x8c,0x63,0x8c,0x7f,0x01,0x51,0x07, - 0x88,0x29,0x84,0x80,0xc4,0x80,0x57,0x71, - 0x07,0x88,0x14,0xed,0xa5,0xad,0xaf,0xac, - 0xed,0xa5,0xad,0xa9,0xa8,0xf2,0xaf,0xac, - 0xaf,0xa3,0x71,0x08,0x88,0xae,0xa5,0xac, - 0x68,0x83,0x08,0x68,0x9d,0x08,0x71,0x07, - 0x88,0x60,0x76,0xb4,0xaf,0xae,0x76,0x8d, - 0x76,0x8b,0x51,0x07,0x88,0x19,0xb8,0xa4, - 0xae,0xb2,0xf2,0xb3,0xb5,0xf3,0xa2,0xa1, - 0xee,0xa7,0xb3,0xe4,0xae,0xb2,0xeb,0xa5, - 0xa5,0xb0,0x51,0x07,0x88,0x39,0x81,0xc1, - 0x4f,0x7f,0x0f,0x2f,0x00,0x51,0x06,0x88, - 0x29,0xc2,0x0c,0x82,0x57,0x8c,0x6a,0x8c, - 0x42,0xae,0xa5,0xa8,0xb4,0x60,0xae,0xa5, - 0xa8,0xb4,0x4f,0x7e,0x1e,0x35,0x8c,0x27, - 0x51,0x07,0x88,0x09,0x8b,0xfe,0xe4,0xaf, - 0xad,0xf2,0xaf,0xe4,0xae,0xa1,0xdc,0xde, - 0x9c,0xdd,0x9c,0xde,0xdd,0x9e,0xc3,0xdd, - 0xcf,0xca,0xcd,0xcb,0x00,0x47,0x9d,0xad, - 0xa5,0xad,0xaf,0xac,0x76,0x9d,0xad,0xa5, - 0xad,0xa9,0xa8,0xe6,0xa6,0xaf,0x60,0x8c, - 0x20,0xaf,0xb4,0xb5,0xa1,0xf2,0xac,0xa3, - 0xf2,0xa3,0xb3,0x60,0x8c,0x20,0xac,0xa5, - 0xa4,0xee,0xb5,0xb2,0x60,0xae,0xb5,0xb2, - 0xf4,0xb3,0xa9,0xac,0x60,0x8c,0x20,0xb4, - 0xb3,0xa9,0xac,0x7a,0x7e,0x9a,0x22,0x20, - 0x00,0x60,0x03,0xbf,0x60,0x03,0xbf,0x1f, - 0x20,0xb1,0xe7,0xe8,0xe8,0xb5,0x4f,0x85, - 0xda,0xb5,0x77,0x85,0xdb,0xb4,0x4e,0x98, - 0xd5,0x76,0xb0,0x09,0xb1,0xda,0x20,0xc9, - 0xe3,0xc8,0x4c,0x0f,0xee,0xa9,0xff,0x85, - 0xd5,0x60,0xe8,0xa9,0x00,0x95,0x78,0x95, - 0xa0,0xb5,0x77,0x38,0xf5,0x4f,0x95,0x50, - 0x4c,0x23,0xe8,0xff,0x20,0x15,0xe7,0xa5, - 0xcf,0xd0,0x28,0xa5,0xce,0x60,0x20,0x34, - 0xee,0xa4,0xc8,0xc9,0x30,0xb0,0x21,0xc0, - 0x28,0xb0,0x1d,0x60,0xea,0xea,0x20,0x34, - 0xee,0x60,0xea,0x8a,0xa2,0x01,0xb4,0xce, - 0x94,0x4c,0xb4,0x48,0x94,0xca,0xca,0xf0, - 0xf5,0xaa,0x60,0xa0,0x77,0x4c,0xe0,0xe3, - 0xa0,0x7b,0xd0,0xf9,0x20,0x54,0xe2,0xa5, - 0xda,0xd0,0x07,0xa5,0xdb,0xd0,0x03,0x4c, - 0x7e,0xe7,0x06,0xce,0x26,0xcf,0x26,0xe6, - 0x26,0xe7,0xa5,0xe6,0xc5,0xda,0xa5,0xe7, - 0xe5,0xdb,0x90,0x0a,0x85,0xe7,0xa5,0xe6, - 0xe5,0xda,0x85,0xe6,0xe6,0xce,0x88,0xd0, - 0xe1,0x60,0xff,0xff,0xff,0xff,0xff,0xff, - 0x20,0x15,0xe7,0x6c,0xce,0x00,0xa5,0x4c, - 0xd0,0x02,0xc6,0x4d,0xc6,0x4c,0xa5,0x48, - 0xd0,0x02,0xc6,0x49,0xc6,0x48,0xa0,0x00, - 0xb1,0x4c,0x91,0x48,0xa5,0xca,0xc5,0x4c, - 0xa5,0xcb,0xe5,0x4d,0x90,0xe0,0x4c,0x53, - 0xee,0xc9,0x28,0xb0,0x9b,0xa8,0xa5,0xc8, - 0x60,0xea,0xea,0x98,0xaa,0xa0,0x6e,0x20, - 0xc4,0xe3,0x8a,0xa8,0x20,0xc4,0xe3,0xa0, - 0x72,0x4c,0xc4,0xe3,0x20,0x15,0xe7,0x06, - 0xce,0x26,0xcf,0x30,0xfa,0xb0,0xdc,0xd0, - 0x04,0xc5,0xce,0xb0,0xd6,0x60,0x20,0x15, - 0xe7,0xb1,0xce,0x94,0x9f,0x4c,0x08,0xe7, - 0x20,0x34,0xee,0xa5,0xce,0x48,0x20,0x15, - 0xe7,0x68,0x91,0xce,0x60,0xff,0xff,0xff, - 0x20,0x6c,0xee,0xa5,0xce,0x85,0xe6,0xa5, - 0xcf,0x85,0xe7,0x4c,0x44,0xe2,0x20,0xe4, - 0xee,0x4c,0x34,0xe1,0x20,0xe4,0xee,0xb4, - 0x78,0xb5,0x50,0x69,0xfe,0xb0,0x01,0x88, - 0x85,0xda,0x84,0xdb,0x18,0x65,0xce,0x95, - 0x50,0x98,0x65,0xcf,0x95,0x78,0xa0,0x00, - 0xb5,0x50,0xd1,0xda,0xc8,0xb5,0x78,0xf1, - 0xda,0xb0,0x80,0x4c,0x23,0xe8,0x20,0x15, - 0xe7,0xa5,0x4e,0x20,0x08,0xe7,0xa5,0x4f, - 0xd0,0x04,0xc5,0x4e,0x69,0x00,0x29,0x7f, - 0x85,0x4f,0x95,0xa0,0xa0,0x11,0xa5,0x4f, - 0x0a,0x18,0x69,0x40,0x0a,0x26,0x4e,0x26, - 0x4f,0x88,0xd0,0xf2,0xa5,0xce,0x20,0x08, - 0xe7,0xa5,0xcf,0x95,0xa0,0x4c,0x7a,0xe2, - 0x20,0x15,0xe7,0xa4,0xce,0xc4,0x4c,0xa5, - 0xcf,0xe5,0x4d,0x90,0x1f,0x84,0x48,0xa5, - 0xcf,0x85,0x49,0x4c,0xb6,0xee,0x20,0x15, - 0xe7,0xa4,0xce,0xc4,0xca,0xa5,0xcf,0xe5, - 0xcb,0xb0,0x09,0x84,0x4a,0xa5,0xcf,0x85, - 0x4b,0x4c,0xb7,0xe5,0x4c,0xcb,0xee,0xea, - 0xea,0xea,0xea,0x20,0xc9,0xef,0x20,0x71, - 0xe1,0x4c,0xbf,0xef,0x20,0x03,0xee,0xa9, - 0xff,0x85,0xc8,0xa9,0x74,0x8d,0x00,0x02, - 0x60,0x20,0x36,0xe7,0xe8,0x20,0x36,0xe7, - 0xb5,0x50,0x60,0xa9,0x00,0x85,0x4a,0x85, - 0x4c,0xa9,0x08,0x85,0x4b,0xa9,0x10,0x85, - 0x4d,0x4c,0xad,0xe5,0xd5,0x78,0xd0,0x01, - 0x18,0x4c,0x02,0xe1,0x20,0xb7,0xe5,0x4c, - 0x36,0xe8,0x20,0xb7,0xe5,0x4c,0x5b,0xe8, - 0xe0,0x80,0xd0,0x01,0x88,0x4c,0x0c,0xe0, - 0xa9,0x03,0x85,0xf8,0xa9,0x20,0x85,0xff, - 0xa9,0x7c,0x85,0xf9,0xa2,0x1b,0xbd,0x67, - 0xfd,0x20,0xef,0xff,0xca,0xd0,0xf7,0xca, - 0x9a,0x20,0x71,0xf0,0xd8,0xa9,0x00,0x85, - 0x5b,0x20,0xce,0xf0,0xa2,0x0f,0x86,0x58, - 0x86,0x59,0x20,0xe5,0xfe,0xa9,0x3f,0x20, - 0xef,0xff,0x20,0xe0,0xfe,0x20,0xea,0xfe, - 0xc9,0x08,0xf0,0xe0,0xc9,0x0d,0xf0,0x08, - 0x20,0xef,0xff,0x95,0x00,0xe8,0xd0,0xed, - 0xa5,0x0f,0xf0,0xd0,0xa5,0x10,0xf0,0x04, - 0xc9,0x20,0xd0,0x0c,0xa2,0x0d,0xbd,0x27, - 0xfd,0xc5,0x0f,0xf0,0x0e,0xca,0xd0,0xf6, - 0x48,0x48,0xa0,0x03,0x68,0x68,0x20,0x69, - 0xf4,0xd0,0xb1,0x20,0xd6,0xf0,0x4c,0x1c, - 0xf0,0xa9,0x00,0xa8,0x85,0xfe,0x91,0xfe, - 0xa5,0xff,0x85,0xfd,0xa9,0x00,0x85,0xfa, - 0x85,0xfb,0x85,0xfc,0x60,0x20,0x71,0xf0, - 0xa5,0x11,0xd0,0x02,0xa9,0x01,0x91,0xfe, - 0x60,0x20,0xab,0xf0,0xf0,0xcc,0x20,0xe5, - 0xfe,0xa5,0x3f,0xa6,0x3e,0x4c,0x67,0xfb, - 0x20,0xab,0xf0,0xf0,0xbd,0x20,0xe5,0xfe, - 0x6c,0x3e,0x00,0xa2,0x02,0xb5,0x0f,0xf0, - 0x08,0x48,0x20,0xd3,0xf7,0x68,0xe8,0xf0, - 0xab,0x60,0xa5,0xf5,0x85,0x3e,0xa5,0xf6, - 0x85,0x3f,0x60,0xa5,0x3e,0x85,0xf5,0xa5, - 0x3f,0x85,0xf6,0x60,0xa9,0x20,0xa2,0x27, - 0x95,0xff,0xca,0xd0,0xfb,0x60,0xbd,0x34, - 0xfd,0x48,0xbd,0x41,0xfd,0x48,0x60,0x20, - 0x71,0xf0,0x4c,0x58,0xf1,0x20,0x78,0xf0, - 0x20,0x1d,0xf1,0xf0,0x03,0x20,0x53,0xf2, - 0xa0,0x00,0xb1,0xfc,0xf0,0x0e,0x20,0x72, - 0xf2,0x20,0xdc,0xf4,0xad,0x11,0xd0,0x10, - 0xef,0xad,0x10,0xd0,0x60,0x20,0x4f,0xf2, - 0x20,0xe5,0xfe,0xa2,0x04,0xb5,0xfb,0x20, - 0xdc,0xff,0xe0,0x03,0xd0,0x03,0x20,0xb9, - 0xfe,0xca,0xd0,0xf1,0x60,0xa0,0x00,0x84, - 0x30,0xa2,0x01,0xb5,0x0f,0xf0,0x25,0xc9, - 0x20,0xf0,0x07,0xc9,0x24,0xf0,0x03,0xe8, - 0xd0,0xf1,0xe6,0x30,0xa9,0x24,0x95,0x0f, - 0x20,0x5b,0xf9,0xe8,0xf0,0x5f,0xa5,0x3e, - 0x99,0x54,0x00,0xc8,0xa5,0x3f,0x99,0x54, - 0x00,0xc8,0xd0,0xd7,0xa4,0x30,0x60,0x20, - 0x1d,0xf1,0x88,0xd0,0x48,0x20,0xc7,0xf1, - 0x20,0x1d,0xf1,0xe8,0xf0,0x3f,0x98,0xd0, - 0x06,0x20,0x4f,0xf2,0x18,0x90,0x03,0x20, - 0x53,0xf2,0x20,0xde,0xf2,0xe0,0xff,0xf0, - 0xab,0x86,0x2f,0xa5,0xfd,0x85,0x51,0x85, - 0x53,0xa5,0xfc,0x85,0x50,0x18,0x65,0x2f, - 0x85,0x52,0x90,0x02,0xe6,0x53,0x20,0xa0, - 0xf1,0x20,0x25,0xf2,0xa0,0x00,0xb9,0x00, - 0x00,0x91,0xfc,0xc8,0xc4,0x2f,0xd0,0xf6, - 0x20,0xdc,0xf4,0xd0,0xcd,0x4c,0x62,0xf0, - 0xa2,0xfc,0xb5,0xfe,0x48,0xe8,0xd0,0xfa, - 0x20,0x4f,0xf2,0x38,0xa5,0xfc,0xe5,0x50, - 0x85,0x54,0xa5,0xfd,0xe5,0x51,0x85,0x55, - 0xe6,0x54,0xd0,0x02,0xe6,0x55,0xa2,0x04, - 0x68,0x95,0xf9,0xca,0xd0,0xfa,0x60,0x20, - 0x1d,0xf1,0xf0,0xd1,0x84,0x30,0x20,0x53, - 0xf2,0xe0,0xff,0xf0,0xc8,0xa5,0xfc,0x85, - 0x52,0xa5,0xfd,0x85,0x53,0xa5,0x30,0x4a, - 0xf0,0x0c,0xa6,0x57,0xa4,0x56,0xe4,0x55, - 0xd0,0x02,0xc4,0x54,0x90,0xaf,0xc8,0xd0, - 0x01,0xe8,0x86,0x55,0x84,0x54,0x20,0x53, - 0xf2,0xa5,0xfc,0x85,0x50,0xa5,0xfd,0x85, - 0x51,0x20,0xa0,0xf1,0xa0,0x00,0xa6,0x55, - 0xf0,0x0e,0xb1,0x50,0x91,0x52,0xc8,0xd0, - 0xf9,0xe6,0x51,0xe6,0x53,0xca,0xd0,0xf2, - 0xa6,0x54,0xf0,0x08,0xb1,0x50,0x91,0x52, - 0xc8,0xca,0xd0,0xf8,0x60,0xa6,0x55,0x18, - 0x8a,0x65,0x51,0x85,0x51,0x18,0x8a,0x65, - 0x53,0x85,0x53,0xe8,0xa4,0x54,0xf0,0x0e, - 0x88,0xf0,0x07,0xb1,0x50,0x91,0x52,0x88, - 0xd0,0xf9,0xb1,0x50,0x91,0x52,0x88,0xc6, - 0x51,0xc6,0x53,0xca,0xd0,0xed,0x60,0xa9, - 0xff,0x85,0x55,0x20,0x78,0xf0,0xa4,0x54, - 0xc4,0xfa,0xd0,0x06,0xa6,0x55,0xe4,0xfb, - 0xf0,0x51,0xa0,0xff,0xc8,0xb1,0xfc,0xd0, - 0xfb,0x98,0xf0,0x45,0xc8,0x20,0xdc,0xf4, - 0xd0,0xe4,0x20,0xe5,0xfe,0x86,0x2f,0x20, - 0xee,0xf3,0xc8,0x20,0xd6,0xfe,0xa2,0x00, - 0xb5,0x04,0xf0,0x06,0x20,0xef,0xff,0xe8, - 0xd0,0xf6,0xa6,0x2f,0x60,0x20,0xea,0xfe, - 0xc9,0x09,0xd0,0x02,0xa9,0x20,0xc9,0x20, - 0x10,0x1a,0xa8,0x68,0x68,0x68,0x68,0xc0, - 0x08,0xf0,0x3b,0xc0,0x0d,0xd0,0x0a,0xe0, - 0x04,0xf0,0x29,0xa9,0x00,0x95,0x00,0xf0, - 0x5c,0xa2,0xff,0x60,0xe0,0x27,0x10,0x1a, - 0xc9,0x5e,0x10,0x16,0x38,0x60,0xc9,0x2e, - 0xf0,0xfa,0xc9,0x30,0x30,0x0c,0xc9,0x3a, - 0x30,0xf2,0xc9,0x41,0x30,0x04,0xc9,0x5b, - 0x30,0xea,0x18,0x60,0xa9,0x02,0xaa,0x85, - 0x00,0xa9,0x00,0x85,0x01,0x60,0x20,0xcc, - 0xf0,0xa9,0x00,0x85,0x1d,0x20,0xe5,0xfe, - 0x20,0xd6,0xfe,0xa2,0x04,0xa9,0x0a,0x20, - 0x9c,0xf3,0x20,0xc4,0xf3,0xa5,0x04,0xc9, - 0x3b,0xf0,0x0d,0xa9,0x0e,0x20,0x9c,0xf3, - 0x20,0xc4,0xf3,0xa9,0x1d,0x20,0x9c,0xf3, - 0xa9,0x00,0x20,0x9c,0xf3,0xa2,0x00,0x86, - 0x51,0xa9,0x20,0x85,0x55,0xa9,0x04,0x85, - 0x50,0xa9,0x01,0x85,0x54,0x20,0xd7,0xf3, - 0xa4,0x04,0xc0,0x3b,0xd0,0x04,0xa9,0x0b, - 0xd0,0x5f,0x8a,0x48,0x18,0x66,0x56,0xa2, - 0x03,0x38,0xb5,0x0a,0xe9,0x40,0xa0,0x05, - 0x4a,0x66,0x56,0x66,0x57,0x88,0xd0,0xf8, - 0xca,0xd0,0xee,0xa2,0x38,0xbd,0xe8,0xfb, - 0xc5,0x56,0xd0,0x07,0xbd,0x20,0xfc,0xc5, - 0x57,0xf0,0x03,0xca,0xd0,0xef,0xca,0x8a, - 0xc9,0xff,0xd0,0x19,0xa5,0x0b,0xc9,0x2e, - 0xd0,0x0c,0xa2,0x05,0xa5,0x0c,0xdd,0x4e, - 0xfd,0xf0,0x09,0xca,0xd0,0xf8,0x68,0xa0, - 0x01,0x4c,0x69,0xf4,0xca,0xa8,0xc8,0x68, - 0xaa,0x94,0x00,0xe8,0xa9,0x0f,0x85,0x50, - 0x20,0xd7,0xf3,0x86,0x2f,0xe6,0x2f,0xa9, - 0x1d,0x85,0x50,0xa9,0x00,0x85,0x54,0x85, - 0x55,0x20,0xd7,0xf3,0xe4,0x2f,0xd0,0x03, - 0xca,0x95,0xff,0x60,0x85,0x54,0x20,0x8d, - 0xf2,0x90,0xfb,0x20,0xef,0xff,0x95,0x00, - 0xe8,0xc9,0x20,0xf0,0x05,0xe4,0x54,0xd0, - 0xed,0x60,0xa5,0x54,0xf0,0xe8,0xe4,0x54, - 0xf0,0xf7,0xa9,0x20,0x95,0x00,0x20,0xef, - 0xff,0xe8,0xd0,0xee,0xb5,0xff,0xc9,0x20, - 0xf0,0x07,0x20,0x8d,0xf2,0xc9,0x20,0xd0, - 0xf9,0x95,0x00,0xe8,0x4c,0xef,0xff,0xa0, - 0x00,0xb1,0x50,0xf0,0x0b,0xc5,0x55,0xf0, - 0x07,0x95,0x00,0xe8,0xe6,0x50,0xd0,0xf1, - 0xa5,0x54,0x95,0x00,0xe8,0x60,0x20,0xcc, - 0xf0,0xa0,0x00,0xa2,0x04,0xb1,0xfc,0xf0, - 0x4d,0xc9,0x02,0xd0,0x05,0xc8,0xa9,0x00, - 0xf0,0x46,0xc9,0x01,0xf0,0x06,0x95,0x00, - 0xe8,0xc8,0xd0,0xe9,0xa5,0x04,0xc9,0x3b, - 0xd0,0x04,0xa2,0x0b,0xd0,0x2d,0xc8,0xb1, - 0xfc,0xaa,0xca,0x86,0x3c,0xe0,0x38,0x10, - 0x09,0x98,0x48,0x20,0x99,0xfa,0x68,0xa8, - 0xd0,0x06,0x86,0x0c,0xa9,0x2e,0x85,0x0b, - 0xc8,0xa2,0x0f,0xb1,0xfc,0xf0,0x11,0xc9, - 0x01,0xd0,0x05,0xc8,0xa2,0x1d,0xd0,0xf3, - 0x95,0x00,0xe8,0xc8,0xd0,0xed,0xa2,0xfe, - 0x95,0x00,0x60,0x20,0x94,0xf4,0x20,0xe5, - 0xfe,0x20,0xf8,0xf5,0x20,0xb8,0xf4,0xe8, - 0xf0,0x0f,0xe0,0xff,0xd0,0xf6,0xe6,0x58, - 0x20,0x10,0xf6,0xe8,0xf0,0x03,0x4c,0xf8, - 0xf5,0x20,0xe5,0xfe,0xa2,0x05,0xbd,0x53, - 0xfd,0x20,0xef,0xff,0xca,0xd0,0xf7,0x98, - 0x18,0x8a,0x69,0x03,0x88,0xd0,0xfb,0xa8, - 0xa2,0x03,0xb9,0x56,0xfd,0x20,0xef,0xff, - 0xc8,0xca,0xd0,0xf6,0xca,0xa5,0x59,0xd0, - 0x26,0x4c,0x72,0xf2,0x20,0x78,0xf0,0x85, - 0x58,0x85,0xeb,0x85,0xe9,0x85,0xf5,0xa5, - 0xf8,0x85,0xf6,0x20,0xeb,0xf5,0x86,0xea, - 0xa9,0x00,0x85,0x2b,0x85,0x29,0x85,0x46, - 0xa4,0xf9,0xc8,0x84,0x2a,0x84,0x47,0x60, - 0x20,0xee,0xf3,0xe0,0xfe,0xf0,0x1d,0xe0, - 0x04,0xf0,0x18,0xa9,0x00,0x85,0x59,0x85, - 0x58,0x85,0x5a,0x20,0x44,0xf5,0xe0,0xff, - 0xf0,0x1d,0xa0,0x00,0xb1,0xfc,0xf0,0x03, - 0xc8,0xd0,0xf9,0xc8,0xa5,0xfc,0x84,0x44, - 0x18,0x65,0x44,0x85,0xfc,0x90,0x02,0xe6, - 0xfd,0xe6,0xfa,0xd0,0x02,0xe6,0xfb,0x60, - 0xa4,0x3c,0xb9,0x73,0xfc,0xa6,0x3d,0x18, - 0x7d,0xab,0xfc,0xe0,0x0b,0xf0,0x0e,0xe0, - 0x02,0xd0,0x11,0xc0,0x28,0x30,0x0d,0xc0, - 0x30,0xb0,0x09,0x69,0x08,0xc0,0x35,0xd0, - 0x03,0x18,0x69,0x04,0x20,0x2f,0xf5,0xc9, - 0x00,0xd0,0x03,0x20,0x2f,0xf5,0x8a,0xf0, - 0xce,0xca,0xf0,0xcb,0xa5,0x3e,0xe0,0x08, - 0x30,0x05,0x20,0x2f,0xf5,0xa5,0x3f,0xa0, - 0x00,0x91,0xf5,0xe6,0xf5,0xd0,0x02,0xe6, - 0xf6,0x60,0x20,0xa9,0xf6,0xe0,0xff,0xd0, - 0xaf,0xa0,0x02,0x60,0xa5,0x04,0xc9,0x3b, - 0xf0,0xa5,0xa6,0x0b,0xe0,0x2e,0xd0,0x0d, - 0xa6,0x0c,0xe0,0x4d,0xd0,0x03,0x4c,0xb6, - 0xf5,0xe0,0x3d,0xf0,0x47,0xc9,0x20,0xf0, - 0x03,0x20,0xdf,0xf8,0xa5,0x0b,0xc9,0x2e, - 0xd0,0xd0,0xa2,0x00,0xa5,0x0c,0xc9,0x53, - 0xf0,0x19,0x85,0x58,0x20,0x7a,0xf7,0xe8, - 0xf0,0x0c,0xa5,0x3e,0xa6,0x0c,0xe0,0x57, - 0xf0,0xa8,0xa6,0x3f,0xf0,0xa9,0xa0,0x03, - 0xa2,0xff,0x60,0xb5,0x0f,0xc9,0x27,0xd0, - 0xf5,0xe8,0xb5,0x0f,0xf0,0xf0,0xc9,0x27, - 0xf0,0x09,0x20,0x2f,0xf5,0xe0,0x0e,0xd0, - 0xf0,0xf0,0xe3,0x60,0x85,0x58,0x20,0xc2, - 0xf2,0x90,0xdb,0xa2,0x00,0x20,0x7a,0xf7, - 0xe8,0xf0,0xd3,0x4c,0xe2,0xf8,0x20,0xc2, - 0xf2,0x90,0xcb,0xa0,0x00,0xa5,0x0f,0xf0, - 0x14,0xc9,0x20,0xf0,0x10,0x20,0xf6,0xf5, - 0xa2,0x00,0xa5,0x0f,0x20,0x5b,0xf9,0xe8, - 0xf0,0xb4,0x20,0xc3,0xf0,0x20,0xdf,0xf8, - 0xe0,0xff,0xf0,0xc7,0x20,0x10,0xf6,0xe0, - 0xff,0xf0,0xc0,0x20,0xc4,0xfe,0xa9,0x00, - 0x20,0xf6,0xf5,0xa2,0x00,0x86,0xee,0x86, - 0xec,0xa6,0xf9,0x86,0xed,0x60,0x85,0x58, - 0xa5,0xf6,0xa6,0xf5,0xa4,0x58,0xf0,0x0d, - 0x48,0x20,0xb9,0xfe,0x68,0xe0,0x00,0xd0, - 0x03,0x38,0xe9,0x01,0xca,0x4c,0x67,0xfb, - 0xa6,0x2b,0xf0,0x72,0x86,0x59,0x86,0x45, - 0xa5,0xf5,0x48,0xa5,0xf6,0x48,0x20,0xa8, - 0xf4,0xa0,0x00,0xa5,0x58,0x85,0x48,0x84, - 0x5a,0xb1,0x46,0xc9,0x2e,0xd0,0x02,0x85, - 0x58,0xb1,0x46,0x99,0x1d,0x00,0xc8,0xc0, - 0x06,0xd0,0xf6,0xb1,0x46,0x85,0xf5,0xc8, - 0xb1,0x46,0x85,0xf6,0xc8,0xb1,0x46,0x85, - 0x54,0x20,0x7e,0xf8,0xe0,0xff,0xf0,0x47, - 0xa5,0x5a,0xf0,0x04,0xa5,0x54,0x91,0x50, - 0x20,0xc3,0xf7,0xa0,0x00,0xb1,0xf5,0x29, - 0x1f,0xc9,0x10,0xf0,0x22,0x20,0x33,0xf5, - 0xa5,0x3e,0x20,0x2a,0xf5,0x18,0xa5,0x46, - 0x69,0x09,0x85,0x46,0x90,0x02,0xe6,0x47, - 0xa5,0x48,0x85,0x58,0xc6,0x45,0xd0,0xa1, - 0x68,0x85,0xf6,0x68,0x85,0xf5,0x60,0x20, - 0x62,0xf7,0xe0,0xff,0xf0,0x09,0xa0,0x01, - 0xa5,0x3e,0x91,0xf5,0x4c,0x6d,0xf6,0xa0, - 0x00,0x20,0xe0,0xfe,0xb1,0x46,0x20,0xef, - 0xff,0xc8,0xc0,0x06,0xd0,0xf6,0x88,0xd0, - 0xd7,0xa2,0xff,0x86,0x3d,0xa5,0x3c,0xa6, - 0x0f,0xf0,0x04,0xe0,0x20,0xd0,0x0e,0xa2, - 0x00,0x20,0x3d,0xf7,0xe0,0xff,0xd0,0x35, - 0xa2,0x01,0x4c,0x3d,0xf7,0xe0,0x23,0xf0, - 0x0e,0xa2,0x03,0x20,0x3d,0xf7,0xe0,0xff, - 0xf0,0x24,0xa5,0x0f,0x4c,0x4f,0xf7,0xc9, - 0x2c,0xf0,0x71,0xa2,0x02,0xc9,0x35,0xf0, - 0x07,0x20,0x3d,0xf7,0xe0,0xff,0xf0,0x0d, - 0x86,0x3d,0xca,0x20,0x7a,0xf7,0xe8,0xf0, - 0x5b,0xa5,0x3f,0xd0,0x57,0x60,0xa2,0x00, - 0xa5,0x0f,0xc9,0x28,0xd0,0x01,0xe8,0x20, - 0xd3,0xf7,0xe0,0xff,0xf0,0xef,0x20,0x9c, - 0xf9,0xe0,0xff,0xf0,0xe8,0x86,0x3d,0xe0, - 0x06,0xd0,0x0e,0xa5,0x3c,0xc9,0x28,0x90, - 0x08,0xc9,0x30,0xb0,0x04,0xa2,0x0b,0xd0, - 0x28,0xa0,0x06,0xb9,0x15,0xfd,0xc5,0x3c, - 0xd0,0x0e,0xbe,0x1b,0xfd,0xe4,0x3d,0xf0, - 0x18,0xbe,0x21,0xfd,0xe4,0x3d,0xf0,0x11, - 0x88,0xd0,0xe8,0xa6,0x3d,0xa5,0x3c,0xdd, - 0x59,0xfc,0x90,0x08,0xdd,0x66,0xfc,0xb0, - 0x03,0x86,0x3d,0x60,0xa2,0xff,0x60,0xa2, - 0x00,0x86,0x3e,0x86,0x3f,0xc9,0x2a,0xd0, - 0x06,0x20,0xba,0xf0,0x20,0xfd,0xf7,0x20, - 0xd3,0xf7,0x38,0xa5,0x3e,0xe5,0xf5,0x85, - 0x3e,0xa5,0x3f,0xe5,0xf6,0x85,0x3f,0xf0, - 0x04,0xe6,0x3f,0xd0,0xd7,0xc6,0x3e,0xc6, - 0x3e,0x60,0xb5,0x0f,0xf0,0xce,0xc9,0x27, - 0xf0,0x03,0x4c,0xd3,0xf7,0xe8,0xa9,0x00, - 0x85,0x3f,0xb5,0x0f,0x85,0x3e,0xe8,0xb5, - 0x0f,0xc9,0x27,0xd0,0xb7,0xe8,0xb5,0x0f, - 0xf0,0x7c,0xc9,0x20,0xf0,0x78,0x48,0xe8, - 0xb5,0x0f,0x20,0x51,0xfa,0xe0,0xff,0xd0, - 0x02,0x68,0x60,0x85,0x54,0x68,0xc9,0x2b, - 0xf0,0x09,0xa5,0x54,0x18,0x49,0xff,0x69, - 0x01,0x85,0x54,0xa5,0x5a,0xf0,0x04,0xa5, - 0x54,0x91,0x50,0xa5,0x54,0x10,0x02,0xc6, - 0x3f,0x18,0x65,0x3e,0x85,0x3e,0x90,0x02, - 0xe6,0x3f,0x60,0x86,0x56,0xb5,0x0f,0xc9, - 0x3c,0xf0,0x04,0xc9,0x3e,0xd0,0x05,0x85, - 0x58,0xe8,0xb5,0x0f,0x20,0xbe,0xf2,0xb0, - 0x09,0x20,0x5b,0xf9,0xe0,0xff,0xf0,0x24, - 0xd0,0x0b,0x86,0x2f,0x20,0x60,0xf8,0xe0, - 0xff,0xf0,0x1b,0xa6,0x2f,0xe8,0xb5,0x0f, - 0x20,0xbe,0xf2,0xb0,0xf8,0xc9,0x2b,0xf0, - 0x04,0xc9,0x2d,0xd0,0x0a,0x20,0x9e,0xf7, - 0xe0,0xff,0xd0,0xe9,0xa0,0x03,0x60,0xa0, - 0x00,0xa5,0x58,0xc9,0x3c,0xf0,0x08,0xc9, - 0x3e,0xd0,0x06,0xa5,0x3f,0x85,0x3e,0x84, - 0x3f,0xb5,0x0f,0x99,0x1d,0x00,0xf0,0x0a, - 0xc9,0x20,0xf0,0x06,0xe8,0xc8,0xe0,0x0e, - 0xd0,0xef,0xa9,0x00,0x99,0x1d,0x00,0xa4, - 0x56,0xa9,0x24,0x99,0x0f,0x00,0xc8,0xa5, - 0x3f,0xf0,0x03,0x20,0x82,0xfa,0xa5,0x3e, - 0x20,0x82,0xfa,0xa2,0x00,0xb5,0x1d,0x99, - 0x0f,0x00,0xf0,0xba,0xe8,0xc8,0xd0,0xf5, - 0xa0,0x00,0xc0,0x06,0xf0,0x18,0x20,0xbe, - 0xf2,0x90,0x09,0x99,0x1d,0x00,0xe8,0xb5, - 0x0f,0xc8,0xd0,0xee,0xa9,0x20,0x99,0x1d, - 0x00,0xc8,0xc0,0x06,0xd0,0xf8,0xa9,0x1d, - 0x85,0x42,0xa2,0x00,0x86,0x43,0xa9,0x06, - 0x85,0x2e,0xa9,0x08,0x85,0x2d,0xa5,0x1d, - 0xc9,0x2e,0xf0,0x11,0x20,0x8a,0xf9,0xf0, - 0x13,0xa0,0x06,0xb1,0x40,0x85,0x3e,0xc8, - 0xb1,0x40,0x85,0x3f,0x60,0xa2,0x03,0x20, - 0x8a,0xf9,0xd0,0xed,0xa5,0x58,0xd0,0x4f, - 0x20,0xba,0xf0,0xa5,0x2a,0x85,0x51,0xa5, - 0x29,0xa6,0x2b,0xf0,0x0a,0x18,0x69,0x09, - 0x90,0x02,0xe6,0x51,0xca,0xd0,0xf6,0x85, - 0x50,0xe6,0x2b,0xa5,0x2b,0xc9,0x55,0x10, - 0x32,0xa9,0x1d,0x85,0x5a,0x85,0x52,0x20, - 0x43,0xf9,0xc8,0x8a,0x91,0x50,0x60,0x20, - 0xba,0xf0,0xa9,0x04,0x85,0x52,0x85,0x42, - 0xa2,0x00,0x86,0x43,0xa9,0x06,0x85,0x2e, - 0xa5,0x04,0xc9,0x2e,0xd0,0x02,0xa2,0x03, - 0x20,0x8a,0xf9,0xf0,0x0b,0x68,0x68,0xa0, - 0x05,0xd0,0x02,0xa0,0x04,0xa2,0xff,0x60, - 0xa6,0x04,0xe0,0x2e,0xf0,0x17,0x38,0xa5, - 0xe9,0xe9,0x08,0xb0,0x02,0xc6,0xea,0x85, - 0xe9,0xe6,0xeb,0xf0,0xe6,0x85,0x50,0xa5, - 0xea,0x85,0x51,0xd0,0x1e,0xa5,0xed,0x85, - 0x51,0xa5,0xec,0xa6,0xee,0xf0,0x0a,0x18, - 0x69,0x08,0x90,0x02,0xe6,0x51,0xca,0xd0, - 0xf6,0x85,0x50,0xe6,0xee,0xa5,0xee,0xc9, - 0x20,0x10,0xc0,0xa0,0x00,0x84,0x53,0xa2, - 0x06,0xb1,0x52,0x91,0x50,0xc8,0xca,0xd0, - 0xf8,0xa5,0x3e,0x91,0x50,0xc8,0xa5,0x3f, - 0x91,0x50,0x60,0xc9,0x24,0xd0,0xa6,0x84, - 0x1e,0x20,0x18,0xfa,0xe0,0xff,0xf0,0x9d, - 0x85,0x1d,0xa0,0x00,0x84,0x3f,0xca,0xca, - 0xb5,0x0f,0xc9,0x24,0xf0,0x06,0x20,0x51, - 0xfa,0x38,0xb0,0x03,0x20,0x6d,0xfa,0x99, - 0x3e,0x00,0xc8,0xc4,0x1d,0xd0,0xe7,0xa4, - 0x1e,0x60,0xb5,0xe9,0x85,0x40,0xb5,0xea, - 0x85,0x41,0xb5,0xeb,0x85,0x2c,0x20,0x2c, - 0xfa,0xe0,0xff,0x60,0xa2,0x00,0xa9,0x04, - 0xb4,0x0f,0xc0,0x28,0xd0,0x04,0x18,0x69, - 0x03,0xe8,0x48,0x20,0x18,0xfa,0xa8,0xca, - 0xa5,0x3c,0xc9,0x21,0xf0,0x04,0xc9,0x23, - 0xd0,0x01,0xc8,0x68,0xe8,0xf0,0x56,0x88, - 0xf0,0x03,0x18,0x69,0x06,0xa8,0xb5,0x0f, - 0xf0,0x04,0xc9,0x20,0xd0,0x14,0xa5,0x0f, - 0xc9,0x28,0xf0,0x41,0xc0,0x0f,0x10,0x3d, - 0xc0,0x07,0xf0,0x39,0x30,0x01,0x88,0x98, - 0xaa,0x60,0xc9,0x29,0xd0,0x0b,0xa9,0x20, - 0x85,0x0f,0xe8,0xb5,0x0f,0xc9,0x2c,0xd0, - 0xd5,0xb5,0x0f,0xc9,0x2c,0xd0,0x1e,0xe8, - 0xb5,0x0f,0xc9,0x58,0xf0,0x0d,0xc9,0x59, - 0xd0,0x13,0xa5,0x0f,0xc9,0x28,0xf0,0x0d, - 0x95,0x0d,0xc8,0xc8,0xb5,0x0d,0xc9,0x29, - 0xf0,0x03,0xe8,0xd0,0xb1,0xa2,0xff,0x60, - 0xa0,0x00,0xe8,0xc8,0x20,0x6e,0xfa,0xc9, - 0xff,0xd0,0xf7,0x98,0x4a,0xf0,0xee,0xc9, - 0x03,0xb0,0xea,0x60,0xa5,0x2c,0xf0,0xe5, - 0xa2,0x00,0xa0,0xff,0xc8,0xc4,0x2e,0xf0, - 0xde,0xb1,0x40,0xd1,0x42,0xf0,0xf5,0xe8, - 0xe4,0x2c,0xf0,0xd1,0xa5,0x40,0x18,0x65, - 0x2d,0x85,0x40,0x90,0xe5,0xe6,0x41,0xb0, - 0xe1,0x20,0x6e,0xfa,0xc9,0xff,0xf0,0xbd, - 0x48,0x20,0x6d,0xfa,0xca,0xc9,0xff,0xd0, - 0x02,0x68,0x60,0x85,0x44,0x68,0x0a,0x0a, - 0x0a,0x0a,0x65,0x44,0x60,0xe8,0xb5,0x0f, - 0x49,0x30,0xc9,0x0a,0x90,0x08,0x69,0x88, - 0xc9,0xfa,0x90,0x03,0x29,0x0f,0x60,0xa9, - 0xff,0x60,0x48,0x20,0xd6,0xfb,0x20,0x8a, - 0xfa,0x68,0x29,0x0f,0x09,0x30,0xc9,0x3a, - 0x90,0x02,0x69,0x06,0x99,0x0f,0x00,0xc8, - 0x60,0xbd,0xe9,0xfb,0x85,0x56,0xbd,0x21, - 0xfc,0x85,0x57,0xa2,0x00,0xa9,0x00,0xa0, - 0x05,0x06,0x57,0x26,0x56,0x2a,0x88,0xd0, - 0xf8,0x69,0x40,0x95,0x0b,0xa4,0x5b,0xf0, - 0x03,0x20,0xef,0xff,0xe8,0xe0,0x03,0xd0, - 0xe4,0x60,0x20,0xab,0xf0,0xf0,0x03,0x20, - 0xc3,0xf0,0x20,0xdc,0xfa,0x20,0x81,0xfb, - 0x85,0xf5,0x84,0xf6,0xad,0x11,0xd0,0x10, - 0xf1,0xad,0x10,0xd0,0x20,0x6e,0xfb,0xa1, - 0xf5,0xa8,0x4a,0x90,0x09,0x6a,0xb0,0x14, - 0xc9,0xa2,0xf0,0x10,0x29,0x87,0x4a,0xaa, - 0xbd,0xb8,0xfc,0x90,0x03,0x20,0xd6,0xfb, - 0x29,0x0f,0xd0,0x04,0xa0,0x80,0xa9,0x00, - 0xaa,0xbd,0xfc,0xfc,0x85,0x29,0x29,0x03, - 0x85,0x2a,0x98,0x20,0x90,0xfb,0xa0,0x00, - 0x48,0xb1,0xf5,0x20,0xdc,0xff,0xa2,0x01, - 0x20,0x7a,0xfb,0xc4,0x2a,0xc8,0x90,0xf1, - 0xa2,0x03,0x86,0x5b,0xc0,0x04,0x90,0xf0, - 0x68,0xaa,0x20,0x99,0xfa,0x20,0x78,0xfb, - 0xa4,0x2a,0xa2,0x06,0xe0,0x03,0xf0,0x1e, - 0x06,0x29,0x90,0x0e,0xbd,0x09,0xfd,0x20, - 0xef,0xff,0xbd,0x0f,0xfd,0xf0,0x03,0x20, - 0xef,0xff,0xca,0xd0,0xe7,0x86,0x5b,0x60, - 0x88,0x30,0xe5,0x20,0xdc,0xff,0xa5,0x29, - 0xc9,0xe8,0xb1,0xf5,0x90,0xf2,0x20,0x84, - 0xfb,0xaa,0xe8,0xd0,0x01,0xc8,0x98,0x20, - 0xdc,0xff,0x8a,0x4c,0xdc,0xff,0x20,0xe5, - 0xfe,0xa5,0xf6,0xa6,0xf5,0x20,0x67,0xfb, - 0xa2,0x03,0x20,0xe0,0xfe,0xca,0xd0,0xfa, - 0x60,0x38,0xa5,0x2a,0xa4,0xf6,0xaa,0x10, - 0x01,0x88,0x65,0xf5,0x90,0x01,0xc8,0x60, - 0x85,0x54,0x29,0x8f,0xc9,0x8a,0xf0,0x43, - 0x0a,0xc9,0x10,0xf0,0x37,0xa5,0x54,0x0a, - 0x69,0x80,0x2a,0x0a,0x29,0x1f,0x69,0x20, - 0x48,0xa5,0x54,0x29,0x9f,0xf0,0x1b,0x0a, - 0xc9,0x20,0xf0,0x10,0x29,0x06,0xd0,0x2f, - 0x68,0x29,0x07,0xc9,0x03,0x10,0x02,0x69, - 0x02,0x69,0x1f,0x60,0x68,0x29,0x07,0x69, - 0x18,0x60,0x68,0xaa,0xbd,0xb0,0xfb,0x60, - 0x16,0x21,0x17,0x18,0xa5,0x54,0x4a,0x4a, - 0x4a,0x4a,0x60,0x20,0xd4,0xfb,0xc9,0x0e, - 0xd0,0x02,0x69,0xfd,0x69,0x08,0x60,0x68, - 0x60,0x82,0x1b,0x83,0x99,0x82,0x1b,0x83, - 0x99,0x21,0xa6,0xa0,0x1b,0x4b,0x1b,0x4b, - 0x99,0xa6,0xa6,0xa0,0xa4,0x21,0x73,0x14, - 0x95,0x95,0x14,0x13,0x15,0x15,0x10,0x10, - 0x13,0x11,0x54,0x12,0x53,0x9d,0x61,0x1c, - 0x1c,0x7c,0x0b,0x2b,0x09,0x9d,0x61,0x1b, - 0x98,0x0c,0x93,0x64,0x93,0x9d,0x61,0x21, - 0x4b,0x20,0x06,0x20,0x46,0x02,0x12,0x02, - 0x52,0x72,0x42,0x72,0x2c,0xb2,0x08,0xb0, - 0x48,0x02,0x26,0x70,0xf0,0x70,0xe0,0x96, - 0x12,0x26,0x18,0x52,0x86,0xa6,0xc6,0xe6, - 0x8a,0x62,0xe4,0x68,0x60,0x32,0x32,0x32, - 0x30,0x82,0x88,0xe4,0x06,0x02,0x02,0x60, - 0x86,0xd8,0xd8,0xe4,0xe4,0x30,0x30,0x46, - 0x86,0x00,0x30,0x25,0x19,0x24,0x28,0x34, - 0x28,0x28,0x21,0x28,0x28,0x23,0x19,0x34, - 0x30,0x21,0x38,0x34,0x36,0x30,0x30,0x38, - 0x34,0x30,0x24,0x08,0x18,0x28,0x38,0x48, - 0x58,0x68,0x78,0x88,0x98,0xa8,0xb8,0xc8, - 0xd8,0xe8,0xf8,0x8a,0x9a,0xaa,0xba,0xca, - 0xea,0x00,0x40,0x60,0x10,0x30,0x50,0x70, - 0x90,0xb0,0xd0,0xf0,0x14,0x20,0x40,0x80, - 0xa0,0xc0,0xe0,0x01,0x21,0x41,0x61,0x81, - 0xa1,0xc1,0xe1,0x02,0x22,0x42,0x62,0x82, - 0xa2,0xc2,0xe2,0x00,0x08,0x00,0x00,0x04, - 0x14,0x14,0x00,0x10,0x0c,0x1c,0x18,0x2c, - 0x04,0x20,0x54,0x30,0x0d,0x80,0x04,0x90, - 0x03,0x22,0x54,0x33,0x0d,0x80,0x04,0x90, - 0x04,0x20,0x54,0x33,0x0d,0x80,0x04,0x90, - 0x04,0x20,0x54,0x3b,0x0d,0x80,0x04,0x90, - 0x00,0x22,0x44,0x33,0x0d,0xc8,0x44,0x00, - 0x11,0x22,0x44,0x33,0x0d,0xc8,0x44,0xa9, - 0x01,0x22,0x44,0x33,0x0d,0x80,0x04,0x90, - 0x01,0x22,0x44,0x33,0x0d,0x80,0x04,0x90, - 0x26,0x31,0x87,0x9a,0x00,0x21,0x81,0x82, - 0x00,0x00,0x59,0x4d,0x91,0x92,0x86,0x4a, - 0x85,0x9d,0x2c,0x29,0x2c,0x23,0x28,0x24, - 0x59,0x00,0x58,0x24,0x24,0x00,0x22,0x24, - 0x25,0x35,0x36,0x37,0x04,0x05,0x05,0x02, - 0x05,0x05,0x04,0x05,0x0a,0x0b,0x0a,0x0a, - 0x4e,0x4c,0x58,0x45,0x4d,0x52,0x44,0x49, - 0x21,0x24,0x41,0x56,0x50,0xf0,0xf0,0xf1, - 0xf1,0xf1,0xf0,0xfa,0xf1,0xff,0xff,0xf4, - 0xf0,0xf0,0xde,0xe4,0xc6,0x4e,0x04,0x9f, - 0xc1,0x57,0x1a,0x0e,0x4a,0x90,0x84,0x42, - 0x57,0x53,0x3d,0x4d,0x20,0x3a,0x52,0x52, - 0x45,0x4d,0x4e,0x45,0x41,0x44,0x44,0x53, - 0x59,0x4e,0x4f,0x56,0x46,0x53,0x59,0x4d, - 0x4e,0x45,0x53,0x53,0x45,0x57,0x20,0x4e, - 0x45,0x4b,0x20,0x59,0x42,0x20,0x33,0x2e, - 0x31,0x20,0x52,0x45,0x44,0x41,0x53,0x55, - 0x52,0x4b,0x0d,0x50,0x53,0x59,0x58,0x41, - 0x4c,0x48,0x43,0x5a,0x49,0x44,0x42,0x00, - 0x56,0x4e,0x20,0xe5,0xfe,0x20,0xb9,0xfe, - 0x20,0xbe,0xfe,0xa0,0x07,0xd9,0x82,0xfd, - 0xf0,0x5c,0x88,0xd0,0xf8,0xc9,0x52,0xd0, - 0x06,0x20,0x9f,0xfe,0x6c,0xf5,0x00,0xc9, - 0x54,0xd0,0x3a,0xa2,0x08,0xbd,0x96,0xfe, - 0x95,0xe0,0xca,0xd0,0xf8,0xa1,0xf5,0xf0, - 0x5d,0xa4,0x2a,0xc9,0x20,0xf0,0x75,0xc9, - 0x60,0xf0,0x63,0xc9,0x4c,0xf0,0x78,0xc9, - 0x6c,0xf0,0x75,0xc9,0x40,0xf0,0x53,0x29, - 0x1f,0x49,0x14,0xc9,0x04,0xf0,0x02,0xb1, - 0xf5,0x99,0xe0,0x00,0x88,0x10,0xf8,0x20, - 0x9f,0xfe,0x4c,0xe0,0x00,0xc9,0x21,0xd0, - 0x06,0x20,0x1b,0xff,0x4c,0x1e,0xfe,0xc9, - 0x24,0xd0,0x97,0x4c,0x0f,0xff,0xa2,0xfe, - 0x20,0xbe,0xfe,0x95,0x11,0xe8,0xd0,0xf8, - 0x20,0x51,0xfa,0x99,0xef,0x00,0xa6,0xf1, - 0x9a,0x4c,0x1e,0xfe,0x28,0x20,0xaa,0xfe, - 0x68,0x85,0xf5,0x68,0x85,0xf6,0xba,0x86, - 0xf1,0x20,0x57,0xfe,0x20,0xdc,0xfa,0x4c, - 0x92,0xfd,0x18,0x68,0x85,0xf0,0x68,0x85, - 0xf5,0x68,0x85,0xf6,0x20,0x82,0xfb,0x84, - 0xf6,0x18,0x90,0x14,0x18,0x20,0x82,0xfb, - 0xaa,0x98,0x48,0x8a,0x48,0xa0,0x02,0x18, - 0xb1,0xf5,0xaa,0x88,0xb1,0xf5,0x86,0xf6, - 0x85,0xf5,0xb0,0xf3,0x4c,0x1e,0xfe,0x20, - 0xe5,0xfe,0xa2,0x05,0xbd,0x82,0xfd,0x20, - 0xef,0xff,0x20,0xb9,0xfe,0xb5,0xef,0x20, - 0xdc,0xff,0x20,0xe0,0xfe,0xca,0xd0,0xec, - 0xa5,0xf0,0xa2,0x08,0x0a,0x90,0x08,0x48, - 0xbd,0x89,0xfd,0x20,0xef,0xff,0x68,0xca, - 0xd0,0xf2,0x60,0x18,0xa0,0x01,0xb1,0xf5, - 0x20,0x84,0xfb,0x85,0xf5,0x98,0x38,0xb0, - 0xa1,0x20,0xaa,0xfe,0x38,0xb0,0x9d,0xea, - 0xea,0x4c,0x91,0xfe,0x4c,0x83,0xfe,0xa5, - 0xf0,0x48,0xa5,0xf4,0xa6,0xf3,0xa4,0xf2, - 0x28,0x60,0x85,0xf4,0x86,0xf3,0x84,0xf2, - 0x08,0x68,0x85,0xf0,0xba,0x86,0xf1,0xd8, - 0x60,0xa9,0x2d,0x4c,0xef,0xff,0x20,0xea, - 0xfe,0x4c,0xef,0xff,0x20,0xe5,0xfe,0xa2, - 0x00,0xb5,0x04,0x20,0xef,0xff,0xe8,0xe0, - 0x06,0xd0,0xf6,0x20,0xe0,0xfe,0xa5,0xfb, - 0x20,0xe5,0xff,0xa5,0xfa,0x20,0xdc,0xff, - 0xa9,0x20,0x4c,0xef,0xff,0xa9,0x0d,0x4c, - 0xef,0xff,0xad,0x11,0xd0,0x10,0xfb,0xad, - 0x10,0xd0,0x29,0x7f,0x60,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xd8,0x58,0xa0,0x7f,0x8c,0x12,0xd0,0xa9, - 0xa7,0x8d,0x11,0xd0,0x8d,0x13,0xd0,0xa9, - 0x5c,0x20,0xef,0xff,0x20,0x1b,0xff,0x90, - 0xf6,0xb0,0xf9,0x20,0xe5,0xfe,0xa0,0x01, - 0x88,0x30,0xf8,0x20,0xbe,0xfe,0x99,0x00, - 0x02,0xc9,0x0d,0xf0,0x0b,0xc9,0x5f,0xf0, - 0xef,0xc9,0x1b,0xf0,0xda,0xc8,0x10,0xeb, - 0xa0,0xff,0xa9,0x00,0xaa,0x0a,0x85,0x2b, - 0xc8,0xb9,0x00,0x02,0xc9,0x0d,0xd0,0x02, - 0x38,0x60,0x09,0x80,0xc9,0xae,0x90,0xf0, - 0xf0,0xec,0xc9,0xba,0xf0,0xe7,0xc9,0xd2, - 0xf0,0x3d,0x86,0x28,0x86,0x29,0x84,0x2a, - 0xb9,0x00,0x02,0x49,0x30,0xc9,0x0a,0x90, - 0x06,0x69,0x88,0xc9,0xfa,0x90,0x11,0x0a, - 0x0a,0x0a,0x0a,0xa2,0x04,0x0a,0x26,0x28, - 0x26,0x29,0xca,0xd0,0xf8,0xc8,0xd0,0xe0, - 0xc4,0x2a,0xd0,0x02,0x18,0x60,0x24,0x2b, - 0x50,0x10,0xa5,0x28,0x81,0x26,0xe6,0x26, - 0xd0,0xaf,0xe6,0x27,0x4c,0x41,0xff,0x6c, - 0x24,0x00,0x30,0x27,0xa2,0x02,0xb5,0x27, - 0x95,0x25,0x95,0x23,0xca,0xd0,0xf7,0xd0, - 0x12,0x20,0xe5,0xfe,0xa5,0x25,0x20,0xdc, - 0xff,0xa5,0x24,0x20,0xdc,0xff,0xa9,0x3a, - 0x20,0xef,0xff,0x20,0xe0,0xfe,0xa1,0x24, - 0x20,0xdc,0xff,0x86,0x2b,0xa5,0x24,0xc5, - 0x28,0xa5,0x25,0xe5,0x29,0xb0,0xc5,0xe6, - 0x24,0xd0,0x02,0xe6,0x25,0xa5,0x24,0x29, - 0x07,0x10,0xcc,0x00,0x48,0x4a,0x4a,0x4a, - 0x4a,0x20,0xe5,0xff,0x68,0x29,0x0f,0x09, - 0x30,0xc9,0x3a,0x90,0x02,0x69,0x06,0x2c, - 0x12,0xd0,0x30,0xfb,0x8d,0x12,0xd0,0x60, - 0x00,0x00,0x00,0x0f,0x00,0xff,0x14,0xfe - ]; - return { - start: function krusader_start() { - return 0xe0; - }, - end: function krusader_end() { - return 0xff; - }, - read: function krusader_read(page, off) { - return rom[(page - 0xe0) << 8 | off]; - }, - write: function krusader_write(page, off, val) { - rom[(page - 0xe0) << 8 | off] = val; - }, - getState: function krusader_getState() { return {}; }, - setState: function krusader_setState() {} - }; -} diff --git a/js/roms/krusader.ts b/js/roms/krusader.ts new file mode 100644 index 0000000..71e980d --- /dev/null +++ b/js/roms/krusader.ts @@ -0,0 +1,706 @@ +import { byte } from 'js/types'; + +export default class Krusader { + rom = [ + 0x4c, 0xb0, 0xe2, 0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad, 0x10, 0xd0, 0x60, + 0x8a, 0x29, 0x20, 0xf0, 0x23, 0xa9, 0xa0, 0x85, 0xe4, 0x4c, 0xc9, 0xe3, + 0xa9, 0x20, 0xc5, 0x24, 0xb0, 0x0c, 0xa9, 0x8d, 0xa0, 0x07, 0x20, 0xc9, + 0xe3, 0xa9, 0xa0, 0x88, 0xd0, 0xf8, 0xa0, 0x00, 0xb1, 0xe2, 0xe6, 0xe2, + 0xd0, 0x02, 0xe6, 0xe3, 0x60, 0x20, 0x15, 0xe7, 0x20, 0x76, 0xe5, 0xa5, + 0xe2, 0xc5, 0xe6, 0xa5, 0xe3, 0xe5, 0xe7, 0xb0, 0xef, 0x20, 0x6d, 0xe0, + 0x4c, 0x3b, 0xe0, 0xa5, 0xca, 0x85, 0xe2, 0xa5, 0xcb, 0x85, 0xe3, 0xa5, + 0x4c, 0x85, 0xe6, 0xa5, 0x4d, 0x85, 0xe7, 0xd0, 0xde, 0x20, 0x15, 0xe7, + 0x20, 0x6d, 0xe5, 0xa5, 0xe4, 0x85, 0xe2, 0xa5, 0xe5, 0x85, 0xe3, 0xb0, + 0xc7, 0x86, 0xd8, 0xa9, 0xa0, 0x85, 0xfa, 0x20, 0x2a, 0xe0, 0x98, 0x85, + 0xe4, 0x20, 0x2a, 0xe0, 0xaa, 0x20, 0x2a, 0xe0, 0x20, 0x1b, 0xe5, 0x20, + 0x18, 0xe0, 0x84, 0xfa, 0xaa, 0x10, 0x18, 0x0a, 0x10, 0xe9, 0xa5, 0xe4, + 0xd0, 0x03, 0x20, 0x11, 0xe0, 0x8a, 0x20, 0xc9, 0xe3, 0xa9, 0x25, 0x20, + 0x1a, 0xe0, 0xaa, 0x30, 0xf5, 0x85, 0xe4, 0xc9, 0x01, 0xd0, 0x05, 0xa6, + 0xd8, 0x4c, 0xcd, 0xe3, 0x48, 0x84, 0xce, 0xa2, 0xed, 0x86, 0xcf, 0xc9, + 0x51, 0x90, 0x04, 0xc6, 0xcf, 0xe9, 0x50, 0x48, 0xb1, 0xce, 0xaa, 0x88, + 0xb1, 0xce, 0x10, 0xfa, 0xe0, 0xc0, 0xb0, 0x04, 0xe0, 0x00, 0x30, 0xf2, + 0xaa, 0x68, 0xe9, 0x01, 0xd0, 0xe9, 0x24, 0xe4, 0x30, 0x03, 0x20, 0xf8, + 0xef, 0xb1, 0xce, 0x10, 0x10, 0xaa, 0x29, 0x3f, 0x85, 0xe4, 0x18, 0x69, + 0xa0, 0x20, 0xc9, 0xe3, 0x88, 0xe0, 0xc0, 0x90, 0xec, 0x20, 0x0c, 0xe0, + 0x68, 0xc9, 0x5d, 0xf0, 0xa4, 0xc9, 0x28, 0xd0, 0x8a, 0xf0, 0x9e, 0x20, + 0x18, 0xe1, 0x95, 0x50, 0xd5, 0x78, 0x90, 0x11, 0xa0, 0x2b, 0x4c, 0xe0, + 0xe3, 0x20, 0x34, 0xee, 0xd5, 0x50, 0x90, 0xf4, 0x20, 0xe4, 0xef, 0x95, + 0x78, 0x4c, 0x23, 0xe8, 0x20, 0x34, 0xee, 0xf0, 0xe7, 0x38, 0xe9, 0x01, + 0x60, 0x20, 0x18, 0xe1, 0x95, 0x50, 0x18, 0xf5, 0x78, 0x4c, 0x02, 0xe1, + 0xa0, 0x14, 0xd0, 0xd6, 0x20, 0x18, 0xe1, 0xe8, 0xb5, 0x50, 0x85, 0xda, + 0x65, 0xce, 0x48, 0xa8, 0xb5, 0x78, 0x85, 0xdb, 0x65, 0xcf, 0x48, 0xc4, + 0xca, 0xe5, 0xcb, 0xb0, 0xe3, 0xa5, 0xda, 0x69, 0xfe, 0x85, 0xda, 0xa9, + 0xff, 0xa8, 0x65, 0xdb, 0x85, 0xdb, 0xc8, 0xb1, 0xda, 0xd9, 0xcc, 0x00, + 0xd0, 0x0f, 0x98, 0xf0, 0xf5, 0x68, 0x91, 0xda, 0x99, 0xcc, 0x00, 0x88, + 0x10, 0xf7, 0xe8, 0x60, 0xea, 0xa0, 0x80, 0xd0, 0x95, 0xa9, 0x00, 0x20, + 0x0a, 0xe7, 0xa0, 0x02, 0x94, 0x78, 0x20, 0x0a, 0xe7, 0xa9, 0xbf, 0x20, + 0xc9, 0xe3, 0xa0, 0x00, 0x20, 0x9e, 0xe2, 0x94, 0x78, 0xea, 0xea, 0xea, + 0xb5, 0x51, 0x85, 0xce, 0xb5, 0x79, 0x85, 0xcf, 0xe8, 0xe8, 0x20, 0xbc, + 0xe1, 0xb5, 0x4e, 0xd5, 0x76, 0xb0, 0x15, 0xf6, 0x4e, 0xa8, 0xb1, 0xce, + 0xb4, 0x50, 0xc4, 0xe4, 0x90, 0x04, 0xa0, 0x83, 0xd0, 0xc1, 0x91, 0xda, + 0xf6, 0x50, 0x90, 0xe5, 0xb4, 0x50, 0x8a, 0x91, 0xda, 0xe8, 0xe8, 0x60, + 0xb5, 0x51, 0x85, 0xda, 0x38, 0xe9, 0x02, 0x85, 0xe4, 0xb5, 0x79, 0x85, + 0xdb, 0xe9, 0x00, 0x85, 0xe5, 0xa0, 0x00, 0xb1, 0xe4, 0x18, 0xe5, 0xda, + 0x85, 0xe4, 0x60, 0xb5, 0x53, 0x85, 0xce, 0xb5, 0x7b, 0x85, 0xcf, 0xb5, + 0x51, 0x85, 0xda, 0xb5, 0x79, 0x85, 0xdb, 0xe8, 0xe8, 0xe8, 0xa0, 0x00, + 0x94, 0x78, 0x94, 0xa0, 0xc8, 0x94, 0x50, 0xb5, 0x4d, 0xd5, 0x75, 0x08, + 0x48, 0xb5, 0x4f, 0xd5, 0x77, 0x90, 0x07, 0x68, 0x28, 0xb0, 0x02, 0x56, + 0x50, 0x60, 0xa8, 0xb1, 0xce, 0x85, 0xe4, 0x68, 0xa8, 0x28, 0xb0, 0xf3, + 0xb1, 0xda, 0xc5, 0xe4, 0xd0, 0xed, 0xf6, 0x4f, 0xf6, 0x4d, 0xb0, 0xd7, + 0x20, 0xd7, 0xe1, 0x4c, 0x36, 0xe7, 0x20, 0x54, 0xe2, 0x06, 0xce, 0x26, + 0xcf, 0x90, 0x0d, 0x18, 0xa5, 0xe6, 0x65, 0xda, 0x85, 0xe6, 0xa5, 0xe7, + 0x65, 0xdb, 0x85, 0xe7, 0x88, 0xf0, 0x09, 0x06, 0xe6, 0x26, 0xe7, 0x10, + 0xe4, 0x4c, 0x7e, 0xe7, 0xa5, 0xe6, 0x20, 0x08, 0xe7, 0xa5, 0xe7, 0x95, + 0xa0, 0x06, 0xe5, 0x90, 0x28, 0x4c, 0x6f, 0xe7, 0xa9, 0x55, 0x85, 0xe5, + 0x20, 0x5b, 0xe2, 0xa5, 0xce, 0x85, 0xda, 0xa5, 0xcf, 0x85, 0xdb, 0x20, + 0x15, 0xe7, 0x84, 0xe6, 0x84, 0xe7, 0xa5, 0xcf, 0x10, 0x09, 0xca, 0x06, + 0xe5, 0x20, 0x6f, 0xe7, 0x20, 0x15, 0xe7, 0xa0, 0x10, 0x60, 0x20, 0x6c, + 0xee, 0xf0, 0xc5, 0xff, 0xc9, 0x84, 0xd0, 0x02, 0x46, 0xf8, 0xc9, 0xdf, + 0xf0, 0x11, 0xc9, 0x9b, 0xf0, 0x06, 0x99, 0x00, 0x02, 0xc8, 0x10, 0x0a, + 0xa0, 0x8b, 0x20, 0xc4, 0xe3, 0xa0, 0x01, 0x88, 0x30, 0xf6, 0x20, 0x03, + 0xe0, 0xea, 0xea, 0x20, 0xc9, 0xe3, 0xc9, 0x8d, 0xd0, 0xd6, 0xa9, 0xdf, + 0x99, 0x00, 0x02, 0x60, 0x20, 0xd3, 0xef, 0x20, 0xcd, 0xe3, 0x46, 0xd9, + 0xa9, 0xbe, 0x20, 0xc9, 0xe3, 0xa0, 0x00, 0x84, 0xfa, 0x24, 0xf8, 0x10, + 0x0c, 0xa6, 0xf6, 0xa5, 0xf7, 0x20, 0x1b, 0xe5, 0xa9, 0xa0, 0x20, 0xc9, + 0xe3, 0xa2, 0xff, 0x9a, 0x20, 0x9e, 0xe2, 0x84, 0xf1, 0x8a, 0x85, 0xc8, + 0xa2, 0x20, 0x20, 0x91, 0xe4, 0xa5, 0xc8, 0x69, 0x00, 0x85, 0xe0, 0xa9, + 0x00, 0xaa, 0x69, 0x02, 0x85, 0xe1, 0xa1, 0xe0, 0x29, 0xf0, 0xc9, 0xb0, + 0xf0, 0x03, 0x4c, 0x83, 0xe8, 0xa0, 0x02, 0xb1, 0xe0, 0x99, 0xcd, 0x00, + 0x88, 0xd0, 0xf8, 0x20, 0x8a, 0xe3, 0xa5, 0xf1, 0xe5, 0xc8, 0xc9, 0x04, + 0xf0, 0xa8, 0x91, 0xe0, 0xa5, 0xca, 0xf1, 0xe0, 0x85, 0xe4, 0xa5, 0xcb, + 0xe9, 0x00, 0x85, 0xe5, 0xa5, 0xe4, 0xc5, 0xcc, 0xa5, 0xe5, 0xe5, 0xcd, + 0x90, 0x45, 0xa5, 0xca, 0xf1, 0xe0, 0x85, 0xe6, 0xa5, 0xcb, 0xe9, 0x00, + 0x85, 0xe7, 0xb1, 0xca, 0x91, 0xe6, 0xe6, 0xca, 0xd0, 0x02, 0xe6, 0xcb, + 0xa5, 0xe2, 0xc5, 0xca, 0xa5, 0xe3, 0xe5, 0xcb, 0xb0, 0xe0, 0xb5, 0xe4, + 0x95, 0xca, 0xca, 0x10, 0xf9, 0xb1, 0xe0, 0xa8, 0x88, 0xb1, 0xe0, 0x91, + 0xe6, 0x98, 0xd0, 0xf8, 0x24, 0xf8, 0x10, 0x09, 0xb5, 0xf7, 0x75, 0xf5, + 0x95, 0xf7, 0xe8, 0xf0, 0xf7, 0x10, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xa0, + 0x14, 0xd0, 0x71, 0x20, 0x15, 0xe7, 0xa5, 0xe2, 0x85, 0xe6, 0xa5, 0xe3, + 0x85, 0xe7, 0x20, 0x75, 0xe5, 0xa5, 0xe2, 0x85, 0xe4, 0xa5, 0xe3, 0x85, + 0xe5, 0xd0, 0x0e, 0x20, 0x15, 0xe7, 0x20, 0x6d, 0xe5, 0xa5, 0xe6, 0x85, + 0xe2, 0xa5, 0xe7, 0x85, 0xe3, 0xa0, 0x00, 0xa5, 0xca, 0xc5, 0xe4, 0xa5, + 0xcb, 0xe5, 0xe5, 0xb0, 0x16, 0xa5, 0xe4, 0xd0, 0x02, 0xc6, 0xe5, 0xc6, + 0xe4, 0xa5, 0xe6, 0xd0, 0x02, 0xc6, 0xe7, 0xc6, 0xe6, 0xb1, 0xe4, 0x91, + 0xe6, 0x90, 0xe0, 0xa5, 0xe6, 0x85, 0xca, 0xa5, 0xe7, 0x85, 0xcb, 0x60, + 0x20, 0xc9, 0xe3, 0xc8, 0xb9, 0x00, 0xeb, 0x30, 0xf7, 0xc9, 0x8d, 0xd0, + 0x06, 0xa9, 0x00, 0x85, 0x24, 0xa9, 0x8d, 0xe6, 0x24, 0x2c, 0x12, 0xd0, + 0x30, 0xfb, 0x8d, 0x12, 0xd0, 0x60, 0xa0, 0x06, 0x20, 0xd3, 0xee, 0x24, + 0xd9, 0x30, 0x03, 0x4c, 0xb6, 0xe2, 0x4c, 0x9a, 0xeb, 0x2a, 0x69, 0xa0, + 0xdd, 0x00, 0x02, 0xd0, 0x53, 0xb1, 0xfe, 0x0a, 0x30, 0x06, 0x88, 0xb1, + 0xfe, 0x30, 0x29, 0xc8, 0x86, 0xc8, 0x98, 0x48, 0xa2, 0x00, 0xa1, 0xfe, + 0xaa, 0x4a, 0x49, 0x48, 0x11, 0xfe, 0xc9, 0xc0, 0x90, 0x01, 0xe8, 0xc8, + 0xd0, 0xf3, 0x68, 0xa8, 0x8a, 0x4c, 0xc0, 0xe4, 0xe6, 0xf1, 0xa6, 0xf1, + 0xf0, 0xbc, 0x9d, 0x00, 0x02, 0x60, 0xa6, 0xc8, 0xa9, 0xa0, 0xe8, 0xdd, + 0x00, 0x02, 0xb0, 0xfa, 0xb1, 0xfe, 0x29, 0x3f, 0x4a, 0xd0, 0xb6, 0xbd, + 0x00, 0x02, 0xb0, 0x06, 0x69, 0x3f, 0xc9, 0x1a, 0x90, 0x6f, 0x69, 0x4f, + 0xc9, 0x0a, 0x90, 0x69, 0xa6, 0xfd, 0xc8, 0xb1, 0xfe, 0x29, 0xe0, 0xc9, + 0x20, 0xf0, 0x7a, 0xb5, 0xa8, 0x85, 0xc8, 0xb5, 0xd1, 0x85, 0xf1, 0x88, + 0xb1, 0xfe, 0x0a, 0x10, 0xfa, 0x88, 0xb0, 0x38, 0x0a, 0x30, 0x35, 0xb4, + 0x58, 0x84, 0xff, 0xb4, 0x80, 0xe8, 0x10, 0xda, 0xf0, 0xb3, 0xc9, 0x7e, + 0xb0, 0x22, 0xca, 0x10, 0x04, 0xa0, 0x06, 0x10, 0x29, 0x94, 0x80, 0xa4, + 0xff, 0x94, 0x58, 0xa4, 0xc8, 0x94, 0xa8, 0xa4, 0xf1, 0x94, 0xd1, 0x29, + 0x1f, 0xa8, 0xb9, 0x20, 0xec, 0x0a, 0xa8, 0xa9, 0x76, 0x2a, 0x85, 0xff, + 0xd0, 0x01, 0xc8, 0xc8, 0x86, 0xfd, 0xb1, 0xfe, 0x30, 0x84, 0xd0, 0x05, + 0xa0, 0x0e, 0x4c, 0xe0, 0xe3, 0xc9, 0x03, 0xb0, 0xc3, 0x4a, 0xa6, 0xc8, + 0xe8, 0xbd, 0x00, 0x02, 0x90, 0x04, 0xc9, 0xa2, 0xf0, 0x0a, 0xc9, 0xdf, + 0xf0, 0x06, 0x86, 0xc8, 0x20, 0x1c, 0xe4, 0xc8, 0x88, 0xa6, 0xfd, 0xb1, + 0xfe, 0x88, 0x0a, 0x10, 0xcf, 0xb4, 0x58, 0x84, 0xff, 0xb4, 0x80, 0xe8, + 0xb1, 0xfe, 0x29, 0x9f, 0xd0, 0xed, 0x85, 0xf2, 0x85, 0xf3, 0x98, 0x48, + 0x86, 0xfd, 0xb4, 0xd0, 0x84, 0xc9, 0x18, 0xa9, 0x0a, 0x85, 0xf9, 0xa2, + 0x00, 0xc8, 0xb9, 0x00, 0x02, 0x29, 0x0f, 0x65, 0xf2, 0x48, 0x8a, 0x65, + 0xf3, 0x30, 0x1c, 0xaa, 0x68, 0xc6, 0xf9, 0xd0, 0xf2, 0x85, 0xf2, 0x86, + 0xf3, 0xc4, 0xf1, 0xd0, 0xde, 0xa4, 0xc9, 0xc8, 0x84, 0xf1, 0x20, 0x1c, + 0xe4, 0x68, 0xa8, 0xa5, 0xf3, 0xb0, 0xa9, 0xa0, 0x00, 0x10, 0x8b, 0x85, + 0xf3, 0x86, 0xf2, 0xa2, 0x04, 0x86, 0xc9, 0xa9, 0xb0, 0x85, 0xf9, 0xa5, + 0xf2, 0xdd, 0x63, 0xe5, 0xa5, 0xf3, 0xfd, 0x68, 0xe5, 0x90, 0x0d, 0x85, + 0xf3, 0xa5, 0xf2, 0xfd, 0x63, 0xe5, 0x85, 0xf2, 0xe6, 0xf9, 0xd0, 0xe7, + 0xa5, 0xf9, 0xe8, 0xca, 0xf0, 0x0e, 0xc9, 0xb0, 0xf0, 0x02, 0x85, 0xc9, + 0x24, 0xc9, 0x30, 0x04, 0xa5, 0xfa, 0xf0, 0x0b, 0x20, 0xc9, 0xe3, 0x24, + 0xf8, 0x10, 0x04, 0x99, 0x00, 0x02, 0xc8, 0xca, 0x10, 0xc1, 0x60, 0x01, + 0x0a, 0x64, 0xe8, 0x10, 0x00, 0x00, 0x00, 0x03, 0x27, 0xa5, 0xca, 0x85, + 0xe6, 0xa5, 0xcb, 0x85, 0xe7, 0xe8, 0xa5, 0xe7, 0x85, 0xe5, 0xa5, 0xe6, + 0x85, 0xe4, 0xc5, 0x4c, 0xa5, 0xe5, 0xe5, 0x4d, 0xb0, 0x26, 0xa0, 0x01, + 0xb1, 0xe4, 0xe5, 0xce, 0xc8, 0xb1, 0xe4, 0xe5, 0xcf, 0xb0, 0x19, 0xa0, + 0x00, 0xa5, 0xe6, 0x71, 0xe4, 0x85, 0xe6, 0x90, 0x03, 0xe6, 0xe7, 0x18, + 0xc8, 0xa5, 0xce, 0xf1, 0xe4, 0xc8, 0xa5, 0xcf, 0xf1, 0xe4, 0xb0, 0xca, + 0x60, 0x46, 0xf8, 0xa5, 0x4c, 0x85, 0xca, 0xa5, 0x4d, 0x85, 0xcb, 0xa5, + 0x4a, 0x85, 0xcc, 0xa5, 0x4b, 0x85, 0xcd, 0xa9, 0x00, 0x85, 0xfb, 0x85, + 0xfc, 0x85, 0xfe, 0xa9, 0x00, 0x85, 0x1d, 0x60, 0xa5, 0xd0, 0x69, 0x05, + 0x85, 0xd2, 0xa5, 0xd1, 0x69, 0x00, 0x85, 0xd3, 0xa5, 0xd2, 0xc5, 0xca, + 0xa5, 0xd3, 0xe5, 0xcb, 0x90, 0x03, 0x4c, 0x6b, 0xe3, 0xa5, 0xce, 0x91, + 0xd0, 0xa5, 0xcf, 0xc8, 0x91, 0xd0, 0xa5, 0xd2, 0xc8, 0x91, 0xd0, 0xa5, + 0xd3, 0xc8, 0x91, 0xd0, 0xa9, 0x00, 0xc8, 0x91, 0xd0, 0xc8, 0x91, 0xd0, + 0xa5, 0xd2, 0x85, 0xcc, 0xa5, 0xd3, 0x85, 0xcd, 0xa5, 0xd0, 0x90, 0x43, + 0x85, 0xce, 0x84, 0xcf, 0x20, 0xff, 0xe6, 0x30, 0x0e, 0xc9, 0x40, 0xf0, + 0x0a, 0x4c, 0x28, 0xe6, 0x06, 0xc9, 0x49, 0xd0, 0x07, 0xa9, 0x49, 0x85, + 0xcf, 0x20, 0xff, 0xe6, 0xa5, 0x4b, 0x85, 0xd1, 0xa5, 0x4a, 0x85, 0xd0, + 0xc5, 0xcc, 0xa5, 0xd1, 0xe5, 0xcd, 0xb0, 0x94, 0xb1, 0xd0, 0xc8, 0xc5, + 0xce, 0xd0, 0x06, 0xb1, 0xd0, 0xc5, 0xcf, 0xf0, 0x0e, 0xc8, 0xb1, 0xd0, + 0x48, 0xc8, 0xb1, 0xd0, 0x85, 0xd1, 0x68, 0xa0, 0x00, 0xf0, 0xdb, 0xa5, + 0xd0, 0x69, 0x03, 0x20, 0x0a, 0xe7, 0xa5, 0xd1, 0x69, 0x00, 0x95, 0x78, + 0xa5, 0xcf, 0xc9, 0x40, 0xd0, 0x1c, 0x88, 0x98, 0x20, 0x0a, 0xe7, 0x88, + 0x94, 0x78, 0xa0, 0x03, 0xf6, 0x78, 0xc8, 0xb1, 0xd0, 0x30, 0xf9, 0x10, + 0x09, 0xa9, 0x00, 0x85, 0xd4, 0x85, 0xd5, 0xa2, 0x20, 0x48, 0xa0, 0x00, + 0xb1, 0xe0, 0x10, 0x18, 0x0a, 0x30, 0x81, 0x20, 0xff, 0xe6, 0x20, 0x08, + 0xe7, 0x20, 0xff, 0xe6, 0x95, 0xa0, 0x24, 0xd4, 0x10, 0x01, 0xca, 0x20, + 0xff, 0xe6, 0xb0, 0xe6, 0xc9, 0x28, 0xd0, 0x1f, 0xa5, 0xe0, 0x20, 0x0a, + 0xe7, 0xa5, 0xe1, 0x95, 0x78, 0x24, 0xd4, 0x30, 0x0b, 0xa9, 0x01, 0x20, + 0x0a, 0xe7, 0xa9, 0x00, 0x95, 0x78, 0xf6, 0x78, 0x20, 0xff, 0xe6, 0x30, + 0xf9, 0xb0, 0xd3, 0x24, 0xd4, 0x10, 0x06, 0xc9, 0x04, 0xb0, 0xd0, 0x46, + 0xd4, 0xa8, 0x85, 0xd6, 0xb9, 0x98, 0xe9, 0x29, 0x55, 0x0a, 0x85, 0xd7, + 0x68, 0xa8, 0xb9, 0x98, 0xe9, 0x29, 0xaa, 0xc5, 0xd7, 0xb0, 0x09, 0x98, + 0x48, 0x20, 0xff, 0xe6, 0xa5, 0xd6, 0x90, 0x95, 0xb9, 0x10, 0xea, 0x85, + 0xce, 0xb9, 0x88, 0xea, 0x85, 0xcf, 0x20, 0xfc, 0xe6, 0x4c, 0xd8, 0xe6, + 0x6c, 0xce, 0x00, 0xe6, 0xe0, 0xd0, 0x02, 0xe6, 0xe1, 0xb1, 0xe0, 0x60, + 0x94, 0x77, 0xca, 0x30, 0x03, 0x95, 0x50, 0x60, 0xa0, 0x66, 0x4c, 0xe0, + 0xe3, 0xa0, 0x00, 0xb5, 0x50, 0x85, 0xce, 0xb5, 0xa0, 0x85, 0xcf, 0xb5, + 0x78, 0xf0, 0x0e, 0x85, 0xcf, 0xb1, 0xce, 0x48, 0xc8, 0xb1, 0xce, 0x85, + 0xcf, 0x68, 0x85, 0xce, 0x88, 0xe8, 0x60, 0x20, 0x4a, 0xe7, 0x20, 0x15, + 0xe7, 0x98, 0x20, 0x08, 0xe7, 0x95, 0xa0, 0xc5, 0xce, 0xd0, 0x06, 0xc5, + 0xcf, 0xd0, 0x02, 0xf6, 0x50, 0x60, 0x20, 0x82, 0xe7, 0x20, 0x59, 0xe7, + 0x20, 0x15, 0xe7, 0x24, 0xcf, 0x30, 0x1b, 0xca, 0x60, 0x20, 0x15, 0xe7, + 0xa5, 0xcf, 0xd0, 0x04, 0xa5, 0xce, 0xf0, 0xf3, 0xa9, 0xff, 0x20, 0x08, + 0xe7, 0x95, 0xa0, 0x24, 0xcf, 0x30, 0xe9, 0x20, 0x15, 0xe7, 0x98, 0x38, + 0xe5, 0xce, 0x20, 0x08, 0xe7, 0x98, 0xe5, 0xcf, 0x50, 0x23, 0xa0, 0x00, + 0x10, 0x90, 0x20, 0x6f, 0xe7, 0x20, 0x15, 0xe7, 0xa5, 0xce, 0x85, 0xda, + 0xa5, 0xcf, 0x85, 0xdb, 0x20, 0x15, 0xe7, 0x18, 0xa5, 0xce, 0x65, 0xda, + 0x20, 0x08, 0xe7, 0xa5, 0xcf, 0x65, 0xdb, 0x70, 0xdd, 0x95, 0xa0, 0x60, + 0x20, 0x15, 0xe7, 0xa4, 0xce, 0xf0, 0x05, 0x88, 0xa5, 0xcf, 0xf0, 0x0c, + 0x60, 0xa5, 0x24, 0x09, 0x07, 0xa8, 0xc8, 0xa9, 0xa0, 0x20, 0xc9, 0xe3, + 0xc4, 0x24, 0xb0, 0xf7, 0x60, 0x20, 0xb1, 0xe7, 0x20, 0x15, 0xe7, 0xa5, + 0xcf, 0x10, 0x0a, 0xa9, 0xad, 0x20, 0xc9, 0xe3, 0x20, 0x72, 0xe7, 0x50, + 0xef, 0x88, 0x84, 0xd5, 0x86, 0xcf, 0xa6, 0xce, 0x20, 0x1b, 0xe5, 0xa6, + 0xcf, 0x60, 0x20, 0x15, 0xe7, 0xa5, 0xce, 0x85, 0xf6, 0xa5, 0xcf, 0x85, + 0xf7, 0x88, 0x84, 0xf8, 0xc8, 0xa9, 0x0a, 0x85, 0xf4, 0x84, 0xf5, 0x60, + 0x20, 0x15, 0xe7, 0xa5, 0xce, 0xa4, 0xcf, 0x10, 0xf2, 0x20, 0x15, 0xe7, + 0xb5, 0x50, 0x85, 0xda, 0xb5, 0x78, 0x85, 0xdb, 0xa5, 0xce, 0x91, 0xda, + 0xc8, 0xa5, 0xcf, 0x91, 0xda, 0xe8, 0x60, 0x68, 0x68, 0x24, 0xd5, 0x10, + 0x05, 0x20, 0xcd, 0xe3, 0x46, 0xd5, 0x60, 0xa0, 0xff, 0x84, 0xd7, 0x60, + 0x20, 0xcd, 0xef, 0xf0, 0x07, 0xa9, 0x25, 0x85, 0xd6, 0x88, 0x84, 0xd4, + 0xe8, 0x60, 0xa5, 0xca, 0xa4, 0xcb, 0xd0, 0x5a, 0xa0, 0x41, 0xa5, 0xfc, + 0xc9, 0x08, 0xb0, 0x5e, 0xa8, 0xe6, 0xfc, 0xa5, 0xe0, 0x99, 0x00, 0x01, + 0xa5, 0xe1, 0x99, 0x08, 0x01, 0xa5, 0xdc, 0x99, 0x10, 0x01, 0xa5, 0xdd, + 0x99, 0x18, 0x01, 0x20, 0x15, 0xe7, 0x20, 0x6d, 0xe5, 0x90, 0x04, 0xa0, + 0x37, 0xd0, 0x3b, 0xa5, 0xe4, 0xa4, 0xe5, 0x85, 0xdc, 0x84, 0xdd, 0x2c, + 0x11, 0xd0, 0x30, 0x4f, 0x18, 0x69, 0x03, 0x90, 0x01, 0xc8, 0xa2, 0xff, + 0x86, 0xd9, 0x9a, 0x85, 0xe0, 0x84, 0xe1, 0x20, 0x79, 0xe6, 0x24, 0xd9, + 0x10, 0x49, 0x18, 0xa0, 0x00, 0xa5, 0xdc, 0x71, 0xdc, 0xa4, 0xdd, 0x90, + 0x01, 0xc8, 0xc5, 0x4c, 0xd0, 0xd1, 0xc4, 0x4d, 0xd0, 0xcd, 0xa0, 0x34, + 0x46, 0xd9, 0x4c, 0xe0, 0xe3, 0xa0, 0x4a, 0xa5, 0xfc, 0xf0, 0xf7, 0xc6, + 0xfc, 0xa8, 0xb9, 0x0f, 0x01, 0x85, 0xdc, 0xb9, 0x17, 0x01, 0x85, 0xdd, + 0xbe, 0xff, 0x00, 0xb9, 0x07, 0x01, 0xa8, 0x8a, 0x4c, 0x7a, 0xe8, 0xa0, + 0x63, 0x20, 0xc4, 0xe3, 0xa0, 0x01, 0xb1, 0xdc, 0xaa, 0xc8, 0xb1, 0xdc, + 0x20, 0x1b, 0xe5, 0x4c, 0xb3, 0xe2, 0xc6, 0xfb, 0xa0, 0x5b, 0xa5, 0xfb, + 0xf0, 0xc4, 0xa8, 0xb5, 0x50, 0xd9, 0x1f, 0x01, 0xd0, 0xf0, 0xb5, 0x78, + 0xd9, 0x27, 0x01, 0xd0, 0xe9, 0xb9, 0x2f, 0x01, 0x85, 0xda, 0xb9, 0x37, + 0x01, 0x85, 0xdb, 0x20, 0x15, 0xe7, 0xca, 0x20, 0x93, 0xe7, 0x20, 0x01, + 0xe8, 0xca, 0xa4, 0xfb, 0xb9, 0x67, 0x01, 0x95, 0x9f, 0xb9, 0x5f, 0x01, + 0xa0, 0x00, 0x20, 0x08, 0xe7, 0x20, 0x82, 0xe7, 0x20, 0x59, 0xe7, 0x20, + 0x15, 0xe7, 0xa4, 0xfb, 0xa5, 0xce, 0xf0, 0x05, 0x59, 0x37, 0x01, 0x10, + 0x12, 0xb9, 0x3f, 0x01, 0x85, 0xdc, 0xb9, 0x47, 0x01, 0x85, 0xdd, 0xbe, + 0x4f, 0x01, 0xb9, 0x57, 0x01, 0xd0, 0x87, 0xc6, 0xfb, 0x60, 0xa0, 0x54, + 0xa5, 0xfb, 0xc9, 0x08, 0xf0, 0x9a, 0xe6, 0xfb, 0xa8, 0xb5, 0x50, 0x99, + 0x20, 0x01, 0xb5, 0x78, 0x99, 0x28, 0x01, 0x60, 0x20, 0x15, 0xe7, 0xa4, + 0xfb, 0xa5, 0xce, 0x99, 0x5f, 0x01, 0xa5, 0xcf, 0x99, 0x67, 0x01, 0xa9, + 0x01, 0x99, 0x2f, 0x01, 0xa9, 0x00, 0x99, 0x37, 0x01, 0xa5, 0xdc, 0x99, + 0x3f, 0x01, 0xa5, 0xdd, 0x99, 0x47, 0x01, 0xa5, 0xe0, 0x99, 0x4f, 0x01, + 0xa5, 0xe1, 0x99, 0x57, 0x01, 0x60, 0x20, 0x15, 0xe7, 0xa4, 0xfb, 0xa5, + 0xce, 0x99, 0x2f, 0x01, 0xa5, 0xcf, 0x4c, 0x66, 0xe9, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x3f, 0x3f, 0xc0, 0xc0, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, + 0x3c, 0x30, 0x0f, 0xc0, 0xcc, 0xff, 0x55, 0x00, 0xab, 0xab, 0x03, 0x03, + 0xff, 0xff, 0x55, 0xff, 0xff, 0x55, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xff, + 0x55, 0xc3, 0xc3, 0xc3, 0x55, 0xf0, 0xf0, 0xcf, 0x56, 0x56, 0x56, 0x55, + 0xff, 0xff, 0x55, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, + 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0xab, 0x03, 0x57, 0x03, 0x03, 0x03, + 0x03, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0x17, 0xff, 0xff, 0x19, + 0x5d, 0x35, 0x4b, 0xf2, 0xec, 0x87, 0x6f, 0xad, 0xb7, 0xe2, 0xf8, 0x54, + 0x80, 0x96, 0x85, 0x82, 0x22, 0x10, 0x33, 0x4a, 0x13, 0x06, 0x0b, 0x4a, + 0x01, 0x40, 0x47, 0x7a, 0x00, 0xff, 0x23, 0x09, 0x5b, 0x16, 0xb6, 0xcb, + 0xff, 0xff, 0xfb, 0xff, 0xff, 0x24, 0xf6, 0x4e, 0x59, 0x50, 0x00, 0xff, + 0x23, 0xa3, 0x6f, 0x36, 0x23, 0xd7, 0x1c, 0x22, 0xc2, 0xae, 0xba, 0x23, + 0xff, 0xff, 0x21, 0x30, 0x1e, 0x03, 0xc4, 0x20, 0x00, 0xc1, 0xff, 0xff, + 0xff, 0xa0, 0x30, 0x1e, 0xa4, 0xd3, 0xb6, 0xbc, 0xaa, 0x3a, 0x01, 0x50, + 0x7e, 0xd8, 0xd8, 0xa5, 0x3c, 0xff, 0x16, 0x5b, 0x28, 0x03, 0xc4, 0x1d, + 0x00, 0x0c, 0x4e, 0x00, 0x3e, 0x00, 0xa6, 0xb0, 0x00, 0xbc, 0xc6, 0x57, + 0x8c, 0x01, 0x27, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xff, 0xff, 0xe8, + 0xe0, 0xe0, 0xe0, 0xef, 0xef, 0xe3, 0xe3, 0xe5, 0xe5, 0xe7, 0xe7, 0xee, + 0xef, 0xef, 0xe7, 0xe7, 0xe2, 0xef, 0xe7, 0xe7, 0xec, 0xec, 0xec, 0xe7, + 0xec, 0xec, 0xec, 0xe2, 0x00, 0xff, 0xe8, 0xe1, 0xe8, 0xe8, 0xef, 0xeb, + 0xff, 0xff, 0xe0, 0xff, 0xff, 0xef, 0xee, 0xef, 0xe7, 0xe7, 0x00, 0xff, + 0xe8, 0xe7, 0xe7, 0xe7, 0xe8, 0xe1, 0xe2, 0xee, 0xee, 0xee, 0xee, 0xe8, + 0xff, 0xff, 0xe1, 0xe1, 0xef, 0xee, 0xe7, 0xe8, 0xee, 0xe7, 0xff, 0xff, + 0xff, 0xee, 0xe1, 0xef, 0xe7, 0xe8, 0xef, 0xef, 0xeb, 0xe9, 0xe8, 0xe9, + 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xff, 0xe8, 0xe8, 0xe8, 0xee, 0xe7, 0xe8, + 0xef, 0xef, 0xee, 0xef, 0xee, 0xef, 0xee, 0xee, 0xef, 0xee, 0xee, 0xee, + 0xe1, 0xe8, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbe, 0xb3, 0xb2, 0xb7, + 0xb6, 0x37, 0xd4, 0xcf, 0xcf, 0xa0, 0xcc, 0xcf, 0xce, 0x47, 0xd3, 0xd9, + 0xce, 0xd4, 0xc1, 0x58, 0xcd, 0xc5, 0xcd, 0xa0, 0xc6, 0xd5, 0xcc, 0x4c, + 0xd4, 0xcf, 0xcf, 0xa0, 0xcd, 0xc1, 0xce, 0xd9, 0xa0, 0xd0, 0xc1, 0xd2, + 0xc5, 0xce, 0x53, 0xd3, 0xd4, 0xd2, 0xc9, 0xce, 0x47, 0xce, 0xcf, 0xa0, + 0xc5, 0xce, 0x44, 0xc2, 0xc1, 0xc4, 0xa0, 0xc2, 0xd2, 0xc1, 0xce, 0xc3, + 0x48, 0xbe, 0xb8, 0xa0, 0xc7, 0xcf, 0xd3, 0xd5, 0xc2, 0x53, 0xc2, 0xc1, + 0xc4, 0xa0, 0xd2, 0xc5, 0xd4, 0xd5, 0xd2, 0x4e, 0xbe, 0xb8, 0xa0, 0xc6, + 0xcf, 0xd2, 0x53, 0xc2, 0xc1, 0xc4, 0xa0, 0xce, 0xc5, 0xd8, 0x54, 0xd3, + 0xd4, 0xcf, 0xd0, 0xd0, 0xc5, 0xc4, 0xa0, 0xc1, 0xd4, 0x20, 0xaa, 0xaa, + 0xaa, 0x20, 0xa0, 0xc5, 0xd2, 0xd2, 0x0d, 0xbe, 0xb2, 0xb5, 0x35, 0xd2, + 0xc1, 0xce, 0xc7, 0x45, 0xc4, 0xc9, 0x4d, 0xd3, 0xd4, 0xd2, 0xa0, 0xcf, + 0xd6, 0xc6, 0x4c, 0xdc, 0x0d, 0xd2, 0xc5, 0xd4, 0xd9, 0xd0, 0xc5, 0xa0, + 0xcc, 0xc9, 0xce, 0xc5, 0x8d, 0x3f, 0x46, 0xd9, 0x90, 0x03, 0x4c, 0xc3, + 0xe8, 0xa6, 0xcf, 0x9a, 0xa6, 0xce, 0xa0, 0x8d, 0xd0, 0x02, 0xa0, 0x99, + 0x20, 0xc4, 0xe3, 0x86, 0xce, 0xba, 0x86, 0xcf, 0xa0, 0xfe, 0x84, 0xd9, + 0xc8, 0x84, 0xc8, 0x20, 0x99, 0xe2, 0x84, 0xf1, 0xa2, 0x20, 0xa9, 0x30, + 0x20, 0x91, 0xe4, 0xe6, 0xd9, 0xa6, 0xce, 0xa4, 0xc8, 0x0a, 0x85, 0xce, + 0xc8, 0xb9, 0x00, 0x02, 0xc9, 0x74, 0xf0, 0xd2, 0x49, 0xb0, 0xc9, 0x0a, + 0xb0, 0xf0, 0xc8, 0xc8, 0x84, 0xc8, 0xb9, 0x00, 0x02, 0x48, 0xb9, 0xff, + 0x01, 0xa0, 0x00, 0x20, 0x08, 0xe7, 0x68, 0x95, 0xa0, 0xa5, 0xce, 0xc9, + 0xc7, 0xd0, 0x03, 0x20, 0x6f, 0xe7, 0x4c, 0x01, 0xe8, 0xff, 0xff, 0xff, + 0x50, 0x20, 0x13, 0xec, 0xd0, 0x15, 0x20, 0x0b, 0xec, 0xd0, 0x10, 0x20, + 0x82, 0xe7, 0x20, 0x6f, 0xe7, 0x50, 0x03, 0x20, 0x82, 0xe7, 0x20, 0x59, + 0xe7, 0x56, 0x50, 0x4c, 0x36, 0xe7, 0xff, 0xff, 0xc1, 0xff, 0x7f, 0xd1, + 0xcc, 0xc7, 0xcf, 0xce, 0xc5, 0x9a, 0x98, 0x8b, 0x96, 0x95, 0x93, 0xbf, + 0xb2, 0x32, 0x2d, 0x2b, 0xbc, 0xb0, 0xac, 0xbe, 0x35, 0x8e, 0x61, 0xff, + 0xff, 0xff, 0xdd, 0xfb, 0x20, 0xc9, 0xef, 0x15, 0x4f, 0x10, 0x05, 0x20, + 0xc9, 0xef, 0x35, 0x4f, 0x95, 0x50, 0x10, 0xcb, 0x4c, 0xc9, 0xef, 0x40, + 0x60, 0x8d, 0x60, 0x8b, 0x00, 0x7e, 0x8c, 0x33, 0x00, 0x00, 0x60, 0x03, + 0xbf, 0x12, 0x00, 0x40, 0x89, 0xc9, 0x47, 0x9d, 0x17, 0x68, 0x9d, 0x0a, + 0x00, 0x40, 0x60, 0x8d, 0x60, 0x8b, 0x00, 0x7e, 0x8c, 0x3c, 0x00, 0x00, + 0x60, 0x03, 0xbf, 0x1b, 0x4b, 0x67, 0xb4, 0xa1, 0x07, 0x8c, 0x07, 0xae, + 0xa9, 0xac, 0xa8, 0x67, 0x8c, 0x07, 0xb4, 0xaf, 0xac, 0xb0, 0x67, 0x9d, + 0xb2, 0xaf, 0xac, 0xaf, 0xa3, 0x67, 0x8c, 0x07, 0xa5, 0xab, 0xaf, 0xb0, + 0xf4, 0xae, 0xa9, 0xb2, 0xb0, 0x7f, 0x0e, 0x27, 0xb4, 0xae, 0xa9, 0xb2, + 0xb0, 0x7f, 0x0e, 0x28, 0xb4, 0xae, 0xa9, 0xb2, 0xb0, 0x64, 0x07, 0xa6, + 0xa9, 0x67, 0xaf, 0xb4, 0xaf, 0xa7, 0x78, 0xb4, 0xa5, 0xac, 0x78, 0x7f, + 0x02, 0xad, 0xa5, 0xb2, 0x67, 0xa2, 0xb5, 0xb3, 0xaf, 0xa7, 0xee, 0xb2, + 0xb5, 0xb4, 0xa5, 0xb2, 0x7e, 0x8c, 0x39, 0xb4, 0xb8, 0xa5, 0xae, 0x67, + 0xb0, 0xa5, 0xb4, 0xb3, 0x27, 0xaf, 0xb4, 0x07, 0x9d, 0x19, 0xb2, 0xaf, + 0xa6, 0x7f, 0x05, 0x37, 0xb4, 0xb5, 0xb0, 0xae, 0xa9, 0x7f, 0x05, 0x28, + 0xb4, 0xb5, 0xb0, 0xae, 0xa9, 0x7f, 0x05, 0x2a, 0xb4, 0xb5, 0xb0, 0xae, + 0xa9, 0xe4, 0xae, 0xa5, 0x00, 0xff, 0xff, 0x47, 0xa2, 0xa1, 0xb4, 0x7f, + 0x0d, 0x30, 0xad, 0xa9, 0xa4, 0x7f, 0x0d, 0x23, 0xad, 0xa9, 0xa4, 0x67, + 0xac, 0xac, 0xa1, 0xa3, 0x00, 0x40, 0x80, 0xc0, 0xc1, 0x80, 0x00, 0x47, + 0x8c, 0x68, 0x8c, 0xdb, 0x67, 0x9b, 0x68, 0x9b, 0x50, 0x8c, 0x63, 0x8c, + 0x7f, 0x01, 0x51, 0x07, 0x88, 0x29, 0x84, 0x80, 0xc4, 0x80, 0x57, 0x71, + 0x07, 0x88, 0x14, 0xed, 0xa5, 0xad, 0xaf, 0xac, 0xed, 0xa5, 0xad, 0xa9, + 0xa8, 0xf2, 0xaf, 0xac, 0xaf, 0xa3, 0x71, 0x08, 0x88, 0xae, 0xa5, 0xac, + 0x68, 0x83, 0x08, 0x68, 0x9d, 0x08, 0x71, 0x07, 0x88, 0x60, 0x76, 0xb4, + 0xaf, 0xae, 0x76, 0x8d, 0x76, 0x8b, 0x51, 0x07, 0x88, 0x19, 0xb8, 0xa4, + 0xae, 0xb2, 0xf2, 0xb3, 0xb5, 0xf3, 0xa2, 0xa1, 0xee, 0xa7, 0xb3, 0xe4, + 0xae, 0xb2, 0xeb, 0xa5, 0xa5, 0xb0, 0x51, 0x07, 0x88, 0x39, 0x81, 0xc1, + 0x4f, 0x7f, 0x0f, 0x2f, 0x00, 0x51, 0x06, 0x88, 0x29, 0xc2, 0x0c, 0x82, + 0x57, 0x8c, 0x6a, 0x8c, 0x42, 0xae, 0xa5, 0xa8, 0xb4, 0x60, 0xae, 0xa5, + 0xa8, 0xb4, 0x4f, 0x7e, 0x1e, 0x35, 0x8c, 0x27, 0x51, 0x07, 0x88, 0x09, + 0x8b, 0xfe, 0xe4, 0xaf, 0xad, 0xf2, 0xaf, 0xe4, 0xae, 0xa1, 0xdc, 0xde, + 0x9c, 0xdd, 0x9c, 0xde, 0xdd, 0x9e, 0xc3, 0xdd, 0xcf, 0xca, 0xcd, 0xcb, + 0x00, 0x47, 0x9d, 0xad, 0xa5, 0xad, 0xaf, 0xac, 0x76, 0x9d, 0xad, 0xa5, + 0xad, 0xa9, 0xa8, 0xe6, 0xa6, 0xaf, 0x60, 0x8c, 0x20, 0xaf, 0xb4, 0xb5, + 0xa1, 0xf2, 0xac, 0xa3, 0xf2, 0xa3, 0xb3, 0x60, 0x8c, 0x20, 0xac, 0xa5, + 0xa4, 0xee, 0xb5, 0xb2, 0x60, 0xae, 0xb5, 0xb2, 0xf4, 0xb3, 0xa9, 0xac, + 0x60, 0x8c, 0x20, 0xb4, 0xb3, 0xa9, 0xac, 0x7a, 0x7e, 0x9a, 0x22, 0x20, + 0x00, 0x60, 0x03, 0xbf, 0x60, 0x03, 0xbf, 0x1f, 0x20, 0xb1, 0xe7, 0xe8, + 0xe8, 0xb5, 0x4f, 0x85, 0xda, 0xb5, 0x77, 0x85, 0xdb, 0xb4, 0x4e, 0x98, + 0xd5, 0x76, 0xb0, 0x09, 0xb1, 0xda, 0x20, 0xc9, 0xe3, 0xc8, 0x4c, 0x0f, + 0xee, 0xa9, 0xff, 0x85, 0xd5, 0x60, 0xe8, 0xa9, 0x00, 0x95, 0x78, 0x95, + 0xa0, 0xb5, 0x77, 0x38, 0xf5, 0x4f, 0x95, 0x50, 0x4c, 0x23, 0xe8, 0xff, + 0x20, 0x15, 0xe7, 0xa5, 0xcf, 0xd0, 0x28, 0xa5, 0xce, 0x60, 0x20, 0x34, + 0xee, 0xa4, 0xc8, 0xc9, 0x30, 0xb0, 0x21, 0xc0, 0x28, 0xb0, 0x1d, 0x60, + 0xea, 0xea, 0x20, 0x34, 0xee, 0x60, 0xea, 0x8a, 0xa2, 0x01, 0xb4, 0xce, + 0x94, 0x4c, 0xb4, 0x48, 0x94, 0xca, 0xca, 0xf0, 0xf5, 0xaa, 0x60, 0xa0, + 0x77, 0x4c, 0xe0, 0xe3, 0xa0, 0x7b, 0xd0, 0xf9, 0x20, 0x54, 0xe2, 0xa5, + 0xda, 0xd0, 0x07, 0xa5, 0xdb, 0xd0, 0x03, 0x4c, 0x7e, 0xe7, 0x06, 0xce, + 0x26, 0xcf, 0x26, 0xe6, 0x26, 0xe7, 0xa5, 0xe6, 0xc5, 0xda, 0xa5, 0xe7, + 0xe5, 0xdb, 0x90, 0x0a, 0x85, 0xe7, 0xa5, 0xe6, 0xe5, 0xda, 0x85, 0xe6, + 0xe6, 0xce, 0x88, 0xd0, 0xe1, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x20, 0x15, 0xe7, 0x6c, 0xce, 0x00, 0xa5, 0x4c, 0xd0, 0x02, 0xc6, 0x4d, + 0xc6, 0x4c, 0xa5, 0x48, 0xd0, 0x02, 0xc6, 0x49, 0xc6, 0x48, 0xa0, 0x00, + 0xb1, 0x4c, 0x91, 0x48, 0xa5, 0xca, 0xc5, 0x4c, 0xa5, 0xcb, 0xe5, 0x4d, + 0x90, 0xe0, 0x4c, 0x53, 0xee, 0xc9, 0x28, 0xb0, 0x9b, 0xa8, 0xa5, 0xc8, + 0x60, 0xea, 0xea, 0x98, 0xaa, 0xa0, 0x6e, 0x20, 0xc4, 0xe3, 0x8a, 0xa8, + 0x20, 0xc4, 0xe3, 0xa0, 0x72, 0x4c, 0xc4, 0xe3, 0x20, 0x15, 0xe7, 0x06, + 0xce, 0x26, 0xcf, 0x30, 0xfa, 0xb0, 0xdc, 0xd0, 0x04, 0xc5, 0xce, 0xb0, + 0xd6, 0x60, 0x20, 0x15, 0xe7, 0xb1, 0xce, 0x94, 0x9f, 0x4c, 0x08, 0xe7, + 0x20, 0x34, 0xee, 0xa5, 0xce, 0x48, 0x20, 0x15, 0xe7, 0x68, 0x91, 0xce, + 0x60, 0xff, 0xff, 0xff, 0x20, 0x6c, 0xee, 0xa5, 0xce, 0x85, 0xe6, 0xa5, + 0xcf, 0x85, 0xe7, 0x4c, 0x44, 0xe2, 0x20, 0xe4, 0xee, 0x4c, 0x34, 0xe1, + 0x20, 0xe4, 0xee, 0xb4, 0x78, 0xb5, 0x50, 0x69, 0xfe, 0xb0, 0x01, 0x88, + 0x85, 0xda, 0x84, 0xdb, 0x18, 0x65, 0xce, 0x95, 0x50, 0x98, 0x65, 0xcf, + 0x95, 0x78, 0xa0, 0x00, 0xb5, 0x50, 0xd1, 0xda, 0xc8, 0xb5, 0x78, 0xf1, + 0xda, 0xb0, 0x80, 0x4c, 0x23, 0xe8, 0x20, 0x15, 0xe7, 0xa5, 0x4e, 0x20, + 0x08, 0xe7, 0xa5, 0x4f, 0xd0, 0x04, 0xc5, 0x4e, 0x69, 0x00, 0x29, 0x7f, + 0x85, 0x4f, 0x95, 0xa0, 0xa0, 0x11, 0xa5, 0x4f, 0x0a, 0x18, 0x69, 0x40, + 0x0a, 0x26, 0x4e, 0x26, 0x4f, 0x88, 0xd0, 0xf2, 0xa5, 0xce, 0x20, 0x08, + 0xe7, 0xa5, 0xcf, 0x95, 0xa0, 0x4c, 0x7a, 0xe2, 0x20, 0x15, 0xe7, 0xa4, + 0xce, 0xc4, 0x4c, 0xa5, 0xcf, 0xe5, 0x4d, 0x90, 0x1f, 0x84, 0x48, 0xa5, + 0xcf, 0x85, 0x49, 0x4c, 0xb6, 0xee, 0x20, 0x15, 0xe7, 0xa4, 0xce, 0xc4, + 0xca, 0xa5, 0xcf, 0xe5, 0xcb, 0xb0, 0x09, 0x84, 0x4a, 0xa5, 0xcf, 0x85, + 0x4b, 0x4c, 0xb7, 0xe5, 0x4c, 0xcb, 0xee, 0xea, 0xea, 0xea, 0xea, 0x20, + 0xc9, 0xef, 0x20, 0x71, 0xe1, 0x4c, 0xbf, 0xef, 0x20, 0x03, 0xee, 0xa9, + 0xff, 0x85, 0xc8, 0xa9, 0x74, 0x8d, 0x00, 0x02, 0x60, 0x20, 0x36, 0xe7, + 0xe8, 0x20, 0x36, 0xe7, 0xb5, 0x50, 0x60, 0xa9, 0x00, 0x85, 0x4a, 0x85, + 0x4c, 0xa9, 0x08, 0x85, 0x4b, 0xa9, 0x10, 0x85, 0x4d, 0x4c, 0xad, 0xe5, + 0xd5, 0x78, 0xd0, 0x01, 0x18, 0x4c, 0x02, 0xe1, 0x20, 0xb7, 0xe5, 0x4c, + 0x36, 0xe8, 0x20, 0xb7, 0xe5, 0x4c, 0x5b, 0xe8, 0xe0, 0x80, 0xd0, 0x01, + 0x88, 0x4c, 0x0c, 0xe0, 0xa9, 0x03, 0x85, 0xf8, 0xa9, 0x20, 0x85, 0xff, + 0xa9, 0x7c, 0x85, 0xf9, 0xa2, 0x1b, 0xbd, 0x67, 0xfd, 0x20, 0xef, 0xff, + 0xca, 0xd0, 0xf7, 0xca, 0x9a, 0x20, 0x71, 0xf0, 0xd8, 0xa9, 0x00, 0x85, + 0x5b, 0x20, 0xce, 0xf0, 0xa2, 0x0f, 0x86, 0x58, 0x86, 0x59, 0x20, 0xe5, + 0xfe, 0xa9, 0x3f, 0x20, 0xef, 0xff, 0x20, 0xe0, 0xfe, 0x20, 0xea, 0xfe, + 0xc9, 0x08, 0xf0, 0xe0, 0xc9, 0x0d, 0xf0, 0x08, 0x20, 0xef, 0xff, 0x95, + 0x00, 0xe8, 0xd0, 0xed, 0xa5, 0x0f, 0xf0, 0xd0, 0xa5, 0x10, 0xf0, 0x04, + 0xc9, 0x20, 0xd0, 0x0c, 0xa2, 0x0d, 0xbd, 0x27, 0xfd, 0xc5, 0x0f, 0xf0, + 0x0e, 0xca, 0xd0, 0xf6, 0x48, 0x48, 0xa0, 0x03, 0x68, 0x68, 0x20, 0x69, + 0xf4, 0xd0, 0xb1, 0x20, 0xd6, 0xf0, 0x4c, 0x1c, 0xf0, 0xa9, 0x00, 0xa8, + 0x85, 0xfe, 0x91, 0xfe, 0xa5, 0xff, 0x85, 0xfd, 0xa9, 0x00, 0x85, 0xfa, + 0x85, 0xfb, 0x85, 0xfc, 0x60, 0x20, 0x71, 0xf0, 0xa5, 0x11, 0xd0, 0x02, + 0xa9, 0x01, 0x91, 0xfe, 0x60, 0x20, 0xab, 0xf0, 0xf0, 0xcc, 0x20, 0xe5, + 0xfe, 0xa5, 0x3f, 0xa6, 0x3e, 0x4c, 0x67, 0xfb, 0x20, 0xab, 0xf0, 0xf0, + 0xbd, 0x20, 0xe5, 0xfe, 0x6c, 0x3e, 0x00, 0xa2, 0x02, 0xb5, 0x0f, 0xf0, + 0x08, 0x48, 0x20, 0xd3, 0xf7, 0x68, 0xe8, 0xf0, 0xab, 0x60, 0xa5, 0xf5, + 0x85, 0x3e, 0xa5, 0xf6, 0x85, 0x3f, 0x60, 0xa5, 0x3e, 0x85, 0xf5, 0xa5, + 0x3f, 0x85, 0xf6, 0x60, 0xa9, 0x20, 0xa2, 0x27, 0x95, 0xff, 0xca, 0xd0, + 0xfb, 0x60, 0xbd, 0x34, 0xfd, 0x48, 0xbd, 0x41, 0xfd, 0x48, 0x60, 0x20, + 0x71, 0xf0, 0x4c, 0x58, 0xf1, 0x20, 0x78, 0xf0, 0x20, 0x1d, 0xf1, 0xf0, + 0x03, 0x20, 0x53, 0xf2, 0xa0, 0x00, 0xb1, 0xfc, 0xf0, 0x0e, 0x20, 0x72, + 0xf2, 0x20, 0xdc, 0xf4, 0xad, 0x11, 0xd0, 0x10, 0xef, 0xad, 0x10, 0xd0, + 0x60, 0x20, 0x4f, 0xf2, 0x20, 0xe5, 0xfe, 0xa2, 0x04, 0xb5, 0xfb, 0x20, + 0xdc, 0xff, 0xe0, 0x03, 0xd0, 0x03, 0x20, 0xb9, 0xfe, 0xca, 0xd0, 0xf1, + 0x60, 0xa0, 0x00, 0x84, 0x30, 0xa2, 0x01, 0xb5, 0x0f, 0xf0, 0x25, 0xc9, + 0x20, 0xf0, 0x07, 0xc9, 0x24, 0xf0, 0x03, 0xe8, 0xd0, 0xf1, 0xe6, 0x30, + 0xa9, 0x24, 0x95, 0x0f, 0x20, 0x5b, 0xf9, 0xe8, 0xf0, 0x5f, 0xa5, 0x3e, + 0x99, 0x54, 0x00, 0xc8, 0xa5, 0x3f, 0x99, 0x54, 0x00, 0xc8, 0xd0, 0xd7, + 0xa4, 0x30, 0x60, 0x20, 0x1d, 0xf1, 0x88, 0xd0, 0x48, 0x20, 0xc7, 0xf1, + 0x20, 0x1d, 0xf1, 0xe8, 0xf0, 0x3f, 0x98, 0xd0, 0x06, 0x20, 0x4f, 0xf2, + 0x18, 0x90, 0x03, 0x20, 0x53, 0xf2, 0x20, 0xde, 0xf2, 0xe0, 0xff, 0xf0, + 0xab, 0x86, 0x2f, 0xa5, 0xfd, 0x85, 0x51, 0x85, 0x53, 0xa5, 0xfc, 0x85, + 0x50, 0x18, 0x65, 0x2f, 0x85, 0x52, 0x90, 0x02, 0xe6, 0x53, 0x20, 0xa0, + 0xf1, 0x20, 0x25, 0xf2, 0xa0, 0x00, 0xb9, 0x00, 0x00, 0x91, 0xfc, 0xc8, + 0xc4, 0x2f, 0xd0, 0xf6, 0x20, 0xdc, 0xf4, 0xd0, 0xcd, 0x4c, 0x62, 0xf0, + 0xa2, 0xfc, 0xb5, 0xfe, 0x48, 0xe8, 0xd0, 0xfa, 0x20, 0x4f, 0xf2, 0x38, + 0xa5, 0xfc, 0xe5, 0x50, 0x85, 0x54, 0xa5, 0xfd, 0xe5, 0x51, 0x85, 0x55, + 0xe6, 0x54, 0xd0, 0x02, 0xe6, 0x55, 0xa2, 0x04, 0x68, 0x95, 0xf9, 0xca, + 0xd0, 0xfa, 0x60, 0x20, 0x1d, 0xf1, 0xf0, 0xd1, 0x84, 0x30, 0x20, 0x53, + 0xf2, 0xe0, 0xff, 0xf0, 0xc8, 0xa5, 0xfc, 0x85, 0x52, 0xa5, 0xfd, 0x85, + 0x53, 0xa5, 0x30, 0x4a, 0xf0, 0x0c, 0xa6, 0x57, 0xa4, 0x56, 0xe4, 0x55, + 0xd0, 0x02, 0xc4, 0x54, 0x90, 0xaf, 0xc8, 0xd0, 0x01, 0xe8, 0x86, 0x55, + 0x84, 0x54, 0x20, 0x53, 0xf2, 0xa5, 0xfc, 0x85, 0x50, 0xa5, 0xfd, 0x85, + 0x51, 0x20, 0xa0, 0xf1, 0xa0, 0x00, 0xa6, 0x55, 0xf0, 0x0e, 0xb1, 0x50, + 0x91, 0x52, 0xc8, 0xd0, 0xf9, 0xe6, 0x51, 0xe6, 0x53, 0xca, 0xd0, 0xf2, + 0xa6, 0x54, 0xf0, 0x08, 0xb1, 0x50, 0x91, 0x52, 0xc8, 0xca, 0xd0, 0xf8, + 0x60, 0xa6, 0x55, 0x18, 0x8a, 0x65, 0x51, 0x85, 0x51, 0x18, 0x8a, 0x65, + 0x53, 0x85, 0x53, 0xe8, 0xa4, 0x54, 0xf0, 0x0e, 0x88, 0xf0, 0x07, 0xb1, + 0x50, 0x91, 0x52, 0x88, 0xd0, 0xf9, 0xb1, 0x50, 0x91, 0x52, 0x88, 0xc6, + 0x51, 0xc6, 0x53, 0xca, 0xd0, 0xed, 0x60, 0xa9, 0xff, 0x85, 0x55, 0x20, + 0x78, 0xf0, 0xa4, 0x54, 0xc4, 0xfa, 0xd0, 0x06, 0xa6, 0x55, 0xe4, 0xfb, + 0xf0, 0x51, 0xa0, 0xff, 0xc8, 0xb1, 0xfc, 0xd0, 0xfb, 0x98, 0xf0, 0x45, + 0xc8, 0x20, 0xdc, 0xf4, 0xd0, 0xe4, 0x20, 0xe5, 0xfe, 0x86, 0x2f, 0x20, + 0xee, 0xf3, 0xc8, 0x20, 0xd6, 0xfe, 0xa2, 0x00, 0xb5, 0x04, 0xf0, 0x06, + 0x20, 0xef, 0xff, 0xe8, 0xd0, 0xf6, 0xa6, 0x2f, 0x60, 0x20, 0xea, 0xfe, + 0xc9, 0x09, 0xd0, 0x02, 0xa9, 0x20, 0xc9, 0x20, 0x10, 0x1a, 0xa8, 0x68, + 0x68, 0x68, 0x68, 0xc0, 0x08, 0xf0, 0x3b, 0xc0, 0x0d, 0xd0, 0x0a, 0xe0, + 0x04, 0xf0, 0x29, 0xa9, 0x00, 0x95, 0x00, 0xf0, 0x5c, 0xa2, 0xff, 0x60, + 0xe0, 0x27, 0x10, 0x1a, 0xc9, 0x5e, 0x10, 0x16, 0x38, 0x60, 0xc9, 0x2e, + 0xf0, 0xfa, 0xc9, 0x30, 0x30, 0x0c, 0xc9, 0x3a, 0x30, 0xf2, 0xc9, 0x41, + 0x30, 0x04, 0xc9, 0x5b, 0x30, 0xea, 0x18, 0x60, 0xa9, 0x02, 0xaa, 0x85, + 0x00, 0xa9, 0x00, 0x85, 0x01, 0x60, 0x20, 0xcc, 0xf0, 0xa9, 0x00, 0x85, + 0x1d, 0x20, 0xe5, 0xfe, 0x20, 0xd6, 0xfe, 0xa2, 0x04, 0xa9, 0x0a, 0x20, + 0x9c, 0xf3, 0x20, 0xc4, 0xf3, 0xa5, 0x04, 0xc9, 0x3b, 0xf0, 0x0d, 0xa9, + 0x0e, 0x20, 0x9c, 0xf3, 0x20, 0xc4, 0xf3, 0xa9, 0x1d, 0x20, 0x9c, 0xf3, + 0xa9, 0x00, 0x20, 0x9c, 0xf3, 0xa2, 0x00, 0x86, 0x51, 0xa9, 0x20, 0x85, + 0x55, 0xa9, 0x04, 0x85, 0x50, 0xa9, 0x01, 0x85, 0x54, 0x20, 0xd7, 0xf3, + 0xa4, 0x04, 0xc0, 0x3b, 0xd0, 0x04, 0xa9, 0x0b, 0xd0, 0x5f, 0x8a, 0x48, + 0x18, 0x66, 0x56, 0xa2, 0x03, 0x38, 0xb5, 0x0a, 0xe9, 0x40, 0xa0, 0x05, + 0x4a, 0x66, 0x56, 0x66, 0x57, 0x88, 0xd0, 0xf8, 0xca, 0xd0, 0xee, 0xa2, + 0x38, 0xbd, 0xe8, 0xfb, 0xc5, 0x56, 0xd0, 0x07, 0xbd, 0x20, 0xfc, 0xc5, + 0x57, 0xf0, 0x03, 0xca, 0xd0, 0xef, 0xca, 0x8a, 0xc9, 0xff, 0xd0, 0x19, + 0xa5, 0x0b, 0xc9, 0x2e, 0xd0, 0x0c, 0xa2, 0x05, 0xa5, 0x0c, 0xdd, 0x4e, + 0xfd, 0xf0, 0x09, 0xca, 0xd0, 0xf8, 0x68, 0xa0, 0x01, 0x4c, 0x69, 0xf4, + 0xca, 0xa8, 0xc8, 0x68, 0xaa, 0x94, 0x00, 0xe8, 0xa9, 0x0f, 0x85, 0x50, + 0x20, 0xd7, 0xf3, 0x86, 0x2f, 0xe6, 0x2f, 0xa9, 0x1d, 0x85, 0x50, 0xa9, + 0x00, 0x85, 0x54, 0x85, 0x55, 0x20, 0xd7, 0xf3, 0xe4, 0x2f, 0xd0, 0x03, + 0xca, 0x95, 0xff, 0x60, 0x85, 0x54, 0x20, 0x8d, 0xf2, 0x90, 0xfb, 0x20, + 0xef, 0xff, 0x95, 0x00, 0xe8, 0xc9, 0x20, 0xf0, 0x05, 0xe4, 0x54, 0xd0, + 0xed, 0x60, 0xa5, 0x54, 0xf0, 0xe8, 0xe4, 0x54, 0xf0, 0xf7, 0xa9, 0x20, + 0x95, 0x00, 0x20, 0xef, 0xff, 0xe8, 0xd0, 0xee, 0xb5, 0xff, 0xc9, 0x20, + 0xf0, 0x07, 0x20, 0x8d, 0xf2, 0xc9, 0x20, 0xd0, 0xf9, 0x95, 0x00, 0xe8, + 0x4c, 0xef, 0xff, 0xa0, 0x00, 0xb1, 0x50, 0xf0, 0x0b, 0xc5, 0x55, 0xf0, + 0x07, 0x95, 0x00, 0xe8, 0xe6, 0x50, 0xd0, 0xf1, 0xa5, 0x54, 0x95, 0x00, + 0xe8, 0x60, 0x20, 0xcc, 0xf0, 0xa0, 0x00, 0xa2, 0x04, 0xb1, 0xfc, 0xf0, + 0x4d, 0xc9, 0x02, 0xd0, 0x05, 0xc8, 0xa9, 0x00, 0xf0, 0x46, 0xc9, 0x01, + 0xf0, 0x06, 0x95, 0x00, 0xe8, 0xc8, 0xd0, 0xe9, 0xa5, 0x04, 0xc9, 0x3b, + 0xd0, 0x04, 0xa2, 0x0b, 0xd0, 0x2d, 0xc8, 0xb1, 0xfc, 0xaa, 0xca, 0x86, + 0x3c, 0xe0, 0x38, 0x10, 0x09, 0x98, 0x48, 0x20, 0x99, 0xfa, 0x68, 0xa8, + 0xd0, 0x06, 0x86, 0x0c, 0xa9, 0x2e, 0x85, 0x0b, 0xc8, 0xa2, 0x0f, 0xb1, + 0xfc, 0xf0, 0x11, 0xc9, 0x01, 0xd0, 0x05, 0xc8, 0xa2, 0x1d, 0xd0, 0xf3, + 0x95, 0x00, 0xe8, 0xc8, 0xd0, 0xed, 0xa2, 0xfe, 0x95, 0x00, 0x60, 0x20, + 0x94, 0xf4, 0x20, 0xe5, 0xfe, 0x20, 0xf8, 0xf5, 0x20, 0xb8, 0xf4, 0xe8, + 0xf0, 0x0f, 0xe0, 0xff, 0xd0, 0xf6, 0xe6, 0x58, 0x20, 0x10, 0xf6, 0xe8, + 0xf0, 0x03, 0x4c, 0xf8, 0xf5, 0x20, 0xe5, 0xfe, 0xa2, 0x05, 0xbd, 0x53, + 0xfd, 0x20, 0xef, 0xff, 0xca, 0xd0, 0xf7, 0x98, 0x18, 0x8a, 0x69, 0x03, + 0x88, 0xd0, 0xfb, 0xa8, 0xa2, 0x03, 0xb9, 0x56, 0xfd, 0x20, 0xef, 0xff, + 0xc8, 0xca, 0xd0, 0xf6, 0xca, 0xa5, 0x59, 0xd0, 0x26, 0x4c, 0x72, 0xf2, + 0x20, 0x78, 0xf0, 0x85, 0x58, 0x85, 0xeb, 0x85, 0xe9, 0x85, 0xf5, 0xa5, + 0xf8, 0x85, 0xf6, 0x20, 0xeb, 0xf5, 0x86, 0xea, 0xa9, 0x00, 0x85, 0x2b, + 0x85, 0x29, 0x85, 0x46, 0xa4, 0xf9, 0xc8, 0x84, 0x2a, 0x84, 0x47, 0x60, + 0x20, 0xee, 0xf3, 0xe0, 0xfe, 0xf0, 0x1d, 0xe0, 0x04, 0xf0, 0x18, 0xa9, + 0x00, 0x85, 0x59, 0x85, 0x58, 0x85, 0x5a, 0x20, 0x44, 0xf5, 0xe0, 0xff, + 0xf0, 0x1d, 0xa0, 0x00, 0xb1, 0xfc, 0xf0, 0x03, 0xc8, 0xd0, 0xf9, 0xc8, + 0xa5, 0xfc, 0x84, 0x44, 0x18, 0x65, 0x44, 0x85, 0xfc, 0x90, 0x02, 0xe6, + 0xfd, 0xe6, 0xfa, 0xd0, 0x02, 0xe6, 0xfb, 0x60, 0xa4, 0x3c, 0xb9, 0x73, + 0xfc, 0xa6, 0x3d, 0x18, 0x7d, 0xab, 0xfc, 0xe0, 0x0b, 0xf0, 0x0e, 0xe0, + 0x02, 0xd0, 0x11, 0xc0, 0x28, 0x30, 0x0d, 0xc0, 0x30, 0xb0, 0x09, 0x69, + 0x08, 0xc0, 0x35, 0xd0, 0x03, 0x18, 0x69, 0x04, 0x20, 0x2f, 0xf5, 0xc9, + 0x00, 0xd0, 0x03, 0x20, 0x2f, 0xf5, 0x8a, 0xf0, 0xce, 0xca, 0xf0, 0xcb, + 0xa5, 0x3e, 0xe0, 0x08, 0x30, 0x05, 0x20, 0x2f, 0xf5, 0xa5, 0x3f, 0xa0, + 0x00, 0x91, 0xf5, 0xe6, 0xf5, 0xd0, 0x02, 0xe6, 0xf6, 0x60, 0x20, 0xa9, + 0xf6, 0xe0, 0xff, 0xd0, 0xaf, 0xa0, 0x02, 0x60, 0xa5, 0x04, 0xc9, 0x3b, + 0xf0, 0xa5, 0xa6, 0x0b, 0xe0, 0x2e, 0xd0, 0x0d, 0xa6, 0x0c, 0xe0, 0x4d, + 0xd0, 0x03, 0x4c, 0xb6, 0xf5, 0xe0, 0x3d, 0xf0, 0x47, 0xc9, 0x20, 0xf0, + 0x03, 0x20, 0xdf, 0xf8, 0xa5, 0x0b, 0xc9, 0x2e, 0xd0, 0xd0, 0xa2, 0x00, + 0xa5, 0x0c, 0xc9, 0x53, 0xf0, 0x19, 0x85, 0x58, 0x20, 0x7a, 0xf7, 0xe8, + 0xf0, 0x0c, 0xa5, 0x3e, 0xa6, 0x0c, 0xe0, 0x57, 0xf0, 0xa8, 0xa6, 0x3f, + 0xf0, 0xa9, 0xa0, 0x03, 0xa2, 0xff, 0x60, 0xb5, 0x0f, 0xc9, 0x27, 0xd0, + 0xf5, 0xe8, 0xb5, 0x0f, 0xf0, 0xf0, 0xc9, 0x27, 0xf0, 0x09, 0x20, 0x2f, + 0xf5, 0xe0, 0x0e, 0xd0, 0xf0, 0xf0, 0xe3, 0x60, 0x85, 0x58, 0x20, 0xc2, + 0xf2, 0x90, 0xdb, 0xa2, 0x00, 0x20, 0x7a, 0xf7, 0xe8, 0xf0, 0xd3, 0x4c, + 0xe2, 0xf8, 0x20, 0xc2, 0xf2, 0x90, 0xcb, 0xa0, 0x00, 0xa5, 0x0f, 0xf0, + 0x14, 0xc9, 0x20, 0xf0, 0x10, 0x20, 0xf6, 0xf5, 0xa2, 0x00, 0xa5, 0x0f, + 0x20, 0x5b, 0xf9, 0xe8, 0xf0, 0xb4, 0x20, 0xc3, 0xf0, 0x20, 0xdf, 0xf8, + 0xe0, 0xff, 0xf0, 0xc7, 0x20, 0x10, 0xf6, 0xe0, 0xff, 0xf0, 0xc0, 0x20, + 0xc4, 0xfe, 0xa9, 0x00, 0x20, 0xf6, 0xf5, 0xa2, 0x00, 0x86, 0xee, 0x86, + 0xec, 0xa6, 0xf9, 0x86, 0xed, 0x60, 0x85, 0x58, 0xa5, 0xf6, 0xa6, 0xf5, + 0xa4, 0x58, 0xf0, 0x0d, 0x48, 0x20, 0xb9, 0xfe, 0x68, 0xe0, 0x00, 0xd0, + 0x03, 0x38, 0xe9, 0x01, 0xca, 0x4c, 0x67, 0xfb, 0xa6, 0x2b, 0xf0, 0x72, + 0x86, 0x59, 0x86, 0x45, 0xa5, 0xf5, 0x48, 0xa5, 0xf6, 0x48, 0x20, 0xa8, + 0xf4, 0xa0, 0x00, 0xa5, 0x58, 0x85, 0x48, 0x84, 0x5a, 0xb1, 0x46, 0xc9, + 0x2e, 0xd0, 0x02, 0x85, 0x58, 0xb1, 0x46, 0x99, 0x1d, 0x00, 0xc8, 0xc0, + 0x06, 0xd0, 0xf6, 0xb1, 0x46, 0x85, 0xf5, 0xc8, 0xb1, 0x46, 0x85, 0xf6, + 0xc8, 0xb1, 0x46, 0x85, 0x54, 0x20, 0x7e, 0xf8, 0xe0, 0xff, 0xf0, 0x47, + 0xa5, 0x5a, 0xf0, 0x04, 0xa5, 0x54, 0x91, 0x50, 0x20, 0xc3, 0xf7, 0xa0, + 0x00, 0xb1, 0xf5, 0x29, 0x1f, 0xc9, 0x10, 0xf0, 0x22, 0x20, 0x33, 0xf5, + 0xa5, 0x3e, 0x20, 0x2a, 0xf5, 0x18, 0xa5, 0x46, 0x69, 0x09, 0x85, 0x46, + 0x90, 0x02, 0xe6, 0x47, 0xa5, 0x48, 0x85, 0x58, 0xc6, 0x45, 0xd0, 0xa1, + 0x68, 0x85, 0xf6, 0x68, 0x85, 0xf5, 0x60, 0x20, 0x62, 0xf7, 0xe0, 0xff, + 0xf0, 0x09, 0xa0, 0x01, 0xa5, 0x3e, 0x91, 0xf5, 0x4c, 0x6d, 0xf6, 0xa0, + 0x00, 0x20, 0xe0, 0xfe, 0xb1, 0x46, 0x20, 0xef, 0xff, 0xc8, 0xc0, 0x06, + 0xd0, 0xf6, 0x88, 0xd0, 0xd7, 0xa2, 0xff, 0x86, 0x3d, 0xa5, 0x3c, 0xa6, + 0x0f, 0xf0, 0x04, 0xe0, 0x20, 0xd0, 0x0e, 0xa2, 0x00, 0x20, 0x3d, 0xf7, + 0xe0, 0xff, 0xd0, 0x35, 0xa2, 0x01, 0x4c, 0x3d, 0xf7, 0xe0, 0x23, 0xf0, + 0x0e, 0xa2, 0x03, 0x20, 0x3d, 0xf7, 0xe0, 0xff, 0xf0, 0x24, 0xa5, 0x0f, + 0x4c, 0x4f, 0xf7, 0xc9, 0x2c, 0xf0, 0x71, 0xa2, 0x02, 0xc9, 0x35, 0xf0, + 0x07, 0x20, 0x3d, 0xf7, 0xe0, 0xff, 0xf0, 0x0d, 0x86, 0x3d, 0xca, 0x20, + 0x7a, 0xf7, 0xe8, 0xf0, 0x5b, 0xa5, 0x3f, 0xd0, 0x57, 0x60, 0xa2, 0x00, + 0xa5, 0x0f, 0xc9, 0x28, 0xd0, 0x01, 0xe8, 0x20, 0xd3, 0xf7, 0xe0, 0xff, + 0xf0, 0xef, 0x20, 0x9c, 0xf9, 0xe0, 0xff, 0xf0, 0xe8, 0x86, 0x3d, 0xe0, + 0x06, 0xd0, 0x0e, 0xa5, 0x3c, 0xc9, 0x28, 0x90, 0x08, 0xc9, 0x30, 0xb0, + 0x04, 0xa2, 0x0b, 0xd0, 0x28, 0xa0, 0x06, 0xb9, 0x15, 0xfd, 0xc5, 0x3c, + 0xd0, 0x0e, 0xbe, 0x1b, 0xfd, 0xe4, 0x3d, 0xf0, 0x18, 0xbe, 0x21, 0xfd, + 0xe4, 0x3d, 0xf0, 0x11, 0x88, 0xd0, 0xe8, 0xa6, 0x3d, 0xa5, 0x3c, 0xdd, + 0x59, 0xfc, 0x90, 0x08, 0xdd, 0x66, 0xfc, 0xb0, 0x03, 0x86, 0x3d, 0x60, + 0xa2, 0xff, 0x60, 0xa2, 0x00, 0x86, 0x3e, 0x86, 0x3f, 0xc9, 0x2a, 0xd0, + 0x06, 0x20, 0xba, 0xf0, 0x20, 0xfd, 0xf7, 0x20, 0xd3, 0xf7, 0x38, 0xa5, + 0x3e, 0xe5, 0xf5, 0x85, 0x3e, 0xa5, 0x3f, 0xe5, 0xf6, 0x85, 0x3f, 0xf0, + 0x04, 0xe6, 0x3f, 0xd0, 0xd7, 0xc6, 0x3e, 0xc6, 0x3e, 0x60, 0xb5, 0x0f, + 0xf0, 0xce, 0xc9, 0x27, 0xf0, 0x03, 0x4c, 0xd3, 0xf7, 0xe8, 0xa9, 0x00, + 0x85, 0x3f, 0xb5, 0x0f, 0x85, 0x3e, 0xe8, 0xb5, 0x0f, 0xc9, 0x27, 0xd0, + 0xb7, 0xe8, 0xb5, 0x0f, 0xf0, 0x7c, 0xc9, 0x20, 0xf0, 0x78, 0x48, 0xe8, + 0xb5, 0x0f, 0x20, 0x51, 0xfa, 0xe0, 0xff, 0xd0, 0x02, 0x68, 0x60, 0x85, + 0x54, 0x68, 0xc9, 0x2b, 0xf0, 0x09, 0xa5, 0x54, 0x18, 0x49, 0xff, 0x69, + 0x01, 0x85, 0x54, 0xa5, 0x5a, 0xf0, 0x04, 0xa5, 0x54, 0x91, 0x50, 0xa5, + 0x54, 0x10, 0x02, 0xc6, 0x3f, 0x18, 0x65, 0x3e, 0x85, 0x3e, 0x90, 0x02, + 0xe6, 0x3f, 0x60, 0x86, 0x56, 0xb5, 0x0f, 0xc9, 0x3c, 0xf0, 0x04, 0xc9, + 0x3e, 0xd0, 0x05, 0x85, 0x58, 0xe8, 0xb5, 0x0f, 0x20, 0xbe, 0xf2, 0xb0, + 0x09, 0x20, 0x5b, 0xf9, 0xe0, 0xff, 0xf0, 0x24, 0xd0, 0x0b, 0x86, 0x2f, + 0x20, 0x60, 0xf8, 0xe0, 0xff, 0xf0, 0x1b, 0xa6, 0x2f, 0xe8, 0xb5, 0x0f, + 0x20, 0xbe, 0xf2, 0xb0, 0xf8, 0xc9, 0x2b, 0xf0, 0x04, 0xc9, 0x2d, 0xd0, + 0x0a, 0x20, 0x9e, 0xf7, 0xe0, 0xff, 0xd0, 0xe9, 0xa0, 0x03, 0x60, 0xa0, + 0x00, 0xa5, 0x58, 0xc9, 0x3c, 0xf0, 0x08, 0xc9, 0x3e, 0xd0, 0x06, 0xa5, + 0x3f, 0x85, 0x3e, 0x84, 0x3f, 0xb5, 0x0f, 0x99, 0x1d, 0x00, 0xf0, 0x0a, + 0xc9, 0x20, 0xf0, 0x06, 0xe8, 0xc8, 0xe0, 0x0e, 0xd0, 0xef, 0xa9, 0x00, + 0x99, 0x1d, 0x00, 0xa4, 0x56, 0xa9, 0x24, 0x99, 0x0f, 0x00, 0xc8, 0xa5, + 0x3f, 0xf0, 0x03, 0x20, 0x82, 0xfa, 0xa5, 0x3e, 0x20, 0x82, 0xfa, 0xa2, + 0x00, 0xb5, 0x1d, 0x99, 0x0f, 0x00, 0xf0, 0xba, 0xe8, 0xc8, 0xd0, 0xf5, + 0xa0, 0x00, 0xc0, 0x06, 0xf0, 0x18, 0x20, 0xbe, 0xf2, 0x90, 0x09, 0x99, + 0x1d, 0x00, 0xe8, 0xb5, 0x0f, 0xc8, 0xd0, 0xee, 0xa9, 0x20, 0x99, 0x1d, + 0x00, 0xc8, 0xc0, 0x06, 0xd0, 0xf8, 0xa9, 0x1d, 0x85, 0x42, 0xa2, 0x00, + 0x86, 0x43, 0xa9, 0x06, 0x85, 0x2e, 0xa9, 0x08, 0x85, 0x2d, 0xa5, 0x1d, + 0xc9, 0x2e, 0xf0, 0x11, 0x20, 0x8a, 0xf9, 0xf0, 0x13, 0xa0, 0x06, 0xb1, + 0x40, 0x85, 0x3e, 0xc8, 0xb1, 0x40, 0x85, 0x3f, 0x60, 0xa2, 0x03, 0x20, + 0x8a, 0xf9, 0xd0, 0xed, 0xa5, 0x58, 0xd0, 0x4f, 0x20, 0xba, 0xf0, 0xa5, + 0x2a, 0x85, 0x51, 0xa5, 0x29, 0xa6, 0x2b, 0xf0, 0x0a, 0x18, 0x69, 0x09, + 0x90, 0x02, 0xe6, 0x51, 0xca, 0xd0, 0xf6, 0x85, 0x50, 0xe6, 0x2b, 0xa5, + 0x2b, 0xc9, 0x55, 0x10, 0x32, 0xa9, 0x1d, 0x85, 0x5a, 0x85, 0x52, 0x20, + 0x43, 0xf9, 0xc8, 0x8a, 0x91, 0x50, 0x60, 0x20, 0xba, 0xf0, 0xa9, 0x04, + 0x85, 0x52, 0x85, 0x42, 0xa2, 0x00, 0x86, 0x43, 0xa9, 0x06, 0x85, 0x2e, + 0xa5, 0x04, 0xc9, 0x2e, 0xd0, 0x02, 0xa2, 0x03, 0x20, 0x8a, 0xf9, 0xf0, + 0x0b, 0x68, 0x68, 0xa0, 0x05, 0xd0, 0x02, 0xa0, 0x04, 0xa2, 0xff, 0x60, + 0xa6, 0x04, 0xe0, 0x2e, 0xf0, 0x17, 0x38, 0xa5, 0xe9, 0xe9, 0x08, 0xb0, + 0x02, 0xc6, 0xea, 0x85, 0xe9, 0xe6, 0xeb, 0xf0, 0xe6, 0x85, 0x50, 0xa5, + 0xea, 0x85, 0x51, 0xd0, 0x1e, 0xa5, 0xed, 0x85, 0x51, 0xa5, 0xec, 0xa6, + 0xee, 0xf0, 0x0a, 0x18, 0x69, 0x08, 0x90, 0x02, 0xe6, 0x51, 0xca, 0xd0, + 0xf6, 0x85, 0x50, 0xe6, 0xee, 0xa5, 0xee, 0xc9, 0x20, 0x10, 0xc0, 0xa0, + 0x00, 0x84, 0x53, 0xa2, 0x06, 0xb1, 0x52, 0x91, 0x50, 0xc8, 0xca, 0xd0, + 0xf8, 0xa5, 0x3e, 0x91, 0x50, 0xc8, 0xa5, 0x3f, 0x91, 0x50, 0x60, 0xc9, + 0x24, 0xd0, 0xa6, 0x84, 0x1e, 0x20, 0x18, 0xfa, 0xe0, 0xff, 0xf0, 0x9d, + 0x85, 0x1d, 0xa0, 0x00, 0x84, 0x3f, 0xca, 0xca, 0xb5, 0x0f, 0xc9, 0x24, + 0xf0, 0x06, 0x20, 0x51, 0xfa, 0x38, 0xb0, 0x03, 0x20, 0x6d, 0xfa, 0x99, + 0x3e, 0x00, 0xc8, 0xc4, 0x1d, 0xd0, 0xe7, 0xa4, 0x1e, 0x60, 0xb5, 0xe9, + 0x85, 0x40, 0xb5, 0xea, 0x85, 0x41, 0xb5, 0xeb, 0x85, 0x2c, 0x20, 0x2c, + 0xfa, 0xe0, 0xff, 0x60, 0xa2, 0x00, 0xa9, 0x04, 0xb4, 0x0f, 0xc0, 0x28, + 0xd0, 0x04, 0x18, 0x69, 0x03, 0xe8, 0x48, 0x20, 0x18, 0xfa, 0xa8, 0xca, + 0xa5, 0x3c, 0xc9, 0x21, 0xf0, 0x04, 0xc9, 0x23, 0xd0, 0x01, 0xc8, 0x68, + 0xe8, 0xf0, 0x56, 0x88, 0xf0, 0x03, 0x18, 0x69, 0x06, 0xa8, 0xb5, 0x0f, + 0xf0, 0x04, 0xc9, 0x20, 0xd0, 0x14, 0xa5, 0x0f, 0xc9, 0x28, 0xf0, 0x41, + 0xc0, 0x0f, 0x10, 0x3d, 0xc0, 0x07, 0xf0, 0x39, 0x30, 0x01, 0x88, 0x98, + 0xaa, 0x60, 0xc9, 0x29, 0xd0, 0x0b, 0xa9, 0x20, 0x85, 0x0f, 0xe8, 0xb5, + 0x0f, 0xc9, 0x2c, 0xd0, 0xd5, 0xb5, 0x0f, 0xc9, 0x2c, 0xd0, 0x1e, 0xe8, + 0xb5, 0x0f, 0xc9, 0x58, 0xf0, 0x0d, 0xc9, 0x59, 0xd0, 0x13, 0xa5, 0x0f, + 0xc9, 0x28, 0xf0, 0x0d, 0x95, 0x0d, 0xc8, 0xc8, 0xb5, 0x0d, 0xc9, 0x29, + 0xf0, 0x03, 0xe8, 0xd0, 0xb1, 0xa2, 0xff, 0x60, 0xa0, 0x00, 0xe8, 0xc8, + 0x20, 0x6e, 0xfa, 0xc9, 0xff, 0xd0, 0xf7, 0x98, 0x4a, 0xf0, 0xee, 0xc9, + 0x03, 0xb0, 0xea, 0x60, 0xa5, 0x2c, 0xf0, 0xe5, 0xa2, 0x00, 0xa0, 0xff, + 0xc8, 0xc4, 0x2e, 0xf0, 0xde, 0xb1, 0x40, 0xd1, 0x42, 0xf0, 0xf5, 0xe8, + 0xe4, 0x2c, 0xf0, 0xd1, 0xa5, 0x40, 0x18, 0x65, 0x2d, 0x85, 0x40, 0x90, + 0xe5, 0xe6, 0x41, 0xb0, 0xe1, 0x20, 0x6e, 0xfa, 0xc9, 0xff, 0xf0, 0xbd, + 0x48, 0x20, 0x6d, 0xfa, 0xca, 0xc9, 0xff, 0xd0, 0x02, 0x68, 0x60, 0x85, + 0x44, 0x68, 0x0a, 0x0a, 0x0a, 0x0a, 0x65, 0x44, 0x60, 0xe8, 0xb5, 0x0f, + 0x49, 0x30, 0xc9, 0x0a, 0x90, 0x08, 0x69, 0x88, 0xc9, 0xfa, 0x90, 0x03, + 0x29, 0x0f, 0x60, 0xa9, 0xff, 0x60, 0x48, 0x20, 0xd6, 0xfb, 0x20, 0x8a, + 0xfa, 0x68, 0x29, 0x0f, 0x09, 0x30, 0xc9, 0x3a, 0x90, 0x02, 0x69, 0x06, + 0x99, 0x0f, 0x00, 0xc8, 0x60, 0xbd, 0xe9, 0xfb, 0x85, 0x56, 0xbd, 0x21, + 0xfc, 0x85, 0x57, 0xa2, 0x00, 0xa9, 0x00, 0xa0, 0x05, 0x06, 0x57, 0x26, + 0x56, 0x2a, 0x88, 0xd0, 0xf8, 0x69, 0x40, 0x95, 0x0b, 0xa4, 0x5b, 0xf0, + 0x03, 0x20, 0xef, 0xff, 0xe8, 0xe0, 0x03, 0xd0, 0xe4, 0x60, 0x20, 0xab, + 0xf0, 0xf0, 0x03, 0x20, 0xc3, 0xf0, 0x20, 0xdc, 0xfa, 0x20, 0x81, 0xfb, + 0x85, 0xf5, 0x84, 0xf6, 0xad, 0x11, 0xd0, 0x10, 0xf1, 0xad, 0x10, 0xd0, + 0x20, 0x6e, 0xfb, 0xa1, 0xf5, 0xa8, 0x4a, 0x90, 0x09, 0x6a, 0xb0, 0x14, + 0xc9, 0xa2, 0xf0, 0x10, 0x29, 0x87, 0x4a, 0xaa, 0xbd, 0xb8, 0xfc, 0x90, + 0x03, 0x20, 0xd6, 0xfb, 0x29, 0x0f, 0xd0, 0x04, 0xa0, 0x80, 0xa9, 0x00, + 0xaa, 0xbd, 0xfc, 0xfc, 0x85, 0x29, 0x29, 0x03, 0x85, 0x2a, 0x98, 0x20, + 0x90, 0xfb, 0xa0, 0x00, 0x48, 0xb1, 0xf5, 0x20, 0xdc, 0xff, 0xa2, 0x01, + 0x20, 0x7a, 0xfb, 0xc4, 0x2a, 0xc8, 0x90, 0xf1, 0xa2, 0x03, 0x86, 0x5b, + 0xc0, 0x04, 0x90, 0xf0, 0x68, 0xaa, 0x20, 0x99, 0xfa, 0x20, 0x78, 0xfb, + 0xa4, 0x2a, 0xa2, 0x06, 0xe0, 0x03, 0xf0, 0x1e, 0x06, 0x29, 0x90, 0x0e, + 0xbd, 0x09, 0xfd, 0x20, 0xef, 0xff, 0xbd, 0x0f, 0xfd, 0xf0, 0x03, 0x20, + 0xef, 0xff, 0xca, 0xd0, 0xe7, 0x86, 0x5b, 0x60, 0x88, 0x30, 0xe5, 0x20, + 0xdc, 0xff, 0xa5, 0x29, 0xc9, 0xe8, 0xb1, 0xf5, 0x90, 0xf2, 0x20, 0x84, + 0xfb, 0xaa, 0xe8, 0xd0, 0x01, 0xc8, 0x98, 0x20, 0xdc, 0xff, 0x8a, 0x4c, + 0xdc, 0xff, 0x20, 0xe5, 0xfe, 0xa5, 0xf6, 0xa6, 0xf5, 0x20, 0x67, 0xfb, + 0xa2, 0x03, 0x20, 0xe0, 0xfe, 0xca, 0xd0, 0xfa, 0x60, 0x38, 0xa5, 0x2a, + 0xa4, 0xf6, 0xaa, 0x10, 0x01, 0x88, 0x65, 0xf5, 0x90, 0x01, 0xc8, 0x60, + 0x85, 0x54, 0x29, 0x8f, 0xc9, 0x8a, 0xf0, 0x43, 0x0a, 0xc9, 0x10, 0xf0, + 0x37, 0xa5, 0x54, 0x0a, 0x69, 0x80, 0x2a, 0x0a, 0x29, 0x1f, 0x69, 0x20, + 0x48, 0xa5, 0x54, 0x29, 0x9f, 0xf0, 0x1b, 0x0a, 0xc9, 0x20, 0xf0, 0x10, + 0x29, 0x06, 0xd0, 0x2f, 0x68, 0x29, 0x07, 0xc9, 0x03, 0x10, 0x02, 0x69, + 0x02, 0x69, 0x1f, 0x60, 0x68, 0x29, 0x07, 0x69, 0x18, 0x60, 0x68, 0xaa, + 0xbd, 0xb0, 0xfb, 0x60, 0x16, 0x21, 0x17, 0x18, 0xa5, 0x54, 0x4a, 0x4a, + 0x4a, 0x4a, 0x60, 0x20, 0xd4, 0xfb, 0xc9, 0x0e, 0xd0, 0x02, 0x69, 0xfd, + 0x69, 0x08, 0x60, 0x68, 0x60, 0x82, 0x1b, 0x83, 0x99, 0x82, 0x1b, 0x83, + 0x99, 0x21, 0xa6, 0xa0, 0x1b, 0x4b, 0x1b, 0x4b, 0x99, 0xa6, 0xa6, 0xa0, + 0xa4, 0x21, 0x73, 0x14, 0x95, 0x95, 0x14, 0x13, 0x15, 0x15, 0x10, 0x10, + 0x13, 0x11, 0x54, 0x12, 0x53, 0x9d, 0x61, 0x1c, 0x1c, 0x7c, 0x0b, 0x2b, + 0x09, 0x9d, 0x61, 0x1b, 0x98, 0x0c, 0x93, 0x64, 0x93, 0x9d, 0x61, 0x21, + 0x4b, 0x20, 0x06, 0x20, 0x46, 0x02, 0x12, 0x02, 0x52, 0x72, 0x42, 0x72, + 0x2c, 0xb2, 0x08, 0xb0, 0x48, 0x02, 0x26, 0x70, 0xf0, 0x70, 0xe0, 0x96, + 0x12, 0x26, 0x18, 0x52, 0x86, 0xa6, 0xc6, 0xe6, 0x8a, 0x62, 0xe4, 0x68, + 0x60, 0x32, 0x32, 0x32, 0x30, 0x82, 0x88, 0xe4, 0x06, 0x02, 0x02, 0x60, + 0x86, 0xd8, 0xd8, 0xe4, 0xe4, 0x30, 0x30, 0x46, 0x86, 0x00, 0x30, 0x25, + 0x19, 0x24, 0x28, 0x34, 0x28, 0x28, 0x21, 0x28, 0x28, 0x23, 0x19, 0x34, + 0x30, 0x21, 0x38, 0x34, 0x36, 0x30, 0x30, 0x38, 0x34, 0x30, 0x24, 0x08, + 0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78, 0x88, 0x98, 0xa8, 0xb8, 0xc8, + 0xd8, 0xe8, 0xf8, 0x8a, 0x9a, 0xaa, 0xba, 0xca, 0xea, 0x00, 0x40, 0x60, + 0x10, 0x30, 0x50, 0x70, 0x90, 0xb0, 0xd0, 0xf0, 0x14, 0x20, 0x40, 0x80, + 0xa0, 0xc0, 0xe0, 0x01, 0x21, 0x41, 0x61, 0x81, 0xa1, 0xc1, 0xe1, 0x02, + 0x22, 0x42, 0x62, 0x82, 0xa2, 0xc2, 0xe2, 0x00, 0x08, 0x00, 0x00, 0x04, + 0x14, 0x14, 0x00, 0x10, 0x0c, 0x1c, 0x18, 0x2c, 0x04, 0x20, 0x54, 0x30, + 0x0d, 0x80, 0x04, 0x90, 0x03, 0x22, 0x54, 0x33, 0x0d, 0x80, 0x04, 0x90, + 0x04, 0x20, 0x54, 0x33, 0x0d, 0x80, 0x04, 0x90, 0x04, 0x20, 0x54, 0x3b, + 0x0d, 0x80, 0x04, 0x90, 0x00, 0x22, 0x44, 0x33, 0x0d, 0xc8, 0x44, 0x00, + 0x11, 0x22, 0x44, 0x33, 0x0d, 0xc8, 0x44, 0xa9, 0x01, 0x22, 0x44, 0x33, + 0x0d, 0x80, 0x04, 0x90, 0x01, 0x22, 0x44, 0x33, 0x0d, 0x80, 0x04, 0x90, + 0x26, 0x31, 0x87, 0x9a, 0x00, 0x21, 0x81, 0x82, 0x00, 0x00, 0x59, 0x4d, + 0x91, 0x92, 0x86, 0x4a, 0x85, 0x9d, 0x2c, 0x29, 0x2c, 0x23, 0x28, 0x24, + 0x59, 0x00, 0x58, 0x24, 0x24, 0x00, 0x22, 0x24, 0x25, 0x35, 0x36, 0x37, + 0x04, 0x05, 0x05, 0x02, 0x05, 0x05, 0x04, 0x05, 0x0a, 0x0b, 0x0a, 0x0a, + 0x4e, 0x4c, 0x58, 0x45, 0x4d, 0x52, 0x44, 0x49, 0x21, 0x24, 0x41, 0x56, + 0x50, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf0, 0xfa, 0xf1, 0xff, 0xff, 0xf4, + 0xf0, 0xf0, 0xde, 0xe4, 0xc6, 0x4e, 0x04, 0x9f, 0xc1, 0x57, 0x1a, 0x0e, + 0x4a, 0x90, 0x84, 0x42, 0x57, 0x53, 0x3d, 0x4d, 0x20, 0x3a, 0x52, 0x52, + 0x45, 0x4d, 0x4e, 0x45, 0x41, 0x44, 0x44, 0x53, 0x59, 0x4e, 0x4f, 0x56, + 0x46, 0x53, 0x59, 0x4d, 0x4e, 0x45, 0x53, 0x53, 0x45, 0x57, 0x20, 0x4e, + 0x45, 0x4b, 0x20, 0x59, 0x42, 0x20, 0x33, 0x2e, 0x31, 0x20, 0x52, 0x45, + 0x44, 0x41, 0x53, 0x55, 0x52, 0x4b, 0x0d, 0x50, 0x53, 0x59, 0x58, 0x41, + 0x4c, 0x48, 0x43, 0x5a, 0x49, 0x44, 0x42, 0x00, 0x56, 0x4e, 0x20, 0xe5, + 0xfe, 0x20, 0xb9, 0xfe, 0x20, 0xbe, 0xfe, 0xa0, 0x07, 0xd9, 0x82, 0xfd, + 0xf0, 0x5c, 0x88, 0xd0, 0xf8, 0xc9, 0x52, 0xd0, 0x06, 0x20, 0x9f, 0xfe, + 0x6c, 0xf5, 0x00, 0xc9, 0x54, 0xd0, 0x3a, 0xa2, 0x08, 0xbd, 0x96, 0xfe, + 0x95, 0xe0, 0xca, 0xd0, 0xf8, 0xa1, 0xf5, 0xf0, 0x5d, 0xa4, 0x2a, 0xc9, + 0x20, 0xf0, 0x75, 0xc9, 0x60, 0xf0, 0x63, 0xc9, 0x4c, 0xf0, 0x78, 0xc9, + 0x6c, 0xf0, 0x75, 0xc9, 0x40, 0xf0, 0x53, 0x29, 0x1f, 0x49, 0x14, 0xc9, + 0x04, 0xf0, 0x02, 0xb1, 0xf5, 0x99, 0xe0, 0x00, 0x88, 0x10, 0xf8, 0x20, + 0x9f, 0xfe, 0x4c, 0xe0, 0x00, 0xc9, 0x21, 0xd0, 0x06, 0x20, 0x1b, 0xff, + 0x4c, 0x1e, 0xfe, 0xc9, 0x24, 0xd0, 0x97, 0x4c, 0x0f, 0xff, 0xa2, 0xfe, + 0x20, 0xbe, 0xfe, 0x95, 0x11, 0xe8, 0xd0, 0xf8, 0x20, 0x51, 0xfa, 0x99, + 0xef, 0x00, 0xa6, 0xf1, 0x9a, 0x4c, 0x1e, 0xfe, 0x28, 0x20, 0xaa, 0xfe, + 0x68, 0x85, 0xf5, 0x68, 0x85, 0xf6, 0xba, 0x86, 0xf1, 0x20, 0x57, 0xfe, + 0x20, 0xdc, 0xfa, 0x4c, 0x92, 0xfd, 0x18, 0x68, 0x85, 0xf0, 0x68, 0x85, + 0xf5, 0x68, 0x85, 0xf6, 0x20, 0x82, 0xfb, 0x84, 0xf6, 0x18, 0x90, 0x14, + 0x18, 0x20, 0x82, 0xfb, 0xaa, 0x98, 0x48, 0x8a, 0x48, 0xa0, 0x02, 0x18, + 0xb1, 0xf5, 0xaa, 0x88, 0xb1, 0xf5, 0x86, 0xf6, 0x85, 0xf5, 0xb0, 0xf3, + 0x4c, 0x1e, 0xfe, 0x20, 0xe5, 0xfe, 0xa2, 0x05, 0xbd, 0x82, 0xfd, 0x20, + 0xef, 0xff, 0x20, 0xb9, 0xfe, 0xb5, 0xef, 0x20, 0xdc, 0xff, 0x20, 0xe0, + 0xfe, 0xca, 0xd0, 0xec, 0xa5, 0xf0, 0xa2, 0x08, 0x0a, 0x90, 0x08, 0x48, + 0xbd, 0x89, 0xfd, 0x20, 0xef, 0xff, 0x68, 0xca, 0xd0, 0xf2, 0x60, 0x18, + 0xa0, 0x01, 0xb1, 0xf5, 0x20, 0x84, 0xfb, 0x85, 0xf5, 0x98, 0x38, 0xb0, + 0xa1, 0x20, 0xaa, 0xfe, 0x38, 0xb0, 0x9d, 0xea, 0xea, 0x4c, 0x91, 0xfe, + 0x4c, 0x83, 0xfe, 0xa5, 0xf0, 0x48, 0xa5, 0xf4, 0xa6, 0xf3, 0xa4, 0xf2, + 0x28, 0x60, 0x85, 0xf4, 0x86, 0xf3, 0x84, 0xf2, 0x08, 0x68, 0x85, 0xf0, + 0xba, 0x86, 0xf1, 0xd8, 0x60, 0xa9, 0x2d, 0x4c, 0xef, 0xff, 0x20, 0xea, + 0xfe, 0x4c, 0xef, 0xff, 0x20, 0xe5, 0xfe, 0xa2, 0x00, 0xb5, 0x04, 0x20, + 0xef, 0xff, 0xe8, 0xe0, 0x06, 0xd0, 0xf6, 0x20, 0xe0, 0xfe, 0xa5, 0xfb, + 0x20, 0xe5, 0xff, 0xa5, 0xfa, 0x20, 0xdc, 0xff, 0xa9, 0x20, 0x4c, 0xef, + 0xff, 0xa9, 0x0d, 0x4c, 0xef, 0xff, 0xad, 0x11, 0xd0, 0x10, 0xfb, 0xad, + 0x10, 0xd0, 0x29, 0x7f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd8, 0x58, 0xa0, 0x7f, 0x8c, 0x12, 0xd0, 0xa9, + 0xa7, 0x8d, 0x11, 0xd0, 0x8d, 0x13, 0xd0, 0xa9, 0x5c, 0x20, 0xef, 0xff, + 0x20, 0x1b, 0xff, 0x90, 0xf6, 0xb0, 0xf9, 0x20, 0xe5, 0xfe, 0xa0, 0x01, + 0x88, 0x30, 0xf8, 0x20, 0xbe, 0xfe, 0x99, 0x00, 0x02, 0xc9, 0x0d, 0xf0, + 0x0b, 0xc9, 0x5f, 0xf0, 0xef, 0xc9, 0x1b, 0xf0, 0xda, 0xc8, 0x10, 0xeb, + 0xa0, 0xff, 0xa9, 0x00, 0xaa, 0x0a, 0x85, 0x2b, 0xc8, 0xb9, 0x00, 0x02, + 0xc9, 0x0d, 0xd0, 0x02, 0x38, 0x60, 0x09, 0x80, 0xc9, 0xae, 0x90, 0xf0, + 0xf0, 0xec, 0xc9, 0xba, 0xf0, 0xe7, 0xc9, 0xd2, 0xf0, 0x3d, 0x86, 0x28, + 0x86, 0x29, 0x84, 0x2a, 0xb9, 0x00, 0x02, 0x49, 0x30, 0xc9, 0x0a, 0x90, + 0x06, 0x69, 0x88, 0xc9, 0xfa, 0x90, 0x11, 0x0a, 0x0a, 0x0a, 0x0a, 0xa2, + 0x04, 0x0a, 0x26, 0x28, 0x26, 0x29, 0xca, 0xd0, 0xf8, 0xc8, 0xd0, 0xe0, + 0xc4, 0x2a, 0xd0, 0x02, 0x18, 0x60, 0x24, 0x2b, 0x50, 0x10, 0xa5, 0x28, + 0x81, 0x26, 0xe6, 0x26, 0xd0, 0xaf, 0xe6, 0x27, 0x4c, 0x41, 0xff, 0x6c, + 0x24, 0x00, 0x30, 0x27, 0xa2, 0x02, 0xb5, 0x27, 0x95, 0x25, 0x95, 0x23, + 0xca, 0xd0, 0xf7, 0xd0, 0x12, 0x20, 0xe5, 0xfe, 0xa5, 0x25, 0x20, 0xdc, + 0xff, 0xa5, 0x24, 0x20, 0xdc, 0xff, 0xa9, 0x3a, 0x20, 0xef, 0xff, 0x20, + 0xe0, 0xfe, 0xa1, 0x24, 0x20, 0xdc, 0xff, 0x86, 0x2b, 0xa5, 0x24, 0xc5, + 0x28, 0xa5, 0x25, 0xe5, 0x29, 0xb0, 0xc5, 0xe6, 0x24, 0xd0, 0x02, 0xe6, + 0x25, 0xa5, 0x24, 0x29, 0x07, 0x10, 0xcc, 0x00, 0x48, 0x4a, 0x4a, 0x4a, + 0x4a, 0x20, 0xe5, 0xff, 0x68, 0x29, 0x0f, 0x09, 0x30, 0xc9, 0x3a, 0x90, + 0x02, 0x69, 0x06, 0x2c, 0x12, 0xd0, 0x30, 0xfb, 0x8d, 0x12, 0xd0, 0x60, + 0x00, 0x00, 0x00, 0x0f, 0x00, 0xff, 0x14, 0xfe, + ]; + + start() { + return 0xe0; + } + end() { + return 0xff; + } + read(page: byte, off: byte): byte { + return this.rom[((page - 0xe0) << 8) | off]; + } + write(page: byte, off: byte, val: byte) { + this.rom[((page - 0xe0) << 8) | off] = val; + } + getState() { + return {}; + } + setState() {} +} diff --git a/js/symbols.js b/js/symbols.js deleted file mode 100644 index 059b8d8..0000000 --- a/js/symbols.js +++ /dev/null @@ -1,11 +0,0 @@ -export var SYMBOLS = { - 0xD010: 'KBD', - 0xD011: 'KBDCR', - 0xD012: 'DSP', - 0xD013: 'DSPCR', - - 0xFF1F: 'GETLINE', - 0xFFEF: 'ECHO', - 0xFFDC: 'PRBYTE', - 0xFFE5: 'PRHEX' -}; diff --git a/js/symbols.ts b/js/symbols.ts new file mode 100644 index 0000000..9ea4946 --- /dev/null +++ b/js/symbols.ts @@ -0,0 +1,24 @@ +/* Copyright 2010-2023 Will Scullin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +import type { address } from './types'; + +export const SYMBOLS: Record = { + 0xd010: 'KBD', + 0xd011: 'KBDCR', + 0xd012: 'DSP', + 0xd013: 'DSPCR', + + 0xff1f: 'GETLINE', + 0xffef: 'ECHO', + 0xffdc: 'PRBYTE', + 0xffe5: 'PRHEX', +}; diff --git a/js/types.ts b/js/types.ts new file mode 100644 index 0000000..33f2818 --- /dev/null +++ b/js/types.ts @@ -0,0 +1,43 @@ +/* Copyright 2023 Will Scullin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +export type byte = number; + +export type word = number; + +export type address = word; + +export type memory = Uint8Array | byte[]; + +export interface Memory { + /** Read a byte. */ + read(page: byte, offset: byte): byte; + /** Write a byte. */ + write(page: byte, offset: byte, value: byte): void; +} + +/** A mapped region of memory. */ +export interface MemoryPages extends Memory { + /** Start page. */ + start(): byte; + /** End page, inclusive. */ + end(): byte; +} + +/** + * Extracts the members of a constant array as a type. Used as: + * + * @example + * const SOME_VALUES = ['a', 'b', 1, 2] as const; + * type SomeValues = MemberOf; // 'a' | 'b' | 1 | 2 + */ +export type MemberOf> = + T extends ReadonlyArray ? E : never; diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js deleted file mode 100644 index 62403d2..0000000 --- a/js/ui/keyboard.js +++ /dev/null @@ -1,311 +0,0 @@ -/* Copyright 2010-2019 Will Scullin - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - */ - -import { debug, toHex } from '../util'; - -// keycode: [plain, cntl, shift] - -var keymap = { - // Most of these won't happen - 0x00: [0x00, 0x00, 0x00], // - 0x01: [0x01, 0x01, 0x01], // - 0x02: [0x02, 0x02, 0x02], // - 0x03: [0x03, 0x03, 0x03], // - 0x04: [0x04, 0x04, 0x04], // - 0x05: [0x05, 0x05, 0x05], // - 0x06: [0x06, 0x06, 0x06], // - 0x07: [0x07, 0x07, 0x07], // - 0x08: [0x5f, 0x5f, 0x5f], // BS - 0x09: [0x09, 0x09, 0x09], // TAB - 0x0A: [0x0A, 0x0A, 0x0A], // - 0x0B: [0x0B, 0x0B, 0x0B], // - 0x0C: [0x0C, 0x0C, 0x0C], // - 0x0D: [0x0D, 0x0D, 0x0D], // CR - 0x0E: [0x0E, 0x0E, 0x0E], // - 0x0F: [0x0F, 0x0F, 0x0F], // - - 0x10: [0xff, 0xff, 0xff], // SHIFT - 0x11: [0xff, 0xff, 0xff], // CTRL - 0x12: [0xff, 0xff, 0xff], // OPTION - 0x13: [0x13, 0x13, 0x13], // - 0x14: [0x14, 0x14, 0x14], // - 0x15: [0x15, 0x15, 0x15], // - 0x16: [0x16, 0x16, 0x16], // - 0x17: [0x17, 0x17, 0x18], // - 0x18: [0x18, 0x18, 0x18], // - 0x19: [0x19, 0x19, 0x19], // - 0x1A: [0x1A, 0x1A, 0x1A], // - 0x1B: [0x1B, 0x1B, 0x1B], // ESC - 0x1C: [0x1C, 0x1C, 0x1C], // - 0x1D: [0x1D, 0x1D, 0x1D], // - 0x1E: [0x1E, 0x1E, 0x1E], // - 0x1F: [0x1F, 0x1F, 0x1F], // - - // Most of these besides space won't happen - 0x20: [0x20, 0x20, 0x20], // - 0x21: [0x21, 0x21, 0x21], // - 0x22: [0x22, 0x22, 0x22], // - 0x23: [0x23, 0x23, 0x23], // - 0x24: [0x24, 0x24, 0x24], // - 0x25: [0x5f, 0x5f, 0x5f], // <- left - 0x26: [0x0B, 0x0B, 0x0B], // ^ up - 0x27: [0x15, 0x15, 0x15], // -> right - 0x28: [0x0A, 0x0A, 0x0A], // v down - 0x29: [0x29, 0x29, 0x29], // ) - 0x2A: [0x2A, 0x2A, 0x2A], // * - 0x2B: [0x2B, 0x2B, 0x2B], // + - 0x2C: [0x2C, 0x2C, 0x3C], // , - < - 0x2D: [0x2D, 0x2D, 0x5F], // - - _ - 0x2E: [0x2E, 0x2E, 0x3E], // . - > - 0x2F: [0x2F, 0x2F, 0x3F], // / - ? - - 0x30: [0x30, 0x30, 0x29], // 0 - ) - 0x31: [0x31, 0x31, 0x21], // 1 - ! - 0x32: [0x32, 0x00, 0x40], // 2 - @ - 0x33: [0x33, 0x33, 0x23], // 3 - # - 0x34: [0x34, 0x34, 0x24], // 4 - $ - 0x35: [0x35, 0x35, 0x25], // 5 - % - 0x36: [0x36, 0x36, 0x5E], // 6 - ^ - 0x37: [0x37, 0x37, 0x26], // 7 - & - 0x38: [0x38, 0x38, 0x2A], // 8 - * - 0x39: [0x39, 0x39, 0x28], // 9 - ( - 0x3A: [0x3A, 0x3A, 0x3A], // : - 0x3B: [0x3B, 0x3B, 0x3A], // ; - : - 0x3C: [0x3C, 0x3C, 0x3C], // < - 0x3D: [0x3D, 0x3D, 0x2B], // = - + - 0x3E: [0x3E, 0x3E, 0x3E], // > - 0x3F: [0x3F, 0x3F, 0x3F], // ? - - // Alpha and control - 0x40: [0x40, 0x00, 0x40], // @ - 0x41: [0x41, 0x01, 0x41], // A - 0x42: [0x42, 0x02, 0x42], // B - 0x43: [0x43, 0x03, 0x43], // C - BRK - 0x44: [0x44, 0x04, 0x44], // D - 0x45: [0x45, 0x05, 0x45], // E - 0x46: [0x46, 0x06, 0x46], // F - 0x47: [0x47, 0x07, 0x47], // G - BELL - 0x48: [0x48, 0x08, 0x48], // H - 0x49: [0x49, 0x09, 0x49], // I - TAB - 0x4A: [0x4A, 0x0A, 0x4A], // J - NL - 0x4B: [0x4B, 0x0B, 0x4B], // K - VT - 0x4C: [0x4C, 0x0C, 0x4C], // L - 0x4D: [0x4D, 0x0D, 0x4D], // M - CR - 0x4E: [0x4E, 0x0E, 0x4E], // N - 0x4F: [0x4F, 0x0F, 0x4F], // O - - 0x50: [0x50, 0x10, 0x50], // P - 0x51: [0x51, 0x11, 0x51], // Q - 0x52: [0x52, 0x12, 0x52], // R - 0x53: [0x53, 0x13, 0x53], // S - 0x54: [0x54, 0x14, 0x54], // T - 0x55: [0x55, 0x15, 0x55], // U - 0x56: [0x56, 0x16, 0x56], // V - 0x57: [0x57, 0x17, 0x57], // W - 0x58: [0x58, 0x18, 0x58], // X - 0x59: [0x59, 0x19, 0x59], // Y - 0x5A: [0x5A, 0x1A, 0x5A], // Z - // 0x5B: [0x5B, 0x1B, 0x5B], // [ - ESC - // 0x5C: [0x5C, 0x1C, 0x5C], // \ - // 0x5D: [0x5D, 0x1D, 0x5D], // ] - 0x5E: [0x5E, 0x1E, 0x5E], // ^ - 0x5F: [0x5F, 0x1F, 0x5F], // _ - - // Stray keys - 0xBA: [0x3B, 0x3B, 0x3A], // ; - : - 0xBB: [0x3D, 0x3D, 0x2B], // = - + - 0xBC: [0x2C, 0x2C, 0x3C], // , - < - 0xBD: [0x2D, 0x2D, 0x5F], // - - _ - 0xBE: [0x2E, 0x2E, 0x3E], // . - > - 0xBF: [0x2F, 0x2F, 0x3F], // / - ? - 0xDB: [0x5B, 0x5B, 0x5B], // [ - 0xDC: [0x5C, 0x5C, 0x5C], // \ - 0xDD: [0x5D, 0x5D, 0x5D], // ] - 0xDE: [0x27, 0x27, 0x22], // ' - " - - 0xFF: [0xFF, 0xFF, 0xFF] // No comma line -}; - -export function mapKeyEvent(evt) { - var code = evt.keyCode; - - if (code in keymap) { - return keymap[code][evt.shiftKey ? 2 : (evt.ctrlKey ? 1 : 0)]; - } - - debug('Unhandled key = ' + toHex(code)); - return 0xFF; -} - -export function KeyBoard(id, cpu, io, text) { - var keys = - [[['1','2','3','4','5','6','7','8','9','0',':','-','RESET'], - ['ESC','Q','W','E','R','T','Y','U','I','O','P','FEED','RETURN'], - ['CTRL','A','S','D','F','G','H','J','K','L',';','OUT','CLS'], - ['SHIFT','Z','X','C','V','B','N','M',',','.','/','SHIFT'], - [' ']], - [['!','"','#','$','%','&','\'','(',')','0','*','=','RESET'], - ['ESC','Q','W','E','R','T','Y','U','I','O','@','LINE','RETURN'], - ['CTRL','A','S','D','F','BELL','H','J','K','L','+','RUB','CLS'], - ['SHIFT','Z','X','C','V','B','^','M','<','>','?','SHIFT'], - [' ']]]; - - var shifted = false; - var controlled = false; - var kb = document.querySelector(id); - - return { - shiftKey: function keyboard_shiftKey(down) { - shifted = down; - kb.querySelectorAll('.key-SHIFT').forEach(function(el) { - if (down) { - el.classList.add('active'); - } else { - el.classList.remove('active'); - } - }); - }, - - controlKey: function keyboard_controlKey(down) { - controlled = down; - kb.querySelectorAll('.key-CTRL').forEach(function(el) { - if (down) { - el.classList.add('active'); - } else { - el.classList.remove('active'); - } - }); - }, - - create: function keyboard_create() { - var x, y, row, key, key1, key2, label, label1, label2; - - function buildLabel(k) { - var span = document.createElement('span'); - span.innerHTML = k; - if (k.length > 1 && k.substr(0,1) != '&') { - span.classList.add('small'); - } - return span; - } - - function _mouseup(event) { - event.currentTarget.classList.remove('pressed'); - } - - function _mousedown(event) { - event.currentTarget.classList.add('pressed'); - var key = event.currentTarget.dataSet[shifted ? 'key2' : 'key1']; - switch (key) { - case 'BELL': - key = 'G'; - break; - case 'RETURN': - key = '\r'; - break; - case 'LINE': - case 'FEED': - key = '\n'; - break; - case 'RUB': - case 'OUT': - key = '_'; // 0x5f - break; - case ' ': - key = ' '; - break; - case 'ESC': - key = '\0x1b'; - break; - default: - break; - } - - if (key.length > 1) { - switch (key) { - case 'SHIFT': - shifted = !shifted; - kb.querySelectorAll('.key-SHIFT').forEach(function(el) { - el.classList.toggle('active'); - }); - break; - case 'CTRL': - controlled = !controlled; - kb.querySelectorAll('.key-CTRL').forEach(function(el) { - el.classList.toggle('active'); - }); - break; - case 'RESET': - cpu.reset(); - break; - case 'CLS': - text.clear(); - break; - default: - break; - } - } else { - if (controlled && key >= '@' && key <= '_') { - io.keyDown(key.charCodeAt(0) - 0x40); - } else { - io.keyDown(key.charCodeAt(0)); - } - } - } - - for (y = 0; y < 5; y++) { - row = document.createElement('div'); - row.classList.add('row', 'row' + y); - kb.append(row); - for (x = 0; x < keys[0][y].length; x++) { - key1 = keys[0][y][x]; - key2 = keys[1][y][x]; - - label = document.createElement('div'); - label1 = buildLabel(key1); - label2 = buildLabel(key2); - - key = document.createElement('div'); - key.classList.add('key', 'key-' + key1.replace(/[&;]/g,'')); - - if (key1.length > 1) { - if (key1 != key2) { - key.classList.add('vcenter2'); - } else { - key.classList.add('vcenter'); - } - } - - if (key1 != key2) { - key.classList.add('key-' + key2.replace(/[&;]/g,'')); - label.append(label2); - label.append(document.createElement('br')); - } - label.append(label1); - key.append(label); - key.dataSet = {'key1': key1, 'key2': key2}; - - if (window.ontouchstart === undefined) { - key.addEventListener('mousedown', _mousedown); - key.addEventListener('mouseup', _mouseup); - key.addEventListener('mouseout', _mouseup); - } else { - key.addEventListener('touchstart', _mousedown); - key.addEventListener('touchend', _mouseup); - key.addEventListener('touchleave', _mouseup); - } - - row.append(key); - } - } - } - }; -} diff --git a/js/ui/keyboard.ts b/js/ui/keyboard.ts new file mode 100644 index 0000000..bea39d8 --- /dev/null +++ b/js/ui/keyboard.ts @@ -0,0 +1,339 @@ +/* Copyright 2010-2019 Will Scullin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +import CPU6502 from 'js/cpu6502'; +import { debug, toHex } from '../util'; +import Apple1IO from 'js/apple1io'; +import { TextPage } from 'js/canvas1'; +import { byte } from 'js/types'; + +// keycode: [plain, cntl, shift] + +const keymap: Record = { + // Most of these won't happen + 0x00: [0x00, 0x00, 0x00], // + 0x01: [0x01, 0x01, 0x01], // + 0x02: [0x02, 0x02, 0x02], // + 0x03: [0x03, 0x03, 0x03], // + 0x04: [0x04, 0x04, 0x04], // + 0x05: [0x05, 0x05, 0x05], // + 0x06: [0x06, 0x06, 0x06], // + 0x07: [0x07, 0x07, 0x07], // + 0x08: [0x5f, 0x5f, 0x5f], // BS + 0x09: [0x09, 0x09, 0x09], // TAB + 0x0a: [0x0a, 0x0a, 0x0a], // + 0x0b: [0x0b, 0x0b, 0x0b], // + 0x0c: [0x0c, 0x0c, 0x0c], // + 0x0d: [0x0d, 0x0d, 0x0d], // CR + 0x0e: [0x0e, 0x0e, 0x0e], // + 0x0f: [0x0f, 0x0f, 0x0f], // + + 0x10: [0xff, 0xff, 0xff], // SHIFT + 0x11: [0xff, 0xff, 0xff], // CTRL + 0x12: [0xff, 0xff, 0xff], // OPTION + 0x13: [0x13, 0x13, 0x13], // + 0x14: [0x14, 0x14, 0x14], // + 0x15: [0x15, 0x15, 0x15], // + 0x16: [0x16, 0x16, 0x16], // + 0x17: [0x17, 0x17, 0x18], // + 0x18: [0x18, 0x18, 0x18], // + 0x19: [0x19, 0x19, 0x19], // + 0x1a: [0x1a, 0x1a, 0x1a], // + 0x1b: [0x1b, 0x1b, 0x1b], // ESC + 0x1c: [0x1c, 0x1c, 0x1c], // + 0x1d: [0x1d, 0x1d, 0x1d], // + 0x1e: [0x1e, 0x1e, 0x1e], // + 0x1f: [0x1f, 0x1f, 0x1f], // + + // Most of these besides space won't happen + 0x20: [0x20, 0x20, 0x20], // + 0x21: [0x21, 0x21, 0x21], // + 0x22: [0x22, 0x22, 0x22], // + 0x23: [0x23, 0x23, 0x23], // + 0x24: [0x24, 0x24, 0x24], // + 0x25: [0x5f, 0x5f, 0x5f], // <- left + 0x26: [0x0b, 0x0b, 0x0b], // ^ up + 0x27: [0x15, 0x15, 0x15], // -> right + 0x28: [0x0a, 0x0a, 0x0a], // v down + 0x29: [0x29, 0x29, 0x29], // ) + 0x2a: [0x2a, 0x2a, 0x2a], // * + 0x2b: [0x2b, 0x2b, 0x2b], // + + 0x2c: [0x2c, 0x2c, 0x3c], // , - < + 0x2d: [0x2d, 0x2d, 0x5f], // - - _ + 0x2e: [0x2e, 0x2e, 0x3e], // . - > + 0x2f: [0x2f, 0x2f, 0x3f], // / - ? + + 0x30: [0x30, 0x30, 0x29], // 0 - ) + 0x31: [0x31, 0x31, 0x21], // 1 - ! + 0x32: [0x32, 0x00, 0x40], // 2 - @ + 0x33: [0x33, 0x33, 0x23], // 3 - # + 0x34: [0x34, 0x34, 0x24], // 4 - $ + 0x35: [0x35, 0x35, 0x25], // 5 - % + 0x36: [0x36, 0x36, 0x5e], // 6 - ^ + 0x37: [0x37, 0x37, 0x26], // 7 - & + 0x38: [0x38, 0x38, 0x2a], // 8 - * + 0x39: [0x39, 0x39, 0x28], // 9 - ( + 0x3a: [0x3a, 0x3a, 0x3a], // : + 0x3b: [0x3b, 0x3b, 0x3a], // ; - : + 0x3c: [0x3c, 0x3c, 0x3c], // < + 0x3d: [0x3d, 0x3d, 0x2b], // = - + + 0x3e: [0x3e, 0x3e, 0x3e], // > + 0x3f: [0x3f, 0x3f, 0x3f], // ? + + // Alpha and control + 0x40: [0x40, 0x00, 0x40], // @ + 0x41: [0x41, 0x01, 0x41], // A + 0x42: [0x42, 0x02, 0x42], // B + 0x43: [0x43, 0x03, 0x43], // C - BRK + 0x44: [0x44, 0x04, 0x44], // D + 0x45: [0x45, 0x05, 0x45], // E + 0x46: [0x46, 0x06, 0x46], // F + 0x47: [0x47, 0x07, 0x47], // G - BELL + 0x48: [0x48, 0x08, 0x48], // H + 0x49: [0x49, 0x09, 0x49], // I - TAB + 0x4a: [0x4a, 0x0a, 0x4a], // J - NL + 0x4b: [0x4b, 0x0b, 0x4b], // K - VT + 0x4c: [0x4c, 0x0c, 0x4c], // L + 0x4d: [0x4d, 0x0d, 0x4d], // M - CR + 0x4e: [0x4e, 0x0e, 0x4e], // N + 0x4f: [0x4f, 0x0f, 0x4f], // O + + 0x50: [0x50, 0x10, 0x50], // P + 0x51: [0x51, 0x11, 0x51], // Q + 0x52: [0x52, 0x12, 0x52], // R + 0x53: [0x53, 0x13, 0x53], // S + 0x54: [0x54, 0x14, 0x54], // T + 0x55: [0x55, 0x15, 0x55], // U + 0x56: [0x56, 0x16, 0x56], // V + 0x57: [0x57, 0x17, 0x57], // W + 0x58: [0x58, 0x18, 0x58], // X + 0x59: [0x59, 0x19, 0x59], // Y + 0x5a: [0x5a, 0x1a, 0x5a], // Z + // 0x5B: [0x5B, 0x1B, 0x5B], // [ - ESC + // 0x5C: [0x5C, 0x1C, 0x5C], // \ + // 0x5D: [0x5D, 0x1D, 0x5D], // ] + 0x5e: [0x5e, 0x1e, 0x5e], // ^ + 0x5f: [0x5f, 0x1f, 0x5f], // _ + + // Stray keys + 0xba: [0x3b, 0x3b, 0x3a], // ; - : + 0xbb: [0x3d, 0x3d, 0x2b], // = - + + 0xbc: [0x2c, 0x2c, 0x3c], // , - < + 0xbd: [0x2d, 0x2d, 0x5f], // - - _ + 0xbe: [0x2e, 0x2e, 0x3e], // . - > + 0xbf: [0x2f, 0x2f, 0x3f], // / - ? + 0xdb: [0x5b, 0x5b, 0x5b], // [ + 0xdc: [0x5c, 0x5c, 0x5c], // \ + 0xdd: [0x5d, 0x5d, 0x5d], // ] + 0xde: [0x27, 0x27, 0x22], // ' - " + + 0xff: [0xff, 0xff, 0xff], // No comma line +} as const; + +const keys = [ + [ + ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', ':', '-', 'RESET'], + ['ESC', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'FEED', 'RETURN'], + ['CTRL', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', 'OUT', 'CLS'], + ['SHIFT', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', ',', '.', '/', 'SHIFT'], + [' '], + ], + [ + ['!', '"', '#', '$', '%', '&', "'", '(', ')', '0', '*', '=', 'RESET'], + ['ESC', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', '@', 'LINE', 'RETURN'], + ['CTRL', 'A', 'S', 'D', 'F', 'BELL', 'H', 'J', 'K', 'L', '+', 'RUB', 'CLS'], + ['SHIFT', 'Z', 'X', 'C', 'V', 'B', '^', 'M', '<', '>', '?', 'SHIFT'], + [' '], + ], +] as const; + +export function mapKeyEvent(evt: KeyboardEvent) { + const code = evt.keyCode; + + if (code in keymap) { + return keymap[code][evt.shiftKey ? 2 : evt.ctrlKey ? 1 : 0]; + } + + debug('Unhandled key = ' + toHex(code)); + return 0xff; +} + +export class KeyBoard { + shifted = false; + controlled = false; + kb: HTMLDivElement; + + constructor( + id: string, + private cpu: CPU6502, + private io: Apple1IO, + private text: TextPage, + ) { + this.kb = document.querySelector(id)!; + } + + shiftKey(down: boolean) { + this.shifted = down; + this.kb.querySelectorAll('.key-SHIFT').forEach(function (el) { + if (down) { + el.classList.add('active'); + } else { + el.classList.remove('active'); + } + }); + } + + controlKey(down: boolean) { + this.controlled = down; + this.kb.querySelectorAll('.key-CTRL').forEach(function (el) { + if (down) { + el.classList.add('active'); + } else { + el.classList.remove('active'); + } + }); + } + + create() { + let x, y, row, key, key1, key2, label, label1, label2; + + function buildLabel(k: string) { + const span = document.createElement('span'); + span.innerHTML = k; + if (k.length > 1 && !k.startsWith('&')) { + span.classList.add('small'); + } + return span; + } + + const _mouseup = (event: Event) => { + if (!(event.currentTarget instanceof HTMLElement)) { + return; + } + event.currentTarget.classList.remove('pressed'); + }; + + const _mousedown = (event: Event) => { + if (!(event.currentTarget instanceof HTMLElement)) { + return; + } + event.currentTarget.classList.add('pressed'); + let key = event.currentTarget.dataset[this.shifted ? 'key2' : 'key1']; + if (!key) { + return; + } + switch (key) { + case 'BELL': + key = 'G'; + break; + case 'RETURN': + key = '\r'; + break; + case 'LINE': + case 'FEED': + key = '\n'; + break; + case 'RUB': + case 'OUT': + key = '_'; // 0x5f + break; + case ' ': + key = ' '; + break; + case 'ESC': + key = '\0x1b'; + break; + default: + break; + } + + if (key.length > 1) { + switch (key) { + case 'SHIFT': + this.shifted = !this.shifted; + this.kb + .querySelectorAll('.key-SHIFT') + .forEach(function (el: HTMLElement) { + el.classList.toggle('active'); + }); + break; + case 'CTRL': + this.controlled = !this.controlled; + this.kb.querySelectorAll('.key-CTRL').forEach(function (el) { + el.classList.toggle('active'); + }); + break; + case 'RESET': + this.cpu.reset(); + break; + case 'CLS': + this.text.clear(); + break; + default: + break; + } + } else { + if (this.controlled && key >= '@' && key <= '_') { + this.io.keyDown(key.charCodeAt(0) - 0x40); + } else { + this.io.keyDown(key.charCodeAt(0)); + } + } + }; + + for (y = 0; y < 5; y++) { + row = document.createElement('div'); + row.classList.add('row', 'row' + y); + this.kb.append(row); + for (x = 0; x < keys[0][y].length; x++) { + key1 = keys[0][y][x]; + key2 = keys[1][y][x]; + + label = document.createElement('div'); + label1 = buildLabel(key1); + label2 = buildLabel(key2); + + key = document.createElement('div'); + key.classList.add('key', 'key-' + key1.replace(/[&;]/g, '')); + + if (key1.length > 1) { + if (key1 !== key2) { + key.classList.add('vcenter2'); + } else { + key.classList.add('vcenter'); + } + } + + if (key1 !== key2) { + key.classList.add('key-' + key2.replace(/[&;]/g, '')); + label.append(label2); + label.append(document.createElement('br')); + } + label.append(label1); + key.append(label); + key.dataset['key1'] = key1; + key.dataset['key2'] = key2; + + if (window.ontouchstart === undefined) { + key.addEventListener('mousedown', _mousedown); + key.addEventListener('mouseup', _mouseup); + key.addEventListener('mouseout', _mouseup); + } else { + key.addEventListener('touchstart', _mousedown); + key.addEventListener('touchend', _mouseup); + key.addEventListener('touchleave', _mouseup); + } + + row.append(key); + } + } + } +} diff --git a/js/util.js b/js/util.js deleted file mode 100644 index 99fa91a..0000000 --- a/js/util.js +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright 2010-2019 Will Scullin - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - */ - -var hex_digits = '0123456789ABCDEF'; -var bin_digits = '01'; - -export function allocMem(size) { - var result; - if (window.Uint8Array) { - result = new Uint8Array(size); - } else { - result = new Array(size); - } - return result; -} - -export function allocMemPages(pages) { - return allocMem(pages * 0x100); -} - -export function debug(msg) { - /*eslint no-console: 0 */ - if (typeof(console) != 'undefined' && 'log' in console) { - console.log(msg); - } else if (typeof(environment) == 'object') { // rhino shell - print(msg); - } -} - -export function toHex(v, n) { - if (!n) { - n = v < 256 ? 2 : 4; - } - var result = ''; - for (var idx = 0; idx < n; idx++) { - result = hex_digits[v & 0x0f] + result; - v >>= 4; - } - return result; -} - -export function toBinary(v) { - var result = ''; - for (var idx = 0; idx < 8; idx++) { - result = bin_digits[v & 0x01] + result; - v >>= 1; - } - return result; -} - -// From http://www.netlobo.com/url_query_string_javascript.html -export function gup( name ) -{ - name = name.replace(/[[]/,'\\[').replace(/[\]]/,'\\]'); - var regexS = '[\\?&]'+name+'=([^&#]*)'; - var regex = new RegExp( regexS ); - var results = regex.exec( window.location.href ); - if( !results ) - return ''; - else - return results[1]; -} - -export function hup() { - var regex = new RegExp('#(.*)'); - var results = regex.exec(window.location.hash); - if ( !results ) - return ''; - else - return decodeURIComponent(results[1]); -} diff --git a/js/util.ts b/js/util.ts new file mode 100644 index 0000000..0d48914 --- /dev/null +++ b/js/util.ts @@ -0,0 +1,67 @@ +/* Copyright 2010-2023 Will Scullin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +import { byte, word } from './types'; + +const hex_digits = '0123456789ABCDEF'; +const bin_digits = '01'; + +export function allocMem(size: word) { + let result; + if (window.Uint8Array) { + result = new Uint8Array(size); + } else { + result = new Array(size); + } + return result; +} + +export function allocMemPages(pages: byte) { + return allocMem(pages * 0x100); +} + +export function debug(...msg: unknown[]) { + /*eslint no-console: 0 */ + console.log(...msg); +} + +export function toHex(v: byte, n?: 2 | 4) { + if (!n) { + n = v < 256 ? 2 : 4; + } + let result = ''; + for (let idx = 0; idx < n; idx++) { + result = hex_digits[v & 0x0f] + result; + v >>= 4; + } + return result; +} + +export function toBinary(v: byte) { + let result = ''; + for (let idx = 0; idx < 8; idx++) { + result = bin_digits[v & 0x01] + result; + v >>= 1; + } + return result; +} + +export function gup(name: string) { + const params = new URLSearchParams(window.location.search); + return params.get(name); +} + +export function hup() { + const regex = new RegExp('#(.*)'); + const results = regex.exec(window.location.hash); + if (!results) return ''; + else return decodeURIComponent(results[1]); +} diff --git a/package-lock.json b/package-lock.json index aadbdfa..fa3a028 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,11 +14,20 @@ "devDependencies": { "@babel/core": "^7.4.0", "@babel/preset-env": "^7.4.2", + "@types/jest": "^29.5.3", + "@types/micromodal": "^0.3.3", + "@typescript-eslint/eslint-plugin": "^6.2.1", "ajv": "^6.9.2", - "babel-jest": "^26.3.0", + "babel-jest": "^29.5.0", "eslint": "^8.3.0", - "jest": "^27.3.1", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-jest": "^27.2.3", + "eslint-plugin-prettier": "^5.0.0", + "jest": "^29.5.0", "node-forge": "^1.3.0", + "ts-jest": "^29.1.1", + "ts-loader": "^9.4.4", + "typescript": "^5.1.6", "webpack": "^5.64.4", "webpack-cli": "^4.9.1", "webpack-dev-server": "^4.6.0" @@ -76,9 +85,9 @@ } }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -147,9 +156,9 @@ } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -270,9 +279,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -564,6 +573,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -652,12 +676,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1184,22 +1208,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", - "dev": true, - "dependencies": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - }, - "bin": { - "watch": "cli.js" - }, - "engines": { - "node": ">=0.1.95" - } - }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", @@ -1209,6 +1217,30 @@ "node": ">=10.0.0" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", @@ -1329,45 +1361,20 @@ } }, "node_modules/@jest/console": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", - "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.2.tgz", + "integrity": "sha512-0N0yZof5hi44HAR2pPS+ikJ3nzKNoZdVu8FffRf3wy47I7Dm7etk/3KetMdRUqzVd16V4O2m2ISpNTbnIuqy1w==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.3.1", - "jest-util": "^27.3.1", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/console/node_modules/ansi-styles": { @@ -1401,12 +1408,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/console/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "node_modules/@jest/console/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1434,23 +1435,6 @@ "node": ">=8" } }, - "node_modules/@jest/console/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -1464,42 +1448,42 @@ } }, "node_modules/@jest/core": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", - "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.2.tgz", + "integrity": "sha512-Oj+5B+sDMiMWLhPFF+4/DvHOf+U10rgvCLGPHP8Xlsy/7QxS51aU/eBngudHlJXnaWD5EohAgJ4js+T6pa+zOg==", "dev": true, "dependencies": { - "@jest/console": "^27.3.1", - "@jest/reporters": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^29.6.2", + "@jest/reporters": "^29.6.2", + "@jest/test-result": "^29.6.2", + "@jest/transform": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "ci-info": "^3.2.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.3.0", - "jest-config": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-resolve-dependencies": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "jest-watcher": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.6.2", + "jest-haste-map": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.6.2", + "jest-resolve-dependencies": "^29.6.2", + "jest-runner": "^29.6.2", + "jest-runtime": "^29.6.2", + "jest-snapshot": "^29.6.2", + "jest-util": "^29.6.2", + "jest-validate": "^29.6.2", + "jest-watcher": "^29.6.2", "micromatch": "^4.0.4", - "rimraf": "^3.0.0", + "pretty-format": "^29.6.2", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -1510,72 +1494,6 @@ } } }, - "node_modules/@jest/core/node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/core/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -1591,31 +1509,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/core/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@jest/core/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1632,12 +1525,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/core/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1656,18 +1543,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@jest/core/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1677,140 +1552,6 @@ "node": ">=8" } }, - "node_modules/@jest/core/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/@jest/core/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/@jest/core/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core/node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/@jest/core/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@jest/core/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@jest/core/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -1823,406 +1564,111 @@ "node": ">=8" } }, - "node_modules/@jest/core/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.2.tgz", + "integrity": "sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/fake-timers": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", - "jest-mock": "^27.3.0" + "jest-mock": "^29.6.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/environment/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "node_modules/@jest/expect": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.2.tgz", + "integrity": "sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "expect": "^29.6.2", + "jest-snapshot": "^29.6.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/environment/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/@jest/expect-utils": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.2.tgz", + "integrity": "sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/environment/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" + "jest-get-type": "^29.4.3" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/environment/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/environment/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/environment/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/environment/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/environment/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.2.tgz", + "integrity": "sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", + "@jest/types": "^29.6.1", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" + "jest-message-util": "^29.6.2", + "jest-mock": "^29.6.2", + "jest-util": "^29.6.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/fake-timers/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/fake-timers/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/fake-timers/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "node_modules/@jest/fake-timers/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/fake-timers/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/fake-timers/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", - "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.2.tgz", + "integrity": "sha512-cjuJmNDjs6aMijCmSa1g2TNG4Lby/AeU7/02VtpW+SLcZXzOLK2GpN2nLqcFjmhy3B3AoPeQVx7BnyOf681bAw==", "dev": true, "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/types": "^27.2.5", - "expect": "^27.3.1" + "@jest/environment": "^29.6.2", + "@jest/expect": "^29.6.2", + "@jest/types": "^29.6.1", + "jest-mock": "^29.6.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/globals/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/globals/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/globals/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/globals/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/globals/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/globals/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", - "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.2.tgz", + "integrity": "sha512-sWtijrvIav8LgfJZlrGCdN0nP2EWbakglJY49J1Y5QihcQLfy7ovyxxjJBRXMNltgt4uPtEcFmIMbVshEDfFWw==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^29.6.2", + "@jest/test-result": "^29.6.2", + "@jest/transform": "^29.6.2", + "@jest/types": "^29.6.1", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2", + "jest-worker": "^29.6.2", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -2233,57 +1679,6 @@ } } }, - "node_modules/@jest/reporters/node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -2299,31 +1694,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/reporters/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@jest/reporters/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2340,12 +1710,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/reporters/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2364,18 +1728,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@jest/reporters/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2385,140 +1737,6 @@ "node": ">=8" } }, - "node_modules/@jest/reporters/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/@jest/reporters/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/@jest/reporters/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@jest/reporters/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@jest/reporters/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2531,192 +1749,89 @@ "node": ">=8" } }, - "node_modules/@jest/reporters/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/@jest/schemas": { + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", + "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">=8.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/source-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", - "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.0.tgz", + "integrity": "sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" + "graceful-fs": "^4.2.9" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/source-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/test-result": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", - "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.2.tgz", + "integrity": "sha512-3VKFXzcV42EYhMCsJQURptSqnyjqCGbtLuX5Xxb6Pm6gUf1wIRIl+mandIRGJyWKgNKYF9cnstti6Ls5ekduqw==", "dev": true, "dependencies": { - "@jest/console": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^29.6.2", + "@jest/types": "^29.6.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-result/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-result/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/test-result/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/test-result/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/test-result/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/test-result/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/test-result/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/test-result/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/test-sequencer": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", - "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.2.tgz", + "integrity": "sha512-GVYi6PfPwVejO7slw6IDO0qKVum5jtrJ3KoLGbgBWyr2qr4GaxFV6su+ZAjdTX75Sr1DkMFRk09r2ZVa+wtCGw==", "dev": true, "dependencies": { - "@jest/test-result": "^27.3.1", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-runtime": "^27.3.1" + "@jest/test-result": "^29.6.2", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.2", + "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/test-sequencer/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "node_modules/@jest/transform": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.2.tgz", + "integrity": "sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.1", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.2", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.6.2", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/test-sequencer/node_modules/ansi-styles": { + "node_modules/@jest/transform/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -2731,32 +1846,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/test-sequencer/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@jest/test-sequencer/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/test-sequencer/node_modules/chalk": { + "node_modules/@jest/transform/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -2772,270 +1862,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/test-sequencer/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "node_modules/@jest/test-sequencer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/test-sequencer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/test-sequencer/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/test-sequencer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/test-sequencer/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-sequencer/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-sequencer/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-sequencer/node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/@jest/test-sequencer/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@jest/test-sequencer/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@jest/test-sequencer/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@jest/test-sequencer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/test-sequencer/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/@jest/transform": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.3.0.tgz", - "integrity": "sha512-Isj6NB68QorGoFWvcOjlUhpkT56PqNIsXKR7XfvoDlCANn/IANlh8DrKAA2l2JKC3yWSMH5wS0GwuQM20w3b2A==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.3.0", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.3.0", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.3.0", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "dependencies": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/@jest/transform/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3054,17 +1880,11 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@jest/transform/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/@jest/transform/node_modules/has-flag": { "version": "4.0.0", @@ -3075,37 +1895,6 @@ "node": ">=8" } }, - "node_modules/@jest/transform/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/@jest/transform/node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@jest/transform/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3118,41 +1907,29 @@ "node": ">=8" } }, - "node_modules/@jest/transform/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/@jest/types": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.3.0.tgz", - "integrity": "sha512-BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", + "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", "dev": true, "dependencies": { + "@jest/schemas": "^29.6.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^15.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" }, "engines": { @@ -3163,9 +1940,9 @@ } }, "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -3218,9 +1995,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", @@ -3250,9 +2027,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -3266,13 +2043,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@nodelib/fs.scandir": { @@ -3310,31 +2087,84 @@ "node": ">= 8" } }, + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@pkgr/utils/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pkgr/utils/node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pkgr/utils/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" + "@sinonjs/commons": "^3.0.0" } }, "node_modules/@types/babel__core": { @@ -3423,9 +2253,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.0.tgz", - "integrity": "sha512-74hbvsnc+7TEDa1z5YLSe4/q8hGYB3USNvCuzHUJrjPV6hXaq8IXcngCrHkuvFt0+8rFz7xYXrHgNayIX0UZvQ==", + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", "dev": true, "dependencies": { "@types/estree": "*", @@ -3433,9 +2263,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -3443,9 +2273,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, "node_modules/@types/express": { @@ -3513,10 +2343,26 @@ "@types/istanbul-lib-report": "*" } }, + "node_modules/@types/jest": { + "version": "29.5.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz", + "integrity": "sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/micromodal": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@types/micromodal/-/micromodal-0.3.3.tgz", + "integrity": "sha512-XQg6nqg15A6ZKkMkDdqLkC5LTxLb7CZU6BX8uHBj4AVU7+k/W6kfriW5HCsarrjFpONNOMAmhA1ReUsMm7297g==", "dev": true }, "node_modules/@types/mime": { @@ -3531,12 +2377,6 @@ "integrity": "sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ==", "dev": true }, - "node_modules/@types/prettier": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", - "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", - "dev": true - }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -3555,6 +2395,12 @@ "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", "dev": true }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, "node_modules/@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -3599,163 +2445,729 @@ } }, "node_modules/@types/yargs": { - "version": "15.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", - "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.0.0.tgz", - "integrity": "sha512-wBlsw+8n21e6eTd4yVv8YD/E3xq0O6nNnJIquutAsFGE7EyMKz7W6RNT6BRu1SmdgmlCZ9tb0X+j+D6HGr8pZw==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.1.tgz", + "integrity": "sha512-iZVM/ALid9kO0+I81pnp1xmYiFyqibAHzrqX4q5YvvVEyJqY+e6rfTXSCsc2jUxGNqJqTfFSSij/NFkZBiBzLw==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.2.1", + "@typescript-eslint/type-utils": "6.2.1", + "@typescript-eslint/utils": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.1.tgz", + "integrity": "sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.1.tgz", + "integrity": "sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.1.tgz", + "integrity": "sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.2.1.tgz", + "integrity": "sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.2.1", + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/typescript-estree": "6.2.1", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.1.tgz", + "integrity": "sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.2.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.2.1.tgz", + "integrity": "sha512-Ld+uL1kYFU8e6btqBFpsHkwQ35rw30IWpdQxgOqOh4NfxSDH6uCkah1ks8R/RgQqI5hHPXMaLy9fbFseIe+dIg==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.2.1", + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/typescript-estree": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.1.tgz", + "integrity": "sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.1.tgz", + "integrity": "sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==", + "dev": true, + "peer": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.1.tgz", + "integrity": "sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.1.tgz", + "integrity": "sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "6.2.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.2.1.tgz", + "integrity": "sha512-fTfCgomBMIgu2Dh2Or3gMYgoNAnQm3RLtRp+jP7A8fY+LJ2+9PNpi5p6QB5C4RSP+U3cjI0vDlI3mspAkpPVbQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.2.1", + "@typescript-eslint/utils": "6.2.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.1.tgz", + "integrity": "sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.1.tgz", + "integrity": "sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.1.tgz", + "integrity": "sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.2.1.tgz", + "integrity": "sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.2.1", + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/typescript-estree": "6.2.1", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.1.tgz", + "integrity": "sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.2.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, @@ -3807,12 +3219,6 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -3827,9 +3233,9 @@ } }, "node_modules/acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3838,26 +3244,13 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "peerDependencies": { + "acorn": "^8" } }, "node_modules/acorn-jsx": { @@ -3869,27 +3262,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -3976,6 +3348,21 @@ "node": ">=6" } }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -4010,13 +3397,16 @@ } }, "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, "node_modules/argparse": { @@ -4028,33 +3418,6 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -4070,24 +3433,6 @@ "node": ">=8" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -4097,44 +3442,25 @@ "lodash": "^4.17.14" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/babel-jest": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.3.0.tgz", - "integrity": "sha512-sxPnQGEyHAOPF8NcUsD0g7hDCnvLL2XyblRBcgrzTWBB/mAIpWow3n1bEL+VghnnZfreLhFSBsFluRoK2tRK4g==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.2.tgz", + "integrity": "sha512-BYCzImLos6J3BH/+HvUCHG1dTf2MzmAB4jaVxHV+29RZLjR29XuYTmsf2sdDwkrb+FczkGo3kOhE7ga6sI0P4A==", "dev": true, "dependencies": { - "@jest/transform": "^26.3.0", - "@jest/types": "^26.3.0", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.3.0", + "@jest/transform": "^29.6.2", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.5.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.8.0" } }, "node_modules/babel-jest/node_modules/ansi-styles": { @@ -4218,15 +3544,15 @@ } }, "node_modules/babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" }, "engines": { @@ -4234,24 +3560,24 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "26.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.2.0.tgz", - "integrity": "sha512-B/hVMRv8Nh1sQ1a3EY8I0n4Y1Wty3NrR5ebOyVT302op+DOAau+xNEImGMsUWOC3++ZlMooCytKz+NgN8aKGbA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/babel-preset-current-node-syntax": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz", - "integrity": "sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", @@ -4264,23 +3590,24 @@ "@babel/plugin-syntax-numeric-separator": "^7.8.3", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/babel-preset-jest": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.3.0.tgz", - "integrity": "sha512-5WPdf7nyYi2/eRxCbVrE1kKCWxgWY4RsPEbdJWFm7QsesFGqjdkyLeu1zRkwM1cxK6EPIlNd6d2AxLk7J+t4pw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^26.2.0", - "babel-preset-current-node-syntax": "^0.1.3" + "babel-plugin-jest-hoist": "^29.5.0", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -4292,80 +3619,21 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -4446,6 +3714,18 @@ "multicast-dns-service-types": "^1.1.0" } }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4457,44 +3737,17 @@ } }, "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "node_modules/browserslist": { "version": "4.18.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", @@ -4518,6 +3771,18 @@ "url": "https://opencollective.com/browserslist" } }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/bser": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz", @@ -4539,6 +3804,21 @@ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -4548,26 +3828,6 @@ "node": ">= 0.8" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -4609,18 +3869,6 @@ "url": "https://opencollective.com/browserslist" } }, - "node_modules/capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "dev": true, - "dependencies": { - "rsvp": "^4.8.4" - }, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -4671,73 +3919,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/chokidar/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/chokidar/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/chokidar/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/chrome-trace-event": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", @@ -4751,44 +3932,26 @@ } }, "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } }, "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", "dev": true }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -4799,43 +3962,17 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/clone-deep": { @@ -4855,7 +3992,7 @@ "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "engines": { "iojs": ">= 1.0.0", @@ -4863,24 +4000,11 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -4902,18 +4026,6 @@ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -4923,12 +4035,6 @@ "node": ">= 10" } }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -5054,15 +4160,6 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/core-js-compat": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz", @@ -5074,9 +4171,9 @@ } }, "node_modules/core-js-compat/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -5089,63 +4186,23 @@ "dev": true }, "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4.8" - } - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" + "node": ">= 8" } }, "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -5159,26 +4216,19 @@ } } }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } }, "node_modules/deep-equal": { "version": "1.1.1", @@ -5204,14 +4254,48 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -5224,20 +4308,6 @@ "node": ">= 10" } }, - "node_modules/default-gateway/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/default-gateway/node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -5261,18 +4331,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/default-gateway/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/default-gateway/node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -5285,15 +4343,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/default-gateway/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/default-gateway/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -5306,66 +4355,6 @@ "node": ">=8" } }, - "node_modules/default-gateway/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/default-gateway/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/default-gateway/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/default-gateway/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -5387,57 +4376,6 @@ "node": ">= 0.4" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/del": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", @@ -5460,15 +4398,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -5504,12 +4433,12 @@ "dev": true }, "node_modules/diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/dir-glob": { @@ -5561,27 +4490,6 @@ "node": ">=6.0.0" } }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -5595,17 +4503,23 @@ "dev": true }, "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -5615,19 +4529,10 @@ "node": ">= 0.8" } }, - "node_modules/end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -5661,10 +4566,19 @@ "node": ">=4" } }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", "dev": true }, "node_modules/escalade": { @@ -5691,47 +4605,6 @@ "node": ">=0.8.0" } }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", @@ -5787,6 +4660,72 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "27.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.3.tgz", + "integrity": "sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.10.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0", + "eslint": "^7.0.0 || ^8.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, "node_modules/eslint-scope": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", @@ -5837,12 +4776,15 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/ansi-styles": { @@ -5900,20 +4842,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/eslint/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -6004,15 +4932,6 @@ "node": ">= 0.8.0" } }, - "node_modules/eslint/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -6023,9 +4942,9 @@ } }, "node_modules/eslint/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -6037,27 +4956,6 @@ "node": ">=10" } }, - "node_modules/eslint/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6094,21 +4992,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/espree": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz", @@ -6220,227 +5103,101 @@ "node": ">=0.8.x" } }, - "node_modules/exec-sh": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", - "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==", - "dev": true - }, "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dev": true, "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=6" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/execa/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "node_modules/expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.2.tgz", + "integrity": "sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/expect/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@jest/expect-utils": "^29.6.2", "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/expect/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expect/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/expect/node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expect/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/expect/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/expect/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/expect/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/expect/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/express": { @@ -6544,122 +5301,22 @@ "node": ">= 0.8" } }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -6669,71 +5326,13 @@ "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/fast-glob/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/fast-glob/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" + "node": ">=8.6.0" } }, "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "node_modules/fast-levenshtein": { @@ -6749,9 +5348,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -6791,30 +5390,15 @@ } }, "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/finalhandler": { @@ -6911,29 +5495,6 @@ } } }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -6943,18 +5504,6 @@ "node": ">= 0.6" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -7044,24 +5593,15 @@ } }, "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "pump": "^3.0.0" + "engines": { + "node": ">=10" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/glob": { @@ -7109,16 +5649,16 @@ } }, "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "engines": { @@ -7129,18 +5669,24 @@ } }, "node_modules/globby/node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" } }, "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "node_modules/handle-thing": { @@ -7182,45 +5728,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -7233,18 +5740,6 @@ "wbuf": "^1.1.0" } }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/html-entities": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", @@ -7317,20 +5812,6 @@ "node": ">=8.0.0" } }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/http-proxy-middleware": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz", @@ -7347,77 +5828,6 @@ "node": ">=12.0.0" } }, - "node_modules/http-proxy-middleware/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/http-proxy-middleware/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/http-proxy-middleware/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -7547,30 +5957,6 @@ "node": ">= 0.10" } }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", @@ -7580,6 +5966,12 @@ "node": ">= 0.4" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -7592,24 +5984,6 @@ "node": ">=8" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/is-core-module": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", @@ -7622,30 +5996,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", @@ -7655,29 +6005,6 @@ "node": ">= 0.4" } }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-docker": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", @@ -7693,15 +6020,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -7711,6 +6029,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", @@ -7732,28 +6059,46 @@ "node": ">=0.10.0" } }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" } }, "node_modules/is-path-cwd": { @@ -7798,12 +6143,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, "node_modules/is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -7817,12 +6156,15 @@ } }, "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-symbol": { @@ -7837,21 +6179,6 @@ "node": ">= 0.4" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -7873,7 +6200,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/isobject": { @@ -7886,23 +6213,24 @@ } }, "node_modules/istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" }, "engines": { @@ -7910,26 +6238,26 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-report/node_modules/has-flag": { @@ -7977,9 +6305,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", - "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -7990,20 +6318,21 @@ } }, "node_modules/jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", - "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.2.tgz", + "integrity": "sha512-8eQg2mqFbaP7CwfsTpCxQ+sHzw1WuNWL5UUvjnWP4hx2riGz9fPSzYOaU5q8/GqWn1TfgZIVTqYJygbGbWAANg==", "dev": true, "dependencies": { - "@jest/core": "^27.3.1", + "@jest/core": "^29.6.2", + "@jest/types": "^29.6.1", "import-local": "^3.0.2", - "jest-cli": "^27.3.1" + "jest-cli": "^29.6.2" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -8015,105 +6344,16 @@ } }, "node_modules/jest-changed-files": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", - "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", "execa": "^5.0.0", - "throat": "^6.0.1" + "p-limit": "^3.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-changed-files/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-changed-files/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-changed-files/node_modules/execa": { @@ -8139,27 +6379,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-changed-files/node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -8172,15 +6391,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-changed-files/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/jest-changed-files/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -8193,131 +6403,50 @@ "node": ">=8" } }, - "node_modules/jest-changed-files/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/jest-changed-files/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-changed-files/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/jest-circus": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", - "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.2.tgz", + "integrity": "sha512-G9mN+KOYIUe2sB9kpJkO9Bk18J4dTDArNFPwoZ7WKHKel55eKIS/u2bLthxgojwlf9NLCVQfgzM/WsOVvoC6Fw==", "dev": true, "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^29.6.2", + "@jest/expect": "^29.6.2", + "@jest/test-result": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.3.1", + "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", + "jest-each": "^29.6.2", + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-runtime": "^29.6.2", + "jest-snapshot": "^29.6.2", + "jest-util": "^29.6.2", + "p-limit": "^3.1.0", + "pretty-format": "^29.6.2", + "pure-rand": "^6.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "stack-utils": "^2.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-circus/node_modules/ansi-styles": { @@ -8351,12 +6480,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-circus/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -8384,21 +6507,19 @@ "node": ">=8" } }, - "node_modules/jest-circus/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "node_modules/jest-circus/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" + "yocto-queue": "^0.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-circus/node_modules/supports-color": { @@ -8414,29 +6535,29 @@ } }, "node_modules/jest-cli": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", - "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.2.tgz", + "integrity": "sha512-TT6O247v6dCEX2UGHGyflMpxhnrL0DNqP2fRTKYm3nJJpCTfXX3GCMQPGFjXDoj0i5/Blp3jriKXFgdfmbYB6Q==", "dev": true, "dependencies": { - "@jest/core": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/core": "^29.6.2", + "@jest/test-result": "^29.6.2", + "@jest/types": "^29.6.1", "chalk": "^4.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-config": "^29.6.2", + "jest-util": "^29.6.2", + "jest-validate": "^29.6.2", "prompts": "^2.0.1", - "yargs": "^16.2.0" + "yargs": "^17.3.1" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -8447,31 +6568,6 @@ } } }, - "node_modules/jest-cli/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-cli/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8503,12 +6599,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-cli/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -8536,23 +6626,6 @@ "node": ">=8" } }, - "node_modules/jest-cli/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8566,96 +6639,50 @@ } }, "node_modules/jest-config": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", - "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.2.tgz", + "integrity": "sha512-VxwFOC8gkiJbuodG9CPtMRjBUNZEHxwfQXmIudSTzFWxaci3Qub1ddTRbFNQlD/zUeaifLndh/eDccFX4wCMQw==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.3.1", - "@jest/types": "^27.2.5", - "babel-jest": "^27.3.1", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.6.2", + "@jest/types": "^29.6.1", + "babel-jest": "^29.6.2", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.3.1", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-jasmine2": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.6.2", + "jest-environment-node": "^29.6.2", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.6.2", + "jest-runner": "^29.6.2", + "jest-util": "^29.6.2", + "jest-validate": "^29.6.2", "micromatch": "^4.0.4", - "pretty-format": "^27.3.1" + "parse-json": "^5.2.0", + "pretty-format": "^29.6.2", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { + "@types/node": "*", "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, "ts-node": { "optional": true } } }, - "node_modules/jest-config/node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8671,107 +6698,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-config/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-config/node_modules/babel-jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", - "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", - "dev": true, - "dependencies": { - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.2.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", - "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/jest-config/node_modules/babel-preset-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", - "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.2.0", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/jest-config/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -8788,12 +6714,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-config/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -8812,18 +6732,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-config/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -8833,140 +6741,6 @@ "node": ">=8" } }, - "node_modules/jest-config/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jest-config/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-config/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-config/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/jest-config/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-config/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8979,31 +6753,19 @@ "node": ">=8" } }, - "node_modules/jest-config/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.2.tgz", + "integrity": "sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-diff/node_modules/ansi-styles": { @@ -9077,56 +6839,31 @@ } }, "node_modules/jest-docblock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", - "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-each": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", - "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.2.tgz", + "integrity": "sha512-MsrsqA0Ia99cIpABBc3izS1ZYoYfhIy0NNWqPSE0YXbQjwchyt6B1HD2khzyPe1WiJA7hbxXy77ZoUQxn8UlSw==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^29.6.1", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-get-type": "^29.4.3", + "jest-util": "^29.6.2", + "pretty-format": "^29.6.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-each/node_modules/ansi-styles": { @@ -9160,12 +6897,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-each/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -9193,23 +6924,6 @@ "node": ">=8" } }, - "node_modules/jest-each/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -9222,566 +6936,83 @@ "node": ">=8" } }, - "node_modules/jest-environment-jsdom": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", - "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-environment-jsdom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-environment-jsdom/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "node_modules/jest-environment-jsdom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-environment-jsdom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-environment-node": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", - "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.2.tgz", + "integrity": "sha512-YGdFeZ3T9a+/612c5mTQIllvWkddPbYcN2v95ZH24oWMbGA4GGS2XdIF92QMhUhvrjjuQWYgUGW2zawOyH63MQ==", "dev": true, "dependencies": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^29.6.2", + "@jest/fake-timers": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" + "jest-mock": "^29.6.2", + "jest-util": "^29.6.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-node/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-environment-node/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-environment-node/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "node_modules/jest-environment-node/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-environment-node/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-node/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.3.0.tgz", - "integrity": "sha512-DHWBpTJgJhLLGwE5Z1ZaqLTYqeODQIZpby0zMBsCU9iRFHYyhklYqP4EiG73j5dkbaAdSZhgB938mL51Q5LeZA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.2.tgz", + "integrity": "sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA==", "dev": true, "dependencies": { - "@jest/types": "^26.3.0", - "@types/graceful-fs": "^4.1.2", + "@jest/types": "^29.6.1", + "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.3.0", - "jest-util": "^26.3.0", - "jest-worker": "^26.3.0", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.6.2", + "jest-worker": "^29.6.2", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "optionalDependencies": { - "fsevents": "^2.1.2" - } - }, - "node_modules/jest-haste-map/node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-haste-map/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-haste-map/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-haste-map/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jest-haste-map/node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-haste-map/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-haste-map/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/jest-jasmine2": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", - "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.3.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-jasmine2/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "node_modules/jest-jasmine2/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-jasmine2/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "fsevents": "^2.3.2" } }, "node_modules/jest-leak-detector": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", - "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.2.tgz", + "integrity": "sha512-aNqYhfp5uYEO3tdWMb2bfWv6f0b4I0LOxVRpnRLAeque2uqOVVMLh6khnTcE2qJ5wAKop0HcreM1btoysD6bPQ==", "dev": true, "dependencies": { - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz", + "integrity": "sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-diff": "^29.6.2", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { @@ -9855,48 +7086,23 @@ } }, "node_modules/jest-message-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", - "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.2.tgz", + "integrity": "sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.2.5", + "@jest/types": "^29.6.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.3.1", + "pretty-format": "^29.6.2", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util/node_modules/ansi-styles": { @@ -9914,18 +7120,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -9960,18 +7154,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-message-util/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -9981,28 +7163,6 @@ "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jest-message-util/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10015,130 +7175,24 @@ "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.2.tgz", + "integrity": "sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-mock/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@jest/types": "^29.6.1", "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "jest-util": "^29.6.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-mock/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-mock/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-mock/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-mock/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-mock/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-mock/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-mock/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "engines": { "node": ">=6" @@ -10153,176 +7207,45 @@ } }, "node_modules/jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", "dev": true, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", - "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.2.tgz", + "integrity": "sha512-G/iQUvZWI5e3SMFssc4ug4dH0aZiZpsDq9o1PtXTV1210Ztyb2+w+ZgQkB3iOiC5SmAEzJBOHWz6Hvrd+QnNPw==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.2", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-util": "^29.6.2", + "jest-validate": "^29.6.2", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve-dependencies": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", - "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.2.tgz", + "integrity": "sha512-LGqjDWxg2fuQQm7ypDxduLu/m4+4Lb4gczc13v51VMZbVP5tSBILqVx8qfWcsdP8f0G7aIqByIALDB0R93yL+w==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", - "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.3.1" + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.6.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-resolve-dependencies/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve/node_modules/ansi-styles": { @@ -10340,31 +7263,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-resolve/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-resolve/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-resolve/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -10381,12 +7279,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-resolve/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "node_modules/jest-resolve/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -10405,18 +7297,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-resolve/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-resolve/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -10426,131 +7306,6 @@ "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jest-resolve/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-resolve/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve/node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-resolve/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/jest-resolve/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jest-resolve/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10563,100 +7318,36 @@ "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/jest-runner": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", - "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.2.tgz", + "integrity": "sha512-wXOT/a0EspYgfMiYHxwGLPCZfC0c38MivAlb2lMEAlwHINKemrttu1uSbcGbfDV31sFaPWnWJPmb2qXM8pqZ4w==", "dev": true, "dependencies": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^29.6.2", + "@jest/environment": "^29.6.2", + "@jest/test-result": "^29.6.2", + "@jest/transform": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-leak-detector": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.6.2", + "jest-haste-map": "^29.6.2", + "jest-leak-detector": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-resolve": "^29.6.2", + "jest-runtime": "^29.6.2", + "jest-util": "^29.6.2", + "jest-watcher": "^29.6.2", + "jest-worker": "^29.6.2", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner/node_modules/ansi-styles": { @@ -10674,31 +7365,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runner/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-runner/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -10715,12 +7381,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runner/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -10739,18 +7399,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-runner/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -10760,129 +7408,19 @@ "node": ">=8" } }, - "node_modules/jest-runner/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jest-runner/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "node_modules/jest-runner/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-runner/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/jest-runner/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-runner/node_modules/source-map": { @@ -10894,6 +7432,16 @@ "node": ">=0.10.0" } }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10906,104 +7454,37 @@ "node": ">=8" } }, - "node_modules/jest-runner/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/jest-runtime": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", - "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.2.tgz", + "integrity": "sha512-2X9dqK768KufGJyIeLmIzToDmsN0m7Iek8QNxRSI/2+iPFYHF0jTwlO3ftn7gdKd98G/VQw9XJCk77rbTGZnJg==", "dev": true, "dependencies": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/globals": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/yargs": "^16.0.0", + "@jest/environment": "^29.6.2", + "@jest/fake-timers": "^29.6.2", + "@jest/globals": "^29.6.2", + "@jest/source-map": "^29.6.0", + "@jest/test-result": "^29.6.2", + "@jest/transform": "^29.6.2", + "@jest/types": "^29.6.1", + "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "exit": "^0.1.2", "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-mock": "^29.6.2", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.6.2", + "jest-snapshot": "^29.6.2", + "jest-util": "^29.6.2", "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.2.0" + "strip-bom": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runtime/node_modules/ansi-styles": { @@ -11021,31 +7502,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-runtime/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -11062,12 +7518,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -11086,67 +7536,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-runtime/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-runtime/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -11156,218 +7545,6 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jest-runtime/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-runtime/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-runtime/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/jest-runtime/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-runtime/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runtime/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-runtime/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -11380,130 +7557,35 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/jest-runtime/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-serializer": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.3.0.tgz", - "integrity": "sha512-IDRBQBLPlKa4flg77fqg0n/pH87tcRKwe8zxOVTWISxGpPHYkRZ1dXKyh04JOja7gppc60+soKVZ791mruVdow==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": ">= 10.14.2" - } - }, "node_modules/jest-snapshot": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", - "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.2.tgz", + "integrity": "sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA==", "dev": true, "dependencies": { - "@babel/core": "^7.7.2", + "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.6.2", + "@jest/transform": "^29.6.2", + "@jest/types": "^29.6.1", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.3.1", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", + "expect": "^29.6.2", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.6.2", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2", "natural-compare": "^1.4.0", - "pretty-format": "^27.3.1", - "semver": "^7.3.2" + "pretty-format": "^29.6.2", + "semver": "^7.5.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-snapshot/node_modules/ansi-styles": { @@ -11521,54 +7603,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-snapshot/node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -11585,12 +7619,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -11609,18 +7637,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-snapshot/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -11630,135 +7646,10 @@ "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-snapshot/node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/jest-snapshot/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -11770,15 +7661,6 @@ "node": ">=10" } }, - "node_modules/jest-snapshot/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -11791,42 +7673,29 @@ "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/jest-util": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.3.0.tgz", - "integrity": "sha512-4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.2.tgz", + "integrity": "sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w==", "dev": true, "dependencies": { - "@jest/types": "^26.3.0", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" }, "engines": { @@ -11836,22 +7705,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-util/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -11882,18 +7739,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-util/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -11903,28 +7748,6 @@ "node": ">=8" } }, - "node_modules/jest-util/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jest-util/node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-util/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -11937,58 +7760,21 @@ "node": ">=8" } }, - "node_modules/jest-util/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/jest-validate": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", - "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.2.tgz", + "integrity": "sha512-vGz0yMN5fUFRRbpJDPwxMpgSXW1LDKROHfBopAvDcmD6s+B/s8WJrwi+4bfH4SdInBA5C3P3BI19dBtKzx1Arg==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", + "@jest/types": "^29.6.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", + "jest-get-type": "^29.4.3", "leven": "^3.1.0", - "pretty-format": "^27.3.1" + "pretty-format": "^29.6.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-validate/node_modules/ansi-styles": { @@ -12007,9 +7793,9 @@ } }, "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { "node": ">=10" @@ -12074,61 +7860,22 @@ } }, "node_modules/jest-watcher": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", - "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.2.tgz", + "integrity": "sha512-GZitlqkMkhkefjfN/p3SJjrDaxPflqxEAv3/ik10OirZqJGYH5rPiIsgVcfof0Tdqg3shQGdEIxDBx+B4tuLzA==", "dev": true, "dependencies": { - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/test-result": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.3.1", + "emittery": "^0.13.1", + "jest-util": "^29.6.2", "string-length": "^4.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-watcher/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-watcher/node_modules/ansi-styles": { @@ -12162,12 +7909,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -12195,23 +7936,6 @@ "node": ">=8" } }, - "node_modules/jest-watcher/node_modules/jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -12225,17 +7949,18 @@ } }, "node_modules/jest-worker": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz", - "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.2.tgz", + "integrity": "sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==", "dev": true, "dependencies": { "@types/node": "*", + "jest-util": "^29.6.2", "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-worker/node_modules/has-flag": { @@ -12248,15 +7973,18 @@ } }, "node_modules/jest-worker/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/js-levenshtein": { @@ -12287,52 +8015,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -12345,10 +8027,10 @@ "node": ">=4" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, "node_modules/json-schema-traverse": { @@ -12364,13 +8046,10 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -12405,18 +8084,11 @@ "node": ">=6" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "node_modules/loader-runner": { "version": "4.2.0", @@ -12445,6 +8117,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -12476,57 +8154,48 @@ } }, "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "dependencies": { - "semver": "^6.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" - } - }, - "node_modules/makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "dependencies": { - "tmpl": "1.0.x" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" } }, "node_modules/media-typer": { @@ -12581,27 +8250,16 @@ } }, "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, "node_modules/micromodal": { @@ -12645,6 +8303,15 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -12669,31 +8336,6 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -12731,34 +8373,18 @@ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -12774,12 +8400,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, "node_modules/node-forge": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.0.tgz", @@ -12795,15 +8415,6 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, - "node_modules/node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/node-releases": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", @@ -12811,71 +8422,39 @@ "dev": true }, "node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, "engines": { "node": ">=0.10.0" } }, "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", "dev": true, "dependencies": { - "path-key": "^2.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" + "node": ">=12" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/object-inspect": { @@ -12981,18 +8560,6 @@ "node": ">= 0.4" } }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", @@ -13008,18 +8575,6 @@ "node": ">= 0.4" } }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -13056,6 +8611,21 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/open": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", @@ -13073,32 +8643,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -13175,11 +8719,23 @@ "node": ">=6" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/parseurl": { "version": "1.3.3", @@ -13190,15 +8746,6 @@ "node": ">= 0.8" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -13218,12 +8765,12 @@ } }, "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-parse": { @@ -13254,9 +8801,9 @@ "dev": true }, "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { "node": ">=8.6" @@ -13266,13 +8813,10 @@ } }, "node_modules/pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, - "dependencies": { - "node-modules-regexp": "^1.0.0" - }, "engines": { "node": ">= 6" } @@ -13313,62 +8857,46 @@ "ms": "^2.1.1" } }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "node_modules/prettier": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.2.tgz", + "integrity": "sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==", "dev": true, + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=6.0.0" } }, "node_modules/pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz", + "integrity": "sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==", "dev": true, "dependencies": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.0", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { @@ -13383,76 +8911,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/pretty-format/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/pretty-format/node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty-format/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/pretty-format/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/pretty-format/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-format/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -13503,22 +8961,6 @@ "node": ">= 0.10" } }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -13528,6 +8970,22 @@ "node": ">=6" } }, + "node_modules/pure-rand": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", + "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -13606,9 +9064,9 @@ } }, "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, "node_modules/readable-stream": { @@ -13677,19 +9135,6 @@ "private": "^0.1.6" } }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/regexp-tree": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.13.tgz", @@ -13840,34 +9285,10 @@ "jsesc": "bin/jsesc" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -13931,31 +9352,15 @@ "node": ">=4" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, "engines": { "node": ">=10" } }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -13990,13 +9395,66 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/run-applescript/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "engines": { - "node": "6.* || >= 7.*" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/run-parallel": { @@ -14028,61 +9486,16 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", - "dev": true, - "dependencies": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "bin": { - "sane": "src/cli.js" - }, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -14116,9 +9529,9 @@ } }, "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -14188,9 +9601,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -14271,33 +9684,6 @@ "node": ">= 0.8.0" } }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -14317,24 +9703,24 @@ } }, "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/side-channel": { @@ -14352,9 +9738,9 @@ } }, "node_modules/signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "node_modules/sisteransi": { @@ -14372,152 +9758,6 @@ "node": ">=8" } }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "node_modules/sockjs": { "version": "0.3.21", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", @@ -14538,19 +9778,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "dependencies": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -14570,12 +9797,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", @@ -14620,18 +9841,6 @@ "node": ">= 6" } }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -14639,9 +9848,9 @@ "dev": true }, "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "dependencies": { "escape-string-regexp": "^2.0.0" @@ -14659,31 +9868,6 @@ "node": ">=8" } }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -14715,6 +9899,20 @@ "node": ">=10" } }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", @@ -14900,15 +10098,6 @@ "node": ">=8" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -14942,44 +10131,26 @@ "node": ">=4" } }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", "dev": true, "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "node": "^14.18.0 || >=16.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://opencollective.com/unts" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "node_modules/synckit/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/tapable": { @@ -14991,45 +10162,14 @@ "node": ">=6" } }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terminal-link/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -15041,16 +10181,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", - "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "dependencies": { - "jest-worker": "^27.0.6", + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" }, "engines": { "node": ">= 10.13.0" @@ -15084,9 +10224,9 @@ } }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "dependencies": { "@types/node": "*", @@ -15097,15 +10237,6 @@ "node": ">= 10.13.0" } }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/terser-webpack-plugin/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -15147,18 +10278,24 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -15174,56 +10311,16 @@ "node": ">=4" } }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0" } }, "node_modules/toidentifier": { @@ -15235,27 +10332,175 @@ "node": ">=0.6" } }, - "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "node_modules/ts-api-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", + "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - }, "engines": { - "node": ">=6" + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" } }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "node_modules/ts-jest": { + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", "dev": true, "dependencies": { - "punycode": "^2.1.1" + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader": { + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", + "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" @@ -15267,16 +10512,19 @@ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", "dev": true }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2" + "tslib": "^1.8.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, "node_modules/type-detect": { @@ -15313,13 +10561,17 @@ "node": ">= 0.6" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" } }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -15362,30 +10614,6 @@ "node": ">=4" } }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -15395,52 +10623,13 @@ "node": ">= 0.8" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/uri-js": { @@ -15452,22 +10641,6 @@ "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -15500,28 +10673,19 @@ "dev": true }, "node_modules/v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "convert-source-map": "^1.6.0" }, "engines": { "node": ">=10.12.0" } }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -15531,40 +10695,19 @@ "node": ">= 0.8" } }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "dependencies": { - "makeerror": "1.0.x" + "makeerror": "1.0.12" } }, "node_modules/watchpack": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.0.tgz", - "integrity": "sha512-MnN0Q1OsvB/GGHETrFeZPQaOelWh/7O+EiFlj8sM9GPjtQkis7k01aAxrg/18kTfoIVcLL+haEVFlXDaSRwKRw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -15583,45 +10726,36 @@ "minimalistic-assert": "^1.0.0" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, "node_modules/webpack": { - "version": "5.64.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.64.4.tgz", - "integrity": "sha512-LWhqfKjCLoYJLKJY8wk2C3h77i8VyHowG3qYNZiIqD6D0ZS40439S/KVuc/PY48jp2yQmy0mhMknq8cys4jFMw==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.0", - "webpack-sources": "^3.2.2" + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" }, "bin": { "webpack": "bin/webpack.js" @@ -15682,20 +10816,6 @@ } } }, - "node_modules/webpack-cli/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/webpack-cli/node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -15719,18 +10839,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/webpack-cli/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/webpack-cli/node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -15743,15 +10851,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-cli/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/webpack-cli/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -15764,66 +10863,6 @@ "node": ">=8" } }, - "node_modules/webpack-cli/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-cli/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-cli/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-cli/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-cli/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/webpack-dev-middleware": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", @@ -16076,23 +11115,14 @@ } }, "node_modules/webpack-sources": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", - "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, "engines": { "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/webpack/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -16129,45 +11159,19 @@ "node": ">=0.8.0" } }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/wildcard": { @@ -16177,20 +11181,14 @@ "dev": true }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -16241,35 +11239,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -16277,50 +11246,18 @@ "dev": true }, "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "dev": true, + "signal-exit": "^3.0.7" + }, "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -16337,59 +11274,42 @@ "dev": true }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "engines": { "node": ">=10" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } } }, @@ -16433,9 +11353,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -16494,9 +11414,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -16595,9 +11515,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true }, "@babel/helper-regex": { @@ -16820,6 +11740,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -16884,12 +11813,12 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-arrow-functions": { @@ -17302,22 +12231,27 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", - "dev": true, - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - } - }, "@discoveryjs/json-ext": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", "dev": true }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "dev": true + }, "@eslint/eslintrc": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", @@ -17412,41 +12346,19 @@ "dev": true }, "@jest/console": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", - "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.2.tgz", + "integrity": "sha512-0N0yZof5hi44HAR2pPS+ikJ3nzKNoZdVu8FffRf3wy47I7Dm7etk/3KetMdRUqzVd16V4O2m2ISpNTbnIuqy1w==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.3.1", - "jest-util": "^27.3.1", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2", "slash": "^3.0.0" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -17466,12 +12378,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -17493,20 +12399,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -17519,95 +12411,41 @@ } }, "@jest/core": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", - "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.2.tgz", + "integrity": "sha512-Oj+5B+sDMiMWLhPFF+4/DvHOf+U10rgvCLGPHP8Xlsy/7QxS51aU/eBngudHlJXnaWD5EohAgJ4js+T6pa+zOg==", "dev": true, "requires": { - "@jest/console": "^27.3.1", - "@jest/reporters": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^29.6.2", + "@jest/reporters": "^29.6.2", + "@jest/test-result": "^29.6.2", + "@jest/transform": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "ci-info": "^3.2.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.3.0", - "jest-config": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-resolve-dependencies": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "jest-watcher": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.6.2", + "jest-haste-map": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.6.2", + "jest-resolve-dependencies": "^29.6.2", + "jest-runner": "^29.6.2", + "jest-runtime": "^29.6.2", + "jest-snapshot": "^29.6.2", + "jest-util": "^29.6.2", + "jest-validate": "^29.6.2", + "jest-watcher": "^29.6.2", "micromatch": "^4.0.4", - "rimraf": "^3.0.0", + "pretty-format": "^29.6.2", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "dependencies": { - "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -17617,25 +12455,6 @@ "color-convert": "^2.0.1" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -17646,12 +12465,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -17667,122 +12480,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -17791,372 +12494,98 @@ "requires": { "has-flag": "^4.0.0" } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } } } }, "@jest/environment": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", - "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.2.tgz", + "integrity": "sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==", "dev": true, "requires": { - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/fake-timers": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", - "jest-mock": "^27.3.0" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "jest-mock": "^29.6.2" + } + }, + "@jest/expect": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.2.tgz", + "integrity": "sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg==", + "dev": true, + "requires": { + "expect": "^29.6.2", + "jest-snapshot": "^29.6.2" + } + }, + "@jest/expect-utils": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.2.tgz", + "integrity": "sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==", + "dev": true, + "requires": { + "jest-get-type": "^29.4.3" } }, "@jest/fake-timers": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", - "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.2.tgz", + "integrity": "sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==", "dev": true, "requires": { - "@jest/types": "^27.2.5", - "@sinonjs/fake-timers": "^8.0.1", + "@jest/types": "^29.6.1", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "jest-message-util": "^29.6.2", + "jest-mock": "^29.6.2", + "jest-util": "^29.6.2" } }, "@jest/globals": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", - "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.2.tgz", + "integrity": "sha512-cjuJmNDjs6aMijCmSa1g2TNG4Lby/AeU7/02VtpW+SLcZXzOLK2GpN2nLqcFjmhy3B3AoPeQVx7BnyOf681bAw==", "dev": true, "requires": { - "@jest/environment": "^27.3.1", - "@jest/types": "^27.2.5", - "expect": "^27.3.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "@jest/environment": "^29.6.2", + "@jest/expect": "^29.6.2", + "@jest/types": "^29.6.1", + "jest-mock": "^29.6.2" } }, "@jest/reporters": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", - "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.2.tgz", + "integrity": "sha512-sWtijrvIav8LgfJZlrGCdN0nP2EWbakglJY49J1Y5QihcQLfy7ovyxxjJBRXMNltgt4uPtEcFmIMbVshEDfFWw==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^29.6.2", + "@jest/test-result": "^29.6.2", + "@jest/transform": "^29.6.2", + "@jest/types": "^29.6.1", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2", + "jest-worker": "^29.6.2", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "dependencies": { - "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -18166,25 +12595,6 @@ "color-convert": "^2.0.1" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -18195,12 +12605,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -18216,122 +12620,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -18340,156 +12634,76 @@ "requires": { "has-flag": "^4.0.0" } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } } } }, + "@jest/schemas": { + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", + "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, "@jest/source-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", - "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.0.tgz", + "integrity": "sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "graceful-fs": "^4.2.9" } }, "@jest/test-result": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", - "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.2.tgz", + "integrity": "sha512-3VKFXzcV42EYhMCsJQURptSqnyjqCGbtLuX5Xxb6Pm6gUf1wIRIl+mandIRGJyWKgNKYF9cnstti6Ls5ekduqw==", "dev": true, "requires": { - "@jest/console": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^29.6.2", + "@jest/types": "^29.6.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "@jest/test-sequencer": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", - "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.2.tgz", + "integrity": "sha512-GVYi6PfPwVejO7slw6IDO0qKVum5jtrJ3KoLGbgBWyr2qr4GaxFV6su+ZAjdTX75Sr1DkMFRk09r2ZVa+wtCGw==", "dev": true, "requires": { - "@jest/test-result": "^27.3.1", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-runtime": "^27.3.1" + "@jest/test-result": "^29.6.2", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.2", + "slash": "^3.0.0" + } + }, + "@jest/transform": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.2.tgz", + "integrity": "sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.1", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.2", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.6.2", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -18499,25 +12713,6 @@ "color-convert": "^2.0.1" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -18528,12 +12723,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -18549,14 +12738,11 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "has-flag": { "version": "4.0.0", @@ -18564,101 +12750,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -18667,169 +12758,36 @@ "requires": { "has-flag": "^4.0.0" } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "@jest/transform": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.3.0.tgz", - "integrity": "sha512-Isj6NB68QorGoFWvcOjlUhpkT56PqNIsXKR7XfvoDlCANn/IANlh8DrKAA2l2JKC3yWSMH5wS0GwuQM20w3b2A==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.3.0", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.3.0", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.3.0", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } } } }, "@jest/types": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.3.0.tgz", - "integrity": "sha512-BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ==", + "version": "29.6.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", + "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", "dev": true, "requires": { + "@jest/schemas": "^29.6.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^15.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "dependencies": { "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -18869,9 +12827,9 @@ } }, "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -18892,9 +12850,9 @@ "dev": true }, "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -18908,13 +12866,13 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@nodelib/fs.scandir": { @@ -18943,30 +12901,70 @@ "fastq": "^1.6.0" } }, + "@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "dependencies": { + "define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true + }, + "open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "requires": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + } + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + } + } + }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, "requires": { "type-detect": "4.0.8" } }, "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "requires": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^3.0.0" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, "@types/babel__core": { "version": "7.1.16", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", @@ -19053,9 +13051,9 @@ } }, "@types/eslint": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.0.tgz", - "integrity": "sha512-74hbvsnc+7TEDa1z5YLSe4/q8hGYB3USNvCuzHUJrjPV6hXaq8IXcngCrHkuvFt0+8rFz7xYXrHgNayIX0UZvQ==", + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", "dev": true, "requires": { "@types/estree": "*", @@ -19063,9 +13061,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "requires": { "@types/eslint": "*", @@ -19073,9 +13071,9 @@ } }, "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, "@types/express": { @@ -19143,10 +13141,26 @@ "@types/istanbul-lib-report": "*" } }, + "@types/jest": { + "version": "29.5.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz", + "integrity": "sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==", + "dev": true, + "requires": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "@types/micromodal": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@types/micromodal/-/micromodal-0.3.3.tgz", + "integrity": "sha512-XQg6nqg15A6ZKkMkDdqLkC5LTxLb7CZU6BX8uHBj4AVU7+k/W6kfriW5HCsarrjFpONNOMAmhA1ReUsMm7297g==", "dev": true }, "@types/mime": { @@ -19161,12 +13175,6 @@ "integrity": "sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ==", "dev": true }, - "@types/prettier": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", - "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", - "dev": true - }, "@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -19185,6 +13193,12 @@ "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", "dev": true }, + "@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, "@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -19229,163 +13243,495 @@ } }, "@types/yargs": { - "version": "15.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", - "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" } }, "@types/yargs-parser": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.0.0.tgz", - "integrity": "sha512-wBlsw+8n21e6eTd4yVv8YD/E3xq0O6nNnJIquutAsFGE7EyMKz7W6RNT6BRu1SmdgmlCZ9tb0X+j+D6HGr8pZw==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "@typescript-eslint/eslint-plugin": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.1.tgz", + "integrity": "sha512-iZVM/ALid9kO0+I81pnp1xmYiFyqibAHzrqX4q5YvvVEyJqY+e6rfTXSCsc2jUxGNqJqTfFSSij/NFkZBiBzLw==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.2.1", + "@typescript-eslint/type-utils": "6.2.1", + "@typescript-eslint/utils": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.1.tgz", + "integrity": "sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1" + } + }, + "@typescript-eslint/types": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.1.tgz", + "integrity": "sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.1.tgz", + "integrity": "sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/utils": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.2.1.tgz", + "integrity": "sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.2.1", + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/typescript-estree": "6.2.1", + "semver": "^7.5.4" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.1.tgz", + "integrity": "sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.2.1", + "eslint-visitor-keys": "^3.4.1" + } + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.2.1.tgz", + "integrity": "sha512-Ld+uL1kYFU8e6btqBFpsHkwQ35rw30IWpdQxgOqOh4NfxSDH6uCkah1ks8R/RgQqI5hHPXMaLy9fbFseIe+dIg==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/scope-manager": "6.2.1", + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/typescript-estree": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1", + "debug": "^4.3.4" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.1.tgz", + "integrity": "sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1" + } + }, + "@typescript-eslint/types": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.1.tgz", + "integrity": "sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==", + "dev": true, + "peer": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.1.tgz", + "integrity": "sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.1.tgz", + "integrity": "sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "6.2.1", + "eslint-visitor-keys": "^3.4.1" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.2.1.tgz", + "integrity": "sha512-fTfCgomBMIgu2Dh2Or3gMYgoNAnQm3RLtRp+jP7A8fY+LJ2+9PNpi5p6QB5C4RSP+U3cjI0vDlI3mspAkpPVbQ==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "6.2.1", + "@typescript-eslint/utils": "6.2.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.1.tgz", + "integrity": "sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1" + } + }, + "@typescript-eslint/types": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.1.tgz", + "integrity": "sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.1.tgz", + "integrity": "sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/visitor-keys": "6.2.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/utils": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.2.1.tgz", + "integrity": "sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.2.1", + "@typescript-eslint/types": "6.2.1", + "@typescript-eslint/typescript-estree": "6.2.1", + "semver": "^7.5.4" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.1.tgz", + "integrity": "sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.2.1", + "eslint-visitor-keys": "^3.4.1" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, @@ -19424,12 +13770,6 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -19441,28 +13781,17 @@ } }, "acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } + "requires": {} }, "acorn-jsx": { "version": "5.3.2", @@ -19471,21 +13800,6 @@ "dev": true, "requires": {} }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -19550,6 +13864,15 @@ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, "ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -19572,13 +13895,13 @@ } }, "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, "argparse": { @@ -19590,24 +13913,6 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -19620,18 +13925,6 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, "async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -19641,31 +13934,18 @@ "lodash": "^4.17.14" } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, "babel-jest": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.3.0.tgz", - "integrity": "sha512-sxPnQGEyHAOPF8NcUsD0g7hDCnvLL2XyblRBcgrzTWBB/mAIpWow3n1bEL+VghnnZfreLhFSBsFluRoK2tRK4g==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.2.tgz", + "integrity": "sha512-BYCzImLos6J3BH/+HvUCHG1dTf2MzmAB4jaVxHV+29RZLjR29XuYTmsf2sdDwkrb+FczkGo3kOhE7ga6sI0P4A==", "dev": true, "requires": { - "@jest/transform": "^26.3.0", - "@jest/types": "^26.3.0", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.3.0", + "@jest/transform": "^29.6.2", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.5.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "dependencies": { @@ -19731,34 +14011,34 @@ } }, "babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" } }, "babel-plugin-jest-hoist": { - "version": "26.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.2.0.tgz", - "integrity": "sha512-B/hVMRv8Nh1sQ1a3EY8I0n4Y1Wty3NrR5ebOyVT302op+DOAau+xNEImGMsUWOC3++ZlMooCytKz+NgN8aKGbA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", "dev": true, "requires": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" } }, "babel-preset-current-node-syntax": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz", - "integrity": "sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, "requires": { "@babel/plugin-syntax-async-generators": "^7.8.4", @@ -19771,17 +14051,18 @@ "@babel/plugin-syntax-numeric-separator": "^7.8.3", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" } }, "babel-preset-jest": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.3.0.tgz", - "integrity": "sha512-5WPdf7nyYi2/eRxCbVrE1kKCWxgWY4RsPEbdJWFm7QsesFGqjdkyLeu1zRkwM1cxK6EPIlNd6d2AxLk7J+t4pw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^26.2.0", - "babel-preset-current-node-syntax": "^0.1.3" + "babel-plugin-jest-hoist": "^29.5.0", + "babel-preset-current-node-syntax": "^1.0.0" } }, "balanced-match": { @@ -19790,67 +14071,18 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -19920,6 +14152,15 @@ "multicast-dns-service-types": "^1.1.0" } }, + "bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "requires": { + "big-integer": "^1.6.44" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -19931,40 +14172,14 @@ } }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "fill-range": "^7.0.1" } }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "browserslist": { "version": "4.18.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", @@ -19978,6 +14193,15 @@ "picocolors": "^1.0.0" } }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, "bser": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz", @@ -19999,29 +14223,21 @@ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, + "bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "requires": { + "run-applescript": "^5.0.0" + } + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -20050,15 +14266,6 @@ "integrity": "sha512-9RoKo841j1GQFSJz/nCXOj0sD7tHBtlowjYlrqIUS812x9/emfBLBt6IyMz1zIaYc/eRL8Cs6HPUVi2Hzq4sIg==", "dev": true }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "dev": true, - "requires": { - "rsvp": "^4.8.4" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -20090,57 +14297,6 @@ "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" - }, - "dependencies": { - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } } }, "chrome-trace-event": { @@ -20153,40 +14309,17 @@ } }, "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", "dev": true }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -20194,39 +14327,14 @@ "dev": true }, "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } } }, "clone-deep": { @@ -20243,25 +14351,15 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -20283,27 +14381,12 @@ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, "commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -20401,12 +14484,6 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, "core-js-compat": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz", @@ -20418,9 +14495,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -20432,78 +14509,31 @@ "dev": true }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" } }, - "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true - }, "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "requires": {} }, "deep-equal": { "version": "1.1.1", @@ -20526,11 +14556,33 @@ "dev": true }, "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, + "default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "requires": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + } + }, + "default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "requires": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + } + }, "default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -20540,17 +14592,6 @@ "execa": "^5.0.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -20568,24 +14609,12 @@ "strip-final-newline": "^2.0.0" } }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -20594,45 +14623,6 @@ "requires": { "path-key": "^3.0.0" } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -20651,47 +14641,6 @@ "object-keys": "^1.0.12" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "del": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", @@ -20708,12 +14657,6 @@ "slash": "^3.0.0" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -20739,9 +14682,9 @@ "dev": true }, "diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", "dev": true }, "dir-glob": { @@ -20787,23 +14730,6 @@ "esutils": "^2.0.2" } }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -20817,9 +14743,15 @@ "dev": true }, "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "encodeurl": { @@ -20828,19 +14760,10 @@ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, "enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -20862,10 +14785,19 @@ "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", "dev": true }, "escalade": { @@ -20886,34 +14818,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, "eslint": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz", @@ -21000,17 +14904,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -21074,12 +14967,6 @@ "word-wrap": "^1.2.3" } }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -21087,29 +14974,14 @@ "dev": true }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" } }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -21133,18 +15005,35 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, + "eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "requires": {} + }, + "eslint-plugin-jest": { + "version": "27.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.3.tgz", + "integrity": "sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "^5.10.0" + } + }, + "eslint-plugin-prettier": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" + } + }, "eslint-scope": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", @@ -21181,9 +15070,9 @@ } }, "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", "dev": true }, "espree": { @@ -21267,182 +15156,70 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, - "exec-sh": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", - "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==", - "dev": true - }, "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "dependencies": { + "human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } } }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, "expect": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", - "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.2.tgz", + "integrity": "sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==", "dev": true, "requires": { - "@jest/types": "^27.2.5", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-regex-util": "^27.0.6" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "@jest/expect-utils": "^29.6.2", + "@types/node": "*", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2" } }, "express": { @@ -21525,102 +15302,22 @@ } } }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -21628,57 +15325,12 @@ "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } } }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { @@ -21694,9 +15346,9 @@ "dev": true }, "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -21730,26 +15382,12 @@ } }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "to-regex-range": "^5.0.1" } }, "finalhandler": { @@ -21822,38 +15460,12 @@ "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", "dev": true }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -21921,18 +15533,9 @@ "dev": true }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, "glob": { @@ -21971,31 +15574,37 @@ "dev": true }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "dependencies": { "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true } } }, "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "handle-thing": { @@ -22025,38 +15634,6 @@ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -22069,15 +15646,6 @@ "wbuf": "^1.1.0" } }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, "html-entities": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", @@ -22140,17 +15708,6 @@ "requires-port": "^1.0.0" } }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, "http-proxy-middleware": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz", @@ -22162,61 +15719,6 @@ "is-glob": "^4.0.1", "is-plain-obj": "^3.0.0", "micromatch": "^4.0.2" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" } }, "human-signals": { @@ -22315,32 +15817,18 @@ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -22350,21 +15838,6 @@ "binary-extensions": "^2.0.0" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, "is-core-module": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", @@ -22374,69 +15847,30 @@ "has": "^1.0.3" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, "is-docker": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", "dev": true }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", @@ -22452,26 +15886,29 @@ "is-extglob": "^2.1.1" } }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "is-docker": "^3.0.0" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true } } }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -22499,12 +15936,6 @@ "isobject": "^3.0.1" } }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -22515,9 +15946,9 @@ } }, "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true }, "is-symbol": { @@ -22529,18 +15960,6 @@ "has-symbols": "^1.0.0" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -22559,7 +15978,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "isobject": { @@ -22569,39 +15988,40 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true }, "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-coverage": "^3.2.0", "semver": "^6.3.0" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "dependencies": { @@ -22642,9 +16062,9 @@ } }, "istanbul-reports": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", - "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -22652,94 +16072,27 @@ } }, "jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", - "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.2.tgz", + "integrity": "sha512-8eQg2mqFbaP7CwfsTpCxQ+sHzw1WuNWL5UUvjnWP4hx2riGz9fPSzYOaU5q8/GqWn1TfgZIVTqYJygbGbWAANg==", "dev": true, "requires": { - "@jest/core": "^27.3.1", + "@jest/core": "^29.6.2", + "@jest/types": "^29.6.1", "import-local": "^3.0.2", - "jest-cli": "^27.3.1" + "jest-cli": "^29.6.2" } }, "jest-changed-files": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", - "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", "dev": true, "requires": { - "@jest/types": "^27.2.5", "execa": "^5.0.0", - "throat": "^6.0.1" + "p-limit": "^3.1.0" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -22757,30 +16110,12 @@ "strip-final-newline": "^2.0.0" } }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -22790,105 +16125,45 @@ "path-key": "^3.0.0" } }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "mimic-fn": "^2.1.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" + "yocto-queue": "^0.1.0" } } } }, "jest-circus": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", - "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.2.tgz", + "integrity": "sha512-G9mN+KOYIUe2sB9kpJkO9Bk18J4dTDArNFPwoZ7WKHKel55eKIS/u2bLthxgojwlf9NLCVQfgzM/WsOVvoC6Fw==", "dev": true, "requires": { - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^29.6.2", + "@jest/expect": "^29.6.2", + "@jest/test-result": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.3.1", + "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", + "jest-each": "^29.6.2", + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-runtime": "^29.6.2", + "jest-snapshot": "^29.6.2", + "jest-util": "^29.6.2", + "p-limit": "^3.1.0", + "pretty-format": "^29.6.2", + "pure-rand": "^6.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "stack-utils": "^2.0.3" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -22908,12 +16183,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -22935,18 +16204,13 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" + "yocto-queue": "^0.1.0" } }, "supports-color": { @@ -22961,47 +16225,25 @@ } }, "jest-cli": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", - "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.2.tgz", + "integrity": "sha512-TT6O247v6dCEX2UGHGyflMpxhnrL0DNqP2fRTKYm3nJJpCTfXX3GCMQPGFjXDoj0i5/Blp3jriKXFgdfmbYB6Q==", "dev": true, "requires": { - "@jest/core": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/core": "^29.6.2", + "@jest/test-result": "^29.6.2", + "@jest/types": "^29.6.1", "chalk": "^4.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-config": "^29.6.2", + "jest-util": "^29.6.2", + "jest-validate": "^29.6.2", "prompts": "^2.0.1", - "yargs": "^16.2.0" + "yargs": "^17.3.1" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -23021,12 +16263,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -23048,20 +16284,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -23074,79 +16296,35 @@ } }, "jest-config": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", - "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.2.tgz", + "integrity": "sha512-VxwFOC8gkiJbuodG9CPtMRjBUNZEHxwfQXmIudSTzFWxaci3Qub1ddTRbFNQlD/zUeaifLndh/eDccFX4wCMQw==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.3.1", - "@jest/types": "^27.2.5", - "babel-jest": "^27.3.1", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.6.2", + "@jest/types": "^29.6.1", + "babel-jest": "^29.6.2", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.3.1", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-jasmine2": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-runner": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.6.2", + "jest-environment-node": "^29.6.2", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.6.2", + "jest-runner": "^29.6.2", + "jest-util": "^29.6.2", + "jest-validate": "^29.6.2", "micromatch": "^4.0.4", - "pretty-format": "^27.3.1" + "parse-json": "^5.2.0", + "pretty-format": "^29.6.2", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "dependencies": { - "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -23156,83 +16334,6 @@ "color-convert": "^2.0.1" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "babel-jest": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", - "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", - "dev": true, - "requires": { - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.2.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", - "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", - "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^27.2.0", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -23243,12 +16344,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -23264,122 +16359,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -23388,28 +16373,19 @@ "requires": { "has-flag": "^4.0.0" } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } } } }, "jest-diff": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", - "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.2.tgz", + "integrity": "sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.2" }, "dependencies": { "ansi-styles": { @@ -23464,49 +16440,27 @@ } }, "jest-docblock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", - "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", - "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.2.tgz", + "integrity": "sha512-MsrsqA0Ia99cIpABBc3izS1ZYoYfhIy0NNWqPSE0YXbQjwchyt6B1HD2khzyPe1WiJA7hbxXy77ZoUQxn8UlSw==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^29.6.1", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-get-type": "^29.4.3", + "jest-util": "^29.6.2", + "pretty-format": "^29.6.2" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -23526,12 +16480,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -23553,128 +16501,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-environment-jsdom": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", - "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", - "dev": true, - "requires": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1", - "jsdom": "^16.6.0" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -23687,340 +16513,65 @@ } }, "jest-environment-node": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", - "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.2.tgz", + "integrity": "sha512-YGdFeZ3T9a+/612c5mTQIllvWkddPbYcN2v95ZH24oWMbGA4GGS2XdIF92QMhUhvrjjuQWYgUGW2zawOyH63MQ==", "dev": true, "requires": { - "@jest/environment": "^27.3.1", - "@jest/fake-timers": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/environment": "^29.6.2", + "@jest/fake-timers": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", - "jest-mock": "^27.3.0", - "jest-util": "^27.3.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "jest-mock": "^29.6.2", + "jest-util": "^29.6.2" } }, "jest-get-type": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", - "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", "dev": true }, "jest-haste-map": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.3.0.tgz", - "integrity": "sha512-DHWBpTJgJhLLGwE5Z1ZaqLTYqeODQIZpby0zMBsCU9iRFHYyhklYqP4EiG73j5dkbaAdSZhgB938mL51Q5LeZA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.2.tgz", + "integrity": "sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA==", "dev": true, "requires": { - "@jest/types": "^26.3.0", - "@types/graceful-fs": "^4.1.2", + "@jest/types": "^29.6.1", + "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", - "fsevents": "^2.1.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.3.0", - "jest-util": "^26.3.0", - "jest-worker": "^26.3.0", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "dependencies": { - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "jest-jasmine2": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", - "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.3.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "pretty-format": "^27.3.1", - "throat": "^6.0.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.6.2", + "jest-worker": "^29.6.2", + "micromatch": "^4.0.4", + "walker": "^1.0.8" } }, "jest-leak-detector": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", - "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.2.tgz", + "integrity": "sha512-aNqYhfp5uYEO3tdWMb2bfWv6f0b4I0LOxVRpnRLAeque2uqOVVMLh6khnTcE2qJ5wAKop0HcreM1btoysD6bPQ==", "dev": true, "requires": { - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.2" } }, "jest-matcher-utils": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", - "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz", + "integrity": "sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "pretty-format": "^27.3.1" + "jest-diff": "^29.6.2", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.2" }, "dependencies": { "ansi-styles": { @@ -24075,44 +16626,22 @@ } }, "jest-message-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", - "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.2.tgz", + "integrity": "sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.2.5", + "@jest/types": "^29.6.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.3.1", + "pretty-format": "^29.6.2", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -24122,15 +16651,6 @@ "color-convert": "^2.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -24156,37 +16676,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -24195,154 +16690,50 @@ "requires": { "has-flag": "^4.0.0" } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } } } }, "jest-mock": { - "version": "27.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", - "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.2.tgz", + "integrity": "sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==", "dev": true, "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "@jest/types": "^29.6.1", + "@types/node": "*", + "jest-util": "^29.6.2" } }, "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "requires": {} }, "jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", "dev": true }, "jest-resolve": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", - "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.2.tgz", + "integrity": "sha512-G/iQUvZWI5e3SMFssc4ug4dH0aZiZpsDq9o1PtXTV1210Ztyb2+w+ZgQkB3iOiC5SmAEzJBOHWz6Hvrd+QnNPw==", "dev": true, "requires": { - "@jest/types": "^27.2.5", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.2", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "jest-util": "^29.6.2", + "jest-validate": "^29.6.2", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -24352,25 +16743,6 @@ "color-convert": "^2.0.1" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -24381,12 +16753,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -24402,116 +16768,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -24520,183 +16782,48 @@ "requires": { "has-flag": "^4.0.0" } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } } } }, "jest-resolve-dependencies": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", - "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.2.tgz", + "integrity": "sha512-LGqjDWxg2fuQQm7ypDxduLu/m4+4Lb4gczc13v51VMZbVP5tSBILqVx8qfWcsdP8f0G7aIqByIALDB0R93yL+w==", "dev": true, "requires": { - "@jest/types": "^27.2.5", - "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.3.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.6.2" } }, "jest-runner": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", - "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.2.tgz", + "integrity": "sha512-wXOT/a0EspYgfMiYHxwGLPCZfC0c38MivAlb2lMEAlwHINKemrttu1uSbcGbfDV31sFaPWnWJPmb2qXM8pqZ4w==", "dev": true, "requires": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/console": "^29.6.2", + "@jest/environment": "^29.6.2", + "@jest/test-result": "^29.6.2", + "@jest/transform": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.3.1", - "jest-environment-node": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-leak-detector": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-runtime": "^27.3.1", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.6.2", + "jest-haste-map": "^29.6.2", + "jest-leak-detector": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-resolve": "^29.6.2", + "jest-runtime": "^29.6.2", + "jest-util": "^29.6.2", + "jest-watcher": "^29.6.2", + "jest-worker": "^29.6.2", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "dependencies": { - "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -24706,25 +16833,6 @@ "color-convert": "^2.0.1" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -24735,12 +16843,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -24756,122 +16858,37 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" + "yocto-queue": "^0.1.0" } }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -24880,97 +16897,39 @@ "requires": { "has-flag": "^4.0.0" } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } } } }, "jest-runtime": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", - "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.2.tgz", + "integrity": "sha512-2X9dqK768KufGJyIeLmIzToDmsN0m7Iek8QNxRSI/2+iPFYHF0jTwlO3ftn7gdKd98G/VQw9XJCk77rbTGZnJg==", "dev": true, "requires": { - "@jest/console": "^27.3.1", - "@jest/environment": "^27.3.1", - "@jest/globals": "^27.3.1", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.3.1", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/yargs": "^16.0.0", + "@jest/environment": "^29.6.2", + "@jest/fake-timers": "^29.6.2", + "@jest/globals": "^29.6.2", + "@jest/source-map": "^29.6.0", + "@jest/test-result": "^29.6.2", + "@jest/transform": "^29.6.2", + "@jest/types": "^29.6.1", + "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "exit": "^0.1.2", "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-mock": "^27.3.0", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.3.1", - "jest-snapshot": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-mock": "^29.6.2", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.6.2", + "jest-snapshot": "^29.6.2", + "jest-util": "^29.6.2", "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.2.0" + "strip-bom": "^4.0.0" }, "dependencies": { - "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -24980,25 +16939,6 @@ "color-convert": "^2.0.1" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -25009,12 +16949,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -25030,207 +16964,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -25239,114 +16978,37 @@ "requires": { "has-flag": "^4.0.0" } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, - "jest-serializer": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.3.0.tgz", - "integrity": "sha512-IDRBQBLPlKa4flg77fqg0n/pH87tcRKwe8zxOVTWISxGpPHYkRZ1dXKyh04JOja7gppc60+soKVZ791mruVdow==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, "jest-snapshot": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", - "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.2.tgz", + "integrity": "sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA==", "dev": true, "requires": { - "@babel/core": "^7.7.2", + "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.3.1", - "@jest/types": "^27.2.5", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.6.2", + "@jest/transform": "^29.6.2", + "@jest/types": "^29.6.1", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.3.1", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.3.1", - "jest-get-type": "^27.3.1", - "jest-haste-map": "^27.3.1", - "jest-matcher-utils": "^27.3.1", - "jest-message-util": "^27.3.1", - "jest-resolve": "^27.3.1", - "jest-util": "^27.3.1", + "expect": "^29.6.2", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.6.2", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2", "natural-compare": "^1.4.0", - "pretty-format": "^27.3.1", - "semver": "^7.3.2" + "pretty-format": "^29.6.2", + "semver": "^7.5.3" }, "dependencies": { - "@jest/transform": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", - "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.2.5", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.3.1", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.3.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -25356,45 +17018,6 @@ "color-convert": "^2.0.1" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -25405,12 +17028,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -25426,131 +17043,21 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "jest-haste-map": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", - "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.3.1", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", - "dev": true - }, - "jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -25559,55 +17066,36 @@ "requires": { "has-flag": "^4.0.0" } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } } } }, "jest-util": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.3.0.tgz", - "integrity": "sha512-4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.2.tgz", + "integrity": "sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w==", "dev": true, "requires": { - "@jest/types": "^26.3.0", + "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "dependencies": { "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -25629,37 +17117,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -25668,54 +17131,23 @@ "requires": { "has-flag": "^4.0.0" } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } } } }, "jest-validate": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", - "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.2.tgz", + "integrity": "sha512-vGz0yMN5fUFRRbpJDPwxMpgSXW1LDKROHfBopAvDcmD6s+B/s8WJrwi+4bfH4SdInBA5C3P3BI19dBtKzx1Arg==", "dev": true, "requires": { - "@jest/types": "^27.2.5", + "@jest/types": "^29.6.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.3.1", + "jest-get-type": "^29.4.3", "leven": "^3.1.0", - "pretty-format": "^27.3.1" + "pretty-format": "^29.6.2" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -25726,9 +17158,9 @@ } }, "camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, "chalk": { @@ -25774,51 +17206,21 @@ } }, "jest-watcher": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", - "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.2.tgz", + "integrity": "sha512-GZitlqkMkhkefjfN/p3SJjrDaxPflqxEAv3/ik10OirZqJGYH5rPiIsgVcfof0Tdqg3shQGdEIxDBx+B4tuLzA==", "dev": true, "requires": { - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", + "@jest/test-result": "^29.6.2", + "@jest/types": "^29.6.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.3.1", + "emittery": "^0.13.1", + "jest-util": "^29.6.2", "string-length": "^4.0.1" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -25838,12 +17240,6 @@ "supports-color": "^7.1.0" } }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -25865,20 +17261,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-util": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", - "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", - "dev": true, - "requires": { - "@jest/types": "^27.2.5", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -25891,14 +17273,15 @@ } }, "jest-worker": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz", - "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.2.tgz", + "integrity": "sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==", "dev": true, "requires": { "@types/node": "*", + "jest-util": "^29.6.2", "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "supports-color": "^8.0.0" }, "dependencies": { "has-flag": { @@ -25908,9 +17291,9 @@ "dev": true }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -25940,51 +17323,16 @@ "esprima": "^4.0.0" } }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - } - }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, "json-schema-traverse": { @@ -26000,13 +17348,10 @@ "dev": true }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true }, "kind-of": { "version": "6.0.3", @@ -26026,15 +17371,11 @@ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "loader-runner": { "version": "4.2.0", @@ -26057,6 +17398,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -26082,44 +17429,38 @@ } }, "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "requires": { - "semver": "^6.0.0" + "semver": "^7.5.3" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "requires": { - "tmpl": "1.0.x" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "requires": { - "object-visit": "^1.0.0" + "tmpl": "1.0.5" } }, "media-typer": { @@ -26162,24 +17503,13 @@ "dev": true }, "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "micromodal": { @@ -26208,6 +17538,12 @@ "mime-db": "1.51.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -26229,27 +17565,6 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -26281,31 +17596,18 @@ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -26318,12 +17620,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, "node-forge": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.0.tgz", @@ -26336,12 +17632,6 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, "node-releases": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", @@ -26349,57 +17639,25 @@ "dev": true }, "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", "dev": true, "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "path-key": "^4.0.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true } } }, @@ -26472,15 +17730,6 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, "object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", @@ -26493,15 +17742,6 @@ "object-keys": "^1.0.11" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -26532,6 +17772,15 @@ "wrappy": "1" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, "open": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", @@ -26543,26 +17792,6 @@ "is-wsl": "^2.2.0" } }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -26615,11 +17844,17 @@ "callsites": "^3.0.0" } }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } }, "parseurl": { "version": "1.3.3", @@ -26627,12 +17862,6 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -26646,9 +17875,9 @@ "dev": true }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { @@ -26676,19 +17905,16 @@ "dev": true }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true }, "pkg-dir": { "version": "4.2.0", @@ -26721,108 +17947,38 @@ } } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "prettier": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.2.tgz", + "integrity": "sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==", + "dev": true, + "peer": true }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "pretty-format": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", - "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "requires": { - "@jest/types": "^27.2.5", - "ansi-regex": "^5.0.1", + "fast-diff": "^1.1.2" + } + }, + "pretty-format": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz", + "integrity": "sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.0", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "dependencies": { - "@jest/types": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", - "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -26864,28 +18020,18 @@ "ipaddr.js": "1.9.1" } }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "pure-rand": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", + "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "dev": true + }, "qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -26937,9 +18083,9 @@ } }, "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, "readable-stream": { @@ -26999,16 +18145,6 @@ "private": "^0.1.6" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, "regexp-tree": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.13.tgz", @@ -27115,28 +18251,10 @@ } } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-from-string": { @@ -27184,22 +18302,10 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, "resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true }, "retry": { @@ -27223,11 +18329,48 @@ "glob": "^7.1.3" } }, - "rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "dev": true + "run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + } + } }, "run-parallel": { "version": "1.2.0", @@ -27244,51 +18387,16 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "dev": true, - "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - } - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -27312,9 +18420,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "send": { @@ -27376,9 +18484,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -27452,29 +18560,6 @@ "send": "0.18.0" } }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -27491,18 +18576,18 @@ } }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "side-channel": { @@ -27517,9 +18602,9 @@ } }, "signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "sisteransi": { @@ -27534,128 +18619,6 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "sockjs": { "version": "0.3.21", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", @@ -27673,19 +18636,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -27704,12 +18654,6 @@ } } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, "spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", @@ -27750,15 +18694,6 @@ } } }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -27766,9 +18701,9 @@ "dev": true }, "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -27782,27 +18717,6 @@ } } }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -27828,6 +18742,17 @@ "strip-ansi": "^6.0.0" } }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", @@ -27957,12 +18882,6 @@ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -27984,74 +18903,38 @@ "has-flag": "^3.0.0" } }, - "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", "dev": true, "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" }, "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - } - } - }, "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", "dev": true, "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -28065,16 +18948,16 @@ } }, "terser-webpack-plugin": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", - "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "requires": { - "jest-worker": "^27.0.6", + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" }, "dependencies": { "has-flag": { @@ -28084,9 +18967,9 @@ "dev": true }, "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "requires": { "@types/node": "*", @@ -28094,12 +18977,6 @@ "supports-color": "^8.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -28128,18 +19005,18 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, "thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, + "titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true + }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -28152,46 +19029,13 @@ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" } }, "toidentifier": { @@ -28200,24 +19044,110 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "ts-api-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", + "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", + "dev": true, + "requires": {} + }, + "ts-jest": { + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", "dev": true, "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "ts-loader": { + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", + "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", "dev": true, "requires": { - "punycode": "^2.1.1" + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "tslib": { @@ -28226,13 +19156,13 @@ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", "dev": true }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "tslib": "^1.8.1" } }, "type-detect": { @@ -28257,14 +19187,11 @@ "mime-types": "~2.1.24" } }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } + "typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "dev": true }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", @@ -28294,69 +19221,17 @@ "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", "dev": true }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true }, "uri-js": { "version": "4.2.2", @@ -28367,18 +19242,6 @@ "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -28404,22 +19267,14 @@ "dev": true }, "v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } + "convert-source-map": "^1.6.0" } }, "vary": { @@ -28428,37 +19283,19 @@ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" - } - }, "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "requires": { - "makeerror": "1.0.x" + "makeerror": "1.0.12" } }, "watchpack": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.0.tgz", - "integrity": "sha512-MnN0Q1OsvB/GGHETrFeZPQaOelWh/7O+EiFlj8sM9GPjtQkis7k01aAxrg/18kTfoIVcLL+haEVFlXDaSRwKRw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -28474,51 +19311,38 @@ "minimalistic-assert": "^1.0.0" } }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, "webpack": { - "version": "5.64.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.64.4.tgz", - "integrity": "sha512-LWhqfKjCLoYJLKJY8wk2C3h77i8VyHowG3qYNZiIqD6D0ZS40439S/KVuc/PY48jp2yQmy0mhMknq8cys4jFMw==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.0", - "webpack-sources": "^3.2.2" + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" }, "dependencies": { - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -28551,17 +19375,6 @@ "webpack-merge": "^5.7.3" }, "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -28579,24 +19392,12 @@ "strip-final-newline": "^2.0.0" } }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -28605,45 +19406,6 @@ "requires": { "path-key": "^3.0.0" } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -28819,9 +19581,9 @@ } }, "webpack-sources": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", - "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true }, "websocket-driver": { @@ -28841,36 +19603,10 @@ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -28883,15 +19619,9 @@ "dev": true }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, "wrap-ansi": { @@ -28928,29 +19658,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } } } }, @@ -28961,36 +19668,15 @@ "dev": true }, "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "requires": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^3.0.7" } }, - "ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "dev": true, - "requires": {} - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -29004,49 +19690,30 @@ "dev": true }, "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "requires": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } + "yargs-parser": "^21.1.1" } }, "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true } } diff --git a/package.json b/package.json index 03d08c5..bac79ee 100644 --- a/package.json +++ b/package.json @@ -28,11 +28,20 @@ "devDependencies": { "@babel/core": "^7.4.0", "@babel/preset-env": "^7.4.2", + "@types/micromodal": "^0.3.3", + "@typescript-eslint/eslint-plugin": "^6.2.1", + "@types/jest": "^29.5.3", "ajv": "^6.9.2", - "babel-jest": "^26.3.0", + "babel-jest": "^29.5.0", "eslint": "^8.3.0", - "jest": "^27.3.1", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-jest": "^27.2.3", + "eslint-plugin-prettier": "^5.0.0", + "jest": "^29.5.0", "node-forge": "^1.3.0", + "ts-jest": "^29.1.1", + "ts-loader": "^9.4.4", + "typescript": "^5.1.6", "webpack": "^5.64.4", "webpack-cli": "^4.9.1", "webpack-dev-server": "^4.6.0" diff --git a/test/cpu.spec.js b/test/cpu.spec.js deleted file mode 100644 index a259a56..0000000 --- a/test/cpu.spec.js +++ /dev/null @@ -1,48 +0,0 @@ - -import CPU6502 from '../js/cpu6502'; -import Test6502 from './roms/6502test'; -import Test65C02 from './roms/65C02test'; - -import { toHex } from '../js/util'; - -describe.skip('CPU', function () { - var cpu; - var lastPC = 0; - var done = false; - - function traceCB() { - var pc = cpu.getPC(); - done = lastPC == pc; - lastPC = pc; - } - - describe('6502', function () { - it('completes the test ROM', function () { - cpu = new CPU6502(); - var test = new Test6502(); - cpu.addPageHandler(test); - cpu.setPC(0x400); - - do { - cpu.stepCyclesDebug(1000, traceCB); - } while (!done); - - expect(toHex(lastPC)).toEqual(toHex(0x3469)); - }); - }); - - describe('65C02', function () { - it('completes the test ROM', function () { - cpu = new CPU6502({'65C02': true}); - var test = new Test65C02(); - cpu.addPageHandler(test); - cpu.setPC(0x400); - - do { - cpu.stepCyclesDebug(1000, traceCB); - } while (!done); - - expect(toHex(lastPC)).toEqual(toHex(0x24f1)); - }); - }); -}); diff --git a/test/cpu.spec.ts b/test/cpu.spec.ts new file mode 100644 index 0000000..c4db763 --- /dev/null +++ b/test/cpu.spec.ts @@ -0,0 +1,48 @@ +import CPU6502, { FLAVOR_ROCKWELL_65C02 } from '../js/cpu6502'; +// From https://github.com/Klaus2m5/6502_65C02_functional_tests +import Test6502 from './roms/6502test'; +import Test65C02 from './roms/65C02test'; + +import { toHex } from '../js/util'; + +describe('CPU', function () { + let cpu: CPU6502; + let lastPC = 0; + let done = false; + + function traceCB() { + const pc = cpu.getPC(); + done = lastPC === pc; + lastPC = pc; + } + + describe('6502', function () { + it('completes the test ROM', function () { + cpu = new CPU6502(); + const test = new Test6502(); + cpu.addPageHandler(test); + cpu.setPC(0x400); + + do { + cpu.stepCyclesDebug(1000, traceCB); + } while (!done); + + expect(toHex(lastPC)).toEqual(toHex(0x3469)); + }); + }); + + describe('65C02', function () { + it('completes the test ROM', function () { + cpu = new CPU6502({ flavor: FLAVOR_ROCKWELL_65C02 }); + const test = new Test65C02(); + cpu.addPageHandler(test); + cpu.setPC(0x400); + + do { + cpu.stepCyclesDebug(1000, traceCB); + } while (!done); + + expect(toHex(lastPC)).toEqual(toHex(0x24f1)); + }); + }); +}); diff --git a/test/cpu6502.spec.js b/test/cpu6502.spec.js deleted file mode 100644 index a910481..0000000 --- a/test/cpu6502.spec.js +++ /dev/null @@ -1,2240 +0,0 @@ -import CPU6502 from '../js/cpu6502'; - -function assertByte(b) { - expect(b <= 0xFF).toEqual(true); - expect(b >= 0x00).toEqual(true); -} - -function Memory(size) { - var data = Buffer.alloc(size << 8); - - return { - start: function() { - return 0; - }, - - end: function() { - return size - 1; - }, - - read: function(page, off) { - assertByte(page); - assertByte(off); - - return data[(page << 8) | off]; - }, - - write: function(page, off, val) { - assertByte(page); - assertByte(off); - assertByte(val); - - data[(page << 8) | off] = val; - }, - - reset: function() { - } - }; -} - -function Program(page, code) { - var data = Buffer.from(code); - - return { - start: function() { - return page; - }, - - end: function() { - return page; - }, - - read: function(page, off) { - assertByte(page); - assertByte(off); - return data[off]; - } - }; -} - -var bios = new Program(0xff, [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x45, 0x4C, 0x4C, 0x4F, 0x0D, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00, 0xff -]); - -var FLAGS = { - N: 0x80, // Negative - V: 0x40, // oVerflow - DEFAULT: 0x20, // Default - B: 0x10, // Break - D: 0x08, // Decimal - I: 0x04, // Interrupt - Z: 0x02, // Zero - C: 0x01 // Carry -}; - -var DEFAULT_STATE = { - cycles: 0, - s: FLAGS.DEFAULT, - sp: 0xff, - a: 0x00, - x: 0x00, - y: 0x00, - pc: 0x0400 -}; - -var memory; -var cpu; -var program; - -function initState(initialState) { - var state = Object.assign({}, DEFAULT_STATE, initialState); - cpu.setState(state); -} - -function expectState(initialState, expectedState) { - var state = Object.assign({}, initialState, expectedState); - expect(cpu.getState()).toEqual(state); -} - -function initMemory(memAry) { - for (var idx = 0; idx < memAry.length; idx++) { - var mem = memAry[idx]; - var page = mem[0]; - var off = mem[1]; - var data = mem[2]; - for (var jdx = 0; jdx < data.length; jdx++) { - cpu.write(page, off++, data[jdx]); - if (off > 0xff) { - page++; - off = 0; - } - } - } -} - -function expectMemory(expectAry) { - var memAry = []; - for (var idx = 0; idx < expectAry.length; idx++) { - var mem = expectAry[idx]; - var page = mem[0]; - var off = mem[1]; - var expectData = mem[2]; - var data = []; - for (var jdx = 0; jdx < expectData.length; jdx++) { - data.push(cpu.read(page, off++)); - if (off > 0xff) { - page++; - off = 0; - } - } - memAry.push([mem[0], mem[1], data]); - } - expect(memAry).toEqual(expectAry); -} - -function expectStack(expectAry) { - var state = cpu.getState(); - expectMemory([[0x01, state.sp + 1, expectAry]]); -} - -function testCode(code, steps, setupState, expectedState) { - var initialState = Object.assign({}, DEFAULT_STATE, setupState); - var finalState = Object.assign({ - pc: initialState.pc + code.length - }, expectedState); - - program = new Program(0x04, code); - cpu.addPageHandler(program); - - cpu.setState(initialState); - cpu.stepDebug(steps); - expectState(initialState, finalState); -} - -describe('CPU6502', function() { - beforeEach(function() { - cpu = new CPU6502(); - memory = new Memory(4); - - cpu.addPageHandler(memory); - cpu.addPageHandler(bios); - }); - - describe('#signals', function () { - it('should reset', function () { - cpu.reset(); - - expectState(DEFAULT_STATE, { - cycles: 2 - }); - }); - - it('should irq', function () { - cpu.irq(); - - expectState(DEFAULT_STATE, { - cycles: 5, - s: FLAGS.DEFAULT | FLAGS.I, - sp: 0xfc, - pc: 0xff00 - }); - }); - - it('should not irq if I set', function () { - initState({ - s: FLAGS.DEFAULT | FLAGS.I - }); - - cpu.irq(); - - expectState(DEFAULT_STATE, { - s: FLAGS.DEFAULT | FLAGS.I, - pc: 0x400 - }); - }); - - it('should nmi', function () { - cpu.nmi(); - - expectState(DEFAULT_STATE, { - cycles: 5, - s: FLAGS.DEFAULT | FLAGS.I, - sp: 0xfc, - pc: 0xff00 - }); - }); - }); - - describe('#misc', function () { - it('should NOP', function () { - testCode([0xEA], 1, {}, { - cycles: 2 - }); - }); - - it('should BRK', function () { - testCode([0x00, 0x00], 1, {}, { - cycles: 7, - s: FLAGS.DEFAULT | FLAGS.I, - sp: 0xfc, - pc: 0xff00 - }); - }); - - it('should RTI', function () { - initMemory([[0x01, 0xFD, [0xA0, 0x34, 0x12]]]); - testCode([0x40], 1, { - sp: 0xFC - }, { - cycles: 6, - s: FLAGS.DEFAULT | FLAGS.N, - sp: 0xFF, - pc: 0x1234 - }); - }); - }); - - describe('#registers', function() { - it('should LDA immediate', function () { - testCode([0xA9, 0x44], 1, {}, { - cycles: 2, - a: 0x44 - }); - }); - - it('should TAX', function () { - testCode([0xAA], 1, { - a: 0x44 - }, { - cycles: 2, - x: 0x44 - }); - }); - - it('should TAY', function () { - testCode([0xA8], 1, { - a: 0x44 - }, { - cycles: 2, - y: 0x44 - }); - }); - - it('should LDX immediate', function () { - testCode([0xA2, 0x44], 1, {}, { - cycles: 2, - x: 0x44 - }); - }); - - it('should TXA', function () { - testCode([0x8A], 1, { - x: 0x44 - }, { - cycles: 2, - a: 0x44 - }); - }); - - it('should DEX', function () { - testCode([0xCA], 1, { - x: 0x44 - }, { - cycles: 2, - x: 0x43 - }); - }); - - it('should INX', function () { - testCode([0xE8], 1, { - x: 0x44 - }, { - cycles: 2, - x: 0x45 - }); - }); - - it('should LDY immediate', function () { - testCode([0xA0, 0x44], 1, {}, { - cycles: 2, - y: 0x44 - }); - }); - - it('should TYA', function () { - testCode([0x98], 1, { - y: 0x44 - }, { - cycles: 2, - a: 0x44 - }); - }); - - it('should DEY', function () { - testCode([0x88], 1, { - y: 0x44 - }, { - cycles: 2, - y: 0x43 - }); - }); - - it('should INY', function () { - testCode([0xC8], 1, { - y: 0x44 - }, { - cycles: 2, - y: 0x45 - }); - }); - }); - - describe('#flags', function() { - it('should SEC', function () { - testCode([0x38], 1, {}, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.C - }); - }); - - it('should CLC', function () { - testCode([0x18], 1, { - s: FLAGS.DEFAULT | FLAGS.C - }, { - cycles: 2, - s: FLAGS.DEFAULT - }); - }); - - it('should SEI', function () { - testCode([0x78], 1, {}, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.I - }); - }); - - it('should CLI', function () { - testCode([0x58], 1, { - s: FLAGS.DEFAULT | FLAGS.I - }, { - cycles: 2, - s: FLAGS.DEFAULT - }); - }); - - it('should CLV', function () { - testCode([0xB8], 1, { - s: FLAGS.DEFAULT | FLAGS.V - }, { - cycles: 2, - s: FLAGS.DEFAULT - }); - }); - - it('should SED', function () { - testCode([0xF8], 1, {}, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.D - }); - }); - - it('should CLD', function () { - testCode([0xD8], 1, { - s: FLAGS.DEFAULT | FLAGS.D - }, { - cycles: 2, - s: FLAGS.DEFAULT - }); - }); - }); - - describe('#stack', function() { - it('should TXS', function() { - testCode([0x9A], 1, { - x: 0x44 - }, { - cycles: 2, - sp: 0x44 - }); - }); - - it('should TSX', function() { - testCode([0xBA], 1, { - sp: 0x44 - }, { - cycles: 2, - x: 0x44 - }); - }); - - it('should PHA', function() { - testCode([0x48], 1, { - a: 0x44 - }, { - cycles: 3, - sp: 0xfe - }); - expectStack([0x44]); - }); - - it('should PLA', function() { - initMemory([[0x01, 0xff, [0x44]]]); - testCode([0x68], 1, { - sp: 0xfe - }, { - cycles: 4, - a: 0x44, - sp: 0xff - }); - }); - - it('should PHP', function() { - testCode([0x08], 1, { - s: FLAGS.DEFAULT | FLAGS.N | FLAGS.C - }, { - cycles: 3, - sp: 0xfe - }); - expectStack([FLAGS.DEFAULT | FLAGS.B | FLAGS.N | FLAGS.C]); - }); - - it('should PLP', function() { - initMemory([[0x01, 0xff, [FLAGS.N | FLAGS.C]]]); - testCode([0x28], 1, { - sp: 0xfe - }, { - cycles: 4, - s: FLAGS.DEFAULT | FLAGS.N | FLAGS.C, - sp: 0xff - }); - }); - }); - - describe('#jumps', function() { - it('should JMP abs', function () { - testCode([0x4C, 0x34, 0x12], 1, {}, { - cycles: 3, - pc: 0x1234 - }); - }); - - it('should JMP (abs)', function () { - initMemory([[0x03, 0x33, [0x34, 0x12]]]); - testCode([0x6C, 0x33, 0x03], 1, {}, { - cycles: 5, - pc: 0x1234 - }); - }); - - it('should JMP (abs) across page boundries with bugs', function () { - initMemory([[0x02, 0xFF, [0x34, 0x12]], - [0x02, 0x00, [0xff]]]); - testCode([0x6C, 0xFF, 0x02], 1, {}, { - cycles: 5, - pc: 0xFF34 - }); - }); - - it('should JSR abs', function () { - testCode([0x20, 0x34, 0x12], 1, {}, { - cycles: 6, - sp: 0xFD, - pc: 0x1234 - }); - expectStack([0x02, 0x04]); - }); - - it('should RTS', function () { - initMemory([[0x01, 0xFE, [0x34, 0x12]]]); - testCode([0x60], 1, { - sp: 0xFD - }, { - cycles: 6, - sp: 0xFF, - pc: 0x1235 - }); - }); - }); - - describe('#branches', function() { - // ********** bcs - it('should BCS forward', function () { - testCode([0xB0, 0x7F], 1, { - s: FLAGS.DEFAULT | FLAGS.C - }, { - cycles: 3, - pc: 0x0481 - }); - }); - - it('should BCS backward', function () { - testCode([0xB0, 0xff], 1, { - s: FLAGS.DEFAULT | FLAGS.C - }, { - cycles: 3, - pc: 0x0401 - }); - }); - - it('should BCS across pages with an extra cycle', function () { - testCode([0xB0, 0xfd], 1, { - s: FLAGS.DEFAULT | FLAGS.C - }, { - cycles: 4, - pc: 0x03FF - }); - }); - - it('should not BCS if carry clear', function () { - testCode([0xB0, 0xfd], 1, {}, { - cycles: 2, - pc: 0x0402 - }); - }); - - it('should BCC forward', function () { - testCode([0x90, 0x7F], 1, {}, { - cycles: 3, - pc: 0x0481 - }); - }); - - it('should BCC backward', function () { - testCode([0x90, 0xff], 1, {}, { - cycles: 3, - pc: 0x0401 - }); - }); - - it('should BCC across pages with an extra cycle', function () { - testCode([0x90, 0xfd], 1, {}, { - cycles: 4, - pc: 0x03FF - }); - }); - - it('should not BCC if carry set', function () { - testCode([0x90, 0xfd], 1, { - s: FLAGS.DEFAULT | FLAGS.C - }, { - cycles: 2, - pc: 0x0402 - }); - }); - }); - - describe('#read memory', function() { - // ********** zp - it('should LDY zp', function () { - initMemory([[0x00, 0x33, [0x44]]]); - testCode([0xA4, 0x33], 1, {}, { - cycles: 3, - y: 0x44 - }); - }); - - it('should LDA zp', function () { - initMemory([[0x00, 0x33, [0x44]]]); - testCode([0xA5, 0x33], 1, {}, { - cycles: 3, - a: 0x44 - }); - }); - - it('should LDX zp', function () { - initMemory([[0x00, 0x33, [0x44]]]); - testCode([0xA6, 0x33], 1, {}, { - cycles: 3, - x: 0x44 - }); - }); - - // ********** zp,x - it('should LDY zp,x', function () { - initMemory([[0x00, 0x36, [0x44]]]); - testCode([0xB4, 0x33], 1, { - x: 3 - }, { - cycles: 4, - y: 0x44 - }); - }); - - it('should LDA zp,x', function () { - initMemory([[0x00, 0x36, [0x44]]]); - testCode([0xB5, 0x33], 1, { - x: 3 - }, { - cycles: 4, - a: 0x44 - }); - }); - - // ********** zp,y - it('should LDX zp,y', function () { - initMemory([[0x00, 0x36, [0x44]]]); - testCode([0xB6, 0x33], 1, { - y: 3 - }, { - cycles: 4, - x: 0x44 - }); - }); - - // ********** (zp,x) - it('should LDA (zp,x)', function () { - initMemory([ - [0x00, 0x36, [0x33, 0x03]], - [0x03, 0x33, [0x44]]] - ); - testCode([0xA1, 0x33], 1, { - x: 3 - }, { - cycles: 6, - a: 0x44 - }); - }); - - // ********** (zp),y - it('should LDA (zp),y', function () { - initMemory([ - [0x00, 0x33, [0x33, 0x03]], - [0x03, 0x36, [0x44]] - ]); - testCode([0xB1, 0x33], 1, { - y: 3 - }, { - cycles: 5, - a: 0x44 - }); - }); - - // ********** (zp),y - it('should LDA (zp),y with an extra cycle on page cross', function () { - initMemory([ - [0x00, 0x33, [0x33, 0x02]], - [0x03, 0x32, [0x44]] - ]); - testCode([0xB1, 0x33], 1, { - y: 0xff - }, { - cycles: 6, - a: 0x44 - }); - }); - - // ********** abs - it('should LDY abs', function () { - initMemory([[0x03, 0x33, [0x44]]]); - testCode([0xAC, 0x33, 0x03], 1, {}, { - cycles: 4, - y: 0x44 - }); - }); - - it('should LDA abs', function () { - initMemory([[0x03, 0x33, [0x44]]]); - testCode([0xAD, 0x33, 0x03], 1, {}, { - cycles: 4, - a: 0x44 - }); - }); - - it('should LDX abs', function () { - initMemory([[0x03, 0x33, [0x44]]]); - testCode([0xAE, 0x33, 0x03], 1, {}, { - cycles: 4, - x: 0x44 - }); - }); - - // ********** abs, x - it('should LDY abs,x', function () { - initMemory([[0x03, 0x36, [0x44]]]); - testCode([0xBC, 0x33, 0x03], 1, { - x: 3 - }, { - cycles: 4, - y: 0x44 - }); - }); - - it('should LDA abs,x', function () { - initMemory([[0x03, 0x36, [0x44]]]); - testCode([0xBD, 0x33, 0x03], 1, { - x: 3 - }, { - cycles: 4, - a: 0x44 - }); - }); - - it('should LDY abs,x with extra cycle on page cross', function () { - initMemory([[0x03, 0x32, [0x44]]]); - testCode([0xBC, 0x33, 0x02], 1, { - x: 0xff - }, { - cycles: 5, - y: 0x44 - }); - }); - - it('should LDA abs,x with extra cycle on page cross', function () { - initMemory([[0x03, 0x32, [0x44]]]); - testCode([0xBD, 0x33, 0x02], 1, { - x: 0xff - }, { - cycles: 5, - a: 0x44 - }); - }); - - // ********** abs, y - it('should LDX abs,y', function () { - initMemory([[0x03, 0x36, [0x44]]]); - testCode([0xBE, 0x33, 0x03], 1, { - y: 3 - }, { - cycles: 4, - x: 0x44 - }); - }); - - it('should LDX abs,y with extra cycle on page cross', function () { - initMemory([[0x03, 0x32, [0x44]]]); - testCode([0xBE, 0x33, 0x02], 1, { - y: 0xff - }, { - cycles: 5, - x: 0x44 - }); - }); - }); - - describe('#write memory', function() { - // ********** zp - it('should STY zp', function () { - testCode([0x84, 0x33], 1, { - y: 0x44 - }, { - cycles: 3 - }); - expectMemory([[0x00, 0x33, [0x44]]]); - }); - - it('should STA zp', function () { - testCode([0x85, 0x33], 1, { - a: 0x44 - }, { - cycles: 3 - }); - expectMemory([[0x00, 0x33, [0x44]]]); - }); - - it('should STX zp', function () { - testCode([0x86, 0x33], 1, { - x: 0x44 - }, { - cycles: 3 - }); - expectMemory([[0x00, 0x33, [0x44]]]); - }); - - // ********** zp,x - it('should STY zp,x', function () { - testCode([0x94, 0x33], 1, { - x: 3, - y: 0x44 - }, { - cycles: 4 - }); - expectMemory([[0x00, 0x36, [0x44]]]); - }); - - it('should STA zp,x', function () { - testCode([0x95, 0x33], 1, { - a: 0x44, - x: 3 - }, { - cycles: 4 - }); - expectMemory([[0x00, 0x36, [0x44]]]); - }); - - // ********** zp,y - it('should STX zp,y', function () { - testCode([0x96, 0x33], 1, { - x: 0x44, - y: 3 - }, { - cycles: 4 - }); - expectMemory([[0x00, 0x36, [0x44]]]); - }); - - // ********** (zp,x) - it('should STA (zp,x)', function () { - initMemory([[0x00, 0x36, [0x33, 0x03]]]); - testCode([0x81, 0x33], 1, { - a: 0x44, - x: 3 - }, { - cycles: 6 - }); - expectMemory([[0x03, 0x33, [0x44]]]); - }); - - // ********** (zp),y - it('should STA (zp),y', function () { - initMemory([[0x00, 0x33, [0x33, 0x03]]]); - testCode([0x91, 0x33], 1, { - a: 0x44, - y: 3 - }, { - cycles: 6 - }); - expectMemory([[0x03, 0x36, [0x44]]]); - }); - - // ********** abs - it('should STY abs', function () { - testCode([0x8C, 0x33, 0x03], 1, { - y: 0x44 - }, { - cycles: 4 - }); - expectMemory([[0x03, 0x33, [0x44]]]); - }); - - it('should STA abs', function () { - testCode([0x8D, 0x33, 0x03], 1, { - a: 0x44 - }, { - cycles: 4 - }); - expectMemory([[0x03, 0x33, [0x44]]]); - }); - - it('should STX abs', function () { - testCode([0x8E, 0x33, 0x03], 1, { - x: 0x44 - }, { - cycles: 4 - }); - expectMemory([[0x03, 0x33, [0x44]]]); - }); - - // ********** abs, x - it('should STA abs,x', function () { - testCode([0x9D, 0x33, 0x03], 1, { - a: 0x44, - x: 0x03 - }, { - cycles: 5 - }); - expectMemory([[0x03, 0x36, [0x44]]]); - }); - - it('should STA abs,x with no extra cycle on page cross', function () { - testCode([0x9D, 0x33, 0x02], 1, { - a: 0x44, - x: 0xff - }, { - cycles: 5, - pc: 0x0403 - }); - expectMemory([[0x03, 0x32, [0x44]]]); - }); - - // ********** abs, y - it('should STA abs,y', function () { - testCode([0x99, 0x33, 0x03], 1, { - a: 0x44, - y: 0x03 - }, { - cycles: 5 - }); - expectMemory([[0x03, 0x36, [0x44]]]); - }); - - it('should STA abs,y with no extra cycle on page cross', function () { - testCode([0x99, 0x33, 0x02], 1, { - a: 0x44, - y: 0xff - }, { - cycles: 5 - }); - expectMemory([[0x03, 0x32, [0x44]]]); - }); - }); - - describe('#bit operations', function() { - // ********** ASL - it('should ASL A', function () { - testCode([0x0A], 1, { - a: 0x55 - }, { - cycles: 2, - a: 0xAA, - s: FLAGS.DEFAULT | FLAGS.N - }); - }); - - it('should ASL A with carry out', function () { - testCode([0x0A], 1, { - a: 0xAA - }, { - cycles: 2, - a: 0x54, - s: FLAGS.DEFAULT | FLAGS.C - }); - }); - - it('should ASL abs', function () { - initMemory([[0x03, 0x33, [0x55]]]); - testCode([0x0E, 0x33, 0x03], 1, { - }, { - cycles: 6, - s: FLAGS.DEFAULT | FLAGS.N - }); - expectMemory([[0x03, 0x33, [0xAA]]]); - }); - - it('should ASL abs with carry out', function () { - initMemory([[0x03, 0x33, [0xAA]]]); - testCode([0x0E, 0x33, 0x03], 1, { - }, { - cycles: 6, - s: FLAGS.DEFAULT | FLAGS.C - }); - expectMemory([[0x03, 0x33, [0x54]]]); - }); - - // ********** ROL - it('should ROL A', function () { - testCode([0x2A], 1, { - a: 0x55 - }, { - cycles: 2, - a: 0xAA, - s: FLAGS.DEFAULT | FLAGS.N - }); - }); - - it('should ROL A with carry out', function () { - testCode([0x2A], 1, { - a: 0xAA - }, { - cycles: 2, - a: 0x54, - s: FLAGS.DEFAULT | FLAGS.C - }); - }); - - it('should ROL A with carry in', function () { - testCode([0x2A], 1, { - s: FLAGS.DEFAULT | FLAGS.C, - a: 0xAA - }, { - cycles: 2, - a: 0x55, - s: FLAGS.DEFAULT | FLAGS.C - }); - }); - - it('should ROL abs', function () { - initMemory([[0x03, 0x33, [0x55]]]); - testCode([0x2E, 0x33, 0x03], 1, { - }, { - cycles: 6, - s: FLAGS.DEFAULT | FLAGS.N - }); - expectMemory([[0x03, 0x33, [0xAA]]]); - }); - - it('should ROL abs with carry out', function () { - initMemory([[0x03, 0x33, [0xAA]]]); - testCode([0x2E, 0x33, 0x03], 1, { - }, { - cycles: 6, - s: FLAGS.DEFAULT | FLAGS.C - }); - expectMemory([[0x03, 0x33, [0x54]]]); - }); - - it('should ROL abs with carry in', function () { - initMemory([[0x03, 0x33, [0xAA]]]); - testCode([0x2E, 0x33, 0x03], 1, { - s: FLAGS.DEFAULT | FLAGS.C - }, { - cycles: 6, - s: FLAGS.DEFAULT | FLAGS.C - }); - expectMemory([[0x03, 0x33, [0x55]]]); - }); - - // ********** LSR - it('should LSR A', function () { - testCode([0x4A], 1, { - a: 0xAA - }, { - cycles: 2, - a: 0x55 - }); - }); - - it('should LSR A with carry out', function () { - testCode([0x4A], 1, { - a: 0x55 - }, { - cycles: 2, - a: 0x2A, - s: FLAGS.DEFAULT | FLAGS.C - }); - }); - - it('should LSR abs', function () { - initMemory([[0x03, 0x33, [0xAA]]]); - testCode([0x4E, 0x33, 0x03], 1, { - }, { - cycles: 6 - }); - expectMemory([[0x03, 0x33, [0x55]]]); - }); - - it('should LSR abs with carry out', function () { - initMemory([[0x03, 0x33, [0x55]]]); - testCode([0x4E, 0x33, 0x03], 1, { - }, { - cycles: 6, - s: FLAGS.DEFAULT | FLAGS.C - }); - expectMemory([[0x03, 0x33, [0x2A]]]); - }); - - // ********** ROR - it('should ROR A', function () { - testCode([0x6A], 1, { - a: 0xAA - }, { - cycles: 2, - a: 0x55 - }); - }); - - it('should ROR A with carry out', function () { - testCode([0x6A], 1, { - a: 0x55 - }, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.C, - a: 0x2A - }); - }); - - it('should ROR A with carry in', function () { - testCode([0x6A], 1, { - s: FLAGS.DEFAULT | FLAGS.C, - a: 0x55 - }, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.C | FLAGS.N, - a: 0xAA - }); - }); - - it('should ROR abs', function () { - initMemory([[0x03, 0x33, [0xAA]]]); - testCode([0x6E, 0x33, 0x03], 1, { - }, { - cycles: 6 - }); - expectMemory([[0x03, 0x33, [0x55]]]); - }); - - it('should ROR abs with carry out', function () { - initMemory([[0x03, 0x33, [0x55]]]); - testCode([0x6E, 0x33, 0x03], 1, { - }, { - cycles: 6, - s: FLAGS.DEFAULT | FLAGS.C - }); - expectMemory([[0x03, 0x33, [0x2A]]]); - }); - - it('should ROR abs with carry in', function () { - initMemory([[0x03, 0x33, [0x55]]]); - testCode([0x6E, 0x33, 0x03], 1, { - s: FLAGS.DEFAULT | FLAGS.C - }, { - cycles: 6, - s: FLAGS.DEFAULT | FLAGS.C | FLAGS.N - }); - expectMemory([[0x03, 0x33, [0xAA]]]); - }); - - it('should AND', function() { - initMemory([[0x03, 0x33, [0x55]]]); - testCode([0x2D, 0x33, 0x03], 1, { - a: 0xA5 - }, { - cycles: 4, - a: 0x05 - }); - }); - - it('should ORA', function() { - initMemory([[0x03, 0x33, [0x55]]]); - testCode([0x0D, 0x33, 0x03], 1, { - a: 0xA0 - }, { - cycles: 4, - s: FLAGS.DEFAULT | FLAGS.N, - a: 0xF5 - }); - }); - - it('should EOR', function() { - initMemory([[0x03, 0x33, [0x55]]]); - testCode([0x4D, 0x33, 0x03], 1, { - a: 0xA5 - }, { - cycles: 4, - s: FLAGS.DEFAULT | FLAGS.N, - a: 0xF0 - }); - }); - - it('should BIT zp', function() { - initMemory([[0x00, 0x33, [0x55]]]); - testCode([0x24, 0x33], 1, { - a: 0x55 - }, { - cycles: 3, - s: FLAGS.DEFAULT | FLAGS.V - }); - }); - - it('should BIT abs', function() { - initMemory([[0x03, 0x33, [0xAA]]]); - testCode([0x2C, 0x33, 0x03], 1, { - }, { - cycles: 4, - s: FLAGS.DEFAULT | FLAGS.N | FLAGS.Z - }); - }); - }); - - describe('#math', function() { - // ********** ADC - it('should ADC', function () { - testCode([0x69, 0x55], 1, { - a: 0x23 - }, { - cycles: 2, - a: 0x78, - s: FLAGS.DEFAULT - }); - }); - - it('should ADC with carry in', function () { - testCode([0x69, 0x55], 1, { - a: 0x23, - s: FLAGS.DEFAULT | FLAGS.C - }, { - cycles: 2, - a: 0x79, - s: FLAGS.DEFAULT - }); - }); - - it('should ADC with overflow out', function () { - testCode([0x69, 0x55], 1, { - a: 0x2B - }, { - cycles: 2, - a: 0x80, - s: FLAGS.DEFAULT | FLAGS.N | FLAGS.V - }); - }); - - it('should ADC with carry out', function () { - testCode([0x69, 0x55], 1, { - a: 0xBB - }, { - cycles: 2, - a: 0x10, - s: FLAGS.DEFAULT | FLAGS.C - }); - }); - - // ********** ADC BCD - it('should ADC BCD', function () { - testCode([0x69, 0x16], 1, { - s: FLAGS.DEFAULT | FLAGS.D, - a: 0x25 - }, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.D | FLAGS.V, - a: 0x41 - }); - }); - - it('should ADC BCD with carry in', function () { - testCode([0x69, 0x55], 1, { - s: FLAGS.DEFAULT | FLAGS.D | FLAGS.C, - a: 0x23 - }, { - cycles: 2, - s: FLAGS.DEFAULT| FLAGS.D | FLAGS.V, - a: 0x79 - }); - }); - - it('should ADC BCD with carry out', function () { - testCode([0x69, 0x10], 1, { - s: FLAGS.DEFAULT | FLAGS.D, - a: 0x91 - }, { - cycles: 2, - a: 0x01, - s: FLAGS.DEFAULT | FLAGS.D | FLAGS.C - }); - }); - - // ********** SBC - it('should SBC', function () { - testCode([0xE9, 0x23], 1, { - s: FLAGS.DEFAULT | FLAGS.C, - a: 0x55 - }, { - cycles: 2, - a: 0x32, - s: FLAGS.DEFAULT | FLAGS.C - }); - }); - - it('should SBC with borrow in', function () { - testCode([0xE9, 0x23], 1, { - s: FLAGS.DEFAULT, - a: 0x55 - }, { - cycles: 2, - a: 0x31, - s: FLAGS.DEFAULT | FLAGS.C - }); - }); - - it('should SBC with borrow out', function () { - testCode([0xE9, 0x55], 1, { - s: FLAGS.DEFAULT | FLAGS.C, - a: 0x23 - }, { - cycles: 2, - a: 0xCE, - s: FLAGS.DEFAULT | FLAGS.N - }); - }); - - it('should SBC with overflow out', function () { - testCode([0xE9, 0x7F], 1, { - s: FLAGS.DEFAULT | FLAGS.C, - a: 0xAF - }, { - cycles: 2, - a: 0x30, - s: FLAGS.DEFAULT | FLAGS.V | FLAGS.C - }); - }); - - // ********** SBC BCD - it('should SBC BCD', function () { - testCode([0xE9, 0x23], 1, { - s: FLAGS.DEFAULT | FLAGS.D | FLAGS.C, - a: 0x55 - }, { - cycles: 2, - a: 0x32, - s: FLAGS.DEFAULT | FLAGS.D | FLAGS.C - }); - }); - - it('should SBC BCD with borrow in', function () { - testCode([0xE9, 0x23], 1, { - s: FLAGS.DEFAULT | FLAGS.D, - a: 0x55 - }, { - cycles: 2, - a: 0x31, - s: FLAGS.DEFAULT | FLAGS.D | FLAGS.C - }); - }); - - it('should SBC BCD with borrow out', function () { - testCode([0xE9, 0x55], 1, { - s: FLAGS.DEFAULT | FLAGS.D | FLAGS.C, - a: 0x23 - }, { - cycles: 2, - a: 0x68, - s: FLAGS.DEFAULT | FLAGS.D - }); - }); - - // ********** INC - it('should INC zp', function() { - initMemory([[0x00, 0x33, [0x44]]]); - testCode([0xE6, 0x33], 1, { - }, { - cycles: 5 - }); - expectMemory([[0x00, 0x33, [0x45]]]); - }); - - it('should INC zp,x', function() { - initMemory([[0x00, 0x043, [0x44]]]); - testCode([0xF6, 0x33], 1, { - x: 0x10 - }, { - cycles: 6 - }); - expectMemory([[0x00, 0x43, [0x45]]]); - }); - - it('should INC abs', function() { - initMemory([[0x03, 0x33, [0x44]]]); - testCode([0xEE, 0x33, 0x03], 1, { - }, { - cycles: 6 - }); - expectMemory([[0x03, 0x33, [0x45]]]); - }); - - it('should INC abs,x', function() { - initMemory([[0x03, 0x043, [0x44]]]); - testCode([0xFE, 0x33, 0x03], 1, { - x: 0x10 - }, { - cycles: 7 - }); - expectMemory([[0x03, 0x43, [0x45]]]); - }); - - // ********** DEC - it('should DEC zp', function() { - initMemory([[0x00, 0x33, [0x44]]]); - testCode([0xC6, 0x33], 1, { - }, { - cycles: 5 - }); - expectMemory([[0x00, 0x33, [0x43]]]); - }); - - it('should DEC zp,x', function() { - initMemory([[0x00, 0x043, [0x44]]]); - testCode([0xD6, 0x33], 1, { - x: 0x10 - }, { - cycles: 6 - }); - expectMemory([[0x00, 0x43, [0x43]]]); - }); - - it('should DEC abs', function() { - initMemory([[0x03, 0x33, [0x44]]]); - testCode([0xCE, 0x33, 0x03], 1, { - }, { - cycles: 6 - }); - expectMemory([[0x03, 0x33, [0x43]]]); - }); - - it('should DEC abs,x', function() { - initMemory([[0x03, 0x043, [0x44]]]); - testCode([0xDE, 0x33, 0x03], 1, { - x: 0x10 - }, { - cycles: 7 - }); - expectMemory([[0x03, 0x43, [0x43]]]); - }); - }); - - describe('#comparison', function() { - // ********** CMP - it('should CMP less than', function() { - testCode([0xc9, 0x44], 1, { - a: 0x33 - }, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.N - }); - }); - - it('should CMP equal', function() { - testCode([0xc9, 0x44], 1, { - a: 0x44 - }, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.Z | FLAGS.C - }); - }); - - it('should CMP greater than', function() { - testCode([0xc9, 0x44], 1, { - a: 0x55 - }, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.C - }); - }); - - // ********** CPX - it('should CPX less than', function() { - testCode([0xE0, 0x44], 1, { - x: 0x33 - }, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.N - }); - }); - - it('should CPX equal', function() { - testCode([0xE0, 0x44], 1, { - x: 0x44 - }, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.Z | FLAGS.C - }); - }); - - it('should CPX greater than', function() { - testCode([0xE0, 0x44], 1, { - x: 0x55 - }, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.C - }); - }); - - // ********** CPY - it('should CPY less than', function() { - testCode([0xE0, 0x44], 1, { - y: 0x33 - }, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.N - }); - }); - - it('should CPY equal', function() { - testCode([0xc0, 0x44], 1, { - y: 0x44 - }, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.Z | FLAGS.C - }); - }); - - it('should CPY greater than', function() { - testCode([0xc0, 0x44], 1, { - y: 0x55 - }, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.C - }); - }); - }); - - describe('#utility', function() { - it('should list', function() { - var listing = cpu.list(0xff00); - expect(listing[0]).toEqual('FF00- 00 00 BRK #$00'); - }); - - it('should list with symbols', function() { - var listing = cpu.list(0xff00, {0x00: 'ZERO', 0xFF00: 'ENTRY'}); - expect(listing[0]).toEqual('FF00- ENTRY 00 00 BRK #ZERO'); - }); - - it('should dump page', function() { - var page = cpu.dumpPage(0xff); - expect(page).toContain('FF80: 48 45 4C 4C 4F 0D 00 00 00 00 00 00 00 00 00 00 HELLO...........'); - }); - - it('should dump registers', function() { - var regs = cpu.dumpRegisters(); - expect(regs).toEqual('0000- A=00 X=00 Y=00 P=20 S=FF --------'); - }); - }); -}); - -describe('65c02', function() { - beforeEach(function() { - cpu = new CPU6502({'65C02': true}); - memory = new Memory(4); - - cpu.addPageHandler(memory); - cpu.addPageHandler(bios); - }); - - describe('#signals', function() { - it('should clear D on IRQ', function() { - initState({ - s: FLAGS.DEFAULT | FLAGS.D - }); - - cpu.irq(); - - expectState(DEFAULT_STATE, { - cycles: 5, - s: FLAGS.DEFAULT | FLAGS.I, - sp: 0xfc, - pc: 0xff00 - }); - }); - - it('should clear D on NMI', function() { - initState({ - s: FLAGS.DEFAULT | FLAGS.D - }); - - cpu.nmi(); - - expectState(DEFAULT_STATE, { - cycles: 5, - s: FLAGS.DEFAULT | FLAGS.I, - sp: 0xfc, - pc: 0xff00 - }); - }); - - it('should clear D on BRK', function () { - testCode([0x00, 0x00], 1, { - s: FLAGS.DEFAULT | FLAGS.D - }, { - cycles: 7, - s: FLAGS.DEFAULT | FLAGS.I, - sp: 0xfc, - pc: 0xff00 - }); - }); - }); - - describe('#stack', function() { - it('should PHX', function() { - testCode([0xDA], 1, { - x: 0x44 - }, { - cycles: 3, - sp: 0xfe - }); - expectStack([0x44]); - }); - - it('should PLX', function() { - initMemory([[0x01, 0xff, [0x44]]]); - testCode([0xFA], 1, { - sp: 0xfe - }, { - cycles: 4, - x: 0x44, - sp: 0xff - }); - }); - - it('should PHY', function() { - testCode([0x5A], 1, { - y: 0x44 - }, { - cycles: 3, - sp: 0xfe - }); - expectStack([0x44]); - }); - - it('should PLY', function() { - initMemory([[0x01, 0xff, [0x44]]]); - testCode([0x7A], 1, { - sp: 0xfe - }, { - cycles: 4, - y: 0x44, - sp: 0xff - }); - }); - - }); - - describe('#jumps', function() { - it('should JMP (abs)', function () { - initMemory([[0x03, 0x33, [0x34, 0x12]]]); - testCode([0x6C, 0x33, 0x03], 1, {}, { - cycles: 6, - pc: 0x1234 - }); - }); - - it('should JMP (abs) across page boundries without bugs', function () { - initMemory([[0x02, 0xFF, [0x34, 0x12]], - [0x02, 0x00, [0xff]]]); - testCode([0x6C, 0xFF, 0x02], 1, {}, { - cycles: 6, - pc: 0x1234 - }); - }); - - it('should JMP (abs, x)', function () { - initMemory([[0x03, 0x43, [0x34, 0x12]]]); - testCode([0x7C, 0x33, 0x03], 1, { - x: 0x10 - }, { - cycles: 6, - pc: 0x1234 - }); - }); - }); - - describe('#other addressing mode fixes', function () { - it('should INC abs,x', function() { - initMemory([[0x03, 0x043, [0x44]]]); - testCode([0xFE, 0x33, 0x03], 1, { - x: 0x10 - }, { - cycles: 7 - }); - expectMemory([[0x03, 0x43, [0x45]]]); - }); - }); - - describe('#branches', function() { - it('should BRA forward', function () { - testCode([0x80, 0x7F], 1, {}, { - cycles: 3, - pc: 0x0481 - }); - }); - - it('should BRA backward', function () { - testCode([0x80, 0xFF], 1, {}, { - cycles: 3, - pc: 0x0401 - }); - }); - }); - - describe('#read memory', function() { - // ********** (zp) - it('should LDA (zp)', function () { - initMemory([[0x00, 0x33, [0x33,0x03]], - [0x03, 0x33, [0x44]]]); - testCode([0xB2, 0x33], 1, {}, { - cycles: 5, - a: 0x44 - }); - }); - }); - - describe('#write memory', function() { - // ********** (zp) - it('should STA (zp)', function () { - initMemory([[0x00, 0x33, [0x33, 0x03]]]); - testCode([0x92, 0x33], 1, { - a: 0x44 - }, { - cycles: 5 - }); - expectMemory([[0x03, 0x33, [0x44]]]); - }); - - it('should STZ abs', function () { - initMemory([[0x03, 0x33, [0x44]]]); - testCode([0x9C, 0x33, 0x03], 1, { - a: 0x44 - }, { - cycles: 4 - }); - expectMemory([[0x03, 0x33, [0x00]]]); - }); - }); - - describe('#logical operators', function() { - it('should BIT imm and effect other flags', function() { - testCode([0x89, 0x33], 1, { - s: FLAGS.DEFAULT | FLAGS.N, - a: 0x44 - }, { - cycles: 2, - s: FLAGS.DEFAULT | FLAGS.Z | FLAGS.N - }); - }); - - it('should BIT imm', function() { - testCode([0x89, 0x33], 1, { - a: 0x03 - }, { - cycles: 2, - s: FLAGS.DEFAULT - }); - }); - - // ******** TRB - it('should TRB zp', function() { - initMemory([[0x00, 0x33, [0x55]]]); - testCode([0x14, 0x33], 1, { - a: 0xA5 - }, { - cycles: 5 - }); - expectMemory([[0x00, 0x33, [0x50]]]); - }); - - it('should TRB abs', function() { - initMemory([[0x03, 0x33, [0x55]]]); - testCode([0x1C, 0x33, 0x03], 1, { - a: 0xAA - }, { - cycles: 6, - s: FLAGS.DEFAULT | FLAGS.Z - }); - expectMemory([[0x00, 0x33, [0x00]]]); - }); - - // ******** TSB - it('should TSB zp', function() { - initMemory([[0x00, 0x33, [0x55]]]); - testCode([0x04, 0x33], 1, { - a: 0xA5 - }, { - cycles: 5 - }); - expectMemory([[0x00, 0x33, [0xF5]]]); - }); - - it('should TSB abs', function() { - initMemory([[0x03, 0x33, [0x55]]]); - testCode([0x0C, 0x33, 0x03], 1, { - a: 0xAA - }, { - cycles: 6, - s: FLAGS.DEFAULT | FLAGS.Z - }); - expectMemory([[0x03, 0x33, [0xFF]]]); - }); - }); - - describe('Branch bit set/reset', function () { - // ******** BBR - it('BBR0 should branch if bit 0 clear', function() { - initMemory([[0x00, 0x33, [0xFE]]]); - testCode([0x0F, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBR0 should branch backward', function () { - initMemory([[0x00, 0x33, [0xFE]]]); - testCode([0x0F, 0x33, 0xFF], 1, {}, { - cycles: 6, - pc: 0x0402 - }); - }); - - it('BBR1 should branch if bit 1 clear', function() { - initMemory([[0x00, 0x33, [0xFD]]]); - testCode([0x1F, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBR2 should branch if bit 2 clear', function() { - initMemory([[0x00, 0x33, [0xFB]]]); - testCode([0x2F, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBR3 should branch if bit 3 clear', function() { - initMemory([[0x00, 0x33, [0xF7]]]); - testCode([0x3F, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBR4 should branch if bit 4 clear', function() { - initMemory([[0x00, 0x33, [0xEF]]]); - testCode([0x4F, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBR5 should branch if bit 5 clear', function() { - initMemory([[0x00, 0x33, [0xDF]]]); - testCode([0x5F, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBR6 should branch if bit 6 clear', function() { - initMemory([[0x00, 0x33, [0xBF]]]); - testCode([0x6F, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBR7 should branch if bit 7 clear', function() { - initMemory([[0x00, 0x33, [0x7F]]]); - testCode([0x7F, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBR0 should not branch if bit 0 set', function() { - initMemory([[0x00, 0x33, [0x01]]]); - testCode([0x0F, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBR1 should not branch if bit 1 set', function() { - initMemory([[0x00, 0x33, [0x02]]]); - testCode([0x1F, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBR2 should not branch if bit 2 set', function() { - initMemory([[0x00, 0x33, [0x04]]]); - testCode([0x2F, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBR3 should not branch if bit 3 set', function() { - initMemory([[0x00, 0x33, [0x08]]]); - testCode([0x3F, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBR4 should not branch if bit 4 set', function() { - initMemory([[0x00, 0x33, [0x10]]]); - testCode([0x4F, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBR5 should not branch if bit 5 set', function() { - initMemory([[0x00, 0x33, [0x20]]]); - testCode([0x5F, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBR6 should not branch if bit 6 set', function() { - initMemory([[0x00, 0x33, [0x40]]]); - testCode([0x6F, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBR7 should not branch if bit 7 set', function() { - initMemory([[0x00, 0x33, [0x80]]]); - testCode([0x7F, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - // ******** BBS - it('BBS0 should branch if bit 0 set', function() { - initMemory([[0x00, 0x33, [0x01]]]); - testCode([0x8F, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBS0 should branch backward', function () { - initMemory([[0x00, 0x33, [0x01]]]); - testCode([0x8F, 0x33, 0xFF], 1, {}, { - cycles: 6, - pc: 0x0402 - }); - }); - - it('BBS1 should branch if bit 1 set', function() { - initMemory([[0x00, 0x33, [0x02]]]); - testCode([0x9F, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBS2 should branch if bit 2 set', function() { - initMemory([[0x00, 0x33, [0x04]]]); - testCode([0xAF, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBS3 should branch if bit 3 set', function() { - initMemory([[0x00, 0x33, [0x08]]]); - testCode([0xBF, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBS4 should branch if bit 4 set', function() { - initMemory([[0x00, 0x33, [0x10]]]); - testCode([0xCF, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBS5 should branch if bit 5 set', function() { - initMemory([[0x00, 0x33, [0x20]]]); - testCode([0xDF, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBS6 should branch if bit 6 set', function() { - initMemory([[0x00, 0x33, [0x40]]]); - testCode([0xEF, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBS7 should branch if bit 7 set', function() { - initMemory([[0x00, 0x33, [0x80]]]); - testCode([0xFF, 0x33, 0x7F], 1, {}, { - cycles: 6, - pc: 0x0482 - }); - }); - - it('BBS0 should not branch if bit 0 clear', function() { - initMemory([[0x00, 0x33, [0xFE]]]); - testCode([0x8F, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBS1 should not branch if bit 1 clear', function() { - initMemory([[0x00, 0x33, [0xFD]]]); - testCode([0x9F, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBS2 should not branch if bit 2 clear', function() { - initMemory([[0x00, 0x33, [0xFB]]]); - testCode([0xAF, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBS3 should not branch if bit 3 clear', function() { - initMemory([[0x00, 0x33, [0xF7]]]); - testCode([0xBF, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBS4 should not branch if bit 4 clear', function() { - initMemory([[0x00, 0x33, [0xEF]]]); - testCode([0xCF, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBS5 should not branch if bit 5 clear', function() { - initMemory([[0x00, 0x33, [0xDF]]]); - testCode([0xDF, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBS6 should not branch if bit 6 clear', function() { - initMemory([[0x00, 0x33, [0xBF]]]); - testCode([0xEF, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - - it('BBS7 should not branch if bit 7 clear', function() { - initMemory([[0x00, 0x33, [0x7B]]]); - testCode([0xFF, 0x33, 0x7F], 1, {}, { - cycles: 5, - pc: 0x0403 - }); - }); - }); - - describe('Bit set/reset', function () { - it('RMB0 should reset bit 0', function() { - initMemory([[0x00, 0x33, [0xFF]]]); - testCode([0x07, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0xFE]]]); - }); - - it('RMB1 should reset bit 1', function() { - initMemory([[0x00, 0x33, [0xFF]]]); - testCode([0x17, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0xFD]]]); - }); - - it('RMB2 should reset bit 2', function() { - initMemory([[0x00, 0x33, [0xFF]]]); - testCode([0x27, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0xFB]]]); - }); - - it('RMB3 should reset bit 3', function() { - initMemory([[0x00, 0x33, [0xFF]]]); - testCode([0x37, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0xF7]]]); - }); - - it('RMB4 should reset bit 4', function() { - initMemory([[0x00, 0x33, [0xFF]]]); - testCode([0x47, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0xEF]]]); - }); - - it('RMB5 should reset bit 5', function() { - initMemory([[0x00, 0x33, [0xFF]]]); - testCode([0x57, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0xDF]]]); - }); - - it('RMB6 should reset bit 6', function() { - initMemory([[0x00, 0x33, [0xFF]]]); - testCode([0x67, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0xBF]]]); - }); - - it('RMB7 should reset bit 7', function() { - initMemory([[0x00, 0x33, [0xFF]]]); - testCode([0x77, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0x7F]]]); - }); - - it('SMB0 should set bit 0', function() { - initMemory([[0x00, 0x33, [0x00]]]); - testCode([0x87, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0x01]]]); - }); - - it('SMB1 should set bit 1', function() { - initMemory([[0x00, 0x33, [0x00]]]); - testCode([0x97, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0x02]]]); - }); - - it('SMB2 should set bit 2', function() { - initMemory([[0x00, 0x33, [0x00]]]); - testCode([0xA7, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0x04]]]); - }); - - it('SMB3 should set bit 3', function() { - initMemory([[0x00, 0x33, [0x00]]]); - testCode([0xB7, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0x08]]]); - }); - - it('SMB4 should set bit 4', function() { - initMemory([[0x00, 0x33, [0x00]]]); - testCode([0xC7, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0x10]]]); - }); - - it('SMB5 should set bit 5', function() { - initMemory([[0x00, 0x33, [0x00]]]); - testCode([0xD7, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0x20]]]); - }); - - it('SMB6 should set bit 6', function() { - initMemory([[0x00, 0x33, [0x00]]]); - testCode([0xE7, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0x40]]]); - }); - - it('SMB7 should set bit 7', function() { - initMemory([[0x00, 0x33, [0x00]]]); - testCode([0xF7, 0x33], 1, {}, { - cycles: 5, - pc: 0x0402 - }); - expectMemory([[0x00, 0x33, [0x80]]]); - }); - }); - - describe('#math', function() { - // INC A - it('should INC A', function() { - testCode([0x1A], 1, { - a: 0x44 - },{ - cycles: 2, - a: 0x45 - }); - }); - - // DEC A - it('should DEC A', function() { - testCode([0x3A], 1, { - a: 0x44 - },{ - cycles: 2, - a: 0x43 - }); - }); - }); -}); diff --git a/test/cpu6502.spec.ts b/test/cpu6502.spec.ts new file mode 100644 index 0000000..5dd0046 --- /dev/null +++ b/test/cpu6502.spec.ts @@ -0,0 +1,3254 @@ +import CPU6502, { CpuState, FLAVOR_ROCKWELL_65C02, flags } from '../js/cpu6502'; +import { TestMemory } from './util/memory'; +import { bios, Program } from './util/bios'; +import { toReadableState } from './util/cpu'; + +const DEFAULT_STATE: CpuState = { + cycles: 0, + s: flags.X, + sp: 0xff, + a: 0x00, + x: 0x00, + y: 0x00, + pc: 0x0400, +}; + +let memory; +let cpu: CPU6502; +let program; + +function initState(initialState: Partial) { + const state = { ...DEFAULT_STATE, ...initialState }; + cpu.setState(state); +} + +function expectState(initialState: CpuState, expectedState: Partial) { + const state = { ...initialState, ...expectedState }; + expect(toReadableState(cpu.getState())).toEqual(toReadableState(state)); +} + +function initMemory(memAry: [page: number, off: number, data: number[]][]) { + for (let idx = 0; idx < memAry.length; idx++) { + const mem = memAry[idx]; + let page = mem[0]; + let off = mem[1]; + const data = mem[2]; + for (let jdx = 0; jdx < data.length; jdx++) { + cpu.write(page, off++, data[jdx]); + if (off > 0xff) { + page++; + off = 0; + } + } + } +} + +function expectMemory( + expectAry: [page: number, off: number, data: number[]][] +) { + const memAry = []; + for (let idx = 0; idx < expectAry.length; idx++) { + const mem = expectAry[idx]; + let page = mem[0]; + let off = mem[1]; + const expectData = mem[2]; + const data = []; + for (let jdx = 0; jdx < expectData.length; jdx++) { + data.push(cpu.read(page, off++)); + if (off > 0xff) { + page++; + off = 0; + } + } + memAry.push([mem[0], mem[1], data]); + } + expect(memAry).toEqual(expectAry); +} + +function expectStack(expectAry: number[]) { + const state = cpu.getState(); + expectMemory([[0x01, state.sp + 1, expectAry]]); +} + +function testCode( + code: number[], + steps: number, + setupState: Partial, + expectedState: Partial +) { + const initialState = { ...DEFAULT_STATE, ...setupState }; + const finalState = { pc: initialState.pc + code.length, ...expectedState }; + + program = new Program(0x04, code); + cpu.addPageHandler(program); + + cpu.setState(initialState); + cpu.stepN(steps); + expectState(initialState, finalState); +} + +describe('CPU6502', function () { + beforeEach(function () { + cpu = new CPU6502(); + memory = new TestMemory(4); + + cpu.addPageHandler(memory); + cpu.addPageHandler(bios); + }); + + describe('#step functions', function () { + const code = [0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea]; + const initialState = { ...DEFAULT_STATE }; + + it('step', function () { + cpu.setState(initialState); + program = new Program(0x04, code); + cpu.addPageHandler(program); + cpu.step(); + expect(cpu.getState()).toEqual({ + ...DEFAULT_STATE, + pc: 0x401, + cycles: 2, + }); + expect(cpu.getCycles()).toEqual(2); + }); + + it('step with callback', function () { + const callback = jest.fn(); + cpu.setState(initialState); + program = new Program(0x04, code); + cpu.addPageHandler(program); + cpu.step(callback); + expect(cpu.getState()).toEqual({ + ...DEFAULT_STATE, + pc: 0x401, + cycles: 2, + }); + expect(cpu.getCycles()).toEqual(2); + expect(callback).toHaveBeenCalledTimes(1); + }); + + it('stepN', function () { + cpu.setState(initialState); + program = new Program(0x04, code); + cpu.addPageHandler(program); + cpu.stepN(4); + expect(cpu.getState()).toEqual({ + ...DEFAULT_STATE, + pc: 0x404, + cycles: 8, + }); + expect(cpu.getCycles()).toEqual(8); + }); + + it('stepN with callback', function () { + const callback = jest.fn(); + cpu.setState(initialState); + program = new Program(0x04, code); + cpu.addPageHandler(program); + cpu.stepN(4, callback); + expect(cpu.getState()).toEqual({ + ...DEFAULT_STATE, + pc: 0x404, + cycles: 8, + }); + expect(cpu.getCycles()).toEqual(8); + expect(callback).toHaveBeenCalledTimes(4); + }); + + it('stepN with breakpoint', function () { + const callback = jest.fn().mockReturnValue(true); + cpu.setState(initialState); + program = new Program(0x04, code); + cpu.addPageHandler(program); + cpu.stepN(4, callback); + expect(cpu.getState()).toEqual({ + ...DEFAULT_STATE, + pc: 0x401, + cycles: 2, + }); + expect(cpu.getCycles()).toEqual(2); + expect(callback).toHaveBeenCalledTimes(1); + }); + + it('stepCycles', function () { + cpu.setState(initialState); + program = new Program(0x04, code); + cpu.addPageHandler(program); + cpu.stepCycles(4); + expect(cpu.getState()).toEqual({ + ...DEFAULT_STATE, + pc: 0x402, + cycles: 4, + }); + expect(cpu.getCycles()).toEqual(4); + }); + + it('stepCyclesDebug', function () { + cpu.setState(initialState); + program = new Program(0x04, code); + cpu.addPageHandler(program); + cpu.stepCyclesDebug(4); + expect(cpu.getState()).toEqual({ + ...DEFAULT_STATE, + pc: 0x402, + cycles: 4, + }); + expect(cpu.getCycles()).toEqual(4); + }); + + it('stepCyclesDebug with callback', function () { + const callback = jest.fn(); + + cpu.setState(initialState); + program = new Program(0x04, code); + cpu.addPageHandler(program); + cpu.stepCyclesDebug(4, callback); + expect(cpu.getState()).toEqual({ + ...DEFAULT_STATE, + pc: 0x402, + cycles: 4, + }); + expect(cpu.getCycles()).toEqual(4); + expect(callback).toHaveBeenCalledTimes(2); + }); + + it('stepCyclesDebug with breakpoint', function () { + const callback = jest.fn().mockReturnValue(true); + + cpu.setState(initialState); + program = new Program(0x04, code); + cpu.addPageHandler(program); + cpu.stepCyclesDebug(4, callback); + expect(cpu.getState()).toEqual({ + ...DEFAULT_STATE, + pc: 0x401, + cycles: 2, + }); + expect(cpu.getCycles()).toEqual(2); + expect(callback).toHaveBeenCalledTimes(1); + }); + }); + + describe('#signals', function () { + it('should reset', function () { + cpu.reset(); + + expectState(DEFAULT_STATE, { + cycles: 2, + }); + }); + + it('should irq', function () { + cpu.irq(); + + expectState(DEFAULT_STATE, { + cycles: 5, + s: flags.X | flags.I, + sp: 0xfc, + pc: 0xff00, + }); + }); + + it('should not irq if I set', function () { + initState({ + s: flags.X | flags.I, + }); + + cpu.irq(); + + expectState(DEFAULT_STATE, { + s: flags.X | flags.I, + pc: 0x400, + }); + }); + + it('should nmi', function () { + cpu.nmi(); + + expectState(DEFAULT_STATE, { + cycles: 5, + s: flags.X | flags.I, + sp: 0xfc, + pc: 0xff00, + }); + }); + }); + + describe('#misc', function () { + it('should NOP', function () { + testCode( + [0xea], + 1, + {}, + { + cycles: 2, + } + ); + }); + + it('should BRK', function () { + testCode( + [0x00, 0x00], + 1, + {}, + { + cycles: 7, + s: flags.X | flags.I, + sp: 0xfc, + pc: 0xff00, + } + ); + }); + + it('should RTI', function () { + initMemory([[0x01, 0xfd, [0xa0, 0x34, 0x12]]]); + testCode( + [0x40], + 1, + { + sp: 0xfc, + }, + { + cycles: 6, + s: flags.X | flags.N, + sp: 0xff, + pc: 0x1234, + } + ); + }); + }); + + describe('#registers', function () { + it('should LDA immediate', function () { + testCode( + [0xa9, 0x44], + 1, + {}, + { + cycles: 2, + a: 0x44, + } + ); + }); + + it('should TAX', function () { + testCode( + [0xaa], + 1, + { + a: 0x44, + }, + { + cycles: 2, + x: 0x44, + } + ); + }); + + it('should TAY', function () { + testCode( + [0xa8], + 1, + { + a: 0x44, + }, + { + cycles: 2, + y: 0x44, + } + ); + }); + + it('should LDX immediate', function () { + testCode( + [0xa2, 0x44], + 1, + {}, + { + cycles: 2, + x: 0x44, + } + ); + }); + + it('should TXA', function () { + testCode( + [0x8a], + 1, + { + x: 0x44, + }, + { + cycles: 2, + a: 0x44, + } + ); + }); + + it('should DEX', function () { + testCode( + [0xca], + 1, + { + x: 0x44, + }, + { + cycles: 2, + x: 0x43, + } + ); + }); + + it('should INX', function () { + testCode( + [0xe8], + 1, + { + x: 0x44, + }, + { + cycles: 2, + x: 0x45, + } + ); + }); + + it('should LDY immediate', function () { + testCode( + [0xa0, 0x44], + 1, + {}, + { + cycles: 2, + y: 0x44, + } + ); + }); + + it('should TYA', function () { + testCode( + [0x98], + 1, + { + y: 0x44, + }, + { + cycles: 2, + a: 0x44, + } + ); + }); + + it('should DEY', function () { + testCode( + [0x88], + 1, + { + y: 0x44, + }, + { + cycles: 2, + y: 0x43, + } + ); + }); + + it('should INY', function () { + testCode( + [0xc8], + 1, + { + y: 0x44, + }, + { + cycles: 2, + y: 0x45, + } + ); + }); + }); + + describe('#flags', function () { + it('should SEC', function () { + testCode( + [0x38], + 1, + {}, + { + cycles: 2, + s: flags.X | flags.C, + } + ); + }); + + it('should CLC', function () { + testCode( + [0x18], + 1, + { + s: flags.X | flags.C, + }, + { + cycles: 2, + s: flags.X, + } + ); + }); + + it('should SEI', function () { + testCode( + [0x78], + 1, + {}, + { + cycles: 2, + s: flags.X | flags.I, + } + ); + }); + + it('should CLI', function () { + testCode( + [0x58], + 1, + { + s: flags.X | flags.I, + }, + { + cycles: 2, + s: flags.X, + } + ); + }); + + it('should CLV', function () { + testCode( + [0xb8], + 1, + { + s: flags.X | flags.V, + }, + { + cycles: 2, + s: flags.X, + } + ); + }); + + it('should SED', function () { + testCode( + [0xf8], + 1, + {}, + { + cycles: 2, + s: flags.X | flags.D, + } + ); + }); + + it('should CLD', function () { + testCode( + [0xd8], + 1, + { + s: flags.X | flags.D, + }, + { + cycles: 2, + s: flags.X, + } + ); + }); + }); + + describe('#stack', function () { + it('should TXS', function () { + testCode( + [0x9a], + 1, + { + x: 0x44, + }, + { + cycles: 2, + sp: 0x44, + } + ); + }); + + it('should TSX', function () { + testCode( + [0xba], + 1, + { + sp: 0x44, + }, + { + cycles: 2, + x: 0x44, + } + ); + }); + + it('should PHA', function () { + testCode( + [0x48], + 1, + { + a: 0x44, + }, + { + cycles: 3, + sp: 0xfe, + } + ); + expectStack([0x44]); + }); + + it('should PLA', function () { + initMemory([[0x01, 0xff, [0x44]]]); + testCode( + [0x68], + 1, + { + sp: 0xfe, + }, + { + cycles: 4, + a: 0x44, + sp: 0xff, + } + ); + }); + + it('should PHP', function () { + testCode( + [0x08], + 1, + { + s: flags.X | flags.N | flags.C, + }, + { + cycles: 3, + sp: 0xfe, + } + ); + expectStack([flags.X | flags.B | flags.N | flags.C]); + }); + + it('should PLP', function () { + initMemory([[0x01, 0xff, [flags.N | flags.C]]]); + testCode( + [0x28], + 1, + { + sp: 0xfe, + }, + { + cycles: 4, + s: flags.X | flags.N | flags.C, + sp: 0xff, + } + ); + }); + }); + + describe('#jumps', function () { + it('should JMP abs', function () { + testCode( + [0x4c, 0x34, 0x12], + 1, + {}, + { + cycles: 3, + pc: 0x1234, + } + ); + }); + + it('should JMP (abs)', function () { + initMemory([[0x03, 0x33, [0x34, 0x12]]]); + testCode( + [0x6c, 0x33, 0x03], + 1, + {}, + { + cycles: 5, + pc: 0x1234, + } + ); + }); + + it('should JMP (abs) across page boundaries with bugs', function () { + initMemory([ + [0x02, 0xff, [0x34, 0x12]], + [0x02, 0x00, [0xff]], + ]); + testCode( + [0x6c, 0xff, 0x02], + 1, + {}, + { + cycles: 5, + pc: 0xff34, + } + ); + }); + + it('should JSR abs', function () { + testCode( + [0x20, 0x34, 0x12], + 1, + {}, + { + cycles: 6, + sp: 0xfd, + pc: 0x1234, + } + ); + expectStack([0x02, 0x04]); + }); + + it('should RTS', function () { + initMemory([[0x01, 0xfe, [0x34, 0x12]]]); + testCode( + [0x60], + 1, + { + sp: 0xfd, + }, + { + cycles: 6, + sp: 0xff, + pc: 0x1235, + } + ); + }); + }); + + describe('#branches', function () { + // ********** bcs + it('should BCS forward', function () { + testCode( + [0xb0, 0x7f], + 1, + { + s: flags.X | flags.C, + }, + { + cycles: 3, + pc: 0x0481, + } + ); + }); + + it('should BCS backward', function () { + testCode( + [0xb0, 0xff], + 1, + { + s: flags.X | flags.C, + }, + { + cycles: 3, + pc: 0x0401, + } + ); + }); + + it('should BCS across pages with an extra cycle', function () { + testCode( + [0xb0, 0xfd], + 1, + { + s: flags.X | flags.C, + }, + { + cycles: 4, + pc: 0x03ff, + } + ); + }); + + it('should not BCS if carry clear', function () { + testCode( + [0xb0, 0xfd], + 1, + {}, + { + cycles: 2, + pc: 0x0402, + } + ); + }); + + it('should BCC forward', function () { + testCode( + [0x90, 0x7f], + 1, + {}, + { + cycles: 3, + pc: 0x0481, + } + ); + }); + + it('should BCC backward', function () { + testCode( + [0x90, 0xff], + 1, + {}, + { + cycles: 3, + pc: 0x0401, + } + ); + }); + + it('should BCC across pages with an extra cycle', function () { + testCode( + [0x90, 0xfd], + 1, + {}, + { + cycles: 4, + pc: 0x03ff, + } + ); + }); + + it('should not BCC if carry set', function () { + testCode( + [0x90, 0xfd], + 1, + { + s: flags.X | flags.C, + }, + { + cycles: 2, + pc: 0x0402, + } + ); + }); + }); + + describe('#read memory', function () { + // ********** zp + it('should LDY zp', function () { + initMemory([[0x00, 0x33, [0x44]]]); + testCode( + [0xa4, 0x33], + 1, + {}, + { + cycles: 3, + y: 0x44, + } + ); + }); + + it('should LDA zp', function () { + initMemory([[0x00, 0x33, [0x44]]]); + testCode( + [0xa5, 0x33], + 1, + {}, + { + cycles: 3, + a: 0x44, + } + ); + }); + + it('should LDX zp', function () { + initMemory([[0x00, 0x33, [0x44]]]); + testCode( + [0xa6, 0x33], + 1, + {}, + { + cycles: 3, + x: 0x44, + } + ); + }); + + // ********** zp,x + it('should LDY zp,x', function () { + initMemory([[0x00, 0x36, [0x44]]]); + testCode( + [0xb4, 0x33], + 1, + { + x: 3, + }, + { + cycles: 4, + y: 0x44, + } + ); + }); + + it('should LDA zp,x', function () { + initMemory([[0x00, 0x36, [0x44]]]); + testCode( + [0xb5, 0x33], + 1, + { + x: 3, + }, + { + cycles: 4, + a: 0x44, + } + ); + }); + + // ********** zp,y + it('should LDX zp,y', function () { + initMemory([[0x00, 0x36, [0x44]]]); + testCode( + [0xb6, 0x33], + 1, + { + y: 3, + }, + { + cycles: 4, + x: 0x44, + } + ); + }); + + // ********** (zp,x) + it('should LDA (zp,x)', function () { + initMemory([ + [0x00, 0x36, [0x33, 0x03]], + [0x03, 0x33, [0x44]], + ]); + testCode( + [0xa1, 0x33], + 1, + { + x: 3, + }, + { + cycles: 6, + a: 0x44, + } + ); + }); + + // ********** (zp),y + it('should LDA (zp),y', function () { + initMemory([ + [0x00, 0x33, [0x33, 0x03]], + [0x03, 0x36, [0x44]], + ]); + testCode( + [0xb1, 0x33], + 1, + { + y: 3, + }, + { + cycles: 5, + a: 0x44, + } + ); + }); + + // ********** (zp),y + it('should LDA (zp),y with an extra cycle on page cross', function () { + initMemory([ + [0x00, 0x33, [0x33, 0x02]], + [0x03, 0x32, [0x44]], + ]); + testCode( + [0xb1, 0x33], + 1, + { + y: 0xff, + }, + { + cycles: 6, + a: 0x44, + } + ); + }); + + // ********** abs + it('should LDY abs', function () { + initMemory([[0x03, 0x33, [0x44]]]); + testCode( + [0xac, 0x33, 0x03], + 1, + {}, + { + cycles: 4, + y: 0x44, + } + ); + }); + + it('should LDA abs', function () { + initMemory([[0x03, 0x33, [0x44]]]); + testCode( + [0xad, 0x33, 0x03], + 1, + {}, + { + cycles: 4, + a: 0x44, + } + ); + }); + + it('should LDX abs', function () { + initMemory([[0x03, 0x33, [0x44]]]); + testCode( + [0xae, 0x33, 0x03], + 1, + {}, + { + cycles: 4, + x: 0x44, + } + ); + }); + + // ********** abs, x + it('should LDY abs,x', function () { + initMemory([[0x03, 0x36, [0x44]]]); + testCode( + [0xbc, 0x33, 0x03], + 1, + { + x: 3, + }, + { + cycles: 4, + y: 0x44, + } + ); + }); + + it('should LDA abs,x', function () { + initMemory([[0x03, 0x36, [0x44]]]); + testCode( + [0xbd, 0x33, 0x03], + 1, + { + x: 3, + }, + { + cycles: 4, + a: 0x44, + } + ); + }); + + it('should LDY abs,x with extra cycle on page cross', function () { + initMemory([[0x03, 0x32, [0x44]]]); + testCode( + [0xbc, 0x33, 0x02], + 1, + { + x: 0xff, + }, + { + cycles: 5, + y: 0x44, + } + ); + }); + + it('should LDA abs,x with extra cycle on page cross', function () { + initMemory([[0x03, 0x32, [0x44]]]); + testCode( + [0xbd, 0x33, 0x02], + 1, + { + x: 0xff, + }, + { + cycles: 5, + a: 0x44, + } + ); + }); + + // ********** abs, y + it('should LDX abs,y', function () { + initMemory([[0x03, 0x36, [0x44]]]); + testCode( + [0xbe, 0x33, 0x03], + 1, + { + y: 3, + }, + { + cycles: 4, + x: 0x44, + } + ); + }); + + it('should LDX abs,y with extra cycle on page cross', function () { + initMemory([[0x03, 0x32, [0x44]]]); + testCode( + [0xbe, 0x33, 0x02], + 1, + { + y: 0xff, + }, + { + cycles: 5, + x: 0x44, + } + ); + }); + }); + + describe('#write memory', function () { + // ********** zp + it('should STY zp', function () { + testCode( + [0x84, 0x33], + 1, + { + y: 0x44, + }, + { + cycles: 3, + } + ); + expectMemory([[0x00, 0x33, [0x44]]]); + }); + + it('should STA zp', function () { + testCode( + [0x85, 0x33], + 1, + { + a: 0x44, + }, + { + cycles: 3, + } + ); + expectMemory([[0x00, 0x33, [0x44]]]); + }); + + it('should STX zp', function () { + testCode( + [0x86, 0x33], + 1, + { + x: 0x44, + }, + { + cycles: 3, + } + ); + expectMemory([[0x00, 0x33, [0x44]]]); + }); + + // ********** zp,x + it('should STY zp,x', function () { + testCode( + [0x94, 0x33], + 1, + { + x: 3, + y: 0x44, + }, + { + cycles: 4, + } + ); + expectMemory([[0x00, 0x36, [0x44]]]); + }); + + it('should STA zp,x', function () { + testCode( + [0x95, 0x33], + 1, + { + a: 0x44, + x: 3, + }, + { + cycles: 4, + } + ); + expectMemory([[0x00, 0x36, [0x44]]]); + }); + + // ********** zp,y + it('should STX zp,y', function () { + testCode( + [0x96, 0x33], + 1, + { + x: 0x44, + y: 3, + }, + { + cycles: 4, + } + ); + expectMemory([[0x00, 0x36, [0x44]]]); + }); + + // ********** (zp,x) + it('should STA (zp,x)', function () { + initMemory([[0x00, 0x36, [0x33, 0x03]]]); + testCode( + [0x81, 0x33], + 1, + { + a: 0x44, + x: 3, + }, + { + cycles: 6, + } + ); + expectMemory([[0x03, 0x33, [0x44]]]); + }); + + // ********** (zp),y + it('should STA (zp),y', function () { + initMemory([[0x00, 0x33, [0x33, 0x03]]]); + testCode( + [0x91, 0x33], + 1, + { + a: 0x44, + y: 3, + }, + { + cycles: 6, + } + ); + expectMemory([[0x03, 0x36, [0x44]]]); + }); + + // ********** abs + it('should STY abs', function () { + testCode( + [0x8c, 0x33, 0x03], + 1, + { + y: 0x44, + }, + { + cycles: 4, + } + ); + expectMemory([[0x03, 0x33, [0x44]]]); + }); + + it('should STA abs', function () { + testCode( + [0x8d, 0x33, 0x03], + 1, + { + a: 0x44, + }, + { + cycles: 4, + } + ); + expectMemory([[0x03, 0x33, [0x44]]]); + }); + + it('should STX abs', function () { + testCode( + [0x8e, 0x33, 0x03], + 1, + { + x: 0x44, + }, + { + cycles: 4, + } + ); + expectMemory([[0x03, 0x33, [0x44]]]); + }); + + // ********** abs, x + it('should STA abs,x', function () { + testCode( + [0x9d, 0x33, 0x03], + 1, + { + a: 0x44, + x: 0x03, + }, + { + cycles: 5, + } + ); + expectMemory([[0x03, 0x36, [0x44]]]); + }); + + it('should STA abs,x with no extra cycle on page cross', function () { + testCode( + [0x9d, 0x33, 0x02], + 1, + { + a: 0x44, + x: 0xff, + }, + { + cycles: 5, + pc: 0x0403, + } + ); + expectMemory([[0x03, 0x32, [0x44]]]); + }); + + // ********** abs, y + it('should STA abs,y', function () { + testCode( + [0x99, 0x33, 0x03], + 1, + { + a: 0x44, + y: 0x03, + }, + { + cycles: 5, + } + ); + expectMemory([[0x03, 0x36, [0x44]]]); + }); + + it('should STA abs,y with no extra cycle on page cross', function () { + testCode( + [0x99, 0x33, 0x02], + 1, + { + a: 0x44, + y: 0xff, + }, + { + cycles: 5, + } + ); + expectMemory([[0x03, 0x32, [0x44]]]); + }); + }); + + describe('#bit operations', function () { + // ********** ASL + it('should ASL A', function () { + testCode( + [0x0a], + 1, + { + a: 0x55, + }, + { + cycles: 2, + a: 0xaa, + s: flags.X | flags.N, + } + ); + }); + + it('should ASL A with carry out', function () { + testCode( + [0x0a], + 1, + { + a: 0xaa, + }, + { + cycles: 2, + a: 0x54, + s: flags.X | flags.C, + } + ); + }); + + it('should ASL abs', function () { + initMemory([[0x03, 0x33, [0x55]]]); + testCode( + [0x0e, 0x33, 0x03], + 1, + {}, + { + cycles: 6, + s: flags.X | flags.N, + } + ); + expectMemory([[0x03, 0x33, [0xaa]]]); + }); + + it('should ASL abs with carry out', function () { + initMemory([[0x03, 0x33, [0xaa]]]); + testCode( + [0x0e, 0x33, 0x03], + 1, + {}, + { + cycles: 6, + s: flags.X | flags.C, + } + ); + expectMemory([[0x03, 0x33, [0x54]]]); + }); + + // ********** ROL + it('should ROL A', function () { + testCode( + [0x2a], + 1, + { + a: 0x55, + }, + { + cycles: 2, + a: 0xaa, + s: flags.X | flags.N, + } + ); + }); + + it('should ROL A with carry out', function () { + testCode( + [0x2a], + 1, + { + a: 0xaa, + }, + { + cycles: 2, + a: 0x54, + s: flags.X | flags.C, + } + ); + }); + + it('should ROL A with carry in', function () { + testCode( + [0x2a], + 1, + { + s: flags.X | flags.C, + a: 0xaa, + }, + { + cycles: 2, + a: 0x55, + s: flags.X | flags.C, + } + ); + }); + + it('should ROL abs', function () { + initMemory([[0x03, 0x33, [0x55]]]); + testCode( + [0x2e, 0x33, 0x03], + 1, + {}, + { + cycles: 6, + s: flags.X | flags.N, + } + ); + expectMemory([[0x03, 0x33, [0xaa]]]); + }); + + it('should ROL abs with carry out', function () { + initMemory([[0x03, 0x33, [0xaa]]]); + testCode( + [0x2e, 0x33, 0x03], + 1, + {}, + { + cycles: 6, + s: flags.X | flags.C, + } + ); + expectMemory([[0x03, 0x33, [0x54]]]); + }); + + it('should ROL abs with carry in', function () { + initMemory([[0x03, 0x33, [0xaa]]]); + testCode( + [0x2e, 0x33, 0x03], + 1, + { + s: flags.X | flags.C, + }, + { + cycles: 6, + s: flags.X | flags.C, + } + ); + expectMemory([[0x03, 0x33, [0x55]]]); + }); + + // ********** LSR + it('should LSR A', function () { + testCode( + [0x4a], + 1, + { + a: 0xaa, + }, + { + cycles: 2, + a: 0x55, + } + ); + }); + + it('should LSR A with carry out', function () { + testCode( + [0x4a], + 1, + { + a: 0x55, + }, + { + cycles: 2, + a: 0x2a, + s: flags.X | flags.C, + } + ); + }); + + it('should LSR abs', function () { + initMemory([[0x03, 0x33, [0xaa]]]); + testCode( + [0x4e, 0x33, 0x03], + 1, + {}, + { + cycles: 6, + } + ); + expectMemory([[0x03, 0x33, [0x55]]]); + }); + + it('should LSR abs with carry out', function () { + initMemory([[0x03, 0x33, [0x55]]]); + testCode( + [0x4e, 0x33, 0x03], + 1, + {}, + { + cycles: 6, + s: flags.X | flags.C, + } + ); + expectMemory([[0x03, 0x33, [0x2a]]]); + }); + + // ********** ROR + it('should ROR A', function () { + testCode( + [0x6a], + 1, + { + a: 0xaa, + }, + { + cycles: 2, + a: 0x55, + } + ); + }); + + it('should ROR A with carry out', function () { + testCode( + [0x6a], + 1, + { + a: 0x55, + }, + { + cycles: 2, + s: flags.X | flags.C, + a: 0x2a, + } + ); + }); + + it('should ROR A with carry in', function () { + testCode( + [0x6a], + 1, + { + s: flags.X | flags.C, + a: 0x55, + }, + { + cycles: 2, + s: flags.X | flags.C | flags.N, + a: 0xaa, + } + ); + }); + + it('should ROR abs', function () { + initMemory([[0x03, 0x33, [0xaa]]]); + testCode( + [0x6e, 0x33, 0x03], + 1, + {}, + { + cycles: 6, + } + ); + expectMemory([[0x03, 0x33, [0x55]]]); + }); + + it('should ROR abs with carry out', function () { + initMemory([[0x03, 0x33, [0x55]]]); + testCode( + [0x6e, 0x33, 0x03], + 1, + {}, + { + cycles: 6, + s: flags.X | flags.C, + } + ); + expectMemory([[0x03, 0x33, [0x2a]]]); + }); + + it('should ROR abs with carry in', function () { + initMemory([[0x03, 0x33, [0x55]]]); + testCode( + [0x6e, 0x33, 0x03], + 1, + { + s: flags.X | flags.C, + }, + { + cycles: 6, + s: flags.X | flags.C | flags.N, + } + ); + expectMemory([[0x03, 0x33, [0xaa]]]); + }); + + it('should AND', function () { + initMemory([[0x03, 0x33, [0x55]]]); + testCode( + [0x2d, 0x33, 0x03], + 1, + { + a: 0xa5, + }, + { + cycles: 4, + a: 0x05, + } + ); + }); + + it('should ORA', function () { + initMemory([[0x03, 0x33, [0x55]]]); + testCode( + [0x0d, 0x33, 0x03], + 1, + { + a: 0xa0, + }, + { + cycles: 4, + s: flags.X | flags.N, + a: 0xf5, + } + ); + }); + + it('should EOR', function () { + initMemory([[0x03, 0x33, [0x55]]]); + testCode( + [0x4d, 0x33, 0x03], + 1, + { + a: 0xa5, + }, + { + cycles: 4, + s: flags.X | flags.N, + a: 0xf0, + } + ); + }); + + it('should BIT zp', function () { + initMemory([[0x00, 0x33, [0x55]]]); + testCode( + [0x24, 0x33], + 1, + { + a: 0x55, + }, + { + cycles: 3, + s: flags.X | flags.V, + } + ); + }); + + it('should BIT abs', function () { + initMemory([[0x03, 0x33, [0xaa]]]); + testCode( + [0x2c, 0x33, 0x03], + 1, + {}, + { + cycles: 4, + s: flags.X | flags.N | flags.Z, + } + ); + }); + }); + + describe('#math', function () { + // ********** ADC + it('should ADC', function () { + testCode( + [0x69, 0x55], + 1, + { + a: 0x23, + }, + { + cycles: 2, + a: 0x78, + s: flags.X, + } + ); + }); + + it('should ADC with carry in', function () { + testCode( + [0x69, 0x55], + 1, + { + a: 0x23, + s: flags.X | flags.C, + }, + { + cycles: 2, + a: 0x79, + s: flags.X, + } + ); + }); + + it('should ADC with overflow out', function () { + testCode( + [0x69, 0x55], + 1, + { + a: 0x2b, + }, + { + cycles: 2, + a: 0x80, + s: flags.X | flags.N | flags.V, + } + ); + }); + + it('should ADC with carry out', function () { + testCode( + [0x69, 0x55], + 1, + { + a: 0xbb, + }, + { + cycles: 2, + a: 0x10, + s: flags.X | flags.C, + } + ); + }); + + // ********** ADC BCD + it('should ADC BCD', function () { + testCode( + [0x69, 0x16], + 1, + { + s: flags.X | flags.D, + a: 0x25, + }, + { + cycles: 2, + s: flags.X | flags.D, + a: 0x41, + } + ); + }); + + it('should ADC BCD with carry in', function () { + testCode( + [0x69, 0x55], + 1, + { + s: flags.X | flags.D | flags.C, + a: 0x23, + }, + { + cycles: 2, + s: flags.X | flags.D, + a: 0x79, + } + ); + }); + + it('should ADC BCD with carry out', function () { + testCode( + [0x69, 0x10], + 1, + { + s: flags.X | flags.D, + a: 0x91, + }, + { + cycles: 2, + a: 0x01, + s: flags.X | flags.N | flags.D | flags.C, + } + ); + }); + + // ********** SBC + it('should SBC', function () { + testCode( + [0xe9, 0x23], + 1, + { + s: flags.X | flags.C, + a: 0x55, + }, + { + cycles: 2, + a: 0x32, + s: flags.X | flags.C, + } + ); + }); + + it('should SBC with borrow in', function () { + testCode( + [0xe9, 0x23], + 1, + { + s: flags.X, + a: 0x55, + }, + { + cycles: 2, + a: 0x31, + s: flags.X | flags.C, + } + ); + }); + + it('should SBC with borrow out', function () { + testCode( + [0xe9, 0x55], + 1, + { + s: flags.X | flags.C, + a: 0x23, + }, + { + cycles: 2, + a: 0xce, + s: flags.X | flags.N, + } + ); + }); + + it('should SBC with overflow out', function () { + testCode( + [0xe9, 0x7f], + 1, + { + s: flags.X | flags.C, + a: 0xaf, + }, + { + cycles: 2, + a: 0x30, + s: flags.X | flags.V | flags.C, + } + ); + }); + + // ********** SBC BCD + it('should SBC BCD', function () { + testCode( + [0xe9, 0x23], + 1, + { + s: flags.X | flags.D | flags.C, + a: 0x55, + }, + { + cycles: 2, + a: 0x32, + s: flags.X | flags.D | flags.C, + } + ); + }); + + it('should SBC BCD with borrow in', function () { + testCode( + [0xe9, 0x23], + 1, + { + s: flags.X | flags.D, + a: 0x55, + }, + { + cycles: 2, + a: 0x31, + s: flags.X | flags.D | flags.C, + } + ); + }); + + it('should SBC BCD with borrow out', function () { + testCode( + [0xe9, 0x55], + 1, + { + s: flags.X | flags.D | flags.C, + a: 0x23, + }, + { + cycles: 2, + a: 0x68, + s: flags.X | flags.N | flags.D, + } + ); + }); + + // ********** INC + it('should INC zp', function () { + initMemory([[0x00, 0x33, [0x44]]]); + testCode( + [0xe6, 0x33], + 1, + {}, + { + cycles: 5, + } + ); + expectMemory([[0x00, 0x33, [0x45]]]); + }); + + it('should INC zp,x', function () { + initMemory([[0x00, 0x043, [0x44]]]); + testCode( + [0xf6, 0x33], + 1, + { + x: 0x10, + }, + { + cycles: 6, + } + ); + expectMemory([[0x00, 0x43, [0x45]]]); + }); + + it('should INC abs', function () { + initMemory([[0x03, 0x33, [0x44]]]); + testCode( + [0xee, 0x33, 0x03], + 1, + {}, + { + cycles: 6, + } + ); + expectMemory([[0x03, 0x33, [0x45]]]); + }); + + it('should INC abs,x', function () { + initMemory([[0x03, 0x043, [0x44]]]); + testCode( + [0xfe, 0x33, 0x03], + 1, + { + x: 0x10, + }, + { + cycles: 7, + } + ); + expectMemory([[0x03, 0x43, [0x45]]]); + }); + + // ********** DEC + it('should DEC zp', function () { + initMemory([[0x00, 0x33, [0x44]]]); + testCode( + [0xc6, 0x33], + 1, + {}, + { + cycles: 5, + } + ); + expectMemory([[0x00, 0x33, [0x43]]]); + }); + + it('should DEC zp,x', function () { + initMemory([[0x00, 0x043, [0x44]]]); + testCode( + [0xd6, 0x33], + 1, + { + x: 0x10, + }, + { + cycles: 6, + } + ); + expectMemory([[0x00, 0x43, [0x43]]]); + }); + + it('should DEC abs', function () { + initMemory([[0x03, 0x33, [0x44]]]); + testCode( + [0xce, 0x33, 0x03], + 1, + {}, + { + cycles: 6, + } + ); + expectMemory([[0x03, 0x33, [0x43]]]); + }); + + it('should DEC abs,x', function () { + initMemory([[0x03, 0x043, [0x44]]]); + testCode( + [0xde, 0x33, 0x03], + 1, + { + x: 0x10, + }, + { + cycles: 7, + } + ); + expectMemory([[0x03, 0x43, [0x43]]]); + }); + }); + + describe('#comparison', function () { + // ********** CMP + it('should CMP less than', function () { + testCode( + [0xc9, 0x44], + 1, + { + a: 0x33, + }, + { + cycles: 2, + s: flags.X | flags.N, + } + ); + }); + + it('should CMP equal', function () { + testCode( + [0xc9, 0x44], + 1, + { + a: 0x44, + }, + { + cycles: 2, + s: flags.X | flags.Z | flags.C, + } + ); + }); + + it('should CMP greater than', function () { + testCode( + [0xc9, 0x44], + 1, + { + a: 0x55, + }, + { + cycles: 2, + s: flags.X | flags.C, + } + ); + }); + + // ********** CPX + it('should CPX less than', function () { + testCode( + [0xe0, 0x44], + 1, + { + x: 0x33, + }, + { + cycles: 2, + s: flags.X | flags.N, + } + ); + }); + + it('should CPX equal', function () { + testCode( + [0xe0, 0x44], + 1, + { + x: 0x44, + }, + { + cycles: 2, + s: flags.X | flags.Z | flags.C, + } + ); + }); + + it('should CPX greater than', function () { + testCode( + [0xe0, 0x44], + 1, + { + x: 0x55, + }, + { + cycles: 2, + s: flags.X | flags.C, + } + ); + }); + + // ********** CPY + it('should CPY less than', function () { + testCode( + [0xe0, 0x44], + 1, + { + y: 0x33, + }, + { + cycles: 2, + s: flags.X | flags.N, + } + ); + }); + + it('should CPY equal', function () { + testCode( + [0xc0, 0x44], + 1, + { + y: 0x44, + }, + { + cycles: 2, + s: flags.X | flags.Z | flags.C, + } + ); + }); + + it('should CPY greater than', function () { + testCode( + [0xc0, 0x44], + 1, + { + y: 0x55, + }, + { + cycles: 2, + s: flags.X | flags.C, + } + ); + }); + }); +}); + +describe('65c02', function () { + beforeEach(function () { + cpu = new CPU6502({ flavor: FLAVOR_ROCKWELL_65C02 }); + memory = new TestMemory(4); + + cpu.addPageHandler(memory); + cpu.addPageHandler(bios); + }); + + describe('#signals', function () { + it('should clear D on IRQ', function () { + initState({ + s: flags.X | flags.D, + }); + + cpu.irq(); + + expectState(DEFAULT_STATE, { + cycles: 5, + s: flags.X | flags.I, + sp: 0xfc, + pc: 0xff00, + }); + }); + + it('should clear D on NMI', function () { + initState({ + s: flags.X | flags.D, + }); + + cpu.nmi(); + + expectState(DEFAULT_STATE, { + cycles: 5, + s: flags.X | flags.I, + sp: 0xfc, + pc: 0xff00, + }); + }); + + it('should clear D on BRK', function () { + testCode( + [0x00, 0x00], + 1, + { + s: flags.X | flags.D, + }, + { + cycles: 7, + s: flags.X | flags.I, + sp: 0xfc, + pc: 0xff00, + } + ); + }); + }); + + describe('#stack', function () { + it('should PHX', function () { + testCode( + [0xda], + 1, + { + x: 0x44, + }, + { + cycles: 3, + sp: 0xfe, + } + ); + expectStack([0x44]); + }); + + it('should PLX', function () { + initMemory([[0x01, 0xff, [0x44]]]); + testCode( + [0xfa], + 1, + { + sp: 0xfe, + }, + { + cycles: 4, + x: 0x44, + sp: 0xff, + } + ); + }); + + it('should PHY', function () { + testCode( + [0x5a], + 1, + { + y: 0x44, + }, + { + cycles: 3, + sp: 0xfe, + } + ); + expectStack([0x44]); + }); + + it('should PLY', function () { + initMemory([[0x01, 0xff, [0x44]]]); + testCode( + [0x7a], + 1, + { + sp: 0xfe, + }, + { + cycles: 4, + y: 0x44, + sp: 0xff, + } + ); + }); + }); + + describe('#jumps', function () { + it('should JMP (abs)', function () { + initMemory([[0x03, 0x33, [0x34, 0x12]]]); + testCode( + [0x6c, 0x33, 0x03], + 1, + {}, + { + cycles: 6, + pc: 0x1234, + } + ); + }); + + it('should JMP (abs) across page boundries without bugs', function () { + initMemory([ + [0x02, 0xff, [0x34, 0x12]], + [0x02, 0x00, [0xff]], + ]); + testCode( + [0x6c, 0xff, 0x02], + 1, + {}, + { + cycles: 6, + pc: 0x1234, + } + ); + }); + + it('should JMP (abs, x)', function () { + initMemory([[0x03, 0x43, [0x34, 0x12]]]); + testCode( + [0x7c, 0x33, 0x03], + 1, + { + x: 0x10, + }, + { + cycles: 6, + pc: 0x1234, + } + ); + }); + }); + + describe('#other addressing mode fixes', function () { + it('should INC abs,x', function () { + initMemory([[0x03, 0x043, [0x44]]]); + testCode( + [0xfe, 0x33, 0x03], + 1, + { + x: 0x10, + }, + { + cycles: 7, + } + ); + expectMemory([[0x03, 0x43, [0x45]]]); + }); + }); + + describe('#branches', function () { + it('should BRA forward', function () { + testCode( + [0x80, 0x7f], + 1, + {}, + { + cycles: 3, + pc: 0x0481, + } + ); + }); + + it('should BRA backward', function () { + testCode( + [0x80, 0xff], + 1, + {}, + { + cycles: 3, + pc: 0x0401, + } + ); + }); + }); + + describe('#read memory', function () { + // ********** (zp) + it('should LDA (zp)', function () { + initMemory([ + [0x00, 0x33, [0x33, 0x03]], + [0x03, 0x33, [0x44]], + ]); + testCode( + [0xb2, 0x33], + 1, + {}, + { + cycles: 5, + a: 0x44, + } + ); + }); + }); + + describe('#write memory', function () { + // ********** (zp) + it('should STA (zp)', function () { + initMemory([[0x00, 0x33, [0x33, 0x03]]]); + testCode( + [0x92, 0x33], + 1, + { + a: 0x44, + }, + { + cycles: 5, + } + ); + expectMemory([[0x03, 0x33, [0x44]]]); + }); + + it('should STZ abs', function () { + initMemory([[0x03, 0x33, [0x44]]]); + testCode( + [0x9c, 0x33, 0x03], + 1, + { + a: 0x44, + }, + { + cycles: 4, + } + ); + expectMemory([[0x03, 0x33, [0x00]]]); + }); + }); + + describe('#logical operators', function () { + it('should BIT imm and effect other flags', function () { + testCode( + [0x89, 0x33], + 1, + { + s: flags.X | flags.N, + a: 0x44, + }, + { + cycles: 2, + s: flags.X | flags.Z | flags.N, + } + ); + }); + + it('should BIT imm', function () { + testCode( + [0x89, 0x33], + 1, + { + a: 0x03, + }, + { + cycles: 2, + s: flags.X, + } + ); + }); + + // ******** TRB + it('should TRB zp', function () { + initMemory([[0x00, 0x33, [0x55]]]); + testCode( + [0x14, 0x33], + 1, + { + a: 0xa5, + }, + { + cycles: 5, + } + ); + expectMemory([[0x00, 0x33, [0x50]]]); + }); + + it('should TRB abs', function () { + initMemory([[0x03, 0x33, [0x55]]]); + testCode( + [0x1c, 0x33, 0x03], + 1, + { + a: 0xaa, + }, + { + cycles: 6, + s: flags.X | flags.Z, + } + ); + expectMemory([[0x00, 0x33, [0x00]]]); + }); + + // ******** TSB + it('should TSB zp', function () { + initMemory([[0x00, 0x33, [0x55]]]); + testCode( + [0x04, 0x33], + 1, + { + a: 0xa5, + }, + { + cycles: 5, + } + ); + expectMemory([[0x00, 0x33, [0xf5]]]); + }); + + it('should TSB abs', function () { + initMemory([[0x03, 0x33, [0x55]]]); + testCode( + [0x0c, 0x33, 0x03], + 1, + { + a: 0xaa, + }, + { + cycles: 6, + s: flags.X | flags.Z, + } + ); + expectMemory([[0x03, 0x33, [0xff]]]); + }); + }); + + describe('Branch bit set/reset', function () { + // ******** BBR + it('BBR0 should branch if bit 0 clear', function () { + initMemory([[0x00, 0x33, [0xfe]]]); + testCode( + [0x0f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBR0 should branch backward', function () { + initMemory([[0x00, 0x33, [0xfe]]]); + testCode( + [0x0f, 0x33, 0xff], + 1, + {}, + { + cycles: 6, + pc: 0x0402, + } + ); + }); + + it('BBR1 should branch if bit 1 clear', function () { + initMemory([[0x00, 0x33, [0xfd]]]); + testCode( + [0x1f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBR2 should branch if bit 2 clear', function () { + initMemory([[0x00, 0x33, [0xfb]]]); + testCode( + [0x2f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBR3 should branch if bit 3 clear', function () { + initMemory([[0x00, 0x33, [0xf7]]]); + testCode( + [0x3f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBR4 should branch if bit 4 clear', function () { + initMemory([[0x00, 0x33, [0xef]]]); + testCode( + [0x4f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBR5 should branch if bit 5 clear', function () { + initMemory([[0x00, 0x33, [0xdf]]]); + testCode( + [0x5f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBR6 should branch if bit 6 clear', function () { + initMemory([[0x00, 0x33, [0xbf]]]); + testCode( + [0x6f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBR7 should branch if bit 7 clear', function () { + initMemory([[0x00, 0x33, [0x7f]]]); + testCode( + [0x7f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBR0 should not branch if bit 0 set', function () { + initMemory([[0x00, 0x33, [0x01]]]); + testCode( + [0x0f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBR1 should not branch if bit 1 set', function () { + initMemory([[0x00, 0x33, [0x02]]]); + testCode( + [0x1f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBR2 should not branch if bit 2 set', function () { + initMemory([[0x00, 0x33, [0x04]]]); + testCode( + [0x2f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBR3 should not branch if bit 3 set', function () { + initMemory([[0x00, 0x33, [0x08]]]); + testCode( + [0x3f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBR4 should not branch if bit 4 set', function () { + initMemory([[0x00, 0x33, [0x10]]]); + testCode( + [0x4f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBR5 should not branch if bit 5 set', function () { + initMemory([[0x00, 0x33, [0x20]]]); + testCode( + [0x5f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBR6 should not branch if bit 6 set', function () { + initMemory([[0x00, 0x33, [0x40]]]); + testCode( + [0x6f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBR7 should not branch if bit 7 set', function () { + initMemory([[0x00, 0x33, [0x80]]]); + testCode( + [0x7f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + // ******** BBS + it('BBS0 should branch if bit 0 set', function () { + initMemory([[0x00, 0x33, [0x01]]]); + testCode( + [0x8f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBS0 should branch backward', function () { + initMemory([[0x00, 0x33, [0x01]]]); + testCode( + [0x8f, 0x33, 0xff], + 1, + {}, + { + cycles: 6, + pc: 0x0402, + } + ); + }); + + it('BBS1 should branch if bit 1 set', function () { + initMemory([[0x00, 0x33, [0x02]]]); + testCode( + [0x9f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBS2 should branch if bit 2 set', function () { + initMemory([[0x00, 0x33, [0x04]]]); + testCode( + [0xaf, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBS3 should branch if bit 3 set', function () { + initMemory([[0x00, 0x33, [0x08]]]); + testCode( + [0xbf, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBS4 should branch if bit 4 set', function () { + initMemory([[0x00, 0x33, [0x10]]]); + testCode( + [0xcf, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBS5 should branch if bit 5 set', function () { + initMemory([[0x00, 0x33, [0x20]]]); + testCode( + [0xdf, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBS6 should branch if bit 6 set', function () { + initMemory([[0x00, 0x33, [0x40]]]); + testCode( + [0xef, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBS7 should branch if bit 7 set', function () { + initMemory([[0x00, 0x33, [0x80]]]); + testCode( + [0xff, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0482, + } + ); + }); + + it('BBS0 should not branch if bit 0 clear', function () { + initMemory([[0x00, 0x33, [0xfe]]]); + testCode( + [0x8f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBS1 should not branch if bit 1 clear', function () { + initMemory([[0x00, 0x33, [0xfd]]]); + testCode( + [0x9f, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBS2 should not branch if bit 2 clear', function () { + initMemory([[0x00, 0x33, [0xfb]]]); + testCode( + [0xaf, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBS3 should not branch if bit 3 clear', function () { + initMemory([[0x00, 0x33, [0xf7]]]); + testCode( + [0xbf, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBS4 should not branch if bit 4 clear', function () { + initMemory([[0x00, 0x33, [0xef]]]); + testCode( + [0xcf, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBS5 should not branch if bit 5 clear', function () { + initMemory([[0x00, 0x33, [0xdf]]]); + testCode( + [0xdf, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBS6 should not branch if bit 6 clear', function () { + initMemory([[0x00, 0x33, [0xbf]]]); + testCode( + [0xef, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + + it('BBS7 should not branch if bit 7 clear', function () { + initMemory([[0x00, 0x33, [0x7b]]]); + testCode( + [0xff, 0x33, 0x7f], + 1, + {}, + { + cycles: 6, + pc: 0x0403, + } + ); + }); + }); + + describe('Bit set/reset', function () { + it('RMB0 should reset bit 0', function () { + initMemory([[0x00, 0x33, [0xff]]]); + testCode( + [0x07, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0xfe]]]); + }); + + it('RMB1 should reset bit 1', function () { + initMemory([[0x00, 0x33, [0xff]]]); + testCode( + [0x17, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0xfd]]]); + }); + + it('RMB2 should reset bit 2', function () { + initMemory([[0x00, 0x33, [0xff]]]); + testCode( + [0x27, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0xfb]]]); + }); + + it('RMB3 should reset bit 3', function () { + initMemory([[0x00, 0x33, [0xff]]]); + testCode( + [0x37, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0xf7]]]); + }); + + it('RMB4 should reset bit 4', function () { + initMemory([[0x00, 0x33, [0xff]]]); + testCode( + [0x47, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0xef]]]); + }); + + it('RMB5 should reset bit 5', function () { + initMemory([[0x00, 0x33, [0xff]]]); + testCode( + [0x57, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0xdf]]]); + }); + + it('RMB6 should reset bit 6', function () { + initMemory([[0x00, 0x33, [0xff]]]); + testCode( + [0x67, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0xbf]]]); + }); + + it('RMB7 should reset bit 7', function () { + initMemory([[0x00, 0x33, [0xff]]]); + testCode( + [0x77, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0x7f]]]); + }); + + it('SMB0 should set bit 0', function () { + initMemory([[0x00, 0x33, [0x00]]]); + testCode( + [0x87, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0x01]]]); + }); + + it('SMB1 should set bit 1', function () { + initMemory([[0x00, 0x33, [0x00]]]); + testCode( + [0x97, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0x02]]]); + }); + + it('SMB2 should set bit 2', function () { + initMemory([[0x00, 0x33, [0x00]]]); + testCode( + [0xa7, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0x04]]]); + }); + + it('SMB3 should set bit 3', function () { + initMemory([[0x00, 0x33, [0x00]]]); + testCode( + [0xb7, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0x08]]]); + }); + + it('SMB4 should set bit 4', function () { + initMemory([[0x00, 0x33, [0x00]]]); + testCode( + [0xc7, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0x10]]]); + }); + + it('SMB5 should set bit 5', function () { + initMemory([[0x00, 0x33, [0x00]]]); + testCode( + [0xd7, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0x20]]]); + }); + + it('SMB6 should set bit 6', function () { + initMemory([[0x00, 0x33, [0x00]]]); + testCode( + [0xe7, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0x40]]]); + }); + + it('SMB7 should set bit 7', function () { + initMemory([[0x00, 0x33, [0x00]]]); + testCode( + [0xf7, 0x33], + 1, + {}, + { + cycles: 5, + pc: 0x0402, + } + ); + expectMemory([[0x00, 0x33, [0x80]]]); + }); + }); + + describe('#math', function () { + // INC A + it('should INC A', function () { + testCode( + [0x1a], + 1, + { + a: 0x44, + }, + { + cycles: 2, + a: 0x45, + } + ); + }); + + // DEC A + it('should DEC A', function () { + testCode( + [0x3a], + 1, + { + a: 0x44, + }, + { + cycles: 2, + a: 0x43, + } + ); + }); + }); +}); diff --git a/test/roms/6502_functional_test.bin b/test/roms/6502_functional_test.bin new file mode 100644 index 0000000..962ab40 Binary files /dev/null and b/test/roms/6502_functional_test.bin differ diff --git a/test/roms/6502test.js b/test/roms/6502test.js deleted file mode 100644 index 0cf15fb..0000000 --- a/test/roms/6502test.js +++ /dev/null @@ -1,8213 +0,0 @@ -// From https://github.com/Klaus2m5/6502_65C02_functional_tests - -export default function Test6502() { - var data = [ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc3,0x82,0x41,0x00,0x7f, - 0x00,0x1f,0x71,0x80,0x0f,0xff,0x7f,0x80, - 0xff,0x0f,0x8f,0x8f,0x17,0x02,0x18,0x02, - 0x19,0x02,0x1a,0x02,0x1b,0x02,0x1f,0x01, - 0x03,0x02,0x04,0x02,0x05,0x02,0x06,0x02, - 0x0b,0x01,0x4e,0x02,0x4f,0x02,0x50,0x02, - 0x51,0x02,0x52,0x02,0x53,0x02,0x54,0x02, - 0x55,0x02,0x4a,0x02,0x4b,0x02,0x4c,0x02, - 0x4d,0x02,0x03,0x02,0x04,0x02,0x04,0x01, - 0x05,0x01,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x29,0x00,0x60,0x49,0x00,0x60,0x09,0x00, - 0x60,0x69,0x00,0x60,0xe9,0x00,0x60,0xc3, - 0x82,0x41,0x00,0x7f,0x80,0x80,0x00,0x02, - 0x86,0x04,0x82,0x00,0x87,0x05,0x83,0x01, - 0x61,0x41,0x20,0x00,0xe1,0xc1,0xa0,0x80, - 0x81,0x01,0x80,0x02,0x81,0x01,0x80,0x00, - 0x01,0x00,0x01,0x02,0x81,0x80,0x81,0x80, - 0x7f,0x80,0xff,0x00,0x01,0x00,0x80,0x80, - 0x02,0x00,0x00,0x1f,0x71,0x80,0x0f,0xff, - 0x7f,0x80,0xff,0x0f,0x8f,0x8f,0x00,0xf1, - 0x1f,0x00,0xf0,0xff,0xff,0xff,0xff,0xf0, - 0xf0,0x0f,0x00,0xff,0x7f,0x80,0x02,0x80, - 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xd8,0xa2,0xff,0x9a,0xa9,0x00,0x8d,0x00, - 0x02,0xa2,0x05,0x4c,0x33,0x04,0xa0,0x05, - 0xd0,0x08,0x4c,0x12,0x04,0x88,0x88,0x88, - 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xf0, - 0x17,0x4c,0x21,0x04,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xf0,0xde, - 0x4c,0x30,0x04,0xd0,0xf4,0x4c,0x35,0x04, - 0xad,0x00,0x02,0xc9,0x00,0xd0,0xfe,0xa9, - 0x01,0x8d,0x00,0x02,0xa0,0xfe,0x88,0x98, - 0xaa,0x10,0x08,0x18,0x69,0x02,0xea,0xea, - 0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea, - 0x49,0x7f,0x8d,0xe6,0x04,0xa9,0x00,0x4c, - 0xe5,0x04,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xf0,0x3e,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca, - 0xca,0xca,0xca,0xca,0xca,0xca,0xea,0xea, - 0xea,0xea,0xea,0xf0,0x08,0x4c,0x6d,0x05, - 0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea, - 0xea,0xea,0xc0,0x00,0xf0,0x03,0x4c,0x46, - 0x04,0xad,0x00,0x02,0xc9,0x01,0xd0,0xfe, - 0xa9,0x02,0x8d,0x00,0x02,0xc0,0x01,0xd0, - 0x03,0x4c,0x91,0x05,0xa9,0x00,0xc9,0x00, - 0xd0,0xfe,0x90,0xfe,0x30,0xfe,0xc9,0x01, - 0xf0,0xfe,0xb0,0xfe,0x10,0xfe,0xaa,0xe0, - 0x00,0xd0,0xfe,0x90,0xfe,0x30,0xfe,0xe0, - 0x01,0xf0,0xfe,0xb0,0xfe,0x10,0xfe,0xa8, - 0xc0,0x00,0xd0,0xfe,0x90,0xfe,0x30,0xfe, - 0xc0,0x01,0xf0,0xfe,0xb0,0xfe,0x10,0xfe, - 0xad,0x00,0x02,0xc9,0x02,0xd0,0xfe,0xa9, - 0x03,0x8d,0x00,0x02,0xa2,0xff,0x9a,0xa9, - 0x55,0x48,0xa9,0xaa,0x48,0xcd,0xfe,0x01, - 0xd0,0xfe,0xba,0x8a,0xc9,0xfd,0xd0,0xfe, - 0x68,0xc9,0xaa,0xd0,0xfe,0x68,0xc9,0x55, - 0xd0,0xfe,0xcd,0xff,0x01,0xd0,0xfe,0xba, - 0xe0,0xff,0xd0,0xfe,0xad,0x00,0x02,0xc9, - 0x03,0xd0,0xfe,0xa9,0x04,0x8d,0x00,0x02, - 0xa9,0xff,0x48,0x28,0x10,0x1a,0x50,0x1b, - 0x90,0x1c,0xd0,0x1d,0x30,0x03,0x4c,0x16, - 0x06,0x70,0x03,0x4c,0x1b,0x06,0xb0,0x03, - 0x4c,0x20,0x06,0xf0,0x0f,0x4c,0x25,0x06, - 0x4c,0x28,0x06,0x4c,0x2b,0x06,0x4c,0x2e, - 0x06,0x4c,0x31,0x06,0x08,0xba,0xe0,0xfe, - 0xd0,0xfe,0x68,0xc9,0xff,0xd0,0xfe,0xba, - 0xe0,0xff,0xd0,0xfe,0xa9,0x00,0x48,0x28, - 0x30,0x1a,0x70,0x1b,0xb0,0x1c,0xf0,0x1d, - 0x10,0x03,0x4c,0x52,0x06,0x50,0x03,0x4c, - 0x57,0x06,0x90,0x03,0x4c,0x5c,0x06,0xd0, - 0x0f,0x4c,0x61,0x06,0x4c,0x64,0x06,0x4c, - 0x67,0x06,0x4c,0x6a,0x06,0x4c,0x6d,0x06, - 0x08,0x68,0xc9,0x30,0xd0,0xfe,0xa9,0x02, - 0x48,0x28,0xd0,0x02,0xf0,0x03,0x4c,0x7e, - 0x06,0xb0,0x02,0x90,0x03,0x4c,0x85,0x06, - 0x30,0x02,0x10,0x03,0x4c,0x8c,0x06,0x70, - 0x02,0x50,0x03,0x4c,0x93,0x06,0xa9,0x01, - 0x48,0x28,0xf0,0x02,0xd0,0x03,0x4c,0x9e, - 0x06,0x90,0x02,0xb0,0x03,0x4c,0xa5,0x06, - 0x30,0x02,0x10,0x03,0x4c,0xac,0x06,0x70, - 0x02,0x50,0x03,0x4c,0xb3,0x06,0xa9,0x80, - 0x48,0x28,0xf0,0x02,0xd0,0x03,0x4c,0xbe, - 0x06,0xb0,0x02,0x90,0x03,0x4c,0xc5,0x06, - 0x10,0x02,0x30,0x03,0x4c,0xcc,0x06,0x70, - 0x02,0x50,0x03,0x4c,0xd3,0x06,0xa9,0x40, - 0x48,0x28,0xf0,0x02,0xd0,0x03,0x4c,0xde, - 0x06,0xb0,0x02,0x90,0x03,0x4c,0xe5,0x06, - 0x30,0x02,0x10,0x03,0x4c,0xec,0x06,0x50, - 0x02,0x70,0x03,0x4c,0xf3,0x06,0xa9,0xfd, - 0x48,0x28,0xf0,0x02,0xd0,0x03,0x4c,0xfe, - 0x06,0x90,0x02,0xb0,0x03,0x4c,0x05,0x07, - 0x10,0x02,0x30,0x03,0x4c,0x0c,0x07,0x50, - 0x02,0x70,0x03,0x4c,0x13,0x07,0xa9,0xfe, - 0x48,0x28,0xd0,0x02,0xf0,0x03,0x4c,0x1e, - 0x07,0xb0,0x02,0x90,0x03,0x4c,0x25,0x07, - 0x10,0x02,0x30,0x03,0x4c,0x2c,0x07,0x50, - 0x02,0x70,0x03,0x4c,0x33,0x07,0xa9,0x7f, - 0x48,0x28,0xd0,0x02,0xf0,0x03,0x4c,0x3e, - 0x07,0x90,0x02,0xb0,0x03,0x4c,0x45,0x07, - 0x30,0x02,0x10,0x03,0x4c,0x4c,0x07,0x50, - 0x02,0x70,0x03,0x4c,0x53,0x07,0xa9,0xbf, - 0x48,0x28,0xd0,0x02,0xf0,0x03,0x4c,0x5e, - 0x07,0x90,0x02,0xb0,0x03,0x4c,0x65,0x07, - 0x10,0x02,0x30,0x03,0x4c,0x6c,0x07,0x70, - 0x02,0x50,0x03,0x4c,0x73,0x07,0xad,0x00, - 0x02,0xc9,0x04,0xd0,0xfe,0xa9,0x05,0x8d, - 0x00,0x02,0xa2,0x55,0xa0,0xaa,0xa9,0xff, - 0x48,0xa9,0x01,0x28,0x48,0x08,0xc9,0x01, - 0xd0,0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe, - 0x28,0xa9,0x00,0x48,0xa9,0x00,0x28,0x48, - 0x08,0xc9,0x00,0xd0,0xfe,0x68,0x48,0xc9, - 0x30,0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9, - 0xff,0x28,0x48,0x08,0xc9,0xff,0xd0,0xfe, - 0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa9,0x01,0x28,0x48,0x08,0xc9, - 0x01,0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0, - 0xfe,0x28,0xa9,0xff,0x48,0xa9,0x00,0x28, - 0x48,0x08,0xc9,0x00,0xd0,0xfe,0x68,0x48, - 0xc9,0xff,0xd0,0xfe,0x28,0xa9,0x00,0x48, - 0xa9,0xff,0x28,0x48,0x08,0xc9,0xff,0xd0, - 0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28, - 0xa9,0xff,0x48,0xa9,0x00,0x28,0x68,0x08, - 0xc9,0xff,0xd0,0xfe,0x68,0x48,0xc9,0xfd, - 0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa9,0xff, - 0x28,0x68,0x08,0xc9,0x00,0xd0,0xfe,0x68, - 0x48,0xc9,0x32,0xd0,0xfe,0x28,0xa9,0xff, - 0x48,0xa9,0xfe,0x28,0x68,0x08,0xc9,0x01, - 0xd0,0xfe,0x68,0x48,0xc9,0x7d,0xd0,0xfe, - 0x28,0xa9,0x00,0x48,0xa9,0x00,0x28,0x68, - 0x08,0xc9,0xff,0xd0,0xfe,0x68,0x48,0xc9, - 0xb0,0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9, - 0xff,0x28,0x68,0x08,0xc9,0x00,0xd0,0xfe, - 0x68,0x48,0xc9,0x7f,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa9,0xfe,0x28,0x68,0x08,0xc9, - 0x01,0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0, - 0xfe,0x28,0xe0,0x55,0xd0,0xfe,0xc0,0xaa, - 0xd0,0xfe,0xad,0x00,0x02,0xc9,0x05,0xd0, - 0xfe,0xa9,0x06,0x8d,0x00,0x02,0xa9,0x00, - 0x48,0xa9,0x3c,0x28,0x49,0xc3,0x08,0xc9, - 0xff,0xd0,0xfe,0x68,0x48,0xc9,0xb0,0xd0, - 0xfe,0x28,0xa9,0x00,0x48,0xa9,0xc3,0x28, - 0x49,0xc3,0x08,0xc9,0x00,0xd0,0xfe,0x68, - 0x48,0xc9,0x32,0xd0,0xfe,0x28,0xad,0x00, - 0x02,0xc9,0x06,0xd0,0xfe,0xa9,0x07,0x8d, - 0x00,0x02,0xa2,0x24,0xa0,0x42,0xa9,0x00, - 0x48,0xa9,0x18,0x28,0xea,0x08,0xc9,0x18, - 0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe, - 0x28,0xe0,0x24,0xd0,0xfe,0xc0,0x42,0xd0, - 0xfe,0xa2,0xdb,0xa0,0xbd,0xa9,0xff,0x48, - 0xa9,0xe7,0x28,0xea,0x08,0xc9,0xe7,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xe0,0xdb,0xd0,0xfe,0xc0,0xbd,0xd0,0xfe, - 0xad,0x00,0x02,0xc9,0x07,0xd0,0xfe,0xa9, - 0x08,0x8d,0x00,0x02,0xa9,0x00,0x48,0x28, - 0xa9,0x46,0xa2,0x41,0xa0,0x52,0x4c,0xef, - 0x36,0xea,0xea,0xd0,0xfe,0xe8,0xe8,0xf0, - 0xfe,0x10,0xfe,0x90,0xfe,0x50,0xfe,0xc9, - 0xec,0xd0,0xfe,0xe0,0x42,0xd0,0xfe,0xc0, - 0x4f,0xd0,0xfe,0xca,0xc8,0xc8,0xc8,0x49, - 0xaa,0x4c,0x32,0x09,0xea,0xea,0xd0,0xfe, - 0xe8,0xe8,0xf0,0xfe,0x30,0xfe,0x90,0xfe, - 0x50,0xfe,0xc9,0x46,0xd0,0xfe,0xe0,0x41, - 0xd0,0xfe,0xc0,0x52,0xd0,0xfe,0xad,0x00, - 0x02,0xc9,0x08,0xd0,0xfe,0xa9,0x09,0x8d, - 0x00,0x02,0xa9,0x00,0x48,0x28,0xa9,0x49, - 0xa2,0x4e,0xa0,0x44,0x6c,0x1e,0x37,0xea, - 0xd0,0xfe,0x88,0x88,0x08,0x88,0x88,0x88, - 0x28,0xf0,0xfe,0x10,0xfe,0x90,0xfe,0x50, - 0xfe,0xc9,0xe3,0xd0,0xfe,0xe0,0x4f,0xd0, - 0xfe,0xc0,0x3e,0xd0,0xfe,0xba,0xe0,0xff, - 0xd0,0xfe,0xad,0x00,0x02,0xc9,0x09,0xd0, - 0xfe,0xa9,0x0a,0x8d,0x00,0x02,0xa9,0x00, - 0x48,0x28,0xa9,0x4a,0xa2,0x53,0xa0,0x52, - 0x20,0x5d,0x37,0x08,0x88,0x88,0x88,0x28, - 0xf0,0xfe,0x10,0xfe,0x90,0xfe,0x50,0xfe, - 0xc9,0xe0,0xd0,0xfe,0xe0,0x54,0xd0,0xfe, - 0xc0,0x4c,0xd0,0xfe,0xba,0xe0,0xff,0xd0, - 0xfe,0xad,0x00,0x02,0xc9,0x0a,0xd0,0xfe, - 0xa9,0x0b,0x8d,0x00,0x02,0xa9,0x00,0x48, - 0xa9,0x42,0xa2,0x52,0xa0,0x4b,0x28,0x00, - 0x88,0x08,0x88,0x88,0x88,0xc9,0xe8,0xd0, - 0xfe,0xe0,0x53,0xd0,0xfe,0xc0,0x45,0xd0, - 0xfe,0x68,0xc9,0x30,0xd0,0xfe,0xba,0xe0, - 0xff,0xd0,0xfe,0xa9,0xff,0x48,0xa9,0xbd, - 0xa2,0xad,0xa0,0xb4,0x28,0x00,0x88,0x08, - 0x88,0x88,0x88,0xc9,0x17,0xd0,0xfe,0xe0, - 0xae,0xd0,0xfe,0xc0,0xae,0xd0,0xfe,0x68, - 0xc9,0xff,0xd0,0xfe,0xba,0xe0,0xff,0xd0, - 0xfe,0xad,0x00,0x02,0xc9,0x0b,0xd0,0xfe, - 0xa9,0x0c,0x8d,0x00,0x02,0xa9,0xff,0x48, - 0x28,0x18,0x08,0x68,0x48,0xc9,0xfe,0xd0, - 0xfe,0x28,0x38,0x08,0x68,0x48,0xc9,0xff, - 0xd0,0xfe,0x28,0x58,0x08,0x68,0x48,0xc9, - 0xfb,0xd0,0xfe,0x28,0x78,0x08,0x68,0x48, - 0xc9,0xff,0xd0,0xfe,0x28,0xd8,0x08,0x68, - 0x48,0xc9,0xf7,0xd0,0xfe,0x28,0xf8,0x08, - 0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28,0xb8, - 0x08,0x68,0x48,0xc9,0xbf,0xd0,0xfe,0x28, - 0xa9,0x00,0x48,0x28,0x08,0x68,0x48,0xc9, - 0x30,0xd0,0xfe,0x28,0x38,0x08,0x68,0x48, - 0xc9,0x31,0xd0,0xfe,0x28,0x18,0x08,0x68, - 0x48,0xc9,0x30,0xd0,0xfe,0x28,0x78,0x08, - 0x68,0x48,0xc9,0x34,0xd0,0xfe,0x28,0x58, - 0x08,0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28, - 0xf8,0x08,0x68,0x48,0xc9,0x38,0xd0,0xfe, - 0x28,0xd8,0x08,0x68,0x48,0xc9,0x30,0xd0, - 0xfe,0x28,0xa9,0x40,0x48,0x28,0x08,0x68, - 0x48,0xc9,0x70,0xd0,0xfe,0x28,0xb8,0x08, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xad, - 0x00,0x02,0xc9,0x0c,0xd0,0xfe,0xa9,0x0d, - 0x8d,0x00,0x02,0xa2,0xfe,0xa9,0xff,0x48, - 0x28,0xe8,0x08,0xe0,0xff,0xd0,0xfe,0x68, - 0x48,0xc9,0xfd,0xd0,0xfe,0x28,0xe8,0x08, - 0xe0,0x00,0xd0,0xfe,0x68,0x48,0xc9,0x7f, - 0xd0,0xfe,0x28,0xe8,0x08,0xe0,0x01,0xd0, - 0xfe,0x68,0x48,0xc9,0x7d,0xd0,0xfe,0x28, - 0xca,0x08,0xe0,0x00,0xd0,0xfe,0x68,0x48, - 0xc9,0x7f,0xd0,0xfe,0x28,0xca,0x08,0xe0, - 0xff,0xd0,0xfe,0x68,0x48,0xc9,0xfd,0xd0, - 0xfe,0x28,0xca,0xa9,0x00,0x48,0x28,0xe8, - 0x08,0xe0,0xff,0xd0,0xfe,0x68,0x48,0xc9, - 0xb0,0xd0,0xfe,0x28,0xe8,0x08,0xe0,0x00, - 0xd0,0xfe,0x68,0x48,0xc9,0x32,0xd0,0xfe, - 0x28,0xe8,0x08,0xe0,0x01,0xd0,0xfe,0x68, - 0x48,0xc9,0x30,0xd0,0xfe,0x28,0xca,0x08, - 0xe0,0x00,0xd0,0xfe,0x68,0x48,0xc9,0x32, - 0xd0,0xfe,0x28,0xca,0x08,0xe0,0xff,0xd0, - 0xfe,0x68,0x48,0xc9,0xb0,0xd0,0xfe,0x28, - 0xa0,0xfe,0xa9,0xff,0x48,0x28,0xc8,0x08, - 0xc0,0xff,0xd0,0xfe,0x68,0x48,0xc9,0xfd, - 0xd0,0xfe,0x28,0xc8,0x08,0xc0,0x00,0xd0, - 0xfe,0x68,0x48,0xc9,0x7f,0xd0,0xfe,0x28, - 0xc8,0x08,0xc0,0x01,0xd0,0xfe,0x68,0x48, - 0xc9,0x7d,0xd0,0xfe,0x28,0x88,0x08,0xc0, - 0x00,0xd0,0xfe,0x68,0x48,0xc9,0x7f,0xd0, - 0xfe,0x28,0x88,0x08,0xc0,0xff,0xd0,0xfe, - 0x68,0x48,0xc9,0xfd,0xd0,0xfe,0x28,0x88, - 0xa9,0x00,0x48,0x28,0xc8,0x08,0xc0,0xff, - 0xd0,0xfe,0x68,0x48,0xc9,0xb0,0xd0,0xfe, - 0x28,0xc8,0x08,0xc0,0x00,0xd0,0xfe,0x68, - 0x48,0xc9,0x32,0xd0,0xfe,0x28,0xc8,0x08, - 0xc0,0x01,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0x88,0x08,0xc0,0x00,0xd0, - 0xfe,0x68,0x48,0xc9,0x32,0xd0,0xfe,0x28, - 0x88,0x08,0xc0,0xff,0xd0,0xfe,0x68,0x48, - 0xc9,0xb0,0xd0,0xfe,0x28,0xa2,0xff,0xa9, - 0xff,0x48,0x28,0x8a,0x08,0xc9,0xff,0xd0, - 0xfe,0x68,0x48,0xc9,0xfd,0xd0,0xfe,0x28, - 0x08,0xe8,0x28,0x8a,0x08,0xc9,0x00,0xd0, - 0xfe,0x68,0x48,0xc9,0x7f,0xd0,0xfe,0x28, - 0x08,0xe8,0x28,0x8a,0x08,0xc9,0x01,0xd0, - 0xfe,0x68,0x48,0xc9,0x7d,0xd0,0xfe,0x28, - 0xa9,0x00,0x48,0x28,0x8a,0x08,0xc9,0x01, - 0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe, - 0x28,0x08,0xca,0x28,0x8a,0x08,0xc9,0x00, - 0xd0,0xfe,0x68,0x48,0xc9,0x32,0xd0,0xfe, - 0x28,0x08,0xca,0x28,0x8a,0x08,0xc9,0xff, - 0xd0,0xfe,0x68,0x48,0xc9,0xb0,0xd0,0xfe, - 0x28,0xa0,0xff,0xa9,0xff,0x48,0x28,0x98, - 0x08,0xc9,0xff,0xd0,0xfe,0x68,0x48,0xc9, - 0xfd,0xd0,0xfe,0x28,0x08,0xc8,0x28,0x98, - 0x08,0xc9,0x00,0xd0,0xfe,0x68,0x48,0xc9, - 0x7f,0xd0,0xfe,0x28,0x08,0xc8,0x28,0x98, - 0x08,0xc9,0x01,0xd0,0xfe,0x68,0x48,0xc9, - 0x7d,0xd0,0xfe,0x28,0xa9,0x00,0x48,0x28, - 0x98,0x08,0xc9,0x01,0xd0,0xfe,0x68,0x48, - 0xc9,0x30,0xd0,0xfe,0x28,0x08,0x88,0x28, - 0x98,0x08,0xc9,0x00,0xd0,0xfe,0x68,0x48, - 0xc9,0x32,0xd0,0xfe,0x28,0x08,0x88,0x28, - 0x98,0x08,0xc9,0xff,0xd0,0xfe,0x68,0x48, - 0xc9,0xb0,0xd0,0xfe,0x28,0xa9,0xff,0x48, - 0xa2,0xff,0x8a,0x28,0xa8,0x08,0xc0,0xff, - 0xd0,0xfe,0x68,0x48,0xc9,0xfd,0xd0,0xfe, - 0x28,0x08,0xe8,0x8a,0x28,0xa8,0x08,0xc0, - 0x00,0xd0,0xfe,0x68,0x48,0xc9,0x7f,0xd0, - 0xfe,0x28,0x08,0xe8,0x8a,0x28,0xa8,0x08, - 0xc0,0x01,0xd0,0xfe,0x68,0x48,0xc9,0x7d, - 0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa9,0x00, - 0x8a,0x28,0xa8,0x08,0xc0,0x01,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0x08, - 0xca,0x8a,0x28,0xa8,0x08,0xc0,0x00,0xd0, - 0xfe,0x68,0x48,0xc9,0x32,0xd0,0xfe,0x28, - 0x08,0xca,0x8a,0x28,0xa8,0x08,0xc0,0xff, - 0xd0,0xfe,0x68,0x48,0xc9,0xb0,0xd0,0xfe, - 0x28,0xa9,0xff,0x48,0xa0,0xff,0x98,0x28, - 0xaa,0x08,0xe0,0xff,0xd0,0xfe,0x68,0x48, - 0xc9,0xfd,0xd0,0xfe,0x28,0x08,0xc8,0x98, - 0x28,0xaa,0x08,0xe0,0x00,0xd0,0xfe,0x68, - 0x48,0xc9,0x7f,0xd0,0xfe,0x28,0x08,0xc8, - 0x98,0x28,0xaa,0x08,0xe0,0x01,0xd0,0xfe, - 0x68,0x48,0xc9,0x7d,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa9,0x00,0x98,0x28,0xaa,0x08, - 0xe0,0x01,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0x08,0x88,0x98,0x28,0xaa, - 0x08,0xe0,0x00,0xd0,0xfe,0x68,0x48,0xc9, - 0x32,0xd0,0xfe,0x28,0x08,0x88,0x98,0x28, - 0xaa,0x08,0xe0,0xff,0xd0,0xfe,0x68,0x48, - 0xc9,0xb0,0xd0,0xfe,0x28,0xad,0x00,0x02, - 0xc9,0x0d,0xd0,0xfe,0xa9,0x0e,0x8d,0x00, - 0x02,0xa2,0x01,0xa9,0xff,0x48,0x28,0x9a, - 0x08,0xad,0x01,0x01,0xc9,0xff,0xd0,0xfe, - 0xa9,0x00,0x48,0x28,0x9a,0x08,0xad,0x01, - 0x01,0xc9,0x30,0xd0,0xfe,0xca,0xa9,0xff, - 0x48,0x28,0x9a,0x08,0xad,0x00,0x01,0xc9, - 0xff,0xd0,0xfe,0xa9,0x00,0x48,0x28,0x9a, - 0x08,0xad,0x00,0x01,0xc9,0x30,0xd0,0xfe, - 0xca,0xa9,0xff,0x48,0x28,0x9a,0x08,0xad, - 0xff,0x01,0xc9,0xff,0xd0,0xfe,0xa9,0x00, - 0x48,0x28,0x9a,0x08,0xad,0xff,0x01,0xc9, - 0x30,0xa2,0x01,0x9a,0xa9,0xff,0x48,0x28, - 0xba,0x08,0xe0,0x01,0xd0,0xfe,0xad,0x01, - 0x01,0xc9,0x7d,0xd0,0xfe,0xa9,0xff,0x48, - 0x28,0xba,0x08,0xe0,0x00,0xd0,0xfe,0xad, - 0x00,0x01,0xc9,0x7f,0xd0,0xfe,0xa9,0xff, - 0x48,0x28,0xba,0x08,0xe0,0xff,0xd0,0xfe, - 0xad,0xff,0x01,0xc9,0xfd,0xd0,0xfe,0xa2, - 0x01,0x9a,0xa9,0x00,0x48,0x28,0xba,0x08, - 0xe0,0x01,0xd0,0xfe,0xad,0x01,0x01,0xc9, - 0x30,0xd0,0xfe,0xa9,0x00,0x48,0x28,0xba, - 0x08,0xe0,0x00,0xd0,0xfe,0xad,0x00,0x01, - 0xc9,0x32,0xd0,0xfe,0xa9,0x00,0x48,0x28, - 0xba,0x08,0xe0,0xff,0xd0,0xfe,0xad,0xff, - 0x01,0xc9,0xb0,0xd0,0xfe,0x68,0xad,0x00, - 0x02,0xc9,0x0e,0xd0,0xfe,0xa9,0x0f,0x8d, - 0x00,0x02,0xa0,0x03,0xa9,0x00,0x48,0x28, - 0xb6,0x13,0x08,0x8a,0x49,0xc3,0x28,0x99, - 0x03,0x02,0x08,0x49,0xc3,0xd9,0x17,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xd9,0x1c,0x02, - 0xd0,0xfe,0x88,0x10,0xdf,0xa0,0x03,0xa9, - 0xff,0x48,0x28,0xb6,0x13,0x08,0x8a,0x49, - 0xc3,0x28,0x99,0x03,0x02,0x08,0x49,0xc3, - 0xd9,0x17,0x02,0xd0,0xfe,0x68,0x49,0x7d, - 0xd9,0x1c,0x02,0xd0,0xfe,0x88,0x10,0xdf, - 0xa0,0x03,0xa9,0x00,0x48,0x28,0xbe,0x17, - 0x02,0x08,0x8a,0x49,0xc3,0xaa,0x28,0x96, - 0x0c,0x08,0x49,0xc3,0xd9,0x13,0x00,0xd0, - 0xfe,0x68,0x49,0x30,0xd9,0x1c,0x02,0xd0, - 0xfe,0x88,0x10,0xde,0xa0,0x03,0xa9,0xff, - 0x48,0x28,0xbe,0x17,0x02,0x08,0x8a,0x49, - 0xc3,0xaa,0x28,0x96,0x0c,0x08,0x49,0xc3, - 0xd9,0x13,0x00,0xd0,0xfe,0x68,0x49,0x7d, - 0xd9,0x1c,0x02,0xd0,0xfe,0x88,0x10,0xde, - 0xa0,0x03,0xa2,0x00,0xb9,0x0c,0x00,0x49, - 0xc3,0xd9,0x13,0x00,0xd0,0xfe,0x96,0x0c, - 0xb9,0x03,0x02,0x49,0xc3,0xd9,0x17,0x02, - 0xd0,0xfe,0x8a,0x99,0x03,0x02,0x88,0x10, - 0xe3,0xad,0x00,0x02,0xc9,0x0f,0xd0,0xfe, - 0xa9,0x10,0x8d,0x00,0x02,0xa0,0xfd,0xb6, - 0x19,0x8a,0x99,0x09,0x01,0x88,0xc0,0xfa, - 0xb0,0xf5,0xa0,0xfd,0xbe,0x1d,0x01,0x96, - 0x12,0x88,0xc0,0xfa,0xb0,0xf6,0xa0,0x03, - 0xa2,0x00,0xb9,0x0c,0x00,0xd9,0x13,0x00, - 0xd0,0xfe,0x96,0x0c,0xb9,0x03,0x02,0xd9, - 0x17,0x02,0xd0,0xfe,0x8a,0x99,0x03,0x02, - 0x88,0x10,0xe7,0xad,0x00,0x02,0xc9,0x10, - 0xd0,0xfe,0xa9,0x11,0x8d,0x00,0x02,0xa2, - 0x03,0xa9,0x00,0x48,0x28,0xb4,0x13,0x08, - 0x98,0x49,0xc3,0x28,0x9d,0x03,0x02,0x08, - 0x49,0xc3,0xdd,0x17,0x02,0xd0,0xfe,0x68, - 0x49,0x30,0xdd,0x1c,0x02,0xd0,0xfe,0xca, - 0x10,0xdf,0xa2,0x03,0xa9,0xff,0x48,0x28, - 0xb4,0x13,0x08,0x98,0x49,0xc3,0x28,0x9d, - 0x03,0x02,0x08,0x49,0xc3,0xdd,0x17,0x02, - 0xd0,0xfe,0x68,0x49,0x7d,0xdd,0x1c,0x02, - 0xd0,0xfe,0xca,0x10,0xdf,0xa2,0x03,0xa9, - 0x00,0x48,0x28,0xbc,0x17,0x02,0x08,0x98, - 0x49,0xc3,0xa8,0x28,0x94,0x0c,0x08,0x49, - 0xc3,0xd5,0x13,0xd0,0xfe,0x68,0x49,0x30, - 0xdd,0x1c,0x02,0xd0,0xfe,0xca,0x10,0xdf, - 0xa2,0x03,0xa9,0xff,0x48,0x28,0xbc,0x17, - 0x02,0x08,0x98,0x49,0xc3,0xa8,0x28,0x94, - 0x0c,0x08,0x49,0xc3,0xd5,0x13,0xd0,0xfe, - 0x68,0x49,0x7d,0xdd,0x1c,0x02,0xd0,0xfe, - 0xca,0x10,0xdf,0xa2,0x03,0xa0,0x00,0xb5, - 0x0c,0x49,0xc3,0xd5,0x13,0xd0,0xfe,0x94, - 0x0c,0xbd,0x03,0x02,0x49,0xc3,0xdd,0x17, - 0x02,0xd0,0xfe,0x8a,0x9d,0x03,0x02,0xca, - 0x10,0xe5,0xad,0x00,0x02,0xc9,0x11,0xd0, - 0xfe,0xa9,0x12,0x8d,0x00,0x02,0xa2,0xfd, - 0xb4,0x19,0x98,0x9d,0x09,0x01,0xca,0xe0, - 0xfa,0xb0,0xf5,0xa2,0xfd,0xbc,0x1d,0x01, - 0x94,0x12,0xca,0xe0,0xfa,0xb0,0xf6,0xa2, - 0x03,0xa0,0x00,0xb5,0x0c,0xd5,0x13,0xd0, - 0xfe,0x94,0x0c,0xbd,0x03,0x02,0xdd,0x17, - 0x02,0xd0,0xfe,0x8a,0x9d,0x03,0x02,0xca, - 0x10,0xe9,0xad,0x00,0x02,0xc9,0x12,0xd0, - 0xfe,0xa9,0x13,0x8d,0x00,0x02,0xa9,0x00, - 0x48,0x28,0xa6,0x13,0x08,0x8a,0x49,0xc3, - 0xaa,0x28,0x8e,0x03,0x02,0x08,0x49,0xc3, - 0xaa,0xe0,0xc3,0xd0,0xfe,0x68,0x49,0x30, - 0xcd,0x1c,0x02,0xd0,0xfe,0xa9,0x00,0x48, - 0x28,0xa6,0x14,0x08,0x8a,0x49,0xc3,0xaa, - 0x28,0x8e,0x04,0x02,0x08,0x49,0xc3,0xaa, - 0xe0,0x82,0xd0,0xfe,0x68,0x49,0x30,0xcd, - 0x1d,0x02,0xd0,0xfe,0xa9,0x00,0x48,0x28, - 0xa6,0x15,0x08,0x8a,0x49,0xc3,0xaa,0x28, - 0x8e,0x05,0x02,0x08,0x49,0xc3,0xaa,0xe0, - 0x41,0xd0,0xfe,0x68,0x49,0x30,0xcd,0x1e, - 0x02,0xd0,0xfe,0xa9,0x00,0x48,0x28,0xa6, - 0x16,0x08,0x8a,0x49,0xc3,0xaa,0x28,0x8e, - 0x06,0x02,0x08,0x49,0xc3,0xaa,0xe0,0x00, - 0xd0,0xfe,0x68,0x49,0x30,0xcd,0x1f,0x02, - 0xd0,0xfe,0xa9,0xff,0x48,0x28,0xa6,0x13, - 0x08,0x8a,0x49,0xc3,0xaa,0x28,0x8e,0x03, - 0x02,0x08,0x49,0xc3,0xaa,0xe0,0xc3,0xd0, - 0xfe,0x68,0x49,0x7d,0xcd,0x1c,0x02,0xd0, - 0xfe,0xa9,0xff,0x48,0x28,0xa6,0x14,0x08, - 0x8a,0x49,0xc3,0xaa,0x28,0x8e,0x04,0x02, - 0x08,0x49,0xc3,0xaa,0xe0,0x82,0xd0,0xfe, - 0x68,0x49,0x7d,0xcd,0x1d,0x02,0xd0,0xfe, - 0xa9,0xff,0x48,0x28,0xa6,0x15,0x08,0x8a, - 0x49,0xc3,0xaa,0x28,0x8e,0x05,0x02,0x08, - 0x49,0xc3,0xaa,0xe0,0x41,0xd0,0xfe,0x68, - 0x49,0x7d,0xcd,0x1e,0x02,0xd0,0xfe,0xa9, - 0xff,0x48,0x28,0xa6,0x16,0x08,0x8a,0x49, - 0xc3,0xaa,0x28,0x8e,0x06,0x02,0x08,0x49, - 0xc3,0xaa,0xe0,0x00,0xd0,0xfe,0x68,0x49, - 0x7d,0xcd,0x1f,0x02,0xd0,0xfe,0xa9,0x00, - 0x48,0x28,0xae,0x17,0x02,0x08,0x8a,0x49, - 0xc3,0xaa,0x28,0x86,0x0c,0x08,0x49,0xc3, - 0xc5,0x13,0xd0,0xfe,0x68,0x49,0x30,0xcd, - 0x1c,0x02,0xd0,0xfe,0xa9,0x00,0x48,0x28, - 0xae,0x18,0x02,0x08,0x8a,0x49,0xc3,0xaa, - 0x28,0x86,0x0d,0x08,0x49,0xc3,0xc5,0x14, - 0xd0,0xfe,0x68,0x49,0x30,0xcd,0x1d,0x02, - 0xd0,0xfe,0xa9,0x00,0x48,0x28,0xae,0x19, - 0x02,0x08,0x8a,0x49,0xc3,0xaa,0x28,0x86, - 0x0e,0x08,0x49,0xc3,0xc5,0x15,0xd0,0xfe, - 0x68,0x49,0x30,0xcd,0x1e,0x02,0xd0,0xfe, - 0xa9,0x00,0x48,0x28,0xae,0x1a,0x02,0x08, - 0x8a,0x49,0xc3,0xaa,0x28,0x86,0x0f,0x08, - 0x49,0xc3,0xc5,0x16,0xd0,0xfe,0x68,0x49, - 0x30,0xcd,0x1f,0x02,0xd0,0xfe,0xa9,0xff, - 0x48,0x28,0xae,0x17,0x02,0x08,0x8a,0x49, - 0xc3,0xaa,0x28,0x86,0x0c,0x08,0x49,0xc3, - 0xaa,0xe4,0x13,0xd0,0xfe,0x68,0x49,0x7d, - 0xcd,0x1c,0x02,0xd0,0xfe,0xa9,0xff,0x48, - 0x28,0xae,0x18,0x02,0x08,0x8a,0x49,0xc3, - 0xaa,0x28,0x86,0x0d,0x08,0x49,0xc3,0xaa, - 0xe4,0x14,0xd0,0xfe,0x68,0x49,0x7d,0xcd, - 0x1d,0x02,0xd0,0xfe,0xa9,0xff,0x48,0x28, - 0xae,0x19,0x02,0x08,0x8a,0x49,0xc3,0xaa, - 0x28,0x86,0x0e,0x08,0x49,0xc3,0xaa,0xe4, - 0x15,0xd0,0xfe,0x68,0x49,0x7d,0xcd,0x1e, - 0x02,0xd0,0xfe,0xa9,0xff,0x48,0x28,0xae, - 0x1a,0x02,0x08,0x8a,0x49,0xc3,0xaa,0x28, - 0x86,0x0f,0x08,0x49,0xc3,0xaa,0xe4,0x16, - 0xd0,0xfe,0x68,0x49,0x7d,0xcd,0x1f,0x02, - 0xd0,0xfe,0xa9,0x00,0x48,0x28,0xa2,0xc3, - 0x08,0xec,0x17,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xcd,0x1c,0x02,0xd0,0xfe,0xa9,0x00, - 0x48,0x28,0xa2,0x82,0x08,0xec,0x18,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xcd,0x1d,0x02, - 0xd0,0xfe,0xa9,0x00,0x48,0x28,0xa2,0x41, - 0x08,0xec,0x19,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xcd,0x1e,0x02,0xd0,0xfe,0xa9,0x00, - 0x48,0x28,0xa2,0x00,0x08,0xec,0x1a,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xcd,0x1f,0x02, - 0xd0,0xfe,0xa9,0xff,0x48,0x28,0xa2,0xc3, - 0x08,0xec,0x17,0x02,0xd0,0xfe,0x68,0x49, - 0x7d,0xcd,0x1c,0x02,0xd0,0xfe,0xa9,0xff, - 0x48,0x28,0xa2,0x82,0x08,0xec,0x18,0x02, - 0xd0,0xfe,0x68,0x49,0x7d,0xcd,0x1d,0x02, - 0xd0,0xfe,0xa9,0xff,0x48,0x28,0xa2,0x41, - 0x08,0xec,0x19,0x02,0xd0,0xfe,0x68,0x49, - 0x7d,0xcd,0x1e,0x02,0xd0,0xfe,0xa9,0xff, - 0x48,0x28,0xa2,0x00,0x08,0xec,0x1a,0x02, - 0xd0,0xfe,0x68,0x49,0x7d,0xcd,0x1f,0x02, - 0xd0,0xfe,0xa2,0x00,0xa5,0x0c,0x49,0xc3, - 0xc5,0x13,0xd0,0xfe,0x86,0x0c,0xad,0x03, - 0x02,0x49,0xc3,0xcd,0x17,0x02,0xd0,0xfe, - 0x8e,0x03,0x02,0xa5,0x0d,0x49,0xc3,0xc5, - 0x14,0xd0,0xfe,0x86,0x0d,0xad,0x04,0x02, - 0x49,0xc3,0xcd,0x18,0x02,0xd0,0xfe,0x8e, - 0x04,0x02,0xa5,0x0e,0x49,0xc3,0xc5,0x15, - 0xd0,0xfe,0x86,0x0e,0xad,0x05,0x02,0x49, - 0xc3,0xcd,0x19,0x02,0xd0,0xfe,0x8e,0x05, - 0x02,0xa5,0x0f,0x49,0xc3,0xc5,0x16,0xd0, - 0xfe,0x86,0x0f,0xad,0x06,0x02,0x49,0xc3, - 0xcd,0x1a,0x02,0xd0,0xfe,0x8e,0x06,0x02, - 0xad,0x00,0x02,0xc9,0x13,0xd0,0xfe,0xa9, - 0x14,0x8d,0x00,0x02,0xa9,0x00,0x48,0x28, - 0xa4,0x13,0x08,0x98,0x49,0xc3,0xa8,0x28, - 0x8c,0x03,0x02,0x08,0x49,0xc3,0xa8,0xc0, - 0xc3,0xd0,0xfe,0x68,0x49,0x30,0xcd,0x1c, - 0x02,0xd0,0xfe,0xa9,0x00,0x48,0x28,0xa4, - 0x14,0x08,0x98,0x49,0xc3,0xa8,0x28,0x8c, - 0x04,0x02,0x08,0x49,0xc3,0xa8,0xc0,0x82, - 0xd0,0xfe,0x68,0x49,0x30,0xcd,0x1d,0x02, - 0xd0,0xfe,0xa9,0x00,0x48,0x28,0xa4,0x15, - 0x08,0x98,0x49,0xc3,0xa8,0x28,0x8c,0x05, - 0x02,0x08,0x49,0xc3,0xa8,0xc0,0x41,0xd0, - 0xfe,0x68,0x49,0x30,0xcd,0x1e,0x02,0xd0, - 0xfe,0xa9,0x00,0x48,0x28,0xa4,0x16,0x08, - 0x98,0x49,0xc3,0xa8,0x28,0x8c,0x06,0x02, - 0x08,0x49,0xc3,0xa8,0xc0,0x00,0xd0,0xfe, - 0x68,0x49,0x30,0xcd,0x1f,0x02,0xd0,0xfe, - 0xa9,0xff,0x48,0x28,0xa4,0x13,0x08,0x98, - 0x49,0xc3,0xa8,0x28,0x8c,0x03,0x02,0x08, - 0x49,0xc3,0xa8,0xc0,0xc3,0xd0,0xfe,0x68, - 0x49,0x7d,0xcd,0x1c,0x02,0xd0,0xfe,0xa9, - 0xff,0x48,0x28,0xa4,0x14,0x08,0x98,0x49, - 0xc3,0xa8,0x28,0x8c,0x04,0x02,0x08,0x49, - 0xc3,0xa8,0xc0,0x82,0xd0,0xfe,0x68,0x49, - 0x7d,0xcd,0x1d,0x02,0xd0,0xfe,0xa9,0xff, - 0x48,0x28,0xa4,0x15,0x08,0x98,0x49,0xc3, - 0xa8,0x28,0x8c,0x05,0x02,0x08,0x49,0xc3, - 0xa8,0xc0,0x41,0xd0,0xfe,0x68,0x49,0x7d, - 0xcd,0x1e,0x02,0xd0,0xfe,0xa9,0xff,0x48, - 0x28,0xa4,0x16,0x08,0x98,0x49,0xc3,0xa8, - 0x28,0x8c,0x06,0x02,0x08,0x49,0xc3,0xa8, - 0xc0,0x00,0xd0,0xfe,0x68,0x49,0x7d,0xcd, - 0x1f,0x02,0xd0,0xfe,0xa9,0x00,0x48,0x28, - 0xac,0x17,0x02,0x08,0x98,0x49,0xc3,0xa8, - 0x28,0x84,0x0c,0x08,0x49,0xc3,0xa8,0xc4, - 0x13,0xd0,0xfe,0x68,0x49,0x30,0xcd,0x1c, - 0x02,0xd0,0xfe,0xa9,0x00,0x48,0x28,0xac, - 0x18,0x02,0x08,0x98,0x49,0xc3,0xa8,0x28, - 0x84,0x0d,0x08,0x49,0xc3,0xa8,0xc4,0x14, - 0xd0,0xfe,0x68,0x49,0x30,0xcd,0x1d,0x02, - 0xd0,0xfe,0xa9,0x00,0x48,0x28,0xac,0x19, - 0x02,0x08,0x98,0x49,0xc3,0xa8,0x28,0x84, - 0x0e,0x08,0x49,0xc3,0xa8,0xc4,0x15,0xd0, - 0xfe,0x68,0x49,0x30,0xcd,0x1e,0x02,0xd0, - 0xfe,0xa9,0x00,0x48,0x28,0xac,0x1a,0x02, - 0x08,0x98,0x49,0xc3,0xa8,0x28,0x84,0x0f, - 0x08,0x49,0xc3,0xa8,0xc4,0x16,0xd0,0xfe, - 0x68,0x49,0x30,0xcd,0x1f,0x02,0xd0,0xfe, - 0xa9,0xff,0x48,0x28,0xac,0x17,0x02,0x08, - 0x98,0x49,0xc3,0xa8,0x28,0x84,0x0c,0x08, - 0x49,0xc3,0xa8,0xc5,0x13,0xd0,0xfe,0x68, - 0x49,0x7d,0xcd,0x1c,0x02,0xd0,0xfe,0xa9, - 0xff,0x48,0x28,0xac,0x18,0x02,0x08,0x98, - 0x49,0xc3,0xa8,0x28,0x84,0x0d,0x08,0x49, - 0xc3,0xa8,0xc5,0x14,0xd0,0xfe,0x68,0x49, - 0x7d,0xcd,0x1d,0x02,0xd0,0xfe,0xa9,0xff, - 0x48,0x28,0xac,0x19,0x02,0x08,0x98,0x49, - 0xc3,0xa8,0x28,0x84,0x0e,0x08,0x49,0xc3, - 0xa8,0xc5,0x15,0xd0,0xfe,0x68,0x49,0x7d, - 0xcd,0x1e,0x02,0xd0,0xfe,0xa9,0xff,0x48, - 0x28,0xac,0x1a,0x02,0x08,0x98,0x49,0xc3, - 0xa8,0x28,0x84,0x0f,0x08,0x49,0xc3,0xa8, - 0xc5,0x16,0xd0,0xfe,0x68,0x49,0x7d,0xcd, - 0x1f,0x02,0xd0,0xfe,0xa9,0x00,0x48,0x28, - 0xa0,0xc3,0x08,0xcc,0x17,0x02,0xd0,0xfe, - 0x68,0x49,0x30,0xcd,0x1c,0x02,0xd0,0xfe, - 0xa9,0x00,0x48,0x28,0xa0,0x82,0x08,0xcc, - 0x18,0x02,0xd0,0xfe,0x68,0x49,0x30,0xcd, - 0x1d,0x02,0xd0,0xfe,0xa9,0x00,0x48,0x28, - 0xa0,0x41,0x08,0xcc,0x19,0x02,0xd0,0xfe, - 0x68,0x49,0x30,0xcd,0x1e,0x02,0xd0,0xfe, - 0xa9,0x00,0x48,0x28,0xa0,0x00,0x08,0xcc, - 0x1a,0x02,0xd0,0xfe,0x68,0x49,0x30,0xcd, - 0x1f,0x02,0xd0,0xfe,0xa9,0xff,0x48,0x28, - 0xa0,0xc3,0x08,0xcc,0x17,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xcd,0x1c,0x02,0xd0,0xfe, - 0xa9,0xff,0x48,0x28,0xa0,0x82,0x08,0xcc, - 0x18,0x02,0xd0,0xfe,0x68,0x49,0x7d,0xcd, - 0x1d,0x02,0xd0,0xfe,0xa9,0xff,0x48,0x28, - 0xa0,0x41,0x08,0xcc,0x19,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xcd,0x1e,0x02,0xd0,0xfe, - 0xa9,0xff,0x48,0x28,0xa0,0x00,0x08,0xcc, - 0x1a,0x02,0xd0,0xfe,0x68,0x49,0x7d,0xcd, - 0x1f,0x02,0xd0,0xfe,0xa0,0x00,0xa5,0x0c, - 0x49,0xc3,0xc5,0x13,0xd0,0xfe,0x84,0x0c, - 0xad,0x03,0x02,0x49,0xc3,0xcd,0x17,0x02, - 0xd0,0xfe,0x8c,0x03,0x02,0xa5,0x0d,0x49, - 0xc3,0xc5,0x14,0xd0,0xfe,0x84,0x0d,0xad, - 0x04,0x02,0x49,0xc3,0xcd,0x18,0x02,0xd0, - 0xfe,0x8c,0x04,0x02,0xa5,0x0e,0x49,0xc3, - 0xc5,0x15,0xd0,0xfe,0x84,0x0e,0xad,0x05, - 0x02,0x49,0xc3,0xcd,0x19,0x02,0xd0,0xfe, - 0x8c,0x05,0x02,0xa5,0x0f,0x49,0xc3,0xc5, - 0x16,0xd0,0xfe,0x84,0x0f,0xad,0x06,0x02, - 0x49,0xc3,0xcd,0x1a,0x02,0xd0,0xfe,0x8c, - 0x06,0x02,0xad,0x00,0x02,0xc9,0x14,0xd0, - 0xfe,0xa9,0x15,0x8d,0x00,0x02,0xa2,0x03, - 0xa9,0x00,0x48,0x28,0xb5,0x13,0x08,0x49, - 0xc3,0x28,0x9d,0x03,0x02,0x08,0x49,0xc3, - 0xdd,0x17,0x02,0xd0,0xfe,0x68,0x49,0x30, - 0xdd,0x1c,0x02,0xd0,0xfe,0xca,0x10,0xe0, - 0xa2,0x03,0xa9,0xff,0x48,0x28,0xb5,0x13, - 0x08,0x49,0xc3,0x28,0x9d,0x03,0x02,0x08, - 0x49,0xc3,0xdd,0x17,0x02,0xd0,0xfe,0x68, - 0x49,0x7d,0xdd,0x1c,0x02,0xd0,0xfe,0xca, - 0x10,0xe0,0xa2,0x03,0xa9,0x00,0x48,0x28, - 0xbd,0x17,0x02,0x08,0x49,0xc3,0x28,0x95, - 0x0c,0x08,0x49,0xc3,0xd5,0x13,0xd0,0xfe, - 0x68,0x49,0x30,0xdd,0x1c,0x02,0xd0,0xfe, - 0xca,0x10,0xe1,0xa2,0x03,0xa9,0xff,0x48, - 0x28,0xbd,0x17,0x02,0x08,0x49,0xc3,0x28, - 0x95,0x0c,0x08,0x49,0xc3,0xd5,0x13,0xd0, - 0xfe,0x68,0x49,0x7d,0xdd,0x1c,0x02,0xd0, - 0xfe,0xca,0x10,0xe1,0xa2,0x03,0xa0,0x00, - 0xb5,0x0c,0x49,0xc3,0xd5,0x13,0xd0,0xfe, - 0x94,0x0c,0xbd,0x03,0x02,0x49,0xc3,0xdd, - 0x17,0x02,0xd0,0xfe,0x8a,0x9d,0x03,0x02, - 0xca,0x10,0xe5,0xad,0x00,0x02,0xc9,0x15, - 0xd0,0xfe,0xa9,0x16,0x8d,0x00,0x02,0xa0, - 0x03,0xa9,0x00,0x48,0x28,0xb1,0x24,0x08, - 0x49,0xc3,0x28,0x99,0x03,0x02,0x08,0x49, - 0xc3,0xd9,0x17,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xd9,0x1c,0x02,0xd0,0xfe,0x88,0x10, - 0xe0,0xa0,0x03,0xa9,0xff,0x48,0x28,0xb1, - 0x24,0x08,0x49,0xc3,0x28,0x99,0x03,0x02, - 0x08,0x49,0xc3,0xd9,0x17,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xd9,0x1c,0x02,0xd0,0xfe, - 0x88,0x10,0xe0,0xa0,0x03,0xa2,0x00,0xb9, - 0x03,0x02,0x49,0xc3,0xd9,0x17,0x02,0xd0, - 0xfe,0x8a,0x99,0x03,0x02,0x88,0x10,0xef, - 0xa0,0x03,0xa9,0x00,0x48,0x28,0xb9,0x17, - 0x02,0x08,0x49,0xc3,0x28,0x91,0x30,0x08, - 0x49,0xc3,0xd1,0x24,0xd0,0xfe,0x68,0x49, - 0x30,0xd9,0x1c,0x02,0xd0,0xfe,0x88,0x10, - 0xe1,0xa0,0x03,0xa9,0xff,0x48,0x28,0xb9, - 0x17,0x02,0x08,0x49,0xc3,0x28,0x91,0x30, - 0x08,0x49,0xc3,0xd1,0x24,0xd0,0xfe,0x68, - 0x49,0x7d,0xd9,0x1c,0x02,0xd0,0xfe,0x88, - 0x10,0xe1,0xa0,0x03,0xa2,0x00,0xb9,0x03, - 0x02,0x49,0xc3,0xd9,0x17,0x02,0xd0,0xfe, - 0x8a,0x99,0x03,0x02,0x88,0x10,0xef,0xa2, - 0x06,0xa0,0x03,0xa9,0x00,0x48,0x28,0xa1, - 0x24,0x08,0x49,0xc3,0x28,0x81,0x30,0x08, - 0x49,0xc3,0xd9,0x17,0x02,0xd0,0xfe,0x68, - 0x49,0x30,0xd9,0x1c,0x02,0xd0,0xfe,0xca, - 0xca,0x88,0x10,0xdf,0xa2,0x06,0xa0,0x03, - 0xa9,0xff,0x48,0x28,0xa1,0x24,0x08,0x49, - 0xc3,0x28,0x81,0x30,0x08,0x49,0xc3,0xd9, - 0x17,0x02,0xd0,0xfe,0x68,0x49,0x7d,0xd9, - 0x1c,0x02,0xd0,0xfe,0xca,0xca,0x88,0x10, - 0xdf,0xa0,0x03,0xa2,0x00,0xb9,0x03,0x02, - 0x49,0xc3,0xd9,0x17,0x02,0xd0,0xfe,0x8a, - 0x99,0x03,0x02,0x88,0x10,0xef,0xad,0x00, - 0x02,0xc9,0x16,0xd0,0xfe,0xa9,0x17,0x8d, - 0x00,0x02,0xa2,0xfd,0xb5,0x19,0x9d,0x09, - 0x01,0xca,0xe0,0xfa,0xb0,0xf6,0xa2,0xfd, - 0xbd,0x1d,0x01,0x95,0x12,0xca,0xe0,0xfa, - 0xb0,0xf6,0xa2,0x03,0xa0,0x00,0xb5,0x0c, - 0xd5,0x13,0xd0,0xfe,0x94,0x0c,0xbd,0x03, - 0x02,0xdd,0x17,0x02,0xd0,0xfe,0x8a,0x9d, - 0x03,0x02,0xca,0x10,0xe9,0xa0,0xfb,0xa2, - 0xfe,0xa1,0x2c,0x99,0x0b,0x01,0xca,0xca, - 0x88,0xc0,0xf8,0xb0,0xf4,0xa0,0x03,0xa2, - 0x00,0xb9,0x03,0x02,0xd9,0x17,0x02,0xd0, - 0xfe,0x8a,0x99,0x03,0x02,0x88,0x10,0xf1, - 0xa0,0xfb,0xb9,0x1f,0x01,0x91,0x38,0x88, - 0xc0,0xf8,0xb0,0xf6,0xa0,0x03,0xa2,0x00, - 0xb9,0x03,0x02,0xd9,0x17,0x02,0xd0,0xfe, - 0x8a,0x99,0x03,0x02,0x88,0x10,0xf1,0xa0, - 0xfb,0xa2,0xfe,0xb1,0x2e,0x81,0x38,0xca, - 0xca,0x88,0xc0,0xf8,0xb0,0xf5,0xa0,0x03, - 0xa2,0x00,0xb9,0x03,0x02,0xd9,0x17,0x02, - 0xd0,0xfe,0x8a,0x99,0x03,0x02,0x88,0x10, - 0xf1,0xad,0x00,0x02,0xc9,0x17,0xd0,0xfe, - 0xa9,0x18,0x8d,0x00,0x02,0xa9,0x00,0x48, - 0x28,0xa5,0x13,0x08,0x49,0xc3,0x28,0x8d, - 0x03,0x02,0x08,0x49,0xc3,0xc9,0xc3,0xd0, - 0xfe,0x68,0x49,0x30,0xcd,0x1c,0x02,0xd0, - 0xfe,0xa9,0x00,0x48,0x28,0xa5,0x14,0x08, - 0x49,0xc3,0x28,0x8d,0x04,0x02,0x08,0x49, - 0xc3,0xc9,0x82,0xd0,0xfe,0x68,0x49,0x30, - 0xcd,0x1d,0x02,0xd0,0xfe,0xa9,0x00,0x48, - 0x28,0xa5,0x15,0x08,0x49,0xc3,0x28,0x8d, - 0x05,0x02,0x08,0x49,0xc3,0xc9,0x41,0xd0, - 0xfe,0x68,0x49,0x30,0xcd,0x1e,0x02,0xd0, - 0xfe,0xa9,0x00,0x48,0x28,0xa5,0x16,0x08, - 0x49,0xc3,0x28,0x8d,0x06,0x02,0x08,0x49, - 0xc3,0xc9,0x00,0xd0,0xfe,0x68,0x49,0x30, - 0xcd,0x1f,0x02,0xd0,0xfe,0xa9,0xff,0x48, - 0x28,0xa5,0x13,0x08,0x49,0xc3,0x28,0x8d, - 0x03,0x02,0x08,0x49,0xc3,0xc9,0xc3,0xd0, - 0xfe,0x68,0x49,0x7d,0xcd,0x1c,0x02,0xd0, - 0xfe,0xa9,0xff,0x48,0x28,0xa5,0x14,0x08, - 0x49,0xc3,0x28,0x8d,0x04,0x02,0x08,0x49, - 0xc3,0xc9,0x82,0xd0,0xfe,0x68,0x49,0x7d, - 0xcd,0x1d,0x02,0xd0,0xfe,0xa9,0xff,0x48, - 0x28,0xa5,0x15,0x08,0x49,0xc3,0x28,0x8d, - 0x05,0x02,0x08,0x49,0xc3,0xc9,0x41,0xd0, - 0xfe,0x68,0x49,0x7d,0xcd,0x1e,0x02,0xd0, - 0xfe,0xa9,0xff,0x48,0x28,0xa5,0x16,0x08, - 0x49,0xc3,0x28,0x8d,0x06,0x02,0x08,0x49, - 0xc3,0xc9,0x00,0xd0,0xfe,0x68,0x49,0x7d, - 0xcd,0x1f,0x02,0xd0,0xfe,0xa9,0x00,0x48, - 0x28,0xad,0x17,0x02,0x08,0x49,0xc3,0x28, - 0x85,0x0c,0x08,0x49,0xc3,0xc5,0x13,0xd0, - 0xfe,0x68,0x49,0x30,0xcd,0x1c,0x02,0xd0, - 0xfe,0xa9,0x00,0x48,0x28,0xad,0x18,0x02, - 0x08,0x49,0xc3,0x28,0x85,0x0d,0x08,0x49, - 0xc3,0xc5,0x14,0xd0,0xfe,0x68,0x49,0x30, - 0xcd,0x1d,0x02,0xd0,0xfe,0xa9,0x00,0x48, - 0x28,0xad,0x19,0x02,0x08,0x49,0xc3,0x28, - 0x85,0x0e,0x08,0x49,0xc3,0xc5,0x15,0xd0, - 0xfe,0x68,0x49,0x30,0xcd,0x1e,0x02,0xd0, - 0xfe,0xa9,0x00,0x48,0x28,0xad,0x1a,0x02, - 0x08,0x49,0xc3,0x28,0x85,0x0f,0x08,0x49, - 0xc3,0xc5,0x16,0xd0,0xfe,0x68,0x49,0x30, - 0xcd,0x1f,0x02,0xd0,0xfe,0xa9,0xff,0x48, - 0x28,0xad,0x17,0x02,0x08,0x49,0xc3,0x28, - 0x85,0x0c,0x08,0x49,0xc3,0xc5,0x13,0xd0, - 0xfe,0x68,0x49,0x7d,0xcd,0x1c,0x02,0xd0, - 0xfe,0xa9,0xff,0x48,0x28,0xad,0x18,0x02, - 0x08,0x49,0xc3,0x28,0x85,0x0d,0x08,0x49, - 0xc3,0xc5,0x14,0xd0,0xfe,0x68,0x49,0x7d, - 0xcd,0x1d,0x02,0xd0,0xfe,0xa9,0xff,0x48, - 0x28,0xad,0x19,0x02,0x08,0x49,0xc3,0x28, - 0x85,0x0e,0x08,0x49,0xc3,0xc5,0x15,0xd0, - 0xfe,0x68,0x49,0x7d,0xcd,0x1e,0x02,0xd0, - 0xfe,0xa9,0xff,0x48,0x28,0xad,0x1a,0x02, - 0x08,0x49,0xc3,0x28,0x85,0x0f,0x08,0x49, - 0xc3,0xc5,0x16,0xd0,0xfe,0x68,0x49,0x7d, - 0xcd,0x1f,0x02,0xd0,0xfe,0xa9,0x00,0x48, - 0x28,0xa9,0xc3,0x08,0xcd,0x17,0x02,0xd0, - 0xfe,0x68,0x49,0x30,0xcd,0x1c,0x02,0xd0, - 0xfe,0xa9,0x00,0x48,0x28,0xa9,0x82,0x08, - 0xcd,0x18,0x02,0xd0,0xfe,0x68,0x49,0x30, - 0xcd,0x1d,0x02,0xd0,0xfe,0xa9,0x00,0x48, - 0x28,0xa9,0x41,0x08,0xcd,0x19,0x02,0xd0, - 0xfe,0x68,0x49,0x30,0xcd,0x1e,0x02,0xd0, - 0xfe,0xa9,0x00,0x48,0x28,0xa9,0x00,0x08, - 0xcd,0x1a,0x02,0xd0,0xfe,0x68,0x49,0x30, - 0xcd,0x1f,0x02,0xd0,0xfe,0xa9,0xff,0x48, - 0x28,0xa9,0xc3,0x08,0xcd,0x17,0x02,0xd0, - 0xfe,0x68,0x49,0x7d,0xcd,0x1c,0x02,0xd0, - 0xfe,0xa9,0xff,0x48,0x28,0xa9,0x82,0x08, - 0xcd,0x18,0x02,0xd0,0xfe,0x68,0x49,0x7d, - 0xcd,0x1d,0x02,0xd0,0xfe,0xa9,0xff,0x48, - 0x28,0xa9,0x41,0x08,0xcd,0x19,0x02,0xd0, - 0xfe,0x68,0x49,0x7d,0xcd,0x1e,0x02,0xd0, - 0xfe,0xa9,0xff,0x48,0x28,0xa9,0x00,0x08, - 0xcd,0x1a,0x02,0xd0,0xfe,0x68,0x49,0x7d, - 0xcd,0x1f,0x02,0xd0,0xfe,0xa2,0x00,0xa5, - 0x0c,0x49,0xc3,0xc5,0x13,0xd0,0xfe,0x86, - 0x0c,0xad,0x03,0x02,0x49,0xc3,0xcd,0x17, - 0x02,0xd0,0xfe,0x8e,0x03,0x02,0xa5,0x0d, - 0x49,0xc3,0xc5,0x14,0xd0,0xfe,0x86,0x0d, - 0xad,0x04,0x02,0x49,0xc3,0xcd,0x18,0x02, - 0xd0,0xfe,0x8e,0x04,0x02,0xa5,0x0e,0x49, - 0xc3,0xc5,0x15,0xd0,0xfe,0x86,0x0e,0xad, - 0x05,0x02,0x49,0xc3,0xcd,0x19,0x02,0xd0, - 0xfe,0x8e,0x05,0x02,0xa5,0x0f,0x49,0xc3, - 0xc5,0x16,0xd0,0xfe,0x86,0x0f,0xad,0x06, - 0x02,0x49,0xc3,0xcd,0x1a,0x02,0xd0,0xfe, - 0x8e,0x06,0x02,0xad,0x00,0x02,0xc9,0x18, - 0xd0,0xfe,0xa9,0x19,0x8d,0x00,0x02,0xa9, - 0x00,0x48,0xa9,0xff,0x28,0x24,0x16,0x08, - 0xc9,0xff,0xd0,0xfe,0x68,0x48,0xc9,0x32, - 0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa9,0x01, - 0x28,0x24,0x15,0x08,0xc9,0x01,0xd0,0xfe, - 0x68,0x48,0xc9,0x70,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa9,0x01,0x28,0x24,0x14,0x08, - 0xc9,0x01,0xd0,0xfe,0x68,0x48,0xc9,0xb2, - 0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa9,0x01, - 0x28,0x24,0x13,0x08,0xc9,0x01,0xd0,0xfe, - 0x68,0x48,0xc9,0xf0,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0xff,0x28,0x24,0x16,0x08, - 0xc9,0xff,0xd0,0xfe,0x68,0x48,0xc9,0x3f, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x01, - 0x28,0x24,0x15,0x08,0xc9,0x01,0xd0,0xfe, - 0x68,0x48,0xc9,0x7d,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x01,0x28,0x24,0x14,0x08, - 0xc9,0x01,0xd0,0xfe,0x68,0x48,0xc9,0xbf, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x01, - 0x28,0x24,0x13,0x08,0xc9,0x01,0xd0,0xfe, - 0x68,0x48,0xc9,0xfd,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa9,0xff,0x28,0x2c,0x1a,0x02, - 0x08,0xc9,0xff,0xd0,0xfe,0x68,0x48,0xc9, - 0x32,0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa9, - 0x01,0x28,0x2c,0x19,0x02,0x08,0xc9,0x01, - 0xd0,0xfe,0x68,0x48,0xc9,0x70,0xd0,0xfe, - 0x28,0xa9,0x00,0x48,0xa9,0x01,0x28,0x2c, - 0x18,0x02,0x08,0xc9,0x01,0xd0,0xfe,0x68, - 0x48,0xc9,0xb2,0xd0,0xfe,0x28,0xa9,0x00, - 0x48,0xa9,0x01,0x28,0x2c,0x17,0x02,0x08, - 0xc9,0x01,0xd0,0xfe,0x68,0x48,0xc9,0xf0, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0xff, - 0x28,0x2c,0x1a,0x02,0x08,0xc9,0xff,0xd0, - 0xfe,0x68,0x48,0xc9,0x3f,0xd0,0xfe,0x28, - 0xa9,0xff,0x48,0xa9,0x01,0x28,0x2c,0x19, - 0x02,0x08,0xc9,0x01,0xd0,0xfe,0x68,0x48, - 0xc9,0x7d,0xd0,0xfe,0x28,0xa9,0xff,0x48, - 0xa9,0x01,0x28,0x2c,0x18,0x02,0x08,0xc9, - 0x01,0xd0,0xfe,0x68,0x48,0xc9,0xbf,0xd0, - 0xfe,0x28,0xa9,0xff,0x48,0xa9,0x01,0x28, - 0x2c,0x17,0x02,0x08,0xc9,0x01,0xd0,0xfe, - 0x68,0x48,0xc9,0xfd,0xd0,0xfe,0x28,0xad, - 0x00,0x02,0xc9,0x19,0xd0,0xfe,0xa9,0x1a, - 0x8d,0x00,0x02,0xa9,0x00,0x48,0xa2,0x80, - 0x28,0xe4,0x17,0x08,0x68,0x48,0xc9,0x31, - 0xd0,0xfe,0x28,0xca,0xe4,0x17,0x08,0x68, - 0x48,0xc9,0x33,0xd0,0xfe,0x28,0xca,0xe4, - 0x17,0x08,0xe0,0x7e,0xd0,0xfe,0x68,0x48, - 0xc9,0xb0,0xd0,0xfe,0x28,0xa9,0xff,0x48, - 0xa2,0x80,0x28,0xe4,0x17,0x08,0x68,0x48, - 0xc9,0x7d,0xd0,0xfe,0x28,0xca,0xe4,0x17, - 0x08,0x68,0x48,0xc9,0x7f,0xd0,0xfe,0x28, - 0xca,0xe4,0x17,0x08,0xe0,0x7e,0xd0,0xfe, - 0x68,0x48,0xc9,0xfc,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa2,0x80,0x28,0xec,0x1b,0x02, - 0x08,0x68,0x48,0xc9,0x31,0xd0,0xfe,0x28, - 0xca,0xec,0x1b,0x02,0x08,0x68,0x48,0xc9, - 0x33,0xd0,0xfe,0x28,0xca,0xec,0x1b,0x02, - 0x08,0xe0,0x7e,0xd0,0xfe,0x68,0x48,0xc9, - 0xb0,0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa2, - 0x80,0x28,0xec,0x1b,0x02,0x08,0x68,0x48, - 0xc9,0x7d,0xd0,0xfe,0x28,0xca,0xec,0x1b, - 0x02,0x08,0x68,0x48,0xc9,0x7f,0xd0,0xfe, - 0x28,0xca,0xec,0x1b,0x02,0x08,0xe0,0x7e, - 0xd0,0xfe,0x68,0x48,0xc9,0xfc,0xd0,0xfe, - 0x28,0xa9,0x00,0x48,0xa2,0x80,0x28,0xe0, - 0x7f,0x08,0x68,0x48,0xc9,0x31,0xd0,0xfe, - 0x28,0xca,0xe0,0x7f,0x08,0x68,0x48,0xc9, - 0x33,0xd0,0xfe,0x28,0xca,0xe0,0x7f,0x08, - 0xe0,0x7e,0xd0,0xfe,0x68,0x48,0xc9,0xb0, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa2,0x80, - 0x28,0xe0,0x7f,0x08,0x68,0x48,0xc9,0x7d, - 0xd0,0xfe,0x28,0xca,0xe0,0x7f,0x08,0x68, - 0x48,0xc9,0x7f,0xd0,0xfe,0x28,0xca,0xe0, - 0x7f,0x08,0xe0,0x7e,0xd0,0xfe,0x68,0x48, - 0xc9,0xfc,0xd0,0xfe,0x28,0xad,0x00,0x02, - 0xc9,0x1a,0xd0,0xfe,0xa9,0x1b,0x8d,0x00, - 0x02,0xa9,0x00,0x48,0xa0,0x80,0x28,0xc4, - 0x17,0x08,0x68,0x48,0xc9,0x31,0xd0,0xfe, - 0x28,0x88,0xc4,0x17,0x08,0x68,0x48,0xc9, - 0x33,0xd0,0xfe,0x28,0x88,0xc4,0x17,0x08, - 0xc0,0x7e,0xd0,0xfe,0x68,0x48,0xc9,0xb0, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa0,0x80, - 0x28,0xc4,0x17,0x08,0x68,0x48,0xc9,0x7d, - 0xd0,0xfe,0x28,0x88,0xc4,0x17,0x08,0x68, - 0x48,0xc9,0x7f,0xd0,0xfe,0x28,0x88,0xc4, - 0x17,0x08,0xc0,0x7e,0xd0,0xfe,0x68,0x48, - 0xc9,0xfc,0xd0,0xfe,0x28,0xa9,0x00,0x48, - 0xa0,0x80,0x28,0xcc,0x1b,0x02,0x08,0x68, - 0x48,0xc9,0x31,0xd0,0xfe,0x28,0x88,0xcc, - 0x1b,0x02,0x08,0x68,0x48,0xc9,0x33,0xd0, - 0xfe,0x28,0x88,0xcc,0x1b,0x02,0x08,0xc0, - 0x7e,0xd0,0xfe,0x68,0x48,0xc9,0xb0,0xd0, - 0xfe,0x28,0xa9,0xff,0x48,0xa0,0x80,0x28, - 0xcc,0x1b,0x02,0x08,0x68,0x48,0xc9,0x7d, - 0xd0,0xfe,0x28,0x88,0xcc,0x1b,0x02,0x08, - 0x68,0x48,0xc9,0x7f,0xd0,0xfe,0x28,0x88, - 0xcc,0x1b,0x02,0x08,0xc0,0x7e,0xd0,0xfe, - 0x68,0x48,0xc9,0xfc,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa0,0x80,0x28,0xc0,0x7f,0x08, - 0x68,0x48,0xc9,0x31,0xd0,0xfe,0x28,0x88, - 0xc0,0x7f,0x08,0x68,0x48,0xc9,0x33,0xd0, - 0xfe,0x28,0x88,0xc0,0x7f,0x08,0xc0,0x7e, - 0xd0,0xfe,0x68,0x48,0xc9,0xb0,0xd0,0xfe, - 0x28,0xa9,0xff,0x48,0xa0,0x80,0x28,0xc0, - 0x7f,0x08,0x68,0x48,0xc9,0x7d,0xd0,0xfe, - 0x28,0x88,0xc0,0x7f,0x08,0x68,0x48,0xc9, - 0x7f,0xd0,0xfe,0x28,0x88,0xc0,0x7f,0x08, - 0xc0,0x7e,0xd0,0xfe,0x68,0x48,0xc9,0xfc, - 0xd0,0xfe,0x28,0xad,0x00,0x02,0xc9,0x1b, - 0xd0,0xfe,0xa9,0x1c,0x8d,0x00,0x02,0xa9, - 0x00,0x48,0xa9,0x80,0x28,0xc5,0x17,0x08, - 0xc9,0x80,0xd0,0xfe,0x68,0x48,0xc9,0x31, - 0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa9,0x7f, - 0x28,0xc5,0x17,0x08,0xc9,0x7f,0xd0,0xfe, - 0x68,0x48,0xc9,0x33,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa9,0x7e,0x28,0xc5,0x17,0x08, - 0xc9,0x7e,0xd0,0xfe,0x68,0x48,0xc9,0xb0, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x80, - 0x28,0xc5,0x17,0x08,0xc9,0x80,0xd0,0xfe, - 0x68,0x48,0xc9,0x7d,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x7f,0x28,0xc5,0x17,0x08, - 0xc9,0x7f,0xd0,0xfe,0x68,0x48,0xc9,0x7f, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x7e, - 0x28,0xc5,0x17,0x08,0xc9,0x7e,0xd0,0xfe, - 0x68,0x48,0xc9,0xfc,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa9,0x80,0x28,0xcd,0x1b,0x02, - 0x08,0xc9,0x80,0xd0,0xfe,0x68,0x48,0xc9, - 0x31,0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa9, - 0x7f,0x28,0xcd,0x1b,0x02,0x08,0xc9,0x7f, - 0xd0,0xfe,0x68,0x48,0xc9,0x33,0xd0,0xfe, - 0x28,0xa9,0x00,0x48,0xa9,0x7e,0x28,0xcd, - 0x1b,0x02,0x08,0xc9,0x7e,0xd0,0xfe,0x68, - 0x48,0xc9,0xb0,0xd0,0xfe,0x28,0xa9,0xff, - 0x48,0xa9,0x80,0x28,0xcd,0x1b,0x02,0x08, - 0xc9,0x80,0xd0,0xfe,0x68,0x48,0xc9,0x7d, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x7f, - 0x28,0xcd,0x1b,0x02,0x08,0xc9,0x7f,0xd0, - 0xfe,0x68,0x48,0xc9,0x7f,0xd0,0xfe,0x28, - 0xa9,0xff,0x48,0xa9,0x7e,0x28,0xcd,0x1b, - 0x02,0x08,0xc9,0x7e,0xd0,0xfe,0x68,0x48, - 0xc9,0xfc,0xd0,0xfe,0x28,0xa9,0x00,0x48, - 0xa9,0x80,0x28,0xc9,0x7f,0x08,0xc9,0x80, - 0xd0,0xfe,0x68,0x48,0xc9,0x31,0xd0,0xfe, - 0x28,0xa9,0x00,0x48,0xa9,0x7f,0x28,0xc9, - 0x7f,0x08,0xc9,0x7f,0xd0,0xfe,0x68,0x48, - 0xc9,0x33,0xd0,0xfe,0x28,0xa9,0x00,0x48, - 0xa9,0x7e,0x28,0xc9,0x7f,0x08,0xc9,0x7e, - 0xd0,0xfe,0x68,0x48,0xc9,0xb0,0xd0,0xfe, - 0x28,0xa9,0xff,0x48,0xa9,0x80,0x28,0xc9, - 0x7f,0x08,0xc9,0x80,0xd0,0xfe,0x68,0x48, - 0xc9,0x7d,0xd0,0xfe,0x28,0xa9,0xff,0x48, - 0xa9,0x7f,0x28,0xc9,0x7f,0x08,0xc9,0x7f, - 0xd0,0xfe,0x68,0x48,0xc9,0x7f,0xd0,0xfe, - 0x28,0xa9,0xff,0x48,0xa9,0x7e,0x28,0xc9, - 0x7f,0x08,0xc9,0x7e,0xd0,0xfe,0x68,0x48, - 0xc9,0xfc,0xd0,0xfe,0x28,0xa2,0x04,0xa9, - 0x00,0x48,0xa9,0x80,0x28,0xd5,0x13,0x08, - 0xc9,0x80,0xd0,0xfe,0x68,0x48,0xc9,0x31, - 0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa9,0x7f, - 0x28,0xd5,0x13,0x08,0xc9,0x7f,0xd0,0xfe, - 0x68,0x48,0xc9,0x33,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa9,0x7e,0x28,0xd5,0x13,0x08, - 0xc9,0x7e,0xd0,0xfe,0x68,0x48,0xc9,0xb0, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x80, - 0x28,0xd5,0x13,0x08,0xc9,0x80,0xd0,0xfe, - 0x68,0x48,0xc9,0x7d,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x7f,0x28,0xd5,0x13,0x08, - 0xc9,0x7f,0xd0,0xfe,0x68,0x48,0xc9,0x7f, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x7e, - 0x28,0xd5,0x13,0x08,0xc9,0x7e,0xd0,0xfe, - 0x68,0x48,0xc9,0xfc,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa9,0x80,0x28,0xdd,0x17,0x02, - 0x08,0xc9,0x80,0xd0,0xfe,0x68,0x48,0xc9, - 0x31,0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa9, - 0x7f,0x28,0xdd,0x17,0x02,0x08,0xc9,0x7f, - 0xd0,0xfe,0x68,0x48,0xc9,0x33,0xd0,0xfe, - 0x28,0xa9,0x00,0x48,0xa9,0x7e,0x28,0xdd, - 0x17,0x02,0x08,0xc9,0x7e,0xd0,0xfe,0x68, - 0x48,0xc9,0xb0,0xd0,0xfe,0x28,0xa9,0xff, - 0x48,0xa9,0x80,0x28,0xdd,0x17,0x02,0x08, - 0xc9,0x80,0xd0,0xfe,0x68,0x48,0xc9,0x7d, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x7f, - 0x28,0xdd,0x17,0x02,0x08,0xc9,0x7f,0xd0, - 0xfe,0x68,0x48,0xc9,0x7f,0xd0,0xfe,0x28, - 0xa9,0xff,0x48,0xa9,0x7e,0x28,0xdd,0x17, - 0x02,0x08,0xc9,0x7e,0xd0,0xfe,0x68,0x48, - 0xc9,0xfc,0xd0,0xfe,0x28,0xa0,0x04,0xa2, - 0x08,0xa9,0x00,0x48,0xa9,0x80,0x28,0xd9, - 0x17,0x02,0x08,0xc9,0x80,0xd0,0xfe,0x68, - 0x48,0xc9,0x31,0xd0,0xfe,0x28,0xa9,0x00, - 0x48,0xa9,0x7f,0x28,0xd9,0x17,0x02,0x08, - 0xc9,0x7f,0xd0,0xfe,0x68,0x48,0xc9,0x33, - 0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa9,0x7e, - 0x28,0xd9,0x17,0x02,0x08,0xc9,0x7e,0xd0, - 0xfe,0x68,0x48,0xc9,0xb0,0xd0,0xfe,0x28, - 0xa9,0xff,0x48,0xa9,0x80,0x28,0xd9,0x17, - 0x02,0x08,0xc9,0x80,0xd0,0xfe,0x68,0x48, - 0xc9,0x7d,0xd0,0xfe,0x28,0xa9,0xff,0x48, - 0xa9,0x7f,0x28,0xd9,0x17,0x02,0x08,0xc9, - 0x7f,0xd0,0xfe,0x68,0x48,0xc9,0x7f,0xd0, - 0xfe,0x28,0xa9,0xff,0x48,0xa9,0x7e,0x28, - 0xd9,0x17,0x02,0x08,0xc9,0x7e,0xd0,0xfe, - 0x68,0x48,0xc9,0xfc,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa9,0x80,0x28,0xc1,0x24,0x08, - 0xc9,0x80,0xd0,0xfe,0x68,0x48,0xc9,0x31, - 0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa9,0x7f, - 0x28,0xc1,0x24,0x08,0xc9,0x7f,0xd0,0xfe, - 0x68,0x48,0xc9,0x33,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa9,0x7e,0x28,0xc1,0x24,0x08, - 0xc9,0x7e,0xd0,0xfe,0x68,0x48,0xc9,0xb0, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x80, - 0x28,0xc1,0x24,0x08,0xc9,0x80,0xd0,0xfe, - 0x68,0x48,0xc9,0x7d,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x7f,0x28,0xc1,0x24,0x08, - 0xc9,0x7f,0xd0,0xfe,0x68,0x48,0xc9,0x7f, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x7e, - 0x28,0xc1,0x24,0x08,0xc9,0x7e,0xd0,0xfe, - 0x68,0x48,0xc9,0xfc,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa9,0x80,0x28,0xd1,0x24,0x08, - 0xc9,0x80,0xd0,0xfe,0x68,0x48,0xc9,0x31, - 0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa9,0x7f, - 0x28,0xd1,0x24,0x08,0xc9,0x7f,0xd0,0xfe, - 0x68,0x48,0xc9,0x33,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa9,0x7e,0x28,0xd1,0x24,0x08, - 0xc9,0x7e,0xd0,0xfe,0x68,0x48,0xc9,0xb0, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x80, - 0x28,0xd1,0x24,0x08,0xc9,0x80,0xd0,0xfe, - 0x68,0x48,0xc9,0x7d,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x7f,0x28,0xd1,0x24,0x08, - 0xc9,0x7f,0xd0,0xfe,0x68,0x48,0xc9,0x7f, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x7e, - 0x28,0xd1,0x24,0x08,0xc9,0x7e,0xd0,0xfe, - 0x68,0x48,0xc9,0xfc,0xd0,0xfe,0x28,0xad, - 0x00,0x02,0xc9,0x1c,0xd0,0xfe,0xa9,0x1d, - 0x8d,0x00,0x02,0xa2,0x03,0xa9,0x00,0x48, - 0xb5,0x13,0x28,0x0a,0x08,0xdd,0x20,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xdd,0x30,0x02, - 0xd0,0xfe,0xca,0x10,0xe8,0xa2,0x03,0xa9, - 0xff,0x48,0xb5,0x13,0x28,0x0a,0x08,0xdd, - 0x20,0x02,0xd0,0xfe,0x68,0x49,0x7c,0xdd, - 0x30,0x02,0xd0,0xfe,0xca,0x10,0xe8,0xa2, - 0x03,0xa9,0x00,0x48,0xb5,0x13,0x28,0x4a, - 0x08,0xdd,0x28,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xdd,0x38,0x02,0xd0,0xfe,0xca,0x10, - 0xe8,0xa2,0x03,0xa9,0xff,0x48,0xb5,0x13, - 0x28,0x4a,0x08,0xdd,0x28,0x02,0xd0,0xfe, - 0x68,0x49,0x7c,0xdd,0x38,0x02,0xd0,0xfe, - 0xca,0x10,0xe8,0xa2,0x03,0xa9,0x00,0x48, - 0xb5,0x13,0x28,0x2a,0x08,0xdd,0x20,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xdd,0x30,0x02, - 0xd0,0xfe,0xca,0x10,0xe8,0xa2,0x03,0xa9, - 0xfe,0x48,0xb5,0x13,0x28,0x2a,0x08,0xdd, - 0x20,0x02,0xd0,0xfe,0x68,0x49,0x7c,0xdd, - 0x30,0x02,0xd0,0xfe,0xca,0x10,0xe8,0xa2, - 0x03,0xa9,0x01,0x48,0xb5,0x13,0x28,0x2a, - 0x08,0xdd,0x24,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xdd,0x34,0x02,0xd0,0xfe,0xca,0x10, - 0xe8,0xa2,0x03,0xa9,0xff,0x48,0xb5,0x13, - 0x28,0x2a,0x08,0xdd,0x24,0x02,0xd0,0xfe, - 0x68,0x49,0x7c,0xdd,0x34,0x02,0xd0,0xfe, - 0xca,0x10,0xe8,0xa2,0x03,0xa9,0x00,0x48, - 0xb5,0x13,0x28,0x6a,0x08,0xdd,0x28,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xdd,0x38,0x02, - 0xd0,0xfe,0xca,0x10,0xe8,0xa2,0x03,0xa9, - 0xfe,0x48,0xb5,0x13,0x28,0x6a,0x08,0xdd, - 0x28,0x02,0xd0,0xfe,0x68,0x49,0x7c,0xdd, - 0x38,0x02,0xd0,0xfe,0xca,0x10,0xe8,0xa2, - 0x03,0xa9,0x01,0x48,0xb5,0x13,0x28,0x6a, - 0x08,0xdd,0x2c,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xdd,0x3c,0x02,0xd0,0xfe,0xca,0x10, - 0xe8,0xa2,0x03,0xa9,0xff,0x48,0xb5,0x13, - 0x28,0x6a,0x08,0xdd,0x2c,0x02,0xd0,0xfe, - 0x68,0x49,0x7c,0xdd,0x3c,0x02,0xd0,0xfe, - 0xca,0x10,0xe8,0xad,0x00,0x02,0xc9,0x1d, - 0xd0,0xfe,0xa9,0x1e,0x8d,0x00,0x02,0xa2, - 0x03,0xa9,0x00,0x48,0xb5,0x13,0x85,0x0c, - 0x28,0x06,0x0c,0x08,0xa5,0x0c,0xdd,0x20, - 0x02,0xd0,0xfe,0x68,0x49,0x30,0xdd,0x30, - 0x02,0xd0,0xfe,0xca,0x10,0xe3,0xa2,0x03, - 0xa9,0xff,0x48,0xb5,0x13,0x85,0x0c,0x28, - 0x06,0x0c,0x08,0xa5,0x0c,0xdd,0x20,0x02, - 0xd0,0xfe,0x68,0x49,0x7c,0xdd,0x30,0x02, - 0xd0,0xfe,0xca,0x10,0xe3,0xa2,0x03,0xa9, - 0x00,0x48,0xb5,0x13,0x85,0x0c,0x28,0x46, - 0x0c,0x08,0xa5,0x0c,0xdd,0x28,0x02,0xd0, - 0xfe,0x68,0x49,0x30,0xdd,0x38,0x02,0xd0, - 0xfe,0xca,0x10,0xe3,0xa2,0x03,0xa9,0xff, - 0x48,0xb5,0x13,0x85,0x0c,0x28,0x46,0x0c, - 0x08,0xa5,0x0c,0xdd,0x28,0x02,0xd0,0xfe, - 0x68,0x49,0x7c,0xdd,0x38,0x02,0xd0,0xfe, - 0xca,0x10,0xe3,0xa2,0x03,0xa9,0x00,0x48, - 0xb5,0x13,0x85,0x0c,0x28,0x26,0x0c,0x08, - 0xa5,0x0c,0xdd,0x20,0x02,0xd0,0xfe,0x68, - 0x49,0x30,0xdd,0x30,0x02,0xd0,0xfe,0xca, - 0x10,0xe3,0xa2,0x03,0xa9,0xfe,0x48,0xb5, - 0x13,0x85,0x0c,0x28,0x26,0x0c,0x08,0xa5, - 0x0c,0xdd,0x20,0x02,0xd0,0xfe,0x68,0x49, - 0x7c,0xdd,0x30,0x02,0xd0,0xfe,0xca,0x10, - 0xe3,0xa2,0x03,0xa9,0x01,0x48,0xb5,0x13, - 0x85,0x0c,0x28,0x26,0x0c,0x08,0xa5,0x0c, - 0xdd,0x24,0x02,0xd0,0xfe,0x68,0x49,0x30, - 0xdd,0x34,0x02,0xd0,0xfe,0xca,0x10,0xe3, - 0xa2,0x03,0xa9,0xff,0x48,0xb5,0x13,0x85, - 0x0c,0x28,0x26,0x0c,0x08,0xa5,0x0c,0xdd, - 0x24,0x02,0xd0,0xfe,0x68,0x49,0x7c,0xdd, - 0x34,0x02,0xd0,0xfe,0xca,0x10,0xe3,0xa2, - 0x03,0xa9,0x00,0x48,0xb5,0x13,0x85,0x0c, - 0x28,0x66,0x0c,0x08,0xa5,0x0c,0xdd,0x28, - 0x02,0xd0,0xfe,0x68,0x49,0x30,0xdd,0x38, - 0x02,0xd0,0xfe,0xca,0x10,0xe3,0xa2,0x03, - 0xa9,0xfe,0x48,0xb5,0x13,0x85,0x0c,0x28, - 0x66,0x0c,0x08,0xa5,0x0c,0xdd,0x28,0x02, - 0xd0,0xfe,0x68,0x49,0x7c,0xdd,0x38,0x02, - 0xd0,0xfe,0xca,0x10,0xe3,0xa2,0x03,0xa9, - 0x01,0x48,0xb5,0x13,0x85,0x0c,0x28,0x66, - 0x0c,0x08,0xa5,0x0c,0xdd,0x2c,0x02,0xd0, - 0xfe,0x68,0x49,0x30,0xdd,0x3c,0x02,0xd0, - 0xfe,0xca,0x10,0xe3,0xa2,0x03,0xa9,0xff, - 0x48,0xb5,0x13,0x85,0x0c,0x28,0x66,0x0c, - 0x08,0xa5,0x0c,0xdd,0x2c,0x02,0xd0,0xfe, - 0x68,0x49,0x7c,0xdd,0x3c,0x02,0xd0,0xfe, - 0xca,0x10,0xe3,0xad,0x00,0x02,0xc9,0x1e, - 0xd0,0xfe,0xa9,0x1f,0x8d,0x00,0x02,0xa2, - 0x03,0xa9,0x00,0x48,0xb5,0x13,0x8d,0x03, - 0x02,0x28,0x0e,0x03,0x02,0x08,0xad,0x03, - 0x02,0xdd,0x20,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xdd,0x30,0x02,0xd0,0xfe,0xca,0x10, - 0xe0,0xa2,0x03,0xa9,0xff,0x48,0xb5,0x13, - 0x8d,0x03,0x02,0x28,0x0e,0x03,0x02,0x08, - 0xad,0x03,0x02,0xdd,0x20,0x02,0xd0,0xfe, - 0x68,0x49,0x7c,0xdd,0x30,0x02,0xd0,0xfe, - 0xca,0x10,0xe0,0xa2,0x03,0xa9,0x00,0x48, - 0xb5,0x13,0x8d,0x03,0x02,0x28,0x4e,0x03, - 0x02,0x08,0xad,0x03,0x02,0xdd,0x28,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xdd,0x38,0x02, - 0xd0,0xfe,0xca,0x10,0xe0,0xa2,0x03,0xa9, - 0xff,0x48,0xb5,0x13,0x8d,0x03,0x02,0x28, - 0x4e,0x03,0x02,0x08,0xad,0x03,0x02,0xdd, - 0x28,0x02,0xd0,0xfe,0x68,0x49,0x7c,0xdd, - 0x38,0x02,0xd0,0xfe,0xca,0x10,0xe0,0xa2, - 0x03,0xa9,0x00,0x48,0xb5,0x13,0x8d,0x03, - 0x02,0x28,0x2e,0x03,0x02,0x08,0xad,0x03, - 0x02,0xdd,0x20,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xdd,0x30,0x02,0xd0,0xfe,0xca,0x10, - 0xe0,0xa2,0x03,0xa9,0xfe,0x48,0xb5,0x13, - 0x8d,0x03,0x02,0x28,0x2e,0x03,0x02,0x08, - 0xad,0x03,0x02,0xdd,0x20,0x02,0xd0,0xfe, - 0x68,0x49,0x7c,0xdd,0x30,0x02,0xd0,0xfe, - 0xca,0x10,0xe0,0xa2,0x03,0xa9,0x01,0x48, - 0xb5,0x13,0x8d,0x03,0x02,0x28,0x2e,0x03, - 0x02,0x08,0xad,0x03,0x02,0xdd,0x24,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xdd,0x34,0x02, - 0xd0,0xfe,0xca,0x10,0xe0,0xa2,0x03,0xa9, - 0xff,0x48,0xb5,0x13,0x8d,0x03,0x02,0x28, - 0x2e,0x03,0x02,0x08,0xad,0x03,0x02,0xdd, - 0x24,0x02,0xd0,0xfe,0x68,0x49,0x7c,0xdd, - 0x34,0x02,0xd0,0xfe,0xca,0x10,0xe0,0xa2, - 0x03,0xa9,0x00,0x48,0xb5,0x13,0x8d,0x03, - 0x02,0x28,0x6e,0x03,0x02,0x08,0xad,0x03, - 0x02,0xdd,0x28,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xdd,0x38,0x02,0xd0,0xfe,0xca,0x10, - 0xe0,0xa2,0x03,0xa9,0xfe,0x48,0xb5,0x13, - 0x8d,0x03,0x02,0x28,0x6e,0x03,0x02,0x08, - 0xad,0x03,0x02,0xdd,0x28,0x02,0xd0,0xfe, - 0x68,0x49,0x7c,0xdd,0x38,0x02,0xd0,0xfe, - 0xca,0x10,0xe0,0xa2,0x03,0xa9,0x01,0x48, - 0xb5,0x13,0x8d,0x03,0x02,0x28,0x6e,0x03, - 0x02,0x08,0xad,0x03,0x02,0xdd,0x2c,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xdd,0x3c,0x02, - 0xd0,0xfe,0xca,0x10,0xe0,0xa2,0x03,0xa9, - 0xff,0x48,0xb5,0x13,0x8d,0x03,0x02,0x28, - 0x6e,0x03,0x02,0x08,0xad,0x03,0x02,0xdd, - 0x2c,0x02,0xd0,0xfe,0x68,0x49,0x7c,0xdd, - 0x3c,0x02,0xd0,0xfe,0xca,0x10,0xe0,0xad, - 0x00,0x02,0xc9,0x1f,0xd0,0xfe,0xa9,0x20, - 0x8d,0x00,0x02,0xa2,0x03,0xa9,0x00,0x48, - 0xb5,0x13,0x95,0x0c,0x28,0x16,0x0c,0x08, - 0xb5,0x0c,0xdd,0x20,0x02,0xd0,0xfe,0x68, - 0x49,0x30,0xdd,0x30,0x02,0xd0,0xfe,0xca, - 0x10,0xe3,0xa2,0x03,0xa9,0xff,0x48,0xb5, - 0x13,0x95,0x0c,0x28,0x16,0x0c,0x08,0xb5, - 0x0c,0xdd,0x20,0x02,0xd0,0xfe,0x68,0x49, - 0x7c,0xdd,0x30,0x02,0xd0,0xfe,0xca,0x10, - 0xe3,0xa2,0x03,0xa9,0x00,0x48,0xb5,0x13, - 0x95,0x0c,0x28,0x56,0x0c,0x08,0xb5,0x0c, - 0xdd,0x28,0x02,0xd0,0xfe,0x68,0x49,0x30, - 0xdd,0x38,0x02,0xd0,0xfe,0xca,0x10,0xe3, - 0xa2,0x03,0xa9,0xff,0x48,0xb5,0x13,0x95, - 0x0c,0x28,0x56,0x0c,0x08,0xb5,0x0c,0xdd, - 0x28,0x02,0xd0,0xfe,0x68,0x49,0x7c,0xdd, - 0x38,0x02,0xd0,0xfe,0xca,0x10,0xe3,0xa2, - 0x03,0xa9,0x00,0x48,0xb5,0x13,0x95,0x0c, - 0x28,0x36,0x0c,0x08,0xb5,0x0c,0xdd,0x20, - 0x02,0xd0,0xfe,0x68,0x49,0x30,0xdd,0x30, - 0x02,0xd0,0xfe,0xca,0x10,0xe3,0xa2,0x03, - 0xa9,0xfe,0x48,0xb5,0x13,0x95,0x0c,0x28, - 0x36,0x0c,0x08,0xb5,0x0c,0xdd,0x20,0x02, - 0xd0,0xfe,0x68,0x49,0x7c,0xdd,0x30,0x02, - 0xd0,0xfe,0xca,0x10,0xe3,0xa2,0x03,0xa9, - 0x01,0x48,0xb5,0x13,0x95,0x0c,0x28,0x36, - 0x0c,0x08,0xb5,0x0c,0xdd,0x24,0x02,0xd0, - 0xfe,0x68,0x49,0x30,0xdd,0x34,0x02,0xd0, - 0xfe,0xca,0x10,0xe3,0xa2,0x03,0xa9,0xff, - 0x48,0xb5,0x13,0x95,0x0c,0x28,0x36,0x0c, - 0x08,0xb5,0x0c,0xdd,0x24,0x02,0xd0,0xfe, - 0x68,0x49,0x7c,0xdd,0x34,0x02,0xd0,0xfe, - 0xca,0x10,0xe3,0xa2,0x03,0xa9,0x00,0x48, - 0xb5,0x13,0x95,0x0c,0x28,0x76,0x0c,0x08, - 0xb5,0x0c,0xdd,0x28,0x02,0xd0,0xfe,0x68, - 0x49,0x30,0xdd,0x38,0x02,0xd0,0xfe,0xca, - 0x10,0xe3,0xa2,0x03,0xa9,0xfe,0x48,0xb5, - 0x13,0x95,0x0c,0x28,0x76,0x0c,0x08,0xb5, - 0x0c,0xdd,0x28,0x02,0xd0,0xfe,0x68,0x49, - 0x7c,0xdd,0x38,0x02,0xd0,0xfe,0xca,0x10, - 0xe3,0xa2,0x03,0xa9,0x01,0x48,0xb5,0x13, - 0x95,0x0c,0x28,0x76,0x0c,0x08,0xb5,0x0c, - 0xdd,0x2c,0x02,0xd0,0xfe,0x68,0x49,0x30, - 0xdd,0x3c,0x02,0xd0,0xfe,0xca,0x10,0xe3, - 0xa2,0x03,0xa9,0xff,0x48,0xb5,0x13,0x95, - 0x0c,0x28,0x76,0x0c,0x08,0xb5,0x0c,0xdd, - 0x2c,0x02,0xd0,0xfe,0x68,0x49,0x7c,0xdd, - 0x3c,0x02,0xd0,0xfe,0xca,0x10,0xe3,0xad, - 0x00,0x02,0xc9,0x20,0xd0,0xfe,0xa9,0x21, - 0x8d,0x00,0x02,0xa2,0x03,0xa9,0x00,0x48, - 0xb5,0x13,0x9d,0x03,0x02,0x28,0x1e,0x03, - 0x02,0x08,0xbd,0x03,0x02,0xdd,0x20,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xdd,0x30,0x02, - 0xd0,0xfe,0xca,0x10,0xe0,0xa2,0x03,0xa9, - 0xff,0x48,0xb5,0x13,0x9d,0x03,0x02,0x28, - 0x1e,0x03,0x02,0x08,0xbd,0x03,0x02,0xdd, - 0x20,0x02,0xd0,0xfe,0x68,0x49,0x7c,0xdd, - 0x30,0x02,0xd0,0xfe,0xca,0x10,0xe0,0xa2, - 0x03,0xa9,0x00,0x48,0xb5,0x13,0x9d,0x03, - 0x02,0x28,0x5e,0x03,0x02,0x08,0xbd,0x03, - 0x02,0xdd,0x28,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xdd,0x38,0x02,0xd0,0xfe,0xca,0x10, - 0xe0,0xa2,0x03,0xa9,0xff,0x48,0xb5,0x13, - 0x9d,0x03,0x02,0x28,0x5e,0x03,0x02,0x08, - 0xbd,0x03,0x02,0xdd,0x28,0x02,0xd0,0xfe, - 0x68,0x49,0x7c,0xdd,0x38,0x02,0xd0,0xfe, - 0xca,0x10,0xe0,0xa2,0x03,0xa9,0x00,0x48, - 0xb5,0x13,0x9d,0x03,0x02,0x28,0x3e,0x03, - 0x02,0x08,0xbd,0x03,0x02,0xdd,0x20,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xdd,0x30,0x02, - 0xd0,0xfe,0xca,0x10,0xe0,0xa2,0x03,0xa9, - 0xfe,0x48,0xb5,0x13,0x9d,0x03,0x02,0x28, - 0x3e,0x03,0x02,0x08,0xbd,0x03,0x02,0xdd, - 0x20,0x02,0xd0,0xfe,0x68,0x49,0x7c,0xdd, - 0x30,0x02,0xd0,0xfe,0xca,0x10,0xe0,0xa2, - 0x03,0xa9,0x01,0x48,0xb5,0x13,0x9d,0x03, - 0x02,0x28,0x3e,0x03,0x02,0x08,0xbd,0x03, - 0x02,0xdd,0x24,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xdd,0x34,0x02,0xd0,0xfe,0xca,0x10, - 0xe0,0xa2,0x03,0xa9,0xff,0x48,0xb5,0x13, - 0x9d,0x03,0x02,0x28,0x3e,0x03,0x02,0x08, - 0xbd,0x03,0x02,0xdd,0x24,0x02,0xd0,0xfe, - 0x68,0x49,0x7c,0xdd,0x34,0x02,0xd0,0xfe, - 0xca,0x10,0xe0,0xa2,0x03,0xa9,0x00,0x48, - 0xb5,0x13,0x9d,0x03,0x02,0x28,0x7e,0x03, - 0x02,0x08,0xbd,0x03,0x02,0xdd,0x28,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xdd,0x38,0x02, - 0xd0,0xfe,0xca,0x10,0xe0,0xa2,0x03,0xa9, - 0xfe,0x48,0xb5,0x13,0x9d,0x03,0x02,0x28, - 0x7e,0x03,0x02,0x08,0xbd,0x03,0x02,0xdd, - 0x28,0x02,0xd0,0xfe,0x68,0x49,0x7c,0xdd, - 0x38,0x02,0xd0,0xfe,0xca,0x10,0xe0,0xa2, - 0x03,0xa9,0x01,0x48,0xb5,0x13,0x9d,0x03, - 0x02,0x28,0x7e,0x03,0x02,0x08,0xbd,0x03, - 0x02,0xdd,0x2c,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xdd,0x3c,0x02,0xd0,0xfe,0xca,0x10, - 0xe0,0xa2,0x03,0xa9,0xff,0x48,0xb5,0x13, - 0x9d,0x03,0x02,0x28,0x7e,0x03,0x02,0x08, - 0xbd,0x03,0x02,0xdd,0x2c,0x02,0xd0,0xfe, - 0x68,0x49,0x7c,0xdd,0x3c,0x02,0xd0,0xfe, - 0xca,0x10,0xe0,0xad,0x00,0x02,0xc9,0x21, - 0xd0,0xfe,0xa9,0x22,0x8d,0x00,0x02,0xa2, - 0x00,0xa9,0x7e,0x85,0x0c,0xa9,0x00,0x48, - 0x28,0xe6,0x0c,0x08,0xa5,0x0c,0xdd,0x40, - 0x02,0xd0,0xfe,0x68,0x49,0x30,0xdd,0x45, - 0x02,0xd0,0xfe,0xe8,0xe0,0x02,0xd0,0x04, - 0xa9,0xfe,0x85,0x0c,0xe0,0x05,0xd0,0xdd, - 0xca,0xe6,0x0c,0xa9,0x00,0x48,0x28,0xc6, - 0x0c,0x08,0xa5,0x0c,0xdd,0x40,0x02,0xd0, - 0xfe,0x68,0x49,0x30,0xdd,0x45,0x02,0xd0, - 0xfe,0xca,0x30,0x0a,0xe0,0x01,0xd0,0xe3, - 0xa9,0x81,0x85,0x0c,0xd0,0xdd,0xa2,0x00, - 0xa9,0x7e,0x85,0x0c,0xa9,0xff,0x48,0x28, - 0xe6,0x0c,0x08,0xa5,0x0c,0xdd,0x40,0x02, - 0xd0,0xfe,0x68,0x49,0x7d,0xdd,0x45,0x02, - 0xd0,0xfe,0xe8,0xe0,0x02,0xd0,0x04,0xa9, - 0xfe,0x85,0x0c,0xe0,0x05,0xd0,0xdd,0xca, - 0xe6,0x0c,0xa9,0xff,0x48,0x28,0xc6,0x0c, - 0x08,0xa5,0x0c,0xdd,0x40,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xdd,0x45,0x02,0xd0,0xfe, - 0xca,0x30,0x0a,0xe0,0x01,0xd0,0xe3,0xa9, - 0x81,0x85,0x0c,0xd0,0xdd,0xad,0x00,0x02, - 0xc9,0x22,0xd0,0xfe,0xa9,0x23,0x8d,0x00, - 0x02,0xa2,0x00,0xa9,0x7e,0x8d,0x03,0x02, - 0xa9,0x00,0x48,0x28,0xee,0x03,0x02,0x08, - 0xad,0x03,0x02,0xdd,0x40,0x02,0xd0,0xfe, - 0x68,0x49,0x30,0xdd,0x45,0x02,0xd0,0xfe, - 0xe8,0xe0,0x02,0xd0,0x05,0xa9,0xfe,0x8d, - 0x03,0x02,0xe0,0x05,0xd0,0xda,0xca,0xee, - 0x03,0x02,0xa9,0x00,0x48,0x28,0xce,0x03, - 0x02,0x08,0xad,0x03,0x02,0xdd,0x40,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xdd,0x45,0x02, - 0xd0,0xfe,0xca,0x30,0x0b,0xe0,0x01,0xd0, - 0xe1,0xa9,0x81,0x8d,0x03,0x02,0xd0,0xda, - 0xa2,0x00,0xa9,0x7e,0x8d,0x03,0x02,0xa9, - 0xff,0x48,0x28,0xee,0x03,0x02,0x08,0xad, - 0x03,0x02,0xdd,0x40,0x02,0xd0,0xfe,0x68, - 0x49,0x7d,0xdd,0x45,0x02,0xd0,0xfe,0xe8, - 0xe0,0x02,0xd0,0x05,0xa9,0xfe,0x8d,0x03, - 0x02,0xe0,0x05,0xd0,0xda,0xca,0xee,0x03, - 0x02,0xa9,0xff,0x48,0x28,0xce,0x03,0x02, - 0x08,0xad,0x03,0x02,0xdd,0x40,0x02,0xd0, - 0xfe,0x68,0x49,0x7d,0xdd,0x45,0x02,0xd0, - 0xfe,0xca,0x30,0x0b,0xe0,0x01,0xd0,0xe1, - 0xa9,0x81,0x8d,0x03,0x02,0xd0,0xda,0xad, - 0x00,0x02,0xc9,0x23,0xd0,0xfe,0xa9,0x24, - 0x8d,0x00,0x02,0xa2,0x00,0xa9,0x7e,0x95, - 0x0c,0xa9,0x00,0x48,0x28,0xf6,0x0c,0x08, - 0xb5,0x0c,0xdd,0x40,0x02,0xd0,0xfe,0x68, - 0x49,0x30,0xdd,0x45,0x02,0xd0,0xfe,0xb5, - 0x0c,0xe8,0xe0,0x02,0xd0,0x02,0xa9,0xfe, - 0xe0,0x05,0xd0,0xdb,0xca,0xa9,0x02,0x95, - 0x0c,0xa9,0x00,0x48,0x28,0xd6,0x0c,0x08, - 0xb5,0x0c,0xdd,0x40,0x02,0xd0,0xfe,0x68, - 0x49,0x30,0xdd,0x45,0x02,0xd0,0xfe,0xb5, - 0x0c,0xca,0x30,0x08,0xe0,0x01,0xd0,0xdf, - 0xa9,0x81,0xd0,0xdb,0xa2,0x00,0xa9,0x7e, - 0x95,0x0c,0xa9,0xff,0x48,0x28,0xf6,0x0c, - 0x08,0xb5,0x0c,0xdd,0x40,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xdd,0x45,0x02,0xd0,0xfe, - 0xb5,0x0c,0xe8,0xe0,0x02,0xd0,0x02,0xa9, - 0xfe,0xe0,0x05,0xd0,0xdb,0xca,0xa9,0x02, - 0x95,0x0c,0xa9,0xff,0x48,0x28,0xd6,0x0c, - 0x08,0xb5,0x0c,0xdd,0x40,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xdd,0x45,0x02,0xd0,0xfe, - 0xb5,0x0c,0xca,0x30,0x08,0xe0,0x01,0xd0, - 0xdf,0xa9,0x81,0xd0,0xdb,0xad,0x00,0x02, - 0xc9,0x24,0xd0,0xfe,0xa9,0x25,0x8d,0x00, - 0x02,0xa2,0x00,0xa9,0x7e,0x9d,0x03,0x02, - 0xa9,0x00,0x48,0x28,0xfe,0x03,0x02,0x08, - 0xbd,0x03,0x02,0xdd,0x40,0x02,0xd0,0xfe, - 0x68,0x49,0x30,0xdd,0x45,0x02,0xd0,0xfe, - 0xbd,0x03,0x02,0xe8,0xe0,0x02,0xd0,0x02, - 0xa9,0xfe,0xe0,0x05,0xd0,0xd7,0xca,0xa9, - 0x02,0x9d,0x03,0x02,0xa9,0x00,0x48,0x28, - 0xde,0x03,0x02,0x08,0xbd,0x03,0x02,0xdd, - 0x40,0x02,0xd0,0xfe,0x68,0x49,0x30,0xdd, - 0x45,0x02,0xd0,0xfe,0xbd,0x03,0x02,0xca, - 0x30,0x08,0xe0,0x01,0xd0,0xdb,0xa9,0x81, - 0xd0,0xd7,0xa2,0x00,0xa9,0x7e,0x9d,0x03, - 0x02,0xa9,0xff,0x48,0x28,0xfe,0x03,0x02, - 0x08,0xbd,0x03,0x02,0xdd,0x40,0x02,0xd0, - 0xfe,0x68,0x49,0x7d,0xdd,0x45,0x02,0xd0, - 0xfe,0xbd,0x03,0x02,0xe8,0xe0,0x02,0xd0, - 0x02,0xa9,0xfe,0xe0,0x05,0xd0,0xd7,0xca, - 0xa9,0x02,0x9d,0x03,0x02,0xa9,0xff,0x48, - 0x28,0xde,0x03,0x02,0x08,0xbd,0x03,0x02, - 0xdd,0x40,0x02,0xd0,0xfe,0x68,0x49,0x7d, - 0xdd,0x45,0x02,0xd0,0xfe,0xbd,0x03,0x02, - 0xca,0x30,0x08,0xe0,0x01,0xd0,0xdb,0xa9, - 0x81,0xd0,0xd7,0xad,0x00,0x02,0xc9,0x25, - 0xd0,0xfe,0xa9,0x26,0x8d,0x00,0x02,0xa2, - 0x03,0xb5,0x1c,0x8d,0x09,0x02,0xa9,0x00, - 0x48,0xbd,0x5a,0x02,0x28,0x20,0x08,0x02, - 0x08,0xdd,0x62,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xdd,0x66,0x02,0xd0,0xfe,0xca,0x10, - 0xe0,0xa2,0x03,0xb5,0x1c,0x8d,0x09,0x02, - 0xa9,0xff,0x48,0xbd,0x5a,0x02,0x28,0x20, - 0x08,0x02,0x08,0xdd,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xdd,0x66,0x02,0xd0,0xfe, - 0xca,0x10,0xe0,0xa2,0x03,0xb5,0x1c,0x85, - 0x0c,0xa9,0x00,0x48,0xbd,0x5a,0x02,0x28, - 0x25,0x0c,0x08,0xdd,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x30,0xdd,0x66,0x02,0xd0,0xfe, - 0xca,0x10,0xe2,0xa2,0x03,0xb5,0x1c,0x85, - 0x0c,0xa9,0xff,0x48,0xbd,0x5a,0x02,0x28, - 0x25,0x0c,0x08,0xdd,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xdd,0x66,0x02,0xd0,0xfe, - 0xca,0x10,0xe2,0xa2,0x03,0xb5,0x1c,0x8d, - 0x03,0x02,0xa9,0x00,0x48,0xbd,0x5a,0x02, - 0x28,0x2d,0x03,0x02,0x08,0xdd,0x62,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xdd,0x66,0x02, - 0xd0,0xfe,0xca,0x10,0xe0,0xa2,0x03,0xb5, - 0x1c,0x8d,0x03,0x02,0xa9,0xff,0x48,0xbd, - 0x5a,0x02,0x28,0x2d,0x03,0x02,0x08,0xdd, - 0x62,0x02,0xd0,0xfe,0x68,0x49,0x7d,0xdd, - 0x66,0x02,0xd0,0xfe,0xca,0x10,0x02,0xa2, - 0x03,0xa9,0x00,0x48,0xbd,0x5a,0x02,0x28, - 0x35,0x1c,0x08,0xdd,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x30,0xdd,0x66,0x02,0xd0,0xfe, - 0xca,0x10,0xe6,0xa2,0x03,0xa9,0xff,0x48, - 0xbd,0x5a,0x02,0x28,0x35,0x1c,0x08,0xdd, - 0x62,0x02,0xd0,0xfe,0x68,0x49,0x7d,0xdd, - 0x66,0x02,0xd0,0xfe,0xca,0x10,0xe6,0xa2, - 0x03,0xa9,0x00,0x48,0xbd,0x5a,0x02,0x28, - 0x3d,0x4e,0x02,0x08,0xdd,0x62,0x02,0xd0, - 0xfe,0x68,0x49,0x30,0xdd,0x66,0x02,0xd0, - 0xfe,0xca,0x10,0xe5,0xa2,0x03,0xa9,0xff, - 0x48,0xbd,0x5a,0x02,0x28,0x3d,0x4e,0x02, - 0x08,0xdd,0x62,0x02,0xd0,0xfe,0x68,0x49, - 0x7d,0xdd,0x66,0x02,0xd0,0xfe,0xca,0x10, - 0xe5,0xa0,0x03,0xa9,0x00,0x48,0xb9,0x5a, - 0x02,0x28,0x39,0x4e,0x02,0x08,0xd9,0x62, - 0x02,0xd0,0xfe,0x68,0x49,0x30,0xd9,0x66, - 0x02,0xd0,0xfe,0x88,0x10,0xe5,0xa0,0x03, - 0xa9,0xff,0x48,0xb9,0x5a,0x02,0x28,0x39, - 0x4e,0x02,0x08,0xd9,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xd9,0x66,0x02,0xd0,0xfe, - 0x88,0x10,0xe5,0xa2,0x06,0xa0,0x03,0xa9, - 0x00,0x48,0xb9,0x5a,0x02,0x28,0x21,0x3a, - 0x08,0xd9,0x62,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xd9,0x66,0x02,0xd0,0xfe,0xca,0xca, - 0x88,0x10,0xe4,0xa2,0x06,0xa0,0x03,0xa9, - 0xff,0x48,0xb9,0x5a,0x02,0x28,0x21,0x3a, - 0x08,0xd9,0x62,0x02,0xd0,0xfe,0x68,0x49, - 0x7d,0xd9,0x66,0x02,0xd0,0xfe,0xca,0xca, - 0x88,0x10,0xe4,0xa0,0x03,0xa9,0x00,0x48, - 0xb9,0x5a,0x02,0x28,0x31,0x3a,0x08,0xd9, - 0x62,0x02,0xd0,0xfe,0x68,0x49,0x30,0xd9, - 0x66,0x02,0xd0,0xfe,0x88,0x10,0xe6,0xa0, - 0x03,0xa9,0xff,0x48,0xb9,0x5a,0x02,0x28, - 0x31,0x3a,0x08,0xd9,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xd9,0x66,0x02,0xd0,0xfe, - 0x88,0x10,0xe6,0xad,0x00,0x02,0xc9,0x26, - 0xd0,0xfe,0xa9,0x27,0x8d,0x00,0x02,0xa2, - 0x03,0xb5,0x20,0x8d,0x0c,0x02,0xa9,0x00, - 0x48,0xbd,0x5e,0x02,0x28,0x20,0x0b,0x02, - 0x08,0xdd,0x62,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xdd,0x66,0x02,0xd0,0xfe,0xca,0x10, - 0xe0,0xa2,0x03,0xb5,0x20,0x8d,0x0c,0x02, - 0xa9,0xff,0x48,0xbd,0x5e,0x02,0x28,0x20, - 0x0b,0x02,0x08,0xdd,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xdd,0x66,0x02,0xd0,0xfe, - 0xca,0x10,0xe0,0xa2,0x03,0xb5,0x20,0x85, - 0x0c,0xa9,0x00,0x48,0xbd,0x5e,0x02,0x28, - 0x45,0x0c,0x08,0xdd,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x30,0xdd,0x66,0x02,0xd0,0xfe, - 0xca,0x10,0xe2,0xa2,0x03,0xb5,0x20,0x85, - 0x0c,0xa9,0xff,0x48,0xbd,0x5e,0x02,0x28, - 0x45,0x0c,0x08,0xdd,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xdd,0x66,0x02,0xd0,0xfe, - 0xca,0x10,0xe2,0xa2,0x03,0xb5,0x20,0x8d, - 0x03,0x02,0xa9,0x00,0x48,0xbd,0x5e,0x02, - 0x28,0x4d,0x03,0x02,0x08,0xdd,0x62,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xdd,0x66,0x02, - 0xd0,0xfe,0xca,0x10,0xe0,0xa2,0x03,0xb5, - 0x20,0x8d,0x03,0x02,0xa9,0xff,0x48,0xbd, - 0x5e,0x02,0x28,0x4d,0x03,0x02,0x08,0xdd, - 0x62,0x02,0xd0,0xfe,0x68,0x49,0x7d,0xdd, - 0x66,0x02,0xd0,0xfe,0xca,0x10,0x02,0xa2, - 0x03,0xa9,0x00,0x48,0xbd,0x5e,0x02,0x28, - 0x55,0x20,0x08,0xdd,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x30,0xdd,0x66,0x02,0xd0,0xfe, - 0xca,0x10,0xe6,0xa2,0x03,0xa9,0xff,0x48, - 0xbd,0x5e,0x02,0x28,0x55,0x20,0x08,0xdd, - 0x62,0x02,0xd0,0xfe,0x68,0x49,0x7d,0xdd, - 0x66,0x02,0xd0,0xfe,0xca,0x10,0xe6,0xa2, - 0x03,0xa9,0x00,0x48,0xbd,0x5e,0x02,0x28, - 0x5d,0x52,0x02,0x08,0xdd,0x62,0x02,0xd0, - 0xfe,0x68,0x49,0x30,0xdd,0x66,0x02,0xd0, - 0xfe,0xca,0x10,0xe5,0xa2,0x03,0xa9,0xff, - 0x48,0xbd,0x5e,0x02,0x28,0x5d,0x52,0x02, - 0x08,0xdd,0x62,0x02,0xd0,0xfe,0x68,0x49, - 0x7d,0xdd,0x66,0x02,0xd0,0xfe,0xca,0x10, - 0xe5,0xa0,0x03,0xa9,0x00,0x48,0xb9,0x5e, - 0x02,0x28,0x59,0x52,0x02,0x08,0xd9,0x62, - 0x02,0xd0,0xfe,0x68,0x49,0x30,0xd9,0x66, - 0x02,0xd0,0xfe,0x88,0x10,0xe5,0xa0,0x03, - 0xa9,0xff,0x48,0xb9,0x5e,0x02,0x28,0x59, - 0x52,0x02,0x08,0xd9,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xd9,0x66,0x02,0xd0,0xfe, - 0x88,0x10,0xe5,0xa2,0x06,0xa0,0x03,0xa9, - 0x00,0x48,0xb9,0x5e,0x02,0x28,0x41,0x42, - 0x08,0xd9,0x62,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xd9,0x66,0x02,0xd0,0xfe,0xca,0xca, - 0x88,0x10,0xe4,0xa2,0x06,0xa0,0x03,0xa9, - 0xff,0x48,0xb9,0x5e,0x02,0x28,0x41,0x42, - 0x08,0xd9,0x62,0x02,0xd0,0xfe,0x68,0x49, - 0x7d,0xd9,0x66,0x02,0xd0,0xfe,0xca,0xca, - 0x88,0x10,0xe4,0xa0,0x03,0xa9,0x00,0x48, - 0xb9,0x5e,0x02,0x28,0x51,0x42,0x08,0xd9, - 0x62,0x02,0xd0,0xfe,0x68,0x49,0x30,0xd9, - 0x66,0x02,0xd0,0xfe,0x88,0x10,0xe6,0xa0, - 0x03,0xa9,0xff,0x48,0xb9,0x5e,0x02,0x28, - 0x51,0x42,0x08,0xd9,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xd9,0x66,0x02,0xd0,0xfe, - 0x88,0x10,0xe6,0xad,0x00,0x02,0xc9,0x27, - 0xd0,0xfe,0xa9,0x28,0x8d,0x00,0x02,0xa2, - 0x03,0xb5,0x18,0x8d,0x0f,0x02,0xa9,0x00, - 0x48,0xbd,0x56,0x02,0x28,0x20,0x0e,0x02, - 0x08,0xdd,0x62,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xdd,0x66,0x02,0xd0,0xfe,0xca,0x10, - 0xe0,0xa2,0x03,0xb5,0x18,0x8d,0x0f,0x02, - 0xa9,0xff,0x48,0xbd,0x56,0x02,0x28,0x20, - 0x0e,0x02,0x08,0xdd,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xdd,0x66,0x02,0xd0,0xfe, - 0xca,0x10,0xe0,0xa2,0x03,0xb5,0x18,0x85, - 0x0c,0xa9,0x00,0x48,0xbd,0x56,0x02,0x28, - 0x05,0x0c,0x08,0xdd,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x30,0xdd,0x66,0x02,0xd0,0xfe, - 0xca,0x10,0xe2,0xa2,0x03,0xb5,0x18,0x85, - 0x0c,0xa9,0xff,0x48,0xbd,0x56,0x02,0x28, - 0x05,0x0c,0x08,0xdd,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xdd,0x66,0x02,0xd0,0xfe, - 0xca,0x10,0xe2,0xa2,0x03,0xb5,0x18,0x8d, - 0x03,0x02,0xa9,0x00,0x48,0xbd,0x56,0x02, - 0x28,0x0d,0x03,0x02,0x08,0xdd,0x62,0x02, - 0xd0,0xfe,0x68,0x49,0x30,0xdd,0x66,0x02, - 0xd0,0xfe,0xca,0x10,0xe0,0xa2,0x03,0xb5, - 0x18,0x8d,0x03,0x02,0xa9,0xff,0x48,0xbd, - 0x56,0x02,0x28,0x0d,0x03,0x02,0x08,0xdd, - 0x62,0x02,0xd0,0xfe,0x68,0x49,0x7d,0xdd, - 0x66,0x02,0xd0,0xfe,0xca,0x10,0x02,0xa2, - 0x03,0xa9,0x00,0x48,0xbd,0x56,0x02,0x28, - 0x15,0x18,0x08,0xdd,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x30,0xdd,0x66,0x02,0xd0,0xfe, - 0xca,0x10,0xe6,0xa2,0x03,0xa9,0xff,0x48, - 0xbd,0x56,0x02,0x28,0x15,0x18,0x08,0xdd, - 0x62,0x02,0xd0,0xfe,0x68,0x49,0x7d,0xdd, - 0x66,0x02,0xd0,0xfe,0xca,0x10,0xe6,0xa2, - 0x03,0xa9,0x00,0x48,0xbd,0x56,0x02,0x28, - 0x1d,0x4a,0x02,0x08,0xdd,0x62,0x02,0xd0, - 0xfe,0x68,0x49,0x30,0xdd,0x66,0x02,0xd0, - 0xfe,0xca,0x10,0xe5,0xa2,0x03,0xa9,0xff, - 0x48,0xbd,0x56,0x02,0x28,0x1d,0x4a,0x02, - 0x08,0xdd,0x62,0x02,0xd0,0xfe,0x68,0x49, - 0x7d,0xdd,0x66,0x02,0xd0,0xfe,0xca,0x10, - 0xe5,0xa0,0x03,0xa9,0x00,0x48,0xb9,0x56, - 0x02,0x28,0x19,0x4a,0x02,0x08,0xd9,0x62, - 0x02,0xd0,0xfe,0x68,0x49,0x30,0xd9,0x66, - 0x02,0xd0,0xfe,0x88,0x10,0xe5,0xa0,0x03, - 0xa9,0xff,0x48,0xb9,0x56,0x02,0x28,0x19, - 0x4a,0x02,0x08,0xd9,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xd9,0x66,0x02,0xd0,0xfe, - 0x88,0x10,0xe5,0xa2,0x06,0xa0,0x03,0xa9, - 0x00,0x48,0xb9,0x56,0x02,0x28,0x01,0x4a, - 0x08,0xd9,0x62,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xd9,0x66,0x02,0xd0,0xfe,0xca,0xca, - 0x88,0x10,0xe4,0xa2,0x06,0xa0,0x03,0xa9, - 0xff,0x48,0xb9,0x56,0x02,0x28,0x01,0x4a, - 0x08,0xd9,0x62,0x02,0xd0,0xfe,0x68,0x49, - 0x7d,0xd9,0x66,0x02,0xd0,0xfe,0xca,0xca, - 0x88,0x10,0xe4,0xa0,0x03,0xa9,0x00,0x48, - 0xb9,0x56,0x02,0x28,0x11,0x4a,0x08,0xd9, - 0x62,0x02,0xd0,0xfe,0x68,0x49,0x30,0xd9, - 0x66,0x02,0xd0,0xfe,0x88,0x10,0xe6,0xa0, - 0x03,0xa9,0xff,0x48,0xb9,0x56,0x02,0x28, - 0x11,0x4a,0x08,0xd9,0x62,0x02,0xd0,0xfe, - 0x68,0x49,0x7d,0xd9,0x66,0x02,0xd0,0xfe, - 0x88,0x10,0xe6,0x58,0xad,0x00,0x02,0xc9, - 0x28,0xd0,0xfe,0xa9,0x29,0x8d,0x00,0x02, - 0xd8,0xa2,0x0e,0xa0,0xff,0xa9,0x00,0x85, - 0x0c,0x85,0x0d,0x85,0x0e,0x8d,0x03,0x02, - 0x85,0x0f,0x85,0x10,0xa9,0xff,0x85,0x12, - 0x8d,0x04,0x02,0xa9,0x02,0x85,0x11,0x18, - 0x20,0xa2,0x35,0xe6,0x0c,0xe6,0x0f,0x08, - 0x08,0x68,0x29,0x82,0x28,0xd0,0x02,0xe6, - 0x10,0x05,0x10,0x85,0x11,0x38,0x20,0xa2, - 0x35,0xc6,0x0c,0xe6,0x0d,0xd0,0xe0,0xa9, - 0x00,0x85,0x10,0xee,0x03,0x02,0xe6,0x0e, - 0x08,0x68,0x29,0x82,0x85,0x11,0xc6,0x12, - 0xce,0x04,0x02,0xa5,0x0e,0x85,0x0f,0xd0, - 0xc6,0xad,0x00,0x02,0xc9,0x29,0xd0,0xfe, - 0xa9,0x2a,0x8d,0x00,0x02,0xf8,0xa2,0x0e, - 0xa0,0xff,0xa9,0x99,0x85,0x0d,0x85,0x0e, - 0x8d,0x03,0x02,0x85,0x0f,0xa9,0x01,0x85, - 0x0c,0x85,0x10,0xa9,0x00,0x85,0x12,0x8d, - 0x04,0x02,0x38,0x20,0x6f,0x34,0xc6,0x0c, - 0xa5,0x0f,0xd0,0x08,0xc6,0x10,0xa9,0x99, - 0x85,0x0f,0xd0,0x12,0x29,0x0f,0xd0,0x0c, - 0xc6,0x0f,0xc6,0x0f,0xc6,0x0f,0xc6,0x0f, - 0xc6,0x0f,0xc6,0x0f,0xc6,0x0f,0x18,0x20, - 0x6f,0x34,0xe6,0x0c,0xa5,0x0d,0xf0,0x15, - 0x29,0x0f,0xd0,0x0c,0xc6,0x0d,0xc6,0x0d, - 0xc6,0x0d,0xc6,0x0d,0xc6,0x0d,0xc6,0x0d, - 0xc6,0x0d,0x4c,0x8a,0x33,0xa9,0x99,0x85, - 0x0d,0xa5,0x0e,0xf0,0x30,0x29,0x0f,0xd0, - 0x18,0xc6,0x0e,0xc6,0x0e,0xc6,0x0e,0xc6, - 0x0e,0xc6,0x0e,0xc6,0x0e,0xe6,0x12,0xe6, - 0x12,0xe6,0x12,0xe6,0x12,0xe6,0x12,0xe6, - 0x12,0xc6,0x0e,0xe6,0x12,0xa5,0x12,0x8d, - 0x04,0x02,0xa5,0x0e,0x8d,0x03,0x02,0x85, - 0x0f,0xe6,0x10,0xd0,0x85,0xad,0x00,0x02, - 0xc9,0x2a,0xd0,0xfe,0xa9,0x2b,0x8d,0x00, - 0x02,0x18,0xd8,0x08,0xa9,0x55,0x69,0x55, - 0xc9,0xaa,0xd0,0xfe,0x18,0xf8,0x08,0xa9, - 0x55,0x69,0x55,0xc9,0x10,0xd0,0xfe,0xd8, - 0x28,0xa9,0x55,0x69,0x55,0xc9,0x10,0xd0, - 0xfe,0x28,0xa9,0x55,0x69,0x55,0xc9,0xaa, - 0xd0,0xfe,0x18,0xa9,0x34,0x48,0xa9,0x55, - 0x48,0x08,0xf8,0xa9,0x34,0x48,0xa9,0x4c, - 0x48,0x08,0xd8,0x40,0xa9,0x55,0x69,0x55, - 0xc9,0x10,0xd0,0xfe,0x40,0xa9,0x55,0x69, - 0x55,0xc9,0xaa,0xd0,0xfe,0xad,0x00,0x02, - 0xc9,0x2b,0xd0,0xfe,0xa9,0xf0,0x8d,0x00, - 0x02,0x4c,0x69,0x34,0x4c,0x00,0x04,0x08, - 0xa5,0x0d,0x65,0x0e,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0x01,0xc5,0x10,0xd0,0xfe, - 0x28,0x08,0xa5,0x0d,0xe5,0x12,0x08,0xc5, - 0x0f,0xd0,0xfe,0x68,0x29,0x01,0xc5,0x10, - 0xd0,0xfe,0x28,0x08,0xa5,0x0d,0x6d,0x03, - 0x02,0x08,0xc5,0x0f,0xd0,0xfe,0x68,0x29, - 0x01,0xc5,0x10,0xd0,0xfe,0x28,0x08,0xa5, - 0x0d,0xed,0x04,0x02,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0x01,0xc5,0x10,0xd0,0xfe, - 0x28,0x08,0xa5,0x0e,0x8d,0x12,0x02,0xa5, - 0x0d,0x20,0x11,0x02,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0x01,0xc5,0x10,0xd0,0xfe, - 0x28,0x08,0xa5,0x12,0x8d,0x15,0x02,0xa5, - 0x0d,0x20,0x14,0x02,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0x01,0xc5,0x10,0xd0,0xfe, - 0x28,0x08,0xa5,0x0d,0x75,0x00,0x08,0xc5, - 0x0f,0xd0,0xfe,0x68,0x29,0x01,0xc5,0x10, - 0xd0,0xfe,0x28,0x08,0xa5,0x0d,0xf5,0x04, - 0x08,0xc5,0x0f,0xd0,0xfe,0x68,0x29,0x01, - 0xc5,0x10,0xd0,0xfe,0x28,0x08,0xa5,0x0d, - 0x7d,0xf5,0x01,0x08,0xc5,0x0f,0xd0,0xfe, - 0x68,0x29,0x01,0xc5,0x10,0xd0,0xfe,0x28, - 0x08,0xa5,0x0d,0xfd,0xf6,0x01,0x08,0xc5, - 0x0f,0xd0,0xfe,0x68,0x29,0x01,0xc5,0x10, - 0xd0,0xfe,0x28,0x08,0xa5,0x0d,0x79,0x04, - 0x01,0x08,0xc5,0x0f,0xd0,0xfe,0x68,0x29, - 0x01,0xc5,0x10,0xd0,0xfe,0x28,0x08,0xa5, - 0x0d,0xf9,0x05,0x01,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0x01,0xc5,0x10,0xd0,0xfe, - 0x28,0x08,0xa5,0x0d,0x61,0x44,0x08,0xc5, - 0x0f,0xd0,0xfe,0x68,0x29,0x01,0xc5,0x10, - 0xd0,0xfe,0x28,0x08,0xa5,0x0d,0xe1,0x46, - 0x08,0xc5,0x0f,0xd0,0xfe,0x68,0x29,0x01, - 0xc5,0x10,0xd0,0xfe,0x28,0x08,0xa5,0x0d, - 0x71,0x56,0x08,0xc5,0x0f,0xd0,0xfe,0x68, - 0x29,0x01,0xc5,0x10,0xd0,0xfe,0x28,0x08, - 0xa5,0x0d,0xf1,0x58,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0x01,0xc5,0x10,0xd0,0xfe, - 0x28,0x60,0xa5,0x11,0x29,0x83,0x48,0xa5, - 0x0d,0x45,0x0e,0x30,0x0a,0xa5,0x0d,0x45, - 0x0f,0x10,0x04,0x68,0x09,0x40,0x48,0x68, - 0x85,0x11,0x08,0xa5,0x0d,0x65,0x0e,0x08, - 0xc5,0x0f,0xd0,0xfe,0x68,0x29,0xc3,0xc5, - 0x11,0xd0,0xfe,0x28,0x08,0xa5,0x0d,0xe5, - 0x12,0x08,0xc5,0x0f,0xd0,0xfe,0x68,0x29, - 0xc3,0xc5,0x11,0xd0,0xfe,0x28,0x08,0xa5, - 0x0d,0x6d,0x03,0x02,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0xc3,0xc5,0x11,0xd0,0xfe, - 0x28,0x08,0xa5,0x0d,0xed,0x04,0x02,0x08, - 0xc5,0x0f,0xd0,0xfe,0x68,0x29,0xc3,0xc5, - 0x11,0xd0,0xfe,0x28,0x08,0xa5,0x0e,0x8d, - 0x12,0x02,0xa5,0x0d,0x20,0x11,0x02,0x08, - 0xc5,0x0f,0xd0,0xfe,0x68,0x29,0xc3,0xc5, - 0x11,0xd0,0xfe,0x28,0x08,0xa5,0x12,0x8d, - 0x15,0x02,0xa5,0x0d,0x20,0x14,0x02,0x08, - 0xc5,0x0f,0xd0,0xfe,0x68,0x29,0xc3,0xc5, - 0x11,0xd0,0xfe,0x28,0x08,0xa5,0x0d,0x75, - 0x00,0x08,0xc5,0x0f,0xd0,0xfe,0x68,0x29, - 0xc3,0xc5,0x11,0xd0,0xfe,0x28,0x08,0xa5, - 0x0d,0xf5,0x04,0x08,0xc5,0x0f,0xd0,0xfe, - 0x68,0x29,0xc3,0xc5,0x11,0xd0,0xfe,0x28, - 0x08,0xa5,0x0d,0x7d,0xf5,0x01,0x08,0xc5, - 0x0f,0xd0,0xfe,0x68,0x29,0xc3,0xc5,0x11, - 0xd0,0xfe,0x28,0x08,0xa5,0x0d,0xfd,0xf6, - 0x01,0x08,0xc5,0x0f,0xd0,0xfe,0x68,0x29, - 0xc3,0xc5,0x11,0xd0,0xfe,0x28,0x08,0xa5, - 0x0d,0x79,0x04,0x01,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0xc3,0xc5,0x11,0xd0,0xfe, - 0x28,0x08,0xa5,0x0d,0xf9,0x05,0x01,0x08, - 0xc5,0x0f,0xd0,0xfe,0x68,0x29,0xc3,0xc5, - 0x11,0xd0,0xfe,0x28,0x08,0xa5,0x0d,0x61, - 0x44,0x08,0xc5,0x0f,0xd0,0xfe,0x68,0x29, - 0xc3,0xc5,0x11,0xd0,0xfe,0x28,0x08,0xa5, - 0x0d,0xe1,0x46,0x08,0xc5,0x0f,0xd0,0xfe, - 0x68,0x29,0xc3,0xc5,0x11,0xd0,0xfe,0x28, - 0x08,0xa5,0x0d,0x71,0x56,0x08,0xc5,0x0f, - 0xd0,0xfe,0x68,0x29,0xc3,0xc5,0x11,0xd0, - 0xfe,0x28,0x08,0xa5,0x0d,0xf1,0x58,0x08, - 0xc5,0x0f,0xd0,0xfe,0x68,0x29,0xc3,0xc5, - 0x11,0xd0,0xfe,0x28,0x60,0x88,0x88,0x08, - 0x88,0x88,0x88,0x28,0xb0,0xfe,0x70,0xfe, - 0x30,0xfe,0xf0,0xfe,0xc9,0x46,0xd0,0xfe, - 0xe0,0x41,0xd0,0xfe,0xc0,0x4f,0xd0,0xfe, - 0x48,0x8a,0x48,0xba,0xe0,0xfd,0xd0,0xfe, - 0x68,0xaa,0xa9,0xff,0x48,0x28,0x68,0xe8, - 0x49,0xaa,0x4c,0x0f,0x09,0x00,0x27,0x37, - 0x64,0x09,0x4c,0x22,0x37,0x88,0x88,0x08, - 0x88,0x88,0x88,0x28,0xb0,0xfe,0x70,0xfe, - 0x30,0xfe,0xf0,0xfe,0xc9,0x49,0xd0,0xfe, - 0xe0,0x4e,0xd0,0xfe,0xc0,0x41,0xd0,0xfe, - 0x48,0x8a,0x48,0xba,0xe0,0xfd,0xd0,0xfe, - 0x68,0xaa,0xa9,0xff,0x48,0x28,0x68,0xe8, - 0x49,0xaa,0x6c,0x20,0x37,0x4c,0x55,0x37, - 0x4c,0x00,0x04,0x88,0x88,0x08,0x88,0x88, - 0x88,0x28,0xb0,0xfe,0x70,0xfe,0x30,0xfe, - 0xf0,0xfe,0xc9,0x4a,0xd0,0xfe,0xe0,0x53, - 0xd0,0xfe,0xc0,0x4f,0xd0,0xfe,0x48,0x8a, - 0x48,0xba,0xe0,0xfb,0xd0,0xfe,0xad,0xff, - 0x01,0xc9,0x09,0xd0,0xfe,0xad,0xfe,0x01, - 0xc9,0x9a,0xd0,0xfe,0xa9,0xff,0x48,0x28, - 0x68,0xaa,0x68,0xe8,0x49,0xaa,0x60,0x4c, - 0x97,0x37,0x4c,0x00,0x04,0x4c,0x9d,0x37, - 0x4c,0x00,0x04,0x4c,0xa3,0x37,0x4c,0x00, - 0x04,0x88,0x88,0x08,0x88,0x88,0x88,0xc9, - 0xbd,0xf0,0x42,0xc9,0x42,0xd0,0xfe,0xe0, - 0x52,0xd0,0xfe,0xc0,0x48,0xd0,0xfe,0x85, - 0x0a,0x86,0x0b,0xba,0xbd,0x02,0x01,0xc9, - 0x30,0xd0,0xfe,0x68,0xc9,0x34,0xd0,0xfe, - 0xba,0xe0,0xfc,0xd0,0xfe,0xad,0xff,0x01, - 0xc9,0x09,0xd0,0xfe,0xad,0xfe,0x01,0xc9, - 0xd1,0xd0,0xfe,0xa9,0xff,0x48,0xa6,0x0b, - 0xe8,0xa5,0x0a,0x49,0xaa,0x28,0x40,0x4c, - 0xef,0x37,0x4c,0x00,0x04,0xe0,0xad,0xd0, - 0xfe,0xc0,0xb1,0xd0,0xfe,0x85,0x0a,0x86, - 0x0b,0xba,0xbd,0x02,0x01,0xc9,0xff,0xd0, - 0xfe,0x68,0x09,0x08,0xc9,0xff,0xd0,0xfe, - 0xba,0xe0,0xfc,0xd0,0xfe,0xad,0xff,0x01, - 0xc9,0x09,0xd0,0xfe,0xad,0xfe,0x01,0xc9, - 0xf7,0xd0,0xfe,0xa9,0x04,0x48,0xa6,0x0b, - 0xe8,0xa5,0x0a,0x49,0xaa,0x28,0x40,0x4c, - 0x2f,0x38,0x4c,0x00,0x04,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x9d,0x37,0xa3,0x37,0xab,0x37 - ]; - - return { - start: function() { - return 0x00; - }, - end: function() { - return 0xff; - }, - read: function(page, off) { - return data[page * 0x100 + off]; - }, - write: function(page, off, val) { - data[page * 0x100 + off] = val; - } - }; -} diff --git a/test/roms/6502test.ts b/test/roms/6502test.ts new file mode 100644 index 0000000..4c7a868 --- /dev/null +++ b/test/roms/6502test.ts @@ -0,0 +1,29 @@ +// From https://github.com/Klaus2m5/6502_65C02_functional_tests + +import fs from 'fs'; +import path from 'path'; +import { MemoryPages, byte } from '../../js/types'; + +export default class Test6502 implements MemoryPages { + private data: Buffer; + + constructor() { + this.data = fs.readFileSync(path.join(__dirname, '6502_functional_test.bin')); + } + + start = () => { + return 0x00; + }; + + end = () => { + return 0xff; + }; + + read = (page: byte, off: byte) => { + return this.data[page << 8 | off]; + }; + + write = (page: byte, off: byte, val: byte) => { + this.data[page << 8 | off] = val; + }; +} diff --git a/test/roms/65C02_extended_opcodes_test.bin b/test/roms/65C02_extended_opcodes_test.bin new file mode 100644 index 0000000..b1ea946 Binary files /dev/null and b/test/roms/65C02_extended_opcodes_test.bin differ diff --git a/test/roms/65C02test.js b/test/roms/65C02test.js deleted file mode 100644 index d56ab50..0000000 --- a/test/roms/65C02test.js +++ /dev/null @@ -1,8213 +0,0 @@ -// From https://github.com/Klaus2m5/6502_65C02_functional_tests - -export default function Test65C02() { - var data = [ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc3,0x82,0x41,0x00,0x7f, - 0x00,0x1f,0x71,0x80,0x0f,0xff,0x7f,0x80, - 0xff,0x0f,0x8f,0x8f,0x10,0x02,0x11,0x02, - 0x12,0x02,0x13,0x02,0x14,0x02,0x18,0x01, - 0x05,0x02,0x06,0x02,0x07,0x02,0x08,0x02, - 0x0d,0x01,0x47,0x02,0x48,0x02,0x49,0x02, - 0x4a,0x02,0x4b,0x02,0x4c,0x02,0x4d,0x02, - 0x4e,0x02,0x43,0x02,0x44,0x02,0x45,0x02, - 0x46,0x02,0x05,0x02,0x06,0x02,0x06,0x01, - 0x07,0x01,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x69,0x00,0x60,0xe9,0x00,0x60, - 0xc3,0x82,0x41,0x00,0x7f,0x80,0x80,0x00, - 0x02,0x86,0x04,0x82,0x00,0x87,0x05,0x83, - 0x01,0x61,0x41,0x20,0x00,0xe1,0xc1,0xa0, - 0x80,0x81,0x01,0x80,0x02,0x81,0x01,0x80, - 0x00,0x01,0x00,0x01,0x02,0x81,0x80,0x81, - 0x80,0x7f,0x80,0xff,0x00,0x01,0x00,0x80, - 0x80,0x02,0x00,0x00,0x1f,0x71,0x80,0x0f, - 0xff,0x7f,0x80,0xff,0x0f,0x8f,0x8f,0x00, - 0xf1,0x1f,0x00,0xf0,0xff,0xff,0xff,0xff, - 0xf0,0xf0,0x0f,0x00,0xff,0x7f,0x80,0x02, - 0x80,0x00,0x80,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xd8,0xa2,0xff,0x9a,0xa9,0x00,0x8d,0x02, - 0x02,0xad,0x02,0x02,0xc9,0x00,0xd0,0xfe, - 0xa9,0x01,0x8d,0x02,0x02,0xa9,0x99,0xa2, - 0xff,0x9a,0xa2,0x55,0xda,0xa2,0xaa,0xda, - 0xec,0xfe,0x01,0xd0,0xfe,0xba,0xe0,0xfd, - 0xd0,0xfe,0x7a,0xc0,0xaa,0xd0,0xfe,0x7a, - 0xc0,0x55,0xd0,0xfe,0xcc,0xff,0x01,0xd0, - 0xfe,0xba,0xe0,0xff,0xd0,0xfe,0xa0,0xa5, - 0x5a,0xa0,0x5a,0x5a,0xcc,0xfe,0x01,0xd0, - 0xfe,0xba,0xe0,0xfd,0xd0,0xfe,0xfa,0xe0, - 0x5a,0xd0,0xfe,0xfa,0xe0,0xa5,0xd0,0xfe, - 0xec,0xff,0x01,0xd0,0xfe,0xba,0xe0,0xff, - 0xd0,0xfe,0xc9,0x99,0xd0,0xfe,0xad,0x02, - 0x02,0xc9,0x01,0xd0,0xfe,0xa9,0x02,0x8d, - 0x02,0x02,0xa0,0xaa,0xa9,0xff,0x48,0xa2, - 0x01,0x28,0xda,0x08,0xe0,0x01,0xd0,0xfe, - 0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa2,0x00,0x28,0xda,0x08,0xe0, - 0x00,0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0, - 0xfe,0x28,0xa9,0xff,0x48,0xa2,0xff,0x28, - 0xda,0x08,0xe0,0xff,0xd0,0xfe,0x68,0x48, - 0xc9,0xff,0xd0,0xfe,0x28,0xa9,0x00,0x48, - 0xa2,0x01,0x28,0xda,0x08,0xe0,0x01,0xd0, - 0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28, - 0xa9,0xff,0x48,0xa2,0x00,0x28,0xda,0x08, - 0xe0,0x00,0xd0,0xfe,0x68,0x48,0xc9,0xff, - 0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa2,0xff, - 0x28,0xda,0x08,0xe0,0xff,0xd0,0xfe,0x68, - 0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9,0xff, - 0x48,0xa2,0x00,0x28,0xfa,0x08,0xe0,0xff, - 0xd0,0xfe,0x68,0x48,0xc9,0xfd,0xd0,0xfe, - 0x28,0xa9,0x00,0x48,0xa2,0xff,0x28,0xfa, - 0x08,0xe0,0x00,0xd0,0xfe,0x68,0x48,0xc9, - 0x32,0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa2, - 0xfe,0x28,0xfa,0x08,0xe0,0x01,0xd0,0xfe, - 0x68,0x48,0xc9,0x7d,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa2,0x00,0x28,0xfa,0x08,0xe0, - 0xff,0xd0,0xfe,0x68,0x48,0xc9,0xb0,0xd0, - 0xfe,0x28,0xa9,0xff,0x48,0xa2,0xff,0x28, - 0xfa,0x08,0xe0,0x00,0xd0,0xfe,0x68,0x48, - 0xc9,0x7f,0xd0,0xfe,0x28,0xa9,0x00,0x48, - 0xa2,0xfe,0x28,0xfa,0x08,0xe0,0x01,0xd0, - 0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28, - 0xc0,0xaa,0xd0,0xfe,0xad,0x02,0x02,0xc9, - 0x02,0xd0,0xfe,0xa9,0x03,0x8d,0x02,0x02, - 0xa2,0x55,0xa9,0xff,0x48,0xa0,0x01,0x28, - 0x5a,0x08,0xc0,0x01,0xd0,0xfe,0x68,0x48, - 0xc9,0xff,0xd0,0xfe,0x28,0xa9,0x00,0x48, - 0xa0,0x00,0x28,0x5a,0x08,0xc0,0x00,0xd0, - 0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28, - 0xa9,0xff,0x48,0xa0,0xff,0x28,0x5a,0x08, - 0xc0,0xff,0xd0,0xfe,0x68,0x48,0xc9,0xff, - 0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa0,0x01, - 0x28,0x5a,0x08,0xc0,0x01,0xd0,0xfe,0x68, - 0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9,0xff, - 0x48,0xa0,0x00,0x28,0x5a,0x08,0xc0,0x00, - 0xd0,0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe, - 0x28,0xa9,0x00,0x48,0xa0,0xff,0x28,0x5a, - 0x08,0xc0,0xff,0xd0,0xfe,0x68,0x48,0xc9, - 0x30,0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa0, - 0x00,0x28,0x7a,0x08,0xc0,0xff,0xd0,0xfe, - 0x68,0x48,0xc9,0xfd,0xd0,0xfe,0x28,0xa9, - 0x00,0x48,0xa0,0xff,0x28,0x7a,0x08,0xc0, - 0x00,0xd0,0xfe,0x68,0x48,0xc9,0x32,0xd0, - 0xfe,0x28,0xa9,0xff,0x48,0xa0,0xfe,0x28, - 0x7a,0x08,0xc0,0x01,0xd0,0xfe,0x68,0x48, - 0xc9,0x7d,0xd0,0xfe,0x28,0xa9,0x00,0x48, - 0xa0,0x00,0x28,0x7a,0x08,0xc0,0xff,0xd0, - 0xfe,0x68,0x48,0xc9,0xb0,0xd0,0xfe,0x28, - 0xa9,0xff,0x48,0xa0,0xff,0x28,0x7a,0x08, - 0xc0,0x00,0xd0,0xfe,0x68,0x48,0xc9,0x7f, - 0xd0,0xfe,0x28,0xa9,0x00,0x48,0xa0,0xfe, - 0x28,0x7a,0x08,0xc0,0x01,0xd0,0xfe,0x68, - 0x48,0xc9,0x30,0xd0,0xfe,0x28,0xe0,0x55, - 0xd0,0xfe,0xad,0x02,0x02,0xc9,0x03,0xd0, - 0xfe,0xa9,0x04,0x8d,0x02,0x02,0xa2,0x81, - 0xa0,0x7e,0xa9,0xff,0x48,0xa9,0x00,0x28, - 0x80,0x03,0x4c,0x6a,0x06,0x08,0xc9,0x00, - 0xd0,0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe, - 0x28,0xa9,0x00,0x48,0xa9,0xff,0x28,0x80, - 0x03,0x4c,0x81,0x06,0x08,0xc9,0xff,0xd0, - 0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28, - 0xe0,0x81,0xd0,0xfe,0xc0,0x7e,0xd0,0xfe, - 0xad,0x02,0x02,0xc9,0x04,0xd0,0xfe,0xa9, - 0x05,0x8d,0x02,0x02,0xa0,0x00,0x80,0x61, - 0xc0,0x01,0xd0,0xfe,0xc8,0x80,0x53,0xc0, - 0x03,0xd0,0xfe,0xc8,0x80,0x45,0xc0,0x05, - 0xd0,0xfe,0xc8,0xa0,0x00,0x80,0x04,0xc8, - 0xc8,0xc8,0xc8,0x80,0x03,0xc8,0xc8,0xc8, - 0xc8,0x80,0x02,0xc8,0xc8,0xc8,0xc8,0x80, - 0x01,0xc8,0xc8,0xc8,0xc8,0x80,0x00,0xc8, - 0xc8,0xc8,0xc8,0xc0,0x0a,0xd0,0xfe,0x80, - 0x12,0x88,0x88,0x88,0x88,0x80,0x0e,0x88, - 0x88,0x88,0x80,0xf5,0x88,0x88,0x80,0xf7, - 0x88,0x80,0xf9,0x80,0xfb,0xc0,0x00,0xd0, - 0xfe,0x80,0x15,0xc0,0x04,0xd0,0xfe,0xc8, - 0x80,0xb4,0xc0,0x02,0xd0,0xfe,0xc8,0x80, - 0xa6,0xc0,0x00,0xd0,0xfe,0xc8,0x80,0x98, - 0xad,0x02,0x02,0xc9,0x05,0xd0,0xfe,0xa9, - 0x06,0x8d,0x02,0x02,0xa2,0x11,0xa0,0x22, - 0xa9,0x01,0x85,0x0c,0xa9,0x00,0x48,0xa9, - 0x33,0x28,0x0f,0x0c,0x06,0x8f,0x0c,0x06, - 0x4c,0x30,0x07,0x4c,0x33,0x07,0x08,0xc9, - 0x33,0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0, - 0xfe,0x28,0xa9,0xff,0x48,0xa9,0xcc,0x28, - 0x0f,0x0c,0x06,0x8f,0x0c,0x06,0x4c,0x4e, - 0x07,0x4c,0x51,0x07,0x08,0xc9,0xcc,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xa5,0x0c,0xc9,0x01,0xd0,0xfe,0xa9,0xfe, - 0x85,0x0c,0xa9,0x00,0x48,0xa9,0x33,0x28, - 0x8f,0x0c,0x06,0x0f,0x0c,0x06,0x4c,0x76, - 0x07,0x4c,0x79,0x07,0x08,0xc9,0x33,0xd0, - 0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28, - 0xa9,0xff,0x48,0xa9,0xcc,0x28,0x8f,0x0c, - 0x06,0x0f,0x0c,0x06,0x4c,0x94,0x07,0x4c, - 0x97,0x07,0x08,0xc9,0xcc,0xd0,0xfe,0x68, - 0x48,0xc9,0xff,0xd0,0xfe,0x28,0xa5,0x0c, - 0xc9,0xfe,0xd0,0xfe,0xa9,0x02,0x85,0x0c, - 0xa9,0x00,0x48,0xa9,0x33,0x28,0x1f,0x0c, - 0x06,0x9f,0x0c,0x06,0x4c,0xbc,0x07,0x4c, - 0xbf,0x07,0x08,0xc9,0x33,0xd0,0xfe,0x68, - 0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9,0xff, - 0x48,0xa9,0xcc,0x28,0x1f,0x0c,0x06,0x9f, - 0x0c,0x06,0x4c,0xda,0x07,0x4c,0xdd,0x07, - 0x08,0xc9,0xcc,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xa5,0x0c,0xc9,0x02, - 0xd0,0xfe,0xa9,0xfd,0x85,0x0c,0xa9,0x00, - 0x48,0xa9,0x33,0x28,0x9f,0x0c,0x06,0x1f, - 0x0c,0x06,0x4c,0x02,0x08,0x4c,0x05,0x08, - 0x08,0xc9,0x33,0xd0,0xfe,0x68,0x48,0xc9, - 0x30,0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9, - 0xcc,0x28,0x9f,0x0c,0x06,0x1f,0x0c,0x06, - 0x4c,0x20,0x08,0x4c,0x23,0x08,0x08,0xc9, - 0xcc,0xd0,0xfe,0x68,0x48,0xc9,0xff,0xd0, - 0xfe,0x28,0xa5,0x0c,0xc9,0xfd,0xd0,0xfe, - 0xa9,0x04,0x85,0x0c,0xa9,0x00,0x48,0xa9, - 0x33,0x28,0x2f,0x0c,0x06,0xaf,0x0c,0x06, - 0x4c,0x48,0x08,0x4c,0x4b,0x08,0x08,0xc9, - 0x33,0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0, - 0xfe,0x28,0xa9,0xff,0x48,0xa9,0xcc,0x28, - 0x2f,0x0c,0x06,0xaf,0x0c,0x06,0x4c,0x66, - 0x08,0x4c,0x69,0x08,0x08,0xc9,0xcc,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xa5,0x0c,0xc9,0x04,0xd0,0xfe,0xa9,0xfb, - 0x85,0x0c,0xa9,0x00,0x48,0xa9,0x33,0x28, - 0xaf,0x0c,0x06,0x2f,0x0c,0x06,0x4c,0x8e, - 0x08,0x4c,0x91,0x08,0x08,0xc9,0x33,0xd0, - 0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28, - 0xa9,0xff,0x48,0xa9,0xcc,0x28,0xaf,0x0c, - 0x06,0x2f,0x0c,0x06,0x4c,0xac,0x08,0x4c, - 0xaf,0x08,0x08,0xc9,0xcc,0xd0,0xfe,0x68, - 0x48,0xc9,0xff,0xd0,0xfe,0x28,0xa5,0x0c, - 0xc9,0xfb,0xd0,0xfe,0xa9,0x08,0x85,0x0c, - 0xa9,0x00,0x48,0xa9,0x33,0x28,0x3f,0x0c, - 0x06,0xbf,0x0c,0x06,0x4c,0xd4,0x08,0x4c, - 0xd7,0x08,0x08,0xc9,0x33,0xd0,0xfe,0x68, - 0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9,0xff, - 0x48,0xa9,0xcc,0x28,0x3f,0x0c,0x06,0xbf, - 0x0c,0x06,0x4c,0xf2,0x08,0x4c,0xf5,0x08, - 0x08,0xc9,0xcc,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xa5,0x0c,0xc9,0x08, - 0xd0,0xfe,0xa9,0xf7,0x85,0x0c,0xa9,0x00, - 0x48,0xa9,0x33,0x28,0xbf,0x0c,0x06,0x3f, - 0x0c,0x06,0x4c,0x1a,0x09,0x4c,0x1d,0x09, - 0x08,0xc9,0x33,0xd0,0xfe,0x68,0x48,0xc9, - 0x30,0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9, - 0xcc,0x28,0xbf,0x0c,0x06,0x3f,0x0c,0x06, - 0x4c,0x38,0x09,0x4c,0x3b,0x09,0x08,0xc9, - 0xcc,0xd0,0xfe,0x68,0x48,0xc9,0xff,0xd0, - 0xfe,0x28,0xa5,0x0c,0xc9,0xf7,0xd0,0xfe, - 0xa9,0x10,0x85,0x0c,0xa9,0x00,0x48,0xa9, - 0x33,0x28,0x4f,0x0c,0x06,0xcf,0x0c,0x06, - 0x4c,0x60,0x09,0x4c,0x63,0x09,0x08,0xc9, - 0x33,0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0, - 0xfe,0x28,0xa9,0xff,0x48,0xa9,0xcc,0x28, - 0x4f,0x0c,0x06,0xcf,0x0c,0x06,0x4c,0x7e, - 0x09,0x4c,0x81,0x09,0x08,0xc9,0xcc,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xa5,0x0c,0xc9,0x10,0xd0,0xfe,0xa9,0xef, - 0x85,0x0c,0xa9,0x00,0x48,0xa9,0x33,0x28, - 0xcf,0x0c,0x06,0x4f,0x0c,0x06,0x4c,0xa6, - 0x09,0x4c,0xa9,0x09,0x08,0xc9,0x33,0xd0, - 0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28, - 0xa9,0xff,0x48,0xa9,0xcc,0x28,0xcf,0x0c, - 0x06,0x4f,0x0c,0x06,0x4c,0xc4,0x09,0x4c, - 0xc7,0x09,0x08,0xc9,0xcc,0xd0,0xfe,0x68, - 0x48,0xc9,0xff,0xd0,0xfe,0x28,0xa5,0x0c, - 0xc9,0xef,0xd0,0xfe,0xa9,0x20,0x85,0x0c, - 0xa9,0x00,0x48,0xa9,0x33,0x28,0x5f,0x0c, - 0x06,0xdf,0x0c,0x06,0x4c,0xec,0x09,0x4c, - 0xef,0x09,0x08,0xc9,0x33,0xd0,0xfe,0x68, - 0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9,0xff, - 0x48,0xa9,0xcc,0x28,0x5f,0x0c,0x06,0xdf, - 0x0c,0x06,0x4c,0x0a,0x0a,0x4c,0x0d,0x0a, - 0x08,0xc9,0xcc,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xa5,0x0c,0xc9,0x20, - 0xd0,0xfe,0xa9,0xdf,0x85,0x0c,0xa9,0x00, - 0x48,0xa9,0x33,0x28,0xdf,0x0c,0x06,0x5f, - 0x0c,0x06,0x4c,0x32,0x0a,0x4c,0x35,0x0a, - 0x08,0xc9,0x33,0xd0,0xfe,0x68,0x48,0xc9, - 0x30,0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9, - 0xcc,0x28,0xdf,0x0c,0x06,0x5f,0x0c,0x06, - 0x4c,0x50,0x0a,0x4c,0x53,0x0a,0x08,0xc9, - 0xcc,0xd0,0xfe,0x68,0x48,0xc9,0xff,0xd0, - 0xfe,0x28,0xa5,0x0c,0xc9,0xdf,0xd0,0xfe, - 0xa9,0x40,0x85,0x0c,0xa9,0x00,0x48,0xa9, - 0x33,0x28,0x6f,0x0c,0x06,0xef,0x0c,0x06, - 0x4c,0x78,0x0a,0x4c,0x7b,0x0a,0x08,0xc9, - 0x33,0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0, - 0xfe,0x28,0xa9,0xff,0x48,0xa9,0xcc,0x28, - 0x6f,0x0c,0x06,0xef,0x0c,0x06,0x4c,0x96, - 0x0a,0x4c,0x99,0x0a,0x08,0xc9,0xcc,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xa5,0x0c,0xc9,0x40,0xd0,0xfe,0xa9,0xbf, - 0x85,0x0c,0xa9,0x00,0x48,0xa9,0x33,0x28, - 0xef,0x0c,0x06,0x6f,0x0c,0x06,0x4c,0xbe, - 0x0a,0x4c,0xc1,0x0a,0x08,0xc9,0x33,0xd0, - 0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28, - 0xa9,0xff,0x48,0xa9,0xcc,0x28,0xef,0x0c, - 0x06,0x6f,0x0c,0x06,0x4c,0xdc,0x0a,0x4c, - 0xdf,0x0a,0x08,0xc9,0xcc,0xd0,0xfe,0x68, - 0x48,0xc9,0xff,0xd0,0xfe,0x28,0xa5,0x0c, - 0xc9,0xbf,0xd0,0xfe,0xa9,0x80,0x85,0x0c, - 0xa9,0x00,0x48,0xa9,0x33,0x28,0x7f,0x0c, - 0x06,0xff,0x0c,0x06,0x4c,0x04,0x0b,0x4c, - 0x07,0x0b,0x08,0xc9,0x33,0xd0,0xfe,0x68, - 0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9,0xff, - 0x48,0xa9,0xcc,0x28,0x7f,0x0c,0x06,0xff, - 0x0c,0x06,0x4c,0x22,0x0b,0x4c,0x25,0x0b, - 0x08,0xc9,0xcc,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xa5,0x0c,0xc9,0x80, - 0xd0,0xfe,0xa9,0x7f,0x85,0x0c,0xa9,0x00, - 0x48,0xa9,0x33,0x28,0xff,0x0c,0x06,0x7f, - 0x0c,0x06,0x4c,0x4a,0x0b,0x4c,0x4d,0x0b, - 0x08,0xc9,0x33,0xd0,0xfe,0x68,0x48,0xc9, - 0x30,0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9, - 0xcc,0x28,0xff,0x0c,0x06,0x7f,0x0c,0x06, - 0x4c,0x68,0x0b,0x4c,0x6b,0x0b,0x08,0xc9, - 0xcc,0xd0,0xfe,0x68,0x48,0xc9,0xff,0xd0, - 0xfe,0x28,0xa5,0x0c,0xc9,0x7f,0xd0,0xfe, - 0xe0,0x11,0xd0,0xfe,0xc0,0x22,0xd0,0xfe, - 0xad,0x02,0x02,0xc9,0x06,0xd0,0xfe,0xa9, - 0x07,0x8d,0x02,0x02,0xa9,0x00,0x85,0x0c, - 0xa9,0x00,0x0f,0x0c,0x02,0x49,0x01,0x1f, - 0x0c,0x02,0x49,0x02,0x2f,0x0c,0x02,0x49, - 0x04,0x3f,0x0c,0x02,0x49,0x08,0x4f,0x0c, - 0x02,0x49,0x10,0x5f,0x0c,0x02,0x49,0x20, - 0x6f,0x0c,0x02,0x49,0x40,0x7f,0x0c,0x02, - 0x49,0x80,0x45,0x0c,0xd0,0xfe,0xa9,0xff, - 0x8f,0x0c,0x02,0x49,0x01,0x9f,0x0c,0x02, - 0x49,0x02,0xaf,0x0c,0x02,0x49,0x04,0xbf, - 0x0c,0x02,0x49,0x08,0xcf,0x0c,0x02,0x49, - 0x10,0xdf,0x0c,0x02,0x49,0x20,0xef,0x0c, - 0x02,0x49,0x40,0xff,0x0c,0x02,0x49,0x80, - 0x45,0x0c,0xd0,0xfe,0xe6,0x0c,0xd0,0xa0, - 0xad,0x02,0x02,0xc9,0x07,0xd0,0xfe,0xa9, - 0x08,0x8d,0x02,0x02,0xa0,0x42,0xa2,0x02, - 0x02,0xc8,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0xfd,0x28,0x02,0xea,0xea,0x08, - 0xc9,0xfd,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0xa8, - 0x28,0x02,0xea,0xea,0x08,0xc9,0xa8,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x02,0x22,0xc8,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0xdd,0x28, - 0x22,0xea,0xea,0x08,0xc9,0xdd,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x88,0x28,0x22,0xea,0xea, - 0x08,0xc9,0x88,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x02, - 0x42,0xc8,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0xbd,0x28,0x42,0xea,0xea,0x08, - 0xc9,0xbd,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x68, - 0x28,0x42,0xea,0xea,0x08,0xc9,0x68,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x02,0x62,0xc8,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0x9d,0x28, - 0x62,0xea,0xea,0x08,0xc9,0x9d,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x48,0x28,0x62,0xea,0xea, - 0x08,0xc9,0x48,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x02, - 0x82,0xc8,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0x7d,0x28,0x82,0xea,0xea,0x08, - 0xc9,0x7d,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x28, - 0x28,0x82,0xea,0xea,0x08,0xc9,0x28,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x02,0xc2,0xc8,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0x3d,0x28, - 0xc2,0xea,0xea,0x08,0xc9,0x3d,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0xe8,0x28,0xc2,0xea,0xea, - 0x08,0xc9,0xe8,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x02, - 0xe2,0xc8,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0x1d,0x28,0xe2,0xea,0xea,0x08, - 0xc9,0x1d,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0xc8, - 0x28,0xe2,0xea,0xea,0x08,0xc9,0xc8,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x02,0x44,0xc8,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0xbb,0x28, - 0x44,0xea,0xea,0x08,0xc9,0xbb,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x66,0x28,0x44,0xea,0xea, - 0x08,0xc9,0x66,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x02, - 0x54,0xc8,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0xab,0x28,0x54,0xea,0xea,0x08, - 0xc9,0xab,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x56, - 0x28,0x54,0xea,0xea,0x08,0xc9,0x56,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x02,0xd4,0xc8,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0x2b,0x28, - 0xd4,0xea,0xea,0x08,0xc9,0x2b,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0xd6,0x28,0xd4,0xea,0xea, - 0x08,0xc9,0xd6,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x02, - 0xf4,0xc8,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0x0b,0x28,0xf4,0xea,0xea,0x08, - 0xc9,0x0b,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0xb6, - 0x28,0xf4,0xea,0xea,0x08,0xc9,0xb6,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x01,0x5c,0xc8,0xc8,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0xa3,0x28, - 0x5c,0xea,0xea,0x08,0xc9,0xa3,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x4e,0x28,0x5c,0xea,0xea, - 0x08,0xc9,0x4e,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x01, - 0xdc,0xc8,0xc8,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0x23,0x28,0xdc,0xea,0xea,0x08, - 0xc9,0x23,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0xce, - 0x28,0xdc,0xea,0xea,0x08,0xc9,0xce,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x01,0xfc,0xc8,0xc8,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0x03,0x28, - 0xfc,0xea,0xea,0x08,0xc9,0x03,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0xae,0x28,0xfc,0xea,0xea, - 0x08,0xc9,0xae,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0x03,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0xfc,0x28,0x03,0xea,0xea,0x08, - 0xc9,0xfc,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0xa7, - 0x28,0x03,0xea,0xea,0x08,0xc9,0xa7,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0x13,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0xec,0x28, - 0x13,0xea,0xea,0x08,0xc9,0xec,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x97,0x28,0x13,0xea,0xea, - 0x08,0xc9,0x97,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0x23,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0xdc,0x28,0x23,0xea,0xea,0x08, - 0xc9,0xdc,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x87, - 0x28,0x23,0xea,0xea,0x08,0xc9,0x87,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0x33,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0xcc,0x28, - 0x33,0xea,0xea,0x08,0xc9,0xcc,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x77,0x28,0x33,0xea,0xea, - 0x08,0xc9,0x77,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0x43,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0xbc,0x28,0x43,0xea,0xea,0x08, - 0xc9,0xbc,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x67, - 0x28,0x43,0xea,0xea,0x08,0xc9,0x67,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0x53,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0xac,0x28, - 0x53,0xea,0xea,0x08,0xc9,0xac,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x57,0x28,0x53,0xea,0xea, - 0x08,0xc9,0x57,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0x63,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0x9c,0x28,0x63,0xea,0xea,0x08, - 0xc9,0x9c,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x47, - 0x28,0x63,0xea,0xea,0x08,0xc9,0x47,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0x73,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0x8c,0x28, - 0x73,0xea,0xea,0x08,0xc9,0x8c,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x37,0x28,0x73,0xea,0xea, - 0x08,0xc9,0x37,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0x83,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0x7c,0x28,0x83,0xea,0xea,0x08, - 0xc9,0x7c,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x27, - 0x28,0x83,0xea,0xea,0x08,0xc9,0x27,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0x93,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0x6c,0x28, - 0x93,0xea,0xea,0x08,0xc9,0x6c,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x17,0x28,0x93,0xea,0xea, - 0x08,0xc9,0x17,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0xa3,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0x5c,0x28,0xa3,0xea,0xea,0x08, - 0xc9,0x5c,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x07, - 0x28,0xa3,0xea,0xea,0x08,0xc9,0x07,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0xb3,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0x4c,0x28, - 0xb3,0xea,0xea,0x08,0xc9,0x4c,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0xf7,0x28,0xb3,0xea,0xea, - 0x08,0xc9,0xf7,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0xc3,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0x3c,0x28,0xc3,0xea,0xea,0x08, - 0xc9,0x3c,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0xe7, - 0x28,0xc3,0xea,0xea,0x08,0xc9,0xe7,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0xd3,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0x2c,0x28, - 0xd3,0xea,0xea,0x08,0xc9,0x2c,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0xd7,0x28,0xd3,0xea,0xea, - 0x08,0xc9,0xd7,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0xe3,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0x1c,0x28,0xe3,0xea,0xea,0x08, - 0xc9,0x1c,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0xc7, - 0x28,0xe3,0xea,0xea,0x08,0xc9,0xc7,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0xf3,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0x0c,0x28, - 0xf3,0xea,0xea,0x08,0xc9,0x0c,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0xb7,0x28,0xf3,0xea,0xea, - 0x08,0xc9,0xb7,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0x0b,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0xf4,0x28,0x0b,0xea,0xea,0x08, - 0xc9,0xf4,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x9f, - 0x28,0x0b,0xea,0xea,0x08,0xc9,0x9f,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0x1b,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0xe4,0x28, - 0x1b,0xea,0xea,0x08,0xc9,0xe4,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x8f,0x28,0x1b,0xea,0xea, - 0x08,0xc9,0x8f,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0x2b,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0xd4,0x28,0x2b,0xea,0xea,0x08, - 0xc9,0xd4,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x7f, - 0x28,0x2b,0xea,0xea,0x08,0xc9,0x7f,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0x3b,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0xc4,0x28, - 0x3b,0xea,0xea,0x08,0xc9,0xc4,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x6f,0x28,0x3b,0xea,0xea, - 0x08,0xc9,0x6f,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0x4b,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0xb4,0x28,0x4b,0xea,0xea,0x08, - 0xc9,0xb4,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x5f, - 0x28,0x4b,0xea,0xea,0x08,0xc9,0x5f,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0x5b,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0xa4,0x28, - 0x5b,0xea,0xea,0x08,0xc9,0xa4,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x4f,0x28,0x5b,0xea,0xea, - 0x08,0xc9,0x4f,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0x6b,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0x94,0x28,0x6b,0xea,0xea,0x08, - 0xc9,0x94,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x3f, - 0x28,0x6b,0xea,0xea,0x08,0xc9,0x3f,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0x7b,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0x84,0x28, - 0x7b,0xea,0xea,0x08,0xc9,0x84,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x2f,0x28,0x7b,0xea,0xea, - 0x08,0xc9,0x2f,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0x8b,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0x74,0x28,0x8b,0xea,0xea,0x08, - 0xc9,0x74,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0x1f, - 0x28,0x8b,0xea,0xea,0x08,0xc9,0x1f,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0x9b,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0x64,0x28, - 0x9b,0xea,0xea,0x08,0xc9,0x64,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x0f,0x28,0x9b,0xea,0xea, - 0x08,0xc9,0x0f,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0xab,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0x54,0x28,0xab,0xea,0xea,0x08, - 0xc9,0x54,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0xff, - 0x28,0xab,0xea,0xea,0x08,0xc9,0xff,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0xbb,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0x44,0x28, - 0xbb,0xea,0xea,0x08,0xc9,0x44,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0xef,0x28,0xbb,0xea,0xea, - 0x08,0xc9,0xef,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xa0,0x42,0xa2,0x03, - 0xeb,0xca,0xca,0xca,0xd0,0xfe,0xa9,0x00, - 0x48,0xa9,0x14,0x28,0xeb,0xea,0xea,0x08, - 0xc9,0x14,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa9,0xff,0x48,0xa9,0xbf, - 0x28,0xeb,0xea,0xea,0x08,0xc9,0xbf,0xd0, - 0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28, - 0xc0,0x42,0xd0,0xfe,0xe0,0x00,0xd0,0xfe, - 0xa0,0x42,0xa2,0x03,0xfb,0xca,0xca,0xca, - 0xd0,0xfe,0xa9,0x00,0x48,0xa9,0x04,0x28, - 0xfb,0xea,0xea,0x08,0xc9,0x04,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0xaf,0x28,0xfb,0xea,0xea, - 0x08,0xc9,0xaf,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xc0,0x42,0xd0,0xfe, - 0xe0,0x00,0xd0,0xfe,0xad,0x02,0x02,0xc9, - 0x08,0xd0,0xfe,0xa9,0x09,0x8d,0x02,0x02, - 0xa2,0x03,0xbd,0x8b,0x26,0x9d,0xfd,0x02, - 0xca,0x10,0xf7,0xa9,0x28,0x8d,0x00,0x02, - 0xa9,0x00,0x48,0x28,0xa9,0x49,0xa2,0x4e, - 0xa0,0x44,0x6c,0xfd,0x02,0xea,0xd0,0xfe, - 0x88,0x88,0x08,0x88,0x88,0x88,0x28,0xf0, - 0xfe,0x10,0xfe,0x90,0xfe,0x50,0xfe,0xc9, - 0xe3,0xd0,0xfe,0xe0,0x4f,0xd0,0xfe,0xc0, - 0x3e,0xd0,0xfe,0xba,0xe0,0xff,0xd0,0xfe, - 0xad,0x02,0x02,0xc9,0x09,0xd0,0xfe,0xa9, - 0x0a,0x8d,0x02,0x02,0xa2,0x0b,0xbd,0xc7, - 0x26,0x9d,0xf9,0x02,0xca,0x10,0xf7,0xa9, - 0x27,0x8d,0x00,0x02,0xa9,0x00,0x48,0x28, - 0xa9,0x58,0xa2,0x04,0xa0,0x49,0x7c,0xf9, - 0x02,0xea,0xd0,0xfe,0x88,0x88,0x08,0x88, - 0x88,0x88,0x28,0xf0,0xfe,0x10,0xfe,0x90, - 0xfe,0x50,0xfe,0xc9,0xf2,0xd0,0xfe,0xe0, - 0x06,0xd0,0xfe,0xc0,0x43,0xd0,0xfe,0xba, - 0xe0,0xff,0xd0,0xfe,0xa9,0x08,0x8d,0x00, - 0x03,0xa9,0x17,0x8d,0x01,0x03,0xa9,0x05, - 0x8d,0x00,0x02,0xa9,0x17,0x8d,0x01,0x02, - 0xa2,0xff,0x7c,0x01,0x02,0x4c,0x05,0x17, - 0xad,0x02,0x02,0xc9,0x0a,0xd0,0xfe,0xa9, - 0x0b,0x8d,0x02,0x02,0xa9,0x00,0x48,0xa9, - 0x42,0xa2,0x52,0xa0,0x4b,0x28,0x00,0x88, - 0x08,0x88,0x88,0x88,0xc9,0xe8,0xd0,0xfe, - 0xe0,0x53,0xd0,0xfe,0xc0,0x45,0xd0,0xfe, - 0x68,0xc9,0x30,0xd0,0xfe,0xba,0xe0,0xff, - 0xd0,0xfe,0xa9,0xff,0x48,0xa9,0xbd,0xa2, - 0xad,0xa0,0xb4,0x28,0x00,0x88,0x08,0x88, - 0x88,0x88,0xc9,0x17,0xd0,0xfe,0xe0,0xae, - 0xd0,0xfe,0xc0,0xae,0xd0,0xfe,0x68,0xc9, - 0xff,0xd0,0xfe,0xba,0xe0,0xff,0xd0,0xfe, - 0xad,0x02,0x02,0xc9,0x0b,0xd0,0xfe,0xa9, - 0x0c,0x8d,0x02,0x02,0xa2,0xac,0xa0,0xdc, - 0xa9,0xff,0x48,0xa9,0xfe,0x28,0x1a,0x48, - 0x08,0xc9,0xff,0xd0,0xfe,0x68,0x48,0xc9, - 0xfd,0xd0,0xfe,0x28,0x68,0x1a,0x48,0x08, - 0xc9,0x00,0xd0,0xfe,0x68,0x48,0xc9,0x7f, - 0xd0,0xfe,0x28,0x68,0x1a,0x48,0x08,0xc9, - 0x01,0xd0,0xfe,0x68,0x48,0xc9,0x7d,0xd0, - 0xfe,0x28,0x68,0x3a,0x48,0x08,0xc9,0x00, - 0xd0,0xfe,0x68,0x48,0xc9,0x7f,0xd0,0xfe, - 0x28,0x68,0x3a,0x48,0x08,0xc9,0xff,0xd0, - 0xfe,0x68,0x48,0xc9,0xfd,0xd0,0xfe,0x28, - 0x68,0x3a,0xa9,0x00,0x48,0xa9,0xfe,0x28, - 0x1a,0x48,0x08,0xc9,0xff,0xd0,0xfe,0x68, - 0x48,0xc9,0xb0,0xd0,0xfe,0x28,0x68,0x1a, - 0x48,0x08,0xc9,0x00,0xd0,0xfe,0x68,0x48, - 0xc9,0x32,0xd0,0xfe,0x28,0x68,0x1a,0x48, - 0x08,0xc9,0x01,0xd0,0xfe,0x68,0x48,0xc9, - 0x30,0xd0,0xfe,0x28,0x68,0x3a,0x48,0x08, - 0xc9,0x00,0xd0,0xfe,0x68,0x48,0xc9,0x32, - 0xd0,0xfe,0x28,0x68,0x3a,0x48,0x08,0xc9, - 0xff,0xd0,0xfe,0x68,0x48,0xc9,0xb0,0xd0, - 0xfe,0x28,0x68,0xe0,0xac,0xd0,0xfe,0xc0, - 0xdc,0xd0,0xfe,0xba,0xe0,0xff,0xd0,0xfe, - 0xad,0x02,0x02,0xc9,0x0c,0xd0,0xfe,0xa9, - 0x0d,0x8d,0x02,0x02,0xa2,0x99,0xa0,0x66, - 0xa9,0x00,0x48,0x28,0xb2,0x24,0x08,0x49, - 0xc3,0x28,0x92,0x30,0x08,0x49,0xc3,0xc9, - 0xc3,0xd0,0xfe,0x68,0x49,0x30,0xcd,0x15, - 0x02,0xd0,0xfe,0xa9,0x00,0x48,0x28,0xb2, - 0x26,0x08,0x49,0xc3,0x28,0x92,0x32,0x08, - 0x49,0xc3,0xc9,0x82,0xd0,0xfe,0x68,0x49, - 0x30,0xcd,0x16,0x02,0xd0,0xfe,0xa9,0x00, - 0x48,0x28,0xb2,0x28,0x08,0x49,0xc3,0x28, - 0x92,0x34,0x08,0x49,0xc3,0xc9,0x41,0xd0, - 0xfe,0x68,0x49,0x30,0xcd,0x17,0x02,0xd0, - 0xfe,0xa9,0x00,0x48,0x28,0xb2,0x2a,0x08, - 0x49,0xc3,0x28,0x92,0x36,0x08,0x49,0xc3, - 0xc9,0x00,0xd0,0xfe,0x68,0x49,0x30,0xcd, - 0x18,0x02,0xd0,0xfe,0xe0,0x99,0xd0,0xfe, - 0xc0,0x66,0xd0,0xfe,0xa0,0x03,0xa2,0x00, - 0xb9,0x05,0x02,0x49,0xc3,0xd9,0x10,0x02, - 0xd0,0xfe,0x8a,0x99,0x05,0x02,0x88,0x10, - 0xef,0xa2,0x99,0xa0,0x66,0xa9,0xff,0x48, - 0x28,0xb2,0x24,0x08,0x49,0xc3,0x28,0x92, - 0x30,0x08,0x49,0xc3,0xc9,0xc3,0xd0,0xfe, - 0x68,0x49,0x7d,0xcd,0x15,0x02,0xd0,0xfe, - 0xa9,0xff,0x48,0x28,0xb2,0x26,0x08,0x49, - 0xc3,0x28,0x92,0x32,0x08,0x49,0xc3,0xc9, - 0x82,0xd0,0xfe,0x68,0x49,0x7d,0xcd,0x16, - 0x02,0xd0,0xfe,0xa9,0xff,0x48,0x28,0xb2, - 0x28,0x08,0x49,0xc3,0x28,0x92,0x34,0x08, - 0x49,0xc3,0xc9,0x41,0xd0,0xfe,0x68,0x49, - 0x7d,0xcd,0x17,0x02,0xd0,0xfe,0xa9,0xff, - 0x48,0x28,0xb2,0x2a,0x08,0x49,0xc3,0x28, - 0x92,0x36,0x08,0x49,0xc3,0xc9,0x00,0xd0, - 0xfe,0x68,0x49,0x7d,0xcd,0x18,0x02,0xd0, - 0xfe,0xe0,0x99,0xd0,0xfe,0xc0,0x66,0xd0, - 0xfe,0xa0,0x03,0xa2,0x00,0xb9,0x05,0x02, - 0x49,0xc3,0xd9,0x10,0x02,0xd0,0xfe,0x8a, - 0x99,0x05,0x02,0x88,0x10,0xef,0xba,0xe0, - 0xff,0xd0,0xfe,0xad,0x02,0x02,0xc9,0x0d, - 0xd0,0xfe,0xa9,0x0e,0x8d,0x02,0x02,0xa0, - 0x7b,0xa2,0x04,0xa9,0x07,0x95,0x0c,0x0a, - 0xca,0x10,0xfa,0xa2,0x04,0xa9,0xff,0x48, - 0xa9,0x55,0x28,0x64,0x0c,0x64,0x0d,0x64, - 0x0e,0x64,0x0f,0x64,0x10,0x08,0xc9,0x55, - 0xd0,0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe, - 0x28,0xb5,0x0c,0xd0,0xfe,0xca,0x10,0xf9, - 0xa2,0x04,0xa9,0x07,0x95,0x0c,0x0a,0xca, - 0x10,0xfa,0xa2,0x04,0xa9,0x00,0x48,0xa9, - 0xaa,0x28,0x64,0x0c,0x64,0x0d,0x64,0x0e, - 0x64,0x0f,0x64,0x10,0x08,0xc9,0xaa,0xd0, - 0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28, - 0xb5,0x0c,0xd0,0xfe,0xca,0x10,0xf9,0xa2, - 0x04,0xa9,0x07,0x9d,0x05,0x02,0x0a,0xca, - 0x10,0xf9,0xa2,0x04,0xa9,0xff,0x48,0xa9, - 0x55,0x28,0x9c,0x05,0x02,0x9c,0x06,0x02, - 0x9c,0x07,0x02,0x9c,0x08,0x02,0x9c,0x09, - 0x02,0x08,0xc9,0x55,0xd0,0xfe,0x68,0x48, - 0xc9,0xff,0xd0,0xfe,0x28,0xbd,0x05,0x02, - 0xd0,0xfe,0xca,0x10,0xf8,0xa2,0x04,0xa9, - 0x07,0x9d,0x05,0x02,0x0a,0xca,0x10,0xf9, - 0xa2,0x04,0xa9,0x00,0x48,0xa9,0xaa,0x28, - 0x9c,0x05,0x02,0x9c,0x06,0x02,0x9c,0x07, - 0x02,0x9c,0x08,0x02,0x9c,0x09,0x02,0x08, - 0xc9,0xaa,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xbd,0x05,0x02,0xd0,0xfe, - 0xca,0x10,0xf8,0xa2,0x04,0xa9,0x07,0x95, - 0x0c,0x0a,0xca,0x10,0xfa,0xa2,0x04,0xa9, - 0xff,0x48,0xa9,0x55,0x28,0x74,0x0c,0x08, - 0xc9,0x55,0xd0,0xfe,0x68,0x48,0xc9,0xff, - 0xd0,0xfe,0x28,0xca,0x10,0xe9,0xa2,0x04, - 0xb5,0x0c,0xd0,0xfe,0xca,0x10,0xf9,0xa2, - 0x04,0xa9,0x07,0x95,0x0c,0x0a,0xca,0x10, - 0xfa,0xa2,0x04,0xa9,0x00,0x48,0xa9,0xaa, - 0x28,0x74,0x0c,0x08,0xc9,0xaa,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xca, - 0x10,0xe9,0xa2,0x04,0xb5,0x0c,0xd0,0xfe, - 0xca,0x10,0xf9,0xa2,0x04,0xa9,0x07,0x9d, - 0x05,0x02,0x0a,0xca,0x10,0xf9,0xa2,0x04, - 0xa9,0xff,0x48,0xa9,0x55,0x28,0x9e,0x05, - 0x02,0x08,0xc9,0x55,0xd0,0xfe,0x68,0x48, - 0xc9,0xff,0xd0,0xfe,0x28,0xca,0x10,0xe8, - 0xa2,0x04,0xbd,0x05,0x02,0xd0,0xfe,0xca, - 0x10,0xf8,0xa2,0x04,0xa9,0x07,0x9d,0x05, - 0x02,0x0a,0xca,0x10,0xf9,0xa2,0x04,0xa9, - 0x00,0x48,0xa9,0xaa,0x28,0x9e,0x05,0x02, - 0x08,0xc9,0xaa,0xd0,0xfe,0x68,0x48,0xc9, - 0x30,0xd0,0xfe,0x28,0xca,0x10,0xe8,0xa2, - 0x04,0xbd,0x05,0x02,0xd0,0xfe,0xca,0x10, - 0xf8,0xc0,0x7b,0xd0,0xfe,0xba,0xe0,0xff, - 0xd0,0xfe,0xad,0x02,0x02,0xc9,0x0e,0xd0, - 0xfe,0xa9,0x0f,0x8d,0x02,0x02,0xa0,0x42, - 0xa2,0x03,0xa9,0x00,0x48,0xa9,0xff,0x28, - 0x34,0x13,0x08,0xc9,0xff,0xd0,0xfe,0x68, - 0x48,0xc9,0x32,0xd0,0xfe,0x28,0xca,0xa9, - 0x00,0x48,0xa9,0x01,0x28,0x34,0x13,0x08, - 0xc9,0x01,0xd0,0xfe,0x68,0x48,0xc9,0x70, - 0xd0,0xfe,0x28,0xca,0xa9,0x00,0x48,0xa9, - 0x01,0x28,0x34,0x13,0x08,0xc9,0x01,0xd0, - 0xfe,0x68,0x48,0xc9,0xb2,0xd0,0xfe,0x28, - 0xca,0xa9,0x00,0x48,0xa9,0x01,0x28,0x34, - 0x13,0x08,0xc9,0x01,0xd0,0xfe,0x68,0x48, - 0xc9,0xf0,0xd0,0xfe,0x28,0xa9,0xff,0x48, - 0xa9,0x01,0x28,0x34,0x13,0x08,0xc9,0x01, - 0xd0,0xfe,0x68,0x48,0xc9,0xfd,0xd0,0xfe, - 0x28,0xe8,0xa9,0xff,0x48,0xa9,0x01,0x28, - 0x34,0x13,0x08,0xc9,0x01,0xd0,0xfe,0x68, - 0x48,0xc9,0xbf,0xd0,0xfe,0x28,0xe8,0xa9, - 0xff,0x48,0xa9,0x01,0x28,0x34,0x13,0x08, - 0xc9,0x01,0xd0,0xfe,0x68,0x48,0xc9,0x7d, - 0xd0,0xfe,0x28,0xe8,0xa9,0xff,0x48,0xa9, - 0xff,0x28,0x34,0x13,0x08,0xc9,0xff,0xd0, - 0xfe,0x68,0x48,0xc9,0x3f,0xd0,0xfe,0x28, - 0xa9,0x00,0x48,0xa9,0xff,0x28,0x3c,0x10, - 0x02,0x08,0xc9,0xff,0xd0,0xfe,0x68,0x48, - 0xc9,0x32,0xd0,0xfe,0x28,0xca,0xa9,0x00, - 0x48,0xa9,0x01,0x28,0x3c,0x10,0x02,0x08, - 0xc9,0x01,0xd0,0xfe,0x68,0x48,0xc9,0x70, - 0xd0,0xfe,0x28,0xca,0xa9,0x00,0x48,0xa9, - 0x01,0x28,0x3c,0x10,0x02,0x08,0xc9,0x01, - 0xd0,0xfe,0x68,0x48,0xc9,0xb2,0xd0,0xfe, - 0x28,0xca,0xa9,0x00,0x48,0xa9,0x01,0x28, - 0x3c,0x10,0x02,0x08,0xc9,0x01,0xd0,0xfe, - 0x68,0x48,0xc9,0xf0,0xd0,0xfe,0x28,0xa9, - 0xff,0x48,0xa9,0x01,0x28,0x3c,0x10,0x02, - 0x08,0xc9,0x01,0xd0,0xfe,0x68,0x48,0xc9, - 0xfd,0xd0,0xfe,0x28,0xe8,0xa9,0xff,0x48, - 0xa9,0x01,0x28,0x3c,0x10,0x02,0x08,0xc9, - 0x01,0xd0,0xfe,0x68,0x48,0xc9,0xbf,0xd0, - 0xfe,0x28,0xe8,0xa9,0xff,0x48,0xa9,0x01, - 0x28,0x3c,0x10,0x02,0x08,0xc9,0x01,0xd0, - 0xfe,0x68,0x48,0xc9,0x7d,0xd0,0xfe,0x28, - 0xe8,0xa9,0xff,0x48,0xa9,0xff,0x28,0x3c, - 0x10,0x02,0x08,0xc9,0xff,0xd0,0xfe,0x68, - 0x48,0xc9,0x3f,0xd0,0xfe,0x28,0xa9,0x00, - 0x48,0xa9,0xff,0x28,0x89,0x00,0x08,0xc9, - 0xff,0xd0,0xfe,0x68,0x48,0xc9,0x32,0xd0, - 0xfe,0x28,0xca,0xa9,0x00,0x48,0xa9,0x01, - 0x28,0x89,0x41,0x08,0xc9,0x01,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xca, - 0xa9,0x00,0x48,0xa9,0x01,0x28,0x89,0x82, - 0x08,0xc9,0x01,0xd0,0xfe,0x68,0x48,0xc9, - 0x32,0xd0,0xfe,0x28,0xca,0xa9,0x00,0x48, - 0xa9,0x01,0x28,0x89,0xc3,0x08,0xc9,0x01, - 0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe, - 0x28,0xa9,0xff,0x48,0xa9,0x01,0x28,0x89, - 0xc3,0x08,0xc9,0x01,0xd0,0xfe,0x68,0x48, - 0xc9,0xfd,0xd0,0xfe,0x28,0xe8,0xa9,0xff, - 0x48,0xa9,0x01,0x28,0x89,0x82,0x08,0xc9, - 0x01,0xd0,0xfe,0x68,0x48,0xc9,0xff,0xd0, - 0xfe,0x28,0xe8,0xa9,0xff,0x48,0xa9,0x01, - 0x28,0x89,0x41,0x08,0xc9,0x01,0xd0,0xfe, - 0x68,0x48,0xc9,0xfd,0xd0,0xfe,0x28,0xe8, - 0xa9,0xff,0x48,0xa9,0xff,0x28,0x89,0x00, - 0x08,0xc9,0xff,0xd0,0xfe,0x68,0x48,0xc9, - 0xff,0xd0,0xfe,0x28,0xe0,0x03,0xd0,0xfe, - 0xc0,0x42,0xd0,0xfe,0xba,0xe0,0xff,0xd0, - 0xfe,0xad,0x02,0x02,0xc9,0x0f,0xd0,0xfe, - 0xa9,0x10,0x8d,0x02,0x02,0xa2,0xc0,0xa0, - 0x00,0x64,0x0d,0x98,0x25,0x0d,0x08,0x68, - 0x29,0x02,0x85,0x0e,0x98,0x49,0xff,0x05, - 0x0d,0x49,0xff,0x85,0x0f,0x98,0x05,0x0d, - 0x85,0x10,0x84,0x0c,0xa9,0xff,0x48,0xa5, - 0x0d,0x28,0x14,0x0c,0x08,0xc5,0x0d,0xd0, - 0xfe,0x68,0x48,0x09,0x02,0xc9,0xff,0xd0, - 0xfe,0x68,0x29,0x02,0xc5,0x0e,0xd0,0xfe, - 0xa5,0x0f,0xc5,0x0c,0xd0,0xfe,0x8c,0x05, - 0x02,0xa9,0xff,0x48,0xa5,0x0d,0x28,0x1c, - 0x05,0x02,0x08,0xc5,0x0d,0xd0,0xfe,0x68, - 0x48,0x09,0x02,0xc9,0xff,0xd0,0xfe,0x68, - 0x29,0x02,0xc5,0x0e,0xd0,0xfe,0xa5,0x0f, - 0xc5,0x0c,0xd0,0xfe,0x84,0x0c,0xa9,0x00, - 0x48,0xa5,0x0d,0x28,0x14,0x0c,0x08,0xc5, - 0x0d,0xd0,0xfe,0x68,0x48,0x09,0x02,0xc9, - 0x32,0xd0,0xfe,0x68,0x29,0x02,0xc5,0x0e, - 0xd0,0xfe,0xa5,0x0f,0xc5,0x0c,0xd0,0xfe, - 0x8c,0x05,0x02,0xa9,0x00,0x48,0xa5,0x0d, - 0x28,0x1c,0x05,0x02,0x08,0xc5,0x0d,0xd0, - 0xfe,0x68,0x48,0x09,0x02,0xc9,0x32,0xd0, - 0xfe,0x68,0x29,0x02,0xc5,0x0e,0xd0,0xfe, - 0xa5,0x0f,0xc5,0x0c,0xd0,0xfe,0x84,0x0c, - 0xa9,0xff,0x48,0xa5,0x0d,0x28,0x04,0x0c, - 0x08,0xc5,0x0d,0xd0,0xfe,0x68,0x48,0x09, - 0x02,0xc9,0xff,0xd0,0xfe,0x68,0x29,0x02, - 0xc5,0x0e,0xd0,0xfe,0xa5,0x10,0xc5,0x0c, - 0xd0,0xfe,0x8c,0x05,0x02,0xa9,0xff,0x48, - 0xa5,0x0d,0x28,0x0c,0x05,0x02,0x08,0xc5, - 0x0d,0xd0,0xfe,0x68,0x48,0x09,0x02,0xc9, - 0xff,0xd0,0xfe,0x68,0x29,0x02,0xc5,0x0e, - 0xd0,0xfe,0xa5,0x10,0xc5,0x0c,0xd0,0xfe, - 0x84,0x0c,0xa9,0x00,0x48,0xa5,0x0d,0x28, - 0x04,0x0c,0x08,0xc5,0x0d,0xd0,0xfe,0x68, - 0x48,0x09,0x02,0xc9,0x32,0xd0,0xfe,0x68, - 0x29,0x02,0xc5,0x0e,0xd0,0xfe,0xa5,0x10, - 0xc5,0x0c,0xd0,0xfe,0x8c,0x05,0x02,0xa9, - 0x00,0x48,0xa5,0x0d,0x28,0x0c,0x05,0x02, - 0x08,0xc5,0x0d,0xd0,0xfe,0x68,0x48,0x09, - 0x02,0xc9,0x32,0xd0,0xfe,0x68,0x29,0x02, - 0xc5,0x0e,0xd0,0xfe,0xa5,0x10,0xc5,0x0c, - 0xd0,0xfe,0xc8,0xd0,0x04,0xe6,0x0d,0xf0, - 0x03,0x4c,0x0b,0x1d,0xe0,0xc0,0xd0,0xfe, - 0xba,0xe0,0xff,0xd0,0xfe,0xad,0x02,0x02, - 0xc9,0x10,0xd0,0xfe,0xa9,0x11,0x8d,0x02, - 0x02,0xa2,0xba,0xa0,0xd0,0xa9,0xff,0x85, - 0x0c,0xa9,0x00,0x48,0xa9,0xa5,0x28,0x07, - 0x0c,0x08,0xc9,0xa5,0xd0,0xfe,0x68,0x48, - 0xc9,0x30,0xd0,0xfe,0x28,0xa5,0x0c,0xc9, - 0xfe,0xd0,0xfe,0xa9,0x01,0x85,0x0c,0xa9, - 0xff,0x48,0xa9,0x5a,0x28,0x07,0x0c,0x08, - 0xc9,0x5a,0xd0,0xfe,0x68,0x48,0xc9,0xff, - 0xd0,0xfe,0x28,0xa5,0x0c,0xd0,0xfe,0xa9, - 0xff,0x85,0x0c,0xa9,0x00,0x48,0xa9,0xa5, - 0x28,0x17,0x0c,0x08,0xc9,0xa5,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa5, - 0x0c,0xc9,0xfd,0xd0,0xfe,0xa9,0x02,0x85, - 0x0c,0xa9,0xff,0x48,0xa9,0x5a,0x28,0x17, - 0x0c,0x08,0xc9,0x5a,0xd0,0xfe,0x68,0x48, - 0xc9,0xff,0xd0,0xfe,0x28,0xa5,0x0c,0xd0, - 0xfe,0xa9,0xff,0x85,0x0c,0xa9,0x00,0x48, - 0xa9,0xa5,0x28,0x27,0x0c,0x08,0xc9,0xa5, - 0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe, - 0x28,0xa5,0x0c,0xc9,0xfb,0xd0,0xfe,0xa9, - 0x04,0x85,0x0c,0xa9,0xff,0x48,0xa9,0x5a, - 0x28,0x27,0x0c,0x08,0xc9,0x5a,0xd0,0xfe, - 0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28,0xa5, - 0x0c,0xd0,0xfe,0xa9,0xff,0x85,0x0c,0xa9, - 0x00,0x48,0xa9,0xa5,0x28,0x37,0x0c,0x08, - 0xc9,0xa5,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa5,0x0c,0xc9,0xf7,0xd0, - 0xfe,0xa9,0x08,0x85,0x0c,0xa9,0xff,0x48, - 0xa9,0x5a,0x28,0x37,0x0c,0x08,0xc9,0x5a, - 0xd0,0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe, - 0x28,0xa5,0x0c,0xd0,0xfe,0xa9,0xff,0x85, - 0x0c,0xa9,0x00,0x48,0xa9,0xa5,0x28,0x47, - 0x0c,0x08,0xc9,0xa5,0xd0,0xfe,0x68,0x48, - 0xc9,0x30,0xd0,0xfe,0x28,0xa5,0x0c,0xc9, - 0xef,0xd0,0xfe,0xa9,0x10,0x85,0x0c,0xa9, - 0xff,0x48,0xa9,0x5a,0x28,0x47,0x0c,0x08, - 0xc9,0x5a,0xd0,0xfe,0x68,0x48,0xc9,0xff, - 0xd0,0xfe,0x28,0xa5,0x0c,0xd0,0xfe,0xa9, - 0xff,0x85,0x0c,0xa9,0x00,0x48,0xa9,0xa5, - 0x28,0x57,0x0c,0x08,0xc9,0xa5,0xd0,0xfe, - 0x68,0x48,0xc9,0x30,0xd0,0xfe,0x28,0xa5, - 0x0c,0xc9,0xdf,0xd0,0xfe,0xa9,0x20,0x85, - 0x0c,0xa9,0xff,0x48,0xa9,0x5a,0x28,0x57, - 0x0c,0x08,0xc9,0x5a,0xd0,0xfe,0x68,0x48, - 0xc9,0xff,0xd0,0xfe,0x28,0xa5,0x0c,0xd0, - 0xfe,0xa9,0xff,0x85,0x0c,0xa9,0x00,0x48, - 0xa9,0xa5,0x28,0x67,0x0c,0x08,0xc9,0xa5, - 0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe, - 0x28,0xa5,0x0c,0xc9,0xbf,0xd0,0xfe,0xa9, - 0x40,0x85,0x0c,0xa9,0xff,0x48,0xa9,0x5a, - 0x28,0x67,0x0c,0x08,0xc9,0x5a,0xd0,0xfe, - 0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28,0xa5, - 0x0c,0xd0,0xfe,0xa9,0xff,0x85,0x0c,0xa9, - 0x00,0x48,0xa9,0xa5,0x28,0x77,0x0c,0x08, - 0xc9,0xa5,0xd0,0xfe,0x68,0x48,0xc9,0x30, - 0xd0,0xfe,0x28,0xa5,0x0c,0xc9,0x7f,0xd0, - 0xfe,0xa9,0x80,0x85,0x0c,0xa9,0xff,0x48, - 0xa9,0x5a,0x28,0x77,0x0c,0x08,0xc9,0x5a, - 0xd0,0xfe,0x68,0x48,0xc9,0xff,0xd0,0xfe, - 0x28,0xa5,0x0c,0xd0,0xfe,0xa9,0xfe,0x85, - 0x0c,0xa9,0x00,0x48,0xa9,0xa5,0x28,0x87, - 0x0c,0x08,0xc9,0xa5,0xd0,0xfe,0x68,0x48, - 0xc9,0x30,0xd0,0xfe,0x28,0xa5,0x0c,0xc9, - 0xff,0xd0,0xfe,0xa9,0x00,0x85,0x0c,0xa9, - 0xff,0x48,0xa9,0x5a,0x28,0x87,0x0c,0x08, - 0xc9,0x5a,0xd0,0xfe,0x68,0x48,0xc9,0xff, - 0xd0,0xfe,0x28,0xa5,0x0c,0xc9,0x01,0xd0, - 0xfe,0xa9,0xfd,0x85,0x0c,0xa9,0x00,0x48, - 0xa9,0xa5,0x28,0x97,0x0c,0x08,0xc9,0xa5, - 0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe, - 0x28,0xa5,0x0c,0xc9,0xff,0xd0,0xfe,0xa9, - 0x00,0x85,0x0c,0xa9,0xff,0x48,0xa9,0x5a, - 0x28,0x97,0x0c,0x08,0xc9,0x5a,0xd0,0xfe, - 0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28,0xa5, - 0x0c,0xc9,0x02,0xd0,0xfe,0xa9,0xfb,0x85, - 0x0c,0xa9,0x00,0x48,0xa9,0xa5,0x28,0xa7, - 0x0c,0x08,0xc9,0xa5,0xd0,0xfe,0x68,0x48, - 0xc9,0x30,0xd0,0xfe,0x28,0xa5,0x0c,0xc9, - 0xff,0xd0,0xfe,0xa9,0x00,0x85,0x0c,0xa9, - 0xff,0x48,0xa9,0x5a,0x28,0xa7,0x0c,0x08, - 0xc9,0x5a,0xd0,0xfe,0x68,0x48,0xc9,0xff, - 0xd0,0xfe,0x28,0xa5,0x0c,0xc9,0x04,0xd0, - 0xfe,0xa9,0xf7,0x85,0x0c,0xa9,0x00,0x48, - 0xa9,0xa5,0x28,0xb7,0x0c,0x08,0xc9,0xa5, - 0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe, - 0x28,0xa5,0x0c,0xc9,0xff,0xd0,0xfe,0xa9, - 0x00,0x85,0x0c,0xa9,0xff,0x48,0xa9,0x5a, - 0x28,0xb7,0x0c,0x08,0xc9,0x5a,0xd0,0xfe, - 0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28,0xa5, - 0x0c,0xc9,0x08,0xd0,0xfe,0xa9,0xef,0x85, - 0x0c,0xa9,0x00,0x48,0xa9,0xa5,0x28,0xc7, - 0x0c,0x08,0xc9,0xa5,0xd0,0xfe,0x68,0x48, - 0xc9,0x30,0xd0,0xfe,0x28,0xa5,0x0c,0xc9, - 0xff,0xd0,0xfe,0xa9,0x00,0x85,0x0c,0xa9, - 0xff,0x48,0xa9,0x5a,0x28,0xc7,0x0c,0x08, - 0xc9,0x5a,0xd0,0xfe,0x68,0x48,0xc9,0xff, - 0xd0,0xfe,0x28,0xa5,0x0c,0xc9,0x10,0xd0, - 0xfe,0xa9,0xdf,0x85,0x0c,0xa9,0x00,0x48, - 0xa9,0xa5,0x28,0xd7,0x0c,0x08,0xc9,0xa5, - 0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe, - 0x28,0xa5,0x0c,0xc9,0xff,0xd0,0xfe,0xa9, - 0x00,0x85,0x0c,0xa9,0xff,0x48,0xa9,0x5a, - 0x28,0xd7,0x0c,0x08,0xc9,0x5a,0xd0,0xfe, - 0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28,0xa5, - 0x0c,0xc9,0x20,0xd0,0xfe,0xa9,0xbf,0x85, - 0x0c,0xa9,0x00,0x48,0xa9,0xa5,0x28,0xe7, - 0x0c,0x08,0xc9,0xa5,0xd0,0xfe,0x68,0x48, - 0xc9,0x30,0xd0,0xfe,0x28,0xa5,0x0c,0xc9, - 0xff,0xd0,0xfe,0xa9,0x00,0x85,0x0c,0xa9, - 0xff,0x48,0xa9,0x5a,0x28,0xe7,0x0c,0x08, - 0xc9,0x5a,0xd0,0xfe,0x68,0x48,0xc9,0xff, - 0xd0,0xfe,0x28,0xa5,0x0c,0xc9,0x40,0xd0, - 0xfe,0xa9,0x7f,0x85,0x0c,0xa9,0x00,0x48, - 0xa9,0xa5,0x28,0xf7,0x0c,0x08,0xc9,0xa5, - 0xd0,0xfe,0x68,0x48,0xc9,0x30,0xd0,0xfe, - 0x28,0xa5,0x0c,0xc9,0xff,0xd0,0xfe,0xa9, - 0x00,0x85,0x0c,0xa9,0xff,0x48,0xa9,0x5a, - 0x28,0xf7,0x0c,0x08,0xc9,0x5a,0xd0,0xfe, - 0x68,0x48,0xc9,0xff,0xd0,0xfe,0x28,0xa5, - 0x0c,0xc9,0x80,0xd0,0xfe,0xe0,0xba,0xd0, - 0xfe,0xc0,0xd0,0xd0,0xfe,0xba,0xe0,0xff, - 0xd0,0xfe,0xad,0x02,0x02,0xc9,0x11,0xd0, - 0xfe,0xa9,0x12,0x8d,0x02,0x02,0xa2,0xde, - 0xa0,0xad,0xa9,0x00,0x48,0xa9,0x80,0x28, - 0xd2,0x2c,0x08,0xc9,0x80,0xd0,0xfe,0x68, - 0x48,0xc9,0x31,0xd0,0xfe,0x28,0xa9,0x00, - 0x48,0xa9,0x7f,0x28,0xd2,0x2c,0x08,0xc9, - 0x7f,0xd0,0xfe,0x68,0x48,0xc9,0x33,0xd0, - 0xfe,0x28,0xa9,0x00,0x48,0xa9,0x7e,0x28, - 0xd2,0x2c,0x08,0xc9,0x7e,0xd0,0xfe,0x68, - 0x48,0xc9,0xb0,0xd0,0xfe,0x28,0xa9,0xff, - 0x48,0xa9,0x80,0x28,0xd2,0x2c,0x08,0xc9, - 0x80,0xd0,0xfe,0x68,0x48,0xc9,0x7d,0xd0, - 0xfe,0x28,0xa9,0xff,0x48,0xa9,0x7f,0x28, - 0xd2,0x2c,0x08,0xc9,0x7f,0xd0,0xfe,0x68, - 0x48,0xc9,0x7f,0xd0,0xfe,0x28,0xa9,0xff, - 0x48,0xa9,0x7e,0x28,0xd2,0x2c,0x08,0xc9, - 0x7e,0xd0,0xfe,0x68,0x48,0xc9,0xfc,0xd0, - 0xfe,0x28,0xe0,0xde,0xd0,0xfe,0xc0,0xad, - 0xd0,0xfe,0xba,0xe0,0xff,0xd0,0xfe,0xad, - 0x02,0x02,0xc9,0x12,0xd0,0xfe,0xa9,0x13, - 0x8d,0x02,0x02,0xa2,0x42,0xa0,0x00,0xa5, - 0x3a,0x85,0x0c,0xa5,0x3b,0x85,0x0d,0xa9, - 0x00,0x48,0xb9,0x53,0x02,0x28,0x32,0x0c, - 0x08,0xd9,0x5b,0x02,0xd0,0xfe,0x68,0x49, - 0x30,0xd9,0x5f,0x02,0xd0,0xfe,0xe6,0x0c, - 0xc8,0xc0,0x04,0xd0,0xe2,0x88,0xc6,0x0c, - 0xa9,0xff,0x48,0xb9,0x53,0x02,0x28,0x32, - 0x0c,0x08,0xd9,0x5b,0x02,0xd0,0xfe,0x68, - 0x49,0x7d,0xd9,0x5f,0x02,0xd0,0xfe,0xc6, - 0x0c,0x88,0x10,0xe4,0xa0,0x00,0xa5,0x42, - 0x85,0x0c,0xa5,0x43,0x85,0x0d,0xa9,0x00, - 0x48,0xb9,0x57,0x02,0x28,0x52,0x0c,0x08, - 0xd9,0x5b,0x02,0xd0,0xfe,0x68,0x49,0x30, - 0xd9,0x5f,0x02,0xd0,0xfe,0xe6,0x0c,0xc8, - 0xc0,0x04,0xd0,0xe2,0x88,0xc6,0x0c,0xa9, - 0xff,0x48,0xb9,0x57,0x02,0x28,0x52,0x0c, - 0x08,0xd9,0x5b,0x02,0xd0,0xfe,0x68,0x49, - 0x7d,0xd9,0x5f,0x02,0xd0,0xfe,0xc6,0x0c, - 0x88,0x10,0xe4,0xa0,0x00,0xa5,0x4a,0x85, - 0x0c,0xa5,0x4b,0x85,0x0d,0xa9,0x00,0x48, - 0xb9,0x4f,0x02,0x28,0x12,0x0c,0x08,0xd9, - 0x5b,0x02,0xd0,0xfe,0x68,0x49,0x30,0xd9, - 0x5f,0x02,0xd0,0xfe,0xe6,0x0c,0xc8,0xc0, - 0x04,0xd0,0xe2,0x88,0xc6,0x0c,0xa9,0xff, - 0x48,0xb9,0x4f,0x02,0x28,0x12,0x0c,0x08, - 0xd9,0x5b,0x02,0xd0,0xfe,0x68,0x49,0x7d, - 0xd9,0x5f,0x02,0xd0,0xfe,0xc6,0x0c,0x88, - 0x10,0xe4,0xe0,0x42,0xd0,0xfe,0xba,0xe0, - 0xff,0xd0,0xfe,0xad,0x02,0x02,0xc9,0x13, - 0xd0,0xfe,0xa9,0x14,0x8d,0x02,0x02,0x58, - 0xd8,0xa2,0x0e,0xa0,0xff,0xa9,0x00,0x85, - 0x0c,0x85,0x0d,0x85,0x0e,0x8d,0x05,0x02, - 0x85,0x0f,0x85,0x10,0xa9,0xff,0x85,0x12, - 0x8d,0x06,0x02,0xa9,0x02,0x85,0x11,0x18, - 0x20,0x4e,0x26,0xe6,0x0c,0xe6,0x0f,0x08, - 0x08,0x68,0x29,0x82,0x28,0xd0,0x02,0xe6, - 0x10,0x05,0x10,0x85,0x11,0x38,0x20,0x4e, - 0x26,0xc6,0x0c,0xe6,0x0d,0xd0,0xe0,0xa9, - 0x00,0x85,0x10,0xee,0x05,0x02,0xe6,0x0e, - 0x08,0x68,0x29,0x82,0x85,0x11,0xc6,0x12, - 0xce,0x06,0x02,0xa5,0x0e,0x85,0x0f,0xd0, - 0xc6,0xe0,0x0e,0xd0,0xfe,0xc0,0xff,0xd0, - 0xfe,0xba,0xe0,0xff,0xd0,0xfe,0xad,0x02, - 0x02,0xc9,0x14,0xd0,0xfe,0xa9,0x15,0x8d, - 0x02,0x02,0xf8,0xa2,0x0e,0xa0,0xff,0xa9, - 0x99,0x85,0x0d,0x85,0x0e,0x8d,0x05,0x02, - 0x85,0x0f,0xa9,0x01,0x85,0x0c,0x85,0x10, - 0xa9,0x81,0x85,0x11,0xa9,0x00,0x85,0x12, - 0x8d,0x06,0x02,0x38,0x20,0xf7,0x24,0xc6, - 0x0c,0xa5,0x0f,0xd0,0x08,0xc6,0x10,0xa9, - 0x99,0x85,0x0f,0xd0,0x12,0x29,0x0f,0xd0, - 0x0c,0xc6,0x0f,0xc6,0x0f,0xc6,0x0f,0xc6, - 0x0f,0xc6,0x0f,0xc6,0x0f,0xc6,0x0f,0x08, - 0x68,0x29,0x82,0x05,0x10,0x85,0x11,0x18, - 0x20,0xf7,0x24,0xe6,0x0c,0xa5,0x0d,0xf0, - 0x15,0x29,0x0f,0xd0,0x0c,0xc6,0x0d,0xc6, - 0x0d,0xc6,0x0d,0xc6,0x0d,0xc6,0x0d,0xc6, - 0x0d,0xc6,0x0d,0x4c,0x4b,0x24,0xa9,0x99, - 0x85,0x0d,0xa5,0x0e,0xf0,0x39,0x29,0x0f, - 0xd0,0x18,0xc6,0x0e,0xc6,0x0e,0xc6,0x0e, - 0xc6,0x0e,0xc6,0x0e,0xc6,0x0e,0xe6,0x12, - 0xe6,0x12,0xe6,0x12,0xe6,0x12,0xe6,0x12, - 0xe6,0x12,0xc6,0x0e,0xe6,0x12,0xa5,0x12, - 0x8d,0x06,0x02,0xa5,0x0e,0x8d,0x05,0x02, - 0x85,0x0f,0x08,0x68,0x29,0x82,0x09,0x01, - 0x85,0x11,0xe6,0x10,0x4c,0x4b,0x24,0xe0, - 0x0e,0xd0,0xfe,0xc0,0xff,0xd0,0xfe,0xba, - 0xe0,0xff,0xd0,0xfe,0xd8,0xad,0x02,0x02, - 0xc9,0x15,0xd0,0xfe,0xa9,0xf0,0x8d,0x02, - 0x02,0x4c,0xf1,0x24,0x4c,0x00,0x04,0x08, - 0xa5,0x0d,0x65,0x0e,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0x83,0xc5,0x11,0xd0,0xfe, - 0x28,0x08,0xa5,0x0d,0xe5,0x12,0x08,0xc5, - 0x0f,0xd0,0xfe,0x68,0x29,0x83,0xc5,0x11, - 0xd0,0xfe,0x28,0x08,0xa5,0x0d,0x6d,0x05, - 0x02,0x08,0xc5,0x0f,0xd0,0xfe,0x68,0x29, - 0x83,0xc5,0x11,0xd0,0xfe,0x28,0x08,0xa5, - 0x0d,0xed,0x06,0x02,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0x83,0xc5,0x11,0xd0,0xfe, - 0x28,0x08,0xa5,0x0e,0x8d,0x0b,0x02,0xa5, - 0x0d,0x20,0x0a,0x02,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0x83,0xc5,0x11,0xd0,0xfe, - 0x28,0x08,0xa5,0x12,0x8d,0x0e,0x02,0xa5, - 0x0d,0x20,0x0d,0x02,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0x83,0xc5,0x11,0xd0,0xfe, - 0x28,0x08,0xa5,0x0d,0x75,0x00,0x08,0xc5, - 0x0f,0xd0,0xfe,0x68,0x29,0x83,0xc5,0x11, - 0xd0,0xfe,0x28,0x08,0xa5,0x0d,0xf5,0x04, - 0x08,0xc5,0x0f,0xd0,0xfe,0x68,0x29,0x83, - 0xc5,0x11,0xd0,0xfe,0x28,0x08,0xa5,0x0d, - 0x7d,0xf7,0x01,0x08,0xc5,0x0f,0xd0,0xfe, - 0x68,0x29,0x83,0xc5,0x11,0xd0,0xfe,0x28, - 0x08,0xa5,0x0d,0xfd,0xf8,0x01,0x08,0xc5, - 0x0f,0xd0,0xfe,0x68,0x29,0x83,0xc5,0x11, - 0xd0,0xfe,0x28,0x08,0xa5,0x0d,0x79,0x06, - 0x01,0x08,0xc5,0x0f,0xd0,0xfe,0x68,0x29, - 0x83,0xc5,0x11,0xd0,0xfe,0x28,0x08,0xa5, - 0x0d,0xf9,0x07,0x01,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0x83,0xc5,0x11,0xd0,0xfe, - 0x28,0x08,0xa5,0x0d,0x61,0x44,0x08,0xc5, - 0x0f,0xd0,0xfe,0x68,0x29,0x83,0xc5,0x11, - 0xd0,0xfe,0x28,0x08,0xa5,0x0d,0xe1,0x46, - 0x08,0xc5,0x0f,0xd0,0xfe,0x68,0x29,0x83, - 0xc5,0x11,0xd0,0xfe,0x28,0x08,0xa5,0x0d, - 0x71,0x56,0x08,0xc5,0x0f,0xd0,0xfe,0x68, - 0x29,0x83,0xc5,0x11,0xd0,0xfe,0x28,0x08, - 0xa5,0x0d,0xf1,0x58,0x08,0xc5,0x0f,0xd0, - 0xfe,0x68,0x29,0x83,0xc5,0x11,0xd0,0xfe, - 0x28,0x08,0xa5,0x0d,0x72,0x52,0x08,0xc5, - 0x0f,0xd0,0xfe,0x68,0x29,0x83,0xc5,0x11, - 0xd0,0xfe,0x28,0x08,0xa5,0x0d,0xf2,0x54, - 0x08,0xc5,0x0f,0xd0,0xfe,0x68,0x29,0x83, - 0xc5,0x11,0xd0,0xfe,0x28,0x60,0xa5,0x11, - 0x29,0x83,0x48,0xa5,0x0d,0x45,0x0e,0x30, - 0x0a,0xa5,0x0d,0x45,0x0f,0x10,0x04,0x68, - 0x09,0x40,0x48,0x68,0x85,0x11,0x08,0xa5, - 0x0d,0x72,0x52,0x08,0xc5,0x0f,0xd0,0xfe, - 0x68,0x29,0xc3,0xc5,0x11,0xd0,0xfe,0x28, - 0x08,0xa5,0x0d,0xf2,0x54,0x08,0xc5,0x0f, - 0xd0,0xfe,0x68,0x29,0xc3,0xc5,0x11,0xd0, - 0xfe,0x28,0x60,0x91,0x26,0x82,0x16,0x88, - 0x88,0x08,0x88,0x88,0x88,0x28,0xb0,0xfe, - 0x70,0xfe,0x30,0xfe,0xf0,0xfe,0xc9,0x49, - 0xd0,0xfe,0xe0,0x4e,0xd0,0xfe,0xc0,0x41, - 0xd0,0xfe,0x48,0x8a,0x48,0xba,0xe0,0xfd, - 0xd0,0xfe,0x68,0xaa,0xa9,0xff,0x48,0x28, - 0x68,0xe8,0x49,0xaa,0x6c,0xff,0x02,0xea, - 0xea,0x4c,0xc1,0x26,0x4c,0x00,0x04,0x0e, - 0x27,0x0e,0x27,0xd5,0x26,0xce,0x16,0x0e, - 0x27,0x0e,0x27,0x88,0x88,0x08,0x88,0x88, - 0x88,0x28,0xb0,0xfe,0x70,0xfe,0x30,0xfe, - 0xf0,0xfe,0xc9,0x58,0xd0,0xfe,0xe0,0x04, - 0xd0,0xfe,0xc0,0x46,0xd0,0xfe,0x48,0x8a, - 0x48,0xba,0xe0,0xfd,0xd0,0xfe,0x68,0xaa, - 0xa9,0xff,0x48,0x28,0x68,0xe8,0xe8,0x49, - 0xaa,0x7c,0xf9,0x02,0xea,0xea,0x4c,0x06, - 0x27,0x4c,0x00,0x04,0xea,0xea,0xea,0xea, - 0x4c,0x10,0x27,0x4c,0x00,0x04,0x4c,0x16, - 0x27,0x4c,0x00,0x04,0x4c,0x1c,0x27,0x4c, - 0x00,0x04,0x88,0x88,0x08,0x88,0x88,0x88, - 0xc9,0xbd,0xf0,0x42,0xc9,0x42,0xd0,0xfe, - 0xe0,0x52,0xd0,0xfe,0xc0,0x48,0xd0,0xfe, - 0x85,0x0a,0x86,0x0b,0xba,0xbd,0x02,0x01, - 0xc9,0x30,0xd0,0xfe,0x68,0xc9,0x34,0xd0, - 0xfe,0xba,0xe0,0xfc,0xd0,0xfe,0xad,0xff, - 0x01,0xc9,0x17,0xd0,0xfe,0xad,0xfe,0x01, - 0xc9,0x20,0xd0,0xfe,0xa9,0xff,0x48,0xa6, - 0x0b,0xe8,0xa5,0x0a,0x49,0xaa,0x28,0x40, - 0x4c,0x68,0x27,0x4c,0x00,0x04,0xe0,0xad, - 0xd0,0xfe,0xc0,0xb1,0xd0,0xfe,0x85,0x0a, - 0x86,0x0b,0xba,0xbd,0x02,0x01,0xc9,0xff, - 0xd0,0xfe,0x68,0xc9,0xf7,0xd0,0xfe,0xba, - 0xe0,0xfc,0xd0,0xfe,0xad,0xff,0x01,0xc9, - 0x17,0xd0,0xfe,0xad,0xfe,0x01,0xc9,0x46, - 0xd0,0xfe,0xa9,0x04,0x48,0xa6,0x0b,0xe8, - 0xa5,0x0a,0x49,0xaa,0x28,0x40,0x4c,0xa6, - 0x27,0x4c,0x00,0x04,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xea,0xea,0xea,0xea, - 0x4c,0xd0,0x27,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xea,0xea,0xea,0xea,0x4c,0x84,0x28,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x16,0x27,0x1c,0x27,0x24,0x27 - ]; - - return { - start: function() { - return 0x00; - }, - end: function() { - return 0xff; - }, - read: function(page, off) { - return data[page * 0x100 + off]; - }, - write: function(page, off, val) { - data[page * 0x100 + off] = val; - } - }; -} diff --git a/test/roms/65C02test.ts b/test/roms/65C02test.ts new file mode 100644 index 0000000..784d0fb --- /dev/null +++ b/test/roms/65C02test.ts @@ -0,0 +1,29 @@ +// From https://github.com/Klaus2m5/6502_65C02_functional_tests + +import fs from 'fs'; +import path from 'path'; +import { MemoryPages, byte } from '../../js/types'; + +export default class Test65C02 implements MemoryPages { + private data: Buffer; + + constructor() { + this.data = fs.readFileSync(path.join(__dirname, '65C02_extended_opcodes_test.bin')); + } + + start = () => { + return 0x00; + }; + + end = () => { + return 0xff; + }; + + read = (page: byte, off: byte) => { + return this.data[page << 8 | off]; + }; + + write = (page: byte, off: byte, val: byte) => { + this.data[page << 8 | off] = val; + }; +} diff --git a/test/util/asserts.ts b/test/util/asserts.ts new file mode 100644 index 0000000..cb1e842 --- /dev/null +++ b/test/util/asserts.ts @@ -0,0 +1,6 @@ +import { byte } from "../../js/types"; + +export const assertByte = (b: byte) => { + expect(b <= 0xff).toEqual(true); + expect(b >= 0x00).toEqual(true); +}; diff --git a/test/util/bios.ts b/test/util/bios.ts new file mode 100644 index 0000000..1e10cdf --- /dev/null +++ b/test/util/bios.ts @@ -0,0 +1,56 @@ +import { MemoryPages, byte } from "../../js/types"; +import { assertByte } from "./asserts"; + +export class Program implements MemoryPages { + private data: Buffer; + + constructor(private page: byte, code: byte[]) { + this.data = Buffer.from(code); + } + + start() { + return this.page; + } + + end() { + return this.page; + } + + read(page: byte, off: byte) { + assertByte(page); + assertByte(off); + return this.data[off]; + } + + write(_page: byte, _off: byte, _val: byte) { + // do nothing + } +} + +export const bios = new Program( + 0xff, + [ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x45, 0x4c, 0x4c, + 0x4f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x00, 0x04, 0x00, 0xff, + ] +); diff --git a/test/util/cpu.ts b/test/util/cpu.ts new file mode 100644 index 0000000..627b373 --- /dev/null +++ b/test/util/cpu.ts @@ -0,0 +1,34 @@ +import { flags, CpuState } from "js/cpu6502"; +import { byte } from "js/types"; +import { toHex } from "js/util"; + +export const dumpStatusRegister = (sr: byte) => + [ + sr & flags.N ? "N" : "-", + sr & flags.V ? "V" : "-", + sr & flags.X ? "X" : "-", + sr & flags.B ? "B" : "-", + sr & flags.D ? "D" : "-", + sr & flags.I ? "I" : "-", + sr & flags.Z ? "Z" : "-", + sr & flags.C ? "C" : "-", + ].join(""); + +const detail = !!process.env.JEST_DETAIL; + +export function toReadableState(state: CpuState) { + if (detail) { + const { pc, sp, a, x, y, s } = state; + + return { + pc: toHex(pc, 4), + sp: toHex(sp), + a: toHex(a), + x: toHex(x), + y: toHex(y), + s: dumpStatusRegister(s), + }; + } else { + return state; + } +} diff --git a/test/util/memory.ts b/test/util/memory.ts new file mode 100644 index 0000000..6dedf1f --- /dev/null +++ b/test/util/memory.ts @@ -0,0 +1,60 @@ +import { MemoryPages, byte, word } from "js/types"; +import { assertByte } from "./asserts"; + +export type Log = [address: word, value: byte, types: "read" | "write"]; +export class TestMemory implements MemoryPages { + private data: Buffer; + private logging: boolean = false; + private log: Log[] = []; + + constructor(private size: number) { + this.data = Buffer.alloc(size << 8); + } + + start() { + return 0; + } + + end() { + return this.size - 1; + } + + read(page: byte, off: byte) { + assertByte(page); + assertByte(off); + + const val = this.data[(page << 8) | off]; + if (this.logging) { + this.log.push([(page << 8) | off, val, "read"]); + } + return val; + } + + write(page: byte, off: byte, val: byte) { + assertByte(page); + assertByte(off); + assertByte(val); + + if (this.logging) { + this.log.push([(page << 8) | off, val, "write"]); + } + this.data[(page << 8) | off] = val; + } + + reset() { + this.log = []; + } + + logStart() { + this.log = []; + this.logging = true; + } + + logStop() { + this.logging = false; + } + + getLog() { + return this.log; + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..ad68421 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,43 @@ +{ + "compilerOptions": { + "jsx": "react", + "jsxFactory": "h", + "jsxFragmentFactory": "Fragment", + "module": "esnext", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "target": "es6", + "lib": ["DOM", "ES6"], + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "exactOptionalPropertyTypes": true, + "moduleResolution": "node", + "resolveJsonModule": true, + "sourceMap": true, + "outDir": "dist", + "baseUrl": ".", + "allowJs": true, + "paths": { + "*": [ + "node_modules/*", + "types/*" + ], + "js/*": [ + "js/*" + ], + "json/*": [ + "json/*" + ], + "test/*": [ + "test/*" + ] + } + }, + "include": [ + "js/**/*", + "test/**/*", + "types/**/*", + "*.config.js" + ] +} diff --git a/webpack.config.js b/webpack.config.js index b70cd3a..dce35a0 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -9,9 +9,25 @@ module.exports = }, output: { path: path.resolve('dist/'), - library: 'Apple1', - libraryExport: 'Apple1', - libraryTarget: 'var' + }, + module: { + rules: [ + { + test: /\.ts$/i, + use: [ + { + loader: 'ts-loader' + }, + ], + exclude: /node_modules/, + } + ] + }, + resolve: { + extensions: ['.ts', '.js'], + alias: { + js: path.resolve(__dirname, 'js/') + } }, devServer: { compress: true,