diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml deleted file mode 100644 index 229e8082..00000000 --- a/.github/workflows/integration-tests.yml +++ /dev/null @@ -1,108 +0,0 @@ -name: Integration Tests - -on: - push: - branches: [main] - pull_request: - branches: [main] - -jobs: - integration-tests: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - # Install system dependencies - - name: Install system dependencies - run: | - sudo apt-get update - sudo apt-get install -y curl make gcc g++ - - # Install Go - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: "1.21.9" - - # Install Foundry - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - # Install Bun - - name: Setup Bun - uses: oven-sh/setup-bun@v1 - with: - bun-version: latest - - # Install Tilt - - name: Install Tilt - run: | - curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh | bash - - # Clone Wormhole repo - - name: Clone Wormhole - run: | - git clone https://github.com/wormhole-foundation/wormhole.git - cd wormhole - git submodule update --init - - # Cache dependencies - - name: Cache dependencies - uses: actions/cache@v3 - with: - path: | - ~/.cache/go-build - ~/go/pkg/mod - node_modules - ~/.foundry - ~/.bun/install/cache - key: ${{ runner.os }}-deps-${{ hashFiles('**/go.sum', '**/package.json', '**/foundry.toml') }} - - # Start Tilt environment - - name: Start Tilt environment - run: | - cd wormhole/testing - tilt up --stream --file Tiltfile -- --evm2=true --query_server=true & - # Wait for environment to be ready - timeout 300 bash -c 'until curl -s http://localhost:8545 > /dev/null; do sleep 5; done' - - # Install project dependencies - - name: Install dependencies - run: | - cd integration-tests - bun install - - # Generate artifacts - - name: Generate artifacts - run: | - cd integration-tests - bun run generate:artifacts - - # Run integration tests (always with fresh deployment in CI) - - name: Run integration tests - run: | - cd integration-tests - CI=true bun test # CI flag will force fresh deployment - env: - WORMHOLE_API_KEY: "my_secret_key_3" - ETHDEVNET_MNEMONIC: "myth like bonus scare over problem client lizard pioneer submit female collect" - - # Upload test results (but not deployment cache) - - name: Upload test results - if: always() - uses: actions/upload-artifact@v3 - with: - name: test-results - path: integration-tests/test-results/** - - # Cleanup - - name: Cleanup - if: always() - run: | - cd wormhole/testing - tilt down diff --git a/.github/workflows/tilt-tests.yml b/.github/workflows/tilt-tests.yml new file mode 100644 index 00000000..577da58b --- /dev/null +++ b/.github/workflows/tilt-tests.yml @@ -0,0 +1,42 @@ +name: Integration tests + +on: + workflow_dispatch: + pull_request: + push: + branches: + - main + +jobs: + tilt: + runs-on: tilt-kube-public + + # Cancel previous builds on the same branch/ref. Full runs are expensive + # and capacity is limited, so we want to avoid running multiple builds + # in parallel even if it means skipping CI runs on permanent branches + # (unfortunately, we can't differentiate between temporary and permanent + # refs without duplicating the entire logic). + # concurrency: + # group: ${{ github.workflow }}-tilt-${{ github.ref }} + # cancel-in-progress: true + + steps: + # - name: Clear repository + # run: | + # rm -rf $GITHUB_WORKSPACE && mkdir $GITHUB_WORKSPACE + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Expand for link to Tilt dashboard (only available during build) + run: > + echo "Tilt progress dashboard: https://$DASHBOARD_URL" + - run: | + kubectl config set-context ci --namespace=$DEPLOY_NS + kubectl config use-context ci + + - run: tilt ci -- --evm2 --query_server=true --namespace=$DEPLOY_NS + timeout-minutes: 30 + + # Clean up k8s resources + - run: kubectl delete --namespace=$DEPLOY_NS service,statefulset,configmap,pod,job --all + if: always() diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..1f964acb --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +# Wormhole git directory +.wormhole/.git/ +.wormhole/.git/* +.wormhole/ + +# Common files to ignore +node_modules/ +.env +*.log \ No newline at end of file diff --git a/Tiltfile b/Tiltfile new file mode 100644 index 00000000..f203400b --- /dev/null +++ b/Tiltfile @@ -0,0 +1,25 @@ +load('ext://namespace', 'namespace_create', 'namespace_inject') +load('ext://git_resource', 'git_checkout') + +# Add platform settings for M3 Mac +def get_architecture(): + arch = str(local('uname -m', quiet=True)) + return '--platform=linux/arm64' if 'arm64' in arch else '' + +git_checkout('https://github.com/wormhole-foundation/wormhole.git#main', '.wormhole/', unsafe_mode=True) +load(".wormhole/Tiltfile", "namespace", "k8s_yaml_with_ns") + +# CI tests (includes EVM contracts in build) +custom_build( + ref = "multi-gov-ci", + command = 'DOCKER_BUILDKIT=1 docker build --network=host %s --progress=plain --build-arg BUILDKIT_INLINE_CACHE=1 -t $EXPECTED_REF -f ./integration-tests/Dockerfile .' % get_architecture(), + deps = ['./integration-tests', './evm'], + ignore=['node_modules', '.wormhole', 'cache', 'out'] +) + +k8s_yaml_with_ns("./integration-tests/ci.yaml") +k8s_resource( + "multi-gov-tests", + labels = ["multi-gov"], + resource_deps = ["eth-devnet", "eth-devnet2", "query-server"], +) diff --git a/evm/Dockerfile b/evm/Dockerfile new file mode 100644 index 00000000..985a6455 --- /dev/null +++ b/evm/Dockerfile @@ -0,0 +1,12 @@ +FROM ghcr.io/foundry-rs/foundry@sha256:8b843eb65cc7b155303b316f65d27173c862b37719dc095ef3a2ef27ce8d3c00 as builder + +WORKDIR /app +COPY foundry.toml foundry.toml +COPY lib lib +COPY src src + +RUN FOUNDRY_PROFILE=ir forge build + +FROM scratch AS foundry-export + +COPY --from=builder /app/out . diff --git a/evm/foundry.toml b/evm/foundry.toml index 12920436..1ec402bc 100644 --- a/evm/foundry.toml +++ b/evm/foundry.toml @@ -9,7 +9,7 @@ "wormhole-sdk/=lib/wormhole-solidity-sdk/src", "src/=src/", "test/=test/", - "script/=script/" + "script/=script/", ] solc_version = "0.8.23" verbosity = 3 @@ -42,4 +42,4 @@ holesky = "${HOLESKY_RPC_URL}" mainnet = "${ETHEREUM_RPC_URL}" optimism_sepolia = "${OPTIMISM_SEPOLIA_RPC_URL}" - sepolia = "${SEPOLIA_RPC_URL}" \ No newline at end of file + sepolia = "${SEPOLIA_RPC_URL}" diff --git a/integration-tests/.dockerignore b/integration-tests/.dockerignore new file mode 100644 index 00000000..c300afb2 --- /dev/null +++ b/integration-tests/.dockerignore @@ -0,0 +1,27 @@ +# Node +node_modules +npm-debug.log + +# Build artifacts +out +cache +artifacts + +# Git +.git +.gitignore + +# IDE +.vscode +.idea + +# Wormhole +.wormhole + +# Test artifacts +coverage +.deployment-cache.json + +# Environment +.env +.env.* \ No newline at end of file diff --git a/integration-tests/.gitignore b/integration-tests/.gitignore index bff40c5b..7dc63d45 100644 --- a/integration-tests/.gitignore +++ b/integration-tests/.gitignore @@ -3,9 +3,6 @@ # Deployment cache .deployment-cache.json -# Artifacts -artifacts/ - # Logs logs @@ -179,3 +176,21 @@ dist # Finder (MacOS) folder config .DS_Store + +# Wormhole +.wormhole/ + +# Dependencies +node_modules/ + +# Build artifacts +out/ +cache/ + +# Test artifacts +coverage/ +.deployment-cache.json + +# Environment +.env +.env.* diff --git a/integration-tests/Dockerfile b/integration-tests/Dockerfile new file mode 100644 index 00000000..f9954169 --- /dev/null +++ b/integration-tests/Dockerfile @@ -0,0 +1,24 @@ +# First stage: Build contracts +FROM --platform=linux/amd64 ghcr.io/foundry-rs/foundry@sha256:8b843eb65cc7b155303b316f65d27173c862b37719dc095ef3a2ef27ce8d3c00 as foundry + +# Only copy what's needed for forge build +WORKDIR /app/evm +COPY evm/foundry.toml ./foundry.toml +COPY evm/lib ./lib +COPY evm/src ./src +RUN forge clean && forge build +RUN ls -la + +# Second stage: Setup test environment +FROM oven/bun:1 AS base +WORKDIR /app + +# Copy all integration-tests files +COPY integration-tests/ ./ + +# Install dependencies +RUN bun install --frozen-lockfile + +# Copy foundry output +COPY --from=foundry /app/evm/out ./out + diff --git a/integration-tests/artifacts/ERC1967Proxy.ts b/integration-tests/artifacts/ERC1967Proxy.ts new file mode 100644 index 00000000..c81214f7 --- /dev/null +++ b/integration-tests/artifacts/ERC1967Proxy.ts @@ -0,0 +1,2 @@ +export const ERC1967ProxyBytecode = + '0x60806040526102de8038038061001481610194565b92833981019060408183031261018f5780516001600160a01b03811680820361018f5760208381015190936001600160401b03821161018f570184601f8201121561018f5780519061006d610068836101cf565b610194565b9582875285838301011161018f57849060005b83811061017b57505060009186010152813b15610163577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b03191682179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28351156101455750600080848461012c96519101845af4903d1561013c573d61011c610068826101cf565b908152600081943d92013e6101ea565b505b6040516090908161024e8239f35b606092506101ea565b9250505034610154575061012e565b63b398979f60e01b8152600490fd5b60249060405190634c9c8ce360e01b82526004820152fd5b818101830151888201840152869201610080565b600080fd5b6040519190601f01601f191682016001600160401b038111838210176101b957604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116101b957601f01601f191660200190565b9061021157508051156101ff57805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580610244575b610222575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561021a56fe608060405273ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54166000808092368280378136915af43d82803e156056573d90f35b3d90fdfea2646970667358221220d681ef204626337d7c17ef1f758519005a87d8b6c1992729c6f1933d7251861c64736f6c63430008170033' as const; diff --git a/integration-tests/artifacts/ERC20VotesFake.ts b/integration-tests/artifacts/ERC20VotesFake.ts new file mode 100644 index 00000000..425857fe --- /dev/null +++ b/integration-tests/artifacts/ERC20VotesFake.ts @@ -0,0 +1,2 @@ +export const ERC20VotesFakeBytecode = + '0x610160604090808252346200041e57620000198162000423565b600981526020908181016845524332304d6f636b60b81b92838252845190620000428262000423565b600195868352818301603160f81b8152815196620000608862000423565b6009885283880152815197620000768962000423565b600498898152634532304d60e01b85820152885160018060401b03998a821162000409576003918254918583811c93168015620003fe575b8984101462000300578190601f93848111620003a8575b508990848311600114620003415760009262000335575b505060001982851b1c191690851b1782555b8251928b841162000320578c548581811c9116801562000315575b898210146200030057828111620002b5575b50879184116001146200024a579383949184926000956200023e575b50501b92600019911b1c19161788555b620001528662000455565b9461012095865262000164856200062f565b96610140978852519020938460e05251902096610100978089524660a0528251938401947f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f86528385015260608401524660808401523060a084015260a0835260c0830196838810908811176200022957508590525190206080523060c052612d809384620007e88539608051846117d5015260a05184611890015260c051846117a6015260e051846118240152518361184a01525182610a8f01525181610ab90152f35b604190634e487b7160e01b6000525260246000fd5b01519350388062000137565b9190601f198416928d60005284896000209460005b8b898383106200029d575050501062000282575b50505050811b01885562000147565b01519060f884600019921b161c191690553880808062000273565b8686015189559097019694850194889350016200025f565b8d600052886000208380870160051c8201928b8810620002f6575b0160051c019086905b828110620002e95750506200011b565b60008155018690620002d9565b92508192620002d0565b60228e634e487b7160e01b6000525260246000fd5b90607f169062000109565b60418d634e487b7160e01b6000525260246000fd5b015190503880620000dc565b90879350601f19831691866000528b6000209260005b8d82821062000391575050841162000378575b505050811b018255620000ee565b015160001983871b60f8161c191690553880806200036a565b8385015186558b9790950194938401930162000357565b90915084600052896000208480850160051c8201928c8610620003f4575b918991869594930160051c01915b828110620003e4575050620000c5565b60008155859450899101620003d4565b92508192620003c6565b92607f1692620000ae565b60418c634e487b7160e01b6000525260246000fd5b600080fd5b604081019081106001600160401b038211176200043f57604052565b634e487b7160e01b600052604160045260246000fd5b80516020919082811015620004f4575090601f8251116200049357808251920151908083106200048457501790565b82600019910360031b1b161790565b90604051809263305a27a960e01b82528060048301528251908160248401526000935b828510620004da575050604492506000838284010152601f80199101168101030190fd5b8481018201518686016044015293810193859350620004b6565b6001600160401b0381116200043f576005928354926001938481811c9116801562000624575b838210146200060e57601f8111620005d7575b5081601f84116001146200056d575092829391839260009462000561575b50501b916000199060031b1c191617905560ff90565b0151925038806200054b565b919083601f1981168760005284600020946000905b88838310620005bc5750505010620005a2575b505050811b01905560ff90565b015160001960f88460031b161c1916905538808062000595565b85870151885590960195948501948793509081019062000582565b8560005284601f846000209201871c820191601f8601881c015b828110620006015750506200052d565b60008155018590620005f1565b634e487b7160e01b600052602260045260246000fd5b90607f16906200051a565b805160209081811015620006bd5750601f8251116200065c57808251920151908083106200048457501790565b90604051809263305a27a960e01b82528060048301528251908160248401526000935b828510620006a3575050604492506000838284010152601f80199101168101030190fd5b84810182015186860160440152938101938593506200067f565b906001600160401b0382116200043f57600654926001938481811c91168015620007dc575b838210146200060e57601f8111620007a2575b5081601f84116001146200073657509282939183926000946200072a575b50501b916000199060031b1c19161760065560ff90565b01519250388062000713565b919083601f198116600660005284600020946000905b888383106200078757505050106200076d575b505050811b0160065560ff90565b015160001960f88460031b161c191690553880806200075f565b8587015188559096019594850194879350908101906200074c565b600660005284601f84600020920160051c820191601f860160051c015b828110620007cf575050620006f5565b60008155018590620007bf565b90607f1690620006e256fe6080604052600436101561001257600080fd5b60003560e01c806306fdde03146101b7578063095ea7b3146101b257806318160ddd146101ad57806323b872dd146101a8578063313ce567146101a35780633644e5151461019e5780633a46b1a81461019957806340c10f19146101945780634bf5d7e91461018f578063587cde1e1461018a5780635c19a95c1461018557806369f95dd2146101805780636fcfff451461017b57806370a08231146101765780637ecebe001461017157806384b0196e1461016c5780638e539e8c1461016757806391ddadf41461016257806395d89b411461015d5780639ab24eb0146101585780639dc29fac14610153578063a9059cbb1461014e578063c3cda52014610149578063d505accf14610144578063dd62ed3e1461013f5763f1127ed81461013a57600080fd5b6113e9565b611354565b611165565b611058565b610ff4565b610e6f565b610de7565b610d21565b610cd7565b610b8b565b610a56565b6109f1565b61098e565b6108e2565b61087b565b61083b565b6107d5565b61070d565b6106c8565b6105cf565b61058e565b610554565b610429565b6103ed565b61039e565b61022e565b919082519283825260005b8481106102065750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016101c7565b90602061022b9281815201906101bc565b90565b34610353576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035057604051908060035490610270826114b8565b8085529160209160019182811690811561030557506001146102ad575b6102a98661029d818803826115af565b6040519182918261021a565b0390f35b9350600384527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8385106102f25750505050810160200161029d826102a93861028d565b80548686018401529382019381016102d5565b8796506102a99794506020935061029d9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010192933861028d565b80fd5b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361035357565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361035357565b346103535760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610353576103e26103d8610358565b6024359033611da3565b602060405160018152f35b346103535760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610353576020600254604051908152f35b346103535760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035357610460610358565b61046861037b565b6044359073ffffffffffffffffffffffffffffffffffffffff831660005260016020526104b93360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84036104f9575b6104ed9350611618565b60405160018152602090f35b82841061051557610510836104ed95033383611eb0565b6104e3565b6040517ffb8f41b20000000000000000000000000000000000000000000000000000000081523360048201526024810185905260448101849052606490fd5b346103535760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035357602060405160128152f35b346103535760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103535760206105c761178f565b604051908152f35b346103535760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035357610606610358565b602435610612426118b6565b65ffffffffffff8116821015610688576102a979ffffffffffffffffffffffffffffffffffffffffffffffffffff6106778473ffffffffffffffffffffffffffffffffffffffff871660005260096020526106716040600020916118b6565b9061196b565b604051911681529081906020820190565b6040517fecd3f81e000000000000000000000000000000000000000000000000000000008152600481019290925265ffffffffffff166024820152604490fd5b346103535760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103535761070b610702610358565b60243590611a4a565b005b346103535760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035357610745426118b6565b65ffffffffffff80610756426118b6565b169116036107ab576102a960405161076d8161153a565b600e81527f6d6f64653d74696d657374616d7000000000000000000000000000000000000060208201526040519182916020835260208301906101bc565b60046040517f6ff07140000000000000000000000000000000000000000000000000000000008152fd5b346103535760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035357602073ffffffffffffffffffffffffffffffffffffffff80610824610358565b166000526008825260406000205416604051908152f35b346103535760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103535761070b610875610358565b33611b5a565b346103535760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610353576108b2610358565b60243579ffffffffffffffffffffffffffffffffffffffffffffffffffff81168091036103535761070b91611a4a565b346103535760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103535773ffffffffffffffffffffffffffffffffffffffff61092e610358565b16600052600960205260406000205463ffffffff908181116109565760209160405191168152f35b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252602060048301526024820152fd5b346103535760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103535760206105c76109ca610358565b73ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000205490565b346103535760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103535773ffffffffffffffffffffffffffffffffffffffff610a3d610358565b1660005260076020526020604060002054604051908152f35b34610353576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035057610b2e90610ab37f00000000000000000000000000000000000000000000000000000000000000006122a2565b90610add7f00000000000000000000000000000000000000000000000000000000000000006123da565b9060405191610aeb8361155b565b818352610b3c6020916040519687967f0f00000000000000000000000000000000000000000000000000000000000000885260e0602089015260e08801906101bc565b9086820360408801526101bc565b904660608601523060808601528260a086015284820360c0860152602080855193848152019401925b828110610b7457505050500390f35b835185528695509381019392810192600101610b65565b346103535760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035357600435610bc6426118b6565b9065ffffffffffff918281168210156106885750610be3906118b6565b600a54906000908260058111610c69575b50610bff935061207e565b80610c2e5750602060005b79ffffffffffffffffffffffffffffffffffffffffffffffffffff60405191168152f35b610c39602091611930565b600a6000527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8015460301c610c0a565b9092610c7482611f3e565b8203918211610cd257610bff94600a60005280837fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801541690851610600014610cc05750915b38610bf4565b929150610ccc9061195d565b90610cba565b611901565b346103535760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610353576020610d11426118b6565b65ffffffffffff60405191168152f35b34610353576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035057604051908060045490610d63826114b8565b808552916020916001918281169081156103055750600114610d8f576102a98661029d818803826115af565b9350600484527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b838510610dd45750505050810160200161029d826102a93861028d565b8054868601840152938201938101610db7565b346103535760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103535773ffffffffffffffffffffffffffffffffffffffff610e33610358565b166000526009602052602079ffffffffffffffffffffffffffffffffffffffffffffffffffff610e666040600020611c74565b16604051908152f35b346103535760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035357610ea6610358565b60243573ffffffffffffffffffffffffffffffffffffffff8216918215610fc357610ef18173ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b5492828410610f6c576000908361070b9503610f2d8473ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b55610f3b8460025403600255565b6040518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a36127f5565b506040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91909116600482015260248101929092526044820152606490fd5b60246040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152fd5b346103535760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610353576103e261102e610358565b6024359033611618565b6064359060ff8216820361035357565b6084359060ff8216820361035357565b346103535760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103535761108f610358565b6044359060243561109e611038565b8342116111345761112861070b9461112f926040519060208201927fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf845273ffffffffffffffffffffffffffffffffffffffff8816604084015286606084015260808301526080825261111082611577565b61112360a4359360843593519020611cbe565b611cff565b9182611d17565b611b5a565b602484604051907f4683af0e0000000000000000000000000000000000000000000000000000000082526004820152fd5b346103535760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103535761119c610358565b6111a461037b565b604435906064356111b3611048565b814211611323579061126a6112a9926112966111f88873ffffffffffffffffffffffffffffffffffffffff166000526007602052604060002080549060018201905590565b9360405193849160208301968a8a8d8a91959493909260a09360c08401977f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9855273ffffffffffffffffffffffffffffffffffffffff8092166020860152166040840152606083015260808201520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018452836115af565b61112360c4359360a43593519020611cbe565b73ffffffffffffffffffffffffffffffffffffffff808516908216036112d3575061070b92611da3565b6040517f4b800e4600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529084166024820152604490fd5b602482604051907f627913020000000000000000000000000000000000000000000000000000000082526004820152fd5b346103535760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103535760206113e0611390610358565b73ffffffffffffffffffffffffffffffffffffffff6113ad61037b565b91166000526001835260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b346103535760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261035357611420610358565b60243563ffffffff811681036103535761147c6114829173ffffffffffffffffffffffffffffffffffffffff6040946114576115ff565b506114606115ff565b50166000526009602052836000206114766115ff565b50612647565b5061268e565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff602083519265ffffffffffff81511684520151166020820152f35b90600182811c92168015611501575b60208310146114d257565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916114c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761155657604052565b61150b565b6020810190811067ffffffffffffffff82111761155657604052565b60a0810190811067ffffffffffffffff82111761155657604052565b60c0810190811067ffffffffffffffff82111761155657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761155657604052565b604051906115fd8261153a565b565b6040519061160c8261153a565b60006020838281520152565b92919073ffffffffffffffffffffffffffffffffffffffff93848116948515610fc3578216801561175e5761166d8273ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b549584871061170957846115fd9697036116a78473ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b556116d28473ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b8054860190556040518581527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a3612902565b6040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810188905260448101869052606490fd5b60246040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630148061188d575b156117f7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261188781611593565b51902090565b507f000000000000000000000000000000000000000000000000000000000000000046146117ce565b65ffffffffffff908181116118c9571690565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252603060048301526024820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211610cd257565b9060018201809211610cd257565b9081549060009180600581116119fe575b50915b8281106119ae57505080611994575050600090565b61199d90611930565b906000526020600020015460301c90565b90918082169080831860011c8201809211610cd2578460005265ffffffffffff80836020600020015416908516106000146119ec5750915b9061197f565b9291506119f89061195d565b906119e6565b90611a0882611f3e565b8203918211610cd2578460005265ffffffffffff8083602060002001541690841610600014611a3957505b3861197c565b9250611a449061195d565b91611a33565b919073ffffffffffffffffffffffffffffffffffffffff8316801561175e57600254828101809111610cd257600255611aa38473ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b8054830190556040518281526000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090a36002549279ffffffffffffffffffffffffffffffffffffffffffffffffffff8411611b08576115fd929350612881565b6040517f1cb15d260000000000000000000000000000000000000000000000000000000081526004810185905279ffffffffffffffffffffffffffffffffffffffffffffffffffff6024820152604490fd5b6115fd91611c0973ffffffffffffffffffffffffffffffffffffffff927fffffffffffffffffffffffff0000000000000000000000000000000000000000848216948560005260086020526040600020958654968288169788938816948591161790557f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f600080a473ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000205490565b916120f9565b600a5480611c1d5750600090565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810111610cd257600a6000527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7015460301c90565b805480611c82575050600090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff918183810111610cd257600052602060002001015460301c90565b604290611cc961178f565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b9161022b9391611d0e9361249a565b90929192612570565b90611d4b8273ffffffffffffffffffffffffffffffffffffffff166000526007602052604060002080549060018201905590565b809103611d56575050565b6044925073ffffffffffffffffffffffffffffffffffffffff604051927f752d88c00000000000000000000000000000000000000000000000000000000084521660048301526024820152fd5b9073ffffffffffffffffffffffffffffffffffffffff91828116928315611e7f578216938415611e4e5780611e447f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92594611e1f60209573ffffffffffffffffffffffffffffffffffffffff166000526001602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b55604051908152a3565b60246040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152fd5b60246040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff80831615611e7f57811615611e4e57611e1f611f029273ffffffffffffffffffffffffffffffffffffffff166000526001602052604060002090565b55565b8115611f0f570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8015612078578061201161200a612000611ff6611fec611fe2611fd8611fce600161022b9a6000908b60801c8061206c575b508060401c8061205f575b508060201c80612052575b508060101c80612045575b508060081c80612038575b508060041c8061202b575b508060021c8061201e575b50821c612017575b811c1b611fc7818b611f05565b0160011c90565b611fc7818a611f05565b611fc78189611f05565b611fc78188611f05565b611fc78187611f05565b611fc78186611f05565b611fc78185611f05565b8092611f05565b906126b2565b8101611fba565b6002915091019038611fb2565b6004915091019038611fa7565b6008915091019038611f9c565b6010915091019038611f91565b6020915091019038611f86565b6040915091019038611f7b565b91505060809038611f70565b50600090565b905b82811061208c57505090565b90918082169080831860011c8201809211610cd257600a60005265ffffffffffff80837fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8015416908516106000146120e75750915b90612080565b9291506120f39061195d565b906120e1565b919073ffffffffffffffffffffffffffffffffffffffff92838216938116908482141580612299575b61212e575b5050505050565b816121d7575b505082612143575b8080612127565b7fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249161219b6121956121a19373ffffffffffffffffffffffffffffffffffffffff166000526009602052604060002090565b916126c4565b90612723565b6040805179ffffffffffffffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152a238808061213c565b6122019073ffffffffffffffffffffffffffffffffffffffff166000526009602052604060002090565b61220a846126c4565b612213426118b6565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff91828061223a86611c74565b169116900392828411610cd2577fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7249361228f9261227692612c42565b6040805192851683529316602082015291829190820190565b0390a23880612134565b50831515612122565b60ff81146122f85760ff811690601f82116122ce57604051916122c48361153a565b8252602082015290565b60046040517fb3512b0c000000000000000000000000000000000000000000000000000000008152fd5b5060405160055481600061230b836114b8565b808352926020906001908181169081156123975750600114612336575b505061022b925003826115af565b91509260056000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0936000925b82841061237f575061022b9450505081016020013880612328565b85548785018301529485019486945092810192612364565b90506020935061022b9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201013880612328565b60ff81146123fc5760ff811690601f82116122ce57604051916122c48361153a565b5060405160065481600061240f836114b8565b80835292602090600190818116908115612397575060011461243957505061022b925003826115af565b91509260066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f936000925b828410612482575061022b9450505081016020013880612328565b85548785018301529485019486945092810192612467565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161252b57926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa1561251f57805173ffffffffffffffffffffffffffffffffffffffff81161561251657918190565b50809160019190565b604051903d90823e3d90fd5b50505060009160039190565b6004111561254157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b61257981612537565b80612582575050565b61258b81612537565b600181036125bd5760046040517ff645eedf000000000000000000000000000000000000000000000000000000008152fd5b6125c681612537565b60028103612600576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101839052602490fd5b8061260c600392612537565b146126145750565b6040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810191909152602490fd5b805482101561265f5760005260206000200190600090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060405161269b8161153a565b915465ffffffffffff8116835260301c6020830152565b90808210156126bf575090565b905090565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff908181116126eb571690565b604490604051907f6dfcc65000000000000000000000000000000000000000000000000000000000825260d060048301526024820152fd5b9061272d426118b6565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff91828061275486611c74565b16911601918211610cd25761276892612c42565b9091565b612775426118b6565b9079ffffffffffffffffffffffffffffffffffffffffffffffffffff90818061279c611c0f565b16911601908111610cd25761276891612a99565b6127b9426118b6565b9079ffffffffffffffffffffffffffffffffffffffffffffffffffff9081806127e0611c0f565b1691169003908111610cd25761276891612a99565b906115fd9173ffffffffffffffffffffffffffffffffffffffff8091168015612869575b61282a612825846126c4565b6127b0565b50506000908152600860205260408120549080527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c754821691166120f9565b61287a612875846126c4565b61276c565b5050612819565b906115fd91612892612875836126c4565b505073ffffffffffffffffffffffffffffffffffffffff8091169081156128ef575b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7546000928352604090922054811691166120f9565b6128fb612825846126c4565b50506128b4565b906115fd929173ffffffffffffffffffffffffffffffffffffffff80809216928315612966575b16918215612953575b600052600860205280604060002054169160005260406000205416906120f9565b61295f612825856126c4565b5050612932565b612972612875866126c4565b5050612929565b600a549068010000000000000000821015611556576001820180600a5582101561265f57600a60005280516020919091015160301b7fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001665ffffffffffff91909116177fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890910155565b80546801000000000000000081101561155657612a2591600182018155612647565b612a6a5781516020929092015160301b7fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001665ffffffffffff92909216919091179055565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b600a54919291908115612c0557612ae4612adf612ab584611930565b600a6000527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80190565b61268e565b805165ffffffffffff8381169491168410612bdb5785602093612b8c95612b1f612b14865165ffffffffffff1690565b65ffffffffffff1690565b03612b905750612b34612ab5612b6b93611930565b9065ffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000083549260301b169116179055565b015179ffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b9190565b9050612bd69150612bb0612ba26115f0565b65ffffffffffff9092168252565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff871681850152612979565b612b6b565b60046040517f2520601d000000000000000000000000000000000000000000000000000000008152fd5b612c3c9150612c15612ba26115f0565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff84166020820152612979565b60009190565b805492939291908215612d1357612c6b612adf612c5e85611930565b8360005260206000200190565b90612c7c825165ffffffffffff1690565b65ffffffffffff84811691168110612bdb57612b8c946020948892612caa612b14875165ffffffffffff1690565b03612ccd5750612b6b92612cc0612b3492611930565b9060005260206000200190565b915050612bd691612ced612cdf6115f0565b65ffffffffffff9093168352565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff881682860152612a03565b612c3c9250612d23612cdf6115f0565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff85166020830152612a0356fea2646970667358221220da668f90b4524a62c5de5f662e7291d5e1f32cfafe1d03d94b8ae781743b356264736f6c63430008170033' as const; diff --git a/integration-tests/artifacts/HubEvmSpokeAggregateProposer.ts b/integration-tests/artifacts/HubEvmSpokeAggregateProposer.ts new file mode 100644 index 00000000..448bf117 --- /dev/null +++ b/integration-tests/artifacts/HubEvmSpokeAggregateProposer.ts @@ -0,0 +1,2 @@ +export const HubEvmSpokeAggregateProposerBytecode = + '0x60c0346200014657601f6200459038819003918201601f19168301916001600160401b038311848410176200014b5780849260609460405283398101031262000146576200004d8162000161565b9060406200005e6020830162000161565b9101519065ffffffffffff8216820362000146576001600160a01b03928316908115620001345783916080521680156200011b5760005491816040519484167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a360a08281526001600160d01b0319909316909117911b65ffffffffffff60a01b161760005561441990816200017782396080518181816117f40152613271015260a05181818161071801528181611c9f0152611e5d0152f35b604051631e4fbdf760e01b815260006004820152602490fd5b604051638ef9698f60e01b8152600490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620001465756fe608080604052600436101561001357600080fd5b60003560e01c90816316476dcc146128cc57508063245b80f4146128635780632b2077ad146121df5780632b7e1cd8146121a55780632df2f97814611f755780633896fc1214611f5e578063452115d614611d9857806345ee36c514611d4e57806347bdbbcf14611cc35780634d63d473146101955780634ed5d78214611c545780634f098c0a14611b39578063571354e214611a11578063715018a61461197557806371b632c81461191657806378cc40301461181857806384acd1bb146117a95780638a8f28681461176f5780638da5cb5b1461171d578063a0f419fa146116e3578063a8024ef114611682578063ad0a6f081461163b578063bc802b89146115db578063bda269f2146114f3578063c008e156146114a5578063c52ddc0e14611397578063c895dec614610f18578063cff77db014610e18578063dc37e93e14610b34578063e0b54d3014610afa578063e6a3c0e814610ac0578063f2fde38b146109dd578063fd50269f1461019a5763ffa1ad741461019557600080fd5b61303f565b346105095760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105095760043567ffffffffffffffff8111610509576101e9903690600401612e03565b60243567ffffffffffffffff811161050957610209903690600401612e6b565b9060443567ffffffffffffffff81116105095761022a903690600401612ecb565b9160643567ffffffffffffffff811161050957366023820112156105095761025c903690602481600401359101612a96565b60843567ffffffffffffffff81116105095761027c903690600401612acd565b60a4359067ffffffffffffffff8211610509576102a06102a6923690600401612cdb565b906139ab565b9260009442620f4240420204620f4240144215171561053f5765ffffffffffff92620f42408460005460a01c160293841693840361053f5742620f4240028481031161053f57600092608087015151957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061033961032389612cc3565b986103316040519a8b612a0d565b808a52612cc3565b013660208901376000985b608089015180518b10156106fe578a61035c91613163565b5161036681613ee9565b9061ffff8151168c818c6000925b83106106b5578f91506103879250613163565b526101208201515160018103610684575061ffff9051166103ac610120830151613127565b5190600052600160205273ffffffffffffffffffffffffffffffffffffffff604060002054168015908115610662575b50610638577fffffffff00000000000000000000000000000000000000000000000000000000600460207feb9019d400000000000000000000000000000000000000000000000000000000930151015160e01b160361060e5767ffffffffffffffff60408201511688620f424042020381108015610600575b61050e5787156105f8575b80880361050e576020610477610120840151613127565b510151602481015160448201519151604481036105c1575073ffffffffffffffffffffffffffffffffffffffff1633810361056e5750620f4240810290808204620f4240149015171561053f57810361050e57506104db6101206040920151613127565b51015190602082805181010312610509576104ff600191602060809401519061399e565b9a01999050610344565b600080fd5b602490604051907f4275ae3b0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6040517f16cece4800000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff919091166024820152604490fd5b0390fd5b604490604051907fab8b67c60000000000000000000000000000000000000000000000000000000082526004820152816024820152fd5b965086610460565b50620f424042028111610455565b60046040517f8076dd8a000000000000000000000000000000000000000000000000000000008152fd5b60046040517fa710429d000000000000000000000000000000000000000000000000000000008152fd5b905073ffffffffffffffffffffffffffffffffffffffff82511614158d6103dc565b602490604051907f79c5a4f00000000000000000000000000000000000000000000000000000000082526004820152fd5b6106c28361ffff92613163565b5116146106d457600101818c8f610374565b60046040517f7a47c9a2000000000000000000000000000000000000000000000000000000008152fd5b50848673ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692620f4240604051927feb9019d4000000000000000000000000000000000000000000000000000000008452336004850152046024830152602082604481875afa90811561093d576000916109a7575b610792925061399e565b604051907fb58131b0000000000000000000000000000000000000000000000000000000008252602082600481875afa91821561093d57600092610973575b50106109495760006020946108b861085897610888610828956040519a8b998a9889977f7d5e81e2000000000000000000000000000000000000000000000000000000008952608060048a0152608489019061320f565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8883030160248901526137bd565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8683030160448701526137f1565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016064850152612bc7565b03925af1801561093d5760009061090a575b80602091600052600282526040600020337fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055604051908152f35b506020813d602011610935575b8161092460209383612a0d565b8101031261050957602090516108ca565b3d9150610917565b6040513d6000823e3d90fd5b60046040517f8a750bd2000000000000000000000000000000000000000000000000000000008152fd5b9091506020813d60201161099f575b8161098f60209383612a0d565b81010312610509575190876107d1565b3d9150610982565b90506020823d6020116109d5575b816109c260209383612a0d565b8101031261050957610792915190610788565b3d91506109b5565b346105095760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105095760043573ffffffffffffffffffffffffffffffffffffffff80821680920361050957610a36614392565b8115610a8f57600054827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60246040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152fd5b346105095760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050957602060405160058152f35b346105095760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050957602060405160048152f35b3461050957610b4236612aeb565b604051610b4e8161299d565b6060815260606020820152600060408201526000606082015260006080820152606060a082015260ff60208301511660038103610de05750610bc0610ba2604084015163ffffffff60048201511690614178565b9083526040840151600463ffffffff818484010151169201906142a4565b92906020830152600180846040840151010151930167ffffffffffffffff600860608401510151166040840152602860608301510151608084015267ffffffffffffffff6030606084015101511660608401526031606083015101519360319460ff808316911603610db657610c3860ff8216613177565b60a08501526000905b60ff81168210610d0e57610d0a85610c6b88606088610c64896040830151614385565b0151614385565b60405191829160208352610c8b815160c0602086015260e0850190612bc7565b60a0610cc76020840151927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09384888303016040890152612bc7565b9267ffffffffffffffff604082015116606087015267ffffffffffffffff60608201511660808701526080810151828701520151908483030160c0850152612c0a565b0390f35b9094916001610d98610d688373ffffffffffffffffffffffffffffffffffffffff601460ff9660408b015101015116610d4b8b60a08c0151613163565b51526040880151601863ffffffff818484010151169201906142a4565b95906020610d7a8b60a08c0151613163565b5101526060870151600463ffffffff818484010151169201906142a4565b97906040610daa8360a08b0151613163565b51015201919050610c41565b60046040517f5e7bd6ec000000000000000000000000000000000000000000000000000000008152fd5b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260036024820152fd5b346105095760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105095765ffffffffffff6004358181169182820361050957610e64614392565b8215610eee577fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff917f6d1a79b19eace8608245cafcd31768481f9222040d067b313d0e66305f8cbe0b604079ffffffffffff000000000000000000000000000000000000000093600054968251918860a01c1682526020820152a160a01b16911617600055600080f35b60046040517f01da1572000000000000000000000000000000000000000000000000000000008152fd5b3461050957610f2636612aeb565b610f2e6130d8565b9060ff6020820151166004810361135f5750610f59604082015163ffffffff60048201511690614178565b9190835267ffffffffffffffff600883604084015101015116602084015267ffffffffffffffff601083604084015101015116604084015267ffffffffffffffff6018836040840151010151166060840152601980836040840151010151920167ffffffffffffffff60086060840151015116608085015267ffffffffffffffff6010606084015101511660a085015260306060830151015160c08501526031606083015101519260319360ff808316911603610db65761101c60ff8216612cc3565b6110296040519182612a0d565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061105c60ff8416612cc3565b0160005b81811061131e57505060e08601526000905b60ff81168210611217578561109286606087610c64886040830151614385565b60405180916020825260e06110b582516101006020860152610120850190612bc7565b9167ffffffffffffffff602082015116604085015267ffffffffffffffff604082015116606085015267ffffffffffffffff606082015116608085015267ffffffffffffffff60808201511660a085015267ffffffffffffffff60a08201511660c085015260c0810151828501520151907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083820301610100840152815180825260208201916020808360051b8301019401926000915b8383106111795786860387f35b919395509193602080611205837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0866001960301875260c060a08b518051845267ffffffffffffffff86820151168685015267ffffffffffffffff6040820151166040850152606081015115156060850152608081015160808501520151918160a08201520190612bc7565b9701930193019092869594929361116c565b909382604085015101602001518560e08801519061123491613163565b5193602001935280606085015101600801518560e08801519061125691613163565b516020019067ffffffffffffffff16905280606085015101601001518560e08801519061128291613163565b516040019067ffffffffffffffff1690526010016060840151906112a591614336565b908560e0880151906112b691613163565b51606001901515905280606085015101602001518560e0880151906112da91613163565b5160800152606084015190602480828401015163ffffffff1691016112fe926142a4565b94908160e08801519061131091613163565b5160a0015260010190611072565b60209060405161132d8161299d565b60008152600083820152600060408201526000606082015260006080820152606060a082015282828601015201611060565b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260046024820152fd5b346105095760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610509576113ce612961565b60243573ffffffffffffffffffffffffffffffffffffffff808216928383036105095761ffff7f8040279346517ae8686d175accd2e209a5f39c9b0f1a1b014ada98fc9d1ff8bf9161141e614392565b16928392836000526001602052604060002054166114686040519283928390602090939293604083019473ffffffffffffffffffffffffffffffffffffffff809216845216910152565b0390a260005260016020526040600020907fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b346105095760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050957610d0a6114df613079565b604051918291602083526020830190612bc7565b3461050957610d0a61150c61150736612aeb565b613ee9565b60405191829160208352805161153061014091826020870152610160860190612bc7565b9061156b6020840151927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09384888303016040890152612bc7565b9260408101519067ffffffffffffffff80921660608801528160608201511660808801528160808201511660a08801528160a08201511660c088015260c081015160e088015260e08101516101009081890152810151916101209216828801520151918584030190850152612c0a565b346105095760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610509576004356000526002602052602073ffffffffffffffffffffffffffffffffffffffff60406000205416604051908152f35b346105095760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050957602065ffffffffffff60005460a01c16604051908152f35b346105095760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105095760043567ffffffffffffffff8111610509576116db6116d66020923690600401612acd565b613e9f565b604051908152f35b346105095760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050957602060405160038152f35b346105095760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050957602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b346105095760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050957602060405160068152f35b346105095760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346105095760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105095761184f612961565b60243567ffffffffffffffff8111610509573660238201121561050957806004013561187a81612cc3565b916118886040519384612a0d565b8183526020916024602085019160051b8301019136831161050957602401905b8282106118ff57845160009061ffff8089169088845b8481106118d2575b5050505050156106d457005b826118dd8284613163565b511684146118ed576001016118be565b505050505050600181808080806118c6565b83809161190b84612972565b8152019101906118a8565b346105095760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105095760043567ffffffffffffffff8111610509576119676020913690600401612acd565b818151910120604051908152f35b346105095760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610509576119ac614392565b600073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461050957611a226102a036612d80565b604051602080825260ff9060ff84511681840152808401519061ffff809216604085015260408501519063ffffffff6060921660608601526060860151956080611a77819860a0838a015260c0890190612bc7565b910151947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe094858884030160a08901528651948584528484019285808860051b8701019901976000955b888710611ace578b8b038cf35b909192939495969798998880611b258f848f611b158b918e8b8b60019b0301905251938d85511684528b878601511687850152604085015190806040860152840190612bc7565b920151908a818403910152612bc7565b9c0197019701959897969493929190611ac1565b346105095760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105095767ffffffffffffffff6004358181116105095736602382011215610509578060040135602491611b9782612cc3565b92611ba56040519485612a0d565b8284526020926024602086019160051b840101923684116105095760248101915b848310611c2e57878760243582811161050957611be7903690600401612e03565b9160443590811161050957611c00903690600401612fb6565b9080519160005b838110611c1057005b80611c288387611c2260019588613163565b516138ab565b01611c07565b8235888111610509578691611c498392873691870101612f4b565b815201920191611bc6565b346105095760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346105095760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105095767ffffffffffffffff60043581811161050957611d13903690600401612f4b565b60243582811161050957611d2b903690600401612e03565b60443592831161050957611d46611d4c933690600401612fb6565b916138ab565b005b346105095767ffffffffffffffff611d653661291c565b911610611d6e57005b60046040517fb10b0aec000000000000000000000000000000000000000000000000000000008152fd5b346105095760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105095767ffffffffffffffff60043581811161050957611de8903690600401612e03565b60243582811161050957611e00903690600401612e6b565b9160443590811161050957611e19903690600401612ecb565b6040517fc59057e40000000000000000000000000000000000000000000000000000000081526020936064359373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811693878180611e928a8a89896004860161386c565b0381885afa90811561093d57600091611f31575b50600052600287526040600020541680330361056e575090600086949392611efd604051978896879586947f452115d60000000000000000000000000000000000000000000000000000000086526004860161386c565b03925af1801561093d57611f0d57005b813d8311611f2a575b611f208183612a0d565b8101031261050957005b503d611f16565b90508781813d8311611f57575b611f488183612a0d565b81010312610509575188611ea6565b503d611f3e565b3461050957611d4c611f6f36612d80565b90613259565b3461050957611f8336612aeb565b604051611f8f81612981565b6060815260209160208201926000845260408301906000825260608401916000835260808501936060855260ff602082015116906001916001810361216d57506040810190815191611fed63ffffffff938460048201511690614178565b94908a5260ff6060600180888651010151970194019467ffffffffffffffff988d8a6008895101511690526028875101518b528960308851015116895260318751015183603199169384911603610db65792919061204a82613177565b8c526000935b8285106120de575050506120998b610d0a8e8d8d8d8d61207c8e8e6120768f8f51614385565b51614385565b8160405198899860208a525160a060208b015260c08a0190612bc7565b955116604088015251166060860152516080850152517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a0850152612c0a565b909192848d60406121606121576121328c879b9f9d601473ffffffffffffffffffffffffffffffffffffffff918f510101511661211c888851613163565b51528c5160188b818484010151169201906142a4565b9c9088612140888851613163565b5101528d5160048a818484010151169201906142a4565b9d909351613163565b5101520193929190612050565b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260016024820152fd5b346105095760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050957602060405160028152f35b34610509576121ed36612aeb565b6121f56130d8565b60ff6020830151166005810361282b575061221f604083015163ffffffff60048201511690614178565b90825267ffffffffffffffff600882604086015101015116602083015267ffffffffffffffff601082604086015101015116604083015267ffffffffffffffff601882604086015101015116606083015260198082604086015101015191019267ffffffffffffffff60086060830151015116608084015267ffffffffffffffff6010606083015101511660a084015260306060820151015160c08401526031606082015101519160319260ff808316911603610db6576122e260ff8216612cc3565b6122ef6040519182612a0d565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061232260ff8416612cc3565b0160005b81811061278a57505060e08501526000905b60ff81168210612578578461235885606086610c648b6040830151614385565b60405180916020825260e061237b82516101006020860152610120850190612bc7565b9167ffffffffffffffff602082015116604085015267ffffffffffffffff604082015116606085015267ffffffffffffffff606082015116608085015267ffffffffffffffff60808201511660a085015267ffffffffffffffff60a08201511660c085015260c0810151828501520151907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083820301610100840152815180825260208201916020808360051b8301019401926000915b83831061243f5786860387f35b9193955091937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820301835285519061012081018251825260208301519061012060208401528151809152610140906020828501928260051b86010193019160005b82811061253157505050508260209261010060ff816125188796604060019a0151604087015267ffffffffffffffff606088015116606087015267ffffffffffffffff608088015116608087015260a0870151151560a087015260c087015160c087015260e087015186820360e0880152612bc7565b9401511691015297019301930190928695949293612432565b9091929360208061256c837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec08a600196030187528851612bc7565b960194930191016124a2565b909260208660408501510101516125938560e0880151613163565b51526021808760408601510101519601956125b060ff8216612cc3565b6125bd6040519182612a0d565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06125f060ff8416612cc3565b0160005b818110612779575050602061260d8760e08a0151613163565b51015260005b60ff8216811061273157505060016127146126c36031848967ffffffffffffffff60806126b28c60e087878f8060ff9f604061265f888860208f95606080990151010151940151613163565b5101528f8a9061010061267f898960218989890151010151950151613163565b51019116905289898361269f898960298985890151010151950151613163565b5101911690520151010151950151613163565b510191169052016060870151614336565b9060a06126d48960e08c0151613163565b51019015159052602081606088015101015160c06126f68960e08c0151613163565b5101526060860151602463ffffffff818484010151169201906142a4565b959060e061272583828b0151613163565b51015201919050612338565b8087612772600193602061276a8b61276060e09f60408e0151600463ffffffff818484010151169201906142a4565b9f90960151613163565b510151613163565b5201612613565b8060606020809386010152016125f4565b604051908161012081011067ffffffffffffffff610120840111176127fc57816101206020930160405260008152606083820152600060408201526000606082015260006080820152600060a0820152600060c0820152606060e0820152600061010082015282828601015201612326565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260056024820152fd5b346105095760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105095761ffff61289d612961565b166000526001602052602073ffffffffffffffffffffffffffffffffffffffff60406000205416604051908152f35b34610509576128da3661291c565b90620f424067ffffffffffffffff8092160416106128f457005b807f3a04ceca0000000000000000000000000000000000000000000000000000000060049252fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60409101126105095760043567ffffffffffffffff81168103610509579060243590565b6004359061ffff8216820361050957565b359061ffff8216820361050957565b60a0810190811067ffffffffffffffff8211176127fc57604052565b60c0810190811067ffffffffffffffff8211176127fc57604052565b6080810190811067ffffffffffffffff8211176127fc57604052565b6060810190811067ffffffffffffffff8211176127fc57604052565b6020810190811067ffffffffffffffff8211176127fc57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176127fc57604052565b359060ff8216820361050957565b67ffffffffffffffff81116127fc57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612aa282612a5c565b91612ab06040519384612a0d565b829481845281830111610509578281602093846000960137010152565b9080601f8301121561050957816020612ae893359101612a96565b90565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc602081830112610509576004359167ffffffffffffffff918284116105095760809084830301126105095760405192612b44846129b9565b612b5081600401612972565b8452612b5e60248201612a4e565b6020850152604481013583811161050957826004612b7e92840101612acd565b6040850152606481013592831161050957612b9c9201600401612acd565b606082015290565b60005b838110612bb75750506000910152565b8181015183820152602001612ba7565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612c0381518092818752878088019101612ba4565b0116010190565b908082519081815260208091019281808460051b8301019501936000915b848310612c385750505050505090565b9091929394958480612cb3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528a51612ca0606073ffffffffffffffffffffffffffffffffffffffff835116845285830151908087860152840190612bc7565b9160408092015191818403910152612bc7565b9801930193019194939290612c28565b67ffffffffffffffff81116127fc5760051b60200190565b9080601f83011215610509578135916020612cf584612cc3565b93604093612d066040519687612a0d565b818652828087019260071b85010193818511610509578301915b848310612d305750505050505090565b60808383031261050957836080918751612d49816129b9565b853581528286013583820152612d60898701612a4e565b898201526060612d71818801612a4e565b90820152815201920191612d20565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126105095767ffffffffffffffff6004358181116105095783612dcb91600401612acd565b9260243591821161050957612ae891600401612cdb565b359073ffffffffffffffffffffffffffffffffffffffff8216820361050957565b9080601f83011215610509576020908235612e1d81612cc3565b93612e2b6040519586612a0d565b81855260208086019260051b82010192831161050957602001905b828210612e54575050505090565b838091612e6084612de2565b815201910190612e46565b9080601f83011215610509576020908235612e8581612cc3565b93612e936040519586612a0d565b81855260208086019260051b82010192831161050957602001905b828210612ebc575050505090565b81358152908301908301612eae565b81601f8201121561050957803591602091612ee584612cc3565b93612ef36040519586612a0d565b808552838086019160051b8301019280841161050957848301915b848310612f1e5750505050505090565b823567ffffffffffffffff8111610509578691612f4084848094890101612acd565b815201920191612f0e565b91906060838203126105095760405190612f64826129d5565b8193612f6f81612de2565b835267ffffffffffffffff9160208201358381116105095781612f93918401612acd565b6020850152604082013592831161050957604092612fb19201612acd565b910152565b9080601f83011215610509576020908235612fd081612cc3565b93612fde6040519586612a0d565b81855260208086019260051b82010192831161050957602001905b828210613007575050505090565b81357fffffffff0000000000000000000000000000000000000000000000000000000081168103610509578152908301908301612ff9565b346105095760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261050957602060405160018152f35b60405190613086826129d5565b602382527f30307c00000000000000000000000000000000000000000000000000000000006040837f71756572795f726573706f6e73655f303030303030303030303030303030303060208201520152565b60405190610100820182811067ffffffffffffffff8211176127fc57604052606060e083828152600080602083015280604083015280848301528060808301528060a083015260c08201520152565b8051156131345760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156131345760209160051b010190565b9061318182612cc3565b6040906131916040519182612a0d565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06131bf8295612cc3565b019160009160005b8481106131d5575050505050565b60209083516131e3816129d5565b858152606083908082840152868301528285010152016131c7565b519063ffffffff8216820361050957565b90815180825260208080930193019160005b82811061322f575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101613221565b73ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000166040908151927f1cfe795100000000000000000000000000000000000000000000000000000000845260209560049587868881875afa9586156137b25760009661377b575b5084517ff951975a00000000000000000000000000000000000000000000000000000000815263ffffffff80971688820152600081602481885afa93841561377057600094613650575b505061332b90613e9f565b94825151156135f4578151835151908651917ff8ce560a000000000000000000000000000000000000000000000000000000008352898301528982602481895afa9182156135e9576000926135ba575b501061355e579491908785519687947fa0cce1b300000000000000000000000000000000000000000000000000000000865260648601908a87015260609060606024880152845180915283608488019501916000905b82821061352057505050509282859392600097957ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc868096030160448601528161342285518c86528c86019061320f565b9401511691015203915afa918215613515576000908193613483575b501561344a5750505050565b906105bd91519384937f08c379a00000000000000000000000000000000000000000000000000000000085528401526024830190612bc7565b9092503d8084833e6134958183612a0d565b810192828285031261350a57815191821515830361350d57868101519067ffffffffffffffff8211613511570184601f8201121561350d578051916134d983612a5c565b956134e686519788612a0d565b83875288848401011161350a57509061350491878087019101612ba4565b3861343e565b80fd5b5080fd5b8280fd5b50513d6000823e3d90fd5b8351805188528087015187890152808c015160ff9081168d8a01529082015116878201528b98506080909601958d95909301926001909101906133d1565b606487898751917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600960248201527f6e6f2071756f72756d00000000000000000000000000000000000000000000006044820152fd5b9091508981813d83116135e2575b6135d28183612a0d565b810103126105095751903861337b565b503d6135c8565b87513d6000823e3d90fd5b606487898751917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601460248201527f696e76616c696420677561726469616e207365740000000000000000000000006044820152fd5b9091933d8082853e6136628185612a0d565b8301908a8483031261350a57835167ffffffffffffffff94858211613511570192888484031261350d5788519489860186811082821117613744578a5284519081116135115784019183601f8401121561350a579082918d949351926136c784612cc3565b956136d48d519788612a0d565b8487528087019460051b82010194851161350d57908e8097969594939201925b84841061371e5750505050509161371291849361332b9552016131fe565b89820152929038613320565b9091928094959697505183811681036135115781528e96959493870192919087016136f4565b60248460418f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b86513d6000823e3d90fd5b9095508781813d83116137ab575b6137938183612a0d565b81010312610509576137a4906131fe565b94386132d6565b503d613789565b85513d6000823e3d90fd5b90815180825260208080930193019160005b8281106137dd575050505090565b8351855293810193928101926001016137cf565b90808251908181526020809101926020808460051b8301019501936000915b8483106138205750505050505090565b909192939495848061385c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528a51612bc7565b9801930193019194939290613810565b94939261389860609361388a6138a69460808a5260808a019061320f565b9088820360208a01526137bd565b9086820360408801526137f1565b930152565b9091825180156000146139975760015b908251156000146139905760015b9460005b82811061394f575b505050156106385780519160005b8381106138f6575b505050501561060e57565b7fffffffff000000000000000000000000000000000000000000000000000000008060046020850151015160e01b16906139308386613163565b51161461393f576001016138e3565b50505050506001388080806138eb565b73ffffffffffffffffffffffffffffffffffffffff80875116906139738385613163565b511614613982576001016138cd565b5050505060013880806138d5565b60006138c9565b60006138bb565b9190820180921161053f57565b90604051916139b983612981565b600083526020830191600083526040840192600084526139e86060860192606084526060608088015284613259565b600160ff818501511680875203613e755760038381015161ffff169182905290613e15576040519060018201906042830191600182870101925b808210613e02575060419250601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09184865201166040520191525b6004810192818301600481015191600582015160ff80895116911603613dd857600982015163ffffffff169052600a9081015192019360ff831615613dae5763ffffffff613aad92169061399e565b928391600180868601015195019460ff808316911603613d8457613ad360ff8216612cc3565b613ae06040519182612a0d565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613b1360ff8416612cc3565b0160005b818110613d5257505060808701526000905b60ff81168210613b7f575050808203613b4857505090612ae891614385565b60449250604051917fc37906a000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b91600295919580828701015161ffff613b9c8960808c0151613163565b5191169052828601015161ffff80613bb88960808c0151613163565b515116911603613d28576003818601015160ff6020613bdb8960808c0151613163565b5101911690526003828601015160ff806020613bfb8a60808d0151613163565b51015116911603613cfe57600160ff6020613c1a8960808c0151613163565b51015116108015613cde575b613c98576001613c7a60809493896040613c618b613c57888d600763ffffffff8160ff9d84010151169201906142a4565b9a90940151613163565b510152600763ffffffff81838b010151169101886142a4565b97906060613c8c8360808d0151613163565b51015201919050613b29565b602460ff6020613cac8960808c0151613163565b51015116604051907f51ee58530000000000000000000000000000000000000000000000000000000082526004820152fd5b50600660ff6020613cf38960808c0151613163565b510151161015613c26565b60046040517f02164961000000000000000000000000000000000000000000000000000000008152fd5b60046040517fa179f8c9000000000000000000000000000000000000000000000000000000008152fd5b602090604051613d61816129b9565b600081526000838201526060604082015260608082015282828601015201613b17565b60046040517f84ae4a30000000000000000000000000000000000000000000000000000000008152fd5b60046040517fbb6b170d000000000000000000000000000000000000000000000000000000008152fd5b60046040517f714f5513000000000000000000000000000000000000000000000000000000008152fd5b8351825260209384019390910190613a22565b50604051602081016040820190602385015b828210613e65575060208352601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166040525090526023613a5e565b8051825260209182019101613e27565b60046040517f1d9617a0000000000000000000000000000000000000000000000000000000008152fd5b613ea7613079565b9060208151910120613ee36040805180936020613ecd8184019788815193849201612ba4565b8201906020820152036020810184520182612a0d565b51902090565b90604051610140810181811067ffffffffffffffff8211176127fc5760405260608152602092606060208301526040820193600085526000606084015260006080840152600060a0840152600060c0840152600060e084015260006101008401526060610120840152829460ff60208401511660028103614140575067ffffffffffffffff60086040850151015116905260ff613fb6613f98604085015163ffffffff600c820151169061420e565b9086526040850151600463ffffffff818484010151169201906142a4565b9490602082015260018086604087015101015195019267ffffffffffffffff60086060870151015116606083015260286060860151015160c083015267ffffffffffffffff60306060870151015116608083015267ffffffffffffffff6038606087015101511660a083015260586060860151015160e083015267ffffffffffffffff60608087015101511661010083015260616060860151015183606197169384911603610db657919061406a82613177565b6101208201526000925b828410614096575050505081610c64606092604061409496950151614385565b565b90919295936141216140f18273ffffffffffffffffffffffffffffffffffffffff601460019560408c0151010151166140d48b610120890151613163565b51526040890151601863ffffffff818484010151169201906142a4565b9690846141038b610120890151613163565b5101526060880151600463ffffffff818484010151169201906142a4565b9790604061413483610120880151613163565b51015201929190614074565b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260026024820152fd5b909182156141f057826004019160405193601f81169182156141e7575b6004838701938385019201015b8184106141d75750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b80518452602093840193016141a2565b60209250614195565b9150506040516141ff816129f1565b60008152600036813790600490565b909182156142865782600c019160405193601f811691821561427d575b600c838701938385019201015b81841061426d5750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b8051845260209384019301614238565b6020925061422b565b915050604051614295816129f1565b60008152600036813790600c90565b92908215614319578281019260405194601f8216928315614310575b838701938385019201015b8184106143005750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b80518452602093840193016142cb565b602093506142c0565b92509050604051614329816129f1565b6000815260003681379190565b81016001015190919060fe81166143515760ff169160010190565b60249060ff604051917ff7a37b07000000000000000000000000000000000000000000000000000000008352166004820152fd5b5190808203613b48575050565b73ffffffffffffffffffffffffffffffffffffffff6000541633036143b357565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fdfea2646970667358221220387464cacc9d599a8b0389f53d71f1c1d63691c57df197f41ba6d199322f6c3964736f6c63430008170033' as const; diff --git a/integration-tests/artifacts/HubGovernor.ts b/integration-tests/artifacts/HubGovernor.ts new file mode 100644 index 00000000..abc7abf5 --- /dev/null +++ b/integration-tests/artifacts/HubGovernor.ts @@ -0,0 +1,2 @@ +export const HubGovernorBytecode = + '0x6101a060405234620000b6576200001f620000196200023f565b6200038b565b604051615dd79081620015278239608051816146dc015260a05181614791015260c051816146ad015260e0518161472b0152610100518161475101526101205181611c8b01526101405181611cb701526101605181818161290701528181612a6201528181612e1b01528181614ce4015281816156da01526158670152610180518181816106a20152818161264b0152612f220152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117620000ed57604052565b620000bb565b60c081019081106001600160401b03821117620000ed57604052565b601f909101601f19168101906001600160401b03821190821017620000ed57604052565b6040519061016082016001600160401b03811183821017620000ed57604052565b604051906200016382620000d1565b565b60005b838110620001795750506000910152565b818101518382015260200162000168565b81601f82011215620000b65780516001600160401b038111620000ed5760405192620001c1601f8301601f1916602001856200010f565b81845260208284010111620000b657620001e2916020808501910162000165565b90565b6001600160a01b03811603620000b657565b51906200016382620001e5565b519065ffffffffffff82168203620000b657565b519063ffffffff82168203620000b657565b51906001600160d01b0382168203620000b657565b6200735e80380380604051926200025782856200010f565b8339810190602081830312620000b65780516001600160401b0391828211620000b657019061016082840312620000b6576200029262000133565b928251918211620000b657620002aa9183016200018a565b8252620002ba60208201620001f7565b6020830152620002cd60408201620001f7565b6040830152620002e06060820162000204565b6060830152620002f36080820162000218565b608083015260a081015160a08301526200031060c082016200022a565b60c08301526200032360e08201620001f7565b60e083015261010062000338818301620001f7565b908301526101206200034c818301620001f7565b908301526200036061014080920162000204565b9082015290565b90816020910312620000b65751620001e281620001e5565b6040513d6000823e3d90fd5b610120620003a361014083015165ffffffffffff1690565b60c08301519092906200041c906001600160d01b0316604083018051909591906001600160a01b03166020850151620003ec906001600160a01b03165b6001600160a01b031690565b606086015165ffffffffffff16906200040c608088015163ffffffff1690565b9260a0880151948851966200052b565b60e081015162000435906001600160a01b03166200087f565b0180519091906001600160a01b0316803b1591821562000483575b50506200047257516200046c906001600160a01b0316620003e0565b61018052565b604051625c447360e51b8152600490fd5b604051638da5cb5b60e01b815292506001600160a01b03916020908490600490829086165afa9283156200052557600093620004de575b5051620004d290620003e0906001600160a01b031681565b91161415388062000450565b620004d2919350620003e062000513620003e09260203d6020116200051d575b6200050a81836200010f565b81019062000367565b94925050620004ba565b503d620004fe565b6200037f565b9562000614906200060e6200062d97620006086200062797959862000602620001639d6040516200055c81620000d1565b6001815260208101603160f81b8152620005768362000d44565b61012052620005858262000e50565b6101405282516020840120918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152620005f281620000f3565b5190206080523060c05262000784565b62000c3a565b62000c87565b62000d0b565b6001600160a01b03166101605262000bcd565b62000aac565b62000992565b90600182811c9216801562000665575b60208310146200064f57565b634e487b7160e01b600052602260045260246000fd5b91607f169162000643565b601f81116200067d575050565b60009060036000526020600020906020601f850160051c83019410620006c0575b601f0160051c01915b828110620006b457505050565b818155600101620006a7565b90925082906200069e565b601f8111620006d8575050565b600090600080526020600020906020601f850160051c830194106200071a575b601f0160051c01915b8281106200070e57505050565b81815560010162000701565b9092508290620006f8565b90601f821162000733575050565b60019160009060016000526020600020906020601f850160051c8301941062000779575b601f0160051c01915b8281106200076e5750505050565b818155830162000760565b909250829062000757565b80519091906001600160401b038111620000ed57620007b081620007aa60035462000633565b62000670565b602080601f8311600114620007f757508190620007e69394600092620007eb575b50508160011b916000199060031b1c19161790565b600355565b015190503880620007d1565b6003600052601f198316949091907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b926000905b878210620008665750508360019596106200084c575b505050811b01600355565b015160001960f88460031b161c1916905538808062000841565b806001859682949686015181550195019301906200082b565b906200088b4262000f3c565b600f80549093916000906001600160601b03908116905b838310620009495750505062000913929350801560001462000917575060005b604080516001600160a01b03928316815283831660208201527f44ba477b97837dba5b3fe3fce201d568ae222048eb17e604f33afb6458dbdfc79190a16200090a4262000f3c565b9116906200113d565b5050565b62000926620009439162000f86565b600f6000526000805160206200733e833981519152015460601c90565b620008c2565b90919262000958818562001510565b90876000528383836020600020015416116000146200097c5750925b9190620008a2565b9350600181018091111562000974575b62000f70565b65ffffffffffff80620009a54262000f96565b600d805492600092165b83831062000a5d5750505060406200091393927f9acb2eefd7c43da9140f8e65b6411c899b4b19524aa2fa77a0aeb180f5cd33da92801560001462000a27575062000a0560005b6001600160a01b031662000f96565b93818351951685521692836020820152a162000a214262000f3c565b6200128d565b62000a5762000a3a62000a059262000f86565b600d6000526000805160206200731e833981519152015460601c90565b620009f6565b90919262000a6c818562001510565b6000848152602090208101549091906001600160601b031683101562000a975750925b9190620009af565b9350600181018091111562000a8f5762000f70565b9062000ab84262000f96565b91600c92600c549060009065ffffffffffff809116905b83831062000b855750505062000913929350801560001462000b2b5750600080516020620072fe83398151915260005b604080516001600160d01b039283168152918416602083015290a162000b254262000f96565b62001402565b62000b7f62000b7862000b4e600080516020620072fe8339815191529362000f86565b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70190565b5460301c90565b62000aff565b90919262000b94818562001510565b908760005283838360206000200154161160001462000bb85750925b919062000acf565b9350600181018091111562000bb05762000f70565b600a54604080516001600160a01b03605084901c81168252841660208201529192917f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b2264019190a1600160501b600160f01b031990911660509190911b600160501b600160f01b031617600a55565b600a547fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93604065ffffffffffff81519481851686521693846020820152a165ffffffffffff191617600a55565b63ffffffff80821691821562000cf2577f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828604069ffffffff00000000000093600a54958251918760301c1682526020820152a160301b169069ffffffff000000000000191617600a55565b60405163f1cfbf0560e01b815260006004820152602490fd5b60095460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc0546191a1600955565b9081516020906020811060001462000d6457505090620001e29062000fc9565b6001600160401b038111620000ed5760009162000d8d8262000d87855462000633565b620006cb565b602090601f831160011462000dc95750819083949562000dc29492620007eb5750508160011b916000199060031b1c19161790565b905560ff90565b60008052601f198316957f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563929185905b88821062000e375750508360019596971062000e1d575b505050811b01905560ff90565b015160001960f88460031b161c1916905538808062000e10565b8060018596829496860151815501950193019062000df9565b9081516020906020811060001462000e7057505090620001e29062000fc9565b6001600160401b038111620000ed5760019162000e998262000e93855462000633565b62000725565b602090601f831160011462000ecf5750819062000dc2939495600092620007eb5750508160011b916000199060031b1c19161790565b6001600052601f198316959091907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6926000905b88821062000f24575050838596971062000e1d57505050811b01905560ff90565b80878596829496860151815501950193019062000f03565b6001600160601b039081811162000f51571690565b604490604051906306dfcc6560e41b8252606060048301526024820152fd5b634e487b7160e01b600052601160045260246000fd5b6000198101919082116200098c57565b65ffffffffffff9081811162000faa571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b601f81511162000ff757602081519101516020821062000fe7571790565b6000198260200360031b1b161790565b6044604051809263305a27a960e01b8252602060048301526200102a815180928160248601526020868601910162000165565b601f01601f19168101030190fd5b600f549068010000000000000000821015620000ed576001820180600f558210156200109c57600f60005280516020919091015160601b6001600160601b0319166001600160601b0391909116176000805160206200733e83398151915290910155565b634e487b7160e01b600052603260045260246000fd5b600d549068010000000000000000821015620000ed576001820180600d558210156200109c57600d60005280516020919091015160601b6001600160601b0319166001600160601b0391909116176000805160206200731e83398151915290910155565b906040516200112581620000d1565b91546001600160601b038116835260601c6020830152565b600f549192919081156200125e576200117d620011776200115e8462000f86565b600f6000526000805160206200733e8339815191520190565b62001116565b80516001600160601b0383811694911684106200124c57856020936200120995620011be620011b2865160018060601b031690565b6001600160601b031690565b036200120d5750620011d86200115e620011fb9362000f86565b80546001600160601b031660609290921b6001600160601b031916919091179055565b01516001600160a01b031690565b9190565b9050620012469150620012326200122362000154565b6001600160601b039092168252565b6001600160a01b0387168185015262001038565b620011fb565b604051632520601d60e01b8152600490fd5b620012879150620012726200122362000154565b6001600160a01b038416602082015262001038565b60009190565b600d549192919081156200134057620012c762001177620012ae8462000f86565b600d6000526000805160206200731e8339815191520190565b80516001600160601b0383811694911684106200124c57856020936200120995620012fc620011b2865160018060601b031690565b03620013165750620011d8620012ae620011fb9362000f86565b90506200124691506200132c6200122362000154565b6001600160a01b03871681850152620010b2565b620012879150620013546200122362000154565b6001600160a01b0384166020820152620010b2565b600c549068010000000000000000821015620000ed576001820180600c558210156200109c57600c60005280516020919091015160301b65ffffffffffff191665ffffffffffff91909116177fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790910155565b90604051620013eb81620000d1565b915465ffffffffffff8116835260301c6020830152565b600c54919291908115620014e757620014296200142362000b4e8462000f86565b620013dc565b805165ffffffffffff83811694911684106200124c57856020936200120995620014686200145d865165ffffffffffff1690565b65ffffffffffff1690565b03620014a957506200148262000b4e6200149b9362000f86565b9065ffffffffffff82549181199060301b169116179055565b01516001600160d01b031690565b9050620014e19150620014cd620014bf62000154565b65ffffffffffff9092168252565b6001600160d01b0387168185015262001369565b6200149b565b620012879150620014fb620014bf62000154565b6001600160d01b038416602082015262001369565b90808216911860011c81018091116200098c579056fe60806040526004361015610023575b361561001957600080fd5b610021613212565b005b60003560e01c806301ffc9a71461037357806302a251a31461036e57806306fdde03146103695780630777088614610364578063143489d01461035f578063150b7a021461035a578063160cbed71461035557806324a47c4c146103505780632656227d1461034b5780632d63f693146103465780632fe3e26114610341578063314aabaf1461033c578063342cfab6146103375780633932abb1146103325780633e4f49e61461032d5780634385963214610328578063452115d6146103235780634bf5d7e91461031e578063544ffc9c1461031957806354fd4d5014610314578063567813881461030f5780635b8d0e0d1461030a5780635f398a141461030557806362cc44781461030057806379051887146102fb5780637b3c71d3146102f65780637d5e81e2146102f15780637ecebe00146102ec5780638235e725146102e757806384b0196e146102e257806385950c77146102dd5780638ff262e3146102d857806391ddadf4146102d35780639a802a6d146102ce578063a072d2b0146102c9578063a890c910146102c4578063a9a95294146102bf578063ab58fb8e146102ba578063b58131b0146102b5578063b994b8d0146102b0578063bc197c81146102ab578063c01f9e37146102a6578063c28bc2fa146102a1578063c59057e41461029c578063d33219b414610297578063dd4e2ba514610292578063deaaa7cc1461028d578063e540d01d14610288578063eb9019d414610283578063ece40cc11461027e578063f23a6e6114610279578063f8ce560a146102745763fc0c546a0361000e576128bc565b612880565b6127cd565b61275a565b612702565b6125c5565b61255e565b6124bc565b612467565b61244b565b6123c0565b612384565b6122ad565b6121e7565b6121ab565b612156565b61211c565b612037565b612007565b611f9c565b611f53565b611dd3565b611d9d565b611c54565b611b5d565b611af4565b611a3c565b6119c8565b61191f565b611869565b6117b7565b611710565b611674565b6115e8565b61157d565b61152f565b611434565b6113d7565b61138c565b6112fd565b61126e565b61121c565b6111c3565b61116e565b610f98565b610ed8565b610bc2565b610902565b6106c6565b610657565b610532565b610473565b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361046357807f65455a860000000000000000000000000000000000000000000000000000000060209214908115610439575b811561040f575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501438610404565b7f4e2312e000000000000000000000000000000000000000000000000000000000811491506103fd565b600080fd5b600091031261046357565b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357602063ffffffff600a5460301c16604051908152f35b60005b8381106104cb5750506000910152565b81810151838201526020016104bb565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093610517815180928187528780880191016104b8565b0116010190565b90602061052f9281815201906104db565b90565b34610463576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610654576040519080600354906105748261292b565b8085529160209160019182811690811561060957506001146105b1575b6105ad866105a181880382610819565b6040519182918261051e565b0390f35b9350600384527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8385106105f6575050505081016020016105a1826105ad38610591565b80548686018401529382019381016105d9565b8796506105ad979450602093506105a19592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b820101929338610591565b80fd5b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576004356000526004602052602073ffffffffffffffffffffffffffffffffffffffff60406000205416604051908152f35b73ffffffffffffffffffffffffffffffffffffffff81160361046357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161078757604052565b610744565b6040810190811067ffffffffffffffff82111761078757604052565b6060810190811067ffffffffffffffff82111761078757604052565b6020810190811067ffffffffffffffff82111761078757604052565b60c0810190811067ffffffffffffffff82111761078757604052565b610100810190811067ffffffffffffffff82111761078757604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761078757604052565b604051906108678261078c565b565b60405190610867826107a8565b67ffffffffffffffff811161078757601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926108bc82610876565b916108ca6040519384610819565b829481845281830111610463578281602093846000960137010152565b9080601f830112156104635781602061052f933591016108b0565b346104635760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635761093c600435610726565b610947602435610726565b60643567ffffffffffffffff8111610463576109679036906004016108e7565b5073ffffffffffffffffffffffffffffffffffffffff600a5460501c1630036109b5576040517f150b7a02000000000000000000000000000000000000000000000000000000008152602090f35b60046040517fe90a651e000000000000000000000000000000000000000000000000000000008152fd5b67ffffffffffffffff81116107875760051b60200190565b9080601f83011215610463576020908235610a11816109df565b93610a1f6040519586610819565b81855260208086019260051b82010192831161046357602001905b828210610a48575050505090565b8380918335610a5681610726565b815201910190610a3a565b9080601f83011215610463576020908235610a7b816109df565b93610a896040519586610819565b81855260208086019260051b82010192831161046357602001905b828210610ab2575050505090565b81358152908301908301610aa4565b81601f8201121561046357803591602091610adb846109df565b93610ae96040519586610819565b808552838086019160051b8301019280841161046357848301915b848310610b145750505050505090565b823567ffffffffffffffff8111610463578691610b36848480948901016108e7565b815201920191610b04565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126104635767ffffffffffffffff916004358381116104635782610b8c916004016109f7565b926024358181116104635783610ba491600401610a61565b9260443591821161046357610bbb91600401610ac1565b9060643590565b3461046357610bd036610b41565b610bde81838587969761308b565b92610be884613256565b50600a54610c239060501c73ffffffffffffffffffffffffffffffffffffffff165b73ffffffffffffffffffffffffffffffffffffffff1690565b926040958651937ff27a0c9200000000000000000000000000000000000000000000000000000000855260209081866004818a5afa958615610e7757600096610ea9575b507fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16189581895180927fb1c5f4270000000000000000000000000000000000000000000000000000000082528180610cca8c8a8a8d60048601614174565b03915afa918215610e7757600092610e7c575b5050610cf387600052600b602052604060002090565b55600a54610d199060501c73ffffffffffffffffffffffffffffffffffffffff16610c0a565b90813b156104635760008094610d5e878b51998a97889687957f8f2a0bb0000000000000000000000000000000000000000000000000000000008752600487016141ba565b03925af1908115610e7757610d8292610d7d92610e5e575b5042613aad565b614015565b65ffffffffffff811615610e3557917f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892610e2484610e066105ad966001610dd3886000526004602052604060002090565b019065ffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000825416179055565b835185815265ffffffffffff90911660208201529081906040820190565b0390a1519081529081906020820190565b600483517f90884a46000000000000000000000000000000000000000000000000000000008152fd5b80610e6b610e7192610773565b80610468565b38610d76565b6129c6565b610e9b9250803d10610ea2575b610e938183610819565b810190614165565b3880610cdd565b503d610e89565b610ec1919650823d8411610ea257610e938183610819565b9438610c67565b65ffffffffffff81160361046357565b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357610021600435610f1681610ec8565b610f1e61332c565b7f9acb2eefd7c43da9140f8e65b6411c899b4b19524aa2fa77a0aeb180f5cd33da604065ffffffffffff610f7973ffffffffffffffffffffffffffffffffffffffff610f7383610f6d42614015565b16613e8d565b16614015565b93818351951685521692836020820152a1610f9342614298565b61506f565b610fa136610b41565b610faf81838587959761308b565b92610fb9846132c1565b5061101a610fd1856000526004602052604060002090565b7e010000000000000000000000000000000000000000000000000000000000007fff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff825416179055565b73ffffffffffffffffffffffffffffffffffffffff92600a5484309160501c16036110fb575b9461105092916105ad96866142e9565b6110753091600a5460501c1673ffffffffffffffffffffffffffffffffffffffff1690565b1415806110cd575b6110be575b6040518181527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90602090a16040519081529081906020820190565b6110c86000600555565b611082565b506110f66110f26005546fffffffffffffffffffffffffffffffff81169060801c1490565b1590565b61107d565b9290939160005b84518110156111645760019030611139610c0a61111f848a6129ad565b5173ffffffffffffffffffffffffffffffffffffffff1690565b14611145575b01611102565b61115f611152828a6129ad565b51602081519101206133c8565b61113f565b5091939092611040565b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576004356000526004602052602065ffffffffffff60406000205460a01c16604051908152f35b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635760206040517f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a8118152f35b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357602073ffffffffffffffffffffffffffffffffffffffff600e5416604051908152f35b346104635760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635760206fffffffffffffffffffffffffffffffff6112f36024356112bf81610726565b6004356000526008845260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5416604051908152f35b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357602065ffffffffffff600a5416604051908152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6008111561137a57565b611341565b90600882101561137a5752565b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635760206113c8600435613472565b6113d5604051809261137f565bf35b346104635760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635760206fffffffffffffffffffffffffffffffff6114286024356112bf81610726565b54161515604051908152f35b346104635761144236610b41565b9061145182828587969761308b565b61145a81613472565b600881101561137a5760018060ff83161b16156114e95750600052600460205273ffffffffffffffffffffffffffffffffffffffff6040600020541633036114b9576105ad936114a9936144df565b6040519081529081906020820190565b60246040517f233d98e3000000000000000000000000000000000000000000000000000000008152336004820152fd5b90611526606492604051927f31b75e4d0000000000000000000000000000000000000000000000000000000084526004840152602483019061137f565b60016044820152fd5b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576105ad611569612a1e565b6040519182916020835260208301906104db565b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576004356000526007602052604060002080546105ad60026001840154930154604051938493846040919493926060820195825260208201520152565b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576105ad6040516116268161078c565b600181527f310000000000000000000000000000000000000000000000000000000000000060208201526040519182916020835260208301906104db565b6024359060ff8216820361046357565b346104635760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635760206116da6116b0611664565b6040516116bc816107c4565b60008152604051916116cd836107c4565b600083523360043561379f565b604051908152f35b9181601f840112156104635782359167ffffffffffffffff8311610463576020838186019501011161046357565b346104635760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357611747611664565b6044359061175482610726565b67ffffffffffffffff90606435828111610463576117769036906004016116e2565b6084358481116104635761178e9036906004016108e7565b9160a435948511610463576105ad956117ae6114a99636906004016108e7565b94600435612b24565b346104635760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576117ee611664565b67ffffffffffffffff90604435828111610463576118109036906004016116e2565b90916064359384116104635761183b6116da9361183360209636906004016108e7565b9336916108b0565b903360043561379f565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff81160361046357565b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576100216004356118a781611845565b6118af61332c565b7f6784e9bcb845caaa98267d7b0918f97d3d17f7cb35a05b52010f7eb587a0acb061190e6118dc42613126565b6040805191825279ffffffffffffffffffffffffffffffffffffffffffffffffffff8516602083015290918291820190565b0390a161191a42614015565b6154fb565b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635760043561195a81610ec8565b61196261332c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000600a547fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93604065ffffffffffff81519581851687521694856020820152a11617600a55005b346104635760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576119ff611664565b60443567ffffffffffffffff811161046357602091611a2f611a286116da9336906004016116e2565b36916108b0565b604051916116cd836107c4565b346104635760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635767ffffffffffffffff60043581811161046357611a8c9036906004016109f7565b9060243581811161046357611aa5903690600401610a61565b9160443582811161046357611abe903690600401610ac1565b6064359283116104635736602384011215610463576105ad93611aee6114a99436906024816004013591016108b0565b92612c8d565b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635773ffffffffffffffffffffffffffffffffffffffff600435611b4481610726565b1660005260026020526020604060002054604051908152f35b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357600435611b9881610726565b611ba061332c565b600e546040805173ffffffffffffffffffffffffffffffffffffffff8084168252848116602083015292937fffffffffffffffffffffffff0000000000000000000000000000000000000000939290917f7dce8787457c1090977c50f1e83b84d3f87ae732c3ad936c99b49e9f23a273969190a116911617600e55600080f35b90815180825260208080930193019160005b828110611c40575050505090565b835185529381019392810192600101611c32565b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357611d29611caf7f0000000000000000000000000000000000000000000000000000000000000000614a64565b6105ad611cdb7f0000000000000000000000000000000000000000000000000000000000000000614b9c565b611d3760405191611ceb836107c4565b600083526040519586957f0f00000000000000000000000000000000000000000000000000000000000000875260e0602088015260e08701906104db565b9085820360408701526104db565b90466060850152306080850152600060a085015283820360c0850152611c20565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6020910112610463576004356bffffffffffffffffffffffff811681036104635790565b3461046357602073ffffffffffffffffffffffffffffffffffffffff611dca611dc536611d58565b613f51565b16604051908152f35b346104635760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357600435611e0d611664565b9060443591611e1b83610726565b60643567ffffffffffffffff8111610463576110f2611e41611eed9236906004016108e7565b611ee7611e778773ffffffffffffffffffffffffffffffffffffffff166000526002602052604060002080549060018201905590565b60405160208101917ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d7835288604083015260ff8816606083015273ffffffffffffffffffffffffffffffffffffffff8a16608083015260a082015260a08152611edf816107e0565b5190206135e2565b86613623565b611f0857906114a9916105ad93611f026129d2565b926135c6565b6040517f94ab6c0700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602490fd5b0390fd5b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576020611f8c612dd8565b65ffffffffffff60405191168152f35b346104635760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357600435611fd781610726565b60443567ffffffffffffffff811161046357602091611ffd6116da9236906004016108e7565b5060243590614cac565b34610463576020611f8c73ffffffffffffffffffffffffffffffffffffffff610f7361203236611d58565b613e8d565b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635760043561207281610726565b61207a61332c565b600a546040805173ffffffffffffffffffffffffffffffffffffffff605084901c811682528416602082015291927fffff0000000000000000000000000000000000000000ffffffffffffffffffff927dffffffffffffffffffffffffffffffffffffffff00000000000000000000927f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b22640191a160501b16911617600a55600080f35b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357602060405160018152f35b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576004356000526004602052602065ffffffffffff60016040600020015416604051908152f35b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576020600954604051908152f35b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635761002160043561222581610726565b61222d61332c565b73ffffffffffffffffffffffffffffffffffffffff7f44ba477b97837dba5b3fe3fce201d568ae222048eb17e604f33afb6458dbdfc78282612271611dc542614298565b6040805173ffffffffffffffffffffffffffffffffffffffff9390921683168252929091166020820152a16122a542614298565b911690615224565b346104635760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576122e7600435610726565b6122f2602435610726565b67ffffffffffffffff60443581811161046357612313903690600401610a61565b506064358181116104635761232c903690600401610a61565b50608435908111610463576123459036906004016108e7565b506105ad612351612e76565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681529081906020820190565b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635760206116da600435612ebc565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576004356123f681610726565b6044359067ffffffffffffffff8211610463576000809161241e6100219436906004016116e2565b9061242761332c565b81604051928392833781018481520391602435905af1612445612f96565b90614072565b346104635760206116da61245e36610b41565b9291909161308b565b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357602073ffffffffffffffffffffffffffffffffffffffff600a5460501c16604051908152f35b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610463576105ad6040516124fa816107a8565b603281527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e60208201527f26706172616d733d6672616374696f6e616c000000000000000000000000000060408201526040519182916020835260208301906104db565b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635760206040517ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d78152f35b63ffffffff81160361046357565b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357600435612600816125b7565b61260861332c565b6040517f9541614500000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610e775765ffffffffffff916000916126d3575b501663ffffffff82161061269a57610021906140b3565b6040517ff1cfbf0500000000000000000000000000000000000000000000000000000000815263ffffffff919091166004820152602490fd5b6126f5915060203d6020116126fb575b6126ed8183610819565b810190612dc3565b38612683565b503d6126e3565b346104635760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635760206116da60043561274281610726565b6000604051612750816107c4565b5260243590614cac565b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635760043561279461332c565b60095460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc0546191a1600955005b346104635760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357612807600435610726565b612812602435610726565b60843567ffffffffffffffff8111610463576128329036906004016108e7565b5073ffffffffffffffffffffffffffffffffffffffff600a5460501c1630036109b5576040517ff23a6e61000000000000000000000000000000000000000000000000000000008152602090f35b346104635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104635760206116da600435613126565b346104635760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b90600182811c92168015612974575b602083101461294557565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f169161293a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156129c15760209160051b010190565b61297e565b6040513d6000823e3d90fd5b604051906129df826107c4565b60008252565b604051906129f28261078c565b601d82527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c740000006020830152565b6040517f4bf5d7e90000000000000000000000000000000000000000000000000000000081526000808260048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90918282612a9c575b505061052f575061052f6129e5565b909192503d8082843e612aaf8184610819565b820191602081840312612b1c5780519067ffffffffffffffff8211612b20570182601f82011215612b1c57805191612ae683610876565b93612af46040519586610819565b83855260208484010111610654575090612b1491602080850191016104b8565b903880612a8d565b5080fd5b8280fd5b9390929196956110f2612bfc91612bf687878c8b612b6b8273ffffffffffffffffffffffffffffffffffffffff166000526002602052604060002080549060018201905590565b73ffffffffffffffffffffffffffffffffffffffff612b8b368c8e6108b0565b6020815191012092602081519101209360ff6040519660208801987f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a8118a52604089015216606087015216608085015260a084015260c083015260e082015260e08152611edf816107fc565b8a613623565b612c175761052f959691612c119136916108b0565b9261379f565b6040517f94ab6c0700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88166004820152602490fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9193929093612c9c823361396e565b15612d715773ffffffffffffffffffffffffffffffffffffffff600e54163314612d655765ffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81612cf1612dd8565b160190808211612d6057612d0691163361310d565b9460095495868110612d20575061052f9495503393613c1b565b6040517fc242ee16000000000000000000000000000000000000000000000000000000008152336004820152602481019190915260448101879052606490fd5b612c5e565b61052f93943393613c1b565b60246040517fd9b39557000000000000000000000000000000000000000000000000000000008152336004820152fd5b612dbf73ffffffffffffffffffffffffffffffffffffffff91613f51565b1690565b90816020910312610463575161052f81610ec8565b6040517f91ddadf400000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa60009181612e55575b5061052f575061052f43614015565b612e6f91925060203d6020116126fb576126ed8183610819565b9038612e46565b73ffffffffffffffffffffffffffffffffffffffff600a5460501c1630036109b5577fbc197c810000000000000000000000000000000000000000000000000000000090565b80600052600460205260406000205465ffffffffffff908163ffffffff8260d01c169160a01c160190808211612d60576040517f1514924100000000000000000000000000000000000000000000000000000000815260048101939093526020836024817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff165afa928315610e775761052f938291600091612f77575b50169116614060565b612f90915060203d6020116126fb576126ed8183610819565b38612f6e565b3d15612fc1573d90612fa782610876565b91612fb56040519384610819565b82523d6000602084013e565b606090565b90815180825260208080930193019160005b828110612fe6575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101612fd8565b90808251908181526020809101926020808460051b8301019501936000915b84831061303f5750505050505090565b909192939495848061307b837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528a516104db565b980193019301919493929061302f565b92906130f592613107926040519485926130e56130b4602086019960808b5260a0870190612fc6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09687878303016040880152611c20565b9085858303016060860152613010565b90608083015203908101835282610819565b51902090565b9061052f916000604051613120816107c4565b52614cac565b61312f90614015565b600c90600c549160009165ffffffffffff809116905b8484106131b25750505050801560001461315f5750600090565b61318379ffffffffffffffffffffffffffffffffffffffffffffffffffff916138f6565b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7015460301c1690565b909192936131c0818661569e565b90846000528383837fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7015416116000146131ff5750935b929190613145565b945060018101809111156131f757612c5e565b73ffffffffffffffffffffffffffffffffffffffff600a5460501c1630036109b557565b604090613252600093959460608301968352602083019061137f565b0152565b61325f81613472565b90600882101561137a576010600160ff84161b161561327c575090565b6132b8606492604051927f31b75e4d0000000000000000000000000000000000000000000000000000000084526004840152602483019061137f565b60106044820152fd5b6132ca81613472565b90600882101561137a576030600160ff84161b16156132e7575090565b613323606492604051927f31b75e4d0000000000000000000000000000000000000000000000000000000084526004840152602483019061137f565b60306044820152fd5b73ffffffffffffffffffffffffffffffffffffffff600a5460501c1633810361339857300361335757565b61336036610876565b61336d6040519182610819565b368152602081019036600083376000602036830101525190205b80613390614208565b036133875750565b60246040517f47096e47000000000000000000000000000000000000000000000000000000008152336004820152fd5b6005548060801c9160018301926fffffffffffffffffffffffffffffffff809316838516146134305760005260066020526040600020557fffffffffffffffffffffffffffffffff000000000000000000000000000000006005549260801b16911617600555565b60046040517f8acb5f27000000000000000000000000000000000000000000000000000000008152fd5b90816020910312610463575180151581036104635790565b61347b816143b1565b9061348582611370565b600582036135c2576134a29150600052600b602052604060002090565b54600a546134c89060501c73ffffffffffffffffffffffffffffffffffffffff16610c0a565b6040517f584b153e0000000000000000000000000000000000000000000000000000000081526004810183905260209291908381602481855afa908115610e77576000916135a5575b501561351f57505050600590565b6040517f2ab0f52900000000000000000000000000000000000000000000000000000000815260048101929092528290829060249082905afa918215610e7757600092613578575b50501561357357600790565b600290565b6135979250803d1061359e575b61358f8183610819565b81019061345a565b3880613567565b503d613585565b6135bc9150843d861161359e5761358f8183610819565b38613511565b5090565b9161052f9391604051936135d9856107c4565b6000855261379f565b6042906135ed614696565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b61362d83836147b7565b50600481959295101561137a5715938461371c575b508315613650575b50505090565b60009293509082916040516136ce816136a260208201947f1626ba7e00000000000000000000000000000000000000000000000000000000998a875260248401526040604484015260648301906104db565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610819565b51915afa906136db612f96565b8261370e575b826136f1575b505038808061364a565b61370691925060208082518301019101614165565b1438806136e7565b9150602082511015916136e1565b73ffffffffffffffffffffffffffffffffffffffff838116911614935038613642565b93909260ff61376b9361052f97958752166020860152604085015260a0606085015260a08401906104db565b9160808184039101526104db565b909260ff60809361052f96958452166020830152604082015281606082015201906104db565b929091936137ac84613472565b600881101561137a576002600160ff83161b16156138b057508360005260046020526137fd6137f76137ec604060002065ffffffffffff905460a01c1690565b65ffffffffffff1690565b84614cac565b948161380d87938484888a6147f3565b8051613865575073ffffffffffffffffffffffffffffffffffffffff927fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4949261385f92604051958695169785613779565b0390a290565b73ffffffffffffffffffffffffffffffffffffffff937fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb8712959361385f9360405196879616988661373f565b846138ed606492604051927f31b75e4d0000000000000000000000000000000000000000000000000000000084526004840152602483019061137f565b60026044820152fd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211612d6057565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd88201918211612d6057565b91908203918211612d6057565b9081518110156129c1570160200190565b815160348110613a97577f2370726f706f7365723d307800000000000000000000000000000000000000007fffffffffffffffffffffffff00000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec83860101511603613a9757916000926139f381613923565b915b818310613a1d5750505073ffffffffffffffffffffffffffffffffffffffff80911691161490565b909193613a5b613a56613a30878561395d565b517fff000000000000000000000000000000000000000000000000000000000000001690565b614943565b919015613a8c5773fffffffffffffffffffffffffffffffffffffff060ff600193169160041b1617940191906139f5565b505050505050600190565b505050600190565b9060018201809211612d6057565b91908201809211612d6057565b90613ac4826109df565b613ad16040519182610819565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613aff82946109df565b019060005b828110613b1057505050565b806060602080938501015201613b04565b9592613b6390613b71939b9a989996959261012090895273ffffffffffffffffffffffffffffffffffffffff60209d168d8a01528060408a0152880190612fc6565b908682036060880152611c20565b9784890360808601528251808a52818a019180808360051b8d01019501926000905b838210613bd057505050505061052f96975090613bb79184820360a0860152613010565b9360c083015260e08201526101008184039101526104db565b90919293958380613c0c8f937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060019582030186528a516104db565b98019201920190939291613b93565b919493909294613c338651602088012082868661308b565b958351855190818114801590613e82575b8015613e7a575b613e3857505065ffffffffffff9485613c80613c718a6000526004602052604060002090565b5460a01c65ffffffffffff1690565b16613df8577f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e095613df39363ffffffff613cc9613cbb612dd8565b600a54948086169116613aad565b9260301c16613dd1613ce58c6000526004602052604060002090565b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16178155613d7a613d2f86614015565b82547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff1660a09190911b79ffffffffffff000000000000000000000000000000000000000016178255565b613d8383614a1b565b7fffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff7dffffffff000000000000000000000000000000000000000000000000000083549260d01b169116179055565b613de5613dde8951613aba565b9184613aad565b936040519889988d8a613b21565b0390a1565b87613e0281613472565b90611f4f6040519283927f31b75e4d00000000000000000000000000000000000000000000000000000000845260048401613236565b83516040517f447b05d0000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044810191909152606490fd5b508015613c4b565b508351811415613c44565b600d90600d54916000915b838310613ee45750505080613ead5750600090565b613eb6906138f6565b600d6000527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5015460601c90565b909192613ef1818561569e565b90836000526bffffffffffffffffffffffff80837fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb501541690841610600014613f3e5750925b9190613e98565b93506001810180911115613f3757612c5e565b600f90600f54916000915b838310613fa85750505080613f715750600090565b613f7a906138f6565b600f6000527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802015460601c90565b909192613fb5818561569e565b90836000526bffffffffffffffffffffffff80837f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802015416908416106000146140025750925b9190613f5c565b93506001810180911115613ffb57612c5e565b65ffffffffffff90818111614028571690565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252603060048301526024820152fd5b908082111561406d575090565b905090565b909190610867575080511561408957805190602001fd5b60046040517f1425ea42000000000000000000000000000000000000000000000000000000008152fd5b63ffffffff90818116918215614134577fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff917f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828604069ffffffff00000000000093600a54968251918860301c1682526020820152a160301b16911617600a55565b60246040517ff1cfbf0500000000000000000000000000000000000000000000000000000000815260006004820152fd5b90816020910312610463575190565b9493926141a06080936141926141ae9460a08a5260a08a0190612fc6565b9088820360208a0152611c20565b908682036040880152613010565b93600060608201520152565b91926141e960a0946141db6141f7949998979960c0875260c0870190612fc6565b908582036020870152611c20565b908382036040850152613010565b946000606083015260808201520152565b600554906fffffffffffffffffffffffffffffffff8083169260801c831461426e57826000526006602052600160406000209360008554955501167fffffffffffffffffffffffffffffffff000000000000000000000000000000006005541617600555565b60046040517f75e52f4f000000000000000000000000000000000000000000000000000000008152fd5b6bffffffffffffffffffffffff908181116142b1571690565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252606060048301526024820152fd5b9290939173ffffffffffffffffffffffffffffffffffffffff600a5460501c1690813b1561046357600093614375604051978895869485947fe38335e50000000000000000000000000000000000000000000000000000000086527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16189260048601614174565b039134905af1908115610e775760009261439f926143a2575b50600052600b602052604060002090565b55565b6143ab90610773565b3861438e565b6143c5816000526004602052604060002090565b5460ff8160f01c166144d85760f81c6144d2576143f26137ec613c71836000526004602052604060002090565b80156144a0576144036137ec612dd8565b809110156144995761441482612ebc565b1061441f5750600190565b61442b6110f28261531e565b8015614474575b1561443d5750600390565b6137ec6001614459614466936000526004602052604060002090565b015465ffffffffffff1690565b61446f57600490565b600590565b506144946110f28260005260076020526040600020600181015490541090565b614432565b5050600090565b6040517f6ad0607500000000000000000000000000000000000000000000000000000000815260048101839052602490fd5b50600290565b5050600790565b906144eb93929161308b565b6144f481613472565b600881101561137a57603b600160ff83161b1615614650575061456d614524826000526004602052604060002090565b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff825416179055565b6040518181527f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90602090a16145ad81600052600b602052604060002090565b54806145b7575090565b600a546145dc9060501c73ffffffffffffffffffffffffffffffffffffffff16610c0a565b803b15610463576040517fc4d252f500000000000000000000000000000000000000000000000000000000815260048101929092526000908290602490829084905af18015610e775761463d575b506000818152600b602052604081205590565b80610e6b61464a92610773565b3861462a565b9061468d606492604051927f31b75e4d0000000000000000000000000000000000000000000000000000000084526004840152602483019061137f565b603b6044820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630148061478e575b156146fe577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613107816107e0565b507f000000000000000000000000000000000000000000000000000000000000000046146146d5565b81519190604183036147e8576147e192506020820151906060604084015193015160001a90615361565b9192909190565b505060009160029190565b93919284600052600460205273ffffffffffffffffffffffffffffffffffffffff8061483661483165ffffffffffff60406000205460a01c16614298565b612da1565b169083161461492c575b801561490257846000526008602052806148a96fffffffffffffffffffffffffffffffff6148928560406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54166fffffffffffffffffffffffffffffffff1690565b10156148d8576148b8906158ee565b918051156000146148cd575061086793615b5f565b92506108679361597c565b60046040517f6d7d29ea000000000000000000000000000000000000000000000000000000008152fd5b60046040517fec57f689000000000000000000000000000000000000000000000000000000008152fd5b506fffffffffffffffffffffffffffffffff614840565b60f81c9081602f1080614a11575b156149815760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0600193011690565b8160401080614a07575b156149bb5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9600193011690565b81606010806149fd575b156149f55760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa9600193011690565b600091508190565b50606782106149c5565b506047821061498b565b50603a8210614951565b63ffffffff90818111614a2c571690565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252602060048301526024820152fd5b60ff8114614aba5760ff811690601f8211614a905760405191614a868361078c565b8252602082015290565b60046040517fb3512b0c000000000000000000000000000000000000000000000000000000008152fd5b5060405160008160005491614ace8361292b565b80835292602090600190818116908115614b595750600114614af9575b505061052f92500382610819565b915092600080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563936000925b828410614b41575061052f9450505081016020013880614aeb565b85548785018301529485019486945092810192614b26565b90506020935061052f9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201013880614aeb565b60ff8114614bbe5760ff811690601f8211614a905760405191614a868361078c565b50604051600081600191600154614bd48161292b565b8084529360209160018116908115614b595750600114614bfc57505061052f92500382610819565b91509260016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6936000925b828410614c45575061052f9450505081016020013880614aeb565b85548785018301529485019486945092810192614c2a565b90816020910312610463575161052f816125b7565b9081604091031261046357602060405191614c8c8361078c565b8051614c9781610ec8565b83520151614ca481611845565b602082015290565b9190614ccc614cc66137ec610d7d610c0a61203286614298565b82613950565b9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660408051927f6fcfff4500000000000000000000000000000000000000000000000000000000845260209660049060208680614d60846004830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b0381885afa958615610e7757600096614ef4575b50614d8c63ffffffff978880981697889116836156b3565b948515614ee657600097614d9f876138f6565b888110614dd2575b50505050505050505079ffffffffffffffffffffffffffffffffffffffffffffffffffff9192501690565b86517ff1127ed800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851686820190815263ffffffff8385161660208201528890829081906040010381875afa908115610e7757600091614eb9575b508665ffffffffffff614e58835165ffffffffffff1690565b1611614eb3578c015179ffffffffffffffffffffffffffffffffffffffffffffffffffff908116908b1681108015614ea2575b614e99575b50600101614d9f565b99506001614e90565b5081614ead8a6138f6565b14614e8b565b50614da7565b614ed99150883d8a11614edf575b614ed18183610819565b810190614c72565b38614e3f565b503d614ec7565b506000985050505050505050565b614f1791965060203d602011614f1e575b614f0f8183610819565b810190614c5d565b9438614d74565b503d614f05565b600d549068010000000000000000821015610787576001820180600d558210156129c157600d60005280516020919091015160601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff91909116177fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb590910155565b600f549068010000000000000000821015610787576001820180600f558210156129c157600f60005280516020919091015160601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff91909116177f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80290910155565b906040516150528161078c565b91546bffffffffffffffffffffffff8116835260601c6020830152565b600d549192919081156151ed576150ba6150b561508b846138f6565b600d6000527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50190565b615045565b80516bffffffffffffffffffffffff83811694911684106151c35785602093615174956151076150f686516bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b03615178575061511c61508b615159936138f6565b906bffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083549260601b169116179055565b015173ffffffffffffffffffffffffffffffffffffffff1690565b9190565b90506151be915061519e61518a61085a565b6bffffffffffffffffffffffff9092168252565b73ffffffffffffffffffffffffffffffffffffffff871681850152614f25565b615159565b60046040517f2520601d000000000000000000000000000000000000000000000000000000008152fd5b61521e91506151fd61518a61085a565b73ffffffffffffffffffffffffffffffffffffffff84166020820152614f25565b60009190565b600f549192919081156152ed5761526a6150b5615240846138f6565b600f6000527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020190565b80516bffffffffffffffffffffffff83811694911684106151c35785602093615174956152a66150f686516bffffffffffffffffffffffff1690565b036152bb575061511c615240615159936138f6565b90506151be91506152cd61518a61085a565b73ffffffffffffffffffffffffffffffffffffffff871681850152614fb5565b61521e91506152fd61518a61085a565b73ffffffffffffffffffffffffffffffffffffffff84166020820152614fb5565b60005260076020526040600020600460205261534965ffffffffffff60406000205460a01c16613126565b600260018301549201548201809211612d6057111590565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116153e657926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa15610e7757805173ffffffffffffffffffffffffffffffffffffffff8116156153dd57918190565b50809160019190565b50505060009160039190565b600c549068010000000000000000821015610787576001820180600c558210156129c15779ffffffffffffffffffffffffffffffffffffffffffffffffffff602061086793600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7019261549f65ffffffffffff825116859065ffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000825416179055565b0151825465ffffffffffff16911660301b7fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000016179055565b906040516154e48161078c565b915465ffffffffffff8116835260301c6020830152565b600c5491929190811561562e57615546615541615517846138f6565b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70190565b6154d7565b805165ffffffffffff83811694911684106151c35785602093615174956155766137ec865165ffffffffffff1690565b036155e3575061558b6155176155c2936138f6565b9065ffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000083549260301b169116179055565b015179ffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b905061562991506156036155f561085a565b65ffffffffffff9092168252565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff8716818501526153f2565b6155c2565b61521e915061563e6155f561085a565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff841660208201526153f2565b811561566f570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b90808216911860011c8101809111612d605790565b90600083600581116157de575b50919073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165b848410615709575050505090565b90919293615717818661569e565b604080517ff1127ed800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015263ffffffff8381166024830152929392918082604481895afa8015610e775765ffffffffffff9261579b926000926157c1575b50505165ffffffffffff1690565b918616911611156157b15750935b9291906156fb565b94506157bc90613a9f565b6157a9565b6157d79250803d10614edf57614ed18183610819565b388061578d565b806157ee6157f492969396615c54565b90613950565b604080517ff1127ed800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015263ffffffff808416602483015292939291818060448101038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610e77576158ad916137ec916000916158cf575b505165ffffffffffff1690565b90841610156158bf5750925b386156c0565b93506158ca90613a9f565b6158b9565b6158e8915060403d604011614edf57614ed18183610819565b386158a0565b6fffffffffffffffffffffffffffffffff9081811161590b571690565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252608060048301526024820152fd5b906040516060810181811067ffffffffffffffff8211176107875760405260406002829480548452600181015460208501520154910152565b6030845103615b35576159b4615a499460208101519160408360801c936fffffffffffffffffffffffffffffffff1692015160801c90565b615a0e6159f8866159d387999596996000526008602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b546fffffffffffffffffffffffffffffffff1690565b956fffffffffffffffffffffffffffffffff97888080931695169782615a4181615a388c8a613aad565b96168096613aad565b911690613aad565b921682116148d857615ab5615b1a95615a7961086799615af49516916159d3886000526008602052604060002090565b906fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055565b6040615aec615ae1615ad9615ad4886000526007602052604060002090565b615943565b958651613aad565b976020860151613aad565b930151613aad565b90615afd610869565b948552602085015260408401526000526007602052604060002090565b90604060029180518455602081015160018501550151910155565b60046040517fa653862c000000000000000000000000000000000000000000000000000000008152fd5b9192906fffffffffffffffffffffffffffffffff9182615b906159f8846159d3886000526008602052604060002090565b166148d857615bb385615a7960ff946159d3886000526008602052604060002090565b1680615bde5750615bd1615bda926000526007602052604060002090565b92168254613aad565b9055565b60018103615c0a57506001615c00615bda936000526007602052604060002090565b0192168254613aad565b600203615c2a576002615c00615bda936000526007602052604060002090565b60046040517f06b337c2000000000000000000000000000000000000000000000000000000008152fd5b8015615d8e5780615d27615d20615d16615d0c615d02615cf8615cee615ce4600161052f9a6000908b60801c80615d82575b508060401c80615d75575b508060201c80615d68575b508060101c80615d5b575b508060081c80615d4e575b508060041c80615d41575b508060021c80615d34575b50821c615d2d575b811c1b615cdd818b615665565b0160011c90565b615cdd818a615665565b615cdd8189615665565b615cdd8188615665565b615cdd8187615665565b615cdd8186615665565b615cdd8185615665565b8092615665565b90615d94565b8101615cd0565b6002915091019038615cc8565b6004915091019038615cbd565b6008915091019038615cb2565b6010915091019038615ca7565b6020915091019038615c9c565b6040915091019038615c91565b91505060809038615c86565b50600090565b908082101561406d57509056fea2646970667358221220df1c806f589de82a4052ede2ad1cdde308273134be6b619aa5365c7fbac97cfc64736f6c634300081700336784e9bcb845caaa98267d7b0918f97d3d17f7cb35a05b52010f7eb587a0acb0d7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb58d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802' as const; diff --git a/integration-tests/artifacts/HubMessageDispatcher.ts b/integration-tests/artifacts/HubMessageDispatcher.ts new file mode 100644 index 00000000..9e0612f7 --- /dev/null +++ b/integration-tests/artifacts/HubMessageDispatcher.ts @@ -0,0 +1,2 @@ +export const HubMessageDispatcherBytecode = + '0x6080346100f957601f610d6a38819003918201601f19168301916001600160401b038311848410176100fe578084926060946040528339810103126100f95761004781610114565b604061005560208401610114565b92015160ff811681036100f9576001600160a01b039182169081156100e0576000549260405194838286167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a31660018060a01b0319600154161760015560ff60a01b9060a01b169160018060a81b03191617176000556001600255610c4190816101298239f35b604051631e4fbdf760e01b815260006004820152602490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036100f95756fe6080604052600436101561001257600080fd5b60003560e01c8063538ee295146109eb578063715018a61461094f578063861b0f19146108fd5780638da5cb5b146108ab578063ab7fff1814610297578063bedf3f7b146101e4578063e8dfd508146101a2578063eefbf17e146101665763f2fde38b1461007f57600080fd5b346101615760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610161576100b6610ab1565b6100be610bba565b73ffffffffffffffffffffffffffffffffffffffff80911690811561013057600054827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60246040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152fd5b600080fd5b346101615760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610161576020600254604051908152f35b346101615760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157602060ff60005460a01c16604051908152f35b346101615760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101615761021b610ab1565b610223610bba565b7fffffffffffffffffffffffff00000000000000000000000000000000000000006001547f65f34a36ad9857e73e3d5fe115e170002cf360b8145ce6bc20e014a7ef960b02604073ffffffffffffffffffffffffffffffffffffffff81519581851687521694856020820152a11617600155005b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101615760043567ffffffffffffffff811161016157366023820112156101615780600401359067ffffffffffffffff82116101615760249181019036838301116101615761030a610bba565b60808183031261016157828101359161ffff8316830361016157604482013567ffffffffffffffff811161016157820184820160438201121561016157848101359261035584610b44565b916103636040519384610ad4565b84835260208301906044829660051b82010190888601821161016157604401915b81831061087e57505050606481013567ffffffffffffffff8111610161578101938684016043860112156101615786850135926103c084610b44565b956103ce6040519788610ad4565b848752602087016044819660051b830101918a8801831161016157604401905b82821061086e57505050608483013567ffffffffffffffff81116101615788860160438286010112156101615788818501013561042a81610b44565b946104386040519687610ad4565b8186526020860180988c810160448560051b87860101011161016157604485840101915b60448560051b87860101018310610776575050505050508051865180821480159061076b575b61072d578961ffff878a8c8b8a8a8a6002549060405198899660c0880193602089015216604087015260a060608701525180915260e08501919060005b8181106106fe5750505060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09586868403016080870152519182815201959060005b8181106106e557505050838386030160a084015251808552602085019060208160051b87010192916000965b8288106106b6575050505061054a935003908101835282610ad4565b73ffffffffffffffffffffffffffffffffffffffff60015416602060ff60005460a01c1660405192838080937fb19a437e000000000000000000000000000000000000000000000000000000008252600060048301526060898301526105b36064830189610b5c565b906044830152039134905af180156106aa5761066a575b5061060a907f404ed8984bb5212ba28cae0f5f3bbaab866c544fbfd7c5d71809f9ebd607b511600254928392604051918291602083526020830190610b5c565b0390a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461063c57600101600255005b507f4e487b710000000000000000000000000000000000000000000000000000000060005260116004526000fd5b6020813d6020116106a2575b8161068360209383610ad4565b81010312610161575167ffffffffffffffff81160361016157826105ca565b3d9150610676565b6040513d6000823e3d90fd5b919450919495926020806106d4838a86600196030187528951610b5c565b97019301930195949287949161052e565b8251885260209788019789965090920191600101610502565b825173ffffffffffffffffffffffffffffffffffffffff168452899650602093840193909201916001016104bf565b9089606492865191604051937fa82635fa00000000000000000000000000000000000000000000000000000000855260048501528301526044820152fd5b508451821415610482565b823567ffffffffffffffff8111610161578e830160638289880101011215610161578e9067ffffffffffffffff8689018201604401351161084057604051916107ef878a01830160440135601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200184610ad4565b86890182016044810135808552918601910160640111610161576044926020928392600090849087908d8c0181018083013590606401868501378d8c0101013583010152815201930192905061045c565b507f4e487b710000000000000000000000000000000000000000000000000000000060005260416004526000fd5b81358152602091820191016103ee565b823573ffffffffffffffffffffffffffffffffffffffff8116810361016157815260209283019201610384565b346101615760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b346101615760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b346101615760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016157610986610bba565b600073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101615760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101615760043560ff8116908181036101615774ff00000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff91610a69610bba565b7f6f2df9fbfcbe88701729b36a8f671dc950f37071dee20a0c1ecdc5eec6b7816460406000549581519060ff8860a01c1682526020820152a160a01b16911617600055600080f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361016157565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610b1557604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111610b155760051b60200190565b919082519283825260005b848110610ba65750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201610b67565b73ffffffffffffffffffffffffffffffffffffffff600054163303610bdb57565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fdfea26469706673582212205ac29dbe721e51a9de87ea3446ac4bb497b0de727f5cfc9311a79a7f49a6edc864736f6c63430008170033' as const; diff --git a/integration-tests/artifacts/HubProposalExtender.ts b/integration-tests/artifacts/HubProposalExtender.ts new file mode 100644 index 00000000..dc6edfc8 --- /dev/null +++ b/integration-tests/artifacts/HubProposalExtender.ts @@ -0,0 +1,2 @@ +export const HubProposalExtenderBytecode = + '0x60c0346101b257601f610ef138819003918201601f191683019291906001600160401b038411838510176101b7578160a092849260409687528339810103126101b25761004b816101cd565b610057602083016101e1565b906100638484016101cd565b9161007c6080610075606087016101cd565b95016101e1565b926001600160a01b0390811691821561019a576000549060018060a01b031993808584161760005583895193167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a37fbb479ac78e1ce459f9a5196875c6d4a233590f1b78690d9557f8a1f505171763886001549365ffffffffffff808660a81c16825284166020820152a165ffffffffffff60a81b9060a81b169065ffffffffffff60a81b1916176001557f3abea8d72ab1e1cc7c9390b07c2881dab5abe7744bf80381e3943e4a05f38cf2866002549281519581851687521694856020820152a1161760025560a05260805251610cfc90816101f5823960805181818161042f015261053a015260a05181818161035f01526106520152f35b8651631e4fbdf760e01b815260006004820152602490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036101b257565b519065ffffffffffff821682036101b25756fe608060408181526004918236101561001657600080fd5b600092833560e01c9182630c340a2414610bb5575081631514924114610b67578163158ef93e14610b225781632037424b14610ada57816368ad8dc214610766578163715018a6146106c75781638da5cb5b146106765781639541614514610615578163b2aadc011461055e578163c1b8411a146104ef578163c4d66de8146103c9578163e67c7bff14610201578163f2fde38b14610114575063f5d2ca9d146100bf57600080fd5b3461011057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101105760209073ffffffffffffffffffffffffffffffffffffffff600254169051908152f35b5080fd5b919050346101fd5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101fd5781359173ffffffffffffffffffffffffffffffffffffffff918284168094036101f957610171610c75565b83156101ca5750508254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b908460249251917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352820152fd5b8480fd5b8280fd5b919050346101fd57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103c55782359165ffffffffffff90818416908185036103c157610253610c75565b6001549584517f02a251a30000000000000000000000000000000000000000000000000000000081528281838173ffffffffffffffffffffffffffffffffffffffff8c165afa9081156103b7578991610386575b508311801561035b575b6103345750927fffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff94927fbb479ac78e1ce459f9a5196875c6d4a233590f1b78690d9557f8a1f505171763927affffffffffff000000000000000000000000000000000000000000958351928960a81c168352820152a160a81b1691161760015580f35b84517fb7421b70000000000000000000000000000000000000000000000000000000008152fd5b50837f00000000000000000000000000000000000000000000000000000000000000001683106102b1565b90508281813d83116103b0575b61039d8183610c05565b810103126103ac5751386102a7565b8880fd5b503d610393565b86513d8b823e3d90fd5b8680fd5b8380fd5b919050346101fd5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101fd5781359173ffffffffffffffffffffffffffffffffffffffff918284168094036101f9576001549260ff8460a01c166104c8577f0000000000000000000000000000000000000000000000000000000000000000163303610498578474010000000000000000000000000000000000000000857fffffffffffffffffffffff0000000000000000000000000000000000000000008616171760015580f35b6024925051907fe4308c1e0000000000000000000000000000000000000000000000000000000082523390820152fd5b50517f0dc149f0000000000000000000000000000000000000000000000000000000008152fd5b50503461011057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610110576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9050346101fd5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101fd57359073ffffffffffffffffffffffffffffffffffffffff8083168093036103c5577f3abea8d72ab1e1cc7c9390b07c2881dab5abe7744bf80381e3943e4a05f38cf27fffffffffffffffffffffffff0000000000000000000000000000000000000000926105fb610c75565b6002549281519084168152856020820152a1161760025580f35b50503461011057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610110576020905165ffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50503461011057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101105773ffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b833461076357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610763576106fe610c75565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b83833461011057602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101fd578335916001549273ffffffffffffffffffffffffffffffffffffffff93848116948451907f2d63f693000000000000000000000000000000000000000000000000000000008252838983015284826024818a5afa918215610a29578892610aab575b50600254163303610a835715610a5b578186526003835265ffffffffffff94858588205416610a335784517f3e4f49e600000000000000000000000000000000000000000000000000000000815283898201528481602481855afa908115610a295788916109ef575b5060088110156109c35760010361099b5790836024928651938480927fc01f9e37000000000000000000000000000000000000000000000000000000008252878d8301525afa91821561099157908691889361095e575b50819060a81c169116019380851161093257907f373b7e53d924bbeb247919e7fc2cbc6457925d80b2f68963d55f1f89ae48091a846003949381519784895216968785820152a18552528220907fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000082541617905580f35b6024866011897f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b85809294508193503d831161098a575b6109788183610c05565b810103126103c15751908590816108bb565b503d61096e565b85513d89823e3d90fd5b8785517f4e8cd63c000000000000000000000000000000000000000000000000000000008152fd5b60248860218b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b90508481813d8311610a22575b610a068183610c05565b81010312610a1e57516008811015610a1e5789610864565b8780fd5b503d6109fc565b86513d8a823e3d90fd5b8785517f0c3a963c000000000000000000000000000000000000000000000000000000008152fd5b8684517fd9c78e02000000000000000000000000000000000000000000000000000000008152fd5b8785517f24813e63000000000000000000000000000000000000000000000000000000008152fd5b9091508481813d8311610ad3575b610ac38183610c05565b81010312610a1e575190896107fb565b503d610ab9565b50503461011057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101105760209065ffffffffffff60015460a81c169051908152f35b50503461011057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101105760209060ff60015460a01c1690519015158152f35b9050346101fd5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101fd578160209365ffffffffffff92358152600385522054169051908152f35b84903461011057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101105760209073ffffffffffffffffffffffffffffffffffffffff600154168152f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610c4657604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff600054163303610c9657565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fdfea2646970667358221220fa438ebec3ad1af9ecfe38ecb4cded175021c7c186411ef22b252e631bd6f30964736f6c63430008170033' as const; diff --git a/integration-tests/artifacts/HubProposalMetadata.ts b/integration-tests/artifacts/HubProposalMetadata.ts new file mode 100644 index 00000000..16545f66 --- /dev/null +++ b/integration-tests/artifacts/HubProposalMetadata.ts @@ -0,0 +1,2 @@ +export const HubProposalMetadataBytecode = + '0x60a03461007257601f6102c938819003918201601f19168301916001600160401b038311848410176100775780849260209460405283398101031261007257516001600160a01b038116908190036100725760805260405161023b908161008e823960805181818160b501526101dd0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604090808252600436101561001557600080fd5b600090813560e01c9081636dc0ae2214610193575063eb9b98381461003957600080fd5b3461015157602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610151576004359183517f2d63f693000000000000000000000000000000000000000000000000000000008152836004820152818160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9283156101885780936100f1575b50508351928352820152f35b90918093503d8411610181575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116830183811067ffffffffffffffff82111761015457849184918852810103126101515750519038806100e5565b80fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b503d6100fe565b8551903d90823e3d90fd5b90503461020157817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102015760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fdfea2646970667358221220400aced47664408c2bb0ca46fe0784b8aa201f56033b7e1bd8f11ed067d0362d64736f6c63430008170033' as const; diff --git a/integration-tests/artifacts/HubSolanaMessageDispatcher.ts b/integration-tests/artifacts/HubSolanaMessageDispatcher.ts new file mode 100644 index 00000000..0f7beb06 --- /dev/null +++ b/integration-tests/artifacts/HubSolanaMessageDispatcher.ts @@ -0,0 +1,2 @@ +export const HubSolanaMessageDispatcherBytecode = + '0x6080346100f957601f610dea38819003918201601f19168301916001600160401b038311848410176100fe578084926060946040528339810103126100f95761004781610114565b604061005560208401610114565b92015160ff811681036100f9576001600160a01b039182169081156100e0576000549260405194838286167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a31660018060a01b0319600154161760015560ff60a01b9060a01b169160018060a81b03191617176000556001600255610cc190816101298239f35b604051631e4fbdf760e01b815260006004820152602490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036100f95756fe6080604052600436101561001257600080fd5b60003560e01c8063538ee29514610a94578063715018a6146109f8578063861b0f19146109a65780638da5cb5b14610954578063ab7fff181461029c578063bedf3f7b146101e5578063e8dfd508146101a3578063eefbf17e146101675763f2fde38b1461007f57600080fd5b346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760043573ffffffffffffffffffffffffffffffffffffffff808216809203610162576100d8610c3a565b811561013157600054827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60246040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152fd5b600080fd5b346101625760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610162576020600254604051908152f35b346101625760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257602060ff60005460a01c16604051908152f35b346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760043573ffffffffffffffffffffffffffffffffffffffff808216809203610162577fffffffffffffffffffffffff000000000000000000000000000000000000000090610260610c3a565b7f65f34a36ad9857e73e3d5fe115e170002cf360b8145ce6bc20e014a7ef960b0260406001549281519084168152856020820152a11617600155005b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760043567ffffffffffffffff8111610162573660238201121561016257806004013567ffffffffffffffff81116101625736602482840101116101625761030b610c3a565b3461092a5760408282810103126101625760248201359161ffff831683036101625760448101359067ffffffffffffffff8211610162576024838201016043838301011215610162576024828201013561036481610bb7565b926103726040519485610b76565b81845260208401809560248186010160448560051b85880101011161016257604483860101915b60448560051b858801010183106106bd57888888600161ffff84160361069357805115610669578261ffff9260025492805160405195869460a0860196602087015216604085015260608401526080808401525180935260c082019260c08160051b84010191936000905b8282106105ab578461043d8186037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610b76565b73ffffffffffffffffffffffffffffffffffffffff60015416602060ff60005460a01c1660405192838080937fb19a437e00000000000000000000000000000000000000000000000000000000825260006004830152606060248301526104a76064830189610bdc565b906044830152039134905af1801561059f5761055f575b506104fe907f404ed8984bb5212ba28cae0f5f3bbaab866c544fbfd7c5d71809f9ebd607b511600254928392604051918291602083526020830190610bdc565b0390a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461053057600101600255005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6020813d602011610597575b8161057860209383610b76565b81010312610162575167ffffffffffffffff81160361016257816104be565b3d915061056b565b6040513d6000823e3d90fd5b91937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40908492940301825284519060608101918051825260208101519260606020840152835180915260206080840194019060005b81811061063757505050610627600193602093604085940151906040818403910152610bdc565b9601920192018593919492610404565b909194602060606001926040895180518352848101511515858401520151151560408201520196019101919091610600565b60046040517f7fe100c5000000000000000000000000000000000000000000000000000000008152fd5b60046040517f7a47c9a2000000000000000000000000000000000000000000000000000000008152fd5b823567ffffffffffffffff81116101625760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082878a0101858a01030112610162576040519161070d83610b5a565b8786018201604481013584526064013567ffffffffffffffff8111610162576024858a0101606382858a8d0101010112156101625760448184898c01010101359061075782610bb7565b916107656040519384610b76565b8083526020830191878c016024018c8b018701820160608402016064011161016257606481878c8f010101015b8c898c820189018401606086020160640183106108ce575050505050506020840152608482878a010101359067ffffffffffffffff8211610162576024858a0101606383858a8d0101010112156101625767ffffffffffffffff604483858a8d01010101351161089f576040519361083c888b018501840160440135601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200186610b76565b898801840183016044810135808752878c0160240191016064011161016257604494600060208786888f808f91869c9b879c848893010101013560648585858501010101878a013701010101358301015260408201528152019301929050610399565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b82602491606093010301126101625760648d838960608f986020906040516108f581610b5a565b88358152610904838a01610bcf565b8382015261091460408a01610bcf565b6040820152815201950194975050505050610792565b60046040517faa7feadc000000000000000000000000000000000000000000000000000000008152fd5b346101625760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b346101625760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b346101625760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016257610a2f610c3a565b600073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101625760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101625760043560ff8116908181036101625774ff00000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff91610b12610c3a565b7f6f2df9fbfcbe88701729b36a8f671dc950f37071dee20a0c1ecdc5eec6b7816460406000549581519060ff8860a01c1682526020820152a160a01b16911617600055600080f35b6060810190811067ffffffffffffffff82111761089f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761089f57604052565b67ffffffffffffffff811161089f5760051b60200190565b3590811515820361016257565b919082519283825260005b848110610c265750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201610be7565b73ffffffffffffffffffffffffffffffffffffffff600054163303610c5b57565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fdfea26469706673582212208b626c56b972383198c831a520a3479d3397dc40bff56725d0bd13bb907d076b64736f6c63430008170033' as const; diff --git a/integration-tests/artifacts/HubSolanaSpokeVoteDecoder.ts b/integration-tests/artifacts/HubSolanaSpokeVoteDecoder.ts new file mode 100644 index 00000000..8fae78dc --- /dev/null +++ b/integration-tests/artifacts/HubSolanaSpokeVoteDecoder.ts @@ -0,0 +1,2 @@ +export const HubSolanaSpokeVoteDecoderBytecode = + '0x60c060409080825234620002305760608162004262803803809162000025828562000235565b83398101031262000230576200003b816200026f565b906020916200005984620000518585016200026f565b930162000284565b916001600160a01b0391821680156200021f5790829160805216908160a05260009360048161ff0087549660081b16948561ff00198816178855885192838092633b3dced560e11b82525afa908115620001d557839183918891620001df575b506004895180948193637e062a3560e11b8352165afa908115620001d557908291879162000192575b50600488518095819363313ce56760e01b8352165afa9081156200018857859162000146575b5060ff9150169161ffff19161717905551613fce90816200029482396080518181816116970152613548015260a0518181816107d5015261274b0152f35b905081813d831162000180575b6200015f818362000235565b810103126200017c576200017560ff9162000284565b3862000108565b8380fd5b503d62000153565b86513d87823e3d90fd5b82819392503d8311620001cd575b620001ac818362000235565b81010312620001c957518281168103620001c957819038620000e2565b8580fd5b503d620001a0565b87513d88823e3d90fd5b92505081813d831162000217575b620001f9818362000235565b81010312620001c957518281168103620001c95781839138620000b9565b503d620001ed565b8551638ef9698f60e01b8152600490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200025957604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200023057565b519060ff82168203620002305756fe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a71461281a5750806307a1a398146127c157806316476dcc1461276f57806318d13fd1146127005780632b2077ad146124895780632b7e1cd81461244f5780632df2f978146121ef578063375e46b21461218c5780633896fc121461217557806345ee36c51461212b57806347bdbbcf146120a05780634d63d4731461017f5780634f098c0a14611f85578063571354e2146119055780636a02a857146118cb5780636cac26d11461188957806371b632c81461182a57806378cc4030146116fa5780637cfdd53b146116bb57806384acd1bb1461164c5780638a8f2868146116125780638f0e2168146115b9578063a0f419fa1461157f578063a8024ef11461151e578063bda269f214611165578063c008e15614611117578063c895dec614610c57578063da841d3914610522578063dc37e93e146101fd578063e0b54d30146101c3578063e6a3c0e8146101845763ffa1ad741461017f57600080fd5b612f10565b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060405160058152f35b600080fd5b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060405160048152f35b346101be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5760043567ffffffffffffffff81116101be5761024c903690600401612a86565b60405161025881612953565b6060815260606020820152600060408201526000606082015260006080820152606060a082015260ff602083015116600381036104ea57506102ca6102ac604084015163ffffffff60048201511690613c97565b9083526040840151600463ffffffff81848401015116920190613dc3565b92906020830152600180846040840151010151930167ffffffffffffffff600860608401510151166040840152602860608301510151608084015267ffffffffffffffff6030606084015101511660608401526031606083015101519360319460ff8083169116036104c05761034260ff8216613497565b60a08501526000905b60ff8116821061041857610414856103758860608861036e896040830151613ea4565b0151613ea4565b60405191829160208352610395815160c0602086015260e0850190612b25565b60a06103d16020840151927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09384888303016040890152612b25565b9267ffffffffffffffff604082015116606087015267ffffffffffffffff60608201511660808701526080810151828701520151908483030160c0850152612b68565b0390f35b90949160016104a26104728373ffffffffffffffffffffffffffffffffffffffff601460ff9660408b0151010151166104558b60a08c0151613044565b51526040880151601863ffffffff81848401015116920190613dc3565b959060206104848b60a08c0151613044565b5101526060870151600463ffffffff81848401015116920190613dc3565b979060406104b48360a08b0151613044565b5101520191905061034b565b60046040517f5e7bd6ec000000000000000000000000000000000000000000000000000000008152fd5b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260036024820152fd5b346101be5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5767ffffffffffffffff6004358181116101be57610572903690600401612a86565b90602480359073ffffffffffffffffffffffffffffffffffffffff928383168093036101be576040516105a481612937565b600081526000606060209282848201526040516105c08161296f565b8381528385820152836040820152604082015201526105de86613058565b948260408701511615801590610c48575b610c1e5760e086019586515160018103610bee57506002836106118951612ff8565b5101515103610bc45760086106328461062a8a51612ff8565b510151612ff8565b515114801590610b8a575b610b605780515160098103610b2957507f66696e616c697a6564000000000000000000000000000000000000000000000090518381519101517fffffffffffffffffff00000000000000000000000000000000000000000000009181838093169160098110610b13575b505090501603610ae95760e06106bd8751612ff8565b510151937fffffffffffffffff000000000000000000000000000000000000000000000000600886015190806106f1612c21565b169160c01b1603610abf576028850151966030860151916038870151936040880151975160488103610a885750856107358161072d8651612ff8565b510151613034565b515114801590610a6e575b610a2157858a83604051809c81937f2d63f69300000000000000000000000000000000000000000000000000000000835260048301525afa9081156109df578b996000926109eb575b5098516040517f2ac96ea100000000000000000000000000000000000000000000000000000000815261ffff9182166004820152602481019290925298909291908690849060449082907f0000000000000000000000000000000000000000000000000000000000000000165afa9283156109df576000936109b0575b50821561098657826108188351612ff8565b515103610957575061082c60c09151612ff8565b5101510361092d5760c097610871879260ff8761086a60409960005481610863868360081c16978897889416988995869216613f0d565b9a16613f0d565b9916613f0d565b8282511686516108c68161089a8d8a830195866020909392919361ffff60408201951681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826129a7565b519020968651946108d68661296f565b85528585015285840152511693606084516108f081612937565b88815284810192835285810193845201948552835196875251828701525190815183870152810151606086015201516080840152511660a0820152f35b60046040517f36b1fa3a000000000000000000000000000000000000000000000000000000008152fd5b82604051907f598554eb0000000000000000000000000000000000000000000000000000000082526004820152fd5b60046040517f94918724000000000000000000000000000000000000000000000000000000008152fd5b9092508581813d83116109d8575b6109c881836129a7565b810103126101be5751918b610806565b503d6109be565b6040513d6000823e3d90fd5b9950929190508589813d8111610a1a575b610a0681836129a7565b810103126101be5797518a98919286610789565b503d6109fc565b60448a83610a3c610a368a61072d8951612ff8565b51613c56565b90604051927f7a484b9c0000000000000000000000000000000000000000000000000000000084526004840152820152fd5b5089610a81610a368861072d8751612ff8565b1415610740565b604490604884604051927fab8b67c60000000000000000000000000000000000000000000000000000000084526004840152820152fd5b60046040517ff1ffd8ab000000000000000000000000000000000000000000000000000000008152fd5b60046040517f7414348e000000000000000000000000000000000000000000000000000000008152fd5b8391925060090360031b1b161681908b806106a7565b604490600987604051927fab8b67c60000000000000000000000000000000000000000000000000000000084526004840152820152fd5b60046040517f4f1cb49a000000000000000000000000000000000000000000000000000000008152fd5b507f70726f706f73616c000000000000000000000000000000000000000000000000610bbd610a368561062a8b51612ff8565b141561063d565b60046040517fbbda9b77000000000000000000000000000000000000000000000000000000008152fd5b8590604051907f346650500000000000000000000000000000000000000000000000000000000082526004820152fd5b60046040517ff1b1ecf1000000000000000000000000000000000000000000000000000000008152fd5b508260608701511615156105ef565b346101be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5760043567ffffffffffffffff81116101be57610ca6903690600401612a86565b610cae612fa9565b9060ff602082015116600481036110df5750610cd9604082015163ffffffff60048201511690613c97565b9190835267ffffffffffffffff600883604084015101015116602084015267ffffffffffffffff601083604084015101015116604084015267ffffffffffffffff6018836040840151010151166060840152601980836040840151010151920167ffffffffffffffff60086060840151015116608085015267ffffffffffffffff6010606084015101511660a085015260306060830151015160c08501526031606083015101519260319360ff8083169116036104c057610d9c60ff8216612c7e565b610da960405191826129a7565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610ddc60ff8416612c7e565b0160005b81811061109e57505060e08601526000905b60ff81168210610f975785610e128660608761036e886040830151613ea4565b60405180916020825260e0610e3582516101006020860152610120850190612b25565b9167ffffffffffffffff602082015116604085015267ffffffffffffffff604082015116606085015267ffffffffffffffff606082015116608085015267ffffffffffffffff60808201511660a085015267ffffffffffffffff60a08201511660c085015260c0810151828501520151907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083820301610100840152815180825260208201916020808360051b8301019401926000915b838310610ef95786860387f35b919395509193602080610f85837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0866001960301875260c060a08b518051845267ffffffffffffffff86820151168685015267ffffffffffffffff6040820151166040850152606081015115156060850152608081015160808501520151918160a08201520190612b25565b97019301930190928695949293610eec565b909382604085015101602001518560e088015190610fb491613044565b5193602001935280606085015101600801518560e088015190610fd691613044565b516020019067ffffffffffffffff16905280606085015101601001518560e08801519061100291613044565b516040019067ffffffffffffffff16905260100160608401519061102591613e55565b908560e08801519061103691613044565b51606001901515905280606085015101602001518560e08801519061105a91613044565b5160800152606084015190602480828401015163ffffffff16910161107e92613dc3565b94908160e08801519061109091613044565b5160a0015260010190610df2565b6020906040516110ad81612953565b60008152600083820152600060408201526000606082015260006080820152606060a082015282828601015201610de0565b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260046024820152fd5b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57610414611151612f4a565b604051918291602083526020830190612b25565b346101be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5760043567ffffffffffffffff81116101be576111b4903690600401612a86565b604051610140810181811067ffffffffffffffff8211176114ef576040526060815260606020820152600060408201526000606082015260006080820152600060a0820152600060c0820152600060e08201526000610100820152606061012082015260ff602083015116600281036114b7575067ffffffffffffffff60086040840151015116604082015261125c6102ac604084015163ffffffff600c8201511690613d2d565b92906020830152600180846040840151010151930167ffffffffffffffff60086060840151015116606084015260286060830151015160c084015267ffffffffffffffff60306060840151015116608084015267ffffffffffffffff6038606084015101511660a084015260586060830151015160e084015267ffffffffffffffff6060808401510151166101008401526061606083015101519360619460ff8083169116036104c05761131260ff8216613497565b6101208501526000905b60ff81168210611447576104148561133f8860608861036e896040830151613ea4565b6040519182916020835261012061139b61136783516101406020880152610160870190612b25565b60208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0878303016040880152612b25565b9167ffffffffffffffff604082015116606086015267ffffffffffffffff606082015116608086015267ffffffffffffffff60808201511660a086015267ffffffffffffffff60a08201511660c086015260c081015160e086015260e081015161010086015267ffffffffffffffff610100820151168286015201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610140850152612b68565b90949160016114986114858373ffffffffffffffffffffffffffffffffffffffff601460ff9660408b0151010151166104558b6101208c0151613044565b959060206104848b6101208c0151613044565b979060406114ab836101208b0151613044565b5101520191905061131c565b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260026024820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346101be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5760043567ffffffffffffffff81116101be576115776115726020923690600401612a3f565b613c0c565b604051908152f35b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060405160038152f35b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5760206040517f66696e616c697a656400000000000000000000000000000000000000000000008152f35b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060405160068152f35b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060ff60005416604051908152f35b346101be5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5760043561ffff908181168091036101be576024359067ffffffffffffffff82116101be57366023830112156101be57816004013561176681612c7e565b9261177460405194856129a7565b8184526020916024602086019160051b830101913683116101be57602401905b828210611813575050505060009282519260005b8481106117e6575b5050505050156117bc57005b60046040517f7a47c9a2000000000000000000000000000000000000000000000000000000008152fd5b826117f18284613044565b51168414611801576001016117a8565b505050505050600181808080806117b0565b83809161181f846129e8565b815201910190611794565b346101be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5760043567ffffffffffffffff81116101be5761187b6020913690600401612a3f565b818151910120604051908152f35b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060ff60005460081c16604051908152f35b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060405160008152f35b346101be5761191336612c96565b611948604051916119238361291b565b600083526000602084015260006040840152606080840152606060808401528361352f565b600160ff818401511680835203611f5b5760038201519161ffff6003931680602084015215600014611ef85760405192600184016001828401015b604286018210611ee85750907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6041938488520116604052019260608301525b60048382010151906005848201015160ff80855116911603611ebe5763ffffffff60098583010151166040840152600a848201015191600a850160ff841615611e9457600463ffffffff83168701016004870111611e6557600563ffffffff831687018481018201519101949060ff808316911603611e3b57611a4a60ff8216612c7e565b611a5760405191826129a7565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611a8a60ff8416612c7e565b0160005b818110611e0957505060808701526000905b60ff81168210611c3657505080600463ffffffff841688010103611bf45784611ac98585613ea4565b60405180916020825260ff815116602083015261ffff602082015116604083015263ffffffff60408201511660608301526080611b14606083015160a08386015260c0850190612b25565b910151907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08382030160a0840152815180825260208201916020808360051b8301019401926000915b838310611b6a5786860387f35b919395509193602080611be2837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0866001960301875289519061ffff825116815260ff8483015116848201526060611bd16040840151608060408501526080840190612b25565b920151906060818403910152612b25565b97019301930190928695949293611b5d565b6044925060048663ffffffff604051947fc37906a000000000000000000000000000000000000000000000000000000000865216010160048301526024820152fd5b91600295919580828701015161ffff611c538960808c0151613044565b5191169052828601015161ffff80611c6f8960808c0151613044565b515116911603611ddf576003818601015160ff6020611c928960808c0151613044565b5101911690526003828601015160ff806020611cb28a60808d0151613044565b51015116911603611db557600160ff6020611cd18960808c0151613044565b51015116108015611d95575b611d4f576001611d3160809493878a6040611d1a8c611d1060ff996007968763ffffffff81848401015116920190613dc3565b9b90940151613044565b51015263ffffffff81838b01015116910188613dc3565b97906060611d438360808d0151613044565b51015201919050611aa0565b602460ff6020611d638960808c0151613044565b51015116604051907f51ee58530000000000000000000000000000000000000000000000000000000082526004820152fd5b50600660ff6020611daa8960808c0151613044565b510151161015611cdd565b60046040517f02164961000000000000000000000000000000000000000000000000000000008152fd5b60046040517fa179f8c9000000000000000000000000000000000000000000000000000000008152fd5b602090604051611e1881612937565b600081526000838201526060604082015260608082015282828601015201611a8e565b60046040517f84ae4a30000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fbb6b170d000000000000000000000000000000000000000000000000000000008152fd5b60046040517f714f5513000000000000000000000000000000000000000000000000000000008152fd5b8051825260209182019101611983565b604051925060208301602382015b604085018210611f4b5750601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09160208652011660405260239260608301526119c5565b8051825260209182019101611f06565b60046040517f1d9617a0000000000000000000000000000000000000000000000000000000008152fd5b346101be5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5767ffffffffffffffff6004358181116101be57366023820112156101be578060040135602491611fe382612c7e565b92611ff160405194856129a7565b8284526020926024602086019160051b840101923684116101be5760248101915b84831061207a5787876024358281116101be57612033903690600401612e1f565b916044359081116101be5761204c903690600401612e87565b9080519160005b83811061205c57005b80612074838761206e60019588613044565b51613ac5565b01612053565b82358881116101be5786916120958392873691870101612db9565b815201920191612012565b346101be5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5767ffffffffffffffff6004358181116101be576120f0903690600401612db9565b6024358281116101be57612108903690600401612e1f565b6044359283116101be57612123612129933690600401612e87565b91613ac5565b005b346101be5767ffffffffffffffff612142366128d6565b91161061214b57005b60046040517fb10b0aec000000000000000000000000000000000000000000000000000000008152fd5b346101be5761212961218636612c96565b9061352f565b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5760206121c5612c21565b7fffffffffffffffff00000000000000000000000000000000000000000000000060405191168152f35b346101be576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5767ffffffffffffffff906004358281116101be57612241903690600401612a86565b6040519161224e8361291b565b606083528083019360008552604084016000815260608501926000845260808601946060865260ff82820151169060019160018103612417575060408101908151916122a663ffffffff938460048201511690613c97565b94908b5260ff606060018088865101015197019401948d8a6008885101511690526028865101518b5289603087510151168952603186510151826031981692839116036104c05791906122f881613497565b8c526000925b81841061238c57505050509361232f60a09b989694889694612329612347956104149d9b9751613ea4565b51613ea4565b6040519a8b9a828c5251918b015260c08a0190612b25565b955116604088015251166060860152516080850152517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a0850152612b68565b9091838d604061240b61240285989c6123df8f9c73ffffffffffffffffffffffffffffffffffffffff6014828f51010151166123c9898951613044565b51528c5160188b81848401015116920190613dc3565b9c6123eb888851613044565b5101528c5160048981848401015116920190613dc3565b9c909351613044565b510152019291906122fe565b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260016024820152fd5b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060405160028152f35b346101be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5760043567ffffffffffffffff81116101be576124db6124e0913690600401612a86565b613058565b60405180916020825260e061250382516101006020860152610120850190612b25565b9167ffffffffffffffff602082015116604085015267ffffffffffffffff604082015116606085015267ffffffffffffffff606082015116608085015267ffffffffffffffff60808201511660a085015267ffffffffffffffff60a08201511660c085015260c0810151828501520151907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083820301610100840152815180825260208201916020808360051b8301019401926000915b8383106125c75786860387f35b9193955091937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820301835285519061012081018251825260208301519061012060208401528151809152610140906020828501928260051b86010193019160005b8281106126b957505050508260209261010060ff816126a08796604060019a0151604087015267ffffffffffffffff606088015116606087015267ffffffffffffffff608088015116608087015260a0870151151560a087015260c087015160c087015260e087015186820360e0880152612b25565b94015116910152970193019301909286959492936125ba565b909192936020806126f4837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec08a600196030187528851612b25565b9601949301910161262a565b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101be5761277d366128d6565b90620f424067ffffffffffffffff80921604161061279757005b60046040517f3a04ceca000000000000000000000000000000000000000000000000000000008152fd5b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be5760206040517f70726f706f73616c0000000000000000000000000000000000000000000000008152f35b346101be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101be57817fda841d3900000000000000000000000000000000000000000000000000000000602093149081156128ac575b5015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014836128a5565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60409101126101be5760043567ffffffffffffffff811681036101be579060243590565b60a0810190811067ffffffffffffffff8211176114ef57604052565b6080810190811067ffffffffffffffff8211176114ef57604052565b60c0810190811067ffffffffffffffff8211176114ef57604052565b6060810190811067ffffffffffffffff8211176114ef57604052565b6020810190811067ffffffffffffffff8211176114ef57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176114ef57604052565b359061ffff821682036101be57565b359060ff821682036101be57565b67ffffffffffffffff81116114ef57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156101be57803590612a5682612a05565b92612a6460405194856129a7565b828452602083830101116101be57816000926020809301838601378301015290565b91906080838203126101be5760405190612a9f82612937565b8193612aaa816129e8565b8352612ab8602082016129f7565b602084015267ffffffffffffffff9160408201358381116101be5781612adf918401612a3f565b604085015260608201359283116101be57606092612afd9201612a3f565b910152565b60005b838110612b155750506000910152565b8181015183820152602001612b05565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612b6181518092818752878088019101612b02565b0116010190565b908082519081815260208091019281808460051b8301019501936000915b848310612b965750505050505090565b9091929394958480612c11837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528a51612bfe606073ffffffffffffffffffffffffffffffffffffffff835116845285830151908087860152840190612b25565b9160408092015191818403910152612b25565b9801930193019194939290612b86565b6020600060146040517f6163636f756e743a50726f706f73616c44617461000000000000000000000000815260025afa156109df577fffffffffffffffff0000000000000000000000000000000000000000000000006000511690565b67ffffffffffffffff81116114ef5760051b60200190565b9060409160407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101be5767ffffffffffffffff926004358481116101be5782612ce591600401612a3f565b936024359081116101be57826023820112156101be57806004013592612d0a84612c7e565b93612d1860405195866129a7565b8085526020916024602087019260071b850101938185116101be57602401915b848310612d485750505050505090565b6080838303126101be57836080918751612d6181612937565b853581528286013583820152612d788987016129f7565b898201526060612d898188016129f7565b90820152815201920191612d38565b359073ffffffffffffffffffffffffffffffffffffffff821682036101be57565b91906060838203126101be5760405190612dd28261296f565b8193612ddd81612d98565b835267ffffffffffffffff9160208201358381116101be5781612e01918401612a3f565b602085015260408201359283116101be57604092612afd9201612a3f565b9080601f830112156101be576020908235612e3981612c7e565b93612e4760405195866129a7565b81855260208086019260051b8201019283116101be57602001905b828210612e70575050505090565b838091612e7c84612d98565b815201910190612e62565b9080601f830112156101be576020908235612ea181612c7e565b93612eaf60405195866129a7565b81855260208086019260051b8201019283116101be57602001905b828210612ed8575050505090565b81357fffffffff00000000000000000000000000000000000000000000000000000000811681036101be578152908301908301612eca565b346101be5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101be57602060405160018152f35b60405190612f578261296f565b602382527f30307c00000000000000000000000000000000000000000000000000000000006040837f71756572795f726573706f6e73655f303030303030303030303030303030303060208201520152565b60405190610100820182811067ffffffffffffffff8211176114ef57604052606060e083828152600080602083015280604083015280848301528060808301528060a083015260c08201520152565b8051156130055760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051600110156130055760400190565b80518210156130055760209160051b010190565b90613061612fa9565b9160ff6020820151166005810361345f575061308c604082015163ffffffff60048201511690613c97565b9190845267ffffffffffffffff600883604084015101015116602085015267ffffffffffffffff601083604084015101015116604085015267ffffffffffffffff6018836040840151010151166060850152601980836040840151010151920167ffffffffffffffff60086060840151015116608086015267ffffffffffffffff6010606084015101511660a086015260306060830151015160c08601526031606083015101519260319360ff8083169116036104c05761314f60ff8216612c7e565b61315c60405191826129a7565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061318f60ff8416612c7e565b0160005b8181106133f457505060e08701526000905b60ff811682106131c85750508161036e60609260406131c696950151613ea4565b565b90938685859260208660408601510101516131e78360e0860151613044565b515260218087604087015101015196019561320460ff8216612c7e565b61321160405191826129a7565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061324460ff8416612c7e565b0160005b8181106133d857505060206132618560e0880151613044565b51015260005b60ff82168110613387575050928260c061334c8460e06020606061332560318c8967ffffffffffffffff60ff9f60019f61336a9f8f87848b838f94968f6132c1888860409360809d886133159e0151010151940151613044565b51015260ff8a906101006132e2898960218989890151010151950151613044565b510191169052898983613302898960298985890151010151950151613044565b5101911690520151010151950151613044565b51019116905201828a0151613e55565b9889929160a061333888888d0151613044565b510190151590520151010151940151613044565b5101526060870151602463ffffffff81848401015116920190613dc3565b969060e061337b83828d0151613044565b510152019190506131a5565b91948260206133c36001966133b960e09c60406133cb979b989b0151600463ffffffff81848401015116920190613dc3565b9c90960151613044565b510151613044565b5201859289928892613267565b606060208285018101919091528b98508e97508c965001613248565b6040519061012082019180831067ffffffffffffffff8411176114ef5760209260405260008152606083820152600060408201526000606082015260006080820152600060a0820152600060c0820152606060e0820152600061010082015282828601015201613193565b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260056024820152fd5b906134a182612c7e565b6040906134b160405191826129a7565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06134df8295612c7e565b019160009160005b8481106134f5575050505050565b60209083516135038161296f565b858152606083908082840152868301528285010152016134e7565b519063ffffffff821682036101be57565b73ffffffffffffffffffffffffffffffffffffffff90817f0000000000000000000000000000000000000000000000000000000000000000166040908151937f1cfe795100000000000000000000000000000000000000000000000000000000855260209560049587818881875afa908115613aba57600091613a85575b508451957ff951975a00000000000000000000000000000000000000000000000000000000875263ffffffff80921688880152600087602481885afa968715613a7a5760009761395e575b5061360290613c0c565b9580515115613902578251815151908751917ff8ce560a0000000000000000000000000000000000000000000000000000000083528a8301528a826024818a5afa9182156138f7576000926138c8575b501061386c579592909188949286519788957fa0cce1b300000000000000000000000000000000000000000000000000000000875260648701908b88015260609060606024890152845180915288608489019501916000905b82821061382e57505050508583037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152805188845280518985018190526060850195918901916000905b82821061381057505050509186869492600098869501511691015203915afa918215613805576000908193613773575b50156137365750505050565b9061376f91519384937f08c379a00000000000000000000000000000000000000000000000000000000085528401526024830190612b25565b0390fd5b9092503d8084833e61378581836129a7565b81019282828503126137fa5781519182151583036137fd57868101519067ffffffffffffffff8211613801570184601f820112156137fd578051916137c983612a05565b956137d6865197886129a7565b8387528884840101116137fa5750906137f491878087019101612b02565b3861372a565b80fd5b5080fd5b8280fd5b50513d6000823e3d90fd5b8351811688528e9a8d9a5097880197909301926001909101906136fa565b835180518852808c0151888d0152808d015160ff9081168e8a01529082015116878201528e9a8d9a50608090970196909301926001909101906136ab565b6064888a8851917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600960248201527f6e6f2071756f72756d00000000000000000000000000000000000000000000006044820152fd5b9091508a81813d83116138f0575b6138e081836129a7565b810103126101be57519038613652565b503d6138d6565b88513d6000823e3d90fd5b6064888a8851917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601460248201527f696e76616c696420677561726469616e207365740000000000000000000000006044820152fd5b90963d8082843e61396f81846129a7565b82018a838203126137fd57825167ffffffffffffffff93848211613a7657019188838303126137fa5788519389850185811082821117613a4a578a5283519081116137fd5783019082601f830112156137fa57908c92918151916139d283612c7e565b946139df8d5196876129a7565b8386528086019360051b8201019384116137fd57908e80969594939201915b838310613a26575050505091613a1b91849361360295520161351e565b8a82015296906135f8565b9091809394959650518a811681036138015781528e959493928601919086016139fe565b60248360418f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8380fd5b86513d6000823e3d90fd5b90508781813d8311613ab3575b613a9c81836129a7565b810103126101be57613aad9061351e565b386135ad565b503d613a92565b85513d6000823e3d90fd5b909182518015600014613c055760015b90825115600014613bfe5760015b9460005b828110613bbd575b50505015613b935780519160005b838110613b3a575b5050505015613b1057565b60046040517f8076dd8a000000000000000000000000000000000000000000000000000000008152fd5b7fffffffff000000000000000000000000000000000000000000000000000000008060046020850151015160e01b1690613b748386613044565b511614613b8357600101613afd565b5050505050600138808080613b05565b60046040517fa710429d000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff8087511690613be18385613044565b511614613bf057600101613ae7565b505050506001388080613aef565b6000613ae3565b6000613ad5565b613c14612f4a565b9060208151910120613c506040805180936020613c3a8184019788815193849201612b02565b82019060208201520360208101845201826129a7565b51902090565b602081519101519060208110613c6a575090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060200360031b1b1690565b90918215613d0f57826004019160405193601f8116918215613d06575b6004838701938385019201015b818410613cf65750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b8051845260209384019301613cc1565b60209250613cb4565b915050604051613d1e8161298b565b60008152600036813790600490565b90918215613da55782600c019160405193601f8116918215613d9c575b600c838701938385019201015b818410613d8c5750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b8051845260209384019301613d57565b60209250613d4a565b915050604051613db48161298b565b60008152600036813790600c90565b92908215613e38578281019260405194601f8216928315613e2f575b838701938385019201015b818410613e1f5750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b8051845260209384019301613dea565b60209350613ddf565b92509050604051613e488161298b565b6000815260003681379190565b81016001015190919060fe8116613e705760ff169160010190565b60249060ff604051917ff7a37b07000000000000000000000000000000000000000000000000000000008352166004820152fd5b5190808203613eb1575050565b60449250604051917fc37906a000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b9060ff8091169116039060ff8211611e6557565b60ff16604d8111611e6557600a0a90565b919060ff821660ff8216818114613f91571115613f7057613f3691613f3191613ee8565b613efc565b908115613f41570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b613f3190613f7d92613ee8565b90818102918183041490151715611e655790565b505050509056fea2646970667358221220d5c5a0a7e6ab58f359834c23196d4ca1852945af24ba0e295d0fcaf3e210384164736f6c63430008170033' as const; diff --git a/integration-tests/artifacts/HubVotePool.ts b/integration-tests/artifacts/HubVotePool.ts new file mode 100644 index 00000000..ae73de3c --- /dev/null +++ b/integration-tests/artifacts/HubVotePool.ts @@ -0,0 +1,2 @@ +export const HubVotePoolBytecode = + '0x60a0604052346200016157606062008af6803803809162000020826200017c565b60a03912620001615762000033620001bf565b6200003d620001d6565b62000047620001ed565b6001600160a01b0392908382169081156200014f578491608052169081156200013657600080546001600160a01b03198116841782556040519391908616907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3613c628281016001600160401b0381118482101762000130578392620000e79262004e7485396001600160a01b0316815230602082015260400190565b03906000f080156200012a576200010a9262000104911662000210565b620003dc565b6040516149df9081620004958239608051818181611a3e01526131df0152f35b62000204565b62000166565b604051631e4fbdf760e01b815260006004820152602490fd5b604051638ef9698f60e01b8152600490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b60a0601f91909101601f19168101906001600160401b038211908210176200013057604052565b606081019081106001600160401b038211176200013057604052565b60a051906001600160a01b03821682036200016157565b60c051906001600160a01b03821682036200016157565b60e051906001600160a01b03821682036200016157565b6040513d6000823e3d90fd5b600360008181526004602090815260008051602062008ad683398151915254604080516001600160a01b039283168152868316818501529094929392907f605377a362d179f8f97f433900dc88f457846f29a6a43430b454a11f4995c385908690a28416938415620003c0578351928084019281816301ffc9a760e01b9687875287602482015260248152620002a681620001a3565b51617530968688fa933d82519086620003b4575b5085620003a9575b508462000343575b505050908092509162000330575b5015620003205750600360005260046020526200031e9060008051602062008ad683398151915280546001600160a01b0319166001600160a01b03909216919091179055565b565b5163d62f4a2760e01b8152600490fd5b6200033c915062000432565b38620002d8565b82945083958294885185810192835263ffffffff60e01b6024820152602481526200036e81620001a3565b5192fa913d915191836200039d575b50508162000392575b501581388080620002ca565b905015153862000386565b1015915038806200037d565b1515945038620002c2565b841115955038620002ba565b506003815260049091522080546001600160a01b031916905550565b600154604080516001600160a01b03808416825284811660208301529293917f1deb63b37f154ad5b5f92db0edea9bccf74dc0c235e80a86242dfddb2e33a0ec91a16001600160a01b0319909216911617600155565b6000602091604051838101906301ffc9a760e01b825263da841d3960e01b6024820152602481526200046481620001a3565b5191617530fa6000513d8262000487575b508162000480575090565b9050151590565b602011159150386200047556fe6080604052600436101561001257600080fd5b60003560e01c806316476dcc146102425780632ac96ea11461023d5780632b2077ad146102385780632b7e1cd8146102335780632df2f9781461022e57806331e0ff7a146102295780633896fc121461022457806345e16cd31461021f57806345ee36c51461021a57806347bdbbcf146102155780634d63d4731461019d5780634f098c0a14610210578063571354e21461020b578063715018a61461020657806371b632c814610201578063767b9daa146101fc57806378cc4030146101f757806384acd1bb146101f25780638a8f2868146101ed5780638da5cb5b146101e8578063a0f419fa146101e3578063a8024ef1146101de578063b0bf6638146101d9578063ba89369e146101d4578063bda269f2146101cf578063c008e156146101ca578063c42cf535146101c5578063c895dec6146101c0578063dc37e93e146101bb578063e0b54d30146101b6578063e6a3c0e8146101b1578063eb1d6b96146101ac578063f2fde38b146101a7578063fa2ae360146101a25763ffa1ad741461019d57600080fd5b611585565b612c63565b612b7d565b612b2e565b612af4565b612aba565b6128d8565b61253f565b6122ec565b61229e565b611f4c565b611e06565b611b40565b611b28565b611aee565b611a9c565b611a62565b6119f3565b611935565b6118e3565b6118c5565b6117dc565b6116f9565b6115bf565b6114fc565b611334565b611262565b611249565b6110c7565b610e71565b610d00565b610894565b6102ef565b610291565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261028c5760043567ffffffffffffffff8116810361028c579060243590565b600080fd5b3461028c5761029f36610247565b90620f424067ffffffffffffffff8092160416106102b957005b60046040517f3a04ceca000000000000000000000000000000000000000000000000000000008152fd5b61ffff81160361028c57565b3461028c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c5761ffff60043561032d816102e3565b16600052600260205260206103486024356040600020614004565b604051908152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6080810190811067ffffffffffffffff82111761039b57604052565b610350565b6040810190811067ffffffffffffffff82111761039b57604052565b6060810190811067ffffffffffffffff82111761039b57604052565b610120810190811067ffffffffffffffff82111761039b57604052565b60a0810190811067ffffffffffffffff82111761039b57604052565b60c0810190811067ffffffffffffffff82111761039b57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761039b57604052565b6040519061047b826103bc565b565b6040519061047b826103a0565b6004359060ff8216820361028c57565b359060ff8216820361028c57565b67ffffffffffffffff811161039b57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561028c578035906104f9826104a8565b92610507604051948561042d565b8284526020838301011161028c57816000926020809301838601378301015290565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60208183011261028c576004359167ffffffffffffffff9182841161028c57608090848303011261028c57604051926105828461037f565b8060040135610590816102e3565b845261059e6024820161049a565b6020850152604481013583811161028c578260046105be928401016104e2565b6040850152606481013592831161028c576105dc92016004016104e2565b606082015290565b60005b8381106105f75750506000910152565b81810151838201526020016105e7565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093610643815180928187528780880191016105e4565b0116010190565b90808251908181526020809101926020808460051b8301019501936000915b8483106106795750505050505090565b90919293949584806106b5837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528a51610607565b9801930193019194939290610669565b908082519081815260208091019281808460051b8301019501936000915b8483106106f35750505050505090565b9091929394958480827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085600195030186526107b68a51916107a561074a610120855184528686015190808886015284019061064a565b6040858101519084015260608086015167ffffffffffffffff169084015260808581015167ffffffffffffffff169084015260a08581015115159084015260c0808601519084015260e0808601519084830390850152610607565b6101009384015160ff169190930152565b98019301930191949392906106e3565b90610891916020815281519060e06107ec61010093846020850152610120840190610607565b9367ffffffffffffffff602082015116604084015261081c6040820151606085019067ffffffffffffffff169052565b606081015167ffffffffffffffff166080840152608081015167ffffffffffffffff1660a084015260a081015167ffffffffffffffff1660c084015260c0810151828401520151917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828503019101526106c5565b90565b3461028c576108a236610529565b6108aa612cf3565b602082015160ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb8101610cbf575061099d61098a61097661096361094f61093c61092861091260408a015163ffffffff61090a826004015190600490565b91169161413e565b90895260408a0151810160089081015192910190565b67ffffffffffffffff909116602089015290565b6040880151810160089081015192910190565b67ffffffffffffffff909116604087015290565b6040860151810160089081015192910190565b67ffffffffffffffff909116606085015290565b6040840151810160019081015192910190565b92610a28610a0d6109fa6109e66109d36109bf60608701516008015190600890565b67ffffffffffffffff90911660808a015290565b6060860151810160089081015192910190565b67ffffffffffffffff90911660a088015290565b6060840151810160209081015192910190565b9060c086015260608301516001828192949394010151920190565b929060ff808316911603610c9557610a4660ff829693949616612d42565b60e08501526000905b60ff81168210610a8957610a8585610a7988606088610a72896040830151614230565b0151614230565b604051918291826107c6565b0390f35b604084015183016020908101519294939192610ac69290910190610ab18660e0890151612e1f565b51526040840151810160019081015192910190565b9590610ad460ff8216612e38565b6020610ae48760e08a0151612e1f565b51015260005b60ff82168110610c495750506001610c28610bf860e0610be58960a0610bdc8b610b97610bd560608e610bc48a60ff9f8a85610ba18a610b97610b85610b69610b44610bb298878d01516020828192949394010151920190565b906040610b54878d8c0151612e1f565b5101528b870151810160019081015192910190565b9190610100610b7b868c8b0151612e1f565b51019060ff169052565b89850151810160089081015192910190565b9690940151612e1f565b51019067ffffffffffffffff169052565b82840151810160089081015192910190565b93906080610ba1888e8d0151612e1f565b01516141e1565b51019015159052565b6060870151810160209081015192910190565b9060c0610c098960e08c0151612e1f565b51015260608601516004828201810151919263ffffffff92910161090a565b959060e0610c3983828b0151612e1f565b5101520191905094919294610a4f565b8087610c8e6001936020610c868b610c7c60e09f63ffffffff61090a8f6040015192836004828192949394010151920190565b9f90960151612e1f565b510151612e1f565b5201610aea565b60046040517f5e7bd6ec000000000000000000000000000000000000000000000000000000008152fd5b6040517f96b8e05b00000000000000000000000000000000000000000000000000000000815260ff91909116600482015260056024820152604490fd5b0390fd5b3461028c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57602060405160028152f35b908082519081815260208091019281808460051b8301019501936000915b848310610d685750505050505090565b9091929394958480610de3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528a51610dd0606073ffffffffffffffffffffffffffffffffffffffff835116845285830151908087860152840190610607565b9160408092015191818403910152610607565b9801930193019194939290610d58565b9061089191602081526080610e14835160a0602085015260c0840190610607565b92602081015167ffffffffffffffff8091166040850152604082015116606084015260608101518284015201519060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082850301910152610d3a565b3461028c57610e7f36610529565b610e87612e9f565b602091610e98602082015160ff1690565b600190600160ff82160361108a5750606091610f2b9160409060ff604084019283519082610f756040610f658c610f52610f3a610f01610eee610edf8b6004015190600490565b63ffffffff9c918d169161413e565b9085528d51810160019081015192910190565b9f909f9d019d8e610f1781516008015190600890565b67ffffffffffffffff909116602087015291565b51810160209081015192910190565b9060608401528d516008828192949394010151920190565b939091019067ffffffffffffffff169052565b8951810160019081015192910190565b999091169316839003610c9557610f8e83929493612ecc565b9060808a019182526000945b838610610fc757610a858b610fbb8c8c610fb58d8d51614230565b51614230565b60405191829182610df3565b9091929361106e869a878e61104c859a8761090a6110569f8f908d61101d61101461103993855173ffffffffffffffffffffffffffffffffffffffff601483819395949501015116920190565b97909251612e1f565b519073ffffffffffffffffffffffffffffffffffffffff169052565b5192836004828192949394010151920190565b9c90928951612e1f565b5101528a51600482820181015191928692910161090a565b9a908461107c838851612e1f565b510152019493929190610f9a565b6040517f96b8e05b00000000000000000000000000000000000000000000000000000000815260ff91909116600482015260016024820152604490fd5b3461028c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c5760ff61110061048a565b166000526004602052602073ffffffffffffffffffffffffffffffffffffffff60406000205416604051908152f35b67ffffffffffffffff811161039b5760051b60200190565b9060409160407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261028c5767ffffffffffffffff9260043584811161028c5782611196916004016104e2565b9360243590811161028c578260238201121561028c578060040135926111bb8461112f565b936111c9604051958661042d565b8085526020916024602087019260071b8501019381851161028c57602401915b8483106111f95750505050505090565b60808383031261028c578360809187516112128161037f565b85358152828601358382015261122989870161049a565b89820152606061123a81880161049a565b908201528152019201916111e9565b3461028c5761126061125a36611147565b906131c7565b005b3461028c576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c576004359067ffffffffffffffff821161028c573660238301121561028c578160040135916112bf8361112f565b916040936112d0604051948561042d565b8084526024602085019160061b8401019236841161028c57602401905b8382106112fd5761126085613515565b858236031261028c578286918251611314816103a0565b843561131f816102e3565b815282850135838201528152019101906112ed565b3461028c5767ffffffffffffffff61134b36610247565b91161061135457005b60046040517fb10b0aec000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff81160361028c57565b919060608382031261028c57604051906113b5826103bc565b819380356113c28161137e565b835267ffffffffffffffff91602082013583811161028c57816113e69184016104e2565b6020850152604082013592831161028c5760409261140492016104e2565b910152565b9080601f8301121561028c5760209082356114238161112f565b93611431604051958661042d565b81855260208086019260051b82010192831161028c57602001905b82821061145a575050505090565b83809183356114688161137e565b81520191019061144c565b9080601f8301121561028c57602090823561148d8161112f565b9361149b604051958661042d565b81855260208086019260051b82010192831161028c57602001905b8282106114c4575050505090565b81357fffffffff000000000000000000000000000000000000000000000000000000008116810361028c5781529083019083016114b6565b3461028c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c5767ffffffffffffffff60043581811161028c5761154c90369060040161139c565b60243582811161028c57611564903690600401611409565b60443592831161028c5761157f611260933690600401611473565b91613557565b3461028c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57602060405160018152f35b3461028c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c5767ffffffffffffffff60043581811161028c573660238201121561028c57806004013560249161161d8261112f565b9261162b604051948561042d565b8284526020926024602086019160051b8401019236841161028c5760248101915b84831061168e57878760243582811161028c5761166d903690600401611409565b60443592831161028c57611688611260933690600401611473565b91613745565b823588811161028c5786916116a9839287369187010161139c565b81520192019161164c565b6108919161ffff825116815260ff602083015116602082015260606116e86040840151608060408501526080840190610607565b920151906060818403910152610607565b3461028c5761171061170a36611147565b90613842565b604051602080825260ff8351168183015261ffff8184015116604083015263ffffffff60408401511660608301526080611758606085015160a08386015260c0850190610607565b930151907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090818486030160a085015282519081865280860181808460051b8901019501936000975b8489106117ae5787870388f35b90919293949584806117ca838686600196030188528a516116b4565b980194019801979190949392946117a1565b3461028c576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261187957611814614277565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261028c576004359067ffffffffffffffff821161028c57610891916004016104e2565b3461028c5760206118d53661187c565b818151910120604051908152f35b3461028c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461028c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57600435611970816102e3565b60243567ffffffffffffffff811161028c573660238201121561028c57806004013561199b8161112f565b916119a9604051938461042d565b8183526020916024602085019160051b8301019136831161028c57602401905b8282106119da576112608587613cdf565b83809183356119e8816102e3565b8152019101906119c9565b3461028c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461028c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57602060405160068152f35b3461028c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b3461028c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57602060405160038152f35b3461028c576020610348611b3b3661187c565b613d56565b3461028c57611b5161170a36611147565b60800160005b8151805182101561126057611bcc611bb3611b99611b868594611b7d6020968792612e1f565b51015160ff1690565b60ff166000526004602052604060002090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b9073ffffffffffffffffffffffffffffffffffffffff821615611ddc57611c55611bf7848651612e1f565b5191611c1860015473ffffffffffffffffffffffffffffffffffffffff1690565b93604094855180927fda841d39000000000000000000000000000000000000000000000000000000008252818060c097889560049a8b8401613e2a565b03915afa928315611dd757600093611da8575b5050838201519381830193611c90611c8b86516000526003602052604060002090565b613e5e565b9081518751108015611d99575b8015611d8a575b611d6357508593611d5d9593611d579386611d3c606095611d1260019d9c51611cf78786019b878d51970196875190611cdb61046e565b9485528a85015288840152516000526003602052604060002090565b90604060029180518455602081015160018501550151910155565b83611d31611d2588519c51845190613eb3565b9a518784015190613eb3565b935191015190613eb3565b92611d4561046e565b978852870152850152015161ffff1690565b9161439c565b01611b57565b82517f4efc1f91000000000000000000000000000000000000000000000000000000008152fd5b50828201518388015110611ca4565b50838201518488015110611c9d565b611dc8929350803d10611dd0575b611dc0818361042d565b810190613da0565b903880611c68565b503d611db6565b612f78565b60046040517fae675321000000000000000000000000000000000000000000000000000000008152fd5b3461028c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57611260611e4061048a565b602435611e4c8161137e565b611e54614277565b614531565b906108919160208152815190611e7d61014092836020840152610160830190610607565b91611eb86020850151937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09485858303016040860152610607565b604085015167ffffffffffffffff16606084015293606081015167ffffffffffffffff166080840152608081015167ffffffffffffffff1660a084015260a081015167ffffffffffffffff1660c084015260c081015160e084015260e0810151610100908185015281015190611f3d610120928386019067ffffffffffffffff169052565b01519282850301910152610d3a565b3461028c57611f5a36610529565b611f62613ec0565b602082015160ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe810161220257506120ab60ff92604090612023612008611fe9611fcd611fb960408601516008015190600890565b67ffffffffffffffff90911660408a015290565b60408501516004828201810151919263ffffffff92910161090a565b90875260408401516004818301810151919263ffffffff92910161090a565b90602087015260408301516001828192949394010151920190565b95909592816121076120f76120e26120ca60a06120ba8c610f5260608c019d8e61209761207f61206f61205b84516008015190600890565b67ffffffffffffffff909116606089015290565b8351810160209081015192910190565b9060c087015282516008828192949394010151920190565b67ffffffffffffffff909116608086015291565b51810160089081015192910190565b8a51810160209081015192910190565b9060e08c015289516008828192949394010151920190565b67ffffffffffffffff9091166101008b015290565b8751810160019081015192910190565b989091169216829003610c95579061211e81612ecc565b61012087019081526000925b82841061215457610a85886121488b8a610fb58b60408c0151614230565b60405191829182611e59565b90919297946121e86121bd61101d6121a18c61219760019660408c015173ffffffffffffffffffffffffffffffffffffffff601483819395949501015116920190565b9390918951612e1f565b60408801516004828201810151919263ffffffff92910161090a565b979060206121cc8d8851612e1f565b51015288516004828201810151919263ffffffff92910161090a565b9990836121f6838751612e1f565b5101520192919061212a565b6040517f96b8e05b00000000000000000000000000000000000000000000000000000000815260ff91909116600482015260026024820152604490fd5b6040519061224c826103bc565b602382527f30307c00000000000000000000000000000000000000000000000000000000006040837f71756572795f726573706f6e73655f303030303030303030303030303030303060208201520152565b3461028c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57610a856122d861223f565b604051918291602083526020830190610607565b3461028c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c576004356123278161137e565b61232f614277565b6001546040805173ffffffffffffffffffffffffffffffffffffffff8084168252848116602083015292937fffffffffffffffffffffffff0000000000000000000000000000000000000000939290917f1deb63b37f154ad5b5f92db0edea9bccf74dc0c235e80a86242dfddb2e33a0ec9190a116911617600155600080f35b908082519081815260208091019281808460051b8301019501936000915b8483106123dd5750505050505090565b9091929394958480612464837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528a519060c090825181528483015167ffffffffffffffff80911686830152604090818501511690820152606080840151151590820152608080840151908201528160a080940151938201520190610607565b98019301930191949392906123cd565b90610891916020815281519060e061249a61010093846020850152610120840190610607565b9367ffffffffffffffff60208201511660408401526124ca6040820151606085019067ffffffffffffffff169052565b606081015167ffffffffffffffff166080840152608081015167ffffffffffffffff1660a084015260a081015167ffffffffffffffff1660c084015260c0810151828401520151917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828503019101526123af565b3461028c5761254d36610529565b612555612cf3565b60208281015160ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8101612801575060609261262d9160ff604091604084019261267884516126156126056125f160206125e18d610f526125ce6125bf896004015190600490565b63ffffffff9a918b169161413e565b9083528d51810160089081015192910190565b8951810160089081015192910190565b67ffffffffffffffff90911660408d015290565b8751810160089081015192910190565b6120f78c9a928d8d019067ffffffffffffffff169052565b9a909a9701978893866126aa60c08d61269361264e8a516008015190600890565b61266860809b92608086019067ffffffffffffffff169052565b8b51810160089081015192910190565b909a610f2b60a09c60a086019067ffffffffffffffff169052565b92909101528c516001828192949394010151920190565b9d9091169716879003610c9557939291906126c6879697613f1d565b9460e08c019586526000975b8789106126fa5750610a858c6126ee8f8e610fb58f8f51614230565b60405191829182612474565b909192938881969798999e9b8b519061271d916020828192949394010151920190565b9c90828b519061272c91612e1f565b51528d51810160089081015191019084838c519061274991612e1f565b5167ffffffffffffffff9092169101528d51810160089081015191019085838c519061277491612e1f565b5167ffffffffffffffff9092169101528d5190612790916141e1565b9086838c519061279f91612e1f565b519115159101528d51810160209081015191019290918a51906127c191612e1f565b5101528b5160048282018101516127de939088169291019061413e565b9d9087828a51906127ee91612e1f565b51015260010197969594939291906126d2565b6040517f96b8e05b00000000000000000000000000000000000000000000000000000000815260ff919091166004808301919091526024820152604490fd5b90610891916020815261285f825160c0602084015260e0830190610607565b9060c060a061289e6020860151947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09586868303016040870152610607565b94604081015167ffffffffffffffff8091166060860152606082015116608085015260808101518285015201519282850301910152610d3a565b3461028c576128e636610529565b6128ee613fb5565b602082015160ff167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8101612a7d5750604061297b612960612941604086015163ffffffff61090a826004015190600490565b90855260408601516004818301810151919263ffffffff92910161090a565b90602085015260408501516001828192949394010151920190565b9390939060ff6060820193816129d46120f76129c06129a860406120ba8c610f528d516008015190600890565b9060808c015289516008828192949394010151920190565b67ffffffffffffffff90911660608b015290565b989091169216829003610c9557906129eb81612ecc565b60a087019081526000925b828410612a2057610a8588612a148b8a610fb58b60408c0151614230565b60405191829182612840565b9091929794612a636121bd61101d6121a18c61219760019660408c015173ffffffffffffffffffffffffffffffffffffffff601483819395949501015116920190565b999083612a71838751612e1f565b510152019291906129f6565b6040517f96b8e05b00000000000000000000000000000000000000000000000000000000815260ff91909116600482015260036024820152604490fd5b3461028c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57602060405160048152f35b3461028c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57602060405160058152f35b3461028c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57611260600435612b6c816102e3565b612b74614277565b602435906142c8565b3461028c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57600435612bb88161137e565b612bc0614277565b73ffffffffffffffffffffffffffffffffffffffff8091168015612c32576000918254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60246040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152fd5b3461028c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028c57600435600052600360205260606040600020805490600260018201549101549060405192835260208301526040820152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60405190610100820182811067ffffffffffffffff82111761039b57604052606060e083828152600080602083015280604083015280848301528060808301528060a083015260c08201520152565b90612d4c8261112f565b604090612d5c604051918261042d565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612d8a829561112f565b019160005b838110612d9c5750505050565b6020908251612daa816103d8565b6000815260608390808284015260008684015260008184015260006080840152600060a0840152600060c084015260e08301526000610100830152828601015201612d8f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051821015612e335760209160051b010190565b612df0565b90612e428261112f565b612e4f604051918261042d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612e7d829461112f565b019060005b828110612e8e57505050565b806060602080938501015201612e82565b60405190612eac826103f5565b606060808382815260006020820152600060408201526000838201520152565b90612ed68261112f565b604090612ee6604051918261042d565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612f14829561112f565b019160009160005b848110612f2a575050505050565b6020908351612f38816103bc565b85815260608390808284015286830152828501015201612f1c565b519063ffffffff8216820361028c57565b9081602091031261028c5761089190612f53565b6040513d6000823e3d90fd5b90602090818382031261028c57825167ffffffffffffffff9384821161028c57019060408282031261028c5760405193612fbd856103a0565b825190811161028c5782019080601f8301121561028c578151612fdf8161112f565b92612fed604051948561042d565b818452858085019260051b82010192831161028c5791858094929593015b8181106130285750506130219350855201612f53565b9082015290565b91938091939583516130398161137e565b815201910191859391949261300b565b9081602091031261028c575190565b919060408382031261028c578251801515810361028c579260208101519067ffffffffffffffff821161028c570181601f8201121561028c57805161309c816104a8565b926130aa604051948561042d565b8184526020828401011161028c5761089191602080850191016105e4565b9060408101918051604083528051809452606083019360208092019160005b828110613104575050505063ffffffff6020809201511691015290565b835173ffffffffffffffffffffffffffffffffffffffff16875295810195928101926001016130e7565b93929093606094606082019082526020906060602084015284518091526080916020608085019601926000905b83821061317a57505050505061089193945060408184039101526130c8565b845180518952808401518985015260408082015160ff908116918b0191909152908b0151168a890152968701969382019360019091019061315b565b906020610891928181520190610607565b9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906040918251917f1cfe7951000000000000000000000000000000000000000000000000000000008352602060049581858881875afa948515611dd7576132899560009182916134e8575b508751809781927ff951975a0000000000000000000000000000000000000000000000000000000083528b830191909163ffffffff6020820193169052565b0381875afa948515611dd7576000956134bf575b506132a790613d56565b90845151156134595782516132ef828751518951809381927ff8ce560a0000000000000000000000000000000000000000000000000000000083528d83019190602083019252565b0381895afa928315611dd75760009361342a575b5050106133c45791849391600093613349979651978894859384937fa0cce1b30000000000000000000000000000000000000000000000000000000085528a850161312e565b03915afa928315611dd75760009060009461339c575b501561336a57505050565b610cfc90519283927f08c379a000000000000000000000000000000000000000000000000000000000845283016131b6565b90506133bc9193503d806000833e6133b4818361042d565b810190613058565b92903861335f565b610cfc8686519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152600960208201527f6e6f2071756f72756d000000000000000000000000000000000000000000000060408201520190565b61344a929350803d10613452575b613442818361042d565b810190613049565b903880613303565b503d613438565b610cfc8787519182917f08c379a0000000000000000000000000000000000000000000000000000000008352820160609060208152601460208201527f696e76616c696420677561726469616e2073657400000000000000000000000060408201520190565b6132a79195506134e1903d806000833e6134d9818361042d565b810190612f84565b949061329d565b6135089150843d861161350e575b613500818361042d565b810190612f64565b3861324a565b503d6134f6565b9061351e614277565b60005b8251811015613552578061354c61353a60019386612e1f565b51602061ffff825116910151906142c8565b01613521565b509050565b90918251801560001461373e5760015b908251156000146137375760015b9460005b8281106136c3575b505050156136995780519160005b8381106135cc575b50505050156135a257565b60046040517f8076dd8a000000000000000000000000000000000000000000000000000000008152fd5b602082015160049081015160e01b7fffffffff000000000000000000000000000000000000000000000000000000001690507fffffffff0000000000000000000000000000000000000000000000000000000061367a61365561362f8588612e1f565b517fffffffff000000000000000000000000000000000000000000000000000000001690565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b9116146136895760010161358f565b5050505050600138808080613597565b60046040517fa710429d000000000000000000000000000000000000000000000000000000008152fd5b855173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff61371a611bb36137008587612e1f565b5173ffffffffffffffffffffffffffffffffffffffff1690565b91161461372957600101613579565b505050506001388080613581565b6000613575565b6000613567565b919082519260005b84811061375b575050505050565b80613773858561376d60019587612e1f565b51613557565b0161374d565b60405190613786826103f5565b606060808360008152600060208201526000604082015282808201520152565b919082018092116137b357565b612cc4565b906137c28261112f565b60406137d1604051928361042d565b8382527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06137ff839561112f565b019160009060005b848110613815575050505050565b60209084516138238161037f565b8481528285818301526060808884015280830152828501015201613807565b61386690613858613851613779565b93826131c7565b60018181015160ff16845291565b600160ff92600184613879875160ff1690565b1603613cb55760028184018101516138da926138b5920192906020938489016138a78293829061ffff169052565b61ffff9485915161ffff1690565b16613c9f57506138c590866140de565b9060608901525b600486820181015192910190565b60018187018101519295929082019390886138ff6138f98c5160ff1690565b60ff1690565b911603613c755787956139436139356139248c978b6004828192949394010151920190565b63ffffffff90911660409889015290565b60018a820181015192910190565b9716928315613c4c5761395e9063ffffffff809316906137a6565b958984613976898c6001828192949394010151920190565b9c1603613c2357919061398b859496956137b8565b9260808d019384526000965b8588106139f35750505050505050508282036139ba575050509061089191614230565b517fc37906a000000000000000000000000000000000000000000000000000000000815260048101919091526024810191909152604490fd5b9193959799968083613a68829f8f613a619181613a40613a58999b9d9f8f90613a2d613a3691613a4e976002828192949394010151920190565b9b909251612e1f565b519061ffff169052565b810160029081015192910190565b9690948c51612e1f565b515161ffff1690565b61ffff1690565b911603613bfa578c84613ac06138f98f613ab6611b7d9782613aa88f8e610b7b613a9f8c9d83996001828192949394010151920190565b9d909351612e1f565b810160019081015192910190565b9790958d51612e1f565b911603613bd1578c84868b613add6138f983611b7d878f51612e1f565b10928315613bb3575b505050613b6657978b8680969594938f849b9a998f9d613b1190866004828192949394010151920190565b9116613b1d918661413e565b9f90918b5190613b2c91612e1f565b51015260048184018101519101911690613b459261413e565b9d9081885190613b5491612e1f565b51606001520196959493929190613997565b610cfc8b613b7a8f611b7d89918c51612e1f565b90517f51ee585300000000000000000000000000000000000000000000000000000000815260ff90911660048201529081906024820190565b6006935090611b7d613bc6928c51612e1f565b16101584868f613ae6565b60048b517f02164961000000000000000000000000000000000000000000000000000000008152fd5b60048b517fa179f8c9000000000000000000000000000000000000000000000000000000008152fd5b600487517f84ae4a30000000000000000000000000000000000000000000000000000000008152fd5b600486517fbb6b170d000000000000000000000000000000000000000000000000000000008152fd5b60046040517f714f5513000000000000000000000000000000000000000000000000000000008152fd5b613caa915086614081565b9060608901526138cc565b60046040517f1d9617a0000000000000000000000000000000000000000000000000000000008152fd5b60009082519260005b848110613d26575b505050905015613cfc57565b60046040517f7a47c9a2000000000000000000000000000000000000000000000000000000008152fd5b61ffff80613d348385612e1f565b511690841614613d4657600101613ce8565b5050505050600180388080613cf0565b613d5e61223f565b9060208151910120613d9a6040805180936020613d8481840197888151938492016105e4565b820190602082015203602081018452018261042d565b51902090565b8091039060c0821261028c5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc060405193613ddc8561037f565b8351855260208401516020860152011261028c5760a090604051613dff816103bc565b604082015181526060820151602082015260808201516040820152604084015201516105dc816102e3565b9073ffffffffffffffffffffffffffffffffffffffff613e576020929594956040855260408501906116b4565b9416910152565b90604051613e6b816103bc565b60406002829480548452600181015460208501520154910152565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182116137b357565b919082039182116137b357565b60405190610140820182811067ffffffffffffffff82111761039b57604052606061012083828152826020820152600080604083015280848301528060808301528060a08301528060c08301528060e08301526101008201520152565b90613f278261112f565b604090613f37604051918261042d565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613f65829561112f565b019160005b838110613f775750505050565b6020908251613f8581610411565b600081528260008183015260008583015260606000818401526000608084015260a0830152828601015201613f6a565b60405190613fc282610411565b606060a08382815282602082015260006040820152600083820152600060808201520152565b8054821015612e335760005260206000209060011b0190600090565b9081549060005b82811061403b57505080614020575050600090565b60019161402f61403592613e86565b90613fe8565b50015490565b9091808216906001818418811c83018093116137b3578461405c8488613fe8565b5054111561406e575050915b9061400b565b9093925081018091116137b35790614068565b9160209182810192604051948180870193604088019201015b8184106140cf5750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b8051845292820192820161409a565b9091604183019160405193600180860191604287019301015b82821061412e575060418552601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660405250565b80518252602091820191016140f7565b929082156141b3578281019260405194601f82169283156141aa575b838701938385019201015b81841061419a5750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b8051845260209384019301614165565b6020935061415a565b925090506040516020810181811067ffffffffffffffff82111761039b576040526000815260003681379190565b81016001015190919060fe81166141fc5760ff169160010190565b60249060ff604051917ff7a37b07000000000000000000000000000000000000000000000000000000008352166004820152fd5b5181810361423c575050565b6040517fc37906a000000000000000000000000000000000000000000000000000000000815260048101919091526024810191909152604490fd5b73ffffffffffffffffffffffffffffffffffffffff60005416330361429857565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b9061ffff61432092168060005260026020526040600020907fcb4fd51bf3a0766e39ffe0f81893291c14a84be4b8da0d352df1fee57f19609f604061430d4285614004565b8151908152856020820152a24290614852565b5050565b60e090610891939281526001602082015260806040820152603260808201527f726f6c6c65642d757020766f74652066726f6d20676f7665726e616e6365207360a08201527f706f6b6520746f6b656e20686f6c64657273000000000000000000000000000060c08201528160608201520190610607565b916000906143aa8351614777565b6020840160206144a76143bd8351614777565b61444e60408901956144226143d28851614777565b6040519485938885019190926030937fffffffffffffffffffffffffffffffff000000000000000000000000000000009283809260801b16855260801b16601084015260801b1660208201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261042d565b614470611bb360015473ffffffffffffffffffffffffffffffffffffffff1690565b906040519788809481937f5f398a140000000000000000000000000000000000000000000000000000000083528d60048401614324565b03925af1918215611dd7577f6afc719c5986033c8ee04237de6ef98d6eacf19eb6daa60939de50d0618ce95f9561ffff9561450d94614512575b505191519051916040519586951697859094939260609260808301968352602083015260408201520152565b0390a2565b61452a9060203d60201161345257613442818361042d565b50386144e1565b60ff8216600081815260046020908152604080832054815173ffffffffffffffffffffffffffffffffffffffff9182168152868216818501529294909290917f605377a362d179f8f97f433900dc88f457846f29a6a43430b454a11f4995c38591a2831692831561473457604051928084019281817f01ffc9a70000000000000000000000000000000000000000000000000000000096878752876024820152602481526145de816103bc565b51617530968688fa933d82519086614729575b508561471f575b50846146a6575b5050509080925091614696575b501561466c5761462c61047b9260ff166000526004602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60046040517fd62f4a27000000000000000000000000000000000000000000000000000000008152fd5b6146a0915061491a565b3861460c565b829450839582946040518581019283527fffffffff000000000000000000000000000000000000000000000000000000006024820152602481526146e9816103bc565b5192fa913d91519183614714575b50508161470a575b5015813880806145ff565b90501515386146ff565b1015915038806146f7565b15159450386145f8565b8411159550386145f1565b5050505061474f9060ff166000526004602052604060002090565b7fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b6fffffffffffffffffffffffffffffffff90818111614794571690565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252608060048301526024820152fd5b80546801000000000000000081101561039b576147ee91600182018155613fe8565b919091614805576020816001925184550151910155565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b90604051614841816103a0565b602060018294805484520154910152565b80549293929182156148f85761487961487361486d85613e86565b84613fe8565b50614834565b91818351116148ce576020938287938551146000146148ac575060019161402f6148a292613e86565b5001555b01519190565b9190506148c992506148bc61047d565b91825286858301526147cc565b6148a6565b60046040517f2520601d000000000000000000000000000000000000000000000000000000008152fd5b90614914925061490661047d565b9182528460208301526147cc565b60009190565b6000602091604051838101907f01ffc9a70000000000000000000000000000000000000000000000000000000082527fda841d390000000000000000000000000000000000000000000000000000000060248201526024815261497c816103bc565b5191617530fa6000513d8261499d575b5081614996575090565b9050151590565b6020111591503861498c56fea26469706673582212205052f05d25c70459980366ab3d3f5ecb678bfba96d7334659a0ef10859332a5664736f6c6343000817003360c034620000b557601f62003c6238819003918201601f19168301916001600160401b03831184841017620000ba578084926040948552833981010312620000b5576200005a60206200005283620000d0565b9201620000d0565b6001600160a01b039182168015620000a3576080521660a052604051613b7c9081620000e682396080518181816113070152612fb4015260a05181818161053601526126bc0152f35b604051638ef9698f60e01b8152600490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620000b55756fe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146127325750806316476dcc146126e057806318d13fd1146126715780632b2077ad14611fdb5780632b7e1cd814611fa15780632df2f97814611d415780633896fc1214611d2a57806345ee36c514611ce057806347bdbbcf14611c555780634d63d4731461013d5780634f098c0a14611b3a578063571354e2146114ba57806371b632c81461145b57806378cc40301461132b57806384acd1bb146112bc5780638a8f286814611282578063a0f419fa14611248578063a8024ef1146111e7578063bda269f214610dd5578063c008e15614610d87578063c895dec614610896578063da841d39146102a9578063dc37e93e146101bb578063e0b54d3014610181578063e6a3c0e8146101425763ffa1ad741461013d57600080fd5b612dcb565b3461017c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57602060405160058152f35b600080fd5b3461017c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57602060405160048152f35b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5767ffffffffffffffff60043581811161017c5761020e61021391369060040161299e565b61366a565b6102a56040519283926020845260a0610238825160c0602088015260e0870190612a3d565b916102736020820151937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe094858983030160408a0152612a3d565b9380604083015116606088015260608201511660808701526080810151828701520151908483030160c0850152612a80565b0390f35b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5760043567ffffffffffffffff811161017c576102f890369060040161299e565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361017c57600060606040516103298161284f565b82815282602082015260405161033e81612887565b8381528360208201528360408201526040820152015261035d8161366a565b9060a0820151516001810361086557507f544ffc9c000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000600460206103c060a0870151612eb3565b510151015160e01b160361083b57602082018051516009810361080357507f66696e616c697a656400000000000000000000000000000000000000000000009051602081519101517fffffffffffffffffff000000000000000000000000000000000000000000000091818380931691600981106107ed575b5050905016036107aa57604061045260a0840151612eb3565b51015151608081036107725750604061046e60a0840151612eb3565b51015160808180518101031261017c5773ffffffffffffffffffffffffffffffffffffffff91602082015193604083015190602060806060860151950151976024604051809881937f2d63f6930000000000000000000000000000000000000000000000000000000083528b6004840152165afa9485156107325760009561073e575b5082516040517f2ac96ea100000000000000000000000000000000000000000000000000000000815261ffff91821660048201526024810196909652946020816044817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff165afa90811561073257600091610700575b50801591821561067f575b505061065557838260c09782604095511685516105ea816105be8c6020830195866020909392919361ffff60408201951681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826128bf565b519020958551946105fa86612887565b8552602085015284840152511692606083516106158161284f565b87815260208101928352848101938452019384528251958652516020860152518051828601526020810151606086015201516080840152511660a0820152f35b60046040517fa710429d000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff91925060a06106a4910151612eb3565b515116908060a01c6106cf5773ffffffffffffffffffffffffffffffffffffffff1614158780610587565b602490604051907f33b960d00000000000000000000000000000000000000000000000000000000082526004820152fd5b90506020813d60201161072a575b8161071b602093836128bf565b8101031261017c57518861057c565b3d915061070e565b6040513d6000823e3d90fd5b9094506020813d60201161076a575b8161075a602093836128bf565b8101031261017c575193876104f1565b3d915061074d565b604490604051907fab8b67c6000000000000000000000000000000000000000000000000000000008252600482015260806024820152fd5b6107e982516040519182917f0d18869e000000000000000000000000000000000000000000000000000000008352602060048401526024830190612a3d565b0390fd5b8391925060090360031b1b161681908780610439565b604490604051907fab8b67c6000000000000000000000000000000000000000000000000000000008252600482015260096024820152fd5b60046040517f8076dd8a000000000000000000000000000000000000000000000000000000008152fd5b602490604051907f79c5a4f00000000000000000000000000000000000000000000000000000000082526004820152fd5b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5760043567ffffffffffffffff811161017c576108e590369060040161299e565b6108ed612e64565b9060ff60208201511660048103610d4f5750610918604082015163ffffffff6004820151169061387d565b9190835267ffffffffffffffff600883604084015101015116602084015267ffffffffffffffff601083604084015101015116604084015267ffffffffffffffff6018836040840151010151166060840152601980836040840151010151920167ffffffffffffffff60086060840151015116608085015267ffffffffffffffff6010606084015101511660a085015260306060830151015160c08501526031606083015101519260319360ff808316911603610d25576109db60ff8216612b39565b6109e860405191826128bf565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610a1b60ff8416612b39565b0160005b818110610ce457505060e08601526000905b60ff81168210610bdd5785610a5886606087610a51886040830151613b02565b0151613b02565b60405180916020825260e0610a7b82516101006020860152610120850190612a3d565b9167ffffffffffffffff602082015116604085015267ffffffffffffffff604082015116606085015267ffffffffffffffff606082015116608085015267ffffffffffffffff60808201511660a085015267ffffffffffffffff60a08201511660c085015260c0810151828501520151907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083820301610100840152815180825260208201916020808360051b8301019401926000915b838310610b3f5786860387f35b919395509193602080610bcb837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0866001960301875260c060a08b518051845267ffffffffffffffff86820151168685015267ffffffffffffffff6040820151166040850152606081015115156060850152608081015160808501520151918160a08201520190612a3d565b97019301930190928695949293610b32565b909382604085015101602001518560e088015190610bfa91612eef565b5193602001935280606085015101600801518560e088015190610c1c91612eef565b516020019067ffffffffffffffff16905280606085015101601001518560e088015190610c4891612eef565b516040019067ffffffffffffffff169052601001606084015190610c6b91613ab3565b908560e088015190610c7c91612eef565b51606001901515905280606085015101602001518560e088015190610ca091612eef565b5160800152606084015190602480828401015163ffffffff169101610cc492613a21565b94908160e088015190610cd691612eef565b5160a0015260010190610a31565b602090604051610cf38161286b565b60008152600083820152600060408201526000606082015260006080820152606060a082015282828601015201610a1f565b60046040517f5e7bd6ec000000000000000000000000000000000000000000000000000000008152fd5b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260046024820152fd5b3461017c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c576102a5610dc1612e05565b604051918291602083526020830190612a3d565b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5760043567ffffffffffffffff811161017c57610e2490369060040161299e565b604051610140810181811067ffffffffffffffff8211176111b8576040526060815260606020820152600060408201526000606082015260006080820152600060a0820152600060c0820152600060e08201526000610100820152606061012082015260ff60208301511660028103611180575067ffffffffffffffff600860408401510151166040820152610eea610ecc604084015163ffffffff600c8201511690613913565b9083526040840151600463ffffffff81848401015116920190613a21565b92906020830152600180846040840151010151930167ffffffffffffffff60086060840151015116606084015260286060830151015160c084015267ffffffffffffffff60306060840151015116608084015267ffffffffffffffff6038606084015101511660a084015260586060830151015160e084015267ffffffffffffffff6060808401510151166101008401526061606083015101519360619460ff808316911603610d2557610fa060ff8216612f03565b6101208501526000905b60ff811682106110d5576102a585610fcd88606088610a51896040830151613b02565b60405191829160208352610120611029610ff583516101406020880152610160870190612a3d565b60208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0878303016040880152612a3d565b9167ffffffffffffffff604082015116606086015267ffffffffffffffff606082015116608086015267ffffffffffffffff60808201511660a086015267ffffffffffffffff60a08201511660c086015260c081015160e086015260e081015161010086015267ffffffffffffffff610100820151168286015201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610140850152612a80565b90949160016111616111308373ffffffffffffffffffffffffffffffffffffffff601460ff9660408b0151010151166111138b6101208c0151612eef565b51526040880151601863ffffffff81848401015116920190613a21565b959060206111438b6101208c0151612eef565b5101526060870151600463ffffffff81848401015116920190613a21565b97906040611174836101208b0151612eef565b51015201919050610faa565b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260026024820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5760043567ffffffffffffffff811161017c5761124061123b6020923690600401612957565b613620565b604051908152f35b3461017c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57602060405160038152f35b3461017c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57602060405160068152f35b3461017c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5760043561ffff9081811680910361017c576024359067ffffffffffffffff821161017c573660238301121561017c57816004013561139781612b39565b926113a560405194856128bf565b8184526020916024602086019160051b8301019136831161017c57602401905b828210611444575050505060009282519260005b848110611417575b5050505050156113ed57005b60046040517f7a47c9a2000000000000000000000000000000000000000000000000000000008152fd5b826114228284612eef565b51168414611432576001016113d9565b505050505050600181808080806113e1565b83809161145084612900565b8152019101906113c5565b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5760043567ffffffffffffffff811161017c576114ac6020913690600401612957565b818151910120604051908152f35b3461017c576114c836612b51565b6114fd604051916114d883612833565b6000835260006020840152600060408401526060808401526060608084015283612f9b565b600160ff818401511680835203611b105760038201519161ffff6003931680602084015215600014611aad5760405192600184016001828401015b604286018210611a9d5750907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6041938488520116604052019260608301525b60048382010151906005848201015160ff80855116911603611a735763ffffffff60098583010151166040840152600a848201015191600a850160ff841615611a4957600463ffffffff83168701016004870111611a1a57600563ffffffff831687018481018201519101949060ff8083169116036119f0576115ff60ff8216612b39565b61160c60405191826128bf565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061163f60ff8416612b39565b0160005b8181106119be57505060808701526000905b60ff811682106117eb57505080600463ffffffff8416880101036117a9578461167e8585613b02565b60405180916020825260ff815116602083015261ffff602082015116604083015263ffffffff604082015116606083015260806116c9606083015160a08386015260c0850190612a3d565b910151907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08382030160a0840152815180825260208201916020808360051b8301019401926000915b83831061171f5786860387f35b919395509193602080611797837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0866001960301875289519061ffff825116815260ff84830151168482015260606117866040840151608060408501526080840190612a3d565b920151906060818403910152612a3d565b97019301930190928695949293611712565b6044925060048663ffffffff604051947fc37906a000000000000000000000000000000000000000000000000000000000865216010160048301526024820152fd5b91600295919580828701015161ffff6118088960808c0151612eef565b5191169052828601015161ffff806118248960808c0151612eef565b515116911603611994576003818601015160ff60206118478960808c0151612eef565b5101911690526003828601015160ff8060206118678a60808d0151612eef565b5101511691160361196a57600160ff60206118868960808c0151612eef565b5101511610801561194a575b6119045760016118e660809493878a60406118cf8c6118c560ff996007968763ffffffff81848401015116920190613a21565b9b90940151612eef565b51015263ffffffff81838b01015116910188613a21565b979060606118f88360808d0151612eef565b51015201919050611655565b602460ff60206119188960808c0151612eef565b51015116604051907f51ee58530000000000000000000000000000000000000000000000000000000082526004820152fd5b50600660ff602061195f8960808c0151612eef565b510151161015611892565b60046040517f02164961000000000000000000000000000000000000000000000000000000008152fd5b60046040517fa179f8c9000000000000000000000000000000000000000000000000000000008152fd5b6020906040516119cd8161284f565b600081526000838201526060604082015260608082015282828601015201611643565b60046040517f84ae4a30000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fbb6b170d000000000000000000000000000000000000000000000000000000008152fd5b60046040517f714f5513000000000000000000000000000000000000000000000000000000008152fd5b8051825260209182019101611538565b604051925060208301602382015b604085018210611b005750601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe091602086520116604052602392606083015261157a565b8051825260209182019101611abb565b60046040517f1d9617a0000000000000000000000000000000000000000000000000000000008152fd5b3461017c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5767ffffffffffffffff60043581811161017c573660238201121561017c578060040135602491611b9882612b39565b92611ba660405194856128bf565b8284526020926024602086019160051b8401019236841161017c5760248101915b848310611c2f57878760243582811161017c57611be8903690600401612cda565b9160443590811161017c57611c01903690600401612d42565b9080519160005b838110611c1157005b80611c298387611c2360019588612eef565b5161352d565b01611c08565b823588811161017c578691611c4a8392873691870101612c74565b815201920191611bc7565b3461017c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5767ffffffffffffffff60043581811161017c57611ca5903690600401612c74565b60243582811161017c57611cbd903690600401612cda565b60443592831161017c57611cd8611cde933690600401612d42565b9161352d565b005b3461017c5767ffffffffffffffff611cf7366127ee565b911610611d0057005b60046040517fb10b0aec000000000000000000000000000000000000000000000000000000008152fd5b3461017c57611cde611d3b36612b51565b90612f9b565b3461017c576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5767ffffffffffffffff9060043582811161017c57611d9390369060040161299e565b60405191611da083612833565b606083528083019360008552604084016000815260608501926000845260808601946060865260ff82820151169060019160018103611f6957506040810190815191611df863ffffffff93846004820151169061387d565b94908b5260ff606060018088865101015197019401948d8a6008885101511690526028865101518b528960308751015116895260318651015182603198169283911603610d25579190611e4a81612f03565b8c526000925b818410611ede575050505093611e8160a09b989694889694611e7b611e99956102a59d9b9751613b02565b51613b02565b6040519a8b9a828c5251918b015260c08a0190612a3d565b955116604088015251166060860152516080850152517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a0850152612a80565b9091838d6040611f5d611f5485989c611f318f9c73ffffffffffffffffffffffffffffffffffffffff6014828f5101015116611f1b898951612eef565b51528c5160188b81848401015116920190613a21565b9c611f3d888851612eef565b5101528c5160048981848401015116920190613a21565b9c909351612eef565b51015201929190611e50565b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260016024820152fd5b3461017c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57602060405160028152f35b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5760043567ffffffffffffffff811161017c5761202a90369060040161299e565b612032612e64565b60ff60208301511660058103612639575061205c604083015163ffffffff6004820151169061387d565b90825267ffffffffffffffff600882604086015101015116602083015267ffffffffffffffff601082604086015101015116604083015267ffffffffffffffff601882604086015101015116606083015260198082604086015101015191019267ffffffffffffffff60086060830151015116608084015267ffffffffffffffff6010606083015101511660a084015260306060820151015160c08401526031606082015101519160319260ff808316911603610d255761211f60ff8216612b39565b61212c60405191826128bf565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061215f60ff8416612b39565b0160005b8181106125c757505060e08501526000905b60ff811682106123b5578461219585606086610a518b6040830151613b02565b60405180916020825260e06121b882516101006020860152610120850190612a3d565b9167ffffffffffffffff602082015116604085015267ffffffffffffffff604082015116606085015267ffffffffffffffff606082015116608085015267ffffffffffffffff60808201511660a085015267ffffffffffffffff60a08201511660c085015260c0810151828501520151907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083820301610100840152815180825260208201916020808360051b8301019401926000915b83831061227c5786860387f35b9193955091937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820301835285519061012081018251825260208301519061012060208401528151809152610140906020828501928260051b86010193019160005b82811061236e57505050508260209261010060ff816123558796604060019a0151604087015267ffffffffffffffff606088015116606087015267ffffffffffffffff608088015116608087015260a0870151151560a087015260c087015160c087015260e087015186820360e0880152612a3d565b940151169101529701930193019092869594929361226f565b909192936020806123a9837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec08a600196030187528851612a3d565b960194930191016122df565b909260208660408501510101516123d08560e0880151612eef565b51526021808760408601510101519601956123ed60ff8216612b39565b6123fa60405191826128bf565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061242d60ff8416612b39565b0160005b8181106125b6575050602061244a8760e08a0151612eef565b51015260005b60ff8216811061256e57505060016125516125006031848967ffffffffffffffff60806124ef8c60e087878f8060ff9f604061249c888860208f95606080990151010151940151612eef565b5101528f8a906101006124bc898960218989890151010151950151612eef565b5101911690528989836124dc898960298985890151010151950151612eef565b5101911690520151010151950151612eef565b510191169052016060870151613ab3565b9060a06125118960e08c0151612eef565b51019015159052602081606088015101015160c06125338960e08c0151612eef565b5101526060860151602463ffffffff81848401015116920190613a21565b959060e061256283828b0151612eef565b51015201919050612175565b80876125af60019360206125a78b61259d60e09f60408e0151600463ffffffff81848401015116920190613a21565b9f90960151612eef565b510151612eef565b5201612450565b806060602080938601015201612431565b604051908161012081011067ffffffffffffffff610120840111176111b857816101206020930160405260008152606083820152600060408201526000606082015260006080820152600060a0820152600060c0820152606060e0820152600061010082015282828601015201612163565b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260056024820152fd5b3461017c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461017c576126ee366127ee565b90620f424067ffffffffffffffff80921604161061270857005b60046040517f3a04ceca000000000000000000000000000000000000000000000000000000008152fd5b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361017c57817fda841d3900000000000000000000000000000000000000000000000000000000602093149081156127c4575b5015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014836127bd565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc604091011261017c5760043567ffffffffffffffff8116810361017c579060243590565b60a0810190811067ffffffffffffffff8211176111b857604052565b6080810190811067ffffffffffffffff8211176111b857604052565b60c0810190811067ffffffffffffffff8211176111b857604052565b6060810190811067ffffffffffffffff8211176111b857604052565b6020810190811067ffffffffffffffff8211176111b857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176111b857604052565b359061ffff8216820361017c57565b359060ff8216820361017c57565b67ffffffffffffffff81116111b857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561017c5780359061296e8261291d565b9261297c60405194856128bf565b8284526020838301011161017c57816000926020809301838601378301015290565b919060808382031261017c57604051906129b78261284f565b81936129c281612900565b83526129d06020820161290f565b602084015267ffffffffffffffff91604082013583811161017c57816129f7918401612957565b6040850152606082013592831161017c57606092612a159201612957565b910152565b60005b838110612a2d5750506000910152565b8181015183820152602001612a1d565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612a7981518092818752878088019101612a1a565b0116010190565b908082519081815260208091019281808460051b8301019501936000915b848310612aae5750505050505090565b9091929394958480612b29837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528a51612b16606073ffffffffffffffffffffffffffffffffffffffff835116845285830151908087860152840190612a3d565b9160408092015191818403910152612a3d565b9801930193019194939290612a9e565b67ffffffffffffffff81116111b85760051b60200190565b9060409160407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261017c5767ffffffffffffffff9260043584811161017c5782612ba091600401612957565b9360243590811161017c578260238201121561017c57806004013592612bc584612b39565b93612bd360405195866128bf565b8085526020916024602087019260071b8501019381851161017c57602401915b848310612c035750505050505090565b60808383031261017c57836080918751612c1c8161284f565b853581528286013583820152612c3389870161290f565b898201526060612c4481880161290f565b90820152815201920191612bf3565b359073ffffffffffffffffffffffffffffffffffffffff8216820361017c57565b919060608382031261017c5760405190612c8d82612887565b8193612c9881612c53565b835267ffffffffffffffff91602082013583811161017c5781612cbc918401612957565b6020850152604082013592831161017c57604092612a159201612957565b9080601f8301121561017c576020908235612cf481612b39565b93612d0260405195866128bf565b81855260208086019260051b82010192831161017c57602001905b828210612d2b575050505090565b838091612d3784612c53565b815201910190612d1d565b9080601f8301121561017c576020908235612d5c81612b39565b93612d6a60405195866128bf565b81855260208086019260051b82010192831161017c57602001905b828210612d93575050505090565b81357fffffffff000000000000000000000000000000000000000000000000000000008116810361017c578152908301908301612d85565b3461017c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57602060405160018152f35b60405190612e1282612887565b602382527f30307c00000000000000000000000000000000000000000000000000000000006040837f71756572795f726573706f6e73655f303030303030303030303030303030303060208201520152565b60405190610100820182811067ffffffffffffffff8211176111b857604052606060e083828152600080602083015280604083015280848301528060808301528060a083015260c08201520152565b805115612ec05760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051821015612ec05760209160051b010190565b90612f0d82612b39565b604090612f1d60405191826128bf565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612f4b8295612b39565b019160009160005b848110612f61575050505050565b6020908351612f6f81612887565b85815260608390808284015286830152828501015201612f53565b519063ffffffff8216820361017c57565b73ffffffffffffffffffffffffffffffffffffffff90817f0000000000000000000000000000000000000000000000000000000000000000166040908151937f1cfe795100000000000000000000000000000000000000000000000000000000855260209560049587818881875afa908115613522576000916134ed575b508451957ff951975a00000000000000000000000000000000000000000000000000000000875263ffffffff80921688880152600087602481885afa9687156134e2576000976133c6575b5061306e90613620565b958051511561336a578251815151908751917ff8ce560a0000000000000000000000000000000000000000000000000000000083528a8301528a826024818a5afa91821561335f57600092613330575b50106132d4579592909188949286519788957fa0cce1b300000000000000000000000000000000000000000000000000000000875260648701908b88015260609060606024890152845180915288608489019501916000905b82821061329657505050508583037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152805188845280518985018190526060850195918901916000905b82821061327857505050509186869492600098869501511691015203915afa91821561326d5760009081936131db575b50156131a25750505050565b906107e991519384937f08c379a00000000000000000000000000000000000000000000000000000000085528401526024830190612a3d565b9092503d8084833e6131ed81836128bf565b810192828285031261326257815191821515830361326557868101519067ffffffffffffffff8211613269570184601f82011215613265578051916132318361291d565b9561323e865197886128bf565b83875288848401011161326257509061325c91878087019101612a1a565b38613196565b80fd5b5080fd5b8280fd5b50513d6000823e3d90fd5b8351811688528e9a8d9a509788019790930192600190910190613166565b835180518852808c0151888d0152808d015160ff9081168e8a01529082015116878201528e9a8d9a5060809097019690930192600190910190613117565b6064888a8851917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600960248201527f6e6f2071756f72756d00000000000000000000000000000000000000000000006044820152fd5b9091508a81813d8311613358575b61334881836128bf565b8101031261017c575190386130be565b503d61333e565b88513d6000823e3d90fd5b6064888a8851917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601460248201527f696e76616c696420677561726469616e207365740000000000000000000000006044820152fd5b90963d8082843e6133d781846128bf565b82018a8382031261326557825167ffffffffffffffff938482116134de570191888383031261326257885193898501858110828211176134b2578a5283519081116132655783019082601f8301121561326257908c929181519161343a83612b39565b946134478d5196876128bf565b8386528086019360051b82010193841161326557908e80969594939201915b83831061348e57505050509161348391849361306e955201612f8a565b8a8201529690613064565b9091809394959650518a811681036132695781528e95949392860191908601613466565b60248360418f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8380fd5b86513d6000823e3d90fd5b90508781813d831161351b575b61350481836128bf565b8101031261017c5761351590612f8a565b38613019565b503d6134fa565b85513d6000823e3d90fd5b9091825180156000146136195760015b908251156000146136125760015b9460005b8281106135d1575b505050156106555780519160005b838110613578575b505050501561083b57565b7fffffffff000000000000000000000000000000000000000000000000000000008060046020850151015160e01b16906135b28386612eef565b5116146135c157600101613565565b505050505060013880808061356d565b73ffffffffffffffffffffffffffffffffffffffff80875116906135f58385612eef565b5116146136045760010161354f565b505050506001388080613557565b600061354b565b600061353d565b613628612e05565b9060208151910120613664604080518093602061364e8184019788815193849201612a1a565b82019060208201520360208101845201826128bf565b51902090565b9060409081519161367a8361286b565b60608352602093602084019060608252828501916000908184526060870196828852608081019583875260a082019160608352809960ff6020880151166003810361384657509060ff9392918288019687519160086136ff63ffffffff956136ea600496888882015116906139a9565b91528b51868881848401015116920190613a21565b9d908e9a5260606001808d519c819d0101519f019c019c8d67ffffffffffffffff93849151015116905260288d510151905260308c51015116905260318a5101518660319c16968791160361381e57613761869594939297969e98999e612f03565b8452955b848710613786575050505050505050613784939495611e7b9151613b02565b565b90919293946137fd879b899f988b9a6137dd8b73ffffffffffffffffffffffffffffffffffffffff6137e79f889e60149151010151166137c7858d51612eef565b51528d5160188a81848401015116920190613a21565b9d90928a51612eef565b5101528b51848681848401015116920190613a21565b9b908561380b838951612eef565b510152989d979801959493929190613765565b5082517f5e7bd6ec000000000000000000000000000000000000000000000000000000008152fd5b6044908451907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260036024820152fd5b909182156138f557826004019160405193601f81169182156138ec575b6004838701938385019201015b8184106138dc5750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b80518452602093840193016138a7565b6020925061389a565b915050604051613904816128a3565b60008152600036813790600490565b9091821561398b5782600c019160405193601f8116918215613982575b600c838701938385019201015b8184106139725750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b805184526020938401930161393d565b60209250613930565b91505060405161399a816128a3565b60008152600036813790600c90565b909182156138f557826004019160405193601f8116918215613a18575b6004838701938385019201015b818410613a085750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b80518452602093840193016139d3565b602092506139c6565b92908215613a96578281019260405194601f8216928315613a8d575b838701938385019201015b818410613a7d5750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b8051845260209384019301613a48565b60209350613a3d565b92509050604051613aa6816128a3565b6000815260003681379190565b81016001015190919060fe8116613ace5760ff169160010190565b60249060ff604051917ff7a37b07000000000000000000000000000000000000000000000000000000008352166004820152fd5b5190808203613b0f575050565b60449250604051917fc37906a000000000000000000000000000000000000000000000000000000000835260048301526024820152fdfea26469706673582212204860d02044242d0d683f869a1f54ce4a9da7cf4df9f86614304c5fc49a403c2a64736f6c634300081700332e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa0' as const; diff --git a/integration-tests/artifacts/SpokeMessageExecutor.ts b/integration-tests/artifacts/SpokeMessageExecutor.ts new file mode 100644 index 00000000..44b16732 --- /dev/null +++ b/integration-tests/artifacts/SpokeMessageExecutor.ts @@ -0,0 +1,2 @@ +export const SpokeMessageExecutorBytecode = + '0x60c034610118576001600160401b0390601f61241038819003918201601f19168301918483118484101761011d5780849260209460405283398101031261011857516001600160a01b0381168103610118573060805260a0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166101065780808316036100c1575b6040516122dc9081610134823960805181818161107f015261116b015260a051818181610e2801526114cb0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610092565b60405163f92ee8a960e01b8152600490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80632842f7e5146117df5780632cdf9ed7146113dd5780634f1ef286146110f957806352d1902d1461103957806383d9a8da14610fde578063861b0f1914610f6b578063929f584014610f0c578063ad3cb1cc14610e4c578063c1b8411a14610ddd578063e65e979c14610cec578063ebc3b1ba14610c80578063f648869b14610c1e578063f78a8a3e14610bad5763f953cec7146100b757600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa5760043567ffffffffffffffff8111610ba65761010461016391369060040161191a565b827f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a62778149015491604051809481927fc0fd8bde000000000000000000000000000000000000000000000000000000008352602060048401526024830190611989565b038173ffffffffffffffffffffffffffffffffffffffff8560201c165afa8015610b9b578392849085926108cd575b501561088b575061014082015183527f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a627781490360205260ff6040842054166108615760808201517f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a6277814900541480159061084c575b6108225760e0820151805181019160a08284031261081e5760208201519261022b604084016119cc565b9160608401519367ffffffffffffffff851161081a5760208301603f86830101121561081a57602085820101519461026286611a4e565b956102706040519788611870565b808752602087019081926020870160408360051b8388010101116107c95791604083860101925b60408360051b828801010184106107e6575050505060808201519267ffffffffffffffff84116106b65760208501603f8585010112156106b65760208484010151956102e287611a4e565b966102f06040519889611870565b8088526020880180966020890160408460051b838a010101116107e25790604082880101915b60408460051b828a01010183106107cd575050505060a084015167ffffffffffffffff81116107c95760208701603f8287010112156107c9576020818601015161035f81611a4e565b9561036d6040519788611870565b818752602087019283996020810160408560051b8486010101116107c557604082840101945b60408560051b84860101018610610787575050505050508751875180821480159061077c575b61073d57505061ffff8091169160101c16036106ba5761014088015189527f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a62778149036020526040892060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff7f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a6277814902541694853b156106b657959391899593916040519788967ff99336e50000000000000000000000000000000000000000000000000000000088526064880190606060048a015251809152608488019290895b818110610684575050506020907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8884030160248901525191828152019290875b818110610668575050507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85830301604486015251808252602082019160208260051b820101939287915b838310610617575050505050828091039134905af1801561060c576105a3575b5081606091608061ffff847f8fb074e448fa8d98c2c64604a9ab88e4d6f5803b0b778e5589651d1f2f231c5d9601511692015160405192835260208301526040820152a180f35b67ffffffffffffffff81949294116105df57604052917f8fb074e448fa8d98c2c64604a9ab88e4d6f5803b0b778e5589651d1f2f231c5d61055c565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6040513d86823e3d90fd5b9295975092955092602080610656837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528951611989565b9701930193018795938b97959261053c565b825185528c9850899750602094850194909201916001016104f1565b825173ffffffffffffffffffffffffffffffffffffffff1685528e9a508b9950602094850194909201916001016104b0565b8980fd5b60846040517f47640695000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4d657373616765206973206e6f74206d65616e7420666f72207468697320636860448201527f61696e2e000000000000000000000000000000000000000000000000000000006064820152fd5b60649250855190604051927fa82635fa000000000000000000000000000000000000000000000000000000008452600484015260248301526044820152fd5b5085518214156103b9565b85519067ffffffffffffffff82116107bf57602080916107b26040948584880191898b010101611a31565b8152019601959050610393565b50508f80fd5b8f80fd5b8b80fd5b60208060409385518152019301929150610316565b8d80fd5b83519173ffffffffffffffffffffffffffffffffffffffff831683036107e257602081604094829352019401939150610297565b8780fd5b8480fd5b60046040517fb14da5b0000000000000000000000000000000000000000000000000000000008152fd5b5061ffff806060840151169082161415610201565b60046040517fed8725a4000000000000000000000000000000000000000000000000000000008152fd5b6108c9906040519182917f47640695000000000000000000000000000000000000000000000000000000008352602060048401526024830190611989565b0390fd5b935050503d918284823e6108e18382611870565b6060818481010312610b975780519067ffffffffffffffff821161081e5761016091828183018684010312610ac35760405192830183811067ffffffffffffffff821117610b6a576040526109378183016119db565b83526109476020828401016119e9565b602084015261095a6040828401016119e9565b604084015261096d6060828401016119cc565b60608401528181016080818101519085015260a0015167ffffffffffffffff81168103610abf5760a08401526109a760c0828401016119db565b60c084015260e0818301015167ffffffffffffffff8111610abf576109d3908684019083850101611a31565b60e08401526101006109e881838501016119e9565b90840152610120818301015167ffffffffffffffff8111610abf5781830101858301601f82011215610abf57805190610a2082611a4e565b91610a2e6040519384611870565b808352602083019188860160208360071b830101116106b65760208101925b60208360071b8301018410610ac75750505050610120840152610140809183010151908301526020810151938415158503610ac357604082015167ffffffffffffffff8111610abf57820190808301601f83011215610abf57610ab79201906020815191016119fa565b909238610192565b8680fd5b8580fd5b6080848b89010312610b665760405180608081011067ffffffffffffffff608083011117610b39576020809392826080809401604052875181528288015183820152610b15604089016119db565b6040820152610b26606089016119db565b6060820152815201940193909150610a4d565b60248c7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8a80fd5b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8380fd5b6040513d85823e3d90fd5b5080fd5b80fd5b5034610baa57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa57602073ffffffffffffffffffffffffffffffffffffffff7f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a62778149025416604051908152f35b5034610baa57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa57602061ffff7f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a62778149015460101c16604051908152f35b5034610baa5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa5760ff604060209260043581527f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a627781490384522054166040519015158152f35b5034610baa5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa5760043573ffffffffffffffffffffffffffffffffffffffff8116809103610ba657610d45611a66565b8015610db357610db09073ffffffffffffffffffffffffffffffffffffffff7f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a627781490291167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b80f35b60046040517fa4f515aa000000000000000000000000000000000000000000000000000000008152fd5b5034610baa57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610baa57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa576040516040810181811067ffffffffffffffff821117610edf57610edb9250604052600581527f352e302e300000000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190611989565b0390f35b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b5034610baa57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa57602061ffff7f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a62778149015416604051908152f35b5034610baa57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa5760207f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a62778149015473ffffffffffffffffffffffffffffffffffffffff60405191831c168152f35b5034610baa57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa5760207f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a627781490054604051908152f35b5034610baa57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036110cf5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60046040517fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa5760043573ffffffffffffffffffffffffffffffffffffffff80821691828103610b975760243567ffffffffffffffff811161081e5761116790369060040161191a565b91807f0000000000000000000000000000000000000000000000000000000000000000168030149182156113af575b50506110cf576111a4611a66565b604051907f52d1902d0000000000000000000000000000000000000000000000000000000082526020918281600481885afa869181611380575b5061121457602485604051907f4c9c8ce30000000000000000000000000000000000000000000000000000000082526004820152fd5b9385947f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9081810361134f5750823b1561131e5780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168217905560405185917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a28451156112e857508084846112db96519101845af4903d156112df573d6112bf816118e0565b906112cd6040519283611870565b81528581943d92013e611ad0565b5080f35b60609250611ad0565b9350505050346112f6575080f35b807fb398979f0000000000000000000000000000000000000000000000000000000060049252fd5b602482604051907f4c9c8ce30000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907faa1d49a40000000000000000000000000000000000000000000000000000000082526004820152fd5b9091508381813d83116113a8575b6113988183611870565b81010312610abf575190386111de565b503d61138e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141590503880611196565b5034610baa5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa5760243561ffff8116809103610ba6576044359073ffffffffffffffffffffffffffffffffffffffff80831680840361081e577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009384549160ff8360401c16159367ffffffffffffffff93848116801590816117d7575b60011490816117cd575b1590816117c4575b50611765578560017fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000831617895561178f575b507f0000000000000000000000000000000000000000000000000000000000000000163303611765576004357f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a6277814900557f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a627781490191825491867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000084161784556040519687917f9a8a059200000000000000000000000000000000000000000000000000000000835282600460209a8b935afa91821561175a578a926116e4575b507fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffffffffffffffffffffffffffffffffffff0000000063ffff000093948a1b169416179160101b1617179055604051906107368083019183831090831117610b6a5784918391611b71833930815203019085f0801561060c576116869073ffffffffffffffffffffffffffffffffffffffff7f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a627781490291167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b61168e578280f35b817fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2935416905560405160018152a138808280f35b91508782813d8311611753575b6116fb8183611870565b810103126106b6577fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffffffffffffffffffffffffffffffffffff0000000061174b63ffff0000946119cc565b9350506115a3565b503d6116f1565b6040513d8c823e3d90fd5b60046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001178755386114c8565b90501538611495565b303b15915061148d565b879150611483565b5034610baa5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610baa5760043561181a611a66565b7f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a62778149007faee332a411e5c1df61109986b4894b79d1b2ad9827ac556e3f28da255354b091604082548151908152846020820152a15580f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176118b157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff81116118b157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561196157803590611931826118e0565b9261193f6040519485611870565b8284526020838301011161196157816000926020809301838601378301015290565b600080fd5b60005b8381106119795750506000910152565b8181015183820152602001611969565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936119c581518092818752878088019101611966565b0116010190565b519061ffff8216820361196157565b519060ff8216820361196157565b519063ffffffff8216820361196157565b90929192611a07816118e0565b91611a156040519384611870565b829482845282820111611961576020611a2f930190611966565b565b9080601f83011215611961578151611a4b926020016119fa565b90565b67ffffffffffffffff81116118b15760051b60200190565b73ffffffffffffffffffffffffffffffffffffffff7f9cd702a23e48a2c7d64fcb36b1c29497b466db76f16bb425b36f7a627781490254163303611aa657565b60046040517f48f5c3ed000000000000000000000000000000000000000000000000000000008152fd5b90611b0f5750805115611ae557805190602001fd5b60046040517f1425ea42000000000000000000000000000000000000000000000000000000008152fd5b81511580611b67575b611b20575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b15611b1856fe60a03461007157601f61073638819003918201601f19168301916001600160401b038311848410176100765780849260209460405283398101031261007157516001600160a01b0381168103610071576080526040516106a9908161008d823960805181818161018f01526103030152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60406080815260049081361015610020575b5050361561001e57600080fd5b005b600091823560e01c80638babb23b1461032b578063c1a8510a146102b85763f99336e51461004e5750610011565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b45780359067ffffffffffffffff908183116102b057366023840112156102b05782810135936024916100b06100ab8761053e565b61044f565b9485968087528460208098019160051b830101913683116102ac578501905b8282106102805750505082359380851161027c573660238601121561027c5784820135946100ff6100ab8761053e565b95858888838152019160051b830101913683116102785786899101915b8383106102685750505050604435818111610264573660238201121561026457808301359061014d6100ab8361053e565b95808988858152019360051b8301019336851161026057818301935b8585106102365750505050505073ffffffffffffffffffffffffffffffffffffffff91827f0000000000000000000000000000000000000000000000000000000000000000163303610210575050855b855181101561020c57806102058880856101d56001968c61057c565b51166101e1858a61057c565b51906101ed868a61057c565b51918b83519301915af16101ff610556565b9061062b565b50016101b9565b8680f35b517fcbbc6d12000000000000000000000000000000000000000000000000000000008152fd5b843582811161025c578b9161025183928636918901016104fc565b815201940193610169565b8d80fd5b8b80fd5b8880fd5b823581529181019189910161011c565b8a80fd5b8780fd5b813573ffffffffffffffffffffffffffffffffffffffff811681036102785781529087019087016100cf565b8980fd5b8480fd5b8280fd5b50503461032757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610327576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fd5b5091817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261044c57823573ffffffffffffffffffffffffffffffffffffffff811681036103275760243567ffffffffffffffff81116102b45761039490369086016104fc565b933033036104255750836103bf84928480602094602081519101845af46103b9610556565b916105bf565b825193849260208452825192836020860152825b84811061040f57505050828201840152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101030190f35b81810183015188820188015287955082016103d3565b83517f48f5c3ed000000000000000000000000000000000000000000000000000000008152fd5b80fd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761049357604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161049357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f82011215610539578035906105166100ab836104c2565b928284526020838301011161053957816000926020809301838601378301015290565b600080fd5b67ffffffffffffffff81116104935760051b60200190565b3d15610577573d9061056a6100ab836104c2565b9182523d6000602084013e565b606090565b80518210156105905760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906105ca575061063a565b81511580610622575b6105db575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b156105d3565b909190610638575061063a565b565b80511561064957805190602001fd5b60046040517f1425ea42000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212207579d927a1eb7b64367b745e83546ee88f33d6539b1ad4a72d81f26520144a7b64736f6c63430008170033a264697066735822122045aed2aa737ea0a51762f0a683e6743b544da4395bad4af6f825b5d7daa7bbb564736f6c63430008170033' as const; diff --git a/integration-tests/artifacts/SpokeMetadataCollector.ts b/integration-tests/artifacts/SpokeMetadataCollector.ts new file mode 100644 index 00000000..da276236 --- /dev/null +++ b/integration-tests/artifacts/SpokeMetadataCollector.ts @@ -0,0 +1,2 @@ +export const SpokeMetadataCollectorBytecode = + '0x60e034620000da57601f620038c738819003918201601f19168301916001600160401b03831184841017620000df57808492606094604052833981010312620000da576200004d81620000f5565b9060208101519061ffff82168203620000da5760406200006e9101620000f5565b916001600160a01b03168015620000c85760805260a05260c0526040516137bc90816200010b8239608051818181610d9f015261271f015260a0518181816102b401526112bf015260c051818181610cf601526113930152f35b604051638ef9698f60e01b8152600490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620000da5756fe608080604052600436101561001357600080fd5b60003560e01c90816316476dcc14611ec7575080632b2077ad146118725780632b7e1cd8146118385780632df2f97814611608578063388add7b146112875780633896fc121461127057806345ee36c51461122657806347bdbbcf1461119b5780634d63d473146101485780634f098c0a14611080578063571354e214610f5257806371b632c814610ef357806378cc403014610dc357806384acd1bb14610d545780638a8f286814610d1a578063922f539c14610cab578063a0f419fa14610c71578063a8024ef114610c10578063bda269f21461083f578063c008e156146107f1578063c7f758a814610788578063c895dec6146102d8578063d3da33301461027b578063dc37e93e146101c6578063e0b54d301461018c578063e6a3c0e81461014d5763ffa1ad741461014857600080fd5b612536565b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602060405160058152f35b600080fd5b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602060405160048152f35b34610187576102776101df6101da366120c7565b613322565b604051918291602083526101ff815160c0602086015260e08501906121a3565b60a061023b6020840151927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093848883030160408901526121a3565b92604081015167ffffffffffffffff809116606088015260608201511660808701526080810151828701520151908483030160c08501526121e6565b0390f35b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610187576102e6366120c7565b6102ee6125cf565b9060ff602082015116600481036107505750610319604082015163ffffffff60048201511690613535565b9190835267ffffffffffffffff600883604084015101015116602084015267ffffffffffffffff601083604084015101015116604084015267ffffffffffffffff6018836040840151010151166060840152601980836040840151010151920167ffffffffffffffff60086060840151015116608085015267ffffffffffffffff6010606084015101511660a085015260306060830151015160c08501526031606083015101519260319360ff808316911603610726576103dc60ff821661229f565b6103e96040519182611fe8565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061041c60ff841661229f565b0160005b8181106106e557505060e08601526000905b60ff811682106105de578561045986606087610452886040830151613742565b0151613742565b60405180916020825260e061047c825161010060208601526101208501906121a3565b9167ffffffffffffffff602082015116604085015267ffffffffffffffff604082015116606085015267ffffffffffffffff606082015116608085015267ffffffffffffffff60808201511660a085015267ffffffffffffffff60a08201511660c085015260c0810151828501520151907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083820301610100840152815180825260208201916020808360051b8301019401926000915b8383106105405786860387f35b9193955091936020806105cc837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0866001960301875260c060a08b518051845267ffffffffffffffff86820151168685015267ffffffffffffffff6040820151166040850152606081015115156060850152608081015160808501520151918160a082015201906121a3565b97019301930190928695949293610533565b909382604085015101602001518560e0880151906105fb9161265a565b5193602001935280606085015101600801518560e08801519061061d9161265a565b516020019067ffffffffffffffff16905280606085015101601001518560e0880151906106499161265a565b516040019067ffffffffffffffff16905260100160608401519061066c916136f3565b908560e08801519061067d9161265a565b51606001901515905280606085015101602001518560e0880151906106a19161265a565b5160800152606084015190602480828401015163ffffffff1691016106c592613661565b94908160e0880151906106d79161265a565b5160a0015260010190610432565b6020906040516106f481611f94565b60008152600083820152600060408201526000606082015260006080820152606060a082015282828601015201610420565b60046040517f5e7bd6ec000000000000000000000000000000000000000000000000000000008152fd5b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260046024820152fd5b346101875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101875760006040516107c581611f78565b52600435600052600060205260206040600020604051906107e582611f78565b54809152604051908152f35b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101875761027761082b612570565b6040519182916020835260208301906121a3565b346101875761084d366120c7565b604051610140810181811067ffffffffffffffff821117610be1576040526060815260606020820152600060408201526000606082015260006080820152600060a0820152600060c0820152600060e08201526000610100820152606061012082015260ff60208301511660028103610ba9575067ffffffffffffffff6008604084015101511660408201526109136108f5604084015163ffffffff600c82015116906135cb565b9083526040840151600463ffffffff81848401015116920190613661565b92906020830152600180846040840151010151930167ffffffffffffffff60086060840151015116606084015260286060830151015160c084015267ffffffffffffffff60306060840151015116608084015267ffffffffffffffff6038606084015101511660a084015260586060830151015160e084015267ffffffffffffffff6060808401510151166101008401526061606083015101519360619460ff808316911603610726576109c960ff821661266e565b6101208501526000905b60ff81168210610afe57610277856109f688606088610452896040830151613742565b60405191829160208352610120610a52610a1e835161014060208801526101608701906121a3565b60208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08783030160408801526121a3565b9167ffffffffffffffff604082015116606086015267ffffffffffffffff606082015116608086015267ffffffffffffffff60808201511660a086015267ffffffffffffffff60a08201511660c086015260c081015160e086015260e081015161010086015267ffffffffffffffff610100820151168286015201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016101408501526121e6565b9094916001610b8a610b598373ffffffffffffffffffffffffffffffffffffffff601460ff9660408b015101015116610b3c8b6101208c015161265a565b51526040880151601863ffffffff81848401015116920190613661565b95906020610b6c8b6101208c015161265a565b5101526060870151600463ffffffff81848401015116920190613661565b97906040610b9d836101208b015161265a565b510152019190506109d3565b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260026024820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346101875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101875760043567ffffffffffffffff811161018757610c69610c646020923690600401612080565b6132d8565b604051908152f35b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602060405160038152f35b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602060405160068152f35b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101875760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101875760043561ffff90818116809103610187576024359067ffffffffffffffff82116101875736602383011215610187578160040135610e2f8161229f565b92610e3d6040519485611fe8565b8184526020916024602086019160051b8301019136831161018757602401905b828210610edc575050505060009282519260005b848110610eaf575b505050505015610e8557005b60046040517f7a47c9a2000000000000000000000000000000000000000000000000000000008152fd5b82610eba828461265a565b51168414610eca57600101610e71565b50505050505060018180808080610e79565b838091610ee884612029565b815201910190610e5d565b346101875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101875760043567ffffffffffffffff811161018757610f446020913690600401612080565b818151910120604051908152f35b3461018757610f69610f63366122b7565b90612d8b565b604051602080825260ff9060ff84511681840152808401519061ffff809216604085015260408501519063ffffffff6060921660608601526060860151956080610fbe819860a0838a015260c08901906121a3565b910151947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe094858884030160a08901528651948584528484019285808860051b8701019901976000955b888710611015578b8b038cf35b90919293949596979899888061106c8f848f61105c8b918e8b8b60019b0301905251938d85511684528b8786015116878501526040850151908060408601528401906121a3565b920151908a8184039101526121a3565b9c0197019701959897969493929190611008565b346101875760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101875767ffffffffffffffff60043581811161018757366023820112156101875780600401356024916110de8261229f565b926110ec6040519485611fe8565b8284526020926024602086019160051b840101923684116101875760248101915b8483106111755787876024358281116101875761112e903690600401612445565b91604435908111610187576111479036906004016124ad565b9080519160005b83811061115757005b8061116f83876111696001958861265a565b51612c98565b0161114e565b823588811161018757869161119083928736918701016123da565b81520192019161110d565b346101875760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101875767ffffffffffffffff600435818111610187576111eb9036906004016123da565b60243582811161018757611203903690600401612445565b6044359283116101875761121e6112249336906004016124ad565b91612c98565b005b346101875767ffffffffffffffff61123d36611f17565b91161061124657005b60046040517fb10b0aec000000000000000000000000000000000000000000000000000000008152fd5b3461018757611224611281366122b7565b90612706565b3461018757608061129a610f63366122b7565b0180515190600191600181036115d7575061ffff806112b9835161261e565b515116907f00000000000000000000000000000000000000000000000000000000000000001603610e85576112f16112f7915161261e565b51613322565b60208082015181815191012060405190604082019180831067ffffffffffffffff841117610be157837f66696e616c697a65640000000000000000000000000000000000000000000000917f60cfc0e4c73ce8e46b07c3167ce01ce17e6c2deaaa5b88b977bbb10abe25c9ad946040526009815201520361159557829060a06000930173ffffffffffffffffffffffffffffffffffffffff83817f000000000000000000000000000000000000000000000000000000000000000016905b6113bb57005b8251805187101561122457866113d09161265a565b5181838251160361156b577fffffffff000000000000000000000000000000000000000000000000000000006004867feb9b983800000000000000000000000000000000000000000000000000000000930151015160e01b160361154157604061143b87855161265a565b51015151604081036115095750604061145587855161265a565b510151956040878051810103126101875760408588015197015187600052600086526040600020546114d857907ffcf3b1aa65a464cef2889608f99e8b8c0f680a4be6c2acb9d961c536a5a9294b60408899899482516114b481611f78565b8181528260005260008b528360002090519055825191825289820152a101956113b5565b602488604051907f12dba68f0000000000000000000000000000000000000000000000000000000082526004820152fd5b604490604051907fab8b67c6000000000000000000000000000000000000000000000000000000008252600482015260406024820152fd5b60046040517f8076dd8a000000000000000000000000000000000000000000000000000000008152fd5b60046040517fa710429d000000000000000000000000000000000000000000000000000000008152fd5b9051906115d36040519283927f0d18869e000000000000000000000000000000000000000000000000000000008452600484015260248301906121a3565b0390fd5b602490604051907f95a8c2a10000000000000000000000000000000000000000000000000000000082526004820152fd5b3461018757611616366120c7565b60405161162281611f5c565b6060815260209160208201926000845260408301906000825260608401916000835260808501936060855260ff60208201511690600191600181036118005750604081019081519161168063ffffffff938460048201511690613535565b94908a5260ff6060600180888651010151970194019467ffffffffffffffff988d8a6008895101511690526028875101518b528960308851015116895260318751015183603199169384911603610726579291906116dd8261266e565b8c526000935b8285106117715750505061172c8b6102778e8d8d8d8d61170f8e8e6117098f8f51613742565b51613742565b8160405198899860208a525160a060208b015260c08a01906121a3565b955116604088015251166060860152516080850152517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526121e6565b909192848d60406117f36117ea6117c58c879b9f9d601473ffffffffffffffffffffffffffffffffffffffff918f51010151166117af88885161265a565b51528c5160188b81848401015116920190613661565b9c90886117d388885161265a565b5101528d5160048a81848401015116920190613661565b9d90935161265a565b51015201939291906116e3565b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260016024820152fd5b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602060405160028152f35b3461018757611880366120c7565b6118886125cf565b60ff60208301511660058103611e8f57506118b2604083015163ffffffff60048201511690613535565b90825267ffffffffffffffff600882604086015101015116602083015267ffffffffffffffff601082604086015101015116604083015267ffffffffffffffff601882604086015101015116606083015260198082604086015101015191019267ffffffffffffffff60086060830151015116608084015267ffffffffffffffff6010606083015101511660a084015260306060820151015160c08401526031606082015101519160319260ff8083169116036107265761197560ff821661229f565b6119826040519182611fe8565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06119b560ff841661229f565b0160005b818110611e1d57505060e08501526000905b60ff81168210611c0b57846119eb856060866104528b6040830151613742565b60405180916020825260e0611a0e825161010060208601526101208501906121a3565b9167ffffffffffffffff602082015116604085015267ffffffffffffffff604082015116606085015267ffffffffffffffff606082015116608085015267ffffffffffffffff60808201511660a085015267ffffffffffffffff60a08201511660c085015260c0810151828501520151907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083820301610100840152815180825260208201916020808360051b8301019401926000915b838310611ad25786860387f35b9193955091937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820301835285519061012081018251825260208301519061012060208401528151809152610140906020828501928260051b86010193019160005b828110611bc457505050508260209261010060ff81611bab8796604060019a0151604087015267ffffffffffffffff606088015116606087015267ffffffffffffffff608088015116608087015260a0870151151560a087015260c087015160c087015260e087015186820360e08801526121a3565b9401511691015297019301930190928695949293611ac5565b90919293602080611bff837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec08a6001960301875288516121a3565b96019493019101611b35565b90926020866040850151010151611c268560e088015161265a565b5152602180876040860151010151960195611c4360ff821661229f565b611c506040519182611fe8565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611c8360ff841661229f565b0160005b818110611e0c5750506020611ca08760e08a015161265a565b51015260005b60ff82168110611dc45750506001611da7611d566031848967ffffffffffffffff6080611d458c60e087878f8060ff9f6040611cf2888860208f9560608099015101015194015161265a565b5101528f8a90610100611d1289896021898989015101015195015161265a565b510191169052898983611d3289896029898589015101015195015161265a565b510191169052015101015195015161265a565b5101911690520160608701516136f3565b9060a0611d678960e08c015161265a565b51019015159052602081606088015101015160c0611d898960e08c015161265a565b5101526060860151602463ffffffff81848401015116920190613661565b959060e0611db883828b015161265a565b510152019190506119cb565b8087611e056001936020611dfd8b611df360e09f60408e0151600463ffffffff81848401015116920190613661565b9f9096015161265a565b51015161265a565b5201611ca6565b806060602080938601015201611c87565b604051908161012081011067ffffffffffffffff61012084011117610be157816101206020930160405260008152606083820152600060408201526000606082015260006080820152600060a0820152600060c0820152606060e08201526000610100820152828286010152016119b9565b604490604051907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260056024820152fd5b3461018757611ed536611f17565b90620f424067ffffffffffffffff809216041610611eef57005b807f3a04ceca0000000000000000000000000000000000000000000000000000000060049252fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60409101126101875760043567ffffffffffffffff81168103610187579060243590565b60a0810190811067ffffffffffffffff821117610be157604052565b6020810190811067ffffffffffffffff821117610be157604052565b60c0810190811067ffffffffffffffff821117610be157604052565b6080810190811067ffffffffffffffff821117610be157604052565b6060810190811067ffffffffffffffff821117610be157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610be157604052565b359061ffff8216820361018757565b359060ff8216820361018757565b67ffffffffffffffff8111610be157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f820112156101875780359061209782612046565b926120a56040519485611fe8565b8284526020838301011161018757816000926020809301838601378301015290565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc602081830112610187576004359167ffffffffffffffff91828411610187576080908483030112610187576040519261212084611fb0565b61212c81600401612029565b845261213a60248201612038565b602085015260448101358381116101875782600461215a92840101612080565b60408501526064810135928311610187576121789201600401612080565b606082015290565b60005b8381106121935750506000910152565b8181015183820152602001612183565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936121df81518092818752878088019101612180565b0116010190565b908082519081815260208091019281808460051b8301019501936000915b8483106122145750505050505090565b909192939495848061228f837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528a5161227c606073ffffffffffffffffffffffffffffffffffffffff8351168452858301519080878601528401906121a3565b91604080920151918184039101526121a3565b9801930193019194939290612204565b67ffffffffffffffff8111610be15760051b60200190565b9060409160407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101875767ffffffffffffffff92600435848111610187578261230691600401612080565b9360243590811161018757826023820112156101875780600401359261232b8461229f565b936123396040519586611fe8565b8085526020916024602087019260071b8501019381851161018757602401915b8483106123695750505050505090565b6080838303126101875783608091875161238281611fb0565b853581528286013583820152612399898701612038565b8982015260606123aa818801612038565b90820152815201920191612359565b359073ffffffffffffffffffffffffffffffffffffffff8216820361018757565b919060608382031261018757604051906123f382611fcc565b81936123fe816123b9565b835267ffffffffffffffff9160208201358381116101875781612422918401612080565b60208501526040820135928311610187576040926124409201612080565b910152565b9080601f8301121561018757602090823561245f8161229f565b9361246d6040519586611fe8565b81855260208086019260051b82010192831161018757602001905b828210612496575050505090565b8380916124a2846123b9565b815201910190612488565b9080601f830112156101875760209082356124c78161229f565b936124d56040519586611fe8565b81855260208086019260051b82010192831161018757602001905b8282106124fe575050505090565b81357fffffffff00000000000000000000000000000000000000000000000000000000811681036101875781529083019083016124f0565b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602060405160018152f35b6040519061257d82611fcc565b602382527f30307c00000000000000000000000000000000000000000000000000000000006040837f71756572795f726573706f6e73655f303030303030303030303030303030303060208201520152565b60405190610100820182811067ffffffffffffffff821117610be157604052606060e083828152600080602083015280604083015280848301528060808301528060a083015260c08201520152565b80511561262b5760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805182101561262b5760209160051b010190565b906126788261229f565b6040906126886040519182611fe8565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06126b6829561229f565b019160009160005b8481106126cc575050505050565b60209083516126da81611fcc565b858152606083908082840152868301528285010152016126be565b519063ffffffff8216820361018757565b73ffffffffffffffffffffffffffffffffffffffff90817f0000000000000000000000000000000000000000000000000000000000000000166040908151937f1cfe795100000000000000000000000000000000000000000000000000000000855260209560049587818881875afa908115612c8d57600091612c58575b508451957ff951975a00000000000000000000000000000000000000000000000000000000875263ffffffff80921688880152600087602481885afa968715612c4d57600097612b31575b506127d9906132d8565b9580515115612ad5578251815151908751917ff8ce560a0000000000000000000000000000000000000000000000000000000083528a8301528a826024818a5afa918215612aca57600092612a9b575b5010612a3f579592909188949286519788957fa0cce1b300000000000000000000000000000000000000000000000000000000875260648701908b88015260609060606024890152845180915288608489019501916000905b828210612a0157505050508583037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc016044870152805188845280518985018190526060850195918901916000905b8282106129e357505050509186869492600098869501511691015203915afa9182156129d8576000908193612946575b501561290d5750505050565b906115d391519384937f08c379a000000000000000000000000000000000000000000000000000000000855284015260248301906121a3565b9092503d8084833e6129588183611fe8565b81019282828503126129cd5781519182151583036129d057868101519067ffffffffffffffff82116129d4570184601f820112156129d05780519161299c83612046565b956129a986519788611fe8565b8387528884840101116129cd5750906129c791878087019101612180565b38612901565b80fd5b5080fd5b8280fd5b50513d6000823e3d90fd5b8351811688528e9a8d9a5097880197909301926001909101906128d1565b835180518852808c0151888d0152808d015160ff9081168e8a01529082015116878201528e9a8d9a5060809097019690930192600190910190612882565b6064888a8851917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600960248201527f6e6f2071756f72756d00000000000000000000000000000000000000000000006044820152fd5b9091508a81813d8311612ac3575b612ab38183611fe8565b8101031261018757519038612829565b503d612aa9565b88513d6000823e3d90fd5b6064888a8851917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601460248201527f696e76616c696420677561726469616e207365740000000000000000000000006044820152fd5b90963d8082843e612b428184611fe8565b82018a838203126129d057825167ffffffffffffffff93848211612c4957019188838303126129cd5788519389850185811082821117612c1d578a5283519081116129d05783019082601f830112156129cd57908c9291815191612ba58361229f565b94612bb28d519687611fe8565b8386528086019360051b8201019384116129d057908e80969594939201915b838310612bf9575050505091612bee9184936127d99552016126f5565b8a82015296906127cf565b9091809394959650518a811681036129d45781528e95949392860191908601612bd1565b60248360418f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8380fd5b86513d6000823e3d90fd5b90508781813d8311612c86575b612c6f8183611fe8565b8101031261018757612c80906126f5565b38612784565b503d612c65565b85513d6000823e3d90fd5b909182518015600014612d845760015b90825115600014612d7d5760015b9460005b828110612d3c575b5050501561156b5780519160005b838110612ce3575b505050501561154157565b7fffffffff000000000000000000000000000000000000000000000000000000008060046020850151015160e01b1690612d1d838661265a565b511614612d2c57600101612cd0565b5050505050600138808080612cd8565b73ffffffffffffffffffffffffffffffffffffffff8087511690612d60838561265a565b511614612d6f57600101612cba565b505050506001388080612cc2565b6000612cb6565b6000612ca8565b91909160405190612d9b82611f5c565b60008252602082019060008252604083019160008352612dca6060850196606088526060608087015283612706565b600160ff8184015116808652036132ae5760038281015161ffff16918290529061324c576040519060018201906042830191600182860101925b808210613239575060419250601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09184865201166040520195525b600485019185820190600482015191600581015160ff8088511691160361320f57600a9163ffffffff6009830151169052015192600a87019060ff8516156131e557600463ffffffff8416890101106131b657600563ffffffff831688018481018201519101949060ff80831691160361318c57612ec060ff821661229f565b612ecd6040519182611fe8565b60ff821681527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612f0060ff841661229f565b0160005b81811061315a57505060808701526000905b60ff81168210612f8757505080600463ffffffff841689010103612f45575050612f4292939450613742565b90565b6044925060048763ffffffff604051947fc37906a000000000000000000000000000000000000000000000000000000000865216010160048301526024820152fd5b91600295919580828701015161ffff612fa48960808c015161265a565b5191169052828601015161ffff80612fc08960808c015161265a565b515116911603613130576003818601015160ff6020612fe38960808c015161265a565b5101911690526003828601015160ff8060206130038a60808d015161265a565b5101511691160361310657600160ff60206130228960808c015161265a565b510151161080156130e6575b6130a0576001613082608094938960406130698b61305f888d600763ffffffff8160ff9d8401015116920190613661565b9a9094015161265a565b510152600763ffffffff81838b01015116910188613661565b979060606130948360808d015161265a565b51015201919050612f16565b602460ff60206130b48960808c015161265a565b51015116604051907f51ee58530000000000000000000000000000000000000000000000000000000082526004820152fd5b50600660ff60206130fb8960808c015161265a565b51015116101561302e565b60046040517f02164961000000000000000000000000000000000000000000000000000000008152fd5b60046040517fa179f8c9000000000000000000000000000000000000000000000000000000008152fd5b60209060405161316981611fb0565b600081526000838201526060604082015260608082015282828601015201612f04565b60046040517f84ae4a30000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fbb6b170d000000000000000000000000000000000000000000000000000000008152fd5b60046040517f714f5513000000000000000000000000000000000000000000000000000000008152fd5b8351825260209384019390910190612e04565b50604051602081016040820190602384015b82821061329e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09150601f9060208452011660405260239552612e40565b805182526020918201910161325e565b60046040517f1d9617a0000000000000000000000000000000000000000000000000000000008152fd5b6132e0612570565b906020815191012061331c60408051809360206133068184019788815193849201612180565b8201906020820152036020810184520182611fe8565b51902090565b9060409081519161333283611f94565b60608352602093602084019060608252828501916000908184526060870196828852608081019583875260a082019160608352809960ff602088015116600381036134fe57509060ff9392918288019687519160086133b763ffffffff956133a260049688888201511690613535565b91528b51868881848401015116920190613661565b9d908e9a5260606001808d519c819d0101519f019c019c8d67ffffffffffffffff93849151015116905260288d510151905260308c51015116905260318a5101518660319c1696879116036134d657613419869594939297969e98999e61266e565b8452955b84871061343e57505050505050505061343c9394956117099151613742565b565b90919293946134b5879b899f988b9a6134958b73ffffffffffffffffffffffffffffffffffffffff61349f9f889e601491510101511661347f858d5161265a565b51528d5160188a81848401015116920190613661565b9d90928a5161265a565b5101528b51848681848401015116920190613661565b9b90856134c383895161265a565b510152989d97980195949392919061341d565b5082517f5e7bd6ec000000000000000000000000000000000000000000000000000000008152fd5b6044908451907f96b8e05b000000000000000000000000000000000000000000000000000000008252600482015260036024820152fd5b909182156135ad57826004019160405193601f81169182156135a4575b6004838701938385019201015b8184106135945750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b805184526020938401930161355f565b60209250613552565b9150506040516135bc81611f78565b60008152600036813790600490565b909182156136435782600c019160405193601f811691821561363a575b600c838701938385019201015b81841061362a5750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b80518452602093840193016135f5565b602092506135e8565b91505060405161365281611f78565b60008152600036813790600c90565b929082156136d6578281019260405194601f82169283156136cd575b838701938385019201015b8184106136bd5750508452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052565b8051845260209384019301613688565b6020935061367d565b925090506040516136e681611f78565b6000815260003681379190565b81016001015190919060fe811661370e5760ff169160010190565b60249060ff604051917ff7a37b07000000000000000000000000000000000000000000000000000000008352166004820152fd5b519080820361374f575050565b60449250604051917fc37906a000000000000000000000000000000000000000000000000000000000835260048301526024820152fdfea26469706673582212206a3c0178668921c3f84eb3746092a9073c97bbe159b8e26d08f0e66a9f9900c764736f6c63430008170033' as const; diff --git a/integration-tests/artifacts/SpokeVoteAggregator.ts b/integration-tests/artifacts/SpokeVoteAggregator.ts new file mode 100644 index 00000000..6803fef9 --- /dev/null +++ b/integration-tests/artifacts/SpokeVoteAggregator.ts @@ -0,0 +1,2 @@ +export const SpokeVoteAggregatorBytecode = + '0x610180604052346200009b5762000023620000196200011a565b92919091620001c6565b604051612d13908162000ab6823960805181611f02015260a05181611fbd015260c05181611ed3015260e05181611f5101526101005181611f7701526101205181610991015261014051816109bb015261016051818181610d190152818161113c015281816118710152818161207001526121fd0152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117620000d257604052565b620000a0565b60c081019081106001600160401b03821117620000d257604052565b604051906200010382620000b6565b565b51906001600160a01b03821682036200009b57565b604051601f6200380938819003918201601f19168301916001600160401b03831184841017620000d2578084926080946040528339810103126200009b57620001638162000105565b620001716020830162000105565b926060620001826040850162000105565b9301519165ffffffffffff831683036200009b5793929190565b60405190620001ab82620000b6565b60138252565b60405190620001c082620000b6565b60018252565b909192620001d36200019c565b60208101907f53706f6b65566f746541676772656761746f7200000000000000000000000000825262000205620001b1565b916020830191603160f81b83526200021d8162000587565b610120526200022c84620006a3565b61014052519020918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526200029581620000d8565b5190206080523060c0526001600160a01b039284841615620002f357620002cc8492620002c6620001039762000448565b6200030c565b166101605260078054919092166001600160a01b03166001600160a01b0319909116179055565b604051631e4fbdf760e01b815260006004820152602490fd5b9065ffffffffffff918262000321426200078f565b169260068054906000955b828710620003f05750506200039f939450828115600014620003a357600080516020620037c983398151915291506200037060005b6001600160a01b03166200078f565b6040805165ffffffffffff928316815292909116602083015290a16200039642620007e8565b9116906200097e565b5050565b62000370620003ea620003e3620003ca600080516020620037c983398151915295620007d8565b6006600052600080516020620037e98339815191520190565b5460601c90565b62000361565b90918087169080881860011c820180921162000442576000848152602090208201546001600160601b03168310156200042d5750915b906200032c565b9296506200043b90620008bd565b9562000426565b620007c2565b600380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b90600182811c92168015620004c3575b6020831014620004ad57565b634e487b7160e01b600052602260045260246000fd5b91607f1691620004a1565b601f8111620004db575050565b600090600080526020600020906020601f850160051c830194106200051d575b601f0160051c01915b8281106200051157505050565b81815560010162000504565b9092508290620004fb565b90601f821162000536575050565b60019160009060016000526020600020906020601f850160051c830194106200057c575b601f0160051c01915b828110620005715750505050565b818155830162000563565b90925082906200055a565b90815160209060208110600014620005aa57505090620005a79062000840565b90565b6001600160401b038111620000d257600091620005d382620005cd855462000491565b620004ce565b602090601f83116001146200061c5750819083949562000609949262000610575b50508160011b916000199060031b1c19161790565b905560ff90565b015190503880620005f4565b60008052601f198316957f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563929185905b8882106200068a5750508360019596971062000670575b505050811b01905560ff90565b015160001960f88460031b161c1916905538808062000663565b806001859682949686015181550195019301906200064c565b90815160209060208110600014620006c357505090620005a79062000840565b6001600160401b038111620000d257600191620006ec82620006e6855462000491565b62000528565b602090601f8311600114620007225750819062000609939495600092620006105750508160011b916000199060031b1c19161790565b6001600052601f198316959091907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6926000905b8882106200077757505083859697106200067057505050811b01905560ff90565b80878596829496860151815501950193019062000756565b65ffffffffffff90818111620007a3571690565b604490604051906306dfcc6560e41b8252603060048301526024820152fd5b634e487b7160e01b600052601160045260246000fd5b6000198101919082116200044257565b6001600160601b0390818111620007fd571690565b604490604051906306dfcc6560e41b8252606060048301526024820152fd5b60208151910151906020811062000831575090565b6000199060200360031b1b1690565b601f8151116200085b5762000855816200081c565b90511790565b6040519063305a27a960e01b82528160208060048301528251908160248401526000935b828510620008a3575050604492506000838284010152601f80199101168101030190fd5b84810182015186860160440152938101938593506200087f565b90600182018092116200044257565b6006549068010000000000000000821015620000d25760018201806006558210156200093057600660005280516020919091015160601b6001600160601b0319166001600160601b039190911617600080516020620037e983398151915290910155565b634e487b7160e01b600052603260045260246000fd5b604080519192919081016001600160401b03811182821017620000d25760405291546001600160601b038116835260601c6020830152565b60065491929190811562000a8657620009a56200099f620003ca84620007d8565b62000946565b80516001600160601b03838116949116841062000a74578560209362000a3195620009e6620009da865160018060601b031690565b6001600160601b031690565b0362000a35575062000a00620003ca62000a2393620007d8565b80546001600160601b031660609290921b6001600160601b031916919091179055565b01516001600160a01b031690565b9190565b905062000a6e915062000a5a62000a4b620000f4565b6001600160601b039092168252565b6001600160a01b03871681850152620008cc565b62000a23565b604051632520601d60e01b8152600490fd5b62000aaf915062000a9a62000a4b620000f4565b6001600160a01b0384166020820152620008cc565b6000919056fe6080604052600436101561001257600080fd5b60003560e01c806324a47c4c14610172578063342cfab61461016d57806340740a90146101685780634385963214610163578063544ffc9c1461015e57806356781388146101595780635f398a1414610154578063715018a61461014f5780637b3c71d31461014a5780637ecebe001461014557806384b0196e146101405780638da5cb5b1461013b5780638ff262e314610136578063a072d2b014610131578063a486b59614610113578063dd4e2ba51461012c578063deaaa7cc14610127578063e5bb644e14610122578063eb9019d41461011d578063f2fde38b14610118578063fc0c546a146101135763ff1dabbc1461010e57600080fd5b610fc0565b610cce565b610ede565b610e8a565b610e38565b610ddf565b610d3d565b610c54565b610adf565b610a8d565b610958565b610895565b610821565b61077f565b6106f1565b6104c5565b61044e565b6103f5565b610342565b6102b7565b61018c565b65ffffffffffff81160361018757565b600080fd5b346101875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101875761024c6004356101ca81610177565b6101d26111ea565b7f9acb2eefd7c43da9140f8e65b6411c899b4b19524aa2fa77a0aeb180f5cd33da604065ffffffffffff61022d73ffffffffffffffffffffffffffffffffffffffff6102278361022142611769565b166116a5565b16611769565b93818351951685521692836020820152a161024742611ab2565b61236d565b005b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361018757565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361018757565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361018757565b346101875760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101875760206fffffffffffffffffffffffffffffffff61033861030461024e565b6004356000526005845260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5416604051908152f35b346101875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757610379610271565b6103816111ea565b7fffffffffffffffffffffffff00000000000000000000000000000000000000006007547fac21bb122d85a2dc377279ce331446cf208b475f6f0c5c6893687703aee52332604073ffffffffffffffffffffffffffffffffffffffff81519581851687521694856020820152a11617600755005b346101875760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101875760206fffffffffffffffffffffffffffffffff61044261030461024e565b54161515604051908152f35b346101875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757608060043580600052600460205260406000208054906002600182015491015491604051938452602084015260408301526060820152f35b6024359060ff8216820361018757565b346101875760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602061052b6105016104b5565b60405161050d816105b1565b600081526040519161051e836105b1565b60008352336004356112b7565b604051908152f35b9181601f840112156101875782359167ffffffffffffffff8311610187576020838186019501011161018757565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff8211176105ac57604052565b610561565b6020810190811067ffffffffffffffff8211176105ac57604052565b6060810190811067ffffffffffffffff8211176105ac57604052565b60c0810190811067ffffffffffffffff8211176105ac57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176105ac57604052565b6040519061065382610590565b565b60405190610653826105cd565b67ffffffffffffffff81116105ac57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926106a882610662565b916106b66040519384610605565b829481845281830111610187578281602093846000960137010152565b9080601f83011215610187578160206106ee9335910161069c565b90565b346101875760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610187576107286104b5565b67ffffffffffffffff906044358281116101875761074a903690600401610533565b90916064359384116101875761077561052b9361076d60209636906004016106d3565b93369161069c565b90336004356112b7565b34610187576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261081e576107b76111ea565b8073ffffffffffffffffffffffffffffffffffffffff6003547fffffffffffffffffffffffff00000000000000000000000000000000000000008116600355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b346101875760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610187576108586104b5565b60443567ffffffffffffffff81116101875760209161088861088161052b933690600401610533565b369161069c565b6040519161051e836105b1565b346101875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101875773ffffffffffffffffffffffffffffffffffffffff6108e1610271565b1660005260026020526020604060002054604051908152f35b919082519283825260005b8481106109445750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201610905565b34610187576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261081e57610a30906109b57f0000000000000000000000000000000000000000000000000000000000000000611cb3565b906109df7f0000000000000000000000000000000000000000000000000000000000000000611dee565b90604051916109ed836105b1565b818352610a3e6020916040519687967f0f00000000000000000000000000000000000000000000000000000000000000885260e0602089015260e08801906108fa565b9086820360408801526108fa565b904660608601523060808601528260a086015284820360c0860152602080855193848152019401925b828110610a7657505050500390f35b835185528695509381019392810192600101610a67565b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602073ffffffffffffffffffffffffffffffffffffffff60035416604051908152f35b346101875760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757600435610b196104b5565b90610b22610294565b9160643567ffffffffffffffff811161018757610bda610b49610bde9236906004016106d3565b610bd473ffffffffffffffffffffffffffffffffffffffff871680600052600260205260406000208054906001820190556040519060208201927ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d7845289604084015260ff89166060840152608083015260a082015260a08152610bcc816105e9565b51902061147e565b866114ee565b1590565b610c0d5790610bf991610c0993610bf3611006565b9261123b565b6040519081529081906020820190565b0390f35b6040517fd855c4f400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602490fd5b346101875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610187576004356bffffffffffffffffffffffff8116810361018757610cbe73ffffffffffffffffffffffffffffffffffffffff6102276020936116a5565b65ffffffffffff60405191168152f35b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757610c09604051610d7b816105cd565b603281527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e60208201527f26706172616d733d6672616374696f6e616c000000000000000000000000000060408201526040519182916020835260208301906108fa565b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101875760206040517ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d78152f35b346101875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602073ffffffffffffffffffffffffffffffffffffffff60075416604051908152f35b346101875760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757602061052b610ec6610271565b6000604051610ed4816105b1565b5260243590611824565b346101875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018757610f15610271565b610f1d6111ea565b73ffffffffffffffffffffffffffffffffffffffff809116908115610f8f57600354827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60246040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152fd5b346101875760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610187576020610ffc600435611069565b6040519015158152f35b60405190611013826105b1565b60008252565b9081602091031261018757604051906020820182811067ffffffffffffffff8211176105ac5760405251815290565b6040513d6000823e3d90fd5b9081602091031261018757516106ee81610177565b6110e6906110a861108f60075473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b9060405180927fc7f758a800000000000000000000000000000000000000000000000000000000825281806020968795600483019190602083019252565b03915afa9081156111b8576000916111bd575b506040517f91ddadf4000000000000000000000000000000000000000000000000000000008152828160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9283156111b85760009361117f575b505065ffffffffffff90519116101590565b65ffffffffffff92935090816111a992903d106111b1575b6111a18183610605565b810190611054565b91903861116d565b503d611197565b611048565b6111dd9150823d84116111e3575b6111d58183610605565b810190611019565b386110f9565b503d6111cb565b73ffffffffffffffffffffffffffffffffffffffff60035416330361120b57565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b916106ee93916040519361124e856105b1565b600085526112b7565b93909260ff611283936106ee97958752166020860152604085015260a0606085015260a08401906108fa565b9160808184039101526108fa565b909260ff6080936106ee96958452166020830152604082015281606082015201906108fa565b929091936112c7610bda85611069565b611454576112ed61108f60075473ffffffffffffffffffffffffffffffffffffffff1690565b602060405180927fc7f758a8000000000000000000000000000000000000000000000000000000008252818061132b8a600483019190602083019252565b03915afa80156111b85761135291600091611435575b505161134b611006565b5084611824565b94851561140b578161136887938484888a611b03565b80516113c0575073ffffffffffffffffffffffffffffffffffffffff927fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda494926113ba92604051958695169785611291565b0390a290565b73ffffffffffffffffffffffffffffffffffffffff937fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871295936113ba93604051968796169886611257565b60046040517f44023105000000000000000000000000000000000000000000000000000000008152fd5b61144e915060203d6020116111e3576111d58183610605565b38611341565b60046040517f1c3a6719000000000000000000000000000000000000000000000000000000008152fd5b604290611489611ebc565b90604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6114f88383611fe3565b5060048195929510156116325715938461160f575b50831561151b575b50505090565b60009293509082916040516115998161156d60208201947f1626ba7e00000000000000000000000000000000000000000000000000000000998a875260248401526040604484015260648301906108fa565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610605565b51915afa903d15611608573d6115ae81610662565b906115bc6040519283610605565b81523d6000602083013e5b826115fa575b826115dd575b5050388080611515565b6115f29192506020808251830101910161201f565b1438806115d3565b9150602082511015916115cd565b60606115c7565b73ffffffffffffffffffffffffffffffffffffffff83811691161493503861150d565b6114bf565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161169357565b611637565b9190820391821161169357565b600690600654916000915b8383106116fc57505050806116c55750600090565b6116ce90611666565b60066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f015460601c90565b9091926117098185612b76565b90836000526bffffffffffffffffffffffff80837ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f015416908416106000146117565750925b91906116b0565b9350600181018091111561174f57611637565b65ffffffffffff9081811161177c571690565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252603060048301526024820152fd5b90816020910312610187575163ffffffff811681036101875790565b90816040910312610187576020604051916117ea83610590565b80516117f581610177565b8352015179ffffffffffffffffffffffffffffffffffffffffffffffffffff8116810361018757602082015290565b919061185961185361184861184361108f61183e86611ab2565b6116a5565b611769565b65ffffffffffff1690565b82611698565b9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660408051927f6fcfff45000000000000000000000000000000000000000000000000000000008452602096600490602086806118ed846004830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b0381885afa9586156111b857600096611a81575b5061191963ffffffff97888098169788911683612049565b948515611a735760009761192c87611666565b88811061195f575b50505050505050505079ffffffffffffffffffffffffffffffffffffffffffffffffffff9192501690565b86517ff1127ed800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851686820190815263ffffffff8385161660208201528890829081906040010381875afa9081156111b857600091611a46575b508665ffffffffffff6119e5835165ffffffffffff1690565b1611611a40578c015179ffffffffffffffffffffffffffffffffffffffffffffffffffff908116908b1681108015611a2f575b611a26575b5060010161192c565b99506001611a1d565b5081611a3a8a611666565b14611a18565b50611934565b611a669150883d8a11611a6c575b611a5e8183610605565b8101906117d0565b386119cc565b503d611a54565b506000985050505050505050565b611aa491965060203d602011611aab575b611a9c8183610605565b8101906117b4565b9438611901565b503d611a92565b6bffffffffffffffffffffffff90818111611acb571690565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252606060048301526024820152fd5b9391928015611c2f5780611b7b611b66611b5085611b2b8a6000526005602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b546fffffffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b1015611baa57611b8a90612522565b91805115600014611b9f5750610653936128a8565b92506106539361263b565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53706f6b65436f756e74696e674672616374696f6e616c3a20616c6c2077656960448201527f67687420636173740000000000000000000000000000000000000000000000006064820152608490fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f53706f6b65436f756e74696e674672616374696f6e616c3a206e6f207765696760448201527f68740000000000000000000000000000000000000000000000000000000000006064820152fd5b60ff8114611cc4576106ee90612a5e565b50604051600080549060018260011c9260018116918215611de4575b602091602086108414611db757858752869493602086019392918115611d795750600114611d18575b5050506106ee92500382610605565b925093611d46600080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390565b946000935b828510611d63575050506106ee935001388080611d09565b8654858501529586019587955093810193611d4b565b9150506106ee959293507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009150168252151560051b01388080611d09565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b93607f1693611ce0565b60ff8114611dff576106ee90612a5e565b506040516001805480821c91600091808216918215611eb2575b602091602086108414611db757858752869493602086019392918115611d795750600114611e50575050506106ee92500382610605565b925093611e7f60016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b946000935b828510611e9c575050506106ee935001388080611d09565b8654858501529586019587955093810193611e84565b93607f1693611e19565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016301480611fba575b15611f24577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152611fb4816105e9565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614611efb565b81519190604183036120145761200d92506020820151906060604084015193015160001a90612aac565b9192909190565b505060009160029190565b90816020910312610187575190565b906001820180921161169357565b9190820180921161169357565b9060008360058111612174575b50919073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165b84841061209f575050505090565b909192936120ad8186612b76565b604080517ff1127ed800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015263ffffffff8381166024830152929392918082604481895afa80156111b85765ffffffffffff9261213192600092612157575b50505165ffffffffffff1690565b918616911611156121475750935b929190612091565b94506121529061202e565b61213f565b61216d9250803d10611a6c57611a5e8183610605565b3880612123565b8061218461218a92969396612b8b565b90611698565b604080517ff1127ed800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015263ffffffff808416602483015292939291818060448101038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156111b8576122439161184891600091612265575b505165ffffffffffff1690565b90841610156122555750925b38612056565b93506122609061202e565b61224f565b61227e915060403d604011611a6c57611a5e8183610605565b38612236565b60065490680100000000000000008210156105ac57600182018060065582101561231457600660005280516020919091015160601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff91909116177ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90910155565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060405161235081610590565b91546bffffffffffffffffffffffff8116835260601c6020830152565b6006549192919081156124eb576123b86123b361238984611666565b60066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0190565b612343565b80516bffffffffffffffffffffffff83811694911684106124c15785602093612472956124056123f486516bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b03612476575061241a61238961245793611666565b906bffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083549260601b169116179055565b015173ffffffffffffffffffffffffffffffffffffffff1690565b9190565b90506124bc915061249c612488610646565b6bffffffffffffffffffffffff9092168252565b73ffffffffffffffffffffffffffffffffffffffff871681850152612284565b612457565b60046040517f2520601d000000000000000000000000000000000000000000000000000000008152fd5b61251c91506124fb612488610646565b73ffffffffffffffffffffffffffffffffffffffff84166020820152612284565b60009190565b6fffffffffffffffffffffffffffffffff9081811161253f571690565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252608060048301526024820152fd5b1561257e57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f53706f6b65436f756e74696e674672616374696f6e616c3a20766f746520776f60448201527f756c6420657863656564207765696768740000000000000000000000000000006064820152fd5b906040516060810181811067ffffffffffffffff8211176105ac5760405260406002829480548452600181015460208501520154910152565b91926030815103612824576126729060208101519160408360801c936fffffffffffffffffffffffffffffffff1692015160801c90565b918361268b869593956000526005602052604060002090565b906126b5919073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b546fffffffffffffffffffffffffffffffff16956fffffffffffffffffffffffffffffffff808080941696169781806126ee8b8a61203c565b971696876126fb9161203c565b91166127069161203c565b911681111561271490612577565b169061272a856000526005602052604060002090565b90612754919073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b9061279591906fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055565b6127a9836000526004602052604060002090565b6127b290612602565b918251906127bf9161203c565b936020830151906127cf9161203c565b9160400151906127de9161203c565b906127e7610655565b93845260208401526040830152612808906000526004602052604060002090565b8151815560208201516001820155604090910151600290910155565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f53706f6b65436f756e74696e674672616374696f6e616c3a20696e76616c696460448201527f20766f74654461746100000000000000000000000000000000000000000000006064820152fd5b919260ff9061293c856129006fffffffffffffffffffffffffffffffff956128ec876128e5611b5084611b2b8d6000526005602052604060002090565b1615612577565b611b2b886000526005602052604060002090565b906fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055565b1680612967575061295a612963926000526004602052604060002090565b9216825461203c565b9055565b6001810361299357506001612989612963936000526004602052604060002090565b019216825461203c565b6002036129b3576002612989612963936000526004602052604060002090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f53706f6b65436f756e74696e674672616374696f6e616c3a20696e76616c696460448201527f20737570706f72742076616c75652c206d75737420626520696e636c7564656460648201527f20696e20566f74655479706520656e756d000000000000000000000000000000608482015260a490fd5b60ff811690601f8211612a825760405191612a7883610590565b8252602082015290565b60046040517fb3512b0c000000000000000000000000000000000000000000000000000000008152fd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612b3157926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa156111b857805173ffffffffffffffffffffffffffffffffffffffff811615612b2857918190565b50809160019190565b50505060009160039190565b8115612b47570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b90808216911860011c81018091116116935790565b8015612cc55780612c5e612c57612c4d612c43612c39612c2f612c25612c1b60016106ee9a6000908b60801c80612cb9575b508060401c80612cac575b508060201c80612c9f575b508060101c80612c92575b508060081c80612c85575b508060041c80612c78575b508060021c80612c6b575b50821c612c64575b811c1b612c14818b612b3d565b0160011c90565b612c14818a612b3d565b612c148189612b3d565b612c148188612b3d565b612c148187612b3d565b612c148186612b3d565b612c148185612b3d565b8092612b3d565b90612ccb565b8101612c07565b6002915091019038612bff565b6004915091019038612bf4565b6008915091019038612be9565b6010915091019038612bde565b6020915091019038612bd3565b6040915091019038612bc8565b91505060809038612bbd565b50600090565b9080821015612cd8575090565b90509056fea26469706673582212200ea9d54993e2ce43d583405859500f49b3db753e53736da0f800b887e292a6a264736f6c634300081700339acb2eefd7c43da9140f8e65b6411c899b4b19524aa2fa77a0aeb180f5cd33daf652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f' as const; diff --git a/integration-tests/artifacts/TimelockController.ts b/integration-tests/artifacts/TimelockController.ts new file mode 100644 index 00000000..35658f44 --- /dev/null +++ b/integration-tests/artifacts/TimelockController.ts @@ -0,0 +1,2 @@ +export const TimelockControllerBytecode = + '0x6080604052346200017557620021d8803803806200001d816200017a565b9283398101906080818303126200017557805160208201516001600160401b039081811162000175578462000054918501620001cb565b9360408401519182116200017557620000766060916200007e938601620001cb565b9301620001b6565b906200008a3062000269565b506001600160a01b039180831662000162575b5060005b8451811015620000e95780620000c784620000bf600194896200023e565b5116620002e9565b50620000e184620000d983896200023e565b51166200038b565b5001620000a1565b50925060005b82518110156200011d578062000115836200010d600194876200023e565b511662000428565b5001620000ef565b7f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d560408580600255815190600082526020820152a1604051611cf29081620004c68239f35b6200016d9062000269565b50386200009d565b600080fd5b6040519190601f01601f191682016001600160401b03811183821017620001a057604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200017557565b81601f8201121562000175578051916020916001600160401b038411620001a0578360051b908380620002008185016200017a565b80978152019282010192831162000175578301905b82821062000224575050505090565b8380916200023284620001b6565b81520191019062000215565b8051821015620002535760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff16620002e557818052816020526040822081835260205260408220600160ff198254161790553391600080516020620021b88339815191528180a4600190565b5090565b6001600160a01b031660008181527f3412d5605ac6cd444957cedb533e5dacad6378b4bc819ebe3652188a665066d560205260408120549091907fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc19060ff166200038657808352826020526040832082845260205260408320600160ff19825416179055600080516020620021b8833981519152339380a4600190565b505090565b6001600160a01b031660008181527fc3ad33e20b0c56a223ad5104fff154aa010f8715b9c981fd38fdc60a4d1a52fb60205260408120549091907ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7839060ff166200038657808352826020526040832082845260205260408320600160ff19825416179055600080516020620021b8833981519152339380a4600190565b6001600160a01b031660008181527fdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d706960205260408120549091907fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff166200038657808352826020526040832082845260205260408320600160ff19825416179055600080516020620021b8833981519152339380a460019056fe60406080815260049081361015610020575b5050361561001e57600080fd5b005b600091823560e01c90816301d5062a14610f6757816301ffc9a714610e7257816307bd026514610e1957838263134008d314610d5d5750816313bc9f2014610d1f578163150b7a0214610c92578163248a9ca314610c4a5781632ab0f52914610c0c5781632f2ff15d14610bc457816331d5075014610b8657816336568abe14610afc578163584b153e14610ab557816364d6235314610a125781637958004c146109985781638065657f146109765781638f2a0bb0146107a15781638f61f4f51461074857816391d14854146106d8578163a217fddf1461069f578163b08e51c014610646578163b1c5f4271461061a578163bc197c811461055c578163c4d252f51461043d578163d45c4435146103f7578163d547741f14610394578163e38335e51461022e578163f23a6e611461019e575063f27a0c9203610011573461019a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019a576020906002549051908152f35b5080fd5b82843461022b5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b576101d7611064565b506101e061108c565b506084359067ffffffffffffffff821161022b575060209261020491369101611201565b50517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b80fd5b905061023936611279565b9098949591939296977fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e638b528a602052858b208b805260205260ff868c20541615610386575b83831480159061037c575b61033857506102a26102a9918a868a878b888f611636565b9889611a21565b885b8181106102bf57896102bc8a611b0e565b80f35b80808a7fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a61032f6103178f988c610310828e61030a8f60019f610305918591611576565b6115b5565b97611576565b35956115d6565b9061032482828787611ab9565b8d51948594856113e5565b0390a3016102ab565b85517fffb032110000000000000000000000000000000000000000000000000000000081529081019283526020830185905260408301849052918291506060010390fd5b508483141561028a565b61038f33611970565b61027f565b919050346103f357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103f3576103ef91356103ea60016103d761108c565b93838752866020528620015433906119e2565b611bd8565b5080f35b8280fd5b9050346103f35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103f35760209282913581526001845220549051908152f35b919050346103f35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103f3578135917ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7838085528460205282852033865260205260ff83862054161561052857506104b983611490565b156104f35750829082825260016020528120557fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb708280a280f35b8260449251917f5ead8eb500000000000000000000000000000000000000000000000000000000835282015260066024820152fd5b60449251917fe2517d3f00000000000000000000000000000000000000000000000000000000835233908301526024820152fd5b82843461022b5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57610595611064565b5061059e61108c565b5067ffffffffffffffff9060443582811161019a576105c090369086016112f9565b5060643582811161019a576105d890369086016112f9565b5060843591821161022b57506020926105f391369101611201565b50517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b50503461019a5760209061063f61063036611279565b96959095949194939293611636565b9051908152f35b50503461019a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019a57602090517ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7838152f35b50503461019a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019a5751908152602090f35b9050346103f357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103f3578160209360ff9261071761108c565b9035825281865273ffffffffffffffffffffffffffffffffffffffff83832091168252855220541690519015158152f35b50503461019a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019a57602090517fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc18152f35b919050346103f35760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103f35767ffffffffffffffff908235828111610972576107f39036908501611248565b9360243584811161096e5761080b9036908301611248565b9460443590811161096a576108239036908401611248565b606493919335906084359760a4359361083b336118c7565b818b14801590610960575b61091c575061085c89848489858f8b908e611636565b99610867858c6117f6565b8a8c5b8a8382106108b0578e838e838161087f578380f35b7f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03879160209151908152a28180808380f35b6001927f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b6109118f8c88978f92898f8f8f6108ff916108f961030586809461090699611576565b9a611576565b35986115d6565b91519687968761139f565b0390a3018b9061086a565b88517fffb032110000000000000000000000000000000000000000000000000000000081529081018b81526020810184905260408101929092529081906060010390fd5b50828b1415610846565b8780fd5b8680fd5b8480fd5b50503461019a5760209061063f61098c366110dd565b949390939291926114f5565b83833461019a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019a576109d383356114b9565b905191838210156109e657602083838152f35b806021857f4e487b71000000000000000000000000000000000000000000000000000000006024945252fd5b919050346103f35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103f357813591303303610a8657507f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5906002548151908152836020820152a160025580f35b60249151907fe2850c590000000000000000000000000000000000000000000000000000000082523390820152fd5b82843461022b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5750610af360209235611490565b90519015158152f35b83833461019a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019a57610b3461108c565b903373ffffffffffffffffffffffffffffffffffffffff831603610b5e57506103ef919235611bd8565b8390517f6697b232000000000000000000000000000000000000000000000000000000008152fd5b82843461022b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5750610af360209235611479565b919050346103f357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103f3576103ef9135610c0760016103d761108c565b611b2e565b82843461022b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5750610af360209235611461565b9050346103f35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103f357816020936001923581528085522001549051908152f35b82843461022b5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57610ccb611064565b50610cd461108c565b506064359067ffffffffffffffff821161022b5750602092610cf891369101611201565b50517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b82843461022b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5750610af36020923561141a565b6102bc610ded82610e037fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58610de489610d95366110dd565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e638b9a9697939598929a528a602052828b208b805260205260ff838c20541615610e0b575b8985858a8a6114f5565b998a9889611a21565b610df983838888611ab9565b51948594856113e5565b0390a3611b0e565b610e1433611970565b610dda565b50503461019a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019a57602090517fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e638152f35b9050346103f35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103f35735907fffffffff0000000000000000000000000000000000000000000000000000000082168092036103f357602092507f4e2312e0000000000000000000000000000000000000000000000000000000008214918215610f07575b50519015158152f35b9091507f7965db0b000000000000000000000000000000000000000000000000000000008114908115610f3d575b509038610efe565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501438610f35565b919050346103f35760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103f357610fa1611064565b908360243560443567ffffffffffffffff81116103f3577f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca95610fe6913691016110af565b959091606435956110276084359760a43590611001336118c7565b61100f8a828d8a89896114f5565b9a8b9761101c848a6117f6565b8a519687968761139f565b0390a381611033578380f35b7f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03879160209151908152a23880808380f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361108757565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361108757565b9181601f840112156110875782359167ffffffffffffffff8311611087576020838186019501011161108757565b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126110875760043573ffffffffffffffffffffffffffffffffffffffff811681036110875791602435916044359067ffffffffffffffff82116110875761114b916004016110af565b90916064359060843590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761119857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161119857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561108757803590611218826111c7565b926112266040519485611157565b8284526020838301011161108757816000926020809301838601378301015290565b9181601f840112156110875782359167ffffffffffffffff8311611087576020808501948460051b01011161108757565b9060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126110875767ffffffffffffffff60043581811161108757836112c491600401611248565b9390939260243583811161108757826112df91600401611248565b939093926044359182116110875761114b91600401611248565b81601f820112156110875780359160209167ffffffffffffffff8411611198578360051b906040519461132e85840187611157565b85528380860192820101928311611087578301905b828210611351575050505090565b81358152908301908301611343565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b9290936113db9273ffffffffffffffffffffffffffffffffffffffff60809699989799168552602085015260a0604085015260a0840191611360565b9460608201520152565b611417949273ffffffffffffffffffffffffffffffffffffffff60609316825260208201528160408201520191611360565b90565b611423906114b9565b60048110156114325760021490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b61146a906114b9565b60048110156114325760031490565b611482906114b9565b600481101561143257151590565b611499906114b9565b600481101561143257600181149081156114b1575090565b600291501490565b600052600160205260406000205480156000146114d65750600090565b600181036114e45750600390565b4210156114f057600190565b600290565b946115396115709495929360405196879573ffffffffffffffffffffffffffffffffffffffff602088019a168a52604087015260a0606087015260c0860191611360565b91608084015260a0830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611157565b51902090565b91908110156115865760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036110875790565b91908110156115865760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561108757019081359167ffffffffffffffff8311611087576020018236038113611087579190565b969294909695919560405196602091828901998060c08b0160a08d525260e08a01919060005b8181106117c0575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe097888a83030160408b01528082527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111611087579089969495939897929160051b80928a830137019380888601878703606089015252604085019460408260051b82010195836000925b84841061171a575050505050506115709550608084015260a083015203908101835282611157565b91939698509193989994967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082820301845289357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181121561108757830186810191903567ffffffffffffffff8111611087578036038313611087576117a988928392600195611360565b9b0194019401918b98969394919a9997959a6116f2565b90919283359073ffffffffffffffffffffffffffffffffffffffff8216809203611087579081528501928501919060010161165c565b9061180082611479565b61188f576002548082106118585750420190814211611829576000526001602052604060002055565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60449250604051917f5433660900000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b604482604051907f5ead8eb5000000000000000000000000000000000000000000000000000000008252600482015260016024820152fd5b73ffffffffffffffffffffffffffffffffffffffff1660008181527f3412d5605ac6cd444957cedb533e5dacad6378b4bc819ebe3652188a665066d560205260409020547fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc19060ff1615611939575050565b60449250604051917fe2517d3f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b73ffffffffffffffffffffffffffffffffffffffff1660008181527fdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d706960205260409020547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff1615611939575050565b80600052600060205273ffffffffffffffffffffffffffffffffffffffff60406000209216918260005260205260ff6040600020541615611939575050565b611a2a8161141a565b15611a81575080151580611a71575b611a405750565b602490604051907f90a9a6180000000000000000000000000000000000000000000000000000000082526004820152fd5b50611a7b81611461565b15611a39565b604490604051907f5ead8eb5000000000000000000000000000000000000000000000000000000008252600482015260046024820152fd5b611b0393600093928493826040519384928337810185815203925af13d15611b06573d90611ae6826111c7565b91611af46040519384611157565b82523d6000602084013e611c79565b50565b606090611c79565b611b178161141a565b15611a815760005260016020526001604060002055565b906000918083528260205273ffffffffffffffffffffffffffffffffffffffff6040842092169182845260205260ff60408420541615600014611bd35780835282602052604083208284526020526040832060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b906000918083528260205273ffffffffffffffffffffffffffffffffffffffff6040842092169182845260205260ff604084205416600014611bd3578083528260205260408320828452602052604083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b909190611cba5750805115611c9057805190602001fd5b60046040517f1425ea42000000000000000000000000000000000000000000000000000000008152fd5b56fea2646970667358221220942c77fbc7cef6ff25cba733302229ca6ba76aba281ffe3aa24b2cd4a7d002b564736f6c634300081700332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d' as const; diff --git a/integration-tests/artifacts/index.ts b/integration-tests/artifacts/index.ts new file mode 100644 index 00000000..3a2a62ba --- /dev/null +++ b/integration-tests/artifacts/index.ts @@ -0,0 +1,14 @@ +export { HubGovernorBytecode } from './HubGovernor'; +export { HubMessageDispatcherBytecode } from './HubMessageDispatcher'; +export { HubVotePoolBytecode } from './HubVotePool'; +export { ERC20VotesFakeBytecode } from './ERC20VotesFake'; +export { TimelockControllerBytecode } from './TimelockController'; +export { HubProposalMetadataBytecode } from './HubProposalMetadata'; +export { HubProposalExtenderBytecode } from './HubProposalExtender'; +export { HubEvmSpokeAggregateProposerBytecode } from './HubEvmSpokeAggregateProposer'; +export { HubSolanaMessageDispatcherBytecode } from './HubSolanaMessageDispatcher'; +export { HubSolanaSpokeVoteDecoderBytecode } from './HubSolanaSpokeVoteDecoder'; +export { SpokeMetadataCollectorBytecode } from './SpokeMetadataCollector'; +export { SpokeVoteAggregatorBytecode } from './SpokeVoteAggregator'; +export { SpokeMessageExecutorBytecode } from './SpokeMessageExecutor'; +export { ERC1967ProxyBytecode } from './ERC1967Proxy'; diff --git a/integration-tests/bun.lockb b/integration-tests/bun.lockb index 50a4ed69..19509390 100755 Binary files a/integration-tests/bun.lockb and b/integration-tests/bun.lockb differ diff --git a/integration-tests/ci.yaml b/integration-tests/ci.yaml new file mode 100644 index 00000000..d6a010e6 --- /dev/null +++ b/integration-tests/ci.yaml @@ -0,0 +1,51 @@ +kind: Job +apiVersion: batch/v1 +metadata: + name: multi-gov-tests +spec: + backoffLimit: 0 + template: + spec: + tolerations: + - key: "node.kubernetes.io/disk-pressure" + operator: "Exists" + effect: "NoSchedule" + restartPolicy: Never + containers: + - name: multi-gov-tests + image: multi-gov-ci + env: + - name: ETHDEVNET_MNEMONIC + value: "myth like bonus scare over problem client lizard pioneer submit female collect" + - name: WORMHOLE_API_KEY + value: "my_secret_key_3" + - name: CI + value: "true" + - name: ETH_RPC_URL + value: "http://eth-devnet.wormhole.svc.cluster.local:8545" + - name: ETH2_RPC_URL + value: "http://eth-devnet2.wormhole.svc.cluster.local:8545" + - name: QUERY_SERVER_HOST + value: "query-server" + command: + - /bin/sh + - -c + - 'bun run test:only && echo "done!" && touch /success' + readinessProbe: + exec: + command: + - test + - -e + - "/success" + initialDelaySeconds: 30 + periodSeconds: 30 + failureThreshold: 120 + resources: + limits: + cpu: "1" + memory: "2Gi" + ephemeral-storage: "500Mi" + requests: + cpu: "500m" + memory: "1Gi" + ephemeral-storage: "250Mi" diff --git a/integration-tests/test/config/chains.ts b/integration-tests/test/config/chains.ts index 363ec401..84ff1170 100644 --- a/integration-tests/test/config/chains.ts +++ b/integration-tests/test/config/chains.ts @@ -1,7 +1,12 @@ import type { Chain } from 'viem'; -export const ETH_DEVNET_NODE_URL = 'http://localhost:8545'; -export const ETH2_DEVNET_NODE_URL = 'http://localhost:8546'; +// Use environment variables or fallback to localhost +export const ETH_DEVNET_NODE_URL = process.env.CI + ? 'http://eth-devnet.wormhole.svc.cluster.local:8545' + : 'http://localhost:8545'; +export const ETH2_DEVNET_NODE_URL = process.env.CI + ? 'http://eth-devnet2.wormhole.svc.cluster.local:8545' + : 'http://localhost:8546'; export const ETH_DEVNET_WORMHOLE_CHAIN_ID = 2; export const ETH2_DEVNET_WORMHOLE_CHAIN_ID = 4; diff --git a/integration-tests/test/config/index.ts b/integration-tests/test/config/index.ts index 959f608f..6d8a7648 100644 --- a/integration-tests/test/config/index.ts +++ b/integration-tests/test/config/index.ts @@ -1,6 +1,9 @@ +// Use Kubernetes service names in CI, localhost for local dev +const BASE_URL = process.env.CI ? 'http://query-server' : 'http://localhost'; + export { account } from './mainAccount'; export { ethDevnet, eth2Devnet } from './chains'; -export const SERVER_URL = 'http://localhost:'; +export const SERVER_URL = `${BASE_URL}:`; export const CCQ_SERVER_URL = `${SERVER_URL}6069/v1`; export const QUERY_URL = `${CCQ_SERVER_URL}/query`; diff --git a/integration-tests/test/executeCrossChain/helpers.ts b/integration-tests/test/executeCrossChain/helpers.ts index fc0d4cf5..d6a64253 100644 --- a/integration-tests/test/executeCrossChain/helpers.ts +++ b/integration-tests/test/executeCrossChain/helpers.ts @@ -82,10 +82,16 @@ const fetchSignedVAA = async (sequence: bigint): Promise<`0x${string}`> => { const MAX_RETRIES = 30; const RETRY_DELAY = 2000; + // Use guardian service name for headless service + const guardianHost = process.env.CI + ? 'guardian.wormhole' // Changed from guardian-0.guardian.wormhole.svc.cluster.local + : 'localhost'; + const guardianPort = '7071'; + for (let i = 0; i < MAX_RETRIES; i++) { try { const response = await fetch( - `http://localhost:7071/v1/signed_vaa/2/${emitterAddress}/${sequence}`, + `http://${guardianHost}:${guardianPort}/v1/signed_vaa/2/${emitterAddress}/${sequence}`, ); if (response.status === 404) { @@ -132,28 +138,38 @@ const executeVAAOnSpoke = async (vaa: `0x${string}`) => { const getMessageSequence = async () => { console.log('🔍 Getting message sequence...'); const { ethClient } = createClients(); + const MAX_RETRIES = 3; + const RETRY_DELAY = 20000; // 20 seconds - const logs = await ethClient.getLogs({ - address: ContractAddresses.WORMHOLE_CORE, - event: parseAbiItem( - 'event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)', - ), - fromBlock: 'earliest', - toBlock: 'latest', - args: { - sender: ContractAddresses.HUB_MESSAGE_DISPATCHER, - }, - }); - - const log = logs[logs.length - 1]; - if (!log?.args?.sequence) throw new Error('No sequence found'); - - // Wait for guardian to process - await new Promise((resolve) => setTimeout(resolve, 5000)); + for (let i = 0; i < MAX_RETRIES; i++) { + const logs = await ethClient.getLogs({ + address: ContractAddresses.WORMHOLE_CORE, + event: parseAbiItem( + 'event LogMessagePublished(address indexed sender, uint64 sequence, uint32 nonce, bytes payload, uint8 consistencyLevel)', + ), + fromBlock: 'earliest', + toBlock: 'latest', + args: { + sender: ContractAddresses.HUB_MESSAGE_DISPATCHER, + }, + }); + + const log = logs[logs.length - 1]; + + if (log?.args?.sequence !== undefined) { + // Wait for guardian to process + await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY)); + console.log('✅ Message sequence fetched:', log.args.sequence.toString()); + return log.args.sequence; + } - console.log('✅ Message sequence fetched'); + console.log(`No sequence found on attempt ${i + 1}, retrying...`); + if (i < MAX_RETRIES - 1) { + await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY)); + } + } - return log.args.sequence; + throw new Error(`No sequence found after ${MAX_RETRIES} attempts`); }; // Helper to create proposal data for ETH transfer