60806040526605af3107a40000600c556000600d553480156200002157600080fd5b50604051620047103803806200471083398181016040528101906200004791906200096d565b6040518060400160405280600f81526020017f417373617373696e417065436c756200000000000000000000000000000000008152506040518060400160405280600381526020017f41414300000000000000000000000000000000000000000000000000000000008152508160029080519060200190620000cb92919062000808565b508060039080519060200190620000e492919062000808565b50620000f56200015860201b60201c565b60008190555050506200011d620001116200015d60201b60201c565b6200016560201b60201c565b600160098190555080600b90805190602001906200013d92919062000808565b50620001513360026200022b60201b60201c565b5062000c79565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200024d8282604051806020016040528060008152506200025160201b60201c565b5050565b6200026683838360016200026b60201b60201c565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002d9576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084141562000315576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200032a60008683876200066760201b60201c565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015620005025750620005018773ffffffffffffffffffffffffffffffffffffffff166200066d60201b620017cb1760201c565b5b15620005d5575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46200058060008884806001019550886200069060201b60201c565b620005b7576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082141562000509578260005414620005cf57600080fd5b62000642565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415620005d6575b8160008190555050506200066060008683876200080260201b60201c565b5050505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620006be6200015d60201b60201c565b8786866040518563ffffffff1660e01b8152600401620006e2949392919062000a15565b602060405180830381600087803b158015620006fd57600080fd5b505af19250505080156200073157506040513d601f19601f820116820180604052508101906200072e919062000941565b60015b620007af573d806000811462000764576040519150601f19603f3d011682016040523d82523d6000602084013e62000769565b606091505b50600081511415620007a7576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b828054620008169062000b84565b90600052602060002090601f0160209004810192826200083a576000855562000886565b82601f106200085557805160ff191683800117855562000886565b8280016001018555821562000886579182015b828111156200088557825182559160200191906001019062000868565b5b50905062000895919062000899565b5090565b5b80821115620008b45760008160009055506001016200089a565b5090565b6000620008cf620008c98462000a92565b62000a69565b905082815260208101848484011115620008e857600080fd5b620008f584828562000b4e565b509392505050565b6000815190506200090e8162000c5f565b92915050565b600082601f8301126200092657600080fd5b815162000938848260208601620008b8565b91505092915050565b6000602082840312156200095457600080fd5b60006200096484828501620008fd565b91505092915050565b6000602082840312156200098057600080fd5b600082015167ffffffffffffffff8111156200099b57600080fd5b620009a98482850162000914565b91505092915050565b620009bd8162000ae4565b82525050565b6000620009d08262000ac8565b620009dc818562000ad3565b9350620009ee81856020860162000b4e565b620009f98162000c4e565b840191505092915050565b62000a0f8162000b44565b82525050565b600060808201905062000a2c6000830187620009b2565b62000a3b6020830186620009b2565b62000a4a604083018562000a04565b818103606083015262000a5e8184620009c3565b905095945050505050565b600062000a7562000a88565b905062000a83828262000bba565b919050565b6000604051905090565b600067ffffffffffffffff82111562000ab05762000aaf62000c1f565b5b62000abb8262000c4e565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600062000af18262000b24565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000b6e57808201518184015260208101905062000b51565b8381111562000b7e576000848401525b50505050565b6000600282049050600182168062000b9d57607f821691505b6020821081141562000bb45762000bb362000bf0565b5b50919050565b62000bc58262000c4e565b810181811067ffffffffffffffff8211171562000be75762000be662000c1f565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b62000c6a8162000af8565b811462000c7657600080fd5b50565b613a878062000c896000396000f3fe6080604052600436106101cd5760003560e01c80636352211e116100f757806395d89b4111610095578063c87b56dd11610064578063c87b56dd14610643578063dc33e68114610680578063e985e9c5146106bd578063f2fde38b146106fa576101cd565b806395d89b41146105aa578063a0712d68146105d5578063a22cb465146105f1578063b88d4fde1461061a576101cd565b8063715018a6116100d1578063715018a61461051457806382481c0e1461052b5780638d6cc56d146105565780638da5cb5b1461057f576101cd565b80636352211e1461046f57806363eb8bb6146104ac57806370a08231146104d7576101cd565b8063200d2ed21161016f57806342842e0e1161013e57806342842e0e146103c957806351cff8d9146103f257806355f804b31461041b578063611f3f1014610444576101cd565b8063200d2ed21461032157806323b872dd1461034c5780632e49d78b1461037557806332cb6b0c1461039e576101cd565b8063081812fc116101ab578063081812fc14610265578063095ea7b3146102a257806316154862146102cb57806318160ddd146102f6576101cd565b806301ffc9a7146101d25780630528eb431461020f57806306fdde031461023a575b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f49190612e1f565b610723565b604051610206919061320e565b60405180910390f35b34801561021b57600080fd5b50610224610805565b6040516102319190613386565b60405180910390f35b34801561024657600080fd5b5061024f61080a565b60405161025c9190613244565b60405180910390f35b34801561027157600080fd5b5061028c60048036038101906102879190612edf565b61089c565b604051610299919061317e565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c49190612de3565b610918565b005b3480156102d757600080fd5b506102e0610a23565b6040516102ed9190613386565b60405180910390f35b34801561030257600080fd5b5061030b610a28565b6040516103189190613386565b60405180910390f35b34801561032d57600080fd5b50610336610a3f565b6040516103439190613229565b60405180910390f35b34801561035857600080fd5b50610373600480360381019061036e9190612cdd565b610a52565b005b34801561038157600080fd5b5061039c60048036038101906103979190612e71565b610a62565b005b3480156103aa57600080fd5b506103b3610b31565b6040516103c09190613386565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb9190612cdd565b610b37565b005b3480156103fe57600080fd5b5061041960048036038101906104149190612c78565b610b57565b005b34801561042757600080fd5b50610442600480360381019061043d9190612e9a565b610cdf565b005b34801561045057600080fd5b50610459610d71565b6040516104669190613386565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190612edf565b610d77565b6040516104a3919061317e565b60405180910390f35b3480156104b857600080fd5b506104c1610d8d565b6040516104ce9190613386565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f99190612c4f565b610d93565b60405161050b9190613386565b60405180910390f35b34801561052057600080fd5b50610529610e63565b005b34801561053757600080fd5b50610540610eeb565b60405161054d9190613386565b60405180910390f35b34801561056257600080fd5b5061057d60048036038101906105789190612edf565b610ef1565b005b34801561058b57600080fd5b50610594610f77565b6040516105a1919061317e565b60405180910390f35b3480156105b657600080fd5b506105bf610fa1565b6040516105cc9190613244565b60405180910390f35b6105ef60048036038101906105ea9190612edf565b611033565b005b3480156105fd57600080fd5b5061061860048036038101906106139190612da7565b61139a565b005b34801561062657600080fd5b50610641600480360381019061063c9190612d2c565b611512565b005b34801561064f57600080fd5b5061066a60048036038101906106659190612edf565b61158e565b6040516106779190613244565b60405180910390f35b34801561068c57600080fd5b506106a760048036038101906106a29190612c4f565b61162d565b6040516106b49190613386565b60405180910390f35b3480156106c957600080fd5b506106e460048036038101906106df9190612ca1565b61163f565b6040516106f1919061320e565b60405180910390f35b34801561070657600080fd5b50610721600480360381019061071c9190612c4f565b6116d3565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107ee57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107fe57506107fd826117ee565b5b9050919050565b600281565b60606002805461081990613647565b80601f016020809104026020016040519081016040528092919081815260200182805461084590613647565b80156108925780601f1061086757610100808354040283529160200191610892565b820191906000526020600020905b81548152906001019060200180831161087557829003601f168201915b5050505050905090565b60006108a782611858565b6108dd576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061092382610d77565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098b576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109aa6118a6565b73ffffffffffffffffffffffffffffffffffffffff16141580156109dc57506109da816109d56118a6565b61163f565b155b15610a13576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a1e8383836118ae565b505050565b600f81565b6000610a32611960565b6001546000540303905090565b600a60009054906101000a900460ff1681565b610a5d838383611965565b505050565b610a6a6118a6565b73ffffffffffffffffffffffffffffffffffffffff16610a88610f77565b73ffffffffffffffffffffffffffffffffffffffff1614610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad590613326565b60405180910390fd5b80600a60006101000a81548160ff02191690836002811115610b29577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b021790555050565b6115b381565b610b5283838360405180602001604052806000815250611512565b505050565b610b5f6118a6565b73ffffffffffffffffffffffffffffffffffffffff16610b7d610f77565b73ffffffffffffffffffffffffffffffffffffffff1614610bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bca90613326565b60405180910390fd5b60026009541415610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090613346565b60405180910390fd5b6002600981905550600047905060008273ffffffffffffffffffffffffffffffffffffffff1682604051610c4c90613169565b60006040518083038185875af1925050503d8060008114610c89576040519150601f19603f3d011682016040523d82523d6000602084013e610c8e565b606091505b5050905080610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990613286565b60405180910390fd5b5050600160098190555050565b610ce76118a6565b73ffffffffffffffffffffffffffffffffffffffff16610d05610f77565b73ffffffffffffffffffffffffffffffffffffffff1614610d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5290613326565b60405180910390fd5b8181600b9190610d6c929190612a24565b505050565b600c5481565b6000610d8282611e56565b600001519050919050565b6103e881565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dfb576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610e6b6118a6565b73ffffffffffffffffffffffffffffffffffffffff16610e89610f77565b73ffffffffffffffffffffffffffffffffffffffff1614610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690613326565b60405180910390fd5b610ee960006120e5565b565b600d5481565b610ef96118a6565b73ffffffffffffffffffffffffffffffffffffffff16610f17610f77565b73ffffffffffffffffffffffffffffffffffffffff1614610f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6490613326565b60405180910390fd5b80600c8190555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610fb090613647565b80601f0160208091040260200160405190810160405280929190818152602001828054610fdc90613647565b80156110295780601f10610ffe57610100808354040283529160200191611029565b820191906000526020600020905b81548152906001019060200180831161100c57829003601f168201915b5050505050905090565b60026009541415611079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107090613346565b60405180910390fd5b6002600981905550600160028111156110bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600a60009054906101000a900460ff166002811115611103577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a90613366565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a8906132a6565b60405180910390fd5b600f816111bd3361162d565b6111c79190613445565b1115611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90613306565b60405180910390fd5b6115b381611214610a28565b61121e9190613445565b111561125f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611256906132e6565b60405180910390fd5b60006103e8600d5410156112f7576000600261127a3361162d565b1061128657600061129c565b61128f3361162d565b600261129b9190613526565b5b9050808311156112b75780836112b29190613526565b6112ba565b60005b600c546112c791906134cc565b9150808311156112d757806112d9565b825b600d60008282546112ea9190613445565b9250508190555050611308565b81600c5461130591906134cc565b90505b8034101561134b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611342906132c6565b60405180910390fd5b61135533836121ab565b7f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe33836040516113869291906131e5565b60405180910390a150600160098190555050565b6113a26118a6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611407576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006114146118a6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166114c16118a6565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611506919061320e565b60405180910390a35050565b61151d848484611965565b61153c8373ffffffffffffffffffffffffffffffffffffffff166117cb565b8015611551575061154f848484846121c9565b155b15611588576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606061159982611858565b6115cf576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115d9612329565b90506000815114156115fa5760405180602001604052806000815250611625565b80611604846123bb565b604051602001611615929190613145565b6040516020818303038152906040525b915050919050565b600061163882612568565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6116db6118a6565b73ffffffffffffffffffffffffffffffffffffffff166116f9610f77565b73ffffffffffffffffffffffffffffffffffffffff161461174f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174690613326565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b690613266565b60405180910390fd5b6117c8816120e5565b50565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611863611960565b11158015611872575060005482105b801561189f575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b600061197082611e56565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166119976118a6565b73ffffffffffffffffffffffffffffffffffffffff1614806119ca57506119c982600001516119c46118a6565b61163f565b5b80611a0f57506119d86118a6565b73ffffffffffffffffffffffffffffffffffffffff166119f78461089c565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611a48576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611ab1576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611b18576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b258585856001612638565b611b3560008484600001516118ae565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611de657600054811015611de55782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611e4f858585600161263e565b5050505050565b611e5e612aaa565b600082905080611e6c611960565b11158015611e7b575060005481105b156120ae576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516120ac57600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611f905780925050506120e0565b5b6001156120ab57818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146120a65780925050506120e0565b611f91565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6121c5828260405180602001604052806000815250612644565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121ef6118a6565b8786866040518563ffffffff1660e01b81526004016122119493929190613199565b602060405180830381600087803b15801561222b57600080fd5b505af192505050801561225c57506040513d601f19601f820116820180604052508101906122599190612e48565b60015b6122d6573d806000811461228c576040519150601f19603f3d011682016040523d82523d6000602084013e612291565b606091505b506000815114156122ce576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600b805461233890613647565b80601f016020809104026020016040519081016040528092919081815260200182805461236490613647565b80156123b15780601f10612386576101008083540402835291602001916123b1565b820191906000526020600020905b81548152906001019060200180831161239457829003601f168201915b5050505050905090565b60606000821415612403576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612563565b600082905060005b6000821461243557808061241e906136aa565b915050600a8261242e919061349b565b915061240b565b60008167ffffffffffffffff811115612477577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156124a95781602001600182028036833780820191505090505b5090505b6000851461255c576001826124c29190613526565b9150600a856124d191906136f3565b60306124dd9190613445565b60f81b818381518110612519577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612555919061349b565b94506124ad565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125d0576040517f35ebb31900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b50505050565b50505050565b6126518383836001612656565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156126c3576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414156126fe576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61270b6000868387612638565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000819050600085820190508380156128d557506128d48773ffffffffffffffffffffffffffffffffffffffff166117cb565b5b1561299b575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461294a60008884806001019550886121c9565b612980576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808214156128db57826000541461299657600080fd5b612a07565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082141561299c575b816000819055505050612a1d600086838761263e565b5050505050565b828054612a3090613647565b90600052602060002090601f016020900481019282612a525760008555612a99565b82601f10612a6b57803560ff1916838001178555612a99565b82800160010185558215612a99579182015b82811115612a98578235825591602001919060010190612a7d565b5b509050612aa69190612aed565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115612b06576000816000905550600101612aee565b5090565b6000612b1d612b18846133c6565b6133a1565b905082815260208101848484011115612b3557600080fd5b612b40848285613605565b509392505050565b600081359050612b57816139ce565b92915050565b600081359050612b6c816139e5565b92915050565b600081359050612b81816139fc565b92915050565b600081359050612b9681613a13565b92915050565b600081519050612bab81613a13565b92915050565b600082601f830112612bc257600080fd5b8135612bd2848260208601612b0a565b91505092915050565b600081359050612bea81613a2a565b92915050565b60008083601f840112612c0257600080fd5b8235905067ffffffffffffffff811115612c1b57600080fd5b602083019150836001820283011115612c3357600080fd5b9250929050565b600081359050612c4981613a3a565b92915050565b600060208284031215612c6157600080fd5b6000612c6f84828501612b48565b91505092915050565b600060208284031215612c8a57600080fd5b6000612c9884828501612b5d565b91505092915050565b60008060408385031215612cb457600080fd5b6000612cc285828601612b48565b9250506020612cd385828601612b48565b9150509250929050565b600080600060608486031215612cf257600080fd5b6000612d0086828701612b48565b9350506020612d1186828701612b48565b9250506040612d2286828701612c3a565b9150509250925092565b60008060008060808587031215612d4257600080fd5b6000612d5087828801612b48565b9450506020612d6187828801612b48565b9350506040612d7287828801612c3a565b925050606085013567ffffffffffffffff811115612d8f57600080fd5b612d9b87828801612bb1565b91505092959194509250565b60008060408385031215612dba57600080fd5b6000612dc885828601612b48565b9250506020612dd985828601612b72565b9150509250929050565b60008060408385031215612df657600080fd5b6000612e0485828601612b48565b9250506020612e1585828601612c3a565b9150509250929050565b600060208284031215612e3157600080fd5b6000612e3f84828501612b87565b91505092915050565b600060208284031215612e5a57600080fd5b6000612e6884828501612b9c565b91505092915050565b600060208284031215612e8357600080fd5b6000612e9184828501612bdb565b91505092915050565b60008060208385031215612ead57600080fd5b600083013567ffffffffffffffff811115612ec757600080fd5b612ed385828601612bf0565b92509250509250929050565b600060208284031215612ef157600080fd5b6000612eff84828501612c3a565b91505092915050565b612f118161355a565b82525050565b612f208161357e565b82525050565b6000612f31826133f7565b612f3b818561340d565b9350612f4b818560208601613614565b612f548161380f565b840191505092915050565b612f68816135f3565b82525050565b6000612f7982613402565b612f838185613429565b9350612f93818560208601613614565b612f9c8161380f565b840191505092915050565b6000612fb282613402565b612fbc818561343a565b9350612fcc818560208601613614565b80840191505092915050565b6000612fe5602683613429565b9150612ff082613820565b604082019050919050565b6000613008601183613429565b91506130138261386f565b602082019050919050565b600061302b601b83613429565b915061303682613898565b602082019050919050565b600061304e601083613429565b9150613059826138c1565b602082019050919050565b6000613071601583613429565b915061307c826138ea565b602082019050919050565b6000613094601b83613429565b915061309f82613913565b602082019050919050565b60006130b7602083613429565b91506130c28261393c565b602082019050919050565b60006130da60008361341e565b91506130e582613965565b600082019050919050565b60006130fd601f83613429565b915061310882613968565b602082019050919050565b6000613120601183613429565b915061312b82613991565b602082019050919050565b61313f816135e9565b82525050565b60006131518285612fa7565b915061315d8284612fa7565b91508190509392505050565b6000613174826130cd565b9150819050919050565b60006020820190506131936000830184612f08565b92915050565b60006080820190506131ae6000830187612f08565b6131bb6020830186612f08565b6131c86040830185613136565b81810360608301526131da8184612f26565b905095945050505050565b60006040820190506131fa6000830185612f08565b6132076020830184613136565b9392505050565b60006020820190506132236000830184612f17565b92915050565b600060208201905061323e6000830184612f5f565b92915050565b6000602082019050818103600083015261325e8184612f6e565b905092915050565b6000602082019050818103600083015261327f81612fd8565b9050919050565b6000602082019050818103600083015261329f81612ffb565b9050919050565b600060208201905081810360008301526132bf8161301e565b9050919050565b600060208201905081810360008301526132df81613041565b9050919050565b600060208201905081810360008301526132ff81613064565b9050919050565b6000602082019050818103600083015261331f81613087565b9050919050565b6000602082019050818103600083015261333f816130aa565b9050919050565b6000602082019050818103600083015261335f816130f0565b9050919050565b6000602082019050818103600083015261337f81613113565b9050919050565b600060208201905061339b6000830184613136565b92915050565b60006133ab6133bc565b90506133b78282613679565b919050565b6000604051905090565b600067ffffffffffffffff8211156133e1576133e06137e0565b5b6133ea8261380f565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613450826135e9565b915061345b836135e9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134905761348f613724565b5b828201905092915050565b60006134a6826135e9565b91506134b1836135e9565b9250826134c1576134c0613753565b5b828204905092915050565b60006134d7826135e9565b91506134e2836135e9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561351b5761351a613724565b5b828202905092915050565b6000613531826135e9565b915061353c836135e9565b92508282101561354f5761354e613724565b5b828203905092915050565b6000613565826135c9565b9050919050565b6000613577826135c9565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60008190506135c4826139ba565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006135fe826135b6565b9050919050565b82818337600083830152505050565b60005b83811015613632578082015181840152602081019050613617565b83811115613641576000848401525b50505050565b6000600282049050600182168061365f57607f821691505b60208210811415613673576136726137b1565b5b50919050565b6136828261380f565b810181811067ffffffffffffffff821117156136a1576136a06137e0565b5b80604052505050565b60006136b5826135e9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156136e8576136e7613724565b5b600182019050919050565b60006136fe826135e9565b9150613709836135e9565b92508261371957613718613753565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f2d5769746864726177206661696c65642d000000000000000000000000000000600082015250565b7f2d436f6e74726163742063616c6c206e6f7420616c6c6f7765642d0000000000600082015250565b7f2d4e6f7420656e6f756768204554482d00000000000000000000000000000000600082015250565b7f2d4e6f7420656e6f756768207175616e746974792d0000000000000000000000600082015250565b7f2d54686973206973206d6f7265207468616e20616c6c6f7765642d0000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f2d4e6f742073746172746564207965742d000000000000000000000000000000600082015250565b600381106139cb576139ca613782565b5b50565b6139d78161355a565b81146139e257600080fd5b50565b6139ee8161356c565b81146139f957600080fd5b50565b613a058161357e565b8114613a1057600080fd5b50565b613a1c8161358a565b8114613a2757600080fd5b50565b60038110613a3757600080fd5b50565b613a43816135e9565b8114613a4e57600080fd5b5056fea2646970667358221220eeccf6bbf56874e975f96e65896a68452f2448681c0b9a2d4c5752d8f508903e64736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d634773647557685358416f4372564a426f434a6e4b3735577843434238476b4d5678736f387472396242584e2f00000000000000000000