<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thomson-ppm-dap-attribution-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="DAP Extensions for Attribution">Distributed Aggregation Protocol (DAP) Extensions for the Attribution API</title>
    <seriesInfo name="Internet-Draft" value="draft-thomson-ppm-dap-attribution-00"/>
    <author fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <date year="2026" month="January" day="22"/>
    <area>Security</area>
    <workgroup>Privacy Preserving Measurement</workgroup>
    <keyword>decibels</keyword>
    <keyword>replay</keyword>
    <abstract>
      <?line 93?>

<t>This defines extensions to the DAP protocol
that support the Attribution API.
These extensions provide support for differentially-private aggregation
and the operating modes that the Attribution API depends on.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://martinthomson.github.io/dap-dp-ext/draft-thomson-ppm-dap-attribution.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-thomson-ppm-dap-attribution/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Privacy Preserving Measurement Working Group mailing list (<eref target="mailto:ppm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ppm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/ppm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/martinthomson/dap-dp-ext"/>.</t>
    </note>
  </front>
  <middle>
    <?line 101?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Attribution API <xref target="ATTR"/> is a web platform feature
that provides sites that use advertising
with the ability to measure the effectiveness of that advertising.
Measurements that the API produce are aggregated
using the Distributed Aggregation Protocol (DAP) <xref target="DAP"/>.</t>
      <t>This document defines extensions to DAP
that support the use of DAP by the Attribution API.
These extensions fall into two categories:</t>
      <ul spacing="normal">
        <li>
          <t>Support for the differential privacy model
used in the Attribution API.</t>
        </li>
        <li>
          <t>Support for the operational modes
that better fit the deployment model that the Attribution API uses.</t>
        </li>
      </ul>
      <t>These extensions are not narrowly defined
such that they can only be used by the Attribution API.
Other applications might be able to use them,
but any effort to make them fully generic
stops short of making the extensions more complex
that is required for Attribution.</t>
      <t>For example, privacy budget extensions are defined
to use the epsilon definition
from (ε, 0)-differential privacy
or (ε, δ)-differential privacy with a fixed δ value.
This is simpler than a design
that might allow for multiple budget metrics.</t>
      <t>These extensions all assume the use
of DAP task provisioning <xref target="TASKPROV"/>.
However, only the collector identity extension (<xref target="collector-id"/>)
concretely depends on <xref target="TASKPROV"/>,
as it uses the task configuration extensions.
All other extensions apply to the core DAP protocol <xref target="DAP"/>.</t>
      <section anchor="differential-privacy-in-attribution">
        <name>Differential Privacy in Attribution</name>
        <t>The Attribution API provides information to websites
based on user activity on other websites,
which is ordinarily prohibited for privacy reasons <xref target="WEB-PRIV"/>.</t>
        <t>To protect privacy,
the Attribution API uses differential privacy <xref target="DP"/>
in a combination of the central and individual models <xref target="ATTR-DP"/>.
The privacy architecture of the Attribution API
allocates responsibility for managing sensitivity and privacy budgets
to browser instances (DAP Clients)
and for the addition of noise
to an aggregation service (DAP Aggregators, collectively).</t>
        <t>To this end,
reports that are submitted for aggregation need to be bound
to the privacy budget that was expended at a Client
when the report was generated.
This ensures that Aggregators can apply noise
with sufficient amplitude
to maintain the intended differential privacy guarantee.</t>
        <t>An extension that reports the amount of privacy budget
that was consumed in the generation of a report
is described in <xref target="dp"/>.</t>
      </section>
      <section anchor="attribution-operating-mode-extensions">
        <name>Attribution Operating Mode Extensions</name>
        <t>The Attribution API is expected to operate in a mode
that differs somewhat from the way that DAP is architected.
Several extensions are defined to support this operating mode.</t>
        <t>In DAP, a task is a long-running context
that Clients continuously contribute to.
Reports are directly uploaded by Clients to the Leader
as they are generated.
The DAP batch mode determines how reports are grouped for aggregation.
A new collection job is initiated by the Collector
when an aggregate is needed,
though this might fail if the requirements for the task --
the batch mode and minimum batch size, primary --
are not met.</t>
        <t>A simple representation of the DAP architecture
is illustrated in <xref target="f-arch-dap"/>.</t>
        <figure anchor="f-arch-dap">
          <name>Simplified DAP Architecture</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,112 L 8,144" fill="none" stroke="black"/>
                <path d="M 24,128 L 24,160" fill="none" stroke="black"/>
                <path d="M 40,144 L 40,176" fill="none" stroke="black"/>
                <path d="M 88,112 L 88,128" fill="none" stroke="black"/>
                <path d="M 104,128 L 104,144" fill="none" stroke="black"/>
                <path d="M 120,144 L 120,176" fill="none" stroke="black"/>
                <path d="M 232,32 L 232,64" fill="none" stroke="black"/>
                <path d="M 232,144 L 232,176" fill="none" stroke="black"/>
                <path d="M 266,72 L 266,136" fill="none" stroke="black"/>
                <path d="M 262,72 L 262,136" fill="none" stroke="black"/>
                <path d="M 304,32 L 304,64" fill="none" stroke="black"/>
                <path d="M 304,144 L 304,176" fill="none" stroke="black"/>
                <path d="M 424,144 L 424,176" fill="none" stroke="black"/>
                <path d="M 520,144 L 520,176" fill="none" stroke="black"/>
                <path d="M 232,32 L 304,32" fill="none" stroke="black"/>
                <path d="M 232,64 L 304,64" fill="none" stroke="black"/>
                <path d="M 8,112 L 88,112" fill="none" stroke="black"/>
                <path d="M 24,128 L 104,128" fill="none" stroke="black"/>
                <path d="M 8,144 L 24,144" fill="none" stroke="black"/>
                <path d="M 40,144 L 120,144" fill="none" stroke="black"/>
                <path d="M 136,144 L 216,144" fill="none" stroke="black"/>
                <path d="M 232,144 L 304,144" fill="none" stroke="black"/>
                <path d="M 424,144 L 520,144" fill="none" stroke="black"/>
                <path d="M 24,160 L 40,160" fill="none" stroke="black"/>
                <path d="M 136,160 L 216,160" fill="none" stroke="black"/>
                <path d="M 320,160 L 408,160" fill="none" stroke="black"/>
                <path d="M 40,176 L 120,176" fill="none" stroke="black"/>
                <path d="M 136,176 L 216,176" fill="none" stroke="black"/>
                <path d="M 232,176 L 304,176" fill="none" stroke="black"/>
                <path d="M 320,176 L 408,176" fill="none" stroke="black"/>
                <path d="M 424,176 L 520,176" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="416,176 404,170.4 404,181.6" fill="black" transform="rotate(0,408,176)"/>
                <polygon class="arrowhead" points="328,160 316,154.4 316,165.6" fill="black" transform="rotate(180,320,160)"/>
                <polygon class="arrowhead" points="272,136 260,130.4 260,141.6" fill="black" transform="rotate(90,264,136)"/>
                <polygon class="arrowhead" points="272,72 260,66.4 260,77.6" fill="black" transform="rotate(270,264,72)"/>
                <polygon class="arrowhead" points="224,176 212,170.4 212,181.6" fill="black" transform="rotate(0,216,176)"/>
                <polygon class="arrowhead" points="224,160 212,154.4 212,165.6" fill="black" transform="rotate(0,216,160)"/>
                <polygon class="arrowhead" points="224,144 212,138.4 212,149.6" fill="black" transform="rotate(0,216,144)"/>
                <g class="text">
                  <text x="268" y="52">Helper</text>
                  <text x="316" y="100">Validate &amp;</text>
                  <text x="312" y="116">Aggregate</text>
                  <text x="168" y="132">Reports</text>
                  <text x="364" y="148">Collection</text>
                  <text x="80" y="164">Clients</text>
                  <text x="268" y="164">Leader</text>
                  <text x="472" y="164">Collector</text>
                  <text x="364" y="196">Result</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                            +--------+
                            | Helper |
                            +--------+
                                ^
                                ║ Validate &
