0x60806040523480156200001157600080fd5b5062000032620000266200003860201b60201c565b6200004060201b60201c565b62000142565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200007b816200007e60201b62000cbb1760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61233380620001526000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806363eed7d011610097578063b83802f511610066578063b83802f514610234578063dbecc6161461023e578063e30c39781461025a578063f2fde38b14610278576100f5565b806363eed7d0146101d457806379ba5097146101f05780638da5cb5b146101fa5780639db5dbe414610218576100f5565b806306394c9b116100d357806306394c9b146101625780631b54769e1461017e57806326030a341461019a578063570ca735146101b6576100f5565b806301ffc9a7146100fa57806304b38ce01461012a57806305b1137b14610146575b600080fd5b610114600480360381019061010f919061182c565b610294565b6040516101219190611874565b60405180910390f35b610144600480360381019061013f9190611988565b61030e565b005b610160600480360381019061015b91906119fc565b6103ec565b005b61017c60048036038101906101779190611a3c565b610486565b005b61019860048036038101906101939190611a3c565b610618565b005b6101b460048036038101906101af9190611a9f565b6106fe565b005b6101be61082d565b6040516101cb9190611adb565b60405180910390f35b6101ee60048036038101906101e99190611b4c565b610857565b005b6101f86108f7565b005b61020261097b565b60405161020f9190611adb565b60405180910390f35b610232600480360381019061022d9190611bd4565b61098a565b005b61023c610a26565b005b61025860048036038101906102539190611c27565b610abe565b005b610262610b60565b60405161026f9190611adb565b60405180910390f35b610292600480360381019061028d9190611a3c565b610b8a565b005b60007f22b086d4000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610307575061030682610d7f565b5b9050919050565b60008282604051602001610323929190611cd0565b604051602081830303815290604052805190602001206040516020016103499190611d1a565b6040516020818303038152906040528051906020012090506103af858580806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060035483610de9565b6103e5576040517f48bbcdef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b60006103f6610e00565b9050600061040261097b565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146104765781816040517f078c725900000000000000000000000000000000000000000000000000000000815260040161046d929190611d35565b60405180910390fd5b6104808484610e08565b50505050565b6000610490610e00565b9050600061049c61097b565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105105781816040517f078c7259000000000000000000000000000000000000000000000000000000008152600401610507929190611d35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610577576040517f6cca850000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561060a57826040517fb16f97050000000000000000000000000000000000000000000000000000000081526004016106019190611adb565b60405180910390fd5b61061383610f74565b505050565b600061062261097b565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156106b357508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156106f9578281836040517ff88642190000000000000000000000000000000000000000000000000000000081526004016106f093929190611d5e565b60405180910390fd5b505050565b600061070861097b565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610739610e00565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156107a75750610777610e00565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156107f4576107b4610e00565b81836040517f0653ff000000000000000000000000000000000000000000000000000000000081526004016107eb93929190611d5e565b60405180910390fd5b82600381905550827f1466b5f7dcf5cb4873e39dca15990129e32829ccb0f7d5ec6dc516d41650bf1360405160405180910390a2505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610861610e00565b9050600061086d61097b565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108e15781816040517f078c72590000000000000000000000000000000000000000000000000000000081526004016108d8929190611d35565b60405180910390fd5b6108ee878787878761103a565b50505050505050565b6000610901610e00565b90508073ffffffffffffffffffffffffffffffffffffffff16610922610b60565b73ffffffffffffffffffffffffffffffffffffffff161461096f576040517f4b5dfa7d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61097881611186565b50565b60006109856111b7565b905090565b6000610994610e00565b905060006109a061097b565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a145781816040517f078c7259000000000000000000000000000000000000000000000000000000008152600401610a0b929190611d35565b60405180910390fd5b610a1f8585856111e0565b5050505050565b6000610a30610e00565b90506000610a3c61097b565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ab05781816040517f078c7259000000000000000000000000000000000000000000000000000000008152600401610aa7929190611d35565b60405180910390fd5b610aba6000610f74565b5050565b6000610ac8610e00565b90506000610ad461097b565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b485781816040517f078c7259000000000000000000000000000000000000000000000000000000008152600401610b3f929190611d35565b60405180910390fd5b610b568888888888886112de565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610b94610e00565b90506000610ba061097b565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c145781816040517f078c7259000000000000000000000000000000000000000000000000000000008152600401610c0b929190611d35565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff16610c7461097b565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600082610df6858461142f565b1490509392505050565b600033905090565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e70576040517fa8cefabd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683604051610e9690611dc6565b60006040518083038185875af1925050503d8060008114610ed3576040519150601f19603f3d011682016040523d82523d6000602084013e610ed8565b606091505b5050905080610f205783836040517f7304e927000000000000000000000000000000000000000000000000000000008152600401610f17929190611cd0565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff167f2bd8874aee0f667380057c67e3a812157e4b7649b244d6fcbc9094a9a1f7ee1d84604051610f669190611ddb565b60405180910390a250505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd58299b712891143e76310d5e664c4203c940a67db37cf856bdaa3c5c76a802c60405160405180910390a35050565b83600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110a2576040517fa8cefabd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1663b88d4fde30878787876040518663ffffffff1660e01b81526004016110e3959493929190611e54565b600060405180830381600087803b1580156110fd57600080fd5b505af1158015611111573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f958eb1a535a90a0667f75726379cbcb8498dc301be9ba2c585e69907bb3027c986868660405161117693929190611ea2565b60405180910390a3505050505050565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556111b481610cbb565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611248576040517fa8cefabd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61127383838673ffffffffffffffffffffffffffffffffffffffff166114859092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe8de91d538b06154a2c48315768c5046f47e127d7fd3f726fd85cc723f29b052846040516112d09190611ddb565b60405180910390a350505050565b84600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611346576040517fa8cefabd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff1663f242432a3088888888886040518763ffffffff1660e01b815260040161138996959493929190611ed4565b600060405180830381600087803b1580156113a357600080fd5b505af11580156113b7573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f1c84289b4389ba8251b26974eaec89409eb21a1198ca5eb281c86388da2e778b8787878760405161141e9493929190611f30565b60405180910390a350505050505050565b60008082905060005b845181101561147a576114658286838151811061145857611457611f70565b5b602002602001015161150b565b9150808061147290611fce565b915050611438565b508091505092915050565b6115068363a9059cbb60e01b84846040516024016114a4929190611cd0565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611536565b505050565b60008183106115235761151e82846115fd565b61152e565b61152d83836115fd565b5b905092915050565b6000611598826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116149092919063ffffffff16565b90506000815111156115f857808060200190518101906115b89190612043565b6115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee906120f3565b60405180910390fd5b5b505050565b600082600052816020526040600020905092915050565b6060611623848460008561162c565b90509392505050565b606082471015611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890612185565b60405180910390fd5b61167a85611740565b6116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b0906121f1565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516116e29190612280565b60006040518083038185875af1925050503d806000811461171f576040519150601f19603f3d011682016040523d82523d6000602084013e611724565b606091505b5091509150611734828286611763565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60608315611773578290506117c3565b6000835111156117865782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba91906122db565b60405180910390fd5b9392505050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611809816117d4565b811461181457600080fd5b50565b60008135905061182681611800565b92915050565b600060208284031215611842576118416117ca565b5b600061185084828501611817565b91505092915050565b60008115159050919050565b61186e81611859565b82525050565b60006020820190506118896000830184611865565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126118b4576118b361188f565b5b8235905067ffffffffffffffff8111156118d1576118d0611894565b5b6020830191508360208202830111156118ed576118ec611899565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061191f826118f4565b9050919050565b61192f81611914565b811461193a57600080fd5b50565b60008135905061194c81611926565b92915050565b6000819050919050565b61196581611952565b811461197057600080fd5b50565b6000813590506119828161195c565b92915050565b600080600080606085870312156119a2576119a16117ca565b5b600085013567ffffffffffffffff8111156119c0576119bf6117cf565b5b6119cc8782880161189e565b945094505060206119df8782880161193d565b92505060406119f087828801611973565b91505092959194509250565b60008060408385031215611a1357611a126117ca565b5b6000611a218582860161193d565b9250506020611a3285828601611973565b9150509250929050565b600060208284031215611a5257611a516117ca565b5b6000611a608482850161193d565b91505092915050565b6000819050919050565b611a7c81611a69565b8114611a8757600080fd5b50565b600081359050611a9981611a73565b92915050565b600060208284031215611ab557611ab46117ca565b5b6000611ac384828501611a8a565b91505092915050565b611ad581611914565b82525050565b6000602082019050611af06000830184611acc565b92915050565b60008083601f840112611b0c57611b0b61188f565b5b8235905067ffffffffffffffff811115611b2957611b28611894565b5b602083019150836001820283011115611b4557611b44611899565b5b9250929050565b600080600080600060808688031215611b6857611b676117ca565b5b6000611b768882890161193d565b9550506020611b878882890161193d565b9450506040611b9888828901611973565b935050606086013567ffffffffffffffff811115611bb957611bb86117cf565b5b611bc588828901611af6565b92509250509295509295909350565b600080600060608486031215611bed57611bec6117ca565b5b6000611bfb8682870161193d565b9350506020611c0c8682870161193d565b9250506040611c1d86828701611973565b9150509250925092565b60008060008060008060a08789031215611c4457611c436117ca565b5b6000611c5289828a0161193d565b9650506020611c6389828a0161193d565b9550506040611c7489828a01611973565b9450506060611c8589828a01611973565b935050608087013567ffffffffffffffff811115611ca657611ca56117cf565b5b611cb289828a01611af6565b92509250509295509295509295565b611cca81611952565b82525050565b6000604082019050611ce56000830185611acc565b611cf26020830184611cc1565b9392505050565b6000819050919050565b611d14611d0f82611a69565b611cf9565b82525050565b6000611d268284611d03565b60208201915081905092915050565b6000604082019050611d4a6000830185611acc565b611d576020830184611acc565b9392505050565b6000606082019050611d736000830186611acc565b611d806020830185611acc565b611d8d6040830184611acc565b949350505050565b600081905092915050565b50565b6000611db0600083611d95565b9150611dbb82611da0565b600082019050919050565b6000611dd182611da3565b9150819050919050565b6000602082019050611df06000830184611cc1565b92915050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000611e338385611df6565b9350611e40838584611e07565b611e4983611e16565b840190509392505050565b6000608082019050611e696000830188611acc565b611e766020830187611acc565b611e836040830186611cc1565b8181036060830152611e96818486611e27565b90509695505050505050565b6000604082019050611eb76000830186611cc1565b8181036020830152611eca818486611e27565b9050949350505050565b600060a082019050611ee96000830189611acc565b611ef66020830188611acc565b611f036040830187611cc1565b611f106060830186611cc1565b8181036080830152611f23818486611e27565b9050979650505050505050565b6000606082019050611f456000830187611cc1565b611f526020830186611cc1565b8181036040830152611f65818486611e27565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611fd982611952565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561200c5761200b611f9f565b5b600182019050919050565b61202081611859565b811461202b57600080fd5b50565b60008151905061203d81612017565b92915050565b600060208284031215612059576120586117ca565b5b60006120678482850161202e565b91505092915050565b600082825260208201905092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b60006120dd602a83612070565b91506120e882612081565b604082019050919050565b6000602082019050818103600083015261210c816120d0565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b600061216f602683612070565b915061217a82612113565b604082019050919050565b6000602082019050818103600083015261219e81612162565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006121db601d83612070565b91506121e6826121a5565b602082019050919050565b6000602082019050818103600083015261220a816121ce565b9050919050565b600081519050919050565b60005b8381101561223a57808201518184015260208101905061221f565b83811115612249576000848401525b50505050565b600061225a82612211565b6122648185611d95565b935061227481856020860161221c565b80840191505092915050565b600061228c828461224f565b915081905092915050565b600081519050919050565b60006122ad82612297565b6122b78185612070565b93506122c781856020860161221c565b6122d081611e16565b840191505092915050565b600060208201905081810360008301526122f581846122a2565b90509291505056fea2646970667358221220583d92d2fe01e111dc21f7ecac82bf084890d736834000ffd5f71768eb2907b064736f6c634300080a0033