<?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>6283</bug_id>
          
          <creation_ts>2005-12-29 04:27:29 -0800</creation_ts>
          <short_desc>abstract frame traversal in WebFrame more</short_desc>
          <delta_ts>2005-12-29 23:10:04 -0800</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 API</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>27122</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-12-29 04:27:29 -0800</bug_when>
    <thetext>I rewrote most of the frame traversal code in WebFrame to use DOM-style first/last/next/previous 
methods, to abstract access better in preparation for moving it down. As an added bonus, many formerly 
recursive methods are now iterative. Patch coming shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27123</commentid>
    <comment_count>1</comment_count>
      <attachid>5350</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-12-29 04:36:51 -0800</bug_when>
    <thetext>Created attachment 5350
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27148</commentid>
    <comment_count>2</comment_count>
      <attachid>5350</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-29 08:56:52 -0800</bug_when>
    <thetext>Comment on attachment 5350
the patch

_closeOldDataSources now works from the first child to the last, but it used to
work from the last child to the first.

Looks fine, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27173</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-12-29 15:40:06 -0800</bug_when>
    <thetext>I don&apos;t think the order is important since all it does is send a delegate message</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5350</attachid>
            <date>2005-12-29 04:36:51 -0800</date>
            <delta_ts>2005-12-29 08:56:52 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>frame-traversal.patch.txt</filename>
            <type>text/plain</type>
            <size>30980</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L0No