+---------+                     ║ Aggregate
| +-------+-+    Reports        v
+-+ +-------+-+ ----------> +--------+  Collection  +-----------+
  +-+ Clients | ----------> | Leader | <----------- | Collector |
    +---------+ ----------> +--------+ -----------> +-----------+
                                          Result
]]></artwork>
          </artset>
        </figure>
        <t>In the Attribution API,
reports are delivered to the website that requests them.
The site is expected to gather a bundle of reports
and submit them for aggregation
when they have a sufficiently large set.</t>
        <t>An important feature of this design is that the website
(as a DAP Collector)
chooses which reports to aggregate.
This gives the site an opportunity to review the circumstances
in which reports were generated
and filter reports according to their needs.</t>
        <t>A secondary reason for Clients to deliver reports to the website,
rather than submit them directly to the Leader,
is that this removes a real-time dependency on the Leader.
A Leader can therefore be less available
than the sites that depend on its services.</t>
        <t>A simple representation of the architecture used by the Attribution API
is illustrated in <xref target="f-arch-attr"/>.</t>
        <figure anchor="f-arch-attr">
          <name>Attribution API Architecture</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="616" viewBox="0 0 616 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,96 L 8,144" fill="none" stroke="black"/>
                <path d="M 24,112 L 24,160" fill="none" stroke="black"/>
                <path d="M 40,128 L 40,176" fill="none" stroke="black"/>
                <path d="M 112,96 L 112,112" fill="none" stroke="black"/>
                <path d="M 128,112 L 128,128" fill="none" stroke="black"/>
                <path d="M 144,128 L 144,176" fill="none" stroke="black"/>
                <path d="M 256,128 L 256,176" fill="none" stroke="black"/>
                <path d="M 352,128 L 352,176" fill="none" stroke="black"/>
                <path d="M 488,32 L 488,64" fill="none" stroke="black"/>
                <path d="M 488,144 L 488,176" fill="none" stroke="black"/>
                <path d="M 522,72 L 522,136" fill="none" stroke="black"/>
                <path d="M 518,72 L 518,136" fill="none" stroke="black"/>
                <path d="M 560,32 L 560,64" fill="none" stroke="black"/>
                <path d="M 560,144 L 560,176" fill="none" stroke="black"/>
                <path d="M 488,32 L 560,32" fill="none" stroke="black"/>
                <path d="M 488,64 L 560,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 112,96" fill="none" stroke="black"/>
                <path d="M 24,112 L 128,112" fill="none" stroke="black"/>
                <path d="M 40,128 L 144,128" fill="none" stroke="black"/>
                <path d="M 160,128 L 240,128" fill="none" stroke="black"/>
                <path d="M 256,128 L 352,128" fill="none" stroke="black"/>
                <path d="M 8,144 L 24,144" fill="none" stroke="black"/>
                <path d="M 160,144 L 240,144" fill="none" stroke="black"/>
                <path d="M 488,144 L 560,144" fill="none" stroke="black"/>
                <path d="M 24,160 L 40,160" fill="none" stroke="black"/>
                <path d="M 160,160 L 240,160" fill="none" stroke="black"/>
                <path d="M 368,158 L 472,158" fill="none" stroke="black"/>
                <path d="M 368,162 L 472,162" fill="none" stroke="black"/>
                <path d="M 40,176 L 144,176" fill="none" stroke="black"/>
                <path d="M 160,176 L 240,176" fill="none" stroke="black"/>
                <path d="M 256,176 L 352,176" fill="none" stroke="black"/>
                <path d="M 368,176 L 472,176" fill="none" stroke="black"/>
                <path d="M 488,176 L 560,176" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="528,136 516,130.4 516,141.6" fill="black" transform="rotate(90,520,136)"/>
                <polygon class="arrowhead" points="528,72 516,66.4 516,77.6" fill="black" transform="rotate(270,520,72)"/>
                <polygon class="arrowhead" points="480,160 468,154.4 468,165.6" fill="black" transform="rotate(0,472,160)"/>
                <polygon class="arrowhead" points="376,176 364,170.4 364,181.6" fill="black" transform="rotate(180,368,176)"/>
                <polygon class="arrowhead" points="248,176 236,170.4 236,181.6" fill="black" transform="rotate(0,240,176)"/>
                <polygon class="arrowhead" points="248,160 236,154.4 236,165.6" fill="black" transform="rotate(0,240,160)"/>
                <polygon class="arrowhead" points="248,144 236,138.4 236,149.6" fill="black" transform="rotate(0,240,144)"/>
                <polygon class="arrowhead" points="248,128 236,122.4 236,133.6" fill="black" transform="rotate(0,240,128)"/>
                <g class="text">
                  <text x="524" y="52">Helper</text>
                  <text x="572" y="100">Validate &amp;</text>
                  <text x="192" y="116">Reports</text>
                  <text x="568" y="116">Aggregate</text>
                  <text x="408" y="132">Batched</text>
                  <text x="88" y="148">Clients</text>
                  <text x="304" y="148">Collector</text>
                  <text x="408" y="148">Reports</text>
                  <text x="92" y="164">(Browsers)</text>
                  <text x="304" y="164">(Website)</text>
                  <text x="524" y="164">Leader</text>
                  <text x="404" y="196">Result</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                                                            +--------+
                                                            | Helper |
                                                            +--------+
                                                                ^
+------------+                                                  ║ Validate &
| +----------+-+    Reports                                     ║ Aggregate
| | +----------+-+ ----------> +-----------+   Batched          v
+-+ |  Clients   | ----------> | Collector |   Reports      +--------+
  +-+ (Browsers) | ----------> | (Website) | =============> | Leader |
    +------------+ ----------> +-----------+ <------------- +--------+
                                               Result
]]></artwork>
          </artset>
        </figure>
        <t>To support this mode of operation,
a new batch mode for DAP is defined
called "collector-selected"; see <xref target="batch-mode"/>.
For other batch modes,
the Leader has sufficient information to select reports
for inclusion in a collection job.
In comparison,
this batch mode requires that reports carry an annotation
set by the Collector
at the time that each report is uploaded.</t>
      </section>
      <section anchor="other-extensions">
        <name>Other Extensions</name>
        <t>Two other extensions are defined in this document.</t>
        <t>The minimum privacy budget collection job extension (<xref target="min-dp"/>)
added to collection job initialization
places guardrails around what reports can be included
in a collection job.
Reports that lack a privacy budget extension
or those with a value below the indicated threshold
must be rejected by Aggregators.</t>
        <t>For the Attribution API,
setting a minimum privacy budget
is roughly equivalent to capping the noise
that is added to an aggregate.
Without this extension,
noise could be determined from the privacy budget values
bound to each report.
This ensures that reports that do not match expectations
can be dropped efficiently,
rather than having Aggregators add unexpectedly large amounts of noise.</t>
        <t>The collector identity task extension (<xref target="collector-id"/>)
binds the identity of the Collector to tasks.
This extension fixes the entity can request collection of reports.</t>
        <t>For the Attribution API,
each Collector receives their own source of privacy budget.
Binding tasks to a single Collector
ensures that the privacy guarantees
that the per-Collector privacy budget provide
cannot be circumvented by Collectors pooling reports
into a single aggregate.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document relies on the definitions in DAP <xref target="DAP"/>
for protocol roles and functions.
Some reference is made to the terms and concepts in the Attribution API <xref target="ATTR"/>,
though familiarity with these should not be necessary
to understand how the extensions interact with DAP.</t>
    </section>
    <section anchor="dp">
      <name>Differential Privacy Budget Report Extension</name>
      <t>The privacy budget report extension
