<?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>32095</bug_id>
          
          <creation_ts>2009-12-02 16:37:30 -0800</creation_ts>
          <short_desc>Chromium WebKit API needs a wrapper for WebCore::RegularExpression</short_desc>
          <delta_ts>2009-12-04 16:24:40 -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>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</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>0</everconfirmed>
          <reporter name="James Hawkins">jhawkins</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>168212</commentid>
    <comment_count>0</comment_count>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2009-12-02 16:37:30 -0800</bug_when>
    <thetext>Access to WebCore::RegularExpression is needed by the Chromium autofill code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168214</commentid>
    <comment_count>1</comment_count>
      <attachid>44194</attachid>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2009-12-02 16:40:55 -0800</bug_when>
    <thetext>Created attachment 44194
Implementation of WebRegularExpression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168267</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-02 21:13:22 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44194 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168295</commentid>
    <comment_count>3</comment_count>
      <attachid>44194</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-12-02 22:24:11 -0800</bug_when>
    <thetext>Comment on attachment 44194
Implementation of WebRegularExpression

&gt; Index: WebKit/chromium/public/WebRegularExpression.h
...
&gt; +class WebRegularExpression {
&gt; +public:
&gt; +    WebRegularExpression(const WebString&amp; pattern, WebStringCaseSensitivity caseSensitivity);
&gt; +    virtual ~WebRegularExpression();
&gt; +
&gt; +    int match(const WebString&amp; str, int startFrom = 0, int* matchLength = 0) const;
&gt; +
&gt; +private:
&gt; +    WebRegularExpressionPrivate* m_private;
&gt; +};

If an instance of this class is copied, it&apos;ll lead to a crash (double free).
Make this class extend from WebNonCopyable.

No need to make the destructor virtual since there are no other virtual
methods on this class.  Adding a virtual destructor when unnecessary
just adds the bloat of an implicit vtable pointer for no benefit.

The match method should be prefixed with WEBKIT_API to indicate that it
is an exported function.

You haven&apos;t included the definition of WebStringCaseSensitivity in this
patch.  I think it&apos;d be better to call it WebTextCaseSensitivity.  (We
have enums like WebTextDirection and WebTextAffinity already, so the
WebText prefix is common already.)

nit: It is webkit style to not name parameters when the parameter name
is not informative, so you should drop the &quot;str&quot; and the &quot;caseSensitivity&quot;
parameters in the header.


&gt; Index: WebKit/chromium/src/WebRegularExpression.cpp

Please add a &apos;using namespace WebCore;&apos; line at the top so that you can
drop all of the WebCore:: prefixes.


&gt; +    WebCore::TextCaseSensitivity sensitivity =
&gt; +        static_cast&lt;WebCore::TextCaseSensitivity&gt;(caseSensitivity);

To ensure that this static_cast doesn&apos;t become invalid, it is important to
update AssertMatchingEnums.cpp.


&gt; +    WebCore::RegularExpression* re = static_cast&lt;WebCore::RegularExpression*&gt;(m_private);

This static_cast is unnecessary since m_private &quot;is a&quot; WebCore::RegularExpression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168296</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-12-02 22:25:10 -0800</bug_when>
    <thetext>The constructor and destructor also need to be exported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168567</commentid>
    <comment_count>5</comment_count>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2009-12-03 15:19:12 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 44194 [details])
&gt; &gt; Index: WebKit/chromium/public/WebRegularExpression.h
&gt; ...
&gt; &gt; +class WebRegularExpression {
&gt; &gt; +public:
&gt; &gt; +    WebRegularExpression(const WebString&amp; pattern, WebStringCaseSensitivity caseSensitivity);
&gt; &gt; +    virtual ~WebRegularExpression();
&gt; &gt; +
&gt; &gt; +    int match(const WebString&amp; str, int startFrom = 0, int* matchLength = 0) const;
&gt; &gt; +
&gt; &gt; +private:
&gt; &gt; +    WebRegularExpressionPrivate* m_private;
&gt; &gt; +};
&gt; 
&gt; If an instance of this class is copied, it&apos;ll lead to a crash (double free).
&gt; Make this class extend from WebNonCopyable.
&gt; 

Done.

&gt; No need to make the destructor virtual since there are no other virtual
&gt; methods on this class.  Adding a virtual destructor when unnecessary
&gt; just adds the bloat of an implicit vtable pointer for no benefit.
&gt; 

Done.

&gt; The match method should be prefixed with WEBKIT_API to indicate that it
&gt; is an exported function.
&gt; 

Done.

&gt; You haven&apos;t included the definition of WebStringCaseSensitivity in this
&gt; patch.  I think it&apos;d be better to call it WebTextCaseSensitivity.  (We
&gt; have enums like WebTextDirection and WebTextAffinity already, so the
&gt; WebText prefix is common already.)
&gt; 

Done.  I added the WebTextCaseSensitivity enum definition to WebString.h instead of creating a new file because this matches the definition of TextCaseSensitivity in StringImpl.h.  I can make a new file if you think that&apos;s a better option.

&gt; nit: It is webkit style to not name parameters when the parameter name
&gt; is not informative, so you should drop the &quot;str&quot; and the &quot;caseSensitivity&quot;
&gt; parameters in the header.
&gt; 

Done.

&gt; 
&gt; &gt; Index: WebKit/chromium/src/WebRegularExpression.cpp
&gt; 
&gt; Please add a &apos;using namespace WebCore;&apos; line at the top so that you can
&gt; drop all of the WebCore:: prefixes.
&gt; 

Done.

&gt; 
&gt; &gt; +    WebCore::TextCaseSensitivity sensitivity =
&gt; &gt; +        static_cast&lt;WebCore::TextCaseSensitivity&gt;(caseSensitivity);
&gt; 
&gt; To ensure that this static_cast doesn&apos;t become invalid, it is important to
&gt; update AssertMatchingEnums.cpp.
&gt; 

Done.

&gt; 
&gt; &gt; +    WebCore::RegularExpression* re = static_cast&lt;WebCore::RegularExpression*&gt;(m_private);
&gt; 
&gt; This static_cast is unnecessary since m_private &quot;is a&quot;
&gt; WebCore::RegularExpression.

Done.