YW5nZUxvZyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zNDMwCmRpZmYgLXUgLXAgLXIxLjM0MzAg
Q2hhbmdlTG9nCi0tLSBDaGFuZ2VMb2cJMjcgRGVjIDIwMDUgMTk6MDY6MzggLTAwMDAJMS4zNDMw
CisrKyBDaGFuZ2VMb2cJMjkgRGVjIDIwMDUgMTI6MzI6MDEgLTAwMDAKQEAgLTEsMyArMSw2OSBA
QAorMjAwNS0xMi0yOSAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJLSBhYnN0cmFjdCBmcmFtZSB0cmF2
ZXJzYWwgaW4gV2ViRnJhbWUgbW9yZQorCWh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjI4MworCQorCVJld3JvdGUgbW9zdCBvZiB0aGUgZnJhbWUgdHJhdmVy
c2FsIGNvZGUgaW4gV2ViRnJhbWUgdG8gdXNlIERPTS1zdHlsZSAKKwlmaXJzdC9sYXN0L25leHQv
cHJldmlvdXMgbWV0aG9kcywgdG8gYWJzdHJhY3QgYWNjZXNzIGJldHRlciBpbiBwcmVwYXJhdGlv
biAKKwlmb3IgbW92aW5nIGl0IGRvd24uIAorCisJQXMgYW4gYWRkZWQgYm9udXMsIG1hbnkgZm9y
bWVybHkgcmVjdXJzaXZlIG1ldGhvZHMgYXJlIG5vdyBpdGVyYXRpdmUuCisKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogVXNlIGdudTk5IGRpYWxlY3Qgb2YgQywg
c28gdGhhdAorCXZhcmlhYmxlcyBjYW4gYmUgZGVjbGFyZWQgaW4gZm9yIGxvb3AgaW5pdGlhbGl6
ZXJzLgorCisJLSBhZGRlZCBuZXcgZnJhbWUgdHJhdmVyc2FsIG1ldGhvZHMsIHRvIGF2b2lkIGRl
YWxpbmcgd2l0aCB0aGUgY2hpbGRyZW4gYXJyYXkKKwlkaXJlY3RseToKKwkKKyAgICAgICAgKiBX
ZWJWaWV3LnN1YnByb2ovV2ViRnJhbWUubToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2ZpcnN0Q2hp
bGRGcmFtZV0pOiBOZXcgbWV0aG9kLgorICAgICAgICAoLVtXZWJGcmFtZSBfbGFzdENoaWxkRnJh
bWVdKTogTmV3IG1ldGhvZC4KKyAgICAgICAgKC1bV2ViRnJhbWUgX3ByZXZpb3VzU2libGluZ0Zy
YW1lXSk6IE5ldyBtZXRob2QuCisgICAgICAgICgtW1dlYkZyYW1lIF9uZXh0U2libGluZ0ZyYW1l
XSk6IE5ldyBtZXRob2QuCisgICAgICAgICgtW1dlYkZyYW1lIF90cmF2ZXJzZU5leHRGcmFtZVN0
YXlXaXRoaW46XSk6IExpa2UgdHJhdmVyc2VOZXh0Tm9kZSgpIGluIHRoZSBET007CisJdXNlcyBz
b21lIG9mIHRoZSBwcmV2aW91cy4KKworCS0gYXBwbHkgdGhlIG5ldyBtZXRob2RzCisJCisgICAg
ICAgICgtW1dlYkZyYW1lIF9jcmVhdGVJdGVtVHJlZVdpdGhUYXJnZXRGcmFtZTpjbGlwcGVkQXRU
YXJnZXQ6XSk6IFJld3JpdGUgbG9vcAorCXRvIHVzZSBuZXcgdHJhdmVyc2FsIG1ldGhvZHMuCisg
ICAgICAgICgtW1dlYkZyYW1lIF9pbW1lZGlhdGVDaGlsZEZyYW1lTmFtZWQ6XSk6IGRpdHRvLCBh
bHNvIGFkZGVkIEZJWE1FCisgICAgICAgICgtW1dlYkZyYW1lIF9zZXROYW1lOl0pOiBJbXByb3Zl
ZCBjb21tZW50LCByZW1vdmVkIGdyYXR1aXRvdXMgYnJhY2UKKyAgICAgICAgKC1bV2ViRnJhbWUg
X2lzRGVzY2VuZGFudE9mRnJhbWU6XSk6IFJld3JvdGUgdG8gY2hhc2UgcGFyZW50IHBvaW50ZXJz
IGluc3RlYWQKKwlvZiBsb29raW5nIGluIGNoaWxkIGFycmF5cyAoZHVoKQorICAgICAgICAoLVtX
ZWJGcmFtZSBfZGV0YWNoQ2hpbGRyZW5dKTogUmV3cml0ZSBsb29wIHRvIHVzZSBuZXcgdHJhdmVy
c2FsIG1ldGhvZHMsCisJc3RpbGwgd2FsayBiYWNrd2FyZHMgZm9yIG5vdy4KKyAgICAgICAgKC1b
V2ViRnJhbWUgX2Nsb3NlT2xkRGF0YVNvdXJjZXNdKTogUmV3cml0ZSB1c2luZyBuZXcgdHJhdmVy
c2FsIG1ldGhvZHMuCisgICAgICAgICgtW1dlYkZyYW1lIF9jaGlsZEZyYW1lc01hdGNoSXRlbTpd
KTogZGl0dG8KKyAgICAgICAgKC1bV2ViRnJhbWUgX2RlZmVyc0NhbGxiYWNrc0NoYW5nZWRdKTog
ZGl0dG8KKyAgICAgICAgKC1bV2ViRnJhbWUgX3ZpZXdXaWxsTW92ZVRvSG9zdFdpbmRvdzpdKTog
ZGl0dG8KKyAgICAgICAgKC1bV2ViRnJhbWUgX3ZpZXdEaWRNb3ZlVG9Ib3N0V2luZG93XSk6IGRp
dHRvCisgICAgICAgICgtW1dlYkZyYW1lIF9hZGRDaGlsZDpdKTogZG9uJ3QgdXNlIGNoaWxkRnJh
bWVzIG1ldGhvZAorICAgICAgICAoLVtXZWJGcmFtZSBfcmVtb3ZlQ2hpbGQ6XSk6IENsZWFyIG91
dCB0aGUgc2libGluZyBwb2ludGVycyBhZnRlciB1bmxpbmtpbmcgZnJvbSB0aGUgbGlzdCwgCisJ
bm90IG9idmlvdXMgaWYgYW55dGhpbmcgbmVlZHMgdGhpcyBidXQgaXQgc2VlbXMgbGlrZSB0aGUg
cmlnaHQgdGhpbmcgdG8gZG8uCisgICAgICAgICgtW1dlYkZyYW1lIF9nZW5lcmF0ZUZyYW1lTmFt
ZV0pOiBkb24ndCBib3RoZXIgdG8gbmlsLWNoZWNrIGNoaWxkcmVuIGFycmF5LCBzaW5jZQorCWNh
bGxpbmcgY291bnQgb24gbmlsIHN0aWxsIGdpdmVzIDAuCisgICAgICAgICgtW1dlYkZyYW1lIF9z
YXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZV0pOiBSZXdyaXRlIHRvIHVzZSBmcmFtZSB0cmF2ZXJz
YWwgbWV0aG9kcworICAgICAgICAoLVtXZWJGcmFtZSBfZGVlcExhc3RDaGlsZEZyYW1lXSk6IHJl
bmFtZWQgZnJvbSBfbGFzdENoaWxkRnJhbWUsIHJld3JpdGUgdG8gdXNlIGNoaWxkCisJdHJhdmVy
c2FsIG1ldGhvZHMuCisgICAgICAgICgtW1dlYkZyYW1lIF9uZXh0RnJhbWVXaXRoV3JhcDpdKTog
VXNlIG5ldyBmcmFtZSB0cmF2ZXJzYWwgc3R1ZmYgKG1vc3RseSBqdXN0CisJYSB0aGluIHdyYXBw
ZXIgb24gX3RyYXZlcnNlTmV4dEZyYW1lU3RheVdpdGhpbjogCisgICAgICAgICgtW1dlYkZyYW1l
IF9wcmV2aW91c0ZyYW1lV2l0aFdyYXA6XSk6IFVzZSBuZXcgdHJhdmVyc2FsIGZ1bmN0aW9ucwor
ICAgICAgICAoLVtXZWJGcmFtZSBfbnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzOl0pOiBSZXdy
aXRlIGxvb3Agd2l0aCBuZXcgdHJhY3JzYWwgZnVuY3Rpb25zCisgICAgICAgICgtW1dlYkZyYW1l
IF9yZWxvYWRGb3JQbHVnaW5DaGFuZ2VzXSk6IGRpdHRvCisgICAgICAgICgtW1dlYkZyYW1lIF9y
ZWN1cnNpdmVfcGF1c2VOdWxsRXZlbnRzRm9yQWxsTmV0c2NhcGVQbHVnaW5zXSk6IGRpdHRvCisg
ICAgICAgICgtW1dlYkZyYW1lIF9yZWN1cnNpdmVfcmVzdW1lTnVsbEV2ZW50c0ZvckFsbE5ldHNj
YXBlUGx1Z2luc10pOiBkaXR0bworICAgICAgICAoLVtXZWJGcmFtZSBfZG9jdW1lbnRWaWV3c10p
OiBkaXR0bworICAgICAgICAoLVtXZWJGcmFtZSBfdXBkYXRlRHJhd3NCYWNrZ3JvdW5kXSk6IGRp
dHRvCisgICAgICAgICgtW1dlYkZyYW1lIF91bm1hcmtBbGxNaXNzcGVsbGluZ3NdKTogZGl0dG8K
KyAgICAgICAgKC1bV2ViRnJhbWUgX2F0TW9zdE9uZUZyYW1lSGFzU2VsZWN0aW9uXSk6IGRpdHRv
CisgICAgICAgICgtW1dlYkZyYW1lIF9maW5kRnJhbWVXaXRoU2VsZWN0aW9uXSk6IGRpdHRvCisg
ICAgICAgICgtW1dlYkZyYW1lIF9zdG9wTG9hZGluZ1N1YmZyYW1lc10pOiBkaXR0bworICAgICAg
ICAoLVtXZWJGcmFtZSBfc3ViZnJhbWVJc0xvYWRpbmddKTogZGl0dG8KKyAgICAgICAgKC1bV2Vi
RnJhbWUgX2Rlc2NlbmRhbnRGcmFtZU5hbWVkOnNvdXJjZUZyYW1lOl0pOiBkaXR0bworCiAyMDA1
LTEyLTI3ICBNaXR6IFBldHRlbCAgPG9wZW5kYXJ3aW4ub3JnQG1pdHpwZXR0ZWwuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiwgbGFuZGVkIGJ5IERhcmluLgpJbmRleDogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaix2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS4xNwpkaWZmIC11IC1wIC1yMS4xNyBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagotLS0gV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJMjIgRGVjIDIwMDUgMDE6
NDA6NTggLTAwMDAJMS4xNworKysgV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJMjkg
RGVjIDIwMDUgMTI6MzI6MTEgLTAwMDAKQEAgLTE4NDUsNiArMTg0NSw3IEBACiAJCQkJCSIkKFNZ
U1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3JrL0ZyYW1ld29ya3Mi
LAogCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzIiwKIAkJCQkp
OworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CiAJCQkJR0NDX0VOQUJMRV9P
QkpDX0dDID0gWUVTOwogCQkJCUdDQ19GQVNUX09CSkNfRElTUEFUQ0ggPSBZRVM7CiAJCQkJR0ND
X0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gWUVTOwpAQCAtMTkwOSw2ICsxOTEwLDcgQEAK
IAkJCQkJIiQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsv
RnJhbWV3b3JrcyIsCiAJCQkJCSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29y
a3MiLAogCQkJCSk7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKIAkJCQlH
Q0NfRU5BQkxFX09CSkNfR0MgPSBZRVM7CiAJCQkJR0NDX0ZBU1RfT0JKQ19ESVNQQVRDSCA9IFlF
UzsKIAkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gczsKQEAgLTE5NzIsNiArMTk3NCw3IEBA
CiAJCQkJCSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9RdWFydHouZnJhbWV3b3Jr
L0ZyYW1ld29ya3MiLAogCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdv
cmtzIiwKIAkJCQkpOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CiAJCQkJ
R0NDX0VOQUJMRV9PQkpDX0dDID0gWUVTOwogCQkJCUdDQ19GQVNUX09CSkNfRElTUEFUQ0ggPSBZ
RVM7CiAJCQkJR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gWUVTOwpAQCAtMjAzNiw2
ICsyMDM5LDcgQEAKIAkJCQkJIiQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL1F1YXJ0
ei5mcmFtZXdvcmsvRnJhbWV3b3JrcyIsCiAJCQkJCSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJp
dmF0ZUZyYW1ld29ya3MiLAogCQkJCSk7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBn
bnU5OTsKIAkJCQlHQ0NfRU5BQkxFX09CSkNfR0MgPSBZRVM7CiAJCQkJR0NDX0ZBU1RfT0JKQ19E
SVNQQVRDSCA9IFlFUzsKIAkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gczsKSW5kZXg6IFdl
YlZpZXcuc3VicHJvai9XZWJGcmFtZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9X
ZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYkZyYW1lLm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
MjY0CmRpZmYgLXUgLXAgLXIxLjI2NCBXZWJWaWV3LnN1YnByb2ovV2ViRnJhbWUubQotLS0gV2Vi
Vmlldy5zdWJwcm9qL1dlYkZyYW1lLm0JMjYgRGVjIDIwMDUgMjE6NDY6MjcgLTAwMDAJMS4yNjQK
KysrIFdlYlZpZXcuc3VicHJvai9XZWJGcmFtZS5tCTI5IERlYyAyMDA1IDEyOjMyOjIzIC0wMDAw
CkBAIC0xODgsNiArMTg4LDE0IEBAIE5TU3RyaW5nICpXZWJQYWdlQ2FjaGVEb2N1bWVudFZpZXdL
ZXkgPSAKIC0gKHZvaWQpX3N0b3BMb2FkaW5nU3ViZnJhbWVzOwogQGVuZAogCitAaW50ZXJmYWNl
IFdlYkZyYW1lIChGcmFtZVRyYXZlcnNhbCkKKy0gKFdlYkZyYW1lICopX2ZpcnN0Q2hpbGRGcmFt
ZTsKKy0gKFdlYkZyYW1lICopX2xhc3RDaGlsZEZyYW1lOworLSAoV2ViRnJhbWUgKilfcHJldmlv
dXNTaWJsaW5nRnJhbWU7CistIChXZWJGcmFtZSAqKV9uZXh0U2libGluZ0ZyYW1lOworLSAoV2Vi
RnJhbWUgKilfdHJhdmVyc2VOZXh0RnJhbWVTdGF5V2l0aGluOihXZWJGcmFtZSAqKXN0YXlXaXRo
aW47CitAZW5kCisKIEBpbnRlcmZhY2UgV2ViRnJhbWVQcml2YXRlIDogTlNPYmplY3QKIHsKIEBw
dWJsaWMKQEAgLTM2NCw2ICszNzIsNjMgQEAgTlNTdHJpbmcgKldlYlBhZ2VDYWNoZURvY3VtZW50
Vmlld0tleSA9IAogCiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBXZWJGcmFtZSAoRnJhbWVUcmF2
ZXJzYWwpCistIChXZWJGcmFtZSAqKV9maXJzdENoaWxkRnJhbWUKK3sKKyAgICBpZiAoIVtfcHJp
dmF0ZS0+Y2hpbGRyZW4gY291bnRdKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJu
IFtfcHJpdmF0ZS0+Y2hpbGRyZW4gb2JqZWN0QXRJbmRleDowXTsKK30KKworLSAoV2ViRnJhbWUg
KilfbGFzdENoaWxkRnJhbWUKK3sKKyAgICByZXR1cm4gW19wcml2YXRlLT5jaGlsZHJlbiBsYXN0
T2JqZWN0XTsKK30KKworLSAoV2ViRnJhbWUgKilfcHJldmlvdXNTaWJsaW5nRnJhbWU7Cit7Cisg
ICAgcmV0dXJuIF9wcml2YXRlLT5wcmV2aW91c1NpYmxpbmc7Cit9CisKKy0gKFdlYkZyYW1lICop
X25leHRTaWJsaW5nRnJhbWU7Cit7CisgICAgcmV0dXJuIF9wcml2YXRlLT5uZXh0U2libGluZzsK
K30KKworLSAoV2ViRnJhbWUgKilfdHJhdmVyc2VOZXh0RnJhbWVTdGF5V2l0aGluOihXZWJGcmFt
ZSAqKXN0YXlXaXRoaW4KK3sKKyAgICBXZWJGcmFtZSAqZmlyc3RDaGlsZCA9IFtzZWxmIF9maXJz
dENoaWxkRnJhbWVdOworICAgIGlmIChmaXJzdENoaWxkKSB7CisgICAgICAgIEFTU0VSVCghc3Rh
eVdpdGhpbiB8fCBbZmlyc3RDaGlsZCBfaXNEZXNjZW5kYW50T2ZGcmFtZTpzdGF5V2l0aGluXSk7
CisgICAgICAgIHJldHVybiBmaXJzdENoaWxkOworICAgIH0KKworICAgIGlmIChzZWxmID09IHN0
YXlXaXRoaW4pCisgICAgICAgIHJldHVybiAwOworCisgICAgV2ViRnJhbWUgKm5leHRTaWJsaW5n
ID0gW3NlbGYgX25leHRTaWJsaW5nRnJhbWVdOworICAgIGlmIChuZXh0U2libGluZykgeworICAg
ICAgICBhc3NlcnQoIXN0YXlXaXRoaW4gfHwgW25leHRTaWJsaW5nICBfaXNEZXNjZW5kYW50T2ZG
cmFtZTpzdGF5V2l0aGluXSk7CisJcmV0dXJuIG5leHRTaWJsaW5nOworICAgIH0KKworICAgIFdl
YkZyYW1lICpmcmFtZSA9IHNlbGY7CisgICAgd2hpbGUgKGZyYW1lICYmICFuZXh0U2libGluZyAm
JiAoIXN0YXlXaXRoaW4gfHwgW2ZyYW1lIHBhcmVudEZyYW1lXSAhPSBzdGF5V2l0aGluKSkgewor
ICAgICAgICBmcmFtZSA9IFtmcmFtZSBwYXJlbnRGcmFtZV07CisgICAgICAgIG5leHRTaWJsaW5n
ID0gW2ZyYW1lIF9uZXh0U2libGluZ0ZyYW1lXTsKKyAgICB9CisKKyAgICBpZiAoZnJhbWUpIHsK
KyAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8ICFuZXh0U2libGluZyB8fCBbbmV4dFNpYmxp
bmcgX2lzRGVzY2VuZGFudE9mRnJhbWU6c3RheVdpdGhpbl0pOworICAgICAgICByZXR1cm4gbmV4
dFNpYmxpbmc7CisgICAgfQorCisgICAgcmV0dXJuIG5pbDsKK30KKworQGVuZAorCiBAaW1wbGVt
ZW50YXRpb24gV2ViRnJhbWUgKFdlYlByaXZhdGUpCiAKIC0gKE5TVVJMUmVxdWVzdCAqKV93ZWJE
YXRhUmVxdWVzdEZvckRhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlN
RVR5cGUgdGV4dEVuY29kaW5nTmFtZTogKE5TU3RyaW5nICopZW5jb2RpbmdOYW1lIGJhc2VVUkw6
KE5TVVJMICopVVJMIHVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCkBAIC01
MTksNTQgKzU4NCw0MCBAQCBOU1N0cmluZyAqV2ViUGFnZUNhY2hlRG9jdW1lbnRWaWV3S2V5ID0g
CiAgICAgICAgIC8vIHNhdmUgZnJhbWUgc3RhdGUgZm9yIGl0ZW1zIHRoYXQgYXJlbid0IGxvYWRp
bmcgKGtodG1sIGRvZXNuJ3Qgc2F2ZSB0aG9zZSkKICAgICAgICAgW19wcml2YXRlLT5icmlkZ2Ug
c2F2ZURvY3VtZW50U3RhdGVdOwogCi0gICAgICAgIGlmIChfcHJpdmF0ZS0+Y2hpbGRyZW4pIHsK
LSAgICAgICAgICAgIHVuc2lnbmVkIGk7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgW19w
cml2YXRlLT5jaGlsZHJlbiBjb3VudF07IGkrKykgewotICAgICAgICAgICAgICAgIFdlYkZyYW1l
ICpjaGlsZCA9IFtfcHJpdmF0ZS0+Y2hpbGRyZW4gb2JqZWN0QXRJbmRleDppXTsKLSAgICAgICAg
ICAgICAgICBXZWJIaXN0b3J5SXRlbSAqY2hpbGRJdGVtID0gW2NoaWxkIF9jcmVhdGVJdGVtVHJl
ZVdpdGhUYXJnZXRGcmFtZTp0YXJnZXRGcmFtZSBjbGlwcGVkQXRUYXJnZXQ6ZG9DbGlwXTsKLSAg
ICAgICAgICAgICAgICBbYmZJdGVtIGFkZENoaWxkSXRlbTpjaGlsZEl0ZW1dOwotICAgICAgICAg
ICAgfQotICAgICAgICB9CisgICAgICAgIGZvciAoV2ViRnJhbWUgKmNoaWxkID0gW3NlbGYgX2Zp
cnN0Q2hpbGRGcmFtZV07IGNoaWxkOyBjaGlsZCA9IFtjaGlsZCBfbmV4dFNpYmxpbmdGcmFtZV0p
CisgICAgICAgICAgICBbYmZJdGVtIGFkZENoaWxkSXRlbTpbY2hpbGQgX2NyZWF0ZUl0ZW1UcmVl
V2l0aFRhcmdldEZyYW1lOnRhcmdldEZyYW1lIGNsaXBwZWRBdFRhcmdldDpkb0NsaXBdXTsKICAg
ICB9Ci0gICAgaWYgKHNlbGYgPT0gdGFyZ2V0RnJhbWUpIHsKKyAgICBpZiAoc2VsZiA9PSB0YXJn
ZXRGcmFtZSkKICAgICAgICAgW2JmSXRlbSBzZXRJc1RhcmdldEl0ZW06WUVTXTsKLSAgICB9CisK
ICAgICByZXR1cm4gYmZJdGVtOwogfQogCiAtIChXZWJGcmFtZSAqKV9pbW1lZGlhdGVDaGlsZEZy
YW1lTmFtZWQ6KE5TU3RyaW5nICopbmFtZQogewotICAgIGludCBpOwotICAgIGZvciAoaSA9IFtf
cHJpdmF0ZS0+Y2hpbGRyZW4gY291bnRdLTE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgIFdlYkZy
YW1lICpmcmFtZSA9IFtfcHJpdmF0ZS0+Y2hpbGRyZW4gb2JqZWN0QXRJbmRleDppXTsKLSAgICAg
ICAgaWYgKFtbZnJhbWUgbmFtZV0gaXNFcXVhbFRvU3RyaW5nOm5hbWVdKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gZnJhbWU7Ci0gICAgICAgIH0KLSAgICB9CisgICAgLy8gRklYTUU6IHdpdGggYSBi
ZXR0ZXIgZGF0YSBzdHJ1Y3R1cmUgdGhpcyBjb3VsZCBiZSBPKDEpIGluc3RlYWQgb2YgTyhuKSBp
biBudW1iZXIgCisgICAgLy8gb2YgY2hpbGQgZnJhbWVzCisgICAgZm9yIChXZWJGcmFtZSAqY2hp
bGQgPSBbc2VsZiBfZmlyc3RDaGlsZEZyYW1lXTsgY2hpbGQ7IGNoaWxkID0gW2NoaWxkIF9uZXh0
U2libGluZ0ZyYW1lXSkKKyAgICAgICAgaWYgKFtbY2hpbGQgbmFtZV0gaXNFcXVhbFRvU3RyaW5n
Om5hbWVdKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxkOworCiAgICAgcmV0dXJuIG5pbDsKIH0K
IAogLSAodm9pZClfc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lCiB7Ci0gICAgLy8gSXQncyB3cm9u
ZyB0byBuYW1lIGEgZnJhbWUgIl9ibGFuayIuCi0gICAgaWYgKCFbbmFtZSBpc0VxdWFsVG9TdHJp
bmc6QCJfYmxhbmsiXSkgeworICAgIC8vICJfYmxhbmsiIGlzIG5vdCBhIGxlZ2FsIGZyYW1lIG5h
bWUKKyAgICBpZiAoIVtuYW1lIGlzRXF1YWxUb1N0cmluZzpAIl9ibGFuayJdKQogICAgICAgICBb
X3ByaXZhdGUgc2V0TmFtZTpuYW1lXTsKLSAgICB9CiB9CiAKLS0gKEJPT0wpX2lzRGVzY2VuZGFu
dE9mRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKKy8vIEZJWE1FOiB0aGlzIGV4aXN0cyBvbmx5IGFz
IGEgY29udmVuaWVuY2UgZm9yIFNhZmFyaSwgY29uc2lkZXIgbW92aW5nIHRoZXJlCistIChCT09M
KV9pc0Rlc2NlbmRhbnRPZkZyYW1lOihXZWJGcmFtZSAqKWFuY2VzdG9yCiB7Ci0gICAgaWYgKHNl
bGYgPT0gZnJhbWUpCi0gICAgICAgIHJldHVybiBZRVM7Ci0gICAgCi0gICAgTlNBcnJheSAqY2hp
bGRyZW4gPSBbZnJhbWUgX2ludGVybmFsQ2hpbGRGcmFtZXNdOwotICAgIHVuc2lnbmVkIGk7Ci0g
ICAgZm9yIChpID0gMDsgaSA8IFtjaGlsZHJlbiBjb3VudF07IGkrKykgewotICAgICAgICBXZWJG
cmFtZSAqY2hpbGQgPSBbY2hpbGRyZW4gb2JqZWN0QXRJbmRleDppXTsKLSAgICAgICAgaWYgKHNl
bGYgPT0gY2hpbGQgfHwgW3NlbGYgX2lzRGVzY2VuZGFudE9mRnJhbWU6Y2hpbGRdKSB7CisgICAg
Zm9yIChXZWJGcmFtZSAqZnJhbWUgPSBzZWxmOyBmcmFtZTsgZnJhbWUgPSBbZnJhbWUgcGFyZW50
RnJhbWVdKQorICAgICAgICBpZiAoZnJhbWUgPT0gYW5jZXN0b3IpCiAgICAgICAgICAgICByZXR1
cm4gWUVTOwotICAgICAgICB9Ci0gICAgfQorCiAgICAgcmV0dXJuIE5POwogfQogCkBAIC01Nzcs
MjYgKzYyOCwyNSBAQCBOU1N0cmluZyAqV2ViUGFnZUNhY2hlRG9jdW1lbnRWaWV3S2V5ID0gCiAK
IC0gKHZvaWQpX2RldGFjaENoaWxkcmVuCiB7Ci0gICAgaWYgKF9wcml2YXRlLT5jaGlsZHJlbikg
ewotICAgICAgICBpbnQgaTsKLSAgICAgICAgZm9yIChpID0gW19wcml2YXRlLT5jaGlsZHJlbiBj
b3VudF0tMTsgaSA+PTA7IGktLSkKLSAgICAgICAgICAgIFtbX3ByaXZhdGUtPmNoaWxkcmVuIG9i
amVjdEF0SW5kZXg6aV0gX2RldGFjaEZyb21QYXJlbnRdOwotICAgICAgICBbX3ByaXZhdGUtPmNo
aWxkcmVuIHJlbGVhc2VdOwotICAgICAgICBfcHJpdmF0ZS0+Y2hpbGRyZW4gPSBuaWw7Ci0gICAg
fQorICAgIC8vIEZJWE1FOiBpcyBpdCByZWFsbHkgbmVjZXNzYXJ5IHRvIGRvIHRoaXMgaW4gcmV2
ZXJzZSBvcmRlciBhbnkgbW9yZT8KKyAgICBXZWJGcmFtZSAqY2hpbGQgPSBbc2VsZiBfbGFzdENo
aWxkRnJhbWVdOworICAgIFdlYkZyYW1lICpwcmV2ID0gW2NoaWxkIF9wcmV2aW91c1NpYmxpbmdG
cmFtZV07CisgICAgZm9yICg7IGNoaWxkOyBjaGlsZCA9IHByZXYsIHByZXYgPSBbY2hpbGQgX3By
ZXZpb3VzU2libGluZ0ZyYW1lXSkKKyAgICAgICAgW2NoaWxkIF9kZXRhY2hGcm9tUGFyZW50XTsK
KworICAgIFtfcHJpdmF0ZS0+Y2hpbGRyZW4gcmVsZWFzZV07CisgICAgX3ByaXZhdGUtPmNoaWxk
cmVuID0gbmlsOwogfQogCiAtICh2b2lkKV9jbG9zZU9sZERhdGFTb3VyY2VzCiB7Ci0gICAgaWYg
KF9wcml2YXRlLT5jaGlsZHJlbikgewotICAgICAgICBpbnQgaTsKLSAgICAgICAgZm9yIChpID0g
W19wcml2YXRlLT5jaGlsZHJlbiBjb3VudF0tMTsgaSA+PTA7IGktLSkgewotICAgICAgICAgICAg
W1tfcHJpdmF0ZS0+Y2hpbGRyZW4gb2JqZWN0QXRJbmRleDppXSBfY2xvc2VPbGREYXRhU291cmNl
c107Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKF9wcml2YXRlLT5kYXRhU291cmNlKSB7Cisg
ICAgLy8gRklYTUU6IGlzIGl0IGltcG9ydGFudCBmb3IgdGhpcyB0cmF2ZXJzYWwgdG8gYmUgcG9z
dG9yZGVyIGluc3RlYWQgb2YgcHJlb3JkZXI/CisgICAgLy8gRklYTUU6IGFkZCBoZWxwZXJzIGZv
ciBwb3N0b3JkZXIgdHJhdmVyc2FsPworICAgIGZvciAoV2ViRnJhbWUgKmNoaWxkID0gW3NlbGYg
X2ZpcnN0Q2hpbGRGcmFtZV07IGNoaWxkOyBjaGlsZCA9IFtjaGlsZCBfbmV4dFNpYmxpbmdGcmFt
ZV0pCisgICAgICAgIFtjaGlsZCBfY2xvc2VPbGREYXRhU291cmNlc107CisKKyAgICBpZiAoX3By
aXZhdGUtPmRhdGFTb3VyY2UpCiAgICAgICAgIFtbW3NlbGYgd2ViVmlld10gX2ZyYW1lTG9hZERl
bGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Ol9wcml2YXRlLT53ZWJWaWV3IHdpbGxDbG9zZUZyYW1l
OnNlbGZdOwotICAgIH0KIH0KIAogLSAodm9pZClfZGV0YWNoRnJvbVBhcmVudApAQCAtMTI4OSwy
MSArMTMzOSwyMCBAQCBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgX3RpbWVPZkxhc3RDb21wbGV0CiAt
IChCT09MKV9jaGlsZEZyYW1lc01hdGNoSXRlbTooV2ViSGlzdG9yeUl0ZW0gKilpdGVtCiB7CiAg
ICAgTlNBcnJheSAqY2hpbGRJdGVtcyA9IFtpdGVtIGNoaWxkcmVuXTsKLSAgICBpbnQgbnVtQ2hp
bGRJdGVtcyA9IGNoaWxkSXRlbXMgPyBbY2hpbGRJdGVtcyBjb3VudF0gOiAwOwotICAgIGludCBu
dW1DaGlsZEZyYW1lcyA9IF9wcml2YXRlLT5jaGlsZHJlbiA/IFtfcHJpdmF0ZS0+Y2hpbGRyZW4g
Y291bnRdIDogMDsKLSAgICBpZiAobnVtQ2hpbGRGcmFtZXMgIT0gbnVtQ2hpbGRJdGVtcykgewor
ICAgIGludCBudW1DaGlsZEl0ZW1zID0gW2NoaWxkSXRlbXMgY291bnRdOworICAgIGludCBudW1D
aGlsZEZyYW1lcyA9IFtfcHJpdmF0ZS0+Y2hpbGRyZW4gY291bnRdOworICAgIGlmIChudW1DaGls
ZEZyYW1lcyAhPSBudW1DaGlsZEl0ZW1zKQogICAgICAgICByZXR1cm4gTk87Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgaW50IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1DaGlsZEl0ZW1z
OyBpKyspIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICppdGVtVGFyZ2V0TmFtZSA9IFtbY2hpbGRJ
dGVtcyBvYmplY3RBdEluZGV4OmldIHRhcmdldF07Ci0gICAgICAgICAgICAvL1NlYXJjaCByZWN1
cnNpdmUgaGVyZT8KLSAgICAgICAgICAgIGlmICghW3NlbGYgX2ltbWVkaWF0ZUNoaWxkRnJhbWVO
YW1lZDppdGVtVGFyZ2V0TmFtZV0pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gTk87IC8vIGNv
dWxkbid0IG1hdGNoIHRoZSBpJ3RoIGl0ZW1UYXJnZXQKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gWUVTOyAvLyBmb3VuZCBtYXRjaGVzIGZvciBhbGwgaXRlbVRhcmdl
dHMKKworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1DaGlsZEl0ZW1zOyBpKysp
IHsKKyAgICAgICAgTlNTdHJpbmcgKml0ZW1UYXJnZXROYW1lID0gW1tjaGlsZEl0ZW1zIG9iamVj
dEF0SW5kZXg6aV0gdGFyZ2V0XTsKKyAgICAgICAgLy9TZWFyY2ggcmVjdXJzaXZlIGhlcmU/Cisg
ICAgICAgIGlmICghW3NlbGYgX2ltbWVkaWF0ZUNoaWxkRnJhbWVOYW1lZDppdGVtVGFyZ2V0TmFt
ZV0pCisgICAgICAgICAgICByZXR1cm4gTk87IC8vIGNvdWxkbid0IG1hdGNoIHRoZSBpJ3RoIGl0
ZW1UYXJnZXQKICAgICB9CisKKyAgICByZXR1cm4gWUVTOyAvLyBmb3VuZCBtYXRjaGVzIGZvciBh
bGwgaXRlbVRhcmdldHMKIH0KIAogLSAoQk9PTClfc2hvdWxkUmVsb2FkRm9yQ3VycmVudDooTlNV
UkwgKiljdXJyZW50VVJMIGFuZERlc3RpbmF0aW9uOihOU1VSTCAqKWRlc3RpbmF0aW9uVVJMCkBA
IC0yMTQ4LDI5ICsyMTk3LDIyIEBAIHN0YXRpYyBDRkFic29sdXRlVGltZSBfdGltZU9mTGFzdENv
bXBsZXQKIAogLSAodm9pZClfZGVmZXJzQ2FsbGJhY2tzQ2hhbmdlZAogewotICAgIFtbc2VsZiBw
cm92aXNpb25hbERhdGFTb3VyY2VdIF9kZWZlcnNDYWxsYmFja3NDaGFuZ2VkXTsKLSAgICBbW3Nl
bGYgZGF0YVNvdXJjZV0gX2RlZmVyc0NhbGxiYWNrc0NoYW5nZWRdOwotCi0gICAgLy8gSXQncyBP
SyB0byB1c2UgdGhlIGludGVybmFsIHZlcnNpb24gb2YgZ2V0dGluZyB0aGUgY2hpbGQKLSAgICAv
LyBmcmFtZXMsIHNpbmNlIHVuZGVmZXJyaW5nIGNhbGxiYWNrcyB3aWxsIG5vdCBkbyBhbnkgaW1t
ZWRpYXRlCi0gICAgLy8gd29yaywgYW5kIHNvIHRoZSBzZXQgb2YgZnJhbWVzIGNhbid0IGNoYW5n
ZSBvdXQgZnJvbSB1bmRlciB1cy4KLSAgICBbW3NlbGYgX2ludGVybmFsQ2hpbGRGcmFtZXNdIG1h
a2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihfZGVmZXJzQ2FsbGJhY2tzQ2hhbmdl
ZCldOworICAgIGZvciAoV2ViRnJhbWUgKmZyYW1lID0gc2VsZjsgZnJhbWU7IGZyYW1lID0gW2Zy
YW1lIF90cmF2ZXJzZU5leHRGcmFtZVN0YXlXaXRoaW46c2VsZl0pIHsKKyAgICAgICAgW1tmcmFt
ZSBwcm92aXNpb25hbERhdGFTb3VyY2VdIF9kZWZlcnNDYWxsYmFja3NDaGFuZ2VkXTsKKyAgICAg
ICAgW1tmcmFtZSBkYXRhU291cmNlXSBfZGVmZXJzQ2FsbGJhY2tzQ2hhbmdlZF07CisgICAgfQog
fQogCiAtICh2b2lkKV92aWV3V2lsbE1vdmVUb0hvc3RXaW5kb3c6KE5TV2luZG93ICopaG9zdFdp
bmRvdwogewotICAgIFtbW3NlbGYgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIHZpZXdXaWxsTW92
ZVRvSG9zdFdpbmRvdzpob3N0V2luZG93XTsKLSAgICAvLyBJdCdzIE9LIHRvIHVzZSB0aGUgaW50
ZXJuYWwgdmVyc2lvbiBiZWNhdXNlIHRoaXMgbWV0aG9kIGlzCi0gICAgLy8gZ3VhcmFudGVlZCBu
b3QgdG8gY2hhbmdlIHRoZSBzZXQgb2YgZnJhbWVzLgotICAgIFtbc2VsZiBfaW50ZXJuYWxDaGls
ZEZyYW1lc10gbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF92aWV3V2lsbE1v
dmVUb0hvc3RXaW5kb3c6KSB3aXRoT2JqZWN0Omhvc3RXaW5kb3ddOworICAgIGZvciAoV2ViRnJh
bWUgKmZyYW1lID0gc2VsZjsgZnJhbWU7IGZyYW1lID0gW2ZyYW1lIF90cmF2ZXJzZU5leHRGcmFt
ZVN0YXlXaXRoaW46c2VsZl0pCisgICAgICAgIFtbW2ZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRW
aWV3XSB2aWV3V2lsbE1vdmVUb0hvc3RXaW5kb3c6aG9zdFdpbmRvd107CiB9CiAKIC0gKHZvaWQp
X3ZpZXdEaWRNb3ZlVG9Ib3N0V2luZG93CiB7Ci0gICAgW1tbc2VsZiBmcmFtZVZpZXddIGRvY3Vt
ZW50Vmlld10gdmlld0RpZE1vdmVUb0hvc3RXaW5kb3ddOwotICAgIC8vIEl0J3MgT0sgdG8gdXNl
IHRoZSBpbnRlcm5hbCB2ZXJzaW9uIGJlY2F1c2UgdGhpcyBtZXRob2QgaXMKLSAgICAvLyBndWFy
YW50ZWVkIG5vdCB0byBjaGFuZ2UgdGhlIHNldCBvZiBmcmFtZXMuCi0gICAgW1tzZWxmIF9pbnRl
cm5hbENoaWxkRnJhbWVzXSBtYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX3Zp
ZXdEaWRNb3ZlVG9Ib3N0V2luZG93KV07CisgICAgZm9yIChXZWJGcmFtZSAqZnJhbWUgPSBzZWxm
OyBmcmFtZTsgZnJhbWUgPSBbZnJhbWUgX3RyYXZlcnNlTmV4dEZyYW1lU3RheVdpdGhpbjpzZWxm
XSkKKyAgICAgICAgW1tbZnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIHZpZXdEaWRNb3Zl
VG9Ib3N0V2luZG93XTsKIH0KIAogLSAodm9pZClfcmVsb2FkQWxsb3dpbmdTdGFsZURhdGFXaXRo
T3ZlcnJpZGVFbmNvZGluZzooTlNTdHJpbmcgKillbmNvZGluZwpAQCAtMjIwOSw3ICsyMjUxLDcg
QEAgc3RhdGljIENGQWJzb2x1dGVUaW1lIF90aW1lT2ZMYXN0Q29tcGxldAogICAgIC8vIHdlIGtl
ZXAgdHJhY2sgb2Ygc2libGluZyBwb2ludGVycyB0byBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgYSBs
b29rdXAgaW4gdGhlIGNoaWxkcmVuIGFycmF5CiAgICAgCiAgICAgaWYgKGN1cnJlbnRJbmRleCA+
IDApIHsKLSAgICAgICAgV2ViRnJhbWUgKnByZXZpb3VzRnJhbWUgPSBbW3NlbGYgY2hpbGRGcmFt
ZXNdIG9iamVjdEF0SW5kZXg6Y3VycmVudEluZGV4IC0gMV07CisgICAgICAgIFdlYkZyYW1lICpw
cmV2aW91c0ZyYW1lID0gW19wcml2YXRlLT5jaGlsZHJlbiBvYmplY3RBdEluZGV4OmN1cnJlbnRJ
bmRleCAtIDFdOwogICAgICAgICBwcmV2aW91c0ZyYW1lLT5fcHJpdmF0ZS0+bmV4dFNpYmxpbmcg
PSBjaGlsZDsKICAgICAgICAgY2hpbGQtPl9wcml2YXRlLT5wcmV2aW91c1NpYmxpbmcgPSBwcmV2
aW91c0ZyYW1lOwogICAgICAgICBBU1NFUlQoY2hpbGQtPl9wcml2YXRlLT5uZXh0U2libGluZyA9
PSBuaWwpOwpAQCAtMjIyNyw2ICsyMjY5LDkgQEAgc3RhdGljIENGQWJzb2x1dGVUaW1lIF90aW1l
T2ZMYXN0Q29tcGxldAogICAgIGlmIChjaGlsZC0+X3ByaXZhdGUtPm5leHRTaWJsaW5nKQogICAg
ICAgICBjaGlsZC0+X3ByaXZhdGUtPm5leHRTaWJsaW5nLT5fcHJpdmF0ZS0+cHJldmlvdXNTaWJs
aW5nID0gY2hpbGQtPl9wcml2YXRlLT5wcmV2aW91c1NpYmxpbmc7IAogCisgICAgY2hpbGQtPl9w
cml2YXRlLT5wcmV2aW91c1NpYmxpbmcgPSBuaWw7CisgICAgY2hpbGQtPl9wcml2YXRlLT5uZXh0
U2libGluZyA9IG5pbDsKKwogICAgIFtfcHJpdmF0ZS0+Y2hpbGRyZW4gcmVtb3ZlT2JqZWN0OmNo
aWxkXTsKIH0KIApAQCAtMjI1OCw3ICsyMzAzLDcgQEAgc3RhdGljIENGQWJzb2x1dGVUaW1lIF90
aW1lT2ZMYXN0Q29tcGxldAogICAgIFtzZWxmIF9hZGRGcmFtZVBhdGhUb1N0cmluZzpwYXRoXTsK
ICAgICAvLyBUaGUgbmV3IGNoaWxkJ3MgcGF0aCBjb21wb25lbnQgaXMgYWxsIGJ1dCB0aGUgMXN0
IGNoYXIgYW5kIHRoZSBsYXN0IDMgY2hhcnMKICAgICAvLyBGSVhNRTogU2hvdWxkbid0IHRoaXMg
bnVtYmVyIGJlIHRoZSBpbmRleCBvZiB0aGlzIGZyYW1lIGluIGl0cyBwYXJlbnQgcmF0aGVyIHRo
YW4gdGhlIGNoaWxkIGNvdW50PwotICAgIFtwYXRoIGFwcGVuZEZvcm1hdDpAIi88IS0tZnJhbWUl
ZC0tPi0tPiIsIF9wcml2YXRlLT5jaGlsZHJlbiA/IFtfcHJpdmF0ZS0+Y2hpbGRyZW4gY291bnRd
IDogMF07CisgICAgW3BhdGggYXBwZW5kRm9ybWF0OkAiLzwhLS1mcmFtZSVkLS0+LS0+IiwgW19w
cml2YXRlLT5jaGlsZHJlbiBjb3VudF1dOwogICAgIHJldHVybiBwYXRoOwogfQogCkBAIC0yMzI5
LDEyICsyMzc0LDEwIEBAIHN0YXRpYyBDRkFic29sdXRlVGltZSBfdGltZU9mTGFzdENvbXBsZXQK
IC8vIGhpc3RvcnkgaXRlbS4KIC0gKHZvaWQpX3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlCiB7
Ci0gICAgW19wcml2YXRlLT5icmlkZ2Ugc2F2ZURvY3VtZW50U3RhdGVdOwotICAgIFtzZWxmIF9z
YXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW06W19wcml2YXRlIGN1cnJlbnRJdGVt
XV07Ci0KLSAgICAvLyBJdCdzIE9LIHRvIHVzZSB0aGUgaW50ZXJuYWwgdmVyc2lvbiBiZWNhdXNl
IHRoaXMgbWV0aG9kIGlzCi0gICAgLy8gZ3VhcmFudGVlZCBub3QgdG8gY2hhbmdlIHRoZSBzZXQg
b2YgZnJhbWVzLgotICAgIFtbc2VsZiBfaW50ZXJuYWxDaGlsZEZyYW1lc10gbWFrZU9iamVjdHNQ
ZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF9zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZSldOwor
ICAgIGZvciAoV2ViRnJhbWUgKmZyYW1lID0gc2VsZjsgZnJhbWU7IGZyYW1lID0gW2ZyYW1lIF90
cmF2ZXJzZU5leHRGcmFtZVN0YXlXaXRoaW46c2VsZl0pIHsKKyAgICAgICAgW1tmcmFtZSBfYnJp
ZGdlXSBzYXZlRG9jdW1lbnRTdGF0ZV07CisgICAgICAgIFtmcmFtZSBfc2F2ZVNjcm9sbFBvc2l0
aW9uQW5kVmlld1N0YXRlVG9JdGVtOltmcmFtZS0+X3ByaXZhdGUgY3VycmVudEl0ZW1dXTsKKyAg
ICB9CiB9CiAKIC8vIENhbGxlZCBhZnRlciB0aGUgRm9ybXNEZWxlZ2F0ZSBpcyBkb25lIHByb2Nl
c3Npbmcgd2lsbFN1Ym1pdEZvcm06CkBAIC0yNDgyLDQ5ICsyNTI1LDQxIEBAIHN0YXRpYyBDRkFi
c29sdXRlVGltZSBfdGltZU9mTGFzdENvbXBsZXQKICAgICBbc2VsZiBfY2hlY2tOZXdXaW5kb3dQ
b2xpY3lGb3JSZXF1ZXN0OnJlcXVlc3QgYWN0aW9uOihOU0RpY3Rpb25hcnkgKilhY3Rpb24gZnJh
bWVOYW1lOmZyYW1lTmFtZSBmb3JtU3RhdGU6bmlsIGFuZENhbGw6c2VsZiB3aXRoU2VsZWN0b3I6
QHNlbGVjdG9yKF9jb250aW51ZUxvYWRSZXF1ZXN0QWZ0ZXJOZXdXaW5kb3dQb2xpY3k6ZnJhbWVO
YW1lOmZvcm1TdGF0ZTopXTsKIH0KIAotLy8gUmV0dXJucyB0aGUgbGFzdCBjaGlsZCBvZiB1cyBh
bmQgYW55IGNoaWxkcmVuLCBvciBuaWwKLS0gKFdlYkZyYW1lICopX2xhc3RDaGlsZAorLy8gUmV0
dXJucyB0aGUgbGFzdCBjaGlsZCBvZiB1cyBhbmQgYW55IGNoaWxkcmVuLCBvciBzZWxmCistIChX
ZWJGcmFtZSAqKV9kZWVwTGFzdENoaWxkRnJhbWUKIHsKLSAgICBpZiAoX3ByaXZhdGUtPmNoaWxk
cmVuICYmIFtfcHJpdmF0ZS0+Y2hpbGRyZW4gY291bnRdKSB7Ci0gICAgICAgIFdlYkZyYW1lICpv
dXJMYXN0S2lkID0gW19wcml2YXRlLT5jaGlsZHJlbiBsYXN0T2JqZWN0XTsKLSAgICAgICAgV2Vi
RnJhbWUgKmtpZHNMYXN0S2lkID0gW291ckxhc3RLaWQgX2xhc3RDaGlsZF07Ci0gICAgICAgIHJl
dHVybiBraWRzTGFzdEtpZCA/IGtpZHNMYXN0S2lkIDogb3VyTGFzdEtpZDsKLSAgICB9Ci0gICAg
cmV0dXJuIG5pbDsgICAgICAgICAgICAgICAgLy8gbm8ga2lkcworICAgIFdlYkZyYW1lICpyZXN1
bHQgPSBzZWxmOworICAgIGZvciAoV2ViRnJhbWUgKmxhc3RDaGlsZCA9IFtzZWxmIF9sYXN0Q2hp
bGRGcmFtZV07IGxhc3RDaGlsZDsgbGFzdENoaWxkID0gW2xhc3RDaGlsZCBfbGFzdENoaWxkRnJh
bWVdKQorICAgICAgICByZXN1bHQgPSBsYXN0Q2hpbGQ7CisKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiAvLyBSZXR1cm4gbmV4dCBmcmFtZSB0byBiZSB0cmF2ZXJzZWQsIHZpc2l0aW5nIGNoaWxk
cmVuIGFmdGVyIHBhcmVudAogLSAoV2ViRnJhbWUgKilfbmV4dEZyYW1lV2l0aFdyYXA6KEJPT0wp
d3JhcEZsYWcKIHsKLSAgICBpZiAoX3ByaXZhdGUtPmNoaWxkcmVuICYmIFtfcHJpdmF0ZS0+Y2hp
bGRyZW4gY291bnRdKQotICAgICAgICByZXR1cm4gW19wcml2YXRlLT5jaGlsZHJlbiBvYmplY3RB
dEluZGV4OjBdOworICAgIFdlYkZyYW1lICpyZXN1bHQgPSBbc2VsZiBfdHJhdmVyc2VOZXh0RnJh
bWVTdGF5V2l0aGluOm5pbF07CiAKLSAgICBXZWJGcmFtZSAqIGZyYW1lOwotICAgIGZvciAoZnJh
bWUgPSBzZWxmOyBbZnJhbWUgcGFyZW50RnJhbWVdOyBmcmFtZSA9IFtmcmFtZSBwYXJlbnRGcmFt
ZV0pIHsKLSAgICAgICAgV2ViRnJhbWUgKm5leHRTaWJsaW5nID0gZnJhbWUtPl9wcml2YXRlLT5u
ZXh0U2libGluZzsKLSAgICAgICAgaWYgKG5leHRTaWJsaW5nKQotICAgICAgICAgICAgcmV0dXJu
IG5leHRTaWJsaW5nOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gd3JhcEZsYWcgPyBmcmFtZSA6
IG5pbDsgICAgICAgICAgICAgICAgLy8gbWFkZSBpdCBhbGwgdGhlIHdheSB0byB0aGUgdG9wCisg
ICAgaWYgKCFyZXN1bHQgJiYgd3JhcEZsYWcpCisgICAgICAgIHJldHVybiBbW3NlbGYgd2ViVmll
d10gbWFpbkZyYW1lXTsKKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIFJldHVybiBwcmV2
aW91cyBmcmFtZSB0byBiZSB0cmF2ZXJzZWQsIGV4YWN0IHJldmVyc2Ugb3JkZXIgb2YgX25leHRG
cmFtZQogLSAoV2ViRnJhbWUgKilfcHJldmlvdXNGcmFtZVdpdGhXcmFwOihCT09MKXdyYXBGbGFn
CiB7Ci0gICAgV2ViRnJhbWUgKnByZXZTaWJsaW5nID0gX3ByaXZhdGUtPnByZXZpb3VzU2libGlu
ZzsKLSAgICBpZiAocHJldlNpYmxpbmcpIHsKLSAgICAgICAgV2ViRnJhbWUgKnByZXZTaWJsaW5n
TGFzdENoaWxkID0gW3ByZXZTaWJsaW5nIF9sYXN0Q2hpbGRdOwotICAgICAgICByZXR1cm4gcHJl
dlNpYmxpbmdMYXN0Q2hpbGQgPyBwcmV2U2libGluZ0xhc3RDaGlsZCA6IHByZXZTaWJsaW5nOwot
ICAgIH0gCisgICAgLy8gRklYTUU6IGJlc2lkZXMgdGhlIHdyYXAgZmVhdHVyZSwgdGhpcyBpcyBq
dXN0IHRoZSB0cmF2ZXJzZVByZXZpb3VzTm9kZSBhbGdvcml0aG0KKworICAgIFdlYkZyYW1lICpw
cmV2U2libGluZyA9IFtzZWxmIF9wcmV2aW91c1NpYmxpbmdGcmFtZV07CisgICAgaWYgKHByZXZT
aWJsaW5nKQorICAgICAgICByZXR1cm4gW3ByZXZTaWJsaW5nIF9kZWVwTGFzdENoaWxkRnJhbWVd
OwogICAgIGlmIChbc2VsZiBwYXJlbnRGcmFtZV0pCiAgICAgICAgIHJldHVybiBbc2VsZiBwYXJl
bnRGcmFtZV07CiAgICAgCiAgICAgLy8gbm8gc2libGluZ3MsIG5vIHBhcmVudCwgc2VsZj09dG9w
Ci0gICAgaWYgKHdyYXBGbGFnKSB7Ci0gICAgICAgIFdlYkZyYW1lICpzZWxmTGFzdENoaWxkID0g
W3NlbGYgX2xhc3RDaGlsZF07Ci0gICAgICAgIHJldHVybiBzZWxmTGFzdENoaWxkID8gc2VsZkxh
c3RDaGlsZCA6IHNlbGY7Ci0gICAgfQorICAgIGlmICh3cmFwRmxhZykKKyAgICAgICAgcmV0dXJu
IFtzZWxmIF9kZWVwTGFzdENoaWxkRnJhbWVdOwogCiAgICAgLy8gdG9wIHZpZXcgaXMgYWx3YXlz
IHRoZSBsYXN0IG9uZSBpbiB0aGlzIG9yZGVyaW5nLCBzbyBwcmV2IGlzIG5pbCB3aXRob3V0IHdy
YXAKICAgICByZXR1cm4gbmlsOwpAQCAtMjU0MiwyMSArMjU3NywxMyBAQCBzdGF0aWMgQ0ZBYnNv
bHV0ZVRpbWUgX3RpbWVPZkxhc3RDb21wbGV0CiAKIC0gKGludClfbnVtUGVuZGluZ09yTG9hZGlu
Z1JlcXVlc3RzOihCT09MKXJlY3Vyc2UKIHsKLSAgICBpbnQgbnVtOwotCiAgICAgaWYgKCFyZWN1
cnNlKQogICAgICAgICByZXR1cm4gW1tzZWxmIF9icmlkZ2VdIG51bVBlbmRpbmdPckxvYWRpbmdS
ZXF1ZXN0c107CiAKLSAgICBudW0gPSBbW3NlbGYgX2JyaWRnZV0gbnVtUGVuZGluZ09yTG9hZGlu
Z1JlcXVlc3RzXTsKLSAgICAvLyBJdCdzIE9LIHRvIHVzZSB0aGUgaW50ZXJuYWwgdmVyc2lvbiBi
ZWNhdXNlIHRoaXMgbWV0aG9kIGlzCi0gICAgLy8gZ3VhcmFudGVlZCBub3QgdG8gY2hhbmdlIHRo
ZSBzZXQgb2YgZnJhbWVzLgotICAgIE5TQXJyYXkgKmNoaWxkcmVuID0gW3NlbGYgX2ludGVybmFs
Q2hpbGRGcmFtZXNdOwotICAgIGludCBpLCBjb3VudCA9IFtjaGlsZHJlbiBjb3VudF07Ci0gICAg
V2ViRnJhbWUgKmNoaWxkOwotICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKXsKLSAgICAg
ICAgY2hpbGQgPSBbY2hpbGRyZW4gb2JqZWN0QXRJbmRleDogMF07Ci0gICAgICAgIG51bSArPSBb
Y2hpbGQgX251bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0czpyZWN1cnNlXTsKLSAgICB9CisgICAg
aW50IG51bSA9IDA7CisgICAgZm9yIChXZWJGcmFtZSAqZnJhbWUgPSBzZWxmOyBmcmFtZTsgZnJh
bWUgPSBbZnJhbWUgX3RyYXZlcnNlTmV4dEZyYW1lU3RheVdpdGhpbjpzZWxmXSkKKyAgICAgICAg
bnVtICs9IFtbc2VsZiBfYnJpZGdlXSBudW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHNdOworCiAg
ICAgcmV0dXJuIG51bTsKIH0KIApAQCAtMjU2NywyNSArMjU5NCwyNSBAQCBzdGF0aWMgQ0ZBYnNv
bHV0ZVRpbWUgX3RpbWVPZkxhc3RDb21wbGV0CiAKIC0gKHZvaWQpX3JlbG9hZEZvclBsdWdpbkNo
YW5nZXMKIHsKLSAgICBOU1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKmRvY3VtZW50VmlldyA9IFtb
c2VsZiBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107Ci0gICAgaWYgKFtkb2N1bWVudFZpZXcgaXNL
aW5kT2ZDbGFzczpbV2ViTmV0c2NhcGVQbHVnaW5Eb2N1bWVudFZpZXcgY2xhc3NdXSB8fAotICAg
ICAgICBbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYlBsdWdpbkRvY3VtZW50VmlldyBj
bGFzc11dKSB7Ci0gICAgICAgIFtzZWxmIHJlbG9hZF07Ci0gICAgfSBlbHNlIGlmIChbZG9jdW1l
bnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pIHsKLSAgICAgICAgTlNF
bnVtZXJhdG9yICp2aWV3RW51bWVyYXRvciA9IFtbZG9jdW1lbnRWaWV3IHN1YnZpZXdzXSBvYmpl
Y3RFbnVtZXJhdG9yXTsKLSAgICAgICAgTlNWaWV3ICp2aWV3OwotICAgICAgICAvLyBGSVhNRTog
IFdlIHNob3VsZCBhc2sgdGhlIGZyYW1lIGlmIGl0IGNvbnRhaW5zIHBsdWdpbnMsIHJhdGhlcgot
ICAgICAgICAvLyB0aGFuIGRvaW5nIHRoaXMgY2hlY2suCi0gICAgICAgIHdoaWxlICgodmlldyA9
IFt2aWV3RW51bWVyYXRvciBuZXh0T2JqZWN0XSkgIT0gbmlsKSB7Ci0gICAgICAgICAgICBpZiAo
W3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViTmV0c2NhcGVQbHVnaW5FbWJlZGRlZFZpZXcgY2xhc3Nd
XSB8fAotICAgICAgICAgICAgICAgIFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dlYk51bGxQbHVnaW5W
aWV3IGNsYXNzXV0gfHwKLSAgICAgICAgICAgICAgICBbV2ViUGx1Z2luQ29udHJvbGxlciBpc1Bs
dWdJblZpZXc6dmlld10pIHsKLSAgICAgICAgICAgICAgICBbc2VsZiByZWxvYWRdOwotICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgIGZvciAoV2ViRnJhbWUgKmZyYW1lID0gc2VsZjsgZnJhbWU7
IGZyYW1lID0gW2ZyYW1lIF90cmF2ZXJzZU5leHRGcmFtZVN0YXlXaXRoaW46c2VsZl0pIHsKKyAg
ICAgICAgTlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+ICpkb2N1bWVudFZpZXcgPSBbW2ZyYW1lIGZy
YW1lVmlld10gZG9jdW1lbnRWaWV3XTsKKyAgICAgICAgaWYgKFtkb2N1bWVudFZpZXcgaXNLaW5k
T2ZDbGFzczpbV2ViTmV0c2NhcGVQbHVnaW5Eb2N1bWVudFZpZXcgY2xhc3NdXSB8fAorICAgICAg
ICAgICAgW2RvY3VtZW50VmlldyBpc0tpbmRPZkNsYXNzOltXZWJQbHVnaW5Eb2N1bWVudFZpZXcg
Y2xhc3NdXSkgeworICAgICAgICAgICAgW2ZyYW1lIHJlbG9hZF07CisgICAgICAgIH0gZWxzZSBp
ZiAoW2RvY3VtZW50VmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKSB7Cisg
ICAgICAgICAgICBOU0VudW1lcmF0b3IgKnZpZXdFbnVtZXJhdG9yID0gW1tkb2N1bWVudFZpZXcg
c3Vidmlld3NdIG9iamVjdEVudW1lcmF0b3JdOworICAgICAgICAgICAgTlNWaWV3ICp2aWV3Owor
ICAgICAgICAgICAgLy8gRklYTUU6ICBXZSBzaG91bGQgYXNrIHRoZSBmcmFtZSBpZiBpdCBjb250
YWlucyBwbHVnaW5zLCByYXRoZXIKKyAgICAgICAgICAgIC8vIHRoYW4gZG9pbmcgdGhpcyBjaGVj
ay4KKyAgICAgICAgICAgIHdoaWxlICgodmlldyA9IFt2aWV3RW51bWVyYXRvciBuZXh0T2JqZWN0
XSkgIT0gbmlsKSB7CisgICAgICAgICAgICAgICAgaWYgKFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dl
Yk5ldHNjYXBlUGx1Z2luRW1iZWRkZWRWaWV3IGNsYXNzXV0gfHwKKyAgICAgICAgICAgICAgICAg
ICAgW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViTnVsbFBsdWdpblZpZXcgY2xhc3NdXSB8fAorICAg
ICAgICAgICAgICAgICAgICBbV2ViUGx1Z2luQ29udHJvbGxlciBpc1BsdWdJblZpZXc6dmlld10p
IHsKKyAgICAgICAgICAgICAgICAgICAgW2ZyYW1lIHJlbG9hZF07CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIFtbc2VsZiBjaGlsZEZyYW1lc10gbWFrZU9iamVjdHNQZXJm
b3JtU2VsZWN0b3I6QHNlbGVjdG9yKF9yZWxvYWRGb3JQbHVnaW5DaGFuZ2VzKV07CiAgICAgfQog
fQogCkBAIC0yNjAzLDUyICsyNjMwLDUzIEBAIHN0YXRpYyBDRkFic29sdXRlVGltZSBfdGltZU9m
TGFzdENvbXBsZXQKIAogLSAodm9pZClfcmVjdXJzaXZlX3BhdXNlTnVsbEV2ZW50c0ZvckFsbE5l
dHNjYXBlUGx1Z2lucwogewotICAgIE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqZG9jdW1lbnRW
aWV3ID0gW1tzZWxmIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKLSAgICBpZiAoW2RvY3VtZW50
VmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKQotICAgICAgICBbKFdlYkhU
TUxWaWV3ICopZG9jdW1lbnRWaWV3IF9wYXVzZU51bGxFdmVudHNGb3JBbGxOZXRzY2FwZVBsdWdp
bnNdOwotICAgIAotICAgIFtbc2VsZiBjaGlsZEZyYW1lc10gbWFrZU9iamVjdHNQZXJmb3JtU2Vs
ZWN0b3I6QHNlbGVjdG9yKF9yZWN1cnNpdmVfcGF1c2VOdWxsRXZlbnRzRm9yQWxsTmV0c2NhcGVQ
bHVnaW5zKV07CisgICAgZm9yIChXZWJGcmFtZSAqZnJhbWUgPSBzZWxmOyBmcmFtZTsgZnJhbWUg
PSBbZnJhbWUgX3RyYXZlcnNlTmV4dEZyYW1lU3RheVdpdGhpbjpzZWxmXSkgeworICAgICAgICBO
U1ZpZXcgPFdlYkRvY3VtZW50Vmlldz4gKmRvY3VtZW50VmlldyA9IFtbZnJhbWUgZnJhbWVWaWV3
XSBkb2N1bWVudFZpZXddOworICAgICAgICAvLyBGSVhNRTogd2hhdCBhYm91dCBwbHVnaW4gZG9j
dW1lbnQgdmlldz8KKyAgICAgICAgaWYgKFtkb2N1bWVudFZpZXcgaXNLaW5kT2ZDbGFzczpbV2Vi
SFRNTFZpZXcgY2xhc3NdXSkKKyAgICAgICAgICAgIFsoV2ViSFRNTFZpZXcgKilkb2N1bWVudFZp
ZXcgX3BhdXNlTnVsbEV2ZW50c0ZvckFsbE5ldHNjYXBlUGx1Z2luc107CisgICAgfQogfQogCiAt
ICh2b2lkKV9yZWN1cnNpdmVfcmVzdW1lTnVsbEV2ZW50c0ZvckFsbE5ldHNjYXBlUGx1Z2lucwog
ewotICAgIE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3PiAqZG9jdW1lbnRWaWV3ID0gW1tzZWxmIGZy
YW1lVmlld10gZG9jdW1lbnRWaWV3XTsKLSAgICBpZiAoW2RvY3VtZW50VmlldyBpc0tpbmRPZkNs
YXNzOltXZWJIVE1MVmlldyBjbGFzc11dKQotICAgICAgICBbKFdlYkhUTUxWaWV3ICopZG9jdW1l
bnRWaWV3IF9yZXN1bWVOdWxsRXZlbnRzRm9yQWxsTmV0c2NhcGVQbHVnaW5zXTsKLQotICAgIFtb
c2VsZiBjaGlsZEZyYW1lc10gbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF9y
ZWN1cnNpdmVfcmVzdW1lTnVsbEV2ZW50c0ZvckFsbE5ldHNjYXBlUGx1Z2lucyldOworICAgIGZv
ciAoV2ViRnJhbWUgKmZyYW1lID0gc2VsZjsgZnJhbWU7IGZyYW1lID0gW2ZyYW1lIF90cmF2ZXJz
ZU5leHRGcmFtZVN0YXlXaXRoaW46c2VsZl0pIHsKKyAgICAgICAgLy8gRklYTUU6IHdoYXQgYWJv
dXQgcGx1Z2luIGRvY3VtZW50IHZpZXc/CisgICAgICAgIE5TVmlldyA8V2ViRG9jdW1lbnRWaWV3
PiAqZG9jdW1lbnRWaWV3ID0gW1tmcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CisgICAg
ICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0p
CisgICAgICAgICAgICBbKFdlYkhUTUxWaWV3ICopZG9jdW1lbnRWaWV3IF9yZXN1bWVOdWxsRXZl
bnRzRm9yQWxsTmV0c2NhcGVQbHVnaW5zXTsKKyAgICB9CiB9CiAKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdlYkZyYW1lIChXZWJJbnRlcm5hbCkKIAotLSAodm9pZClfYWNjdW11bGF0ZURvY3Vt
ZW50Vmlld3M6KE5TTXV0YWJsZUFycmF5ICopcmVzdWx0Ci17Ci0gICAgaWQgZG9jVmlldyA9IFtb
c2VsZiBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107Ci0gICAgaWYgKGRvY1ZpZXcpIHsKLSAgICAg
ICAgW3Jlc3VsdCBhZGRPYmplY3Q6ZG9jVmlld107Ci0gICAgfQotICAgIFtfcHJpdmF0ZS0+Y2hp
bGRyZW4gbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF9hY2N1bXVsYXRlRG9j
dW1lbnRWaWV3czopIHdpdGhPYmplY3Q6cmVzdWx0XTsKLX0KLQogLSAoTlNBcnJheSAqKV9kb2N1
bWVudFZpZXdzCiB7CiAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJh
eSBhcnJheV07Ci0gICAgW3NlbGYgX2FjY3VtdWxhdGVEb2N1bWVudFZpZXdzOnJlc3VsdF07Cisg
ICAgZm9yIChXZWJGcmFtZSAqZnJhbWUgPSBzZWxmOyBmcmFtZTsgZnJhbWUgPSBbZnJhbWUgX3Ry
YXZlcnNlTmV4dEZyYW1lU3RheVdpdGhpbjpzZWxmXSkgeworICAgICAgICBpZCBkb2NWaWV3ID0g
W1tmcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107CisgICAgICAgIGlmIChkb2NWaWV3KQor
ICAgICAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6ZG9jVmlld107CisgICAgfQorICAgICAgICAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAtICh2b2lkKV91cGRhdGVEcmF3c0JhY2tncm91bmQK
IHsKICAgICBCT09MIGRyYXdzQmFja2dyb3VuZCA9IFtbc2VsZiB3ZWJWaWV3XSBkcmF3c0JhY2tn
cm91bmRdOwotICAgIGlmICghZHJhd3NCYWNrZ3JvdW5kKQotICAgICAgICBbW1tzZWxmIGZyYW1l
Vmlld10gX3Njcm9sbFZpZXddIHNldERyYXdzQmFja2dyb3VuZDpOT107Ci0gICAgaWQgZG9jdW1l
bnRWaWV3ID0gW1tzZWxmIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKLSAgICBpZiAoW2RvY3Vt
ZW50VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldERyYXdzQmFja2dyb3VuZDop
XSkKLSAgICAgICAgW2RvY3VtZW50VmlldyBzZXREcmF3c0JhY2tncm91bmQ6ZHJhd3NCYWNrZ3Jv
dW5kXTsKLSAgICBbW3NlbGYgX2JyaWRnZV0gc2V0RHJhd3NCYWNrZ3JvdW5kOmRyYXdzQmFja2dy
b3VuZF07Ci0gICAgW19wcml2YXRlLT5jaGlsZHJlbiBtYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3Rv
cjpAc2VsZWN0b3IoX3VwZGF0ZURyYXdzQmFja2dyb3VuZCldOworCisgICAgZm9yIChXZWJGcmFt
ZSAqZnJhbWUgPSBzZWxmOyBmcmFtZTsgZnJhbWUgPSBbZnJhbWUgX3RyYXZlcnNlTmV4dEZyYW1l
U3RheVdpdGhpbjpzZWxmXSkgeworICAgICAgICAvLyBGSVhNRTogd2h5IG5vdCB0aGUgb3RoZXIg
d2F5IGZvciBzY3JvbGwgdmlldz8KKyAgICAgICAgaWYgKCFkcmF3c0JhY2tncm91bmQpCisgICAg
ICAgICAgICBbW1tmcmFtZSBmcmFtZVZpZXddIF9zY3JvbGxWaWV3XSBzZXREcmF3c0JhY2tncm91
bmQ6Tk9dOworICAgICAgICBpZCBkb2N1bWVudFZpZXcgPSBbW2ZyYW1lIGZyYW1lVmlld10gZG9j
dW1lbnRWaWV3XTsKKyAgICAgICAgaWYgKFtkb2N1bWVudFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihzZXREcmF3c0JhY2tncm91bmQ6KV0pCisgICAgICAgICAgICBbZG9jdW1lbnRW
aWV3IHNldERyYXdzQmFja2dyb3VuZDpkcmF3c0JhY2tncm91bmRdOworICAgICAgICBbW2ZyYW1l
IF9icmlkZ2VdIHNldERyYXdzQmFja2dyb3VuZDpkcmF3c0JhY2tncm91bmRdOworICAgIH0KIH0K
IAogLSAodm9pZClfc2V0SW50ZXJuYWxMb2FkRGVsZWdhdGU6KGlkKWludGVybmFsTG9hZERlbGVn
YXRlCkBAIC0yNzYxLDggKzI3ODksOCBAQCBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgX3RpbWVPZkxh
c3RDb21wbGV0CiAKIC0gKHZvaWQpX3VubWFya0FsbE1pc3NwZWxsaW5ncwogewotICAgIFtbc2Vs
ZiBfYnJpZGdlXSB1bm1hcmtBbGxNaXNzcGVsbGluZ3NdOwotICAgIFtfcHJpdmF0ZS0+Y2hpbGRy
ZW4gbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF91bm1hcmtBbGxNaXNzcGVs
bGluZ3MpXTsKKyAgICBmb3IgKFdlYkZyYW1lICpmcmFtZSA9IHNlbGY7IGZyYW1lOyBmcmFtZSA9
IFtmcmFtZSBfdHJhdmVyc2VOZXh0RnJhbWVTdGF5V2l0aGluOnNlbGZdKQorICAgICAgICBbW2Zy
YW1lIF9icmlkZ2VdIHVubWFya0FsbE1pc3NwZWxsaW5nc107CiB9CiAKIC0gKHZvaWQpX2RpZEZp
cnN0TGF5b3V0CkBAIC0yODM1LDI1ICsyODYzLDIwIEBAIHN0YXRpYyBDRkFic29sdXRlVGltZSBf
dGltZU9mTGFzdENvbXBsZXQKIH0KIAogI2lmbmRlZiBOREVCVUcKLS0gKHZvaWQpX2FjY3VtdWxh
dGVGcmFtZXNXaXRoU2VsZWN0aW9uOihOU011dGFibGVBcnJheSAqKWZyYW1lc1dpdGhTZWxlY3Rp
b24KLXsKLSAgICBpZiAoW3NlbGYgX2hhc1NlbGVjdGlvbl0pCi0gICAgICAgIFtmcmFtZXNXaXRo
U2VsZWN0aW9uIGFkZE9iamVjdDpzZWxmXTsKLSAgICAKLSAgICBOU0FycmF5ICpmcmFtZXMgPSBb
c2VsZiBfaW50ZXJuYWxDaGlsZEZyYW1lc107Ci0gICAgaW50IGk7Ci0gICAgaW50IGNvdW50ID0g
W2ZyYW1lcyBjb3VudF07Ci0gICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAg
ICAgW1tmcmFtZXMgb2JqZWN0QXRJbmRleDppXSBfYWNjdW11bGF0ZUZyYW1lc1dpdGhTZWxlY3Rp
b246ZnJhbWVzV2l0aFNlbGVjdGlvbl07Ci0gICAgfQotfQogCiAtIChCT09MKV9hdE1vc3RPbmVG
cmFtZUhhc1NlbGVjdGlvbjsKIHsKICAgICAvLyBGSVhNRTogNDE4NjA1MCBpcyBvbmUga25vd24g
Y2FzZSB0aGF0IG1ha2VzIHRoaXMgZGVidWcgY2hlY2sgZmFpbAotICAgIE5TTXV0YWJsZUFycmF5
ICpmcmFtZXNXaXRoU2VsZWN0aW9uID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICBbc2Vs
ZiBfYWNjdW11bGF0ZUZyYW1lc1dpdGhTZWxlY3Rpb246ZnJhbWVzV2l0aFNlbGVjdGlvbl07Ci0g
ICAgcmV0dXJuIFtmcmFtZXNXaXRoU2VsZWN0aW9uIGNvdW50XSA8PSAxOworICAgIEJPT0wgZm91
bmQgPSBOTzsKKyAgICBmb3IgKFdlYkZyYW1lICpmcmFtZSA9IHNlbGY7IGZyYW1lOyBmcmFtZSA9
IFtmcmFtZSBfdHJhdmVyc2VOZXh0RnJhbWVTdGF5V2l0aGluOnNlbGZdKSB7CisgICAgICAgIGlm
IChbZnJhbWUgX2hhc1NlbGVjdGlvbl0pIHsKKyAgICAgICAgICAgIGlmIChmb3VuZCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gTk87CisgICAgICAgICAgICBmb3VuZCA9IFlFUzsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBZRVM7CiB9CiAjZW5kaWYKIApAQCAtMjg2MSwxOCArMjg4
NCwxMCBAQCBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgX3RpbWVPZkxhc3RDb21wbGV0CiB7CiAgICAg
QVNTRVJUKFtzZWxmIF9hdE1vc3RPbmVGcmFtZUhhc1NlbGVjdGlvbl0pOwogCi0gICAgaWYgKFtz
ZWxmIF9oYXNTZWxlY3Rpb25dKQotICAgICAgICByZXR1cm4gc2VsZjsKLSAgICAKLSAgICBOU0Fy
cmF5ICpmcmFtZXMgPSBbc2VsZiBfaW50ZXJuYWxDaGlsZEZyYW1lc107Ci0gICAgaW50IGk7Ci0g
ICAgaW50IGNvdW50ID0gW2ZyYW1lcyBjb3VudF07Ci0gICAgZm9yIChpID0gMDsgaSA8IGNvdW50
OyBpKyspIHsKLSAgICAgICAgV2ViRnJhbWUgKmZyYW1lV2l0aFNlbGVjdGlvbiA9IFtbZnJhbWVz
IG9iamVjdEF0SW5kZXg6aV0gX2ZpbmRGcmFtZVdpdGhTZWxlY3Rpb25dOwotICAgICAgICBpZiAo
ZnJhbWVXaXRoU2VsZWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1lV2l0aFNlbGVjdGlv
bjsKLSAgICB9Ci0gICAgCisgICAgZm9yIChXZWJGcmFtZSAqZnJhbWUgPSBzZWxmOyBmcmFtZTsg
ZnJhbWUgPSBbZnJhbWUgX3RyYXZlcnNlTmV4dEZyYW1lU3RheVdpdGhpbjpzZWxmXSkKKyAgICAg
ICAgaWYgKFtmcmFtZSBfaGFzU2VsZWN0aW9uXSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZTsK
KwogICAgIHJldHVybiBuaWw7CiB9CiAKQEAgLTI4OTEsMzAgKzI5MDYsMjUgQEAgc3RhdGljIENG
QWJzb2x1dGVUaW1lIF90aW1lT2ZMYXN0Q29tcGxldAogCiAtICh2b2lkKV9zdG9wTG9hZGluZ1N1
YmZyYW1lcwogewotICAgIFtbc2VsZiAgY2hpbGRGcmFtZXNdIG1ha2VPYmplY3RzUGVyZm9ybVNl
bGVjdG9yOkBzZWxlY3RvcihzdG9wTG9hZGluZyldOworICAgIFtbc2VsZiBjaGlsZEZyYW1lc10g
bWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHN0b3BMb2FkaW5nKV07CiB9CiAK
IC0gKEJPT0wpX3N1YmZyYW1lSXNMb2FkaW5nCiB7CiAgICAgLy8gUHV0IGluIHRoZSBhdXRvLXJl
bGVhc2UgcG9vbCBiZWNhdXNlIGl0J3MgY29tbW9uIHRvIGNhbGwgdGhpcyBmcm9tIGEgcnVuIGxv
b3Agc291cmNlLAogICAgIC8vIGFuZCB0aGVuIHRoZSBlbnRpcmUgbGlzdCBvZiBmcmFtZXMgbGFz
dHMgdW50aWwgdGhlIG5leHQgYXV0b3JlbGVhc2UuCi0gICAgLy8gRklYTUU6IGlzIHRoaXMgcmVh
bGx5IHN0aWxsIHRydWU/IHdlIHVzZSBfaW50ZXJuYWxDaGlsZEZyYW1lcyBub3cgd2hpY2ggZG9l
cyBub3QKLSAgICAvLyBtYWtlIGEgY29weS4KKyAgICAvLyBGSVhNRTogaXMgdGhpcyByZWFsbHkg
c3RpbGwgdHJ1ZT8gd2UgdXNlIF9maXJzdENoaWxkRnJhbWUvX25leHRTaWJsaW5nRnJhbWUgbm93
IAorICAgIC8vIHdoaWNoIGRvZXMgbm90IG1ha2UgYSBjb3B5LgogICAgIE5TQXV0b3JlbGVhc2VQ
b29sICpwb29sID0gW05TQXV0b3JlbGVhc2VQb29sIG5ld107CiAKLSAgICAvLyBJdCdzIE9LIHRv
IHVzZSB0aGUgaW50ZXJuYWwgdmVyc2lvbiBvZiBnZXR0aW5nIHRoZSBjaGlsZAotICAgIC8vIGZy
YW1lcywgc2luY2Ugbm90aGluZyB3ZSBkbyBoZXJlIGNhbiBwb3NzaWJseSBjaGFuZ2UgdGhlIHNl
dCBvZgotICAgIC8vIGZyYW1lcy4KLSAgICBOU0VudW1lcmF0b3IgKmUgPSBbW3NlbGYgX2ludGVy
bmFsQ2hpbGRGcmFtZXNdIG9iamVjdEVudW1lcmF0b3JdOwotICAgIFdlYkZyYW1lICpjaGlsZEZy
YW1lOwotICAgIHdoaWxlICgoY2hpbGRGcmFtZSA9IFtlIG5leHRPYmplY3RdKSkgewotICAgICAg
ICBpZiAoW1tjaGlsZEZyYW1lIGRhdGFTb3VyY2VdIGlzTG9hZGluZ10gfHwgW1tjaGlsZEZyYW1l
IHByb3Zpc2lvbmFsRGF0YVNvdXJjZV0gaXNMb2FkaW5nXSkKKyAgICBXZWJGcmFtZSAqZnJhbWU7
CisgICAgZm9yIChmcmFtZSA9IFtzZWxmIF9maXJzdENoaWxkRnJhbWVdOyBmcmFtZTsgZnJhbWUg
PSBbZnJhbWUgX25leHRTaWJsaW5nRnJhbWVdKQorICAgICAgICBpZiAoW1tmcmFtZSBkYXRhU291
cmNlXSBpc0xvYWRpbmddIHx8IFtbZnJhbWUgcHJvdmlzaW9uYWxEYXRhU291cmNlXSBpc0xvYWRp
bmddKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQogCiAgICAgW3Bvb2wgZHJhaW5dOwogICAg
IAotICAgIHJldHVybiBjaGlsZEZyYW1lICE9IG5pbDsKKyAgICByZXR1cm4gZnJhbWUgIT0gbmls
OwogfQogCiBAZW5kCkBAIC0zMjE3LDI2ICszMjI3LDExIEBAIHN0YXRpYyBDRkFic29sdXRlVGlt
ZSBfdGltZU9mTGFzdENvbXBsZXQKIAogLSAoV2ViRnJhbWUgKilfZGVzY2VuZGFudEZyYW1lTmFt
ZWQ6KE5TU3RyaW5nICopbmFtZSBzb3VyY2VGcmFtZTooV2ViRnJhbWUgKilzb3VyY2UKIHsKLSAg
ICAvLyBmb3Igc2VjdXJpdHkgcmVhc29ucywgd2UgZG8gbm90IHdhbnQgdG8gZXZlbiBtYWtlIGZy
YW1lcyB2aXNpYmxlIHRvIGZyYW1lcyB0aGF0Ci0gICAgLy8gY2FuJ3QgYWNjZXNzIHRoZW0gCi0g
ICAgaWYgKFtbc2VsZiBuYW1lXSBpc0VxdWFsVG9TdHJpbmc6IG5hbWVdICYmIFtzZWxmIF9zaG91
bGRBbGxvd0FjY2Vzc0Zyb206c291cmNlXSkgewotICAgICAgICByZXR1cm4gc2VsZjsKLSAgICB9
Ci0KLSAgICAvLyBJdCdzIE9LIHRvIHVzZSB0aGUgaW50ZXJuYWwgdmVyc2lvbiBvZiBnZXR0aW5n
IHRoZSBjaGlsZAotICAgIC8vIGZyYW1lcywgc2luY2Ugd2Uga25vdyB0aGlzIG1ldGhvZCB3b24n
dCBjaGFuZ2UgdGhlIHNldCBvZgotICAgIC8vIGZyYW1lcwotICAgIE5TQXJyYXkgKmNoaWxkcmVu
ID0gW3NlbGYgX2ludGVybmFsQ2hpbGRGcmFtZXNdOwotICAgIFdlYkZyYW1lICpmcmFtZTsKLSAg
ICB1bnNpZ25lZCBpOwotCi0gICAgZm9yIChpID0gMDsgaSA8IFtjaGlsZHJlbiBjb3VudF07IGkr
Kyl7Ci0gICAgICAgIGZyYW1lID0gW2NoaWxkcmVuIG9iamVjdEF0SW5kZXg6IGldOwotICAgICAg
ICBmcmFtZSA9IFtmcmFtZSBfZGVzY2VuZGFudEZyYW1lTmFtZWQ6bmFtZSBzb3VyY2VGcmFtZTpz
b3VyY2VdOwotICAgICAgICBpZiAoZnJhbWUpewotICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwot
ICAgICAgICB9Ci0gICAgfQorICAgIGZvciAoV2ViRnJhbWUgKmZyYW1lID0gc2VsZjsgZnJhbWU7
IGZyYW1lID0gW2ZyYW1lIF90cmF2ZXJzZU5leHRGcmFtZVN0YXlXaXRoaW46c2VsZl0pCisgICAg
ICAgIC8vIGZvciBzZWN1cml0eSByZWFzb25zLCB3ZSBkbyBub3Qgd2FudCB0byBldmVuIG1ha2Ug
ZnJhbWVzIHZpc2libGUgdG8gZnJhbWVzIHRoYXQKKyAgICAgICAgLy8gY2FuJ3QgYWNjZXNzIHRo
ZW0gCisgICAgICAgIGlmIChbW2ZyYW1lIG5hbWVdIGlzRXF1YWxUb1N0cmluZzpuYW1lXSAmJiBb
ZnJhbWUgX3Nob3VsZEFsbG93QWNjZXNzRnJvbTpzb3VyY2VdKQorICAgICAgICAgICAgcmV0dXJu
IHNlbGY7CiAKICAgICByZXR1cm4gbmlsOwogfQo=
</data>
<flag name="review"
          id="1132"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>