(codepoint 0xTBD)
encodes the amount of privacy budget
that might have been expended by a Client
as a result of producing a report.</t>
      <t>The value of the codepoint is
an integer encoding of the number of micro-epsilons
of budget that are expended.
That is, each unit is a one-millionth of an epsilon (ε)
as used in (ε, δ)-differential privacy.</t>
      <t>The micro-epsilon value is encoded as a 32-bit integer
in network byte order.
This permits expenditure of up to ε=4294.967295 to be encoded.</t>
      <t>The delta (δ) parameter is not directly bound to reports.
This parameter is rarely used in privacy budgeting.
A maximum value for δ might be fixed
as part of the configuration in a specific deployment.
Setting a value for δ is necessary
when selecting a differential privacy mechanism.
In setting a value for δ,
a deployment needs to consider the total report volume
and the total number of tasks that each client might contribute to.</t>
      <aside>
        <t>Note: Where the delta (δ) value is non-zero,
and a client might generate many reports,
clients might also need to limit the number of reports
to prevent the overall delta value from growing large.</t>
      </aside>
      <section anchor="privacy-budgeting">
        <name>Privacy Budgeting</name>
        <t>A privacy budget ensures that the total information release
can be bounded
while providing more flexibility to the recipients
of the noisy results.
Recipients are able to adjust how budget is used
to control how noise is distributed
across multiple information releases.</t>
        <t>The amount of noise added to aggregates
is based on the expended budget.
In general,
spending more privacy budget means that less noise is needed
to maintain the same level of privacy;
conversely, spending less budget means more noise.</t>
        <t>A budget might be specified in terms of a metric
(like the epsilon parameter in (ε, δ)-differential privacy)
that is expended with each information release.
As noted, this extension uses the ε metric.</t>
        <t>For example, for an overall budget of ε=10
might be split four ways: (0.5, 1.5, 2, 6).
Noise might then be added,
drawing from a distribution
with a width inversely proportional to the budget spent;
that is, a distribution with a standard deviation proportional to
2, 2/3, 1/2, and 1/6 respectively.</t>
      </section>
      <section anchor="applicability-to-differential-privacy-models">
        <name>Applicability to Differential Privacy Models</name>
        <t>When used in the Attribution API,
the privacy budget report extension does not always encode the exact amount
of privacy budget that was expended.
The individual DP model used in Attribution (see <xref target="ATTR-DP"/>),
allows a Client to expend less of its budget than this value
for several reasons.</t>
        <t>This introduces some complexity,
because any reduction in the budget spent
is based on private information.
Consequently, any reduced expenditure needs to be kept secret.
In that setting,
the extension reports the maximum possible expenditure.</t>
        <t>This extension gives users of the Attribution API
the ability to manage privacy budget expenditure
on a per-report basis.</t>
        <t>By binding the amount of budget spent to each report,
the Client can transfer responsibility
for applying noise to Aggregators.
The addition of noise in the one place,
can ensure a better trade-off between
the amount of added noise
and privacy parameters.</t>
        <t>The Attribution API differs from some other uses of DAP.
which instead involve Clients adding noise to reports
at the time they are generated.
To maintain the usefulness of aggregates,
the amount of noise added by each Client is kept low.
To maintain strong privacy,
Clients partly rely on DAP mixing their contributions
with the contributions of other Clients,
following the shuffle DP approach <xref target="SHUFFLE"/>.
Such uses depend on attaining a certain minimum batch size
in order to meet their differential privacy targets.</t>
        <t>Applying noise during aggregation
reduces the importance of the minimum batch size
parameter in task configuration.
However, it adds to the work
that Clients need to trust Aggregators to perform.</t>
        <t>To maintain consistency with the DAP threat model for privacy
(see <xref section="8" sectionFormat="of" target="DAP"/>),
this can mean either performing noise addition in an MPC protocol
or having Aggregators each independently apply the requisite amount of noise.</t>
        <t>A number of MPC protocols for adding noise exist,
but these are often not efficient in the two-party setting
relative to the VDAF protocols typically used.
On the other hand,
the redundant addition of noise by Aggregators
results in more noise when both Aggregators are honest.
Even so,
adding two amounts of noise
often results in less overall noise
than other approaches.</t>
      </section>
    </section>
    <section anchor="batch-mode">
      <name>Collector-Selected Batch Mode</name>
      <t>The collector-selected batch mode
(codepoint 0xTBD)
give the Collector control over which reports are included in collection job.</t>
      <t>In this batch mode
the Leader is not able to determine the associated batch for a report
based on the contents of each report alone.
This differs from the existing leader-selected (<xref section="5.2" sectionFormat="of" target="DAP"/>)
or time interval (<xref section="5.1" sectionFormat="of" target="DAP"/>) batch modes.</t>
      <t>To that end,
uploads of reports use a different URL template
from the usual location for report uploads;
see <xref target="upload"/>.</t>
      <t>This arrangement prevents the Leader from accepting reports
until a collection job is created.
A Leader <bcp14>MAY</bcp14> accept hold requests to upload reports
for a short period prior to the creation of a collection job.
Accepting reports would be on the expectation
that a request to create the indicated collection job
is imminent or still being processed,
so it could reduce latency.</t>
      <t>However, the Leader <bcp14>MUST</bcp14> limit the reports it accepts
prior to accepting the corresponding collection job.
Without a limit,
the Leader gives malicious actors
the unrestricted capability to exhaust its resources.</t>
      <t>A Leader that does not accept reports <bcp14>MUST</bcp14> reject the request,
and can respond with an indication to try later.
This response could use a 404 status code
and the <tt>Retry-After</tt> response field;
see Sections <xref target="HTTP" section="15.5.5" sectionFormat="bare"/> and <xref target="HTTP" section="10.2.3" sectionFormat="bare"/> of <xref target="HTTP"/>.</t>
      <aside>
        <t>Where a collection job already exists,
the high entropy collection job ID in the URL
could make it unnecessary to require authentication of upload requests
for this batch mode; see <xref target="CAP-URL"/>.
This is not the case if reports are accepted
without confirming the existence of the identified collection job.</t>
      </aside>
      <t>A Leader <bcp14>MUST</bcp14> reject attempts
to upload reports to the regular report upload resource
(as defined in <xref section="4.5.2" sectionFormat="of" target="DAP"/>)
when the collector-selected batch mode is configured for a task.</t>
      <section anchor="upload">
        <name>Report Upload URL Template</name>
        <t>Reports in the collector-selected batch mode are uploaded
to a URL that follows the template:</t>
        <artwork><![CDATA[
{leader}/tasks/{task-id}/reports/{collection-job-id}
]]></artwork>
        <t>The inclusion of the collection job ID
(see <xref section="4.7" sectionFormat="of" target="DAP"/>)
differs from other batch modes
where the Collector does not need to provide
any additional information to a Leader.</t>
      </section>
      <section anchor="mode-params">
        <name>Batch Mode Parameters</name>
        <t>This batch mode uses the same parameters
as the leader-selected batch mode (<xref section="5.2" sectionFormat="of" target="DAP"/>).
That is, the payload Query.config is empty.
Both the PartialBatchSelector.config
and the BatchSelector.config contains a batch ID
that is assigned by the Leader.</t>
      </section>
    </section>
    <section anchor="min-dp">
      <name>Minimum Privacy Budget Collection Job Extension</name>
      <t>The minimum privacy budget collection job extension
(codepoint 0xTBD)
allows a Collector to inform Aggregators
of a minimum value for the privacy budget report extension
(see <xref target="dp"/>)
that it expects to be included in the collection job.</t>
      <t>The format of this extension
is a 32-bit network-endian encoding of an integer
in units of micro-epsilon.
This is identical to the format of the privacy budget report extension (<xref target="dp"/>).</t>
      <t>This extension is defined primarily as a safeguard.
