0x60a06040523480156200001157600080fd5b50604051620020a5380380620020a5833981810160405281019062000037919062000201565b620000576200004b6200009260201b60201c565b6200009a60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505062000233565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055620000d081620000d360201b60201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001c9826200019c565b9050919050565b620001db81620001bc565b8114620001e757600080fd5b50565b600081519050620001fb81620001d0565b92915050565b6000602082840312156200021a576200021962000197565b5b60006200022a84828501620001ea565b91505092915050565b608051611e486200025d600039600081816104c1015281816108550152610c2a0152611e486000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063daf49ccd11610097578063e8ec9a7611610066578063e8ec9a761461022a578063f2fde38b14610246578063f4ad533a14610262578063fc0c546a1461027e576100f5565b8063daf49ccd146101b4578063e06f3d38146101d2578063e16056b8146101f0578063e30c39781461020c576100f5565b806379ba5097116100d357806379ba50971461013e5780637ecebe00146101485780638da5cb5b14610178578063d876e28514610196576100f5565b806330be79be146100fa578063715018a614610116578063758497bb14610120575b600080fd5b610114600480360381019061010f9190611435565b61029c565b005b61011e61055d565b005b610128610571565b60405161013591906114f1565b60405180910390f35b610146610597565b005b610162600480360381019061015d9190611538565b610624565b60405161016f9190611574565b60405180910390f35b61018061063c565b60405161018d91906114f1565b60405180910390f35b61019e610665565b6040516101ab919061159e565b60405180910390f35b6101bc61066b565b6040516101c9919061159e565b60405180910390f35b6101da610671565b6040516101e791906114f1565b60405180910390f35b61020a60048036038101906102059190611435565b610697565b005b6102146108f1565b60405161022191906114f1565b60405180910390f35b610244600480360381019061023f91906115b9565b61091b565b005b610260600480360381019061025b9190611538565b61098d565b005b61027c60048036038101906102779190611435565b610a3a565b005b610286610c28565b60405161029391906114f1565b60405180910390f35b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054841461031d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031490611656565b60405180910390fd5b600061032761063c565b3387600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610379906116a5565b9190505560405160200161039094939291906116ed565b60405160208183030381529060405280519060200120905060006103b382610c4c565b905060006103ce86868685610c82909392919063ffffffff16565b90506103d861063c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043c9061177e565b60405180910390fd5b61044d61063c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146104ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b19061177e565b60405180910390fd5b61050533897f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610cad9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58960405161054b9190611574565b60405180910390a25050505050505050565b610565610d33565b61056f6000610db1565b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006105a1610de2565b90508073ffffffffffffffffffffffffffffffffffffffff166105c26108f1565b73ffffffffffffffffffffffffffffffffffffffff1614610618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060f90611810565b60405180910390fd5b61062181610db1565b50565b60026020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b60045481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548414610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f90611656565b60405180910390fd5b600061072261063c565b3387600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405160200161077794939291906116ed565b6040516020818303038152906040528051906020012090508060038190555060006107a182610c4c565b90508060048190555060006107c386868685610c82909392919063ffffffff16565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061080e61063c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061089933897f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610cad9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5896040516108df9190611574565b60405180910390a25050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109809061187c565b60405180910390fd5b5050565b610995610d33565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166109f561063c565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548414610abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab290611656565b60405180910390fd5b6000610ac561063c565b3387600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051602001610b1a94939291906116ed565b604051602081830303815290604052805190602001209050806003819055506000610b4482610c4c565b9050806004819055506000610b6686868685610c82909392919063ffffffff16565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610bb161063c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c159061177e565b60405180910390fd5b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f19457468657265756d205369676e6564204d6573736167653a0a33320000000060005281601c52603c6000209050919050565b6000806000610c9387878787610dea565b91509150610ca081610ecc565b8192505050949350505050565b610d2e8363a9059cbb60e01b8484604051602401610ccc92919061189c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611032565b505050565b610d3b610de2565b73ffffffffffffffffffffffffffffffffffffffff16610d5961063c565b73ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da690611911565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055610ddf816110fa565b50565b600033905090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115610e25576000600391509150610ec3565b600060018787878760405160008152602001604052604051610e4a9493929190611940565b6020604051602081039080840390855afa158015610e6c573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eba57600060019250925050610ec3565b80600092509250505b94509492505050565b60006004811115610ee057610edf611985565b5b816004811115610ef357610ef2611985565b5b031561102f5760016004811115610f0d57610f0c611985565b5b816004811115610f2057610f1f611985565b5b03610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5790611a00565b60405180910390fd5b60026004811115610f7457610f73611985565b5b816004811115610f8757610f86611985565b5b03610fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbe90611a6c565b60405180910390fd5b60036004811115610fdb57610fda611985565b5b816004811115610fee57610fed611985565b5b0361102e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102590611afe565b60405180910390fd5b5b50565b6000611094826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166111be9092919063ffffffff16565b90506000815114806110b65750808060200190518101906110b59190611b56565b5b6110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90611bf5565b60405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60606111cd84846000856111d6565b90509392505050565b60608247101561121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121290611c87565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516112449190611d18565b60006040518083038185875af1925050503d8060008114611281576040519150601f19603f3d011682016040523d82523d6000602084013e611286565b606091505b5091509150611297878383876112a3565b92505050949350505050565b606083156113055760008351036112fd576112bd85611318565b6112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f390611d7b565b60405180910390fd5b5b829050611310565b61130f838361133b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561134e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113829190611df0565b60405180910390fd5b600080fd5b6000819050919050565b6113a381611390565b81146113ae57600080fd5b50565b6000813590506113c08161139a565b92915050565b600060ff82169050919050565b6113dc816113c6565b81146113e757600080fd5b50565b6000813590506113f9816113d3565b92915050565b6000819050919050565b611412816113ff565b811461141d57600080fd5b50565b60008135905061142f81611409565b92915050565b600080600080600060a086880312156114515761145061138b565b5b600061145f888289016113b1565b9550506020611470888289016113b1565b9450506040611481888289016113ea565b935050606061149288828901611420565b92505060806114a388828901611420565b9150509295509295909350565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114db826114b0565b9050919050565b6114eb816114d0565b82525050565b600060208201905061150660008301846114e2565b92915050565b611515816114d0565b811461152057600080fd5b50565b6000813590506115328161150c565b92915050565b60006020828403121561154e5761154d61138b565b5b600061155c84828501611523565b91505092915050565b61156e81611390565b82525050565b60006020820190506115896000830184611565565b92915050565b611598816113ff565b82525050565b60006020820190506115b3600083018461158f565b92915050565b600080604083850312156115d0576115cf61138b565b5b60006115de85828601611523565b92505060206115ef85828601611523565b9150509250929050565b600082825260208201905092915050565b7f496e76616c6964206e6f6e636500000000000000000000000000000000000000600082015250565b6000611640600d836115f9565b915061164b8261160a565b602082019050919050565b6000602082019050818103600083015261166f81611633565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116b082611390565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036116e2576116e1611676565b5b600182019050919050565b600060808201905061170260008301876114e2565b61170f60208301866114e2565b61171c6040830185611565565b6117296060830184611565565b95945050505050565b7f4e6f742076616c6964206f776e65720000000000000000000000000000000000600082015250565b6000611768600f836115f9565b915061177382611732565b602082019050919050565b600060208201905081810360008301526117978161175b565b9050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b60006117fa6029836115f9565b91506118058261179e565b604082019050919050565b60006020820190508181036000830152611829816117ed565b9050919050565b7f213d000000000000000000000000000000000000000000000000000000000000600082015250565b60006118666002836115f9565b915061187182611830565b602082019050919050565b6000602082019050818103600083015261189581611859565b9050919050565b60006040820190506118b160008301856114e2565b6118be6020830184611565565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006118fb6020836115f9565b9150611906826118c5565b602082019050919050565b6000602082019050818103600083015261192a816118ee565b9050919050565b61193a816113c6565b82525050565b6000608082019050611955600083018761158f565b6119626020830186611931565b61196f604083018561158f565b61197c606083018461158f565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006119ea6018836115f9565b91506119f5826119b4565b602082019050919050565b60006020820190508181036000830152611a19816119dd565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b6000611a56601f836115f9565b9150611a6182611a20565b602082019050919050565b60006020820190508181036000830152611a8581611a49565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000611ae86022836115f9565b9150611af382611a8c565b604082019050919050565b60006020820190508181036000830152611b1781611adb565b9050919050565b60008115159050919050565b611b3381611b1e565b8114611b3e57600080fd5b50565b600081519050611b5081611b2a565b92915050565b600060208284031215611b6c57611b6b61138b565b5b6000611b7a84828501611b41565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000611bdf602a836115f9565b9150611bea82611b83565b604082019050919050565b60006020820190508181036000830152611c0e81611bd2565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000611c716026836115f9565b9150611c7c82611c15565b604082019050919050565b60006020820190508181036000830152611ca081611c64565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015611cdb578082015181840152602081019050611cc0565b60008484015250505050565b6000611cf282611ca7565b611cfc8185611cb2565b9350611d0c818560208601611cbd565b80840191505092915050565b6000611d248284611ce7565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000611d65601d836115f9565b9150611d7082611d2f565b602082019050919050565b60006020820190508181036000830152611d9481611d58565b9050919050565b600081519050919050565b6000601f19601f8301169050919050565b6000611dc282611d9b565b611dcc81856115f9565b9350611ddc818560208601611cbd565b611de581611da6565b840191505092915050565b60006020820190508181036000830152611e0a8184611db7565b90509291505056fea2646970667358221220c7315ed4d18a8f81d01b84f0958890fa17bd2f1e8ce87a5f40462104a4a10adc64736f6c634300081300330000000000000000000000007d856c2d91a0f2c20e79028b1c4895037218fee5