60806040523480156200001157600080fd5b506040518060400160405280600b81526020017f426174746c6520506173730000000000000000000000000000000000000000008152506040518060400160405280600281526020017f425000000000000000000000000000000000000000000000000000000000000081525081600090816200008f9190620004b4565b508060019081620000a19190620004b4565b505050620000b96000801b33620000bf60201b60201c565b6200059b565b620000d18282620000d560201b60201c565b5050565b620000e78282620001c760201b60201c565b620001c3576001600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001686200023260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002bc57607f821691505b602082108103620002d257620002d162000274565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200033c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002fd565b620003488683620002fd565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003956200038f620003898462000360565b6200036a565b62000360565b9050919050565b6000819050919050565b620003b18362000374565b620003c9620003c0826200039c565b8484546200030a565b825550505050565b600090565b620003e0620003d1565b620003ed818484620003a6565b505050565b5b81811015620004155762000409600082620003d6565b600181019050620003f3565b5050565b601f82111562000464576200042e81620002d8565b6200043984620002ed565b8101602085101562000449578190505b620004616200045885620002ed565b830182620003f2565b50505b505050565b600082821c905092915050565b6000620004896000198460080262000469565b1980831691505092915050565b6000620004a4838362000476565b9150826002028217905092915050565b620004bf826200023a565b67ffffffffffffffff811115620004db57620004da62000245565b5b620004e78254620002a3565b620004f482828562000419565b600060209050601f8311600181146200052c576000841562000517578287015190505b62000523858262000496565b86555062000593565b601f1984166200053c86620002d8565b60005b8281101562000566578489015182556001820191506020850194506020810190506200053f565b8683101562000586578489015162000582601f89168262000476565b8355505b6001600288020188555050505b505050505050565b613f8c80620005ab6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636352211e11610104578063ab41a2cf116100a2578063d547741f11610071578063d547741f14610588578063e0dd2457146105a4578063e985e9c5146105c2578063f0a5e40d146105f2576101cf565b8063ab41a2cf146104f0578063b88d4fde1461050c578063bfc849d014610528578063c87b56dd14610558576101cf565b806391d14854116100de57806391d148541461046857806395d89b4114610498578063a217fddf146104b6578063a22cb465146104d4576101cf565b80636352211e146103ec5780636a6278421461041c57806370a0823114610438576101cf565b806323b872dd116101715780632f745c591161014b5780632f745c591461035457806336568abe1461038457806342842e0e146103a05780634f6ccce7146103bc576101cf565b806323b872dd146102ec578063248a9ca3146103085780632f2ff15d14610338576101cf565b8063095ea7b3116101ad578063095ea7b3146102525780630986b2101461026e57806318160ddd1461029e5780631ab05321146102bc576101cf565b806301ffc9a7146101d457806306fdde0314610204578063081812fc14610222575b600080fd5b6101ee60048036038101906101e99190612a6f565b61060e565b6040516101fb9190612ab7565b60405180910390f35b61020c610620565b6040516102199190612b62565b60405180910390f35b61023c60048036038101906102379190612bba565b6106b2565b6040516102499190612c28565b60405180910390f35b61026c60048036038101906102679190612c6f565b6106f8565b005b61028860048036038101906102839190612caf565b61080f565b6040516102959190612d9a565b60405180910390f35b6102a6610918565b6040516102b39190612dcb565b60405180910390f35b6102d660048036038101906102d19190612bba565b610925565b6040516102e39190612dcb565b60405180910390f35b61030660048036038101906103019190612de6565b610942565b005b610322600480360381019061031d9190612e6f565b6109a2565b60405161032f9190612eab565b60405180910390f35b610352600480360381019061034d9190612ec6565b6109c2565b005b61036e60048036038101906103699190612c6f565b6109e3565b60405161037b9190612dcb565b60405180910390f35b61039e60048036038101906103999190612ec6565b610a88565b005b6103ba60048036038101906103b59190612de6565b610b0b565b005b6103d660048036038101906103d19190612bba565b610b2b565b6040516103e39190612dcb565b60405180910390f35b61040660048036038101906104019190612bba565b610b9c565b6040516104139190612c28565b60405180910390f35b61043660048036038101906104319190612caf565b610c22565b005b610452600480360381019061044d9190612caf565b610c78565b60405161045f9190612dcb565b60405180910390f35b610482600480360381019061047d9190612ec6565b610d2f565b60405161048f9190612ab7565b60405180910390f35b6104a0610d9a565b6040516104ad9190612b62565b60405180910390f35b6104be610e2c565b6040516104cb9190612eab565b60405180910390f35b6104ee60048036038101906104e99190612f32565b610e33565b005b61050a60048036038101906105059190612caf565b610e49565b005b610526600480360381019061052191906130a7565b610e84565b005b610542600480360381019061053d9190612bba565b610ee6565b60405161054f9190612dcb565b60405180910390f35b610572600480360381019061056d9190612bba565b610efe565b60405161057f9190612b62565b60405180910390f35b6105a2600480360381019061059d9190612ec6565b610f66565b005b6105ac610f87565b6040516105b99190612eab565b60405180910390f35b6105dc60048036038101906105d7919061312a565b610fab565b6040516105e99190612ab7565b60405180910390f35b61060c6004803603810190610607919061316a565b61103f565b005b600061061982611136565b9050919050565b60606000805461062f906131d9565b80601f016020809104026020016040519081016040528092919081815260200182805461065b906131d9565b80156106a85780601f1061067d576101008083540402835291602001916106a8565b820191906000526020600020905b81548152906001019060200180831161068b57829003601f168201915b5050505050905090565b60006106bd826111b0565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061070382610b9c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076a9061327c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107926111fb565b73ffffffffffffffffffffffffffffffffffffffff1614806107c157506107c0816107bb6111fb565b610fab565b5b610800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f79061330e565b60405180910390fd5b61080a8383611203565b505050565b6060600061081c83610c78565b90506000810361087857600067ffffffffffffffff81111561084157610840612f7c565b5b60405190808252806020026020018201604052801561086f5781602001602082028036833780820191505090505b50915050610913565b60008167ffffffffffffffff81111561089457610893612f7c565b5b6040519080825280602002602001820160405280156108c25781602001602082028036833780820191505090505b50905060005b8281101561090c576108da85826109e3565b8282815181106108ed576108ec61332e565b5b60200260200101818152505080806109049061338c565b9150506108c8565b5080925050505b919050565b6000600880549050905090565b6000600c6000838152602001908152602001600020549050919050565b61095361094d6111fb565b826112bc565b610992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098990613446565b60405180910390fd5b61099d838383611351565b505050565b6000600a6000838152602001908152602001600020600101549050919050565b6109cb826109a2565b6109d48161164a565b6109de838361165e565b505050565b60006109ee83610c78565b8210610a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a26906134d8565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a906111fb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af49061356a565b60405180910390fd5b610b07828261173f565b5050565b610b2683838360405180602001604052806000815250610e84565b505050565b6000610b35610918565b8210610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d906135fc565b60405180910390fd5b60088281548110610b8a57610b8961332e565b5b90600052602060002001549050919050565b600080610ba883611821565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090613668565b60405180910390fd5b80915050919050565b6000801b610c2f8161164a565b6000600b549050610c40838261185e565b6000600c6000838152602001908152602001600020819055506001600b6000828254610c6c9190613688565b92505081905550505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdf9061372e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060018054610da9906131d9565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd5906131d9565b8015610e225780601f10610df757610100808354040283529160200191610e22565b820191906000526020600020905b815481529060010190602001808311610e0557829003601f168201915b5050505050905090565b6000801b81565b610e45610e3e6111fb565b838361187c565b5050565b6000801b610e568161164a565b610e807f51785d261c3b3e8c2cfe2d0e108b9ab2b1fb703ff9e9e49aba4ebdc85c36152b836109c2565b5050565b610e95610e8f6111fb565b836112bc565b610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90613446565b60405180910390fd5b610ee0848484846119e8565b50505050565b600c6020528060005260406000206000915090505481565b6060610f09826111b0565b6000610f13611a44565b90506000815111610f335760405180602001604052806000815250610f5e565b80610f3d84611a5b565b604051602001610f4e92919061378a565b6040516020818303038152906040525b915050919050565b610f6f826109a2565b610f788161164a565b610f82838361173f565b505050565b7f51785d261c3b3e8c2cfe2d0e108b9ab2b1fb703ff9e9e49aba4ebdc85c36152b81565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f51785d261c3b3e8c2cfe2d0e108b9ab2b1fb703ff9e9e49aba4ebdc85c36152b6110698161164a565b61107283611b29565b6110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a890613820565b60405180910390fd5b81600c6000858152602001908152602001600020541015611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fe9061388c565b60405180910390fd5b81600c6000858152602001908152602001600020600082825461112a91906138ac565b92505081905550505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111a957506111a882611b6a565b5b9050919050565b6111b981611b29565b6111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef90613668565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661127683610b9c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806112c883610b9c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061130a57506113098185610fab565b5b8061134857508373ffffffffffffffffffffffffffffffffffffffff16611330846106b2565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661137182610b9c565b73ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be90613952565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d906139e4565b60405180910390fd5b6114438383836001611be4565b8273ffffffffffffffffffffffffffffffffffffffff1661146382610b9c565b73ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b090613952565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46116458383836001611d42565b505050565b61165b816116566111fb565b611d48565b50565b6116688282610d2f565b61173b576001600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116e06111fb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6117498282610d2f565b1561181d576000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117c26111fb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b611878828260405180602001604052806000815250611dcd565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e190613a50565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119db9190612ab7565b60405180910390a3505050565b6119f3848484611351565b6119ff84848484611e28565b611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3590613ae2565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606060006001611a6a84611faf565b01905060008167ffffffffffffffff811115611a8957611a88612f7c565b5b6040519080825280601f01601f191660200182016040528015611abb5781602001600182028036833780820191505090505b509050600082602001820190505b600115611b1e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611b1257611b11613b02565b5b04945060008503611ac9575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16611b4b83611821565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bdd5750611bdc82612102565b5b9050919050565b611bf0848484846121e4565b6001811115611c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2b90613ba3565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c7b57611c76816121ea565b611cba565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611cb957611cb88582612233565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611cfc57611cf7816123a0565b611d3b565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d3a57611d398482612471565b5b5b5050505050565b50505050565b611d528282610d2f565b611dc957611d5f816124f0565b611d6d8360001c602061251d565b604051602001611d7e929190613c5b565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc09190612b62565b60405180910390fd5b5050565b611dd78383612759565b611de46000848484611e28565b611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1a90613ae2565b60405180910390fd5b505050565b6000611e498473ffffffffffffffffffffffffffffffffffffffff16612976565b15611fa2578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611e726111fb565b8786866040518563ffffffff1660e01b8152600401611e949493929190613cea565b6020604051808303816000875af1925050508015611ed057506040513d601f19601f82011682018060405250810190611ecd9190613d4b565b60015b611f52573d8060008114611f00576040519150601f19603f3d011682016040523d82523d6000602084013e611f05565b606091505b506000815103611f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4190613ae2565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611fa7565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061200d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161200357612002613b02565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061204a576d04ee2d6d415b85acef810000000083816120405761203f613b02565b5b0492506020810190505b662386f26fc10000831061207957662386f26fc10000838161206f5761206e613b02565b5b0492506010810190505b6305f5e10083106120a2576305f5e100838161209857612097613b02565b5b0492506008810190505b61271083106120c75761271083816120bd576120bc613b02565b5b0492506004810190505b606483106120ea57606483816120e0576120df613b02565b5b0492506002810190505b600a83106120f9576001810190505b80915050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806121cd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806121dd57506121dc82612999565b5b9050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161224084610c78565b61224a91906138ac565b905060006007600084815260200190815260200160002054905081811461232f576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506123b491906138ac565b90506000600960008481526020019081526020016000205490506000600883815481106123e4576123e361332e565b5b9060005260206000200154905080600883815481106124065761240561332e565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061245557612454613d78565b5b6001900381819060005260206000200160009055905550505050565b600061247c83610c78565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b60606125168273ffffffffffffffffffffffffffffffffffffffff16601460ff1661251d565b9050919050565b6060600060028360026125309190613da7565b61253a9190613688565b67ffffffffffffffff81111561255357612552612f7c565b5b6040519080825280601f01601f1916602001820160405280156125855781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106125bd576125bc61332e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106126215761262061332e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026126619190613da7565b61266b9190613688565b90505b600181111561270b577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106126ad576126ac61332e565b5b1a60f81b8282815181106126c4576126c361332e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061270490613de9565b905061266e565b506000841461274f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274690613e5e565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bf90613eca565b60405180910390fd5b6127d181611b29565b15612811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280890613f36565b60405180910390fd5b61281f600083836001611be4565b61282881611b29565b15612868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285f90613f36565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612972600083836001611d42565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612a4c81612a17565b8114612a5757600080fd5b50565b600081359050612a6981612a43565b92915050565b600060208284031215612a8557612a84612a0d565b5b6000612a9384828501612a5a565b91505092915050565b60008115159050919050565b612ab181612a9c565b82525050565b6000602082019050612acc6000830184612aa8565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b0c578082015181840152602081019050612af1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b3482612ad2565b612b3e8185612add565b9350612b4e818560208601612aee565b612b5781612b18565b840191505092915050565b60006020820190508181036000830152612b7c8184612b29565b905092915050565b6000819050919050565b612b9781612b84565b8114612ba257600080fd5b50565b600081359050612bb481612b8e565b92915050565b600060208284031215612bd057612bcf612a0d565b5b6000612bde84828501612ba5565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1282612be7565b9050919050565b612c2281612c07565b82525050565b6000602082019050612c3d6000830184612c19565b92915050565b612c4c81612c07565b8114612c5757600080fd5b50565b600081359050612c6981612c43565b92915050565b60008060408385031215612c8657612c85612a0d565b5b6000612c9485828601612c5a565b9250506020612ca585828601612ba5565b9150509250929050565b600060208284031215612cc557612cc4612a0d565b5b6000612cd384828501612c5a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d1181612b84565b82525050565b6000612d238383612d08565b60208301905092915050565b6000602082019050919050565b6000612d4782612cdc565b612d518185612ce7565b9350612d5c83612cf8565b8060005b83811015612d8d578151612d748882612d17565b9750612d7f83612d2f565b925050600181019050612d60565b5085935050505092915050565b60006020820190508181036000830152612db48184612d3c565b905092915050565b612dc581612b84565b82525050565b6000602082019050612de06000830184612dbc565b92915050565b600080600060608486031215612dff57612dfe612a0d565b5b6000612e0d86828701612c5a565b9350506020612e1e86828701612c5a565b9250506040612e2f86828701612ba5565b9150509250925092565b6000819050919050565b612e4c81612e39565b8114612e5757600080fd5b50565b600081359050612e6981612e43565b92915050565b600060208284031215612e8557612e84612a0d565b5b6000612e9384828501612e5a565b91505092915050565b612ea581612e39565b82525050565b6000602082019050612ec06000830184612e9c565b92915050565b60008060408385031215612edd57612edc612a0d565b5b6000612eeb85828601612e5a565b9250506020612efc85828601612c5a565b9150509250929050565b612f0f81612a9c565b8114612f1a57600080fd5b50565b600081359050612f2c81612f06565b92915050565b60008060408385031215612f4957612f48612a0d565b5b6000612f5785828601612c5a565b9250506020612f6885828601612f1d565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fb482612b18565b810181811067ffffffffffffffff82111715612fd357612fd2612f7c565b5b80604052505050565b6000612fe6612a03565b9050612ff28282612fab565b919050565b600067ffffffffffffffff82111561301257613011612f7c565b5b61301b82612b18565b9050602081019050919050565b82818337600083830152505050565b600061304a61304584612ff7565b612fdc565b90508281526020810184848401111561306657613065612f77565b5b613071848285613028565b509392505050565b600082601f83011261308e5761308d612f72565b5b813561309e848260208601613037565b91505092915050565b600080600080608085870312156130c1576130c0612a0d565b5b60006130cf87828801612c5a565b94505060206130e087828801612c5a565b93505060406130f187828801612ba5565b925050606085013567ffffffffffffffff81111561311257613111612a12565b5b61311e87828801613079565b91505092959194509250565b6000806040838503121561314157613140612a0d565b5b600061314f85828601612c5a565b925050602061316085828601612c5a565b9150509250929050565b6000806040838503121561318157613180612a0d565b5b600061318f85828601612ba5565b92505060206131a085828601612ba5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806131f157607f821691505b602082108103613204576132036131aa565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613266602183612add565b91506132718261320a565b604082019050919050565b6000602082019050818103600083015261329581613259565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b60006132f8603d83612add565b91506133038261329c565b604082019050919050565b60006020820190508181036000830152613327816132eb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061339782612b84565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133c9576133c861335d565b5b600182019050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000613430602d83612add565b915061343b826133d4565b604082019050919050565b6000602082019050818103600083015261345f81613423565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006134c2602b83612add565b91506134cd82613466565b604082019050919050565b600060208201905081810360008301526134f1816134b5565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000613554602f83612add565b915061355f826134f8565b604082019050919050565b6000602082019050818103600083015261358381613547565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006135e6602c83612add565b91506135f18261358a565b604082019050919050565b60006020820190508181036000830152613615816135d9565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000613652601883612add565b915061365d8261361c565b602082019050919050565b6000602082019050818103600083015261368181613645565b9050919050565b600061369382612b84565b915061369e83612b84565b92508282019050808211156136b6576136b561335d565b5b92915050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613718602983612add565b9150613723826136bc565b604082019050919050565b600060208201905081810360008301526137478161370b565b9050919050565b600081905092915050565b600061376482612ad2565b61376e818561374e565b935061377e818560208601612aee565b80840191505092915050565b60006137968285613759565b91506137a28284613759565b91508190509392505050565b7f4552433732313a206f7065726174696f6e20666f72206e6f6e6578697374656e60008201527f7420746f6b656e00000000000000000000000000000000000000000000000000602082015250565b600061380a602783612add565b9150613815826137ae565b604082019050919050565b60006020820190508181036000830152613839816137fd565b9050919050565b7f4e6f7420656e6f7567682045585020746f207265647563652e00000000000000600082015250565b6000613876601983612add565b915061388182613840565b602082019050919050565b600060208201905081810360008301526138a581613869565b9050919050565b60006138b782612b84565b91506138c283612b84565b92508282039050818111156138da576138d961335d565b5b92915050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061393c602583612add565b9150613947826138e0565b604082019050919050565b6000602082019050818103600083015261396b8161392f565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139ce602483612add565b91506139d982613972565b604082019050919050565b600060208201905081810360008301526139fd816139c1565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613a3a601983612add565b9150613a4582613a04565b602082019050919050565b60006020820190508181036000830152613a6981613a2d565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613acc603283612add565b9150613ad782613a70565b604082019050919050565b60006020820190508181036000830152613afb81613abf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000613b8d603583612add565b9150613b9882613b31565b604082019050919050565b60006020820190508181036000830152613bbc81613b80565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613bf960178361374e565b9150613c0482613bc3565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613c4560118361374e565b9150613c5082613c0f565b601182019050919050565b6000613c6682613bec565b9150613c728285613759565b9150613c7d82613c38565b9150613c898284613759565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b6000613cbc82613c95565b613cc68185613ca0565b9350613cd6818560208601612aee565b613cdf81612b18565b840191505092915050565b6000608082019050613cff6000830187612c19565b613d0c6020830186612c19565b613d196040830185612dbc565b8181036060830152613d2b8184613cb1565b905095945050505050565b600081519050613d4581612a43565b92915050565b600060208284031215613d6157613d60612a0d565b5b6000613d6f84828501613d36565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000613db282612b84565b9150613dbd83612b84565b9250828202613dcb81612b84565b91508282048414831517613de257613de161335d565b5b5092915050565b6000613df482612b84565b915060008203613e0757613e0661335d565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613e48602083612add565b9150613e5382613e12565b602082019050919050565b60006020820190508181036000830152613e7781613e3b565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613eb4602083612add565b9150613ebf82613e7e565b602082019050919050565b60006020820190508181036000830152613ee381613ea7565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613f20601c83612add565b9150613f2b82613eea565b602082019050919050565b60006020820190508181036000830152613f4f81613f13565b905091905056fea26469706673582212200819d9fbf0aaa718b864e1c0f59f4190af9fafb3bc9f32d30f9020d558b6c55564736f6c63430008120033