In the absence of this extension,
Aggregators could determine the amount
of privacy budget that was expended by every report
and generate noise based on the minimum value across all reports.</t>
      <t>That approach is potentially error prone.
If a Collector accidentally includes a report with a much lower budget,
the Aggregate it receives would have more noise added than expected.
The collection job extension effectively sets a cap
on the noise that might be added.</t>
      <t>Aggregators can use this extension
in one of two ways:</t>
      <ul spacing="normal">
        <li>
          <t>The value in the collection job extension
directly determines the magnitude of the noise that is added
to the aggregate.</t>
        </li>
        <li>
          <t>The value is only used to filter reports
and the minimum value of the privacy budget report extension
across all accepted reports determines the magnitude of added noise.</t>
        </li>
      </ul>
      <t>The latter provides for lower noise
in the case that the Collector provides a low value,
but is more complex to implement.
There is also no way provided to indicate to the Collector
that less noise was added than they might have planned.</t>
    </section>
    <section anchor="collector-id">
      <name>Collector Identity Task Extension</name>
      <t>The collector identity task extension <xref target="TASKPROV"/>
(codepoint 0xTBD)
binds the task --
and all reports submitted to that task --
to a single Collector.</t>
      <t>This extension does not specify how to encode the identity of the Collector.
Different uses of DAP can choose an encoding
that best suits the situation.</t>
      <t>The Attribution API has its own understanding
of how to encode the identity of the Collector.
The value is a UTF-8-encoded string
of the registrable domain
from the conversion site tuple.</t>
      <section anchor="collector-identity-and-hpke-configuration">
        <name>Collector Identity and HPKE Configuration</name>
        <t>Regardless of how the Collector is identified,
if an identity is included,
the Leader and Helper <bcp14>MUST</bcp14> have a process
for validating the HPKE configuration they use
to encrypt aggregate shares for the Collector.</t>
        <t>That process <bcp14>MUST</bcp14> provide confirmation that the identified entity
authorizes the HPKE configuration.
This does not depend on active proof of possession
for the corresponding private key <xref target="SIGMA"/>
but rather an affirmation that the public key
is approved by the identified entity.</t>
        <t>One option for Collector identification is to use a URL,
