<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>4758</bug_id>
          
          <creation_ts>2005-08-30 10:55:39 -0700</creation_ts>
          <short_desc>unify SharedPtr in WebCore and JavaScriptCore</short_desc>
          <delta_ts>2005-08-30 19:49:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>17938</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-30 10:55:39 -0700</bug_when>
    <thetext> </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17939</commentid>
    <comment_count>1</comment_count>
      <attachid>3676</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-30 10:57:25 -0700</bug_when>
    <thetext>Created attachment 3676
patch that makes WebCore use the SharedPtr template in JavaScriptCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17988</commentid>
    <comment_count>2</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-08-30 19:13:26 -0700</bug_when>
    <thetext>Perhaps KJS should import SharedPtr into the kjs namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17991</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-30 19:49:52 -0700</bug_when>
    <thetext>I like that idea too.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3676</attachid>
            <date>2005-08-30 10:57:25 -0700</date>
            <delta_ts>2005-08-30 11:14:06 -0700</delta_ts>
            <desc>patch that makes WebCore use the SharedPtr template in JavaScriptCore</desc>
            <filename>UnifySharedPtrPatch.txt</filename>
            <type>text/plain</type>
            <size>32793</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5jcHAsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuNTQKZGlmZiAtcCAtdSAtcjEuNTQgSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0
