{
  "_format": "hh-sol-artifact-1",
  "contractName": "ZeroExMock",
  "sourceName": "contracts/mocks/external/ZeroExMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_mockSendToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_mockReceiveToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_mockSendAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_mockReceiveAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_setTokenAddress",
          "type": "address"
        }
      ],
      "name": "addSetTokenAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "makerToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "takerToken",
              "type": "address"
            },
            {
              "internalType": "uint128",
              "name": "makerAmount",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "takerAmount",
              "type": "uint128"
            },
            {
              "internalType": "address",
              "name": "maker",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "taker",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "txOrigin",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "pool",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "expiry",
              "type": "uint64"
            },
            {
              "internalType": "uint256",
              "name": "salt",
              "type": "uint256"
            }
          ],
          "internalType": "struct ZeroExMock.RfqOrder[]",
          "name": "",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "signatureType",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "internalType": "struct ZeroExMock.Signature[]",
          "name": "",
          "type": "tuple[]"
        },
        {
          "internalType": "uint128[]",
          "name": "",
          "type": "uint128[]"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "name": "batchFillRfqOrders",
      "outputs": [
        {
          "internalType": "uint128[]",
          "name": "",
          "type": "uint128[]"
        },
        {
          "internalType": "uint128[]",
          "name": "",
          "type": "uint128[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "makerToken",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "takerToken",
              "type": "address"
            },
            {
              "internalType": "uint128",
              "name": "makerAmount",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "takerAmount",
              "type": "uint128"
            },
            {
              "internalType": "address",
              "name": "maker",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "taker",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "txOrigin",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "pool",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "expiry",
              "type": "uint64"
            },
            {
              "internalType": "uint256",
              "name": "salt",
              "type": "uint256"
            }
          ],
          "internalType": "struct ZeroExMock.RfqOrder",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "signatureType",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "internalType": "struct ZeroExMock.Signature",
          "name": "",
          "type": "tuple"
        },
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "name": "fillRfqOrder",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mockReceiveAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mockReceiveToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mockSendAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mockSendToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "subcall",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "sellAmount",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct ZeroExMock.BatchSellSubcall[]",
          "name": "",
          "type": "tuple[]"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "multiplexBatchSellTokenForToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "subcall",
              "type": "uint8"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct ZeroExMock.MultiHopSellSubcall[]",
          "name": "",
          "type": "tuple[]"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "multiplexMultiHopSellTokenForToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "sellToLiquidityProvider",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "name": "sellToUniswap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "sellTokenForTokenToUniswapV3",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setTokenAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "deploymentNonce",
              "type": "uint32"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct ZeroExMock.Transformation[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "name": "transformERC20",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "deploymentNonce",
              "type": "uint32"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct ZeroExMock.Transformation[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "name": "transformERC20Staging",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405161108438038061108483398101604081905261002f9161008a565b600180546001600160a01b039586166001600160a01b03199182161790915560008054949095169316929092179092556003919091556002556100ce565b80516001600160a01b038116811461008457600080fd5b92915050565b6000806000806080858703121561009f578384fd5b6100a9868661006d565b93506100b8866020870161006d565b6040860151606090960151949790965092505050565b610fa7806100dd6000396000f3fe6080604052600436106100e85760003560e01c80637a1eb1b91161008a578063bce3c75111610059578063bce3c75114610207578063d9627aa41461021c578063dc00152f1461022a578063f7fcd3841461023f576100e8565b80637a1eb1b9146101be578063800accc2146101d15780638182b61f14610116578063aa77476c146101e6576100e8565b806361d97404116100c657806361d974041461013e5780636af479b21461016057806375103cb91461017b57806375e9141d1461019c576100e8565b80630f3b31b2146100ed578063415565b0146101165780634748581514610129575b600080fd5b6101006100fb366004610b33565b610252565b60405161010d9190610efd565b60405180910390f35b610100610124366004610a52565b610264565b34801561013557600080fd5b50610100610278565b34801561014a57600080fd5b5061015361027e565b60405161010d9190610e07565b34801561016c57600080fd5b506101006100fb366004610d1c565b61018e610189366004610c04565b61028d565b60405161010d929190610e58565b3480156101a857600080fd5b506101bc6101b73660046108a5565b6102a1565b005b6101006101cc366004610992565b6102c3565b3480156101dd57600080fd5b506101006102d6565b6101f96101f4366004610d7c565b6102dc565b60405161010d929190610ee3565b34801561021357600080fd5b506101536102ef565b6101006101cc366004610acb565b34801561023657600080fd5b506101536102fe565b61010061024d3660046108c8565b61030d565b600061025c610323565b949350505050565b600061026e610323565b9695505050505050565b60025481565b6001546001600160a01b031681565b606080610298610323565b94509492505050565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60006102cd610323565b95945050505050565b60035481565b6000806102e7610323565b935093915050565b6000546001600160a01b031681565b6004546001600160a01b031681565b6000610317610323565b98975050505050505050565b600154600480546003546040516323b872dd60e01b81526001600160a01b03948516946323b872dd9461035e94909116923092909101610e1b565b602060405180830381600087803b15801561037857600080fd5b505af115801561038c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b09190610d00565b6103d55760405162461bcd60e51b81526004016103cc90610eac565b60405180910390fd5b6000546004805460025460405163a9059cbb60e01b81526001600160a01b039485169463a9059cbb9461040d94909116929101610e3f565b602060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045f9190610d00565b61047b5760405162461bcd60e51b81526004016103cc90610e7d565b565b803561048881610f4b565b92915050565b60008083601f84011261049f578182fd5b5081356001600160401b038111156104b5578182fd5b60208301915083602080830285010111156104cf57600080fd5b9250929050565b600082601f8301126104e6578081fd5b81356104f96104f482610f2c565b610f06565b818152915060208083019084810160005b848110156105815781358701604080601f19838c0301121561052b57600080fd5b61053481610f06565b6105408b878501610894565b8152818301356001600160401b0381111561055a57600080fd5b6105688c888387010161067e565b828801525086525050928201929082019060010161050a565b505050505092915050565b600082601f83011261059c578081fd5b81356105aa6104f482610f2c565b81815291506020808301908481016080808502870183018810156105cd57600080fd5b60005b858110156105f4576105e28984610811565b855293830193918101916001016105d0565b50505050505092915050565b600082601f830112610610578081fd5b813561061e6104f482610f2c565b81815291506020808301908481018184028601820187101561063f57600080fd5b6000805b858110156105f45782356001600160801b0381168114610661578283fd5b85529383019391830191600101610643565b803561048881610f63565b600082601f83011261068e578081fd5b81356001600160401b038111156106a3578182fd5b6106b6601f8201601f1916602001610f06565b91508082528360208285010111156106cd57600080fd5b8060208401602084013760009082016020015292915050565b6000606082840312156106f7578081fd5b6107016060610f06565b905061070d8383610894565b81526020820135602082015260408201356001600160401b0381111561073257600080fd5b61073e8482850161067e565b60408301525092915050565b600061014080838503121561075d578182fd5b61076681610f06565b915050610773838361047d565b8152610782836020840161047d565b60208201526107948360408401610866565b60408201526107a68360608401610866565b60608201526107b8836080840161047d565b60808201526107ca8360a0840161047d565b60a08201526107dc8360c0840161047d565b60c082015260e082013560e08201526101006107fa8482850161087d565b818301525061012080830135818301525092915050565b600060808284031215610822578081fd5b61082c6080610f06565b90506108388383610894565b81526108478360208401610894565b6020820152604082013560408201526060820135606082015292915050565b80356001600160801b038116811461048857600080fd5b80356001600160401b038116811461048857600080fd5b803560ff8116811461048857600080fd5b6000602082840312156108b6578081fd5b81356108c181610f4b565b9392505050565b60008060008060008060008060e0898b0312156108e3578384fd5b88356108ee81610f4b565b975060208901356108fe81610f4b565b9650604089013561090e81610f4b565b9550606089013561091e81610f4b565b94506080890135935060a0890135925060c08901356001600160401b0380821115610947578384fd5b818b018c601f820112610958578485fd5b8035925081831115610968578485fd5b8c6020848301011115610979578485fd5b6020810194505050809150509295985092959890939650565b600080600080600060a086880312156109a9578283fd5b85356109b481610f4b565b94506020868101356109c581610f4b565b945060408701356001600160401b038111156109df578485fd5b80880189601f8201126109f0578586fd5b80359150610a006104f483610f2c565b82815283810190828501885b85811015610a3557610a238e8884358801016106e6565b84529286019290860190600101610a0c565b50999c989b50996060810135995060800135979650505050505050565b60008060008060008060a08789031215610a6a578384fd5b8635610a7581610f4b565b95506020870135610a8581610f4b565b9450604087013593506060870135925060808701356001600160401b03811115610aad578283fd5b610ab989828a0161048e565b979a9699509497509295939492505050565b600080600080600060808688031215610ae2578283fd5b85356001600160401b03811115610af7578384fd5b610b038882890161048e565b90965094505060208601359250604086013591506060860135610b2581610f63565b809150509295509295909350565b60008060008060808587031215610b48578182fd5b84356001600160401b0380821115610b5e578384fd5b81870188601f820112610b6f578485fd5b80359250610b7f6104f484610f2c565b80848252602080830192508084018c828389028701011115610b9f578889fd5b8894505b86851015610bc957610bb58d8261047d565b845260019490940193928101928101610ba3565b509098508901359350505080821115610be0578384fd5b50610bed878288016104d6565b949794965050505060408301359260600135919050565b60008060008060808587031215610c19578182fd5b84356001600160401b0380821115610c2f578384fd5b81870188601f820112610c40578485fd5b80359250610c506104f484610f2c565b80848252602080830192508084016101408d83828a028801011115610c7357898afd5b8995505b87861015610c9f57610c898e8361074a565b8552600195909501949382019390810190610c77565b509199508a0135945050505080821115610cb7578384fd5b610cc38883890161058c565b94506040870135915080821115610cd8578384fd5b50610ce587828801610600565b925050610cf58660608701610673565b905092959194509250565b600060208284031215610d11578081fd5b81516108c181610f63565b60008060008060808587031215610d31578182fd5b84356001600160401b03811115610d46578283fd5b610d528782880161067e565b94505060208501359250604085013591506060850135610d7181610f4b565b939692955090935050565b60008060006101e08486031215610d91578081fd5b610d9b858561074a565b9250610dab856101408601610811565b9150610dbb856101c08601610866565b90509250925092565b6000815180845260208085019450808401835b83811015610dfc5781516001600160801b031687529582019590820190600101610dd7565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b600060408252610e6b6040830185610dc4565b82810360208401526102cd8185610dc4565b602080825260159082015274115490cc8c081d1c985b9cd9995c8819985a5b1959605a1b604082015260600190565b60208082526019908201527f4552433230205472616e7366657246726f6d206661696c656400000000000000604082015260600190565b6001600160801b0392831681529116602082015260400190565b90815260200190565b6040518181016001600160401b0381118282101715610f2457600080fd5b604052919050565b60006001600160401b03821115610f41578081fd5b5060209081020190565b6001600160a01b0381168114610f6057600080fd5b50565b8015158114610f6057600080fdfea2646970667358221220332d19999d37d76cf4ed7ca720330102eb80601e8134198ac3a14622eaf1e81664736f6c634300060a0033",
  "deployedBytecode": "0x6080604052600436106100e85760003560e01c80637a1eb1b91161008a578063bce3c75111610059578063bce3c75114610207578063d9627aa41461021c578063dc00152f1461022a578063f7fcd3841461023f576100e8565b80637a1eb1b9146101be578063800accc2146101d15780638182b61f14610116578063aa77476c146101e6576100e8565b806361d97404116100c657806361d974041461013e5780636af479b21461016057806375103cb91461017b57806375e9141d1461019c576100e8565b80630f3b31b2146100ed578063415565b0146101165780634748581514610129575b600080fd5b6101006100fb366004610b33565b610252565b60405161010d9190610efd565b60405180910390f35b610100610124366004610a52565b610264565b34801561013557600080fd5b50610100610278565b34801561014a57600080fd5b5061015361027e565b60405161010d9190610e07565b34801561016c57600080fd5b506101006100fb366004610d1c565b61018e610189366004610c04565b61028d565b60405161010d929190610e58565b3480156101a857600080fd5b506101bc6101b73660046108a5565b6102a1565b005b6101006101cc366004610992565b6102c3565b3480156101dd57600080fd5b506101006102d6565b6101f96101f4366004610d7c565b6102dc565b60405161010d929190610ee3565b34801561021357600080fd5b506101536102ef565b6101006101cc366004610acb565b34801561023657600080fd5b506101536102fe565b61010061024d3660046108c8565b61030d565b600061025c610323565b949350505050565b600061026e610323565b9695505050505050565b60025481565b6001546001600160a01b031681565b606080610298610323565b94509492505050565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60006102cd610323565b95945050505050565b60035481565b6000806102e7610323565b935093915050565b6000546001600160a01b031681565b6004546001600160a01b031681565b6000610317610323565b98975050505050505050565b600154600480546003546040516323b872dd60e01b81526001600160a01b03948516946323b872dd9461035e94909116923092909101610e1b565b602060405180830381600087803b15801561037857600080fd5b505af115801561038c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b09190610d00565b6103d55760405162461bcd60e51b81526004016103cc90610eac565b60405180910390fd5b6000546004805460025460405163a9059cbb60e01b81526001600160a01b039485169463a9059cbb9461040d94909116929101610e3f565b602060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045f9190610d00565b61047b5760405162461bcd60e51b81526004016103cc90610e7d565b565b803561048881610f4b565b92915050565b60008083601f84011261049f578182fd5b5081356001600160401b038111156104b5578182fd5b60208301915083602080830285010111156104cf57600080fd5b9250929050565b600082601f8301126104e6578081fd5b81356104f96104f482610f2c565b610f06565b818152915060208083019084810160005b848110156105815781358701604080601f19838c0301121561052b57600080fd5b61053481610f06565b6105408b878501610894565b8152818301356001600160401b0381111561055a57600080fd5b6105688c888387010161067e565b828801525086525050928201929082019060010161050a565b505050505092915050565b600082601f83011261059c578081fd5b81356105aa6104f482610f2c565b81815291506020808301908481016080808502870183018810156105cd57600080fd5b60005b858110156105f4576105e28984610811565b855293830193918101916001016105d0565b50505050505092915050565b600082601f830112610610578081fd5b813561061e6104f482610f2c565b81815291506020808301908481018184028601820187101561063f57600080fd5b6000805b858110156105f45782356001600160801b0381168114610661578283fd5b85529383019391830191600101610643565b803561048881610f63565b600082601f83011261068e578081fd5b81356001600160401b038111156106a3578182fd5b6106b6601f8201601f1916602001610f06565b91508082528360208285010111156106cd57600080fd5b8060208401602084013760009082016020015292915050565b6000606082840312156106f7578081fd5b6107016060610f06565b905061070d8383610894565b81526020820135602082015260408201356001600160401b0381111561073257600080fd5b61073e8482850161067e565b60408301525092915050565b600061014080838503121561075d578182fd5b61076681610f06565b915050610773838361047d565b8152610782836020840161047d565b60208201526107948360408401610866565b60408201526107a68360608401610866565b60608201526107b8836080840161047d565b60808201526107ca8360a0840161047d565b60a08201526107dc8360c0840161047d565b60c082015260e082013560e08201526101006107fa8482850161087d565b818301525061012080830135818301525092915050565b600060808284031215610822578081fd5b61082c6080610f06565b90506108388383610894565b81526108478360208401610894565b6020820152604082013560408201526060820135606082015292915050565b80356001600160801b038116811461048857600080fd5b80356001600160401b038116811461048857600080fd5b803560ff8116811461048857600080fd5b6000602082840312156108b6578081fd5b81356108c181610f4b565b9392505050565b60008060008060008060008060e0898b0312156108e3578384fd5b88356108ee81610f4b565b975060208901356108fe81610f4b565b9650604089013561090e81610f4b565b9550606089013561091e81610f4b565b94506080890135935060a0890135925060c08901356001600160401b0380821115610947578384fd5b818b018c601f820112610958578485fd5b8035925081831115610968578485fd5b8c6020848301011115610979578485fd5b6020810194505050809150509295985092959890939650565b600080600080600060a086880312156109a9578283fd5b85356109b481610f4b565b94506020868101356109c581610f4b565b945060408701356001600160401b038111156109df578485fd5b80880189601f8201126109f0578586fd5b80359150610a006104f483610f2c565b82815283810190828501885b85811015610a3557610a238e8884358801016106e6565b84529286019290860190600101610a0c565b50999c989b50996060810135995060800135979650505050505050565b60008060008060008060a08789031215610a6a578384fd5b8635610a7581610f4b565b95506020870135610a8581610f4b565b9450604087013593506060870135925060808701356001600160401b03811115610aad578283fd5b610ab989828a0161048e565b979a9699509497509295939492505050565b600080600080600060808688031215610ae2578283fd5b85356001600160401b03811115610af7578384fd5b610b038882890161048e565b90965094505060208601359250604086013591506060860135610b2581610f63565b809150509295509295909350565b60008060008060808587031215610b48578182fd5b84356001600160401b0380821115610b5e578384fd5b81870188601f820112610b6f578485fd5b80359250610b7f6104f484610f2c565b80848252602080830192508084018c828389028701011115610b9f578889fd5b8894505b86851015610bc957610bb58d8261047d565b845260019490940193928101928101610ba3565b509098508901359350505080821115610be0578384fd5b50610bed878288016104d6565b949794965050505060408301359260600135919050565b60008060008060808587031215610c19578182fd5b84356001600160401b0380821115610c2f578384fd5b81870188601f820112610c40578485fd5b80359250610c506104f484610f2c565b80848252602080830192508084016101408d83828a028801011115610c7357898afd5b8995505b87861015610c9f57610c898e8361074a565b8552600195909501949382019390810190610c77565b509199508a0135945050505080821115610cb7578384fd5b610cc38883890161058c565b94506040870135915080821115610cd8578384fd5b50610ce587828801610600565b925050610cf58660608701610673565b905092959194509250565b600060208284031215610d11578081fd5b81516108c181610f63565b60008060008060808587031215610d31578182fd5b84356001600160401b03811115610d46578283fd5b610d528782880161067e565b94505060208501359250604085013591506060850135610d7181610f4b565b939692955090935050565b60008060006101e08486031215610d91578081fd5b610d9b858561074a565b9250610dab856101408601610811565b9150610dbb856101c08601610866565b90509250925092565b6000815180845260208085019450808401835b83811015610dfc5781516001600160801b031687529582019590820190600101610dd7565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b600060408252610e6b6040830185610dc4565b82810360208401526102cd8185610dc4565b602080825260159082015274115490cc8c081d1c985b9cd9995c8819985a5b1959605a1b604082015260600190565b60208082526019908201527f4552433230205472616e7366657246726f6d206661696c656400000000000000604082015260600190565b6001600160801b0392831681529116602082015260400190565b90815260200190565b6040518181016001600160401b0381118282101715610f2457600080fd5b604052919050565b60006001600160401b03821115610f41578081fd5b5060209081020190565b6001600160a01b0381168114610f6057600080fd5b50565b8015158114610f6057600080fdfea2646970667358221220332d19999d37d76cf4ed7ca720330102eb80601e8134198ac3a14622eaf1e81664736f6c634300060a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