following the pattern used for the Leader and Helper (<xref target="TASKPROV"/>.
If the URL uses an authenticated protocol,
such as HTTP with the "https" scheme <xref target="RFC9110"/>,
retrieving an HPKE configuration from that URL
(or similarly authenticated resources
that are referenced from the response)
provides the necessary authorization for the included key.</t>
        <t>The Attribution API does not define a process
for authorizing a Collector HPKE configuration
based on the encoded Collector identity.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Security factors specific to each extension
are covered in the respective sections.</t>
      <t>Use of DAP is subject to the security considerations
of DAP (<xref section="8" sectionFormat="of" target="DAP"/>)
and the VDAF that is in use (<xref section="9" sectionFormat="of" target="VDAF"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO - update this for the collection job extension.
...and the change in where task configuration is likely to go.</t>
      <t>This document registers report extensions
in the "Report Extension Identifiers" registry
established in <xref section="9.2.2" sectionFormat="of" target="DAP"/>.</t>
      <t>New report extension registrations are tabulated
in <xref target="t-dap-ext"/>.</t>
      <table anchor="t-dap-ext">
        <name>DAP Extensions</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD</td>
            <td align="left">privacy_budget</td>
            <td align="left">
              <xref target="dp"/></td>
          </tr>
        </tbody>
      </table>
      <t>This document registers a new batch mode
in the "Batch Modes Identifiers" registry
established in <xref section="9.2.1" sectionFormat="of" target="DAP"/>.</t>
      <t>New report extension registrations are tabulated
in <xref target="t-dap-ext"/>.</t>
      <table anchor="t-dap-bm">
        <name>DAP Match Mode</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD</td>
            <td align="left">collector_selected</td>
            <td align="left">
              <xref target="batch-mode"/></td>
          </tr>
        </tbody>
      </table>
      <t>This document registers task configuration extensions
in the "Taskbind Extensions" registry
established in <xref section="7.2" sectionFormat="of" target="TASKPROV"/>.</t>
      <t>New task provisioning extensions are tabulated
in <xref target="t-dap-taskprov-ext"/>.</t>
      <table anchor="t-dap-taskprov-ext">
        <name>Task Configuration Extensions</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Name</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD</td>
            <td align="left">collector_identity</td>
            <td align="left">
              <xref target="collector-id"/></td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="DAP">
          <front>
            <title>Distributed Aggregation Protocol for Privacy Preserving Measurement</title>
            <author fullname="Tim Geoghegan" initials="T." surname="Geoghegan">
              <organization>ISRG</organization>
            </author>
            <author fullname="Christopher Patton" initials="C." surname="Patton">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Brandon Pitman" initials="B." surname="Pitman">
              <organization>ISRG</organization>
            </author>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="2" month="September" year="2025"/>
            <abstract>
              <t>   There are many situations in which it is desirable to take
   measurements of data which people consider sensitive.  In these
   cases, the entity taking the measurement is usually not interested in
   people's individual responses but rather in aggregated data.
   Conventional methods require collecting individual responses and then
   aggregating them on some server, thus representing a threat to user
   privacy and rendering many such measurements difficult and
   impractical.  This document describes a multi-party Distributed
   Aggregation Protocol (DAP) for privacy preserving measurement which
   can be used to collect aggregate data without revealing any
   individual contributor's data.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ppm-dap-16"/>
        </reference>
        <reference anchor="TASKPROV">
          <front>
            <title>Task Binding and In-Band Provisioning for DAP</title>
            <author fullname="Shan Wang" initials="S." surname="Wang">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Christopher Patton" initials="C." surname="Patton">
              <organization>Cloudflare</organization>
            </author>
            <date day="5" month="September" year="2025"/>
            <abstract>
              <t>   An extension for the Distributed Aggregation Protocol (DAP) is
   specified that cryptographically binds the parameters of a task to
   the task's execution.  In particular, when a client includes this
   extension with its report, the servers will only aggregate the report
   if all parties agree on the task parameters.  This document also
   specifies an optional mechanism for in-band task provisioning that
   builds on the report extension.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ppm-dap-taskprov-03"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="VDAF">
          <front>
            <title>Verifiable Distributed Aggregation Functions</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="David Cook" initials="D." surname="Cook">
              <organization>ISRG</organization>
            </author>
            <author fullname="Christopher Patton" initials="C." surname="Patton">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Phillipp Schoppmann" initials="P." surname="Schoppmann">
              <organization>Google</organization>
            </author>
            <date day="17" month="October" year="2025"/>
            <abstract>
              <t>   This document describes Verifiable Distributed Aggregation Functions
   (VDAFs), a family of multi-party protocols for computing aggregate
   statistics over user measurements.  These protocols are designed to
   ensure that, as long as at least one aggregation server executes the
   protocol honestly, individual measurements are never seen by any
   server in the clear.  At the same time, VDAFs allow the servers to
   detect if a malicious or misconfigured client submitted an invalid
   measurement.  Two concrete VDAFs are specified, one for general-
   purpose aggregation (Prio3) and another for heavy hitters (Poplar1).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-vdaf-17"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="ATTR" target="https://w3c.github.io/attribution">
          <front>
            <title>Attribution API</title>
            <author initials="A." surname="Paseltiner" fullname="Andrew Paseltiner">
              <organization/>
            </author>
            <author initials="A." surname="Leiserson" fullname="Andy Leiserson">
              <organization/>
            </author>
            <author initials="B." surname="Case" fullname="Benjamin Case">
              <organization/>
            </author>
            <author initials="B." surname="Savage" fullname="Benjamin Savage">
              <organization/>
            </author>
            <author initials="C." surname="Harrison" fullname="Charlie Harrison">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="Martin Thomson">
              <organization/>
            </author>
            <date year="2025" month="January" day="14"/>
          </front>
        </reference>
        <reference anchor="ATTR-DP" target="https://arxiv.org/abs/2506.05290">
          <front>
            <title>Beyond Per-Querier Budgets: Rigorous and Resilient Global Privacy Enforcement for the W3C Attribution API</title>
            <author initials="P." surname="Tholoniat" fullname="Pierre Tholoniat">
              <organization/>
            </author>
            <author initials="A." surname="Caulfield" fullname="Alison Caulfield">
              <organization/>
            </author>
            <author initials="G." surname="Cavicchioli" fullname="Giorgio Cavicchioli">
              <organization/>
            </author>
            <author initials="M." surname="Chen" fullname="Mark Chen">
              <organization/>
            </author>
            <author initials="N." surname="Goutzoulias" fullname="Nikos Goutzoulias">
              <organization/>
            </author>
            <author initials="B." surname="Case" fullname="Benjamin Case">
              <organization/>
            </author>
            <author initials="A." surname="Cidon" fullname="Asaf Cidon">
              <organization/>
            </author>
            <author initials="R." surname="Geambasu" fullname="Roxana Geambasu">
              <organization/>
            </author>
            <author initials="M." surname="Lécuyer" fullname="Mathias Lécuyer">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="Martin Thomson">
              <organization/>
            </author>
            <date year="2025" month="October" day="14"/>
          </front>
        </reference>
        <reference anchor="CAP-URL" target="https://www.w3.org/TR/capability-urls/">
          <front>
            <title>Good Practices for Capability URLs</title>
            <author initials="J." surname="Tennison" fullname="Jeni Tennison">
              <organization/>
            </author>
            <date year="2014" month="February" day="18"/>
          </front>
        </reference>
        <reference anchor="SHUFFLE" target="https://arxiv.org/abs/2001.03618">
          <front>
            <title>Encode, Shuffle, Analyze Privacy Revisited: Formalizations and Empirical Evaluation</title>
            <author initials="Ú." surname="Erlingsson" fullname="Úlfar Erlingsson">
              <organization/>
            </author>
            <author initials="V." surname="Feldman" fullname="Vitaly Feldman">
              <organization/>
            </author>
            <author initials="I." surname="Mironov" fullname="Ilya Mironov">
              <organization/>
            </author>
            <author initials="A." surname="Raghunathan" fullname="Ananth Raghunathan">
              <organization/>
            </author>
            <author initials="S." surname="Song" fullname="Shuang Song">
              <organization/>
            </author>
            <author initials="K." surname="Talwar" fullname="Kunal Talwar">
              <organization/>
            </author>
            <author initials="A." surname="Thakurta" fullname="Abhradeep Thakurta">
              <organization/>
            </author>
            <date year="2020" month="January" day="10"/>
          </front>
        </reference>
        <reference anchor="SITE" target="https://html.spec.whatwg.org/#site">
          <front>
            <title>HTML - Living Standard</title>
            <author>
              <organization>WHATWG</organization>
            </author>
            <date year="2021" month="January" day="26"/>
          </front>
        </reference>
        <reference anchor="WEB-PRIV" target="https://w3ctag.github.io/privacy-principles/">
          <front>
            <title>Privacy Principles</title>
            <author initials="R." surname="Berjon" fullname="Robin Berjon">
              <organization/>
            </author>
            <author initials="J." surname="Yasskin" fullname="Jeffrey Yasskin">
              <organization/>
            </author>
            <date year="2025" month="November" day="24"/>
          </front>
        </reference>
        <reference anchor="DP">
          <front>
            <title>The Algorithmic Foundations of Differential Privacy</title>
            <author fullname="Cynthia Dwork" initials="C." surname="Dwork">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Aaron Roth" initials="A." surname="Roth">
              <organization>University of Pennsylvania</organization>
            </author>
            <date month="August" year="2014"/>
          </front>
          <seriesInfo name="Foundations and Trends® in Theoretical Computer Science" value="vol. 9, no. 3-4, pp. 211-487"/>
          <seriesInfo name="DOI" value="10.1561/0400000042"/>
          <refcontent>Emerald</refcontent>
        </reference>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="SIGMA">
          <front>
            <title>SIGMA: The ‘SIGn-and-MAc’ Approach to Authenticated Diffie-Hellman and Its Use in the IKE Protocols</title>
            <author fullname="Hugo Krawczyk" initials="H." surname="Krawczyk">
              <organization/>
            </author>
            <date year="2003"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 400-425"/>
          <seriesInfo name="DOI" value="10.1007/978-3-540-45146-4_24"/>
          <seriesInfo name="ISBN" value="[&quot;9783540406747&quot;, &quot;9783540451464&quot;]"/>
          <refcontent>Springer Berlin Heidelberg</refcontent>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
      </references>
    </references>
    <?line 669?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Roxana Geambesu noted that a binding to site identity (<xref target="collector-id"/>)
was an important component of a robust differential privacy system design
for the Attribution API.
David Cook provided useful feedback about the design and document.
Chris Patton provided helpful input on how to integrate with the DAP architecture.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8Vc23Lcxpm+x1P0UlVbZDwYHkTJFh3ZGZE6MBElhqStcm1t
kh6gZ6YtDDBBAzMaUcw75GJv9mpv995+gc29HmKfZP9Dd6MBDCnZtbXLVCwS
hz78x+8/NOI4jipdZepIbJ1oU5V6XFcqFaPptFRTWekiF+dlURVJkYntk9H5
jnj6rlK5gRtGTIpSVDMlRhW/iE+Pzk+3Ijkel2qJY47Ouy8ED29FiazUtCjX
R8JUaRSlRZLLOSwmLeWkiqtZMTdFHi8W8ziVi1g2r8Z7e5Gpx3NtcORqvYCX
Tp9ePYvyej5W5VGUwshHUQKzwuS1ORJVWasI1nQ/kqWSsLZLldSlrtZb0aoo
307Lol7A1fNSL2Wyhl0ro8qlzqfiTElTl2qu8moreqvW8Hh6FIlYpCrRY5UZ
/L1Ui0yuo6XKa5hXiM8dTwhe/NYbWATefY4v4vW51Blch83/TqtqMizKKV6W
ZTKDy7OqWpij3V18Ci/ppRq6x3bxwu64LFZG7cL7u/jeVFezegxvzmVZ6dzS
dhfpmi5i9Y7WkgHVTNUaPnh4yGMMdRG8tvtJXg1n1TzbiiJZw0MlEieG/wsx
qbOM2b11RtOIKx5ki27DRmSu35MQHomz4r3OMkl3lCXNvPpdVqyAjGWxWA9z
BVuI8qKcwytLYEKk80nzlxCjq6uLIxqgkuVUwTbdLlf3k2BvwdL5aasgPTHH
myRn4mDv4EG8tx/vH9LFZqf4Ewve5ShPS7US59KoDHaryv79tXipNMiJsVM3
N5+o/Ec5Bxodw+u33buUSznt3j2eyTLTSryQZan7A7dJb8kUn5xvppQs3+kl
y9jY7B482Hs43Htw8GivRagnal3kqThXZfzHWpValeJJncI4oIYXGvS9qI2Q
8MSFMhqWllfieVaMZSactjxFziWkIt7KvLl/3Lc0HRbs793NgnNYS6lws1mR
a1l1OZAhgYDEdTbRKks7t59r2Lgu4P5SJ6ByRab7xHwLBFddIr/Sbwsjnhd1
9b6oMy3NL+DuyMiJONZpj3MXxTuZS/FcyfkYLEpvKdUMJhIv//GfSb3uCVuP
7cej8/i7i5e3KMhqNVzdJ75fXewmciHHwLhqHddlZnZD5j8vCuB8KZNKJ4ot
/rF/XMAEpsWz/cN47yDe/+oOnv1e5VpcqTy3wnv54rtnz14+/Sz53NvbH+7d
f2jHd/L5NE+KVA3E5ayeTDL4ZZTLbP1eefG7UEttNDjCI/EMLUhmzRBL7dP5
Qpc6AXF9upRZLdmV3b6Bf/x7NpGleApamE9NXwO/1xVML56BwM1l9+Zptpbi
TJdFXix79kKCZRYXcjqrc+B2713YnwSPclnk086dP8ALmbiS2Ur2rNB4VspU
qQXIhnxbl5VsK9ke2TlU+MvTq1u4gAZ/aBYqGa5mslpNiSH3kKIhH15cnb2E
aV9q8oqXFdBWlml7tn2c7eDhRurCoEfizYvR1ZvncO3N0yfx+cXp97da+EpO
AyO/YFbH8G+e6EWm2mIc+G13v29sYGV3GZuLYgwa9kSVP/ZY/ns1mZRqLX6Q
xoDXj6IojmMBIluh5kTR1UwbgBcT8BJGqAZAVQWZQoRVCwvLImB8JUy9WBRl
tQmODWE0wB7hMPDuUqfKv4VamurJRJVgcLXMMqLLErYqZIMEIxR+nKBYqBKu
ANPmoEewKlzBhplhBwuVp0YABrBbnOs0zVQU3ROn6LbTOqGRcYm9t6+v0RXd
3AighRQrNRYAsSp06WKiZAUQivdud2MECphdTQ0blulSgZEzsNBoBYynJTpL
BJScMw6jy8APlSBQAILDeic8SjDCMApgW7hlWOiCNgJjlw29VBrV+B7z6/Og
9fX1P8G/j0/jE4JyDkvd3AydRBRJTT5xs2jAy31pQErAflBkxuvPlI8JiIAA
2AfStiqEBelaGcBUvxGXgdDgcKHgCKtWJBgZCD3MnsJIm+ftj2Ulq0DrRLKF
+Bh3NFZVBTBionlTIFhZsSZS0Ey3iyAswBD5OltEXuVFBfpYAk4G88skTSGq
SGZ+uDVsPgfxhftjxZu5jYiv4Wop5GKRgWtgZzHX0xkuHYQuU8gg5AU8Nh9E
8Cb4kjXKHTEKpFG+5ZuEi9diCqIIXiYyVbEA0Z7hY8BHeMxJVbCbeQHbSYo5
2Kl3LAIgLaX6a61LWHIn7AJygFeD1yU+P/A8GxNG6xLJ0aVZvlALgG2wb7ql
SYEnZTEX2x9/Hoi9nXiTREQwI93/+NPmBwSpqAQWv4Mlf/xJoG9VQxZ8jcqN
q0UxAY5ImNvoac57ZTqDzBYr2uu8BnwND7sdzRXsPdksBiDoYINBq5yyRFZZ
KmnesmnBJ5HmoJ5Xo8s/nF+8/r6nozE+jk+jsr6AoAQMx4AFB8cFHc/AvsDa
wFDBtsEA+UWI7etrfz/W6c3NDsatSakqRXLpbGi4gJubQQTgTpOlMzQHLRhe
nOhpzUoUbHQYjWCnBclouH0Q17XzKgkKUeharEEi+xPduwdmLGCbc5Cg3IFs
bbbk3kL7iAxuwKxg08lmR4BfgelwEXYDSoSWGGkEF3jJ7sFBtJpp0E+QBwjC
NSivhvXD8DM9RrxG7HcCBWG+wU1eXztswJa0oA0Cud2Tg+g2y7HZuF1ff3ty
/vjk9elwf2+4/+Dh/u7e4R79HB7c3EDYCfIJygjen3dK7gToi5EqDINuVOcp
bDGtrZ3LjPV2EHjhIpGIbjaK7nG56KvsUJ21Rij7aKZR6c0CNq2tmyN1gChh
igKMqRBtSYuLaCu+QRXnpAGIaW4AjyGCR9ckjilKMzsEAZyxlmmq3f7yAsJW
HACVM/BwlPMA10ijONdXlGbgVAJcbrbeYbZUqOog7IOoVOgWrJtFK0S5nspx
OJwhV3ARVw7qXtQ5GaoqIJ+1ATTSSqLLRH2Cd3BkuzGQKsU+iiemB8kAoyO3
NgjzSKXDF8FWyEWwIjEVyJAZCC10QrEtmlld1SnRZy7Br0rrEeFXXstGMZvW
sgSEr8AIRqNAmXkFDYmAE3PYObmH9q4jv2tMhIGR877Ybs5yT9rRIkKdJgHZ
4kevr9OFV/9Q6F57CHgG4hvk+DYbAM10TyrmFbt53D9MjfLPC2UqgKkv5goD
B0FeBZe7kmveNYoRwkGnE8idSzS2QLfNjgvna/AQGo4WeoW9neY47ACWQiaU
0Ca4t2lc1jkZfiBeBYPzIq0q0EWd10VtgPH4BwM8mG4YXVje0DLABScVPFMD
ZJEpIwg3iJXVlwpulGjQCXPgay3pY7M8lhWYPlw07A3Q0Jwg4AycXhnMR4nH
vp6AAwBVWXm1A8b8WIxxs+TCcSYHbY6dM2K1CDRa4fOocCpFm1nU0xnTlD3w
RGqAjROrSAQ+GC07i0H0xZQz/B7sBo0KbEbP67m9bPR7BiZzWa7xDQfXwJWj
Nlg0gBvHvCpoVGhokVih1USx1llWY3RVOcGexPiIx9d/+9vfhJRm6SLlzT9f
xPbnizsf+yBeqAzETHz43xgNf/70ySf++9/+Lr6XmcYAVfxz5MeOv7j1cWfE
VPTBr+ULft5JsP1ZRng9fMYPH38T7EM44UFuNNftFvE9J/kfWiN8sCoAv/w2
eAn+9MJoaRnu65Y1xBuvfxaZm58LZQBFolhE10fiXiMtnCF4vHWJEqgnGuSJ
fFsgb1sgfRUWFWKQp7hYUDTweCuOzUKCS318sHVDVmeDJ29cH5uwDPxjyUaM
7CDjIOcB/lorwy5gzmaCbnaMLTCYIhPwCTnE3qgkdg7y5uxZbeTRthneLa7F
TC5BTwOvBgYtwxwLePiK/RPQAwaVmLHl6JzVkV0KYHVclw/T7EaibYnWliCG
YzSg31lRIPhirOcdXdHYIeuSp0Ad9oC0cQzVyNDXuQ3xS7XUYPQIfekSgmeL
ahCjtUdfqdDoMs7RGcacniFJQphzapmhSzKFhu2RAheQorFi1MmJz8bKW06G
mwnIAFxnJlFwE3LEe4+WpxhEDS0p0JsXSAh04zKLKz1XNmxQeUIounkV/YDV
NcQtOKuaIPAH/JRh7kMusaIEAWtEi3HEtfPxsDikhl1YdGc+bZJbIPaOOPou
U411mV9gqz/18wus710/n2nr/49Wgz9/ikKjd4v9v/On40s+hFZ0s4P45HCh
r+mNd6vBhpefICAASfA/7Is+CK9eoudMAqfRXWqLzjjQ9hMOecxOb5jtN6ye
eOdx+BM6rI5Xut0x0Z3Qu4F/+/Vc3+yfUEWcg+pi8F/soa46wJmwGuizT9IN
IkmYMoByaPYsRneJowSCU+DfVpPjMCoj77T1NVgQBQpOA8Q4AOo3Jqc47G8G
NhyjW6LPwGsEAVYnq8DDeyeHS9J5AjYF79vgPATBQ/TFmDyTVB/FmWD5waYs
ljXtwCuRZbkmdJwDMmWHCc6wj6KtyyOzTCMo6R0PEsoFBjbM4kRiK6JaFRtS
N0GIQ0FdkB/mTJfH1J1QuBMCtBJR8EqMIR9E+mnK+KEbMVC44Cpi0SJDgaFY
NS3Bc+DCMAwXqzatcnQwxAYYNtrIhYsw6Idh38Izt+UmI4ooACW4tCFlC2EO
zAFyaJ1iHha3MAPWzYosjebgVnAZpfqR0RGwKgjkbV50IyoDxlLIKG8hKvqt
EuMhcNUoLbAclEwkn1wsXMbWZklsftZTOIywhtEbjZGV1Tm/4UFELwPR6izF
TfgQMG3C5A61iCYmorQIzhPI3aacRivpkhYcb5EWMJzkrHZkeZmWgLVgctUg
wjaMAciI+w4zJbBjUecOnHoIyekL4/NIVnw3JE0pgLwzczrWmCwlCXAvWQjS
OAXEUjCQcUTw42HumV+2r+JeLcwOxbWB0HfJDJG7mRWAnHJ4FbBjsQKkV9Rl
ovp5m2H0BOUXpQbXSTIisJqUhXalxbyQ/T5xZKLmnirjZi0dQbH5WWQtMn3s
0PISyGATFu5VIxZFgYVsb1+pTuSXFwgyVvmOixwH8bXzE18ysJmitxBcYEOV
EVtn311ebQ34X/HqNf1+8fSP351ePD3B3y9fjF6+9L9E9onLF6+/e3nS/Na8
efz67OzpqxN+Ga6K1qVo62z0A9zBVW29Pr86ff1q9HKrZ0rJznJ6EbN15QLT
8qmQJmolyp4cn//Xf+wfYsb84tnxwf7+o5sb+8dX+18ewh8YS/FsVBXgPzG2
isBAKFmSZ8oytBfYD2DgWSr7gJggRgdy/uZfkDL/eiR+O04W+4ff2Au44dZF
R7PWRaJZ/0rvZSbihksbpvHUbF3vULq93tEPrb8d3YOLv/0WpEuJeP+rb7+J
unXPEsIoZVxE09SfMItFuMNVLCIuBNg6RllkiuVvUuekwqC4l8UcXQHlXROK
mufghV2ghcaVX8FajFpU5pYypi9T+4zYRM51piX2FgpXdwbLDbxE020VLAdr
YAwEjFRYg0itxNA0pXRep7hHcicB0dBgsD1WrY3VGO6zspC3ARHi+h549ahV
V7C6b3FI41m3sTlmUcCsYu/d1ZOTHTA0ia3zfyrVzHlAShaMlcqbZDuYEJ9s
lxypIn7lcbB6zs7VOSdaKLt0Vzzxi9KYtyCiTBER4drwZfsc939SpVQnZRHb
WqXBsl5YCkC1dqtDP0AuecAuEtMHnAYuchUDMzPsMZ1Rpjz31c/tjz/v4F5c
ifvO6qZHZMGa7AbJDeP20KrAnPcP4jHOzxtEqJQrwupARAjHwFZiFE96sUAE
ULmahnZJl3qBUvzx58eHB48Oh48efnnw6IG1YXYmu5xUZZWEhf+0IwD8yjlC
CkrxFlWTefDwwbs8njt8oQRyYorbkqItGtQ9MQLtekfAiXeN+vnxp6ZETmVf
JCeMWzVMD6uZBBqxq0gD4ghaALAC4NBZa3BKVjs1o1wWhwb86Oa+BZUAdtFm
TkGB2Tguhj1BAwIlgRgogwKlyqa6ISTInHItiwzsl++f4XuNpFon70ODhHsi
mTad0gJEexJnuYm+Ea8K7EV6g+7B2kPPTi9aeZHH71VZDOB5nF+2R3cZLywS
rh2H8dnEBteutm4KX2nLtE1PBVtwYOAbfAB85JLQL3Z0UG0ms2uzZES8OoWw
G2lLENCGPm0rhn07IDfdEKCLepiaYQwIsqiwj9IiVRJgEK7VTGfKYh0u/wDd
Jpl6p5ueIC5dJHpBu4+cUQFUurYmy2Cg4h7glh/b3SHTHzHAQAtu16rZOkQs
HBW4IbrLSB79WtMXFEmwDMY0vQsbNmQ7GAIbzCM1gYQDXyaiCNYW1dmfOEts
ESaINzM/g+iGzIcjSYfgcyVzF5RhgtCvngtBvaKmAbMATy5VFniJr7GlAUQB
FHA9EH4+GrA1D63ARQEjf8+ZCav+NuYlH031S27xiLYz/bbdoxKYqU+Y6B0f
mHlakcMlldzADbBpZClVOujEak1Pxsef7cq6PTeUac+9dthtwlbAau/vRcF+
QTLh6brEGqg5Ett7wwcDsY//ORiIhzvD6BXxg9+o0MiNrUQMIojIScdI4WQj
bpTb57h5pdMKt2d5g+qBmswtWFYh7OqQa9XXjkqDzoAuEDe2jxM0fqmZYJ0x
I1j4we592MXuASPi/d2H1Ljg+gFcwZmbqRrt3Ah5zqh/Iore4N7v6DfjDNIn
0A9ATcX+D3tj1841WxVCEMbKF/UAUL/DgEsyQafHybntVnOrDFe4zakw3wSy
M6CujpXxwIlCeBqb9QaWgM6/md6GLmRkCQAbWxm3nTCujVDb1kvFpXbXOAZE
HkRjlUhqniR3YPszHUVDQWhZGNctGqjJMDrGwzcQO1NqoBkQcwYBXvHuc4zB
4KLCUkppDRQ3M7ITZvY1jAr7Hxy0WIAF1WiNgwncpps3uWqEnUbmtn6abqco
dtD0ZCeYJCoQm2CMbQUKKKOR3k/gaRfKtyx3SMpOboZ3anlORRqI5s2Eqkdh
cw+xmBpPcHg2yzBSK6N1talPx7ET0K2g/N2AXCV7ViwUcrNlhX3gcTGZ4IUV
wPmovQV2O5zTCtuJvMl1/qrXFmz7PMgskQRydpPMJrffDV2jV24qJVFZAEMt
lc/5457CTfuKZivXuqGXouOsYMpJnbmm38Z/Djp7DR0txDKc2mEOgWyR3IKu
tscH21jAGn2TmVs7ItwMlSGj2hyGrXP9zoqILhvER1kS37ncukx5eCKaHXUA
0oDmwkma4bMNaHNARMoCF3x9bc9OYJb9EvtcucfN1/RkhQtnxJuoknbRb8zA
kISiEG6iJtuD694IqLkRnyqEbUlN65ImCsrNbB5s9s5WkxMfAW5YSMu59/sf
g05Mjc3caVN3hXCq3c7jwG1VIoYLk5YIaFWJdo271Dx/Ce+DeOZJE+dz6+gM
DK7rTA46EiNr4y9tGvEr3BrnK3Zs1QH1EIGQUJq4a2duyOaVWVNnztn5cXMS
oCg3JV0tfnEFYRQ92/bp2nS4eN6WdUJfDb4P5+F+npYGgvMwFXc1c7JDUiQK
tCFfqoJSDevnqohRDdbOugPvMzqo5zj0/cnoWTBjtV7giRsbYw6j19aCEZHA
86WssChBgD7yaoPRayf7I4vmcUUN5qS0HAQMwMxW3hruz8BaGnBLT5cYR0I8
ZQmAHfLdBHbEWw+mYIdt0Z4vA7j2VqehhPApa+qS2pe2VMZlUG62u74X1Ms6
qXJfWwvqVxsyOlOidCsp7gIUXGSnNwK370o3ggS/XbhhV92qmYXVOptQcGGS
L1ywRzSmSGz7Gb1NsuX6EVshDLXhWTKHJTQJON91hLRcCwMGkEwONXAxDX22
Gz18MDzAMb9lTaTSEvoPyrsBmGo/uh88GhYoXQsrBvEojlzVM0FwzIdSGjOJ
p+EghpnjqRYV+RXXBrEi9fNq20hiN2qH/DpiM8J/NqdDZAk4YcqHJm0IboLO
DxsFJJjMDPP3ILk665XjkGsJmjHUNt8ycjb6wY4gsKIWtCAVdnWtsqu05xbA
iumCAIKtviA3cXDff9oVqVF3mWCybeErCGhtTYotufSVGgy3aemdSmB7Emo1
maMgotkDsAxkgEhMafLZBeaNMIYyBToPLruxg6JT0jnl9Lx/CchMOfkmR+LW
jx6INmUiT4eGGSzfJQO8lJtO2xRxZUHJY7fq4Yxo8ZxioulsLVVq6Ik6hzEx
AiUCNCcxKZaYSXR2GETAQ1SL4lYeO6wtBLqAiPnu9kPb5Eqq9yQKnQDlzKlu
RnuxcWHu+GCL9FW5Jjq6VKaFtq7AyapyuHeI8WRVG8r/+gTaXy4gqF7HI7Cy
5V+aV+nMrtMOq7FG7D8Ywv84ztwbHgzvkwK/uLo6f3zx7PjR/v4eqVCQV+OM
Wk8jZAZCla7ZpFCSDNcyg8Bb2DPo3TdOT5zDA1XHpBrtjU764MmN3GcnGcJS
lwEdJkQQlXj18JrFygYDcUNty+K6Xgp7jhf39I1wh2eQfyRiEtH/pGXZma8q
hcdXVsYIRTHq8DZUBVCMS6uUhun5glFLD6yAALAEO8dHDNp2okm6TetMdkyd
F0vqEwy6HRqDfDi01tviqKaV/06fSObNYkXXLE0I0qYebAHlO14GGuora6jB
/VrDG/mOBf05MyKtXasHnZRg+0997gVH+lx44nmOIm7uYb91s0tJ4t1r/AdL
3buWfrvXDQdi4ADeoxdt8sH1vfiMekdAu5j0cPhlSM2WP+015SCxyy6Q8AbD
QWpXXcYMgINlnYwtkcM1KBIDArxz7uNJoD3OGxPuNzfW7wU09ok3SkI2gaht
re+BgODVPh6wNAiqQ5RAkmuSCfyywXrIMkRJQ5BvcAlPChsInOMBe5nRPhjF
FaV93NuxTTcJ5kB4gXkfXh4wybeMGOykbbonA5KJMxsfdUqBQUP274HjYUnQ
Nvv8qmahDaCySVeFnRbM5hb05oytna+prHxGes5JK7coMVUqCwVcEilEqn2R
tykJFj3fodxMoIMSnK27xZjlofxIU2psKpAYDWPB0PRqjs3ZRbaXSZNRDaf/
dE5y2264n8pq2uzsYQk8DkdVRCMnipqyhq7TXI5NY8PbrUWt00zkozog/bNz
npQcAUTkakkk6r7IZAOxENS3xcAWQTBIahpsSP18EgNLj0XlzqkLVZZc6ccQ
4HTSkj7wbER5etCKhfHBhUtYzzERgt+RKe2u7HHA5sxL1fTuMAqlAncQNdoC
DAZ0rrlpGMZl/VY7f948oxAYVwXgLLJEsWmtpqLuUvroXzsnz/hQbluGc0rt
IaMhOKW6AR7cbmrqGzUjGEA01d/gpBFnWqc5nWXz9fZmqa6lDc9ss5gHzUCt
6Q33wFAaHB5tN9rjN46sfWwLx+dpC77eSJEDNx5u3LWfIKFpzUQmKRPqz6+i
mWJR4RjeEVI6GrRdoX8PD5SteBucJdHtM9tkKPE3rmdfkVtFelLdlXjoBkvZ
qHJM4wjdNIV163SonIF4Uk406NIAqAEoNO2kHcSp6527wqRa6DNa/Xaf26f3
mSenN/iUpp3PnR2jInZjH4KToZUNv/0ps01dc30b6vEK1xbX3IJThJWfW1sJ
h5EvSYXZa1JMPsUiAscR2U8ZGPxCg678yZXaZis3JstndMzbUL9g0yeEo8Fc
v2ipLQUE9Hn1LP4qdq0nGCPymBaNY2mPUjZpgRnPJj9hC7l0upfOIgGodQX8
DRKE/Hpx/oen2ArYpGYRO0/BO7lClmt7agbwbhPDjEGk2ee6UamKxX6+FQnT
bHweg+IPe27JxvOUlFjywQYX3NDa2o0mpCQ1n2cG+pRrCHubI5BmJkvVnGls
SxZ/jgTn4vndl1ZsROXGt5YiiKN4X/Ybafq9NU/9xbk8lxPaIHlP/gRnxNrA
hIphij6PF7m1tjMMrmiHLZjX199enj4/G/lT7Xt7X+4++vKr+H784HAvPnyw
f/gwPvzzwSFoKdov2+iLncuTDRtb1ONMJzgyASr03csGtfa2DaR7jQ5r4TNe
xx2bMnHhsDbuQxoUP3XLHgsy2LYO7Lbdlw1AVN82n1Ig4GCjdFZj3FcThhO6
4kz0gL8PAjqJCYQm7c8fzNsSJpmBDUdy+twCHukD5VKUmIeBNwic1S1JKcFo
G5NReo7f9UM011qHz9NEvovNtzAGjeAuJbITeRdEztrnG5ycNTnGahZAZ2Dc
bbW7RvAQd3Z0yw3LJaSGif09t1O7zgp12V5xK4Bw32pEI0I9VrYXPfI3Jpzz
avrDXE21AQaS/C2fp9S5pxPjMCw728bQ6LvmkzmaHAwnudjVGjdj0l6KfWG7
U96xcbRDNFTWcGhJM3oLXnlEcSc+xH6yBD+ZTMppvEzlxB7EF6ejV6MeIa5e
n7wWsagXKec9dWOhboN5w2g4HLqFYdvblJChjen7XxOBIbG9hg8jToveR4nY
aWCY3sVkxgGlrV5j6qmzBSVoj3U76whcJPgebWbddM+j4QEH5+67JK/Uqh8w
OfdV+ZMyMFyd0clOGq4i5AEv0Bgf8LAbuEXxQbzCvEH754O48E3C9Hf04cie
2vK/hD/di/C8ACzDQ1nw+mcLXvkih3d+PjrQ5VfojnO1P6W6dXM79buHsjzx
m5yK+TV03///pfsvJnyb8h6l/tlnfz50jp61SD+eh5Q/86S7i/J3foLHswEx
NeLakJ2fwYIvbVYq9FvEhv6XijrHxDYywcHuX8uNX8WRO7jioR1ypX2qp6MU
4codjyhOaSHMjrLQ1+fGMnmLFnSUvM2LVabSKX2fAsbmSrdKH29NIOYiJoef
11Sm5lY/YUtNvqmnsGfu3eo3HEmiECw8H49BX8FlJ/r2SjHGMszG9gmzBsma
u69d3fLBZYhCJDh52H/xtgkTubVFTJRKx3SYbsynypQ7j4+mvzkxeDwrQajP
AT9xxx4PMgO8hKPofAEvwx0bcVDyi3I6rc6H8Jj3MPof/dlxB15aAAA=

-->

</rfc>
