ZGlmZiAtLWdpdCBhL2RvYy9oYXByb3h5LWVuLnR4dCBiL2RvYy9oYXByb3h5LWVuLnR4dAppbmRleCBhYjI2ZGY1Li5kYmU3OGY1IDEwMDY0NAotLS0gYS9kb2MvaGFwcm94eS1lbi50eHQKKysrIGIvZG9jL2hhcHJveHktZW4udHh0CkBAIC0xMTIsNiArMTEyLDggQEAKICAgLSBtYXhjb25uIDxudW1iZXI+CiAgIC0gdWlkIDx1c2VyIGlkPgogICAtIGdpZCA8Z3JvdXAgaWQ+CisgIC0gdXNlciA8dXNlciBuYW1lPgorICAtIGdyb3VwIDxncm91cCBuYW1lPgogICAtIGNocm9vdCA8ZGlyZWN0b3J5PgogICAtIG5icHJvYyA8bnVtYmVyPgogICAtIGRhZW1vbgpAQCAtMTk3LDkgKzE5OSwxNCBAQAogd2hpY2ggdGhlIHByb2Nlc3Mgd2lsbCBzd2l0Y2ggdG8gYWZ0ZXIgYmluZGluZyBpdHMgbGlzdGVuaW5nIHNvY2tldHMuIFRoZSB2YWx1ZQogJzAnLCB3aGljaCBub3JtYWxseSByZXByZXNlbnRzIHRoZSBzdXBlci11c2VyLCBoZXJlIGluZGljYXRlcyB0aGF0IHRoZSBVSUQgbXVzdAogbm90IGNoYW5nZSBkdXJpbmcgc3RhcnR1cC4gSXQncyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuIFRoZSAnZ2lkJyBwYXJhbWV0ZXIgZG9lcwotdGhlIHNhbWUgZm9yIHRoZSBncm91cCBpZGVudGlmaWVyLiBJdCdzIHBhcnRpY3VsYXJseSBhZHZpc2VkIGFnYWluc3QgdXNlIG9mCi1nZW5lcmljIGFjY291bnRzIHN1Y2ggYXMgJ25vYm9keScgYmVjYXVzZSBpdCBoYXMgdGhlIHNhbWUgY29uc2VxdWVuY2VzIGFzIHVzaW5nCi0ncm9vdCcgaWYgb3RoZXIgc2VydmljZXMgdXNlIHRoZW0uCit0aGUgc2FtZSBmb3IgdGhlIGdyb3VwIGlkZW50aWZpZXIuIElmIHNldHRpbmcgYW4gdWlkIGlzIG5vdCBwb3NzaWJsZSBiZWNhdXNlIG9mCitkZXBsb3ltZW50IGNvbnN0cmFpbnRzLCBpdCBpcyBwb3NzaWJsZSB0byBzZXQgYSB1c2VyIG5hbWUgd2l0aCB0aGUgJ3VzZXInCitrZXl3b3JkIGZvbGxvd2VkIGJ5IGEgdmFsaWQgdXNlciBuYW1lLiBUaGUgc2FtZSBpcyB0cnVlIGZvciB0aGUgZ2lkLiBJdCBpcworcG9zc2libGUgdG8gc3BlY2lmeSBhIGdyb3VwIG5hbWUgYWZ0ZXIgdGhlICdncm91cCcga2V5d29yZC4KKworSXQgaXMgcGFydGljdWxhcmx5IGFkdmlzZWQgYWdhaW5zdCB1c2Ugb2YgZ2VuZXJpYyBhY2NvdW50cyBzdWNoIGFzICdub2JvZHknCitiZWNhdXNlIGl0IGhhcyB0aGUgc2FtZSBjb25zZXF1ZW5jZXMgYXMgdXNpbmcgJ3Jvb3QnIGlmIG90aGVyIHNlcnZpY2VzIHVzZQordGhlbS4KIAogVGhlICdjaHJvb3QnIHBhcmFtZXRlciBtYWtlcyB0aGUgcHJvY2VzcyBpc29sYXRlIGl0c2VsZiBpbiBhbiBlbXB0eSBkaXJlY3RvcnkKIGp1c3QgYmVmb3JlIHN3aXRjaGluZyBpdHMgVUlELiBUaGlzIHR5cGUgb2YgaXNvbGF0aW9uIChjaHJvb3QpIGNhbiBzb21ldGltZXMKQEAgLTIyNywxMSArMjM0LDE4IEBACiBFeGFtcGxlIDoKIC0tLS0tLS0tLQogCisgICAgIyB3aXRoIHVpZC9naWQKICAgICBnbG9iYWwKICAgICAgICAgdWlkICAgICAzMDAwMAogICAgICAgICBnaWQgICAgIDMwMDAwCiAgICAgICAgIGNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQogCisgICAgIyB3aXRoIHVzZXIvZ3JvdXAKKyAgICBnbG9iYWwKKyAgICAgICAgdXNlciAgICBoYXByb3h5CisgICAgICAgIGdyb3VwICAgcHVibGljCisgICAgICAgIGNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQorCiAKIDEuNCkgU3RhcnR1cCBtb2RlcwogLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kb2MvaGFwcm94eS1mci50eHQgYi9kb2MvaGFwcm94eS1mci50eHQKaW5kZXggOTI4MmNiNC4uN2Y2ZDIzMSAxMDA2NDQKLS0tIGEvZG9jL2hhcHJveHktZnIudHh0CisrKyBiL2RvYy9oYXByb3h5LWZyLnR4dApAQCAtMTE5LDYgKzExOSw4IEBACiAgIC0gbWF4Y29ubiA8bm9tYnJlPgogICAtIHVpZCA8aWRlbnRpZmlhbnQ+CiAgIC0gZ2lkIDxpZGVudGlmaWFudD4KKyAgLSB1c2VyIDxub20gZCd1dGlsaXNhdGV1cj4KKyAgLSBncm91cCA8bm9tIGRlIGdyb3VwZT4KICAgLSBjaHJvb3QgPHLpcGVydG9pcmU+CiAgIC0gbmJwcm9jIDxub21icmU+CiAgIC0gZGFlbW9uCkBAIC0yMDgsOSArMjEwLDE0IEBACiBsJ29uIG5lIHNvdWhhaXRlIHBhcyBjaGFuZ2VyIGNldCBpZGVudGlmaWFudCBldCBjb25zZXJ2ZXIgbGEgdmFsZXVyIGNvdXJhbnRlLgogQydlc3QgbGEgdmFsZXVyIHBhciBk6WZhdXQuIERlIGxhIG3qbWUgbWFuaehyZSwgbGUgcGFyYW3odHJlICdnaWQnIGNvcnJlc3BvbmQg4AogdW4gaWRlbnRpZmlhbnQgZGUgZ3JvdXBlLCBldCB1dGlsaXNlIHBhciBk6WZhdXQgbGEgdmFsZXVyIDAgcG91ciBuZSByaWVuCi1jaGFuZ2VyLiBJbCBlc3QgcGFydGljdWxp6HJlbWVudCBk6WNvbnNlaWxs6SBkJ3V0aWxpc2VyIGRlcyBjb21wdGVzIGfpbulyaXF1ZXMKLXRlbHMgcXVlICdub2JvZHknIGNhciBjZXR0ZSBwcmF0aXF1ZSByZXZpZW50IOAgdXRpbGlzZXIgJ3Jvb3QnIHNpIGQnYXV0cmVzCi1wcm9jZXNzdXMgdXRpbGlzZW50IGxlcyBt6m1lcyBpZGVudGlmaWFudHMuCitjaGFuZ2VyLiBEYW5zIGxlIGNhcyBv+SBpbCBuZSBzZXJhaXQgcGFzIHBvc3NpYmxlIGRlIHNw6WNpZmllciB1biBpZGVudGlmaWFudAorbnVt6XJpcXVlIHBvdXIgbCd1aWQsIGlsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgdW4gbm9tIGQndXRpbGlzYXRldXIgYXBy6HMKK2xlIG1vdC1jbOkgJ3VzZXInLiBEZSBsYSBt6m1lIG1hbmnocmUsIGlsIGVzdCBwb3NzaWJsZSBkZSBwculjaXNlciB1biBub20gZGUKK2dyb3VwZSBhcHLocyBsZSBtb3QtY2zpICdncm91cCcuCisKK0lsIGVzdCBwYXJ0aWN1bGnocmVtZW50IGTpY29uc2VpbGzpIGQndXRpbGlzZXIgZGVzIGNvbXB0ZXMgZ+lu6XJpcXVlcyB0ZWxzIHF1ZQorJ25vYm9keScgY2FyIGNldHRlIHByYXRpcXVlIHJldmllbnQg4CB1dGlsaXNlciAncm9vdCcgc2kgZCdhdXRyZXMgcHJvY2Vzc3VzCit1dGlsaXNlbnQgbGVzIG3qbWVzIGlkZW50aWZpYW50cy4KIAogTGUgcGFyYW3odHJlICdjaHJvb3QnIGF1dG9yaXNlIOAgY2hhbmdlciBsYSByYWNpbmUgZHUgcHJvY2Vzc3VzIHVuZSBmb2lzIGxlCiBwcm9ncmFtbWUgbGFuY+ksIGRlIHNvcnRlIHF1ZSBuaSBsZSBwcm9jZXNzdXMsIG5pIGwndW4gZGUgc2VzIGRlc2NlbmRhbnRzIG5lCkBAIC0yNDYsMTEgKzI1MywxOSBAQAogRXhlbXBsZSA6CiAtLS0tLS0tLS0KIAorICAgICMgd2l0aCB1aWQvZ2lkCiAgICAgZ2xvYmFsCiAgICAgICAgIHVpZCAgICAgICAgMzAwMDAKICAgICAgICAgZ2lkICAgICAgICAzMDAwMAogICAgICAgICBjaHJvb3QgIC92YXIvY2hyb290L2hhcHJveHkKIAorICAgICMgd2l0aCB1c2VyL2dyb3VwCisgICAgZ2xvYmFsCisgICAgICAgIHVzZXIgICAgaGFwcm94eQorICAgICAgICBncm91cCAgIHB1YmxpYworICAgICAgICBjaHJvb3QgIC92YXIvY2hyb290L2hhcHJveHkKKworCiAxLjQpIE1vZGVzIGRlIGZvbmN0aW9ubmVtZW50CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBMZSBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyBwbHVzaWV1cnMgbW9kZXMgOgpkaWZmIC0tZ2l0IGEvc3JjL2NmZ3BhcnNlLmMgYi9zcmMvY2ZncGFyc2UuYwppbmRleCBhZTU0MzNlLi40YzFmMDMyIDEwMDY0NAotLS0gYS9zcmMvY2ZncGFyc2UuYworKysgYi9zcmMvY2ZncGFyc2UuYwpAQCAtMTUsNiArMTUsOCBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPG5ldGRiLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxwd2QuaD4KKyNpbmNsdWRlIDxncnAuaD4KIAogI2luY2x1ZGUgPGNvbW1vbi9jZmdwYXJzZS5oPgogI2luY2x1ZGUgPGNvbW1vbi9jb25maWcuaD4KQEAgLTI2OSw3ICsyNzEsNyBAQAogCX0KIAllbHNlIGlmICghc3RyY21wKGFyZ3NbMF0sICJ1aWQiKSkgewogCQlpZiAoZ2xvYmFsLnVpZCAhPSAwKSB7Ci0JCQlBbGVydCgicGFyc2luZyBbJXM6JWRdIDogJyVzJyBhbHJlYWR5IHNwZWNpZmllZC4gQ29udGludWluZy5cbiIsIGZpbGUsIGxpbmVudW0sIGFyZ3NbMF0pOworCQkJQWxlcnQoInBhcnNpbmcgWyVzOiVkXSA6IHVzZXIvdWlkIGFscmVhZHkgc3BlY2lmaWVkLiBDb250aW51aW5nLlxuIiwgZmlsZSwgbGluZW51bSk7CiAJCQlyZXR1cm4gMDsKIAkJfQogCQlpZiAoKihhcmdzWzFdKSA9PSAwKSB7CkBAIC0yODAsNyArMjgyLDcgQEAKIAl9CiAJZWxzZSBpZiAoIXN0cmNtcChhcmdzWzBdLCAiZ2lkIikpIHsKIAkJaWYgKGdsb2JhbC5naWQgIT0gMCkgewotCQkJQWxlcnQoInBhcnNpbmcgWyVzOiVkXSA6ICclcycgYWxyZWFkeSBzcGVjaWZpZWQuIENvbnRpbnVpbmcuXG4iLCBmaWxlLCBsaW5lbnVtLCBhcmdzWzBdKTsKKwkJCUFsZXJ0KCJwYXJzaW5nIFslczolZF0gOiBncm91cC9naWQgYWxyZWFkeSBzcGVjaWZpZWQuIENvbnRpbnVpbmcuXG4iLCBmaWxlLCBsaW5lbnVtKTsKIAkJCXJldHVybiAwOwogCQl9CiAJCWlmICgqKGFyZ3NbMV0pID09IDApIHsKQEAgLTI4OSw2ICsyOTEsNDAgQEAKIAkJfQogCQlnbG9iYWwuZ2lkID0gYXRvbChhcmdzWzFdKTsKIAl9CisJLyogdXNlci9ncm91cCBuYW1lIGhhbmRsaW5nICovCisJZWxzZSBpZiAoIXN0cmNtcChhcmdzWzBdLCAidXNlciIpKSB7CisJCXN0cnVjdCBwYXNzd2QgKmhhX3VzZXI7CisJCWlmIChnbG9iYWwudWlkICE9IDApIHsKKwkJCUFsZXJ0KCJwYXJzaW5nIFslczolZF0gOiB1c2VyL3VpZCBhbHJlYWR5IHNwZWNpZmllZC4gQ29udGludWluZy5cbiIsIGZpbGUsIGxpbmVudW0pOworCQkJcmV0dXJuIDA7CisJCX0KKwkJZXJybm8gPSAwOworCQloYV91c2VyID0gZ2V0cHduYW0oYXJnc1sxXSk7CisJCWlmIChoYV91c2VyICE9IE5VTEwpIHsKKwkJCWdsb2JhbC51aWQgPSAoaW50KWhhX3VzZXItPnB3X3VpZDsKKwkJfQorCQllbHNlIHsKKwkJCUFsZXJ0KCJwYXJzaW5nIFslczolZF0gOiBjYW5ub3QgZmluZCB1c2VyIGlkIGZvciAnJXMnICglZDolcylcbiIsIGZpbGUsIGxpbmVudW0sIGFyZ3NbMV0sIGVycm5vLCBzdHJlcnJvcihlcnJubykpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKwllbHNlIGlmICghc3RyY21wKGFyZ3NbMF0sICJncm91cCIpKSB7CisJCXN0cnVjdCBncm91cCAqaGFfZ3JvdXA7CisJCWlmIChnbG9iYWwuZ2lkICE9IDApIHsKKwkJCUFsZXJ0KCJwYXJzaW5nIFslczolZF0gOiBnaWQvZ3JvdXAgd2FzIGFscmVhZHkgc3BlY2lmaWVkLiBDb250aW51aW5nLlxuIiwgZmlsZSwgbGluZW51bSwgYXJnc1swXSk7CisJCQlyZXR1cm4gMDsKKwkJfQorCQllcnJubyA9IDA7CisJCWhhX2dyb3VwID0gZ2V0Z3JuYW0oYXJnc1sxXSk7CisJCWlmIChoYV9ncm91cCAhPSBOVUxMKSB7CisJCQlnbG9iYWwuZ2lkID0gKGludCloYV9ncm91cC0+Z3JfZ2lkOworCQl9CisJCWVsc2UgeworCQkJQWxlcnQoInBhcnNpbmcgWyVzOiVkXSA6IGNhbm5vdCBmaW5kIGdyb3VwIGlkIGZvciAnJXMnICglZDolcylcbiIsIGZpbGUsIGxpbmVudW0sIGFyZ3NbMV0sIGVycm5vLCBzdHJlcnJvcihlcnJubykpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKwkvKiBlbmQgb2YgdXNlci9ncm91cCBuYW1lIGhhbmRsaW5nKi8KIAllbHNlIGlmICghc3RyY21wKGFyZ3NbMF0sICJuYnByb2MiKSkgewogCQlpZiAoZ2xvYmFsLm5icHJvYyAhPSAwKSB7CiAJCQlBbGVydCgicGFyc2luZyBbJXM6JWRdIDogJyVzJyBhbHJlYWR5IHNwZWNpZmllZC4gQ29udGludWluZy5cbiIsIGZpbGUsIGxpbmVudW0sIGFyZ3NbMF0pOwo=