608060405260016000806101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550610b72600a55661f438daa060000600b556362d3a560600c556000600d60006101000a81548160ff0219169083151502179055503480156200007e57600080fd5b5060405162004a2638038062004a268339818101604052810190620000a4919062000639565b6040518060400160405280600d81526020017f452e522e562047616e64616c66000000000000000000000000000000000000008152506040518060400160405280600781526020017f47414e44414c4600000000000000000000000000000000000000000000000000815250816001908051906020019062000128929190620003ec565b50806002908051906020019062000141929190620003ec565b50505060016007819055506200016c62000160620001c860201b60201c565b620001d060201b60201c565b80600e908051906020019062000184929190620003ec565b50620001aa73c307b94288d569e9bbf75a17eb684e5325d646e26200029660201b60201c565b620001c16009620003ac60201b62001f071760201c565b506200080a565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002a6620001c860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002cc620003c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000325576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200031c90620006eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000398576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200038f9062000783565b60405180910390fd5b620003a981620001d060201b60201c565b50565b6001816000016000828254019250508190555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003fa90620007d4565b90600052602060002090601f0160209004810192826200041e57600085556200046a565b82601f106200043957805160ff19168380011785556200046a565b828001600101855582156200046a579182015b82811115620004695782518255916020019190600101906200044c565b5b5090506200047991906200047d565b5090565b5b80821115620004985760008160009055506001016200047e565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200050582620004ba565b810181811067ffffffffffffffff82111715620005275762000526620004cb565b5b80604052505050565b60006200053c6200049c565b90506200054a8282620004fa565b919050565b600067ffffffffffffffff8211156200056d576200056c620004cb565b5b6200057882620004ba565b9050602081019050919050565b60005b83811015620005a557808201518184015260208101905062000588565b83811115620005b5576000848401525b50505050565b6000620005d2620005cc846200054f565b62000530565b905082815260208101848484011115620005f157620005f0620004b5565b5b620005fe84828562000585565b509392505050565b600082601f8301126200061e576200061d620004b0565b5b815162000630848260208601620005bb565b91505092915050565b600060208284031215620006525762000651620004a6565b5b600082015167ffffffffffffffff811115620006735762000672620004ab565b5b620006818482850162000606565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620006d36020836200068a565b9150620006e0826200069b565b602082019050919050565b600060208201905081810360008301526200070681620006c4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200076b6026836200068a565b915062000778826200070d565b604082019050919050565b600060208201905081810360008301526200079e816200075c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007ed57607f821691505b60208210811415620008045762000803620007a5565b5b50919050565b61420c806200081a6000396000f3fe6080604052600436106102045760003560e01c806370a0823111610118578063ab36e64d116100a0578063d547cfb71161006f578063d547cfb714610758578063da8fbf2a14610783578063e985e9c51461079a578063edf85f51146107d7578063f2fde38b1461081457610204565b8063ab36e64d1461068a578063b187bd26146106c7578063b88d4fde146106f2578063c87b56dd1461071b57610204565b80638d859f3e116100e75780638d859f3e146105c45780638da5cb5b146105ef57806395d89b411461061a578063a0712d6814610645578063a22cb4651461066157610204565b806370a0823114610530578063715018a61461056d57806371f9f20014610584578063853828b6146105ad57610204565b80632f181f541161019b578063438b63001161016a578063438b6300146104395780634f6ccce71461047657806355f804b3146104b357806359ae340e146104dc5780636352211e146104f357610204565b80632f181f541461037f5780632f745c59146103a85780633502a716146103e557806342842e0e1461041057610204565b806318160ddd116101d757806318160ddd146102d75780631919fed714610302578063226730301461032b57806323b872dd1461035657610204565b806301ffc9a71461020957806306fdde0314610246578063081812fc14610271578063095ea7b3146102ae575b600080fd5b34801561021557600080fd5b50610230600480360381019061022b919061323e565b61083d565b60405161023d9190613286565b60405180910390f35b34801561025257600080fd5b5061025b610987565b604051610268919061333a565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190613392565b610a19565b6040516102a59190613400565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d09190613447565b610a95565b005b3480156102e357600080fd5b506102ec610ba0565b6040516102f99190613496565b60405180910390f35b34801561030e57600080fd5b5061032960048036038101906103249190613392565b610bf9565b005b34801561033757600080fd5b50610340610c7f565b60405161034d9190613496565b60405180910390f35b34801561036257600080fd5b5061037d600480360381019061037891906134b1565b610c85565b005b34801561038b57600080fd5b506103a660048036038101906103a19190613392565b610c95565b005b3480156103b457600080fd5b506103cf60048036038101906103ca9190613447565b610d1b565b6040516103dc9190613496565b60405180910390f35b3480156103f157600080fd5b506103fa610f22565b6040516104079190613496565b60405180910390f35b34801561041c57600080fd5b50610437600480360381019061043291906134b1565b610f28565b005b34801561044557600080fd5b50610460600480360381019061045b9190613504565b610f48565b60405161046d91906135ef565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190613392565b610ff6565b6040516104aa9190613496565b60405180910390f35b3480156104bf57600080fd5b506104da60048036038101906104d59190613746565b611167565b005b3480156104e857600080fd5b506104f16111fd565b005b3480156104ff57600080fd5b5061051a60048036038101906105159190613392565b611296565b6040516105279190613400565b60405180910390f35b34801561053c57600080fd5b5061055760048036038101906105529190613504565b6112ac565b6040516105649190613496565b60405180910390f35b34801561057957600080fd5b5061058261137c565b005b34801561059057600080fd5b506105ab60048036038101906105a69190613392565b611404565b005b3480156105b957600080fd5b506105c261148a565b005b3480156105d057600080fd5b506105d9611582565b6040516105e69190613496565b60405180910390f35b3480156105fb57600080fd5b50610604611588565b6040516106119190613400565b60405180910390f35b34801561062657600080fd5b5061062f6115b2565b60405161063c919061333a565b60405180910390f35b61065f600480360381019061065a9190613392565b611644565b005b34801561066d57600080fd5b50610688600480360381019061068391906137bb565b611918565b005b34801561069657600080fd5b506106b160048036038101906106ac9190613504565b611a90565b6040516106be9190613286565b60405180910390f35b3480156106d357600080fd5b506106dc611ae6565b6040516106e99190613286565b60405180910390f35b3480156106fe57600080fd5b506107196004803603810190610714919061389c565b611af9565b005b34801561072757600080fd5b50610742600480360381019061073d9190613392565b611b4c565b60405161074f919061333a565b60405180910390f35b34801561076457600080fd5b5061076d611c36565b60405161077a919061333a565b60405180910390f35b34801561078f57600080fd5b50610798611cc4565b005b3480156107a657600080fd5b506107c160048036038101906107bc919061391f565b611d5d565b6040516107ce9190613286565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190613392565b611df1565b60405161080b9190613496565b60405180910390f35b34801561082057600080fd5b5061083b60048036038101906108369190613504565b611e0f565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061090857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061097057507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610980575061097f82611f1d565b5b9050919050565b6060600180546109969061398e565b80601f01602080910402602001604051908101604052809291908181526020018280546109c29061398e565b8015610a0f5780601f106109e457610100808354040283529160200191610a0f565b820191906000526020600020905b8154815290600101906020018083116109f257829003601f168201915b5050505050905090565b6000610a2482611f87565b610a5a576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610aa082611296565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b08576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b27611fef565b73ffffffffffffffffffffffffffffffffffffffff1614158015610b595750610b5781610b52611fef565b611d5d565b155b15610b90576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b9b838383611ff7565b505050565b60006001600060109054906101000a90046fffffffffffffffffffffffffffffffff1660008054906101000a90046fffffffffffffffffffffffffffffffff1603036fffffffffffffffffffffffffffffffff16905090565b610c01611fef565b73ffffffffffffffffffffffffffffffffffffffff16610c1f611588565b73ffffffffffffffffffffffffffffffffffffffff1614610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c90613a0c565b60405180910390fd5b80600b8190555050565b600c5481565b610c908383836120a9565b505050565b610c9d611fef565b73ffffffffffffffffffffffffffffffffffffffff16610cbb611588565b73ffffffffffffffffffffffffffffffffffffffff1614610d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0890613a0c565b60405180910390fd5b80600c8190555050565b6000610d26836112ac565b8210610d5e576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16905060008060005b83811015610f16576000600360008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015115610e755750610f09565b600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610eb557806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f075786841415610efe578195505050505050610f1c565b83806001019450505b505b8080600101915050610d98565b50600080fd5b92915050565b600a5481565b610f4383838360405180602001604052806000815250611af9565b505050565b60606000610f55836112ac565b905060008167ffffffffffffffff811115610f7357610f7261361b565b5b604051908082528060200260200182016040528015610fa15781602001602082028036833780820191505090505b50905060005b82811015610feb57610fb98582610d1b565b828281518110610fcc57610fcb613a2c565b5b6020026020010181815250508080610fe390613a8a565b915050610fa7565b508092505050919050565b60008060008054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1690506000805b8281101561112f576000600360008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161112157858314156111185781945050505050611162565b82806001019350505b50808060010191505061102e565b506040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b61116f611fef565b73ffffffffffffffffffffffffffffffffffffffff1661118d611588565b73ffffffffffffffffffffffffffffffffffffffff16146111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da90613a0c565b60405180910390fd5b80600e90805190602001906111f99291906130ec565b5050565b611205611fef565b73ffffffffffffffffffffffffffffffffffffffff16611223611588565b73ffffffffffffffffffffffffffffffffffffffff1614611279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127090613a0c565b60405180910390fd5b6000600d60006101000a81548160ff021916908315150217905550565b60006112a1826125c6565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611314576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611384611fef565b73ffffffffffffffffffffffffffffffffffffffff166113a2611588565b73ffffffffffffffffffffffffffffffffffffffff16146113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef90613a0c565b60405180910390fd5b611402600061286e565b565b61140c611fef565b73ffffffffffffffffffffffffffffffffffffffff1661142a611588565b73ffffffffffffffffffffffffffffffffffffffff1614611480576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147790613a0c565b60405180910390fd5b80600a8190555050565b600260075414156114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790613b1f565b60405180910390fd5b60026007819055506114e0611fef565b73ffffffffffffffffffffffffffffffffffffffff166114fe611588565b73ffffffffffffffffffffffffffffffffffffffff1614611554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154b90613a0c565b60405180910390fd5b60004790506000811161156657600080fd5b611577611571611588565b82612934565b506001600781905550565b600b5481565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546115c19061398e565b80601f01602080910402602001604051908101604052809291908181526020018280546115ed9061398e565b801561163a5780601f1061160f5761010080835404028352916020019161163a565b820191906000526020600020905b81548152906001019060200180831161161d57829003601f168201915b5050505050905090565b600061164e610ba0565b905042600c5410611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b90613b8b565b60405180910390fd5b600d60009054906101000a900460ff16156116e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116db90613bf7565b60405180910390fd5b600a5482826116f39190613c17565b1115611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172b90613cb9565b60405180910390fd5b600a54811115611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177090613d25565b60405180910390fd5b600f6000611785611fef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611822576117db82611df1565b34101561181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181490613d91565b60405180910390fd5b6118c5565b60018214611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c90613e23565b60405180910390fd5b6001600f6000611873611fef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6118d66118d0611fef565b8361297f565b817fe483ef4918fdf00e7726ca925d7097b0649a80eb05e69b04f4677a303500490160405160405180910390a261191461190e611588565b47612934565b5050565b611920611fef565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611985576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060066000611992611fef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611a3f611fef565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a849190613286565b60405180910390a35050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d60009054906101000a900460ff1681565b611b048484846120a9565b611b108484848461299d565b611b46576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6060611b5782611f87565b611b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8d90613eb5565b60405180910390fd5b600082905060006040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525090506000611bdf612b1c565b90506000815111611bff5760405180602001604052806000815250611c2c565b80611c0984612bae565b83604051602001611c1c93929190613f11565b6040516020818303038152906040525b9350505050919050565b600e8054611c439061398e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6f9061398e565b8015611cbc5780601f10611c9157610100808354040283529160200191611cbc565b820191906000526020600020905b815481529060010190602001808311611c9f57829003601f168201915b505050505081565b611ccc611fef565b73ffffffffffffffffffffffffffffffffffffffff16611cea611588565b73ffffffffffffffffffffffffffffffffffffffff1614611d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3790613a0c565b60405180910390fd5b6001600d60006101000a81548160ff021916908315150217905550565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000611e0882600b54612d0f90919063ffffffff16565b9050919050565b611e17611fef565b73ffffffffffffffffffffffffffffffffffffffff16611e35611588565b73ffffffffffffffffffffffffffffffffffffffff1614611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290613a0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef290613fb4565b60405180910390fd5b611f048161286e565b50565b6001816000016000828254019250508190555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008060009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1682108015611fe8575060036000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006120b4826125c6565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166120db611fef565b73ffffffffffffffffffffffffffffffffffffffff16148061210e575061210d8260000151612108611fef565b611d5d565b5b80612153575061211c611fef565b73ffffffffffffffffffffffffffffffffffffffff1661213b84610a19565b73ffffffffffffffffffffffffffffffffffffffff16145b90508061218c576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146121f5576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561225c576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122698585856001612d25565b6122796000848460000151611ff7565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156125565760008054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168110156125555782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46125bf8585856001612d2b565b5050505050565b6125ce613172565b600082905060008054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16811015612837576000600360008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161283557600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612719578092505050612869565b5b60011561283457818060019003925050600360008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461282f578092505050612869565b61271a565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561297a573d6000803e3d6000fd5b505050565b612999828260405180602001604052806000815250612d31565b5050565b60006129be8473ffffffffffffffffffffffffffffffffffffffff16612d43565b15612b0f578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026129e7611fef565b8786866040518563ffffffff1660e01b8152600401612a099493929190614029565b6020604051808303816000875af1925050508015612a4557506040513d601f19601f82011682018060405250810190612a42919061408a565b60015b612abf573d8060008114612a75576040519150601f19603f3d011682016040523d82523d6000602084013e612a7a565b606091505b50600081511415612ab7576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612b14565b600190505b949350505050565b6060600e8054612b2b9061398e565b80601f0160208091040260200160405190810160405280929190818152602001828054612b579061398e565b8015612ba45780601f10612b7957610100808354040283529160200191612ba4565b820191906000526020600020905b815481529060010190602001808311612b8757829003601f168201915b5050505050905090565b60606000821415612bf6576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612d0a565b600082905060005b60008214612c28578080612c1190613a8a565b915050600a82612c2191906140e6565b9150612bfe565b60008167ffffffffffffffff811115612c4457612c4361361b565b5b6040519080825280601f01601f191660200182016040528015612c765781602001600182028036833780820191505090505b5090505b60008514612d0357600182612c8f9190614117565b9150600a85612c9e919061414b565b6030612caa9190613c17565b60f81b818381518110612cc057612cbf613a2c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612cfc91906140e6565b9450612c7a565b8093505050505b919050565b60008183612d1d919061417c565b905092915050565b50505050565b50505050565b612d3e8383836001612d56565b505050565b600080823b905060008111915050919050565b60008060009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612df1576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415612e2c576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e396000868387612d25565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b8581101561309e57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48380156130525750613050600088848861299d565b155b15613089576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81806001019250508080600101915050612fd7565b50806000806101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550506130e56000868387612d2b565b5050505050565b8280546130f89061398e565b90600052602060002090601f01602090048101928261311a5760008555613161565b82601f1061313357805160ff1916838001178555613161565b82800160010185558215613161579182015b82811115613160578251825591602001919060010190613145565b5b50905061316e91906131b5565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b808211156131ce5760008160009055506001016131b6565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61321b816131e6565b811461322657600080fd5b50565b60008135905061323881613212565b92915050565b600060208284031215613254576132536131dc565b5b600061326284828501613229565b91505092915050565b60008115159050919050565b6132808161326b565b82525050565b600060208201905061329b6000830184613277565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132db5780820151818401526020810190506132c0565b838111156132ea576000848401525b50505050565b6000601f19601f8301169050919050565b600061330c826132a1565b61331681856132ac565b93506133268185602086016132bd565b61332f816132f0565b840191505092915050565b600060208201905081810360008301526133548184613301565b905092915050565b6000819050919050565b61336f8161335c565b811461337a57600080fd5b50565b60008135905061338c81613366565b92915050565b6000602082840312156133a8576133a76131dc565b5b60006133b68482850161337d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133ea826133bf565b9050919050565b6133fa816133df565b82525050565b600060208201905061341560008301846133f1565b92915050565b613424816133df565b811461342f57600080fd5b50565b6000813590506134418161341b565b92915050565b6000806040838503121561345e5761345d6131dc565b5b600061346c85828601613432565b925050602061347d8582860161337d565b9150509250929050565b6134908161335c565b82525050565b60006020820190506134ab6000830184613487565b92915050565b6000806000606084860312156134ca576134c96131dc565b5b60006134d886828701613432565b93505060206134e986828701613432565b92505060406134fa8682870161337d565b9150509250925092565b60006020828403121561351a576135196131dc565b5b600061352884828501613432565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135668161335c565b82525050565b6000613578838361355d565b60208301905092915050565b6000602082019050919050565b600061359c82613531565b6135a6818561353c565b93506135b18361354d565b8060005b838110156135e25781516135c9888261356c565b97506135d483613584565b9250506001810190506135b5565b5085935050505092915050565b600060208201905081810360008301526136098184613591565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613653826132f0565b810181811067ffffffffffffffff821117156136725761367161361b565b5b80604052505050565b60006136856131d2565b9050613691828261364a565b919050565b600067ffffffffffffffff8211156136b1576136b061361b565b5b6136ba826132f0565b9050602081019050919050565b82818337600083830152505050565b60006136e96136e484613696565b61367b565b90508281526020810184848401111561370557613704613616565b5b6137108482856136c7565b509392505050565b600082601f83011261372d5761372c613611565b5b813561373d8482602086016136d6565b91505092915050565b60006020828403121561375c5761375b6131dc565b5b600082013567ffffffffffffffff81111561377a576137796131e1565b5b61378684828501613718565b91505092915050565b6137988161326b565b81146137a357600080fd5b50565b6000813590506137b58161378f565b92915050565b600080604083850312156137d2576137d16131dc565b5b60006137e085828601613432565b92505060206137f1858286016137a6565b9150509250929050565b600067ffffffffffffffff8211156138165761381561361b565b5b61381f826132f0565b9050602081019050919050565b600061383f61383a846137fb565b61367b565b90508281526020810184848401111561385b5761385a613616565b5b6138668482856136c7565b509392505050565b600082601f83011261388357613882613611565b5b813561389384826020860161382c565b91505092915050565b600080600080608085870312156138b6576138b56131dc565b5b60006138c487828801613432565b94505060206138d587828801613432565b93505060406138e68782880161337d565b925050606085013567ffffffffffffffff811115613907576139066131e1565b5b6139138782880161386e565b91505092959194509250565b60008060408385031215613936576139356131dc565b5b600061394485828601613432565b925050602061395585828601613432565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139a657607f821691505b602082108114156139ba576139b961395f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139f66020836132ac565b9150613a01826139c0565b602082019050919050565b60006020820190508181036000830152613a25816139e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a958261335c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613ac857613ac7613a5b565b5b600182019050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613b09601f836132ac565b9150613b1482613ad3565b602082019050919050565b60006020820190508181036000830152613b3881613afc565b9050919050565b7f4d696e74696e67206e6f74207374617274656400000000000000000000000000600082015250565b6000613b756013836132ac565b9150613b8082613b3f565b602082019050919050565b60006020820190508181036000830152613ba481613b68565b9050919050565b7f53616c65206973205061757365642e0000000000000000000000000000000000600082015250565b6000613be1600f836132ac565b9150613bec82613bab565b602082019050919050565b60006020820190508181036000830152613c1081613bd4565b9050919050565b6000613c228261335c565b9150613c2d8361335c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c6257613c61613a5b565b5b828201905092915050565b7f4d6178206c696d69740000000000000000000000000000000000000000000000600082015250565b6000613ca36009836132ac565b9150613cae82613c6d565b602082019050919050565b60006020820190508181036000830152613cd281613c96565b9050919050565b7f416c6c204e465427732061726520736f6c64206f757400000000000000000000600082015250565b6000613d0f6016836132ac565b9150613d1a82613cd9565b602082019050919050565b60006020820190508181036000830152613d3e81613d02565b9050919050565b7f56616c75652062656c6f77207072696365000000000000000000000000000000600082015250565b6000613d7b6011836132ac565b9150613d8682613d45565b602082019050919050565b60006020820190508181036000830152613daa81613d6e565b9050919050565b7f43616e206e6f74206d696e74206d6f7265207468616e20312066726565204e4660008201527f5400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e0d6021836132ac565b9150613e1882613db1565b604082019050919050565b60006020820190508181036000830152613e3c81613e00565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613e9f602f836132ac565b9150613eaa82613e43565b604082019050919050565b60006020820190508181036000830152613ece81613e92565b9050919050565b600081905092915050565b6000613eeb826132a1565b613ef58185613ed5565b9350613f058185602086016132bd565b80840191505092915050565b6000613f1d8286613ee0565b9150613f298285613ee0565b9150613f358284613ee0565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f9e6026836132ac565b9150613fa982613f42565b604082019050919050565b60006020820190508181036000830152613fcd81613f91565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613ffb82613fd4565b6140058185613fdf565b93506140158185602086016132bd565b61401e816132f0565b840191505092915050565b600060808201905061403e60008301876133f1565b61404b60208301866133f1565b6140586040830185613487565b818103606083015261406a8184613ff0565b905095945050505050565b60008151905061408481613212565b92915050565b6000602082840312156140a05761409f6131dc565b5b60006140ae84828501614075565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140f18261335c565b91506140fc8361335c565b92508261410c5761410b6140b7565b5b828204905092915050565b60006141228261335c565b915061412d8361335c565b9250828210156141405761413f613a5b565b5b828203905092915050565b60006141568261335c565b91506141618361335c565b925082614171576141706140b7565b5b828206905092915050565b60006141878261335c565b91506141928361335c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141cb576141ca613a5b565b5b82820290509291505056fea26469706673582212208e5cafd511db4eb94fee59a5f0d8499a8994d07e35acb8f8c45040949787ded864736f6c634300080a003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000043697066733a2f2f626166796265696264756a70643462636377796b6268787a6c7036686636657174656d616d367163796c6262766477656a643466357132766b33752f0000000000000000000000000000000000000000000000000000000000