60806040523480156200001157600080fd5b50336040518060400160405280600f81526020017f5472656567656e20467269656e647300000000000000000000000000000000008152506040518060400160405280600981526020017f547265654672656e73000000000000000000000000000000000000000000000081525081600090816200009091906200047a565b508060019081620000a291906200047a565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200011a5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001119190620005a6565b60405180910390fd5b6200012b816200013a60201b60201c565b506000600781905550620005c3565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200028257607f821691505b6020821081036200029857620002976200023a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002c3565b6200030e8683620002c3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200035b620003556200034f8462000326565b62000330565b62000326565b9050919050565b6000819050919050565b62000377836200033a565b6200038f620003868262000362565b848454620002d0565b825550505050565b600090565b620003a662000397565b620003b38184846200036c565b505050565b5b81811015620003db57620003cf6000826200039c565b600181019050620003b9565b5050565b601f8211156200042a57620003f4816200029e565b620003ff84620002b3565b810160208510156200040f578190505b620004276200041e85620002b3565b830182620003b8565b50505b505050565b600082821c905092915050565b60006200044f600019846008026200042f565b1980831691505092915050565b60006200046a83836200043c565b9150826002028217905092915050565b620004858262000200565b67ffffffffffffffff811115620004a157620004a06200020b565b5b620004ad825462000269565b620004ba828285620003df565b600060209050601f831160018114620004f25760008415620004dd578287015190505b620004e985826200045c565b86555062000559565b601f19841662000502866200029e565b60005b828110156200052c5784890151825560018201915060208501945060208101905062000505565b868310156200054c578489015162000548601f8916826200043c565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200058e8262000561565b9050919050565b620005a08162000581565b82525050565b6000602082019050620005bd600083018462000595565b92915050565b61226680620005d36000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a2578063a95d809611610071578063a95d8096146102a4578063b88d4fde146102c0578063c87b56dd146102dc578063e985e9c51461030c578063f2fde38b1461033c5761010b565b8063715018a6146102425780638da5cb5b1461024c57806395d89b411461026a578063a22cb465146102885761010b565b806323b872dd116100de57806323b872dd146101aa57806342842e0e146101c65780636352211e146101e257806370a08231146102125761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190611928565b610358565b6040516101379190611970565b60405180910390f35b61014861043a565b6040516101559190611a1b565b60405180910390f35b61017860048036038101906101739190611a73565b6104cc565b6040516101859190611ae1565b60405180910390f35b6101a860048036038101906101a39190611b28565b6104e8565b005b6101c460048036038101906101bf9190611b68565b6104fe565b005b6101e060048036038101906101db9190611b68565b610600565b005b6101fc60048036038101906101f79190611a73565b610620565b6040516102099190611ae1565b60405180910390f35b61022c60048036038101906102279190611bbb565b610632565b6040516102399190611bf7565b60405180910390f35b61024a6106ec565b005b610254610700565b6040516102619190611ae1565b60405180910390f35b61027261072a565b60405161027f9190611a1b565b60405180910390f35b6102a2600480360381019061029d9190611c3e565b6107bc565b005b6102be60048036038101906102b99190611ce3565b6107d2565b005b6102da60048036038101906102d59190611e60565b61084b565b005b6102f660048036038101906102f19190611a73565b610868565b6040516103039190611a1b565b60405180910390f35b61032660048036038101906103219190611ee3565b6108d1565b6040516103339190611970565b60405180910390f35b61035660048036038101906103519190611bbb565b610965565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061042357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104335750610432826109eb565b5b9050919050565b60606000805461044990611f52565b80601f016020809104026020016040519081016040528092919081815260200182805461047590611f52565b80156104c25780601f10610497576101008083540402835291602001916104c2565b820191906000526020600020905b8154815290600101906020018083116104a557829003601f168201915b5050505050905090565b60006104d782610a55565b506104e182610add565b9050919050565b6104fa82826104f5610b1a565b610b22565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105705760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016105679190611ae1565b60405180910390fd5b6000610584838361057f610b1a565b610b34565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105fa578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016105f193929190611f83565b60405180910390fd5b50505050565b61061b8383836040518060200160405280600081525061084b565b505050565b600061062b82610a55565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106a55760006040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161069c9190611ae1565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106f4610d4e565b6106fe6000610dd5565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461073990611f52565b80601f016020809104026020016040519081016040528092919081815260200182805461076590611f52565b80156107b25780601f10610787576101008083540402835291602001916107b2565b820191906000526020600020905b81548152906001019060200180831161079557829003601f168201915b5050505050905090565b6107ce6107c7610b1a565b8383610e9b565b5050565b6107da610d4e565b60005b828290508110156108465760006007600081546107f990611fe9565b919050819055905061083284848481811061081757610816612031565b5b905060200201602081019061082c9190611bbb565b8261100a565b50808061083e90611fe9565b9150506107dd565b505050565b6108568484846104fe565b61086284848484611028565b50505050565b606061087382610a55565b50600061087e6111df565b9050600081511161089e57604051806020016040528060008152506108c9565b806108a8846111ff565b6040516020016108b992919061209c565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61096d610d4e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109df5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016109d69190611ae1565b60405180910390fd5b6109e881610dd5565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080610a61836112cd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ad457826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610acb9190611bf7565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b610b2f838383600161130a565b505050565b600080610b40846112cd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610b8257610b818184866114cf565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c1357610bc460008560008061130a565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610c96576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b610d56610b1a565b73ffffffffffffffffffffffffffffffffffffffff16610d74610700565b73ffffffffffffffffffffffffffffffffffffffff1614610dd357610d97610b1a565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610dca9190611ae1565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f0c57816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610f039190611ae1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610ffd9190611970565b60405180910390a3505050565b611024828260405180602001604052806000815250611593565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff163b11156111d9578273ffffffffffffffffffffffffffffffffffffffff1663150b7a0261106c610b1a565b8685856040518563ffffffff1660e01b815260040161108e9493929190612115565b6020604051808303816000875af19250505080156110ca57506040513d601f19601f820116820180604052508101906110c79190612176565b60015b61114e573d80600081146110fa576040519150601f19603f3d011682016040523d82523d6000602084013e6110ff565b606091505b50600081510361114657836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161113d9190611ae1565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146111d757836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016111ce9190611ae1565b60405180910390fd5b505b50505050565b60606040518060600160405280603581526020016121fc60359139905090565b60606000600161120e846115af565b01905060008167ffffffffffffffff81111561122d5761122c611d35565b5b6040519080825280601f01601f19166020018201604052801561125f5781602001600182028036833780820191505090505b509050600082602001820190505b6001156112c2578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816112b6576112b56121a3565b5b0494506000850361126d575b819350505050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806113435750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561147757600061135384610a55565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113be57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156113d157506113cf81846108d1565b155b1561141357826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161140a9190611ae1565b60405180910390fd5b811561147557838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6114da838383611702565b61158e57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361154f57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016115469190611bf7565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016115859291906121d2565b60405180910390fd5b505050565b61159d83836117c3565b6115aa6000848484611028565b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061160d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611603576116026121a3565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061164a576d04ee2d6d415b85acef810000000083816116405761163f6121a3565b5b0492506020810190505b662386f26fc10000831061167957662386f26fc10000838161166f5761166e6121a3565b5b0492506010810190505b6305f5e10083106116a2576305f5e1008381611698576116976121a3565b5b0492506008810190505b61271083106116c75761271083816116bd576116bc6121a3565b5b0492506004810190505b606483106116ea57606483816116e0576116df6121a3565b5b0492506002810190505b600a83106116f9576001810190505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ba57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061177b575061177a84846108d1565b5b806117b957508273ffffffffffffffffffffffffffffffffffffffff166117a183610add565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118355760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161182c9190611ae1565b60405180910390fd5b600061184383836000610b34565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118b75760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016118ae9190611ae1565b60405180910390fd5b505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611905816118d0565b811461191057600080fd5b50565b600081359050611922816118fc565b92915050565b60006020828403121561193e5761193d6118c6565b5b600061194c84828501611913565b91505092915050565b60008115159050919050565b61196a81611955565b82525050565b60006020820190506119856000830184611961565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156119c55780820151818401526020810190506119aa565b60008484015250505050565b6000601f19601f8301169050919050565b60006119ed8261198b565b6119f78185611996565b9350611a078185602086016119a7565b611a10816119d1565b840191505092915050565b60006020820190508181036000830152611a3581846119e2565b905092915050565b6000819050919050565b611a5081611a3d565b8114611a5b57600080fd5b50565b600081359050611a6d81611a47565b92915050565b600060208284031215611a8957611a886118c6565b5b6000611a9784828501611a5e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611acb82611aa0565b9050919050565b611adb81611ac0565b82525050565b6000602082019050611af66000830184611ad2565b92915050565b611b0581611ac0565b8114611b1057600080fd5b50565b600081359050611b2281611afc565b92915050565b60008060408385031215611b3f57611b3e6118c6565b5b6000611b4d85828601611b13565b9250506020611b5e85828601611a5e565b9150509250929050565b600080600060608486031215611b8157611b806118c6565b5b6000611b8f86828701611b13565b9350506020611ba086828701611b13565b9250506040611bb186828701611a5e565b9150509250925092565b600060208284031215611bd157611bd06118c6565b5b6000611bdf84828501611b13565b91505092915050565b611bf181611a3d565b82525050565b6000602082019050611c0c6000830184611be8565b92915050565b611c1b81611955565b8114611c2657600080fd5b50565b600081359050611c3881611c12565b92915050565b60008060408385031215611c5557611c546118c6565b5b6000611c6385828601611b13565b9250506020611c7485828601611c29565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112611ca357611ca2611c7e565b5b8235905067ffffffffffffffff811115611cc057611cbf611c83565b5b602083019150836020820283011115611cdc57611cdb611c88565b5b9250929050565b60008060208385031215611cfa57611cf96118c6565b5b600083013567ffffffffffffffff811115611d1857611d176118cb565b5b611d2485828601611c8d565b92509250509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611d6d826119d1565b810181811067ffffffffffffffff82111715611d8c57611d8b611d35565b5b80604052505050565b6000611d9f6118bc565b9050611dab8282611d64565b919050565b600067ffffffffffffffff821115611dcb57611dca611d35565b5b611dd4826119d1565b9050602081019050919050565b82818337600083830152505050565b6000611e03611dfe84611db0565b611d95565b905082815260208101848484011115611e1f57611e1e611d30565b5b611e2a848285611de1565b509392505050565b600082601f830112611e4757611e46611c7e565b5b8135611e57848260208601611df0565b91505092915050565b60008060008060808587031215611e7a57611e796118c6565b5b6000611e8887828801611b13565b9450506020611e9987828801611b13565b9350506040611eaa87828801611a5e565b925050606085013567ffffffffffffffff811115611ecb57611eca6118cb565b5b611ed787828801611e32565b91505092959194509250565b60008060408385031215611efa57611ef96118c6565b5b6000611f0885828601611b13565b9250506020611f1985828601611b13565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f6a57607f821691505b602082108103611f7d57611f7c611f23565b5b50919050565b6000606082019050611f986000830186611ad2565b611fa56020830185611be8565b611fb26040830184611ad2565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ff482611a3d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361202657612025611fba565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b60006120768261198b565b6120808185612060565b93506120908185602086016119a7565b80840191505092915050565b60006120a8828561206b565b91506120b4828461206b565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b60006120e7826120c0565b6120f181856120cb565b93506121018185602086016119a7565b61210a816119d1565b840191505092915050565b600060808201905061212a6000830187611ad2565b6121376020830186611ad2565b6121446040830185611be8565b818103606083015261215681846120dc565b905095945050505050565b600081519050612170816118fc565b92915050565b60006020828403121561218c5761218b6118c6565b5b600061219a84828501612161565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006040820190506121e76000830185611ad2565b6121f46020830184611be8565b939250505056fe697066733a2f2f516d65584b484258566165464266695372725467686b476441426556367648743337664450587333773950734a37a2646970667358221220923587a8421b133cb828d1a7e7293d5f3a19dd9fd7981c5fc5a9b0e6bcc8da8164736f6c63430008140033