{
  "_format": "hh-sol-artifact-1",
  "contractName": "MixedRouteQuoterV1",
  "sourceName": "contracts/lens/MixedRouteQuoterV1.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_factoryV2",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_WETH9",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "WETH9",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factoryV2",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "path",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "name": "quoteExactInput",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint160[]",
          "name": "v3SqrtPriceX96AfterList",
          "type": "uint160[]"
        },
        {
          "internalType": "uint32[]",
          "name": "v3InitializedTicksCrossedList",
          "type": "uint32[]"
        },
        {
          "internalType": "uint256",
          "name": "v3SwapGasEstimate",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "internalType": "struct IMixedRouteQuoterV1.QuoteExactInputSingleV2Params",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "quoteExactInputSingleV2",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "internalType": "struct IMixedRouteQuoterV1.QuoteExactInputSingleV3Params",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "quoteExactInputSingleV3",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceX96After",
          "type": "uint160"
        },
        {
          "internalType": "uint32",
          "name": "initializedTicksCrossed",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "gasEstimate",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int256",
          "name": "amount0Delta",
          "type": "int256"
        },
        {
          "internalType": "int256",
          "name": "amount1Delta",
          "type": "int256"
        },
        {
          "internalType": "bytes",
          "name": "path",
          "type": "bytes"
        }
      ],
      "name": "trinitySwapCallback",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60e06040523480156200001157600080fd5b506040516200225438038062002254833981016040819052620000349162000078565b6001600160601b0319606093841b811660805290831b811660a052911b1660c052620000c1565b80516001600160a01b03811681146200007357600080fd5b919050565b6000806000606084860312156200008d578283fd5b62000098846200005b565b9250620000a8602085016200005b565b9150620000b8604085016200005b565b90509250925092565b60805160601c60a05160601c60c05160601c61214e6200010660003980610316528061083e52508061012d525080610180528061053252806107fd525061214e6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638a4992861161005b5780638a499286146100bd578063b174a0a7146100dd578063c45a015514610100578063cdca1753146101085761007d565b80634aa4a4fc146100825780634d7bfd2c146100a057806368e0d4e1146100b5575b600080fd5b61008a61012b565b6040516100979190611ea7565b60405180910390f35b6100b36100ae366004611b7a565b61014f565b005b61008a610314565b6100d06100cb366004611c32565b610338565b6040516100979190611fa0565b6100f06100eb366004611c96565b610357565b6040516100979493929190612051565b61008a610530565b61011b610116366004611b14565b610554565b6040516100979493929190611fa9565b7f000000000000000000000000000000000000000000000000000000000000000081565b600083138061015e5750600082135b61016757600080fd5b6000806000610175846107a6565b9250925092506101a77f00000000000000000000000000000000000000000000000000000000000000008484846107d7565b50600080600088136101eb578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16108860000361021f565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610876000035b9150915060006102308686866107f6565b90506000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561027b57600080fd5b505afa15801561028f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b39190611d23565b50505050509150915084156102d957604051848152826020820152816040820152606081fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030b90611f6b565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610351826040015183600001518460200151610834565b92915050565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff8082169084161092849261039592906107f6565b905060005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb0830856103c78c6040015161087d565b60808d015173ffffffffffffffffffffffffffffffffffffffff16156103f1578c60800151610417565b876104105773fffd8963efd1fc6a506488495d951d5263988d25610417565b6401000276a45b8d600001518e606001518f6020015160405160200161043893929190611e41565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610467959493929190611ec8565b6040805180830381600087803b15801561048057600080fd5b505af19250505080156104ce575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526104cb91810190611b57565b60015b610523573d8080156104fc576040519150601f19603f3d011682016040523d82523d6000602084013e610501565b606091505b505a820394506105128184876108af565b975097509750975050505050610529565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000606080600061056486610983565b67ffffffffffffffff8111801561057a57600080fd5b506040519080825280602002602001820160405280156105a4578160200160208202803683370190505b5092506105b086610983565b67ffffffffffffffff811180156105c657600080fd5b506040519080825280602002602001820160405280156105f0578160200160208202803683370190505b50915060005b60008060006106048a6107a6565b919450925090506280000081161561066c5761066560405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018b815250610338565b9850610765565b6000806000806106e96040518060a001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815250610357565b9350935093509350828b89815181106106fe57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a898151811061074557fe5b63ffffffff90921660209283029190910190910152929b50505094909401935b6001909301926107748a6109b2565b15610789576107828a6109ba565b9950610795565b8897505050505061079d565b5050506105f6565b92959194509250565b600080806107b484826109ef565b92506107c1846014610aef565b90506107ce8460176109ef565b91509193909250565b60006107ed856107e8868686610bdf565b610c5c565b95945050505050565b600061082c7f0000000000000000000000000000000000000000000000000000000000000000610827868686610bdf565b610c8c565b949350505050565b60008060006108647f00000000000000000000000000000000000000000000000000000000000000008686610dc2565b91509150610873868383610eaa565b9695505050505050565b60007f800000000000000000000000000000000000000000000000000000000000000082106108ab57600080fd5b5090565b6000806000806000808773ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156108fe57600080fd5b505afa158015610912573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109369190611d23565b5093965061094b94508d9350610f8092505050565b9197509550905061097373ffffffffffffffffffffffffffffffffffffffff89168383611038565b9350869250505093509350935093565b805160177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec909101045b919050565b516042111590565b80516060906103519083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901611690565b600081826014011015610a6357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015610ad657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015610b6357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015610bd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b610be7611a74565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610c1f579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000610c688383610c8c565b90503373ffffffffffffffffffffffffffffffffffffffff82161461035157600080fd5b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610cce57600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b6000806000610dd18585611877565b509050600080610de288888861191c565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610e2757600080fd5b505afa158015610e3b573d6000803e3d6000fd5b505050506040513d6060811015610e5157600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614610e98578082610e9b565b81815b90999098509650505050505050565b6000808411610f1a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f494e53554646494349454e545f494e5055545f414d4f554e5400000000000000604482015290519081900360640190fd5b600083118015610f2a5750600082115b610f3357600080fd5b6000610f41856103e5611a07565b90506000610f4f8285611a07565b90506000610f6983610f63886103e8611a07565b90611a2b565b9050808281610f7457fe5b04979650505050505050565b6000806000835160601461101757604484511015610fca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030b90611f34565b60048401935083806020019051810190610fe49190611bc8565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030b9190611f1a565b8380602001905181019061102b9190611dba565b9250925092509193909250565b60008060008060008060008060088b73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561108c57600080fd5b505afa1580156110a0573d6000803e3d6000fd5b505050506040513d60208110156110b657600080fd5b5051600290810b908c900b816110c857fe5b0560020b901d905060006101008c73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561111b57600080fd5b505afa15801561112f573d6000803e3d6000fd5b505050506040513d602081101561114557600080fd5b5051600290810b908d900b8161115757fe5b0560020b8161116257fe5b079050600060088d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111af57600080fd5b505afa1580156111c3573d6000803e3d6000fd5b505050506040513d60208110156111d957600080fd5b5051600290810b908d900b816111eb57fe5b0560020b901d905060006101008e73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561123e57600080fd5b505afa158015611252573d6000803e3d6000fd5b505050506040513d602081101561126857600080fd5b5051600290810b908e900b8161127a57fe5b0560020b8161128557fe5b07905060008160ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b1580156112e657600080fd5b505afa1580156112fa573d6000803e3d6000fd5b505050506040513d602081101561131057600080fd5b5051161180156113a357508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561136157600080fd5b505afa158015611375573d6000803e3d6000fd5b505050506040513d602081101561138b57600080fd5b5051600290810b908d900b8161139d57fe5b0760020b155b80156113b457508b60020b8d60020b135b945060008360ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561141457600080fd5b505afa158015611428573d6000803e3d6000fd5b505050506040513d602081101561143e57600080fd5b5051161180156114d157508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148f57600080fd5b505afa1580156114a3573d6000803e3d6000fd5b505050506040513d60208110156114b957600080fd5b5051600290810b908e900b816114cb57fe5b0760020b155b80156114e257508b60020b8d60020b125b95508160010b8460010b128061150e57508160010b8460010b14801561150e57508060ff168360ff1611155b1561152457839950829750819850809650611531565b8199508097508398508296505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff87161b9150505b8560010b8760010b13611668578560010b8760010b14156115a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff858103161c165b6000818c73ffffffffffffffffffffffffffffffffffffffff16635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b1580156115f957600080fd5b505afa15801561160d573d6000803e3d6000fd5b505050506040513d602081101561162357600080fd5b505116905061163181611a3b565b61ffff16989098019750506001909501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61155d565b8115611675576001880397505b8215611682576001880397505b505050505050509392505050565b60608182601f01101561170457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b82828401101561177557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b818301845110156117e757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b606082158015611806576040519150600082526020820160405261186e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561183f578051835260209283019201611827565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156118b357600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106118ed5782846118f0565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff821661191557600080fd5b9250929050565b600080600061192b8585611877565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000821580611a2257505081810281838281611a1f57fe5b04145b61035157600080fd5b8082018281101561035157600080fd5b6000805b8215610351577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830190921691600101611a3f565b604080516060810182526000808252602082018190529181019190915290565b600082601f830112611aa4578081fd5b8135611ab7611ab2826120ac565b612088565b818152846020838601011115611acb578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b81146109ad57600080fd5b80356109ad8161211c565b805161ffff811681146109ad57600080fd5b60008060408385031215611b26578182fd5b823567ffffffffffffffff811115611b3c578283fd5b611b4885828601611a94565b95602094909401359450505050565b60008060408385031215611b69578182fd5b505080516020909101519092909150565b600080600060608486031215611b8e578081fd5b8335925060208401359150604084013567ffffffffffffffff811115611bb2578182fd5b611bbe86828701611a94565b9150509250925092565b600060208284031215611bd9578081fd5b815167ffffffffffffffff811115611bef578182fd5b8201601f81018413611bff578182fd5b8051611c0d611ab2826120ac565b818152856020838501011115611c21578384fd5b6107ed8260208301602086016120ec565b600060608284031215611c43578081fd5b6040516060810181811067ffffffffffffffff82111715611c6057fe5b6040528235611c6e8161211c565b81526020830135611c7e8161211c565b60208201526040928301359281019290925250919050565b600060a08284031215611ca7578081fd5b60405160a0810181811067ffffffffffffffff82111715611cc457fe5b6040528235611cd28161211c565b81526020830135611ce28161211c565b602082015260408381013590820152606083013562ffffff81168114611d06578283fd5b6060820152611d1760808401611af7565b60808201529392505050565b600080600080600080600060e0888a031215611d3d578283fd5b8751611d488161211c565b9650611d5660208901611ae5565b9550611d6460408901611b02565b9450611d7260608901611b02565b9350611d8060808901611b02565b925060a088015160ff81168114611d95578283fd5b60c08901519092508015158114611daa578182fd5b8091505092959891949750929550565b600080600060608486031215611dce578081fd5b835192506020840151611de08161211c565b9150611dee60408501611ae5565b90509250925092565b60008151808452611e0f8160208601602086016120ec565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152611f0f60a0830184611df7565b979650505050505050565b600060208252611f2d6020830184611df7565b9392505050565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b6020808252818101527f4578616374206f75747075742071756f7465206e6f7420737570706f72746564604082015260600190565b90815260200190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611fff57845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611fcd565b505084810360408601528651808252908201925081870190845b8181101561203b57825163ffffffff1685529383019391830191600101612019565b5050505060609290920192909252949350505050565b93845273ffffffffffffffffffffffffffffffffffffffff92909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff811182821017156120a457fe5b604052919050565b600067ffffffffffffffff8211156120c057fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110156121075781810151838201526020016120ef565b83811115612116576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461213e57600080fd5b5056fea164736f6c6343000706000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638a4992861161005b5780638a499286146100bd578063b174a0a7146100dd578063c45a015514610100578063cdca1753146101085761007d565b80634aa4a4fc146100825780634d7bfd2c146100a057806368e0d4e1146100b5575b600080fd5b61008a61012b565b6040516100979190611ea7565b60405180910390f35b6100b36100ae366004611b7a565b61014f565b005b61008a610314565b6100d06100cb366004611c32565b610338565b6040516100979190611fa0565b6100f06100eb366004611c96565b610357565b6040516100979493929190612051565b61008a610530565b61011b610116366004611b14565b610554565b6040516100979493929190611fa9565b7f000000000000000000000000000000000000000000000000000000000000000081565b600083138061015e5750600082135b61016757600080fd5b6000806000610175846107a6565b9250925092506101a77f00000000000000000000000000000000000000000000000000000000000000008484846107d7565b50600080600088136101eb578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16108860000361021f565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610876000035b9150915060006102308686866107f6565b90506000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561027b57600080fd5b505afa15801561028f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b39190611d23565b50505050509150915084156102d957604051848152826020820152816040820152606081fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030b90611f6b565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610351826040015183600001518460200151610834565b92915050565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff8082169084161092849261039592906107f6565b905060005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb0830856103c78c6040015161087d565b60808d015173ffffffffffffffffffffffffffffffffffffffff16156103f1578c60800151610417565b876104105773fffd8963efd1fc6a506488495d951d5263988d25610417565b6401000276a45b8d600001518e606001518f6020015160405160200161043893929190611e41565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610467959493929190611ec8565b6040805180830381600087803b15801561048057600080fd5b505af19250505080156104ce575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526104cb91810190611b57565b60015b610523573d8080156104fc576040519150601f19603f3d011682016040523d82523d6000602084013e610501565b606091505b505a820394506105128184876108af565b975097509750975050505050610529565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000606080600061056486610983565b67ffffffffffffffff8111801561057a57600080fd5b506040519080825280602002602001820160405280156105a4578160200160208202803683370190505b5092506105b086610983565b67ffffffffffffffff811180156105c657600080fd5b506040519080825280602002602001820160405280156105f0578160200160208202803683370190505b50915060005b60008060006106048a6107a6565b919450925090506280000081161561066c5761066560405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018b815250610338565b9850610765565b6000806000806106e96040518060a001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815250610357565b9350935093509350828b89815181106106fe57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a898151811061074557fe5b63ffffffff90921660209283029190910190910152929b50505094909401935b6001909301926107748a6109b2565b15610789576107828a6109ba565b9950610795565b8897505050505061079d565b5050506105f6565b92959194509250565b600080806107b484826109ef565b92506107c1846014610aef565b90506107ce8460176109ef565b91509193909250565b60006107ed856107e8868686610bdf565b610c5c565b95945050505050565b600061082c7f0000000000000000000000000000000000000000000000000000000000000000610827868686610bdf565b610c8c565b949350505050565b60008060006108647f00000000000000000000000000000000000000000000000000000000000000008686610dc2565b91509150610873868383610eaa565b9695505050505050565b60007f800000000000000000000000000000000000000000000000000000000000000082106108ab57600080fd5b5090565b6000806000806000808773ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156108fe57600080fd5b505afa158015610912573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109369190611d23565b5093965061094b94508d9350610f8092505050565b9197509550905061097373ffffffffffffffffffffffffffffffffffffffff89168383611038565b9350869250505093509350935093565b805160177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec909101045b919050565b516042111590565b80516060906103519083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901611690565b600081826014011015610a6357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015610ad657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015610b6357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015610bd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b610be7611a74565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610c1f579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000610c688383610c8c565b90503373ffffffffffffffffffffffffffffffffffffffff82161461035157600080fd5b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610cce57600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b6000806000610dd18585611877565b509050600080610de288888861191c565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610e2757600080fd5b505afa158015610e3b573d6000803e3d6000fd5b505050506040513d6060811015610e5157600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614610e98578082610e9b565b81815b90999098509650505050505050565b6000808411610f1a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f494e53554646494349454e545f494e5055545f414d4f554e5400000000000000604482015290519081900360640190fd5b600083118015610f2a5750600082115b610f3357600080fd5b6000610f41856103e5611a07565b90506000610f4f8285611a07565b90506000610f6983610f63886103e8611a07565b90611a2b565b9050808281610f7457fe5b04979650505050505050565b6000806000835160601461101757604484511015610fca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030b90611f34565b60048401935083806020019051810190610fe49190611bc8565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030b9190611f1a565b8380602001905181019061102b9190611dba565b9250925092509193909250565b60008060008060008060008060088b73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561108c57600080fd5b505afa1580156110a0573d6000803e3d6000fd5b505050506040513d60208110156110b657600080fd5b5051600290810b908c900b816110c857fe5b0560020b901d905060006101008c73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561111b57600080fd5b505afa15801561112f573d6000803e3d6000fd5b505050506040513d602081101561114557600080fd5b5051600290810b908d900b8161115757fe5b0560020b8161116257fe5b079050600060088d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111af57600080fd5b505afa1580156111c3573d6000803e3d6000fd5b505050506040513d60208110156111d957600080fd5b5051600290810b908d900b816111eb57fe5b0560020b901d905060006101008e73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561123e57600080fd5b505afa158015611252573d6000803e3d6000fd5b505050506040513d602081101561126857600080fd5b5051600290810b908e900b8161127a57fe5b0560020b8161128557fe5b07905060008160ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b1580156112e657600080fd5b505afa1580156112fa573d6000803e3d6000fd5b505050506040513d602081101561131057600080fd5b5051161180156113a357508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561136157600080fd5b505afa158015611375573d6000803e3d6000fd5b505050506040513d602081101561138b57600080fd5b5051600290810b908d900b8161139d57fe5b0760020b155b80156113b457508b60020b8d60020b135b945060008360ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561141457600080fd5b505afa158015611428573d6000803e3d6000fd5b505050506040513d602081101561143e57600080fd5b5051161180156114d157508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148f57600080fd5b505afa1580156114a3573d6000803e3d6000fd5b505050506040513d60208110156114b957600080fd5b5051600290810b908e900b816114cb57fe5b0760020b155b80156114e257508b60020b8d60020b125b95508160010b8460010b128061150e57508160010b8460010b14801561150e57508060ff168360ff1611155b1561152457839950829750819850809650611531565b8199508097508398508296505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff87161b9150505b8560010b8760010b13611668578560010b8760010b14156115a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff858103161c165b6000818c73ffffffffffffffffffffffffffffffffffffffff16635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b1580156115f957600080fd5b505afa15801561160d573d6000803e3d6000fd5b505050506040513d602081101561162357600080fd5b505116905061163181611a3b565b61ffff16989098019750506001909501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61155d565b8115611675576001880397505b8215611682576001880397505b505050505050509392505050565b60608182601f01101561170457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b82828401101561177557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b818301845110156117e757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b606082158015611806576040519150600082526020820160405261186e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561183f578051835260209283019201611827565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156118b357600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106118ed5782846118f0565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff821661191557600080fd5b9250929050565b600080600061192b8585611877565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000821580611a2257505081810281838281611a1f57fe5b04145b61035157600080fd5b8082018281101561035157600080fd5b6000805b8215610351577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830190921691600101611a3f565b604080516060810182526000808252602082018190529181019190915290565b600082601f830112611aa4578081fd5b8135611ab7611ab2826120ac565b612088565b818152846020838601011115611acb578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b81146109ad57600080fd5b80356109ad8161211c565b805161ffff811681146109ad57600080fd5b60008060408385031215611b26578182fd5b823567ffffffffffffffff811115611b3c578283fd5b611b4885828601611a94565b95602094909401359450505050565b60008060408385031215611b69578182fd5b505080516020909101519092909150565b600080600060608486031215611b8e578081fd5b8335925060208401359150604084013567ffffffffffffffff811115611bb2578182fd5b611bbe86828701611a94565b9150509250925092565b600060208284031215611bd9578081fd5b815167ffffffffffffffff811115611bef578182fd5b8201601f81018413611bff578182fd5b8051611c0d611ab2826120ac565b818152856020838501011115611c21578384fd5b6107ed8260208301602086016120ec565b600060608284031215611c43578081fd5b6040516060810181811067ffffffffffffffff82111715611c6057fe5b6040528235611c6e8161211c565b81526020830135611c7e8161211c565b60208201526040928301359281019290925250919050565b600060a08284031215611ca7578081fd5b60405160a0810181811067ffffffffffffffff82111715611cc457fe5b6040528235611cd28161211c565b81526020830135611ce28161211c565b602082015260408381013590820152606083013562ffffff81168114611d06578283fd5b6060820152611d1760808401611af7565b60808201529392505050565b600080600080600080600060e0888a031215611d3d578283fd5b8751611d488161211c565b9650611d5660208901611ae5565b9550611d6460408901611b02565b9450611d7260608901611b02565b9350611d8060808901611b02565b925060a088015160ff81168114611d95578283fd5b60c08901519092508015158114611daa578182fd5b8091505092959891949750929550565b600080600060608486031215611dce578081fd5b835192506020840151611de08161211c565b9150611dee60408501611ae5565b90509250925092565b60008151808452611e0f8160208601602086016120ec565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152611f0f60a0830184611df7565b979650505050505050565b600060208252611f2d6020830184611df7565b9392505050565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b6020808252818101527f4578616374206f75747075742071756f7465206e6f7420737570706f72746564604082015260600190565b90815260200190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611fff57845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611fcd565b505084810360408601528651808252908201925081870190845b8181101561203b57825163ffffffff1685529383019391830191600101612019565b5050505060609290920192909252949350505050565b93845273ffffffffffffffffffffffffffffffffffffffff92909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff811182821017156120a457fe5b604052919050565b600067ffffffffffffffff8211156120c057fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110156121075781810151838201526020016120ef565b83811115612116576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461213e57600080fd5b5056fea164736f6c6343000706000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
