0x60c06040523480156200001157600080fd5b506040516200392f3803806200392f833981810160405281019062000037919062000246565b620000576200004b6200011060201b60201c565b6200011860201b60201c565b600180819055508273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620002a2565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200020e82620001e1565b9050919050565b620002208162000201565b81146200022c57600080fd5b50565b600081519050620002408162000215565b92915050565b600080600060608486031215620002625762000261620001dc565b5b600062000272868287016200022f565b935050602062000285868287016200022f565b925050604062000298868287016200022f565b9150509250925092565b60805160a05161361a62000315600039600081816102770152611c0a0152600081816102160152818161134a015281816113f70152818161144601528181611990015281816119cc01528181611ae801528181611b9501528181611be401528181611eaf0152611eeb015261361a6000f3fe60806040526004361061008a5760003560e01c8063a6cbf41711610059578063a6cbf41714610137578063ca24fde814610167578063d5f5911614610197578063e449d77c146101c2578063f2fde38b146101eb57610091565b80633fc8cef31461009f578063715018a6146100ca5780638da5cb5b146100e15780639686e9ec1461010c57610091565b3661009157005b34801561009d57600080fd5b005b3480156100ab57600080fd5b506100b4610214565b6040516100c1919061266f565b60405180910390f35b3480156100d657600080fd5b506100df610238565b005b3480156100ed57600080fd5b506100f661024c565b60405161010391906126ab565b60405180910390f35b34801561011857600080fd5b50610121610275565b60405161012e91906126ab565b60405180910390f35b610151600480360381019061014c9190612773565b610299565b60405161015e91906127fd565b60405180910390f35b610181600480360381019061017c91906128d3565b6105dd565b60405161018e91906127fd565b60405180910390f35b3480156101a357600080fd5b506101ac610c67565b6040516101b991906126ab565b60405180910390f35b3480156101ce57600080fd5b506101e960048036038101906101e491906129a6565b610c8d565b005b3480156101f757600080fd5b50610212600480360381019061020d91906129a6565b610dc4565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b610240610e47565b61024a6000610ec5565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006102a3610f89565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036102de578390506105cc565b61030b3330868973ffffffffffffffffffffffffffffffffffffffff16610fd8909392919063ffffffff16565b6000610336308873ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b90506000600181111561034c5761034b6129d3565b5b83600181111561035f5761035e6129d3565b5b036103745761036f878783611293565b6103ad565b600180811115610387576103866129d3565b5b83600181111561039a576103996129d3565b5b036103ac576103aa878783611ac0565b505b5b6103d6308773ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b91508382101561041b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041290612a85565b60405180910390fd5b6000610446308973ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fffebebfb273923089a3ed6bac0fd4686ac740307859becadeb82f998e30db61484866104ba9190612ad4565b6040516104c791906127fd565b60405180910390a460006104fa338973ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b905061052733858a73ffffffffffffffffffffffffffffffffffffffff16611fdd9092919063ffffffff16565b8581610552338b73ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b61055c9190612ad4565b101561059d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059490612b54565b60405180910390fd5b6105c833838b73ffffffffffffffffffffffffffffffffffffffff16611fdd9092919063ffffffff16565b5050505b6105d461210e565b95945050505050565b60006105e7610f89565b6001838390506105f79190612b74565b878790501461063b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063290612bf4565b60405180910390fd5b60008787600081811061065157610650612c14565b5b90506020020160208101906106669190612c43565b90506000888860018b8b905061067c9190612ad4565b81811061068c5761068b612c14565b5b90506020020160208101906106a19190612c43565b90508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106e0578692505050610c55565b61070d3330898573ffffffffffffffffffffffffffffffffffffffff16610fd8909392919063ffffffff16565b6000610738308473ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b90506000600190505b8a8a9050811015610a33578a8a8281811061075f5761075e612c14565b5b90506020020160208101906107749190612c43565b73ffffffffffffffffffffffffffffffffffffffff168b8b6001846107999190612ad4565b8181106107a9576107a8612c14565b5b90506020020160208101906107be9190612c43565b73ffffffffffffffffffffffffffffffffffffffff160315610a2057600060018111156107ee576107ed6129d3565b5b87876001846107fd9190612ad4565b81811061080d5761080c612c14565b5b90506020020160208101906108229190612c70565b6001811115610834576108336129d3565b5b036108fe576108f98b8b60018461084b9190612ad4565b81811061085b5761085a612c14565b5b90506020020160208101906108709190612c43565b8c8c8481811061088357610882612c14565b5b90506020020160208101906108989190612c43565b6108f4308f8f6001886108ab9190612ad4565b8181106108bb576108ba612c14565b5b90506020020160208101906108d09190612c43565b73ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b611293565b610a1f565b600180811115610911576109106129d3565b5b87876001846109209190612ad4565b8181106109305761092f612c14565b5b90506020020160208101906109459190612c70565b6001811115610957576109566129d3565b5b03610a1e57610a1c8b8b60018461096e9190612ad4565b81811061097e5761097d612c14565b5b90506020020160208101906109939190612c43565b8c8c848181106109a6576109a5612c14565b5b90506020020160208101906109bb9190612c43565b610a17308f8f6001886109ce9190612ad4565b8181106109de576109dd612c14565b5b90506020020160208101906109f39190612c43565b73ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b611ac0565b505b5b5b8080610a2b90612c9d565b915050610741565b50610a5d308373ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b935086841015610aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9990612d57565b60405180910390fd5b6000610acd308573ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe8b92af316c53d808857f3a3735b431e5fd03fb223bfb8a397af9c179974bed48486610b419190612ad4565b604051610b4e91906127fd565b60405180910390a46000610b81338573ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b9050610bae33878673ffffffffffffffffffffffffffffffffffffffff16611fdd9092919063ffffffff16565b8881610bd9338773ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b610be39190612ad4565b1015610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90612de9565b60405180910390fd5b610c4f33838773ffffffffffffffffffffffffffffffffffffffff16611fdd9092919063ffffffff16565b50505050505b610c5d61210e565b9695505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c95610e47565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90612e7b565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff09c33b4a1bf40cbb338d09d6de033e08e296d62f61d55e9f72ea9c8a9d4173860405160405180910390a350565b610dcc610e47565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3290612f0d565b60405180910390fd5b610e4481610ec5565b50565b610e4f612117565b73ffffffffffffffffffffffffffffffffffffffff16610e6d61024c565b73ffffffffffffffffffffffffffffffffffffffff1614610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba90612f79565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc590612fe5565b60405180910390fd5b6002600181905550565b60008111156111db57610fea8461211f565b156111ac5780341015611029576040517fe2f844a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461108e576040517f2a9c363d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110f3576040517f57ca390a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803411156111a75760008373ffffffffffffffffffffffffffffffffffffffff168234036113889060405161112790613036565b600060405180830381858888f193505050503d8060008114611165576040519150601f19603f3d011682016040523d82523d6000602084013e61116a565b606091505b50509050806111a5576040517fb12d13eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6111da565b6111d98383838773ffffffffffffffffffffffffffffffffffffffff166121a1909392919063ffffffff16565b5b5b50505050565b60006111ec8361211f565b15611210578173ffffffffffffffffffffffffffffffffffffffff1631905061128d565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161124991906126ab565b602060405180830381865afa158015611266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128a9190613060565b90505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90612e7b565b60405180910390fd5b6113438373ffffffffffffffffffffffffffffffffffffffff1661211f565b156113ca577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113b057600080fd5b505af11580156113c4573d6000803e3d6000fd5b50505050505b60006113eb8473ffffffffffffffffffffffffffffffffffffffff1661211f565b6113f55783611417565b7f00000000000000000000000000000000000000000000000000000000000000005b9050600061143a8473ffffffffffffffffffffffffffffffffffffffff1661211f565b6114445783611466565b7f00000000000000000000000000000000000000000000000000000000000000005b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663400f7a1e84846040518363ffffffff1660e01b81526004016114c792919061308d565b608060405180830381865afa1580156114e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150891906131d4565b9050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361154a57505050611abb565b6000816000015190506000600267ffffffffffffffff8111156115705761156f6130cc565b5b60405190808252806020026020018201604052801561159e5781602001602082028036833780820191505090505b5090508173ffffffffffffffffffffffffffffffffffffffff1663c661065760006040518263ffffffff1660e01b81526004016115db91906127fd565b602060405180830381865afa1580156115f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161c9190613201565b816000815181106116305761162f612c14565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663c661065760016040518263ffffffff1660e01b81526004016116a491906127fd565b602060405180830381865afa1580156116c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e59190613201565b816001815181106116f9576116f8612c14565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008160018151811061174957611748612c14565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461178a57600061178d565b60025b826000815181106117a1576117a0612c14565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146117e25760006117e5565b60015b6117ef919061323b565b60ff16905060008260018151811061180a57611809612c14565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461184b57600061184e565b60025b8360008151811061186257611861612c14565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146118a35760006118a6565b60015b6118b0919061323b565b60ff1690506118e084898973ffffffffffffffffffffffffffffffffffffffff166122409092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16635b41b9086001846119099190612ad4565b6001846119169190612ad4565b8b60006040518563ffffffff1660e01b815260040161193894939291906132ab565b600060405180830381600087803b15801561195257600080fd5b505af1158015611966573d6000803e3d6000fd5b505050506119898973ffffffffffffffffffffffffffffffffffffffff1661211f565b15611ab3577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a2391906126ab565b602060405180830381865afa158015611a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a649190613060565b6040518263ffffffff1660e01b8152600401611a8091906127fd565b600060405180830381600087803b158015611a9a57600080fd5b505af1158015611aae573d6000803e3d6000fd5b505050505b505050505050505b505050565b6000611ae18473ffffffffffffffffffffffffffffffffffffffff1661211f565b15611b68577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015611b4e57600080fd5b505af1158015611b62573d6000803e3d6000fd5b50505050505b6000611b898573ffffffffffffffffffffffffffffffffffffffff1661211f565b611b935784611bb5565b7f00000000000000000000000000000000000000000000000000000000000000005b90506000611bd88573ffffffffffffffffffffffffffffffffffffffff1661211f565b611be25784611c04565b7f00000000000000000000000000000000000000000000000000000000000000005b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390584846040518363ffffffff1660e01b8152600401611c63929190613311565b602060405180830381865afa158015611c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca49190613378565b9050611cd181868573ffffffffffffffffffffffffffffffffffffffff166122b09092919063ffffffff16565b6000611d008484888573ffffffffffffffffffffffffffffffffffffffff166122fe909392919063ffffffff16565b80925081965050508015611d6f578173ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d5657600080fd5b505af1158015611d6a573d6000803e3d6000fd5b505050505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161015611e18578173ffffffffffffffffffffffffffffffffffffffff1663022c0d9f600087306040518463ffffffff1660e01b8152600401611de1939291906133d9565b600060405180830381600087803b158015611dfb57600080fd5b505af1158015611e0f573d6000803e3d6000fd5b50505050611e89565b8173ffffffffffffffffffffffffffffffffffffffff1663022c0d9f866000306040518463ffffffff1660e01b8152600401611e5693929190613423565b600060405180830381600087803b158015611e7057600080fd5b505af1158015611e84573d6000803e3d6000fd5b505050505b611ea88773ffffffffffffffffffffffffffffffffffffffff1661211f565b15611fd2577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f4291906126ab565b602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190613060565b6040518263ffffffff1660e01b8152600401611f9f91906127fd565b600060405180830381600087803b158015611fb957600080fd5b505af1158015611fcd573d6000803e3d6000fd5b505050505b505050509392505050565b600081111561210957611fef8361211f565b156120dc578047101561202e576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826113889060405161205890613036565b600060405180830381858888f193505050503d8060008114612096576040519150601f19603f3d011682016040523d82523d6000602084013e61209b565b606091505b50509050806120d6576040517fb12d13eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50612108565b61210782828573ffffffffffffffffffffffffffffffffffffffff166122b09092919063ffffffff16565b5b5b505050565b60018081905550565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061219a575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b60006323b872dd60e01b905060006040518281528560048201528460248201528360448201526020600060648360008b5af191508115612200573d600081146121f657600160005114601f3d111692506121fe565b6000883b1192505b505b5080612238576040517ff405907100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6122498361211f565b15612280576040517f4ca17a9900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122ab82828573ffffffffffffffffffffffffffffffffffffffff166124fd9092919063ffffffff16565b505050565b6122c38363a9059cbb60e01b8484612581565b6122f9576040517ffb7f507900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600061232c878773ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b90506000612359888773ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b90506000808973ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cd91906134ef565b50915091508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16111561241157808280925081935050505b816dffffffffffffffffffffffffffff168461242d9190612ad4565b9650816dffffffffffffffffffffffffffff1684108061245c5750806dffffffffffffffffffffffffffff1683105b945060006103e58861246e9190613542565b9050600061248c85846dffffffffffffffffffffffffffff166125d7565b826124979190613542565b90506000826103e86124b989886dffffffffffffffffffffffffffff166125d7565b6124c39190613542565b6124cd9190612b74565b9050600081146124e85780826124e391906135b3565b6124eb565b60005b98505050505050505094509492505050565b6125108363095ea7b360e01b8484612581565b61257c576125288363095ea7b360e01b846000612581565b158061254457506125428363095ea7b360e01b8484612581565b155b1561257b576040517f19be9a9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b60006040518481528360048201528260248201526020600060448360008a5af1915081156125ce573d600081146125c457600160005114601f3d111692506125cc565b6000873b1192505b505b50949350505050565b60008183106125e657816125e8565b825b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061263561263061262b846125f0565b612610565b6125f0565b9050919050565b60006126478261261a565b9050919050565b60006126598261263c565b9050919050565b6126698161264e565b82525050565b60006020820190506126846000830184612660565b92915050565b6000612695826125f0565b9050919050565b6126a58161268a565b82525050565b60006020820190506126c0600083018461269c565b92915050565b6000604051905090565b600080fd5b600080fd5b60006126e58261268a565b9050919050565b6126f5816126da565b811461270057600080fd5b50565b600081359050612712816126ec565b92915050565b6000819050919050565b61272b81612718565b811461273657600080fd5b50565b60008135905061274881612722565b92915050565b6002811061275b57600080fd5b50565b60008135905061276d8161274e565b92915050565b600080600080600060a0868803121561278f5761278e6126d0565b5b600061279d88828901612703565b95505060206127ae88828901612703565b94505060406127bf88828901612739565b93505060606127d088828901612739565b92505060806127e18882890161275e565b9150509295509295909350565b6127f781612718565b82525050565b600060208201905061281260008301846127ee565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261283d5761283c612818565b5b8235905067ffffffffffffffff81111561285a5761285961281d565b5b60208301915083602082028301111561287657612875612822565b5b9250929050565b60008083601f84011261289357612892612818565b5b8235905067ffffffffffffffff8111156128b0576128af61281d565b5b6020830191508360208202830111156128cc576128cb612822565b5b9250929050565b600080600080600080608087890312156128f0576128ef6126d0565b5b600087013567ffffffffffffffff81111561290e5761290d6126d5565b5b61291a89828a01612827565b9650965050602061292d89828a01612739565b945050604061293e89828a01612739565b935050606087013567ffffffffffffffff81111561295f5761295e6126d5565b5b61296b89828a0161287d565b92509250509295509295509295565b6129838161268a565b811461298e57600080fd5b50565b6000813590506129a08161297a565b92915050565b6000602082840312156129bc576129bb6126d0565b5b60006129ca84828501612991565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082825260208201905092915050565b7f737761703a2072657475726e20616d6f756e74206973206c657373207468616e60008201527f206d696e52657475726e00000000000000000000000000000000000000000000602082015250565b6000612a6f602a83612a02565b9150612a7a82612a13565b604082019050919050565b60006020820190508181036000830152612a9e81612a62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612adf82612718565b9150612aea83612718565b9250828203905081811115612b0257612b01612aa5565b5b92915050565b7f737761703a20696e636f727265637420757365722062616c616e636500000000600082015250565b6000612b3e601c83612a02565b9150612b4982612b08565b602082019050919050565b60006020820190508181036000830152612b6d81612b31565b9050919050565b6000612b7f82612718565b9150612b8a83612718565b9250828201905080821115612ba257612ba1612aa5565b5b92915050565b7f737761704d756c74693a2077726f6e67206c656e677468000000000000000000600082015250565b6000612bde601783612a02565b9150612be982612ba8565b602082019050919050565b60006020820190508181036000830152612c0d81612bd1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612c5957612c586126d0565b5b6000612c6784828501612703565b91505092915050565b600060208284031215612c8657612c856126d0565b5b6000612c948482850161275e565b91505092915050565b6000612ca882612718565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612cda57612cd9612aa5565b5b600182019050919050565b7f737761704d756c74693a2072657475726e20616d6f756e74206973206c65737360008201527f207468616e206d696e52657475726e0000000000000000000000000000000000602082015250565b6000612d41602f83612a02565b9150612d4c82612ce5565b604082019050919050565b60006020820190508181036000830152612d7081612d34565b9050919050565b7f737761704d756c74693a20696e636f727265637420757365722062616c616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000612dd3602183612a02565b9150612dde82612d77565b604082019050919050565b60006020820190508181036000830152612e0281612dc6565b9050919050565b7f537461626c655377617020666163746f72792063616e6e6f74206265207a657260008201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b6000612e65602983612a02565b9150612e7082612e09565b604082019050919050565b60006020820190508181036000830152612e9481612e58565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612ef7602683612a02565b9150612f0282612e9b565b604082019050919050565b60006020820190508181036000830152612f2681612eea565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f63602083612a02565b9150612f6e82612f2d565b602082019050919050565b60006020820190508181036000830152612f9281612f56565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000612fcf601f83612a02565b9150612fda82612f99565b602082019050919050565b60006020820190508181036000830152612ffe81612fc2565b9050919050565b600081905092915050565b50565b6000613020600083613005565b915061302b82613010565b600082019050919050565b600061304182613013565b9150819050919050565b60008151905061305a81612722565b92915050565b600060208284031215613076576130756126d0565b5b60006130848482850161304b565b91505092915050565b60006040820190506130a2600083018561269c565b6130af602083018461269c565b9392505050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613104826130bb565b810181811067ffffffffffffffff82111715613123576131226130cc565b5b80604052505050565b60006131366126c6565b905061314282826130fb565b919050565b6000815190506131568161297a565b92915050565b600060808284031215613172576131716130b6565b5b61317c608061312c565b9050600061318c84828501613147565b60008301525060206131a084828501613147565b60208301525060406131b484828501613147565b60408301525060606131c884828501613147565b60608301525092915050565b6000608082840312156131ea576131e96126d0565b5b60006131f88482850161315c565b91505092915050565b600060208284031215613217576132166126d0565b5b600061322584828501613147565b91505092915050565b600060ff82169050919050565b60006132468261322e565b91506132518361322e565b9250828201905060ff81111561326a57613269612aa5565b5b92915050565b6000819050919050565b600061329561329061328b84613270565b612610565b612718565b9050919050565b6132a58161327a565b82525050565b60006080820190506132c060008301876127ee565b6132cd60208301866127ee565b6132da60408301856127ee565b6132e7606083018461329c565b95945050505050565b60006132fb8261263c565b9050919050565b61330b816132f0565b82525050565b60006040820190506133266000830185613302565b6133336020830184613302565b9392505050565b60006133458261268a565b9050919050565b6133558161333a565b811461336057600080fd5b50565b6000815190506133728161334c565b92915050565b60006020828403121561338e5761338d6126d0565b5b600061339c84828501613363565b91505092915050565b600082825260208201905092915050565b60006133c36000836133a5565b91506133ce82613010565b600082019050919050565b60006080820190506133ee600083018661329c565b6133fb60208301856127ee565b613408604083018461269c565b8181036060830152613419816133b6565b9050949350505050565b600060808201905061343860008301866127ee565b613445602083018561329c565b613452604083018461269c565b8181036060830152613463816133b6565b9050949350505050565b60006dffffffffffffffffffffffffffff82169050919050565b6134908161346d565b811461349b57600080fd5b50565b6000815190506134ad81613487565b92915050565b600063ffffffff82169050919050565b6134cc816134b3565b81146134d757600080fd5b50565b6000815190506134e9816134c3565b92915050565b600080600060608486031215613508576135076126d0565b5b60006135168682870161349e565b93505060206135278682870161349e565b9250506040613538868287016134da565b9150509250925092565b600061354d82612718565b915061355883612718565b925082820261356681612718565b9150828204841483151761357d5761357c612aa5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135be82612718565b91506135c983612718565b9250826135d9576135d8613584565b5b82820490509291505056fea2646970667358221220bb2876a123c84e0d9590655755ca1919f7994ef63d780aa03d1923881c728a6f64736f6c63430008120033000000000000000000000000722e8bdd2ce80a4422e880164f2079488e115365000000000000000000000000f6239423fcf1c19ed2791d9648a90836074242fd00000000000000000000000011f6206aef570ae946c0117c8f4b298b0a706f18
0x60806040526004361061008a5760003560e01c8063a6cbf41711610059578063a6cbf41714610137578063ca24fde814610167578063d5f5911614610197578063e449d77c146101c2578063f2fde38b146101eb57610091565b80633fc8cef31461009f578063715018a6146100ca5780638da5cb5b146100e15780639686e9ec1461010c57610091565b3661009157005b34801561009d57600080fd5b005b3480156100ab57600080fd5b506100b4610214565b6040516100c1919061266f565b60405180910390f35b3480156100d657600080fd5b506100df610238565b005b3480156100ed57600080fd5b506100f661024c565b60405161010391906126ab565b60405180910390f35b34801561011857600080fd5b50610121610275565b60405161012e91906126ab565b60405180910390f35b610151600480360381019061014c9190612773565b610299565b60405161015e91906127fd565b60405180910390f35b610181600480360381019061017c91906128d3565b6105dd565b60405161018e91906127fd565b60405180910390f35b3480156101a357600080fd5b506101ac610c67565b6040516101b991906126ab565b60405180910390f35b3480156101ce57600080fd5b506101e960048036038101906101e491906129a6565b610c8d565b005b3480156101f757600080fd5b50610212600480360381019061020d91906129a6565b610dc4565b005b7f000000000000000000000000722e8bdd2ce80a4422e880164f2079488e11536581565b610240610e47565b61024a6000610ec5565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000f6239423fcf1c19ed2791d9648a90836074242fd81565b60006102a3610f89565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036102de578390506105cc565b61030b3330868973ffffffffffffffffffffffffffffffffffffffff16610fd8909392919063ffffffff16565b6000610336308873ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b90506000600181111561034c5761034b6129d3565b5b83600181111561035f5761035e6129d3565b5b036103745761036f878783611293565b6103ad565b600180811115610387576103866129d3565b5b83600181111561039a576103996129d3565b5b036103ac576103aa878783611ac0565b505b5b6103d6308773ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b91508382101561041b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041290612a85565b60405180910390fd5b6000610446308973ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fffebebfb273923089a3ed6bac0fd4686ac740307859becadeb82f998e30db61484866104ba9190612ad4565b6040516104c791906127fd565b60405180910390a460006104fa338973ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b905061052733858a73ffffffffffffffffffffffffffffffffffffffff16611fdd9092919063ffffffff16565b8581610552338b73ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b61055c9190612ad4565b101561059d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059490612b54565b60405180910390fd5b6105c833838b73ffffffffffffffffffffffffffffffffffffffff16611fdd9092919063ffffffff16565b5050505b6105d461210e565b95945050505050565b60006105e7610f89565b6001838390506105f79190612b74565b878790501461063b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063290612bf4565b60405180910390fd5b60008787600081811061065157610650612c14565b5b90506020020160208101906106669190612c43565b90506000888860018b8b905061067c9190612ad4565b81811061068c5761068b612c14565b5b90506020020160208101906106a19190612c43565b90508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106e0578692505050610c55565b61070d3330898573ffffffffffffffffffffffffffffffffffffffff16610fd8909392919063ffffffff16565b6000610738308473ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b90506000600190505b8a8a9050811015610a33578a8a8281811061075f5761075e612c14565b5b90506020020160208101906107749190612c43565b73ffffffffffffffffffffffffffffffffffffffff168b8b6001846107999190612ad4565b8181106107a9576107a8612c14565b5b90506020020160208101906107be9190612c43565b73ffffffffffffffffffffffffffffffffffffffff160315610a2057600060018111156107ee576107ed6129d3565b5b87876001846107fd9190612ad4565b81811061080d5761080c612c14565b5b90506020020160208101906108229190612c70565b6001811115610834576108336129d3565b5b036108fe576108f98b8b60018461084b9190612ad4565b81811061085b5761085a612c14565b5b90506020020160208101906108709190612c43565b8c8c8481811061088357610882612c14565b5b90506020020160208101906108989190612c43565b6108f4308f8f6001886108ab9190612ad4565b8181106108bb576108ba612c14565b5b90506020020160208101906108d09190612c43565b73ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b611293565b610a1f565b600180811115610911576109106129d3565b5b87876001846109209190612ad4565b8181106109305761092f612c14565b5b90506020020160208101906109459190612c70565b6001811115610957576109566129d3565b5b03610a1e57610a1c8b8b60018461096e9190612ad4565b81811061097e5761097d612c14565b5b90506020020160208101906109939190612c43565b8c8c848181106109a6576109a5612c14565b5b90506020020160208101906109bb9190612c43565b610a17308f8f6001886109ce9190612ad4565b8181106109de576109dd612c14565b5b90506020020160208101906109f39190612c43565b73ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b611ac0565b505b5b5b8080610a2b90612c9d565b915050610741565b50610a5d308373ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b935086841015610aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9990612d57565b60405180910390fd5b6000610acd308573ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe8b92af316c53d808857f3a3735b431e5fd03fb223bfb8a397af9c179974bed48486610b419190612ad4565b604051610b4e91906127fd565b60405180910390a46000610b81338573ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b9050610bae33878673ffffffffffffffffffffffffffffffffffffffff16611fdd9092919063ffffffff16565b8881610bd9338773ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b610be39190612ad4565b1015610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90612de9565b60405180910390fd5b610c4f33838773ffffffffffffffffffffffffffffffffffffffff16611fdd9092919063ffffffff16565b50505050505b610c5d61210e565b9695505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c95610e47565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90612e7b565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff09c33b4a1bf40cbb338d09d6de033e08e296d62f61d55e9f72ea9c8a9d4173860405160405180910390a350565b610dcc610e47565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3290612f0d565b60405180910390fd5b610e4481610ec5565b50565b610e4f612117565b73ffffffffffffffffffffffffffffffffffffffff16610e6d61024c565b73ffffffffffffffffffffffffffffffffffffffff1614610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba90612f79565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc590612fe5565b60405180910390fd5b6002600181905550565b60008111156111db57610fea8461211f565b156111ac5780341015611029576040517fe2f844a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461108e576040517f2a9c363d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110f3576040517f57ca390a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803411156111a75760008373ffffffffffffffffffffffffffffffffffffffff168234036113889060405161112790613036565b600060405180830381858888f193505050503d8060008114611165576040519150601f19603f3d011682016040523d82523d6000602084013e61116a565b606091505b50509050806111a5576040517fb12d13eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6111da565b6111d98383838773ffffffffffffffffffffffffffffffffffffffff166121a1909392919063ffffffff16565b5b5b50505050565b60006111ec8361211f565b15611210578173ffffffffffffffffffffffffffffffffffffffff1631905061128d565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161124991906126ab565b602060405180830381865afa158015611266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128a9190613060565b90505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90612e7b565b60405180910390fd5b6113438373ffffffffffffffffffffffffffffffffffffffff1661211f565b156113ca577f000000000000000000000000722e8bdd2ce80a4422e880164f2079488e11536573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113b057600080fd5b505af11580156113c4573d6000803e3d6000fd5b50505050505b60006113eb8473ffffffffffffffffffffffffffffffffffffffff1661211f565b6113f55783611417565b7f000000000000000000000000722e8bdd2ce80a4422e880164f2079488e1153655b9050600061143a8473ffffffffffffffffffffffffffffffffffffffff1661211f565b6114445783611466565b7f000000000000000000000000722e8bdd2ce80a4422e880164f2079488e1153655b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663400f7a1e84846040518363ffffffff1660e01b81526004016114c792919061308d565b608060405180830381865afa1580156114e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150891906131d4565b9050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361154a57505050611abb565b6000816000015190506000600267ffffffffffffffff8111156115705761156f6130cc565b5b60405190808252806020026020018201604052801561159e5781602001602082028036833780820191505090505b5090508173ffffffffffffffffffffffffffffffffffffffff1663c661065760006040518263ffffffff1660e01b81526004016115db91906127fd565b602060405180830381865afa1580156115f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161c9190613201565b816000815181106116305761162f612c14565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663c661065760016040518263ffffffff1660e01b81526004016116a491906127fd565b602060405180830381865afa1580156116c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e59190613201565b816001815181106116f9576116f8612c14565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008160018151811061174957611748612c14565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461178a57600061178d565b60025b826000815181106117a1576117a0612c14565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146117e25760006117e5565b60015b6117ef919061323b565b60ff16905060008260018151811061180a57611809612c14565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461184b57600061184e565b60025b8360008151811061186257611861612c14565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146118a35760006118a6565b60015b6118b0919061323b565b60ff1690506118e084898973ffffffffffffffffffffffffffffffffffffffff166122409092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16635b41b9086001846119099190612ad4565b6001846119169190612ad4565b8b60006040518563ffffffff1660e01b815260040161193894939291906132ab565b600060405180830381600087803b15801561195257600080fd5b505af1158015611966573d6000803e3d6000fd5b505050506119898973ffffffffffffffffffffffffffffffffffffffff1661211f565b15611ab3577f000000000000000000000000722e8bdd2ce80a4422e880164f2079488e11536573ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d7f000000000000000000000000722e8bdd2ce80a4422e880164f2079488e11536573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a2391906126ab565b602060405180830381865afa158015611a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a649190613060565b6040518263ffffffff1660e01b8152600401611a8091906127fd565b600060405180830381600087803b158015611a9a57600080fd5b505af1158015611aae573d6000803e3d6000fd5b505050505b505050505050505b505050565b6000611ae18473ffffffffffffffffffffffffffffffffffffffff1661211f565b15611b68577f000000000000000000000000722e8bdd2ce80a4422e880164f2079488e11536573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015611b4e57600080fd5b505af1158015611b62573d6000803e3d6000fd5b50505050505b6000611b898573ffffffffffffffffffffffffffffffffffffffff1661211f565b611b935784611bb5565b7f000000000000000000000000722e8bdd2ce80a4422e880164f2079488e1153655b90506000611bd88573ffffffffffffffffffffffffffffffffffffffff1661211f565b611be25784611c04565b7f000000000000000000000000722e8bdd2ce80a4422e880164f2079488e1153655b905060007f000000000000000000000000f6239423fcf1c19ed2791d9648a90836074242fd73ffffffffffffffffffffffffffffffffffffffff1663e6a4390584846040518363ffffffff1660e01b8152600401611c63929190613311565b602060405180830381865afa158015611c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca49190613378565b9050611cd181868573ffffffffffffffffffffffffffffffffffffffff166122b09092919063ffffffff16565b6000611d008484888573ffffffffffffffffffffffffffffffffffffffff166122fe909392919063ffffffff16565b80925081965050508015611d6f578173ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611d5657600080fd5b505af1158015611d6a573d6000803e3d6000fd5b505050505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161015611e18578173ffffffffffffffffffffffffffffffffffffffff1663022c0d9f600087306040518463ffffffff1660e01b8152600401611de1939291906133d9565b600060405180830381600087803b158015611dfb57600080fd5b505af1158015611e0f573d6000803e3d6000fd5b50505050611e89565b8173ffffffffffffffffffffffffffffffffffffffff1663022c0d9f866000306040518463ffffffff1660e01b8152600401611e5693929190613423565b600060405180830381600087803b158015611e7057600080fd5b505af1158015611e84573d6000803e3d6000fd5b505050505b611ea88773ffffffffffffffffffffffffffffffffffffffff1661211f565b15611fd2577f000000000000000000000000722e8bdd2ce80a4422e880164f2079488e11536573ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d7f000000000000000000000000722e8bdd2ce80a4422e880164f2079488e11536573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f4291906126ab565b602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190613060565b6040518263ffffffff1660e01b8152600401611f9f91906127fd565b600060405180830381600087803b158015611fb957600080fd5b505af1158015611fcd573d6000803e3d6000fd5b505050505b505050509392505050565b600081111561210957611fef8361211f565b156120dc578047101561202e576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826113889060405161205890613036565b600060405180830381858888f193505050503d8060008114612096576040519150601f19603f3d011682016040523d82523d6000602084013e61209b565b606091505b50509050806120d6576040517fb12d13eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50612108565b61210782828573ffffffffffffffffffffffffffffffffffffffff166122b09092919063ffffffff16565b5b5b505050565b60018081905550565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061219a575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b60006323b872dd60e01b905060006040518281528560048201528460248201528360448201526020600060648360008b5af191508115612200573d600081146121f657600160005114601f3d111692506121fe565b6000883b1192505b505b5080612238576040517ff405907100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6122498361211f565b15612280576040517f4ca17a9900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122ab82828573ffffffffffffffffffffffffffffffffffffffff166124fd9092919063ffffffff16565b505050565b6122c38363a9059cbb60e01b8484612581565b6122f9576040517ffb7f507900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600061232c878773ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b90506000612359888773ffffffffffffffffffffffffffffffffffffffff166111e190919063ffffffff16565b90506000808973ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cd91906134ef565b50915091508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16111561241157808280925081935050505b816dffffffffffffffffffffffffffff168461242d9190612ad4565b9650816dffffffffffffffffffffffffffff1684108061245c5750806dffffffffffffffffffffffffffff1683105b945060006103e58861246e9190613542565b9050600061248c85846dffffffffffffffffffffffffffff166125d7565b826124979190613542565b90506000826103e86124b989886dffffffffffffffffffffffffffff166125d7565b6124c39190613542565b6124cd9190612b74565b9050600081146124e85780826124e391906135b3565b6124eb565b60005b98505050505050505094509492505050565b6125108363095ea7b360e01b8484612581565b61257c576125288363095ea7b360e01b846000612581565b158061254457506125428363095ea7b360e01b8484612581565b155b1561257b576040517f19be9a9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b60006040518481528360048201528260248201526020600060448360008a5af1915081156125ce573d600081146125c457600160005114601f3d111692506125cc565b6000873b1192505b505b50949350505050565b60008183106125e657816125e8565b825b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061263561263061262b846125f0565b612610565b6125f0565b9050919050565b60006126478261261a565b9050919050565b60006126598261263c565b9050919050565b6126698161264e565b82525050565b60006020820190506126846000830184612660565b92915050565b6000612695826125f0565b9050919050565b6126a58161268a565b82525050565b60006020820190506126c0600083018461269c565b92915050565b6000604051905090565b600080fd5b600080fd5b60006126e58261268a565b9050919050565b6126f5816126da565b811461270057600080fd5b50565b600081359050612712816126ec565b92915050565b6000819050919050565b61272b81612718565b811461273657600080fd5b50565b60008135905061274881612722565b92915050565b6002811061275b57600080fd5b50565b60008135905061276d8161274e565b92915050565b600080600080600060a0868803121561278f5761278e6126d0565b5b600061279d88828901612703565b95505060206127ae88828901612703565b94505060406127bf88828901612739565b93505060606127d088828901612739565b92505060806127e18882890161275e565b9150509295509295909350565b6127f781612718565b82525050565b600060208201905061281260008301846127ee565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261283d5761283c612818565b5b8235905067ffffffffffffffff81111561285a5761285961281d565b5b60208301915083602082028301111561287657612875612822565b5b9250929050565b60008083601f84011261289357612892612818565b5b8235905067ffffffffffffffff8111156128b0576128af61281d565b5b6020830191508360208202830111156128cc576128cb612822565b5b9250929050565b600080600080600080608087890312156128f0576128ef6126d0565b5b600087013567ffffffffffffffff81111561290e5761290d6126d5565b5b61291a89828a01612827565b9650965050602061292d89828a01612739565b945050604061293e89828a01612739565b935050606087013567ffffffffffffffff81111561295f5761295e6126d5565b5b61296b89828a0161287d565b92509250509295509295509295565b6129838161268a565b811461298e57600080fd5b50565b6000813590506129a08161297a565b92915050565b6000602082840312156129bc576129bb6126d0565b5b60006129ca84828501612991565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082825260208201905092915050565b7f737761703a2072657475726e20616d6f756e74206973206c657373207468616e60008201527f206d696e52657475726e00000000000000000000000000000000000000000000602082015250565b6000612a6f602a83612a02565b9150612a7a82612a13565b604082019050919050565b60006020820190508181036000830152612a9e81612a62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612adf82612718565b9150612aea83612718565b9250828203905081811115612b0257612b01612aa5565b5b92915050565b7f737761703a20696e636f727265637420757365722062616c616e636500000000600082015250565b6000612b3e601c83612a02565b9150612b4982612b08565b602082019050919050565b60006020820190508181036000830152612b6d81612b31565b9050919050565b6000612b7f82612718565b9150612b8a83612718565b9250828201905080821115612ba257612ba1612aa5565b5b92915050565b7f737761704d756c74693a2077726f6e67206c656e677468000000000000000000600082015250565b6000612bde601783612a02565b9150612be982612ba8565b602082019050919050565b60006020820190508181036000830152612c0d81612bd1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612c5957612c586126d0565b5b6000612c6784828501612703565b91505092915050565b600060208284031215612c8657612c856126d0565b5b6000612c948482850161275e565b91505092915050565b6000612ca882612718565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612cda57612cd9612aa5565b5b600182019050919050565b7f737761704d756c74693a2072657475726e20616d6f756e74206973206c65737360008201527f207468616e206d696e52657475726e0000000000000000000000000000000000602082015250565b6000612d41602f83612a02565b9150612d4c82612ce5565b604082019050919050565b60006020820190508181036000830152612d7081612d34565b9050919050565b7f737761704d756c74693a20696e636f727265637420757365722062616c616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000612dd3602183612a02565b9150612dde82612d77565b604082019050919050565b60006020820190508181036000830152612e0281612dc6565b9050919050565b7f537461626c655377617020666163746f72792063616e6e6f74206265207a657260008201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b6000612e65602983612a02565b9150612e7082612e09565b604082019050919050565b60006020820190508181036000830152612e9481612e58565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612ef7602683612a02565b9150612f0282612e9b565b604082019050919050565b60006020820190508181036000830152612f2681612eea565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f63602083612a02565b9150612f6e82612f2d565b602082019050919050565b60006020820190508181036000830152612f9281612f56565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000612fcf601f83612a02565b9150612fda82612f99565b602082019050919050565b60006020820190508181036000830152612ffe81612fc2565b9050919050565b600081905092915050565b50565b6000613020600083613005565b915061302b82613010565b600082019050919050565b600061304182613013565b9150819050919050565b60008151905061305a81612722565b92915050565b600060208284031215613076576130756126d0565b5b60006130848482850161304b565b91505092915050565b60006040820190506130a2600083018561269c565b6130af602083018461269c565b9392505050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613104826130bb565b810181811067ffffffffffffffff82111715613123576131226130cc565b5b80604052505050565b60006131366126c6565b905061314282826130fb565b919050565b6000815190506131568161297a565b92915050565b600060808284031215613172576131716130b6565b5b61317c608061312c565b9050600061318c84828501613147565b60008301525060206131a084828501613147565b60208301525060406131b484828501613147565b60408301525060606131c884828501613147565b60608301525092915050565b6000608082840312156131ea576131e96126d0565b5b60006131f88482850161315c565b91505092915050565b600060208284031215613217576132166126d0565b5b600061322584828501613147565b91505092915050565b600060ff82169050919050565b60006132468261322e565b91506132518361322e565b9250828201905060ff81111561326a57613269612aa5565b5b92915050565b6000819050919050565b600061329561329061328b84613270565b612610565b612718565b9050919050565b6132a58161327a565b82525050565b60006080820190506132c060008301876127ee565b6132cd60208301866127ee565b6132da60408301856127ee565b6132e7606083018461329c565b95945050505050565b60006132fb8261263c565b9050919050565b61330b816132f0565b82525050565b60006040820190506133266000830185613302565b6133336020830184613302565b9392505050565b60006133458261268a565b9050919050565b6133558161333a565b811461336057600080fd5b50565b6000815190506133728161334c565b92915050565b60006020828403121561338e5761338d6126d0565b5b600061339c84828501613363565b91505092915050565b600082825260208201905092915050565b60006133c36000836133a5565b91506133ce82613010565b600082019050919050565b60006080820190506133ee600083018661329c565b6133fb60208301856127ee565b613408604083018461269c565b8181036060830152613419816133b6565b9050949350505050565b600060808201905061343860008301866127ee565b613445602083018561329c565b613452604083018461269c565b8181036060830152613463816133b6565b9050949350505050565b60006dffffffffffffffffffffffffffff82169050919050565b6134908161346d565b811461349b57600080fd5b50565b6000815190506134ad81613487565b92915050565b600063ffffffff82169050919050565b6134cc816134b3565b81146134d757600080fd5b50565b6000815190506134e9816134c3565b92915050565b600080600060608486031215613508576135076126d0565b5b60006135168682870161349e565b93505060206135278682870161349e565b9250506040613538868287016134da565b9150509250925092565b600061354d82612718565b915061355883612718565b925082820261356681612718565b9150828204841483151761357d5761357c612aa5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135be82612718565b91506135c983612718565b9250826135d9576135d8613584565b5b82820490509291505056fea2646970667358221220bb2876a123c84e0d9590655755ca1919f7994ef63d780aa03d1923881c728a6f64736f6c63430008120033