aW9uLmNwcAotLS0gSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uLmNwcAkyNiBBdWcgMjAwNSAy
Mzo0MjoxNyAtMDAwMAkxLjU0CisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwCTMw
IEF1ZyAyMDA1IDE3OjU1OjU0IC0wMDAwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSA8dW5p
Y29kZS91Y2hhci5oPgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBreG1sY29yZTsKK3VzaW5n
IG5hbWVzcGFjZSBLWE1MQ29yZTsKIAogbmFtZXNwYWNlIEtKUyB7CiAKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2tqcy9mdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZh
U2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMgpkaWZm
IC1wIC11IC1yMS4zMiBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uaAotLS0gSmF2YVNjcmlw
dENvcmUva2pzL2Z1bmN0aW9uLmgJMjYgQXVnIDIwMDUgMjM6NDI6MTcgLTAwMDAJMS4zMgorKysg
SmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uLmgJMzAgQXVnIDIwMDUgMTc6NTU6NTQgLTAwMDAK
QEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKICAgICB2aXJ0dWFsIENvbXBsZXRp
b24gZXhlY3V0ZShFeGVjU3RhdGUgKmV4ZWMpOwogICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29u
c3QgeyByZXR1cm4gRnVuY3Rpb25Db2RlOyB9Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxGdW5j
dGlvbkJvZHlOb2RlPiBib2R5OworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8RnVuY3Rpb25Cb2R5
Tm9kZT4gYm9keTsKIAogICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvICpjbGFzc0luZm8oKSBj
b25zdCB7IHJldHVybiAmaW5mbzsgfQogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbl9vYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNw
cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMApkaWZmIC1wIC11IC1yMS4zMCBKYXZhU2NyaXB0
Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNwcAotLS0gSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0
aW9uX29iamVjdC5jcHAJMjYgQXVnIDIwMDUgMjM6NDI6MTcgLTAwMDAJMS4zMAorKysgSmF2YVNj
cmlwdENvcmUva2pzL2Z1bmN0aW9uX29iamVjdC5jcHAJMzAgQXVnIDIwMDUgMTc6NTU6NTQgLTAw
MDAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIEtKUzsKLXVzaW5nIG5hbWVzcGFjZSBreG1sY29yZTsKK3VzaW5nIG5hbWVzcGFjZSBLWE1M
Q29yZTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uUHJvdG90
eXBlSW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL2ludGVybmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlw
dENvcmUva2pzL2ludGVybmFsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42NgpkaWZmIC1w
IC11IC1yMS42NiBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJuYWwuY3BwCi0tLSBKYXZhU2NyaXB0
Q29yZS9ranMvaW50ZXJuYWwuY3BwCTI2IEF1ZyAyMDA1IDIzOjQ2OjI3IC0wMDAwCTEuNjYKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcm5hbC5jcHAJMzAgQXVnIDIwMDUgMTc6NTU6NTQgLTAw
MDAKQEAgLTUzLDcgKzUzLDcgQEAKIAogZXh0ZXJuIGludCBranN5eXBhcnNlKCk7CiAKLXVzaW5n
IG5hbWVzcGFjZSBreG1sY29yZTsKK3VzaW5nIG5hbWVzcGFjZSBLWE1MQ29yZTsKIAogbmFtZXNw
YWNlIEtKUyB7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcm5hbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJuYWwuaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4zNgpkaWZmIC1wIC11IC1yMS4zNiBKYXZhU2NyaXB0Q29yZS9r
anMvaW50ZXJuYWwuaAotLS0gSmF2YVNjcmlwdENvcmUva2pzL2ludGVybmFsLmgJMjYgQXVnIDIw
MDUgMjM6NDY6MjcgLTAwMDAJMS4zNgorKysgSmF2YVNjcmlwdENvcmUva2pzL2ludGVybmFsLmgJ
MzAgQXVnIDIwMDUgMTc6NTU6NTQgLTAwMDAKQEAgLTE5Niw3ICsxOTYsNyBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICovCiAgIGNsYXNzIFBhcnNlciB7CiAgIHB1YmxpYzoKLSAgICBzdGF0aWMga3ht
bGNvcmU6OlNoYXJlZFB0cjxQcm9ncmFtTm9kZT4gcGFyc2UoY29uc3QgVVN0cmluZyAmc291cmNl
VVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLAorICAgIHN0YXRpYyBLWE1MQ29yZTo6U2hhcmVk
UHRyPFByb2dyYW1Ob2RlPiBwYXJzZShjb25zdCBVU3RyaW5nICZzb3VyY2VVUkwsIGludCBzdGFy
dGluZ0xpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFVDaGFyICpjb2RlLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCBpbnQgKnNv
dXJjZUlkID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ICplcnJMaW5lID0gMCwgVVN0cmluZyAqZXJyTXNnID0gMCk7CiAgICAgc3RhdGlj
IHZvaWQgYWNjZXB0KFByb2dyYW1Ob2RlICpwcm9nKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9ub2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9r
anMvbm9kZXMuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yOQpkaWZmIC1wIC11IC1yMS4yOSBK
YXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgJ
MjYgQXVnIDIwMDUgMjM6NDY6MjcgLTAwMDAJMS4yOQorKysgSmF2YVNjcmlwdENvcmUva2pzL25v
ZGVzLmgJMzAgQXVnIDIwMDUgMTc6NTU6NTQgLTAwMDAKQEAgLTIwNCw3ICsyMDQsNyBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICB2aXJ0dWFsIFJlZmVyZW5jZSBldmFsdWF0ZVJlZmVyZW5jZShFeGVj
U3RhdGUgKmV4ZWMpOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMp
IGNvbnN0OwogICBwcml2YXRlOgotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZ3JvdXA7
CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxOb2RlPiBncm91cDsKICAgfTsKIAogICBjbGFzcyBF
bGVtZW50Tm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTIxNyw5ICsyMTcsOSBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsK
ICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQXJyYXlOb2RlOwotICAgIGt4bWxjb3JlOjpT
aGFyZWRQdHI8RWxlbWVudE5vZGU+IGxpc3Q7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxFbGVt
ZW50Tm9kZT4gbGlzdDsKICAgICBpbnQgZWxpc2lvbjsKLSAgICBreG1sY29yZTo6U2hhcmVkUHRy
PE5vZGU+IG5vZGU7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxOb2RlPiBub2RlOwogICB9Owog
CiAgIGNsYXNzIEFycmF5Tm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTIzMiw3ICsyMzIsNyBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICBWYWx1ZUltcCAqZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsKICAgcHJp
dmF0ZToKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPEVsZW1lbnROb2RlPiBlbGVtZW50OworICAg
IEtYTUxDb3JlOjpTaGFyZWRQdHI8RWxlbWVudE5vZGU+IGVsZW1lbnQ7CiAgICAgaW50IGVsaXNp
b247CiAgICAgYm9vbCBvcHQ7CiAgIH07CkBAIC0yNDgsOSArMjQ4LDkgQEAgbmFtZXNwYWNlIEtK
UyB7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3Q7CiAg
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE9iamVjdExpdGVyYWxOb2RlOwotICAgIGt4bWxj
b3JlOjpTaGFyZWRQdHI8UHJvcGVydHlOb2RlPiBuYW1lOwotICAgIGt4bWxjb3JlOjpTaGFyZWRQ
dHI8Tm9kZT4gYXNzaWduOwotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8UHJvcGVydHlWYWx1ZU5v
ZGU+IGxpc3Q7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxQcm9wZXJ0eU5vZGU+IG5hbWU7Cisg
ICAgS1hNTENvcmU6OlNoYXJlZFB0cjxOb2RlPiBhc3NpZ247CisgICAgS1hNTENvcmU6OlNoYXJl
ZFB0cjxQcm9wZXJ0eVZhbHVlTm9kZT4gbGlzdDsKICAgfTsKIAogICBjbGFzcyBPYmplY3RMaXRl
cmFsTm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICBWYWx1ZUltcCAqZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsKICAgcHJpdmF0ZToKLSAgICBr
eG1sY29yZTo6U2hhcmVkUHRyPFByb3BlcnR5VmFsdWVOb2RlPiBsaXN0OworICAgIEtYTUxDb3Jl
OjpTaGFyZWRQdHI8UHJvcGVydHlWYWx1ZU5vZGU+IGxpc3Q7CiAgIH07CiAKICAgY2xhc3MgUHJv
cGVydHlOb2RlIDogcHVibGljIE5vZGUgewpAQCAtMjgxLDggKzI4MSw4IEBAIG5hbWVzcGFjZSBL
SlMgewogICAgIHZpcnR1YWwgUmVmZXJlbmNlIGV2YWx1YXRlUmVmZXJlbmNlKEV4ZWNTdGF0ZSAq
ZXhlYyk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3Q7
CiAgIHByaXZhdGU6Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxOb2RlPiBleHByMTsKLSAgICBr
eG1sY29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHIyOworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8
Tm9kZT4gZXhwcjE7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxOb2RlPiBleHByMjsKICAgfTsK
IAogICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC0yOTIsNyArMjky
LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdmlydHVhbCBSZWZlcmVuY2UgZXZhbHVhdGVSZWZl
cmVuY2UoRXhlY1N0YXRlICpleGVjKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNl
U3RyZWFtICZzKSBjb25zdDsKICAgcHJpdmF0ZToKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPE5v
ZGU+IGV4cHI7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxOb2RlPiBleHByOwogICAgIElkZW50
aWZpZXIgaWRlbnQ7CiAgIH07CiAKQEAgLTMwNyw4ICszMDcsOCBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsKICAgcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgQXJndW1lbnRzTm9kZTsKLSAgICBreG1sY29yZTo6U2hh
cmVkUHRyPEFyZ3VtZW50TGlzdE5vZGU+IGxpc3Q7Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxO
b2RlPiBleHByOworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8QXJndW1lbnRMaXN0Tm9kZT4gbGlz
dDsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7CiAgIH07CiAKICAgY2xhc3Mg
QXJndW1lbnRzTm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTMyMCw3ICszMjAsNyBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICBMaXN0IGV2YWx1YXRlTGlzdChFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgot
ICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8QXJndW1lbnRMaXN0Tm9kZT4gbGlzdDsKKyAgICBLWE1M
Q29yZTo6U2hhcmVkUHRyPEFyZ3VtZW50TGlzdE5vZGU+IGxpc3Q7CiAgIH07CiAKICAgY2xhc3Mg
TmV3RXhwck5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC0zMzAsOCArMzMwLDggQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgVmFsdWVJbXAgKmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYyk7CiAgICAgdmly
dHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3Q7CiAgIHByaXZhdGU6Ci0g
ICAga3htbGNvcmU6OlNoYXJlZFB0cjxOb2RlPiBleHByOwotICAgIGt4bWxjb3JlOjpTaGFyZWRQ
dHI8QXJndW1lbnRzTm9kZT4gYXJnczsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4
cHI7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxBcmd1bWVudHNOb2RlPiBhcmdzOwogICB9Owog
CiAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTM0MCw4
ICszNDAsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBWYWx1ZUltcCAqZXZhbHVhdGUoRXhlY1N0
YXRlICpleGVjKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBj
b25zdDsKICAgcHJpdmF0ZToKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7Ci0g
ICAga3htbGNvcmU6OlNoYXJlZFB0cjxBcmd1bWVudHNOb2RlPiBhcmdzOworICAgIEtYTUxDb3Jl
OjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPEFyZ3VtZW50
c05vZGU+IGFyZ3M7CiAgIH07CiAKICAgY2xhc3MgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgOiBw
dWJsaWMgTm9kZSB7CkBAIC0zNTEsNyArMzUxLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdmly
dHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3Q7CiAgIHByaXZhdGU6CiAg
ICAgSWRlbnRpZmllciBpZGVudDsKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPEFyZ3VtZW50c05v
ZGU+IGFyZ3M7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxBcmd1bWVudHNOb2RlPiBhcmdzOwog
ICB9OwogCiAgIGNsYXNzIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlIDogcHVibGljIE5vZGUgewpA
QCAtMzYwLDkgKzM2MCw5IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFZhbHVlSW1wICpldmFsdWF0
ZShFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0gJnMpIGNvbnN0OwogICBwcm90ZWN0ZWQ6Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxOb2Rl
PiBiYXNlOwotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gc3Vic2NyaXB0OwotICAgIGt4
bWxjb3JlOjpTaGFyZWRQdHI8QXJndW1lbnRzTm9kZT4gYXJnczsKKyAgICBLWE1MQ29yZTo6U2hh
cmVkUHRyPE5vZGU+IGJhc2U7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxOb2RlPiBzdWJzY3Jp
cHQ7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxBcmd1bWVudHNOb2RlPiBhcmdzOwogICB9Owog
CiAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFBhcmVuQnJhY2tldE5vZGUgOiBwdWJsaWMgRnVuY3Rpb25D
YWxsQnJhY2tldE5vZGUgewpAQCAtMzc3LDkgKzM3Nyw5IEBAIG5hbWVzcGFjZSBLSlMgewogICAg
IFZhbHVlSW1wICpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcm90ZWN0ZWQ6Ci0gICAga3htbGNv
cmU6OlNoYXJlZFB0cjxOb2RlPiBiYXNlOworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4g
YmFzZTsKICAgICBJZGVudGlmaWVyIGlkZW50OwotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8QXJn
dW1lbnRzTm9kZT4gYXJnczsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPEFyZ3VtZW50c05vZGU+
IGFyZ3M7CiAgIH07CiAKICAgY2xhc3MgRnVuY3Rpb25DYWxsUGFyZW5Eb3ROb2RlIDogcHVibGlj
IEZ1bmN0aW9uQ2FsbERvdE5vZGUgewpAQCAtMzk0LDcgKzM5NCw3IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIFZhbHVlSW1wICpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgotICAgIGt4
bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5v
ZGU+IGV4cHI7CiAgICAgT3BlcmF0b3Igb3BlcjsKICAgfTsKIApAQCAtNDA0LDcgKzQwNCw3IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgIFZhbHVlSW1wICpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMp
OwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBw
cml2YXRlOgotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjsKKyAgICBLWE1MQ29y
ZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7CiAgIH07CiAKICAgY2xhc3MgVm9pZE5vZGUgOiBwdWJs
aWMgTm9kZSB7CkBAIC00MTMsNyArNDEzLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgVmFsdWVJ
bXAgKmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYyk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSAmcykgY29uc3Q7CiAgIHByaXZhdGU6Ci0gICAga3htbGNvcmU6OlNoYXJl
ZFB0cjxOb2RlPiBleHByOworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjsKICAg
fTsKIAogICBjbGFzcyBUeXBlT2ZOb2RlIDogcHVibGljIE5vZGUgewpAQCAtNDIyLDcgKzQyMiw3
IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFZhbHVlSW1wICpldmFsdWF0ZShFeGVjU3RhdGUgKmV4
ZWMpOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Owog
ICBwcml2YXRlOgotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjsKKyAgICBLWE1M
Q29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7CiAgIH07CiAKICAgY2xhc3MgUHJlZml4Tm9kZSA6
IHB1YmxpYyBOb2RlIHsKQEAgLTQzMiw3ICs0MzIsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsKICAgcHJpdmF0ZToK
ICAgICBPcGVyYXRvciBvcGVyOwotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjsK
KyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7CiAgIH07CiAKICAgY2xhc3MgVW5h
cnlQbHVzTm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICBWYWx1ZUltcCAqZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsKICAgcHJpdmF0ZToKLSAg
ICBreG1sY29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0
cjxOb2RlPiBleHByOwogICB9OwogCiAgIGNsYXNzIE5lZ2F0ZU5vZGUgOiBwdWJsaWMgTm9kZSB7
CkBAIC00NTAsNyArNDUwLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgVmFsdWVJbXAgKmV2YWx1
YXRlKEV4ZWNTdGF0ZSAqZXhlYyk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSAmcykgY29uc3Q7CiAgIHByaXZhdGU6Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxOb2Rl
PiBleHByOworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjsKICAgfTsKIAogICBj
bGFzcyBCaXR3aXNlTm90Tm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTQ1OSw3ICs0NTksNyBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICBWYWx1ZUltcCAqZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsKICAgcHJp
dmF0ZToKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7CisgICAgS1hNTENvcmU6
OlNoYXJlZFB0cjxOb2RlPiBleHByOwogICB9OwogCiAgIGNsYXNzIExvZ2ljYWxOb3ROb2RlIDog
cHVibGljIE5vZGUgewpAQCAtNDY4LDcgKzQ2OCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFZh
bHVlSW1wICpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgotICAgIGt4bWxjb3JlOjpT
aGFyZWRQdHI8Tm9kZT4gZXhwcjsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7
CiAgIH07CiAKICAgY2xhc3MgTXVsdE5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC00NzcsOCArNDc3
LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgVmFsdWVJbXAgKmV2YWx1YXRlKEV4ZWNTdGF0ZSAq
ZXhlYyk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3Q7
CiAgIHByaXZhdGU6Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxOb2RlPiB0ZXJtMTsKLSAgICBr
eG1sY29yZTo6U2hhcmVkUHRyPE5vZGU+IHRlcm0yOworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8
Tm9kZT4gdGVybTE7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxOb2RlPiB0ZXJtMjsKICAgICBj
aGFyIG9wZXI7CiAgIH07CiAKQEAgLTQ4OCw4ICs0ODgsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICBWYWx1ZUltcCAqZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsKICAgcHJpdmF0ZToKLSAgICBreG1sY29y
ZTo6U2hhcmVkUHRyPE5vZGU+IHRlcm0xOwotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4g
dGVybTI7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxOb2RlPiB0ZXJtMTsKKyAgICBLWE1MQ29y
ZTo6U2hhcmVkUHRyPE5vZGU+IHRlcm0yOwogICAgIGNoYXIgb3BlcjsKICAgfTsKIApAQCAtNTAw
LDggKzUwMCw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFZhbHVlSW1wICpldmFsdWF0ZShFeGVj
U3RhdGUgKmV4ZWMpOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMp
IGNvbnN0OwogICBwcml2YXRlOgotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gdGVybTE7
Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxOb2RlPiB0ZXJtMjsKKyAgICBLWE1MQ29yZTo6U2hh
cmVkUHRyPE5vZGU+IHRlcm0xOworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gdGVybTI7
CiAgICAgT3BlcmF0b3Igb3BlcjsKICAgfTsKIApAQCAtNTEyLDggKzUxMiw4IEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgIFZhbHVlSW1wICpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgot
ICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjE7Ci0gICAga3htbGNvcmU6OlNoYXJl
ZFB0cjxOb2RlPiBleHByMjsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHIxOwor
ICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjI7CiAgICAgT3BlcmF0b3Igb3BlcjsK
ICAgfTsKIApAQCAtNTI0LDggKzUyNCw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFZhbHVlSW1w
ICpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhT
b3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgotICAgIGt4bWxjb3JlOjpTaGFyZWRQ
dHI8Tm9kZT4gZXhwcjE7Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxOb2RlPiBleHByMjsKKyAg
ICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHIxOworICAgIEtYTUxDb3JlOjpTaGFyZWRQ
dHI8Tm9kZT4gZXhwcjI7CiAgICAgT3BlcmF0b3Igb3BlcjsKICAgfTsKIApAQCAtNTM2LDggKzUz
Niw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFZhbHVlSW1wICpldmFsdWF0ZShFeGVjU3RhdGUg
KmV4ZWMpOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0
OwogICBwcml2YXRlOgotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjE7Ci0gICAg
a3htbGNvcmU6OlNoYXJlZFB0cjxOb2RlPiBleHByMjsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRy
PE5vZGU+IGV4cHIxOworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjI7CiAgICAg
T3BlcmF0b3Igb3BlcjsKICAgfTsKIApAQCAtNTUxLDggKzU1MSw4IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIFZhbHVlSW1wICpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgotICAgIGt4
bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjE7Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxO
b2RlPiBleHByMjsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHIxOworICAgIEtY
TUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjI7CiAgICAgT3BlcmF0b3Igb3BlcjsKICAgfTsK
IApAQCAtNTY2LDkgKzU2Niw5IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFZhbHVlSW1wICpldmFs
dWF0ZShFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9k
ZT4gbG9naWNhbDsKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHIxOwotICAgIGt4
bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjI7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxO
b2RlPiBsb2dpY2FsOworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjE7CisgICAg
S1hNTENvcmU6OlNoYXJlZFB0cjxOb2RlPiBleHByMjsKICAgfTsKIAogICBjbGFzcyBBc3NpZ25S
ZXNvbHZlTm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTU4MCw3ICs1ODAsNyBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgcHJvdGVjdGVkOgogICAgIElkZW50aWZpZXIgbV9pZGVudDsKICAgICBPcGVyYXRv
ciBtX29wZXI7Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxOb2RlPiBtX3JpZ2h0OworICAgIEtY
TUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gbV9yaWdodDsKICAgfTsKIAogICBjbGFzcyBBc3NpZ25C
cmFja2V0Tm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTU5MCwxMCArNTkwLDEwIEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgIFZhbHVlSW1wICpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcm90ZWN0ZWQ6
Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxOb2RlPiBtX2Jhc2U7Ci0gICAga3htbGNvcmU6OlNo
YXJlZFB0cjxOb2RlPiBtX3N1YnNjcmlwdDsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+
IG1fYmFzZTsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+IG1fc3Vic2NyaXB0OwogICAg
IE9wZXJhdG9yIG1fb3BlcjsKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPE5vZGU+IG1fcmlnaHQ7
CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxOb2RlPiBtX3JpZ2h0OwogICB9OwogCiAgIGNsYXNz
IEFzc2lnbkRvdE5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC02MDMsMTAgKzYwMywxMCBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICBWYWx1ZUltcCAqZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsKICAgcHJvdGVj
dGVkOgotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gbV9iYXNlOworICAgIEtYTUxDb3Jl
OjpTaGFyZWRQdHI8Tm9kZT4gbV9iYXNlOwogICAgIElkZW50aWZpZXIgbV9pZGVudDsKICAgICBP
cGVyYXRvciBtX29wZXI7Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxOb2RlPiBtX3JpZ2h0Owor
ICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gbV9yaWdodDsKICAgfTsKIAogICBjbGFzcyBD
b21tYU5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC02MTUsOCArNjE1LDggQEAgbmFtZXNwYWNlIEtK
UyB7CiAgICAgVmFsdWVJbXAgKmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYyk7CiAgICAgdmlydHVh
bCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3Q7CiAgIHByaXZhdGU6Ci0gICAg
a3htbGNvcmU6OlNoYXJlZFB0cjxOb2RlPiBleHByMTsKLSAgICBreG1sY29yZTo6U2hhcmVkUHRy
PE5vZGU+IGV4cHIyOworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjE7CisgICAg
S1hNTENvcmU6OlNoYXJlZFB0cjxOb2RlPiBleHByMjsKICAgfTsKIAogICBjbGFzcyBTdGF0TGlz
dE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC02MjksOCArNjI5LDggQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29u
c3Q7CiAgIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENhc2VDbGF1c2VOb2RlOwotICAgIGt4
bWxjb3JlOjpTaGFyZWRQdHI8U3RhdGVtZW50Tm9kZT4gc3RhdGVtZW50OwotICAgIGt4bWxjb3Jl
OjpTaGFyZWRQdHI8U3RhdExpc3ROb2RlPiBsaXN0OworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8
U3RhdGVtZW50Tm9kZT4gc3RhdGVtZW50OworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8U3RhdExp
c3ROb2RlPiBsaXN0OwogICB9OwogCiAgIGNsYXNzIEFzc2lnbkV4cHJOb2RlIDogcHVibGljIE5v
ZGUgewpAQCAtNjM5LDcgKzYzOSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFZhbHVlSW1wICpl
dmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8
Tm9kZT4gZXhwcjsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7CiAgIH07CiAK
ICAgY2xhc3MgVmFyRGVjbE5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC02NTIsNyArNjUyLDcgQEAg
bmFtZXNwYWNlIEtKUyB7CiAgIHByaXZhdGU6CiAgICAgVHlwZSB2YXJUeXBlOwogICAgIElkZW50
aWZpZXIgaWRlbnQ7Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxBc3NpZ25FeHByTm9kZT4gaW5p
dDsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPEFzc2lnbkV4cHJOb2RlPiBpbml0OwogICB9Owog
CiAgIGNsYXNzIFZhckRlY2xMaXN0Tm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTY2Nyw4ICs2Njcs
OCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRm9yTm9k
ZTsKICAgICBmcmllbmQgY2xhc3MgVmFyU3RhdGVtZW50Tm9kZTsKLSAgICBreG1sY29yZTo6U2hh
cmVkUHRyPFZhckRlY2xMaXN0Tm9kZT4gbGlzdDsKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPFZh
ckRlY2xOb2RlPiB2YXI7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxWYXJEZWNsTGlzdE5vZGU+
IGxpc3Q7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxWYXJEZWNsTm9kZT4gdmFyOwogICB9Owog
CiAgIGNsYXNzIFZhclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC02
NzgsNyArNjc4LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NW
YXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8
VmFyRGVjbExpc3ROb2RlPiBsaXN0OworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8VmFyRGVjbExp
c3ROb2RlPiBsaXN0OwogICB9OwogCiAgIGNsYXNzIEJsb2NrTm9kZSA6IHB1YmxpYyBTdGF0ZW1l
bnROb2RlIHsKQEAgLTY4OCw3ICs2ODgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYyk7CiAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3Q7CiAgIHByb3RlY3RlZDoKLSAgICBreG1s
Y29yZTo6U2hhcmVkUHRyPFNvdXJjZUVsZW1lbnRzTm9kZT4gc291cmNlOworICAgIEtYTUxDb3Jl
OjpTaGFyZWRQdHI8U291cmNlRWxlbWVudHNOb2RlPiBzb3VyY2U7CiAgIH07CiAKICAgY2xhc3Mg
RW1wdHlTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewpAQCAtNzA0LDcgKzcw
NCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4
ZWNTdGF0ZSAqZXhlYyk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAm
cykgY29uc3Q7CiAgIHByaXZhdGU6Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxOb2RlPiBleHBy
OworICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjsKICAgfTsKIAogICBjbGFzcyBJ
Zk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC03MTUsOSArNzE1LDkgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4
ZWMpOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Owog
ICBwcml2YXRlOgotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjsKLSAgICBreG1s
Y29yZTo6U2hhcmVkUHRyPFN0YXRlbWVudE5vZGU+IHN0YXRlbWVudDE7Ci0gICAga3htbGNvcmU6
OlNoYXJlZFB0cjxTdGF0ZW1lbnROb2RlPiBzdGF0ZW1lbnQyOworICAgIEtYTUxDb3JlOjpTaGFy
ZWRQdHI8Tm9kZT4gZXhwcjsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPFN0YXRlbWVudE5vZGU+
IHN0YXRlbWVudDE7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxTdGF0ZW1lbnROb2RlPiBzdGF0
ZW1lbnQyOwogICB9OwogCiAgIGNsYXNzIERvV2hpbGVOb2RlIDogcHVibGljIFN0YXRlbWVudE5v
ZGUgewpAQCAtNzI3LDggKzcyNyw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsKICAgcHJpdmF0ZToKLSAgICBreG1sY29yZTo6
U2hhcmVkUHRyPFN0YXRlbWVudE5vZGU+IHN0YXRlbWVudDsKLSAgICBreG1sY29yZTo6U2hhcmVk
UHRyPE5vZGU+IGV4cHI7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxTdGF0ZW1lbnROb2RlPiBz
dGF0ZW1lbnQ7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxOb2RlPiBleHByOwogICB9OwogCiAg
IGNsYXNzIFdoaWxlTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKQEAgLTczOCw4ICs3Mzgs
OCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4
ZWNTdGF0ZSAqZXhlYyk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAm
cykgY29uc3Q7CiAgIHByaXZhdGU6Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxOb2RlPiBleHBy
OwotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8U3RhdGVtZW50Tm9kZT4gc3RhdGVtZW50OworICAg
IEtYTUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRy
PFN0YXRlbWVudE5vZGU+IHN0YXRlbWVudDsKICAgfTsKIAogICBjbGFzcyBGb3JOb2RlIDogcHVi
bGljIFN0YXRlbWVudE5vZGUgewpAQCAtNzUyLDEwICs3NTIsMTAgQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpOwogICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRl
OgotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjE7Ci0gICAga3htbGNvcmU6OlNo
YXJlZFB0cjxOb2RlPiBleHByMjsKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHIz
OwotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8U3RhdGVtZW50Tm9kZT4gc3RhdGVtZW50OworICAg
IEtYTUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjE7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0
cjxOb2RlPiBleHByMjsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHIzOworICAg
IEtYTUxDb3JlOjpTaGFyZWRQdHI8U3RhdGVtZW50Tm9kZT4gc3RhdGVtZW50OwogICB9OwogCiAg
IGNsYXNzIEZvckluTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKQEAgLTc2NywxMSArNzY3
LDExIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgogICAgIElkZW50aWZpZXIgaWRlbnQ7Ci0gICAg
a3htbGNvcmU6OlNoYXJlZFB0cjxBc3NpZ25FeHByTm9kZT4gaW5pdDsKLSAgICBreG1sY29yZTo6
U2hhcmVkUHRyPE5vZGU+IGxleHByOwotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhw
cjsKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPFZhckRlY2xOb2RlPiB2YXJEZWNsOwotICAgIGt4
bWxjb3JlOjpTaGFyZWRQdHI8U3RhdGVtZW50Tm9kZT4gc3RhdGVtZW50OworICAgIEtYTUxDb3Jl
OjpTaGFyZWRQdHI8QXNzaWduRXhwck5vZGU+IGluaXQ7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0
cjxOb2RlPiBsZXhwcjsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7CisgICAg
S1hNTENvcmU6OlNoYXJlZFB0cjxWYXJEZWNsTm9kZT4gdmFyRGVjbDsKKyAgICBLWE1MQ29yZTo6
U2hhcmVkUHRyPFN0YXRlbWVudE5vZGU+IHN0YXRlbWVudDsKICAgfTsKIAogICBjbGFzcyBDb250
aW51ZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC04MDAsNyArODAwLDcgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlICpl
eGVjKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsK
ICAgcHJpdmF0ZToKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPE5vZGU+IHZhbHVlOworICAgIEtY
TUxDb3JlOjpTaGFyZWRQdHI8Tm9kZT4gdmFsdWU7CiAgIH07CiAKICAgY2xhc3MgV2l0aE5vZGUg
OiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC04MTAsOCArODEwLDggQEAgbmFtZXNwYWNlIEtK
UyB7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpOwog
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2
YXRlOgotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Tm9kZT4gZXhwcjsKLSAgICBreG1sY29yZTo6
U2hhcmVkUHRyPFN0YXRlbWVudE5vZGU+IHN0YXRlbWVudDsKKyAgICBLWE1MQ29yZTo6U2hhcmVk
UHRyPE5vZGU+IGV4cHI7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxTdGF0ZW1lbnROb2RlPiBz
dGF0ZW1lbnQ7CiAgIH07CiAKICAgY2xhc3MgQ2FzZUNsYXVzZU5vZGUgOiBwdWJsaWMgTm9kZSB7
CkBAIC04MjQsOCArODI0LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgotICAgIGt4bWxjb3JlOjpTaGFy
ZWRQdHI8Tm9kZT4gZXhwcjsKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPFN0YXRMaXN0Tm9kZT4g
bGlzdDsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7CisgICAgS1hNTENvcmU6
OlNoYXJlZFB0cjxTdGF0TGlzdE5vZGU+IGxpc3Q7CiAgIH07CiAKICAgY2xhc3MgQ2xhdXNlTGlz
dE5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC04NDEsOCArODQxLDggQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3Q7CiAgIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENhc2VCbG9ja05vZGU7Ci0gICAga3htbGNvcmU6OlNo
YXJlZFB0cjxDYXNlQ2xhdXNlTm9kZT4gY2w7Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxDbGF1
c2VMaXN0Tm9kZT4gbng7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxDYXNlQ2xhdXNlTm9kZT4g
Y2w7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxDbGF1c2VMaXN0Tm9kZT4gbng7CiAgIH07CiAK
ICAgY2xhc3MgQ2FzZUJsb2NrTm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTg1Myw5ICs4NTMsOSBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNT
dGF0ZSAqZXhlYyk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykg
Y29uc3Q7CiAgIHByaXZhdGU6Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxDbGF1c2VMaXN0Tm9k
ZT4gbGlzdDE7Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxDYXNlQ2xhdXNlTm9kZT4gZGVmOwot
ICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8Q2xhdXNlTGlzdE5vZGU+IGxpc3QyOworICAgIEtYTUxD
b3JlOjpTaGFyZWRQdHI8Q2xhdXNlTGlzdE5vZGU+IGxpc3QxOworICAgIEtYTUxDb3JlOjpTaGFy
ZWRQdHI8Q2FzZUNsYXVzZU5vZGU+IGRlZjsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPENsYXVz
ZUxpc3ROb2RlPiBsaXN0MjsKICAgfTsKIAogICBjbGFzcyBTd2l0Y2hOb2RlIDogcHVibGljIFN0
YXRlbWVudE5vZGUgewpAQCAtODY1LDggKzg2NSw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZp
cnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsKICAgcHJpdmF0ZToKLSAgICBr
eG1sY29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxD
YXNlQmxvY2tOb2RlPiBibG9jazsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7
CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxDYXNlQmxvY2tOb2RlPiBibG9jazsKICAgfTsKIAog
ICBjbGFzcyBMYWJlbE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC04NzcsNyArODc3
LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSAmcykgY29uc3Q7CiAgIHByaXZhdGU6CiAgICAgSWRlbnRpZmllciBsYWJlbDsKLSAgICBr
eG1sY29yZTo6U2hhcmVkUHRyPFN0YXRlbWVudE5vZGU+IHN0YXRlbWVudDsKKyAgICBLWE1MQ29y
ZTo6U2hhcmVkUHRyPFN0YXRlbWVudE5vZGU+IHN0YXRlbWVudDsKICAgfTsKIAogICBjbGFzcyBU
aHJvd05vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC04ODYsNyArODg2LDcgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlICpl
eGVjKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsK
ICAgcHJpdmF0ZToKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPE5vZGU+IGV4cHI7CisgICAgS1hN
TENvcmU6OlNoYXJlZFB0cjxOb2RlPiBleHByOwogICB9OwogCiAgIGNsYXNzIENhdGNoTm9kZSA6
IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKQEAgLTg5OCw3ICs4OTgsNyBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsKICAg
cHJpdmF0ZToKICAgICBJZGVudGlmaWVyIGlkZW50OwotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8
U3RhdGVtZW50Tm9kZT4gYmxvY2s7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxTdGF0ZW1lbnRO
b2RlPiBibG9jazsKICAgfTsKIAogICBjbGFzcyBGaW5hbGx5Tm9kZSA6IHB1YmxpYyBTdGF0ZW1l
bnROb2RlIHsKQEAgLTkwOCw3ICs5MDgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYyk7CiAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3Q7CiAgIHByaXZhdGU6Ci0gICAga3htbGNv
cmU6OlNoYXJlZFB0cjxTdGF0ZW1lbnROb2RlPiBibG9jazsKKyAgICBLWE1MQ29yZTo6U2hhcmVk
UHRyPFN0YXRlbWVudE5vZGU+IGJsb2NrOwogICB9OwogCiAgIGNsYXNzIFRyeU5vZGUgOiBwdWJs
aWMgU3RhdGVtZW50Tm9kZSB7CkBAIC05MjMsOSArOTIzLDkgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpOwogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgot
ICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8U3RhdGVtZW50Tm9kZT4gYmxvY2s7Ci0gICAga3htbGNv
cmU6OlNoYXJlZFB0cjxDYXRjaE5vZGU+IF9jYXRjaDsKLSAgICBreG1sY29yZTo6U2hhcmVkUHRy
PEZpbmFsbHlOb2RlPiBfZmluYWw7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxTdGF0ZW1lbnRO
b2RlPiBibG9jazsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPENhdGNoTm9kZT4gX2NhdGNoOwor
ICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8RmluYWxseU5vZGU+IF9maW5hbDsKICAgfTsKIAogICBj
bGFzcyBQYXJhbWV0ZXJOb2RlIDogcHVibGljIE5vZGUgewpAQCAtOTQyLDcgKzk0Miw3IEBAIG5h
bWVzcGFjZSBLSlMgewogICAgIGZyaWVuZCBjbGFzcyBGdW5jRGVjbE5vZGU7CiAgICAgZnJpZW5k
IGNsYXNzIEZ1bmNFeHByTm9kZTsKICAgICBJZGVudGlmaWVyIGlkOwotICAgIGt4bWxjb3JlOjpT
aGFyZWRQdHI8UGFyYW1ldGVyTm9kZT4gbmV4dDsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPFBh
cmFtZXRlck5vZGU+IG5leHQ7CiAgIH07CiAKICAgLy8gaW5oZXJpdGVkIGJ5IFByb2dyYW1Ob2Rl
CkBAIC05NjQsOCArOTY0LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdmlydHVhbCB2b2lkIHN0
cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3Q7CiAgIHByaXZhdGU6CiAgICAgSWRlbnRpZmll
ciBpZGVudDsKLSAgICBreG1sY29yZTo6U2hhcmVkUHRyPFBhcmFtZXRlck5vZGU+IHBhcmFtOwot
ICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keTsKKyAgICBLWE1M
Q29yZTo6U2hhcmVkUHRyPFBhcmFtZXRlck5vZGU+IHBhcmFtOworICAgIEtYTUxDb3JlOjpTaGFy
ZWRQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keTsKICAgfTsKIAogICBjbGFzcyBGdW5jRXhwck5v
ZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC05NzYsOCArOTc2LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgVmFsdWVJbXAgKmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYyk7CiAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3Q7CiAgIHByaXZhdGU6Ci0gICAga3htbGNv
cmU6OlNoYXJlZFB0cjxQYXJhbWV0ZXJOb2RlPiBwYXJhbTsKLSAgICBreG1sY29yZTo6U2hhcmVk
UHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHk7CisgICAgS1hNTENvcmU6OlNoYXJlZFB0cjxQYXJh
bWV0ZXJOb2RlPiBwYXJhbTsKKyAgICBLWE1MQ29yZTo6U2hhcmVkUHRyPEZ1bmN0aW9uQm9keU5v
ZGU+IGJvZHk7CiAgIH07CiAKICAgLy8gQSBsaW5rZWQgbGlzdCBvZiBzb3VyY2UgZWxlbWVudCBu
b2RlcwpAQCAtOTkzLDggKzk5Myw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBCbG9ja05vZGU7Ci0gICAga3htbGNvcmU6OlNoYXJlZFB0cjxTdGF0ZW1lbnROb2Rl
PiBlbGVtZW50OyAvLyAndGhpcycgZWxlbWVudAotICAgIGt4bWxjb3JlOjpTaGFyZWRQdHI8U291
cmNlRWxlbWVudHNOb2RlPiBlbGVtZW50czsgLy8gcG9pbnRlciB0byBuZXh0CisgICAgS1hNTENv
cmU6OlNoYXJlZFB0cjxTdGF0ZW1lbnROb2RlPiBlbGVtZW50OyAvLyAndGhpcycgZWxlbWVudAor
ICAgIEtYTUxDb3JlOjpTaGFyZWRQdHI8U291cmNlRWxlbWVudHNOb2RlPiBlbGVtZW50czsgLy8g
cG9pbnRlciB0byBuZXh0CiAgIH07CiAKICAgY2xhc3MgUHJvZ3JhbU5vZGUgOiBwdWJsaWMgRnVu
Y3Rpb25Cb2R5Tm9kZSB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMyc3RyaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlwdENvcmUva2pzL25vZGVz
MnN0cmluZy5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTUKZGlmZiAtcCAtdSAtcjEuMTUg
SmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAKLS0tIEphdmFTY3JpcHRDb3JlL2tq
cy9ub2RlczJzdHJpbmcuY3BwCTI2IEF1ZyAyMDA1IDIzOjQyOjE3IC0wMDAwCTEuMTUKKysrIEph
dmFTY3JpcHRDb3JlL2tqcy9ub2RlczJzdHJpbmcuY3BwCTMwIEF1ZyAyMDA1IDE3OjU1OjU1IC0w
MDAwCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJub2Rlcy5oIgogCi11c2luZyBuYW1l
c3BhY2Uga3htbGNvcmU7Cit1c2luZyBLWE1MQ29yZTo6U2hhcmVkUHRyOwogCiBuYW1lc3BhY2Ug
S0pTIHsKICAgLyoqCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvc2hhcmVkX3B0ci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9ranMvc2hhcmVkX3B0ci5o
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEKZGlmZiAtcCAtdSAtcjEuMSBKYXZhU2NyaXB0Q29y
ZS9ranMvc2hhcmVkX3B0ci5oCi0tLSBKYXZhU2NyaXB0Q29yZS9ranMvc2hhcmVkX3B0ci5oCTI2
IEF1ZyAyMDA1IDIzOjQyOjE3IC0wMDAwCTEuMQorKysgSmF2YVNjcmlwdENvcmUva2pzL3NoYXJl
ZF9wdHIuaAkzMCBBdWcgMjAwNSAxNzo1NTo1NSAtMDAwMApAQCAtMjMsNjUgKzIzLDcyIEBACiAj
aWZuZGVmIEtYTUxDT1JFX1NIQVJFRF9QVFJfSAogI2RlZmluZSBLWE1MQ09SRV9TSEFSRURfUFRS
X0gKIAotbmFtZXNwYWNlIGt4bWxjb3JlIHsKK25hbWVzcGFjZSBLWE1MQ29yZSB7CiAKKy8vIEZJ
WE1FOiBDaGFuZ2UgdGVtcGxhdGUgbmFtZSB0byBSZWZQdHI/CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y2xhc3MgU2hhcmVkUHRyCiB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkUHRyKCkgOiBtX3B0cigwKSB7
fQotICAgIGV4cGxpY2l0IFNoYXJlZFB0cihUICpwdHIpIDogbV9wdHIocHRyKSB7IGlmIChtX3B0
cikgbV9wdHItPnJlZigpOyB9Ci0gICAgU2hhcmVkUHRyKGNvbnN0IFNoYXJlZFB0ciAmbykgOiBt
X3B0cihvLm1fcHRyKSB7IGlmIChtX3B0cikgbV9wdHItPnJlZigpOyB9Ci0gICAgflNoYXJlZFB0
cigpIHsgaWYgKG1fcHRyKSBtX3B0ci0+ZGVyZWYoKTsgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNz
IFU+IGV4cGxpY2l0IFNoYXJlZFB0cihTaGFyZWRQdHI8VT4gbykgIDogbV9wdHIoby5nZXQoKSkg
eyBpZiAobV9wdHIpIG1fcHRyLT5yZWYoKTsgfQotCQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gbV9wdHIgPT0gMDsgfQotICAgIGJvb2wgbm90TnVsbCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHRyICE9IDA7IH0KLQotICAgIHZvaWQgcmVzZXQoKSB7IGlmIChtX3B0cikgbV9wdHItPmRl
cmVmKCk7IG1fcHRyID0gMDsgfQotICAgIHZvaWQgcmVzZXQoVCAqbykgeyBpZiAobykgby0+cmVm
KCk7IGlmIChtX3B0cikgbV9wdHItPmRlcmVmKCk7IG1fcHRyID0gbzsgfQorICAgIFNoYXJlZFB0
cigpIDogbV9wdHIoTlVMTCkge30KKyAgICBTaGFyZWRQdHIoVCAqcHRyKSA6IG1fcHRyKHB0cikg
eyBpZiAocHRyKSBwdHItPnJlZigpOyB9CisgICAgU2hhcmVkUHRyKGNvbnN0IFNoYXJlZFB0ciAm
bykgOiBtX3B0cihvLm1fcHRyKSB7IGlmIChUICpwdHIgPSBtX3B0cikgcHRyLT5yZWYoKTsgfQor
ICAgIH5TaGFyZWRQdHIoKSB7IGlmIChUICpwdHIgPSBtX3B0cikgcHRyLT5kZXJlZigpOyB9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gU2hhcmVkUHRyKGNvbnN0IFNoYXJlZFB0cjxVPiAmbykg
OiBtX3B0cihvLmdldCgpKSB7IGlmIChUICpwdHIgPSBtX3B0cikgcHRyLT5yZWYoKTsgfQorCisg
ICAgLy8gRklYTUU6IERlcHJlY2F0ZSBpbiBmYXZvciBvZiBvcGVyYXRvcnMgYmVsb3csIHRoZW4g
cmVtb3ZlPworICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gTlVMTDsg
fQorICAgIGJvb2wgbm90TnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyICE9IE5VTEw7IH0KKwor
ICAgIC8vIEZJWE1FOiBEZXByZWNhdGUgaW4gZmF2b3Igb2Ygb3BlcmF0b3I9LCB0aGVuIHJlbW92
ZT8KKyAgICB2b2lkIHJlc2V0KCkgeyBpZiAoVCAqcHRyID0gbV9wdHIpIHB0ci0+ZGVyZWYoKTsg
bV9wdHIgPSBOVUxMOyB9CisgICAgdm9pZCByZXNldChUICpvKSB7IGlmIChvKSBvLT5yZWYoKTsg
aWYgKFQgKnB0ciA9IG1fcHRyKSBwdHItPmRlcmVmKCk7IG1fcHRyID0gbzsgfQogICAgIAotICAg
IFQgKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQorICAgIFQgKmdldCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHRyOyB9CisKICAgICBUICZvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqbV9w
dHI7IH0KICAgICBUICpvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KIAotICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gMDsgfQotICAgIG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3B0ciAhPSAwOyB9Ci0KLSAgICBpbmxpbmUgZnJp
ZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRQdHIgJmEsIGNvbnN0IFNoYXJlZFB0ciAm
YikgeyByZXR1cm4gYS5tX3B0ciA9PSBiLm1fcHRyOyB9Ci0gICAgaW5saW5lIGZyaWVuZCBib29s
IG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkUHRyICZhLCBjb25zdCBUICpiKSB7IHJldHVybiBhLm1f
cHRyID09IGI7IH0KLSAgICBpbmxpbmUgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUICph
LCBjb25zdCBTaGFyZWRQdHIgJmIpIHsgcmV0dXJuIGEgPT0gYi5tX3B0cjsgfQorICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gTlVMTDsgfQorICAgIG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiBtX3B0ciAhPSBOVUxMOyB9CiAKICAgICBTaGFyZWRQdHIg
Jm9wZXJhdG9yPShjb25zdCBTaGFyZWRQdHIgJik7CiAgICAgU2hhcmVkUHRyICZvcGVyYXRvcj0o
VCAqKTsKIAogcHJpdmF0ZToKLSAgICBUKiBtX3B0cjsKKyAgICBUICptX3B0cjsKKworICAgIG9w
ZXJhdG9yIGludCgpIGNvbnN0OyAvLyBkZWxpYmVyYXRlbHkgbm90IGltcGxlbWVudGVkOyBoZWxw
cyBwcmV2ZW50IG9wZXJhdG9yIGJvb2wgZnJvbSBjb252ZXJ0aW5nIHRvIGludCBhY2NpZGVudGFs
bHkKIH07CiAKIHRlbXBsYXRlIDxjbGFzcyBUPiBTaGFyZWRQdHI8VD4gJlNoYXJlZFB0cjxUPjo6
b3BlcmF0b3I9KGNvbnN0IFNoYXJlZFB0cjxUPiAmbykgCiB7Ci0gICAgaWYgKG8ubV9wdHIpIAot
ICAgICAgICBvLm1fcHRyLT5yZWYoKTsKLSAgICBpZiAobV9wdHIpCi0gICAgICAgIG1fcHRyLT5k
ZXJlZigpOwotICAgIG1fcHRyID0gby5tX3B0cjsKKyAgICBUICpvcHRyID0gby5tX3B0cjsKKyAg
ICBpZiAob3B0cikKKyAgICAgICAgb3B0ci0+cmVmKCk7CisgICAgaWYgKFQgKnB0ciA9IG1fcHRy
KQorICAgICAgICBwdHItPmRlcmVmKCk7CisgICAgbV9wdHIgPSBvcHRyOwogICAgIHJldHVybiAq
dGhpczsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBTaGFyZWRQdHI8VD4gJlNoYXJl
ZFB0cjxUPjo6b3BlcmF0b3I9KFQgKnB0cikgCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIFNo
YXJlZFB0cjxUPiAmU2hhcmVkUHRyPFQ+OjpvcGVyYXRvcj0oVCAqb3B0cikKIHsKLSAgICBpZiAo
cHRyKSAKLSAgICAgICAgcHRyLT5yZWYoKTsKLSAgICBpZiAobV9wdHIpCi0gICAgICAgIG1fcHRy
LT5kZXJlZigpOwotICAgIG1fcHRyID0gcHRyOworICAgIGlmIChvcHRyKQorICAgICAgICBvcHRy
LT5yZWYoKTsKKyAgICBpZiAoVCAqcHRyID0gbV9wdHIpCisgICAgICAgIHB0ci0+ZGVyZWYoKTsK
KyAgICBtX3B0ciA9IG9wdHI7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZSA8Y2xh
c3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRQdHI8VD4gJmEsIGNvbnN0
IFNoYXJlZFB0cjxUPiAmYikgeyByZXR1cm4gIShhPT1iKTsgfQotdGVtcGxhdGUgPGNsYXNzIFQ+
IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkUHRyPFQ+ICZhLCBjb25zdCBUICpi
KSB7IHJldHVybiAhKGEgPT0gYik7IH0KLXRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFQgKmEsIGNvbnN0IFNoYXJlZFB0cjxUPiAmYikgeyByZXR1cm4gIShh
ID09IGIpOyB9Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTaGFyZWRQdHI8VD4gJmEsIGNvbnN0IFNoYXJlZFB0cjxUPiAmYikgeyByZXR1cm4gYS5nZXQo
KSA9PSBiLmdldCgpOyB9Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTaGFyZWRQdHI8VD4gJmEsIGNvbnN0IFQgKmIpIHsgcmV0dXJuIGEuZ2V0KCkgPT0g
YjsgfQordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVCAq
YSwgY29uc3QgU2hhcmVkUHRyPFQ+ICZiKSB7IHJldHVybiBhID09IGIuZ2V0KCk7IH0KKwordGVt
cGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkUHRyPFQ+
ICZhLCBjb25zdCBTaGFyZWRQdHI8VD4gJmIpIHsgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsg
fQordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVk
UHRyPFQ+ICZhLCBjb25zdCBUICpiKSB7IHJldHVybiBhLmdldCgpICE9IGI7IH0KK3RlbXBsYXRl
IDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQgKmEsIGNvbnN0IFNoYXJl
ZFB0cjxUPiAmYikgeyByZXR1cm4gYSAhPSBiLmdldCgpOyB9CiAKIHRlbXBsYXRlIDxjbGFzcyBU
LCBjbGFzcyBVPiBpbmxpbmUgU2hhcmVkUHRyPFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3Qg
U2hhcmVkUHRyPFU+ICZwKSB7IHJldHVybiBTaGFyZWRQdHI8VD4oc3RhdGljX2Nhc3Q8VCAqPihw
LmdldCgpKSk7IH0KIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUgU2hhcmVkUHRy
PFQ+IGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBTaGFyZWRQdHI8VT4gJnApIHsgcmV0dXJuIFNo
YXJlZFB0cjxUPihjb25zdF9jYXN0PFQgKj4ocC5nZXQoKSkpOyB9CkluZGV4OiBXZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL2tqcy9zaGFyZWRfcHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvc2hhcmVkX3B0ci5oCmRpZmYgLU4gV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9ranMvc2hhcmVkX3B0ci5oCi0tLSBXZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL2tqcy9zaGFyZWRfcHRyLmgJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvc2hhcmVkX3B0ci5oCTMwIEF1ZyAyMDA1IDE3OjU1
OjU4IC0wMDAwCkBAIC0wLDAgKzEgQEAKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL3NoYXJlZF9w
dHIuaD4KSW5kZXg6IFdlYkNvcmUva2h0bWwvbWlzYy9zaGFyZWQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9taXNjL3NoYXJlZC5oLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBXZWJDb3JlL2todG1sL21pc2Mvc2hhcmVkLmgK
LS0tIFdlYkNvcmUva2h0bWwvbWlzYy9zaGFyZWQuaAkxMCBNYXkgMjAwNSAyMTo1OToxNCAtMDAw
MAkxLjYKKysrIFdlYkNvcmUva2h0bWwvbWlzYy9zaGFyZWQuaAkzMCBBdWcgMjAwNSAxNzo1NTo1
OSAtMDAwMApAQCAtMSw2ICsxLDggQEAKICNpZm5kZWYgU0hBUkVEX0gKICNkZWZpbmUgU0hBUkVE
X0gKIAorI2luY2x1ZGUgPGtqcy9zaGFyZWRfcHRyLmg+CisKIG5hbWVzcGFjZSBraHRtbCB7CiAK
IHRlbXBsYXRlPGNsYXNzIHR5cGU+IGNsYXNzIFNoYXJlZApAQCAtNjAsNTIgKzYyLDkgQEAgcHJp
dmF0ZToKICAgICBUcmVlU2hhcmVkICZvcGVyYXRvcj0oY29uc3QgVHJlZVNoYXJlZCAmKTsKIH07
CiAKLXRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBTaGFyZWRQdHIKLXsKLXB1YmxpYzoKLSAgICBT
aGFyZWRQdHIoKSA6IG1fcHRyKDApIHt9Ci0gICAgZXhwbGljaXQgU2hhcmVkUHRyKFQgKnB0cikg
OiBtX3B0cihwdHIpIHsgaWYgKG1fcHRyKSBtX3B0ci0+cmVmKCk7IH0KLSAgICBTaGFyZWRQdHIo
Y29uc3QgU2hhcmVkUHRyICZvKSA6IG1fcHRyKG8ubV9wdHIpIHsgaWYgKG1fcHRyKSBtX3B0ci0+
cmVmKCk7IH0KLSAgICB+U2hhcmVkUHRyKCkgeyBpZiAobV9wdHIpIG1fcHRyLT5kZXJlZigpOyB9
Ci0JCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSAwOyB9Ci0gICAg
Ym9vbCBub3ROdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgIT0gMDsgfQotCi0gICAgdm9pZCBy
ZXNldCgpIHsgaWYgKG1fcHRyKSBtX3B0ci0+ZGVyZWYoKTsgbV9wdHIgPSAwOyB9Ci0gICAgdm9p
ZCByZXNldChUICpvKSB7IGlmIChvKSBvLT5yZWYoKTsgaWYgKG1fcHRyKSBtX3B0ci0+ZGVyZWYo
KTsgbV9wdHIgPSBvOyB9Ci0gICAgCi0gICAgVCAqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRy
OyB9Ci0gICAgVCAmb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKm1fcHRyOyB9Ci0gICAgVCAq
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9Ci0KLSAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID09IDA7IH0KLQotICAgIGlubGluZSBmcmllbmQgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZFB0ciAmYSwgY29uc3QgU2hhcmVkUHRyICZiKSB7IHJl
dHVybiBhLm1fcHRyID09IGIubV9wdHI7IH0KLSAgICBpbmxpbmUgZnJpZW5kIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTaGFyZWRQdHIgJmEsIGNvbnN0IFQgKmIpIHsgcmV0dXJuIGEubV9wdHIgPT0g
YjsgfQotICAgIGlubGluZSBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQgKmEsIGNvbnN0
IFNoYXJlZFB0ciAmYikgeyByZXR1cm4gYSA9PSBiLm1fcHRyOyB9Ci0KLSAgICBTaGFyZWRQdHIg
Jm9wZXJhdG9yPShjb25zdCBTaGFyZWRQdHIgJik7Ci0KLXByaXZhdGU6Ci0gICAgVCogbV9wdHI7
Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gU2hhcmVkUHRyPFQ+ICZTaGFyZWRQdHI8VD46Om9w
ZXJhdG9yPShjb25zdCBTaGFyZWRQdHI8VD4gJm8pIAotewotICAgIGlmIChvLm1fcHRyKSAKLSAg
ICAgICAgby5tX3B0ci0+cmVmKCk7Ci0gICAgaWYgKG1fcHRyKQotICAgICAgICBtX3B0ci0+ZGVy
ZWYoKTsKLSAgICBtX3B0ciA9IG8ubV9wdHI7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1w
bGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRQdHI8VD4g
JmEsIGNvbnN0IFNoYXJlZFB0cjxUPiAmYikgeyByZXR1cm4gIShhPT1iKTsgfQotdGVtcGxhdGUg
PGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkUHRyPFQ+ICZhLCBj
b25zdCBUICpiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLXRlbXBsYXRlIDxjbGFzcyBUPiBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQgKmEsIGNvbnN0IFNoYXJlZFB0cjxUPiAmYikgeyBy
ZXR1cm4gIShhID09IGIpOyB9Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUg
U2hhcmVkUHRyPFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgU2hhcmVkUHRyPFU+ICZwKSB7
IHJldHVybiBTaGFyZWRQdHI8VD4oc3RhdGljX2Nhc3Q8VCAqPihwLmdldCgpKSk7IH0KLXRlbXBs
YXRlIDxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUgU2hhcmVkUHRyPFQ+IGNvbnN0X3BvaW50ZXJf
Y2FzdChjb25zdCBTaGFyZWRQdHI8VT4gJnApIHsgcmV0dXJuIFNoYXJlZFB0cjxUPihjb25zdF9j
YXN0PFQgKj4ocC5nZXQoKSkpOyB9Cit1c2luZyBLWE1MQ29yZTo6U2hhcmVkUHRyOwordXNpbmcg
S1hNTENvcmU6OnN0YXRpY19wb2ludGVyX2Nhc3Q7Cit1c2luZyBLWE1MQ29yZTo6Y29uc3RfcG9p
bnRlcl9jYXN0OwogCiB9CiAK
</data>
<flag name="review"
          id="472"
          type_id="1"
          status="+"
          setter="sullivan"
    />
          </attachment>
      

    </bug>

</bugzilla>