6080604052670de0b6b3a76400006000196200001c91906200082e565b6000196200002b9190620007b5565b6007556000600a556000600b556000600c556000600d55600c54600e55600d54600f55600e54601055600f5460115573fffbe09b13e838b4ef5f89192cbe246c55172c6b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507251dea0908c3bb7477e5c10e30074969daecfa7601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601760156101000a81548160ff0219169083151502179055506001601760166101000a81548160ff02191690831515021790555066470de4df82000060185566470de4df82000060195566038d7ea4c68000601a553480156200016757600080fd5b5060006200017a620006d560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600754600260006200022f620006d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000734752ba5dbc23f44d87826276bf6fd6b1c372ad24905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034991906200071d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ac57600080fd5b505afa158015620003c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e791906200071d565b6040518363ffffffff1660e01b8152600401620004069291906200076b565b602060405180830381600087803b1580156200042157600080fd5b505af115801562000436573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045c91906200071d565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004b2620006dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200065f620006d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006c6919062000798565b60405180910390a350620008de565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200071781620008c4565b92915050565b6000602082840312156200073057600080fd5b6000620007408482850162000706565b91505092915050565b6200075481620007f0565b82525050565b620007658162000824565b82525050565b600060408201905062000782600083018562000749565b62000791602083018462000749565b9392505050565b6000602082019050620007af60008301846200075a565b92915050565b6000620007c28262000824565b9150620007cf8362000824565b925082821015620007e557620007e462000866565b5b828203905092915050565b6000620007fd8262000804565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006200083b8262000824565b9150620008488362000824565b9250826200085b576200085a62000895565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b620008cf81620007f0565b8114620008db57600080fd5b50565b61416480620008ee6000396000f3fe6080604052600436106101db5760003560e01c80637d1db4a511610102578063bca9f08311610095578063d00efb2f11610064578063d00efb2f1461067c578063dd62ed3e146106a7578063ea1644d5146106e4578063f2fde38b1461070d576101e2565b8063bca9f083146105d6578063bfd79284146105ff578063c3c8cd801461063c578063c492f04614610653576101e2565b806395d89b41116100d157806395d89b411461051c57806398a5c31514610547578063a2a957bb14610570578063a9059cbb14610599576101e2565b80637d1db4a5146104725780638da5cb5b1461049d5780638f70ccf7146104c85780638f9a55c0146104f1576101e2565b8063313ce5671161017a5780636fc3eaec116101495780636fc3eaec146103de57806370a08231146103f5578063715018a61461043257806374010ece14610449576101e2565b8063313ce5671461033657806349bd5a5e146103615780636b9990531461038c5780636d8aa8f8146103b5576101e2565b80631694505e116101b65780631694505e1461027857806318160ddd146102a357806323b872dd146102ce5780632fd689e31461030b576101e2565b8062b8cf2a146101e757806306fdde0314610210578063095ea7b31461023b576101e2565b366101e257005b600080fd5b3480156101f357600080fd5b5061020e60048036038101906102099190613295565b610736565b005b34801561021c57600080fd5b50610225610886565b60405161023291906136de565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613201565b6108c3565b60405161026f91906136a8565b60405180910390f35b34801561028457600080fd5b5061028d6108e1565b60405161029a91906136c3565b60405180910390f35b3480156102af57600080fd5b506102b8610907565b6040516102c591906138c0565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f091906131b2565b610917565b60405161030291906136a8565b60405180910390f35b34801561031757600080fd5b506103206109f0565b60405161032d91906138c0565b60405180910390f35b34801561034257600080fd5b5061034b6109f6565b6040516103589190613935565b60405180910390f35b34801561036d57600080fd5b506103766109ff565b604051610383919061368d565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae9190613124565b610a25565b005b3480156103c157600080fd5b506103dc60048036038101906103d791906132d6565b610b15565b005b3480156103ea57600080fd5b506103f3610bc7565b005b34801561040157600080fd5b5061041c60048036038101906104179190613124565b610c98565b60405161042991906138c0565b60405180910390f35b34801561043e57600080fd5b50610447610ce9565b005b34801561045557600080fd5b50610470600480360381019061046b91906132ff565b610e3c565b005b34801561047e57600080fd5b50610487610edb565b60405161049491906138c0565b60405180910390f35b3480156104a957600080fd5b506104b2610ee1565b6040516104bf919061368d565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea91906132d6565b610f0a565b005b3480156104fd57600080fd5b50610506610fc3565b60405161051391906138c0565b60405180910390f35b34801561052857600080fd5b50610531610fc9565b60405161053e91906136de565b60405180910390f35b34801561055357600080fd5b5061056e600480360381019061056991906132ff565b611006565b005b34801561057c57600080fd5b5061059760048036038101906105929190613328565b6110a5565b005b3480156105a557600080fd5b506105c060048036038101906105bb9190613201565b61115c565b6040516105cd91906136a8565b60405180910390f35b3480156105e257600080fd5b506105fd60048036038101906105f89190613124565b61117a565b005b34801561060b57600080fd5b5061062660048036038101906106219190613124565b61126a565b60405161063391906136a8565b60405180910390f35b34801561064857600080fd5b5061065161128a565b005b34801561065f57600080fd5b5061067a6004803603810190610675919061323d565b611363565b005b34801561068857600080fd5b506106916114c3565b60405161069e91906138c0565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190613176565b6114c9565b6040516106db91906138c0565b60405180910390f35b3480156106f057600080fd5b5061070b600480360381019061070691906132ff565b611550565b005b34801561071957600080fd5b50610734600480360381019061072f9190613124565b6115ef565b005b61073e6117b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c290613820565b60405180910390fd5b60005b815181101561088257600160126000848481518110610816577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061087a90613bfa565b9150506107ce565b5050565b60606040518060400160405280600b81526020017f426c756520436865657365000000000000000000000000000000000000000000815250905090565b60006108d76108d06117b1565b84846117b9565b6001905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610924848484611984565b6109e5846109306117b1565b6109e08560405180606001604052806028815260200161410760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109966117b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124029092919063ffffffff16565b6117b9565b600190509392505050565b601a5481565b60006009905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a2d6117b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab190613820565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b1d6117b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba190613820565b60405180910390fd5b80601760166101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c086117b1565b73ffffffffffffffffffffffffffffffffffffffff161480610c7e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c666117b1565b73ffffffffffffffffffffffffffffffffffffffff16145b610c8757600080fd5b6000479050610c9581612466565b50565b6000610ce2600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612561565b9050919050565b610cf16117b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590613820565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e446117b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec890613820565b60405180910390fd5b8060188190555050565b60185481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f126117b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9690613820565b60405180910390fd5b80601760146101000a81548160ff0219169083151502179055504360098190555050565b60195481565b60606040518060400160405280600581526020017f426c756543000000000000000000000000000000000000000000000000000000815250905090565b61100e6117b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109290613820565b60405180910390fd5b80601a8190555050565b6110ad6117b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113190613820565b60405180910390fd5b83600a8190555082600c8190555081600b8190555080600d8190555050505050565b60006111706111696117b1565b8484611984565b6001905092915050565b6111826117b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120690613820565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112cb6117b1565b73ffffffffffffffffffffffffffffffffffffffff1614806113415750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113296117b1565b73ffffffffffffffffffffffffffffffffffffffff16145b61134a57600080fd5b600061135530610c98565b9050611360816125cf565b50565b61136b6117b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef90613820565b60405180910390fd5b60005b838390508110156114bd578160056000868685818110611444577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906114599190613124565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114b590613bfa565b9150506113fb565b50505050565b60095481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115586117b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613820565b60405180910390fd5b8060198190555050565b6115f76117b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b90613820565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90613780565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611820906138a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611899576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611890906137a0565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161197791906138c0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb90613860565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90613700565b60405180910390fd5b60008111611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e90613840565b60405180910390fd5b611aaf610ee1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b1d5750611aed610ee1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561210157601760149054906101000a900460ff16611c54578273ffffffffffffffffffffffffffffffffffffffff16611b55610ee1565b73ffffffffffffffffffffffffffffffffffffffff161480611bc05750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c145750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4a90613720565b60405180910390fd5b5b601854811115611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9090613760565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d3d5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d73906137c0565b60405180910390fd5b6009544311158015611ddb5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611e355750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e6d57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ecb576001601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611f785760195481611f2d84610c98565b611f3791906139f6565b10611f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6e90613880565b60405180910390fd5b5b6000611f8330610c98565b90506000601a5482101590506018548210611f9e5760185491505b808015611fb85750601760159054906101000a900460ff16155b80156120125750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561202a5750601760169054906101000a900460ff165b80156120805750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120d65750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120fe576120e4826125cf565b600047905060008111156120fc576120fb47612466565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121a85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061225b5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561225a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561226957600090506123f0565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156123145750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561232c57600a54600e81905550600b54600f819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123d75750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156123ef57600c54600e81905550600d54600f819055505b5b6123fc848484846128c9565b50505050565b600083831115829061244a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244191906136de565b60405180910390fd5b50600083856124599190613ad7565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6124b66002846128f690919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156124e1573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6125326002846128f690919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561255d573d6000803e3d6000fd5b5050565b60006007548211156125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259f90613740565b60405180910390fd5b60006125b2612940565b90506125c781846128f690919063ffffffff16565b915050919050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561262d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561265b5781602001602082028036833780820191505090505b5090503081600081518110612699577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561273b57600080fd5b505afa15801561274f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612773919061314d565b816001815181106127ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061281430601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117b9565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016128789594939291906138db565b600060405180830381600087803b15801561289257600080fd5b505af11580156128a6573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b806128d7576128d661296b565b5b6128e28484846129ae565b806128f0576128ef612b79565b5b50505050565b600061293883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b8d565b905092915050565b600080600061294d612bf0565b9150915061296481836128f690919063ffffffff16565b9250505090565b6000600e5414801561297f57506000600f54145b15612989576129ac565b600e54601081905550600f546011819055506000600e819055506000600f819055505b565b6000806000806000806129c087612c4f565b955095509550955095509550612a1e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cb790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ab385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612aff81612d5f565b612b098483612e1c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b6691906138c0565b60405180910390a3505050505050505050565b601054600e81905550601154600f81905550565b60008083118290612bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcb91906136de565b60405180910390fd5b5060008385612be39190613a4c565b9050809150509392505050565b600080600060075490506000670de0b6b3a76400009050612c24670de0b6b3a76400006007546128f690919063ffffffff16565b821015612c4257600754670de0b6b3a7640000935093505050612c4b565b81819350935050505b9091565b6000806000806000806000806000612c6c8a600e54600f54612e56565b9250925092506000612c7c612940565b90506000806000612c8f8e878787612eec565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612cf983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612402565b905092915050565b6000808284612d1091906139f6565b905083811015612d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4c906137e0565b60405180910390fd5b8091505092915050565b6000612d69612940565b90506000612d808284612f7590919063ffffffff16565b9050612dd481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612e3182600754612cb790919063ffffffff16565b600781905550612e4c81600854612d0190919063ffffffff16565b6008819055505050565b600080600080612e826064612e74888a612f7590919063ffffffff16565b6128f690919063ffffffff16565b90506000612eac6064612e9e888b612f7590919063ffffffff16565b6128f690919063ffffffff16565b90506000612ed582612ec7858c612cb790919063ffffffff16565b612cb790919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612f058589612f7590919063ffffffff16565b90506000612f1c8689612f7590919063ffffffff16565b90506000612f338789612f7590919063ffffffff16565b90506000612f5c82612f4e8587612cb790919063ffffffff16565b612cb790919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612f885760009050612fea565b60008284612f969190613a7d565b9050828482612fa59190613a4c565b14612fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fdc90613800565b60405180910390fd5b809150505b92915050565b6000613003612ffe84613975565b613950565b9050808382526020820190508285602086028201111561302257600080fd5b60005b858110156130525781613038888261305c565b845260208401935060208301925050600181019050613025565b5050509392505050565b60008135905061306b816140c1565b92915050565b600081519050613080816140c1565b92915050565b60008083601f84011261309857600080fd5b8235905067ffffffffffffffff8111156130b157600080fd5b6020830191508360208202830111156130c957600080fd5b9250929050565b600082601f8301126130e157600080fd5b81356130f1848260208601612ff0565b91505092915050565b600081359050613109816140d8565b92915050565b60008135905061311e816140ef565b92915050565b60006020828403121561313657600080fd5b60006131448482850161305c565b91505092915050565b60006020828403121561315f57600080fd5b600061316d84828501613071565b91505092915050565b6000806040838503121561318957600080fd5b60006131978582860161305c565b92505060206131a88582860161305c565b9150509250929050565b6000806000606084860312156131c757600080fd5b60006131d58682870161305c565b93505060206131e68682870161305c565b92505060406131f78682870161310f565b9150509250925092565b6000806040838503121561321457600080fd5b60006132228582860161305c565b92505060206132338582860161310f565b9150509250929050565b60008060006040848603121561325257600080fd5b600084013567ffffffffffffffff81111561326c57600080fd5b61327886828701613086565b9350935050602061328b868287016130fa565b9150509250925092565b6000602082840312156132a757600080fd5b600082013567ffffffffffffffff8111156132c157600080fd5b6132cd848285016130d0565b91505092915050565b6000602082840312156132e857600080fd5b60006132f6848285016130fa565b91505092915050565b60006020828403121561331157600080fd5b600061331f8482850161310f565b91505092915050565b6000806000806080858703121561333e57600080fd5b600061334c8782880161310f565b945050602061335d8782880161310f565b935050604061336e8782880161310f565b925050606061337f8782880161310f565b91505092959194509250565b600061339783836133a3565b60208301905092915050565b6133ac81613b0b565b82525050565b6133bb81613b0b565b82525050565b60006133cc826139b1565b6133d681856139d4565b93506133e1836139a1565b8060005b838110156134125781516133f9888261338b565b9750613404836139c7565b9250506001810190506133e5565b5085935050505092915050565b61342881613b1d565b82525050565b61343781613b60565b82525050565b61344681613b84565b82525050565b6000613457826139bc565b61346181856139e5565b9350613471818560208601613b96565b61347a81613cd0565b840191505092915050565b60006134926023836139e5565b915061349d82613ce1565b604082019050919050565b60006134b5603f836139e5565b91506134c082613d30565b604082019050919050565b60006134d8602a836139e5565b91506134e382613d7f565b604082019050919050565b60006134fb601c836139e5565b915061350682613dce565b602082019050919050565b600061351e6026836139e5565b915061352982613df7565b604082019050919050565b60006135416022836139e5565b915061354c82613e46565b604082019050919050565b60006135646023836139e5565b915061356f82613e95565b604082019050919050565b6000613587601b836139e5565b915061359282613ee4565b602082019050919050565b60006135aa6021836139e5565b91506135b582613f0d565b604082019050919050565b60006135cd6020836139e5565b91506135d882613f5c565b602082019050919050565b60006135f06029836139e5565b91506135fb82613f85565b604082019050919050565b60006136136025836139e5565b915061361e82613fd4565b604082019050919050565b60006136366023836139e5565b915061364182614023565b604082019050919050565b60006136596024836139e5565b915061366482614072565b604082019050919050565b61367881613b49565b82525050565b61368781613b53565b82525050565b60006020820190506136a260008301846133b2565b92915050565b60006020820190506136bd600083018461341f565b92915050565b60006020820190506136d8600083018461342e565b92915050565b600060208201905081810360008301526136f8818461344c565b905092915050565b6000602082019050818103600083015261371981613485565b9050919050565b60006020820190508181036000830152613739816134a8565b9050919050565b60006020820190508181036000830152613759816134cb565b9050919050565b60006020820190508181036000830152613779816134ee565b9050919050565b6000602082019050818103600083015261379981613511565b9050919050565b600060208201905081810360008301526137b981613534565b9050919050565b600060208201905081810360008301526137d981613557565b9050919050565b600060208201905081810360008301526137f98161357a565b9050919050565b600060208201905081810360008301526138198161359d565b9050919050565b60006020820190508181036000830152613839816135c0565b9050919050565b60006020820190508181036000830152613859816135e3565b9050919050565b6000602082019050818103600083015261387981613606565b9050919050565b6000602082019050818103600083015261389981613629565b9050919050565b600060208201905081810360008301526138b98161364c565b9050919050565b60006020820190506138d5600083018461366f565b92915050565b600060a0820190506138f0600083018861366f565b6138fd602083018761343d565b818103604083015261390f81866133c1565b905061391e60608301856133b2565b61392b608083018461366f565b9695505050505050565b600060208201905061394a600083018461367e565b92915050565b600061395a61396b565b90506139668282613bc9565b919050565b6000604051905090565b600067ffffffffffffffff8211156139905761398f613ca1565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a0182613b49565b9150613a0c83613b49565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a4157613a40613c43565b5b828201905092915050565b6000613a5782613b49565b9150613a6283613b49565b925082613a7257613a71613c72565b5b828204905092915050565b6000613a8882613b49565b9150613a9383613b49565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613acc57613acb613c43565b5b828202905092915050565b6000613ae282613b49565b9150613aed83613b49565b925082821015613b0057613aff613c43565b5b828203905092915050565b6000613b1682613b29565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613b6b82613b72565b9050919050565b6000613b7d82613b29565b9050919050565b6000613b8f82613b49565b9050919050565b60005b83811015613bb4578082015181840152602081019050613b99565b83811115613bc3576000848401525b50505050565b613bd282613cd0565b810181811067ffffffffffffffff82111715613bf157613bf0613ca1565b5b80604052505050565b6000613c0582613b49565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c3857613c37613c43565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6140ca81613b0b565b81146140d557600080fd5b50565b6140e181613b1d565b81146140ec57600080fd5b50565b6140f881613b49565b811461410357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200ce5c3b3bed1e95fe73e5c96fe192c785108bfbf340ac45d723204467238b40864736f6c63430008040033