&gt; The constructor and destructor also need to be exported.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168568</commentid>
    <comment_count>6</comment_count>
      <attachid>44271</attachid>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2009-12-03 15:19:54 -0800</bug_when>
    <thetext>Created attachment 44271
try2: Implementation of WebRegularExpression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168575</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-03 15:25:09 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44271 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168683</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-12-03 23:55:00 -0800</bug_when>
    <thetext>&gt; &gt; You haven&apos;t included the definition of WebStringCaseSensitivity in this
&gt; &gt; patch.  I think it&apos;d be better to call it WebTextCaseSensitivity.  (We
&gt; &gt; have enums like WebTextDirection and WebTextAffinity already, so the
&gt; &gt; WebText prefix is common already.)
&gt; &gt; 
&gt; 
&gt; Done.  I added the WebTextCaseSensitivity enum definition to WebString.h
&gt; instead of creating a new file because this matches the definition of
&gt; TextCaseSensitivity in StringImpl.h.  I can make a new file if you think that&apos;s
&gt; a better option.

Sorry, I should have made that clear.  Every top-level type in the WebKit API should have its own header file.  You should see that that rule is applied universally throughout the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168685</commentid>
    <comment_count>9</comment_count>
      <attachid>44271</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-12-03 23:59:08 -0800</bug_when>
    <thetext>Comment on attachment 44271
try2: Implementation of WebRegularExpression

&gt; Index: WebKit/chromium/public/WebRegularExpression.h
...
&gt; +    WebRegularExpression(const WebString&amp; pattern, WebTextCaseSensitivity);
&gt; +    ~WebRegularExpression();

^^^ These need WEBKIT_API too.

Any public function that is not inline needs to be prefixed with WEBKIT_API.


&gt; Index: WebKit/chromium/src/AssertMatchingEnums.cpp
...
&gt; +COMPILE_ASSERT_MATCHING_ENUM(WebTextCaseSensitive, TextCaseSensitive);
&gt; +COMPILE_ASSERT_MATCHING_ENUM(WebTextCaseInsensitive, TextCaseInsensitive);
&gt; +
&gt;  COMPILE_ASSERT_MATCHING_ENUM(WebTextAffinityUpstream, UPSTREAM);
&gt;  COMPILE_ASSERT_MATCHING_ENUM(WebTextAffinityDownstream, DOWNSTREAM);

nit: please insert the new enum block alphabetically (after WebTextAffinity*)
to help keep this file somewhat organized.


&gt; Index: WebKit/chromium/src/WebRegularExpression.cpp
...
&gt; +WebRegularExpression::~WebRegularExpression()
&gt; +{
&gt; +    delete static_cast&lt;WebRegularExpressionPrivate*&gt;(m_private);
&gt; +}

^^^ that static_cast is unnecessary since m_private is already a
pointer to WebRegularExpressionPrivate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168909</commentid>
    <comment_count>10</comment_count>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2009-12-04 13:34:23 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 44271 [details])
&gt; &gt; Index: WebKit/chromium/public/WebRegularExpression.h
&gt; ...
&gt; &gt; +    WebRegularExpression(const WebString&amp; pattern, WebTextCaseSensitivity);
&gt; &gt; +    ~WebRegularExpression();
&gt; 
&gt; ^^^ These need WEBKIT_API too.
&gt; 
&gt; Any public function that is not inline needs to be prefixed with WEBKIT_API.
&gt; 

Done.

&gt; 
&gt; &gt; Index: WebKit/chromium/src/AssertMatchingEnums.cpp
&gt; ...
&gt; &gt; +COMPILE_ASSERT_MATCHING_ENUM(WebTextCaseSensitive, TextCaseSensitive);
&gt; &gt; +COMPILE_ASSERT_MATCHING_ENUM(WebTextCaseInsensitive, TextCaseInsensitive);
&gt; &gt; +
&gt; &gt;  COMPILE_ASSERT_MATCHING_ENUM(WebTextAffinityUpstream, UPSTREAM);
&gt; &gt;  COMPILE_ASSERT_MATCHING_ENUM(WebTextAffinityDownstream, DOWNSTREAM);
&gt; 
&gt; nit: please insert the new enum block alphabetically (after WebTextAffinity*)
&gt; to help keep this file somewhat organized.
&gt; 

Done.

&gt; 
&gt; &gt; Index: WebKit/chromium/src/WebRegularExpression.cpp
&gt; ...
&gt; &gt; +WebRegularExpression::~WebRegularExpression()
&gt; &gt; +{
&gt; &gt; +    delete static_cast&lt;WebRegularExpressionPrivate*&gt;(m_private);
&gt; &gt; +}
&gt; 
&gt; ^^^ that static_cast is unnecessary since m_private is already a
&gt; pointer to WebRegularExpressionPrivate.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168911</commentid>
    <comment_count>11</comment_count>
      <attachid>44330</attachid>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2009-12-04 13:34:56 -0800</bug_when>
    <thetext>Created attachment 44330
try3: Implementation of WebRegularExpression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168912</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-04 13:38:09 -0800</bug_when>
    <thetext>Attachment 44330 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/src/WebRegularExpression.cpp:32:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
WebKit/chromium/src/WebRegularExpression.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168913</commentid>
    <comment_count>13</comment_count>
      <attachid>44331</attachid>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2009-12-04 13:42:03 -0800</bug_when>
    <thetext>Created attachment 44331
try4: Implementation of WebRegularExpression

Fixed header order oops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168914</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-04 13:43:45 -0800</bug_when>
    <thetext>Attachment 44331 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/src/WebRegularExpression.cpp:32:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
WebKit/chromium/src/WebRegularExpression.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168916</commentid>
    <comment_count>15</comment_count>
      <attachid>44332</attachid>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2009-12-04 13:43:55 -0800</bug_when>
    <thetext>Created attachment 44332
try5: Implementation of WebRegularExpression

Gah, actually modified the correct version of the file this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168918</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-04 13:49:20 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44332 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168975</commentid>
    <comment_count>17</comment_count>
      <attachid>44332</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-04 16:24:35 -0800</bug_when>
    <thetext>Comment on attachment 44332
try5: Implementation of WebRegularExpression

Clearing flags on attachment: 44332

