0x6080604052612710600760006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506103e8600760106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506000600860006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506000600860106101000a81548160ff0219169083151502179055506000600860116101000a81548160ff02191690831515021790555060405162004b5038038062004b5083398181016040528101906200010f919062000442565b6040518060400160405280601081526020017f537061636520457468706c6f72657273000000000000000000000000000000008152506040518060400160405280600a81526020017f455448504c4f52455253000000000000000000000000000000000000000000008152506200019b6200018f6200023160201b60201c565b6200023960201b60201c565b8160019080519060200190620001b3929190620002fd565b508060029080519060200190620001cc929190620002fd565b50505081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a908051906020019062000228929190620002fd565b5050506200067a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200030b9062000571565b90600052602060002090601f0160209004810192826200032f57600085556200037b565b82601f106200034a57805160ff19168380011785556200037b565b828001600101855582156200037b579182015b828111156200037a5782518255916020019190600101906200035d565b5b5090506200038a91906200038e565b5090565b5b80821115620003a95760008160009055506001016200038f565b5090565b6000620003c4620003be84620004d1565b620004a8565b905082815260208101848484011115620003e357620003e262000640565b5b620003f08482856200053b565b509392505050565b600081519050620004098162000660565b92915050565b600082601f8301126200042757620004266200063b565b5b815162000439848260208601620003ad565b91505092915050565b600080604083850312156200045c576200045b6200064a565b5b60006200046c85828601620003f8565b925050602083015167ffffffffffffffff81111562000490576200048f62000645565b5b6200049e858286016200040f565b9150509250929050565b6000620004b4620004c7565b9050620004c28282620005a7565b919050565b6000604051905090565b600067ffffffffffffffff821115620004ef57620004ee6200060c565b5b620004fa826200064f565b9050602081019050919050565b600062000514826200051b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b838110156200055b5780820151818401526020810190506200053e565b838111156200056b576000848401525b50505050565b600060028204905060018216806200058a57607f821691505b60208210811415620005a157620005a0620005dd565b5b50919050565b620005b2826200064f565b810181811067ffffffffffffffff82111715620005d457620005d36200060c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200066b8162000507565b81146200067757600080fd5b50565b6144c6806200068a6000396000f3fe6080604052600436106101e35760003560e01c80636aabb94711610102578063a0712d6811610095578063c87b56dd11610064578063c87b56dd1461068a578063d5abeb01146106c7578063e985e9c5146106f2578063f2fde38b1461072f576101e3565b8063a0712d68146105f3578063a22cb4651461060f578063b88d4fde14610638578063c1f2612314610661576101e3565b80638d859f3e116100d15780638d859f3e146105495780638da5cb5b1461057457806395d89b411461059f5780639c09c835146105ca576101e3565b80636aabb947146104c257806370a08231146104de578063715018a61461051b5780637d8966e414610532576101e3565b80633af32abf1161017a5780635327787911610149578063532778791461040857806355f804b3146104455780636352211e1461046e57806367272999146104ab576101e3565b80633af32abf1461036057806342842e0e1461039d5780634fff968a146103c657806350e8929a146103f1576101e3565b80630fe8418b116101b65780630fe8418b146102b657806318160ddd146102e157806323b872dd1461030c57806331c3c7a014610335576101e3565b806301ffc9a7146101e857806306fdde0314610225578063081812fc14610250578063095ea7b31461028d575b600080fd5b3480156101f457600080fd5b5061020f600480360381019061020a91906130d2565b610758565b60405161021c919061363c565b60405180910390f35b34801561023157600080fd5b5061023a61083a565b6040516102479190613657565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190613175565b6108cc565b60405161028491906135d5565b60405180910390f35b34801561029957600080fd5b506102b460048036038101906102af9190613049565b610951565b005b3480156102c257600080fd5b506102cb610a69565b6040516102d89190613939565b60405180910390f35b3480156102ed57600080fd5b506102f6610a8b565b6040516103039190613939565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e9190612f33565b610aad565b005b34801561034157600080fd5b5061034a610b0d565b6040516103579190613954565b60405180910390f35b34801561036c57600080fd5b5061038760048036038101906103829190612ec6565b610b18565b604051610394919061363c565b60405180910390f35b3480156103a957600080fd5b506103c460048036038101906103bf9190612f33565b610b6e565b005b3480156103d257600080fd5b506103db610b8e565b6040516103e89190613954565b60405180910390f35b3480156103fd57600080fd5b50610406610b93565b005b34801561041457600080fd5b5061042f600480360381019061042a9190612ec6565b610c3b565b60405161043c9190613954565b60405180910390f35b34801561045157600080fd5b5061046c6004803603810190610467919061312c565b610c53565b005b34801561047a57600080fd5b5061049560048036038101906104909190613175565b610ce9565b6040516104a291906135d5565b60405180910390f35b3480156104b757600080fd5b506104c0610d9b565b005b6104dc60048036038101906104d79190613175565b610e82565b005b3480156104ea57600080fd5b5061050560048036038101906105009190612ec6565b611209565b6040516105129190613954565b60405180910390f35b34801561052757600080fd5b506105306112c1565b005b34801561053e57600080fd5b50610547611349565b005b34801561055557600080fd5b5061055e6113f1565b60405161056b9190613954565b60405180910390f35b34801561058057600080fd5b506105896113fc565b60405161059691906135d5565b60405180910390f35b3480156105ab57600080fd5b506105b4611425565b6040516105c19190613657565b60405180910390f35b3480156105d657600080fd5b506105f160048036038101906105ec9190613089565b6114b7565b005b61060d60048036038101906106089190613175565b6115c8565b005b34801561061b57600080fd5b5061063660048036038101906106319190613009565b611951565b005b34801561064457600080fd5b5061065f600480360381019061065a9190612f86565b611967565b005b34801561066d57600080fd5b5061068860048036038101906106839190613175565b6119c9565b005b34801561069657600080fd5b506106b160048036038101906106ac9190613175565b611c95565b6040516106be9190613657565b60405180910390f35b3480156106d357600080fd5b506106dc611d1d565b6040516106e99190613939565b60405180910390f35b3480156106fe57600080fd5b5061071960048036038101906107149190612ef3565b611d3f565b604051610726919061363c565b60405180910390f35b34801561073b57600080fd5b5061075660048036038101906107519190612ec6565b611dd3565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061082357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610833575061083282611ecb565b5b9050919050565b60606001805461084990613cd6565b80601f016020809104026020016040519081016040528092919081815260200182805461087590613cd6565b80156108c25780601f10610897576101008083540402835291602001916108c2565b820191906000526020600020905b8154815290600101906020018083116108a557829003601f168201915b5050505050905090565b60006108d782611f35565b610916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090d90613819565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061095c82610ce9565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c4906138d9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109ec611fa1565b73ffffffffffffffffffffffffffffffffffffffff161480610a1b5750610a1a81610a15611fa1565b611d3f565b5b610a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5190613739565b60405180910390fd5b610a648383611fa9565b505050565b600760109054906101000a90046fffffffffffffffffffffffffffffffff1681565b600860009054906101000a90046fffffffffffffffffffffffffffffffff1681565b610abe610ab8611fa1565b82612062565b610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af4906138f9565b60405180910390fd5b610b08838383612140565b505050565b666a94d74f43000081565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b8983838360405180602001604052806000815250611967565b505050565b600a81565b610b9b611fa1565b73ffffffffffffffffffffffffffffffffffffffff16610bb96113fc565b73ffffffffffffffffffffffffffffffffffffffff1614610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0690613859565b60405180910390fd5b600860119054906101000a900460ff1615600860116101000a81548160ff021916908315150217905550565b600b6020528060005260406000206000915090505481565b610c5b611fa1565b73ffffffffffffffffffffffffffffffffffffffff16610c796113fc565b73ffffffffffffffffffffffffffffffffffffffff1614610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690613859565b60405180910390fd5b80600a9080519060200190610ce5929190612c3c565b5050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990613779565b60405180910390fd5b80915050919050565b610da3611fa1565b73ffffffffffffffffffffffffffffffffffffffff16610dc16113fc565b73ffffffffffffffffffffffffffffffffffffffff1614610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e90613859565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610e7f573d6000803e3d6000fd5b50565b600760009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600860009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff161115610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c906137f9565b60405180910390fd5b3481666a94d74f430000610f399190613b69565b1115610f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7190613799565b60405180910390fd5b60011515600860119054906101000a900460ff16151514610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790613879565b60405180910390fd5b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661105c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105390613919565b60405180910390fd5b60005b81811015611205576001600860008282829054906101000a90046fffffffffffffffffffffffffffffffff166110959190613a65565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555061110533600860009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1661239c565b61113e600860009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1661256a565b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461118e9190613aab565b92505081905550600860009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff167f07883703ed0e86588a40d76551c92f8a4b329e3bf19765e0e6749473c1a8466560405160405180910390a280806111fd90613d39565b91505061105f565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561127a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127190613759565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112c9611fa1565b73ffffffffffffffffffffffffffffffffffffffff166112e76113fc565b73ffffffffffffffffffffffffffffffffffffffff161461133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133490613859565b60405180910390fd5b61134760006125e5565b565b611351611fa1565b73ffffffffffffffffffffffffffffffffffffffff1661136f6113fc565b73ffffffffffffffffffffffffffffffffffffffff16146113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90613859565b60405180910390fd5b600860109054906101000a900460ff1615600860106101000a81548160ff021916908315150217905550565b668e1bc9bf04000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461143490613cd6565b80601f016020809104026020016040519081016040528092919081815260200182805461146090613cd6565b80156114ad5780601f10611482576101008083540402835291602001916114ad565b820191906000526020600020905b81548152906001019060200180831161149057829003601f168201915b5050505050905090565b6114bf611fa1565b73ffffffffffffffffffffffffffffffffffffffff166114dd6113fc565b73ffffffffffffffffffffffffffffffffffffffff1614611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a90613859565b60405180910390fd5b60005b81518110156115c4576001600d600084848151811061155857611557613e0f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115bc90613d39565b915050611536565b5050565b600760009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600860009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16111561166b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611662906137f9565b60405180910390fd5b600a81600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b89190613aab565b11156116f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f0906137d9565b60405180910390fd5b3481668e1bc9bf04000061170d9190613b69565b111561174e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174590613799565b60405180910390fd5b60011515600860109054906101000a900460ff161515146117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90613879565b60405180910390fd5b60005b8181101561194d576001600860008282829054906101000a90046fffffffffffffffffffffffffffffffff166117dd9190613a65565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555061184d33600860009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1661239c565b611886600860009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1661256a565b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118d69190613aab565b92505081905550600860009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff167f07883703ed0e86588a40d76551c92f8a4b329e3bf19765e0e6749473c1a8466560405160405180910390a2808061194590613d39565b9150506117a7565b5050565b61196361195c611fa1565b83836126a9565b5050565b611978611972611fa1565b83612062565b6119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae906138f9565b60405180910390fd5b6119c384848484612816565b50505050565b6119d1611fa1565b73ffffffffffffffffffffffffffffffffffffffff166119ef6113fc565b73ffffffffffffffffffffffffffffffffffffffff1614611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c90613859565b60405180910390fd5b600760009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600860009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff161115611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf906137f9565b60405180910390fd5b60005b81811015611c91576001600860008282829054906101000a90046fffffffffffffffffffffffffffffffff16611b219190613a65565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550611b9133600860009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1661239c565b611bca600860009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1661256a565b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c1a9190613aab565b92505081905550600860009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff167f07883703ed0e86588a40d76551c92f8a4b329e3bf19765e0e6749473c1a8466560405160405180910390a28080611c8990613d39565b915050611aeb565b5050565b6060611ca082611f35565b611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd6906138b9565b60405180910390fd5b6000611ce9612872565b905080611cf584612904565b604051602001611d069291906135a6565b604051602081830303815290604052915050919050565b600760009054906101000a90046fffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ddb611fa1565b73ffffffffffffffffffffffffffffffffffffffff16611df96113fc565b73ffffffffffffffffffffffffffffffffffffffff1614611e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4690613859565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb690613699565b60405180910390fd5b611ec8816125e5565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661201c83610ce9565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061206d82611f35565b6120ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a390613719565b60405180910390fd5b60006120b783610ce9565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061212657508373ffffffffffffffffffffffffffffffffffffffff1661210e846108cc565b73ffffffffffffffffffffffffffffffffffffffff16145b8061213757506121368185611d3f565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661216082610ce9565b73ffffffffffffffffffffffffffffffffffffffff16146121b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ad90613899565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221d906136d9565b60405180910390fd5b612231838383612a8d565b61223c600082611fa9565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461228c9190613bc3565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122e39190613aab565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561240c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612403906137b9565b60405180910390fd5b61241581611f35565b15612455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244c906136b9565b60405180910390fd5b61246160008383612a8d565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124b19190613aab565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b61257381611f35565b6125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a990613839565b60405180910390fd5b6125bb81612904565b600c600083815260200190815260200160002090805190602001906125e1929190612c3c565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270f906136f9565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612809919061363c565b60405180910390a3505050565b612821848484612140565b61282d84848484612a92565b61286c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286390613679565b60405180910390fd5b50505050565b6060600a805461288190613cd6565b80601f01602080910402602001604051908101604052809291908181526020018280546128ad90613cd6565b80156128fa5780601f106128cf576101008083540402835291602001916128fa565b820191906000526020600020905b8154815290600101906020018083116128dd57829003601f168201915b5050505050905090565b6060600082141561294c576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612a88565b600082905060005b6000821461297e57808061296790613d39565b915050600a826129779190613b38565b9150612954565b60008167ffffffffffffffff81111561299a57612999613e3e565b5b6040519080825280601f01601f1916602001820160405280156129cc5781602001600182028036833780820191505090505b50905060008290505b60008614612a80576001816129ea9190613bc3565b90506000600a80886129fc9190613b38565b612a069190613b69565b87612a119190613bc3565b6030612a1d9190613b01565b905060008160f81b905080848481518110612a3b57612a3a613e0f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a88612a779190613b38565b975050506129d5565b819450505050505b919050565b505050565b6000612ab38473ffffffffffffffffffffffffffffffffffffffff16612c29565b15612c1c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612adc611fa1565b8786866040518563ffffffff1660e01b8152600401612afe94939291906135f0565b602060405180830381600087803b158015612b1857600080fd5b505af1925050508015612b4957506040513d601f19601f82011682018060405250810190612b4691906130ff565b60015b612bcc573d8060008114612b79576040519150601f19603f3d011682016040523d82523d6000602084013e612b7e565b606091505b50600081511415612bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbb90613679565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c21565b600190505b949350505050565b600080823b905060008111915050919050565b828054612c4890613cd6565b90600052602060002090601f016020900481019282612c6a5760008555612cb1565b82601f10612c8357805160ff1916838001178555612cb1565b82800160010185558215612cb1579182015b82811115612cb0578251825591602001919060010190612c95565b5b509050612cbe9190612cc2565b5090565b5b80821115612cdb576000816000905550600101612cc3565b5090565b6000612cf2612ced84613994565b61396f565b90508083825260208201905082856020860282011115612d1557612d14613e72565b5b60005b85811015612d455781612d2b8882612dd3565b845260208401935060208301925050600181019050612d18565b5050509392505050565b6000612d62612d5d846139c0565b61396f565b905082815260208101848484011115612d7e57612d7d613e77565b5b612d89848285613c94565b509392505050565b6000612da4612d9f846139f1565b61396f565b905082815260208101848484011115612dc057612dbf613e77565b5b612dcb848285613c94565b509392505050565b600081359050612de281614434565b92915050565b600082601f830112612dfd57612dfc613e6d565b5b8135612e0d848260208601612cdf565b91505092915050565b600081359050612e258161444b565b92915050565b600081359050612e3a81614462565b92915050565b600081519050612e4f81614462565b92915050565b600082601f830112612e6a57612e69613e6d565b5b8135612e7a848260208601612d4f565b91505092915050565b600082601f830112612e9857612e97613e6d565b5b8135612ea8848260208601612d91565b91505092915050565b600081359050612ec081614479565b92915050565b600060208284031215612edc57612edb613e81565b5b6000612eea84828501612dd3565b91505092915050565b60008060408385031215612f0a57612f09613e81565b5b6000612f1885828601612dd3565b9250506020612f2985828601612dd3565b9150509250929050565b600080600060608486031215612f4c57612f4b613e81565b5b6000612f5a86828701612dd3565b9350506020612f6b86828701612dd3565b9250506040612f7c86828701612eb1565b9150509250925092565b60008060008060808587031215612fa057612f9f613e81565b5b6000612fae87828801612dd3565b9450506020612fbf87828801612dd3565b9350506040612fd087828801612eb1565b925050606085013567ffffffffffffffff811115612ff157612ff0613e7c565b5b612ffd87828801612e55565b91505092959194509250565b600080604083850312156130205761301f613e81565b5b600061302e85828601612dd3565b925050602061303f85828601612e16565b9150509250929050565b600080604083850312156130605761305f613e81565b5b600061306e85828601612dd3565b925050602061307f85828601612eb1565b9150509250929050565b60006020828403121561309f5761309e613e81565b5b600082013567ffffffffffffffff8111156130bd576130bc613e7c565b5b6130c984828501612de8565b91505092915050565b6000602082840312156130e8576130e7613e81565b5b60006130f684828501612e2b565b91505092915050565b60006020828403121561311557613114613e81565b5b600061312384828501612e40565b91505092915050565b60006020828403121561314257613141613e81565b5b600082013567ffffffffffffffff8111156131605761315f613e7c565b5b61316c84828501612e83565b91505092915050565b60006020828403121561318b5761318a613e81565b5b600061319984828501612eb1565b91505092915050565b6131ab81613bf7565b82525050565b6131ba81613c09565b82525050565b60006131cb82613a22565b6131d58185613a38565b93506131e5818560208601613ca3565b6131ee81613e86565b840191505092915050565b600061320482613a2d565b61320e8185613a49565b935061321e818560208601613ca3565b61322781613e86565b840191505092915050565b600061323d82613a2d565b6132478185613a5a565b9350613257818560208601613ca3565b80840191505092915050565b6000613270603283613a49565b915061327b82613e97565b604082019050919050565b6000613293602683613a49565b915061329e82613ee6565b604082019050919050565b60006132b6601c83613a49565b91506132c182613f35565b602082019050919050565b60006132d9602483613a49565b91506132e482613f5e565b604082019050919050565b60006132fc601983613a49565b915061330782613fad565b602082019050919050565b600061331f602c83613a49565b915061332a82613fd6565b604082019050919050565b6000613342603883613a49565b915061334d82614025565b604082019050919050565b6000613365602a83613a49565b915061337082614074565b604082019050919050565b6000613388602983613a49565b9150613393826140c3565b604082019050919050565b60006133ab600d83613a49565b91506133b682614112565b602082019050919050565b60006133ce602083613a49565b91506133d98261413b565b602082019050919050565b60006133f1600b83613a49565b91506133fc82614164565b602082019050919050565b6000613414601483613a49565b915061341f8261418d565b602082019050919050565b6000613437602c83613a49565b9150613442826141b6565b604082019050919050565b600061345a600583613a5a565b915061346582614205565b600582019050919050565b600061347d602c83613a49565b91506134888261422e565b604082019050919050565b60006134a0602083613a49565b91506134ab8261427d565b602082019050919050565b60006134c3600b83613a49565b91506134ce826142a6565b602082019050919050565b60006134e6602983613a49565b91506134f1826142cf565b604082019050919050565b6000613509602f83613a49565b91506135148261431e565b604082019050919050565b600061352c602183613a49565b91506135378261436d565b604082019050919050565b600061354f603183613a49565b915061355a826143bc565b604082019050919050565b6000613572600f83613a49565b915061357d8261440b565b602082019050919050565b61359181613c41565b82525050565b6135a081613c7d565b82525050565b60006135b28285613232565b91506135be8284613232565b91506135c98261344d565b91508190509392505050565b60006020820190506135ea60008301846131a2565b92915050565b600060808201905061360560008301876131a2565b61361260208301866131a2565b61361f6040830185613597565b818103606083015261363181846131c0565b905095945050505050565b600060208201905061365160008301846131b1565b92915050565b6000602082019050818103600083015261367181846131f9565b905092915050565b6000602082019050818103600083015261369281613263565b9050919050565b600060208201905081810360008301526136b281613286565b9050919050565b600060208201905081810360008301526136d2816132a9565b9050919050565b600060208201905081810360008301526136f2816132cc565b9050919050565b60006020820190508181036000830152613712816132ef565b9050919050565b6000602082019050818103600083015261373281613312565b9050919050565b6000602082019050818103600083015261375281613335565b9050919050565b6000602082019050818103600083015261377281613358565b9050919050565b600060208201905081810360008301526137928161337b565b9050919050565b600060208201905081810360008301526137b28161339e565b9050919050565b600060208201905081810360008301526137d2816133c1565b9050919050565b600060208201905081810360008301526137f2816133e4565b9050919050565b6000602082019050818103600083015261381281613407565b9050919050565b600060208201905081810360008301526138328161342a565b9050919050565b6000602082019050818103600083015261385281613470565b9050919050565b6000602082019050818103600083015261387281613493565b9050919050565b60006020820190508181036000830152613892816134b6565b9050919050565b600060208201905081810360008301526138b2816134d9565b9050919050565b600060208201905081810360008301526138d2816134fc565b9050919050565b600060208201905081810360008301526138f28161351f565b9050919050565b6000602082019050818103600083015261391281613542565b9050919050565b6000602082019050818103600083015261393281613565565b9050919050565b600060208201905061394e6000830184613588565b92915050565b60006020820190506139696000830184613597565b92915050565b600061397961398a565b90506139858282613d08565b919050565b6000604051905090565b600067ffffffffffffffff8211156139af576139ae613e3e565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156139db576139da613e3e565b5b6139e482613e86565b9050602081019050919050565b600067ffffffffffffffff821115613a0c57613a0b613e3e565b5b613a1582613e86565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613a7082613c41565b9150613a7b83613c41565b9250826fffffffffffffffffffffffffffffffff03821115613aa057613a9f613d82565b5b828201905092915050565b6000613ab682613c7d565b9150613ac183613c7d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613af657613af5613d82565b5b828201905092915050565b6000613b0c82613c87565b9150613b1783613c87565b92508260ff03821115613b2d57613b2c613d82565b5b828201905092915050565b6000613b4382613c7d565b9150613b4e83613c7d565b925082613b5e57613b5d613db1565b5b828204905092915050565b6000613b7482613c7d565b9150613b7f83613c7d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bb857613bb7613d82565b5b828202905092915050565b6000613bce82613c7d565b9150613bd983613c7d565b925082821015613bec57613beb613d82565b5b828203905092915050565b6000613c0282613c5d565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613cc1578082015181840152602081019050613ca6565b83811115613cd0576000848401525b50505050565b60006002820490506001821680613cee57607f821691505b60208210811415613d0257613d01613de0565b5b50919050565b613d1182613e86565b810181811067ffffffffffffffff82111715613d3057613d2f613e3e565b5b80604052505050565b6000613d4482613c7d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d7757613d76613d82565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f45544820696e636f727265637400000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4d696e746564206d61782e000000000000000000000000000000000000000000600082015250565b7f4d696e7420737570706c7920726561636865642e000000000000000000000000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920736574206f66206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f73616c65206c6f636b6564000000000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f6e6f742077686974656c69737465640000000000000000000000000000000000600082015250565b61443d81613bf7565b811461444857600080fd5b50565b61445481613c09565b811461445f57600080fd5b50565b61446b81613c15565b811461447657600080fd5b50565b61448281613c7d565b811461448d57600080fd5b5056fea2646970667358221220da7af4bb20359114992005f5868b67f1c3ce66950409c819d57a09ac1c73b9b564736f6c63430008070033000000000000000000000000b84431bd9259ad8f7fb3ff54eb9a928b2358031c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004868747470733a2f2f63662d697066732e636f6d2f697066732f516d63467763426d31476a37374a6d5a514c316437476f48596955314a7758747741336f4c3335664b6a797a45592f000000000000000000000000000000000000000000000000