PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KPHRpdGxlPlBvbHlnb24gVXNhZ2U8L3RpdGxlPgo8L2hlYWQ+Cgo8Ym9keT4KCjxwPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij4vKjxicj4KQ29weXJpZ2h0IDIwMDggSW50ZWwgQ29ycG9yYXRpb248YnI+Cjxicj4KVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSw8YnI+ClZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0PGJyPgpodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLjxicj4KKi88YnI+CiNpbmNsdWRlICZsdDtib29zdC9wb2x5Z29uL3BvbHlnb24uaHBwJmd0Ozxicj4KI2luY2x1ZGUgJmx0O2Nhc3NlcnQmZ3Q7PGJyPgpuYW1lc3BhY2UgZ3RsID0gYm9vc3Q6OnBvbHlnb247PGJyPgp1c2luZyBuYW1lc3BhY2UgYm9vc3Q6OnBvbHlnb246Om9wZXJhdG9yczs8YnI+PGJyPgppbnQgbWFpbigpIHs8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyAvL2xldHMgY29uc3RydWN0IGEgMTB4MTAgcmVjdGFuZ2xlIHNoYXBlZCBwb2x5Z29uPGJyPgombmJzcDsmbmJzcDsmbmJzcDsgdHlwZWRlZiBndGw6OnBvbHlnb25fZGF0YSZsdDtpbnQmZ3Q7IFBvbHlnb247PGJyPgombmJzcDsmbmJzcDsmbmJzcDsgdHlwZWRlZiBndGw6OnBvbHlnb25fdHJhaXRzJmx0O1BvbHlnb24mZ3Q7Ojpwb2ludF90eXBlIFBvaW50Ozxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7IFBvaW50IHB0c1tdID0ge2d0bDo6Y29uc3RydWN0Jmx0O1BvaW50Jmd0OygwLCAwKSw8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyBndGw6OmNvbnN0cnVjdCZsdDtQb2ludCZndDsoMTAsIDApLDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7IGd0bDo6Y29uc3RydWN0Jmx0O1BvaW50Jmd0OygxMCwgMTApLDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7IGd0bDo6Y29uc3RydWN0Jmx0O1BvaW50Jmd0OygwLCAxMCkgfTs8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyBQb2x5Z29uIHBvbHk7PGJyPgombmJzcDsmbmJzcDsmbmJzcDsgZ3RsOjpzZXRfcG9pbnRzKHBvbHksIHB0cywgcHRzKzQpOzxicj4KPGJyPgombmJzcDsmbmJzcDsmbmJzcDsgLy9ub3cgbGV0cyBzZWUgd2hhdCB3ZSBjYW4gZG8gd2l0aCB0aGlzIHBvbHlnb248YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyBhc3NlcnQoZ3RsOjphcmVhKHBvbHkpID09IDEwMC4wZik7PGJyPgombmJzcDsmbmJzcDsmbmJzcDsgYXNzZXJ0KGd0bDo6Y29udGFpbnMocG9seSwgZ3RsOjpjb25zdHJ1Y3QmbHQ7UG9pbnQmZ3Q7KDUsIDUpKSk7PGJyPgombmJzcDsmbmJzcDsmbmJzcDsgYXNzZXJ0KCFndGw6OmNvbnRhaW5zKHBvbHksIGd0bDo6Y29uc3RydWN0Jmx0O1BvaW50Jmd0OygxNSwgNSkpKTs8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyBndGw6OnJlY3RhbmdsZV9kYXRhJmx0O2ludCZndDsgcmVjdDs8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyBhc3NlcnQoZ3RsOjpleHRlbnRzKHJlY3QsIHBvbHkpKTsgLy9nZXQgYm91bmRpbmcgYm94IG9mIHBvbHk8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyBhc3NlcnQoZ3RsOjplcXVpdmFsZW5jZShyZWN0LCBwb2x5KSk7IC8vaGV5LCB0aGF0J3Mgc2xpY2s8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyBhc3NlcnQoZ3RsOjp3aW5kaW5nKHBvbHkpID09IGd0bDo6Q09VTlRFUkNMT0NLV0lTRSk7PGJyPgombmJzcDsmbmJzcDsmbmJzcDsgYXNzZXJ0KGd0bDo6cGVyaW1ldGVyKHBvbHkpID09IDQwLjBmKTs8YnI+Cjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7IC8vYWRkIDUgdG8gYWxsIGNvb3JkcyBvZiBwb2x5PGJyPgombmJzcDsmbmJzcDsmbmJzcDsgZ3RsOjpjb252b2x2ZShwb2x5LCBndGw6OmNvbnN0cnVjdCZsdDtQb2ludCZndDsoNSwgNSkpOzxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7IC8vbXVsdGlwbHkgYWxsIGNvb3JkcyBvZiBwb2x5IGJ5IDI8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyBndGw6OnNjYWxlX3VwKHBvbHksIDIpOzxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7IGd0bDo6c2V0X3BvaW50cyhyZWN0LCBndGw6OnBvaW50X2RhdGEmbHQ7aW50Jmd0OygxMCwgMTApLDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7IGd0bDo6cG9pbnRfZGF0YSZsdDtpbnQmZ3Q7KDMwLCAzMCkpOzxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7IGFzc2VydChndGw6OmVxdWl2YWxlbmNlKHBvbHksIHJlY3QpKTs8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gMDs8YnI+Cn08YnI+Ci8vTm93IHlvdSBrbm93IGhvdyB0byB1c2UgdGhlIGJ1aWx0IGluIHBvbHlnb24gZGF0YSB0eXBlPGJyPgombmJzcDs8L2ZvbnQ+PC9wPgoKCjx0YWJsZSBjbGFzcz0iZG9jaW5mbyIgcnVsZXM9Im5vbmUiIGZyYW1lPSJ2b2lkIiBpZD0idGFibGUxIj4KCTxjb2xncm91cD4KCQk8Y29sIGNsYXNzPSJkb2NpbmZvLW5hbWUiPjxjb2wgY2xhc3M9ImRvY2luZm8tY29udGVudCI+Cgk8L2NvbGdyb3VwPgoJPHRib2R5IHZBbGlnbj0idG9wIj4KCQk8dHI+CgkJCTx0aCBjbGFzcz0iZG9jaW5mby1uYW1lIj5Db3B5cmlnaHQ6PC90aD4KCQkJPHRkPkNvcHlyaWdodCCpIEludGVsIENvcnBvcmF0aW9uIDIwMDgtMjAxMC48L3RkPgoJCTwvdHI+CgkJPHRyIGNsYXNzPSJmaWVsZCI+CgkJCTx0aCBjbGFzcz0iZG9jaW5mby1uYW1lIj5MaWNlbnNlOjwvdGg+CgkJCTx0ZCBjbGFzcz0iZmllbGQtYm9keSI+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIAoJCQlWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSA8dHQgY2xhc3M9ImxpdGVyYWwiPgoJCQk8c3BhbiBjbGFzcz0icHJlIj5MSUNFTlNFXzFfMC50eHQ8L3NwYW4+PC90dD4gb3IgY29weSBhdAoJCQk8YSBjbGFzcz0icmVmZXJlbmNlIiB0YXJnZXQ9Il90b3AiIGhyZWY9Imh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+CgkJCWh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dDwvYT4pPC90ZD4KCQk8L3RyPgo8L3RhYmxlPgoKPC9ib2R5PgoKPC9odG1sPgo=