Committed r51720: &lt;http://trac.webkit.org/changeset/51720&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168976</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-04 16:24:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44194</attachid>
            <date>2009-12-02 16:40:55 -0800</date>
            <delta_ts>2009-12-03 15:19:54 -0800</delta_ts>
            <desc>Implementation of WebRegularExpression</desc>
            <filename>wre.diff</filename>
            <type>text/plain</type>
            <size>7226</size>
            <attacher name="James Hawkins">jhawkins</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTE2MTcpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMTItMDIgIEphbWVz
IEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMyMDk1CisgICAgICAgIEltcGxlbWVudCBXZWJSZWd1bGFyRXhwcmVzc2lvbiwg
YSBXZWJLaXQgQVBJIGZvciBhY2Nlc3NpbmcKKyAgICAgICAgV2ViQ29yZTo6UmVndWxhckV4cHJl
c3Npb24uCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJSZWd1
bGFyRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViUmVndWxhckV4cHJlc3Np
b24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVndWxhckV4cHJlc3Npb246Oldl
YlJlZ3VsYXJFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVndWxhckV4cHJlc3Np
b246On5XZWJSZWd1bGFyRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlZ3VsYXJF
eHByZXNzaW9uOjptYXRjaCk6CisKIDIwMDktMTItMDIgIEV2YW4gU3RhZGUgIDxlc3RhZGVAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCShyZXZpc2lvbiA1MTYxNikKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDcgQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlBvcHVwTWVudUluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJSYW5n
ZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlJlY3QuaCcsCisgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlJ1bnRpbWVGZWF0dXJlcy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNj
cmVlbkluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTY3JpcHRDb250cm9sbGVy
LmgnLApAQCAtMjczLDYgKzI3NCw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQb3B1cE1l
bnVJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViUmFuZ2UuY3BwJywKKyAgICAgICAgICAgICAgICAnc3Jj
L1dlYlJlZ3VsYXJFeHByZXNzaW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJSdW50
aW1lRmVhdHVyZXMuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcmlwdENvbnRyb2xs
ZXIuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5jcHAn
LApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24u
aAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVndWxhckV4cHJl
c3Npb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUmVndWxhckV4
cHJlc3Npb25faAorI2RlZmluZSBXZWJSZWd1bGFyRXhwcmVzc2lvbl9oCisKKyNpbmNsdWRlICJX
ZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlJlZ3VsYXJFeHBy
ZXNzaW9uUHJpdmF0ZTsKKworY2xhc3MgV2ViUmVndWxhckV4cHJlc3Npb24geworcHVibGljOgor
ICAgIFdlYlJlZ3VsYXJFeHByZXNzaW9uKGNvbnN0IFdlYlN0cmluZyYgcGF0dGVybiwgV2ViU3Ry
aW5nQ2FzZVNlbnNpdGl2aXR5IGNhc2VTZW5zaXRpdml0eSk7CisgICAgdmlydHVhbCB+V2ViUmVn
dWxhckV4cHJlc3Npb24oKTsKKworICAgIGludCBtYXRjaChjb25zdCBXZWJTdHJpbmcmIHN0ciwg
aW50IHN0YXJ0RnJvbSA9IDAsIGludCogbWF0Y2hMZW5ndGggPSAwKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBXZWJSZWd1bGFyRXhwcmVzc2lvblByaXZhdGUqIG1fcHJpdmF0ZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24uaApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJl
Z3VsYXJFeHByZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlJlZ3VsYXJFeHByZXNzaW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUmVndWxhckV4cHJlc3Npb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlJlZ3VsYXJFeHByZXNzaW9uLmgiCisK
KyNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViUmVndWxhckV4cHJlc3Npb25Qcml2YXRlIDogcHVibGljIFdlYkNvcmU6OlJlZ3Vs
YXJFeHByZXNzaW9uIHsKK307CisKK1dlYlJlZ3VsYXJFeHByZXNzaW9uOjpXZWJSZWd1bGFyRXhw
cmVzc2lvbihjb25zdCBXZWJTdHJpbmcmIHBhdHRlcm4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViU3RyaW5nQ2FzZVNlbnNpdGl2aXR5IGNhc2VTZW5zaXRp
dml0eSkKK3sKKyAgICBXZWJDb3JlOjpUZXh0Q2FzZVNlbnNpdGl2aXR5IHNlbnNpdGl2aXR5ID0K
KyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dENhc2VTZW5zaXRpdml0eT4oY2FzZVNl
bnNpdGl2aXR5KTsKKyAgICBXZWJDb3JlOjpSZWd1bGFyRXhwcmVzc2lvbiogcmUgPSBuZXcgV2Vi
Q29yZTo6UmVndWxhckV4cHJlc3Npb24ocGF0dGVybiwgc2Vuc2l0aXZpdHkpOworICAgIG1fcHJp
dmF0ZSA9IHN0YXRpY19jYXN0PFdlYlJlZ3VsYXJFeHByZXNzaW9uUHJpdmF0ZSo+KHJlKTsKK30K
KworV2ViUmVndWxhckV4cHJlc3Npb246On5XZWJSZWd1bGFyRXhwcmVzc2lvbigpCit7CisgICAg
ZGVsZXRlIHN0YXRpY19jYXN0PFdlYlJlZ3VsYXJFeHByZXNzaW9uUHJpdmF0ZSo+KG1fcHJpdmF0
ZSk7Cit9CisKK2ludCBXZWJSZWd1bGFyRXhwcmVzc2lvbjo6bWF0Y2goY29uc3QgV2ViU3RyaW5n
JiBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydEZyb20sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWF0Y2hMZW5ndGgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFdlYkNvcmU6
OlJlZ3VsYXJFeHByZXNzaW9uKiByZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlZ3VsYXJFeHBy
ZXNzaW9uKj4obV9wcml2YXRlKTsKKyAgICByZXR1cm4gcmUtPm1hdGNoKHN0ciwgc3RhcnRGcm9t
LCBtYXRjaExlbmd0aCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="25992"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44271</attachid>
            <date>2009-12-03 15:19:54 -0800</date>
            <delta_ts>2009-12-04 13:34:56 -0800</delta_ts>
            <desc>try2: Implementation of WebRegularExpression</desc>
            <filename>wre2.diff</filename>
            <type>text/plain</type>
            <size>8902</size>
            <attacher name="James Hawkins">jhawkins</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTE2NjQpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMTItMDMgIEphbWVz
IEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMyMDk1CisgICAgICAgIEltcGxlbWVudCBXZWJSZWd1bGFyRXhwcmVzc2lvbiwg
YSBXZWJLaXQgQVBJIGZvciBhY2Nlc3NpbmcKKyAgICAgICAgV2ViQ29yZTo6UmVndWxhckV4cHJl
c3Npb24uCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJSZWd1
bGFyRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViU3RyaW5nLmg6Cisg
ICAgICAgIChXZWJLaXQ6Oik6CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
OgorICAgICAgICAqIHNyYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZWd1bGFyRXhwcmVzc2lvbjo6V2ViUmVndWxhckV4cHJlc3Npb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZWd1bGFyRXhwcmVzc2lvbjo6fldlYlJlZ3VsYXJFeHByZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVndWxhckV4cHJlc3Npb246Om1hdGNoKToKKwog
MjAwOS0xMi0wMyAgSm9uYXRoYW4gRGl4b24gIDxqb3RoQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNp
b24gNTE2MTYpCisrKyBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpA
QCAtMTQxLDYgKzE0MSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJQb3B1cE1lbnVJ
bmZvLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUmFuZ2UuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJSZWN0LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUmVn
dWxhckV4cHJlc3Npb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJSdW50aW1lRmVh
dHVyZXMuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViU2NyaXB0Q29udHJvbGxlci5oJywKQEAgLTI3Myw2ICsy
NzQsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViUG9wdXBNZW51SW1wbC5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlJhbmdlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJSZWd1bGFyRXhwcmVz
c2lvbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwJywKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgJKHJldmlzaW9uIDApCisr
KyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJlZ3VsYXJFeHByZXNzaW9uX2gKKyNkZWZp
bmUgV2ViUmVndWxhckV4cHJlc3Npb25faAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlJlZ3VsYXJFeHByZXNzaW9uUHJpdmF0ZTsKKworY2xh
c3MgV2ViUmVndWxhckV4cHJlc3Npb24gOiBwdWJsaWMgV2ViTm9uQ29weWFibGUgeworcHVibGlj
OgorICAgIFdlYlJlZ3VsYXJFeHByZXNzaW9uKGNvbnN0IFdlYlN0cmluZyYgcGF0dGVybiwgV2Vi
VGV4dENhc2VTZW5zaXRpdml0eSk7CisgICAgfldlYlJlZ3VsYXJFeHByZXNzaW9uKCk7CisKKyAg
ICBXRUJLSVRfQVBJIGludCBtYXRjaChjb25zdCBXZWJTdHJpbmcmLCBpbnQgc3RhcnRGcm9tID0g
MCwgaW50KiBtYXRjaExlbmd0aCA9IDApIGNvbnN0OworCitwcml2YXRlOgorICAgIFdlYlJlZ3Vs
YXJFeHByZXNzaW9uUHJpdmF0ZSogbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUK
ICAgKyBMRgoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaAkocmV2aXNpb24gNTE2
MTYpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw2ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ1N0cmluZzsK
IGNsYXNzIFdlYlN0cmluZ1ByaXZhdGU7CiAKK2VudW0gV2ViVGV4dENhc2VTZW5zaXRpdml0eSB7
IFdlYlRleHRDYXNlU2Vuc2l0aXZlLCBXZWJUZXh0Q2FzZUluc2Vuc2l0aXZlIH07CisKIC8vIEEg
VVRGLTE2IHN0cmluZyBjb250YWluZXIuICBJdCBpcyBpbmV4cGVuc2l2ZSB0byBjb3B5IGEgV2Vi
U3RyaW5nCiAvLyBvYmplY3QuCiAvLwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRN
YXRjaGluZ0VudW1zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2Vy
dE1hdGNoaW5nRW51bXMuY3BwCShyZXZpc2lvbiA1MTYxNikKKysrIFdlYktpdC9jaHJvbWl1bS9z
cmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcg
QEAKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKICNpbmNsdWRlICJQYXN0ZWJv
YXJkUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ3Vyc29yLmgiCisjaW5jbHVkZSAiU3Ry
aW5nSW1wbC5oIgogI2luY2x1ZGUgIlRleHRBZmZpbml0eS5oIgogI2luY2x1ZGUgIldlYkFjY2Vz
c2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgpA
QCAtNTAsNiArNTEsNyBAQAogI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUg
IldlYk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmgi
CisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVGV4dEFmZmluaXR5LmgiCiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIApAQCAtMjcwLDUgKzI3Miw4IEBAIENPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViTm90aWZpY2EKIENPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uRGVuaWVkLCBOb3RpZmlj
YXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb25EZW5pZWQpOwogI2VuZGlmCiAKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNlU2Vuc2l0aXZl
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENhc2VJbnNlbnNpdGl2ZSwg
VGV4dENhc2VJbnNlbnNpdGl2ZSk7CisKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
VGV4dEFmZmluaXR5VXBzdHJlYW0sIFVQU1RSRUFNKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViVGV4dEFmZmluaXR5RG93bnN0cmVhbSwgRE9XTlNUUkVBTSk7CkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUmVndWxhckV4cHJlc3Npb24uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlJl
Z3VsYXJFeHByZXNzaW9uLmgiCisKKyNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlJlZ3VsYXJFeHByZXNzaW9uUHJpdmF0ZSA6IHB1YmxpYyBSZWd1bGFyRXhwcmVzc2lvbiB7Cit9
OworCitXZWJSZWd1bGFyRXhwcmVzc2lvbjo6V2ViUmVndWxhckV4cHJlc3Npb24oY29uc3QgV2Vi
U3RyaW5nJiBwYXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYlRleHRDYXNlU2Vuc2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5KQoreworICAgIFRleHRD
YXNlU2Vuc2l0aXZpdHkgc2Vuc2l0aXZpdHkgPSBzdGF0aWNfY2FzdDxUZXh0Q2FzZVNlbnNpdGl2
aXR5PihjYXNlU2Vuc2l0aXZpdHkpOworICAgIFJlZ3VsYXJFeHByZXNzaW9uKiByZSA9IG5ldyBS
ZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLCBzZW5zaXRpdml0eSk7CisgICAgbV9wcml2YXRlID0g
c3RhdGljX2Nhc3Q8V2ViUmVndWxhckV4cHJlc3Npb25Qcml2YXRlKj4ocmUpOworfQorCitXZWJS
ZWd1bGFyRXhwcmVzc2lvbjo6fldlYlJlZ3VsYXJFeHByZXNzaW9uKCkKK3sKKyAgICBkZWxldGUg
c3RhdGljX2Nhc3Q8V2ViUmVndWxhckV4cHJlc3Npb25Qcml2YXRlKj4obV9wcml2YXRlKTsKK30K
KworaW50IFdlYlJlZ3VsYXJFeHByZXNzaW9uOjptYXRjaChjb25zdCBXZWJTdHJpbmcmIHN0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0RnJvbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBtYXRjaExlbmd0aCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+bWF0Y2goc3RyLCBzdGFydEZyb20sIG1hdGNoTGVuZ3RoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="26079"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44330</attachid>
            <date>2009-12-04 13:34:56 -0800</date>
            <delta_ts>2009-12-04 13:42:03 -0800</delta_ts>
            <desc>try3: Implementation of WebRegularExpression</desc>
            <filename>wre3.diff</filename>
            <type>text/plain</type>
            <size>11130</size>
            <attacher name="James Hawkins">jhawkins</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTE3MTIpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMTItMDQgIEphbWVz
IEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMyMDk1CisgICAgICAgIEltcGxlbWVudCBXZWJSZWd1bGFyRXhwcmVzc2lvbiwg
YSBXZWJLaXQgQVBJIGZvciBhY2Nlc3NpbmcKKyAgICAgICAgV2ViQ29yZTo6UmVndWxhckV4cHJl
c3Npb24uCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJSZWd1
bGFyRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViVGV4dENhc2VTZW5z
aXRpdml0eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6KToKKyAgICAgICAgKiBzcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL1dlYlJlZ3VsYXJFeHByZXNzaW9u
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlZ3VsYXJFeHByZXNzaW9uOjpXZWJS
ZWd1bGFyRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlZ3VsYXJFeHByZXNzaW9u
Ojp+V2ViUmVndWxhckV4cHJlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZWd1bGFyRXhw
cmVzc2lvbjo6bWF0Y2gpOgorCiAyMDA5LTEyLTAzICBKb25hdGhhbiBEaXhvbiAgPGpvdGhAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA1MTYxNikKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDcgQEAKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYlBvcHVwTWVudUluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJS
YW5nZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlJlY3QuaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYlJ1bnRpbWVGZWF0dXJlcy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YlNjcmVlbkluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTY3JpcHRDb250cm9s
bGVyLmgnLApAQCAtMTYwLDYgKzE2MSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJT
dG9yYWdlTmFtZXNwYWNlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RyaW5nLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dEFmZmluaXR5LmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlRleHREaXJlY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJVUkwuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxFcnJvci5oJywKQEAgLTI3
Myw2ICsyNzUsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViUG9wdXBNZW51SW1wbC5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlJhbmdlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJSZWd1bGFy
RXhwcmVzc2lvbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUnVudGltZUZlYXR1cmVz
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwJywKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJlZ3VsYXJFeHByZXNzaW9uX2gK
KyNkZWZpbmUgV2ViUmVndWxhckV4cHJlc3Npb25faAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgi
CisjaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2FzZVNlbnNp
dGl2aXR5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJSZWd1bGFyRXhwcmVz
c2lvblByaXZhdGU7CitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNzIFdlYlJlZ3VsYXJFeHByZXNz
aW9uIDogcHVibGljIFdlYk5vbkNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfQVBJIFdl
YlJlZ3VsYXJFeHByZXNzaW9uKGNvbnN0IFdlYlN0cmluZyYgcGF0dGVybiwgV2ViVGV4dENhc2VT
ZW5zaXRpdml0eSk7CisgICAgV0VCS0lUX0FQSSB+V2ViUmVndWxhckV4cHJlc3Npb24oKTsKKwor
ICAgIFdFQktJVF9BUEkgaW50IG1hdGNoKGNvbnN0IFdlYlN0cmluZyYsIGludCBzdGFydEZyb20g
PSAwLCBpbnQqIG1hdGNoTGVuZ3RoID0gMCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViUmVn
dWxhckV4cHJlc3Npb25Qcml2YXRlKiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIExGCgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2FzZVNlbnNp
dGl2aXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2Fz
ZVNlbnNpdGl2aXR5LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlRleHRDYXNlU2Vuc2l0aXZpdHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViVGV4dENhc2VTZW5zaXRpdml0eV9oCisjZGVmaW5lIFdlYlRleHRDYXNlU2Vuc2l0aXZp
dHlfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhlc2UgY29uc3RhbnRzIHNwZWNpZnkg
dGhlIHByZWZlcnJlZCBjYXNlIHNlbnNpdGl2aXR5LgorZW51bSBXZWJUZXh0Q2FzZVNlbnNpdGl2
aXR5IHsKKyAgICBXZWJUZXh0Q2FzZVNlbnNpdGl2ZSwgICAvLyBTdHJpbmcgbWF0Y2hpbmcgaXMg
Y2FzZS1zZW5zaXRpdmUuCisgICAgV2ViVGV4dENhc2VJbnNlbnNpdGl2ZSwgLy8gU3RyaW5nIG1h
dGNoaW5nIGlzIGNhc2UtaW5zZW5zaXRpdmUuCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlRleHRDYXNlU2Vuc2l0aXZpdHkuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAg
ICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5j
cHAJKHJldmlzaW9uIDUxNjE2KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGlu
Z0VudW1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIk5v
dGlmaWNhdGlvblByZXNlbnRlci5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRQcml2YXRlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1DdXJzb3IuaCIKKyNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCiAjaW5j
bHVkZSAiVGV4dEFmZmluaXR5LmgiCiAjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5o
IgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCkBAIC01MSw2ICs1Miw3IEBA
CiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25Q
cmVzZW50ZXIuaCIKICNpbmNsdWRlICJXZWJUZXh0QWZmaW5pdHkuaCIKKyNpbmNsdWRlICJXZWJU
ZXh0Q2FzZVNlbnNpdGl2aXR5LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogI2Rl
ZmluZSBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKHdlYmtpdF9uYW1lLCB3ZWJjb3JlX25h
bWUpIFwKQEAgLTI3MiwzICsyNzQsNiBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
Yk5vdGlmaWNhCiAKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dEFmZmluaXR5
VXBzdHJlYW0sIFVQU1RSRUFNKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4
dEFmZmluaXR5RG93bnN0cmVhbSwgRE9XTlNUUkVBTSk7CisKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNlU2Vuc2l0aXZlKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENhc2VJbnNlbnNpdGl2ZSwgVGV4dENhc2VJ
bnNlbnNpdGl2ZSk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJlZ3VsYXJFeHByZXNz
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJlZ3VsYXJFeHBy
ZXNzaW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUmVndWxh
ckV4cHJlc3Npb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYlJlZ3VsYXJFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV2Vi
U3RyaW5nLmgiCisKKyNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlJlZ3VsYXJF
eHByZXNzaW9uUHJpdmF0ZSA6IHB1YmxpYyBSZWd1bGFyRXhwcmVzc2lvbiB7Cit9OworCitXZWJS
ZWd1bGFyRXhwcmVzc2lvbjo6V2ViUmVndWxhckV4cHJlc3Npb24oY29uc3QgV2ViU3RyaW5nJiBw
YXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRl
eHRDYXNlU2Vuc2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5KQoreworICAgIFRleHRDYXNlU2Vuc2l0
aXZpdHkgc2Vuc2l0aXZpdHkgPSBzdGF0aWNfY2FzdDxUZXh0Q2FzZVNlbnNpdGl2aXR5PihjYXNl
U2Vuc2l0aXZpdHkpOworICAgIFJlZ3VsYXJFeHByZXNzaW9uKiByZSA9IG5ldyBSZWd1bGFyRXhw
cmVzc2lvbihwYXR0ZXJuLCBzZW5zaXRpdml0eSk7CisgICAgbV9wcml2YXRlID0gc3RhdGljX2Nh
c3Q8V2ViUmVndWxhckV4cHJlc3Npb25Qcml2YXRlKj4ocmUpOworfQorCitXZWJSZWd1bGFyRXhw
cmVzc2lvbjo6fldlYlJlZ3VsYXJFeHByZXNzaW9uKCkKK3sKKyAgICBkZWxldGUgbV9wcml2YXRl
OworfQorCitpbnQgV2ViUmVndWxhckV4cHJlc3Npb246Om1hdGNoKGNvbnN0IFdlYlN0cmluZyYg
c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRGcm9tLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1hdGNoTGVuZ3RoKSBjb25zdAorewor
ICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5tYXRjaChzdHIsIHN0YXJ0RnJvbSwgbWF0Y2hMZW5ndGgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44331</attachid>
            <date>2009-12-04 13:42:03 -0800</date>
            <delta_ts>2009-12-04 13:43:55 -0800</delta_ts>
            <desc>try4: Implementation of WebRegularExpression</desc>
            <filename>wre4.diff</filename>
            <type>text/plain</type>
            <size>11130</size>
            <attacher name="James Hawkins">jhawkins</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTE3MTIpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMTItMDQgIEphbWVz
IEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMyMDk1CisgICAgICAgIEltcGxlbWVudCBXZWJSZWd1bGFyRXhwcmVzc2lvbiwg
YSBXZWJLaXQgQVBJIGZvciBhY2Nlc3NpbmcKKyAgICAgICAgV2ViQ29yZTo6UmVndWxhckV4cHJl
c3Npb24uCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJSZWd1
bGFyRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViVGV4dENhc2VTZW5z
aXRpdml0eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6KToKKyAgICAgICAgKiBzcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL1dlYlJlZ3VsYXJFeHByZXNzaW9u
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlZ3VsYXJFeHByZXNzaW9uOjpXZWJS
ZWd1bGFyRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlZ3VsYXJFeHByZXNzaW9u
Ojp+V2ViUmVndWxhckV4cHJlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZWd1bGFyRXhw
cmVzc2lvbjo6bWF0Y2gpOgorCiAyMDA5LTEyLTAzICBKb25hdGhhbiBEaXhvbiAgPGpvdGhAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA1MTYxNikKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDcgQEAKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYlBvcHVwTWVudUluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJS
YW5nZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlJlY3QuaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYlJ1bnRpbWVGZWF0dXJlcy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YlNjcmVlbkluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTY3JpcHRDb250cm9s
bGVyLmgnLApAQCAtMTYwLDYgKzE2MSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJT
dG9yYWdlTmFtZXNwYWNlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RyaW5nLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dEFmZmluaXR5LmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlRleHREaXJlY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJVUkwuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxFcnJvci5oJywKQEAgLTI3
Myw2ICsyNzUsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViUG9wdXBNZW51SW1wbC5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlJhbmdlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJSZWd1bGFy
RXhwcmVzc2lvbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUnVudGltZUZlYXR1cmVz
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwJywKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJlZ3VsYXJFeHByZXNzaW9uX2gK
KyNkZWZpbmUgV2ViUmVndWxhckV4cHJlc3Npb25faAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgi
CisjaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2FzZVNlbnNp
dGl2aXR5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJSZWd1bGFyRXhwcmVz
c2lvblByaXZhdGU7CitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNzIFdlYlJlZ3VsYXJFeHByZXNz
aW9uIDogcHVibGljIFdlYk5vbkNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfQVBJIFdl
YlJlZ3VsYXJFeHByZXNzaW9uKGNvbnN0IFdlYlN0cmluZyYgcGF0dGVybiwgV2ViVGV4dENhc2VT
ZW5zaXRpdml0eSk7CisgICAgV0VCS0lUX0FQSSB+V2ViUmVndWxhckV4cHJlc3Npb24oKTsKKwor
ICAgIFdFQktJVF9BUEkgaW50IG1hdGNoKGNvbnN0IFdlYlN0cmluZyYsIGludCBzdGFydEZyb20g
PSAwLCBpbnQqIG1hdGNoTGVuZ3RoID0gMCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViUmVn
dWxhckV4cHJlc3Npb25Qcml2YXRlKiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIExGCgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2FzZVNlbnNp
dGl2aXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2Fz
ZVNlbnNpdGl2aXR5LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlRleHRDYXNlU2Vuc2l0aXZpdHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViVGV4dENhc2VTZW5zaXRpdml0eV9oCisjZGVmaW5lIFdlYlRleHRDYXNlU2Vuc2l0aXZp
dHlfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhlc2UgY29uc3RhbnRzIHNwZWNpZnkg
dGhlIHByZWZlcnJlZCBjYXNlIHNlbnNpdGl2aXR5LgorZW51bSBXZWJUZXh0Q2FzZVNlbnNpdGl2
aXR5IHsKKyAgICBXZWJUZXh0Q2FzZVNlbnNpdGl2ZSwgICAvLyBTdHJpbmcgbWF0Y2hpbmcgaXMg
Y2FzZS1zZW5zaXRpdmUuCisgICAgV2ViVGV4dENhc2VJbnNlbnNpdGl2ZSwgLy8gU3RyaW5nIG1h
dGNoaW5nIGlzIGNhc2UtaW5zZW5zaXRpdmUuCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlRleHRDYXNlU2Vuc2l0aXZpdHkuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAg
ICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5j
cHAJKHJldmlzaW9uIDUxNjE2KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGlu
Z0VudW1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIk5v
dGlmaWNhdGlvblByZXNlbnRlci5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRQcml2YXRlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1DdXJzb3IuaCIKKyNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCiAjaW5j
bHVkZSAiVGV4dEFmZmluaXR5LmgiCiAjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5o
IgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCkBAIC01MSw2ICs1Miw3IEBA
CiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25Q
cmVzZW50ZXIuaCIKICNpbmNsdWRlICJXZWJUZXh0QWZmaW5pdHkuaCIKKyNpbmNsdWRlICJXZWJU
ZXh0Q2FzZVNlbnNpdGl2aXR5LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogI2Rl
ZmluZSBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKHdlYmtpdF9uYW1lLCB3ZWJjb3JlX25h
bWUpIFwKQEAgLTI3MiwzICsyNzQsNiBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
Yk5vdGlmaWNhCiAKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dEFmZmluaXR5
VXBzdHJlYW0sIFVQU1RSRUFNKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4
dEFmZmluaXR5RG93bnN0cmVhbSwgRE9XTlNUUkVBTSk7CisKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNlU2Vuc2l0aXZlKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENhc2VJbnNlbnNpdGl2ZSwgVGV4dENhc2VJ
bnNlbnNpdGl2ZSk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJlZ3VsYXJFeHByZXNz
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJlZ3VsYXJFeHBy
ZXNzaW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUmVndWxh
ckV4cHJlc3Npb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYlJlZ3VsYXJFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV2Vi
U3RyaW5nLmgiCisKKyNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlJlZ3VsYXJF
eHByZXNzaW9uUHJpdmF0ZSA6IHB1YmxpYyBSZWd1bGFyRXhwcmVzc2lvbiB7Cit9OworCitXZWJS
ZWd1bGFyRXhwcmVzc2lvbjo6V2ViUmVndWxhckV4cHJlc3Npb24oY29uc3QgV2ViU3RyaW5nJiBw
YXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRl
eHRDYXNlU2Vuc2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5KQoreworICAgIFRleHRDYXNlU2Vuc2l0
aXZpdHkgc2Vuc2l0aXZpdHkgPSBzdGF0aWNfY2FzdDxUZXh0Q2FzZVNlbnNpdGl2aXR5PihjYXNl
U2Vuc2l0aXZpdHkpOworICAgIFJlZ3VsYXJFeHByZXNzaW9uKiByZSA9IG5ldyBSZWd1bGFyRXhw
cmVzc2lvbihwYXR0ZXJuLCBzZW5zaXRpdml0eSk7CisgICAgbV9wcml2YXRlID0gc3RhdGljX2Nh
c3Q8V2ViUmVndWxhckV4cHJlc3Npb25Qcml2YXRlKj4ocmUpOworfQorCitXZWJSZWd1bGFyRXhw
cmVzc2lvbjo6fldlYlJlZ3VsYXJFeHByZXNzaW9uKCkKK3sKKyAgICBkZWxldGUgbV9wcml2YXRl
OworfQorCitpbnQgV2ViUmVndWxhckV4cHJlc3Npb246Om1hdGNoKGNvbnN0IFdlYlN0cmluZyYg
c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRGcm9tLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1hdGNoTGVuZ3RoKSBjb25zdAorewor
ICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5tYXRjaChzdHIsIHN0YXJ0RnJvbSwgbWF0Y2hMZW5ndGgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44332</attachid>
            <date>2009-12-04 13:43:55 -0800</date>
            <delta_ts>2009-12-04 16:24:34 -0800</delta_ts>
            <desc>try5: Implementation of WebRegularExpression</desc>
            <filename>wre5.diff</filename>
            <type>text/plain</type>
            <size>11130</size>
            <attacher name="James Hawkins">jhawkins</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTE3MTIpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMTItMDQgIEphbWVz
IEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMyMDk1CisgICAgICAgIEltcGxlbWVudCBXZWJSZWd1bGFyRXhwcmVzc2lvbiwg
YSBXZWJLaXQgQVBJIGZvciBhY2Nlc3NpbmcKKyAgICAgICAgV2ViQ29yZTo6UmVndWxhckV4cHJl
c3Npb24uCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJSZWd1
bGFyRXhwcmVzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViVGV4dENhc2VTZW5z
aXRpdml0eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6KToKKyAgICAgICAgKiBzcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL1dlYlJlZ3VsYXJFeHByZXNzaW9u
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlZ3VsYXJFeHByZXNzaW9uOjpXZWJS
ZWd1bGFyRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlZ3VsYXJFeHByZXNzaW9u
Ojp+V2ViUmVndWxhckV4cHJlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZWd1bGFyRXhw
cmVzc2lvbjo6bWF0Y2gpOgorCiAyMDA5LTEyLTAzICBKb25hdGhhbiBEaXhvbiAgPGpvdGhAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA1MTYxNikKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDcgQEAKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYlBvcHVwTWVudUluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJS
YW5nZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlJlY3QuaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYlJ1bnRpbWVGZWF0dXJlcy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YlNjcmVlbkluZm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTY3JpcHRDb250cm9s
bGVyLmgnLApAQCAtMTYwLDYgKzE2MSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJT
dG9yYWdlTmFtZXNwYWNlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RyaW5nLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dEFmZmluaXR5LmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlRleHREaXJlY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJVUkwuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxFcnJvci5oJywKQEAgLTI3
Myw2ICsyNzUsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViUG9wdXBNZW51SW1wbC5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlJhbmdlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJSZWd1bGFy
RXhwcmVzc2lvbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUnVudGltZUZlYXR1cmVz
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwJywKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJlZ3VsYXJFeHByZXNzaW9uX2gK
KyNkZWZpbmUgV2ViUmVndWxhckV4cHJlc3Npb25faAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgi
CisjaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2FzZVNlbnNp
dGl2aXR5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJSZWd1bGFyRXhwcmVz
c2lvblByaXZhdGU7CitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNzIFdlYlJlZ3VsYXJFeHByZXNz
aW9uIDogcHVibGljIFdlYk5vbkNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfQVBJIFdl
YlJlZ3VsYXJFeHByZXNzaW9uKGNvbnN0IFdlYlN0cmluZyYgcGF0dGVybiwgV2ViVGV4dENhc2VT
ZW5zaXRpdml0eSk7CisgICAgV0VCS0lUX0FQSSB+V2ViUmVndWxhckV4cHJlc3Npb24oKTsKKwor
ICAgIFdFQktJVF9BUEkgaW50IG1hdGNoKGNvbnN0IFdlYlN0cmluZyYsIGludCBzdGFydEZyb20g
PSAwLCBpbnQqIG1hdGNoTGVuZ3RoID0gMCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViUmVn
dWxhckV4cHJlc3Npb25Qcml2YXRlKiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIExGCgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2FzZVNlbnNp
dGl2aXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2Fz
ZVNlbnNpdGl2aXR5LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlRleHRDYXNlU2Vuc2l0aXZpdHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViVGV4dENhc2VTZW5zaXRpdml0eV9oCisjZGVmaW5lIFdlYlRleHRDYXNlU2Vuc2l0aXZp
dHlfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhlc2UgY29uc3RhbnRzIHNwZWNpZnkg
dGhlIHByZWZlcnJlZCBjYXNlIHNlbnNpdGl2aXR5LgorZW51bSBXZWJUZXh0Q2FzZVNlbnNpdGl2
aXR5IHsKKyAgICBXZWJUZXh0Q2FzZVNlbnNpdGl2ZSwgICAvLyBTdHJpbmcgbWF0Y2hpbmcgaXMg
Y2FzZS1zZW5zaXRpdmUuCisgICAgV2ViVGV4dENhc2VJbnNlbnNpdGl2ZSwgLy8gU3RyaW5nIG1h
dGNoaW5nIGlzIGNhc2UtaW5zZW5zaXRpdmUuCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlRleHRDYXNlU2Vuc2l0aXZpdHkuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAg
ICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5j
cHAJKHJldmlzaW9uIDUxNjE2KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGlu
Z0VudW1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIk5v
dGlmaWNhdGlvblByZXNlbnRlci5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRQcml2YXRlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1DdXJzb3IuaCIKKyNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCiAjaW5j
bHVkZSAiVGV4dEFmZmluaXR5LmgiCiAjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5o
IgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCkBAIC01MSw2ICs1Miw3IEBA
CiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25Q
cmVzZW50ZXIuaCIKICNpbmNsdWRlICJXZWJUZXh0QWZmaW5pdHkuaCIKKyNpbmNsdWRlICJXZWJU
ZXh0Q2FzZVNlbnNpdGl2aXR5LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogI2Rl
ZmluZSBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKHdlYmtpdF9uYW1lLCB3ZWJjb3JlX25h
bWUpIFwKQEAgLTI3MiwzICsyNzQsNiBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
Yk5vdGlmaWNhCiAKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dEFmZmluaXR5
VXBzdHJlYW0sIFVQU1RSRUFNKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4
dEFmZmluaXR5RG93bnN0cmVhbSwgRE9XTlNUUkVBTSk7CisKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNlU2Vuc2l0aXZlKTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENhc2VJbnNlbnNpdGl2ZSwgVGV4dENhc2VJ
bnNlbnNpdGl2ZSk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJlZ3VsYXJFeHByZXNz
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJlZ3VsYXJFeHBy
ZXNzaW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUmVndWxh
ckV4cHJlc3Npb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYlJlZ3VsYXJFeHByZXNzaW9uLmgiCisKKyNpbmNsdWRlICJS
ZWd1bGFyRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlJlZ3VsYXJF
eHByZXNzaW9uUHJpdmF0ZSA6IHB1YmxpYyBSZWd1bGFyRXhwcmVzc2lvbiB7Cit9OworCitXZWJS
ZWd1bGFyRXhwcmVzc2lvbjo6V2ViUmVndWxhckV4cHJlc3Npb24oY29uc3QgV2ViU3RyaW5nJiBw
YXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRl
eHRDYXNlU2Vuc2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5KQoreworICAgIFRleHRDYXNlU2Vuc2l0
aXZpdHkgc2Vuc2l0aXZpdHkgPSBzdGF0aWNfY2FzdDxUZXh0Q2FzZVNlbnNpdGl2aXR5PihjYXNl
U2Vuc2l0aXZpdHkpOworICAgIFJlZ3VsYXJFeHByZXNzaW9uKiByZSA9IG5ldyBSZWd1bGFyRXhw
cmVzc2lvbihwYXR0ZXJuLCBzZW5zaXRpdml0eSk7CisgICAgbV9wcml2YXRlID0gc3RhdGljX2Nh
c3Q8V2ViUmVndWxhckV4cHJlc3Npb25Qcml2YXRlKj4ocmUpOworfQorCitXZWJSZWd1bGFyRXhw
cmVzc2lvbjo6fldlYlJlZ3VsYXJFeHByZXNzaW9uKCkKK3sKKyAgICBkZWxldGUgbV9wcml2YXRl
OworfQorCitpbnQgV2ViUmVndWxhckV4cHJlc3Npb246Om1hdGNoKGNvbnN0IFdlYlN0cmluZyYg
c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRGcm9tLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1hdGNoTGVuZ3RoKSBjb25zdAorewor
ICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5tYXRjaChzdHIsIHN0YXJ0RnJvbSwgbWF0Y2hMZW5ndGgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>